2 // RUN
: llvm-mc
-filetype
=obj
-triple
=aarch64-none-linux-gnu
%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
: .rela.dyn
11 // CHECK-NEXT
: Type
: SHT_RELA
12 // CHECK-NEXT
: Flags
[
13 // CHECK-NEXT
: SHF_ALLOC
14 // CHECK-NEXT
: SHF_INFO_LINK
16 // CHECK-NEXT
: Address
: [[RELA
:.*]]
17 // CHECK-NEXT
: Offset
: 0x158
18 // CHECK-NEXT
: Size
: 48
19 // CHECK-NEXT
: Link
: 0
20 // CHECK-NEXT
: Info
: 4
21 // CHECK-NEXT
: AddressAlignment
: 8
22 // CHECK-NEXT
: EntrySize
: 24
24 // CHECK
: Relocations
[
25 // CHECK-NEXT
: Section
({{.*}}) .rela.dyn {
26 // CHECK-NEXT
: 0x2201C0 R_AARCH64_IRELATIVE
27 // CHECK-NEXT
: 0x2201C8 R_AARCH64_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
: $x.0
42 // CHECK-NEXT
: Value
: 0x210188
43 // CHECK-NEXT
: Size
: 0
44 // CHECK-NEXT
: Binding
: Local
45 // CHECK-NEXT
: Type
: None
46 // CHECK-NEXT
: Other
: 0
47 // CHECK-NEXT
: Section
: .text
49 // CHECK-NEXT
: Symbol
{
50 // CHECK-NEXT
: Name
: __rela_iplt_start
51 // CHECK-NEXT
: Value
: 0x200158
52 // CHECK-NEXT
: Size
: 0
53 // CHECK-NEXT
: Binding
: Local
54 // CHECK-NEXT
: Type
: None
55 // CHECK-NEXT
: Other
[
56 // CHECK-NEXT
: STV_HIDDEN
58 // CHECK-NEXT
: Section
: .rela.dyn
60 // CHECK-NEXT
: Symbol
{
61 // CHECK-NEXT
: Name
: __rela_iplt_end
62 // CHECK-NEXT
: Value
: 0x200188
63 // CHECK-NEXT
: Size
: 0
64 // CHECK-NEXT
: Binding
: Local
65 // CHECK-NEXT
: Type
: None
66 // CHECK-NEXT
: Other
[
67 // CHECK-NEXT
: STV_HIDDEN
69 // CHECK-NEXT
: Section
: .rela.dyn
71 // CHECK-NEXT
: Symbol
{
72 // CHECK-NEXT
: Name
: foo
73 // CHECK-NEXT
: Value
: 0x210188
74 // CHECK-NEXT
: Size
: 0
75 // CHECK-NEXT
: Binding
: Global
76 // CHECK-NEXT
: Type
: GNU_IFunc
77 // CHECK-NEXT
: Other
: 0
78 // CHECK-NEXT
: Section
: .text
80 // CHECK-NEXT
: Symbol
{
81 // CHECK-NEXT
: Name
: bar
82 // CHECK-NEXT
: Value
: 0x21018C
83 // CHECK-NEXT
: Size
: 0
84 // CHECK-NEXT
: Binding
: Global
85 // CHECK-NEXT
: Type
: GNU_IFunc
86 // CHECK-NEXT
: Other
: 0
87 // CHECK-NEXT
: Section
: .text
89 // CHECK-NEXT
: Symbol
{
90 // CHECK-NEXT
: Name
: _start
91 // CHECK-NEXT
: Value
: 0x210190
92 // CHECK-NEXT
: Size
: 0
93 // CHECK-NEXT
: Binding
: Global
94 // CHECK-NEXT
: Type
: None
95 // CHECK-NEXT
: Other
: 0
96 // CHECK-NEXT
: Section
: .text
103 // DISASM
: Disassembly of section
.text:
105 // DISASM-NEXT
: <foo
>:
106 // DISASM-NEXT
: 210188: ret
108 // DISASM-NEXT
: 21018c
: ret
110 // DISASM-NEXT
: 210190: bl 0x2101a0
111 // DISASM-NEXT
: 210194: bl 0x2101b0
112 // DISASM-NEXT
: 210198: add x2
, x2
, #344
113 // DISASM-NEXT
: 21019c
: add x2
, x2
, #392
115 // DISASM-NEXT
: Disassembly of section
.iplt:
117 // DISASM-NEXT
: <.iplt>:
118 // DISASM-NEXT
: 2101a0
: adrp x16
, 0x220000
119 // DISASM-NEXT
: 2101a4
: ldr x17
, [x16
, #448]
120 // DISASM-NEXT
: 2101a8
: add x16
, x16
, #448
121 // DISASM-NEXT
: 2101ac
: br x17
122 // DISASM-NEXT
: 2101b0
: adrp x16
, 0x220000
123 // DISASM-NEXT
: 2101b4
: ldr x17
, [x16
, #456]
124 // DISASM-NEXT
: 2101b8
: add x16
, x16
, #456
125 // DISASM-NEXT
: 2101bc: br x17
128 .type foo STT_GNU_IFUNC
133 .type bar STT_GNU_IFUNC
142 add x2
, x2
, :lo12
:__rela_iplt_start
143 add x2
, x2
, :lo12
:__rela_iplt_end