aboutsummaryrefslogtreecommitdiff
path: root/src/common/dwarf
Commit message (Collapse)AuthorAgeFilesLines
* Revert "Refactor rangelist handling to prepare for dwarf5 .debug_rngslist"HEADmasterSterling Augustine2020-10-022-9/+10
| | | | | | | | | | | | This reverts commit 2b936b06c12657b684f6c7276d6ae5a24cb48ab5. After getting deep into the dwarf5 range reader, I realized that this should be done a somewhat different way. So reverting in favor or a better design, coming in a few minutes. Change-Id: Ie0b2846e70b3df1e637831e96ea69fe093f4e712 Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/2446011 Reviewed-by: Mark Mentovai <mark@chromium.org>
* Refactor rangelist handling to prepare for dwarf5 .debug_rngslistSterling Augustine2020-09-282-10/+9
| | | | | | | | | | | | | | | | | | | | | | Dwarf5 introduces a new .debug_rngslist section, to take the place of the Dwarf4 .debug_ranges. However, the dwarf version is CU-based, and not file-based, so there can be both sections, and which section the CU needs isn't known until the dwarf parser encounters either DW_AT_ranges (dwarf 4 and lower) or DW_AT_rnglists_base (dwarf 5). This change refactors the code around range lists and range list readers to defer the decision of what section to parse until the relevant attribute is found. It moves the range list section reader from the range-list handler itself (which doesn't know which section it will use) to the CU context, and then lets the handler know when it encounters DW_AT_ranges. I will add a reader for the new dwarf5 section, along with the code to interpret the new section, and its forms and such in a subsequent patch. Change-Id: Ie92e4c9daa3f0acb98d7ef74f6b9c2065db849b1 Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/2433684 Reviewed-by: Mark Mentovai <mark@chromium.org>
* fix NDEBUG breakage with new dwarf5 codeMike Frysinger2020-07-161-0/+4
| | | | | | | | | | | These fields are only used when NDEBUG is not defined. We get build failures with the current code like: src/common/dwarf/dwarf2reader.h:181:12: error: private field 'string_buffer_length_' is not used [-Werror,-Wunused-private-field] uint64_t string_buffer_length_; Change-Id: I01d6e29d31d50e29ed3736e7197e70455724ae48 Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/2299022 Reviewed-by: Sterling Augustine <saugustine@google.com>
* fix pointer style to match the style guideMike Frysinger2020-07-1517-398/+398
| | | | | | | | | | We do this in a lot of places, but we're inconsistent. Normalize the code to the Google C++ style guide. Change-Id: Ic2aceab661ce8f6b993dda21b1cdf5d2198dcbbf Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/2262932 Reviewed-by: Sterling Augustine <saugustine@google.com> Reviewed-by: Mark Mentovai <mark@chromium.org>
* Add support for dwarf5 line tables.Sterling Augustine2020-07-145-46/+445
| | | | | | Change-Id: I2c0cd0e7163502e52fbf0745b611befb2e219071 Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/2276193 Reviewed-by: Sterling Augustine <saugustine@google.com>
* Move GetSectionByName out of CompilationUnit.Sterling Augustine2020-06-263-21/+29
| | | | | | | | | | For the upcoming Dwarf5 LineInfo changes, we will need to get several additional sections by name, but without a the Compilation Unit. This change prepares for that. Change-Id: I566855abb339a856110a2f7d243d3848fe2b3c18 Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/2268861 Reviewed-by: Mark Mentovai <mark@chromium.org>
* Read dwarf5 compilation unit headers.Sterling Augustine2020-06-255-20/+119
| | | | | | | Change-Id: Ia85b2fb7b3cb821ad353a0003223d8b8465e792d Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/2265259 Reviewed-by: Mike Frysinger <vapier@chromium.org> Reviewed-by: Mark Mentovai <mark@chromium.org>
* Add and handle various dwarf5 addrx forms.Sterling Augustine2020-06-245-9/+60
| | | | | | | | | | | | | Given the almost nonexistent direct dwarfreader tests, I think the best way to test these dwarf5 additions will be to add a full dwarf5 compilation unit similar to the ones used incidentally in the other tests. But I can't do that until enough dwarf5 is correctly implemented. Change-Id: I3418bda7212ae85c4b67232a2ab8fea9b9ca5d42 Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/2258838 Reviewed-by: Mark Mentovai <mark@chromium.org> Reviewed-by: Mike Frysinger <vapier@chromium.org>
* Add and handle new dwarf5 string-related forms.Sterling Augustine2020-06-223-31/+119
| | | | | | | | | | | | | | | | Adding the new forms by type and processing should avoid the problems with 0c0e24f709288a129d665ec27d6f089189318385, where new forms weren't handled in switch statements, breaking the build. Testing this should follow the testing for DW_FORM_GNU_str_index, very closely, but there doesn't appear to be any tests for that, or even DW_FORM_strp. Change-Id: I609d56b1dc879971bfef1070f063f8457fec6017 Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/2233839 Reviewed-by: Mike Frysinger <vapier@chromium.org> Reviewed-by: Mark Mentovai <mark@chromium.org>
* Use stdint.h numeric types in testsJoshua Peraza2020-04-163-29/+32
| | | | | | Change-Id: Iaa79c5c7c70ca953256cd39cc9f6f4f139c696af Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/2153567 Reviewed-by: Mike Frysinger <vapier@chromium.org>
* Use portable format macrosJoshua Peraza2020-04-161-22/+23
| | | | | | | Bug: 1071277 Change-Id: Ic65704a20c55fea83b5633650ee2c769ac227a56 Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/2153333 Reviewed-by: Mike Frysinger <vapier@chromium.org>
* Use stdint.h numeric typesJoshua Peraza2020-04-0915-482/+477
| | | | | | Change-Id: Ib815b0757539145c005d828080b92cbfa971a21b Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/2141226 Reviewed-by: Ivan Penkov <ivanpe@chromium.org>
* Use ULONG_MAX instead of __WORDSIZE to determine native ELF architectureMichael Forney2020-03-171-8/+9
| | | | | | | | | | | | | | __WORDSIZE is an internal libc definition. Instead, we can use ULONG_MAX from limits.h, whose value corresponds to the machine's native word size. This allows us to remove the fallback definition of __WORDSIZE in the Android compatibility headers. Bug: google-breakpad:631 Change-Id: I7b9e6f3b2121f78ccad9e32bf26acac518aefd8f Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/2107100 Reviewed-by: Mike Frysinger <vapier@chromium.org>
* Revert "Add new dwarf 5 enums, plus some dwarf4 enums."Mike Frysinger2020-03-101-221/+0
| | | | | | | | | | | | This reverts commit 0c0e24f709288a129d665ec27d6f089189318385. Reason for revert: This is causing breakage on CrOS due to unhandled enums and dwarf5 support is in limbo, so pull this back out for now. Bug: google-breakpad:812 Change-Id: I22dd5d87efb8bc83596d51d15a6808c41afb3fd2 Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/2095872 Reviewed-by: Mark Mentovai <mark@chromium.org>
* Revert "Add dwarf5 compilation-unit header handling."Mike Frysinger2020-03-105-105/+18
| | | | | | | | | | | | This reverts commit dbd454dbe47e584571388fc3533193416bdce67f. Reason for revert: The parent CL is causing breakage on CrOS due to unhandled enums. Before we can revert that, we need to revert this. Bug: google-breakpad:812 Change-Id: I7c2446f3cd8ed9f6411e90dbdd2434bc463b2f6c Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/2095798 Reviewed-by: Mark Mentovai <mark@chromium.org>
* Add dwarf5 compilation-unit header handling.Sterling Augustine2019-12-195-18/+105
| | | | | | | | Fix a small typo in DW_LANG__Python. Change-Id: I1fe54e501a5e8da5057ecc9ac00c7e7259a9bb3f Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/1967975 Reviewed-by: Mark Mentovai <mark@chromium.org>
* Add new dwarf 5 enums, plus some dwarf4 enums.Sterling Augustine2019-12-121-0/+221
| | | | | | Change-Id: Ibe0b529664dd48a423cb453b786d08c5b7abec19 Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/1965462 Reviewed-by: Mark Mentovai <mark@chromium.org>
* Enable reading DWARF4 CIEs with 32 bit addresses.Nelson Billing2019-12-053-18/+53
| | | | | | | | | | | | | - Reading DWARF4 CIEs was added in https://chromium-review.googlesource.com/c/breakpad/breakpad/+/406012 but it was only enabled for 64bit builds, since it would error out if the CIE address size was not 8 bytes. - Added a unit test to ensure that 32bit continues to work. Change-Id: I824bb40cdf12056d39da335adb55ed315970fb88 Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/1941034 Reviewed-by: Ivan Penkov <ivanpe@chromium.org> Reviewed-by: Mark Mentovai <mark@chromium.org>
* Fixed a typo introduced in revision 16e08520e6027df4bf1934abbfd5e1a088ffb69cGabriele Svelto2018-08-141-1/+1
| | | | | | | | BUG=769 Change-Id: I1e118fe31b4a4031275b8b49c4c1eb98745ce21a Reviewed-on: https://chromium-review.googlesource.com/1174571 Reviewed-by: Ted Mielczarek <ted.mielczarek@gmail.com>
* Add support for parsing the DW_AT_ranges attributesGabriele Svelto2018-08-134-0/+70
| | | | | | | | | | | | | | | | This enables the DWARF reader to properly parse DW_AT_ranges attributes in compilation units and functions. Code covered by a function is now represented by a vector of ranges instead of a single contiguous range and DW_AT_ranges entries are used to populate it. All the code and tests that assumed functions to be contiguous entities has been updated to reflect the change. DW_AT_ranges attributes found in compilation units are parsed but no data is generated for them as it is not currently needed. BUG=754 Change-Id: I310391b525aaba0dd329f1e3187486f2e0c6d442 Reviewed-on: https://chromium-review.googlesource.com/1124721 Reviewed-by: Ted Mielczarek <ted.mielczarek@gmail.com>
* Rename an argument named "register" to "reg".Peter Collingbourne2017-11-021-5/+5
| | | | | | | | | | This silences a warning in newer versions of clang that complains about "register" being a deprecated keyword. Bug: chromium:780692 Change-Id: If354b9b18421e3e910849b385c44207e0ce02590 Reviewed-on: https://chromium-review.googlesource.com/750362 Reviewed-by: Mark Mentovai <mark@chromium.org>
* Parse DWARF 4 line tables correctlyMark Mentovai2017-09-131-0/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Breakpad’s DWARF line table reader only understood line tables at the level of DWARF 2. This wasn’t a problem because LLVM only produced line tables at this level, even when generating DWARF 4. But LLVM would like to output DWARF 4 line tables when generating DWARF 4, and Breakpad needs to understand this format. (Meanwhile, it seems that GCC has used DWARF 4 line tables with DWARF 4 output since 4.5.0, 2010-04-14.) DWARF 3 line tables are fully compatible with DWARF 2 (assuming that nothing needs “prologue end,” “epilogue begin,” or “isa”, and opcodes related to these fields are properly skipped). DWARF 4 changes the line number program header slightly to include a “maximum operations per instruction” field. This field must be recognized, but can safely be ignored (and assumed to be always 1) if VLIW architectures are not supported (they aren’t). DWARF 4 also introduces a “discriminator”, whose opcode can also be skipped if these values are not needed (they shouldn’t be). This recognizes the “maximum operations per instruction” field when processing DWARF 4 line tables, but asserts that its value is 1 and otherwise ignores it. This is not compatible with VLIW architectures that set this field to a value other than 1. Such architectures are irrelevant to Breakpad, and mainline GCC and the proposed LLVM patch always set this field to 1. There are other things that could be extracted from DWARF 3 and 4 line tables that aren’t currently extracted (although these are currently irrelevant to Breakpad too). Bug: google-breakpad:745 Change-Id: I5bf9c0b1aa654849c9cce64e60682447d10be8ba Reviewed-on: https://chromium-review.googlesource.com/663441 Reviewed-by: Mike Frysinger <vapier@chromium.org>
* Allow compiling the google-breakpad code using a global ::string class ↵Ivan Penkov2016-11-081-1/+1
| | | | | | | | | | | | instead of std::string. For more details take a look at common/using_std_string.h BUG= Change-Id: Ifebfc57f691ef3a3bef8cfed7106c567985edffc Reviewed-on: https://chromium-review.googlesource.com/399738 Reviewed-by: Mark Mentovai <mark@chromium.org>
* Basic handling of CIE version 4 in dwarf readingScott Graham2016-11-025-8/+147
| | | | | | | | | | | | | | | | | CIE looks like it's been emitted by clang since ~May 2015 [1]. This means that we didn't have any CFI because this parse aborted, which meant that all stack walks reverted to stack scanning. Allow expected values for address size and segment descriptor size through so that dump_syms can generate at least somewhat reasonable data. [1]: http://lists.llvm.org/pipermail/llvm-commits/Week-of-Mon-20150518/277292.html R=mark@chromium.org BUG=chromium:627529 Change-Id: I6dc92f51c4afd25c2adff92c09ccb8bb03bf9112 Reviewed-on: https://chromium-review.googlesource.com/406012 Reviewed-by: Mark Mentovai <mark@chromium.org>
* Don't demangle Rust symbols by default, but allow linking to rust-demangle.Ted Mielczarek2016-10-251-0/+1
| | | | | | | | | | | | | | | | | The Rust compiler uses GCC C++ name mangling, but it has another layer of encoding so abi::cxa_demangle doesn't produce great results. This patch changes dump_syms to dump unmangled names by default so that consumers can demangle them after-the-fact. It also adds a tiny bit of support for linking against a Rust library I wrote that can demangle Rust symbols nicely: https://github.com/luser/rust-demangle-capi BUG= Change-Id: I63a425035ebb7ac516f067fed2aa782849ea9604 Reviewed-on: https://chromium-review.googlesource.com/402308 Reviewed-by: Mark Mentovai <mark@chromium.org>
* Initial support for dumping DWARF corresponding to Swift codeMark Mentovai2016-09-231-2/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | 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 .
* This change allows compiling the google-breakpad code using a global ↵Ivan Penkov2016-08-301-2/+2
| | | | | | | | | | | | ::string class instead of std::string. For more details take a look at common/using_std_string.h BUG= Change-Id: I11f1ce697be23e13f12ea8f0468bbe02fa63c967 Reviewed-on: https://chromium-review.googlesource.com/378159 Reviewed-by: Mark Mentovai <mark@chromium.org>
* elf_reader: drop unused zlib includeMike Frysinger2016-05-251-1/+3
| | | | | | | | | This breaks building for targets that don't include zlib. BUG=chromium:604440 R=ivanpe@chromium.org Review URL: https://codereview.chromium.org/2010803003 .
* use another elf.h inside the package for common/dwarf/elf_readerYunlian Jiang2016-05-181-1/+1
| | | | | | | | | | | | | | We tried to use common/android/include/elf.h, however it contains '#include-next elf.h' so it still breaks MAC build. So we use third_party/musl/include/elf.h instead. BUG=none TEST=make; make test passes. There is no '#include-next elf.h' in the new elf.h R=michaelbai@chromium.org Review URL: https://codereview.chromium.org/1994633003 .
* Use elf.h inside the package.Yunlian Jiang2016-05-181-1/+1
| | | | | | | | | | | | | MAC does not have elf.h, so use the elf.h inside the package instead of the one in the system. One failure example is https://codereview.chromium.org/1978803003/ TEST=make; make check BUG= R=michaelbai@chromium.org Review URL: https://codereview.chromium.org/1984713002 .
* Replaced glibc version of elf.h with musl version of elf.h.Dave MacLachlan2016-05-121-0/+13
| | | | | | | | | Updated dump_syms xcode project and ran tests. BUG= R=vapier@chromium.org Review URL: https://codereview.chromium.org/1973113002 .
* Fixes up dump_syms build on OS X so it works with ELF.Dave MacLachlan2016-05-121-1/+1
| | | | | | | | | | | | | | | Adds elf.h header from glibc. Updates dwarf2reader.cc so it isn't comparing a unique_ptr against NULL. Moves from MacOS10.5 SDK to latest SDK for Xcode project. Moves from using gcc to clang for dump_syms tests. Disables warning about 'Missing Field In Structure Initializers' to temporarily work around https://bugs.chromium.org/p/google-breakpad/issues/detail?id=697. With this patch all tests form dump_syms pass again using Xcode 7.3 on Mac OS X 10.11. BUG= https://bugs.chromium.org/p/google-breakpad/issues/detail?id=696, https://bugs.chromium.org/p/google-breakpad/issues/detail?id=697 R=mark@chromium.org Review URL: https://codereview.chromium.org/1970903002 .
* Update to handle dsym files that end with a header.Dave MacLachlan2016-05-111-1/+3
| | | | | | | | | | dsym files generated by Xcode for swift (Xcode 7.3) end with a header, and the code did not handle that case. BUG=https://bugs.chromium.org/p/google-breakpad/issues/detail?id=689 R=ivanpe@chromium.org Review URL: https://codereview.chromium.org/1971793002 .
* breakpad: fix unittest errorsYunlian Jiang2016-05-041-2/+2
| | | | | | | | | | | This fixes the unittest error caused by https://codereview.chromium.org/1884283002/ TEST=unittest passes on falco board in ChromeOS. BUG= R=vapier@chromium.org Review URL: https://codereview.chromium.org/1952083002 .
* Add debug fission support.Yunlian Jiang2016-05-047-103/+2177
| | | | | | | | | | | | | | | | | | | | | This added debug fission support. It tries to find the dwp file from the debug dir /usr/lib/debug/*/debug and read symbols from them. Most of this patch comes from https://critique.corp.google.com/#review/52048295 and some fixes after that. The elf_reader.cc comes from TOT google code. I just removed some google dependency. Current problems from this patch 1: Some type mismatch: from uint8_t * to char *. 2: Some hack to find the .dwp file. (replace .debug with .dwp) BUG=chromium:604440 R=dehao@google.com, ivanpe@chromium.org Review URL: https://codereview.chromium.org/1884283002 .
* convert to uint8_t* for binary data to fix -Wnarrowing build errorsMike Frysinger2016-01-2611-148/+185
| | | | | | | | | | | | | | | Newer gcc versions default to -Werror=narrowing when using newer C++ standards (which we do). This causes issues when we try to stuff a value like 0xea into a char -- the value is out of range for signed char bytes. That's when gcc throws an error: .../bytereader_unittest.cc: In member function 'virtual void Reader_DW_EH_PE_absptr4_Test::TestBody()': .../bytereader_unittest.cc:400:55: error: narrowing conversion of '234' from 'int' to 'char' inside { } [-Wnarrowing] BUG=chromium:579384 TEST=`make check` passes R=mark@chromium.org Review URL: https://codereview.chromium.org/1605153004 .
* Define intptr and uintptr in a more generic wayPavel Labath2016-01-111-6/+2
| | | | | | | | | | | | | MSVC does not have the __PTRDIFF_TYPE__ macro defined, so I use the standard [u]intptr_t types instead. Compilation tested on windows, linux and mac. BUG= R=mark@chromium.org Review URL: https://codereview.chromium.org/1571293003 . Patch from Pavel Labath <labath@google.com>.
* Let breakpad build with -Wall on OS X and Linux.Lei Zhang2015-12-292-2/+6
| | | | | | | | | A=thakis@chromium.org Original Review: https://codereview.chromium.org/1550933002/ R=thakis@chromium.org Review URL: https://codereview.chromium.org/1554613002 .
* dump_syms: Fix handling of DW_FORM_ref_addr to work with DWARF 4mseaborn@chromium.org2014-12-031-6/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Previously, dump_syms did not handle DW_FORM_ref_addr if it appeared in DWARF 4 debugging info. Also fix a DW_FORM_ref_addr case so that it doesn't fall through to the next switch case when assertions are disabled and the DWARF version isn't recognised. The following steps will reproduce the problem when using LLVM 3.4: cat <<END >example1.c int main() { return 0; } END cat <<END >example2.c void foo(int x) {} END clang -emit-llvm -g -c example1.c -o example1.bc clang -emit-llvm -g -c example2.c -o example2.bc llvm-link-3.4 example1.bc example2.bc -o combined.bc clang combined.bc -o executable ./google-breakpad/build/src/tools/linux/dump_syms/dump_syms executable When using LLVM bitcode linking in this way, LLVM's backend generates partially-merged DWARF debugging info in which some of the references to the "int" type go via "DW_FORM_ref_addr". Since PNaCl uses LLVM bitcode linking, this dump_syms failure occurs with nexes produced by the PNaCl toolchain. BUG= https://code.google.com/p/chromium/issues/detail?id=416368 TEST= see above R=mark@chromium.org, mcgrathr@chromium.org Review URL: https://breakpad.appspot.com/5744002 git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@1408 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Adding support for mips.gordana.cmiljanovic@imgtec.com2013-09-111-6/+9
| | | | | | | | | | | | | Support for mips cpu is added to all breakapad targets including unittests. BUG=none TEST=unittests Review URL: https://breakpad.appspot.com/614002 git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@1212 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Mac: Fix more errors from clang to get crash_report.xcodeproj close to ↵thestig@chromium.org2013-05-081-0/+2
| | | | | | | | | | compiling. R=mark@chromium.org Review URL: https://breakpad.appspot.com/593002 git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@1176 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Remove auto_ptr usage in Breakpad. Also fix some lint errors.thestig@chromium.org2013-04-091-9/+11
| | | | | | Review URL: https://breakpad.appspot.com/553002 git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@1145 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Use stdint types everywhereted.mielczarek@gmail.com2013-03-065-40/+40
| | | | | | R=mark at https://breakpad.appspot.com/535002/ git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@1121 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Remove dead code.mark@chromium.org2012-12-128-107/+42
| | | | | | | | | Patch by Rafael Espindola <rafael.espindola@gmail.com> Review URL: http://breakpad.appspot.com/502003/ git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@1091 4c0a9323-5329-0410-9bdc-e9ce6186880e
* This change allows compiling the google-breakpad code using a global ↵ivan.penkov@gmail.com2012-06-2811-51/+59
| | | | | | ::string class instead of std::string. For more details take a look at common/using_std_string.h git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@974 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Accept version 3 .eh_frame unwinding data, as well as version 1.jimblandy2012-04-031-14/+8
| | | | | | | | a=michaelrmmiller r=jimblandy git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@947 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Add some missing #includested.mielczarek2012-02-152-0/+3
| | | | | | | P=Albert Zeyer R=ted at http://breakpad.appspot.com/289001 git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@920 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Breakpad DWARF: Add support for DWARF 4 attribute forms.jimblandy2012-02-017-8/+179
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This patch allows Breakpad's DWARF reader to at least read or skip attributes using the new forms defined in version 4 of the DWARF specification, instead of crashing. Attributes encoded using DW_FORM_flag_present, DW_FORM_sec_offset, and DW_FORM_exprloc should work fine now. However, compilation units using DW_FORM_ref_sig8 to refer to types in .debug_types will need further work to support. (GCC 4.6.2 does not emit .debug_types sections.) Specifically: - dwarf2reader::DwarfForm gets new values. - dwarf2reader::Dwarf2Handler and dwarf2reader::DIEHandler get new handler methods, named ProcessAttributeSignature, for DW_FORM_ref_sig8 attributes. - dwarf2reader::CompilationUnit reads DW_FORM_ref_sig8 attributes, and passes them to ProcessAttributeSignature. It also gets support for DW_FORM_sec_offset, DW_FORM_exprloc, and DW_FORM_flag_present, using the existing appropriate ProcessAttribute* methods. - dwarf2reader::DIEDispatcher passes through ProcessAttributeSignature attributes to its DIEHandler. - Unit tests are updated. a=jimb, r=ted.mielczarek Review URL: http://breakpad.appspot.com/343003/ git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@912 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Breakpad DWARF support: Remove extraneous breaks following returns in ↵jimblandy2012-02-011-44/+6
| | | | | | | | | | dwarf2reader.cc. a=jimb, r=ted.mielczarek Review URL: http://breakpad.appspot.com/343002/ git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@911 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Add partial unit tests for dwarf2reader::CompilationUnit.jimblandy2012-02-012-0/+526
| | | | | | | | This is really incomplete --- it's just what's needed to get started testing support for the DWARF 4 attribute forms. git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@910 4c0a9323-5329-0410-9bdc-e9ce6186880e