llvm.org GIT mirror llvm / 9db135a test / Object / archive-symtab.test
9db135a

Tree @9db135a (Download .tar.gz)

archive-symtab.test @9db135a

26b10da
168b1be
e3108d3
26b10da
 
 
 
 
 
 
9db135a
 
 
 
 
 
 
 
 
 
 
26b10da
ae41759
 
 
efc4478
 
ae41759
 
 
cf48cf2
 
168b1be
e3108d3
cf48cf2
 
 
 
e3108d3
cf48cf2
 
 
 
e3108d3
cf48cf2
 
 
 
 
 
 
ae41759
 
 
efc4478
 
ae41759
 
 
cf48cf2
 
 
e3108d3
aeb0f0c
 
 
 
168b1be
e3108d3
aeb0f0c
 
e3108d3
d2ae115
e3108d3
9abbcb7
d2ae115
 
 
 
a55816b
 
168b1be
a55816b
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
7255090
 
 
 
168b1be
7255090
 
 
RUN: rm -f %t.a
RUN: llvm-ar rcsU %t.a %p/Inputs/trivial-object-test.elf-x86-64 %p/Inputs/trivial-object-test2.elf-x86-64
RUN: llvm-nm -M %t.a | FileCheck %s

CHECK: Archive map
CHECK-NEXT: main in trivial-object-test.elf-x86-64
CHECK-NEXT: foo in trivial-object-test2.elf-x86-64
CHECK-NEXT: main in trivial-object-test2.elf-x86-64
CHECK-NOT: bar


RUN: rm -f %t.a
RUN: llvm-ar rcT %t.a %p/Inputs/trivial-object-test.elf-x86-64 %p/Inputs/trivial-object-test2.elf-x86-64
RUN: llvm-nm -M %t.a | FileCheck --check-prefix=THIN %s

THIN: Archive map
THIN-NEXT: main in {{.*}}/Inputs/trivial-object-test.elf-x86-64
THIN-NEXT: foo in {{.*}}/Inputs/trivial-object-test2.elf-x86-64
THIN-NEXT: main in {{.*}}/Inputs/trivial-object-test2.elf-x86-64


CHECK: trivial-object-test.elf-x86-64:
CHECK-NEXT:                  U SomeOtherFunction
CHECK-NEXT: 0000000000000000 T main
CHECK-NEXT:                  U puts

CHECK: trivial-object-test2.elf-x86-64:
CHECK-NEXT: 0000000000000000 t bar
CHECK-NEXT: 0000000000000006 T foo
CHECK-NEXT: 0000000000000016 T main

RUN: rm -f %t.a
RUN: llvm-ar rcSU %t.a %p/Inputs/trivial-object-test.elf-x86-64 %p/Inputs/trivial-object-test2.elf-x86-64
RUN: llvm-nm -M %t.a | FileCheck %s --check-prefix=NOMAP

NOMAP-NOT: Archive map

RUN: llvm-ar s %t.a
RUN: llvm-nm -M %t.a | FileCheck %s

check that the archive does have a corrupt symbol table.
RUN: rm -f %t.a
RUN: cp %p/Inputs/archive-test.a-corrupt-symbol-table %t.a
RUN: llvm-nm -M %t.a | FileCheck %s --check-prefix=CORRUPT

CORRUPT: Archive map
CORRUPT-NEXT: mbin in trivial-object-test.elf-x86-64
CORRUPT-NEXT: foo in trivial-object-test2.elf-x86-64
CORRUPT-NEXT: main in trivial-object-test2.elf-x86-64

CORRUPT: trivial-object-test.elf-x86-64:
CORRUPT-NEXT:                  U SomeOtherFunction
CORRUPT-NEXT: 0000000000000000 T main
CORRUPT-NEXT:                  U puts

CORRUPT: trivial-object-test2.elf-x86-64:
CORRUPT-NEXT: 0000000000000000 t bar
CORRUPT-NEXT: 0000000000000006 T foo
CORRUPT-NEXT: 0000000000000016 T main

check that the we *don't* update the symbol table.
RUN: llvm-ar s %t.a
RUN: llvm-nm -M %t.a | FileCheck %s --check-prefix=CORRUPT

repeate the test with llvm-ranlib

RUN: rm -f %t.a
RUN: llvm-ar rcSU %t.a %p/Inputs/trivial-object-test.elf-x86-64 %p/Inputs/trivial-object-test2.elf-x86-64
RUN: llvm-nm -M %t.a | FileCheck %s --check-prefix=NOMAP

RUN: llvm-ranlib %t.a
RUN: llvm-nm -M %t.a | FileCheck %s

RUN: llvm-nm -M %p/Inputs/macho-archive-x86_64.a | FileCheck %s --check-prefix=BSD-MachO
RUN: llvm-nm -M %p/Inputs/macho-archive-unsorted-x86_64.a | FileCheck %s --check-prefix=BSD-MachO

BSD-MachO: Archive map
BSD-MachO: _bar in bar.o
BSD-MachO: _foo in foo.o

RUN: rm -f %t.a
RUN: llvm-ar --format=bsd rcsU %t.a %p/Inputs/trivial-object-test.macho-x86-64 %p/Inputs/trivial-object-test2.macho-x86-64
RUN: llvm-nm -M %t.a | FileCheck --check-prefix=MACHO %s

MACHO: Archive map
MACHO-NEXT: _main in trivial-object-test.macho-x86-64
MACHO-NEXT: _foo in trivial-object-test2.macho-x86-64
MACHO-NEXT: _main in trivial-object-test2.macho-x86-64
MACHO-NOT: bar

MACHO: trivial-object-test.macho-x86-64
MACHO-NEXT: 0000000000000028 s L_.str
MACHO-NEXT:                  U _SomeOtherFunction
MACHO-NEXT: 0000000000000000 T _main
MACHO-NEXT:                  U _puts

MACHO: trivial-object-test2.macho-x86-64
MACHO-NEXT: 0000000000000000 t _bar
MACHO-NEXT: 0000000000000001 T _foo
MACHO-NEXT: 0000000000000002 T _main

Test that we pad the symbol table so that it ends in a multiple of 4 bytes:
8 + 60 + 36 == 104
RUN: rm -f %t.a
RUN: llvm-ar --format=bsd rcsU %t.a %p/Inputs/trivial-object-test.macho-x86-64
RUN: FileCheck --check-prefix=MACHO-SYMTAB-ALIGN %s < %t.a
MACHO-SYMTAB-ALIGN: !<arch>
MACHO-SYMTAB-ALIGN-NEXT: #1/12           {{..........}}  0     0     0       36        `