• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1// RUN: llvm-mc -triple=aarch64-none-linux-gnu -filetype=obj %s -o -| llvm-objdump -r - | FileCheck %s
2
3// CHECK: RELOCATION RECORDS FOR [.rela.text]
4
5	.file	"/home/espindola/llvm/llvm/test/CodeGen/AArch64/basic-pic.ll"
6	.text
7	.globl	get_globalvar
8	.type	get_globalvar,@function
9get_globalvar:                          // @get_globalvar
10	.cfi_startproc
11// BB#0:
12	adrp	x0, :got:var
13	ldr	x0, [x0, #:got_lo12:var]
14	ldr	 w0, [x0]
15	ret
16.Ltmp0:
17	.size	get_globalvar, .Ltmp0-get_globalvar
18	.cfi_endproc
19
20// CHECK: R_AARCH64_ADR_GOT_PAGE var
21// CHECK: R_AARCH64_LD64_GOT_LO12_NC var
22
23	.globl	get_globalvaraddr
24	.type	get_globalvaraddr,@function
25get_globalvaraddr:                      // @get_globalvaraddr
26	.cfi_startproc
27// BB#0:
28	adrp	x0, :got:var
29	ldr	x0, [x0, #:got_lo12:var]
30	ret
31.Ltmp1:
32	.size	get_globalvaraddr, .Ltmp1-get_globalvaraddr
33	.cfi_endproc
34// CHECK: R_AARCH64_ADR_GOT_PAGE var
35// CHECK: R_AARCH64_LD64_GOT_LO12_NC var
36
37	.globl	get_hiddenvar
38	.type	get_hiddenvar,@function
39get_hiddenvar:                          // @get_hiddenvar
40	.cfi_startproc
41// BB#0:
42	adrp	x0, hiddenvar
43	ldr	w0, [x0, #:lo12:hiddenvar]
44	ret
45.Ltmp2:
46	.size	get_hiddenvar, .Ltmp2-get_hiddenvar
47	.cfi_endproc
48// CHECK: R_AARCH64_ADR_PREL_PG_HI21 hiddenvar
49// CHECK: R_AARCH64_LDST32_ABS_LO12_NC hiddenvar
50
51	.globl	get_hiddenvaraddr
52	.type	get_hiddenvaraddr,@function
53get_hiddenvaraddr:                      // @get_hiddenvaraddr
54	.cfi_startproc
55// BB#0:
56	adrp	x0, hiddenvar
57	add	x0, x0, #:lo12:hiddenvar
58	ret
59.Ltmp3:
60	.size	get_hiddenvaraddr, .Ltmp3-get_hiddenvaraddr
61	.cfi_endproc
62// CHECK: R_AARCH64_ADR_PREL_PG_HI21 hiddenvar
63// CHECK: R_AARCH64_ADD_ABS_LO12_NC hiddenvar
64
65	.globl	get_func
66	.type	get_func,@function
67get_func:                               // @get_func
68	.cfi_startproc
69// BB#0:
70	adrp	x0, :got:get_func
71	ldr	x0, [x0, #:got_lo12:get_func]
72	ret
73.Ltmp4:
74	.size	get_func, .Ltmp4-get_func
75	.cfi_endproc
76
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
81
82	.type	var,@object             // @var
83	.bss
84	.globl	var
85	.align	2
86var:
87	.word	0                       // 0x0
88	.size	var, 4
89
90	.hidden	hiddenvar               // @hiddenvar
91	.type	hiddenvar,@object
92	.globl	hiddenvar
93	.align	2
94hiddenvar:
95	.word	0                       // 0x0
96	.size	hiddenvar, 4
97
98
99