2 # a) Linking a shared library.
3 # b) There ars multiple R_MIPS_32 relocations with various targets.
5 # a) Emitting of R_MIPS_REL32 relocations.
6 # b) There should be no R_MIPS_REL32 relocations for the _gp_disp symbol.
8 # RUN: yaml2obj -format=elf -docnum 1 %s > %t-so.o
9 # RUN: lld -flavor gnu -target mipsel -shared -o %t1.so %t-so.o
10 # RUN: yaml2obj -format=elf -docnum 2 %s > %t-o.o
11 # RUN: lld -flavor gnu -target mipsel -shared --noinhibit-exec \
12 # RUN: -o %t2.so %t-o.o %t1.so
13 # RUN: llvm-readobj -dt -r -sections %t2.so | FileCheck %s
17 # CHECK-NOT: Name: .plt ({{[0-9]+}})
19 # CHECK: Relocations [
20 # CHECK-NEXT: Section (4) .rel.dyn {
21 # CHECK-NEXT: 0x2000 R_MIPS_REL32 T0 0x0
22 # CHECK-NEXT: 0x2000 R_MIPS_REL32 T4 0x0
23 # CHECK-NEXT: 0x2000 R_MIPS_REL32 D2 0x0
24 # CHECK-NEXT: 0x2004 R_MIPS_REL32 T1 0x0
25 # CHECK-NEXT: 0x2008 R_MIPS_REL32 T2 0x0
26 # CHECK-NEXT: 0x2004 R_MIPS_REL32 D0 0x0
27 # CHECK-NEXT: 0x2008 R_MIPS_REL32 D1 0x0
28 # CHECK-NEXT: 0x2004 R_MIPS_REL32 D4 0x0
29 # CHECK-NEXT: 0x2008 R_MIPS_REL32 U1 0x0
33 # CHECK: DynamicSymbols [
34 # CHECK-NEXT: Symbol {
35 # CHECK-NEXT: Name: @ (0)
36 # CHECK-NEXT: Value: 0x0
38 # CHECK-NEXT: Binding: Local (0x0)
39 # CHECK-NEXT: Type: None (0x0)
40 # CHECK-NEXT: Other: 0
41 # CHECK-NEXT: Section: Undefined (0x0)
43 # CHECK-NEXT: Symbol {
44 # CHECK-NEXT: Name: T0@ (1)
45 # CHECK-NEXT: Value: 0x214
47 # CHECK-NEXT: Binding: Global (0x1)
48 # CHECK-NEXT: Type: Function (0x2)
49 # CHECK-NEXT: Other: 0
50 # CHECK-NEXT: Section: .text (0x5)
52 # CHECK-NEXT: Symbol {
53 # CHECK-NEXT: Name: T4@ (7)
54 # CHECK-NEXT: Value: 0x0
56 # CHECK-NEXT: Binding: Global (0x1)
57 # CHECK-NEXT: Type: None (0x0)
58 # CHECK-NEXT: Other: 0
59 # CHECK-NEXT: Section: Undefined (0x0)
61 # CHECK-NEXT: Symbol {
62 # CHECK-NEXT: Name: D2@ (25)
63 # CHECK-NEXT: Value: 0x0
65 # CHECK-NEXT: Binding: Global (0x1)
66 # CHECK-NEXT: Type: Object (0x1)
67 # CHECK-NEXT: Other: 0
68 # CHECK-NEXT: Section: Undefined (0x0)
70 # CHECK-NEXT: Symbol {
71 # CHECK-NEXT: Name: T1@ (16)
72 # CHECK-NEXT: Value: 0x0
74 # CHECK-NEXT: Binding: Global (0x1)
75 # CHECK-NEXT: Type: Function (0x2)
76 # CHECK-NEXT: Other: 0
77 # CHECK-NEXT: Section: Undefined (0x0)
79 # CHECK-NEXT: Symbol {
80 # CHECK-NEXT: Name: T2@ (19)
81 # CHECK-NEXT: Value: 0x0
83 # CHECK-NEXT: Binding: Global (0x1)
84 # CHECK-NEXT: Type: Function (0x2)
85 # CHECK-NEXT: Other: 0
86 # CHECK-NEXT: Section: Undefined (0x0)
88 # CHECK-NEXT: Symbol {
89 # CHECK-NEXT: Name: D0@ (4)
90 # CHECK-NEXT: Value: 0x2004
92 # CHECK-NEXT: Binding: Global (0x1)
93 # CHECK-NEXT: Type: Object (0x1)
94 # CHECK-NEXT: Other: 0
95 # CHECK-NEXT: Section: .data (0x8)
97 # CHECK-NEXT: Symbol {
98 # CHECK-NEXT: Name: D1@ (22)
99 # CHECK-NEXT: Value: 0x0
100 # CHECK-NEXT: Size: 4
101 # CHECK-NEXT: Binding: Global (0x1)
102 # CHECK-NEXT: Type: Object (0x1)
103 # CHECK-NEXT: Other: 0
104 # CHECK-NEXT: Section: Undefined (0x0)
106 # CHECK-NEXT: Symbol {
107 # CHECK-NEXT: Name: D4@ (10)
108 # CHECK-NEXT: Value: 0x0
109 # CHECK-NEXT: Size: 0
110 # CHECK-NEXT: Binding: Global (0x1)
111 # CHECK-NEXT: Type: None (0x0)
112 # CHECK-NEXT: Other: 0
113 # CHECK-NEXT: Section: Undefined (0x0)
115 # CHECK-NEXT: Symbol {
116 # CHECK-NEXT: Name: U1@ (13)
117 # CHECK-NEXT: Value: 0x0
118 # CHECK-NEXT: Size: 0
119 # CHECK-NEXT: Binding: Global (0x1)
120 # CHECK-NEXT: Type: None (0x0)
121 # CHECK-NEXT: Other: 0
122 # CHECK-NEXT: Section: Undefined (0x0)
133 Flags: [EF_MIPS_PIC, EF_MIPS_CPIC, EF_MIPS_ABI_O32, EF_MIPS_ARCH_32]
140 Flags: [SHF_EXECINSTR, SHF_ALLOC]
146 Flags: [SHF_WRITE, SHF_ALLOC]
178 Flags: [EF_MIPS_PIC, EF_MIPS_CPIC, EF_MIPS_ABI_O32, EF_MIPS_ARCH_32]
185 Flags: [SHF_EXECINSTR, SHF_ALLOC]
191 Flags: [SHF_WRITE, SHF_ALLOC]
210 - Offset: 0x00 # T0 is a defined function
213 - Offset: 0x04 # T1 is a function from shared lib
216 - Offset: 0x08 # T2 has unknown type and defined in shared lib
219 - Offset: 0x00 # T4 is an undefined function
222 - Offset: 0x04 # D0 is a defined data object
225 - Offset: 0x08 # D1 is a data object from shared lib
228 - Offset: 0x00 # D2 has unknown type and defined in shared lib
231 - Offset: 0x04 # D4 is an undefined data object
234 - Offset: 0x08 # U1 is undefined and has unknown type