gecko-dev/toolkit/crashreporter/google-breakpad
Ted Mielczarek 73ec0ca7ec bug 1283916 - Fix DWARF handling of inlined functions in namespaces. r=mento
Currently an inlined function in a namespace in DWARF will
be given a name comprised of just `namespace::`. This is due
to a logic error in ComputeQualifiedName, where it doesn't
handle an empty `unqualified_name` properly.

We apparently have a fair number of these in our Mac builds,
an example of the DWARF that's being mishandled looks like:
0x117eda40:     TAG_namespace [5] *
                 AT_name( "js" )
                 AT_decl_file( "../../dist/include/js/Utility.h" )
                 AT_decl_line( 35 )

0x11808500:         TAG_subprogram [251] *
                     AT_low_pc( 0x0000000002f12110 )
                     AT_high_pc( 0x0000000002f1216b )
                     AT_APPLE_omit_frame_ptr( 0x01 )
                     AT_frame_base( rsp )
                     AT_abstract_origin( {0x0000000011800a4f}"_ZN2js40TraceManuallyBarrieredGenericPointerEdgeEP8JSTracerPPNS_2gc4CellEPKc" )
                      AT_MIPS_linkage_name( "_ZN2js40TraceManuallyBarrieredGenericPointerEdgeEP8JSTracerPPNS_2gc4CellEPKc" )
                      AT_name( "TraceManuallyBarrieredGenericPointerEdge" )
                      AT_decl_file( "/builds/slave/rel-m-rel-m64_bld-000000000000/build/js/src/gc/Marking.cpp" )
                      AT_decl_line( 547 )
                      AT_external( 0x01 )
                      AT_APPLE_optimized( 0x01 )
                      AT_inline( DW_INL_inlined )

This turned a few instances of this in the file I was testing on into
`<name omitted>`, which seems to just be a symptom of the
"DW_AT_abstract_origin comes later in the file" issue. (Which is probably
also worth fixing given that it occurs some 29k times when dumping
symbols from Firefox's XUL binary, but it's a separate issue.)

R=mark@chromium.org
BUG=

Review URL: https://codereview.chromium.org/1887033002 .

MozReview-Commit-ID: L3cn5z4FY6M

--HG--
extra : rebase_source : 03ebda4cf2d1179b2180a2817137a5f600f7ad1a
2016-07-06 09:36:35 -04:00
..
android bug 1069556 - sync to Breakpad c53ed143108948eb7e2d7ee77dc8c0d92050ce7c. r=glandium, benwa 2016-01-27 09:39:53 -05:00
autotools bug 1069556 - sync to Breakpad c53ed143108948eb7e2d7ee77dc8c0d92050ce7c. r=glandium, benwa 2016-01-27 09:39:53 -05:00
m4
src bug 1283916 - Fix DWARF handling of inlined functions in namespaces. r=mento 2016-07-06 09:36:35 -04:00
.gitignore bug 1069556 - sync to Breakpad c53ed143108948eb7e2d7ee77dc8c0d92050ce7c. r=glandium, benwa 2016-01-27 09:39:53 -05:00
AUTHORS
ChangeLog
DEPS bug 1069556 - sync to Breakpad c53ed143108948eb7e2d7ee77dc8c0d92050ce7c. r=glandium, benwa 2016-01-27 09:39:53 -05:00
GIT-INFO bug 1069556 - sync to Breakpad c53ed143108948eb7e2d7ee77dc8c0d92050ce7c. r=glandium, benwa 2016-01-27 09:39:53 -05:00
INSTALL bug 1069556 - sync to Breakpad c53ed143108948eb7e2d7ee77dc8c0d92050ce7c. r=glandium, benwa 2016-01-27 09:39:53 -05:00
LICENSE bug 1069556 - sync to Breakpad c53ed143108948eb7e2d7ee77dc8c0d92050ce7c. r=glandium, benwa 2016-01-27 09:39:53 -05:00
Makefile.am bug 1069556 - sync to Breakpad c53ed143108948eb7e2d7ee77dc8c0d92050ce7c. r=glandium, benwa 2016-01-27 09:39:53 -05:00
Makefile.in
NEWS
README.ANDROID Bug 1275630 - Update breakpad documentation links. r=ted 2016-05-25 10:01:52 -07:00
README.md bug 1069556 - sync to Breakpad c53ed143108948eb7e2d7ee77dc8c0d92050ce7c. r=glandium, benwa 2016-01-27 09:39:53 -05:00
aclocal.m4 bug 1069556 - sync to Breakpad c53ed143108948eb7e2d7ee77dc8c0d92050ce7c. r=glandium, benwa 2016-01-27 09:39:53 -05:00
breakpad-client.pc.in bug 1069556 - sync to Breakpad c53ed143108948eb7e2d7ee77dc8c0d92050ce7c. r=glandium, benwa 2016-01-27 09:39:53 -05:00
breakpad.pc.in bug 1069556 - sync to Breakpad c53ed143108948eb7e2d7ee77dc8c0d92050ce7c. r=glandium, benwa 2016-01-27 09:39:53 -05:00
codereview.settings bug 1069556 - sync to Breakpad c53ed143108948eb7e2d7ee77dc8c0d92050ce7c. r=glandium, benwa 2016-01-27 09:39:53 -05:00
configure bug 1069556 - sync to Breakpad c53ed143108948eb7e2d7ee77dc8c0d92050ce7c. r=glandium, benwa 2016-01-27 09:39:53 -05:00
configure.ac bug 1069556 - sync to Breakpad c53ed143108948eb7e2d7ee77dc8c0d92050ce7c. r=glandium, benwa 2016-01-27 09:39:53 -05:00

README.md

Breakpad

Breakpad is a set of client and server components which implement a crash-reporting system.

Getting started in 32-bit mode (from trunk)

# Configure
CXXFLAGS=-m32 CFLAGS=-m32 CPPFLAGS=-m32 ./configure
# Build
make
# Test
make check
# Install
make install

If you need to reconfigure your build be sure to run make distclean first.

To request change review:

  1. Get a copy of depot_tools repo. http://dev.chromium.org/developers/how-tos/install-depot-tools

  2. Create a new directory for checking out the source code. mkdir breakpad && cd breakpad

  3. Run the fetch tool from depot_tools to download all the source repos. fetch breakpad

  4. Make changes. Build and test your changes. For core code like processor use methods above. For linux/mac/windows, there are test targets in each project file.

  5. Commit your changes to your local repo and upload them to the server. http://dev.chromium.org/developers/contributing-code e.g. git commit ... && git cl upload ... You will be prompted for credential and a description.

  6. At https://codereview.chromium.org/ you'll find your issue listed; click on it, and select Publish+Mail, and enter in the code reviewer and CC google-breakpad-dev@googlegroups.com

Documentation

Visit https://chromium.googlesource.com/breakpad/breakpad/+/master/docs/