diff options
| author | Ryan Brown <ribrdb@google.com> | 2015-09-14 22:45:11 +0000 |
|---|---|---|
| committer | Ryan Brown <ribrdb@google.com> | 2015-09-14 22:45:11 +0000 |
| commit | 57bee1edfcdc8bbf60f39935b5603a558a341cff (patch) | |
| tree | 40e57de3c854a72114c7900a5189e8a3591b51bc /lldb/source/Core/Module.cpp | |
| parent | 3e13005031260ab239fc3246043c7320753e58d1 (diff) | |
Add a TypeSystem for Go
Add GoASTContext and DWARFASTParserGo to support go.
Differential Revision: http://reviews.llvm.org/D12585
llvm-svn: 247629
Diffstat (limited to 'lldb/source/Core/Module.cpp')
| -rw-r--r-- | lldb/source/Core/Module.cpp | 21 |
1 files changed, 20 insertions, 1 deletions
diff --git a/lldb/source/Core/Module.cpp b/lldb/source/Core/Module.cpp index 2fbc5e7af164..256673361a7d 100644 --- a/lldb/source/Core/Module.cpp +++ b/lldb/source/Core/Module.cpp @@ -25,6 +25,7 @@ #include "lldb/Interpreter/ScriptInterpreter.h" #include "lldb/Symbol/ClangASTContext.h" #include "lldb/Symbol/CompileUnit.h" +#include "lldb/Symbol/GoASTContext.h" #include "lldb/Symbol/ObjectFile.h" #include "lldb/Symbol/SymbolContext.h" #include "lldb/Symbol/SymbolVendor.h" @@ -148,6 +149,7 @@ Module::Module (const ModuleSpec &module_spec) : m_objfile_sp (), m_symfile_ap (), m_ast (new ClangASTContext), + m_go_ast(), m_source_mappings (), m_sections_ap(), m_did_load_objfile (false), @@ -252,6 +254,7 @@ Module::Module(const FileSpec& file_spec, m_objfile_sp (), m_symfile_ap (), m_ast (new ClangASTContext), + m_go_ast(), m_source_mappings (), m_sections_ap(), m_did_load_objfile (false), @@ -298,6 +301,7 @@ Module::Module () : m_objfile_sp (), m_symfile_ap (), m_ast (new ClangASTContext), + m_go_ast(), m_source_mappings (), m_sections_ap(), m_did_load_objfile (false), @@ -420,7 +424,22 @@ Module::GetUUID() TypeSystem * Module::GetTypeSystemForLanguage (LanguageType language) { - if (language != eLanguageTypeSwift) + if (language == eLanguageTypeGo) + { + Mutex::Locker locker (m_mutex); + if (!m_go_ast) + { + ObjectFile * objfile = GetObjectFile(); + ArchSpec object_arch; + if (objfile && objfile->GetArchitecture(object_arch)) + { + m_go_ast.reset(new GoASTContext); + m_go_ast->SetAddressByteSize(object_arch.GetAddressByteSize()); + } + } + return m_go_ast.get(); + } + else if (language != eLanguageTypeSwift) { // For now assume all languages except swift use the ClangASTContext for types return &GetClangASTContext(); |
