xref: /aosp_15_r20/external/llvm/test/Object/archive-symtab.test (revision 9880d6810fe72a1726cb53787c6711e909410d58)
1*9880d681SAndroid Build Coastguard WorkerRUN: rm -f %t.a
2*9880d681SAndroid Build Coastguard WorkerRUN: llvm-ar rcsU %t.a %p/Inputs/trivial-object-test.elf-x86-64 %p/Inputs/trivial-object-test2.elf-x86-64
3*9880d681SAndroid Build Coastguard WorkerRUN: llvm-nm -M %t.a | FileCheck %s
4*9880d681SAndroid Build Coastguard Worker
5*9880d681SAndroid Build Coastguard WorkerCHECK: Archive map
6*9880d681SAndroid Build Coastguard WorkerCHECK-NEXT: main in trivial-object-test.elf-x86-64
7*9880d681SAndroid Build Coastguard WorkerCHECK-NEXT: foo in trivial-object-test2.elf-x86-64
8*9880d681SAndroid Build Coastguard WorkerCHECK-NEXT: main in trivial-object-test2.elf-x86-64
9*9880d681SAndroid Build Coastguard WorkerCHECK-NOT: bar
10*9880d681SAndroid Build Coastguard Worker
11*9880d681SAndroid Build Coastguard Worker
12*9880d681SAndroid Build Coastguard WorkerRUN: rm -f %t.a
13*9880d681SAndroid Build Coastguard WorkerRUN: llvm-ar --format=gnu rcT %t.a %p/Inputs/trivial-object-test.elf-x86-64 %p/Inputs/trivial-object-test2.elf-x86-64
14*9880d681SAndroid Build Coastguard WorkerRUN: llvm-nm -M %t.a | FileCheck --check-prefix=THIN %s
15*9880d681SAndroid Build Coastguard Worker
16*9880d681SAndroid Build Coastguard WorkerTHIN: Archive map
17*9880d681SAndroid Build Coastguard WorkerTHIN-NEXT: main in {{.*}}/Inputs/trivial-object-test.elf-x86-64
18*9880d681SAndroid Build Coastguard WorkerTHIN-NEXT: foo in {{.*}}/Inputs/trivial-object-test2.elf-x86-64
19*9880d681SAndroid Build Coastguard WorkerTHIN-NEXT: main in {{.*}}/Inputs/trivial-object-test2.elf-x86-64
20*9880d681SAndroid Build Coastguard Worker
21*9880d681SAndroid Build Coastguard Worker
22*9880d681SAndroid Build Coastguard WorkerCHECK: trivial-object-test.elf-x86-64:
23*9880d681SAndroid Build Coastguard WorkerCHECK-NEXT:                  U SomeOtherFunction
24*9880d681SAndroid Build Coastguard WorkerCHECK-NEXT: 0000000000000000 T main
25*9880d681SAndroid Build Coastguard WorkerCHECK-NEXT:                  U puts
26*9880d681SAndroid Build Coastguard Worker
27*9880d681SAndroid Build Coastguard WorkerCHECK: trivial-object-test2.elf-x86-64:
28*9880d681SAndroid Build Coastguard WorkerCHECK-NEXT: 0000000000000000 t bar
29*9880d681SAndroid Build Coastguard WorkerCHECK-NEXT: 0000000000000006 T foo
30*9880d681SAndroid Build Coastguard WorkerCHECK-NEXT: 0000000000000016 T main
31*9880d681SAndroid Build Coastguard Worker
32*9880d681SAndroid Build Coastguard WorkerRUN: rm -f %t.a
33*9880d681SAndroid Build Coastguard WorkerRUN: llvm-ar rcSU %t.a %p/Inputs/trivial-object-test.elf-x86-64 %p/Inputs/trivial-object-test2.elf-x86-64
34*9880d681SAndroid Build Coastguard WorkerRUN: llvm-nm -M %t.a | FileCheck %s --check-prefix=NOMAP
35*9880d681SAndroid Build Coastguard Worker
36*9880d681SAndroid Build Coastguard WorkerNOMAP-NOT: Archive map
37*9880d681SAndroid Build Coastguard Worker
38*9880d681SAndroid Build Coastguard WorkerRUN: llvm-ar s %t.a
39*9880d681SAndroid Build Coastguard WorkerRUN: llvm-nm -M %t.a | FileCheck %s
40*9880d681SAndroid Build Coastguard Worker
41*9880d681SAndroid Build Coastguard Workercheck that the archive does have a corrupt symbol table.
42*9880d681SAndroid Build Coastguard WorkerRUN: rm -f %t.a
43*9880d681SAndroid Build Coastguard WorkerRUN: cp %p/Inputs/archive-test.a-corrupt-symbol-table %t.a
44*9880d681SAndroid Build Coastguard WorkerRUN: llvm-nm -M %t.a | FileCheck %s --check-prefix=CORRUPT
45*9880d681SAndroid Build Coastguard Worker
46*9880d681SAndroid Build Coastguard WorkerCORRUPT: Archive map
47*9880d681SAndroid Build Coastguard WorkerCORRUPT-NEXT: mbin in trivial-object-test.elf-x86-64
48*9880d681SAndroid Build Coastguard WorkerCORRUPT-NEXT: foo in trivial-object-test2.elf-x86-64
49*9880d681SAndroid Build Coastguard WorkerCORRUPT-NEXT: main in trivial-object-test2.elf-x86-64
50*9880d681SAndroid Build Coastguard Worker
51*9880d681SAndroid Build Coastguard WorkerCORRUPT: trivial-object-test.elf-x86-64:
52*9880d681SAndroid Build Coastguard WorkerCORRUPT-NEXT:                  U SomeOtherFunction
53*9880d681SAndroid Build Coastguard WorkerCORRUPT-NEXT: 0000000000000000 T main
54*9880d681SAndroid Build Coastguard WorkerCORRUPT-NEXT:                  U puts
55*9880d681SAndroid Build Coastguard Worker
56*9880d681SAndroid Build Coastguard WorkerCORRUPT: trivial-object-test2.elf-x86-64:
57*9880d681SAndroid Build Coastguard WorkerCORRUPT-NEXT: 0000000000000000 t bar
58*9880d681SAndroid Build Coastguard WorkerCORRUPT-NEXT: 0000000000000006 T foo
59*9880d681SAndroid Build Coastguard WorkerCORRUPT-NEXT: 0000000000000016 T main
60*9880d681SAndroid Build Coastguard Worker
61*9880d681SAndroid Build Coastguard Workercheck that the we *don't* update the symbol table.
62*9880d681SAndroid Build Coastguard WorkerRUN: llvm-ar s %t.a
63*9880d681SAndroid Build Coastguard WorkerRUN: llvm-nm -M %t.a | FileCheck %s --check-prefix=CORRUPT
64*9880d681SAndroid Build Coastguard Worker
65*9880d681SAndroid Build Coastguard Workerrepeate the test with llvm-ranlib
66*9880d681SAndroid Build Coastguard Worker
67*9880d681SAndroid Build Coastguard WorkerRUN: rm -f %t.a
68*9880d681SAndroid Build Coastguard WorkerRUN: llvm-ar rcSU %t.a %p/Inputs/trivial-object-test.elf-x86-64 %p/Inputs/trivial-object-test2.elf-x86-64
69*9880d681SAndroid Build Coastguard WorkerRUN: llvm-nm -M %t.a | FileCheck %s --check-prefix=NOMAP
70*9880d681SAndroid Build Coastguard Worker
71*9880d681SAndroid Build Coastguard WorkerRUN: llvm-ranlib %t.a
72*9880d681SAndroid Build Coastguard WorkerRUN: llvm-nm -M %t.a | FileCheck %s
73*9880d681SAndroid Build Coastguard Worker
74*9880d681SAndroid Build Coastguard WorkerRUN: llvm-nm -M %p/Inputs/macho-archive-x86_64.a | FileCheck %s --check-prefix=BSD-MachO
75*9880d681SAndroid Build Coastguard WorkerRUN: llvm-nm -M %p/Inputs/macho-archive-unsorted-x86_64.a | FileCheck %s --check-prefix=BSD-MachO
76*9880d681SAndroid Build Coastguard Worker
77*9880d681SAndroid Build Coastguard WorkerBSD-MachO: Archive map
78*9880d681SAndroid Build Coastguard WorkerBSD-MachO: _bar in bar.o
79*9880d681SAndroid Build Coastguard WorkerBSD-MachO: _foo in foo.o
80*9880d681SAndroid Build Coastguard Worker
81*9880d681SAndroid Build Coastguard WorkerRUN: rm -f %t.a
82*9880d681SAndroid Build Coastguard WorkerRUN: llvm-ar --format=bsd rcsU %t.a %p/Inputs/trivial-object-test.macho-x86-64 %p/Inputs/trivial-object-test2.macho-x86-64
83*9880d681SAndroid Build Coastguard WorkerRUN: llvm-nm -M %t.a | FileCheck --check-prefix=MACHO %s
84*9880d681SAndroid Build Coastguard Worker
85*9880d681SAndroid Build Coastguard WorkerMACHO: Archive map
86*9880d681SAndroid Build Coastguard WorkerMACHO-NEXT: _main in trivial-object-test.macho-x86-64
87*9880d681SAndroid Build Coastguard WorkerMACHO-NEXT: _foo in trivial-object-test2.macho-x86-64
88*9880d681SAndroid Build Coastguard WorkerMACHO-NEXT: _main in trivial-object-test2.macho-x86-64
89*9880d681SAndroid Build Coastguard WorkerMACHO-NOT: {{^}}bar
90*9880d681SAndroid Build Coastguard Worker
91*9880d681SAndroid Build Coastguard WorkerMACHO: trivial-object-test.macho-x86-64
92*9880d681SAndroid Build Coastguard WorkerMACHO-NEXT: 0000000000000028 s L_.str
93*9880d681SAndroid Build Coastguard WorkerMACHO-NEXT:                  U _SomeOtherFunction
94*9880d681SAndroid Build Coastguard WorkerMACHO-NEXT: 0000000000000000 T _main
95*9880d681SAndroid Build Coastguard WorkerMACHO-NEXT:                  U _puts
96*9880d681SAndroid Build Coastguard Worker
97*9880d681SAndroid Build Coastguard WorkerMACHO: trivial-object-test2.macho-x86-64
98*9880d681SAndroid Build Coastguard WorkerMACHO-NEXT: 0000000000000000 t _bar
99*9880d681SAndroid Build Coastguard WorkerMACHO-NEXT: 0000000000000001 T _foo
100*9880d681SAndroid Build Coastguard WorkerMACHO-NEXT: 0000000000000002 T _main
101*9880d681SAndroid Build Coastguard Worker
102*9880d681SAndroid Build Coastguard WorkerRUN: llvm-nm -M %p/Inputs/macho-toc64-archive-x86_64.a | FileCheck --check-prefix=MACHO-TOC64 %s
103*9880d681SAndroid Build Coastguard Worker
104*9880d681SAndroid Build Coastguard WorkerMACHO-TOC64: Archive map
105*9880d681SAndroid Build Coastguard WorkerMACHO-TOC64-NEXT: _test in test.o
106*9880d681SAndroid Build Coastguard WorkerMACHO-TOC64-NEXT: _test in xtest.o
107*9880d681SAndroid Build Coastguard Worker
108*9880d681SAndroid Build Coastguard WorkerRUN: rm -f %t.a
109*9880d681SAndroid Build Coastguard WorkerRUN: llvm-ar --format=gnu rcsU %t.a %p/Inputs/coff-short-import-code %p/Inputs/coff-short-import-data
110*9880d681SAndroid Build Coastguard WorkerRUN: llvm-nm -M %t.a | FileCheck --check-prefix=COFF-SHORT-IMPORT %s
111*9880d681SAndroid Build Coastguard Worker
112*9880d681SAndroid Build Coastguard WorkerCOFF-SHORT-IMPORT:      Archive map
113*9880d681SAndroid Build Coastguard WorkerCOFF-SHORT-IMPORT-NEXT: __imp__foo in coff-short-import-code
114*9880d681SAndroid Build Coastguard WorkerCOFF-SHORT-IMPORT-NEXT: _foo in coff-short-import-code
115*9880d681SAndroid Build Coastguard WorkerCOFF-SHORT-IMPORT-NEXT: __imp__bar in coff-short-import-data
116*9880d681SAndroid Build Coastguard WorkerCOFF-SHORT-IMPORT-NOT:  _bar in coff-short-import-data
117*9880d681SAndroid Build Coastguard Worker
118*9880d681SAndroid Build Coastguard WorkerTest that we pad the symbol table so that it ends in a multiple of 4 bytes:
119*9880d681SAndroid Build Coastguard Worker8 + 60 + 36 == 104
120*9880d681SAndroid Build Coastguard WorkerRUN: rm -f %t.a
121*9880d681SAndroid Build Coastguard WorkerRUN: llvm-ar --format=bsd rcsU %t.a %p/Inputs/trivial-object-test.macho-x86-64
122*9880d681SAndroid Build Coastguard WorkerRUN: FileCheck --check-prefix=MACHO-SYMTAB-ALIGN %s < %t.a
123*9880d681SAndroid Build Coastguard WorkerMACHO-SYMTAB-ALIGN: !<arch>
124*9880d681SAndroid Build Coastguard WorkerMACHO-SYMTAB-ALIGN-NEXT: #1/12           {{..........}}  0     0     0       36        `
125