LLDB mainline
|
#include <CPlusPlusLanguage.h>
Classes | |
class | CxxMethodName |
Public Member Functions | |
CPlusPlusLanguage ()=default | |
~CPlusPlusLanguage () override=default | |
virtual std::unique_ptr< Language::MethodName > | GetMethodName (ConstString name) const override |
std::pair< lldb::FunctionNameType, std::optional< ConstString > > | GetFunctionNameInfo (ConstString name) const override |
lldb::LanguageType | GetLanguageType () const override |
llvm::StringRef | GetUserEntryPointName () const override |
std::unique_ptr< TypeScavenger > | GetTypeScavenger () override |
lldb::TypeCategoryImplSP | GetFormatters () override |
HardcodedFormatters::HardcodedSummaryFinder | GetHardcodedSummaries () override |
HardcodedFormatters::HardcodedSyntheticFinder | GetHardcodedSynthetics () override |
bool | IsNilReference (ValueObject &valobj) override |
llvm::StringRef | GetNilReferenceSummaryString () override |
Returns the summary string for ValueObjects for which IsNilReference() is true. | |
bool | IsSourceFile (llvm::StringRef file_path) const override |
const Highlighter * | GetHighlighter () const override |
bool | SymbolNameFitsToLanguage (Mangled mangled) const override |
Returns true iff the given symbol name is compatible with the mangling scheme of this language. | |
bool | DemangledNameContainsPath (llvm::StringRef path, ConstString demangled) const override |
ConstString | GetDemangledFunctionNameWithoutArguments (Mangled mangled) const override |
bool | GetFunctionDisplayName (const SymbolContext &sc, const ExecutionContext *exe_ctx, FunctionNameRepresentation representation, Stream &s) override |
bool | HandleFrameFormatVariable (const SymbolContext &sc, const ExecutionContext *exe_ctx, FormatEntity::Entry::Type type, Stream &s) override |
std::vector< ConstString > | GenerateAlternateFunctionManglings (const ConstString mangled) const override |
ConstString | FindBestAlternateFunctionMangledName (const Mangled mangled, const SymbolContext &sym_ctx) const override |
llvm::StringRef | GetInstanceVariableName () override |
FormatEntity::Entry | GetFunctionNameFormat () const override |
llvm::StringRef | GetPluginName () override |
Public Member Functions inherited from lldb_private::Language | |
~Language () override | |
virtual bool | IsTopLevelFunction (Function &function) |
virtual HardcodedFormatters::HardcodedFormatFinder | GetHardcodedFormats () |
virtual std::vector< FormattersMatchCandidate > | GetPossibleFormattersMatches (ValueObject &valobj, lldb::DynamicValueType use_dynamic) |
virtual const char * | GetLanguageSpecificTypeLookupHelp () |
virtual std::vector< Language::MethodNameVariant > | GetMethodNameVariants (ConstString method_name) const |
virtual std::pair< llvm::StringRef, llvm::StringRef > | GetFormatterPrefixSuffix (llvm::StringRef type_hint) |
An individual data formatter may apply to several types and cross language boundaries. | |
virtual DumpValueObjectOptions::DeclPrintingHelper | GetDeclPrintingHelper () |
virtual LazyBool | IsLogicalTrue (ValueObject &valobj, Status &error) |
virtual bool | IsUninitializedReference (ValueObject &valobj) |
virtual bool | HandleFrameFormatVariable (const SymbolContext &sc, const ExecutionContext *exe_ctx, FormatEntity::Entry::Type type, Stream &s) |
virtual ConstString | GetDisplayDemangledName (Mangled mangled) const |
virtual void | GetExceptionResolverDescription (bool catch_on, bool throw_on, Stream &s) |
virtual void | FilterForLineBreakpoints (llvm::SmallVectorImpl< SymbolContext > &) const |
Given a symbol context list of matches which supposedly represent the same file and line number in a CU, erases those that should be ignored when setting breakpoints by line (number or regex). | |
virtual std::optional< bool > | AreEqualForFrameComparison (const SymbolContext &sc1, const SymbolContext &sc2) const |
Returns a boolean indicating whether two symbol contexts are equal for the purposes of frame comparison. | |
virtual std::optional< bool > | GetBooleanFromString (llvm::StringRef str) const |
virtual bool | SupportsExceptionBreakpointsOnThrow () const |
Returns true if this Language supports exception breakpoints on throw via a corresponding LanguageRuntime plugin. | |
virtual bool | SupportsExceptionBreakpointsOnCatch () const |
Returns true if this Language supports exception breakpoints on catch via a corresponding LanguageRuntime plugin. | |
virtual llvm::StringRef | GetThrowKeyword () const |
Returns the keyword used for throw statements in this language, e.g. | |
virtual llvm::StringRef | GetCatchKeyword () const |
Returns the keyword used for catch statements in this language, e.g. | |
Public Member Functions inherited from lldb_private::PluginInterface | |
PluginInterface ()=default | |
virtual | ~PluginInterface ()=default |
PluginInterface (const PluginInterface &)=delete | |
PluginInterface & | operator= (const PluginInterface &)=delete |
Static Public Member Functions | |
static void | Initialize () |
static void | Terminate () |
static lldb_private::Language * | CreateInstance (lldb::LanguageType language) |
static llvm::StringRef | GetPluginNameStatic () |
static bool | IsCPPMangledName (llvm::StringRef name) |
static llvm::StringRef | GetDemangledBasename (llvm::StringRef demangled, const DemangledNameInfo &info) |
static llvm::Expected< llvm::StringRef > | GetDemangledTemplateArguments (llvm::StringRef demangled, const DemangledNameInfo &info) |
static llvm::Expected< llvm::StringRef > | GetDemangledReturnTypeLHS (llvm::StringRef demangled, const DemangledNameInfo &info) |
static llvm::Expected< llvm::StringRef > | GetDemangledFunctionQualifiers (llvm::StringRef demangled, const DemangledNameInfo &info) |
static llvm::Expected< llvm::StringRef > | GetDemangledScope (llvm::StringRef demangled, const DemangledNameInfo &info) |
static llvm::Expected< llvm::StringRef > | GetDemangledReturnTypeRHS (llvm::StringRef demangled, const DemangledNameInfo &info) |
static llvm::Expected< llvm::StringRef > | GetDemangledFunctionArguments (llvm::StringRef demangled, const DemangledNameInfo &info) |
static llvm::Expected< llvm::StringRef > | GetDemangledFunctionSuffix (llvm::StringRef demangled, const DemangledNameInfo &info) |
static bool | ExtractContextAndIdentifier (const char *name, llvm::StringRef &context, llvm::StringRef &identifier) |
static llvm::Expected< ConstString > | SubstituteType_ItaniumMangle (llvm::StringRef mangled_name, llvm::StringRef subst_from, llvm::StringRef subst_to) |
Substitutes Itanium type encoding substrings given by subst_from in mangled_name with subst_to . | |
static llvm::Expected< ConstString > | SubstituteStructor_ItaniumMangle (llvm::StringRef mangled_name, llvm::StringRef subst_from, llvm::StringRef subst_to) |
Substitutes Itanium structor encoding substrings given by subst_from in mangled_name with subst_to . | |
static llvm::Expected< ConstString > | SubstituteStructorAliases_ItaniumMangle (llvm::StringRef mangled_name) |
Tries replacing Itanium structor encoding substrings in mangled_name with potential aliases.j. | |
Static Public Member Functions inherited from lldb_private::Language | |
static Language * | FindPlugin (lldb::LanguageType language) |
static Language * | FindPlugin (llvm::StringRef file_path) |
Returns the Language associated with the given file path or a nullptr if there is no known language. | |
static Language * | FindPlugin (lldb::LanguageType language, llvm::StringRef file_path) |
static void | ForEach (std::function< bool(Language *)> callback) |
static void | GetDefaultExceptionResolverDescription (bool catch_on, bool throw_on, Stream &s) |
static lldb::LanguageType | GetLanguageTypeFromString (const char *string)=delete |
static lldb::LanguageType | GetLanguageTypeFromString (llvm::StringRef string) |
static const char * | GetNameForLanguageType (lldb::LanguageType language) |
static void | PrintAllLanguages (Stream &s, const char *prefix, const char *suffix) |
static void | PrintSupportedLanguagesForExpressions (Stream &s, llvm::StringRef prefix, llvm::StringRef suffix) |
Prints to the specified stream 's' each language type that the current target supports for expression evaluation. | |
static void | ForAllLanguages (std::function< bool(lldb::LanguageType)> callback) |
static bool | LanguageIsCPlusPlus (lldb::LanguageType language) |
static bool | LanguageIsObjC (lldb::LanguageType language) |
static bool | LanguageIsC (lldb::LanguageType language) |
static bool | LanguageIsCFamily (lldb::LanguageType language) |
Equivalent to LanguageIsC||LanguageIsObjC||LanguageIsCPlusPlus . | |
static bool | LanguageIsPascal (lldb::LanguageType language) |
static lldb::LanguageType | GetPrimaryLanguage (lldb::LanguageType language) |
static std::set< lldb::LanguageType > | GetSupportedLanguages () |
static LanguageSet | GetLanguagesSupportingTypeSystems () |
static LanguageSet | GetLanguagesSupportingTypeSystemsForExpressions () |
static LanguageSet | GetLanguagesSupportingREPLs () |
static LanguageProperties & | GetGlobalLanguageProperties () |
Static Private Member Functions | |
static void | DebuggerInitialize (Debugger &) |
Private Attributes | |
ClangHighlighter | m_highlighter |
Additional Inherited Members | |
Public Types inherited from lldb_private::Language | |
enum class | FunctionNameRepresentation { eName , eNameWithArgs , eNameWithNoArgs } |
Protected Member Functions inherited from lldb_private::Language | |
Language () |
Definition at line 24 of file CPlusPlusLanguage.h.
|
default |
Referenced by CreateInstance(), and Initialize().
|
overridedefault |
|
static |
Definition at line 144 of file CPlusPlusLanguage.cpp.
References CPlusPlusLanguage(), lldb::eLanguageTypeObjC_plus_plus, lldb_private::Language::Language(), and lldb_private::Language::LanguageIsCPlusPlus().
Referenced by Initialize(), and Terminate().
|
staticprivate |
Definition at line 2520 of file CPlusPlusLanguage.cpp.
References lldb_private::PluginManager::CreateSettingForCPlusPlusLanguagePlugin(), GetGlobalPluginProperties(), and lldb_private::PluginManager::GetSettingForCPlusPlusLanguagePlugin().
Referenced by Initialize().
|
overridevirtual |
Reimplemented from lldb_private::Language.
Definition at line 588 of file CPlusPlusLanguage.cpp.
References lldb_private::CPlusPlusLanguage::CxxMethodName::ContainsPath().
|
static |
Definition at line 594 of file CPlusPlusLanguage.cpp.
References MSVCUndecoratedNameParser::ExtractContextAndIdentifier(), MSVCUndecoratedNameParser::IsMSVCUndecoratedName(), and lldb_private::CPlusPlusNameParser::ParseAsFullName().
Referenced by lldb_private::CPlusPlusLanguage::CxxMethodName::ContainsPath(), lldb_private::plugin::dwarf::SymbolFileDWARF::FindGlobalVariables(), and GetFunctionNameInfo().
|
overridevirtual |
Reimplemented from lldb_private::Language.
Definition at line 683 of file CPlusPlusLanguage.cpp.
References lldb_private::Language::MethodName::GetArguments(), lldb_private::Mangled::GetDemangledName(), lldb_private::SymbolFile::GetMangledNamesForFunction(), lldb_private::Language::MethodName::GetQualifiers(), lldb_private::Language::MethodName::GetScopeQualifiedName(), lldb_private::Language::MethodName::IsValid(), and lldb_private::SymbolContext::module_sp.
|
overridevirtual |
Get a basic set of alternative manglings for the given symbol name, by making a few basic possible substitutions on basic types, storage duration and constness for the given symbol. The output parameter alternates is filled with a best-guess, non-exhaustive set of different manglings for the given name.
Reimplemented from lldb_private::Language.
Definition at line 609 of file CPlusPlusLanguage.cpp.
References lldb_private::ConstString::GetCString(), lldb_private::GetLog(), lldb_private::ConstString::GetStringRef(), lldb_private::Language, LLDB_LOG_ERROR, SubstituteStructorAliases_ItaniumMangle(), and SubstituteType_ItaniumMangle().
|
static |
Definition at line 283 of file CPlusPlusLanguage.cpp.
References lldb_private::DemangledNameInfo::BasenameRange, and lldb_private::DemangledNameInfo::hasBasename().
Referenced by GetDemangledBasename(), and HandleFrameFormatVariable().
|
static |
Definition at line 421 of file CPlusPlusLanguage.cpp.
References lldb_private::DemangledNameInfo::ArgumentsRange, and lldb_private::DemangledNameInfo::hasArguments().
Referenced by PrintDemangledArgumentList().
|
overridevirtual |
Reimplemented from lldb_private::Language.
Definition at line 113 of file CPlusPlusLanguage.cpp.
References lldb_private::Language::MethodName::GetBasename(), lldb_private::Language::MethodName::GetContext(), lldb_private::ConstString::GetCString(), lldb_private::Mangled::GetDemangledName(), and lldb_private::Mangled::GetMangledName().
|
static |
Definition at line 333 of file CPlusPlusLanguage.cpp.
References lldb_private::DemangledNameInfo::hasQualifiers(), and lldb_private::DemangledNameInfo::QualifiersRange.
Referenced by GetDemangledFunctionQualifiers(), and HandleFrameFormatVariable().
|
static |
Definition at line 400 of file CPlusPlusLanguage.cpp.
References lldb_private::DemangledNameInfo::hasSuffix(), and lldb_private::DemangledNameInfo::SuffixRange.
Referenced by GetDemangledFunctionSuffix(), and HandleFrameFormatVariable().
|
static |
Definition at line 312 of file CPlusPlusLanguage.cpp.
References lldb_private::DemangledNameInfo::ScopeRange.
Referenced by GetDemangledReturnTypeLHS(), and HandleFrameFormatVariable().
|
static |
Definition at line 356 of file CPlusPlusLanguage.cpp.
References lldb_private::DemangledNameInfo::ArgumentsRange, and lldb_private::DemangledNameInfo::QualifiersRange.
Referenced by GetDemangledReturnTypeRHS(), and HandleFrameFormatVariable().
|
static |
Definition at line 379 of file CPlusPlusLanguage.cpp.
References lldb_private::DemangledNameInfo::hasScope(), and lldb_private::DemangledNameInfo::ScopeRange.
Referenced by GetDemangledScope(), and HandleFrameFormatVariable().
|
static |
Definition at line 290 of file CPlusPlusLanguage.cpp.
References lldb_private::DemangledNameInfo::hasTemplateArguments(), and lldb_private::DemangledNameInfo::TemplateArgumentsRange.
Referenced by GetDemangledTemplateArguments(), and HandleFrameFormatVariable().
|
overridevirtual |
Reimplemented from lldb_private::Language.
Definition at line 1982 of file CPlusPlusLanguage.cpp.
References lldb_private::DataVisualization::Categories::GetCategory(), GetPluginName(), LoadCommonStlFormatters(), LoadLibCxxFormatters(), LoadLibStdcppFormatters(), LoadMsvcStlFormatters(), and LoadSystemFormatters().
|
overridevirtual |
Reimplemented from lldb_private::Language.
Definition at line 2178 of file CPlusPlusLanguage.cpp.
References lldb_private::ConstString::AsCString(), lldb_private::Language::eName, lldb_private::Language::eNameWithArgs, lldb_private::Language::eNameWithNoArgs, lldb_private::SymbolContext::function, lldb_private::Symbol::GetName(), PrintFunctionNameWithArgs(), lldb_private::Stream::PutCString(), and lldb_private::SymbolContext::symbol.
|
overridevirtual |
Reimplemented from lldb_private::Language.
Definition at line 2516 of file CPlusPlusLanguage.cpp.
References GetGlobalPluginProperties().
|
overridevirtual |
Reimplemented from lldb_private::Language.
Definition at line 77 of file CPlusPlusLanguage.cpp.
References ExtractContextAndIdentifier(), lldb_private::Language::MethodName::GetBasename(), lldb_private::ConstString::GetCString(), lldb_private::Language::MethodName::GetQualifiers(), and lldb_private::Mangled::IsMangledName().
|
overridevirtual |
Reimplemented from lldb_private::Language.
Definition at line 2005 of file CPlusPlusLanguage.cpp.
References lldb_private::formatters::BlockPointerSummaryProvider(), lldb_private::formatters::CXXFunctionPointerSummaryProvider(), lldb::eValueTypeVTableEntry, lldb_private::FormatManager::GetCategory(), lldb_private::ValueObject::GetCompilerType(), lldb_private::ValueObject::GetValueType(), lldb_private::CompilerType::IsBlockPointerType(), lldb_private::CompilerType::IsFunctionPointerType(), lldb_private::CompilerType::IsVectorType(), and lldb_private::formatters::VectorTypeSummaryProvider().
|
overridevirtual |
Reimplemented from lldb_private::Language.
Definition at line 2071 of file CPlusPlusLanguage.cpp.
References lldb_private::formatters::BlockPointerSyntheticFrontEndCreator(), lldb_private::FormatManager::GetCategory(), lldb_private::ValueObject::GetCompilerType(), lldb_private::CompilerType::IsBlockPointerType(), lldb_private::CompilerType::IsVectorType(), and lldb_private::formatters::VectorTypeSyntheticFrontEndCreator().
|
inlineoverridevirtual |
Reimplemented from lldb_private::Language.
Definition at line 84 of file CPlusPlusLanguage.h.
References m_highlighter.
|
inlineoverridevirtual |
Reimplemented from lldb_private::Language.
Definition at line 237 of file CPlusPlusLanguage.h.
|
inlineoverridevirtual |
Implements lldb_private::Language.
Definition at line 64 of file CPlusPlusLanguage.h.
References lldb::eLanguageTypeC_plus_plus.
|
overridevirtual |
Reimplemented from lldb_private::Language.
Definition at line 69 of file CPlusPlusLanguage.cpp.
|
inlineoverridevirtual |
Returns the summary string for ValueObjects for which IsNilReference() is true.
Reimplemented from lldb_private::Language.
Definition at line 80 of file CPlusPlusLanguage.h.
|
inlineoverridevirtual |
Implements lldb_private::PluginInterface.
Definition at line 242 of file CPlusPlusLanguage.h.
References GetPluginNameStatic().
Referenced by GetFormatters().
|
inlinestatic |
Definition at line 93 of file CPlusPlusLanguage.h.
Referenced by GetPluginName(), and Initialize().
|
overridevirtual |
Reimplemented from lldb_private::Language.
Definition at line 1965 of file CPlusPlusLanguage.cpp.
References lldb_private::CompilerType::GetMinimumLanguage(), lldb_private::CompilerType::GetTypedefedType(), lldb_private::CompilerType::IsTypedefType(), lldb_private::Language::LanguageIsC(), and lldb_private::Language::LanguageIsCPlusPlus().
|
inlineoverridevirtual |
Reimplemented from lldb_private::Language.
Definition at line 68 of file CPlusPlusLanguage.h.
|
override |
Definition at line 2205 of file CPlusPlusLanguage.cpp.
References lldb_private::VariableList::AppendVariablesWithScope(), lldb::eValueTypeVariableArgument, lldb_private::SymbolContext::function, lldb_private::FormatEntity::Entry::FunctionBasename, lldb_private::FormatEntity::Entry::FunctionFormattedArguments, lldb_private::FormatEntity::Entry::FunctionQualifiers, lldb_private::FormatEntity::Entry::FunctionReturnLeft, lldb_private::FormatEntity::Entry::FunctionReturnRight, lldb_private::FormatEntity::Entry::FunctionScope, lldb_private::FormatEntity::Entry::FunctionSuffix, lldb_private::FormatEntity::Entry::FunctionTemplateArguments, lldb_private::ExecutionContext::GetBestExecutionContextScope(), GetDemangledBasename(), GetDemangledFunctionQualifiers(), GetDemangledFunctionSuffix(), GetDemangledReturnTypeLHS(), GetDemangledReturnTypeRHS(), GetDemangledScope(), GetDemangledTemplateArguments(), GetFunctionVariableList(), lldb_private::GetLog(), lldb_private::Language, LLDB_LOG_ERROR, lldb_private::FormatEntity::PrettyPrintFunctionArguments(), PrintDemangledArgumentList(), and lldb_private::SymbolContext::symbol.
|
static |
Definition at line 59 of file CPlusPlusLanguage.cpp.
References CPlusPlusLanguage(), CreateInstance(), DebuggerInitialize(), GetPluginNameStatic(), Initialize(), and lldb_private::PluginManager::RegisterPlugin().
Referenced by Initialize().
|
static |
|
overridevirtual |
Reimplemented from lldb_private::Language.
Definition at line 2117 of file CPlusPlusLanguage.cpp.
References lldb_private::ValueObject::GetObjectRuntimeLanguage(), lldb_private::ValueObject::GetValueAsUnsigned(), lldb_private::ValueObject::IsPointerType(), and lldb_private::Language::LanguageIsCPlusPlus().
|
overridevirtual |
Implements lldb_private::Language.
Definition at line 2126 of file CPlusPlusLanguage.cpp.
|
static |
Substitutes Itanium structor encoding substrings given by subst_from
in mangled_name
with subst_to
.
This function will only replace Itanium structor encodings (i.e., <ctor-dtor-name> productions in the Itanium ABI mangling grammar). However, no verifiction is done on whether subst_from
or subst_to
is a valid structor encoding.
[in] | mangled_name | Mangled name to perform the substitutions in. This function only supports Itanium ABI mangling. |
[in] | subst_from | The substring to substitute. |
[in] | subst_to | The substring to insert. |
ConstString
(even if the string already contained the substitutions). If an error occurred, this function returns the error. Definition at line 2474 of file CPlusPlusLanguage.cpp.
Referenced by lldb_private::plugin::dwarf::SymbolFileDWARF::ResolveFunctionCallLabel().
|
static |
Tries replacing Itanium structor encoding substrings in mangled_name
with potential aliases.j.
This function will only replace Itanium structor encodings (i.e., <ctor-dtor-name> productions in the Itanium ABI mangling grammar).
E.g., on some platforms, the C1/D1 variants are aliased to the C2/D2 variants. This function will try to replace occurrences of C1/D1 with C2/D2.
[in] | mangled_name | Mangled name to perform the substitutions in. This function only supports Itanium ABI mangling. |
ConstString
(even if the string already contained the substitutions). If an error occurred, this function returns the error. Definition at line 2481 of file CPlusPlusLanguage.cpp.
Referenced by lldb_private::plugin::dwarf::SymbolFileDWARF::FindFunctionDefinition(), and GenerateAlternateFunctionManglings().
|
static |
Substitutes Itanium type encoding substrings given by subst_from
in mangled_name
with subst_to
.
This function will only replace Itanium type encodings (i.e., <type> productions in the Itanium ABI mangling grammar). However, no verifiction is done on whether subst_from
or subst_to
is a valid type encoding.
[in] | mangled_name | Mangled name to perform the substitutions in. This function only supports Itanium ABI mangling. |
[in] | subst_from | The substring to substitute. |
[in] | subst_to | The substring to insert. |
ConstString
(even if the string already contained the substitutions). If an error occurred, this function returns the error. Definition at line 2468 of file CPlusPlusLanguage.cpp.
Referenced by GenerateAlternateFunctionManglings().
Returns true iff the given symbol name is compatible with the mangling scheme of this language.
This function should only return true if there is a high confidence that the name actually belongs to this language.
Reimplemented from lldb_private::Language.
Definition at line 106 of file CPlusPlusLanguage.cpp.
References lldb_private::Mangled::eManglingSchemeItanium, lldb_private::Mangled::eManglingSchemeMSVC, lldb_private::ConstString::GetCString(), lldb_private::Mangled::GetMangledName(), and lldb_private::Mangled::GetManglingScheme().
|
static |
Definition at line 64 of file CPlusPlusLanguage.cpp.
References CreateInstance(), and lldb_private::PluginManager::UnregisterPlugin().
|
private |
Definition at line 25 of file CPlusPlusLanguage.h.
Referenced by GetHighlighter().