LLDB mainline
Classes | Macros | Functions
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/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 "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 "llvm/ADT/StringExtras.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 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 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 60 of file DWARFASTParserClang.cpp.

Function Documentation

◆ ConvertDWARFCallingConventionToClang()

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

◆ DeclKindIsCXXClass()

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

◆ ExtractDataMemberLocation()

static std::optional< uint32_t > ExtractDataMemberLocation ( DWARFDIE const &  die,
DWARFFormValue const &  form_value,
ModuleSP  module_sp 
)
static

◆ FindAnyChildWithAbstractOrigin()

static DWARFDIE FindAnyChildWithAbstractOrigin ( const DWARFDIE context)
static

◆ FindFirstChildWithAbstractOrigin()

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

◆ GetContainingClangModule()

static lldb::ModuleSP GetContainingClangModule ( const DWARFDIE die)
static

◆ GetContainingClangModuleDIE()

static DWARFDIE GetContainingClangModuleDIE ( const DWARFDIE die)
static

◆ GetContainingFunctionWithAbstractOrigin()

static DWARFDIE GetContainingFunctionWithAbstractOrigin ( const DWARFDIE die)
static

◆ GetPtrAuthMofidierPayload()

static TypePayloadClang GetPtrAuthMofidierPayload ( const DWARFDIE die)
static

◆ GetUnitName()

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

◆ IsClangModuleFwdDecl()

static bool IsClangModuleFwdDecl ( const DWARFDIE Die)
static

Detect a forward declaration that is nested in a DW_TAG_module.

Definition at line 94 of file DWARFASTParserClang.cpp.

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

Referenced by DWARFASTParserClang::ParseCXXMethod().

◆ IsSubroutine()

static bool IsSubroutine ( const DWARFDIE die)
static

◆ PrepareContextToReceiveMembers()

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

This function ensures we are able to add members (nested types, functions, etc.) to this type.

It does so by starting its definition even if one cannot be found in the debug info. This means the type may need to be "forcibly completed" later – see CompleteTypeFromDWARF).

Definition at line 243 of file DWARFASTParserClang.cpp.

References lldb_private::ClangASTImporter::CanImport(), lldb_private::plugin::dwarf::DWARFBaseDIE::GetDWARF(), lldb_private::ModuleChild::GetModule(), lldb_private::SymbolFileCommon::GetObjectFile(), lldb_private::plugin::dwarf::DWARFBaseDIE::GetOffset(), lldb_private::ClangUtil::GetQualType(), lldb_private::TypeSystemClang::GetTypeForDecl(), and lldb_private::ClangASTImporter::RequireCompleteType().

Referenced by DWARFASTParserClang::ParseCXXMethod(), DWARFASTParserClang::ParseStructureLikeDIE(), and DWARFASTParserClang::ParseTypeModifier().

◆ ShouldIgnoreArtificialField()

static bool ShouldIgnoreArtificialField ( llvm::StringRef  FieldName)
static

Definition at line 141 of file DWARFASTParserClang.cpp.

Referenced by DWARFASTParserClang::ParseSingleMember().

◆ TagIsRecordType()

static bool TagIsRecordType ( dw_tag_t  tag)
static

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

Definition at line 148 of file DWARFASTParserClang.cpp.

Referenced by DWARFASTParserClang::GetClangDeclForDIE().