I believe 190811 just fixed this. Please let me know your results! On Sep 16, 2013, at 12:12 PM, Malea, Daniel <[email protected]> wrote:
> Hi Greg, > > This commit seems to introduce a few errors on the buildbots in the following > tests: > - TestDynamicValue > - TestVirtual > > http://lab.llvm.org:8011/builders/lldb-x86_64-linux/builds/6709 > > When you have a moment, can you take a look? > > > Thanks, > Dan > > -----Original Message----- > From: [email protected] > [mailto:[email protected]] On Behalf Of Greg Clayton > Sent: Friday, August 9, 2013 8:10 PM > To: [email protected] > Subject: [Lldb-commits] [lldb] r188124 - Fixed a case where GCC was emitting > a DW_TAG_class_type that has a DW_AT_declaration set to true, yet the class > actually contains a definition for the class in that DIE. > > Author: gclayton > Date: Fri Aug 9 19:09:35 2013 > New Revision: 188124 > > URL: http://llvm.org/viewvc/llvm-project?rev=188124&view=rev > Log: > Fixed a case where GCC was emitting a DW_TAG_class_type that has a > DW_AT_declaration set to true, yet the class actually contains a definition > for the class in that DIE. > > > Modified: > lldb/trunk/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.cpp > > Modified: lldb/trunk/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.cpp > URL: > http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.cpp?rev=188124&r1=188123&r2=188124&view=diff > ============================================================================== > --- lldb/trunk/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.cpp (original) > +++ lldb/trunk/source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.cpp Fri Aug 9 > 19:09:35 2013 > @@ -6193,6 +6193,30 @@ SymbolFileDWARF::ParseType (const Symbol > GetUniqueDWARFASTTypeMap().Insert (type_name_const_str, > unique_ast_entry); > > + if (is_forward_declaration && die->HasChildren()) > + { > + // Check to see if the DIE actually has a > definition, some version of GCC will > + // emit DIEs with DW_AT_declaration set to true, but > yet still have subprogram, > + // members, or inheritance, so we can't trust it > + const DWARFDebugInfoEntry *child_die = > die->GetFirstChild(); > + while (child_die) > + { > + switch (child_die->Tag()) > + { > + case DW_TAG_inheritance: > + case DW_TAG_subprogram: > + case DW_TAG_member: > + case DW_TAG_APPLE_property: > + child_die = NULL; > + is_forward_declaration = false; > + break; > + default: > + child_die = child_die->GetSibling(); > + break; > + } > + } > + } > + > if (!is_forward_declaration) > { > // Always start the definition for a class type so > that > > > _______________________________________________ > lldb-commits mailing list > [email protected] > http://lists.cs.uiuc.edu/mailman/listinfo/lldb-commits _______________________________________________ lldb-commits mailing list [email protected] http://lists.cs.uiuc.edu/mailman/listinfo/lldb-commits
