~pali/+junk/llvm-toolchain-3.7

« back to all changes in this revision

Viewing changes to test/MC/AArch64/basic-pic.s

  • Committer: Package Import Robot
  • Author(s): Sylvestre Ledru
  • Date: 2015-07-15 17:51:08 UTC
  • Revision ID: package-import@ubuntu.com-20150715175108-l8mynwovkx4zx697
Tags: upstream-3.7~+rc2
ImportĀ upstreamĀ versionĀ 3.7~+rc2

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
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