]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - test/MC/COFF/symbol-fragment-offset-64.s
Vendor import of llvm RELEASE_350/final tag r216957 (effectively, 3.5.0 release):
[FreeBSD/FreeBSD.git] / test / MC / COFF / symbol-fragment-offset-64.s
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.
3
4 // RUN: llvm-mc -filetype=obj -triple x86_64-pc-win32 %s | llvm-readobj -h -s -sr -sd -t | FileCheck %s
5
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
25
26         .data
27 .L_.str0:                                # @.str0
28         .asciz   "Hello "
29
30 .L_.str1:                                # @.str1
31         .asciz   "World!"
32
33         .align  16                      # @.str2
34 .L_.str2:
35         .asciz   "I'm The Last Line."
36
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: 0x0
118 // CHECK:       Number: 1
119 // CHECK:       Selection: 0x0
120 // CHECK:       Unused: (00 00 00)
121 // CHECK:     }
122 // CHECK:   }
123 // CHECK:   Symbol {
124 // CHECK:     Name:                      .data
125 // CHECK:     Value:                     0
126 // CHECK:     Section:                   .data
127 // CHECK:     BaseType:                  Null
128 // CHECK:     ComplexType:               Null
129 // CHECK:     StorageClass:              Static
130 // CHECK:     AuxSymbolCount:            1
131 // CHECK:     AuxSectionDef {
132 // CHECK:       Length: 35
133 // CHECK:       RelocationCount: 0
134 // CHECK:       LineNumberCount: 0
135 // CHECK:       Checksum: 0x0
136 // CHECK:       Number: 2
137 // CHECK:       Selection: 0x0
138 // CHECK:       Unused: (00 00 00)
139 // CHECK:     }
140 // CHECK:   }
141 // CHECK:   Symbol {
142 // CHECK:     Name:                      _main
143 // CHECK:     Value:                     0
144 // CHECK:     Section:                   .text
145 // CHECK:     BaseType:                  Null
146 // CHECK:     ComplexType:               Function
147 // CHECK:     StorageClass:              External
148 // CHECK:     AuxSymbolCount:            0
149 // CHECK:   }
150 // CHECK:   Symbol {
151 // CHECK:     Name:                      _printf
152 // CHECK:     Value:                     0
153 // CHECK:     Section:                   (0)
154 // CHECK:     BaseType:                  Null
155 // CHECK:     ComplexType:               Null
156 // CHECK:     StorageClass:              External
157 // CHECK:     AuxSymbolCount:            0
158 // CHECK:   }
159 // CHECK:   Symbol {
160 // CHECK:     Name:                      _puts
161 // CHECK:     Value:                     0
162 // CHECK:     Section:                   (0)
163 // CHECK:     BaseType:                  Null
164 // CHECK:     ComplexType:               Null
165 // CHECK:     StorageClass:              External
166 // CHECK:     AuxSymbolCount:            0
167 // CHECK:   }
168 // CHECK: ]