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