xref: /aosp_15_r20/external/llvm/test/MC/COFF/basic-coff.s (revision 9880d6810fe72a1726cb53787c6711e909410d58)
1*9880d681SAndroid Build Coastguard Worker// This test checks that the COFF object emitter works for the most basic
2*9880d681SAndroid Build Coastguard Worker// programs.
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_.str, (%esp)
17*9880d681SAndroid Build Coastguard Worker	call	_printf
18*9880d681SAndroid Build Coastguard Worker	xorl	%eax, %eax
19*9880d681SAndroid Build Coastguard Worker	addl	$4, %esp
20*9880d681SAndroid Build Coastguard Worker	ret
21*9880d681SAndroid Build Coastguard Worker
22*9880d681SAndroid Build Coastguard Worker	.data
23*9880d681SAndroid Build Coastguard WorkerL_.str:                                 # @.str
24*9880d681SAndroid Build Coastguard Worker	.asciz	"Hello World"
25*9880d681SAndroid Build Coastguard Worker
26*9880d681SAndroid Build Coastguard Worker// CHECK: ImageFileHeader {
27*9880d681SAndroid Build Coastguard Worker// CHECK:   Machine: IMAGE_FILE_MACHINE_I386
28*9880d681SAndroid Build Coastguard Worker// CHECK:   SectionCount: 3
29*9880d681SAndroid Build Coastguard Worker// CHECK:   TimeDateStamp: {{[0-9]+}}
30*9880d681SAndroid Build Coastguard Worker// CHECK:   PointerToSymbolTable: 0x{{[0-9A-F]+}}
31*9880d681SAndroid Build Coastguard Worker// CHECK:   SymbolCount: 8
32*9880d681SAndroid Build Coastguard Worker// CHECK:   OptionalHeaderSize: 0
33*9880d681SAndroid Build Coastguard Worker// CHECK:   Characteristics [ (0x0)
34*9880d681SAndroid Build Coastguard Worker// CHECK:   ]
35*9880d681SAndroid Build Coastguard Worker// CHECK: }
36*9880d681SAndroid Build Coastguard Worker// CHECK: Sections [
37*9880d681SAndroid Build Coastguard Worker// CHECK:   Section {
38*9880d681SAndroid Build Coastguard Worker// CHECK:     Number:               [[TextNum:[0-9]+]]
39*9880d681SAndroid Build Coastguard Worker// CHECK:     Name:                 .text
40*9880d681SAndroid Build Coastguard Worker// CHECK:     VirtualSize:          0
41*9880d681SAndroid Build Coastguard Worker// CHECK:     VirtualAddress:       0
42*9880d681SAndroid Build Coastguard Worker// CHECK:     RawDataSize:          {{[0-9]+}}
43*9880d681SAndroid Build Coastguard Worker// CHECK:     PointerToRawData:     0x{{[0-9A-F]+}}
44*9880d681SAndroid Build Coastguard Worker// CHECK:     PointerToRelocations: 0x{{[0-9A-F]+}}
45*9880d681SAndroid Build Coastguard Worker// CHECK:     PointerToLineNumbers: 0x0
46*9880d681SAndroid Build Coastguard Worker// CHECK:     RelocationCount:      2
47*9880d681SAndroid Build Coastguard Worker// CHECK:     LineNumberCount:      0
48*9880d681SAndroid Build Coastguard Worker// CHECK:     Characteristics [ (0x60500020)
49*9880d681SAndroid Build Coastguard Worker// CHECK:       IMAGE_SCN_ALIGN_16BYTES
50*9880d681SAndroid Build Coastguard Worker// CHECK:       IMAGE_SCN_CNT_CODE
51*9880d681SAndroid Build Coastguard Worker// CHECK:       IMAGE_SCN_MEM_EXECUTE
52*9880d681SAndroid Build Coastguard Worker// CHECK:       IMAGE_SCN_MEM_READ
53*9880d681SAndroid Build Coastguard Worker// CHECK:     ]
54*9880d681SAndroid Build Coastguard Worker// CHECK:     Relocations [
55*9880d681SAndroid Build Coastguard Worker// CHECK:       0x{{[0-9A-F]+}} IMAGE_REL_I386_DIR32 .data
56*9880d681SAndroid Build Coastguard Worker// CHECK:       0x{{[0-9A-F]+}} IMAGE_REL_I386_REL32 _printf
57*9880d681SAndroid Build Coastguard Worker// CHECK:     ]
58*9880d681SAndroid Build Coastguard Worker// CHECK:   }
59*9880d681SAndroid Build Coastguard Worker// CHECK:   Section {
60*9880d681SAndroid Build Coastguard Worker// CHECK:     Number:               [[DataNum:[0-9]+]]
61*9880d681SAndroid Build Coastguard Worker// CHECK:     Name:                 .data
62*9880d681SAndroid Build Coastguard Worker// CHECK:     VirtualSize:          0
63*9880d681SAndroid Build Coastguard Worker// CHECK:     VirtualAddress:       0
64*9880d681SAndroid Build Coastguard Worker// CHECK:     RawDataSize:          {{[0-9]+}}
65*9880d681SAndroid Build Coastguard Worker// CHECK:     PointerToRawData:     0x{{[0-9A-F]+}}
66*9880d681SAndroid Build Coastguard Worker// CHECK:     PointerToRelocations: 0x0
67*9880d681SAndroid Build Coastguard Worker// CHECK:     PointerToLineNumbers: 0x0
68*9880d681SAndroid Build Coastguard Worker// CHECK:     RelocationCount:      0
69*9880d681SAndroid Build Coastguard Worker// CHECK:     LineNumberCount:      0
70*9880d681SAndroid Build Coastguard Worker// CHECK:     Characteristics [ (0xC0300040)
71*9880d681SAndroid Build Coastguard Worker// CHECK:       IMAGE_SCN_ALIGN_4BYTES
72*9880d681SAndroid Build Coastguard Worker// CHECK:       IMAGE_SCN_CNT_INITIALIZED_DATA
73*9880d681SAndroid Build Coastguard Worker// CHECK:       IMAGE_SCN_MEM_READ
74*9880d681SAndroid Build Coastguard Worker// CHECK:       IMAGE_SCN_MEM_WRITE
75*9880d681SAndroid Build Coastguard Worker// CHECK:     ]
76*9880d681SAndroid Build Coastguard Worker// CHECK:     Relocations [
77*9880d681SAndroid Build Coastguard Worker// CHECK:     ]
78*9880d681SAndroid Build Coastguard Worker// CHECK:     SectionData (
79*9880d681SAndroid Build Coastguard Worker// CHECK:       0000: 48656C6C 6F20576F 726C6400             |Hello World.|
80*9880d681SAndroid Build Coastguard Worker// CHECK:     )
81*9880d681SAndroid Build Coastguard Worker// CHECK:   }
82*9880d681SAndroid Build Coastguard Worker// CHECK: ]
83*9880d681SAndroid Build Coastguard Worker// CHECK: Symbols [
84*9880d681SAndroid Build Coastguard Worker// CHECK:   Symbol {
85*9880d681SAndroid Build Coastguard Worker// CHECK:     Name:           .text
86*9880d681SAndroid Build Coastguard Worker// CHECK:     Value:          0
87*9880d681SAndroid Build Coastguard Worker// CHECK:     Section:        .text
88*9880d681SAndroid Build Coastguard Worker// CHECK:     BaseType:       Null
89*9880d681SAndroid Build Coastguard Worker// CHECK:     ComplexType:    Null
90*9880d681SAndroid Build Coastguard Worker// CHECK:     StorageClass:   Static
91*9880d681SAndroid Build Coastguard Worker// CHECK:     AuxSymbolCount: 1
92*9880d681SAndroid Build Coastguard Worker// CHECK:     AuxSectionDef {
93*9880d681SAndroid Build Coastguard Worker// CHECK:       Length: 21
94*9880d681SAndroid Build Coastguard Worker// CHECK:       RelocationCount: 2
95*9880d681SAndroid Build Coastguard Worker// CHECK:       LineNumberCount: 0
96*9880d681SAndroid Build Coastguard Worker// CHECK:       Checksum: 0xC6461CBE
97*9880d681SAndroid Build Coastguard Worker// CHECK:       Number: 1
98*9880d681SAndroid Build Coastguard Worker// CHECK:       Selection: 0x0
99*9880d681SAndroid Build Coastguard Worker// CHECK:     }
100*9880d681SAndroid Build Coastguard Worker// CHECK:   }
101*9880d681SAndroid Build Coastguard Worker// CHECK:   Symbol {
102*9880d681SAndroid Build Coastguard Worker// CHECK:     Name:           .data
103*9880d681SAndroid Build Coastguard Worker// CHECK:     Value:          0
104*9880d681SAndroid Build Coastguard Worker// CHECK:     Section:        .data
105*9880d681SAndroid Build Coastguard Worker// CHECK:     BaseType:       Null
106*9880d681SAndroid Build Coastguard Worker// CHECK:     ComplexType:    Null
107*9880d681SAndroid Build Coastguard Worker// CHECK:     StorageClass:   Static
108*9880d681SAndroid Build Coastguard Worker// CHECK:     AuxSymbolCount: 1
109*9880d681SAndroid Build Coastguard Worker// CHECK:     AuxSectionDef {
110*9880d681SAndroid Build Coastguard Worker// CHECK:       Length: 12
111*9880d681SAndroid Build Coastguard Worker// CHECK:       RelocationCount: 0
112*9880d681SAndroid Build Coastguard Worker// CHECK:       LineNumberCount: 0
113*9880d681SAndroid Build Coastguard Worker// CHECK:       Checksum: 0x2B95CA92
114*9880d681SAndroid Build Coastguard Worker// CHECK:       Number: 2
115*9880d681SAndroid Build Coastguard Worker// CHECK:       Selection: 0x0
116*9880d681SAndroid Build Coastguard Worker// CHECK:     }
117*9880d681SAndroid Build Coastguard Worker// CHECK:   }
118*9880d681SAndroid Build Coastguard Worker// CHECK:   Symbol {
119*9880d681SAndroid Build Coastguard Worker// CHECK:     Name:           _main
120*9880d681SAndroid Build Coastguard Worker// CHECK:     Value:          0
121*9880d681SAndroid Build Coastguard Worker// CHECK:     Section:        .text
122*9880d681SAndroid Build Coastguard Worker// CHECK:     BaseType:       Null
123*9880d681SAndroid Build Coastguard Worker// CHECK:     ComplexType:    Function
124*9880d681SAndroid Build Coastguard Worker// CHECK:     StorageClass:   External
125*9880d681SAndroid Build Coastguard Worker// CHECK:     AuxSymbolCount: 0
126*9880d681SAndroid Build Coastguard Worker// CHECK:   }
127*9880d681SAndroid Build Coastguard Worker// CHECK:   Symbol {
128*9880d681SAndroid Build Coastguard Worker// CHECK:     Name:           _printf
129*9880d681SAndroid Build Coastguard Worker// CHECK:     Value:          0
130*9880d681SAndroid Build Coastguard Worker// CHECK:     Section:        IMAGE_SYM_UNDEFINED (0)
131*9880d681SAndroid Build Coastguard Worker// CHECK:     BaseType:       Null
132*9880d681SAndroid Build Coastguard Worker// CHECK:     ComplexType:    Null
133*9880d681SAndroid Build Coastguard Worker// CHECK:     StorageClass:   External
134*9880d681SAndroid Build Coastguard Worker// CHECK:     AuxSymbolCount: 0
135*9880d681SAndroid Build Coastguard Worker// CHECK:   }
136*9880d681SAndroid Build Coastguard Worker// CHECK: ]
137