[PATCH] D81410: [ELF][AArch64] Correct relocation codes for R_<CLS>_PLT32

Peter Smith via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Mon Jun 8 10:30:04 PDT 2020


psmith created this revision.
psmith added reviewers: pcc, jakehehrlich, leonardchan, mcgrathr, stuij.
Herald added subscribers: danielkiss, rupprecht, MaskRay, kristof.beyls, emaste.
Herald added a reviewer: espindola.
Herald added a reviewer: jhenderson.
Herald added a project: LLVM.

The relocation codes for R_<CLS>_PLT32 are incorrectly in the dynamic relocation range that starts at 1024 for AArch64 and 180 for AArch64_32. Correct these codes so that they start at the next available static relocation code. The R_<CLS>_PLT32 description is currently in unpublished draft so this change corrects LLVM to match the values that will appear in the next release of ELF for the 64-bit Arm Architecture document.


https://reviews.llvm.org/D81410

Files:
  llvm/include/llvm/BinaryFormat/ELFRelocs/AArch64.def
  llvm/test/tools/llvm-readobj/ELF/reloc-types-elf-aarch64.test


Index: llvm/test/tools/llvm-readobj/ELF/reloc-types-elf-aarch64.test
===================================================================
--- llvm/test/tools/llvm-readobj/ELF/reloc-types-elf-aarch64.test
+++ llvm/test/tools/llvm-readobj/ELF/reloc-types-elf-aarch64.test
@@ -118,6 +118,7 @@
 # CHECK: Type: R_AARCH64_TLSLE_LDST128_TPREL_LO12_NC (571)
 # CHECK: Type: R_AARCH64_TLSLD_LDST128_DTPREL_LO12 (572)
 # CHECK: Type: R_AARCH64_TLSLD_LDST128_DTPREL_LO12_NC (573)
+# CHECK: Type: R_AARCH64_PLT32 (574)
 # CHECK: Type: R_AARCH64_COPY (1024)
 # CHECK: Type: R_AARCH64_GLOB_DAT (1025)
 # CHECK: Type: R_AARCH64_JUMP_SLOT (1026)
@@ -127,7 +128,6 @@
 # CHECK: Type: R_AARCH64_TLS_TPREL64 (1030)
 # CHECK: Type: R_AARCH64_TLSDESC (1031)
 # CHECK: Type: R_AARCH64_IRELATIVE (1032)
-# CHECK: Type: R_AARCH64_PLT32 (1033)
 
 --- !ELF
 FileHeader:
@@ -259,6 +259,7 @@
       - Type: R_AARCH64_TLSLE_LDST128_TPREL_LO12_NC
       - Type: R_AARCH64_TLSLD_LDST128_DTPREL_LO12
       - Type: R_AARCH64_TLSLD_LDST128_DTPREL_LO12_NC
+      - Type: R_AARCH64_PLT32
       - Type: R_AARCH64_COPY
       - Type: R_AARCH64_GLOB_DAT
       - Type: R_AARCH64_JUMP_SLOT
@@ -268,4 +269,3 @@
       - Type: R_AARCH64_TLS_TPREL64
       - Type: R_AARCH64_TLSDESC
       - Type: R_AARCH64_IRELATIVE
-      - Type: R_AARCH64_PLT32
Index: llvm/include/llvm/BinaryFormat/ELFRelocs/AArch64.def
===================================================================
--- llvm/include/llvm/BinaryFormat/ELFRelocs/AArch64.def
+++ llvm/include/llvm/BinaryFormat/ELFRelocs/AArch64.def
@@ -120,6 +120,8 @@
 ELF_RELOC(R_AARCH64_TLSLE_LDST128_TPREL_LO12_NC,     0x23b)
 ELF_RELOC(R_AARCH64_TLSLD_LDST128_DTPREL_LO12,       0x23c)
 ELF_RELOC(R_AARCH64_TLSLD_LDST128_DTPREL_LO12_NC,    0x23d)
+ELF_RELOC(R_AARCH64_PLT32,                           0x23e)
+// Dynamic relocations start
 ELF_RELOC(R_AARCH64_COPY,                            0x400)
 ELF_RELOC(R_AARCH64_GLOB_DAT,                        0x401)
 ELF_RELOC(R_AARCH64_JUMP_SLOT,                       0x402)
@@ -132,7 +134,6 @@
 ELF_RELOC(R_AARCH64_TLS_TPREL64,                     0x406)
 ELF_RELOC(R_AARCH64_TLSDESC,                         0x407)
 ELF_RELOC(R_AARCH64_IRELATIVE,                       0x408)
-ELF_RELOC(R_AARCH64_PLT32,                           0x409)
 
 // ELF_RELOC(R_AARCH64_P32_NONE,                         0)
 ELF_RELOC(R_AARCH64_P32_ABS32,                       0x001)
@@ -211,6 +212,8 @@
 ELF_RELOC(R_AARCH64_P32_TLSDESC_LD32_LO12,           0x07d)
 ELF_RELOC(R_AARCH64_P32_TLSDESC_ADD_LO12,            0x07e)
 ELF_RELOC(R_AARCH64_P32_TLSDESC_CALL,                0x07f)
+ELF_RELOC(R_AARCH64_P32_PLT32,                       0x080)
+// Dynamic relocations start
 ELF_RELOC(R_AARCH64_P32_COPY,                        0x0b4)
 ELF_RELOC(R_AARCH64_P32_GLOB_DAT,                    0x0b5)
 ELF_RELOC(R_AARCH64_P32_JUMP_SLOT,                   0x0b6)
@@ -220,4 +223,3 @@
 ELF_RELOC(R_AARCH64_P32_TLS_TPREL,                   0x0ba)
 ELF_RELOC(R_AARCH64_P32_TLSDESC,                     0x0bb)
 ELF_RELOC(R_AARCH64_P32_IRELATIVE,                   0x0bc)
-ELF_RELOC(R_AARCH64_P32_PLT32,                       0x0bd)


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D81410.269274.patch
Type: text/x-patch
Size: 3154 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20200608/bad0e42f/attachment.bin>


More information about the llvm-commits mailing list