This patch is extracted from D96035, it adds support for the existing DWARFLinker functionality. What is not supported yet: 1. Types deduplication(--odr mode). 2. Modules deduplication. 3. Generation of index tables. Reland2: temporarily disabled call to "--linker llvm" for tls-variable.test and location-expression.test as it does not work properly on bigendian architecture. Differential Revision: https://reviews.llvm.org/D153268
120 lines
5.1 KiB
Plaintext
120 lines
5.1 KiB
Plaintext
REQUIRES: system-darwin
|
|
|
|
RUN: dsymutil --linker llvm --symbol-map %p/../../Inputs/obfuscated.map %p/../../Inputs/obfuscated.arm64 -f -o - \
|
|
RUN: | llvm-dwarfdump -v - \
|
|
RUN: | FileCheck %s
|
|
|
|
RUN: dsymutil --linker llvm --symbol-map %p/../../Inputs/obfuscated.map %p/../../Inputs/obfuscated.arm64 -f -o - \
|
|
RUN: | llvm-dwarfdump -v - \
|
|
RUN: | FileCheck --check-prefix=NOHIDDEN %s
|
|
|
|
RUN: dsymutil --linker llvm --symbol-map %p/../../Inputs/obfuscated.2.map %p/../../Inputs/obfuscated.2.arm64 -f -o - \
|
|
RUN: | llvm-dwarfdump -v - \
|
|
RUN: | FileCheck --check-prefix=NOHIDDEN %s
|
|
|
|
// Run with plist and make sure dsymutil finds it.
|
|
RUN: mkdir -p %t.dSYM/Contents/Resources/DWARF/
|
|
RUN: mkdir -p %t.mapdir
|
|
RUN: cp %p/../../Inputs/obfuscated.arm64 %t.dSYM/Contents/Resources/DWARF/
|
|
RUN: cp %p/../../Inputs/E828A486-8433-3A5E-B6DB-A6294D28133D.plist %t.dSYM/Contents/Resources/
|
|
RUN: cp %p/../../Inputs/obfuscated.map %t.mapdir/506AA50A-6B26-3B37-86D2-DC6EBD57B720.bcsymbolmap
|
|
RUN: dsymutil --linker llvm --symbol-map %t.mapdir %t.dSYM 2>&1 | FileCheck --check-prefix=OBFUSCATING %s
|
|
|
|
// Run without plist and make sure dsymutil doesn't crash.
|
|
RUN: rm %t.dSYM/Contents/Resources/E828A486-8433-3A5E-B6DB-A6294D28133D.plist
|
|
RUN: dsymutil --linker llvm --symbol-map %t.mapdir %t.dSYM 2>&1 | FileCheck --check-prefix=NOTOBFUSCATING %s
|
|
|
|
OBFUSCATING-NOT: not unobfuscating
|
|
|
|
NOTOBFUSCATING: not unobfuscating
|
|
|
|
NOHIDDEN-NOT: __hidden#
|
|
|
|
CHECK: .debug_info contents:
|
|
|
|
CHECK: DW_TAG_compile_unit [1] *
|
|
CHECK: DW_AT_producer [DW_FORM_strp] ( {{.*}} "Apple LLVM version 7.0.0 (clang-700.2.38.2)")
|
|
CHECK: DW_AT_name [DW_FORM_strp] ( {{.*}} "main.c")
|
|
CHECK: DW_AT_comp_dir [DW_FORM_strp] ( {{.*}} "/Users/steven/dev/alpena/tests/src")
|
|
CHECK: DW_TAG_subprogram [2]
|
|
CHECK: DW_AT_name [DW_FORM_strp] ( {{.*}} "main")
|
|
|
|
CHECK: DW_TAG_compile_unit [1] *
|
|
CHECK: DW_AT_producer [DW_FORM_strp] ( {{.*}} "Apple LLVM version 7.0.0 (clang-700.2.38.2)")
|
|
CHECK: DW_AT_name [DW_FORM_strp] ( {{.*}} "one.c")
|
|
CHECK: DW_AT_comp_dir [DW_FORM_strp] ( {{.*}} "/Users/steven/dev/alpena/tests/src")
|
|
CHECK: DW_TAG_subprogram [2]
|
|
CHECK: DW_AT_name [DW_FORM_strp] ( {{.*}} "one")
|
|
|
|
CHECK: DW_TAG_compile_unit [1] *
|
|
CHECK: DW_AT_producer [DW_FORM_strp] ( {{.*}} "Apple LLVM version 7.0.0 (clang-700.2.38.2)")
|
|
CHECK: DW_AT_name [DW_FORM_strp] ( {{.*}} "two.c")
|
|
CHECK: DW_AT_comp_dir [DW_FORM_strp] ( {{.*}} "/Users/steven/dev/alpena/tests/src")
|
|
CHECK: DW_TAG_subprogram [2]
|
|
CHECK: DW_AT_name [DW_FORM_strp] ( {{.*}} "two")
|
|
|
|
CHECK: DW_TAG_compile_unit [1] *
|
|
CHECK: DW_AT_producer [DW_FORM_strp] ( {{.*}} "Apple LLVM version 7.0.0 (clang-700.2.38.2)")
|
|
CHECK: DW_AT_name [DW_FORM_strp] ( {{.*}} "three.c")
|
|
CHECK: DW_AT_comp_dir [DW_FORM_strp] ( {{.*}} "/Users/steven/dev/alpena/tests/src")
|
|
CHECK: DW_TAG_subprogram [2]
|
|
CHECK: DW_AT_name [DW_FORM_strp] ( {{.*}} "three")
|
|
|
|
CHECK: DW_TAG_compile_unit [1] *
|
|
CHECK: DW_AT_producer [DW_FORM_strp] ( {{.*}} "Apple LLVM version 7.0.0 (clang-700.2.38.2)")
|
|
CHECK: DW_AT_name [DW_FORM_strp] ( {{.*}} "four.c")
|
|
CHECK: DW_AT_stmt_list [DW_FORM_data4] (0x0000011e)
|
|
CHECK: DW_AT_comp_dir [DW_FORM_strp] ( {{.*}} "/Users/steven/dev/alpena/tests/src")
|
|
CHECK: DW_TAG_subprogram [2]
|
|
CHECK: DW_AT_name [DW_FORM_strp] ( {{.*}} "four")
|
|
|
|
CHECK: DW_TAG_compile_unit [1] *
|
|
CHECK: DW_AT_producer [DW_FORM_strp] ( {{.*}} "Apple LLVM version 7.0.0 (clang-700.2.38.2)")
|
|
CHECK: DW_AT_name [DW_FORM_strp] ( {{.*}} "five.c")
|
|
CHECK: DW_AT_comp_dir [DW_FORM_strp] ( {{.*}} "/Users/steven/dev/alpena/tests/src")
|
|
CHECK: DW_TAG_subprogram [2]
|
|
CHECK: DW_AT_name [DW_FORM_strp] ( {{.*}} "five")
|
|
|
|
CHECK: DW_TAG_compile_unit [1] *
|
|
CHECK: DW_AT_producer [DW_FORM_strp] ( {{.*}} "Apple LLVM version 7.0.0 (clang-700.2.38.2)")
|
|
CHECK: DW_AT_name [DW_FORM_strp] ( {{.*}} "six.c")
|
|
CHECK: DW_AT_comp_dir [DW_FORM_strp] ( {{.*}} "/Users/steven/dev/alpena/tests/src")
|
|
CHECK: DW_TAG_subprogram [2]
|
|
CHECK: DW_AT_name [DW_FORM_strp] ( {{.*}} "six")
|
|
|
|
CHECK: .debug_line contents:
|
|
CHECK: file_names[ 1]:
|
|
CHECK: name: "main.c"
|
|
CHECK: dir_index: 0
|
|
CHECK: mod_time: 0x00000000
|
|
CHECK: file_names[ 1]:
|
|
CHECK: name: "one.c"
|
|
CHECK: dir_index: 0
|
|
CHECK: mod_time: 0x00000000
|
|
CHECK: length: 0x00000000
|
|
CHECK: file_names[ 1]:
|
|
CHECK: name: "two.c"
|
|
CHECK: dir_index: 0
|
|
CHECK: mod_time: 0x00000000
|
|
CHECK: length: 0x00000000
|
|
CHECK: file_names[ 1]:
|
|
CHECK: name: "three.c"
|
|
CHECK: dir_index: 0
|
|
CHECK: mod_time: 0x00000000
|
|
CHECK: length: 0x00000000
|
|
CHECK: file_names[ 1]:
|
|
CHECK: name: "four.c"
|
|
CHECK: dir_index: 0
|
|
CHECK: mod_time: 0x00000000
|
|
CHECK: length: 0x00000000
|
|
CHECK: file_names[ 1]:
|
|
CHECK: name: "five.c"
|
|
CHECK: dir_index: 0
|
|
CHECK: mod_time: 0x00000000
|
|
CHECK: length: 0x00000000
|
|
CHECK: file_names[ 1]:
|
|
CHECK: name: "six.c"
|
|
CHECK: dir_index: 0
|
|
CHECK: mod_time: 0x00000000
|
|
CHECK: length: 0x00000000
|