aboutsummaryrefslogtreecommitdiff
path: root/src/common
Commit message (Collapse)AuthorAgeFilesLines
* New uploader for Linux with unit tests, and gflags/glog librariesnealsid2009-09-295-0/+751
| | | | | | | | | | | http://breakpad.appspot.com/29004 A=nealsid R=chris masone at chromium org git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@403 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Breakpad: Don't use the deprecated __gnu_cxx::hash_map container.jimblandy@gmail.com2009-09-035-46/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Modern GNU compilers warn about the #inclusion of <ext/hash_map>; that container is deprecated, and code should use <tr1/unordered_map> instead. However, to stay within the boundaries of C++ '98, it's probably fine just to use plain old std::map. Breakpad uses hash_map in three cases: o The DWARF reader's SectionMap type maps object file section names to data. This map is consulted once per section kind per DWARF compilation unit; it is not performance-critical. o The Mac dump_syms tool uses it to map machine architectures to section maps in Universal binaries. It's hard to imagine there ever being more than two entries in such a map. o The processor's BasicSourceLineResolver uses a hash_map to map file numbers to file names. This is the map that will probably have the most entries, but it's only accessed once per frame, after we've found the frame's line entry. a=jimblandy r=nealsid git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@393 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Provide a real std::string hash, not just a forward declaration for somethingmmentovai2009-08-201-8/+19
| | | | | | | | | | | that doesn't exist. TBR=nealsid Code review URL: http://groups.google.com/group/google-breakpad-dev/browse_thread/thread/292f9ed79dfdbdde git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@391 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Merge of Breakpad Chrome Linux forknealsid2009-08-178-83/+3450
| | | | | | | | | A=agl, Lei Zhang R=nealsid, agl git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@384 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Linux dumper: fix comments in src/common/linux/module.hjimblandy@gmail.com2009-08-071-13/+15
| | | | | | | | | | | Fix some typos and references to member functions that didn't make the final cut. a=jimblandy r=nealsid git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@381 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Linux dumper: Move the data structures representing the breakpad data into ↵jimblandy@gmail.com2009-08-073-446/+574
| | | | | | | | | | | | | | | | | | | | | | | their own class. src/linux/common/module.h defines a new class, google_breakpad::Module, that can represent the contents of a breakpad symbol file. Module::Write writes a well-formed symbol file to the given stream. src/linux/common/dump_symbols.cc can now lose its symbol-file-writing code, and change DumpStabsHandler to populate a Module object, rather than the old SymbolInfo/SourceFileInfo/... collection of types. The code to compute function and line sizes, even in the absence of reliable size data in STABS, is moved into a new Finalize method of DumpStabsHandler, which is responsible for completing the Module's contents. a=jimblandy r=nealsid git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@380 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Add files left behind by previous commit.jimblandy@gmail.com2009-08-072-0/+383
| | | | git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@379 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Linux dumper: Move STABS parsing into its own class.jimblandy@gmail.com2009-08-071-135/+107
| | | | | | | | | | | | | With this patch, dump_symbols.cc no longer knows about the details of the STABS debugging format; that is handled by the StabsReader class. dump_symbols.cc provides a subclass of StabsHandler that builds dump_symbols' own representation of the data. a=jimblandy r=nealsid git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@378 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Linux dumper: Make the 'name' field of FuncInfo a std::string instead of a ↵jimblandy@gmail.com2009-08-051-10/+13
| | | | | | | | | | | | | | | | | | | char *. Because the actual N_FUN strings in the .stabstr section contain type information after the mangled name, representing this information using a pointer into .stabstr, while efficient with memory, makes the FuncInfo data structure STABS-specific: one must know the details of a STABS N_FUN string's syntax to interpret FuncInfo::name. This patch removes this STABS dependency from the data structure, and moves us closer to having an appropriate structure for representing unified STABS and DWARF data. a=jimblandy r=nealsid git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@375 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Linux dumper: Properly separate function names from STABS type data.jimblandy@gmail.com2009-08-051-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | STABS strings for N_FUN entries contain a mangled function name, followed by a colon, followed by type information. The type information itself may contain colons; mangled names never contain colons (they need to be legal assembly-language identifiers). So the current code in src/common/linux/dump_symbols.cc:WriteOneFunction that attempts to separate the mangled name from the STABS junk will incorrectly include STABS junk in the name, causing demangling to fail. Applying the patch below results in changes like these in the symbol file produced, where an unmangled name followed by STABS junk becomes a properly demangled name: ## --- base/libxul.so.syms 2009-07-13 21:46:33.000000000 -0700 ## +++ tip/libxul.so.syms 2009-07-13 21:51:04.000000000 -0700 ## @@ -3907,7 +3907,7 @@ ## FILE 3905 /home/jimb/mc/in/gfx/cairo/libpixman/src/pixman-region.c ## FILE 3906 combine.inc ## FILE 3907 /home/jimb/mc/in/gfx/cairo/libpixman/src/pixman-edge-imp.h ## -FUNC 19898c 54 0 _Z20NS_GetCaseConversionv:F(0,1201)=*(0,1202)=xsnsICaseConvers ## ion ## +FUNC 19898c 54 0 NS_GetCaseConversion() ## 19898c 12 54 1 ## 19899e 9 56 1 ## 1989a7 6 60 1 ## @@ -214776,7 +214776,7 @@ ## 3847c9 9 57 506 ## 3847d2 13 58 506 ## 3847e5 7 59 506 ## -FUNC 387e89 27 0 _ZN20nsGenericHTMLElement11FromContentEP10nsIContent:F(0,8117) ## =*(0,8118)=xsnsGenericHTMLElement ## +FUNC 387e89 27 0 nsGenericHTMLElement::FromContent(nsIContent*) ## 387e89 7 80 2584 ## 387e90 3 80 2584 ## 387e93 e 82 2584 ## @@ -250473,7 +250473,7 @@ ## 3d0d88 7 82 548 ## 3d0d8f 25 84 548 ## 3d0db4 5 85 548 ## -FUNC 3d0e0c 40 0 _ZL21GetEnclosingListFrameP8nsIFrame:f(0,7182)=*(0,7183)=xsnsL ## istControlFrame ## +FUNC 3d0e0c 40 0 GetEnclosingListFrame(nsIFrame*) ## 3d0e0c 5 146 549 ## 3d0e11 3 722 2645 ## 3d0e14 d 146 549 a=jimblandy r=nealsid git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@374 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Linux dumper: Don't switch to wrong source file when starting new function.jimblandy@gmail.com2009-08-051-6/+11
| | | | | | | | | | | | | | | | In STABS, if one function's line number information contains an N_SOL entry to switch to a new source file, then the next function's line data should pick up in the same source file where the prior function left off. However, the Linux dumper restarts each function in the compilation unit's main source file. This patch fixes that, so that the output attributes the lines in subsequent functions to the correct source files. a=jimblandy r=nealsid git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@373 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Linux dumper: Delete non-functional stack parameter size computation.jimblandy@gmail.com2009-08-051-20/+1
| | | | | | | | | | Delete code to compute function stack parameter size. It never did anything. a=jimblandy r=nealsid git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@372 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Linux dumper: Let LineInfo structures point directly to their SourceLineInfo ↵jimblandy@gmail.com2009-08-051-141/+147
| | | | | | | | | | | | | | | | | | | | | structures Let LineInfo structures point directly to their SourceLineInfo structures, rather than holding the index of the file's name in the .stabstr section in the early phases, and then later the holding source_id of the file. This is another step in the process of moving STABS-specific values out of the types that represent the breakpad symbol data. When we're done, the non-STABS structures will be something that we can populate with both STABS and DWARF data --- or at least it will be more easily replaced with such. a=jimblandy r=nealsid git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@371 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Linux dumper: Don't record file boundary addresses as null-name ↵jimblandy@gmail.com2009-07-301-17/+35
| | | | | | | | | | | | | | | | | | | | | | | | SourceFileInfoList entries. STABS information introduces a compilation unit with an N_SO entry whose address is the start address of the file and whose string is the name of the compilation unit's main source file. However, STABS entries can only hold one address, so STABS indicates the compilation unit's ending address with an N_SO entry whose name is empty. Currently, the dumper's data structures simply create SourceFileInfo structures with empty names for these end-of-unit N_SO entries. We want to remove STABS-specific characteristics from these structures so that we can replace them with an input-format-independent structure. This moves end-of-compilation-unit addresses out of the symbol table structure, and into their own list of boundary addresses. a=jimblandy r=nealsid git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@369 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Linux dumper: Use pointers to SourceFileInfo structures.jimblandy@gmail.com2009-07-301-29/+38
| | | | | | | | | | | | | | | | | | | Use a list of pointers to SourceFileInfo structures, not a list of the structures themselves. This is preparation for a subsequent patch which makes the data structures less STABS-specific. This patch introduces a memory leak. If an included file is referenced only by line entries for functions that LoadFuncSymbols elected to omit from the func_info list, then its SourceFileInfo structure is leaked when we destroy the name_to_file map. This leak is fixed in a subsequent patch by letting the map of files by name own the file objects. a=jimblandy r=nealsid git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@368 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Linux dumper: Use a sorted array of addresses in computing function and line ↵jimblandy@gmail.com2009-07-301-83/+34
| | | | | | | | | | | | | | | sizes. Replace the sorted lists of files and functions with an array of boundary addresses. This replaces CompareAddress with the default comparison, and SortByAddress and NextAddress with the stock STL sort and upper_bound algorithms, losing ~50 lines of code. a=jimblandy r=nealsid git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@367 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Linux dumper: Correctly find boundary address when computing line and ↵jimblandy@gmail.com2009-07-271-6/+10
| | | | | | | | | | | | | | function sizes. In NextAddress, check both the file list and the function list for the nearest boundary. Don't assume that, if we find any bounding entry in the function list, that must be the nearest thing. A=jimblandy R=nealsid git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@365 4c0a9323-5329-0410-9bdc-e9ce6186880e
* The has_sol field of struct FuncInfo is unused. This patch removes it.jimblandy@gmail.com2009-07-271-6/+0
| | | | | | | | A=jimblandy R=nealsid git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@364 4c0a9323-5329-0410-9bdc-e9ce6186880e
* The 'no_next_addr_count' variable in ComputeSizeAndRVA shouldn't be static.jimblandy@gmail.com2009-07-271-1/+1
| | | | | | | | | | | | | The current arrangement would produce needless warnings if WriteSymbolFile were ever used twice in the same program invocation. Even if it weren't wrong, it's unnecessary, and local non-const static variables require extra care when reading to be sure of their effect. A=jimblandy R=nealsid git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@363 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Use a std::map instead of a linear search to look up files for line records.jimblandy@gmail.com2009-07-271-15/+20
| | | | | | | | | | | | | | With this patch, the time required to generate Breakpad symbols for Firefox's libxul.so on a MacBook Pro 3,1 drops from 32s to 2s. I verified that this patch had no effect on the output of dump_syms when applied to firefox-bin and its libraries when built with -gstabs+. A=jimblandy R=nealsid git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@362 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Remove warnings about uninitialized fields.jimblandy@gmail.com2009-07-271-0/+3
| | | | | | | | A=jimblandy R=nealsid git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@361 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Fix for http://breakpad.appspot.com/18009 - run dump_syms on both PPC & i386 ↵nealsid2009-07-171-4/+11
| | | | | | | | | | | machines correctly, and process STABS/DWARF information in the same binary R=stuart morgan A=nealsid git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@359 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Use ctsdio streams for dump_syms for significant speedup. Also contains a ↵nealsid2009-06-052-37/+26
| | | | | | | | | | | makefile fix to build in 32-bit mode, even on 64-bit systems. A=jim blandy R=nealsid git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@347 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Fix up warnings when building http_upload.cc. Changed warning level to /W4, ↵nealsid2009-05-271-9/+11
| | | | | | | | | | | and also turned off deprecated 64-bit compatability warning flag(since some people are regularly building Breakpad in 64-bit mode, if we turn off this flag we get rid of a warning in 32 bit mode under VS2008) R=mmentovai A=nealsid git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@340 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Incorporate feedback from first Breakpad integration.nealsid2009-04-061-1/+1
| | | | | | | | | | | | | | | | | | | | This upload fixes five issues: 1) Preston's email was hardcoded in the xib :-( 2) Changed from xib to NIB to facilitate Tiger building 3) Changed the logs location to be user specifiable by BreakpadMinidumpLocation key, or ~/Library/Breakpad/<BREAKPAD_PRODUCT> by default 4) Fixed GTM Defines problem in order to build on Tiger 5) Also set CFBundleIcon in the sender program correctly, and updated plist, and renamed ReporterIcons to crash_report_sendER.ICNS. However the rietveld upload script doesn't appear to pick up renamed files correctly, so that file doesn't show up in the patch upload. Also various comments were updated for accuracy. git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@323 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Open sourcing the Breakpad framework from Google. nealsid2009-04-0110-0/+3513
| | | | | | | | | A=many, many people R=nealsid, jeremy moskovich(from Chromium project) git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@322 4c0a9323-5329-0410-9bdc-e9ce6186880e
* issue 305 - breakpad Linux handler doesn't build with compiler built from ↵ted.mielczarek2009-03-241-0/+1
| | | | | | latest GCC sources. Trivial patch by Jim Blandy git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@321 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Fix for issue 304: symupload needs to support timeout specifications(wininet ↵nealsid2009-03-202-1/+19
| | | | | | | | | | | can timeout when sending large symbol files). R=doshimun W=nealsid git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@319 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Fix build breaks on Solaris using Sun Studio.nealsid2009-02-231-3/+4
| | | | | | | | | Written by Ginn Chen & Eagle.Lu@ R=nealsid (although I don't have a Solaris machine to build on, & these changes look localized to Sun-only builds) git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@314 4c0a9323-5329-0410-9bdc-e9ce6186880e
* See https://bugzilla.mozilla.org/show_bug.cgi?id=397200nealsid2009-02-221-3/+0
| | | | | | | | | | | The method of calculating a binary ID using the LC_ID command isn't compatible with non-default build processes, most Mac consumers use LC_UUID anyway but for those that don't, MD5 is a better choice R=nealsid W=Ted.Mielczarek git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@313 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Issue 294: mmap error checking is not correct.nealsid2009-02-224-4/+4
| | | | | | | | R=Liu git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@312 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Issue 283 - DWARF dumper doesn't handle DW_AT_specification. r=nealsidted.mielczarek2008-12-082-0/+39
| | | | git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@303 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Issue 284 - DWARF dumper doesn't output function names including arguments. ↵ted.mielczarek2008-12-083-3/+17
| | | | | | r=nealsid git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@302 4c0a9323-5329-0410-9bdc-e9ce6186880e
* issue 286 - clean up some demangling code in dump_syms.mm. r=chris rogersted.mielczarek2008-12-032-85/+16
| | | | git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@301 4c0a9323-5329-0410-9bdc-e9ce6186880e
* follow up for issue 281 - dump_syms fails to find dylib symbol file inside ↵ted.mielczarek2008-12-011-7/+6
| | | | | | of a bundle. handle files without an extension properly git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@299 4c0a9323-5329-0410-9bdc-e9ce6186880e
* issue 281 - dump_syms fails to find dylib symbol file inside of a bundle. ↵ted.mielczarek2008-12-011-3/+5
| | | | | | r=nealsid git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@298 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Followup to address some review comments from Issue 259ted.mielczarek2008-11-251-9/+15
| | | | git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@297 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Issue 259 - crash when generating large .sym files with dump_syms on Linux. ↵ted.mielczarek2008-11-241-34/+56
| | | | | | Patch by login_ing@yahoo.com, r=Liu Li git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@296 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Fix for dump_syms to ignore line number information for addresses that don't ↵nealsid2008-11-031-16/+25
| | | | | | have an enclosing function git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@293 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Issue 181: Add version info for Mac OS X modules. Found by iterating over ↵nealsid2008-10-221-2/+8
| | | | | | load commands until I found LC_ID_DYLIB. Also modified crash_report to generate version number. Also added suspend/resume capability to exception handler, necessary because exception handling can behave strangely across fork() calls. Also added fix for filtering out functions with no line number information, and for filtering out some multiple inheritance glue the compiler generates. git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@291 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Fix for DWARF processing when inline functions were encountered. Inline ↵nealsid2008-10-141-5/+37
| | | | | | functions were part of the debugging information as sequential in the PC range of the function but the source file was where the function was written(as you might expect). However the old dump_syms code, once it switched files as it was iterating over a range of addresses, never switched back, causing inline functions to cause all file numbers for addresses after the PC of the inline function to be wrong git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@289 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Added DWARF support to Breakpad client. Thanks to Google for open sourcing ↵nealsid2008-10-0812-14/+2862
| | | | | | | | | | | | their DWARF code! Modified dump_syms to detect dSYM bundles or a binary with DWARF data appropriately, and convert data from DWARF reader to dump_syms native structures R=danny.berlin (original writer of DWARF code) git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@286 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Fix to ignore source files that have a text address of 0 in their stabs entrynealsid2008-05-191-0/+10
| | | | git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@275 4c0a9323-5329-0410-9bdc-e9ce6186880e
* issue 223 - Fixes for SOlaris handler during integration with Firefox. patch ↵ted.mielczarek2008-03-181-47/+140
| | | | | | by Alfred Peng, r=mento,me git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@250 4c0a9323-5329-0410-9bdc-e9ce6186880e
* issue 238 - missing includes compiling with gcc 4.3. patch by taras glek, r=meted.mielczarek2008-02-242-0/+3
| | | | git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@240 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Use swprintf_s for VC8 or newer. r=mentoted.mielczarek2008-02-041-0/+4
| | | | git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@238 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Fix issue 235, properly handling included(inlined) code.luly812007-12-131-53/+157
| | | | git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@236 4c0a9323-5329-0410-9bdc-e9ce6186880e
* slight fixup from issue 225ted.mielczarek2007-12-031-1/+1
| | | | git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@234 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Issue 225 - dynamically load libcurl in http_upload. patch by Andrew ↵ted.mielczarek2007-11-201-54/+88
| | | | | | Schultz <ajschult@verizon.net>, r=Liu Li git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@232 4c0a9323-5329-0410-9bdc-e9ce6186880e
* The string buffer lengths in a URL_COMPONENTS structure are in TCHARs, sommentovai2007-11-131-3/+3
| | | | | | | | these should be sizeof(z) / sizeof(z[0]) to avoid a buffer overrun. Caught by Dmitry Titov, r=me. git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@229 4c0a9323-5329-0410-9bdc-e9ce6186880e