diff options
Diffstat (limited to 'contrib/llvm/patches/patch-14-llvm-r215352-aarch64-dyn-loader.diff')
-rw-r--r-- | contrib/llvm/patches/patch-14-llvm-r215352-aarch64-dyn-loader.diff | 137 |
1 files changed, 137 insertions, 0 deletions
diff --git a/contrib/llvm/patches/patch-14-llvm-r215352-aarch64-dyn-loader.diff b/contrib/llvm/patches/patch-14-llvm-r215352-aarch64-dyn-loader.diff new file mode 100644 index 0000000..c297076 --- /dev/null +++ b/contrib/llvm/patches/patch-14-llvm-r215352-aarch64-dyn-loader.diff @@ -0,0 +1,137 @@ +Pull in r215352 from upstream llvm trunk (by Tim Northover): + + AArch64: add support for dynamic-loader relocations + + LLD needs them, and it's good to be able to print them properly when + our object dumpers encounter them. + + Patch by Daniel Stewart. + +This is needed for supporting the upgrade to a newer LLDB snapshot. + +Introduced here: http://svnweb.freebsd.org/changeset/base/275152 + +Index: test/tools/llvm-readobj/Inputs/relocs.obj.elf-aarch64 +=================================================================== +Cannot display: file marked as a binary type. +svn:mime-type = application/x-object +Index: test/tools/llvm-readobj/Inputs/relocs.py +=================================================================== +--- test/tools/llvm-readobj/Inputs/relocs.py (revision 14) ++++ test/tools/llvm-readobj/Inputs/relocs.py (revision 15) +@@ -617,6 +617,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 +@@ -660,6 +662,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 +Index: test/tools/llvm-readobj/reloc-types.test +=================================================================== +--- test/tools/llvm-readobj/reloc-types.test (revision 14) ++++ test/tools/llvm-readobj/reloc-types.test (revision 15) +@@ -179,6 +179,8 @@ ELF-AARCH64: Type: R_AARCH64_LDST16_ABS_LO12_NC (2 + 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) +Index: include/llvm/Support/ELF.h +=================================================================== +--- include/llvm/Support/ELF.h (revision 14) ++++ include/llvm/Support/ELF.h (revision 15) +@@ -653,6 +653,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, + +@@ -700,7 +703,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 +Index: lib/Object/ELF.cpp +=================================================================== +--- lib/Object/ELF.cpp (revision 14) ++++ lib/Object/ELF.cpp (revision 15) +@@ -223,6 +223,8 @@ StringRef getELFRelocationTypeName(uint32_t Machin + 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 Machin + 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; + } |