Path: blob/main/contrib/llvm-project/llvm/tools/llvm-pdbutil/MinimalSymbolDumper.h
35260 views
//===- MinimalSymbolDumper.h ---------------------------------- *- C++ --*-===//1//2// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.3// See https://llvm.org/LICENSE.txt for license information.4// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception5//6//===----------------------------------------------------------------------===//78#ifndef LLVM_TOOLS_LLVMPDBUTIL_MINIMAL_SYMBOL_DUMPER_H9#define LLVM_TOOLS_LLVMPDBUTIL_MINIMAL_SYMBOL_DUMPER_H1011#include "llvm/DebugInfo/CodeView/SymbolVisitorCallbacks.h"1213namespace llvm {14namespace codeview {15class LazyRandomTypeCollection;16}1718namespace pdb {19class LinePrinter;20class SymbolGroup;2122class MinimalSymbolDumper : public codeview::SymbolVisitorCallbacks {23public:24MinimalSymbolDumper(LinePrinter &P, bool RecordBytes,25codeview::LazyRandomTypeCollection &Ids,26codeview::LazyRandomTypeCollection &Types)27: P(P), RecordBytes(RecordBytes), Ids(Ids), Types(Types) {}28MinimalSymbolDumper(LinePrinter &P, bool RecordBytes,29const SymbolGroup &SymGroup,30codeview::LazyRandomTypeCollection &Ids,31codeview::LazyRandomTypeCollection &Types)32: P(P), RecordBytes(RecordBytes), SymGroup(&SymGroup), Ids(Ids),33Types(Types) {}3435Error visitSymbolBegin(codeview::CVSymbol &Record) override;36Error visitSymbolBegin(codeview::CVSymbol &Record, uint32_t Offset) override;37Error visitSymbolEnd(codeview::CVSymbol &Record) override;3839void setSymbolGroup(const SymbolGroup *Group) { SymGroup = Group; }4041#define SYMBOL_RECORD(EnumName, EnumVal, Name) \42virtual Error visitKnownRecord(codeview::CVSymbol &CVR, \43codeview::Name &Record) override;44#define SYMBOL_RECORD_ALIAS(EnumName, EnumVal, Name, AliasName)45#include "llvm/DebugInfo/CodeView/CodeViewSymbols.def"4647private:48std::string typeOrIdIndex(codeview::TypeIndex TI, bool IsType) const;4950std::string typeIndex(codeview::TypeIndex TI) const;51std::string idIndex(codeview::TypeIndex TI) const;5253LinePrinter &P;5455/// Dumping certain records requires knowing what machine this is. The56/// S_COMPILE3 record will tell us, but if we don't see one, default to X64.57codeview::CPUType CompilationCPU = codeview::CPUType::X64;5859bool RecordBytes;60const SymbolGroup *SymGroup = nullptr;61codeview::LazyRandomTypeCollection &Ids;62codeview::LazyRandomTypeCollection &Types;63};64} // namespace pdb65} // namespace llvm6667#endif686970