1 RUN: dsymutil -no-output -verbose -oso-prepend-path=%p %p/Inputs/basic.macho.x86_64 | FileCheck %s
2 RUN: dsymutil -no-output -verbose -oso-prepend-path=%p %p/Inputs/basic-lto.macho.x86_64 | FileCheck %s --check-prefix=CHECK-LTO
3 RUN: dsymutil -no-output -verbose -oso-prepend-path=%p %p/Inputs/basic-archive.macho.x86_64 | FileCheck %s --check-prefix=CHECK-ARCHIVE
4 RUN: dsymutil -no-output -verbose -oso-prepend-path=%p %p/Inputs/basic.macho.x86_64 %p/Inputs/basic-lto.macho.x86_64 %p/Inputs/basic-archive.macho.x86_64 | FileCheck %s --check-prefix=CHECK --check-prefix=CHECK-LTO --check-prefix=CHECK-ARCHIVE
6 This test check the basic Dwarf linking process through the debug dumps.
8 ================================= Simple link ================================
9 CHECK: DEBUG MAP OBJECT: {{.*}}basic1.macho.x86_64.o
10 CHECK: Input compilation unit:
11 CHECK-NEXT: TAG_compile_unit
13 CHECK: AT_name {{.*}}basic1.c
15 CHECK: DEBUG MAP OBJECT: {{.*}}basic2.macho.x86_64.o
16 CHECK: Input compilation unit:
17 CHECK-NEXT: TAG_compile_unit
19 CHECK: AT_name {{.*}}basic2.c
21 CHECK: DEBUG MAP OBJECT: {{.*}}basic3.macho.x86_64.o
22 CHECK: Input compilation unit:
23 CHECK-NEXT: TAG_compile_unit
25 CHECK: AT_name {{.*}}basic3.c
27 CHECK-NOT: Found valid debug map entry
28 CHECK: Found valid debug map entry: _main 0000000000000000 => 0000000100000ea0
29 CHECK-NEXT: DW_TAG_subprogram
30 CHECK-NEXT: DW_AT_name{{.*}}"main"
32 CHECK: Found valid debug map entry: _private_int 0000000000000560 => 0000000100001008
33 CHECK-NEXT: DW_TAG_variable
34 CHECK-NEXT: DW_AT_name {{.*}}"private_int"
35 CHECK-NOT: Found valid debug map entry
36 CHECK: Found valid debug map entry: _baz 0000000000000310 => 0000000100001000
37 CHECK-NEXT: DW_TAG_variable
38 CHECK-NEXT: DW_AT_name {{.*}}"baz"
39 CHECK-NOT: Found valid debug map entry
40 CHECK: Found valid debug map entry: _foo 0000000000000020 => 0000000100000ed0
41 CHECK-NEXT: DW_TAG_subprogram
42 CHECK-NEXT: DW_AT_name {{.*}}"foo"
43 CHECK-NOT: Found valid debug map entry
44 CHECK: Found valid debug map entry: _inc 0000000000000070 => 0000000100000f20
45 CHECK-NEXT: DW_TAG_subprogram
46 CHECK-NEXT: DW_AT_name {{.*}}"inc"
48 CHECK-NOT: Found valid debug map entry
49 CHECK: Found valid debug map entry: _val ffffffffffffffff => 0000000100001004
50 CHECK-NEXT: DW_TAG_variable
51 CHECK-NEXT: DW_AT_name {{.*}}"val"
52 CHECK-NOT: Found valid debug map entry
53 CHECK: Found valid debug map entry: _bar 0000000000000020 => 0000000100000f40
54 CHECK-NEXT: DW_TAG_subprogram
55 CHECK-NEXT: DW_AT_name {{.*}}"bar"
56 CHECK-NOT: Found valid debug map entry
57 CHECK: Found valid debug map entry: _inc 0000000000000070 => 0000000100000f90
58 CHECK-NEXT: DW_TAG_subprogram
59 CHECK-NEXT: DW_AT_name {{.*}}"inc")
62 ================================= LTO link ================================
63 CHECK-LTO: DEBUG MAP OBJECT: {{.*}}basic-lto.macho.x86_64.o
64 CHECK-LTO: Input compilation unit:
65 CHECK-LTO-NEXT: TAG_compile_unit
67 CHECK-LTO: AT_name {{.*}}basic1.c
68 CHECK-LTO: Input compilation unit:
69 CHECK-LTO-NEXT: TAG_compile_unit
71 CHECK-LTO: AT_name {{.*}}basic2.c
72 CHECK-LTO: Input compilation unit:
73 CHECK-LTO-NEXT: TAG_compile_unit
75 CHECK-LTO: AT_name {{.*}}basic3.c
77 CHECK-LTO-NOT: Found valid debug map entry
78 CHECK-LTO: Found valid debug map entry: _main 0000000000000000 => 0000000100000f40
79 CHECK-LTO-NEXT: DW_TAG_subprogram
80 CHECK-LTO-NEXT: DW_AT_name {{.*}}"main"
81 CHECK-LTO-NOT: Found valid debug map entry
82 CHECK-LTO: Found valid debug map entry: _private_int 00000000000008e8 => 0000000100001008
83 CHECK-LTO-NEXT: DW_TAG_variable
84 CHECK-LTO-NEXT: DW_AT_name {{.*}}"private_int"
85 CHECK-LTO-NOT: Found valid debug map entry
86 CHECK-LTO: Found valid debug map entry: _baz 0000000000000658 => 0000000100001000
87 CHECK-LTO-NEXT: DW_TAG_variable
88 CHECK-LTO-NEXT: DW_AT_name {{.*}} "baz"
89 CHECK-LTO-NOT: Found valid debug map entry
90 CHECK-LTO: Found valid debug map entry: _foo 0000000000000010 => 0000000100000f50
91 CHECK-LTO-NEXT: DW_TAG_subprogram
92 CHECK-LTO-NEXT: DW_AT_name {{.*}}"foo"
93 CHECK-LTO-NOT: Found valid debug map entry
94 CHECK-LTO: Found valid debug map entry: _val 00000000000008ec => 0000000100001004
95 CHECK-LTO-NEXT: DW_TAG_variable
96 CHECK-LTO-NEXT: DW_AT_name {{.*}}"val"
97 CHECK-LTO-NOT: Found valid debug map entry
98 CHECK-LTO: Found valid debug map entry: _bar 0000000000000050 => 0000000100000f90
99 CHECK-LTO-NEXT: DW_TAG_subprogram
100 CHECK-LTO-NEXT: DW_AT_name {{.*}}"bar"
103 ================================= Archive link ================================
104 CHECK-ARCHIVE: DEBUG MAP OBJECT: {{.*}}basic1.macho.x86_64.o
105 CHECK-ARCHIVE: Input compilation unit:
106 CHECK-ARCHIVE-NEXT: TAG_compile_unit
107 CHECK-ARCHIVE-NOT: TAG
108 CHECK-ARCHIVE: AT_name {{.*}}basic1.c
110 CHECK-ARCHIVE: DEBUG MAP OBJECT: {{.*}}libbasic.a(basic2.macho.x86_64.o)
111 CHECK-ARCHIVE: Input compilation unit:
112 CHECK-ARCHIVE-NEXT: TAG_compile_unit
113 CHECK-ARCHIVE-NOT: TAG
114 CHECK-ARCHIVE: AT_name {{.*}}basic2.c
116 CHECK-ARCHIVE: DEBUG MAP OBJECT: {{.*}}libbasic.a(basic3.macho.x86_64.o)
117 CHECK-ARCHIVE: Input compilation unit:
118 CHECK-ARCHIVE-NEXT: TAG_compile_unit
119 CHECK-ARCHIVE-NOT: TAG
120 CHECK-ARCHIVE: AT_name {{.*}}basic3.c
122 CHECK-ARCHIVE-NOT: Found valid debug map entry
123 CHECK-ARCHIVE: Found valid debug map entry: _main 0000000000000000 => 0000000100000ea0
124 CHECK-ARCHIVE-NEXT: DW_TAG_subprogram
125 CHECK-ARCHIVE-NEXT: DW_AT_name{{.*}}"main"
127 CHECK-ARCHIVE-NOT: Found valid debug map entry
128 CHECK-ARCHIVE: Found valid debug map entry: _private_int 0000000000000560 => 0000000100001004
129 CHECK-ARCHIVE-NEXT: DW_TAG_variable
130 CHECK-ARCHIVE-NEXT: DW_AT_name {{.*}}"private_int"
131 CHECK-ARCHIVE-NOT: Found valid debug map entry
132 CHECK-ARCHIVE: Found valid debug map entry: _baz 0000000000000310 => 0000000100001000
133 CHECK-ARCHIVE-NEXT: DW_TAG_variable
134 CHECK-ARCHIVE-NEXT: DW_AT_name {{.*}}"baz"
135 CHECK-ARCHIVE-NOT: Found valid debug map entry
136 CHECK-ARCHIVE: Found valid debug map entry: _foo 0000000000000020 => 0000000100000ed0
137 CHECK-ARCHIVE-NEXT: DW_TAG_subprogram
138 CHECK-ARCHIVE-NEXT: DW_AT_name {{.*}}"foo"
139 CHECK-ARCHIVE-NOT: Found valid debug map entry
140 CHECK-ARCHIVE: Found valid debug map entry: _inc 0000000000000070 => 0000000100000f20
141 CHECK-ARCHIVE-NEXT: DW_TAG_subprogram
142 CHECK-ARCHIVE-NEXT: DW_AT_name {{.*}}"inc"
144 CHECK-ARCHIVE-NOT: Found valid debug map entry
145 CHECK-ARCHIVE: Found valid debug map entry: _val ffffffffffffffff => 0000000100001008
146 CHECK-ARCHIVE-NEXT: DW_TAG_variable
147 CHECK-ARCHIVE-NEXT: DW_AT_name {{.*}}"val"
148 CHECK-ARCHIVE-NOT: Found valid debug map entry
149 CHECK-ARCHIVE: Found valid debug map entry: _bar 0000000000000020 => 0000000100000f40
150 CHECK-ARCHIVE-NEXT: DW_TAG_subprogram
151 CHECK-ARCHIVE-NEXT: DW_AT_name {{.*}}"bar"
152 CHECK-ARCHIVE-NOT: Found valid debug map entry
153 CHECK-ARCHIVE: Found valid debug map entry: _inc 0000000000000070 => 0000000100000f90
154 CHECK-ARCHIVE-NEXT: DW_TAG_subprogram
155 CHECK-ARCHIVE-NEXT: DW_AT_name {{.*}}"inc")