1 # Check that LLD does not populate a shared library dynamic symbol table
2 # by unnecessary symbols.
3 # 1. bar.so defines T2 and T3
4 # 2. foo.so defines T1 and references T2
5 # 4. foo.so dynamic table should contain T1 and T2 entries only
7 # RUN: yaml2obj -format=elf -docnum 1 %s > %t-bar.o
8 # RUN: yaml2obj -format=elf -docnum 2 %s > %t-foo.o
9 # RUN: lld -flavor gnu -target mipsel -shared -o %t-bar.so %t-bar.o
10 # RUN: lld -flavor gnu -target mipsel -shared -o %t-foo.so %t-foo.o %t-bar.so
11 # RUN: llvm-readobj -dt -dynamic-table %t-foo.so | FileCheck %s
13 # CHECK: DynamicSymbols [
14 # CHECK-NEXT: Symbol {
15 # CHECK-NEXT: Name: @ (0)
16 # CHECK-NEXT: Value: 0x0
18 # CHECK-NEXT: Binding: Local (0x0)
19 # CHECK-NEXT: Type: None (0x0)
20 # CHECK-NEXT: Other: 0
21 # CHECK-NEXT: Section: Undefined (0x0)
23 # CHECK-NEXT: Symbol {
24 # CHECK-NEXT: Name: T1@ ({{.*}})
25 # CHECK-NEXT: Value: {{.*}}
27 # CHECK-NEXT: Binding: Global (0x1)
28 # CHECK-NEXT: Type: Function (0x2)
29 # CHECK-NEXT: Other: 0
30 # CHECK-NEXT: Section: .text (0x4)
32 # CHECK-NEXT: Symbol {
33 # CHECK-NEXT: Name: T2@ ({{.*}})
34 # CHECK-NEXT: Value: 0x0
36 # CHECK-NEXT: Binding: Global (0x1)
37 # CHECK-NEXT: Type: Function (0x2)
38 # CHECK-NEXT: Other: 0
39 # CHECK-NEXT: Section: Undefined (0x0)
43 # CHECK: 0x00000003 PLTGOT 0x1000
44 # CHECK-NEXT: 0x00000001 NEEDED SharedLibrary (dynsym-table-2.test.tmp-bar.so)
45 # CHECK-NEXT: 0x00000000 NULL 0x0
54 Flags: [EF_MIPS_PIC, EF_MIPS_CPIC, EF_MIPS_ABI_O32, EF_MIPS_ARCH_32]
59 Flags: [ SHF_ALLOC, SHF_EXECINSTR ]
81 Flags: [EF_MIPS_PIC, EF_MIPS_CPIC, EF_MIPS_ABI_O32, EF_MIPS_ARCH_32]
86 Flags: [ SHF_ALLOC, SHF_EXECINSTR ]