1// 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
3_b:
4        _c = 0
5_e:
6        _f = 0
7
8	.section	__IMPORT,__jump_table,symbol_stubs,pure_instructions+self_modifying_code,5
9.indirect_symbol _a
10	.ascii	 "\364\364\364\364\364"
11.indirect_symbol _b
12	.ascii	 "\364\364\364\364\364"
13.indirect_symbol _c
14	.ascii	 "\364\364\364\364\364"
15	.section	__IMPORT,__pointers,non_lazy_symbol_pointers
16.indirect_symbol _d
17	.long	0
18.indirect_symbol _e
19	.long	0
20.indirect_symbol _f
21	.long	0
22
23// CHECK: File: <stdin>
24// CHECK: Format: Mach-O 32-bit i386
25// CHECK: Arch: i386
26// CHECK: AddressSize: 32bit
27// CHECK: MachHeader {
28// CHECK:   Magic: Magic (0xFEEDFACE)
29// CHECK:   CpuType: X86 (0x7)
30// CHECK:   CpuSubType: CPU_SUBTYPE_I386_ALL (0x3)
31// CHECK:   FileType: Relocatable (0x1)
32// CHECK:   NumOfLoadCommands: 4
33// CHECK:   SizeOfLoadCommands: 380
34// CHECK:   Flags [ (0x0)
35// CHECK:   ]
36// CHECK: }
37// CHECK: Sections [
38// CHECK:   Section {
39// CHECK:     Index: 0
40// CHECK:     Name: __text (5F 5F 74 65 78 74 00 00 00 00 00 00 00 00 00 00)
41// CHECK:     Segment: __TEXT (5F 5F 54 45 58 54 00 00 00 00 00 00 00 00 00 00)
42// CHECK:     Address: 0x0
43// CHECK:     Size: 0x0
44// CHECK:     Offset: 408
45// CHECK:     Alignment: 0
46// CHECK:     RelocationOffset: 0x0
47// CHECK:     RelocationCount: 0
48// CHECK:     Type: 0x0
49// CHECK:     Attributes [ (0x800000)
50// CHECK:       PureInstructions (0x800000)
51// CHECK:     ]
52// CHECK:     Reserved1: 0x0
53// CHECK:     Reserved2: 0x0
54// CHECK:     SectionData (
55// CHECK:     )
56// CHECK:   }
57// CHECK:   Section {
58// CHECK:     Index: 1
59// CHECK:     Name: __jump_table (5F 5F 6A 75 6D 70 5F 74 61 62 6C 65 00 00 00 00)
60// CHECK:     Segment: __IMPORT (5F 5F 49 4D 50 4F 52 54 00 00 00 00 00 00 00 00)
61// CHECK:     Address: 0x0
62// CHECK:     Size: 0xF
63// CHECK:     Offset: 408
64// CHECK:     Alignment: 0
65// CHECK:     RelocationOffset: 0x0
66// CHECK:     RelocationCount: 0
67// CHECK:     Type: 0x8
68// CHECK:     Attributes [ (0x840000)
69// CHECK:       PureInstructions (0x800000)
70// CHECK:       SelfModifyingCode (0x40000)
71// CHECK:     ]
72// CHECK:     Reserved1: 0x0
73// CHECK:     Reserved2: 0x5
74// CHECK:     SectionData (
75// CHECK:       0000: F4F4F4F4 F4F4F4F4 F4F4F4F4 F4F4F4    |...............|
76// CHECK:     )
77// CHECK:   }
78// CHECK:   Section {
79// CHECK:     Index: 2
80// CHECK:     Name: __pointers (5F 5F 70 6F 69 6E 74 65 72 73 00 00 00 00 00 00)
81// CHECK:     Segment: __IMPORT (5F 5F 49 4D 50 4F 52 54 00 00 00 00 00 00 00 00)
82// CHECK:     Address: 0xF
83// CHECK:     Size: 0xC
84// CHECK:     Offset: 423
85// CHECK:     Alignment: 0
86// CHECK:     RelocationOffset: 0x0
87// CHECK:     RelocationCount: 0
88// CHECK:     Type: 0x6
89// CHECK:     Attributes [ (0x0)
90// CHECK:     ]
91// CHECK:     Reserved1: 0x3
92// CHECK:     Reserved2: 0x0
93// CHECK:     SectionData (
94// CHECK:       0000: 00000000 00000000 00000000           |............|
95// CHECK:     )
96// CHECK:   }
97// CHECK: ]
98// CHECK: Relocations [
99// CHECK: ]
100// CHECK: Symbols [
101// CHECK:   Symbol {
102// CHECK:     Name: _b (13)
103// CHECK:     Type: Section (0xE)
104// CHECK:     Section: __text (0x1)
105// CHECK:     RefType: UndefinedNonLazy (0x0)
106// CHECK:     Flags [ (0x0)
107// CHECK:     ]
108// CHECK:     Value: 0x0
109// CHECK:   }
110// CHECK:   Symbol {
111// CHECK:     Name: _c (10)
112// CHECK:     Type: Abs (0x2)
113// CHECK:     Section:  (0x0)
114// CHECK:     RefType: UndefinedNonLazy (0x0)
115// CHECK:     Flags [ (0x0)
116// CHECK:     ]
117// CHECK:     Value: 0x0
118// CHECK:   }
119// CHECK:   Symbol {
120// CHECK:     Name: _e (4)
121// CHECK:     Type: Section (0xE)
122// CHECK:     Section: __text (0x1)
123// CHECK:     RefType: UndefinedNonLazy (0x0)
124// CHECK:     Flags [ (0x0)
125// CHECK:     ]
126// CHECK:     Value: 0x0
127// CHECK:   }
128// CHECK:   Symbol {
129// CHECK:     Name: _f (1)
130// CHECK:     Type: Abs (0x2)
131// CHECK:     Section:  (0x0)
132// CHECK:     RefType: UndefinedNonLazy (0x0)
133// CHECK:     Flags [ (0x0)
134// CHECK:     ]
135// CHECK:     Value: 0x0
136// CHECK:   }
137// CHECK:   Symbol {
138// CHECK:     Name: _a (16)
139// CHECK:     Extern
140// CHECK:     Type: Undef (0x0)
141// CHECK:     Section:  (0x0)
142// CHECK:     RefType: ReferenceFlagUndefinedLazy (0x1)
143// CHECK:     Flags [ (0x0)
144// CHECK:     ]
145// CHECK:     Value: 0x0
146// CHECK:   }
147// CHECK:   Symbol {
148// CHECK:     Name: _d (7)
149// CHECK:     Extern
150// CHECK:     Type: Undef (0x0)
151// CHECK:     Section:  (0x0)
152// CHECK:     RefType: UndefinedNonLazy (0x0)
153// CHECK:     Flags [ (0x0)
154// CHECK:     ]
155// CHECK:     Value: 0x0
156// CHECK:   }
157// CHECK: ]
158// CHECK: Indirect Symbols {
159// CHECK:   Number: 6
160// CHECK:   Symbols [
161// CHECK:     Entry {
162// CHECK:       Entry Index: 0
163// CHECK:       Symbol Index: 0x4
164// CHECK:     }
165// CHECK:     Entry {
166// CHECK:       Entry Index: 1
167// CHECK:       Symbol Index: 0x0
168// CHECK:     }
169// CHECK:     Entry {
170// CHECK:       Entry Index: 2
171// CHECK:       Symbol Index: 0x1
172// CHECK:     }
173// CHECK:     Entry {
174// CHECK:       Entry Index: 3
175// CHECK:       Symbol Index: 0x5
176// CHECK:     }
177// CHECK:     Entry {
178// CHECK:       Entry Index: 4
179// CHECK:       Symbol Index: 0x80000000
180// CHECK:     }
181// CHECK:     Entry {
182// CHECK:       Entry Index: 5
183// CHECK:       Symbol Index: 0xC0000000
184// CHECK:     }
185// CHECK:   ]
186// CHECK: }
187// CHECK: Segment {
188// CHECK:   Cmd: LC_SEGMENT
189// CHECK:   Name:
190// CHECK:   Size: 260
191// CHECK:   vmaddr: 0x0
192// CHECK:   vmsize: 0x1B
193// CHECK:   fileoff: 408
194// CHECK:   filesize: 27
195// CHECK:   maxprot: rwx
196// CHECK:   initprot: rwx
197// CHECK:   nsects: 3
198// CHECK:   flags: 0x0
199// CHECK: }
200// CHECK: Dysymtab {
201// CHECK:   ilocalsym: 0
202// CHECK:   nlocalsym: 4
203// CHECK:   iextdefsym: 4
204// CHECK:   nextdefsym: 0
205// CHECK:   iundefsym: 4
206// CHECK:   nundefsym: 2
207// CHECK:   tocoff: 0
208// CHECK:   ntoc: 0
209// CHECK:   modtaboff: 0
210// CHECK:   nmodtab: 0
211// CHECK:   extrefsymoff: 0
212// CHECK:   nextrefsyms: 0
213// CHECK:   indirectsymoff: 436
214// CHECK:   nindirectsyms: 6
215// CHECK:   extreloff: 0
216// CHECK:   nextrel: 0
217// CHECK:   locreloff: 0
218// CHECK:   nlocrel: 0
219// CHECK: }
220