99 lines · plain
1// RUN: llvm-mc -triple=aarch64-none-linux-gnu -filetype=obj %s -o -| llvm-objdump -r - | FileCheck %s2 3// CHECK: RELOCATION RECORDS FOR [.text]4 5 .file "/home/espindola/llvm/llvm/test/CodeGen/AArch64/basic-pic.ll"6 .text7 .globl get_globalvar8 .type get_globalvar,@function9get_globalvar: // @get_globalvar10 .cfi_startproc11// %bb.0:12 adrp x0, :got:var13 ldr x0, [x0, #:got_lo12:var]14 ldr w0, [x0]15 ret16.Ltmp0:17 .size get_globalvar, .Ltmp0-get_globalvar18 .cfi_endproc19 20// CHECK: R_AARCH64_ADR_GOT_PAGE var21// CHECK: R_AARCH64_LD64_GOT_LO12_NC var22 23 .globl get_globalvaraddr24 .type get_globalvaraddr,@function25get_globalvaraddr: // @get_globalvaraddr26 .cfi_startproc27// %bb.0:28 adrp x0, :got:var29 ldr x0, [x0, #:got_lo12:var]30 ret31.Ltmp1:32 .size get_globalvaraddr, .Ltmp1-get_globalvaraddr33 .cfi_endproc34// CHECK: R_AARCH64_ADR_GOT_PAGE var35// CHECK: R_AARCH64_LD64_GOT_LO12_NC var36 37 .globl get_hiddenvar38 .type get_hiddenvar,@function39get_hiddenvar: // @get_hiddenvar40 .cfi_startproc41// %bb.0:42 adrp x0, hiddenvar43 ldr w0, [x0, #:lo12:hiddenvar]44 ret45.Ltmp2:46 .size get_hiddenvar, .Ltmp2-get_hiddenvar47 .cfi_endproc48// CHECK: R_AARCH64_ADR_PREL_PG_HI21 hiddenvar49// CHECK: R_AARCH64_LDST32_ABS_LO12_NC hiddenvar50 51 .globl get_hiddenvaraddr52 .type get_hiddenvaraddr,@function53get_hiddenvaraddr: // @get_hiddenvaraddr54 .cfi_startproc55// %bb.0:56 adrp x0, hiddenvar57 add x0, x0, #:lo12:hiddenvar58 ret59.Ltmp3:60 .size get_hiddenvaraddr, .Ltmp3-get_hiddenvaraddr61 .cfi_endproc62// CHECK: R_AARCH64_ADR_PREL_PG_HI21 hiddenvar63// CHECK: R_AARCH64_ADD_ABS_LO12_NC hiddenvar64 65 .globl get_func66 .type get_func,@function67get_func: // @get_func68 .cfi_startproc69// %bb.0:70 adrp x0, :got:get_func71 ldr x0, [x0, #:got_lo12:get_func]72 ret73.Ltmp4:74 .size get_func, .Ltmp4-get_func75 .cfi_endproc76 77// Particularly important that the ADRP gets a relocation, LLVM tends to think78// it can relax it because it knows where get_func is. It can't!79// CHECK: R_AARCH64_ADR_GOT_PAGE get_func80// CHECK: R_AARCH64_LD64_GOT_LO12_NC get_func81 82 .type var,@object // @var83 .bss84 .globl var85 .align 286var:87 .word 0 // 0x088 .size var, 489 90 .hidden hiddenvar // @hiddenvar91 .type hiddenvar,@object92 .globl hiddenvar93 .align 294hiddenvar:95 .word 0 // 0x096 .size hiddenvar, 497 98 99