Files
clang-p2996/lldb/source/Plugins/SymbolFile/DWARF/DWARFASTParser.h
Pavel Labath 2a3c08f620 [lldb] (Begin to) support discontinuous lldb_private::Functions (#115730)
This is the beginning of a different, more fundamental approach to
handling. This PR tries to tries to minimize functional changes. It only
makes sure that we store the true set of ranges inside the function
object, so that subsequent patches can make use of it.
2024-11-12 09:34:53 +01:00

80 lines
2.6 KiB
C++

//===-- DWARFASTParser.h ----------------------------------------*- C++ -*-===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//
#ifndef LLDB_SOURCE_PLUGINS_SYMBOLFILE_DWARF_DWARFASTPARSER_H
#define LLDB_SOURCE_PLUGINS_SYMBOLFILE_DWARF_DWARFASTPARSER_H
#include "DWARFDefines.h"
#include "lldb/Core/PluginInterface.h"
#include "lldb/Symbol/SymbolFile.h"
#include "lldb/Symbol/CompilerDecl.h"
#include "lldb/Symbol/CompilerDeclContext.h"
#include "lldb/lldb-enumerations.h"
#include <optional>
namespace lldb_private {
class CompileUnit;
class ExecutionContext;
}
namespace lldb_private::plugin {
namespace dwarf {
class DWARFDIE;
class SymbolFileDWARF;
class DWARFASTParser {
public:
enum class Kind { DWARFASTParserClang };
DWARFASTParser(Kind kind) : m_kind(kind) {}
virtual ~DWARFASTParser() = default;
virtual lldb::TypeSP ParseTypeFromDWARF(const SymbolContext &sc,
const DWARFDIE &die,
bool *type_is_new_ptr) = 0;
virtual ConstString ConstructDemangledNameFromDWARF(const DWARFDIE &die) = 0;
virtual Function *ParseFunctionFromDWARF(CompileUnit &comp_unit,
const DWARFDIE &die,
AddressRanges ranges) = 0;
virtual bool CompleteTypeFromDWARF(const DWARFDIE &die, Type *type,
const CompilerType &compiler_type) = 0;
virtual CompilerDecl GetDeclForUIDFromDWARF(const DWARFDIE &die) = 0;
virtual CompilerDeclContext
GetDeclContextForUIDFromDWARF(const DWARFDIE &die) = 0;
virtual CompilerDeclContext
GetDeclContextContainingUIDFromDWARF(const DWARFDIE &die) = 0;
virtual void EnsureAllDIEsInDeclContextHaveBeenParsed(
CompilerDeclContext decl_context) = 0;
virtual std::string GetDIEClassTemplateParams(DWARFDIE die) = 0;
static std::optional<SymbolFile::ArrayInfo>
ParseChildArrayInfo(const DWARFDIE &parent_die,
const ExecutionContext *exe_ctx = nullptr);
lldb_private::Type *GetTypeForDIE(const DWARFDIE &die);
static lldb::AccessType GetAccessTypeFromDWARF(uint32_t dwarf_accessibility);
Kind GetKind() const { return m_kind; }
private:
const Kind m_kind;
};
} // namespace dwarf
} // namespace lldb_private::plugin
#endif // LLDB_SOURCE_PLUGINS_SYMBOLFILE_DWARF_DWARFASTPARSER_H