2 // RUN
: llvm-mc
-filetype
=obj
-triple
=i686-pc-linux
%s
-o
%t.o
3 // RUN
: ld.lld
-static
%t.o
-o
%tout
4 // RUN
: llvm-objdump
--no-print-imm-hex
-d
--no-show-raw-insn
%tout | FileCheck
%s
--check-prefix
=DISASM
5 // RUN
: llvm-readobj
-r
--symbols
--sections
%tout | FileCheck
%s
10 // CHECK-NEXT
: Name
: .rel.dyn
11 // CHECK-NEXT
: Type
: SHT_REL
12 // CHECK-NEXT
: Flags
[
13 // CHECK-NEXT
: SHF_ALLOC
15 // CHECK-NEXT
: Address
: [[RELA
:.*]]
16 // CHECK-NEXT
: Offset
: 0xD4
17 // CHECK-NEXT
: Size
: 16
18 // CHECK-NEXT
: Link
: 0
19 // CHECK-NEXT
: Info
: 0
20 // CHECK-NEXT
: AddressAlignment
: 4
21 // CHECK-NEXT
: EntrySize
: 8
23 // CHECK
: Relocations
[
24 // CHECK-NEXT
: Section
({{.*}}) .rel.dyn {
25 // CHECK-NEXT
: 0x402120 R_386_IRELATIVE
26 // CHECK-NEXT
: 0x402124 R_386_IRELATIVE
31 // CHECK-NEXT
: Symbol
{
33 // CHECK-NEXT
: Value
: 0x0
34 // CHECK-NEXT
: Size
: 0
35 // CHECK-NEXT
: Binding
: Local
36 // CHECK-NEXT
: Type
: None
37 // CHECK-NEXT
: Other
: 0
38 // CHECK-NEXT
: Section
: Undefined
40 // CHECK-NEXT
: Symbol
{
41 // CHECK-NEXT
: Name
: __rel_iplt_start
42 // CHECK-NEXT
: Value
: [[RELA
]]
43 // CHECK-NEXT
: Size
: 0
44 // CHECK-NEXT
: Binding
: Local
45 // CHECK-NEXT
: Type
: None
46 // CHECK-NEXT
: Other
[
47 // CHECK-NEXT
: STV_HIDDEN
49 // CHECK-NEXT
: Section
: .rel.dyn
51 // CHECK-NEXT
: Symbol
{
52 // CHECK-NEXT
: Name
: __rel_iplt_end
53 // CHECK-NEXT
: Value
: 0x4000E4
54 // CHECK-NEXT
: Size
: 0
55 // CHECK-NEXT
: Binding
: Local
56 // CHECK-NEXT
: Type
: None
57 // CHECK-NEXT
: Other
[
58 // CHECK-NEXT
: STV_HIDDEN
60 // CHECK-NEXT
: Section
: .rel.dyn
62 // CHECK-NEXT
: Symbol
{
63 // CHECK-NEXT
: Name
: bar
64 // CHECK-NEXT
: Value
: 0x401100
65 // CHECK-NEXT
: Size
: 0
66 // CHECK-NEXT
: Binding
: Global
67 // CHECK-NEXT
: Type
: Function
68 // CHECK-NEXT
: Other
: 0
69 // CHECK-NEXT
: Section
: .iplt
71 // CHECK-NEXT
: Symbol
{
72 // CHECK-NEXT
: Name
: bar_resolver
73 // CHECK-NEXT
: Value
: 0x4010E4
74 // CHECK-NEXT
: Size
: 0
75 // CHECK-NEXT
: Binding
: Global
76 // CHECK-NEXT
: Type
: Function
77 // CHECK-NEXT
: Other
: 0
78 // CHECK-NEXT
: Section
: .text
80 // CHECK-NEXT
: Symbol
{
81 // CHECK-NEXT
: Name
: foo
82 // CHECK-NEXT
: Value
: 0x401110
83 // CHECK-NEXT
: Size
: 0
84 // CHECK-NEXT
: Binding
: Global
85 // CHECK-NEXT
: Type
: Function
86 // CHECK-NEXT
: Other
: 0
87 // CHECK-NEXT
: Section
: .iplt
89 // CHECK-NEXT
: Symbol
{
90 // CHECK-NEXT
: Name
: foo_resolver
91 // CHECK-NEXT
: Value
: 0x4010E5
92 // CHECK-NEXT
: Size
: 0
93 // CHECK-NEXT
: Binding
: Global
94 // CHECK-NEXT
: Type
: Function
95 // CHECK-NEXT
: Other
: 0
96 // CHECK-NEXT
: Section
: .text
98 // CHECK-NEXT
: Symbol
{
99 // CHECK-NEXT
: Name
: _start
100 // CHECK-NEXT
: Value
: 0x4010E6
101 // CHECK-NEXT
: Size
: 0
102 // CHECK-NEXT
: Binding
: Global
103 // CHECK-NEXT
: Type
: None
104 // CHECK-NEXT
: Other
: 0
105 // CHECK-NEXT
: Section
: .text
109 // DISASM
: Disassembly of section
.text:
111 // DISASM-NEXT
: <bar_resolver
>:
112 // DISASM-NEXT
: 4010e4
: retl
113 // DISASM
: <foo_resolver
>:
114 // DISASM-NEXT
: 4010e5
: retl
116 // DISASM-NEXT
: 4010e6
: calll
0x401110 <foo
>
117 // DISASM-NEXT
: calll
0x401100 <bar
>
118 // DISASM-NEXT
: movl $
4194516, %edx
119 // DISASM-NEXT
: movl $
4194532, %edx
121 // DISASM-NEXT
: Disassembly of section
.iplt:
123 // DISASM-NEXT
: <bar
>:
124 // DISASM-NEXT
: 401100: jmpl
*4202784
125 // DISASM-NEXT
: pushl $
0
126 // DISASM-NEXT
: jmp
0x0
128 // DISASM-NEXT
: 401110: jmpl
*4202788
129 // DISASM-NEXT
: pushl $
8
130 // DISASM-NEXT
: jmp
0x0
132 .type bar STT_GNU_IFUNC
135 .type bar_resolver STT_FUNC
141 .type foo STT_GNU_IFUNC
144 .type foo_resolver STT_FUNC
153 movl $__rel_iplt_start
,%edx
154 movl $__rel_iplt_end
,%edx