[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.
Greg Clayton
gclayton at apple.com
Mon Sep 16 15:16:22 PDT 2013
I believe 190811 just fixed this. Please let me know your results!
On Sep 16, 2013, at 12:12 PM, Malea, Daniel <daniel.malea at intel.com> 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: lldb-commits-bounces at cs.uiuc.edu [mailto:lldb-commits-bounces at cs.uiuc.edu] On Behalf Of Greg Clayton
> Sent: Friday, August 9, 2013 8:10 PM
> To: lldb-commits at cs.uiuc.edu
> 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
> lldb-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/lldb-commits
More information about the lldb-commits
mailing list