xref: /llvm-project/llvm/test/tools/dsymutil/X86/basic-linking-x86.test (revision f1fdfe6888f93b9f6dfb4689e1f3206de584ff5b)
1RUN: cp %p/../Inputs/basic.macho.x86_64 %t1
2RUN: dsymutil -accelerator=Pub -f -oso-prepend-path=%p/.. %t1
3RUN: llvm-dwarfdump -a %t1.dwarf | FileCheck %s
4RUN: dsymutil -accelerator=Pub -f -o %t2 -oso-prepend-path=%p/.. \
5RUN:   %p/../Inputs/basic.macho.x86_64
6RUN: llvm-dwarfdump -a %t2 | FileCheck %s
7RUN: dsymutil -accelerator=Pub -f -o - -oso-prepend-path=%p/.. \
8RUN:   %p/../Inputs/basic.macho.x86_64 | llvm-dwarfdump -a - | \
9RUN:   FileCheck %s --check-prefixes=CHECK,BASIC,PUB
10RUN: dsymutil -accelerator=Pub -f -o - -oso-prepend-path=%p/.. \
11RUN:   %p/../Inputs/basic-archive.macho.x86_64 | llvm-dwarfdump -a - \
12RUN:   | FileCheck %s --check-prefixes=CHECK,ARCHIVE,PUB
13RUN: dsymutil -accelerator=Pub -dump-debug-map -oso-prepend-path=%p/.. \
14RUN:   %p/../Inputs/basic.macho.x86_64 | dsymutil -accelerator=Pub -f -y \
15RUN:   -o - - | llvm-dwarfdump -a - | FileCheck %s \
16RUN:   --check-prefixes=CHECK,BASIC,PUB
17RUN: dsymutil -accelerator=Pub -dump-debug-map -oso-prepend-path=%p/.. \
18RUN:   %p/../Inputs/basic-archive.macho.x86_64 | dsymutil -accelerator=Pub \
19RUN:   -f -o - -y - | llvm-dwarfdump -a - | FileCheck %s \
20RUN:   --check-prefixes=CHECK,ARCHIVE,PUB
21
22### ---------------------------------------
23### Repeat the same steps for --linker parallel
24
25RUN: dsymutil --linker parallel -accelerator=Pub -f -oso-prepend-path=%p/.. %t1
26RUN: llvm-dwarfdump -a %t1.dwarf | FileCheck %s
27RUN: dsymutil --linker parallel  -accelerator=Pub -f -o %t2 -oso-prepend-path=%p/.. \
28RUN:   %p/../Inputs/basic.macho.x86_64
29RUN: llvm-dwarfdump -a %t2 | FileCheck %s
30RUN: dsymutil --linker parallel  -accelerator=Pub -f -o - -oso-prepend-path=%p/.. \
31RUN:   %p/../Inputs/basic.macho.x86_64 | llvm-dwarfdump -a - | \
32RUN:   FileCheck %s --check-prefixes=CHECK,BASIC,PUB
33RUN: dsymutil --linker parallel -accelerator=Pub -f -o - -oso-prepend-path=%p/.. \
34RUN:   %p/../Inputs/basic-archive.macho.x86_64 | llvm-dwarfdump -a - | \
35RUN:   FileCheck %s --check-prefixes=CHECK,ARCHIVE,PUB
36RUN: dsymutil --linker parallel -accelerator=Pub -dump-debug-map \
37RUN:  -oso-prepend-path=%p/.. %p/../Inputs/basic.macho.x86_64 \
38RUN:  | dsymutil -accelerator=Pub -f -y -o - - | llvm-dwarfdump \
39RUN:  -a - | FileCheck %s --check-prefixes=CHECK,BASIC,PUB
40RUN: dsymutil --linker parallel -accelerator=Pub -dump-debug-map \
41RUN:   -oso-prepend-path=%p/.. %p/../Inputs/basic-archive.macho.x86_64 \
42RUN:   | dsymutil -accelerator=Pub -f -o - -y - | llvm-dwarfdump -a - | \
43RUN:   FileCheck %s --check-prefixes=CHECK,ARCHIVE,PUB
44
45CHECK: file format Mach-O 64-bit x86-64
46
47CHECK: debug_info contents
48
49CHECK:  Compile Unit:
50
51CHECK:  DW_TAG_compile_unit
52CHECK:    DW_AT_producer ("Apple LLVM version 6.0 (clang-600.0.39) (based on LLVM 3.5svn)")
53CHECK:    DW_AT_language (DW_LANG_C99)
54CHECK:    DW_AT_name ("basic1.c")
55CHECK:    DW_AT_stmt_list (0x00000000)
56CHECK:    DW_AT_comp_dir ("/Inputs")
57CHECK:    DW_AT_low_pc (0x0000000100000ea0)
58CHECK:    DW_TAG_subprogram
59CHECK:    DW_AT_name ("main")
60CHECK:      DW_AT_decl_file ("/Inputs{{[/\\]}}basic1.c")
61CHECK:      DW_AT_decl_line (23)
62CHECK:      DW_AT_prototyped (0x01)
63CHECK:      DW_AT_type (0x00000063
64CHECK:      DW_AT_external (0x01)
65CHECK:      DW_AT_accessibility (DW_ACCESS_public)
66CHECK:      DW_AT_low_pc (0x0000000100000ea0)
67CHECK:      DW_AT_high_pc (0x0000000100000ec4)
68CHECK:      DW_AT_frame_base (DW_OP_reg6 RBP)
69CHECK:      DW_TAG_formal_parameter
70CHECK:        DW_AT_name ("argc")
71CHECK:        DW_AT_decl_file ("/Inputs{{[/\\]}}basic1.c")
72CHECK:        DW_AT_decl_line (23)
73CHECK:        DW_AT_type (0x00000063
74CHECK:        DW_AT_location (DW_OP_fbreg -8)
75CHECK:      DW_TAG_formal_parameter
76CHECK:        DW_AT_name ("argv")
77CHECK:        DW_AT_decl_file ("/Inputs{{[/\\]}}basic1.c")
78CHECK:        DW_AT_decl_line (23)
79CHECK:        DW_AT_type (0x0000006a
80CHECK:        DW_AT_location (DW_OP_fbreg -16)
81CHECK:      NULL
82CHECK:    DW_TAG_base_type
83CHECK:      DW_AT_name ("int")
84CHECK:      DW_AT_encoding (DW_ATE_signed)
85CHECK:      DW_AT_byte_size (0x04)
86CHECK:    DW_TAG_pointer_type
87CHECK:      DW_AT_type (0x0000006f
88CHECK:    DW_TAG_pointer_type
89CHECK:      DW_AT_type (0x00000074
90CHECK:    DW_TAG_const_type
91CHECK:      DW_AT_type (0x00000079
92CHECK:    DW_TAG_base_type
93CHECK:      DW_AT_name ("char")
94CHECK:      DW_AT_encoding (DW_ATE_signed_char)
95CHECK:      DW_AT_byte_size (0x01)
96CHECK:    NULL
97
98CHECK:  Compile Unit:
99
100CHECK:  DW_TAG_compile_unit
101CHECK:   DW_AT_producer ("Apple LLVM version 6.0 (clang-600.0.39) (based on LLVM 3.5svn)")
102CHECK:   DW_AT_name ("basic2.c")
103CHECK:   DW_AT_stmt_list (0x0000003f)
104CHECK:   DW_AT_comp_dir ("/Inputs")
105CHECK:   DW_AT_low_pc (0x0000000100000ed0)
106CHECK:    DW_TAG_base_type
107CHECK:      DW_AT_name ("int")
108CHECK:    DW_TAG_variable
109CHECK:      DW_AT_name ("private_int")
110CHECK:      DW_AT_type (0x000000a7
111CHECK:      DW_AT_decl_file ("/Inputs{{[/\\]}}basic2.c")
112BASIC:      DW_AT_location (DW_OP_addr 0x100001008)
113ARCHIVE:    DW_AT_location (DW_OP_addr 0x100001004)
114CHECK:    DW_TAG_variable
115CHECK:      DW_AT_name ("baz")
116CHECK:      DW_AT_type (0x000000a7
117CHECK:      DW_AT_decl_file ("/Inputs{{[/\\]}}basic2.c")
118CHECK:      DW_AT_location (DW_OP_addr 0x100001000)
119CHECK:    DW_TAG_subprogram
120CHECK:      DW_AT_name ("foo")
121CHECK:      DW_AT_decl_file ("/Inputs{{[/\\]}}basic2.c")
122CHECK:      DW_AT_type (0x000000a7
123CHECK:      DW_AT_low_pc (0x0000000100000ed0)
124CHECK:      DW_AT_high_pc (0x0000000100000f19)
125CHECK:      DW_AT_frame_base (DW_OP_reg6 RBP)
126CHECK:      DW_TAG_formal_parameter
127CHECK:        DW_AT_name ("arg")
128CHECK:        DW_AT_type (0x000000a7
129CHECK:        DW_AT_location (DW_OP_fbreg -4)
130CHECK:      NULL
131CHECK:    DW_TAG_subprogram
132CHECK:      DW_AT_name ("inc")
133CHECK:      DW_AT_type (0x000000a7
134CHECK:      DW_AT_low_pc (0x0000000100000f20)
135CHECK:      DW_AT_high_pc (0x0000000100000f37)
136CHECK:      DW_AT_frame_base (DW_OP_reg6 RBP)
137CHECK:    NULL
138
139CHECK:  Compile Unit:
140
141CHECK:  DW_TAG_compile_unit
142CHECK:    DW_AT_producer ("Apple LLVM version 6.0 (clang-600.0.39) (based on LLVM 3.5svn)")
143CHECK:    DW_AT_name ("basic3.c")
144CHECK:    DW_AT_stmt_list (0x00000093)
145CHECK:    DW_AT_comp_dir ("/Inputs")
146CHECK:    DW_AT_low_pc (0x0000000100000f40)
147CHECK:    DW_TAG_variable
148CHECK:      DW_AT_name ("val")
149CHECK:      DW_AT_type (0x00000162
150CHECK:      DW_AT_decl_file ("/Inputs{{[/\\]}}basic3.c")
151BASIC:      DW_AT_location (DW_OP_addr 0x100001004)
152ARCHIVE:    DW_AT_location (DW_OP_addr 0x100001008)
153CHECK:    DW_TAG_volatile_type
154CHECK:      DW_AT_type (0x00000167
155CHECK:    DW_TAG_base_type
156CHECK:      DW_AT_name ("int")
157CHECK:    DW_TAG_subprogram
158CHECK:      DW_AT_name ("bar")
159CHECK:      DW_AT_type (0x00000167
160CHECK:      DW_AT_low_pc (0x0000000100000f40)
161CHECK:      DW_AT_high_pc (0x0000000100000f84)
162CHECK:      DW_AT_frame_base (DW_OP_reg6 RBP)
163CHECK:      DW_TAG_formal_parameter
164CHECK:        DW_AT_name ("arg")
165CHECK:        DW_AT_type (0x00000167
166CHECK:        DW_AT_location (DW_OP_fbreg -8)
167CHECK:      NULL
168CHECK:    DW_TAG_subprogram
169CHECK:      DW_AT_name ("inc")
170CHECK:      DW_AT_type (0x00000167
171CHECK:      DW_AT_low_pc (0x0000000100000f90)
172CHECK:      DW_AT_high_pc (0x0000000100000fa9)
173CHECK:      DW_AT_frame_base (DW_OP_reg6 RBP)
174
175CHECK:    NULL
176
177CHECK-NOT: .debug_loc contents
178
179CHECK:.debug_aranges contents:
180CHECK-NEXT:Address Range Header: length = 0x0000002c, format = DWARF32, version = 0x0002, cu_offset = 0x00000000, addr_size = 0x08, seg_size = 0x00
181CHECK-NEXT:[0x0000000100000ea0, 0x0000000100000ec4)
182CHECK-NEXT:Address Range Header: length = 0x0000003c, format = DWARF32, version = 0x0002, cu_offset = 0x00000081, addr_size = 0x08, seg_size = 0x00
183CHECK-NEXT:[0x0000000100000ed0, 0x0000000100000f19)
184CHECK-NEXT:[0x0000000100000f20, 0x0000000100000f37)
185CHECK-NEXT:Address Range Header: length = 0x0000003c, format = DWARF32, version = 0x0002, cu_offset = 0x00000126, addr_size = 0x08, seg_size = 0x00
186CHECK-NEXT:[0x0000000100000f40, 0x0000000100000f84)
187CHECK-NEXT:[0x0000000100000f90, 0x0000000100000fa9)
188
189CHECK: .debug_line contents:
190CHECK: file_names[  1]:
191CHECK-NEXT: name: "basic1.c"
192CHECK-NEXT: dir_index: 0
193CHECK: Address            Line   Column File   ISA Discriminator OpIndex Flags
194CHECK-NEXT: ------------------ ------ ------ ------ --- ------------- ------- -------------
195CHECK-NEXT: 0x0000000100000ea0     23      0      1   0             0       0  is_stmt
196CHECK-NEXT: 0x0000000100000eb6     24      0      1   0             0       0  is_stmt prologue_end
197CHECK-NEXT: 0x0000000100000ec4     24      0      1   0             0       0  is_stmt end_sequence
198
199CHECK: file_names[  1]:
200CHECK-NEXT: name: "basic2.c"
201CHECK-NEXT: dir_index: 0
202CHECK: Address            Line   Column File   ISA Discriminator OpIndex Flags
203CHECK-NEXT: ------------------ ------ ------ ------ --- ------------- ------- -------------
204CHECK-NEXT: 0x0000000100000ed0     19      0      1   0             0       0  is_stmt
205CHECK-NEXT: 0x0000000100000ee2     20      0      1   0             0       0  is_stmt prologue_end
206CHECK-NEXT: 0x0000000100000f19     20      0      1   0             0       0  is_stmt end_sequence
207CHECK-NEXT: 0x0000000100000f20     14      0      1   0             0       0  is_stmt
208CHECK-NEXT: 0x0000000100000f24     15      0      1   0             0       0  is_stmt prologue_end
209CHECK-NEXT: 0x0000000100000f37     15      0      1   0             0       0  is_stmt end_sequence
210
211CHECK: file_names[  1]:
212CHECK-NEXT: name: "basic3.c"
213CHECK-NEXT: dir_index: 0
214CHECK: Address            Line   Column File   ISA Discriminator OpIndex Flags
215CHECK-NEXT: ------------------ ------ ------ ------ --- ------------- ------- -------------
216CHECK-NEXT: 0x0000000100000f40     16      0      1   0             0       0  is_stmt
217CHECK-NEXT: 0x0000000100000f4b     17      0      1   0             0       0  is_stmt prologue_end
218CHECK-NEXT: 0x0000000100000f58     18      0      1   0             0       0  is_stmt
219CHECK-NEXT: 0x0000000100000f6c     19      0      1   0             0       0  is_stmt
220CHECK-NEXT: 0x0000000100000f7b     20      0      1   0             0       0  is_stmt
221CHECK-NEXT: 0x0000000100000f84     20      0      1   0             0       0  is_stmt end_sequence
222CHECK-NEXT: 0x0000000100000f90     11      0      1   0             0       0  is_stmt
223CHECK-NEXT: 0x0000000100000f9b     12      0      1   0             0       0  is_stmt prologue_end
224CHECK-NEXT: 0x0000000100000fa9     12      0      1   0             0       0  is_stmt end_sequence
225
226PUB: .debug_pubnames contents:
227PUB-NEXT: length = 0x00000017, format = DWARF32, version = 0x0002, unit_offset = 0x00000000, unit_size = 0x00000081
228PUB-NEXT: Offset     Name
229PUB-NEXT: 0x00000026 "main"
230PUB-NEXT: length = 0x00000036, format = DWARF32, version = 0x0002, unit_offset = 0x00000081, unit_size = 0x000000a5
231PUB-NEXT: Offset     Name
232PUB-NEXT: 0x0000002d "private_int"
233PUB-NEXT: 0x00000042 "baz"
234PUB-NEXT: 0x00000057 "foo"
235PUB-NEXT: 0x00000086 "inc"
236PUB-NEXT: length = 0x00000026, format = DWARF32, version = 0x0002, unit_offset = 0x00000126, unit_size = 0x00000096
237PUB-NEXT: Offset     Name
238PUB-NEXT: 0x00000026 "val"
239PUB-NEXT: 0x00000048 "bar"
240PUB-NEXT: 0x00000077 "inc"
241
242PUB: .debug_pubtypes contents:
243PUB-NEXT: length = 0x0000001f, format = DWARF32, version = 0x0002, unit_offset = 0x00000000, unit_size = 0x00000081
244PUB-NEXT: Offset     Name
245PUB-NEXT: 0x00000063 "int"
246PUB-NEXT: 0x00000079 "char"
247PUB-NEXT: length = 0x00000016, format = DWARF32, version = 0x0002, unit_offset = 0x00000081, unit_size = 0x000000a5
248PUB-NEXT: Offset     Name
249PUB-NEXT: 0x00000026 "int"
250PUB-NEXT: length = 0x00000016, format = DWARF32, version = 0x0002, unit_offset = 0x00000126, unit_size = 0x00000096
251PUB-NEXT: Offset     Name
252PUB-NEXT: 0x00000041 "int"
253