blob: 8c1d7d16e658384d728addfa50d4bca86a3f96ca (
plain)
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
|
## Show that llvm-objdump can dump dynamic relocations.
## Specifically, we are checking that the tags DT_RELA, DT_REL and DT_JMPREL
## properly identify relocation tables.
# RUN: yaml2obj --docnum=1 %s -o %t.empty
# RUN: not llvm-objdump -R %t.empty 2>&1 | FileCheck %s --check-prefix=NO-DYNAMIC
# NO-DYNAMIC: error: '{{.*}}': not a dynamic object
--- !ELF
FileHeader:
Class: ELFCLASS64
Data: ELFDATA2LSB
Type: ET_DYN
# RUN: yaml2obj --docnum=2 -DTYPE=ET_EXEC %s -o %t1
# RUN: llvm-objdump --dynamic-reloc %t1 | FileCheck %s --strict-whitespace --match-full-lines
## e_type doesn't matter at all.
# RUN: yaml2obj --docnum=2 -DTYPE=0x1234 %s -o %t2
# RUN: llvm-objdump -R %t2 | FileCheck %s --strict-whitespace --match-full-lines
# CHECK:{{.*}}file format elf64-x86-64
#CHECK-EMPTY:
# CHECK-NEXT:DYNAMIC RELOCATION RECORDS
# CHECK-NEXT:OFFSET TYPE VALUE
# CHECK-NEXT:0000000000000000 R_X86_64_RELATIVE *ABS*
# CHECK-NEXT:0000000000000000 R_X86_64_JUMP_SLOT bar
# CHECK-NEXT:0000000000000008 R_X86_64_NONE foo
#CHECK-EMPTY:
## -r ignores dynamic relocations.
# RUN: llvm-objdump -r %t2 | FileCheck %s --check-prefix=STATIC-RELOC
# STATIC-RELOC-NOT: RELOCATION RECORDS
--- !ELF
FileHeader:
Class: ELFCLASS64
Data: ELFDATA2LSB
Type: [[TYPE]]
Machine: EM_X86_64
Sections:
- Name: .foo
Type: SHT_PROGBITS
Size: 16
Flags: [SHF_ALLOC]
Address: 0x100000
AddressAlign: 0x100
- Name: .got.plt
Type: SHT_PROGBITS
Flags: [SHF_WRITE, SHF_ALLOC]
Address: 0x100100
AddressAlign: 0x1000
- Name: .rela.dyn
Type: SHT_RELA
Address: 0x100200
AddressAlign: 0x100
Info: .foo
Link: .dynsym
Flags: [SHF_ALLOC]
Relocations:
- Offset: 0
Type: R_X86_64_RELATIVE
Addend: 0
- Name: .rela.plt
Type: SHT_RELA
Address: 0x100300
AddressAlign: 0x100
Info: .got.plt
Link: .dynsym
Flags: [SHF_ALLOC]
Relocations:
- Offset: 0
Symbol: bar
Type: R_X86_64_JUMP_SLOT
- Name: .rel.dyn
Type: SHT_REL
Address: 0x100400
AddressAlign: 0x100
Info: .foo
Link: .dynsym
Flags: [SHF_ALLOC]
Relocations:
- Offset: 8
Symbol: foo
Type: R_X86_64_NONE
- Name: .dynamic
Type: SHT_DYNAMIC
Address: 0x100500
AddressAlign: 0x100
Link: .dynstr
Flags: [SHF_ALLOC]
Entries:
- Tag: DT_RELA
Value: 0x100200
- Tag: DT_RELASZ
Value: 24
- Tag: DT_RELAENT
Value: 24
- Tag: DT_JMPREL
Value: 0x100300
- Tag: DT_PLTREL
Value: 7
- Tag: DT_PLTRELSZ
Value: 24
- Tag: DT_REL
Value: 0x100400
- Tag: DT_RELSZ
Value: 16
- Tag: DT_RELENT
Value: 16
- Tag: DT_NULL
Value: 0
ProgramHeaders:
- Type: PT_LOAD
VAddr: 0x100000
Align: 0x100
FirstSec: .foo
LastSec: .dynamic
- Type: PT_DYNAMIC
VAddr: 0x100500
Align: 0x100
FirstSec: .dynamic
LastSec: .dynamic
DynamicSymbols:
- Name: foo
Section: .foo
Binding: STB_GLOBAL
- Name: bar
Type: STT_FUNC
Binding: STB_GLOBAL
## Test a 32-bit object.
# RUN: yaml2obj --docnum=3 %s -o %t.i386
# RUN: llvm-objdump -R %t.i386 | FileCheck %s --check-prefix=I386 --strict-whitespace --match-full-lines
# I386:{{.*}}file format elf32-i386
#I386-EMPTY:
# I386-NEXT:DYNAMIC RELOCATION RECORDS
# I386-NEXT:OFFSET TYPE VALUE
# I386-NEXT:00000030 R_386_RELATIVE *ABS*
# I386-NEXT:00000010 R_386_NONE foo
#I386-EMPTY:
--- !ELF
FileHeader:
Class: ELFCLASS32
Data: ELFDATA2LSB
Type: ET_DYN
Machine: EM_386
ProgramHeaders:
- Type: PT_LOAD
FirstSec: .rel.dyn
LastSec: .data
- Type: PT_DYNAMIC
VAddr: 0x10
FirstSec: .dynamic
LastSec: .dynamic
Sections:
- Name: .rel.dyn
Type: SHT_REL
Link: .dynsym
Flags: [ SHF_ALLOC ]
AddressAlign: 0x4
Relocations:
- Offset: 0x30
Type: R_386_RELATIVE
- Offset: 0x10
Symbol: foo
Type: R_386_NONE
- Name: .dynamic
Type: SHT_DYNAMIC
Flags: [ SHF_ALLOC ]
Link: .dynstr
AddressAlign: 0x4
Entries:
- Tag: DT_REL
Value: 0x0
- Tag: DT_RELSZ
Value: 0x10
- Tag: DT_RELENT
Value: 0x8
- Tag: DT_RELCOUNT
Value: 0x1
- Tag: DT_NULL
Value: 0x0
- Name: .data
Type: SHT_PROGBITS
Flags: [ SHF_WRITE, SHF_ALLOC ]
AddressAlign: 0x4
Content: '80110000'
DynamicSymbols:
- Name: foo
Section: .data
|