summaryrefslogtreecommitdiffstats
path: root/llvm/test
diff options
context:
space:
mode:
authorAlexey Samsonov <vonosmas@gmail.com>2015-05-19 20:29:28 +0000
committerAlexey Samsonov <vonosmas@gmail.com>2015-05-19 20:29:28 +0000
commitbf19a578e602d65d6d6ccc58586c41958a29b184 (patch)
tree8314f6d236a9004d2a7e12aaaf0165bb36205829 /llvm/test
parentf999547d11249ff13853683d5ca63383593ef4fd (diff)
downloadbcm5719-llvm-bf19a578e602d65d6d6ccc58586c41958a29b184.tar.gz
bcm5719-llvm-bf19a578e602d65d6d6ccc58586c41958a29b184.zip
[DWARF parser] Add basic support for DWZ DWARF multifile extensions.
This change implements basic support for DWARF alternate sections proposal: http://www.dwarfstd.org/ShowIssue.php?issue=120604.1&type=open LLVM tools now understand new forms: DW_FORM_GNU_ref_alt and DW_FORM_GNU_strp_alt, which are used as references to .debug_info and .debug_str sections respectively, stored in a separate file, and possibly shared between different executables / shared objects. llvm-dwarfdump and llvm-symbolizer don't yet know how to access this alternate debug file (usually pointed by .gnu_debugaltlink section), but they can at lease properly parse and dump regular files, which refer to it. This change should fix crashes of llvm-dwarfdump and llvm-symbolizer on files produced by running "dwz" tool. Such files are already installed on some modern Linux distributions. llvm-svn: 237721
Diffstat (limited to 'llvm/test')
-rwxr-xr-xllvm/test/DebugInfo/Inputs/dwarfdump-test-dwz.elf-x86-64bin0 -> 9399 bytes
-rw-r--r--llvm/test/DebugInfo/Inputs/dwarfdump-test.cc6
-rw-r--r--llvm/test/DebugInfo/Inputs/dwarfdump-test.elf-x86-64.dwzbin0 -> 1026 bytes
-rw-r--r--llvm/test/DebugInfo/dwarfdump-dwz.test14
4 files changed, 20 insertions, 0 deletions
diff --git a/llvm/test/DebugInfo/Inputs/dwarfdump-test-dwz.elf-x86-64 b/llvm/test/DebugInfo/Inputs/dwarfdump-test-dwz.elf-x86-64
new file mode 100755
index 00000000000..937961b59be
--- /dev/null
+++ b/llvm/test/DebugInfo/Inputs/dwarfdump-test-dwz.elf-x86-64
Binary files differ
diff --git a/llvm/test/DebugInfo/Inputs/dwarfdump-test.cc b/llvm/test/DebugInfo/Inputs/dwarfdump-test.cc
index 40899986490..14295d3cffa 100644
--- a/llvm/test/DebugInfo/Inputs/dwarfdump-test.cc
+++ b/llvm/test/DebugInfo/Inputs/dwarfdump-test.cc
@@ -21,3 +21,9 @@ int main() {
// $ cp dwarfdump-test.cc /tmp/dbginfo
// $ cd /tmp/dbginfo
// $ clang++ -g dwarfdump-test.cc -o <output>
+
+// The result is also used as an input to .dwz tool:
+// $ cp <output> output1.dwz
+// $ cp <output> output2.dwz
+// $ dwz -m output.dwz -r output1.dwz output2.dwz
+// $ rm output2.dwz
diff --git a/llvm/test/DebugInfo/Inputs/dwarfdump-test.elf-x86-64.dwz b/llvm/test/DebugInfo/Inputs/dwarfdump-test.elf-x86-64.dwz
new file mode 100644
index 00000000000..32db372fcda
--- /dev/null
+++ b/llvm/test/DebugInfo/Inputs/dwarfdump-test.elf-x86-64.dwz
Binary files differ
diff --git a/llvm/test/DebugInfo/dwarfdump-dwz.test b/llvm/test/DebugInfo/dwarfdump-dwz.test
new file mode 100644
index 00000000000..e5f67ebe487
--- /dev/null
+++ b/llvm/test/DebugInfo/dwarfdump-dwz.test
@@ -0,0 +1,14 @@
+; RUN: llvm-dwarfdump %p/Inputs/dwarfdump-test-dwz.elf-x86-64 -debug-dump=info | FileCheck %s -check-prefix DUMP_INFO
+
+; DUMP_INFO: .debug_info
+; DUMP_INFO: DW_TAG_compile_unit [2] *
+; DUMP_INFO-NEXT: DW_AT_producer [DW_FORM_GNU_strp_alt] (alt indirect string, offset: 0x0)
+; DUMP_INFO-NEXT: DW_AT_language [DW_FORM_data2] (DW_LANG_C_plus_plus)
+; DUMP_INFO-NEXT: DW_AT_name [DW_FORM_GNU_strp_alt] (alt indirect string, offset: 0x31)
+; DUMP_INFO-NEXT: DW_AT_low_pc [DW_FORM_addr] (0x0000000000000000)
+; DUMP_INFO-NEXT: DW_AT_stmt_list [DW_FORM_data4] (0x00000000)
+; DUMP_INFO-NEXT: DW_AT_comp_dir [DW_FORM_GNU_strp_alt] (alt indirect string, offset: 0x6b)
+
+; DUMP_INFO: DW_TAG_imported_unit [4]
+; DUMP_INFO-NEXT: DW_AT_import [DW_FORM_GNU_ref_alt] (<alt 0xb>)
+
OpenPOWER on IntegriCloud