aboutsummaryrefslogtreecommitdiff
path: root/src/common/dwarf
Commit message (Collapse)AuthorAgeFilesLines
* 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
* Add includes for unittests that appear to need them.jessicag.feedback@gmail.com2011-10-172-0/+8
| | | | git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@870 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Additional fixes following r862.mark@chromium.org2011-10-112-31/+34
| | | | git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@864 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Remove "using namespace std" from dwarf2reader.h. Using-directives aremark@chromium.org2011-10-114-36/+36
| | | | | | | | | | | | | forbidden by the style guide, and are bad practice in headers even under style rules that tolerate this construct. This fixes warnings such as: In file included from dwarf2reader.cc:34: dwarf2reader.h:53:17: warning: using namespace directive in global context in header [-Wheader-hygiene] Review URL: http://breakpad.appspot.com/312002 git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@862 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Breakpad DWARF Reader: Ignore padding at the end of the compilation unit.jimblandy2010-08-251-1/+5
| | | | | | | | | | | | | | | | | After the final DIE in a compilation unit, there may be any number of zero bytes present. This is meant to allow producers to align compilation unit starting points when necessary. This patch changes the dwarf2reader::CompilationUnit class to skip those zero bytes, rather than interpreting them as 'end of children' markers for DIEs that do not exist. Without this change, the padding bytes will cause the reader to attempt to pop an offset from an empty stack, and call EndDIE with a garbage offset. a=jimblandy, r=mmentovai git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@667 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Breakpad DWARF parser: Don't use auto_ptr<stack<uint64> > where ↵jimblandy2010-08-251-9/+5
| | | | | | | | | | | | stack<uint64> would do. Perhaps there once was some reason one needed the DIE offset stack to have an unusual lifetime, but there is none now. a=jimblandy, r=mmentovai git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@666 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Breakpad DWARF reader: Use uint64, not uint64_t in DWARF reader code.jimblandy2010-08-252-4/+4
| | | | | | | | | | | | The 64-bit cleanups made last month (http://breakpad.appspot.com/133001/show) introduced unit test suite failures when built for a 32-bit architecture. The fix for those test suite failures (http://breakpad.appspot.com/140001/show) introduce build failures on Linux. a=jimblandy git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@665 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Commit issue 140001: fixes for 64-bit build cleanups.jimblandy2010-08-252-7/+7
| | | | | | | a=dmaclach, r=jimb git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@664 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Add missing stdint.h include to fix compilation on newer GCC.ted.mielczarek2010-08-161-0/+1
| | | | git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@652 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Fixes up some style nits, and gets us compiling on Leopard again.dmaclach2010-07-272-4/+4
| | | | | | | | | | Review: http://breakpad.appspot.com/133001 BUG:none TEST:Compile on Leopard git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@631 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Clean up build for 64 bit.dmaclach2010-07-194-22/+21
| | | | | | | | | | | Fix up some broken mac projects. Consolidate project settings in xcconfig files. http://breakpad.appspot.com/130001 git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@627 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Fix a couple of tiny things for GCC pedantryted.mielczarek@gmail.com2010-07-081-1/+1
| | | | git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@622 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Breakpad: Avoid using the C++ <cfoo> headers.ted.mielczarek2010-06-255-15/+18
| | | | | | | | | | | | This patch avoids unnecessary use of the <cfoo> headers in files that don't actually use the identifiers they declare in the std:: namespace. It also changes some files to better conform with the "Names and Order of Includes" rules in the Google C++ Style Guide. A=jimb R=mark git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@619 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Breakpad DWARF CFI support: Cleanups requested by Nealted.mielczarek2010-06-252-8/+23
| | | | | | | | I came across a bunch of comments Neal had made on issue 55011 that I hadn't addressed. This patch takes care of them. A=jimb R=thestig git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@618 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Breakpad DWARF CFI parser: Use the proper type for offsets in ↵ted.mielczarek2010-06-251-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | CallFrameInfo::Rule subclasses. The subclasses of CallFrameInfo::Rule store the rule currently in force for recovering a register or computing the canonical frame address. Their sole responsibility is to accurately convey rules from the parser, which creates them, to a CallFrameInfo::Handler member function, which consumes them. So, the types of their data members should match those of the corresponding arguments of the corresponding Handler member function. CallFrameInfo::OffsetRule and CallFrameInfo::ValOffsetRule use an 'int' to store the rule's offset value, but CallFrameInfo::Handler::OffsetRule and ...::ValOffsetRule expect a 'long'. On ABIs where 'long' is larger than 'int', this can cause values to be truncated or sign-extended unexpectedly. This patch changes those members to 'long'. Fortunately, offsets appearing in real DWARF call frame information never even come close to the limits of a 32-bit int, so this bug is unlikely to cause any practical problems. A=jimb R=thestig git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@615 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Breakpad Mac symbol dumper: Add new Mach-O reader class.ted.mielczarek2010-06-253-12/+12
| | | | | | | | | | | | | | | | This patch adds files defining new classes in the google_breakpad::Mach_O namespace for parsing fat binaries and Mach-O files. These are used in the new dumper to handle STABS debugging information, DWARF call frame information, and .eh_frame exception handling stack walking information. These new classes are independent of endianness and word size, and therefore can be used on binaries of all the relevant architectures: x86, x86_64, ppc, and ARM. The patch adds a complete set of unit tests for the new classes. A=jimb R=mark (http://breakpad.appspot.com/93001/show, http://breakpad.appspot.com/115001/show) git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@610 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Breakpad test support: Move test_assembler.{h,cc} from src/processor to ↵jimblandy2010-04-271-1/+1
| | | | | | | | | | | | | | src/common. The google_breakpad::TestAssembler classes are used in both the processor's and the Linux dumper's test suites, and will soon be used in the Mac dumper's tests as well. This patch moves their source files from src/processor to src/common. a=jimblandy, r=thestig git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@574 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Include what you use.mmentovai2010-04-051-0/+3
| | | | | | | Patch by Adam Langley <agl@chromium.org>. r=me git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@568 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Breakpad DWARF parser: correct comments regarding dynamic_cast.jimblandy2010-03-301-7/+14
| | | | | | | | | | | | | | | | The comments don't accurately describe what the style guide says. Regardless of what the style guide says, RTTI seems to make trouble in practice, because so many people build with it disabled. Since only the symbol dumper uses RTTI, not the client library, it may be practical for people to simply enable RTTI for the dumper. Failing that, it may be best in the long run to violate the style guide and make the code work sans RTTI. a=jimblandy, r=mmentovai git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@561 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Breakpad Linux dumper: Make changes requested by Neal Sidhwaney in issue 59002.jimblandy2010-03-293-21/+53
| | | | | | | | | | - Use manifest constants for 'z' augmentation letters. - Fix typos and rearrange some code for legibility. a=jimblandy, r=nealsid git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@560 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Breakpad Linux dumper: Parse the .eh_frame section.jimblandy2010-03-168-120/+1299
| | | | | | | | | | | | | | | | | | | | | | | | Extend google_breakpad::CFISection with the ability to produce .eh_frame data. Entry headers have a different format, and pointers can be encoded in new and fascinating ways. Extend dwarf2reader::CallFrameInfo to be able to parse either DWARF CFI or .eh_frame data, as determined by an argument to the constructor. Cope with variations in header formats, encoded pointers, and additional data in 'z' augmentation data blocks. Extend the unit tests appropriately. Extend dump_syms to look for a .eh_frame section, and if it is present, find the necessary base addresess and parse its contents. There's no need for DwarfCFIToModule to check the version numbers; if CallFrameInfo can parse it, DwarfCFIToModule should be able to handle it. Adjust tests accordingly. a=jimblandy, r=nealsid git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@552 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Breakpad DWARF parser: Add support for parsing .eh_frame encoded pointers.jimblandy2010-03-165-5/+993
| | | | | | | | | | | | The Linux C++ exception handling data format (.eh_frame) can specify a number of different encodings for the addresses it contains. This patch extends dwarf2reader::ByteReader to read pointers encoded in these ways. a=jimblandy, r=nealsid git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@551 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Breakpad Linux dumper: Add support for dumping DWARF CFI as STACK CFI records.jimblandy2010-03-166-2/+3918
| | | | | | | | | | | | | | | | | | | | | | | Define a new DWARF parser class, dwarf2reader::CallFrameInfo. Extend google_breakpad::Module to store and write out 'STACK CFI' records. Define a new google_breakpad::DwarfCFIToModule class, to accept DWARF CFI data from the parser and populate a Module with the equivalent STACK CFI records. Extend the Linux symbol dumping tool, dump_syms, to use dwarf2reader::CallFrameInfo, google_breakpad::DwarfCFIToModule, and google_breakpad::Module to extract DWARF CFI from the executable or shared library files and write it to the Breakpad symbol file. Define CFISection, a new class derived from TestAssembler::Section, for use in creating DWARF CFI data for test cases. a=jimblandy, r=nealsid git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@550 4c0a9323-5329-0410-9bdc-e9ce6186880e