LLDB mainline
DWARFASTParserClang.cpp File Reference
#include <cstdlib>
#include "DWARFASTParser.h"
#include "DWARFASTParserClang.h"
#include "DWARFDebugInfo.h"
#include "DWARFDeclContext.h"
#include "DWARFDefines.h"
#include "SymbolFileDWARF.h"
#include "SymbolFileDWARFDebugMap.h"
#include "SymbolFileDWARFDwo.h"
#include "UniqueDWARFASTType.h"
#include "Plugins/ExpressionParser/Clang/ClangASTImporter.h"
#include "Plugins/ExpressionParser/Clang/ClangASTMetadata.h"
#include "Plugins/ExpressionParser/Clang/ClangUtil.h"
#include "Plugins/Language/ObjC/ObjCLanguage.h"
#include "lldb/Core/Module.h"
#include "lldb/Core/Value.h"
#include "lldb/Expression/Expression.h"
#include "lldb/Host/Host.h"
#include "lldb/Symbol/CompileUnit.h"
#include "lldb/Symbol/Function.h"
#include "lldb/Symbol/ObjectFile.h"
#include "lldb/Symbol/SymbolFile.h"
#include "lldb/Symbol/TypeList.h"
#include "lldb/Symbol/TypeMap.h"
#include "lldb/Symbol/VariableList.h"
#include "lldb/Target/Language.h"
#include "lldb/Utility/LLDBAssert.h"
#include "lldb/Utility/Log.h"
#include "lldb/Utility/StreamString.h"
#include "lldb/lldb-private-enumerations.h"
#include "clang/AST/CXXInheritance.h"
#include "clang/AST/DeclBase.h"
#include "clang/AST/DeclCXX.h"
#include "clang/AST/DeclObjC.h"
#include "clang/AST/DeclTemplate.h"
#include "clang/AST/Type.h"
#include "clang/Basic/Specifiers.h"
#include "llvm/ADT/StringExtras.h"
#include "llvm/DebugInfo/DWARF/DWARFAddressRange.h"
#include "llvm/DebugInfo/DWARF/DWARFTypePrinter.h"
#include "llvm/Demangle/Demangle.h"
#include <map>
#include <memory>
#include <optional>
#include <vector>

Go to the source code of this file.

Classes

class  DWARFASTParserClang::DelayedAddObjCClassProperty

Macros

#define DEBUG_PRINTF(fmt, ...)

Functions

static bool DeclKindIsCXXClass (clang::Decl::Kind decl_kind)
static bool IsClangModuleFwdDecl (const DWARFDIE &Die)
 Detect a forward declaration that is nested in a DW_TAG_module.
static DWARFDIE GetContainingClangModuleDIE (const DWARFDIE &die)
static lldb::ModuleSP GetContainingClangModule (const DWARFDIE &die)
static bool ShouldIgnoreArtificialField (llvm::StringRef FieldName)
static bool TagIsRecordType (dw_tag_t tag)
 Returns true for C++ constructs represented by clang::CXXRecordDecl.
static unsigned GetCXXMethodCVQuals (const DWARFDIE &subprogram, const DWARFDIE &object_parameter)
 In order to determine the CV-qualifiers for a C++ class method in DWARF, we have to look at the CV-qualifiers of the object parameter's type.
static std::string MakeLLDBFuncAsmLabel (const DWARFDIE &die)
static void PrepareContextToReceiveMembers (TypeSystemClang &ast, ClangASTImporter &ast_importer, clang::DeclContext *decl_ctx, DWARFDIE die, const char *type_name_cstr)
 This function ensures we are able to add members (nested types, functions, etc.) to this type.
static std::string GetUnitName (const DWARFDIE &die)
static std::optional< uint32_t > ExtractDataMemberLocation (DWARFDIE const &die, DWARFFormValue const &form_value, ModuleSP module_sp)
static TypePayloadClang GetPtrAuthMofidierPayload (const DWARFDIE &die)
static clang::CallingConv ConvertDWARFCallingConventionToClang (const ParsedDWARFTypeAttributes &attrs)
static std::optional< clang::APValue > MakeAPValue (const clang::ASTContext &ast, CompilerType clang_type, uint64_t value)
static bool IsSubroutine (const DWARFDIE &die)
static DWARFDIE GetContainingFunctionWithAbstractOrigin (const DWARFDIE &die)
static DWARFDIE FindAnyChildWithAbstractOrigin (const DWARFDIE &context)
static DWARFDIE FindFirstChildWithAbstractOrigin (const DWARFDIE &block, const DWARFDIE &function)

Macro Definition Documentation

◆ DEBUG_PRINTF

#define DEBUG_PRINTF ( fmt,
... )

Definition at line 65 of file DWARFASTParserClang.cpp.

Function Documentation

◆ ConvertDWARFCallingConventionToClang()

clang::CallingConv ConvertDWARFCallingConventionToClang ( const ParsedDWARFTypeAttributes & attrs)
static

◆ DeclKindIsCXXClass()

bool DeclKindIsCXXClass ( clang::Decl::Kind decl_kind)
static

◆ ExtractDataMemberLocation()

◆ FindAnyChildWithAbstractOrigin()

DWARFDIE FindAnyChildWithAbstractOrigin ( const DWARFDIE & context)
static

◆ FindFirstChildWithAbstractOrigin()

DWARFDIE FindFirstChildWithAbstractOrigin ( const DWARFDIE & block,
const DWARFDIE & function )
static

◆ GetContainingClangModule()

◆ GetContainingClangModuleDIE()

DWARFDIE GetContainingClangModuleDIE ( const DWARFDIE & die)
static

◆ GetContainingFunctionWithAbstractOrigin()

DWARFDIE GetContainingFunctionWithAbstractOrigin ( const DWARFDIE & die)
static

◆ GetCXXMethodCVQuals()

unsigned GetCXXMethodCVQuals ( const DWARFDIE & subprogram,
const DWARFDIE & object_parameter )
static

◆ GetPtrAuthMofidierPayload()

◆ GetUnitName()

std::string GetUnitName ( const DWARFDIE & die)
static

◆ IsClangModuleFwdDecl()

bool IsClangModuleFwdDecl ( const DWARFDIE & Die)
static

Detect a forward declaration that is nested in a DW_TAG_module.

Definition at line 99 of file DWARFASTParserClang.cpp.

References lldb_private::plugin::dwarf::DWARFBaseDIE::GetAttributeValueAsUnsigned(), and lldb_private::plugin::dwarf::DWARFDIE::GetParent().

Referenced by DWARFASTParserClang::ParseCXXMethod().

◆ IsSubroutine()

◆ MakeAPValue()

std::optional< clang::APValue > MakeAPValue ( const clang::ASTContext & ast,
CompilerType clang_type,
uint64_t value )
static

◆ MakeLLDBFuncAsmLabel()

◆ PrepareContextToReceiveMembers()

void PrepareContextToReceiveMembers ( TypeSystemClang & ast,
ClangASTImporter & ast_importer,
clang::DeclContext * decl_ctx,
DWARFDIE die,
const char * type_name_cstr )
static

◆ ShouldIgnoreArtificialField()

bool ShouldIgnoreArtificialField ( llvm::StringRef FieldName)
static

Definition at line 146 of file DWARFASTParserClang.cpp.

Referenced by DWARFASTParserClang::ParseSingleMember().

◆ TagIsRecordType()

bool TagIsRecordType ( dw_tag_t tag)
static

Returns true for C++ constructs represented by clang::CXXRecordDecl.

Definition at line 153 of file DWARFASTParserClang.cpp.

Referenced by DWARFASTParserClang::GetClangDeclForDIE().