1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
| ## Test that llvm-readobj/llvm-readelf shows proper relocation type
## names and values for x86_64 target.
# RUN: yaml2obj %s -o %t-x86_64.o
# RUN: llvm-readobj -r --expand-relocs %t-x86_64.o | FileCheck %s --check-prefix=LLVM
# RUN: llvm-readelf -r --expand-relocs %t-x86_64.o | FileCheck %s --check-prefix=GNU
# LLVM: Type: R_X86_64_NONE (0)
# LLVM: Type: R_X86_64_64 (1)
# LLVM: Type: R_X86_64_PC32 (2)
# LLVM: Type: R_X86_64_GOT32 (3)
# LLVM: Type: R_X86_64_PLT32 (4)
# LLVM: Type: R_X86_64_COPY (5)
# LLVM: Type: R_X86_64_GLOB_DAT (6)
# LLVM: Type: R_X86_64_JUMP_SLOT (7)
# LLVM: Type: R_X86_64_RELATIVE (8)
# LLVM: Type: R_X86_64_GOTPCREL (9)
# LLVM: Type: R_X86_64_32 (10)
# LLVM: Type: R_X86_64_32S (11)
# LLVM: Type: R_X86_64_16 (12)
# LLVM: Type: R_X86_64_PC16 (13)
# LLVM: Type: R_X86_64_8 (14)
# LLVM: Type: R_X86_64_PC8 (15)
# LLVM: Type: R_X86_64_DTPMOD64 (16)
# LLVM: Type: R_X86_64_DTPOFF64 (17)
# LLVM: Type: R_X86_64_TPOFF64 (18)
# LLVM: Type: R_X86_64_TLSGD (19)
# LLVM: Type: R_X86_64_TLSLD (20)
# LLVM: Type: R_X86_64_DTPOFF32 (21)
# LLVM: Type: R_X86_64_GOTTPOFF (22)
# LLVM: Type: R_X86_64_TPOFF32 (23)
# LLVM: Type: R_X86_64_PC64 (24)
# LLVM: Type: R_X86_64_GOTOFF64 (25)
# LLVM: Type: R_X86_64_GOTPC32 (26)
# LLVM: Type: R_X86_64_GOT64 (27)
# LLVM: Type: R_X86_64_GOTPCREL64 (28)
# LLVM: Type: R_X86_64_GOTPC64 (29)
# LLVM: Type: R_X86_64_GOTPLT64 (30)
# LLVM: Type: R_X86_64_PLTOFF64 (31)
# LLVM: Type: R_X86_64_SIZE32 (32)
# LLVM: Type: R_X86_64_SIZE64 (33)
# LLVM: Type: R_X86_64_GOTPC32_TLSDESC (34)
# LLVM: Type: R_X86_64_TLSDESC_CALL (35)
# LLVM: Type: R_X86_64_TLSDESC (36)
# LLVM: Type: R_X86_64_IRELATIVE (37)
# LLVM: Type: R_X86_64_GOTPCRELX (41)
# LLVM: Type: R_X86_64_REX_GOTPCRELX (42)
# GNU: Relocation section '.rela.text' at offset 0x48 contains 40 entries:
# GNU-NEXT: Offset Info Type Symbol's Value Symbol's Name + Addend
# GNU-NEXT: 0000000000000003 0000000100000000 R_X86_64_NONE 0000000000000000 foo + 0
# GNU-NEXT: 000000000000000a 0000000100000001 R_X86_64_64 0000000000000000 foo + 0
# GNU-NEXT: 0000000000000011 0000000100000002 R_X86_64_PC32 0000000000000000 foo + 0
# GNU-NEXT: 0000000000000018 0000000100000003 R_X86_64_GOT32 0000000000000000 foo + 0
# GNU-NEXT: 000000000000001f 0000000100000004 R_X86_64_PLT32 0000000000000000 foo + 0
# GNU-NEXT: 0000000000000026 0000000100000005 R_X86_64_COPY 0000000000000000 foo + 0
# GNU-NEXT: 000000000000002d 0000000100000006 R_X86_64_GLOB_DAT 0000000000000000 foo + 0
# GNU-NEXT: 0000000000000034 0000000100000007 R_X86_64_JUMP_SLOT 0000000000000000 foo + 0
# GNU-NEXT: 000000000000003b 0000000100000008 R_X86_64_RELATIVE 0000000000000000 foo + 0
# GNU-NEXT: 0000000000000042 0000000100000009 R_X86_64_GOTPCREL 0000000000000000 foo + 0
# GNU-NEXT: 0000000000000049 000000010000000a R_X86_64_32 0000000000000000 foo + 0
# GNU-NEXT: 0000000000000050 000000010000000b R_X86_64_32S 0000000000000000 foo + 0
# GNU-NEXT: 0000000000000057 000000010000000c R_X86_64_16 0000000000000000 foo + 0
# GNU-NEXT: 000000000000005e 000000010000000d R_X86_64_PC16 0000000000000000 foo + 0
# GNU-NEXT: 0000000000000065 000000010000000e R_X86_64_8 0000000000000000 foo + 0
# GNU-NEXT: 000000000000006c 000000010000000f R_X86_64_PC8 0000000000000000 foo + 0
# GNU-NEXT: 0000000000000073 0000000100000010 R_X86_64_DTPMOD64 0000000000000000 foo + 0
# GNU-NEXT: 000000000000007a 0000000100000011 R_X86_64_DTPOFF64 0000000000000000 foo + 0
# GNU-NEXT: 0000000000000081 0000000100000012 R_X86_64_TPOFF64 0000000000000000 foo + 0
# GNU-NEXT: 0000000000000088 0000000100000013 R_X86_64_TLSGD 0000000000000000 foo + 0
# GNU-NEXT: 000000000000008f 0000000100000014 R_X86_64_TLSLD 0000000000000000 foo + 0
# GNU-NEXT: 0000000000000096 0000000100000015 R_X86_64_DTPOFF32 0000000000000000 foo + 0
# GNU-NEXT: 000000000000009d 0000000100000016 R_X86_64_GOTTPOFF 0000000000000000 foo + 0
# GNU-NEXT: 00000000000000a4 0000000100000017 R_X86_64_TPOFF32 0000000000000000 foo + 0
# GNU-NEXT: 00000000000000ab 0000000100000018 R_X86_64_PC64 0000000000000000 foo + 0
# GNU-NEXT: 00000000000000b2 0000000100000019 R_X86_64_GOTOFF64 0000000000000000 foo + 0
# GNU-NEXT: 00000000000000b9 000000010000001a R_X86_64_GOTPC32 0000000000000000 foo + 0
# GNU-NEXT: 00000000000000c0 000000010000001b R_X86_64_GOT64 0000000000000000 foo + 0
# GNU-NEXT: 00000000000000c7 000000010000001c R_X86_64_GOTPCREL64 0000000000000000 foo + 0
# GNU-NEXT: 00000000000000ce 000000010000001d R_X86_64_GOTPC64 0000000000000000 foo + 0
# GNU-NEXT: 00000000000000d5 000000010000001e R_X86_64_GOTPLT64 0000000000000000 foo + 0
# GNU-NEXT: 00000000000000dc 000000010000001f R_X86_64_PLTOFF64 0000000000000000 foo + 0
# GNU-NEXT: 00000000000000e3 0000000100000020 R_X86_64_SIZE32 0000000000000000 foo + 0
# GNU-NEXT: 00000000000000ea 0000000100000021 R_X86_64_SIZE64 0000000000000000 foo + 0
# GNU-NEXT: 00000000000000f1 0000000100000022 R_X86_64_GOTPC32_TLSDESC 0000000000000000 foo + 0
# GNU-NEXT: 00000000000000f8 0000000100000023 R_X86_64_TLSDESC_CALL 0000000000000000 foo + 0
# GNU-NEXT: 00000000000000ff 0000000100000024 R_X86_64_TLSDESC 0000000000000000 foo + 0
# GNU-NEXT: 0000000000000106 0000000100000025 R_X86_64_IRELATIVE 0000000000000000 foo + 0
# GNU-NEXT: 000000000000010a 0000000100000029 R_X86_64_GOTPCRELX 0000000000000000 foo + 0
# GNU-NEXT: 000000000000010e 000000010000002a R_X86_64_REX_GOTPCRELX 0000000000000000 foo + 0
--- !ELF
FileHeader:
Class: ELFCLASS64
Data: ELFDATA2LSB
OSABI: ELFOSABI_GNU
Type: ET_REL
Machine: EM_X86_64
Sections:
- Name: .text
Type: SHT_PROGBITS
Content: 00
- Name: .rela.text
Type: SHT_RELA
Link: .symtab
AddressAlign: 0x0000000000000008
EntSize: 0x0000000000000018
Info: .text
Relocations:
- Offset: 0x0000000000000003
Type: R_X86_64_NONE
Symbol: foo
- Offset: 0x000000000000000A
Type: R_X86_64_64
Symbol: foo
- Offset: 0x0000000000000011
Type: R_X86_64_PC32
Symbol: foo
- Offset: 0x0000000000000018
Type: R_X86_64_GOT32
Symbol: foo
- Offset: 0x000000000000001F
Type: R_X86_64_PLT32
Symbol: foo
- Offset: 0x0000000000000026
Type: R_X86_64_COPY
Symbol: foo
- Offset: 0x000000000000002D
Type: R_X86_64_GLOB_DAT
Symbol: foo
- Offset: 0x0000000000000034
Type: R_X86_64_JUMP_SLOT
Symbol: foo
- Offset: 0x000000000000003B
Type: R_X86_64_RELATIVE
Symbol: foo
- Offset: 0x0000000000000042
Type: R_X86_64_GOTPCREL
Symbol: foo
- Offset: 0x0000000000000049
Type: R_X86_64_32
Symbol: foo
- Offset: 0x0000000000000050
Type: R_X86_64_32S
Symbol: foo
- Offset: 0x0000000000000057
Type: R_X86_64_16
Symbol: foo
- Offset: 0x000000000000005E
Type: R_X86_64_PC16
Symbol: foo
- Offset: 0x0000000000000065
Type: R_X86_64_8
Symbol: foo
- Offset: 0x000000000000006C
Type: R_X86_64_PC8
Symbol: foo
- Offset: 0x0000000000000073
Type: R_X86_64_DTPMOD64
Symbol: foo
- Offset: 0x000000000000007A
Type: R_X86_64_DTPOFF64
Symbol: foo
- Offset: 0x0000000000000081
Type: R_X86_64_TPOFF64
Symbol: foo
- Offset: 0x0000000000000088
Type: R_X86_64_TLSGD
Symbol: foo
- Offset: 0x000000000000008F
Type: R_X86_64_TLSLD
Symbol: foo
- Offset: 0x0000000000000096
Type: R_X86_64_DTPOFF32
Symbol: foo
- Offset: 0x000000000000009D
Type: R_X86_64_GOTTPOFF
Symbol: foo
- Offset: 0x00000000000000A4
Type: R_X86_64_TPOFF32
Symbol: foo
- Offset: 0x00000000000000AB
Type: R_X86_64_PC64
Symbol: foo
- Offset: 0x00000000000000B2
Type: R_X86_64_GOTOFF64
Symbol: foo
- Offset: 0x00000000000000B9
Type: R_X86_64_GOTPC32
Symbol: foo
- Offset: 0x00000000000000C0
Type: R_X86_64_GOT64
Symbol: foo
- Offset: 0x00000000000000C7
Type: R_X86_64_GOTPCREL64
Symbol: foo
- Offset: 0x00000000000000CE
Type: R_X86_64_GOTPC64
Symbol: foo
- Offset: 0x00000000000000D5
Type: R_X86_64_GOTPLT64
Symbol: foo
- Offset: 0x00000000000000DC
Type: R_X86_64_PLTOFF64
Symbol: foo
- Offset: 0x00000000000000E3
Type: R_X86_64_SIZE32
Symbol: foo
- Offset: 0x00000000000000EA
Type: R_X86_64_SIZE64
Symbol: foo
- Offset: 0x00000000000000F1
Type: R_X86_64_GOTPC32_TLSDESC
Symbol: foo
- Offset: 0x00000000000000F8
Type: R_X86_64_TLSDESC_CALL
Symbol: foo
- Offset: 0x00000000000000FF
Type: R_X86_64_TLSDESC
Symbol: foo
- Offset: 0x0000000000000106
Type: R_X86_64_IRELATIVE
Symbol: foo
- Offset: 0x000000000000010A
Type: R_X86_64_GOTPCRELX
Symbol: foo
- Offset: 0x000000000000010E
Type: R_X86_64_REX_GOTPCRELX
Symbol: foo
Symbols:
- Name: foo
Binding: STB_GLOBAL
|