diff options
Diffstat (limited to 'tools/llvm-pdbdump/llvm-pdbdump.cpp')
-rw-r--r-- | tools/llvm-pdbdump/llvm-pdbdump.cpp | 17 |
1 files changed, 11 insertions, 6 deletions
diff --git a/tools/llvm-pdbdump/llvm-pdbdump.cpp b/tools/llvm-pdbdump/llvm-pdbdump.cpp index baba862ae663f..0b2b766a3c52f 100644 --- a/tools/llvm-pdbdump/llvm-pdbdump.cpp +++ b/tools/llvm-pdbdump/llvm-pdbdump.cpp @@ -476,6 +476,7 @@ static void yamlToPdb(StringRef Path) { std::unique_ptr<MemoryBuffer> &Buffer = ErrorOrBuffer.get(); llvm::yaml::Input In(Buffer->getBuffer()); + In.setContext(&Allocator); pdb::yaml::PdbObject YamlObj(Allocator); In >> YamlObj; @@ -535,7 +536,7 @@ static void yamlToPdb(StringRef Path) { if (MI.Modi.hasValue()) { const auto &ModiStream = *MI.Modi; for (auto Symbol : ModiStream.Symbols) - ModiBuilder.addSymbol(Symbol.Record); + ModiBuilder.addSymbol(Symbol.toCodeViewSymbol(Allocator)); } if (MI.FileLineInfo.hasValue()) { const auto &FLI = *MI.FileLineInfo; @@ -584,7 +585,7 @@ static void yamlToPdb(StringRef Path) { auto Inlinees = llvm::make_unique<DebugInlineeLinesSubsection>( ChecksumRef, Inlinee.HasExtraFiles); for (const auto &Site : Inlinee.Sites) { - Inlinees->addInlineSite(Site.Inlinee, Site.FileName, + Inlinees->addInlineSite(TypeIndex(Site.Inlinee), Site.FileName, Site.SourceLineNum); if (!Inlinee.HasExtraFiles) continue; @@ -601,14 +602,18 @@ static void yamlToPdb(StringRef Path) { auto &TpiBuilder = Builder.getTpiBuilder(); const auto &Tpi = YamlObj.TpiStream.getValueOr(DefaultTpiStream); TpiBuilder.setVersionHeader(Tpi.Version); - for (const auto &R : Tpi.Records) - TpiBuilder.addTypeRecord(R.Record.data(), R.Record.Hash); + for (const auto &R : Tpi.Records) { + CVType Type = R.toCodeViewRecord(Allocator); + TpiBuilder.addTypeRecord(Type.RecordData, None); + } const auto &Ipi = YamlObj.IpiStream.getValueOr(DefaultIpiStream); auto &IpiBuilder = Builder.getIpiBuilder(); IpiBuilder.setVersionHeader(Ipi.Version); - for (const auto &R : Ipi.Records) - IpiBuilder.addTypeRecord(R.Record.data(), R.Record.Hash); + for (const auto &R : Ipi.Records) { + CVType Type = R.toCodeViewRecord(Allocator); + IpiBuilder.addTypeRecord(Type.RecordData, None); + } ExitOnErr(Builder.commit(opts::yaml2pdb::YamlPdbOutputFile)); } |