1*9880d681SAndroid Build Coastguard Worker; RUN: llvm-mc -n -triple arm64-apple-darwin10 %s -filetype=obj -o - | llvm-readobj -r --expand-relocs | FileCheck %s 2*9880d681SAndroid Build Coastguard Worker 3*9880d681SAndroid Build Coastguard Worker .text 4*9880d681SAndroid Build Coastguard Worker_fred: 5*9880d681SAndroid Build Coastguard Worker bl _func 6*9880d681SAndroid Build Coastguard Worker bl _func + 20 7*9880d681SAndroid Build Coastguard Worker 8*9880d681SAndroid Build Coastguard Worker adrp x3, _data@page 9*9880d681SAndroid Build Coastguard Worker ldr w2, [x3, _data@pageoff] 10*9880d681SAndroid Build Coastguard Worker 11*9880d681SAndroid Build Coastguard Worker add x3, x3, _data@pageoff + 4 12*9880d681SAndroid Build Coastguard Worker 13*9880d681SAndroid Build Coastguard Worker adrp x3, _data@page+1 14*9880d681SAndroid Build Coastguard Worker ldr w2, [x3, _data@pageoff + 4] 15*9880d681SAndroid Build Coastguard Worker 16*9880d681SAndroid Build Coastguard Worker adrp x3, _data_ext@gotpage 17*9880d681SAndroid Build Coastguard Worker ldr w2, [x3, _data_ext@gotpageoff] 18*9880d681SAndroid Build Coastguard Worker adrp x0, L_.str@PAGE 19*9880d681SAndroid Build Coastguard Worker 20*9880d681SAndroid Build Coastguard Worker .data 21*9880d681SAndroid Build Coastguard Worker_data: 22*9880d681SAndroid Build Coastguard Worker .quad _foo 23*9880d681SAndroid Build Coastguard Worker .quad _foo + 4 24*9880d681SAndroid Build Coastguard Worker .quad _foo - _bar 25*9880d681SAndroid Build Coastguard Worker .quad _foo - _bar + 4 26*9880d681SAndroid Build Coastguard Worker 27*9880d681SAndroid Build Coastguard Worker .long _foo - _bar 28*9880d681SAndroid Build Coastguard Worker 29*9880d681SAndroid Build Coastguard Worker .quad _foo@got 30*9880d681SAndroid Build Coastguard Worker .long _foo@got - . 31*9880d681SAndroid Build Coastguard Worker 32*9880d681SAndroid Build Coastguard Worker .section __TEXT,__cstring,cstring_literals 33*9880d681SAndroid Build Coastguard WorkerL_.str: 34*9880d681SAndroid Build Coastguard Worker .asciz "foo" 35*9880d681SAndroid Build Coastguard Worker 36*9880d681SAndroid Build Coastguard Worker 37*9880d681SAndroid Build Coastguard Worker; CHECK: Relocations [ 38*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: Section __text { 39*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: Relocation { 40*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: Offset: 0x24 41*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: PCRel: 1 42*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: Length: 2 43*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: Type: ARM64_RELOC_PAGE21 (3) 44*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: Symbol: L_.str 45*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: } 46*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: Relocation { 47*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: Offset: 0x20 48*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: PCRel: 0 49*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: Length: 2 50*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: Type: ARM64_RELOC_GOT_LOAD_PAGEOFF12 (6) 51*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: Symbol: _data_ext 52*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: } 53*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: Relocation { 54*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: Offset: 0x1C 55*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: PCRel: 1 56*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: Length: 2 57*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: Type: ARM64_RELOC_GOT_LOAD_PAGE21 (5) 58*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: Symbol: _data_ext 59*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: } 60*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: Relocation { 61*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: Offset: 0x18 62*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: PCRel: 0 63*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: Length: 2 64*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: Type: ARM64_RELOC_ADDEND (10) 65*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: Section: - (4) 66*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: } 67*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: Relocation { 68*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: Offset: 0x18 69*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: PCRel: 0 70*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: Length: 2 71*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: Type: ARM64_RELOC_PAGEOFF12 (4) 72*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: Symbol: _data 73*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: } 74*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: Relocation { 75*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: Offset: 0x14 76*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: PCRel: 0 77*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: Length: 2 78*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: Type: ARM64_RELOC_ADDEND (10) 79*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: Section: __text 80*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: } 81*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: Relocation { 82*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: Offset: 0x14 83*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: PCRel: 1 84*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: Length: 2 85*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: Type: ARM64_RELOC_PAGE21 (3) 86*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: Symbol: _data 87*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: } 88*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: Relocation { 89*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: Offset: 0x10 90*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: PCRel: 0 91*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: Length: 2 92*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: Type: ARM64_RELOC_ADDEND (10) 93*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: Section: - (4) 94*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: } 95*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: Relocation { 96*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: Offset: 0x10 97*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: PCRel: 0 98*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: Length: 2 99*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: Type: ARM64_RELOC_PAGEOFF12 (4) 100*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: Symbol: _data 101*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: } 102*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: Relocation { 103*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: Offset: 0xC 104*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: PCRel: 0 105*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: Length: 2 106*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: Type: ARM64_RELOC_PAGEOFF12 (4) 107*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: Symbol: _data 108*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: } 109*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: Relocation { 110*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: Offset: 0x8 111*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: PCRel: 1 112*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: Length: 2 113*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: Type: ARM64_RELOC_PAGE21 (3) 114*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: Symbol: _data 115*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: } 116*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: Relocation { 117*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: Offset: 0x4 118*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: PCRel: 0 119*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: Length: 2 120*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: Type: ARM64_RELOC_ADDEND (10) 121*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: Section: - (20) 122*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: } 123*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: Relocation { 124*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: Offset: 0x4 125*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: PCRel: 1 126*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: Length: 2 127*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: Type: ARM64_RELOC_BRANCH26 (2) 128*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: Symbol: _func 129*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: } 130*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: Relocation { 131*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: Offset: 0x0 132*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: PCRel: 1 133*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: Length: 2 134*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: Type: ARM64_RELOC_BRANCH26 (2) 135*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: Symbol: _func 136*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: } 137*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: } 138*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: Section __data { 139*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: Relocation { 140*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: Offset: 0x2C 141*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: PCRel: 1 142*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: Length: 2 143*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: Type: ARM64_RELOC_POINTER_TO_GOT (7) 144*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: Symbol: _foo 145*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: } 146*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: Relocation { 147*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: Offset: 0x24 148*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: PCRel: 0 149*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: Length: 3 150*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: Type: ARM64_RELOC_POINTER_TO_GOT (7) 151*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: Symbol: _foo 152*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: } 153*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: Relocation { 154*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: Offset: 0x20 155*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: PCRel: 0 156*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: Length: 2 157*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: Type: ARM64_RELOC_SUBTRACTOR (1) 158*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: Symbol: _bar 159*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: } 160*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: Relocation { 161*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: Offset: 0x20 162*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: PCRel: 0 163*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: Length: 2 164*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: Type: ARM64_RELOC_UNSIGNED (0) 165*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: Symbol: _foo 166*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: } 167*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: Relocation { 168*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: Offset: 0x18 169*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: PCRel: 0 170*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: Length: 3 171*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: Type: ARM64_RELOC_SUBTRACTOR (1) 172*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: Symbol: _bar 173*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: } 174*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: Relocation { 175*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: Offset: 0x18 176*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: PCRel: 0 177*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: Length: 3 178*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: Type: ARM64_RELOC_UNSIGNED (0) 179*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: Symbol: _foo 180*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: } 181*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: Relocation { 182*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: Offset: 0x10 183*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: PCRel: 0 184*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: Length: 3 185*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: Type: ARM64_RELOC_SUBTRACTOR (1) 186*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: Symbol: _bar 187*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: } 188*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: Relocation { 189*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: Offset: 0x10 190*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: PCRel: 0 191*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: Length: 3 192*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: Type: ARM64_RELOC_UNSIGNED (0) 193*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: Symbol: _foo 194*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: } 195*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: Relocation { 196*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: Offset: 0x8 197*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: PCRel: 0 198*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: Length: 3 199*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: Type: ARM64_RELOC_UNSIGNED (0) 200*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: Symbol: _foo 201*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: } 202*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: Relocation { 203*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: Offset: 0x0 204*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: PCRel: 0 205*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: Length: 3 206*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: Type: ARM64_RELOC_UNSIGNED (0) 207*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: Symbol: _foo 208*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: } 209*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: } 210*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: ] 211