diff options
Diffstat (limited to 'llvm/lib/DebugInfo/CodeView')
-rw-r--r-- | llvm/lib/DebugInfo/CodeView/EnumTables.cpp | 10 | ||||
-rw-r--r-- | llvm/lib/DebugInfo/CodeView/ModuleSubstreamVisitor.cpp | 16 |
2 files changed, 21 insertions, 5 deletions
diff --git a/llvm/lib/DebugInfo/CodeView/EnumTables.cpp b/llvm/lib/DebugInfo/CodeView/EnumTables.cpp index edb489767d4..d71fec61344 100644 --- a/llvm/lib/DebugInfo/CodeView/EnumTables.cpp +++ b/llvm/lib/DebugInfo/CodeView/EnumTables.cpp @@ -147,6 +147,13 @@ static const EnumEntry<uint32_t> CompileSym3FlagNames[] = { CV_ENUM_CLASS_ENT(CompileSym3Flags, Exp), }; +static const EnumEntry<uint32_t> FileChecksumNames[] = { + CV_ENUM_CLASS_ENT(FileChecksumKind, None), + CV_ENUM_CLASS_ENT(FileChecksumKind, MD5), + CV_ENUM_CLASS_ENT(FileChecksumKind, SHA1), + CV_ENUM_CLASS_ENT(FileChecksumKind, SHA256), +}; + static const EnumEntry<unsigned> CPUTypeNames[] = { CV_ENUM_CLASS_ENT(CPUType, Intel8080), CV_ENUM_CLASS_ENT(CPUType, Intel8086), @@ -339,6 +346,9 @@ ArrayRef<EnumEntry<uint32_t>> getCompileSym2FlagNames() { ArrayRef<EnumEntry<uint32_t>> getCompileSym3FlagNames() { return makeArrayRef(CompileSym3FlagNames); } +ArrayRef<EnumEntry<uint32_t>> getFileChecksumNames() { + return makeArrayRef(FileChecksumNames); +} ArrayRef<EnumEntry<unsigned>> getCPUTypeNames() { return makeArrayRef(CPUTypeNames); } diff --git a/llvm/lib/DebugInfo/CodeView/ModuleSubstreamVisitor.cpp b/llvm/lib/DebugInfo/CodeView/ModuleSubstreamVisitor.cpp index 7b5c3506aa7..6f237ee67fe 100644 --- a/llvm/lib/DebugInfo/CodeView/ModuleSubstreamVisitor.cpp +++ b/llvm/lib/DebugInfo/CodeView/ModuleSubstreamVisitor.cpp @@ -17,13 +17,14 @@ Error IModuleSubstreamVisitor::visitSymbols(StreamRef Data) { } Error IModuleSubstreamVisitor::visitLines(StreamRef Data, const LineSubstreamHeader *Header, - LineInfoArray Lines) { + const LineInfoArray &Lines) { return visitUnknown(ModuleSubstreamKind::Lines, Data); } Error IModuleSubstreamVisitor::visitStringTable(StreamRef Data) { return visitUnknown(ModuleSubstreamKind::StringTable, Data); } -Error IModuleSubstreamVisitor::visitFileChecksums(StreamRef Data) { +Error IModuleSubstreamVisitor::visitFileChecksums( + StreamRef Data, const FileChecksumArray &Checksums) { return visitUnknown(ModuleSubstreamKind::FileChecksums, Data); } Error IModuleSubstreamVisitor::visitFrameData(StreamRef Data) { @@ -64,7 +65,7 @@ Error llvm::codeview::visitModuleSubstream(const ModuleSubstream &R, const LineSubstreamHeader *Header; if (auto EC = Reader.readObject(Header)) return EC; - FileLineInfoExtractor E(Header); + VarStreamArrayExtractor<LineColumnEntry> E(Header); LineInfoArray LineInfos(E); if (auto EC = Reader.readArray(LineInfos, Reader.bytesRemaining())) return EC; @@ -72,8 +73,13 @@ Error llvm::codeview::visitModuleSubstream(const ModuleSubstream &R, } case ModuleSubstreamKind::StringTable: return V.visitStringTable(R.getRecordData()); - case ModuleSubstreamKind::FileChecksums: - return V.visitFileChecksums(R.getRecordData()); + case ModuleSubstreamKind::FileChecksums: { + StreamReader Reader(R.getRecordData()); + FileChecksumArray Checksums; + if (auto EC = Reader.readArray(Checksums, Reader.bytesRemaining())) + return EC; + return V.visitFileChecksums(R.getRecordData(), Checksums); + } case ModuleSubstreamKind::FrameData: return V.visitFrameData(R.getRecordData()); case ModuleSubstreamKind::InlineeLines: |