xref: /aosp_15_r20/external/llvm/test/MC/COFF/symbol-fragment-offset.s (revision 9880d6810fe72a1726cb53787c6711e909410d58)
1*9880d681SAndroid Build Coastguard Worker// The purpose of this test is to see if the COFF object writer is emitting the
2*9880d681SAndroid Build Coastguard Worker// proper relocations for multiple pieces of data in a single data fragment.
3*9880d681SAndroid Build Coastguard Worker
4*9880d681SAndroid Build Coastguard Worker// RUN: llvm-mc -filetype=obj -triple i686-pc-win32 %s | llvm-readobj -h -s -sr -sd -t | FileCheck %s
5*9880d681SAndroid Build Coastguard Worker
6*9880d681SAndroid Build Coastguard Worker.def	 _main;
7*9880d681SAndroid Build Coastguard Worker	.scl	2;
8*9880d681SAndroid Build Coastguard Worker	.type	32;
9*9880d681SAndroid Build Coastguard Worker	.endef
10*9880d681SAndroid Build Coastguard Worker	.text
11*9880d681SAndroid Build Coastguard Worker	.globl	_main
12*9880d681SAndroid Build Coastguard Worker	.align	16, 0x90
13*9880d681SAndroid Build Coastguard Worker_main:                                  # @main
14*9880d681SAndroid Build Coastguard Worker# BB#0:                                 # %entry
15*9880d681SAndroid Build Coastguard Worker	subl	$4, %esp
16*9880d681SAndroid Build Coastguard Worker	movl	$L_.str0, (%esp)
17*9880d681SAndroid Build Coastguard Worker	calll	_printf
18*9880d681SAndroid Build Coastguard Worker	movl	$L_.str1, (%esp)
19*9880d681SAndroid Build Coastguard Worker	calll	_puts
20*9880d681SAndroid Build Coastguard Worker	movl	$L_.str2, (%esp)
21*9880d681SAndroid Build Coastguard Worker	calll	_puts
22*9880d681SAndroid Build Coastguard Worker	xorl	%eax, %eax
23*9880d681SAndroid Build Coastguard Worker	addl	$4, %esp
24*9880d681SAndroid Build Coastguard Worker	ret
25*9880d681SAndroid Build Coastguard Worker
26*9880d681SAndroid Build Coastguard Worker	.data
27*9880d681SAndroid Build Coastguard WorkerL_.str0:                                # @.str0
28*9880d681SAndroid Build Coastguard Worker	.asciz	 "Hello "
29*9880d681SAndroid Build Coastguard Worker
30*9880d681SAndroid Build Coastguard WorkerL_.str1:                                # @.str1
31*9880d681SAndroid Build Coastguard Worker	.asciz	 "World!"
32*9880d681SAndroid Build Coastguard Worker
33*9880d681SAndroid Build Coastguard Worker	.align	16                      # @.str2
34*9880d681SAndroid Build Coastguard WorkerL_.str2:
35*9880d681SAndroid Build Coastguard Worker	.asciz	 "I'm The Last Line."
36*9880d681SAndroid Build Coastguard Worker
37*9880d681SAndroid Build Coastguard Worker// CHECK: {
38*9880d681SAndroid Build Coastguard Worker// CHECK:   Machine:                   IMAGE_FILE_MACHINE_I386 (0x14C)
39*9880d681SAndroid Build Coastguard Worker// CHECK:   SectionCount:              3
40*9880d681SAndroid Build Coastguard Worker// CHECK:   TimeDateStamp:             {{[0-9]+}}
41*9880d681SAndroid Build Coastguard Worker// CHECK:   PointerToSymbolTable:      0x{{[0-9A-F]+}}
42*9880d681SAndroid Build Coastguard Worker// CHECK:   SymbolCount:               9
43*9880d681SAndroid Build Coastguard Worker// CHECK:   OptionalHeaderSize:        0
44*9880d681SAndroid Build Coastguard Worker// CHECK:   Characteristics [ (0x0)
45*9880d681SAndroid Build Coastguard Worker// CHECK:   ]
46*9880d681SAndroid Build Coastguard Worker// CHECK: }
47*9880d681SAndroid Build Coastguard Worker// CHECK: Sections [
48*9880d681SAndroid Build Coastguard Worker// CHECK:   Section {
49*9880d681SAndroid Build Coastguard Worker// CHECK:     Number:                    1
50*9880d681SAndroid Build Coastguard Worker// CHECK:     Name:                      .text
51*9880d681SAndroid Build Coastguard Worker// CHECK:     VirtualSize:               0
52*9880d681SAndroid Build Coastguard Worker// CHECK:     VirtualAddress:            0
53*9880d681SAndroid Build Coastguard Worker// CHECK:     RawDataSize:               {{[0-9]+}}
54*9880d681SAndroid Build Coastguard Worker// CHECK:     PointerToRawData:          0x{{[0-9A-F]+}}
55*9880d681SAndroid Build Coastguard Worker// CHECK:     PointerToRelocations:      0x{{[0-9A-F]+}}
56*9880d681SAndroid Build Coastguard Worker// CHECK:     PointerToLineNumbers:      0x0
57*9880d681SAndroid Build Coastguard Worker// CHECK:     RelocationCount:           6
58*9880d681SAndroid Build Coastguard Worker// CHECK:     LineNumberCount:           0
59*9880d681SAndroid Build Coastguard Worker// CHECK:     Characteristics [ (0x60500020)
60*9880d681SAndroid Build Coastguard Worker// CHECK:       IMAGE_SCN_ALIGN_16BYTES
61*9880d681SAndroid Build Coastguard Worker// CHECK:       IMAGE_SCN_CNT_CODE
62*9880d681SAndroid Build Coastguard Worker// CHECK:       IMAGE_SCN_MEM_EXECUTE
63*9880d681SAndroid Build Coastguard Worker// CHECK:       IMAGE_SCN_MEM_READ
64*9880d681SAndroid Build Coastguard Worker// CHECK:     ]
65*9880d681SAndroid Build Coastguard Worker// CHECK:     Relocations [
66*9880d681SAndroid Build Coastguard Worker// CHECK:       0x6  IMAGE_REL_I386_DIR32 .data
67*9880d681SAndroid Build Coastguard Worker// CHECK:       0xB  IMAGE_REL_I386_REL32 _printf
68*9880d681SAndroid Build Coastguard Worker// CHECK:       0x12 IMAGE_REL_I386_DIR32 .data
69*9880d681SAndroid Build Coastguard Worker// CHECK:       0x17 IMAGE_REL_I386_REL32 _puts
70*9880d681SAndroid Build Coastguard Worker// CHECK:       0x1E IMAGE_REL_I386_DIR32 .data
71*9880d681SAndroid Build Coastguard Worker// CHECK:       0x23 IMAGE_REL_I386_REL32 _puts
72*9880d681SAndroid Build Coastguard Worker// CHECK:     ]
73*9880d681SAndroid Build Coastguard Worker// CHECK:     SectionData (
74*9880d681SAndroid Build Coastguard Worker// CHECK:       0000: 83EC04C7 04240000 0000E800 000000C7 |.....$..........|
75*9880d681SAndroid Build Coastguard Worker// CHECK:       0010: 04240700 0000E800 000000C7 04241000 |.$...........$..|
76*9880d681SAndroid Build Coastguard Worker// CHECK:       0020: 0000E800 00000031 C083C404 C3       |.......1.....|
77*9880d681SAndroid Build Coastguard Worker// CHECK:     )
78*9880d681SAndroid Build Coastguard Worker// CHECK:   }
79*9880d681SAndroid Build Coastguard Worker// CHECK:   Section {
80*9880d681SAndroid Build Coastguard Worker// CHECK:     Number:                    2
81*9880d681SAndroid Build Coastguard Worker// CHECK:     Name:                      .data
82*9880d681SAndroid Build Coastguard Worker// CHECK:     VirtualSize:               0
83*9880d681SAndroid Build Coastguard Worker// CHECK:     VirtualAddress:            0
84*9880d681SAndroid Build Coastguard Worker// CHECK:     RawDataSize:               {{[0-9]+}}
85*9880d681SAndroid Build Coastguard Worker// CHECK:     PointerToRawData:          0x{{[0-9A-F]+}}
86*9880d681SAndroid Build Coastguard Worker// CHECK:     PointerToRelocations:      0x0
87*9880d681SAndroid Build Coastguard Worker// CHECK:     PointerToLineNumbers:      0x0
88*9880d681SAndroid Build Coastguard Worker// CHECK:     RelocationCount:           0
89*9880d681SAndroid Build Coastguard Worker// CHECK:     LineNumberCount:           0
90*9880d681SAndroid Build Coastguard Worker// CHECK:     Characteristics [ (0xC0500040)
91*9880d681SAndroid Build Coastguard Worker// CHECK:       IMAGE_SCN_ALIGN_16BYTES
92*9880d681SAndroid Build Coastguard Worker// CHECK:       IMAGE_SCN_CNT_INITIALIZED_DATA
93*9880d681SAndroid Build Coastguard Worker// CHECK:       IMAGE_SCN_MEM_READ
94*9880d681SAndroid Build Coastguard Worker// CHECK:       IMAGE_SCN_MEM_WRITE
95*9880d681SAndroid Build Coastguard Worker// CHECK:     Relocations [
96*9880d681SAndroid Build Coastguard Worker// CHECK:     ]
97*9880d681SAndroid Build Coastguard Worker// CHECK:     SectionData (
98*9880d681SAndroid Build Coastguard Worker// CHECK:       0000: 48656C6C 6F200057 6F726C64 21000000 |Hello .World!...|
99*9880d681SAndroid Build Coastguard Worker// CHECK:       0010: 49276D20 54686520 4C617374 204C696E |I'm The Last Lin|
100*9880d681SAndroid Build Coastguard Worker// CHECK:       0020: 652E00                              |e..|
101*9880d681SAndroid Build Coastguard Worker// CHECK:     )
102*9880d681SAndroid Build Coastguard Worker// CHECK:   }
103*9880d681SAndroid Build Coastguard Worker// CHECK: ]
104*9880d681SAndroid Build Coastguard Worker// CHECK: Symbols [
105*9880d681SAndroid Build Coastguard Worker// CHECK:   Symbol {
106*9880d681SAndroid Build Coastguard Worker// CHECK:     Name:                      .text
107*9880d681SAndroid Build Coastguard Worker// CHECK:     Value:                     0
108*9880d681SAndroid Build Coastguard Worker// CHECK:     Section:                   .text
109*9880d681SAndroid Build Coastguard Worker// CHECK:     BaseType:                  Null
110*9880d681SAndroid Build Coastguard Worker// CHECK:     ComplexType:               Null
111*9880d681SAndroid Build Coastguard Worker// CHECK:     StorageClass:              Static
112*9880d681SAndroid Build Coastguard Worker// CHECK:     AuxSymbolCount:            1
113*9880d681SAndroid Build Coastguard Worker// CHECK:     AuxSectionDef {
114*9880d681SAndroid Build Coastguard Worker// CHECK:       Length: 45
115*9880d681SAndroid Build Coastguard Worker// CHECK:       RelocationCount: 6
116*9880d681SAndroid Build Coastguard Worker// CHECK:       LineNumberCount: 0
117*9880d681SAndroid Build Coastguard Worker// CHECK:       Checksum: 0xDED1DC2
118*9880d681SAndroid Build Coastguard Worker// CHECK:       Number: 1
119*9880d681SAndroid Build Coastguard Worker// CHECK:       Selection: 0x0
120*9880d681SAndroid Build Coastguard Worker// CHECK:     }
121*9880d681SAndroid Build Coastguard Worker// CHECK:   }
122*9880d681SAndroid Build Coastguard Worker// CHECK:   Symbol {
123*9880d681SAndroid Build Coastguard Worker// CHECK:     Name:                      .data
124*9880d681SAndroid Build Coastguard Worker// CHECK:     Value:                     0
125*9880d681SAndroid Build Coastguard Worker// CHECK:     Section:                   .data
126*9880d681SAndroid Build Coastguard Worker// CHECK:     BaseType:                  Null
127*9880d681SAndroid Build Coastguard Worker// CHECK:     ComplexType:               Null
128*9880d681SAndroid Build Coastguard Worker// CHECK:     StorageClass:              Static
129*9880d681SAndroid Build Coastguard Worker// CHECK:     AuxSymbolCount:            1
130*9880d681SAndroid Build Coastguard Worker// CHECK:     AuxSectionDef {
131*9880d681SAndroid Build Coastguard Worker// CHECK:       Length: 35
132*9880d681SAndroid Build Coastguard Worker// CHECK:       RelocationCount: 0
133*9880d681SAndroid Build Coastguard Worker// CHECK:       LineNumberCount: 0
134*9880d681SAndroid Build Coastguard Worker// CHECK:       Checksum: 0xB0A4C21
135*9880d681SAndroid Build Coastguard Worker// CHECK:       Number: 2
136*9880d681SAndroid Build Coastguard Worker// CHECK:       Selection: 0x0
137*9880d681SAndroid Build Coastguard Worker// CHECK:     }
138*9880d681SAndroid Build Coastguard Worker// CHECK:   }
139*9880d681SAndroid Build Coastguard Worker// CHECK:   Symbol {
140*9880d681SAndroid Build Coastguard Worker// CHECK:     Name:                      _main
141*9880d681SAndroid Build Coastguard Worker// CHECK:     Value:                     0
142*9880d681SAndroid Build Coastguard Worker// CHECK:     Section:                   .text
143*9880d681SAndroid Build Coastguard Worker// CHECK:     BaseType:                  Null
144*9880d681SAndroid Build Coastguard Worker// CHECK:     ComplexType:               Function
145*9880d681SAndroid Build Coastguard Worker// CHECK:     StorageClass:              External
146*9880d681SAndroid Build Coastguard Worker// CHECK:     AuxSymbolCount:            0
147*9880d681SAndroid Build Coastguard Worker// CHECK:   }
148*9880d681SAndroid Build Coastguard Worker// CHECK:   Symbol {
149*9880d681SAndroid Build Coastguard Worker// CHECK:     Name:                      _printf
150*9880d681SAndroid Build Coastguard Worker// CHECK:     Value:                     0
151*9880d681SAndroid Build Coastguard Worker// CHECK:     Section:                   IMAGE_SYM_UNDEFINED (0)
152*9880d681SAndroid Build Coastguard Worker// CHECK:     BaseType:                  Null
153*9880d681SAndroid Build Coastguard Worker// CHECK:     ComplexType:               Null
154*9880d681SAndroid Build Coastguard Worker// CHECK:     StorageClass:              External
155*9880d681SAndroid Build Coastguard Worker// CHECK:     AuxSymbolCount:            0
156*9880d681SAndroid Build Coastguard Worker// CHECK:   }
157*9880d681SAndroid Build Coastguard Worker// CHECK:   Symbol {
158*9880d681SAndroid Build Coastguard Worker// CHECK:     Name:                      _puts
159*9880d681SAndroid Build Coastguard Worker// CHECK:     Value:                     0
160*9880d681SAndroid Build Coastguard Worker// CHECK:     Section:                   IMAGE_SYM_UNDEFINED (0)
161*9880d681SAndroid Build Coastguard Worker// CHECK:     BaseType:                  Null
162*9880d681SAndroid Build Coastguard Worker// CHECK:     ComplexType:               Null
163*9880d681SAndroid Build Coastguard Worker// CHECK:     StorageClass:              External
164*9880d681SAndroid Build Coastguard Worker// CHECK:     AuxSymbolCount:            0
165*9880d681SAndroid Build Coastguard Worker// CHECK:   }
166*9880d681SAndroid Build Coastguard Worker// CHECK: ]
167