xref: /aosp_15_r20/external/llvm/test/MC/COFF/cross-section-relative.s (revision 9880d6810fe72a1726cb53787c6711e909410d58)
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