]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - contrib/llvm/patches/patch-14-llvm-r215352-aarch64-dyn-loader.diff
Merge ^/head r274961 through r275684.
[FreeBSD/FreeBSD.git] / contrib / llvm / patches / patch-14-llvm-r215352-aarch64-dyn-loader.diff
1 Pull in r215352 from upstream llvm trunk (by Tim Northover):
2
3   AArch64: add support for dynamic-loader relocations
4
5   LLD needs them, and it's good to be able to print them properly when
6   our object dumpers encounter them.
7
8   Patch by Daniel Stewart.
9
10 This is needed for supporting the upgrade to a newer LLDB snapshot.
11
12 Introduced here: http://svnweb.freebsd.org/changeset/base/275152
13
14 Index: test/tools/llvm-readobj/Inputs/relocs.obj.elf-aarch64
15 ===================================================================
16 Cannot display: file marked as a binary type.
17 svn:mime-type = application/x-object
18 Index: test/tools/llvm-readobj/Inputs/relocs.py
19 ===================================================================
20 --- test/tools/llvm-readobj/Inputs/relocs.py
21 +++ test/tools/llvm-readobj/Inputs/relocs.py
22 @@ -617,6 +617,8 @@ class Relocs_Elf_AArch64(Enum):
23    R_AARCH64_LDST32_ABS_LO12_NC          = 0x11d
24    R_AARCH64_LDST64_ABS_LO12_NC          = 0x11e
25    R_AARCH64_LDST128_ABS_LO12_NC         = 0x12b
26 +  R_AARCH64_GOTREL64                    = 0x133
27 +  R_AARCH64_GOTREL32                    = 0x134
28    R_AARCH64_ADR_GOT_PAGE                = 0x137
29    R_AARCH64_LD64_GOT_LO12_NC            = 0x138
30    R_AARCH64_TLSLD_MOVW_DTPREL_G2        = 0x20b
31 @@ -660,6 +662,15 @@ class Relocs_Elf_AArch64(Enum):
32    R_AARCH64_TLSDESC_LD64_LO12_NC        = 0x233
33    R_AARCH64_TLSDESC_ADD_LO12_NC         = 0x234
34    R_AARCH64_TLSDESC_CALL                = 0x239
35 +  R_AARCH64_COPY                        = 0x400
36 +  R_AARCH64_GLOB_DAT                    = 0x401
37 +  R_AARCH64_JUMP_SLOT                   = 0x402
38 +  R_AARCH64_RELATIVE                    = 0x403
39 +  R_AARCH64_TLS_DTPREL64                = 0x404
40 +  R_AARCH64_TLS_DTPMOD64                = 0x405
41 +  R_AARCH64_TLS_TPREL64                 = 0x406
42 +  R_AARCH64_TLSDESC                     = 0x407
43 +  R_AARCH64_IRELATIVE                   = 0x408
44  
45  class Relocs_Elf_ARM(Enum):
46    R_ARM_NONE                  = 0x00
47 Index: test/tools/llvm-readobj/reloc-types.test
48 ===================================================================
49 --- test/tools/llvm-readobj/reloc-types.test
50 +++ test/tools/llvm-readobj/reloc-types.test
51 @@ -179,6 +179,8 @@ ELF-AARCH64: Type: R_AARCH64_LDST16_ABS_LO12_NC (2
52  ELF-AARCH64: Type: R_AARCH64_LDST32_ABS_LO12_NC (285)
53  ELF-AARCH64: Type: R_AARCH64_LDST64_ABS_LO12_NC (286)
54  ELF-AARCH64: Type: R_AARCH64_LDST128_ABS_LO12_NC (299)
55 +ELF-AARCH64: Type: R_AARCH64_GOTREL64 (307)
56 +ELF-AARCH64: Type: R_AARCH64_GOTREL32 (308)
57  ELF-AARCH64: Type: R_AARCH64_ADR_GOT_PAGE (311)
58  ELF-AARCH64: Type: R_AARCH64_LD64_GOT_LO12_NC (312)
59  ELF-AARCH64: Type: R_AARCH64_TLSLD_MOVW_DTPREL_G2 (523)
60 @@ -222,6 +224,15 @@ ELF-AARCH64: Type: R_AARCH64_TLSDESC_ADR_PAGE (562
61  ELF-AARCH64: Type: R_AARCH64_TLSDESC_LD64_LO12_NC (563)
62  ELF-AARCH64: Type: R_AARCH64_TLSDESC_ADD_LO12_NC (564)
63  ELF-AARCH64: Type: R_AARCH64_TLSDESC_CALL (569)
64 +ELF-AARCH64: Type: R_AARCH64_COPY (1024)
65 +ELF-AARCH64: Type: R_AARCH64_GLOB_DAT (1025)
66 +ELF-AARCH64: Type: R_AARCH64_JUMP_SLOT (1026)
67 +ELF-AARCH64: Type: R_AARCH64_RELATIVE (1027)
68 +ELF-AARCH64: Type: R_AARCH64_TLS_DTPREL64 (1028)
69 +ELF-AARCH64: Type: R_AARCH64_TLS_DTPMOD64 (1029)
70 +ELF-AARCH64: Type: R_AARCH64_TLS_TPREL64 (1030)
71 +ELF-AARCH64: Type: R_AARCH64_TLSDESC (1031)
72 +ELF-AARCH64: Type: R_AARCH64_IRELATIVE (1032)
73  
74  ELF-ARM: Type: R_ARM_NONE (0)
75  ELF-ARM: Type: R_ARM_PC24 (1)
76 Index: include/llvm/Support/ELF.h
77 ===================================================================
78 --- include/llvm/Support/ELF.h
79 +++ include/llvm/Support/ELF.h
80 @@ -653,6 +653,9 @@ enum {
81  
82    R_AARCH64_LDST128_ABS_LO12_NC         = 0x12b,
83  
84 +  R_AARCH64_GOTREL64                    = 0x133,
85 +  R_AARCH64_GOTREL32                    = 0x134,
86 +
87    R_AARCH64_ADR_GOT_PAGE                = 0x137,
88    R_AARCH64_LD64_GOT_LO12_NC            = 0x138,
89  
90 @@ -700,7 +703,17 @@ enum {
91    R_AARCH64_TLSDESC_LD64_LO12_NC        = 0x233,
92    R_AARCH64_TLSDESC_ADD_LO12_NC         = 0x234,
93  
94 -  R_AARCH64_TLSDESC_CALL                = 0x239
95 +  R_AARCH64_TLSDESC_CALL                = 0x239,
96 +
97 +  R_AARCH64_COPY                        = 0x400,
98 +  R_AARCH64_GLOB_DAT                    = 0x401,
99 +  R_AARCH64_JUMP_SLOT                   = 0x402,
100 +  R_AARCH64_RELATIVE                    = 0x403,
101 +  R_AARCH64_TLS_DTPREL64                = 0x404,
102 +  R_AARCH64_TLS_DTPMOD64                = 0x405,
103 +  R_AARCH64_TLS_TPREL64                 = 0x406,
104 +  R_AARCH64_TLSDESC                     = 0x407,
105 +  R_AARCH64_IRELATIVE                   = 0x408
106  };
107  
108  // ARM Specific e_flags
109 Index: lib/Object/ELF.cpp
110 ===================================================================
111 --- lib/Object/ELF.cpp
112 +++ lib/Object/ELF.cpp
113 @@ -223,6 +223,8 @@ StringRef getELFRelocationTypeName(uint32_t Machin
114        LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_AARCH64_LDST32_ABS_LO12_NC);
115        LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_AARCH64_LDST64_ABS_LO12_NC);
116        LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_AARCH64_LDST128_ABS_LO12_NC);
117 +      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_AARCH64_GOTREL64);
118 +      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_AARCH64_GOTREL32);
119        LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_AARCH64_ADR_GOT_PAGE);
120        LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_AARCH64_LD64_GOT_LO12_NC);
121        LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_AARCH64_TLSLD_MOVW_DTPREL_G2);
122 @@ -266,6 +268,15 @@ StringRef getELFRelocationTypeName(uint32_t Machin
123        LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_AARCH64_TLSDESC_LD64_LO12_NC);
124        LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_AARCH64_TLSDESC_ADD_LO12_NC);
125        LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_AARCH64_TLSDESC_CALL);
126 +      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_AARCH64_COPY);
127 +      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_AARCH64_GLOB_DAT);
128 +      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_AARCH64_JUMP_SLOT);
129 +      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_AARCH64_RELATIVE);
130 +      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_AARCH64_TLS_DTPREL64);
131 +      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_AARCH64_TLS_DTPMOD64);
132 +      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_AARCH64_TLS_TPREL64);
133 +      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_AARCH64_TLSDESC);
134 +      LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_AARCH64_IRELATIVE);
135      default:
136        break;
137      }