Update test to use llvm-readobj. NFC.
[oota-llvm.git] / test / MC / AArch64 / basic-pic.s
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
9 get_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
25 get_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
39 get_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
53 get_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
67 get_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
86 var:
87         .word   0                       // 0x0
88         .size   var, 4
89
90         .hidden hiddenvar               // @hiddenvar
91         .type   hiddenvar,@object
92         .globl  hiddenvar
93         .align  2
94 hiddenvar:
95         .word   0                       // 0x0
96         .size   hiddenvar, 4
97
98