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