aboutsummaryrefslogtreecommitdiff
path: root/src
Commit message (Collapse)AuthorAgeFilesLines
* Issue 41003: Breakpad DWARF parser: Include <cstdio>, since we use itjimblandy@gmail.com2009-12-151-2/+2
| | | | | | | | | | | | | | | | src/common/dwarf/dwarf2reader.cc uses the old-fashioned <stdio.h> facilities to report errors. Ideally, we would add a 'Warning' message to the handler and make the client responsible for dealing with the errors, but this at least allows us to compile. Ubuntu 9.10 uses GCC 4.4.1; under older versions of GCC, this wasn't a problem, probably because stdio.h was being brought in inadvertently somewhere else. a=jimblandy, r=nealsid git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@449 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Issue 42002: Breakpad DWARF parser: avoid using <stdint.h> typejimblandy@gmail.com2009-12-153-3/+11
| | | | | | | | | | | | | | | | | | | | | It seems that a use of the <stdint.h> type uintptr_t has crept into the DWARF parser. This defines a workaround for the GNU compilers (tested on both Mac and Linux) which will raise an error if it doesn't work. My personal preference would be just to assume that the <stdint.h> header is available and use the standard types everywhere, but 1) that would be a large change, likely to make merges with the other branches of the DWARF parser more difficult, and 2) it would make it quite difficult to build under Microsoft Visual Studio, which doesn't have the <stdint.h> header; Microsoft has said they have no plans to provide it, as they would rather "focus their efforts" on C++ and .NET. a=jimblandy, r=nealsid git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@448 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Issue 42001: Breakpad Linux Dumper: remove compilation warnings in ↵jimblandy@gmail.com2009-12-151-4/+18
| | | | | | | | | | | | | | | | | | guid_creator.cc. Building on Ubuntu 9.10 with the distributed compiler (GCC 4.4.1), we get warnings like the following: guid_creator.cc:56: warning: dereferencing type-punned pointer will break strict-aliasing rules It doesn't matter in this case, but there's no crying need to use reinterpret casts in an endian-dependent way when there are plenty of well-defined ways to get the same effect. a=jimblandy, r=nealsid git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@447 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Issue 39002: Breakpad DWARF parser: Move DWARF parser to ↵jimblandy@gmail.com2009-12-1515-49/+49
| | | | | | | | | | | | | | | | platform-independent directory. Move the DWARF parser, and the functioninfo.cc DWARF consumer, from src/common/mac/dwarf to src/commmon/dwarf, so that it can be shared between the Mac and Linux dumpers. Fix up #include directives, multiple inclusion protection macros, and Xcode build files. a=jimblandy, r=nealsid git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@446 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Issue 26001: Linux dumper: fix comments in STABS readerjimblandy@gmail.com2009-12-152-24/+28
| | | | | | | | | | Typos; ambiguities; dangling references to arguments whose names got changed. a=jimblandy, r=nealsid git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@445 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Linux dumper: Add unit tests for google_breakpad::StabsReader.jimblandy@gmail.com2009-12-157-0/+607
| | | | | | | | | | | | | | | | | | | | | | The test system is based on Google C++ Testing Framework and the Google C++ Mocking Framework. This includes a parser that turns human-readable input files ("mock stabs") into .stab and .stabstr section contents, which we can then pass to a StabsReader instance, using a handler object written with GoogleMock. The 'make check' target in src/tools/linux/dump_syms runs this. The supplied input file is pretty small, but I've done coverage testing, and it does cover the parser. I thought the mock stabs parser would be less elaborate than it turned out to be. Lesson learned. a=jimblandy, r=nealsid git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@444 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Issue 25003: Linux dumper: Fix infinite loop in stabs parser.jimblandy@gmail.com2009-12-151-1/+6
| | | | | | | | | | | | If the input passed to a StabsReader instance contains a compilation unit whose first entry is an N_SO with no name, the parser enters an infinite loop. Since such entries mark the end of a compilation unit, ProcessCompilationUnit should skip them. a=jimblandy, r=nealsid git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@443 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Issue 25002: Linux symbol dumper: Require STABS consumers to provide a ↵jimblandy@gmail.com2009-12-152-1/+9
| | | | | | | | | | | | | Warning member. The StabsHandler class should not provide a fallback definition for its Warning member function that just throws away warning messages. It should require the consumer to provide an appropriate definition. a=jimblandy, r=nealsid git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@442 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Issue 39001: Breakpad Linux dumper: Refactor Makefile.jimblandy@gmail.com2009-12-151-24/+123
| | | | | | | | | | | | | | | | | | Use GNU Make features to make the dumper, unit tests, and maintenance targets more independent, so I get fewer conflicts as I work on different parts of the patch series. In particular: - Provide targets to run tests and produce test coverage reports. - Gather C and C++ build rules in one place. - Avoid variables that list object files, as pattern rules can compute these values directly from the dependencies. - Use VPATH to find sources in other directories. a=jimb, r=nealsid git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@441 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Mozilla bug 532713 - OS X client code doesn't decoded extended family ids in ↵ted.mielczarek2009-12-141-0/+15
| | | | | | CPU info. Patch by Jeff Muizelaar <jmuizelaar@mozilla.com>, r=me git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@440 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Fix some build warningsnealsid2009-12-102-2/+2
| | | | | | | | | A=zhurunz R=nealsid git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@439 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Allow Minidump class to be instantiated with stream instead of file. r=mark ↵ted.mielczarek2009-12-093-32/+162
| | | | | | at http://breakpad.appspot.com/46001 git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@438 4c0a9323-5329-0410-9bdc-e9ce6186880e
* remove trailing comma from enum definition to make it compile with -pedanticted.mielczarek2009-12-031-1/+1
| | | | git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@437 4c0a9323-5329-0410-9bdc-e9ce6186880e
* issue 330 - linux_syscall_support.h has extra semicolons causing compilation ↵ted.mielczarek2009-12-031-3/+3
| | | | | | to fail with certain gcc options. Patch by Josh Aas <joshmoz@gmail.com>, r=me git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@436 4c0a9323-5329-0410-9bdc-e9ce6186880e
* issue 336 - Look for libcurl-gnutls in addition to libcurl.so. Patch by Karl ↵ted.mielczarek2009-12-031-0/+7
| | | | | | Tomlinson <karlt@mozbugz.karlt.net>, r=me git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@435 4c0a9323-5329-0410-9bdc-e9ce6186880e
* remove empty file, leftover from r384ted.mielczarek2009-12-031-0/+0
| | | | git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@434 4c0a9323-5329-0410-9bdc-e9ce6186880e
* issue 170 - Report assertion type in minidump_stackwalk output. r=mark at ↵ted.mielczarek2009-12-028-1/+248
| | | | | | http://breakpad.appspot.com/45001 git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@433 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Upstreaming several patches from Chrome:nealsid2009-12-0110-28/+31
| | | | | | | | | | | | | | | | | | | | | | | | | | Build fix for systems where sys/user.h needs sys/types.h.... http://breakpad.appspot.com/40002 MDRawSystemInfo.processor_level refers to the CPU family, not the cpuid level.. http://breakpad.appspot.com/40003 Use MD_MODULE_SIZE in place of sizeof(MDRawModule). http://breakpad.appspot.com/39003 Linux x64 compile fix. http://breakpad.appspot.com/40004 Include linux_syscall_support.h to get definition of NT_PRXFPREG. This is Chromium commit 23659. http://breakpad.appspot.com/40005 Build breakpad / crash reporting on Linux 64-bit. This is Chromium commit 23396. http://breakpad.appspot.com/40006 Fix #includes in a couple unit tests. http://breakpad.appspot.com/41001 Clean up unused headers / files for Linux dump_syms. http://breakpad.appspot.com/40002 git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@432 4c0a9323-5329-0410-9bdc-e9ce6186880e
* don't output duplicate filenames in PDBSourceLineWriter. r=mark at ↵ted.mielczarek2009-11-232-3/+54
| | | | | | http://breakpad.appspot.com/43001 git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@431 4c0a9323-5329-0410-9bdc-e9ce6186880e
* output function names for PGO-optimized cold function blocks. r=mark at ↵ted.mielczarek2009-11-202-5/+67
| | | | | | http://breakpad.appspot.com/40007 git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@430 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Forward exceptions in child processes to Apple's Crash Reporternealsid2009-11-181-0/+3
| | | | | | | | | | http://breakpad.appspot.com/38001/show R=mmentovai, jeremy A=nealsid git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@429 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Always export catch_exception_raise.mmentovai2009-11-111-1/+4
| | | | | | | | | Patch by Jeremy Moskovich <jeremy@chromium.org> Code review URL: http://breakpad.appspot.com/37001 git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@428 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Fix when walking stack when no module list is present and the return address ↵nealsid2009-10-301-1/+1
| | | | | | | | | | | | | | | has to be scanned. http://breakpad.appspot.com/36002 R=doshimun A=nealsid git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@420 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Fixed style errorjschuh@chromium.org2009-10-191-1/+1
| | | | git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@419 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Issue 35001: Fallback to Thread Context on bad Exception Contextjschuh@chromium.org2009-10-192-5/+10
| | | | git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@418 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Allow the Breakpad Mac framework to be built without -fexceptions.mmentovai2009-10-151-51/+45
| | | | | | Review URL: http://breakpad.appspot.com/34003 git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@417 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Raise minidump processing limitsnealsid2009-10-141-4/+4
| | | | | | | | | A=justin schuh R=nealsid git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@416 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Issue 32002: Breakpad DWARF parser: Update char decls to be signedjimblandy@gmail.com2009-10-081-17/+23
| | | | | | | | a=jimblandy r=nealsid git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@410 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Let x86 stackwalker scan stack in cases where program evaluation fails. ↵ted.mielczarek2009-10-087-27/+161
| | | | | | Original patch by Jeff Muizelaar <jmuizelaar@mozilla.com> with some changes by me. r=mento at http://breakpad.appspot.com/32003/show git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@409 4c0a9323-5329-0410-9bdc-e9ce6186880e
* 10.6 SDK compatibility fixes. No bug.mmentovai2009-10-064-2/+8
| | | | git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@407 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Modification to crash_report to process a directory of .DMP filesnealsid2009-09-301-5/+28
| | | | | | | | | | | http://breakpad.appspot.com/31001 R=nealsid A=krisr git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@405 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Fix compilation of OS X handler on PPC with 10.5 SDK. r=nealsid at ↵ted.mielczarek2009-09-302-18/+5
| | | | | | http://breakpad.appspot.com/30001 git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@404 4c0a9323-5329-0410-9bdc-e9ce6186880e
* New uploader for Linux with unit tests, and gflags/glog librariesnealsid2009-09-2917-9/+3616
| | | | | | | | | | | 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
* Check RegisterWaitForSingleObject return in CrashGenerationServer::Start.mmentovai2009-09-281-6/+8
| | | | | | | | | Patch by Matt Mueller <mattm@chromium.org> Review URL: http://codereview.chromium.org/244028 git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@402 4c0a9323-5329-0410-9bdc-e9ce6186880e
* A better makefile for building the Linux client.nealsid2009-09-182-45/+51
| | | | | | | | | | | http://breakpad.appspot.com/29003 A=nealsid R=chris masone git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@400 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Issue 328 - should have constant for VC++ exceptions, and stringify in ↵ted.mielczarek2009-09-042-1/+7
| | | | | | | | | | MinidumpProcessor::GetCrashReason r=nealsid at http://breakpad.appspot.com/25001/show git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@394 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Breakpad: Don't use the deprecated __gnu_cxx::hash_map container.jimblandy@gmail.com2009-09-037-83/+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
* Fix text field resizing for 10.5+ SDKstuartmorgan2009-08-281-1/+4
| | | | git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@392 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-1729-2277/+6739
| | | | | | | | | A=agl, Lei Zhang R=nealsid, agl git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@384 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Fix build errors with gcc 4.4. Patch by Silvius Rus <rus@google.com>.mmentovai2009-08-143-0/+4
| | | | git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@383 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-074-447/+578
| | | | | | | | | | | | | | | | | | | | | | | 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-072-136/+112
| | | | | | | | | | | | | 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