breakpad/src/common/dwarf
Mark Mentovai 7398ce15b7 Initial support for dumping DWARF corresponding to Swift code
The DWARF data for Swift code has a top-level DW_TAG_module DIE as the
child of the DW_TAG_compile_unit DIE and the parent of the
DW_TAG_subprogram DIEs that dump_syms uses to locate functions.
dump_syms needs to process DW_TAG_module DIEs as introducing nested
scopes to make it work with Swift.

This also reworks demangling to be language-specific, so that the C++
demangler isn't invoked when processing Swift code. The DWARF data for
Swift code presents its mangled names in the same form as used for C++
(DW_AT_MIPS_linkage_name or DW_AT_linkage_name) but the mangling is
Swift-specific (beginning with _T instead of _Z). There is no
programmatic interface to a Swift name demangler as an analogue to C++'s
__cxa_demangle(), so mangled Swift names are exposed as-is. Xcode's
"xcrun swift-demangle" can be used to post-process these mangled Swift
names on macOS.

Support for mangled names presented in a DW_AT_linkage_name attribute,
as used by DWARF 4, is added. This supersedes the earlier use of
DW_AT_MIPS_linkage_name.

BUG=google-breakpad:702,google-breakpad:715
R=ted.mielczarek@gmail.com

Review URL: https://codereview.chromium.org/2147523005 .
2016-09-23 14:22:42 -04:00
..
bytereader-inl.h convert to uint8_t* for binary data to fix -Wnarrowing build errors 2016-01-26 15:38:19 -05:00
bytereader.cc Add debug fission support. 2016-05-04 11:09:44 -07:00
bytereader.h Add debug fission support. 2016-05-04 11:09:44 -07:00
bytereader_unittest.cc convert to uint8_t* for binary data to fix -Wnarrowing build errors 2016-01-26 15:38:19 -05:00
cfi_assembler.cc Use stdint types everywhere 2013-03-06 14:04:42 +00:00
cfi_assembler.h Use stdint types everywhere 2013-03-06 14:04:42 +00:00
dwarf2diehandler.cc convert to uint8_t* for binary data to fix -Wnarrowing build errors 2016-01-26 15:38:19 -05:00
dwarf2diehandler.h convert to uint8_t* for binary data to fix -Wnarrowing build errors 2016-01-26 15:38:19 -05:00
dwarf2diehandler_unittest.cc convert to uint8_t* for binary data to fix -Wnarrowing build errors 2016-01-26 15:38:19 -05:00
dwarf2enums.h Initial support for dumping DWARF corresponding to Swift code 2016-09-23 14:22:42 -04:00
dwarf2reader.cc Fixes up dump_syms build on OS X so it works with ELF. 2016-05-12 11:38:09 -07:00
dwarf2reader.h Add debug fission support. 2016-05-04 11:09:44 -07:00
dwarf2reader_cfi_unittest.cc convert to uint8_t* for binary data to fix -Wnarrowing build errors 2016-01-26 15:38:19 -05:00
dwarf2reader_die_unittest.cc breakpad: fix unittest errors 2016-05-04 16:48:00 -07:00
dwarf2reader_test_common.h Use stdint types everywhere 2013-03-06 14:04:42 +00:00
elf_reader.cc This change allows compiling the google-breakpad code using a global ::string class instead of std::string. 2016-08-30 23:31:43 +00:00
elf_reader.h Add debug fission support. 2016-05-04 11:09:44 -07:00
functioninfo.cc Mac: Fix more errors from clang to get crash_report.xcodeproj close to compiling. 2013-05-08 20:24:03 +00:00
functioninfo.h Remove dead code. 2012-12-12 04:02:58 +00:00
line_state_machine.h Clean up build for 64 bit. 2010-07-19 20:43:49 +00:00
types.h Define intptr and uintptr in a more generic way 2016-01-11 12:38:28 -05:00