#include "SymbolFileDWARFDebugMap.h"
#include "DWARFCompileUnit.h"
#include "DWARFDebugAranges.h"
#include "DWARFDebugInfo.h"
#include "lldb/Core/Module.h"
#include "lldb/Core/ModuleList.h"
#include "lldb/Core/PluginManager.h"
#include "lldb/Core/Section.h"
#include "lldb/Host/FileSystem.h"
#include "lldb/Utility/RangeMap.h"
#include "lldb/Utility/RegularExpression.h"
#include "lldb/Utility/StreamString.h"
#include "lldb/Utility/StructuredData.h"
#include "lldb/Utility/Timer.h"
#include "lldb/Symbol/CompileUnit.h"
#include "lldb/Symbol/LineTable.h"
#include "lldb/Symbol/ObjectFile.h"
#include "lldb/Symbol/SymbolVendor.h"
#include "lldb/Symbol/TypeMap.h"
#include "lldb/Symbol/VariableList.h"
#include "llvm/ADT/STLExtras.h"
#include "llvm/Support/ScopedPrinter.h"
#include "lldb/Target/StackFrame.h"
#include "LogChannelDWARF.h"
#include "SymbolFileDWARF.h"
#include "lldb/lldb-private-enumerations.h"
#include <memory>
#include <optional>
usingnamespacelldb;
usingnamespacelldb_private;
usingnamespacelldb_private::plugin::dwarf;
char SymbolFileDWARFDebugMap::ID;
const SymbolFileDWARFDebugMap::FileRangeMap &
SymbolFileDWARFDebugMap::CompileUnitInfo::GetFileRangeMap(
SymbolFileDWARFDebugMap *exe_symfile) { … }
namespace lldb_private::plugin {
namespace dwarf {
class DebugMapModule : public Module { … };
}
}
void SymbolFileDWARFDebugMap::Initialize() { … }
void SymbolFileDWARFDebugMap::Terminate() { … }
llvm::StringRef SymbolFileDWARFDebugMap::GetPluginDescriptionStatic() { … }
SymbolFile *SymbolFileDWARFDebugMap::CreateInstance(ObjectFileSP objfile_sp) { … }
SymbolFileDWARFDebugMap::SymbolFileDWARFDebugMap(ObjectFileSP objfile_sp)
: … { … }
SymbolFileDWARFDebugMap::~SymbolFileDWARFDebugMap() = default;
void SymbolFileDWARFDebugMap::InitializeObject() { … }
void SymbolFileDWARFDebugMap::InitOSO() { … }
Module *SymbolFileDWARFDebugMap::GetModuleByOSOIndex(uint32_t oso_idx) { … }
Module *SymbolFileDWARFDebugMap::GetModuleByCompUnitInfo(
CompileUnitInfo *comp_unit_info) { … }
bool SymbolFileDWARFDebugMap::GetFileSpecForSO(uint32_t oso_idx,
FileSpec &file_spec) { … }
ObjectFile *SymbolFileDWARFDebugMap::GetObjectFileByOSOIndex(uint32_t oso_idx) { … }
SymbolFileDWARF *
SymbolFileDWARFDebugMap::GetSymbolFile(const SymbolContext &sc) { … }
SymbolFileDWARF *
SymbolFileDWARFDebugMap::GetSymbolFile(const CompileUnit &comp_unit) { … }
ObjectFile *SymbolFileDWARFDebugMap::GetObjectFileByCompUnitInfo(
CompileUnitInfo *comp_unit_info) { … }
uint32_t SymbolFileDWARFDebugMap::GetCompUnitInfoIndex(
const CompileUnitInfo *comp_unit_info) { … }
SymbolFileDWARF *
SymbolFileDWARFDebugMap::GetSymbolFileByOSOIndex(uint32_t oso_idx) { … }
SymbolFileDWARF *
SymbolFileDWARFDebugMap::GetSymbolFileAsSymbolFileDWARF(SymbolFile *sym_file) { … }
SymbolFileDWARF *SymbolFileDWARFDebugMap::GetSymbolFileByCompUnitInfo(
CompileUnitInfo *comp_unit_info) { … }
uint32_t SymbolFileDWARFDebugMap::CalculateAbilities() { … }
uint32_t SymbolFileDWARFDebugMap::CalculateNumCompileUnits() { … }
CompUnitSP SymbolFileDWARFDebugMap::ParseCompileUnitAtIndex(uint32_t cu_idx) { … }
SymbolFileDWARFDebugMap::CompileUnitInfo *
SymbolFileDWARFDebugMap::GetCompUnitInfo(const SymbolContext &sc) { … }
SymbolFileDWARFDebugMap::CompileUnitInfo *
SymbolFileDWARFDebugMap::GetCompUnitInfo(const CompileUnit &comp_unit) { … }
size_t SymbolFileDWARFDebugMap::GetCompUnitInfosForModule(
const lldb_private::Module *module,
std::vector<CompileUnitInfo *> &cu_infos) { … }
lldb::LanguageType
SymbolFileDWARFDebugMap::ParseLanguage(CompileUnit &comp_unit) { … }
XcodeSDK SymbolFileDWARFDebugMap::ParseXcodeSDK(CompileUnit &comp_unit) { … }
llvm::SmallSet<lldb::LanguageType, 4>
SymbolFileDWARFDebugMap::ParseAllLanguages(
lldb_private::CompileUnit &comp_unit) { … }
size_t SymbolFileDWARFDebugMap::ParseFunctions(CompileUnit &comp_unit) { … }
bool SymbolFileDWARFDebugMap::ParseLineTable(CompileUnit &comp_unit) { … }
bool SymbolFileDWARFDebugMap::ParseDebugMacros(CompileUnit &comp_unit) { … }
bool SymbolFileDWARFDebugMap::ForEachExternalModule(
CompileUnit &comp_unit,
llvm::DenseSet<lldb_private::SymbolFile *> &visited_symbol_files,
llvm::function_ref<bool(Module &)> f) { … }
bool SymbolFileDWARFDebugMap::ParseSupportFiles(
CompileUnit &comp_unit, SupportFileList &support_files) { … }
bool SymbolFileDWARFDebugMap::ParseIsOptimized(CompileUnit &comp_unit) { … }
bool SymbolFileDWARFDebugMap::ParseImportedModules(
const SymbolContext &sc, std::vector<SourceModule> &imported_modules) { … }
size_t SymbolFileDWARFDebugMap::ParseBlocksRecursive(Function &func) { … }
size_t SymbolFileDWARFDebugMap::ParseTypes(CompileUnit &comp_unit) { … }
size_t
SymbolFileDWARFDebugMap::ParseVariablesForContext(const SymbolContext &sc) { … }
Type *SymbolFileDWARFDebugMap::ResolveTypeUID(lldb::user_id_t type_uid) { … }
std::optional<SymbolFile::ArrayInfo>
SymbolFileDWARFDebugMap::GetDynamicArrayInfoForUID(
lldb::user_id_t type_uid, const lldb_private::ExecutionContext *exe_ctx) { … }
bool SymbolFileDWARFDebugMap::CompleteType(CompilerType &compiler_type) { … }
uint32_t
SymbolFileDWARFDebugMap::ResolveSymbolContext(const Address &exe_so_addr,
SymbolContextItem resolve_scope,
SymbolContext &sc) { … }
uint32_t SymbolFileDWARFDebugMap::ResolveSymbolContext(
const SourceLocationSpec &src_location_spec,
SymbolContextItem resolve_scope, SymbolContextList &sc_list) { … }
void SymbolFileDWARFDebugMap::PrivateFindGlobalVariables(
ConstString name, const CompilerDeclContext &parent_decl_ctx,
const std::vector<uint32_t>
&indexes,
uint32_t max_matches, VariableList &variables) { … }
void SymbolFileDWARFDebugMap::FindGlobalVariables(
ConstString name, const CompilerDeclContext &parent_decl_ctx,
uint32_t max_matches, VariableList &variables) { … }
void SymbolFileDWARFDebugMap::FindGlobalVariables(
const RegularExpression ®ex, uint32_t max_matches,
VariableList &variables) { … }
int SymbolFileDWARFDebugMap::SymbolContainsSymbolWithIndex(
uint32_t *symbol_idx_ptr, const CompileUnitInfo *comp_unit_info) { … }
int SymbolFileDWARFDebugMap::SymbolContainsSymbolWithID(
user_id_t *symbol_idx_ptr, const CompileUnitInfo *comp_unit_info) { … }
SymbolFileDWARFDebugMap::CompileUnitInfo *
SymbolFileDWARFDebugMap::GetCompileUnitInfoForSymbolWithIndex(
uint32_t symbol_idx, uint32_t *oso_idx_ptr) { … }
SymbolFileDWARFDebugMap::CompileUnitInfo *
SymbolFileDWARFDebugMap::GetCompileUnitInfoForSymbolWithID(
user_id_t symbol_id, uint32_t *oso_idx_ptr) { … }
static void RemoveFunctionsWithModuleNotEqualTo(const ModuleSP &module_sp,
SymbolContextList &sc_list,
uint32_t start_idx) { … }
void SymbolFileDWARFDebugMap::FindFunctions(
const Module::LookupInfo &lookup_info,
const CompilerDeclContext &parent_decl_ctx, bool include_inlines,
SymbolContextList &sc_list) { … }
void SymbolFileDWARFDebugMap::FindFunctions(const RegularExpression ®ex,
bool include_inlines,
SymbolContextList &sc_list) { … }
void SymbolFileDWARFDebugMap::GetTypes(SymbolContextScope *sc_scope,
lldb::TypeClass type_mask,
TypeList &type_list) { … }
std::vector<std::unique_ptr<lldb_private::CallEdge>>
SymbolFileDWARFDebugMap::ParseCallEdgesInFunction(
lldb_private::UserID func_id) { … }
DWARFDIE SymbolFileDWARFDebugMap::FindDefinitionDIE(const DWARFDIE &die) { … }
bool SymbolFileDWARFDebugMap::Supports_DW_AT_APPLE_objc_complete_type(
SymbolFileDWARF *skip_dwarf_oso) { … }
TypeSP SymbolFileDWARFDebugMap::FindCompleteObjCDefinitionTypeForDIE(
const DWARFDIE &die, ConstString type_name,
bool must_be_implementation) { … }
void SymbolFileDWARFDebugMap::FindTypes(const TypeQuery &query,
TypeResults &results) { … }
CompilerDeclContext SymbolFileDWARFDebugMap::FindNamespace(
lldb_private::ConstString name, const CompilerDeclContext &parent_decl_ctx,
bool only_root_namespaces) { … }
void SymbolFileDWARFDebugMap::DumpClangAST(Stream &s) { … }
bool SymbolFileDWARFDebugMap::GetSeparateDebugInfo(
lldb_private::StructuredData::Dictionary &d, bool errors_only) { … }
lldb::CompUnitSP
SymbolFileDWARFDebugMap::GetCompileUnit(SymbolFileDWARF *oso_dwarf, DWARFCompileUnit &dwarf_cu) { … }
SymbolFileDWARFDebugMap::CompileUnitInfo *
SymbolFileDWARFDebugMap::GetCompileUnitInfo(SymbolFileDWARF *oso_dwarf) { … }
void SymbolFileDWARFDebugMap::SetCompileUnit(SymbolFileDWARF *oso_dwarf,
const CompUnitSP &cu_sp) { … }
CompilerDeclContext
SymbolFileDWARFDebugMap::GetDeclContextForUID(lldb::user_id_t type_uid) { … }
CompilerDeclContext
SymbolFileDWARFDebugMap::GetDeclContextContainingUID(lldb::user_id_t type_uid) { … }
std::vector<CompilerContext>
SymbolFileDWARFDebugMap::GetCompilerContextForUID(lldb::user_id_t type_uid) { … }
void SymbolFileDWARFDebugMap::ParseDeclsForContext(
lldb_private::CompilerDeclContext decl_ctx) { … }
bool SymbolFileDWARFDebugMap::AddOSOFileRange(CompileUnitInfo *cu_info,
lldb::addr_t exe_file_addr,
lldb::addr_t exe_byte_size,
lldb::addr_t oso_file_addr,
lldb::addr_t oso_byte_size) { … }
void SymbolFileDWARFDebugMap::FinalizeOSOFileRanges(CompileUnitInfo *cu_info) { … }
lldb::addr_t
SymbolFileDWARFDebugMap::LinkOSOFileAddress(SymbolFileDWARF *oso_symfile,
lldb::addr_t oso_file_addr) { … }
bool SymbolFileDWARFDebugMap::LinkOSOAddress(Address &addr) { … }
LineTable *SymbolFileDWARFDebugMap::LinkOSOLineTable(SymbolFileDWARF *oso_dwarf,
LineTable *line_table) { … }
size_t
SymbolFileDWARFDebugMap::AddOSOARanges(SymbolFileDWARF *dwarf2Data,
DWARFDebugAranges *debug_aranges) { … }
ModuleList SymbolFileDWARFDebugMap::GetDebugInfoModules() { … }
Status SymbolFileDWARFDebugMap::CalculateFrameVariableError(StackFrame &frame) { … }
void SymbolFileDWARFDebugMap::GetCompileOptions(
std::unordered_map<lldb::CompUnitSP, lldb_private::Args> &args) { … }