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