1*9880d681SAndroid Build Coastguard Worker// Verify the .fix data section conveys the right offsets and the right relocations 2*9880d681SAndroid Build Coastguard Worker// RUN: llvm-mc -filetype=obj -triple x86_64-pc-win32 %s -o - | llvm-readobj -relocations -expand-relocs -sections -section-data | FileCheck %s --check-prefix=READOBJ 3*9880d681SAndroid Build Coastguard Worker 4*9880d681SAndroid Build Coastguard Worker .text 5*9880d681SAndroid Build Coastguard Worker .section .rdata,"dr" 6*9880d681SAndroid Build Coastguard Worker .globl g1 # @g1 7*9880d681SAndroid Build Coastguard Worker .align 4 8*9880d681SAndroid Build Coastguard Workerg1: 9*9880d681SAndroid Build Coastguard Worker .long 1 # 0x1 10*9880d681SAndroid Build Coastguard Worker 11*9880d681SAndroid Build Coastguard Worker .globl g2 # @g2 12*9880d681SAndroid Build Coastguard Worker .align 4 13*9880d681SAndroid Build Coastguard Workerg2: 14*9880d681SAndroid Build Coastguard Worker .long 2 # 0x2 15*9880d681SAndroid Build Coastguard Worker 16*9880d681SAndroid Build Coastguard Worker .globl g3 # @g3 17*9880d681SAndroid Build Coastguard Worker .align 4 18*9880d681SAndroid Build Coastguard Workerg3: 19*9880d681SAndroid Build Coastguard Worker .long 3 # 0x3 20*9880d681SAndroid Build Coastguard Worker 21*9880d681SAndroid Build Coastguard Worker .globl g4 # @g4 22*9880d681SAndroid Build Coastguard Worker .align 4 23*9880d681SAndroid Build Coastguard Workerg4: 24*9880d681SAndroid Build Coastguard Worker .long 4 # 0x4 25*9880d681SAndroid Build Coastguard Worker 26*9880d681SAndroid Build Coastguard Worker .section .fix,"dw" 27*9880d681SAndroid Build Coastguard Worker .globl t1 # @t1 28*9880d681SAndroid Build Coastguard Worker .align 8 29*9880d681SAndroid Build Coastguard Workert1: 30*9880d681SAndroid Build Coastguard Worker .quad (g3-t1)+4 31*9880d681SAndroid Build Coastguard Worker 32*9880d681SAndroid Build Coastguard Worker .globl t2 # @t2 33*9880d681SAndroid Build Coastguard Worker .align 8 34*9880d681SAndroid Build Coastguard Workert2: 35*9880d681SAndroid Build Coastguard Worker .quad g3-t2 36*9880d681SAndroid Build Coastguard Worker 37*9880d681SAndroid Build Coastguard Worker .globl t3 # @t3 38*9880d681SAndroid Build Coastguard Worker .align 8 39*9880d681SAndroid Build Coastguard Workert3: 40*9880d681SAndroid Build Coastguard Worker .quad (g3-t3)-4 41*9880d681SAndroid Build Coastguard Worker 42*9880d681SAndroid Build Coastguard Worker .globl t4 # @t4 43*9880d681SAndroid Build Coastguard Worker .align 4 44*9880d681SAndroid Build Coastguard Workert4: 45*9880d681SAndroid Build Coastguard Worker .long g3-t4 46*9880d681SAndroid Build Coastguard Worker 47*9880d681SAndroid Build Coastguard Worker .globl t5 # @t5 48*9880d681SAndroid Build Coastguard Worker .align 4 49*9880d681SAndroid Build Coastguard Workert5: 50*9880d681SAndroid Build Coastguard Worker .long g3@IMGREL 51*9880d681SAndroid Build Coastguard Worker 52*9880d681SAndroid Build Coastguard Worker .globl t6 # @t6 53*9880d681SAndroid Build Coastguard Worker .align 16 54*9880d681SAndroid Build Coastguard Workert6: 55*9880d681SAndroid Build Coastguard Worker .ascii "\001\002" 56*9880d681SAndroid Build Coastguard Worker .zero 6 57*9880d681SAndroid Build Coastguard Worker .quad 256 # 0x100 58*9880d681SAndroid Build Coastguard Worker .long g3-(t6+16) 59*9880d681SAndroid Build Coastguard Worker .zero 4 60*9880d681SAndroid Build Coastguard Worker 61*9880d681SAndroid Build Coastguard Worker 62*9880d681SAndroid Build Coastguard Worker// READOBJ: Section { 63*9880d681SAndroid Build Coastguard Worker// READOBJ: Number: 5 64*9880d681SAndroid Build Coastguard Worker// READOBJ: Name: .fix (2E 66 69 78 00 00 00 00) 65*9880d681SAndroid Build Coastguard Worker// READOBJ: VirtualSize: 0x0 66*9880d681SAndroid Build Coastguard Worker// READOBJ: VirtualAddress: 0x0 67*9880d681SAndroid Build Coastguard Worker// READOBJ: RawDataSize: 56 68*9880d681SAndroid Build Coastguard Worker// READOBJ: PointerToRawData: 0xEC 69*9880d681SAndroid Build Coastguard Worker// READOBJ: PointerToRelocations: 0x124 70*9880d681SAndroid Build Coastguard Worker// READOBJ: PointerToLineNumbers: 0x0 71*9880d681SAndroid Build Coastguard Worker// READOBJ: RelocationCount: 6 72*9880d681SAndroid Build Coastguard Worker// READOBJ: LineNumberCount: 0 73*9880d681SAndroid Build Coastguard Worker// READOBJ: Characteristics [ (0xC0500040) 74*9880d681SAndroid Build Coastguard Worker// READOBJ: IMAGE_SCN_ALIGN_16BYTES (0x500000) 75*9880d681SAndroid Build Coastguard Worker// READOBJ: IMAGE_SCN_CNT_INITIALIZED_DATA (0x40) 76*9880d681SAndroid Build Coastguard Worker// READOBJ: IMAGE_SCN_MEM_READ (0x40000000) 77*9880d681SAndroid Build Coastguard Worker// READOBJ: IMAGE_SCN_MEM_WRITE (0x80000000) 78*9880d681SAndroid Build Coastguard Worker// READOBJ: ] 79*9880d681SAndroid Build Coastguard Worker// READOBJ: SectionData ( 80*9880d681SAndroid Build Coastguard Worker// READOBJ: 0000: 10000000 00000000 0C000000 00000000 |................| 81*9880d681SAndroid Build Coastguard Worker// READOBJ: 0010: 08000000 00000000 0C000000 00000000 |................| 82*9880d681SAndroid Build Coastguard Worker// READOBJ: 0020: 01020000 00000000 00010000 00000000 |................| 83*9880d681SAndroid Build Coastguard Worker// READOBJ: 0030: 0C000000 00000000 |........| 84*9880d681SAndroid Build Coastguard Worker// READOBJ: ) 85*9880d681SAndroid Build Coastguard Worker// READOBJ: } 86*9880d681SAndroid Build Coastguard Worker// READOBJ: ] 87*9880d681SAndroid Build Coastguard Worker// READOBJ: Relocations [ 88*9880d681SAndroid Build Coastguard Worker// READOBJ: Section (5) .fix { 89*9880d681SAndroid Build Coastguard Worker// READOBJ: Relocation { 90*9880d681SAndroid Build Coastguard Worker// READOBJ: Offset: 0x0 91*9880d681SAndroid Build Coastguard Worker// READOBJ: Type: IMAGE_REL_AMD64_REL32 (4) 92*9880d681SAndroid Build Coastguard Worker// READOBJ: Symbol: .rdata 93*9880d681SAndroid Build Coastguard Worker// READOBJ: } 94*9880d681SAndroid Build Coastguard Worker// READOBJ: Relocation { 95*9880d681SAndroid Build Coastguard Worker// READOBJ: Offset: 0x8 96*9880d681SAndroid Build Coastguard Worker// READOBJ: Type: IMAGE_REL_AMD64_REL32 (4) 97*9880d681SAndroid Build Coastguard Worker// READOBJ: Symbol: .rdata 98*9880d681SAndroid Build Coastguard Worker// READOBJ: } 99*9880d681SAndroid Build Coastguard Worker// READOBJ: Relocation { 100*9880d681SAndroid Build Coastguard Worker// READOBJ: Offset: 0x10 101*9880d681SAndroid Build Coastguard Worker// READOBJ: Type: IMAGE_REL_AMD64_REL32 (4) 102*9880d681SAndroid Build Coastguard Worker// READOBJ: Symbol: .rdata 103*9880d681SAndroid Build Coastguard Worker// READOBJ: } 104*9880d681SAndroid Build Coastguard Worker// READOBJ: Relocation { 105*9880d681SAndroid Build Coastguard Worker// READOBJ: Offset: 0x18 106*9880d681SAndroid Build Coastguard Worker// READOBJ: Type: IMAGE_REL_AMD64_REL32 (4) 107*9880d681SAndroid Build Coastguard Worker// READOBJ: Symbol: .rdata 108*9880d681SAndroid Build Coastguard Worker// READOBJ: } 109*9880d681SAndroid Build Coastguard Worker// READOBJ: Relocation { 110*9880d681SAndroid Build Coastguard Worker// READOBJ: Offset: 0x1C 111*9880d681SAndroid Build Coastguard Worker// READOBJ: Type: IMAGE_REL_AMD64_ADDR32NB (3) 112*9880d681SAndroid Build Coastguard Worker// READOBJ: Symbol: g3 113*9880d681SAndroid Build Coastguard Worker// READOBJ: } 114*9880d681SAndroid Build Coastguard Worker// READOBJ: Relocation { 115*9880d681SAndroid Build Coastguard Worker// READOBJ: Offset: 0x30 116*9880d681SAndroid Build Coastguard Worker// READOBJ: Type: IMAGE_REL_AMD64_REL32 (4) 117*9880d681SAndroid Build Coastguard Worker// READOBJ: Symbol: .rdata 118*9880d681SAndroid Build Coastguard Worker// READOBJ: } 119