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