1
// RUN: llvm-mc -triple=aarch64-none-linux-gnu -filetype=obj %s -o -| llvm-objdump -r - | FileCheck %s
3
// CHECK: RELOCATION RECORDS FOR [.rela.text]
5
.file "/home/espindola/llvm/llvm/test/CodeGen/AArch64/basic-pic.ll"
8
.type get_globalvar,@function
9
get_globalvar: // @get_globalvar
13
ldr x0, [x0, #:got_lo12:var]
17
.size get_globalvar, .Ltmp0-get_globalvar
20
// CHECK: R_AARCH64_ADR_GOT_PAGE var
21
// CHECK: R_AARCH64_LD64_GOT_LO12_NC var
23
.globl get_globalvaraddr
24
.type get_globalvaraddr,@function
25
get_globalvaraddr: // @get_globalvaraddr
29
ldr x0, [x0, #:got_lo12:var]
32
.size get_globalvaraddr, .Ltmp1-get_globalvaraddr
34
// CHECK: R_AARCH64_ADR_GOT_PAGE var
35
// CHECK: R_AARCH64_LD64_GOT_LO12_NC var
38
.type get_hiddenvar,@function
39
get_hiddenvar: // @get_hiddenvar
43
ldr w0, [x0, #:lo12:hiddenvar]
46
.size get_hiddenvar, .Ltmp2-get_hiddenvar
48
// CHECK: R_AARCH64_ADR_PREL_PG_HI21 hiddenvar
49
// CHECK: R_AARCH64_LDST32_ABS_LO12_NC hiddenvar
51
.globl get_hiddenvaraddr
52
.type get_hiddenvaraddr,@function
53
get_hiddenvaraddr: // @get_hiddenvaraddr
57
add x0, x0, #:lo12:hiddenvar
60
.size get_hiddenvaraddr, .Ltmp3-get_hiddenvaraddr
62
// CHECK: R_AARCH64_ADR_PREL_PG_HI21 hiddenvar
63
// CHECK: R_AARCH64_ADD_ABS_LO12_NC hiddenvar
66
.type get_func,@function
67
get_func: // @get_func
70
adrp x0, :got:get_func
71
ldr x0, [x0, #:got_lo12:get_func]
74
.size get_func, .Ltmp4-get_func
77
// Particularly important that the ADRP gets a relocation, LLVM tends to think
78
// it can relax it because it knows where get_func is. It can't!
79
// CHECK: R_AARCH64_ADR_GOT_PAGE get_func
80
// CHECK: R_AARCH64_LD64_GOT_LO12_NC get_func
82
.type var,@object // @var
90
.hidden hiddenvar // @hiddenvar
91
.type hiddenvar,@object