1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72
|
// RUN: llvm-mc -triple aarch64-windows-msvc -filetype obj -o %t.obj %s
// RUN: llvm-readobj --sections --sd --relocs %t.obj | FileCheck %s
.section nc_sect,"xr"
normal_call:
str x30, [sp, #-16]! // 8-byte Folded Spill
adrp x8, __imp_a
ldr x8, [x8, :lo12:__imp_a]
.Limpcall0:
blr x8
ldr x30, [sp], #16 // 8-byte Folded Reload
ret
.section tc_sect,"xr"
tail_call:
adrp x8, __imp_b
ldr x8, [x8, :lo12:__imp_b]
.Limpcall1:
br x8
.section .impcall,"yi"
.asciz "Imp_Call_V1"
.word 20
.secnum nc_sect
.word 19
.secoffset .Limpcall0
.symidx __imp_a
.word 20
.secnum tc_sect
.word 19
.secoffset .Limpcall1
.symidx __imp_b
// CHECK-LABEL: Name: .impcall (2E 69 6D 70 63 61 6C 6C)
// CHECK-NEXT: VirtualSize: 0x0
// CHECK-NEXT: VirtualAddress: 0x0
// CHECK-NEXT: RawDataSize: 52
// CHECK-NEXT: PointerToRawData: 0x150
// CHECK-NEXT: PointerToRelocations: 0x0
// CHECK-NEXT: PointerToLineNumbers: 0x0
// CHECK-NEXT: RelocationCount: 0
// CHECK-NEXT: LineNumberCount: 0
// CHECK-NEXT: Characteristics [
// CHECK-NEXT: IMAGE_SCN_ALIGN_4BYTES
// CHECK-NEXT: IMAGE_SCN_LNK_INFO
// CHECK-NEXT: ]
// CHECK-NEXT: SectionData (
// CHECK-NEXT: 0000: 496D705F 43616C6C 5F563100 14000000 |Imp_Call_V1.....|
// CHECK-NEXT: 0010:
// CHECK-SAME: [[#%.2X,NCSECT:]]000000
// CHECK-SAME: 13000000
// CHECK-SAME: [[#%.2X,NCOFFSET:]]000000
// CHECK-SAME: [[#%.2X,NCSYM:]]000000
// CHECK-NEXT: 0020:
// CHECK-SAME: 14000000
// CHECK-SAME: [[#%.2X,TCSECT:]]000000
// CHECK-SAME: 13000000
// CHECK-SAME: [[#%.2X,TCOFFSET:]]000000
// CHECK-NEXT: 0030:
// CHECK-SAME: [[#%.2X,TCSYM:]]000000
// CHECK-NEXT: )
// CHECK-LABEL: Relocations [
// CHECK-NEXT: Section ([[#%u,NCSECT]]) nc_sect {
// CHECK-NEXT: 0x[[#%x,NCOFFSET - 8]] IMAGE_REL_ARM64_PAGEBASE_REL21 __imp_a ([[#%u,NCSYM]])
// CHECK-NEXT: 0x[[#%x,NCOFFSET - 4]] IMAGE_REL_ARM64_PAGEOFFSET_12L __imp_a ([[#%u,NCSYM]])
// CHECK-NEXT: }
// CHECK-NEXT: Section ([[#%u,TCSECT]]) tc_sect {
// CHECK-NEXT: 0x[[#%x,TCOFFSET - 8]] IMAGE_REL_ARM64_PAGEBASE_REL21 __imp_b ([[#%u,TCSYM]])
// CHECK-NEXT: 0x[[#%x,TCOFFSET - 4]] IMAGE_REL_ARM64_PAGEOFFSET_12L __imp_b ([[#%u,TCSYM]])
// CHECK-NEXT: }
// CHECK-NEXT: ]
|