[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