From 57bee1edfcdc8bbf60f39935b5603a558a341cff Mon Sep 17 00:00:00 2001 From: Ryan Brown Date: Mon, 14 Sep 2015 22:45:11 +0000 Subject: Add a TypeSystem for Go Add GoASTContext and DWARFASTParserGo to support go. Differential Revision: http://reviews.llvm.org/D12585 llvm-svn: 247629 --- lldb/source/Core/Module.cpp | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) (limited to 'lldb/source/Core/Module.cpp') 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(); -- cgit v1.2.3