[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.
Malea, Daniel
daniel.malea at intel.com
Mon Sep 16 16:16:11 PDT 2013
Sweet, thanks Greg! It looks like that commit fixes the buildbots.
Dan
On 2013-09-16 6:16 PM, "Greg Clayton" <gclayton at apple.com> wrote:
>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