https://github.com/pcc updated https://github.com/llvm/llvm-project/pull/133531

>From 96e7da9a083888683c2ba00d97f886fd748ea10b Mon Sep 17 00:00:00 2001
From: Peter Collingbourne <[email protected]>
Date: Wed, 9 Apr 2025 20:30:57 -0700
Subject: [PATCH 1/3] Undo unnecessary change

Created using spr 1.3.6-beta.1
---
 lld/ELF/SyntheticSections.cpp | 2 +-
 lld/ELF/SyntheticSections.h   | 2 +-
 lld/ELF/Writer.cpp            | 2 +-
 3 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/lld/ELF/SyntheticSections.cpp b/lld/ELF/SyntheticSections.cpp
index 8cab71c4c8d94..106749e90a82b 100644
--- a/lld/ELF/SyntheticSections.cpp
+++ b/lld/ELF/SyntheticSections.cpp
@@ -1696,7 +1696,7 @@ void 
RelocationBaseSection::addAddendOnlyRelocIfNonPreemptible(
              sym, 0, R_ABS, addendRelType);
 }
 
-void RelocationBaseSection::mergeRels(Ctx &ctx) {
+void RelocationBaseSection::mergeRels() {
   size_t newSize = relocs.size();
   for (const auto &v : relocsVec)
     newSize += v.size();
diff --git a/lld/ELF/SyntheticSections.h b/lld/ELF/SyntheticSections.h
index 7a85906e8601d..2dd4b80eb85bf 100644
--- a/lld/ELF/SyntheticSections.h
+++ b/lld/ELF/SyntheticSections.h
@@ -553,7 +553,7 @@ class RelocationBaseSection : public SyntheticSection {
   }
   size_t getSize() const override { return relocs.size() * this->entsize; }
   size_t getRelativeRelocCount() const { return numRelativeRelocs; }
-  void mergeRels(Ctx &ctx);
+  void mergeRels();
   void partitionRels();
   void finalizeContents() override;
 
diff --git a/lld/ELF/Writer.cpp b/lld/ELF/Writer.cpp
index 67004055f1af5..28b24f90716b8 100644
--- a/lld/ELF/Writer.cpp
+++ b/lld/ELF/Writer.cpp
@@ -2076,7 +2076,7 @@ template <class ELFT> void 
Writer<ELFT>::finalizeSections() {
     // symbol table section (dynSymTab) must be the first one.
     for (Partition &part : ctx.partitions) {
       if (part.relaDyn) {
-        part.relaDyn->mergeRels(ctx);
+        part.relaDyn->mergeRels();
         // Compute DT_RELACOUNT to be used by part.dynamic.
         part.relaDyn->partitionRels();
         finalizeSynthetic(ctx, part.relaDyn.get());

>From b33113cee03cd0b68b7e8c7e98bfa56dfbe02a46 Mon Sep 17 00:00:00 2001
From: Peter Collingbourne <[email protected]>
Date: Fri, 1 Aug 2025 14:03:45 -0700
Subject: [PATCH 2/3] Fix build

Created using spr 1.3.6-beta.1
---
 lld/ELF/Relocations.cpp | 5 ++---
 1 file changed, 2 insertions(+), 3 deletions(-)

diff --git a/lld/ELF/Relocations.cpp b/lld/ELF/Relocations.cpp
index 2573cf5c9fbbf..e2f594f3d2bba 100644
--- a/lld/ELF/Relocations.cpp
+++ b/lld/ELF/Relocations.cpp
@@ -1175,9 +1175,8 @@ void RelocationScanner::processAux(RelExpr expr, RelType 
type, uint64_t offset,
                << " cannot be used against ifunc symbol '" << &sym << "'";
           printLocation(diag, *sec, sym, offset);
         } else {
-          part.relaDyn->addReloc({ctx.target->iRelativeRel, sec, offset,
-                                  DynamicReloc::AddendOnlyWithTargetVA, sym,
-                                  addend, R_ABS});
+          part.relaDyn->addReloc({ctx.target->iRelativeRel, sec, offset, false,
+                                  sym, addend, R_ABS});
           return;
         }
       }

>From 1137b9ee88a6378cafeedb78db22d79b306b7240 Mon Sep 17 00:00:00 2001
From: Peter Collingbourne <[email protected]>
Date: Tue, 2 Sep 2025 18:27:33 -0700
Subject: [PATCH 3/3] Split out lld changes

Created using spr 1.3.6-beta.1
---
 lld/ELF/Arch/AArch64.cpp                  |  5 +----
 lld/ELF/Relocations.cpp                   | 21 ++-------------------
 lld/ELF/Target.h                          |  1 -
 lld/test/ELF/aarch64-funcinit64-invalid.s | 18 ------------------
 lld/test/ELF/aarch64-funcinit64.s         | 19 -------------------
 5 files changed, 3 insertions(+), 61 deletions(-)
 delete mode 100644 lld/test/ELF/aarch64-funcinit64-invalid.s
 delete mode 100644 lld/test/ELF/aarch64-funcinit64.s

diff --git a/lld/ELF/Arch/AArch64.cpp b/lld/ELF/Arch/AArch64.cpp
index ff13773aee5d4..27e77e943c197 100644
--- a/lld/ELF/Arch/AArch64.cpp
+++ b/lld/ELF/Arch/AArch64.cpp
@@ -114,7 +114,6 @@ AArch64::AArch64(Ctx &ctx) : TargetInfo(ctx) {
   copyRel = R_AARCH64_COPY;
   relativeRel = R_AARCH64_RELATIVE;
   iRelativeRel = R_AARCH64_IRELATIVE;
-  iRelSymbolicRel = R_AARCH64_FUNCINIT64;
   gotRel = R_AARCH64_GLOB_DAT;
   pltRel = R_AARCH64_JUMP_SLOT;
   symbolicRel = R_AARCH64_ABS64;
@@ -138,7 +137,6 @@ RelExpr AArch64::getRelExpr(RelType type, const Symbol &s,
   case R_AARCH64_ABS16:
   case R_AARCH64_ABS32:
   case R_AARCH64_ABS64:
-  case R_AARCH64_FUNCINIT64:
   case R_AARCH64_ADD_ABS_LO12_NC:
   case R_AARCH64_LDST128_ABS_LO12_NC:
   case R_AARCH64_LDST16_ABS_LO12_NC:
@@ -269,8 +267,7 @@ bool AArch64::usesOnlyLowPageBits(RelType type) const {
 }
 
 RelType AArch64::getDynRel(RelType type) const {
-  if (type == R_AARCH64_ABS64 || type == R_AARCH64_AUTH_ABS64 ||
-      type == R_AARCH64_FUNCINIT64)
+  if (type == R_AARCH64_ABS64 || type == R_AARCH64_AUTH_ABS64)
     return type;
   return R_AARCH64_NONE;
 }
diff --git a/lld/ELF/Relocations.cpp b/lld/ELF/Relocations.cpp
index bf7c2fd6ce8ef..6f55bac2ecf16 100644
--- a/lld/ELF/Relocations.cpp
+++ b/lld/ELF/Relocations.cpp
@@ -989,8 +989,8 @@ bool RelocationScanner::isStaticLinkTimeConstant(RelExpr e, 
RelType type,
   // only the low bits are used.
   if (e == R_GOT || e == R_PLT)
     return ctx.target->usesOnlyLowPageBits(type) || !ctx.arg.isPic;
-  // R_AARCH64_AUTH_ABS64 and iRelSymbolicRel require a dynamic relocation.
-  if (e == RE_AARCH64_AUTH || type == ctx.target->iRelSymbolicRel)
+  // R_AARCH64_AUTH_ABS64 requires a dynamic relocation.
+  if (e == RE_AARCH64_AUTH)
     return false;
 
   // The behavior of an undefined weak reference is implementation defined.
@@ -1163,23 +1163,6 @@ void RelocationScanner::processAux(RelExpr expr, RelType 
type, uint64_t offset,
         }
         return;
       }
-      if (LLVM_UNLIKELY(type == ctx.target->iRelSymbolicRel)) {
-        if (sym.isPreemptible) {
-          auto diag = Err(ctx);
-          diag << "relocation " << type
-               << " cannot be used against preemptible symbol '" << &sym << 
"'";
-          printLocation(diag, *sec, sym, offset);
-        } else if (isIfunc) {
-          auto diag = Err(ctx);
-          diag << "relocation " << type
-               << " cannot be used against ifunc symbol '" << &sym << "'";
-          printLocation(diag, *sec, sym, offset);
-        } else {
-          part.relaDyn->addReloc({ctx.target->iRelativeRel, sec, offset, false,
-                                  sym, addend, R_ABS});
-          return;
-        }
-      }
       part.relaDyn->addSymbolReloc(rel, *sec, offset, sym, addend, type);
 
       // MIPS ABI turns using of GOT and dynamic relocations inside out.
diff --git a/lld/ELF/Target.h b/lld/ELF/Target.h
index 58393e7afa20f..e121fa1183e9e 100644
--- a/lld/ELF/Target.h
+++ b/lld/ELF/Target.h
@@ -134,7 +134,6 @@ class TargetInfo {
   RelType relativeRel = 0;
   RelType iRelativeRel = 0;
   RelType symbolicRel = 0;
-  RelType iRelSymbolicRel = 0;
   RelType tlsDescRel = 0;
   RelType tlsGotRel = 0;
   RelType tlsModuleIndexRel = 0;
diff --git a/lld/test/ELF/aarch64-funcinit64-invalid.s 
b/lld/test/ELF/aarch64-funcinit64-invalid.s
deleted file mode 100644
index 2507c07056783..0000000000000
--- a/lld/test/ELF/aarch64-funcinit64-invalid.s
+++ /dev/null
@@ -1,18 +0,0 @@
-# REQUIRES: aarch64
-
-# RUN: llvm-mc -filetype=obj -triple=aarch64 %s -o %t.o
-# RUN: not ld.lld %t.o -o %t 2>&1 | FileCheck --check-prefix=ERR %s
-
-.rodata
-# ERR: relocation R_AARCH64_FUNCINIT64 cannot be used against local symbol
-.8byte func@FUNCINIT
-
-.data
-# ERR: relocation R_AARCH64_FUNCINIT64 cannot be used against ifunc symbol 
'ifunc'
-.8byte ifunc@FUNCINIT
-
-.text
-func:
-.type ifunc, @gnu_indirect_function
-ifunc:
-ret
diff --git a/lld/test/ELF/aarch64-funcinit64.s 
b/lld/test/ELF/aarch64-funcinit64.s
deleted file mode 100644
index 5f2b863ee884b..0000000000000
--- a/lld/test/ELF/aarch64-funcinit64.s
+++ /dev/null
@@ -1,19 +0,0 @@
-# REQUIRES: aarch64
-
-# RUN: llvm-mc -filetype=obj -triple=aarch64 %s -o %t.o
-# RUN: ld.lld %t.o -o %t
-# RUN: llvm-readelf -s -r %t | FileCheck %s
-# RUN: ld.lld %t.o -o %t -pie
-# RUN: llvm-readelf -s -r %t | FileCheck %s
-# RUN: not ld.lld %t.o -o %t -shared 2>&1 | FileCheck --check-prefix=ERR %s
-
-.data
-# CHECK: R_AARCH64_IRELATIVE [[FOO:[0-9a-f]*]]
-# ERR: relocation R_AARCH64_FUNCINIT64 cannot be used against preemptible 
symbol 'foo'
-.8byte foo@FUNCINIT
-
-.text
-# CHECK: {{0*}}[[FOO]] {{.*}} foo
-.globl foo
-foo:
-ret

_______________________________________________
llvm-branch-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits

Reply via email to