[llvm-branch-commits] [llvm] 31868be - [yaml2obj] Support R_PPC_* relocation types

Fangrui Song via llvm-branch-commits llvm-branch-commits at lists.llvm.org
Fri Feb 4 15:16:42 PST 2022


Author: Fangrui Song
Date: 2022-02-04T15:16:21-08:00
New Revision: 31868bef9568751f64a1e3855bb0ef5cd9e93041

URL: https://github.com/llvm/llvm-project/commit/31868bef9568751f64a1e3855bb0ef5cd9e93041
DIFF: https://github.com/llvm/llvm-project/commit/31868bef9568751f64a1e3855bb0ef5cd9e93041.diff

LOG: [yaml2obj] Support R_PPC_* relocation types

(cherry picked from commit c161b30f5c23ef9fe246d6bdf875c5a08cf2df9f)

Added: 
    llvm/test/tools/llvm-readobj/ELF/reloc-types-ppc.test

Modified: 
    llvm/lib/ObjectYAML/ELFYAML.cpp

Removed: 
    


################################################################################
diff  --git a/llvm/lib/ObjectYAML/ELFYAML.cpp b/llvm/lib/ObjectYAML/ELFYAML.cpp
index d597148b98ab4..3d4cd4088e9fc 100644
--- a/llvm/lib/ObjectYAML/ELFYAML.cpp
+++ b/llvm/lib/ObjectYAML/ELFYAML.cpp
@@ -839,6 +839,9 @@ void ScalarEnumerationTraits<ELFYAML::ELF_REL>::enumeration(
   case ELF::EM_CSKY:
 #include "llvm/BinaryFormat/ELFRelocs/CSKY.def"
     break;
+  case ELF::EM_PPC:
+#include "llvm/BinaryFormat/ELFRelocs/PowerPC.def"
+    break;
   case ELF::EM_PPC64:
 #include "llvm/BinaryFormat/ELFRelocs/PowerPC64.def"
     break;

diff  --git a/llvm/test/tools/llvm-readobj/ELF/reloc-types-ppc.test b/llvm/test/tools/llvm-readobj/ELF/reloc-types-ppc.test
new file mode 100644
index 0000000000000..594d2da6c387a
--- /dev/null
+++ b/llvm/test/tools/llvm-readobj/ELF/reloc-types-ppc.test
@@ -0,0 +1,163 @@
+## Test that llvm-readobj shows proper relocation type
+## names and values for ppc target.
+
+# RUN: yaml2obj %s -o %t-ppc.o
+# RUN: llvm-readobj -r --expand-relocs %t-ppc.o | FileCheck %s
+
+# CHECK: Type: R_PPC_NONE (0)
+# CHECK: Type: R_PPC_ADDR32 (1)
+# CHECK: Type: R_PPC_ADDR24 (2)
+# CHECK: Type: R_PPC_ADDR16 (3)
+# CHECK: Type: R_PPC_ADDR16_LO (4)
+# CHECK: Type: R_PPC_ADDR16_HI (5)
+# CHECK: Type: R_PPC_ADDR16_HA (6)
+# CHECK: Type: R_PPC_ADDR14 (7)
+# CHECK: Type: R_PPC_ADDR14_BRTAKEN (8)
+# CHECK: Type: R_PPC_ADDR14_BRNTAKEN (9)
+# CHECK: Type: R_PPC_REL24 (10)
+# CHECK: Type: R_PPC_REL14 (11)
+# CHECK: Type: R_PPC_REL14_BRTAKEN (12)
+# CHECK: Type: R_PPC_REL14_BRNTAKEN (13)
+# CHECK: Type: R_PPC_GOT16 (14)
+# CHECK: Type: R_PPC_GOT16_LO (15)
+# CHECK: Type: R_PPC_GOT16_HI (16)
+# CHECK: Type: R_PPC_GOT16_HA (17)
+# CHECK: Type: R_PPC_PLTREL24 (18)
+# CHECK: Type: R_PPC_COPY (19)
+# CHECK: Type: R_PPC_GLOB_DAT (20)
+# CHECK: Type: R_PPC_JMP_SLOT (21)
+# CHECK: Type: R_PPC_RELATIVE (22)
+# CHECK: Type: R_PPC_LOCAL24PC (23)
+# CHECK: Type: R_PPC_UADDR32 (24)
+# CHECK: Type: R_PPC_UADDR16 (25)
+# CHECK: Type: R_PPC_REL32 (26)
+# CHECK: Type: R_PPC_PLT32 (27)
+# CHECK: Type: R_PPC_PLTREL32 (28)
+# CHECK: Type: R_PPC_PLT16_LO (29)
+# CHECK: Type: R_PPC_PLT16_HI (30)
+# CHECK: Type: R_PPC_PLT16_HA (31)
+# CHECK: Type: R_PPC_SDAREL16 (32)
+# CHECK: Type: R_PPC_SECTOFF (33)
+# CHECK: Type: R_PPC_SECTOFF_LO (34)
+# CHECK: Type: R_PPC_SECTOFF_HI (35)
+# CHECK: Type: R_PPC_SECTOFF_HA (36)
+# CHECK: Type: R_PPC_ADDR30 (37)
+# CHECK: Type: R_PPC_TLS (67)
+# CHECK: Type: R_PPC_DTPMOD32 (68)
+# CHECK: Type: R_PPC_TPREL16 (69)
+# CHECK: Type: R_PPC_TPREL16_LO (70)
+# CHECK: Type: R_PPC_TPREL16_HI (71)
+# CHECK: Type: R_PPC_TPREL16_HA (72)
+# CHECK: Type: R_PPC_TPREL32 (73)
+# CHECK: Type: R_PPC_DTPREL16 (74)
+# CHECK: Type: R_PPC_DTPREL16_LO (75)
+# CHECK: Type: R_PPC_DTPREL16_HI (76)
+# CHECK: Type: R_PPC_DTPREL16_HA (77)
+# CHECK: Type: R_PPC_DTPREL32 (78)
+# CHECK: Type: R_PPC_GOT_TLSGD16 (79)
+# CHECK: Type: R_PPC_GOT_TLSGD16_LO (80)
+# CHECK: Type: R_PPC_GOT_TLSGD16_HI (81)
+# CHECK: Type: R_PPC_GOT_TLSGD16_HA (82)
+# CHECK: Type: R_PPC_GOT_TLSLD16 (83)
+# CHECK: Type: R_PPC_GOT_TLSLD16_LO (84)
+# CHECK: Type: R_PPC_GOT_TLSLD16_HI (85)
+# CHECK: Type: R_PPC_GOT_TLSLD16_HA (86)
+# CHECK: Type: R_PPC_GOT_TPREL16 (87)
+# CHECK: Type: R_PPC_GOT_TPREL16_LO (88)
+# CHECK: Type: R_PPC_GOT_TPREL16_HI (89)
+# CHECK: Type: R_PPC_GOT_TPREL16_HA (90)
+# CHECK: Type: R_PPC_GOT_DTPREL16 (91)
+# CHECK: Type: R_PPC_GOT_DTPREL16_LO (92)
+# CHECK: Type: R_PPC_GOT_DTPREL16_HI (93)
+# CHECK: Type: R_PPC_GOT_DTPREL16_HA (94)
+# CHECK: Type: R_PPC_TLSGD (95)
+# CHECK: Type: R_PPC_TLSLD (96)
+# CHECK: Type: R_PPC_IRELATIVE (248)
+# CHECK: Type: R_PPC_REL16 (249)
+# CHECK: Type: R_PPC_REL16_LO (250)
+# CHECK: Type: R_PPC_REL16_HI (251)
+# CHECK: Type: R_PPC_REL16_HA (252)
+
+--- !ELF
+FileHeader:
+  Class:   ELFCLASS32
+  Data:    ELFDATA2MSB
+  Type:    ET_REL
+  Machine: EM_PPC
+Sections:
+  - Name: .rela.text
+    Type: SHT_RELA
+    Relocations:
+      - Type: R_PPC_NONE
+      - Type: R_PPC_ADDR32
+      - Type: R_PPC_ADDR24
+      - Type: R_PPC_ADDR16
+      - Type: R_PPC_ADDR16_LO
+      - Type: R_PPC_ADDR16_HI
+      - Type: R_PPC_ADDR16_HA
+      - Type: R_PPC_ADDR14
+      - Type: R_PPC_ADDR14_BRTAKEN
+      - Type: R_PPC_ADDR14_BRNTAKEN
+      - Type: R_PPC_REL24
+      - Type: R_PPC_REL14
+      - Type: R_PPC_REL14_BRTAKEN
+      - Type: R_PPC_REL14_BRNTAKEN
+      - Type: R_PPC_GOT16
+      - Type: R_PPC_GOT16_LO
+      - Type: R_PPC_GOT16_HI
+      - Type: R_PPC_GOT16_HA
+      - Type: R_PPC_PLTREL24
+      - Type: R_PPC_COPY
+      - Type: R_PPC_GLOB_DAT
+      - Type: R_PPC_JMP_SLOT
+      - Type: R_PPC_RELATIVE
+      - Type: R_PPC_LOCAL24PC
+      - Type: R_PPC_UADDR32
+      - Type: R_PPC_UADDR16
+      - Type: R_PPC_REL32
+      - Type: R_PPC_PLT32
+      - Type: R_PPC_PLTREL32
+      - Type: R_PPC_PLT16_LO
+      - Type: R_PPC_PLT16_HI
+      - Type: R_PPC_PLT16_HA
+      - Type: R_PPC_SDAREL16
+      - Type: R_PPC_SECTOFF
+      - Type: R_PPC_SECTOFF_LO
+      - Type: R_PPC_SECTOFF_HI
+      - Type: R_PPC_SECTOFF_HA
+      - Type: R_PPC_ADDR30
+      - Type: R_PPC_TLS
+      - Type: R_PPC_DTPMOD32
+      - Type: R_PPC_TPREL16
+      - Type: R_PPC_TPREL16_LO
+      - Type: R_PPC_TPREL16_HI
+      - Type: R_PPC_TPREL16_HA
+      - Type: R_PPC_TPREL32
+      - Type: R_PPC_DTPREL16
+      - Type: R_PPC_DTPREL16_LO
+      - Type: R_PPC_DTPREL16_HI
+      - Type: R_PPC_DTPREL16_HA
+      - Type: R_PPC_DTPREL32
+      - Type: R_PPC_GOT_TLSGD16
+      - Type: R_PPC_GOT_TLSGD16_LO
+      - Type: R_PPC_GOT_TLSGD16_HI
+      - Type: R_PPC_GOT_TLSGD16_HA
+      - Type: R_PPC_GOT_TLSLD16
+      - Type: R_PPC_GOT_TLSLD16_LO
+      - Type: R_PPC_GOT_TLSLD16_HI
+      - Type: R_PPC_GOT_TLSLD16_HA
+      - Type: R_PPC_GOT_TPREL16
+      - Type: R_PPC_GOT_TPREL16_LO
+      - Type: R_PPC_GOT_TPREL16_HI
+      - Type: R_PPC_GOT_TPREL16_HA
+      - Type: R_PPC_GOT_DTPREL16
+      - Type: R_PPC_GOT_DTPREL16_LO
+      - Type: R_PPC_GOT_DTPREL16_HI
+      - Type: R_PPC_GOT_DTPREL16_HA
+      - Type: R_PPC_TLSGD
+      - Type: R_PPC_TLSLD
+      - Type: R_PPC_IRELATIVE
+      - Type: R_PPC_REL16
+      - Type: R_PPC_REL16_LO
+      - Type: R_PPC_REL16_HI
+      - Type: R_PPC_REL16_HA


        


More information about the llvm-branch-commits mailing list