1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 |
- //===- MinimalSymbolDumper.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 LLVM_TOOLS_LLVMPDBUTIL_MINIMAL_SYMBOL_DUMPER_H
- #define LLVM_TOOLS_LLVMPDBUTIL_MINIMAL_SYMBOL_DUMPER_H
- #include "llvm/DebugInfo/CodeView/SymbolVisitorCallbacks.h"
- namespace llvm {
- namespace codeview {
- class LazyRandomTypeCollection;
- }
- namespace pdb {
- class LinePrinter;
- class SymbolGroup;
- class MinimalSymbolDumper : public codeview::SymbolVisitorCallbacks {
- public:
- MinimalSymbolDumper(LinePrinter &P, bool RecordBytes,
- codeview::LazyRandomTypeCollection &Ids,
- codeview::LazyRandomTypeCollection &Types)
- : P(P), RecordBytes(RecordBytes), Ids(Ids), Types(Types) {}
- MinimalSymbolDumper(LinePrinter &P, bool RecordBytes,
- const SymbolGroup &SymGroup,
- codeview::LazyRandomTypeCollection &Ids,
- codeview::LazyRandomTypeCollection &Types)
- : P(P), RecordBytes(RecordBytes), SymGroup(&SymGroup), Ids(Ids),
- Types(Types) {}
- Error visitSymbolBegin(codeview::CVSymbol &Record) override;
- Error visitSymbolBegin(codeview::CVSymbol &Record, uint32_t Offset) override;
- Error visitSymbolEnd(codeview::CVSymbol &Record) override;
- void setSymbolGroup(const SymbolGroup *Group) { SymGroup = Group; }
- #define SYMBOL_RECORD(EnumName, EnumVal, Name) \
- virtual Error visitKnownRecord(codeview::CVSymbol &CVR, \
- codeview::Name &Record) override;
- #define SYMBOL_RECORD_ALIAS(EnumName, EnumVal, Name, AliasName)
- #include "llvm/DebugInfo/CodeView/CodeViewSymbols.def"
- private:
- std::string typeOrIdIndex(codeview::TypeIndex TI, bool IsType) const;
- std::string typeIndex(codeview::TypeIndex TI) const;
- std::string idIndex(codeview::TypeIndex TI) const;
- LinePrinter &P;
- /// Dumping certain records requires knowing what machine this is. The
- /// S_COMPILE3 record will tell us, but if we don't see one, default to X64.
- codeview::CPUType CompilationCPU = codeview::CPUType::X64;
- bool RecordBytes;
- const SymbolGroup *SymGroup = nullptr;
- codeview::LazyRandomTypeCollection &Ids;
- codeview::LazyRandomTypeCollection &Types;
- };
- } // namespace pdb
- } // namespace llvm
- #endif
|