[DWARF parser] Add basic support for DWZ DWARF multifile extensions.
authorAlexey Samsonov <vonosmas@gmail.com>
Tue, 19 May 2015 20:29:28 +0000 (20:29 +0000)
committerAlexey Samsonov <vonosmas@gmail.com>
Tue, 19 May 2015 20:29:28 +0000 (20:29 +0000)
commitbf19a578e602d65d6d6ccc58586c41958a29b184
tree8314f6d236a9004d2a7e12aaaf0165bb36205829
parentf999547d11249ff13853683d5ca63383593ef4fd
[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
llvm/include/llvm/DebugInfo/DWARF/DWARFFormValue.h
llvm/include/llvm/Support/Dwarf.h
llvm/lib/DebugInfo/DWARF/DWARFDebugInfoEntry.cpp
llvm/lib/DebugInfo/DWARF/DWARFFormValue.cpp
llvm/lib/Support/Dwarf.cpp
llvm/test/DebugInfo/Inputs/dwarfdump-test-dwz.elf-x86-64 [new file with mode: 0755]
llvm/test/DebugInfo/Inputs/dwarfdump-test.cc
llvm/test/DebugInfo/Inputs/dwarfdump-test.elf-x86-64.dwz [new file with mode: 0644]
llvm/test/DebugInfo/dwarfdump-dwz.test [new file with mode: 0644]