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