aboutsummaryrefslogtreecommitdiff
path: root/src/common
Commit message (Collapse)AuthorAgeFilesLines
* Write a window of memory around the instruction pointer from the crashing ↵ted.mielczarek2010-09-232-5/+12
| | | | | | | | thread to the minidump on OS X. R=nealsid at http://breakpad.appspot.com/200001/show git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@699 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Fix compilation of file_id_unittest.thestig@chromium.org2010-09-161-5/+5
| | | | | | Review URL: http://breakpad.appspot.com/198001 git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@689 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Import linux_syscall_support.h from linux-syscall-support.googlecode.com ↵thestig@chromium.org2010-09-153-2951/+2
| | | | | | | | instead of using our own copy. Review URL: http://breakpad.appspot.com/192001 git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@686 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Revert revision 658 ('Add glog style logging to symupload').erikwright@chromium.org2010-09-152-117/+3
| | | | | | | R=nealsid at http://breakpad.appspot.com/190001 git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@685 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Fix a handful of comment spelling errors (Issue 385)jessicag.feedback@gmail.com2010-09-091-3/+3
| | | | git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@682 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Issue 370 - fix PDBSourceLineWriter::GetModuleInfo's CPU detectionted.mielczarek2010-08-311-5/+19
| | | | | | R=nealsid at http://breakpad.appspot.com/181001 git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@678 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Linux FileID should work with ELFCLASS32 and ELFCLASS64 regardless of what'smark@chromium.org2010-08-272-25/+123
| | | | | | | | | | native. BUG=399 TEST=none Review URL: http://breakpad.appspot.com/178001 git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@677 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Use <inttypes.h> macros for formatting fixed-width types.mark@chromium.org2010-08-271-1/+7
| | | | | | Review URL: http://breakpad.appspot.com/162002 git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@676 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
* Disable cookies in Windows HTTPUploadted.mielczarek2010-08-201-0/+1
| | | | | | R=nealsid at http://breakpad.appspot.com/161001/show git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@661 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Add glog style logging to symuploadnealsid@gmail.com2010-08-192-3/+117
| | | | git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@658 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
* Put MachIPC into the google_breakpad namespaceted.mielczarek@gmail.com2010-08-162-0/+6
| | | | | | R=mark at http://breakpad.appspot.com/151001/show git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@650 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Fix a couple of bugs where we generate incorrect minidump files on Linux.othestig@chromium.org2010-08-141-0/+18
| | | | | | | | | Patch by Markus Gutschke <markus@chromium.org>. R=thestig Review URL: http://breakpad.appspot.com/150001 Review URL: http://breakpad.appspot.com/155001 git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@649 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Implement CrashGeneration{Client,Server} for OOP dump generation on OS X, ↵ted.mielczarek@gmail.com2010-08-133-5/+64
| | | | | | | | enable OOP dump generation in ExceptionHandler R=mark at http://breakpad.appspot.com/146001 git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@646 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Allow passing certificate path to HTTPUpload::SendRequestted.mielczarek2010-08-112-0/+5
| | | | | | R=nealsid at http://breakpad.appspot.com/121002/show git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@640 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Breakpad uses x86 as the architecture name, not i386. Most tools don't caremark@chromium.org2010-08-061-2/+6
| | | | | | | | | | | | | | | what architecture name is shown in a symbol file's MODULE line, but the Mac crash_report tool's on_demand_symbol_supplier does. The new Mac dumper inadvertently used i386. Correct that to make it x86. Temporarily make the on_demand_symbol_supplier accept symbol files whose architecture is i386. Also add x86_64 to the set of architectures that the on_demand_symbol_supplier considers valid. BUG=none TEST=none Review URL: http://breakpad.appspot.com/143001 git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@638 4c0a9323-5329-0410-9bdc-e9ce6186880e
* review: http://breakpad.appspot.com/138001dmaclach2010-07-291-1/+1
| | | | git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@635 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Review: http://breakpad.appspot.com/136001dmaclach2010-07-281-6/+6
| | | | git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@633 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Fixes up some style nits, and gets us compiling on Leopard again.dmaclach2010-07-273-6/+6
| | | | | | | | | | 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-1924-72/+232
| | | | | | | | | | | 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
* Breakpad Linux/Mac symbol dumper: Share duplicate strings that arise in ↵jimblandy2010-07-173-7/+62
| | | | | | | | | | | | | | DWARF data. This patch avoids allocating many copies of identical strings appearing in debugging information. Without this patch, running dump_syms on Mozilla's libxul.so (with 173MiB of debugging information) has a peak resident set of around 450MiB. With this patch, the peak is around 365MiB. a=jimblandy, r=mark git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@626 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Breakpad Linux dumper: Don't map file into memory a second time just to ↵jimblandy2010-07-171-1/+1
| | | | | | | | | | | | | | | | | | | | compute file ID At present, the Linux symbol dumper maps the ELF file into memory to examine the debugging information it contains, but then also calls google_breakpad::FileID::ElfFileIdentifier, which maps the ELF file into memory again. Some of our object files are large; Mozilla's libxul.so is 1.1GiB. Trying to map such files twice can interfere with tools like valgrind that map themselves into high addresses (in an attempt to stay out of the way of ordinary programs). The FileID class has another method, ElfFileIdentifierFromMappedFile, that operates on an already-loaded image of the file; use that instead. a=jimblandy, r=thestig git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@625 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Add functionality to read the .gnu_debuglink section and load symbols from a ↵thestig@chromium.org2010-07-162-82/+272
| | | | | | | | debug ELF file. Review URL: http://breakpad.appspot.com/126001 git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@624 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Remove duplicate FUNC entries from dump_syms output.thestig@chromium.org2010-07-135-34/+134
| | | | | | Review URL: http://breakpad.appspot.com/128001 git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@623 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Fix a couple of tiny things for GCC pedantryted.mielczarek@gmail.com2010-07-082-2/+2
| | | | git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@622 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Remove some duplicate endianness code.thestig@chromium.org2010-07-061-41/+40
| | | | | | Review URL: http://breakpad.appspot.com/125001 git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@621 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Linux: Skip sections of type SHT_NOBITS when loading symbols.thestig@chromium.org2010-07-061-3/+10
| | | | | | Review URL: http://breakpad.appspot.com/120001 git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@620 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Breakpad: Avoid using the C++ <cfoo> headers.ted.mielczarek2010-06-2517-49/+60
| | | | | | | | | | | | 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-253-10/+24
| | | | | | | | 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: Unify with Linux dumper; support DWARF CFI.ted.mielczarek2010-06-253-1209/+536
| | | | | | | | | | | | | | | | | | | | | | | | This patch rewrites the Mac symbol dumper to use the same set of classes the Linux dumper does for reading debugging information from various sources, consolidating them into a single table, and writing that out as a Breakpad symbol file. In the process, it also adds support for dumping DWARF call frame information and .eh_frame exception-handling information as Breakpad 'STACK CFI' records. This allows the Breakpad processor to generate stack traces from code compiled with -fomit-frame-pointer. The patch also replaces the DumpSymbols Objective C++ class with google_breakpad::DumpSymbols, a plain C++ class. The code still uses some Objective C++ to use the Foundation facilities for dealing with file names in a file-system-independent fashion, and for examining the contents of .dSYM bundles. Since the code has been entirely rewritten, I have changed the author lines. A=jimb R=mark git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@614 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Breakpad DWARF support: Stop #including unneeded headers.ted.mielczarek2010-06-251-2/+0
| | | | | | | | | The #inclusions of <elf.h> and <link.h> were inherited from older code, but the current code doesn't need anything from them, so they should be removed. A=jimb R=thestig git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@613 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Breakpad DWARF support: Check for DWARF line info under Mac OS X section names.ted.mielczarek2010-06-251-0/+4
| | | | | | | | | | For some reason, Mac OS X places DWARF debugging information in sections whose names begin with "__", rather than the names beginning with "." given in the DWARF spec. This patch changes google_breakpad::DwarfCUToModule to look for line number information under both names. A=jimb R=mark git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@612 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Breakpad Mac symbol dumper: Add new Mach-O reader class.ted.mielczarek2010-06-259-25/+2907
| | | | | | | | | | | | | | | | 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
* Fix compilation on gcc 4.5 by adding a missing #include. Patch by Benoit ↵ted.mielczarek2010-06-031-0/+1
| | | | | | Jacob <bjacob@mozilla.com>, r=me at https://bugzilla.mozilla.org/show_bug.cgi?id=569836 git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@605 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Remove LOG statements from linux utilities so there's no dependency on log ↵nealsid2010-05-272-24/+29
| | | | | | | | | | | | library A=Zhurun R=nealsid git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@604 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Breakpad unit tests: Add support for clipped-size null-terminated stringsjimblandy2010-05-052-0/+27
| | | | | | | | | | | | | | | | | | | | to TestAssembler::Section. This patch helps the TestAssembler classes generate Mach-O object files for use as test input. This patch adds a new AppendCString overloading to TestAssembler::Section for emitting null-terminated strings in fixed-length buffers, where the string is truncated and the terminating null character omitted if the string is too large for the buffer. The patch includes unit tests for the new AppendCString overloading. It also provides some for the existing overloading, which had been neglected. a=jimblandy, r=mark git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@590 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Breakpad Mac Dumper: Fix compilation warnings on OS X 10.6jimblandy2010-05-053-30/+80
| | | | | | | | | | | | | | | | | Breakpad's Macintosh symbol dumper uses deprecated functions for dealing with mixed-endianness code. This patch provides an overloaded function, ByteSwap, that automatically chooses the OSSwap* functions from <libkern/OSByteOrder.h> appropriate for its argument's size. This patch does *not* address warnings in src/common/mac/dump_syms.mm, because that code is about to be replaced entirely; there's no reason to bother reviewing a big, detailed patch against it. a=jimblandy, r=mark git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@589 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Breakpad symbol dumper: Promise that Module::SetLoadAddress can be called at ↵jimblandy2010-05-052-5/+13
| | | | | | | | | | | | | | | | | | any time. It's possible to imagine an implementation of google_breakpad::Module in which calling SetLoadAddress at different times as the Module is populated would produce different output. For the Mac dumper, we'd like to depend on its current behavior --- that the load address is subtracted off only when writing the symbol file, and can be set at any time prior to that. This patch makes that promise part of Module's contract, and adjusts the test suite to verify that that promise is met. a=jimblandy, r=thestig git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@588 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Breakpad Linux dumper: Handle STABS-in-symbol-table, and line number records ↵jimblandy2010-05-054-21/+152
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | outside functions. This patch addresses two differences between Linux and Macintosh OS X STABS data: - StabsReader assumes that the STABS entries follow the conventions for storing STABS data in object file sections (that is, .stabs and .stabstr), rather than in the object files's linker symbol table. On Mac OS X, STABS entries live in the Mach-O file's LC_SYMTAB load command, along with all the other linker symbols; they are not grouped into units by N_UNDF entries. This patch adds a boolean argument to the StabsReader constructor indicating whether the parser should treat N_UNDF entries as unit boundaries; this argument should be true on Linux, and false on Mac. The patch changes src/common/linux/dump_symbols.cc to pass this new argument. - Mac OS X STABS place SLINE (line number) records immediately before the FUN record for the function to which they belong, and the values of such records are absolute, not relative to the function start. This patch extends the parser to queue up such records and report them to the handler when we do see the FUN record. The meaning of StabsHandler::Line remains unchanged; existing handlers do not need to be adjusted. This patch also adds unit tests for the new parser behaviors. a=jimblandy, r=mark git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@587 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Breakpad STABS parser: Use a test fixture in StabsReader unit tests.jimblandy2010-05-051-56/+42
| | | | | | | | | | This patch factors out some of the common code in the StabsReader unit tests into a fixture class. Pretty mechanical. a=jimblandy, r=thestig git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@586 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Breakpad STABS reader: Properly compute function end addresses.jimblandy2010-05-053-7/+72
| | | | | | | | | | | | | An N_FUN stabs with no name is an explicit end-of-function marker, whose value is the size of the function. This patch changes the stabs reader to recognize these and use them to compute the function's ending address, instead of treating them as functions with no names and mysterious addresses. It also adds appropriate unit tests. a=jimblandy, r=thestig git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@585 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Breakpad Linux dumper: Rename DumpStabsHandler to StabsToModule.jimblandy2010-05-054-34/+34
| | | | | | | | | | | | | | | All the other classes which receive debugging data from some sort of parser and use it to populate a Module have names ending in "ToModule": DwarfCUToModule, DwarfCFIToModule. Also, DumpStabsHandler doesn't actually dump anything. This patch renames the DumpStabsHandler class to StabsToModule, which is more consistent and descriptive. a=jimblandy, r=thestig git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@584 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Breakpad Linux dumper: Make StabsReader independent of endianness and word size.jimblandy2010-05-0511-593/+443
| | | | | | | | | | | | | | | | | | | | | | | | StabsReader simply applies a reinterpret_cast to treat the stab entry data as an array of 'struct nlist' structures, making the parser specific on the host endianness, word size, and alignment rules. On Mac OS X, a single fat binary file may contain object files of different ABIs, of which the user chooses one at run time. This patch changes the parser to read the data using the google_breakpad:: ByteCursor class, which can handle different endiannesses and word sizes. The StabsReader constructor now takes arguments indicating the endianness of the data and the size of each entry's value field. The patch changes src/common/linux/dump_symbols.cc to pass the new argument. This patch changes the StabsReader unit tests to use the google_breakpad:: TestAssembler classes to generate test data, rather than reading it from a file. This makes it easy to generate test data in various endiannesses and word sizes. It also adds tests for the new parser behaviors. a=jimblandy, r=thestig git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@583 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Breakpad symbol dumper: Define the ByteBuffer and ByteCursor classes.jimblandy2010-05-052-0/+1039
| | | | | | | | | | The ByteBuffer and ByteCursor classes are utility classes for reading binary files, handling endianness and word size issues in a portable way. a=jimblandy, r=thestig git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@582 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Fix assembly in the ARM sys_clone implementation to indicate that r7 is ↵ted.mielczarek2010-04-291-8/+8
| | | | | | clobbered, and also remove some extraneous semicolons from ARM portions of linux_syscall_support. r=jimb at https://bugzilla.mozilla.org/show_bug.cgi?id=555674 git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@579 4c0a9323-5329-0410-9bdc-e9ce6186880e