1REQUIRES: system-darwin
2
3RUN: dsymutil --symbol-map %p/../Inputs/obfuscated.map %p/../Inputs/obfuscated.arm64 -f -o - \
4RUN:     | llvm-dwarfdump -v - \
5RUN:     | FileCheck %s
6
7RUN: dsymutil --accelerator=Pub --symbol-map %p/../Inputs/obfuscated.map %p/../Inputs/obfuscated.arm64 -f -o - \
8RUN:     | llvm-dwarfdump -v - \
9RUN:     | FileCheck --check-prefix=PUB %s
10
11RUN: dsymutil --symbol-map %p/../Inputs/obfuscated.map %p/../Inputs/obfuscated.arm64 -f -o - \
12RUN:     | llvm-dwarfdump -v - \
13RUN:     | FileCheck --check-prefix=NOHIDDEN %s
14
15RUN: dsymutil --symbol-map %p/../Inputs/obfuscated.2.map %p/../Inputs/obfuscated.2.arm64 -f -o - \
16RUN:     | llvm-dwarfdump -v - \
17RUN:     | FileCheck --check-prefix=NOHIDDEN %s
18
19// Run with plist and make sure dsymutil finds it.
20RUN: mkdir -p %t.dSYM/Contents/Resources/DWARF/
21RUN: mkdir -p %t.mapdir
22RUN: cp %p/../Inputs/obfuscated.arm64 %t.dSYM/Contents/Resources/DWARF/
23RUN: cp %p/../Inputs/E828A486-8433-3A5E-B6DB-A6294D28133D.plist %t.dSYM/Contents/Resources/
24RUN: cp %p/../Inputs/obfuscated.map %t.mapdir/506AA50A-6B26-3B37-86D2-DC6EBD57B720.bcsymbolmap
25RUN: dsymutil --symbol-map %t.mapdir %t.dSYM 2>&1 | FileCheck --check-prefix=OBFUSCATING %s
26
27// Run without plist and make sure dsymutil doesn't crash.
28RUN: rm %t.dSYM/Contents/Resources/E828A486-8433-3A5E-B6DB-A6294D28133D.plist
29RUN: dsymutil --symbol-map %t.mapdir %t.dSYM 2>&1 | FileCheck --check-prefix=NOTOBFUSCATING %s
30
31OBFUSCATING-NOT: not unobfuscating
32
33NOTOBFUSCATING: not unobfuscating
34
35NOHIDDEN-NOT: __hidden#
36
37CHECK: .debug_info contents:
38
39CHECK: DW_TAG_compile_unit [1] *
40CHECK:    DW_AT_producer [DW_FORM_strp]    ( {{.*}} "Apple LLVM version 7.0.0 (clang-700.2.38.2)")
41CHECK:    DW_AT_name [DW_FORM_strp]        ( {{.*}} "main.c")
42CHECK:    DW_AT_comp_dir [DW_FORM_strp]    ( {{.*}} "/Users/steven/dev/alpena/tests/src")
43CHECK:    DW_TAG_subprogram [2]
44CHECK:      DW_AT_name [DW_FORM_strp]      ( {{.*}} "main")
45
46CHECK:  DW_TAG_compile_unit [1] *
47CHECK:    DW_AT_producer [DW_FORM_strp]    ( {{.*}} "Apple LLVM version 7.0.0 (clang-700.2.38.2)")
48CHECK:    DW_AT_name [DW_FORM_strp]        ( {{.*}} "one.c")
49CHECK:    DW_AT_comp_dir [DW_FORM_strp]    ( {{.*}} "/Users/steven/dev/alpena/tests/src")
50CHECK:    DW_TAG_subprogram [2]
51CHECK:      DW_AT_name [DW_FORM_strp]      ( {{.*}} "one")
52
53CHECK:  DW_TAG_compile_unit [1] *
54CHECK:    DW_AT_producer [DW_FORM_strp]    ( {{.*}} "Apple LLVM version 7.0.0 (clang-700.2.38.2)")
55CHECK:    DW_AT_name [DW_FORM_strp]        ( {{.*}} "two.c")
56CHECK:    DW_AT_comp_dir [DW_FORM_strp]    ( {{.*}} "/Users/steven/dev/alpena/tests/src")
57CHECK:    DW_TAG_subprogram [2]
58CHECK:      DW_AT_name [DW_FORM_strp]      ( {{.*}} "two")
59
60CHECK:  DW_TAG_compile_unit [1] *
61CHECK:    DW_AT_producer [DW_FORM_strp]    ( {{.*}} "Apple LLVM version 7.0.0 (clang-700.2.38.2)")
62CHECK:    DW_AT_name [DW_FORM_strp]        ( {{.*}} "three.c")
63CHECK:    DW_AT_comp_dir [DW_FORM_strp]    ( {{.*}} "/Users/steven/dev/alpena/tests/src")
64CHECK:    DW_TAG_subprogram [2]
65CHECK:      DW_AT_name [DW_FORM_strp]      ( {{.*}} "three")
66
67CHECK:  DW_TAG_compile_unit [1] *
68CHECK:    DW_AT_producer [DW_FORM_strp]    ( {{.*}} "Apple LLVM version 7.0.0 (clang-700.2.38.2)")
69CHECK:    DW_AT_name [DW_FORM_strp]        ( {{.*}} "four.c")
70CHECK:    DW_AT_stmt_list [DW_FORM_data4]  (0x0000011e)
71CHECK:    DW_AT_comp_dir [DW_FORM_strp]    ( {{.*}} "/Users/steven/dev/alpena/tests/src")
72CHECK:    DW_TAG_subprogram [2]
73CHECK:      DW_AT_name [DW_FORM_strp]      ( {{.*}} "four")
74
75CHECK:  DW_TAG_compile_unit [1] *
76CHECK:    DW_AT_producer [DW_FORM_strp]    ( {{.*}} "Apple LLVM version 7.0.0 (clang-700.2.38.2)")
77CHECK:    DW_AT_name [DW_FORM_strp]        ( {{.*}} "five.c")
78CHECK:    DW_AT_comp_dir [DW_FORM_strp]    ( {{.*}} "/Users/steven/dev/alpena/tests/src")
79CHECK:    DW_TAG_subprogram [2]
80CHECK:      DW_AT_name [DW_FORM_strp]      ( {{.*}} "five")
81
82CHECK:  DW_TAG_compile_unit [1] *
83CHECK:    DW_AT_producer [DW_FORM_strp]    ( {{.*}} "Apple LLVM version 7.0.0 (clang-700.2.38.2)")
84CHECK:    DW_AT_name [DW_FORM_strp]        ( {{.*}} "six.c")
85CHECK:    DW_AT_comp_dir [DW_FORM_strp]    ( {{.*}} "/Users/steven/dev/alpena/tests/src")
86CHECK:    DW_TAG_subprogram [2]
87CHECK:      DW_AT_name [DW_FORM_strp]      ( {{.*}} "six")
88
89CHECK: .debug_line contents:
90CHECK: file_names[  1]:
91CHECK:            name: "main.c"
92CHECK:       dir_index: 0
93CHECK:        mod_time: 0x00000000
94CHECK: file_names[  1]:
95CHECK:            name: "one.c"
96CHECK:       dir_index: 0
97CHECK:        mod_time: 0x00000000
98CHECK:          length: 0x00000000
99CHECK: file_names[  1]:
100CHECK:            name: "two.c"
101CHECK:       dir_index: 0
102CHECK:        mod_time: 0x00000000
103CHECK:          length: 0x00000000
104CHECK: file_names[  1]:
105CHECK:            name: "three.c"
106CHECK:       dir_index: 0
107CHECK:        mod_time: 0x00000000
108CHECK:          length: 0x00000000
109CHECK: file_names[  1]:
110CHECK:            name: "four.c"
111CHECK:       dir_index: 0
112CHECK:        mod_time: 0x00000000
113CHECK:          length: 0x00000000
114CHECK: file_names[  1]:
115CHECK:            name: "five.c"
116CHECK:       dir_index: 0
117CHECK:        mod_time: 0x00000000
118CHECK:          length: 0x00000000
119CHECK: file_names[  1]:
120CHECK:            name: "six.c"
121CHECK:       dir_index: 0
122CHECK:        mod_time: 0x00000000
123CHECK:          length: 0x00000000
124
125PUB: .debug_pubnames contents:
126PUB: length = 0x00000017, format = DWARF32, version = 0x0002, unit_offset = 0x00000000, unit_size = 0x00000044
127PUB: 0x0000002e "main"
128PUB: length = 0x00000016, format = DWARF32, version = 0x0002, unit_offset = 0x00000044, unit_size = 0x00000044
129PUB: 0x0000002e "one"
130PUB: length = 0x00000016, format = DWARF32, version = 0x0002, unit_offset = 0x00000088, unit_size = 0x00000044
131PUB: 0x0000002e "two"
132PUB: length = 0x00000018, format = DWARF32, version = 0x0002, unit_offset = 0x000000cc, unit_size = 0x00000044
133PUB: 0x0000002e "three"
134PUB: length = 0x00000017, format = DWARF32, version = 0x0002, unit_offset = 0x00000110, unit_size = 0x00000044
135PUB: 0x0000002e "four"
136PUB: length = 0x00000017, format = DWARF32, version = 0x0002, unit_offset = 0x00000154, unit_size = 0x00000044
137PUB: 0x0000002e "five"
138PUB: length = 0x00000016, format = DWARF32, version = 0x0002, unit_offset = 0x00000198, unit_size = 0x00000044
139PUB: 0x0000002e "six"
140
141CHECK: .apple_names contents:
142
143CHECK: String: 0x00000091 "five"
144CHECK-NEXT: Data 0 [
145CHECK-NEXT:   Atom[0]: 0x00000182
146CHECK-NEXT: ]
147CHECK: String: 0x0000009c "six"
148CHECK-NEXT: Data 0 [
149CHECK-NEXT:   Atom[0]: 0x000001c6
150CHECK-NEXT: ]
151CHECK: String: 0x00000078 "three"
152CHECK-NEXT: Data 0 [
153CHECK-NEXT:   Atom[0]: 0x000000fa
154CHECK-NEXT: ]
155CHECK: String: 0x0000006c "two"
156CHECK-NEXT: Data 0 [
157CHECK-NEXT:   Atom[0]: 0x000000b6
158CHECK-NEXT: ]
159CHECK: String: 0x00000057 "main"
160CHECK-NEXT: Data 0 [
161CHECK-NEXT:   Atom[0]: 0x0000002e
162CHECK-NEXT: ]
163CHECK: String: 0x00000085 "four"
164CHECK-NEXT: Data 0 [
165CHECK-NEXT:   Atom[0]: 0x0000013e
166CHECK-NEXT: ]
167CHECK: String: 0x00000062 "one"
168CHECK-NEXT: Data 0 [
169CHECK-NEXT:   Atom[0]: 0x00000072
170CHECK-NEXT: ]
171