]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - test/elf/Mips/rel-dynamic-08.test
Vendor import of lld trunk r233088:
[FreeBSD/FreeBSD.git] / test / elf / Mips / rel-dynamic-08.test
1 # Conditions:
2 #   a) Linking a non-shared executable file.
3 #   b) There ars multiple R_MIPS_32/R_MIPS_HI16/R_MIPS_LO16 relocations
4 #      with various targets.
5 # Check:
6 #   a) Emitting of R_MIPS_REL32 relocations.
7 #
8 # RUN: yaml2obj -format=elf -docnum 1 %s > %t-so.o
9 # RUN: lld -flavor gnu -target mipsel -shared -o %t.so %t-so.o
10 # RUN: yaml2obj -format=elf -docnum 2 %s > %t-o.o
11 # RUN: lld -flavor gnu -target mipsel -e T0 --noinhibit-exec \
12 # RUN:     -o %t.exe %t-o.o %t.so
13 # RUN: llvm-readobj -dt -r -sections %t.exe | FileCheck %s
14
15 # CHECK:   Sections [
16 # CHECK:     Section {
17 # CHECK-NOT:   Name: .plt ({{[0-9]+}})
18
19 # CHECK:      Relocations [
20 # CHECK-NEXT:   Section (5) .rel.dyn {
21 # CHECK-NEXT:     0x402000 R_MIPS_REL32 D2 0x0
22 # CHECK-NEXT:     0x402004 R_MIPS_REL32 T1 0x0
23 # CHECK-NEXT:     0x402008 R_MIPS_REL32 T2 0x0
24 # CHECK-NEXT:     0x402008 R_MIPS_REL32 D1 0x0
25 # CHECK-NEXT:   }
26 # CHECK-NEXT: ]
27
28 # CHECK:      DynamicSymbols [
29 # CHECK-NEXT:   Symbol {
30 # CHECK-NEXT:     Name: @ (0)
31 # CHECK-NEXT:     Value: 0x0
32 # CHECK-NEXT:     Size: 0
33 # CHECK-NEXT:     Binding: Local (0x0)
34 # CHECK-NEXT:     Type: None (0x0)
35 # CHECK-NEXT:     Other: 0
36 # CHECK-NEXT:     Section: Undefined (0x0)
37 # CHECK-NEXT:   }
38 # CHECK-NEXT:   Symbol {
39 # CHECK-NEXT:     Name: D2@ (10)
40 # CHECK-NEXT:     Value: 0x0
41 # CHECK-NEXT:     Size: 4
42 # CHECK-NEXT:     Binding: Global (0x1)
43 # CHECK-NEXT:     Type: Object (0x1)
44 # CHECK-NEXT:     Other: 0
45 # CHECK-NEXT:     Section: Undefined (0x0)
46 # CHECK-NEXT:   }
47 # CHECK-NEXT:   Symbol {
48 # CHECK-NEXT:     Name: T1@ (1)
49 # CHECK-NEXT:     Value: 0x0
50 # CHECK-NEXT:     Size: 0
51 # CHECK-NEXT:     Binding: Global (0x1)
52 # CHECK-NEXT:     Type: Function (0x2)
53 # CHECK-NEXT:     Other: 0
54 # CHECK-NEXT:     Section: Undefined (0x0)
55 # CHECK-NEXT:   }
56 # CHECK-NEXT:   Symbol {
57 # CHECK-NEXT:     Name: T2@ (4)
58 # CHECK-NEXT:     Value: 0x0
59 # CHECK-NEXT:     Size: 0
60 # CHECK-NEXT:     Binding: Global (0x1)
61 # CHECK-NEXT:     Type: Function (0x2)
62 # CHECK-NEXT:     Other: 0
63 # CHECK-NEXT:     Section: Undefined (0x0)
64 # CHECK-NEXT:   }
65 # CHECK-NEXT:   Symbol {
66 # CHECK-NEXT:     Name: D1@ (7)
67 # CHECK-NEXT:     Value: 0x0
68 # CHECK-NEXT:     Size: 4
69 # CHECK-NEXT:     Binding: Global (0x1)
70 # CHECK-NEXT:     Type: Object (0x1)
71 # CHECK-NEXT:     Other: 0
72 # CHECK-NEXT:     Section: Undefined (0x0)
73 # CHECK-NEXT:   }
74 # CHECK-NEXT: ]
75
76 # so.o
77 ---
78 FileHeader:
79   Class:   ELFCLASS32
80   Data:    ELFDATA2LSB
81   Type:    ET_REL
82   Machine: EM_MIPS
83   Flags:   [EF_MIPS_PIC, EF_MIPS_CPIC, EF_MIPS_ABI_O32, EF_MIPS_ARCH_32]
84
85 Sections:
86 - Name:         .text
87   Type:         SHT_PROGBITS
88   Size:         0x0C
89   AddressAlign: 16
90   Flags:        [SHF_EXECINSTR, SHF_ALLOC]
91
92 - Name:         .data
93   Type:         SHT_PROGBITS
94   Size:         0x08
95   AddressAlign: 16
96   Flags:        [SHF_WRITE, SHF_ALLOC]
97
98 Symbols:
99   Global:
100     - Name: T1
101       Section: .text
102       Type: STT_FUNC
103       Value: 0x0
104       Size: 4
105     - Name: T2
106       Section: .text
107       Type: STT_FUNC
108       Value: 0x4
109       Size: 4
110     - Name: D1
111       Section: .data
112       Type: STT_OBJECT
113       Value: 0x0
114       Size: 4
115     - Name: D2
116       Section: .data
117       Type: STT_OBJECT
118       Value: 0x4
119       Size: 4
120
121 # o.o
122 ---
123 FileHeader:
124   Class: ELFCLASS32
125   Data: ELFDATA2LSB
126   Type: ET_REL
127   Machine: EM_MIPS
128   Flags: [EF_MIPS_CPIC, EF_MIPS_ABI_O32, EF_MIPS_ARCH_32]
129
130 Sections:
131 - Name: .text
132   Type: SHT_PROGBITS
133   Size: 0x0C
134   AddressAlign: 16
135   Flags: [SHF_EXECINSTR, SHF_ALLOC]
136
137 - Name: .data
138   Type: SHT_PROGBITS
139   Size: 0x0C
140   AddressAlign: 16
141   Flags: [SHF_WRITE, SHF_ALLOC]
142
143 - Name: .rel.text
144   Type: SHT_REL
145   Info: .text
146   AddressAlign: 4
147   Relocations:
148     - Offset: 0x00
149       Symbol: _gp_disp
150       Type: R_MIPS_HI16
151     - Offset: 0x00
152       Symbol: _gp_disp
153       Type: R_MIPS_LO16
154
155 - Name: .rel.data
156   Type: SHT_REL
157   Info: .data
158   AddressAlign: 4
159   Relocations:
160     - Offset: 0x00      # LT0 is a locally defined function
161       Symbol: LT0
162       Type: R_MIPS_32
163     - Offset: 0x00      # LD0 is a locally defined data object
164       Symbol: LD0
165       Type: R_MIPS_32
166     - Offset: 0x00      # T0 is a defined function
167       Symbol: T0
168       Type: R_MIPS_32
169     - Offset: 0x04      # T1 is a function from shared lib
170       Symbol: T1
171       Type: R_MIPS_32
172     - Offset: 0x08      # T2 has unknown type and defined in shared lib
173       Symbol: T2
174       Type: R_MIPS_32
175     - Offset: 0x00      # T4 is an undefined function
176       Symbol: T4
177       Type: R_MIPS_32
178     - Offset: 0x04      # D0 is a defined data object
179       Symbol: D0
180       Type: R_MIPS_32
181     - Offset: 0x08      # D1 is a data object from shared lib
182       Symbol: D1
183       Type: R_MIPS_32
184     - Offset: 0x00      # D2 has unknown type and defined in shared lib
185       Symbol: D2
186       Type: R_MIPS_32
187     - Offset: 0x04      # D4 is an undefined data object
188       Symbol: D4
189       Type: R_MIPS_32
190     - Offset: 0x08      # U1 is undefined and has unknown type
191       Symbol: U1
192       Type: R_MIPS_32
193
194 Symbols:
195   Local:
196     - Name: LT0
197       Section: .text
198       Type: STT_FUNC
199       Value: 0x0
200       Size: 4
201     - Name: LD0
202       Section: .data
203       Type: STT_OBJECT
204       Value: 0x0
205       Size: 4
206
207   Global:
208     - Name: _gp_disp
209       Type: STT_OBJECT
210
211     - Name: T0
212       Section: .text
213       Type: STT_FUNC
214       Value: 0x4
215       Size: 8
216     - Name: T1
217       Type: STT_FUNC
218     - Name: T2
219     - Name: T4
220       Type: STT_FUNC
221
222     - Name: D0
223       Section: .data
224       Type: STT_OBJECT
225       Value: 0x4
226       Size: 8
227     - Name: D1
228       Type: STT_OBJECT
229     - Name: D2
230     - Name: D4
231       Type: STT_OBJECT
232     - Name: U1
233 ...