Files
gps/tools/local/circt/include/llvm/DebugInfo/GSYM/GsymContext.h
T
2026-07-12 11:01:51 +03:00

67 lines
2.1 KiB
C++

//===-- GsymContext.h --------------------------------------------------===//
//
// 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 LLVM_DEBUGINFO_GSYM_GSYMCONTEXT_H
#define LLVM_DEBUGINFO_GSYM_GSYMCONTEXT_H
#include "llvm/DebugInfo/DIContext.h"
#include <cstdint>
#include <memory>
namespace llvm {
namespace gsym {
class GsymReader;
/// GSYM DI Context
/// This data structure is the top level entity that deals with GSYM
/// symbolication.
/// This data structure exists only when there is a need for a transparent
/// interface to different symbolication formats (e.g. GSYM, PDB and DWARF).
/// More control and power over the debug information access can be had by using
/// the GSYM interfaces directly.
class LLVM_ABI GsymContext : public DIContext {
public:
GsymContext(std::unique_ptr<GsymReader> Reader);
~GsymContext() override;
GsymContext(GsymContext &) = delete;
GsymContext &operator=(GsymContext &) = delete;
static bool classof(const DIContext *DICtx) {
return DICtx->getKind() == CK_GSYM;
}
void dump(raw_ostream &OS, DIDumpOptions DIDumpOpts) override;
std::optional<DILineInfo> getLineInfoForAddress(
object::SectionedAddress Address,
DILineInfoSpecifier Specifier = DILineInfoSpecifier()) override;
std::optional<DILineInfo>
getLineInfoForDataAddress(object::SectionedAddress Address) override;
DILineInfoTable getLineInfoForAddressRange(
object::SectionedAddress Address, uint64_t Size,
DILineInfoSpecifier Specifier = DILineInfoSpecifier()) override;
DIInliningInfo getInliningInfoForAddress(
object::SectionedAddress Address,
DILineInfoSpecifier Specifier = DILineInfoSpecifier()) override;
std::vector<DILocal>
getLocalsForAddress(object::SectionedAddress Address) override;
private:
const std::unique_ptr<GsymReader> Reader;
};
} // end namespace gsym
} // end namespace llvm
#endif // LLVM_DEBUGINFO_GSYM_GSYMCONTEXT_H