mirror of
https://git.suyu.dev/suyu/breakpad.git
synced 2025-12-24 08:15:01 +01:00
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 .
|
||
|---|---|---|
| .. | ||
| android | ||
| dwarf | ||
| linux | ||
| mac | ||
| solaris | ||
| testdata | ||
| tests | ||
| windows | ||
| basictypes.h | ||
| byte_cursor.h | ||
| byte_cursor_unittest.cc | ||
| common.gyp | ||
| convert_UTF.c | ||
| convert_UTF.h | ||
| dwarf_cfi_to_module.cc | ||
| dwarf_cfi_to_module.h | ||
| dwarf_cfi_to_module_unittest.cc | ||
| dwarf_cu_to_module.cc | ||
| dwarf_cu_to_module.h | ||
| dwarf_cu_to_module_unittest.cc | ||
| dwarf_line_to_module.cc | ||
| dwarf_line_to_module.h | ||
| dwarf_line_to_module_unittest.cc | ||
| language.cc | ||
| language.h | ||
| md5.cc | ||
| md5.h | ||
| memory.h | ||
| memory_range.h | ||
| memory_range_unittest.cc | ||
| memory_unittest.cc | ||
| minidump_type_helper.h | ||
| module.cc | ||
| module.h | ||
| module_unittest.cc | ||
| scoped_ptr.h | ||
| simple_string_dictionary.cc | ||
| simple_string_dictionary.h | ||
| simple_string_dictionary_unittest.cc | ||
| stabs_reader.cc | ||
| stabs_reader.h | ||
| stabs_reader_unittest.cc | ||
| stabs_to_module.cc | ||
| stabs_to_module.h | ||
| stabs_to_module_unittest.cc | ||
| stdio_wrapper.h | ||
| string_conversion.cc | ||
| string_conversion.h | ||
| symbol_data.h | ||
| test_assembler.cc | ||
| test_assembler.h | ||
| test_assembler_unittest.cc | ||
| unordered.h | ||
| using_std_string.h | ||