|
4 | 4 | // RUN: ld.lld -shared %t2.o -soname=t2.so -o %t2.so
|
5 | 5 | // RUN: ld.lld -shared %t.o %t2.so -o %t.so
|
6 | 6 | // RUN: ld.lld %t.o %t2.so -o %t.exe
|
7 |
| -// RUN: llvm-readobj -S -r %t.so | FileCheck --check-prefix=CHECKDSO %s |
| 7 | +// RUN: llvm-readelf -S -r %t.so | FileCheck --check-prefix=CHECKDSO %s |
8 | 8 | // RUN: llvm-objdump -s --section=.got.plt %t.so | FileCheck --check-prefix=DUMPDSO %s
|
9 | 9 | // RUN: llvm-objdump -d --no-show-raw-insn --print-imm-hex %t.so | FileCheck --check-prefix=DISASMDSO %s
|
10 |
| -// RUN: llvm-readobj -S -r %t.exe | FileCheck --check-prefix=CHECKEXE %s |
| 10 | +// RUN: llvm-readelf -S -r %t.exe | FileCheck --check-prefix=CHECKEXE %s |
11 | 11 | // RUN: llvm-objdump -s --section=.got.plt %t.exe | FileCheck --check-prefix=DUMPEXE %s
|
12 | 12 | // RUN: llvm-objdump -d --no-show-raw-insn --print-imm-hex %t.exe | FileCheck --check-prefix=DISASMEXE %s
|
13 | 13 |
|
14 |
| -// CHECKDSO: Name: .plt |
15 |
| -// CHECKDSO-NEXT: Type: SHT_PROGBITS |
16 |
| -// CHECKDSO-NEXT: Flags [ |
17 |
| -// CHECKDSO-NEXT: SHF_ALLOC |
18 |
| -// CHECKDSO-NEXT: SHF_EXECINSTR |
19 |
| -// CHECKDSO-NEXT: ] |
20 |
| -// CHECKDSO-NEXT: Address: 0x10340 |
21 |
| -// CHECKDSO-NEXT: Offset: |
22 |
| -// CHECKDSO-NEXT: Size: 80 |
23 |
| -// CHECKDSO-NEXT: Link: |
24 |
| -// CHECKDSO-NEXT: Info: |
25 |
| -// CHECKDSO-NEXT: AddressAlignment: 16 |
26 |
| - |
27 |
| -// CHECKDSO: Name: .got.plt |
28 |
| -// CHECKDSO-NEXT: Type: SHT_PROGBITS |
29 |
| -// CHECKDSO-NEXT: Flags [ |
30 |
| -// CHECKDSO-NEXT: SHF_ALLOC |
31 |
| -// CHECKDSO-NEXT: SHF_WRITE |
32 |
| -// CHECKDSO-NEXT: ] |
33 |
| -// CHECKDSO-NEXT: Address: 0x30450 |
34 |
| -// CHECKDSO-NEXT: Offset: |
35 |
| -// CHECKDSO-NEXT: Size: 48 |
36 |
| -// CHECKDSO-NEXT: Link: |
37 |
| -// CHECKDSO-NEXT: Info: |
38 |
| -// CHECKDSO-NEXT: AddressAlignment: 8 |
39 |
| - |
40 |
| -// CHECKDSO: Relocations [ |
41 |
| -// CHECKDSO-NEXT: Section ({{.*}}) .rela.plt { |
42 |
| - |
43 |
| -// &(.got.plt[3]) = 0x30450 + 3 * 8 = 0x30468 |
44 |
| -// CHECKDSO-NEXT: 0x30468 R_AARCH64_JUMP_SLOT foo |
45 |
| - |
46 |
| -// &(.got.plt[4]) = 0x30450 + 4 * 8 = 0x30470 |
47 |
| -// CHECKDSO-NEXT: 0x30470 R_AARCH64_JUMP_SLOT bar |
48 |
| - |
49 |
| -// &(.got.plt[5]) = 0x30000 + 5 * 8 = 0x30470 |
50 |
| -// CHECKDSO-NEXT: 0x30478 R_AARCH64_JUMP_SLOT weak |
51 |
| -// CHECKDSO-NEXT: } |
52 |
| -// CHECKDSO-NEXT: ] |
| 14 | +// CHECKDSO-LABEL: Section Headers: |
| 15 | +/// Name Type Address Off Size ES Flg Lk Inf Al |
| 16 | +// CHECKDSO: .plt PROGBITS 0000000000010340 000340 000050 00 AXy 0 0 16 |
| 17 | +// CHECKDSO: .got.plt PROGBITS 0000000000030450 000450 000030 00 WA 0 0 8 |
| 18 | + |
| 19 | +// CHECKDSO-LABEL: Relocation section '.rela.plt' at offset 0x2e8 contains 3 entries: |
| 20 | +// CHECKDSO-NEXT: Offset Info Type Symbol's Value Symbol's Name + Addend |
| 21 | +/// &(.got.plt[3]) = 0x30450 + 3 * 8 = 0x30468 |
| 22 | +// CHECKDSO-NEXT: 0000000000030468 0000000400000402 R_AARCH64_JUMP_SLOT 000000000001033c foo + 0 |
| 23 | +/// &(.got.plt[4]) = 0x30450 + 4 * 8 = 0x30470 |
| 24 | +// CHECKDSO-NEXT: 0000000000030470 0000000100000402 R_AARCH64_JUMP_SLOT 0000000000000000 bar + 0 |
| 25 | +/// &(.got.plt[5]) = 0x30000 + 5 * 8 = 0x30478 |
| 26 | +// CHECKDSO-NEXT: 0000000000030478 0000000200000402 R_AARCH64_JUMP_SLOT 0000000000000000 weak + 0 |
53 | 27 |
|
54 | 28 | // DUMPDSO: Contents of section .got.plt:
|
55 | 29 | // .got.plt[0..2] = 0 (reserved)
|
|
106 | 80 | // DISASMDSO-NEXT: 10388: add x16, x16, #0x478
|
107 | 81 | // DISASMDSO-NEXT: 1038c: br x17
|
108 | 82 |
|
109 |
| -// CHECKEXE: Name: .plt |
110 |
| -// CHECKEXE-NEXT: Type: SHT_PROGBITS |
111 |
| -// CHECKEXE-NEXT: Flags [ |
112 |
| -// CHECKEXE-NEXT: SHF_ALLOC |
113 |
| -// CHECKEXE-NEXT: SHF_EXECINSTR |
114 |
| -// CHECKEXE-NEXT: ] |
115 |
| -// CHECKEXE-NEXT: Address: 0x2102E0 |
116 |
| -// CHECKEXE-NEXT: Offset: |
117 |
| -// CHECKEXE-NEXT: Size: 64 |
118 |
| -// CHECKEXE-NEXT: Link: |
119 |
| -// CHECKEXE-NEXT: Info: |
120 |
| -// CHECKEXE-NEXT: AddressAlignment: 16 |
121 |
| - |
122 |
| -// CHECKEXE: Name: .got.plt |
123 |
| -// CHECKEXE-NEXT: Type: SHT_PROGBITS |
124 |
| -// CHECKEXE-NEXT: Flags [ |
125 |
| -// CHECKEXE-NEXT: SHF_ALLOC |
126 |
| -// CHECKEXE-NEXT: SHF_WRITE |
127 |
| -// CHECKEXE-NEXT: ] |
128 |
| -// CHECKEXE-NEXT: Address: 0x2303F0 |
129 |
| -// CHECKEXE-NEXT: Offset: |
130 |
| -// CHECKEXE-NEXT: Size: 40 |
131 |
| -// CHECKEXE-NEXT: Link: |
132 |
| -// CHECKEXE-NEXT: Info: |
133 |
| -// CHECKEXE-NEXT: AddressAlignment: 8 |
134 |
| - |
135 |
| -// CHECKEXE: Relocations [ |
136 |
| -// CHECKEXE-NEXT: Section ({{.*}}) .rela.plt { |
137 |
| - |
138 |
| -// &(.got.plt[3]) = 0x2303f0 + 3 * 8 = 0x230408 |
139 |
| -// CHECKEXE-NEXT: 0x230408 R_AARCH64_JUMP_SLOT bar 0x0 |
140 |
| - |
141 |
| -// &(.got.plt[4]) = 0x2303f0 + 4 * 8 = 0x230410 |
142 |
| -// CHECKEXE-NEXT: 0x230410 R_AARCH64_JUMP_SLOT weak 0x0 |
143 |
| -// CHECKEXE-NEXT: } |
144 |
| -// CHECKEXE-NEXT: ] |
| 83 | +// CHECKEXE-LABEL: Section Headers: |
| 84 | +/// Name Type Address Off Size ES Flg Lk Inf Al |
| 85 | +// CHECKEXE: .plt PROGBITS 00000000002102e0 0002e0 000040 00 AXy 0 0 16 |
| 86 | +// CHECKEXE: .got.plt PROGBITS 00000000002303f0 0003f0 000028 00 WA 0 0 8 |
| 87 | + |
| 88 | +// CHECKEXE-LABEL: Relocation section '.rela.plt' at offset 0x298 contains 2 entries: |
| 89 | +// CHECKEXE-NEXT: Offset Info Type Symbol's Value Symbol's Name + Addend |
| 90 | +/// &(.got.plt[3]) = 0x2303f0 + 3 * 8 = 0x230408 |
| 91 | +// CHECKEXE-NEXT: 0000000000230408 0000000100000402 R_AARCH64_JUMP_SLOT 0000000000000000 bar + 0 |
| 92 | +/// &(.got.plt[4]) = 0x2303f0 + 4 * 8 = 0x230410 |
| 93 | +// CHECKEXE-NEXT: 0000000000230410 0000000200000402 R_AARCH64_JUMP_SLOT 0000000000000000 weak + 0 |
145 | 94 |
|
146 | 95 | // DUMPEXE: Contents of section .got.plt:
|
147 | 96 | // .got.plt[0..2] = 0 (reserved)
|
|
0 commit comments