Create FileOutputBuffer lazily.

So that it is clear that FileOutputBuffer does not depend on
PDB file builder. Eventually we will have to to get the file size
info from the file builder to create a file with the exact size.
NFC.

llvm-svn: 282454
This commit is contained in:
Rui Ueyama 2016-09-26 23:53:55 +00:00
parent 9e67b9922b
commit 3e9d6bbad6
1 changed files with 7 additions and 9 deletions

View File

@ -33,14 +33,6 @@ static ExitOnError ExitOnErr;
const int BlockSize = 4096;
void coff::createPDB(StringRef Path) {
// Create a file.
size_t FileSize = BlockSize * 10;
auto BufferOrErr = FileOutputBuffer::create(Path, FileSize);
if (auto EC = BufferOrErr.getError())
fatal(EC, "failed to open " + Path);
auto FileByteStream =
llvm::make_unique<msf::FileBufferByteStream>(std::move(*BufferOrErr));
// Create the superblock.
msf::SuperBlock SB;
memcpy(SB.MagicBytes, msf::Magic, sizeof(msf::Magic));
@ -76,6 +68,12 @@ void coff::createPDB(StringRef Path) {
auto &TpiBuilder = Builder.getTpiBuilder();
TpiBuilder.setVersionHeader(pdb::PdbTpiV80);
// Write the root directory. Root stream is on page 2.
// Write to a file.
size_t FileSize = BlockSize * 10;
auto BufferOrErr = FileOutputBuffer::create(Path, FileSize);
if (auto EC = BufferOrErr.getError())
fatal(EC, "failed to open " + Path);
auto FileByteStream =
llvm::make_unique<msf::FileBufferByteStream>(std::move(*BufferOrErr));
ExitOnErr(Builder.commit(*FileByteStream));
}