]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - test/elf/Mips/dynsym-table-2.test
Vendor import of lld trunk r233088:
[FreeBSD/FreeBSD.git] / test / elf / Mips / dynsym-table-2.test
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
6
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
12
13 # CHECK:      DynamicSymbols [
14 # CHECK-NEXT:   Symbol {
15 # CHECK-NEXT:     Name: @ (0)
16 # CHECK-NEXT:     Value: 0x0
17 # CHECK-NEXT:     Size: 0
18 # CHECK-NEXT:     Binding: Local (0x0)
19 # CHECK-NEXT:     Type: None (0x0)
20 # CHECK-NEXT:     Other: 0
21 # CHECK-NEXT:     Section: Undefined (0x0)
22 # CHECK-NEXT:   }
23 # CHECK-NEXT:   Symbol {
24 # CHECK-NEXT:     Name: T1@ ({{.*}})
25 # CHECK-NEXT:     Value: {{.*}}
26 # CHECK-NEXT:     Size: 8
27 # CHECK-NEXT:     Binding: Global (0x1)
28 # CHECK-NEXT:     Type: Function (0x2)
29 # CHECK-NEXT:     Other: 0
30 # CHECK-NEXT:     Section: .text (0x4)
31 # CHECK-NEXT:   }
32 # CHECK-NEXT:   Symbol {
33 # CHECK-NEXT:     Name: T2@ ({{.*}})
34 # CHECK-NEXT:     Value: 0x0
35 # CHECK-NEXT:     Size: 0
36 # CHECK-NEXT:     Binding: Global (0x1)
37 # CHECK-NEXT:     Type: Function (0x2)
38 # CHECK-NEXT:     Other: 0
39 # CHECK-NEXT:     Section: Undefined (0x0)
40 # CHECK-NEXT:   }
41 # CHECK-NEXT: ]
42
43 # CHECK:      0x00000003 PLTGOT 0x1000
44 # CHECK-NEXT: 0x00000001 NEEDED SharedLibrary (dynsym-table-2.test.tmp-bar.so)
45 # CHECK-NEXT: 0x00000000 NULL   0x0
46
47 # bar.o
48 ---
49 FileHeader:
50   Class:           ELFCLASS32
51   Data:            ELFDATA2LSB
52   Type:            ET_REL
53   Machine:         EM_MIPS
54   Flags:           [EF_MIPS_PIC, EF_MIPS_CPIC, EF_MIPS_ABI_O32, EF_MIPS_ARCH_32]
55
56 Sections:
57   - Name:            .text
58     Type:            SHT_PROGBITS
59     Flags:           [ SHF_ALLOC, SHF_EXECINSTR ]
60     AddressAlign:    0x04
61     Size:            0x08
62 Symbols:
63   Global:
64     - Name:            T2
65       Type:            STT_FUNC
66       Section:         .text
67       Size:            0x04
68     - Name:            T3
69       Type:            STT_FUNC
70       Section:         .text
71       Value:           0x04
72       Size:            0x04
73
74 # foo.o
75 ---
76 FileHeader:
77   Class:           ELFCLASS32
78   Data:            ELFDATA2LSB
79   Type:            ET_REL
80   Machine:         EM_MIPS
81   Flags:           [EF_MIPS_PIC, EF_MIPS_CPIC, EF_MIPS_ABI_O32, EF_MIPS_ARCH_32]
82
83 Sections:
84   - Name:            .text
85     Type:            SHT_PROGBITS
86     Flags:           [ SHF_ALLOC, SHF_EXECINSTR ]
87     AddressAlign:    0x04
88     Size:            0x08
89   - Name:            .rel.text
90     Type:            SHT_REL
91     Link:            .symtab
92     AddressAlign:    0x08
93     Info:            .text
94     Relocations:
95       - Offset:          0
96         Symbol:          T2
97         Type:            R_MIPS_CALL16
98 Symbols:
99   Global:
100     - Name:            T1
101       Type:            STT_FUNC
102       Section:         .text
103       Size:            0x08
104     - Name:            T2
105 ...