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