diff --git a/include/llvm/Support/ELF.h b/include/llvm/Support/ELF.h index 5b137a41356..a51a0513529 100644 --- a/include/llvm/Support/ELF.h +++ b/include/llvm/Support/ELF.h @@ -655,6 +655,9 @@ enum { R_AARCH64_LDST128_ABS_LO12_NC = 0x12b, + R_AARCH64_GOTREL64 = 0x133, + R_AARCH64_GOTREL32 = 0x134, + R_AARCH64_ADR_GOT_PAGE = 0x137, R_AARCH64_LD64_GOT_LO12_NC = 0x138, @@ -702,7 +705,17 @@ enum { R_AARCH64_TLSDESC_LD64_LO12_NC = 0x233, R_AARCH64_TLSDESC_ADD_LO12_NC = 0x234, - R_AARCH64_TLSDESC_CALL = 0x239 + R_AARCH64_TLSDESC_CALL = 0x239, + + R_AARCH64_COPY = 0x400, + R_AARCH64_GLOB_DAT = 0x401, + R_AARCH64_JUMP_SLOT = 0x402, + R_AARCH64_RELATIVE = 0x403, + R_AARCH64_TLS_DTPREL64 = 0x404, + R_AARCH64_TLS_DTPMOD64 = 0x405, + R_AARCH64_TLS_TPREL64 = 0x406, + R_AARCH64_TLSDESC = 0x407, + R_AARCH64_IRELATIVE = 0x408 }; // ARM Specific e_flags diff --git a/lib/Object/ELF.cpp b/lib/Object/ELF.cpp index d999106ba98..11099bd8bc6 100644 --- a/lib/Object/ELF.cpp +++ b/lib/Object/ELF.cpp @@ -223,6 +223,8 @@ StringRef getELFRelocationTypeName(uint32_t Machine, uint32_t Type) { LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_AARCH64_LDST32_ABS_LO12_NC); LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_AARCH64_LDST64_ABS_LO12_NC); LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_AARCH64_LDST128_ABS_LO12_NC); + LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_AARCH64_GOTREL64); + LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_AARCH64_GOTREL32); LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_AARCH64_ADR_GOT_PAGE); LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_AARCH64_LD64_GOT_LO12_NC); LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_AARCH64_TLSLD_MOVW_DTPREL_G2); @@ -266,6 +268,15 @@ StringRef getELFRelocationTypeName(uint32_t Machine, uint32_t Type) { LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_AARCH64_TLSDESC_LD64_LO12_NC); LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_AARCH64_TLSDESC_ADD_LO12_NC); LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_AARCH64_TLSDESC_CALL); + LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_AARCH64_COPY); + LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_AARCH64_GLOB_DAT); + LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_AARCH64_JUMP_SLOT); + LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_AARCH64_RELATIVE); + LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_AARCH64_TLS_DTPREL64); + LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_AARCH64_TLS_DTPMOD64); + LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_AARCH64_TLS_TPREL64); + LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_AARCH64_TLSDESC); + LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_AARCH64_IRELATIVE); default: break; } diff --git a/test/tools/llvm-readobj/Inputs/relocs.obj.elf-aarch64 b/test/tools/llvm-readobj/Inputs/relocs.obj.elf-aarch64 index d39e60c8eec..a1034cb77f5 100644 Binary files a/test/tools/llvm-readobj/Inputs/relocs.obj.elf-aarch64 and b/test/tools/llvm-readobj/Inputs/relocs.obj.elf-aarch64 differ diff --git a/test/tools/llvm-readobj/Inputs/relocs.py b/test/tools/llvm-readobj/Inputs/relocs.py index c5f87089612..ffddf3daaed 100644 --- a/test/tools/llvm-readobj/Inputs/relocs.py +++ b/test/tools/llvm-readobj/Inputs/relocs.py @@ -621,6 +621,8 @@ class Relocs_Elf_AArch64(Enum): R_AARCH64_LDST32_ABS_LO12_NC = 0x11d R_AARCH64_LDST64_ABS_LO12_NC = 0x11e R_AARCH64_LDST128_ABS_LO12_NC = 0x12b + R_AARCH64_GOTREL64 = 0x133 + R_AARCH64_GOTREL32 = 0x134 R_AARCH64_ADR_GOT_PAGE = 0x137 R_AARCH64_LD64_GOT_LO12_NC = 0x138 R_AARCH64_TLSLD_MOVW_DTPREL_G2 = 0x20b @@ -664,6 +666,15 @@ class Relocs_Elf_AArch64(Enum): R_AARCH64_TLSDESC_LD64_LO12_NC = 0x233 R_AARCH64_TLSDESC_ADD_LO12_NC = 0x234 R_AARCH64_TLSDESC_CALL = 0x239 + R_AARCH64_COPY = 0x400 + R_AARCH64_GLOB_DAT = 0x401 + R_AARCH64_JUMP_SLOT = 0x402 + R_AARCH64_RELATIVE = 0x403 + R_AARCH64_TLS_DTPREL64 = 0x404 + R_AARCH64_TLS_DTPMOD64 = 0x405 + R_AARCH64_TLS_TPREL64 = 0x406 + R_AARCH64_TLSDESC = 0x407 + R_AARCH64_IRELATIVE = 0x408 class Relocs_Elf_ARM(Enum): R_ARM_NONE = 0x00 diff --git a/test/tools/llvm-readobj/reloc-types.test b/test/tools/llvm-readobj/reloc-types.test index 0c8b54dbc6b..03eda82a6f0 100644 --- a/test/tools/llvm-readobj/reloc-types.test +++ b/test/tools/llvm-readobj/reloc-types.test @@ -179,6 +179,8 @@ ELF-AARCH64: Type: R_AARCH64_LDST16_ABS_LO12_NC (284) ELF-AARCH64: Type: R_AARCH64_LDST32_ABS_LO12_NC (285) ELF-AARCH64: Type: R_AARCH64_LDST64_ABS_LO12_NC (286) ELF-AARCH64: Type: R_AARCH64_LDST128_ABS_LO12_NC (299) +ELF-AARCH64: Type: R_AARCH64_GOTREL64 (307) +ELF-AARCH64: Type: R_AARCH64_GOTREL32 (308) ELF-AARCH64: Type: R_AARCH64_ADR_GOT_PAGE (311) ELF-AARCH64: Type: R_AARCH64_LD64_GOT_LO12_NC (312) ELF-AARCH64: Type: R_AARCH64_TLSLD_MOVW_DTPREL_G2 (523) @@ -222,6 +224,15 @@ ELF-AARCH64: Type: R_AARCH64_TLSDESC_ADR_PAGE (562) ELF-AARCH64: Type: R_AARCH64_TLSDESC_LD64_LO12_NC (563) ELF-AARCH64: Type: R_AARCH64_TLSDESC_ADD_LO12_NC (564) ELF-AARCH64: Type: R_AARCH64_TLSDESC_CALL (569) +ELF-AARCH64: Type: R_AARCH64_COPY (1024) +ELF-AARCH64: Type: R_AARCH64_GLOB_DAT (1025) +ELF-AARCH64: Type: R_AARCH64_JUMP_SLOT (1026) +ELF-AARCH64: Type: R_AARCH64_RELATIVE (1027) +ELF-AARCH64: Type: R_AARCH64_TLS_DTPREL64 (1028) +ELF-AARCH64: Type: R_AARCH64_TLS_DTPMOD64 (1029) +ELF-AARCH64: Type: R_AARCH64_TLS_TPREL64 (1030) +ELF-AARCH64: Type: R_AARCH64_TLSDESC (1031) +ELF-AARCH64: Type: R_AARCH64_IRELATIVE (1032) ELF-ARM: Type: R_ARM_NONE (0) ELF-ARM: Type: R_ARM_PC24 (1)