2 // RUN
: llvm-mc
-filetype
=obj
-triple
=x86_64-unknown-linux
%s
-o
%t1.o
3 // RUN
: llvm-mc
-filetype
=obj
-triple
=x86_64-unknown-linux
%p
/Inputs
/shared.s
-o
%t2.o
4 // RUN
: ld.lld
-shared
%t2.o
-o
%t2.so
6 // RUN
: echo
"SECTIONS { \
7 // RUN: .text : { *(.text) } \
8 // RUN: .plt : { *(.plt) } \
9 // RUN: .got.plt : { *(.got.plt) } \
10 // RUN: .dynstr : { *(.dynstr) } \
11 // RUN: }" > %t.script
12 // RUN
: ld.lld
-shared
%t1.o
%t2.so
-o
%t.exe
-z retpolineplt
-z now
--script
%t.script
13 // RUN
: llvm-objdump
--no-print-imm-hex
-d
-s
%t.exe | FileCheck
%s
15 // CHECK
: Disassembly of section
.plt:
17 // CHECK-NEXT
: <.plt>:
18 // CHECK-NEXT
: 10: e8
0b 00 00 00 callq
0x20 <.plt+0x10>
19 // CHECK-NEXT
: 15: f3 90 pause
20 // CHECK-NEXT
: 17: 0f
ae e8 lfence
21 // CHECK-NEXT
: 1a: eb
f9 jmp
0x15 <.plt+0x5>
22 // CHECK-NEXT
: 1c
: cc int3
23 // CHECK-NEXT
: 1d
: cc int3
24 // CHECK-NEXT
: 1e
: cc int3
25 // CHECK-NEXT
: 1f
: cc int3
26 // CHECK-NEXT
: 20: 4c
89 1c
24 movq
%r11, (%rsp
)
27 // CHECK-NEXT
: 24: c3 retq
28 // CHECK-NEXT
: 25: cc int3
29 // CHECK-NEXT
: 26: cc int3
30 // CHECK-NEXT
: 27: cc int3
31 // CHECK-NEXT
: 28: cc int3
32 // CHECK-NEXT
: 29: cc int3
33 // CHECK-NEXT
: 2a: cc int3
34 // CHECK-NEXT
: 2b: cc int3
35 // CHECK-NEXT
: 2c
: cc int3
36 // CHECK-NEXT
: 2d
: cc int3
37 // CHECK-NEXT
: 2e
: cc int3
38 // CHECK-NEXT
: 2f
: cc int3
39 // CHECK-NEXT
: 30: 4c
8b 1d
31 00 00 00 movq
49(%rip
), %r11
40 // CHECK-NEXT
: 37: e9 d4 ff ff ff jmp
0x10 <.plt>
41 // CHECK-NEXT
: 3c
: cc int3
42 // CHECK-NEXT
: 3d
: cc int3
43 // CHECK-NEXT
: 3e
: cc int3
44 // CHECK-NEXT
: 3f
: cc int3
45 // CHECK-NEXT
: 40: 4c
8b 1d
29 00 00 00 movq
41(%rip
), %r11
46 // CHECK-NEXT
: 47: e9 c4 ff ff ff jmp
0x10 <.plt>
47 // CHECK-NEXT
: 4c
: cc int3
48 // CHECK-NEXT
: 4d
: cc int3
49 // CHECK-NEXT
: 4e
: cc int3
50 // CHECK-NEXT
: 4f
: cc int3