Please use GitHub pull requests for new patches. Avoid migrating existing patches. Phabricator shutdown timeline
Changeset View
Changeset View
Standalone View
Standalone View
llvm/lib/DebugInfo/PDB/Native/PDBFileBuilder.cpp
Show First 20 Lines • Show All 220 Lines • ▼ Show 20 Lines | if (!NamedStreams.get(Name, SN)) | ||||
return llvm::make_error<pdb::RawError>(raw_error_code::no_stream); | return llvm::make_error<pdb::RawError>(raw_error_code::no_stream); | ||||
return SN; | return SN; | ||||
} | } | ||||
void PDBFileBuilder::commitSrcHeaderBlock(WritableBinaryStream &MsfBuffer, | void PDBFileBuilder::commitSrcHeaderBlock(WritableBinaryStream &MsfBuffer, | ||||
const msf::MSFLayout &Layout) { | const msf::MSFLayout &Layout) { | ||||
assert(!InjectedSourceTable.empty()); | assert(!InjectedSourceTable.empty()); | ||||
uint32_t SN = cantFail(getNamedStreamIndex("/src/headerblock")); | uint32_t SN = llvm_cantFail(getNamedStreamIndex("/src/headerblock")); | ||||
auto Stream = WritableMappedBlockStream::createIndexedStream( | auto Stream = WritableMappedBlockStream::createIndexedStream( | ||||
Layout, MsfBuffer, SN, Allocator); | Layout, MsfBuffer, SN, Allocator); | ||||
BinaryStreamWriter Writer(*Stream); | BinaryStreamWriter Writer(*Stream); | ||||
SrcHeaderBlockHeader Header; | SrcHeaderBlockHeader Header; | ||||
::memset(&Header, 0, sizeof(Header)); | ::memset(&Header, 0, sizeof(Header)); | ||||
Header.Version = static_cast<uint32_t>(PdbRaw_SrcHeaderBlockVer::SrcVerOne); | Header.Version = static_cast<uint32_t>(PdbRaw_SrcHeaderBlockVer::SrcVerOne); | ||||
Header.Size = Writer.bytesRemaining(); | Header.Size = Writer.bytesRemaining(); | ||||
cantFail(Writer.writeObject(Header)); | llvm_cantFail(Writer.writeObject(Header)); | ||||
cantFail(InjectedSourceTable.commit(Writer)); | llvm_cantFail(InjectedSourceTable.commit(Writer)); | ||||
assert(Writer.bytesRemaining() == 0); | assert(Writer.bytesRemaining() == 0); | ||||
} | } | ||||
void PDBFileBuilder::commitInjectedSources(WritableBinaryStream &MsfBuffer, | void PDBFileBuilder::commitInjectedSources(WritableBinaryStream &MsfBuffer, | ||||
const msf::MSFLayout &Layout) { | const msf::MSFLayout &Layout) { | ||||
if (InjectedSourceTable.empty()) | if (InjectedSourceTable.empty()) | ||||
return; | return; | ||||
commitSrcHeaderBlock(MsfBuffer, Layout); | commitSrcHeaderBlock(MsfBuffer, Layout); | ||||
for (const auto &IS : InjectedSources) { | for (const auto &IS : InjectedSources) { | ||||
uint32_t SN = cantFail(getNamedStreamIndex(IS.StreamName)); | uint32_t SN = llvm_cantFail(getNamedStreamIndex(IS.StreamName)); | ||||
auto SourceStream = WritableMappedBlockStream::createIndexedStream( | auto SourceStream = WritableMappedBlockStream::createIndexedStream( | ||||
Layout, MsfBuffer, SN, Allocator); | Layout, MsfBuffer, SN, Allocator); | ||||
BinaryStreamWriter SourceWriter(*SourceStream); | BinaryStreamWriter SourceWriter(*SourceStream); | ||||
assert(SourceWriter.bytesRemaining() == IS.Content->getBufferSize()); | assert(SourceWriter.bytesRemaining() == IS.Content->getBufferSize()); | ||||
cantFail(SourceWriter.writeBytes( | llvm_cantFail(SourceWriter.writeBytes( | ||||
arrayRefFromStringRef(IS.Content->getBuffer()))); | arrayRefFromStringRef(IS.Content->getBuffer()))); | ||||
} | } | ||||
} | } | ||||
Error PDBFileBuilder::commit(StringRef Filename, codeview::GUID *Guid) { | Error PDBFileBuilder::commit(StringRef Filename, codeview::GUID *Guid) { | ||||
assert(!Filename.empty()); | assert(!Filename.empty()); | ||||
if (auto EC = finalizeMsfLayout()) | if (auto EC = finalizeMsfLayout()) | ||||
return EC; | return EC; | ||||
▲ Show 20 Lines • Show All 90 Lines • Show Last 20 Lines |