xref: /llvm-project/llvm/test/tools/dsymutil/X86/basic-lto-linking-x86.test (revision f1fdfe6888f93b9f6dfb4689e1f3206de584ff5b)
1RUN: dsymutil -f -o - -oso-prepend-path=%p/.. %p/../Inputs/basic-lto.macho.x86_64 | llvm-dwarfdump -a - | FileCheck %s
2RUN: dsymutil -oso-prepend-path=%p/.. -dump-debug-map %p/../Inputs/basic-lto.macho.x86_64 | dsymutil -f -o - -y - | llvm-dwarfdump -a - | FileCheck %s
3
4RUN: dsymutil --linker parallel -f -o - -oso-prepend-path=%p/.. \
5RUN:   %p/../Inputs/basic-lto.macho.x86_64 | llvm-dwarfdump -a - | FileCheck %s
6RUN: dsymutil --linker parallel -oso-prepend-path=%p/.. -dump-debug-map \
7RUN:   %p/../Inputs/basic-lto.macho.x86_64 | dsymutil -f -o - -y - | \
8RUN:   llvm-dwarfdump -a - | FileCheck %s
9
10CHECK: file format Mach-O 64-bit x86-64
11
12CHECK: debug_info contents
13
14CHECK:  Compile Unit:
15
16CHECK:  DW_TAG_compile_unit
17CHECK:    DW_AT_producer ("Apple LLVM version 6.0 (clang-600.0.39) (based on LLVM 3.5svn)")
18CHECK:    DW_AT_language (DW_LANG_C99)
19CHECK:    DW_AT_name ("basic1.c")
20CHECK:    DW_AT_stmt_list (0x00000000)
21CHECK:    DW_AT_comp_dir ("/Inputs")
22CHECK:    DW_AT_low_pc (0x0000000100000f40)
23CHECK:    DW_TAG_subprogram
24CHECK:      DW_AT_name ("main")
25CHECK:      DW_AT_decl_file ("/Inputs{{[/\\]}}basic1.c")
26CHECK:      DW_AT_decl_line (23)
27CHECK:      DW_AT_prototyped (0x01)
28CHECK:      DW_AT_type (0x00000063
29CHECK:      DW_AT_external (0x01)
30CHECK:      DW_AT_accessibility (DW_ACCESS_public)
31CHECK:      DW_AT_low_pc (0x0000000100000f40)
32CHECK:      DW_AT_high_pc (0x0000000100000f4b)
33CHECK:      DW_AT_frame_base (DW_OP_reg6 RBP)
34CHECK:      DW_TAG_formal_parameter
35CHECK:        DW_AT_name ("argc")
36CHECK:        DW_AT_type (0x00000063
37CHECK:        DW_AT_location (DW_OP_reg5 RDI, DW_OP_piece 0x4)
38CHECK:      DW_TAG_formal_parameter
39CHECK:        DW_AT_name ("argv")
40CHECK:        DW_AT_type (0x0000006a
41CHECK:        DW_AT_location (DW_OP_reg4 RSI)
42CHECK:      NULL
43CHECK:    DW_TAG_base_type
44CHECK:      DW_AT_name ("int")
45CHECK:      DW_AT_encoding (DW_ATE_signed)
46CHECK:      DW_AT_byte_size (0x04)
47CHECK:    DW_TAG_pointer_type
48CHECK:      DW_AT_type (0x0000006f
49CHECK:    DW_TAG_pointer_type
50CHECK:      DW_AT_type (0x00000074
51CHECK:    DW_TAG_const_type
52CHECK:      DW_AT_type (0x00000079
53CHECK:    DW_TAG_base_type
54CHECK:      DW_AT_name ("char")
55CHECK:      DW_AT_encoding (DW_ATE_signed_char)
56CHECK:      DW_AT_byte_size (0x01)
57CHECK:    NULL
58
59CHECK:  Compile Unit:
60
61CHECK:  DW_TAG_compile_unit
62CHECK:    DW_AT_producer ("Apple LLVM version 6.0 (clang-600.0.39) (based on LLVM 3.5svn)")
63CHECK:    DW_AT_name ("basic2.c")
64CHECK:    DW_AT_stmt_list (0x0000003e)
65CHECK:    DW_AT_comp_dir ("/Inputs")
66CHECK:   DW_AT_low_pc (0x0000000100000f50)
67CHECK:    DW_TAG_variable
68CHECK:      DW_AT_name ("private_int")
69CHECK:      DW_AT_type (0x0000000000000063
70CHECK:      DW_AT_decl_file ("/Inputs{{[/\\]}}basic2.c")
71CHECK:      DW_AT_location (DW_OP_addr 0x100001008)
72CHECK:    DW_TAG_variable
73CHECK:      DW_AT_name ("baz")
74CHECK:      DW_AT_type (0x0000000000000063
75CHECK:      DW_AT_location (DW_OP_addr 0x100001000)
76CHECK:    DW_TAG_subprogram
77CHECK:      DW_AT_name ("foo")
78CHECK:      DW_AT_type (0x0000000000000063
79CHECK:      DW_AT_low_pc (0x0000000100000f50)
80CHECK:      DW_AT_high_pc (0x0000000100000f89)
81CHECK:      DW_AT_frame_base (DW_OP_reg6 RBP)
82CHECK:      DW_TAG_formal_parameter
83CHECK:        DW_AT_name ("arg")
84CHECK:        DW_AT_type (0x0000000000000063
85CHECK:        DW_AT_location (0x00000000
86CHECK:          [0x0000000100000f50, 0x0000000100000f5e): DW_OP_reg5 RDI, DW_OP_piece 0x4)
87CHECK:[[INC1:0x[0-9a-f]*]]{{.*}}DW_TAG_inlined_subroutine
88CHECK:        DW_AT_abstract_origin (0x00000128 "inc")
89CHECK:        DW_AT_low_pc (0x0000000100000f63)
90CHECK:        DW_AT_high_pc (0x0000000100000f72)
91CHECK:        DW_AT_call_line (20)
92CHECK:      NULL
93CHECK:    DW_TAG_subprogram
94CHECK:      DW_AT_name ("inc")
95CHECK:      DW_AT_type (0x0000000000000063
96CHECK:      DW_AT_inline (DW_INL_inlined)
97CHECK:    NULL
98
99CHECK:  Compile Unit:
100
101CHECK:  DW_TAG_compile_unit
102CHECK:    DW_AT_producer ("Apple LLVM version 6.0 (clang-600.0.39) (based on LLVM 3.5svn)")
103CHECK:    DW_AT_name ("basic3.c")
104CHECK:    DW_AT_stmt_list (0x0000007e)
105CHECK:    DW_AT_comp_dir ("/Inputs")
106CHECK:    DW_AT_low_pc (0x0000000100000f90)
107CHECK:    DW_TAG_variable
108CHECK:      DW_AT_name ("val")
109CHECK:      DW_AT_type (0x00000176
110CHECK:      DW_AT_decl_file ("/Inputs{{[/\\]}}basic3.c")
111CHECK:      DW_AT_location (DW_OP_addr 0x100001004)
112CHECK:    DW_TAG_volatile_type
113CHECK:      DW_AT_type (0x0000000000000063
114CHECK:    DW_TAG_subprogram
115CHECK:      DW_AT_name ("bar")
116CHECK:      DW_AT_type (0x0000000000000063
117CHECK:      DW_AT_low_pc (0x0000000100000f90)
118CHECK:      DW_AT_high_pc (0x0000000100000fb4)
119CHECK:      DW_AT_frame_base (DW_OP_reg6 RBP)
120CHECK:      DW_TAG_formal_parameter
121CHECK:        DW_AT_name ("arg")
122CHECK:        DW_AT_type (0x0000000000000063
123CHECK:        DW_AT_location (0x00000025
124CHECK:          [0x0000000100000f90, 0x0000000100000f9f): DW_OP_reg5 RDI, DW_OP_piece 0x4
125CHECK:          [0x0000000100000fa9, 0x0000000100000fad): DW_OP_reg5 RDI, DW_OP_piece 0x4)
126CHECK:      DW_TAG_lexical_block
127CHECK:        DW_AT_low_pc (0x0000000100000f94)
128CHECK:        DW_AT_high_pc (0x0000000100000fa7)
129CHECK:[[INC2:0x[0-9a-f]*]]{{.*}}DW_TAG_inlined_subroutine
130CHECK:          DW_AT_abstract_origin (0x000001d4 "inc")
131CHECK:          DW_AT_ranges (0x00000000
132CHECK:             [0x0000000100000f94, 0x0000000100000f9a)
133CHECK:             [0x0000000100000f9f, 0x0000000100000fa7))
134CHECK:        NULL
135CHECK:      NULL
136CHECK:    DW_TAG_subprogram
137CHECK:      DW_AT_name ("inc")
138CHECK:      DW_AT_type (0x0000000000000063
139CHECK:    NULL
140
141CHECK: .debug_loc contents:
142CHECK-NEXT: 0x00000000:
143CHECK-NEXT:              (0x0000000000000000, 0x000000000000000e): DW_OP_reg5 RDI, DW_OP_piece 0x4
144CHECK-NOT: :
145CHECK:      0x00000025:
146CHECK-NEXT:              (0x0000000000000000, 0x000000000000000f): DW_OP_reg5 RDI, DW_OP_piece 0x4
147CHECK-NEXT:              (0x0000000000000019, 0x000000000000001d): DW_OP_reg5 RDI, DW_OP_piece 0x4
148
149CHECK: .debug_aranges contents:
150CHECK-NEXT: Address Range Header: length = 0x0000002c, format = DWARF32, version = 0x0002, cu_offset = 0x00000000, addr_size = 0x08, seg_size = 0x00
151CHECK-NEXT: [0x0000000100000f40, 0x0000000100000f4b)
152CHECK-NEXT: Address Range Header: length = 0x0000002c, format = DWARF32, version = 0x0002, cu_offset = 0x00000081, addr_size = 0x08, seg_size = 0x00
153CHECK-NEXT: [0x0000000100000f50, 0x0000000100000f89)
154CHECK-NEXT: Address Range Header: length = 0x0000002c, format = DWARF32, version = 0x0002, cu_offset = 0x0000013a, addr_size = 0x08, seg_size = 0x00
155CHECK-NEXT: [0x0000000100000f90, 0x0000000100000fb4)
156
157
158CHECK: .debug_line contents
159CHECK: file_names[  1]:
160CHECK-NEXT: name: "basic1.c"
161CHECK-NEXT: dir_index: 0
162CHECK: 0x0000000100000f40     23      0      1   0             0       0  is_stmt
163CHECK: 0x0000000100000f44     24      0      1   0             0       0  is_stmt prologue_end
164CHECK: 0x0000000100000f4b     24      0      1   0             0       0  is_stmt end_sequence
165
166CHECK: file_names[  1]:
167CHECK-NEXT: name: "basic2.c"
168CHECK-NEXT: dir_index: 0
169CHECK: 0x0000000100000f50     19      0      1   0             0       0  is_stmt
170CHECK: 0x0000000100000f54     20      0      1   0             0       0  is_stmt prologue_end
171CHECK: 0x0000000100000f63     15      0      1   0             0       0  is_stmt
172CHECK: 0x0000000100000f72     20      0      1   0             0       0  is_stmt
173CHECK: 0x0000000100000f89     20      0      1   0             0       0  is_stmt end_sequence
174
175CHECK: file_names[  1]:
176CHECK-NEXT: name: "basic3.c"
177CHECK-NEXT: dir_index: 0
178CHECK: 0x0000000100000f90     16      0      1   0             0       0  is_stmt
179CHECK: 0x0000000100000f94     12      0      1   0             0       0  is_stmt prologue_end
180CHECK: 0x0000000100000f9a     17      0      1   0             0       0  is_stmt
181CHECK: 0x0000000100000f9f     12      0      1   0             0       0  is_stmt
182CHECK: 0x0000000100000fa7     20      0      1   0             0       0  is_stmt
183CHECK: 0x0000000100000fa9     19      0      1   0             0       0  is_stmt
184CHECK: 0x0000000100000fb2     20      0      1   0             0       0  is_stmt
185CHECK: 0x0000000100000fb4     20      0      1   0             0       0  is_stmt end_sequence
186
187CHECK-NOT: .debug_pubnames contents:
188CHECK-NOT: .debug_pubtypes contents:
189
190CHECK: .apple_names contents:
191CHECK-NEXT: Header {
192CHECK-NEXT:   Magic: 0x48415348
193CHECK-NEXT:   Version: 0x1
194CHECK-NEXT:   Hash function: 0x0
195CHECK-NEXT:   Bucket count: 7
196CHECK-NEXT:   Hashes count: 7
197CHECK-NEXT:   HeaderData length: 12
198CHECK-NEXT: }
199CHECK-NEXT: DIE offset base: 0
200CHECK-NEXT: Number of atoms: 1
201CHECK-NEXT: Size of each hash data entry: 4
202CHECK-NEXT: Atoms [
203CHECK-NEXT:   Atom 0 {
204CHECK-NEXT:     Type: DW_ATOM_die_offset
205CHECK-NEXT:     Form: DW_FORM_data4
206CHECK-NEXT:   }
207CHECK-NEXT: ]
208CHECK-NEXT: Bucket 0 [
209CHECK-NEXT:   Hash 0xb8860c2 [
210CHECK-NEXT:     Name@0x74 {
211CHECK-NEXT:       String: 0x0000007e "baz"
212CHECK-NEXT:       Data 0 [
213CHECK-NEXT:         Atom[0]: 0x000000c0
214CHECK-NEXT:       ]
215CHECK-NEXT:     }
216CHECK-NEXT:   ]
217CHECK-NEXT:   Hash 0xb88801f [
218CHECK-NEXT:     Name@0x84 {
219CHECK-NEXT:       String: 0x0000008a "inc"
220CHECK-NEXT:       Data 0 [
221CHECK-NEXT:         Atom[0]: 0x00000110
222CHECK-NEXT:       ]
223CHECK-NEXT:       Data 1 [
224CHECK-NEXT:         Atom[0]: 0x000001c7
225CHECK-NEXT:       ]
226CHECK-NEXT:     }
227CHECK-NEXT:   ]
228CHECK-NEXT: ]
229CHECK-NEXT: Bucket 1 [
230CHECK-NEXT:   EMPTY
231CHECK-NEXT: ]
232CHECK-NEXT: Bucket 2 [
233CHECK-NEXT:   Hash 0xfed12c6a [
234CHECK-NEXT:     Name@0x98 {
235CHECK-NEXT:       String: 0x00000072 "private_int"
236CHECK-NEXT:       Data 0 [
237CHECK-NEXT:         Atom[0]: 0x000000a7
238CHECK-NEXT:       ]
239CHECK-NEXT:     }
240CHECK-NEXT:   ]
241CHECK-NEXT: ]
242CHECK-NEXT: Bucket 3 [
243CHECK-NEXT:   Hash 0xb88b5c8 [
244CHECK-NEXT:     Name@0xa8 {
245CHECK-NEXT:       String: 0x00000097 "val"
246CHECK-NEXT:       Data 0 [
247CHECK-NEXT:         Atom[0]: 0x00000160
248CHECK-NEXT:       ]
249CHECK-NEXT:     }
250CHECK-NEXT:   ]
251CHECK-NEXT:   Hash 0x7c9a7f6a [
252CHECK-NEXT:     Name@0xb8 {
253CHECK-NEXT:       String: 0x00000051 "main"
254CHECK-NEXT:       Data 0 [
255CHECK-NEXT:         Atom[0]: 0x00000026
256CHECK-NEXT:       ]
257CHECK-NEXT:     }
258CHECK-NEXT:   ]
259CHECK-NEXT: ]
260CHECK-NEXT: Bucket 4 [
261CHECK-NEXT:   EMPTY
262CHECK-NEXT: ]
263CHECK-NEXT: Bucket 5 [
264CHECK-NEXT:   Hash 0xb887389 [
265CHECK-NEXT:     Name@0xc8 {
266CHECK-NEXT:       String: 0x00000082 "foo"
267CHECK-NEXT:       Data 0 [
268CHECK-NEXT:         Atom[0]: 0x000000d9
269CHECK-NEXT:       ]
270CHECK-NEXT:     }
271CHECK-NEXT:   ]
272CHECK-NEXT: ]
273CHECK-NEXT: Bucket 6 [
274CHECK-NEXT:   Hash 0xb8860ba [
275CHECK-NEXT:     Name@0xd8 {
276CHECK-NEXT:       String: 0x0000009b "bar"
277CHECK-NEXT:       Data 0 [
278CHECK-NEXT:         Atom[0]: 0x0000017f
279CHECK-NEXT:       ]
280CHECK-NEXT:     }
281CHECK-NEXT:   ]
282CHECK-NEXT: ]
283
284CHECK: apple_types contents:
285CHECK-NEXT: Header {
286CHECK-NEXT:   Magic: 0x48415348
287CHECK-NEXT:   Version: 0x1
288CHECK-NEXT:   Hash function: 0x0
289CHECK-NEXT:   Bucket count: 2
290CHECK-NEXT:   Hashes count: 2
291CHECK-NEXT:   HeaderData length: 24
292CHECK-NEXT: }
293CHECK-NEXT: DIE offset base: 0
294CHECK-NEXT: Number of atoms: 4
295CHECK-NEXT: Size of each hash data entry: 11
296CHECK-NEXT: Atoms [
297CHECK-NEXT:   Atom 0 {
298CHECK-NEXT:     Type: DW_ATOM_die_offset
299CHECK-NEXT:     Form: DW_FORM_data4
300CHECK-NEXT:   }
301CHECK-NEXT:   Atom 1 {
302CHECK-NEXT:     Type: DW_ATOM_die_tag
303CHECK-NEXT:     Form: DW_FORM_data2
304CHECK-NEXT:   }
305CHECK-NEXT:   Atom 2 {
306CHECK-NEXT:     Type: DW_ATOM_type_flags
307CHECK-NEXT:     Form: DW_FORM_data1
308CHECK-NEXT:   }
309CHECK-NEXT:   Atom 3 {
310CHECK-NEXT:     Type: DW_ATOM_qual_name_hash
311CHECK-NEXT:     Form: DW_FORM_data4
312CHECK-NEXT:   }
313CHECK-NEXT: ]
314CHECK-NEXT: Bucket 0 [
315CHECK-NEXT:   Hash 0xb888030 [
316CHECK-NEXT:     Name@0x44 {
317CHECK-NEXT:       String: 0x00000060 "int"
318CHECK-NEXT:       Data 0 [
319CHECK-NEXT:         Atom[0]: 0x00000063
320CHECK-NEXT:         Atom[1]: 0x0024
321CHECK-NEXT:         Atom[2]: 0x00
322CHECK-NEXT:         Atom[3]: 0x0c3a28a4
323CHECK-NEXT:       ]
324CHECK-NEXT:     }
325CHECK-NEXT:   ]
326CHECK-NEXT: ]
327CHECK-NEXT: Bucket 1 [
328CHECK-NEXT:   Hash 0x7c952063 [
329CHECK-NEXT:     Name@0x5b {
330CHECK-NEXT:       String: 0x00000064 "char"
331CHECK-NEXT:       Data 0 [
332CHECK-NEXT:         Atom[0]: 0x00000079
333CHECK-NEXT:         Atom[1]: 0x0024
334CHECK-NEXT:         Atom[2]: 0x00
335CHECK-NEXT:         Atom[3]: 0x937bd757
336CHECK-NEXT:       ]
337CHECK-NEXT:     }
338CHECK-NEXT:   ]
339CHECK-NEXT: ]
340
341CHECK: .apple_namespaces contents:
342CHECK-NEXT: Header {
343CHECK-NEXT:   Magic: 0x48415348
344CHECK-NEXT:   Version: 0x1
345CHECK-NEXT:   Hash function: 0x0
346CHECK-NEXT:   Bucket count: 1
347CHECK-NEXT:   Hashes count: 0
348CHECK-NEXT:   HeaderData length: 12
349CHECK-NEXT: }
350CHECK-NEXT: DIE offset base: 0
351CHECK-NEXT: Number of atoms: 1
352CHECK-NEXT: Size of each hash data entry: 4
353CHECK-NEXT: Atoms [
354CHECK-NEXT:   Atom 0 {
355CHECK-NEXT:     Type: DW_ATOM_die_offset
356CHECK-NEXT:     Form: DW_FORM_data4
357CHECK-NEXT:   }
358CHECK-NEXT: ]
359CHECK-NEXT: Bucket 0 [
360CHECK-NEXT:   EMPTY
361CHECK-NEXT: ]
362
363CHECK: .apple_objc contents:
364CHECK-NEXT: Header {
365CHECK-NEXT:   Magic: 0x48415348
366CHECK-NEXT:   Version: 0x1
367CHECK-NEXT:   Hash function: 0x0
368CHECK-NEXT:   Bucket count: 1
369CHECK-NEXT:   Hashes count: 0
370CHECK-NEXT:   HeaderData length: 12
371CHECK-NEXT: }
372CHECK-NEXT: DIE offset base: 0
373CHECK-NEXT: Number of atoms: 1
374CHECK-NEXT: Size of each hash data entry: 4
375CHECK-NEXT: Atoms [
376CHECK-NEXT:   Atom 0 {
377CHECK-NEXT:     Type: DW_ATOM_die_offset
378CHECK-NEXT:     Form: DW_FORM_data4
379CHECK-NEXT:   }
380CHECK-NEXT: ]
381CHECK-NEXT: Bucket 0 [
382CHECK-NEXT:   EMPTY
383CHECK-NEXT: ]
384