summaryrefslogtreecommitdiffstats
path: root/lldb/source
diff options
context:
space:
mode:
Diffstat (limited to 'lldb/source')
-rw-r--r--lldb/source/API/SystemInitializerFull.cpp11
-rw-r--r--lldb/source/DataFormatters/CMakeLists.txt1
-rw-r--r--lldb/source/DataFormatters/FormatManager.cpp150
-rw-r--r--lldb/source/DataFormatters/LanguageCategory.cpp133
-rw-r--r--lldb/source/DataFormatters/TypeCategoryMap.cpp20
-rw-r--r--lldb/source/Plugins/Language/CMakeLists.txt1
-rw-r--r--lldb/source/Target/Language.cpp6
7 files changed, 28 insertions, 294 deletions
diff --git a/lldb/source/API/SystemInitializerFull.cpp b/lldb/source/API/SystemInitializerFull.cpp
index 5711d0fc584..4ba4a420b2a 100644
--- a/lldb/source/API/SystemInitializerFull.cpp
+++ b/lldb/source/API/SystemInitializerFull.cpp
@@ -41,9 +41,6 @@
#include "Plugins/Instruction/ARM64/EmulateInstructionARM64.h"
#include "Plugins/InstrumentationRuntime/AddressSanitizer/AddressSanitizerRuntime.h"
#include "Plugins/JITLoader/GDB/JITLoaderGDB.h"
-#include "Plugins/Language/CPlusPlus/CPlusPlusLanguage.h"
-#include "Plugins/Language/ObjC/ObjCLanguage.h"
-#include "Plugins/Language/ObjCPlusPlus/ObjCPlusPlusLanguage.h"
#include "Plugins/LanguageRuntime/CPlusPlus/ItaniumABI/ItaniumABILanguageRuntime.h"
#include "Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCRuntimeV1.h"
#include "Plugins/LanguageRuntime/ObjC/AppleObjCRuntime/AppleObjCRuntimeV2.h"
@@ -284,10 +281,6 @@ SystemInitializerFull::Initialize()
AppleObjCRuntimeV1::Initialize();
SystemRuntimeMacOSX::Initialize();
RenderScriptRuntime::Initialize();
-
- CPlusPlusLanguage::Initialize();
- ObjCLanguage::Initialize();
- ObjCPlusPlusLanguage::Initialize();
#if defined(_MSC_VER)
ProcessWindows::Initialize();
@@ -392,10 +385,6 @@ SystemInitializerFull::Terminate()
SystemRuntimeMacOSX::Terminate();
RenderScriptRuntime::Terminate();
- CPlusPlusLanguage::Terminate();
- ObjCLanguage::Terminate();
- ObjCPlusPlusLanguage::Terminate();
-
#if defined(__APPLE__)
ProcessMachCore::Terminate();
ProcessKDP::Terminate();
diff --git a/lldb/source/DataFormatters/CMakeLists.txt b/lldb/source/DataFormatters/CMakeLists.txt
index 691190a5768..ad29369b730 100644
--- a/lldb/source/DataFormatters/CMakeLists.txt
+++ b/lldb/source/DataFormatters/CMakeLists.txt
@@ -9,7 +9,6 @@ add_lldb_library(lldbDataFormatters
FormatCache.cpp
FormatClasses.cpp
FormatManager.cpp
- LanguageCategory.cpp
LibCxx.cpp
LibCxxInitializerList.cpp
LibCxxList.cpp
diff --git a/lldb/source/DataFormatters/FormatManager.cpp b/lldb/source/DataFormatters/FormatManager.cpp
index 52209cae3be..e41d341a21e 100644
--- a/lldb/source/DataFormatters/FormatManager.cpp
+++ b/lldb/source/DataFormatters/FormatManager.cpp
@@ -16,13 +16,10 @@
#include "lldb/Core/Debugger.h"
#include "lldb/DataFormatters/CXXFormatterFunctions.h"
-#include "lldb/DataFormatters/LanguageCategory.h"
#include "lldb/Target/ExecutionContext.h"
#include "lldb/Target/Platform.h"
#include "llvm/ADT/STLExtras.h"
-#include <initializer_list>
-
using namespace lldb;
using namespace lldb_private;
@@ -475,20 +472,6 @@ FormatManager::GetValidatorForType (lldb::TypeNameSpecifierImplSP type_sp)
return validator_chosen_sp;
}
-void
-FormatManager::LoopThroughCategories (CategoryCallback callback, void* param)
-{
- m_categories_map.LoopThrough(callback, param);
- for (const auto& entry : m_language_categories_map)
- {
- if (auto category_sp = entry.second->GetCategory())
- {
- if (!callback(param, category_sp))
- break;
- }
- }
-}
-
lldb::TypeCategoryImplSP
FormatManager::GetCategory (const ConstString& category_name,
bool can_create)
@@ -613,8 +596,8 @@ FormatManager::GetValidTypeName (const ConstString& type)
}
ConstString
-FormatManager::GetTypeForCache (ValueObject& valobj,
- lldb::DynamicValueType use_dynamic)
+GetTypeForCache (ValueObject& valobj,
+ lldb::DynamicValueType use_dynamic)
{
if (use_dynamic == lldb::eNoDynamicValues)
{
@@ -635,28 +618,6 @@ FormatManager::GetTypeForCache (ValueObject& valobj,
return ConstString();
}
-static std::initializer_list<lldb::LanguageType>
-GetCandidateLanguages (ValueObject& valobj)
-{
- lldb::LanguageType lang_type = valobj.GetObjectRuntimeLanguage();
- switch (lang_type)
- {
- default:
- return {lang_type};
- }
-}
-
-LanguageCategory*
-FormatManager::GetCategoryForLanguage (lldb::LanguageType lang_type)
-{
- auto iter = m_language_categories_map.find(lang_type), end = m_language_categories_map.end();
- if (iter != end)
- return iter->second.get();
- LanguageCategory* lang_category = new LanguageCategory(lang_type);
- m_language_categories_map[lang_type] = LanguageCategory::UniquePointer(lang_category);
- return lang_category;
-}
-
lldb::TypeFormatImplSP
FormatManager::GetHardcodedFormat (ValueObject& valobj,
lldb::DynamicValueType use_dynamic)
@@ -694,29 +655,7 @@ FormatManager::GetFormat (ValueObject& valobj,
if (log)
log->Printf("[FormatManager::GetFormat] Cache search failed. Going normal route");
}
-
- FormattersMatchVector matches = GetPossibleMatches(valobj, use_dynamic);
-
- retval = m_categories_map.GetFormat(valobj, use_dynamic, matches);
- if (!retval)
- {
- if (log)
- log->Printf("[FormatManager::GetFormat] Search failed. Giving language a chance.");
- for (lldb::LanguageType lang_type : GetCandidateLanguages(valobj))
- {
- if (LanguageCategory* lang_category = GetCategoryForLanguage(lang_type))
- {
- if (lang_category->Get(valobj, use_dynamic, matches, retval))
- break;
- }
- }
- if (retval)
- {
- if (log)
- log->Printf("[FormatManager::GetFormat] Language search success. Returning.");
- return retval;
- }
- }
+ retval = m_categories_map.GetFormat(valobj, use_dynamic);
if (!retval)
{
if (log)
@@ -774,29 +713,7 @@ FormatManager::GetSummaryFormat (ValueObject& valobj,
if (log)
log->Printf("[FormatManager::GetSummaryFormat] Cache search failed. Going normal route");
}
-
- FormattersMatchVector matches = GetPossibleMatches(valobj, use_dynamic);
-
- retval = m_categories_map.GetSummaryFormat(valobj, use_dynamic, matches);
- if (!retval)
- {
- if (log)
- log->Printf("[FormatManager::GetSummaryFormat] Search failed. Giving language a chance.");
- for (lldb::LanguageType lang_type : GetCandidateLanguages(valobj))
- {
- if (LanguageCategory* lang_category = GetCategoryForLanguage(lang_type))
- {
- if (lang_category->Get(valobj, use_dynamic, matches, retval))
- break;
- }
- }
- if (retval)
- {
- if (log)
- log->Printf("[FormatManager::GetSummaryFormat] Language search success. Returning.");
- return retval;
- }
- }
+ retval = m_categories_map.GetSummaryFormat(valobj, use_dynamic);
if (!retval)
{
if (log)
@@ -855,29 +772,7 @@ FormatManager::GetSyntheticChildren (ValueObject& valobj,
if (log)
log->Printf("[FormatManager::GetSyntheticChildren] Cache search failed. Going normal route");
}
-
- FormattersMatchVector matches = GetPossibleMatches(valobj, use_dynamic);
-
- retval = m_categories_map.GetSyntheticChildren(valobj, use_dynamic, matches);
- if (!retval)
- {
- if (log)
- log->Printf("[FormatManager::GetSyntheticChildren] Search failed. Giving language a chance.");
- for (lldb::LanguageType lang_type : GetCandidateLanguages(valobj))
- {
- if (LanguageCategory* lang_category = GetCategoryForLanguage(lang_type))
- {
- if (lang_category->Get(valobj, use_dynamic, matches, retval))
- break;
- }
- }
- if (retval)
- {
- if (log)
- log->Printf("[FormatManager::GetSyntheticChildren] Language search success. Returning.");
- return retval;
- }
- }
+ retval = m_categories_map.GetSyntheticChildren(valobj, use_dynamic);
if (!retval)
{
if (log)
@@ -923,29 +818,7 @@ FormatManager::GetValidator (ValueObject& valobj,
if (log)
log->Printf("[FormatManager::GetValidator] Cache search failed. Going normal route");
}
-
- FormattersMatchVector matches = GetPossibleMatches(valobj, use_dynamic);
-
- retval = m_categories_map.GetValidator(valobj, use_dynamic, matches);
- if (!retval)
- {
- if (log)
- log->Printf("[FormatManager::GetValidator] Search failed. Giving language a chance.");
- for (lldb::LanguageType lang_type : GetCandidateLanguages(valobj))
- {
- if (LanguageCategory* lang_category = GetCategoryForLanguage(lang_type))
- {
- if (lang_category->Get(valobj, use_dynamic, matches, retval))
- break;
- }
- }
- if (retval)
- {
- if (log)
- log->Printf("[FormatManager::GetValidator] Language search success. Returning.");
- return retval;
- }
- }
+ retval = m_categories_map.GetValidator(valobj, use_dynamic);
if (!retval)
{
if (log)
@@ -984,7 +857,6 @@ FormatManager::FormatManager() :
m_named_summaries_map(this),
m_last_revision(0),
m_categories_map(this),
- m_language_categories_map(),
m_default_category_name(ConstString("default")),
m_system_category_name(ConstString("system")),
m_gnu_cpp_category_name(ConstString("gnu-libstdc++")),
@@ -1211,7 +1083,17 @@ FormatManager::LoadLibcxxFormatters()
lldb::TypeSummaryImplSP std_wstring_summary_sp(new CXXFunctionSummaryFormat(stl_summary_flags, lldb_private::formatters::LibcxxWStringSummaryProvider, "std::wstring summary provider"));
TypeCategoryImpl::SharedPointer libcxx_category_sp = GetCategory(m_libcxx_category_name);
+
+ libcxx_category_sp->GetTypeSummariesContainer()->Add(ConstString("std::__1::string"),
+ std_string_summary_sp);
+ libcxx_category_sp->GetTypeSummariesContainer()->Add(ConstString("std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >"),
+ std_string_summary_sp);
+ libcxx_category_sp->GetTypeSummariesContainer()->Add(ConstString("std::__1::wstring"),
+ std_wstring_summary_sp);
+ libcxx_category_sp->GetTypeSummariesContainer()->Add(ConstString("std::__1::basic_string<wchar_t, std::__1::char_traits<wchar_t>, std::__1::allocator<wchar_t> >"),
+ std_wstring_summary_sp);
+
SyntheticChildren::Flags stl_synth_flags;
stl_synth_flags.SetCascades(true).SetSkipPointers(false).SetSkipReferences(false);
diff --git a/lldb/source/DataFormatters/LanguageCategory.cpp b/lldb/source/DataFormatters/LanguageCategory.cpp
deleted file mode 100644
index 5d6d43228f8..00000000000
--- a/lldb/source/DataFormatters/LanguageCategory.cpp
+++ /dev/null
@@ -1,133 +0,0 @@
-//===-- LanguageCategory.cpp ---------------------------------------*- C++ -*-===//
-//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-
-#include "lldb/DataFormatters/LanguageCategory.h"
-
-// C Includes
-// C++ Includes
-// Other libraries and framework includes
-// Project includes
-#include "lldb/DataFormatters/FormatManager.h"
-#include "lldb/DataFormatters/TypeCategory.h"
-#include "lldb/DataFormatters/TypeFormat.h"
-#include "lldb/DataFormatters/TypeSummary.h"
-#include "lldb/DataFormatters/TypeSynthetic.h"
-#include "lldb/DataFormatters/TypeValidator.h"
-#include "lldb/Target/Language.h"
-
-using namespace lldb;
-using namespace lldb_private;
-
-LanguageCategory::LanguageCategory (lldb::LanguageType lang_type) :
- m_category_sp(),
- m_format_cache()
-{
- if (Language* language_plugin = Language::FindPlugin(lang_type))
- m_category_sp = language_plugin->GetFormatters();
- if (m_category_sp)
- m_category_sp->Enable(true, 1);
-}
-
-bool
-LanguageCategory::Get (ValueObject& valobj,
- lldb::DynamicValueType dynamic,
- FormattersMatchVector matches,
- lldb::TypeFormatImplSP& format_sp)
-{
- if (!m_category_sp)
- return false;
-
- ConstString type_name = FormatManager::GetTypeForCache(valobj, dynamic);
- if (type_name)
- {
- if (m_format_cache.GetFormat(type_name, format_sp))
- return true;
- }
- bool result = m_category_sp->Get(valobj, matches, format_sp);
- if (type_name && (!format_sp || !format_sp->NonCacheable()))
- {
- m_format_cache.SetFormat(type_name, format_sp);
- }
- return result;
-}
-
-bool
-LanguageCategory::Get (ValueObject& valobj,
- lldb::DynamicValueType dynamic,
- FormattersMatchVector matches,
- lldb::TypeSummaryImplSP& format_sp)
-{
- if (!m_category_sp)
- return false;
-
- ConstString type_name = FormatManager::GetTypeForCache(valobj, dynamic);
- if (type_name)
- {
- if (m_format_cache.GetSummary(type_name, format_sp))
- return true;
- }
- bool result = m_category_sp->Get(valobj, matches, format_sp);
- if (type_name && (!format_sp || !format_sp->NonCacheable()))
- {
- m_format_cache.SetSummary(type_name, format_sp);
- }
- return result;
-}
-
-bool
-LanguageCategory::Get (ValueObject& valobj,
- lldb::DynamicValueType dynamic,
- FormattersMatchVector matches,
- lldb::SyntheticChildrenSP& format_sp)
-{
- if (!m_category_sp)
- return false;
-
- ConstString type_name = FormatManager::GetTypeForCache(valobj, dynamic);
- if (type_name)
- {
- if (m_format_cache.GetSynthetic(type_name, format_sp))
- return true;
- }
- bool result = m_category_sp->Get(valobj, matches, format_sp);
- if (type_name && (!format_sp || !format_sp->NonCacheable()))
- {
- m_format_cache.SetSynthetic(type_name, format_sp);
- }
- return result;
-}
-
-bool
-LanguageCategory::Get (ValueObject& valobj,
- lldb::DynamicValueType dynamic,
- FormattersMatchVector matches,
- lldb::TypeValidatorImplSP& format_sp)
-{
- if (!m_category_sp)
- return false;
-
- ConstString type_name = FormatManager::GetTypeForCache(valobj, dynamic);
- if (type_name)
- {
- if (m_format_cache.GetValidator(type_name, format_sp))
- return true;
- }
- bool result = m_category_sp->Get(valobj, matches, format_sp);
- if (type_name && (!format_sp || !format_sp->NonCacheable()))
- {
- m_format_cache.SetValidator(type_name, format_sp);
- }
- return result;
-}
-
-lldb::TypeCategoryImplSP
-LanguageCategory::GetCategory () const
-{
- return m_category_sp;
-}
diff --git a/lldb/source/DataFormatters/TypeCategoryMap.cpp b/lldb/source/DataFormatters/TypeCategoryMap.cpp
index 3494a8a6860..96b9e6df8a4 100644
--- a/lldb/source/DataFormatters/TypeCategoryMap.cpp
+++ b/lldb/source/DataFormatters/TypeCategoryMap.cpp
@@ -219,8 +219,7 @@ TypeCategoryMap::AnyMatches (ConstString type_name,
lldb::TypeFormatImplSP
TypeCategoryMap::GetFormat (ValueObject& valobj,
- lldb::DynamicValueType use_dynamic,
- FormattersMatchVector matches)
+ lldb::DynamicValueType use_dynamic)
{
Mutex::Locker locker(m_map_mutex);
@@ -229,6 +228,8 @@ TypeCategoryMap::GetFormat (ValueObject& valobj,
Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_TYPES));
+ FormattersMatchVector matches = FormatManager::GetPossibleMatches(valobj, use_dynamic);
+
for (begin = m_active_categories.begin(); begin != end; begin++)
{
lldb::TypeCategoryImplSP category_sp = *begin;
@@ -246,8 +247,7 @@ TypeCategoryMap::GetFormat (ValueObject& valobj,
lldb::TypeSummaryImplSP
TypeCategoryMap::GetSummaryFormat (ValueObject& valobj,
- lldb::DynamicValueType use_dynamic,
- FormattersMatchVector matches)
+ lldb::DynamicValueType use_dynamic)
{
Mutex::Locker locker(m_map_mutex);
@@ -256,6 +256,8 @@ TypeCategoryMap::GetSummaryFormat (ValueObject& valobj,
Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_TYPES));
+ FormattersMatchVector matches = FormatManager::GetPossibleMatches(valobj, use_dynamic);
+
for (begin = m_active_categories.begin(); begin != end; begin++)
{
lldb::TypeCategoryImplSP category_sp = *begin;
@@ -274,8 +276,7 @@ TypeCategoryMap::GetSummaryFormat (ValueObject& valobj,
#ifndef LLDB_DISABLE_PYTHON
lldb::SyntheticChildrenSP
TypeCategoryMap::GetSyntheticChildren (ValueObject& valobj,
- lldb::DynamicValueType use_dynamic,
- FormattersMatchVector matches)
+ lldb::DynamicValueType use_dynamic)
{
Mutex::Locker locker(m_map_mutex);
@@ -285,6 +286,8 @@ TypeCategoryMap::GetSyntheticChildren (ValueObject& valobj,
Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_TYPES));
+ FormattersMatchVector matches = FormatManager::GetPossibleMatches(valobj, use_dynamic);
+
for (begin = m_active_categories.begin(); begin != end; begin++)
{
lldb::TypeCategoryImplSP category_sp = *begin;
@@ -303,8 +306,7 @@ TypeCategoryMap::GetSyntheticChildren (ValueObject& valobj,
lldb::TypeValidatorImplSP
TypeCategoryMap::GetValidator (ValueObject& valobj,
- lldb::DynamicValueType use_dynamic,
- FormattersMatchVector matches)
+ lldb::DynamicValueType use_dynamic)
{
Mutex::Locker locker(m_map_mutex);
@@ -313,6 +315,8 @@ TypeCategoryMap::GetValidator (ValueObject& valobj,
Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_TYPES));
+ FormattersMatchVector matches = FormatManager::GetPossibleMatches(valobj, use_dynamic);
+
for (begin = m_active_categories.begin(); begin != end; begin++)
{
lldb::TypeCategoryImplSP category_sp = *begin;
diff --git a/lldb/source/Plugins/Language/CMakeLists.txt b/lldb/source/Plugins/Language/CMakeLists.txt
index 871c99e4f40..034ae1545ae 100644
--- a/lldb/source/Plugins/Language/CMakeLists.txt
+++ b/lldb/source/Plugins/Language/CMakeLists.txt
@@ -1,3 +1,2 @@
add_subdirectory(CPlusPlus)
add_subdirectory(ObjC)
-add_subdirectory(ObjCPlusPlus)
diff --git a/lldb/source/Target/Language.cpp b/lldb/source/Target/Language.cpp
index dd80f7c9200..d1469073993 100644
--- a/lldb/source/Target/Language.cpp
+++ b/lldb/source/Target/Language.cpp
@@ -87,12 +87,6 @@ Language::ForEach (std::function<bool(Language*)> callback)
}
}
-lldb::TypeCategoryImplSP
-Language::GetFormatters ()
-{
- return nullptr;
-}
-
//----------------------------------------------------------------------
// Constructor
//----------------------------------------------------------------------
OpenPOWER on IntegriCloud