From dd5067f391baee2561404f8e2915429b3d638ff7 Mon Sep 17 00:00:00 2001 From: jimblandy Date: Wed, 10 Feb 2010 17:55:24 +0000 Subject: Linux DWARF reader: Follow DW_AT_abstract_origin links to find function names. Without this patch, debugging information like the following will produce FUNC records with no names, because the dumper (correctly) ignores the DW_TAG_subprogram DIEs that lack DW_AT_low_pc/DW_AT_high_pc attributes, but won't follow the DW_AT_abstract_origin link from the DIE that does have code addresses to find its name. <1><168>: Abbrev Number: 5 (DW_TAG_class_type) <169> DW_AT_name : Foo <2><183>: Abbrev Number: 7 (DW_TAG_subprogram) <185> DW_AT_name : Foo <18b> DW_AT_declaration : 1 <1><1b7>: Abbrev Number: 12 (DW_TAG_subprogram) <1b8> DW_AT_specification: <0x183> <1bc> DW_AT_inline : 2 (declared as inline but ignored) <1><1dc>: Abbrev Number: 16 (DW_TAG_subprogram) <1dd> DW_AT_abstract_origin: <0x1b7> <1e1> DW_AT_low_pc : 0x8048578 <1e5> DW_AT_high_pc : 0x8048588 a=dmuir, r=jimblandy git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@520 4c0a9323-5329-0410-9bdc-e9ce6186880e --- src/common/linux/dwarf_cu_to_module.h | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'src/common/linux/dwarf_cu_to_module.h') diff --git a/src/common/linux/dwarf_cu_to_module.h b/src/common/linux/dwarf_cu_to_module.h index 9b33af9a..af330cff 100644 --- a/src/common/linux/dwarf_cu_to_module.h +++ b/src/common/linux/dwarf_cu_to_module.h @@ -130,7 +130,11 @@ class DwarfCUToModule: public dwarf2reader::RootDIEHandler { // haven't processed yet, or that wasn't marked as a declaration, // at TARGET. virtual void UnknownSpecification(uint64 offset, uint64 target); - + + // A DW_AT_abstract_origin in the DIE at OFFSET refers to a DIE we + // haven't processed yet, or that wasn't marked as inline, at TARGET. + virtual void UnknownAbstractOrigin(uint64 offset, uint64 target); + // We were unable to find the DWARF section named SECTION_NAME. virtual void MissingSection(const string §ion_name); -- cgit v1.2.1