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

>From 8ff2a41e7b5450df7779a8e86a32d1fa5713f33e Mon Sep 17 00:00:00 2001
From: Peter Collingbourne <[email protected]>
Date: Tue, 2 Sep 2025 18:27:41 -0700
Subject: [PATCH 1/2] =?UTF-8?q?[=F0=9D=98=80=F0=9D=97=BD=F0=9D=97=BF]=20ch?=
 =?UTF-8?q?anges=20to=20main=20this=20commit=20is=20based=20on?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Created using spr 1.3.6-beta.1

[skip ci]
---
 llvm/include/llvm/BinaryFormat/ELFRelocs/AArch64.def           | 1 +
 llvm/lib/Target/AArch64/AsmParser/AArch64AsmParser.cpp         | 2 ++
 .../lib/Target/AArch64/MCTargetDesc/AArch64ELFObjectWriter.cpp | 2 ++
 llvm/lib/Target/AArch64/MCTargetDesc/AArch64MCAsmInfo.cpp      | 1 +
 llvm/lib/Target/AArch64/MCTargetDesc/AArch64MCAsmInfo.h        | 1 +
 llvm/test/MC/AArch64/data-directive-specifier.s                | 3 +++
 6 files changed, 10 insertions(+)

diff --git a/llvm/include/llvm/BinaryFormat/ELFRelocs/AArch64.def 
b/llvm/include/llvm/BinaryFormat/ELFRelocs/AArch64.def
index 8dcc2926e1b59..1cfcdbf67dac5 100644
--- a/llvm/include/llvm/BinaryFormat/ELFRelocs/AArch64.def
+++ b/llvm/include/llvm/BinaryFormat/ELFRelocs/AArch64.def
@@ -62,6 +62,7 @@ ELF_RELOC(R_AARCH64_LD64_GOTPAGE_LO15,               0x139)
 ELF_RELOC(R_AARCH64_PLT32,                           0x13a)
 ELF_RELOC(R_AARCH64_GOTPCREL32,                      0x13b)
 ELF_RELOC(R_AARCH64_PATCHINST,                       0x13c)
+ELF_RELOC(R_AARCH64_FUNCINIT64,                      0x13d)
 // General dynamic TLS relocations
 ELF_RELOC(R_AARCH64_TLSGD_ADR_PREL21,                0x200)
 ELF_RELOC(R_AARCH64_TLSGD_ADR_PAGE21,                0x201)
diff --git a/llvm/lib/Target/AArch64/AsmParser/AArch64AsmParser.cpp 
b/llvm/lib/Target/AArch64/AsmParser/AArch64AsmParser.cpp
index 3641e22e6f76a..e40da69410ab0 100644
--- a/llvm/lib/Target/AArch64/AsmParser/AArch64AsmParser.cpp
+++ b/llvm/lib/Target/AArch64/AsmParser/AArch64AsmParser.cpp
@@ -8217,6 +8217,8 @@ bool AArch64AsmParser::parseDataExpr(const MCExpr *&Res) {
       Spec = AArch64::S_GOTPCREL;
     else if (Identifier == "plt")
       Spec = AArch64::S_PLT;
+    else if (Identifier == "funcinit")
+      Spec = AArch64::S_FUNCINIT;
   }
   if (Spec == AArch64::S_None)
     return Error(Loc, "invalid relocation specifier");
diff --git a/llvm/lib/Target/AArch64/MCTargetDesc/AArch64ELFObjectWriter.cpp 
b/llvm/lib/Target/AArch64/MCTargetDesc/AArch64ELFObjectWriter.cpp
index a388216a95098..892b8da37eb69 100644
--- a/llvm/lib/Target/AArch64/MCTargetDesc/AArch64ELFObjectWriter.cpp
+++ b/llvm/lib/Target/AArch64/MCTargetDesc/AArch64ELFObjectWriter.cpp
@@ -232,6 +232,8 @@ unsigned AArch64ELFObjectWriter::getRelocType(const MCFixup 
&Fixup,
       }
       if (RefKind == AArch64::S_AUTH || RefKind == AArch64::S_AUTHADDR)
         return ELF::R_AARCH64_AUTH_ABS64;
+      if (RefKind == AArch64::S_FUNCINIT)
+        return ELF::R_AARCH64_FUNCINIT64;
       return ELF::R_AARCH64_ABS64;
     }
     case AArch64::fixup_aarch64_add_imm12:
diff --git a/llvm/lib/Target/AArch64/MCTargetDesc/AArch64MCAsmInfo.cpp 
b/llvm/lib/Target/AArch64/MCTargetDesc/AArch64MCAsmInfo.cpp
index 828c5c5462407..4238561804437 100644
--- a/llvm/lib/Target/AArch64/MCTargetDesc/AArch64MCAsmInfo.cpp
+++ b/llvm/lib/Target/AArch64/MCTargetDesc/AArch64MCAsmInfo.cpp
@@ -40,6 +40,7 @@ const MCAsmInfo::AtSpecifier ELFAtSpecifiers[] = {
     {AArch64::S_GOT, "GOT"},
     {AArch64::S_GOTPCREL, "GOTPCREL"},
     {AArch64::S_PLT, "PLT"},
+    {AArch64::S_FUNCINIT, "FUNCINIT"},
 };
 
 const MCAsmInfo::AtSpecifier MachOAtSpecifiers[] = {
diff --git a/llvm/lib/Target/AArch64/MCTargetDesc/AArch64MCAsmInfo.h 
b/llvm/lib/Target/AArch64/MCTargetDesc/AArch64MCAsmInfo.h
index c28e925d77e2b..a6fe7367605d3 100644
--- a/llvm/lib/Target/AArch64/MCTargetDesc/AArch64MCAsmInfo.h
+++ b/llvm/lib/Target/AArch64/MCTargetDesc/AArch64MCAsmInfo.h
@@ -164,6 +164,7 @@ enum {
   // ELF relocation specifiers in data directives:
   S_PLT          = 0x400,
   S_GOTPCREL,
+  S_FUNCINIT,
 
   // Mach-O @ relocation specifiers:
   S_MACHO_GOT,
diff --git a/llvm/test/MC/AArch64/data-directive-specifier.s 
b/llvm/test/MC/AArch64/data-directive-specifier.s
index 2cb7eb3a3ca81..2d1ec4feddfa3 100644
--- a/llvm/test/MC/AArch64/data-directive-specifier.s
+++ b/llvm/test/MC/AArch64/data-directive-specifier.s
@@ -12,6 +12,7 @@ l:
 # CHECK-NEXT:   0x8 R_AARCH64_PLT32 extern 0x4
 # CHECK-NEXT:   0xC R_AARCH64_PLT32 g 0x8
 # CHECK-NEXT:   0x10 R_AARCH64_PLT32 g 0x18
+# CHECK-NEXT:   0x14 R_AARCH64_FUNCINIT64 .text 0x0
 # CHECK-NEXT: }
 .data
 .word l@plt - .
@@ -21,6 +22,8 @@ l:
 .word g@plt - . + 8
 .word g@plt - .data + 8
 
+.quad l@funcinit
+
 # CHECK:      Section ({{.*}}) .rela.data1 {
 # CHECK-NEXT:   0x0 R_AARCH64_GOTPCREL32 data1 0x0
 # CHECK-NEXT:   0x4 R_AARCH64_GOTPCREL32 extern 0x4

>From 5789438b995e099f6e4d486f63cf1fafa25fac80 Mon Sep 17 00:00:00 2001
From: Peter Collingbourne <[email protected]>
Date: Tue, 2 Sep 2025 18:44:13 -0700
Subject: [PATCH 2/2] Address review comment

Created using spr 1.3.6-beta.1
---
 lld/test/ELF/aarch64-funcinit64-invalid.s | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/lld/test/ELF/aarch64-funcinit64-invalid.s 
b/lld/test/ELF/aarch64-funcinit64-invalid.s
index 2507c07056783..4577db7429773 100644
--- a/lld/test/ELF/aarch64-funcinit64-invalid.s
+++ b/lld/test/ELF/aarch64-funcinit64-invalid.s
@@ -4,11 +4,11 @@
 # 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
+# ERR: error: 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'
+# ERR: error: relocation R_AARCH64_FUNCINIT64 cannot be used against ifunc 
symbol 'ifunc'
 .8byte ifunc@FUNCINIT
 
 .text

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

Reply via email to