LLDB mainline
CPlusPlusLanguage.cpp File Reference
#include "CPlusPlusLanguage.h"
#include <cctype>
#include <cstring>
#include <functional>
#include <memory>
#include <mutex>
#include <set>
#include "llvm/ADT/StringRef.h"
#include "llvm/Demangle/ItaniumDemangle.h"
#include "lldb/Core/DemangledNameInfo.h"
#include "lldb/Core/Mangled.h"
#include "lldb/Core/Module.h"
#include "lldb/Core/PluginManager.h"
#include "lldb/Core/UniqueCStringMap.h"
#include "lldb/DataFormatters/CXXFunctionPointer.h"
#include "lldb/DataFormatters/DataVisualization.h"
#include "lldb/DataFormatters/FormattersHelpers.h"
#include "lldb/DataFormatters/VectorType.h"
#include "lldb/Interpreter/OptionValueProperties.h"
#include "lldb/Symbol/SymbolFile.h"
#include "lldb/Symbol/VariableList.h"
#include "lldb/Utility/ConstString.h"
#include "lldb/Utility/LLDBLog.h"
#include "lldb/Utility/Log.h"
#include "lldb/Utility/RegularExpression.h"
#include "lldb/ValueObject/ValueObjectVariable.h"
#include "BlockPointer.h"
#include "CPlusPlusNameParser.h"
#include "Coroutines.h"
#include "CxxStringTypes.h"
#include "Generic.h"
#include "LibCxx.h"
#include "LibCxxAtomic.h"
#include "LibCxxVariant.h"
#include "LibStdcpp.h"
#include "MSVCUndecoratedNameParser.h"
#include "MsvcStl.h"
#include "lldb/lldb-enumerations.h"
#include "LanguageCPlusPlusProperties.inc"
#include "LanguageCPlusPlusPropertiesEnum.inc"

Go to the source code of this file.

Macros

#define LLDB_PROPERTIES_language_cplusplus
#define LLDB_PROPERTIES_language_cplusplus

Enumerations

enum  

Functions

static bool ReverseFindMatchingChars (const llvm::StringRef &s, const llvm::StringRef &left_right_chars, size_t &left_pos, size_t &right_pos, size_t pos=llvm::StringRef::npos)
static bool IsTrivialBasename (const llvm::StringRef &basename)
static bool PrettyPrintFunctionNameWithArgs (Stream &out_stream, char const *full_name, ExecutionContextScope *exe_scope, VariableList const &args)
 Writes out the function name in 'full_name' to 'out_stream' but replaces each argument type with the variable name and the corresponding pretty-printed value.
static llvm::Expected< std::pair< llvm::StringRef, DemangledNameInfo > > GetAndValidateInfo (const SymbolContext &sc)
static llvm::Expected< llvm::StringRef > GetDemangledBasename (const SymbolContext &sc)
static llvm::Expected< llvm::StringRef > GetDemangledTemplateArguments (const SymbolContext &sc)
static llvm::Expected< llvm::StringRef > GetDemangledReturnTypeLHS (const SymbolContext &sc)
static llvm::Expected< llvm::StringRef > GetDemangledFunctionQualifiers (const SymbolContext &sc)
static llvm::Expected< llvm::StringRef > GetDemangledReturnTypeRHS (const SymbolContext &sc)
static llvm::Expected< llvm::StringRef > GetDemangledScope (const SymbolContext &sc)
static llvm::Expected< llvm::StringRef > GetDemangledFunctionSuffix (const SymbolContext &sc)
static bool PrintDemangledArgumentList (Stream &s, const SymbolContext &sc)
static void LoadLibCxxFormatters (lldb::TypeCategoryImplSP cpp_category_sp)
static void RegisterStdStringSummaryProvider (const lldb::TypeCategoryImplSP &category_sp, llvm::StringRef string_ty, llvm::StringRef char_ty, lldb::TypeSummaryImplSP summary_sp)
static void RegisterStdStringViewSummaryProvider (const lldb::TypeCategoryImplSP &category_sp, llvm::StringRef string_ty, llvm::StringRef char_ty, lldb::TypeSummaryImplSP summary_sp)
static void LoadLibStdcppFormatters (lldb::TypeCategoryImplSP cpp_category_sp)
static lldb_private::SyntheticChildrenFrontEndGenericSmartPointerSyntheticFrontEndCreator (CXXSyntheticChildren *children, lldb::ValueObjectSP valobj_sp)
static bool GenericSmartPointerSummaryProvider (ValueObject &valobj, Stream &stream, const TypeSummaryOptions &options)
static lldb_private::SyntheticChildrenFrontEndGenericUniquePtrSyntheticFrontEndCreator (CXXSyntheticChildren *children, lldb::ValueObjectSP valobj_sp)
static bool GenericUniquePtrSummaryProvider (ValueObject &valobj, Stream &stream, const TypeSummaryOptions &options)
static SyntheticChildrenFrontEndGenericTupleSyntheticFrontEndCreator (CXXSyntheticChildren *children, lldb::ValueObjectSP valobj_sp)
static SyntheticChildrenFrontEndGenericVectorSyntheticFrontEndCreator (CXXSyntheticChildren *children, lldb::ValueObjectSP valobj_sp)
static SyntheticChildrenFrontEndGenericListSyntheticFrontEndCreator (CXXSyntheticChildren *children, lldb::ValueObjectSP valobj_sp)
static SyntheticChildrenFrontEndGenericForwardListSyntheticFrontEndCreator (CXXSyntheticChildren *children, lldb::ValueObjectSP valobj_sp)
static SyntheticChildrenFrontEndGenericOptionalSyntheticFrontEndCreator (CXXSyntheticChildren *children, lldb::ValueObjectSP valobj_sp)
static SyntheticChildrenFrontEndGenericVariantSyntheticFrontEndCreator (CXXSyntheticChildren *children, lldb::ValueObjectSP valobj_sp)
static bool GenericVariantSummaryProvider (ValueObject &valobj, Stream &stream, const TypeSummaryOptions &options)
static SyntheticChildrenFrontEndGenericUnorderedSyntheticFrontEndCreator (CXXSyntheticChildren *children, ValueObjectSP valobj_sp)
static SyntheticChildrenFrontEndGenericMapLikeSyntheticFrontEndCreator (CXXSyntheticChildren *children, ValueObjectSP valobj_sp)
static SyntheticChildrenFrontEndGenericDequeSyntheticFrontEndCreator (CXXSyntheticChildren *children, ValueObjectSP valobj_sp)
static void LoadCommonStlFormatters (lldb::TypeCategoryImplSP cpp_category_sp)
 Load formatters that are formatting types from more than one STL.
static void LoadMsvcStlFormatters (lldb::TypeCategoryImplSP cpp_category_sp)
static void LoadSystemFormatters (lldb::TypeCategoryImplSP cpp_category_sp)
static VariableListSP GetFunctionVariableList (const SymbolContext &sc)
static bool PrintFunctionNameWithArgs (Stream &s, const ExecutionContext *exe_ctx, const SymbolContext &sc)
static PluginProperties & GetGlobalPluginProperties ()

Macro Definition Documentation

◆ LLDB_PROPERTIES_language_cplusplus [1/2]

#define LLDB_PROPERTIES_language_cplusplus

Definition at line 2486 of file CPlusPlusLanguage.cpp.

◆ LLDB_PROPERTIES_language_cplusplus [2/2]

#define LLDB_PROPERTIES_language_cplusplus

Definition at line 2486 of file CPlusPlusLanguage.cpp.

Enumeration Type Documentation

◆ anonymous enum

anonymous enum

Definition at line 2489 of file CPlusPlusLanguage.cpp.

Function Documentation

◆ GenericDequeSyntheticFrontEndCreator()

◆ GenericForwardListSyntheticFrontEndCreator()

◆ GenericListSyntheticFrontEndCreator()

◆ GenericMapLikeSyntheticFrontEndCreator()

◆ GenericOptionalSyntheticFrontEndCreator()

◆ GenericSmartPointerSummaryProvider()

◆ GenericSmartPointerSyntheticFrontEndCreator()

◆ GenericTupleSyntheticFrontEndCreator()

◆ GenericUniquePtrSummaryProvider()

◆ GenericUniquePtrSyntheticFrontEndCreator()

◆ GenericUnorderedSyntheticFrontEndCreator()

◆ GenericVariantSummaryProvider()

◆ GenericVariantSyntheticFrontEndCreator()

◆ GenericVectorSyntheticFrontEndCreator()

SyntheticChildrenFrontEnd * GenericVectorSyntheticFrontEndCreator ( CXXSyntheticChildren * children,
lldb::ValueObjectSP valobj_sp )
static

◆ GetAndValidateInfo()

◆ GetDemangledBasename()

llvm::Expected< llvm::StringRef > GetDemangledBasename ( const SymbolContext & sc)
static

◆ GetDemangledFunctionQualifiers()

llvm::Expected< llvm::StringRef > GetDemangledFunctionQualifiers ( const SymbolContext & sc)
static

◆ GetDemangledFunctionSuffix()

llvm::Expected< llvm::StringRef > GetDemangledFunctionSuffix ( const SymbolContext & sc)
static

◆ GetDemangledReturnTypeLHS()

llvm::Expected< llvm::StringRef > GetDemangledReturnTypeLHS ( const SymbolContext & sc)
static

◆ GetDemangledReturnTypeRHS()

llvm::Expected< llvm::StringRef > GetDemangledReturnTypeRHS ( const SymbolContext & sc)
static

◆ GetDemangledScope()

llvm::Expected< llvm::StringRef > GetDemangledScope ( const SymbolContext & sc)
static

◆ GetDemangledTemplateArguments()

llvm::Expected< llvm::StringRef > GetDemangledTemplateArguments ( const SymbolContext & sc)
static

◆ GetFunctionVariableList()

◆ GetGlobalPluginProperties()

PluginProperties & GetGlobalPluginProperties ( )
static

Definition at line 2511 of file CPlusPlusLanguage.cpp.

◆ IsTrivialBasename()

bool IsTrivialBasename ( const llvm::StringRef & basename)
static

◆ LoadCommonStlFormatters()

void LoadCommonStlFormatters ( lldb::TypeCategoryImplSP cpp_category_sp)
static

Load formatters that are formatting types from more than one STL.

Definition at line 1666 of file CPlusPlusLanguage.cpp.

References lldb_private::formatters::AddCXXSummary(), lldb_private::formatters::AddCXXSynthetic(), lldb_private::formatters::ContainerSizeSummaryProvider(), lldb::eFormatterMatchRegex, GenericDequeSyntheticFrontEndCreator(), GenericForwardListSyntheticFrontEndCreator(), GenericListSyntheticFrontEndCreator(), GenericMapLikeSyntheticFrontEndCreator(), lldb_private::formatters::GenericOptionalSummaryProvider(), GenericOptionalSyntheticFrontEndCreator(), GenericSmartPointerSummaryProvider(), GenericSmartPointerSyntheticFrontEndCreator(), GenericTupleSyntheticFrontEndCreator(), GenericUniquePtrSummaryProvider(), GenericUniquePtrSyntheticFrontEndCreator(), GenericUnorderedSyntheticFrontEndCreator(), GenericVariantSummaryProvider(), GenericVariantSyntheticFrontEndCreator(), GenericVectorSyntheticFrontEndCreator(), lldb_private::formatters::IsMsvcStlStringType(), lldb_private::formatters::LibStdcppStringSummaryProvider(), lldb_private::formatters::MsvcStlStringSummaryProvider< StringElementType::ASCII >(), lldb_private::formatters::MsvcStlWStringSummaryProvider(), RegisterStdStringSummaryProvider(), lldb_private::SyntheticChildren::Flags::SetCascades(), lldb_private::TypeSummaryImpl::Flags::SetCascades(), lldb_private::TypeSummaryImpl::Flags::SetDontShowChildren(), lldb_private::TypeSummaryImpl::Flags::SetDontShowValue(), lldb_private::SyntheticChildren::Flags::SetFrontEndWantsDereference(), lldb_private::TypeSummaryImpl::Flags::SetHideItemNames(), lldb_private::TypeSummaryImpl::Flags::SetShowMembersOneLiner(), lldb_private::SyntheticChildren::Flags::SetSkipPointers(), lldb_private::TypeSummaryImpl::Flags::SetSkipPointers(), lldb_private::SyntheticChildren::Flags::SetSkipReferences(), and lldb_private::TypeSummaryImpl::Flags::SetSkipReferences().

Referenced by lldb_private::CPlusPlusLanguage::GetFormatters().

◆ LoadLibCxxFormatters()

void LoadLibCxxFormatters ( lldb::TypeCategoryImplSP cpp_category_sp)
static

Definition at line 733 of file CPlusPlusLanguage.cpp.

References lldb_private::formatters::AddCXXSummary(), lldb_private::formatters::AddCXXSynthetic(), lldb_private::formatters::ContainerSizeSummaryProvider(), lldb::eFormatterMatchRegex, lldb_private::formatters::GenericOptionalSummaryProvider(), lldb_private::formatters::LibCxxAtomicSummaryProvider(), lldb_private::formatters::LibcxxAtomicSyntheticFrontEndCreator(), lldb_private::formatters::LibcxxBitsetSyntheticFrontEndCreator(), lldb_private::formatters::LibcxxChronoLocalDaysSummaryProvider(), lldb_private::formatters::LibcxxChronoLocalSecondsSummaryProvider(), lldb_private::formatters::LibcxxChronoMonthSummaryProvider(), lldb_private::formatters::LibcxxChronoSysDaysSummaryProvider(), lldb_private::formatters::LibcxxChronoSysSecondsSummaryProvider(), lldb_private::formatters::LibcxxChronoWeekdaySummaryProvider(), lldb_private::formatters::LibcxxChronoYearMonthDaySummaryProvider(), lldb_private::formatters::LibcxxFunctionSummaryProvider(), lldb_private::formatters::LibcxxInitializerListSyntheticFrontEndCreator(), lldb_private::formatters::LibCxxMapIteratorSyntheticFrontEndCreator(), lldb_private::formatters::LibcxxOptionalSyntheticFrontEndCreator(), lldb_private::formatters::LibcxxQueueFrontEndCreator(), lldb_private::formatters::LibcxxSharedPtrSyntheticFrontEndCreator(), lldb_private::formatters::LibcxxSmartPointerSummaryProvider(), lldb_private::formatters::LibcxxStdForwardListSyntheticFrontEndCreator(), lldb_private::formatters::LibcxxStdListSyntheticFrontEndCreator(), lldb_private::formatters::LibcxxStdMapSyntheticFrontEndCreator(), lldb_private::formatters::LibcxxStdProxyArraySyntheticFrontEndCreator(), lldb_private::formatters::LibcxxStdRangesRefViewSyntheticFrontEndCreator(), lldb_private::formatters::LibcxxStdSliceArraySummaryProvider(), lldb_private::formatters::LibcxxStdSliceArraySyntheticFrontEndCreator(), lldb_private::formatters::LibcxxStdSpanSyntheticFrontEndCreator(), lldb_private::formatters::LibcxxStdUnorderedMapSyntheticFrontEndCreator(), lldb_private::formatters::LibcxxStdValarraySyntheticFrontEndCreator(), lldb_private::formatters::LibcxxStdVectorSyntheticFrontEndCreator(), lldb_private::formatters::LibcxxStringSummaryProviderASCII(), lldb_private::formatters::LibcxxStringSummaryProviderUTF16(), lldb_private::formatters::LibcxxStringSummaryProviderUTF32(), lldb_private::formatters::LibcxxStringViewSummaryProviderASCII(), lldb_private::formatters::LibcxxStringViewSummaryProviderUTF16(), lldb_private::formatters::LibcxxStringViewSummaryProviderUTF32(), lldb_private::formatters::LibcxxTupleFrontEndCreator(), lldb_private::formatters::LibcxxUniquePointerSummaryProvider(), lldb_private::formatters::LibcxxUniquePtrSyntheticFrontEndCreator(), lldb_private::formatters::LibCxxUnorderedMapIteratorSyntheticFrontEndCreator(), lldb_private::formatters::LibcxxVariantFrontEndCreator(), lldb_private::formatters::LibcxxVariantSummaryProvider(), lldb_private::formatters::LibCxxVectorIteratorSyntheticFrontEndCreator(), lldb_private::formatters::LibcxxWStringSummaryProvider(), lldb_private::formatters::LibcxxWStringViewSummaryProvider(), lldb_private::SyntheticChildren::Flags::SetCascades(), lldb_private::TypeSummaryImpl::Flags::SetCascades(), lldb_private::TypeSummaryImpl::Flags::SetDontShowChildren(), lldb_private::TypeSummaryImpl::Flags::SetDontShowValue(), lldb_private::SyntheticChildren::Flags::SetFrontEndWantsDereference(), lldb_private::TypeSummaryImpl::Flags::SetHideItemNames(), lldb_private::TypeSummaryImpl::Flags::SetShowMembersOneLiner(), lldb_private::SyntheticChildren::Flags::SetSkipPointers(), lldb_private::TypeSummaryImpl::Flags::SetSkipPointers(), lldb_private::SyntheticChildren::Flags::SetSkipReferences(), lldb_private::TypeSummaryImpl::Flags::SetSkipReferences(), lldb_private::formatters::StdlibCoroutineHandleSummaryProvider(), and lldb_private::formatters::StdlibCoroutineHandleSyntheticFrontEndCreator().

Referenced by lldb_private::CPlusPlusLanguage::GetFormatters().

◆ LoadLibStdcppFormatters()

void LoadLibStdcppFormatters ( lldb::TypeCategoryImplSP cpp_category_sp)
static

◆ LoadMsvcStlFormatters()

◆ LoadSystemFormatters()

◆ PrettyPrintFunctionNameWithArgs()

bool PrettyPrintFunctionNameWithArgs ( Stream & out_stream,
char const * full_name,
ExecutionContextScope * exe_scope,
VariableList const & args )
static

◆ PrintDemangledArgumentList()

◆ PrintFunctionNameWithArgs()

◆ RegisterStdStringSummaryProvider()

void RegisterStdStringSummaryProvider ( const lldb::TypeCategoryImplSP & category_sp,
llvm::StringRef string_ty,
llvm::StringRef char_ty,
lldb::TypeSummaryImplSP summary_sp )
static

◆ RegisterStdStringViewSummaryProvider()

void RegisterStdStringViewSummaryProvider ( const lldb::TypeCategoryImplSP & category_sp,
llvm::StringRef string_ty,
llvm::StringRef char_ty,
lldb::TypeSummaryImplSP summary_sp )
static

◆ ReverseFindMatchingChars()

bool ReverseFindMatchingChars ( const llvm::StringRef & s,
const llvm::StringRef & left_right_chars,
size_t & left_pos,
size_t & right_pos,
size_t pos = llvm::StringRef::npos )
static