diff options
Diffstat (limited to 'tools/llvm-pdbdump/C13DebugFragmentVisitor.h')
| -rw-r--r-- | tools/llvm-pdbdump/C13DebugFragmentVisitor.h | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/tools/llvm-pdbdump/C13DebugFragmentVisitor.h b/tools/llvm-pdbdump/C13DebugFragmentVisitor.h new file mode 100644 index 0000000000000..1054b0c9f6e0a --- /dev/null +++ b/tools/llvm-pdbdump/C13DebugFragmentVisitor.h @@ -0,0 +1,60 @@ +//===- C13DebugFragmentVisitor.h - Visitor for CodeView Info ----*- C++ -*-===// +// +// The LLVM Compiler Infrastructure +// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// + +#ifndef LLVM_TOOLS_LLVMPDBDUMP_C13DEBUGFRAGMENTVISITOR_H +#define LLVM_TOOLS_LLVMPDBDUMP_C13DEBUGFRAGMENTVISITOR_H + +#include "llvm/ADT/Optional.h" +#include "llvm/DebugInfo/CodeView/ModuleDebugFileChecksumFragment.h" +#include "llvm/DebugInfo/CodeView/ModuleDebugFragmentVisitor.h" +#include "llvm/Support/Error.h" + +#include <vector> + +namespace llvm { + +namespace pdb { + +class PDBFile; + +class C13DebugFragmentVisitor : public codeview::ModuleDebugFragmentVisitor { +public: + C13DebugFragmentVisitor(PDBFile &F); + ~C13DebugFragmentVisitor(); + + Error visitUnknown(codeview::ModuleDebugUnknownFragmentRef &Fragment) final; + + Error visitFileChecksums( + codeview::ModuleDebugFileChecksumFragmentRef &Checksums) final; + + Error visitLines(codeview::ModuleDebugLineFragmentRef &Lines) final; + + Error + visitInlineeLines(codeview::ModuleDebugInlineeLineFragmentRef &Lines) final; + + Error finished() final; + +protected: + virtual Error handleFileChecksums() { return Error::success(); } + virtual Error handleLines() { return Error::success(); } + virtual Error handleInlineeLines() { return Error::success(); } + + Expected<StringRef> getNameFromStringTable(uint32_t Offset); + Expected<StringRef> getNameFromChecksumsBuffer(uint32_t Offset); + + Optional<codeview::ModuleDebugFileChecksumFragmentRef> Checksums; + std::vector<codeview::ModuleDebugInlineeLineFragmentRef> InlineeLines; + std::vector<codeview::ModuleDebugLineFragmentRef> Lines; + + PDBFile &F; +}; +} +} + +#endif |
