Try this out:

% svn commit
Sending        include/lldb/Symbol/ClangASTContext.h
Sending        include/lldb/Symbol/TypeSystem.h
Sending        lldb.xcodeproj/project.pbxproj
Sending        source/Plugins/SymbolFile/DWARF/CMakeLists.txt
Adding         source/Plugins/SymbolFile/DWARF/DWARFASTParser.h
Adding         source/Plugins/SymbolFile/DWARF/DWARFASTParserClang.cpp
Adding         source/Plugins/SymbolFile/DWARF/DWARFASTParserClang.h
Sending        source/Plugins/SymbolFile/DWARF/DWARFDIE.cpp
Sending        source/Plugins/SymbolFile/DWARF/DWARFDIE.h
Sending        source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.cpp
Sending        source/Plugins/SymbolFile/DWARF/SymbolFileDWARF.h
Sending        source/Plugins/SymbolFile/DWARF/SymbolFileDWARFDebugMap.h
Sending        source/Symbol/ClangASTContext.cpp
Transmitting file data .............
Committed revision 246242.

It should address everything we talked about. Commit message for this was:


Made a new abstract class named "DWARFASTParser" which lives in 
"source/Plugins/SymbolFile/DWARF":

class DWARFASTParser
{
public:
    virtual ~DWARFASTParser() {}

    virtual lldb::TypeSP
    ParseTypeFromDWARF (const lldb_private::SymbolContext& sc,
                        const DWARFDIE &die,
                        lldb_private::Log *log,
                        bool *type_is_new_ptr) = 0;


    virtual lldb_private::Function *
    ParseFunctionFromDWARF (const lldb_private::SymbolContext& sc,
                            const DWARFDIE &die) = 0;

    virtual bool
    CompleteTypeFromDWARF (const DWARFDIE &die,
                           lldb_private::Type *type,
                           lldb_private::CompilerType &clang_type) = 0;

    virtual lldb_private::CompilerDeclContext
    GetDeclContextForUIDFromDWARF (const DWARFDIE &die) = 0;

    virtual lldb_private::CompilerDeclContext
    GetDeclContextContainingUIDFromDWARF (const DWARFDIE &die) = 0;

};

We have one subclass named DWARFASTParserClang that implements all of the clang 
specific AST type parsing. This keeps all DWARF parsing in the DWARF plug-in. 
Moved all of the DWARF parsing code that was in ClangASTContext over into 
DWARFASTParserClang.

lldb_private::TypeSystem classes no longer have any DWARF parsing functions in 
them, but they can hand out a DWARFASTParser:

virtual DWARFASTParser *
GetDWARFParser ()
{
    return nullptr;
}

This keeps things clean and makes for easy merging when we have different AST's 
for different languages.


> On Aug 27, 2015, at 4:06 PM, d...@burble.org wrote:
> 
> On Thu, Aug 27, 2015 at 03:57:30PM -0700, Greg Clayton wrote:
>> 
>> I can probably clean this up by making a DWARFASTParser a plug-in type and 
>> move all DWARF parsing code over into it and place that inside the DWARF 
>> plug-in folder. I see if I can do that quick to get the code organization 
>> back to how we want it.
> 
> Very cool!!  This is exactly what I was hoping for.  Thank you Greg!!!

_______________________________________________
lldb-commits mailing list
lldb-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits

Reply via email to