blob: 823e573a297696fbcb55a81c8df94e3a6d823f8d (
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
|
## Show that the value field is omitted when a relocation does not reference a symbol.
## In other cases, particularly when a symbol has a zero value or when it has an empty
## name, we print it. Test for both static and dynamic relocation printing.
# RUN: yaml2obj %s -o %t
# RUN: llvm-readelf --relocations --dyn-relocations %t 2>&1 | FileCheck %s -DFILE=%t
# RUN: llvm-readobj --relocations %t 2>&1 | FileCheck %s -DFILE=%t --check-prefix=LLVM
# CHECK: Relocation section '.rela.text' at offset {{.*}} contains 5 entries:
# CHECK-NEXT: Offset Info Type Symbol's Value Symbol's Name + Addend
# CHECK-NEXT: 0000000000000000 0000000000000000 R_X86_64_NONE 1
# CHECK-NEXT: 0000000000000000 0000000100000000 R_X86_64_NONE 0000000000000000 sym + 1
# CHECK-NEXT: 0000000000000000 0000000200000000 R_X86_64_NONE 0000000000000123 <null> + 456
# CHECK-NEXT: warning: '[[FILE]]': unable to get section index for symbol with st_shndx = 0x0 (SHN_UNDEF)
# CHECK-NEXT: 0000000000000000 0000000300000000 R_X86_64_NONE 0000000000000000 <?> + 678
# CHECK-NEXT: 0000000000000000 0000000400000000 R_X86_64_NONE 0000000000000000 <null> + 2
# CHECK: Relocation section '.rela.dyn' at offset {{.*}} contains 5 entries:
# CHECK-NEXT: Offset Info Type Symbol's Value Symbol's Name + Addend
# CHECK-NEXT: 0000000000000000 0000000000000000 R_X86_64_NONE 1
# CHECK-NEXT: 0000000000000000 0000000100000000 R_X86_64_NONE 0000000000000000 sym + 1
# CHECK-NEXT: 0000000000000000 0000000200000000 R_X86_64_NONE 0000000000000123 <null> + 456
# CHECK-NEXT: 0000000000000000 0000000300000000 R_X86_64_NONE 0000000000000000 <?> + 678
# CHECK-NEXT: 0000000000000000 0000000400000000 R_X86_64_NONE 0000000000000000 <null> + 2
# CHECK: 'RELA' relocation section at offset {{.*}} contains 120 bytes:
# CHECK-NEXT: Offset Info Type Symbol's Value Symbol's Name + Addend
# CHECK-NEXT: 0000000000000000 0000000000000000 R_X86_64_NONE 1
# CHECK-NEXT: 0000000000000000 0000000100000000 R_X86_64_NONE 0000000000000000 sym + 1
# CHECK-NEXT: 0000000000000000 0000000200000000 R_X86_64_NONE 0000000000000123 <null> + 456
# CHECK-NEXT: 0000000000000000 0000000300000000 R_X86_64_NONE 0000000000000000 <null> + 678
# CHECK-NEXT: 0000000000000000 0000000400000000 R_X86_64_NONE 0000000000000000 <null> + 2
# LLVM: Relocations [
# LLVM-NEXT: Section (2) .rela.text {
# LLVM-NEXT: 0x0 R_X86_64_NONE - 0x1
# LLVM-NEXT: 0x0 R_X86_64_NONE sym 0x1
# LLVM-NEXT: 0x0 R_X86_64_NONE <null> 0x456
# LLVM-NEXT: warning: '[[FILE]]': unable to get section index for symbol with st_shndx = 0x0 (SHN_UNDEF)
# LLVM-NEXT: 0x0 R_X86_64_NONE <?> 0x678
# LLVM-NEXT: 0x0 R_X86_64_NONE <null> 0x2
# LLVM-NEXT: }
# LLVM-NEXT: Section (4) .rela.dyn {
# LLVM-NEXT: 0x0 R_X86_64_NONE - 0x1
# LLVM-NEXT: 0x0 R_X86_64_NONE sym 0x1
# LLVM-NEXT: 0x0 R_X86_64_NONE <null> 0x456
# LLVM-NEXT: 0x0 R_X86_64_NONE <?> 0x678
# LLVM-NEXT: 0x0 R_X86_64_NONE <null> 0x2
# LLVM-NEXT: }
# LLVM-NEXT: ]
--- !ELF
FileHeader:
Class: ELFCLASS64
Data: ELFDATA2LSB
Type: ET_EXEC
Machine: EM_X86_64
Sections:
- Name: .text
Type: SHT_PROGBITS
Size: 0x10
- Name: .rela.text
Type: SHT_RELA
Link: .symtab
Info: .text
Relocations:
- Offset: 0
Type: R_X86_64_NONE
Addend: 1
- Offset: 0
Type: R_X86_64_NONE
Addend: 1
Symbol: sym
- Offset: 0
Type: R_X86_64_NONE
Addend: 0x456
Symbol: 2
- Offset: 0
Addend: 0x678
Type: R_X86_64_NONE
Symbol: 3
## References a symbol with a zero value and an empty name.
- Offset: 0
Type: R_X86_64_NONE
Addend: 2
Symbol: 4
- Name: .dynamic
Type: SHT_DYNAMIC
Flags: [SHF_ALLOC]
Address: 0x1000
AddressAlign: 0x1000
Entries:
- Tag: DT_RELA
Value: 0x1100
- Tag: DT_RELASZ
Value: 120
- Tag: DT_RELAENT
Value: 24
- Tag: DT_NULL
Value: 0
- Name: .rela.dyn
Type: SHT_RELA
Flags: [SHF_ALLOC]
Info: .text
Address: 0x1100
AddressAlign: 0x100
Relocations:
- Offset: 0
Type: R_X86_64_NONE
Addend: 1
- Offset: 0
Type: R_X86_64_NONE
Addend: 1
Symbol: sym
- Offset: 0
Type: R_X86_64_NONE
Addend: 0x456
Symbol: 2
- Offset: 0
Addend: 0x678
Type: R_X86_64_NONE
Symbol: 3
## References a symbol with a zero value and an empty name.
- Offset: 0
Type: R_X86_64_NONE
Addend: 2
Symbol: 4
Symbols:
- Name: sym
Value: 0
Section: .text
Binding: STB_GLOBAL
- Value: 0x123
Section: .text
Binding: STB_GLOBAL
- Type: STT_SECTION
Index: 0
- Value: 0x0
Section: .text
Binding: STB_GLOBAL
DynamicSymbols:
- Name: sym
Value: 0
Section: .text
Binding: STB_GLOBAL
- Value: 0x123
Section: .text
Binding: STB_GLOBAL
- Type: STT_SECTION
Index: 0
- Value: 0x0
Section: .text
Binding: STB_GLOBAL
ProgramHeaders:
- Type: PT_LOAD
VAddr: 0x1000
FirstSec: .dynamic
LastSec: .rela.dyn
- Type: PT_DYNAMIC
VAddr: 0x1000
FirstSec: .dynamic
LastSec: .dynamic
|