[ThinLTO] Add code comment. NFC
[llvm-complete.git] / test / Object / nm-trivial-object.test
blob55ffd24aef6bc2c0761c56daf31f69611083bf9f
1 # RUN: yaml2obj %p/Inputs/COFF/i386.yaml | llvm-nm -a -S - \
2 # RUN:         | FileCheck %s -check-prefix COFF32
4 # COFF32: 00000000 d .data
5 # COFF32-NEXT: 00000000 t .text
6 # COFF32-NEXT: 00000000 d L_.str
7 # COFF32-NEXT:          U _SomeOtherFunction
8 # COFF32-NEXT: 00000000 T _main
9 # COFF32-NEXT:          U _puts
11 # RUN: yaml2obj %p/Inputs/COFF/x86-64.yaml | llvm-nm -a -S - \
12 # RUN:         | FileCheck %s -check-prefix COFF64
14 # COFF64: 00000000 d .data
15 # COFF64-NEXT: 00000000 t .text
16 # COFF64-NEXT: 00000000 r ??__Ex@@YAXXZ
17 # COFF64-NEXT: 00000000 d L.str
18 # COFF64-NEXT:          U SomeOtherFunction
19 # COFF64-NEXT: 00000000 T main
20 # COFF64-NEXT:          U puts
22 # RUN: llvm-nm %p/Inputs/trivial-object-test.wasm \
23 # RUN:         | FileCheck %s -check-prefix WASM
25 # WASM:      00000000 d .L.str
26 # WASM-NEXT: 00000019 t .LSomeOtherFunction_bitcast
27 # WASM-NEXT:          U SomeOtherFunction
28 # WASM-NEXT: 00000001 T main
29 # WASM-NEXT:          U puts
30 # WASM-NEXT: 00000010 D var
32 # RUN: yaml2obj -docnum=1 %s > %t.elf-i386
34 --- !ELF
35 FileHeader:
36   Class:   ELFCLASS32
37   Data:    ELFDATA2LSB
38   Type:    ET_REL
39   Machine: EM_386
40 Sections:
41   - Name:  .text
42     Type:  SHT_PROGBITS
43     Flags: [ SHF_ALLOC, SHF_EXECINSTR ]
44 Symbols:
45   - Name:    main
46     Type:    STT_FUNC
47     Section: .text
48     Binding: STB_GLOBAL
49     Size:    0x0000000000000024
50   - Name:    SomeOtherFunction
51     Binding: STB_GLOBAL
52   - Name:    puts
53     Binding: STB_GLOBAL
55 # RUN: llvm-nm %t.elf-i386 | FileCheck %s -check-prefix=ELF
57 # ELF-NOT: U
58 # ELF:          U SomeOtherFunction
59 # ELF: 00000000 T main
60 # ELF:          U puts
62 # RUN: llvm-nm -o %t.elf-i386 | FileCheck %s -DFILE=%t.elf-i386 -check-prefix=ELF-o
64 # RUN: llvm-nm %t.elf-i386 -S | FileCheck %s -check-prefix ELF-SIZE
66 # ELF-SIZE:                        U SomeOtherFunction
67 # ELF-SIZE-NEXT: 00000000 00000024 T main
68 # ELF-SIZE-NEXT:                   U puts
70 # ELF-o-NOT: U
71 # ELF-o: [[FILE]]:          U SomeOtherFunction
72 # ELF-o: [[FILE]]: 00000000 T main
73 # ELF-o: [[FILE]]:          U puts
75 # RUN: llvm-nm -u %t.elf-i386 | FileCheck %s -check-prefix ELF-u
77 # ELF-u: U SomeOtherFunction
78 # ELF-u: U puts
80 ## Test different ELF symbols for 64-bit platform.
82 # RUN: yaml2obj -docnum=2 %s > %t.elf-x86-64
83 # RUN: llvm-nm %t.elf-x86-64 | FileCheck %s -check-prefix ELF64
85 # ELF64:                  U SomeOtherFunction
86 # ELF64: 0000000000000123 a absSym1
87 # ELF64: 0000000000000123 A absSym2
88 # ELF64: 0000000000002000 D dataSym1
89 # ELF64: 0000000000002004 D dataSym2
90 # ELF64: 0000000000001000 T textSym1
91 # ELF64: 0000000000001004 T textSym2
92 # ELF64:                  U undefinedSym
93 # ELF64:                  v weakObject1
94 # ELF64: 0000000000001000 V weakObject2
95 # ELF64:                  w weakSym1
96 # ELF64: 0000000000001000 W weakSym2
98 --- !ELF
99 FileHeader:
100   Class:   ELFCLASS64
101   Data:    ELFDATA2LSB
102   Type:    ET_REL
103   Machine: EM_X86_64
104 Sections:
105   - Name:  .text
106     Type:  SHT_PROGBITS
107     Flags: [ SHF_ALLOC, SHF_EXECINSTR ]
108     Address: 0x1000
109   - Name:  .data
110     Type:  SHT_PROGBITS
111     Flags: [ SHF_ALLOC, SHF_WRITE ]
112     Address: 0x2000
113 Symbols:
114   - Name:    absSym1
115     Index:   SHN_ABS
116     Value:   0x0000000000000123
117   - Name:    absSym2
118     Index:   SHN_ABS
119     Binding: STB_GLOBAL
120     Value:   0x0000000000000123
121   - Name:    SomeOtherFunction
122     Binding: STB_GLOBAL
123   - Name:    undefinedSym
124     Binding: STB_GLOBAL
125   - Name:    weakObject1
126     Type:    STT_OBJECT
127     Binding: STB_WEAK
128   - Name:    weakObject2
129     Type:    STT_OBJECT
130     Section: .text
131     Binding: STB_WEAK
132   - Name:    weakSym1
133     Binding: STB_WEAK
134   - Name:    weakSym2
135     Section: .text
136     Binding: STB_WEAK
137   - Name:    dataSym1
138     Type:    STT_OBJECT
139     Section: .data
140     Binding: STB_GLOBAL
141     Value:   0x0000000000000000
142   - Name:    dataSym2
143     Type:    STT_OBJECT
144     Section: .data
145     Binding: STB_GLOBAL
146     Value:   0x0000000000000004
147   - Name:    textSym1
148     Type:    STT_FUNC
149     Section: .text
150     Binding: STB_GLOBAL
151     Value:   0x0000000000000000
152   - Name:    textSym2
153     Type:    STT_FUNC
154     Section: .text
155     Binding: STB_GLOBAL
156     Value:   0x0000000000000004
158 ## Test llvm-nm shows all symbols with -a.
160 # RUN: yaml2obj -docnum=3 %s > %t-a.elf-x86-64
161 # RUN: llvm-nm -a %t-a.elf-x86-64 | FileCheck %s -check-prefix ELF64-a
163 # ELF64-a:      00000000 b .bss
164 # ELF64-a-NEXT: 00000000 n .comment
165 # ELF64-a-NEXT: 00000000 d .data
166 # ELF64-a-NEXT: 00000000 N .debug_sec
167 # ELF64-a-NEXT: 00000000 t .text
168 # ELF64-a-NEXT: 00000000 a fileSym
169 # ELF64-a-NEXT: 00000014 T regularSym
170 # ELF64-a-NEXT:          U undefSym
172 --- !ELF
173 FileHeader:
174   Class:   ELFCLASS32
175   Data:    ELFDATA2LSB
176   Type:    ET_REL
177   Machine: EM_386
178 Sections:
179   - Name:  .rodata
180     Type:  SHT_PROGBITS
181     Flags: [ SHF_ALLOC ]        
182   - Name:  .text
183     Type:  SHT_PROGBITS
184     Flags: [ SHF_ALLOC, SHF_EXECINSTR ]
185   - Name:  .data
186     Type:  SHT_PROGBITS
187     Flags: [ SHF_WRITE, SHF_ALLOC ]
188   - Name:  .bss
189     Type:  SHT_NOBITS
190     Flags: [ SHF_WRITE, SHF_ALLOC ]
191   - Name:  .debug_sec
192     Type:  SHT_PROGBITS
193   - Name:  .comment
194     Type:  SHT_PROGBITS
195 Symbols:
196   - Name:    fileSym
197     Type:    STT_FILE
198     Index:   SHN_ABS
199   - Name:    .text
200     Type:    STT_SECTION
201     Section: .text
202   - Name:    .data
203     Type:    STT_SECTION
204     Section: .data
205   - Name:    .bss
206     Type:    STT_SECTION
207     Section: .bss
208   - Name:    .debug_sec
209     Type:    STT_SECTION
210     Section: .debug_sec
211   - Name:    .comment
212     Type:    STT_SECTION
213     Section: .comment
214   - Name:    undefSym
215     Binding: STB_GLOBAL
216   - Name:    regularSym
217     Type:    STT_FUNC
218     Section: .text
219     Binding: STB_GLOBAL
220     Value:   0x0000000000000014
222 ## Test that we drop the thumb bit only from function addresses.
224 # RUN: yaml2obj -docnum=4 %s > %t.elf-arm32
225 # RUN: llvm-nm %t.elf-arm32 | FileCheck %s -check-prefix ELF-THUMB
227 # ELF-THUMB: 00000000 t func
228 # ELF-THUMB: 00000003 t sym
230 --- !ELF
231 FileHeader:
232   Class:   ELFCLASS32
233   Data:    ELFDATA2LSB
234   Type:    ET_REL
235   Machine: EM_ARM
236 Sections:
237   - Name:  .text
238     Type:  SHT_PROGBITS
239     Flags: [ SHF_ALLOC, SHF_EXECINSTR ]
240 Symbols:
241   - Name:    func
242     Type:    STT_FUNC
243     Section: .text
244     Value:   0x0000000000000001
245   - Name:    sym
246     Section: .text
247     Value:   0x0000000000000003
249 # RUN: llvm-nm %p/Inputs/trivial-object-test.macho-i386 \
250 # RUN:         | FileCheck %s -check-prefix macho
252 # macho:          U _SomeOtherFunction
253 # macho: 00000000 T _main
254 # macho:          U _puts
256 # RUN: llvm-nm -U %p/Inputs/trivial-object-test.macho-i386 \
257 # RUN:         | FileCheck %s -check-prefix macho-U
259 # macho-U-NOT:          U _SomeOtherFunction
260 # macho-U: 00000000 T _main
261 # macho-U-NOT:          U _puts
263 # RUN: llvm-nm %p/Inputs/trivial-object-test.macho-x86-64 \
264 # RUN:         | FileCheck %s -check-prefix macho64
266 # macho64: 0000000000000028 s L_.str
267 # macho64:                  U _SomeOtherFunction
268 # macho64: 0000000000000000 T _main
269 # macho64:                  U _puts
271 # RUN: llvm-nm %p/Inputs/macho-text-data-bss.macho-x86_64 \
272 # RUN:         | FileCheck %s -check-prefix macho-tdb
274 # macho-tdb: 0000000000000030 s EH_frame0
275 # macho-tdb: 0000000000000070 b _b
276 # macho-tdb: 000000000000000c D _d
277 # macho-tdb: 0000000000000000 T _t
278 # macho-tdb: 0000000000000048 S _t.eh
280 # RUN: llvm-nm -j %p/Inputs/macho-text-data-bss.macho-x86_64 \
281 # RUN:         | FileCheck %s -check-prefix macho-j
283 # macho-j: EH_frame0
284 # macho-j: _b
285 # macho-j: _d
286 # macho-j: _t
287 # macho-j: _t.eh
289 # RUN: llvm-nm -r %p/Inputs/macho-text-data-bss.macho-x86_64 \
290 # RUN:         | FileCheck %s -check-prefix macho-r
292 # macho-r: 0000000000000048 S _t.eh
293 # macho-r-NEXT: 0000000000000000 T _t
294 # macho-r-NEXT: 000000000000000c D _d
295 # macho-r-NEXT: 0000000000000070 b _b
296 # macho-r-NEXT: 0000000000000030 s EH_frame0
298 # RUN: llvm-nm %p/Inputs/macho-text-data-bss.macho-x86_64 -s __DATA __data \
299 # RUN:         | FileCheck %s -check-prefix macho-s
301 # macho-s: 000000000000000c D _d
302 # macho-s-NOT: 0000000000000048 S _t.eh
303 # macho-s-NOT: 0000000000000000 T _t
304 # macho-s-NOT: 0000000000000070 b _b
305 # macho-s-NOT: 0000000000000030 s EH_frame0
307 # RUN: llvm-nm -x %p/Inputs/macho-text-data-bss.macho-x86_64 \
308 # RUN:         | FileCheck %s -check-prefix macho-x
310 # macho-x: 0000000000000030 0e 05 0000 00000010 EH_frame0
311 # macho-x: 0000000000000070 0e 03 0000 0000000d _b
312 # macho-x: 000000000000000c 0f 02 0000 00000004 _d
313 # macho-x: 0000000000000000 0f 01 0000 00000001 _t
314 # macho-x: 0000000000000048 0f 05 0000 00000007 _t.eh
316 # RUN: llvm-nm -o %p/Inputs/macho-text-data-bss.macho-x86_64 \
317 # RUN:         | FileCheck %s -check-prefix macho-o
319 # macho-o: {{.*}}/macho-text-data-bss.macho-x86_64: 0000000000000030 s EH_frame0
320 # macho-o: {{.*}}/macho-text-data-bss.macho-x86_64: 0000000000000070 b _b
321 # macho-o: {{.*}}/macho-text-data-bss.macho-x86_64: 000000000000000c D _d
322 # macho-o: {{.*}}/macho-text-data-bss.macho-x86_64: 0000000000000000 T _t
323 # macho-o: {{.*}}/macho-text-data-bss.macho-x86_64: 0000000000000048 S _t.eh
325 # RUN: llvm-nm -p -a %p/Inputs/macho-hello-g.macho-x86_64 \
326 # RUN:         | FileCheck %s -check-prefix macho-pa
328 # macho-pa: 0000000000000000 - 00 0000    SO /Volumes/SandBox/
329 # macho-pa: 0000000000000000 - 00 0000    SO hello.c
330 # macho-pa: 0000000053c8408d - 03 0001   OSO /Volumes/SandBox/hello.o
331 # macho-pa: 0000000100000f30 - 01 0000 BNSYM
332 # macho-pa: 0000000100000f30 - 01 0000   FUN _main
333 # macho-pa: 000000000000003b - 00 0000   FUN
334 # macho-pa: 000000000000003b - 01 0000 ENSYM
335 # macho-pa: 0000000000000000 - 01 0000    SO
336 # macho-pa: 0000000100000000 T __mh_execute_header
337 # macho-pa: 0000000100000f30 T _main
338 # macho-pa:                  U _printf
339 # macho-pa:                  U dyld_stub_binder
341 # RUN: llvm-nm -u %p/Inputs/macho-hello-g.macho-x86_64 \
342 # RUN:         | FileCheck %s -check-prefix macho-u
344 # macho-u: _printf
345 # macho-u: dyld_stub_binder
347 # RUN: llvm-nm -S -a %p/Inputs/common.coff-i386 \
348 # RUN:         | FileCheck %s -check-prefix COFF-COMMON
350 # COFF-COMMON: 00000000 b .bss
351 # COFF-COMMON-NEXT: 00000000 d .data
352 # COFF-COMMON-NEXT: 00000000 d .drectve
353 # COFF-COMMON-NEXT: 00000000 n .file
354 # COFF-COMMON-NEXT: 00000000 r .rdata$zzz
355 # COFF-COMMON-NEXT: 00000000 t .text
356 # COFF-COMMON-NEXT:          C _a
358 # RUN: mkdir -p %t
359 # RUN: cd %t
360 # RUN: cp %p/Inputs/trivial-object-test.macho-i386 a.out
361 # RUN: llvm-nm a.out | FileCheck %s -check-prefix A-OUT
363 # A-OUT:          U _SomeOtherFunction
364 # A-OUT: 00000000 T _main
365 # A-OUT:          U _puts