xref: /aosp_15_r20/external/llvm/test/MC/MachO/absolutize.s (revision 9880d6810fe72a1726cb53787c6711e909410d58)
1*9880d681SAndroid Build Coastguard Worker// RUN: llvm-mc -triple i386-apple-darwin9 %s -filetype=obj -o - | llvm-readobj -file-headers -s -sd -r -t -macho-segment -macho-dysymtab -macho-indirect-symbols | FileCheck %s
2*9880d681SAndroid Build Coastguard Worker
3*9880d681SAndroid Build Coastguard Worker_text_a:
4*9880d681SAndroid Build Coastguard Worker        xorl %eax,%eax
5*9880d681SAndroid Build Coastguard Worker_text_b:
6*9880d681SAndroid Build Coastguard Worker        xorl %eax,%eax
7*9880d681SAndroid Build Coastguard WorkerLtext_c:
8*9880d681SAndroid Build Coastguard Worker        xorl %eax,%eax
9*9880d681SAndroid Build Coastguard WorkerLtext_d:
10*9880d681SAndroid Build Coastguard Worker        xorl %eax,%eax
11*9880d681SAndroid Build Coastguard Worker
12*9880d681SAndroid Build Coastguard Worker        movl $(_text_a - _text_b), %eax
13*9880d681SAndroid Build Coastguard WorkerLtext_expr_0 = _text_a - _text_b
14*9880d681SAndroid Build Coastguard Worker        movl $(Ltext_expr_0), %eax
15*9880d681SAndroid Build Coastguard Worker
16*9880d681SAndroid Build Coastguard Worker        movl $(Ltext_c - _text_b), %eax
17*9880d681SAndroid Build Coastguard WorkerLtext_expr_1 = Ltext_c - _text_b
18*9880d681SAndroid Build Coastguard Worker        movl $(Ltext_expr_1), %eax
19*9880d681SAndroid Build Coastguard Worker
20*9880d681SAndroid Build Coastguard Worker        movl $(Ltext_d - Ltext_c), %eax
21*9880d681SAndroid Build Coastguard WorkerLtext_expr_2 = Ltext_d - Ltext_c
22*9880d681SAndroid Build Coastguard Worker        movl $(Ltext_expr_2), %eax
23*9880d681SAndroid Build Coastguard Worker
24*9880d681SAndroid Build Coastguard Worker        movl $(_text_a + Ltext_expr_0), %eax
25*9880d681SAndroid Build Coastguard Worker
26*9880d681SAndroid Build Coastguard Worker        .data
27*9880d681SAndroid Build Coastguard Worker_data_a:
28*9880d681SAndroid Build Coastguard Worker        .long 0
29*9880d681SAndroid Build Coastguard Worker_data_b:
30*9880d681SAndroid Build Coastguard Worker        .long 0
31*9880d681SAndroid Build Coastguard WorkerLdata_c:
32*9880d681SAndroid Build Coastguard Worker        .long 0
33*9880d681SAndroid Build Coastguard WorkerLdata_d:
34*9880d681SAndroid Build Coastguard Worker        .long 0
35*9880d681SAndroid Build Coastguard Worker
36*9880d681SAndroid Build Coastguard Worker        .long _data_a - _data_b
37*9880d681SAndroid Build Coastguard WorkerLdata_expr_0 = _data_a - _data_b
38*9880d681SAndroid Build Coastguard Worker        .long Ldata_expr_0
39*9880d681SAndroid Build Coastguard Worker
40*9880d681SAndroid Build Coastguard Worker        .long Ldata_c - _data_b
41*9880d681SAndroid Build Coastguard WorkerLdata_expr_1 = Ldata_c - _data_b
42*9880d681SAndroid Build Coastguard Worker        .long Ldata_expr_1
43*9880d681SAndroid Build Coastguard Worker
44*9880d681SAndroid Build Coastguard Worker        .long Ldata_d - Ldata_c
45*9880d681SAndroid Build Coastguard WorkerLdata_expr_2 = Ldata_d - Ldata_c
46*9880d681SAndroid Build Coastguard Worker        .long Ldata_expr_2
47*9880d681SAndroid Build Coastguard Worker
48*9880d681SAndroid Build Coastguard Worker        .long _data_a + Ldata_expr_0
49*9880d681SAndroid Build Coastguard Worker
50*9880d681SAndroid Build Coastguard Worker// CHECK: File: <stdin>
51*9880d681SAndroid Build Coastguard Worker// CHECK: Format: Mach-O 32-bit i386
52*9880d681SAndroid Build Coastguard Worker// CHECK: Arch: i386
53*9880d681SAndroid Build Coastguard Worker// CHECK: AddressSize: 32bit
54*9880d681SAndroid Build Coastguard Worker// CHECK: MachHeader {
55*9880d681SAndroid Build Coastguard Worker// CHECK:   Magic: Magic (0xFEEDFACE)
56*9880d681SAndroid Build Coastguard Worker// CHECK:   CpuType: X86 (0x7)
57*9880d681SAndroid Build Coastguard Worker// CHECK:   CpuSubType: CPU_SUBTYPE_I386_ALL (0x3)
58*9880d681SAndroid Build Coastguard Worker// CHECK:   FileType: Relocatable (0x1)
59*9880d681SAndroid Build Coastguard Worker// CHECK:   NumOfLoadCommands: 4
60*9880d681SAndroid Build Coastguard Worker// CHECK:   SizeOfLoadCommands: 312
61*9880d681SAndroid Build Coastguard Worker// CHECK:   Flags [ (0x0)
62*9880d681SAndroid Build Coastguard Worker// CHECK:   ]
63*9880d681SAndroid Build Coastguard Worker// CHECK: }
64*9880d681SAndroid Build Coastguard Worker// CHECK: Sections [
65*9880d681SAndroid Build Coastguard Worker// CHECK:   Section {
66*9880d681SAndroid Build Coastguard Worker// CHECK:     Index: 0
67*9880d681SAndroid Build Coastguard Worker// CHECK:     Name: __text (5F 5F 74 65 78 74 00 00 00 00 00 00 00 00 00 00)
68*9880d681SAndroid Build Coastguard Worker// CHECK:     Segment: __TEXT (5F 5F 54 45 58 54 00 00 00 00 00 00 00 00 00 00)
69*9880d681SAndroid Build Coastguard Worker// CHECK:     Address: 0x0
70*9880d681SAndroid Build Coastguard Worker// CHECK:     Size: 0x2B
71*9880d681SAndroid Build Coastguard Worker// CHECK:     Offset: 340
72*9880d681SAndroid Build Coastguard Worker// CHECK:     Alignment: 0
73*9880d681SAndroid Build Coastguard Worker// CHECK:     RelocationOffset: 0x1AC
74*9880d681SAndroid Build Coastguard Worker// CHECK:     RelocationCount: 3
75*9880d681SAndroid Build Coastguard Worker// CHECK:     Type: 0x0
76*9880d681SAndroid Build Coastguard Worker// CHECK:     Attributes [ (0x800004)
77*9880d681SAndroid Build Coastguard Worker// CHECK:       PureInstructions (0x800000)
78*9880d681SAndroid Build Coastguard Worker// CHECK:       SomeInstructions (0x4)
79*9880d681SAndroid Build Coastguard Worker// CHECK:     ]
80*9880d681SAndroid Build Coastguard Worker// CHECK:     Reserved1: 0x0
81*9880d681SAndroid Build Coastguard Worker// CHECK:     Reserved2: 0x0
82*9880d681SAndroid Build Coastguard Worker// CHECK:     SectionData (
83*9880d681SAndroid Build Coastguard Worker// CHECK:       0000: 31C031C0 31C031C0 B8FEFFFF FFB8FEFF  |1.1.1.1.........|
84*9880d681SAndroid Build Coastguard Worker// CHECK:       0010: FFFFB802 000000B8 02000000 B8020000  |................|
85*9880d681SAndroid Build Coastguard Worker// CHECK:       0020: 00B80200 0000B8FE FFFFFF             |...........|
86*9880d681SAndroid Build Coastguard Worker// CHECK:     )
87*9880d681SAndroid Build Coastguard Worker// CHECK:   }
88*9880d681SAndroid Build Coastguard Worker// CHECK:   Section {
89*9880d681SAndroid Build Coastguard Worker// CHECK:     Index: 1
90*9880d681SAndroid Build Coastguard Worker// CHECK:     Name: __data (5F 5F 64 61 74 61 00 00 00 00 00 00 00 00 00 00)
91*9880d681SAndroid Build Coastguard Worker// CHECK:     Segment: __DATA (5F 5F 44 41 54 41 00 00 00 00 00 00 00 00 00 00)
92*9880d681SAndroid Build Coastguard Worker// CHECK:     Address: 0x2B
93*9880d681SAndroid Build Coastguard Worker// CHECK:     Size: 0x2C
94*9880d681SAndroid Build Coastguard Worker// CHECK:     Offset: 383
95*9880d681SAndroid Build Coastguard Worker// CHECK:     Alignment: 0
96*9880d681SAndroid Build Coastguard Worker// CHECK:     RelocationOffset: 0x1C4
97*9880d681SAndroid Build Coastguard Worker// CHECK:     RelocationCount: 3
98*9880d681SAndroid Build Coastguard Worker// CHECK:     Type: 0x0
99*9880d681SAndroid Build Coastguard Worker// CHECK:     Attributes [ (0x0)
100*9880d681SAndroid Build Coastguard Worker// CHECK:     ]
101*9880d681SAndroid Build Coastguard Worker// CHECK:     Reserved1: 0x0
102*9880d681SAndroid Build Coastguard Worker// CHECK:     Reserved2: 0x0
103*9880d681SAndroid Build Coastguard Worker// CHECK:     SectionData (
104*9880d681SAndroid Build Coastguard Worker// CHECK:       0000: 00000000 00000000 00000000 00000000  |................|
105*9880d681SAndroid Build Coastguard Worker// CHECK:       0010: FCFFFFFF FCFFFFFF 04000000 04000000  |................|
106*9880d681SAndroid Build Coastguard Worker// CHECK:       0020: 04000000 04000000 27000000           |........'...|
107*9880d681SAndroid Build Coastguard Worker// CHECK:     )
108*9880d681SAndroid Build Coastguard Worker// CHECK:   }
109*9880d681SAndroid Build Coastguard Worker// CHECK: ]
110*9880d681SAndroid Build Coastguard Worker// CHECK: Relocations [
111*9880d681SAndroid Build Coastguard Worker// CHECK:   Section __text {
112*9880d681SAndroid Build Coastguard Worker// CHECK:     0x27 0 2 n/a GENERIC_RELOC_VANILLA 1 0x0
113*9880d681SAndroid Build Coastguard Worker// CHECK:     0x9 0 2 n/a GENERIC_RELOC_LOCAL_SECTDIFF 1 0x0
114*9880d681SAndroid Build Coastguard Worker// CHECK:     0x0 0 2 n/a GENERIC_RELOC_PAIR 1 0x2
115*9880d681SAndroid Build Coastguard Worker// CHECK:   }
116*9880d681SAndroid Build Coastguard Worker// CHECK:   Section __data {
117*9880d681SAndroid Build Coastguard Worker// CHECK:     0x28 0 2 n/a GENERIC_RELOC_VANILLA 1 0x2B
118*9880d681SAndroid Build Coastguard Worker// CHECK:     0x10 0 2 n/a GENERIC_RELOC_LOCAL_SECTDIFF 1 0x2B
119*9880d681SAndroid Build Coastguard Worker// CHECK:     0x0 0 2 n/a GENERIC_RELOC_PAIR 1 0x2F
120*9880d681SAndroid Build Coastguard Worker// CHECK:   }
121*9880d681SAndroid Build Coastguard Worker// CHECK: ]
122*9880d681SAndroid Build Coastguard Worker// CHECK: Symbols [
123*9880d681SAndroid Build Coastguard Worker// CHECK:   Symbol {
124*9880d681SAndroid Build Coastguard Worker// CHECK:     Name: _text_a (17)
125*9880d681SAndroid Build Coastguard Worker// CHECK:     Type: Section (0xE)
126*9880d681SAndroid Build Coastguard Worker// CHECK:     Section: __text (0x1)
127*9880d681SAndroid Build Coastguard Worker// CHECK:     RefType: UndefinedNonLazy (0x0)
128*9880d681SAndroid Build Coastguard Worker// CHECK:     Flags [ (0x0)
129*9880d681SAndroid Build Coastguard Worker// CHECK:     ]
130*9880d681SAndroid Build Coastguard Worker// CHECK:     Value: 0x0
131*9880d681SAndroid Build Coastguard Worker// CHECK:   }
132*9880d681SAndroid Build Coastguard Worker// CHECK:   Symbol {
133*9880d681SAndroid Build Coastguard Worker// CHECK:     Name: _text_b (1)
134*9880d681SAndroid Build Coastguard Worker// CHECK:     Type: Section (0xE)
135*9880d681SAndroid Build Coastguard Worker// CHECK:     Section: __text (0x1)
136*9880d681SAndroid Build Coastguard Worker// CHECK:     RefType: UndefinedNonLazy (0x0)
137*9880d681SAndroid Build Coastguard Worker// CHECK:     Flags [ (0x0)
138*9880d681SAndroid Build Coastguard Worker// CHECK:     ]
139*9880d681SAndroid Build Coastguard Worker// CHECK:     Value: 0x2
140*9880d681SAndroid Build Coastguard Worker// CHECK:   }
141*9880d681SAndroid Build Coastguard Worker// CHECK:   Symbol {
142*9880d681SAndroid Build Coastguard Worker// CHECK:     Name: _data_a (25)
143*9880d681SAndroid Build Coastguard Worker// CHECK:     Type: Section (0xE)
144*9880d681SAndroid Build Coastguard Worker// CHECK:     Section: __data (0x2)
145*9880d681SAndroid Build Coastguard Worker// CHECK:     RefType: UndefinedNonLazy (0x0)
146*9880d681SAndroid Build Coastguard Worker// CHECK:     Flags [ (0x0)
147*9880d681SAndroid Build Coastguard Worker// CHECK:     ]
148*9880d681SAndroid Build Coastguard Worker// CHECK:     Value: 0x2B
149*9880d681SAndroid Build Coastguard Worker// CHECK:   }
150*9880d681SAndroid Build Coastguard Worker// CHECK:   Symbol {
151*9880d681SAndroid Build Coastguard Worker// CHECK:     Name: _data_b (9)
152*9880d681SAndroid Build Coastguard Worker// CHECK:     Type: Section (0xE)
153*9880d681SAndroid Build Coastguard Worker// CHECK:     Section: __data (0x2)
154*9880d681SAndroid Build Coastguard Worker// CHECK:     RefType: UndefinedNonLazy (0x0)
155*9880d681SAndroid Build Coastguard Worker// CHECK:     Flags [ (0x0)
156*9880d681SAndroid Build Coastguard Worker// CHECK:     ]
157*9880d681SAndroid Build Coastguard Worker// CHECK:     Value: 0x2F
158*9880d681SAndroid Build Coastguard Worker// CHECK:   }
159*9880d681SAndroid Build Coastguard Worker// CHECK: ]
160*9880d681SAndroid Build Coastguard Worker// CHECK: Indirect Symbols {
161*9880d681SAndroid Build Coastguard Worker// CHECK:   Number: 0
162*9880d681SAndroid Build Coastguard Worker// CHECK:   Symbols [
163*9880d681SAndroid Build Coastguard Worker// CHECK:   ]
164*9880d681SAndroid Build Coastguard Worker// CHECK: }
165*9880d681SAndroid Build Coastguard Worker// CHECK: Segment {
166*9880d681SAndroid Build Coastguard Worker// CHECK:   Cmd: LC_SEGMENT
167*9880d681SAndroid Build Coastguard Worker// CHECK:   Name:
168*9880d681SAndroid Build Coastguard Worker// CHECK:   Size: 192
169*9880d681SAndroid Build Coastguard Worker// CHECK:   vmaddr: 0x0
170*9880d681SAndroid Build Coastguard Worker// CHECK:   vmsize: 0x57
171*9880d681SAndroid Build Coastguard Worker// CHECK:   fileoff: 340
172*9880d681SAndroid Build Coastguard Worker// CHECK:   filesize: 87
173*9880d681SAndroid Build Coastguard Worker// CHECK:   maxprot: rwx
174*9880d681SAndroid Build Coastguard Worker// CHECK:   initprot: rwx
175*9880d681SAndroid Build Coastguard Worker// CHECK:   nsects: 2
176*9880d681SAndroid Build Coastguard Worker// CHECK:   flags: 0x0
177*9880d681SAndroid Build Coastguard Worker// CHECK: }
178*9880d681SAndroid Build Coastguard Worker// CHECK: Dysymtab {
179*9880d681SAndroid Build Coastguard Worker// CHECK:   ilocalsym: 0
180*9880d681SAndroid Build Coastguard Worker// CHECK:   nlocalsym: 4
181*9880d681SAndroid Build Coastguard Worker// CHECK:   iextdefsym: 4
182*9880d681SAndroid Build Coastguard Worker// CHECK:   nextdefsym: 0
183*9880d681SAndroid Build Coastguard Worker// CHECK:   iundefsym: 4
184*9880d681SAndroid Build Coastguard Worker// CHECK:   nundefsym: 0
185*9880d681SAndroid Build Coastguard Worker// CHECK:   tocoff: 0
186*9880d681SAndroid Build Coastguard Worker// CHECK:   ntoc: 0
187*9880d681SAndroid Build Coastguard Worker// CHECK:   modtaboff: 0
188*9880d681SAndroid Build Coastguard Worker// CHECK:   nmodtab: 0
189*9880d681SAndroid Build Coastguard Worker// CHECK:   extrefsymoff: 0
190*9880d681SAndroid Build Coastguard Worker// CHECK:   nextrefsyms: 0
191*9880d681SAndroid Build Coastguard Worker// CHECK:   indirectsymoff: 0
192*9880d681SAndroid Build Coastguard Worker// CHECK:   nindirectsyms: 0
193*9880d681SAndroid Build Coastguard Worker// CHECK:   extreloff: 0
194*9880d681SAndroid Build Coastguard Worker// CHECK:   nextrel: 0
195*9880d681SAndroid Build Coastguard Worker// CHECK:   locreloff: 0
196*9880d681SAndroid Build Coastguard Worker// CHECK:   nlocrel: 0
197*9880d681SAndroid Build Coastguard Worker// CHECK: }
198