2 // RUN
: llvm-mc
-position-independent
-filetype
=obj
-triple
=armv7a-none-linux-gnueabi
%s
-o
%t.o
3 // RUN
: ld.lld
%t.o
-shared
-o
%t
4 // RUN
: llvm-readobj
-S
--symbols
--dyn-relocations
%t | FileCheck
%s
5 // RUN
: llvm-objdump
--no-print-imm-hex
-d
--triple
=armv7a-none-linux-gnueabi
%t | FileCheck
--check-prefix
=CODE
%s
11 .type _start, %function
19 // gas implicitly uses
(R_ARM_BASE_PREL
) for _GLOBAL_OFFSET_TABLE_ in PIC
20 // llvm-mc generates R_ARM_REL32
, this will need updating when MC changes
21 .word _GLOBAL_OFFSET_TABLE_ - (.LPIC+8)
27 .type function, %function
30 // CHECK
: Dynamic Relocations
{
31 // CHECK-NEXT
: 0x2020C R_ARM_GLOB_DAT function
33 // CHECK
: Name
: _GLOBAL_OFFSET_TABLE_
34 // CHECK-NEXT
: Value
: 0x2020C
36 // CHECK-NEXT
: Binding
: Local
37 // CHECK-NEXT
: Type
: None
38 // CHECK-NEXT
: Other
[
39 // CHECK-NEXT
: STV_HIDDEN
41 // CHECK-NEXT
: Section
: .got
43 // CODE
: Disassembly of section
.text:
45 // CODE-NEXT
: <_start
>:
46 // CODE-NEXT
: 101a0
: e59f3008 ldr
r3, [pc
, #8]
47 // CODE-NEXT
: 101a4
: e59f2008 ldr
r2, [pc
, #8]
48 // CODE-NEXT
: 101a8
: e08f0003
add r0, pc
, r3
49 // CODE-NEXT
: 101ac
: e12fff1e bx
lr
50 // (_GLOBAL_OFFSET_TABLE_
= 0x220c) - (0x11a8 + 8) = 0x105c
51 // CODE-NEXT
: 101b0
: 5c
00 01 00
52 // (Got
(function
) - GotBase
= 0x0
53 // CODE-NEXT
: 101b4
: 00 00 00 00