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