diff options
Diffstat (limited to 'lld/lib/ReaderWriter')
-rw-r--r-- | lld/lib/ReaderWriter/ELF/OutputELFWriter.cpp | 9 | ||||
-rw-r--r-- | lld/lib/ReaderWriter/MachO/MachONormalizedFileBinaryWriter.cpp | 11 |
2 files changed, 11 insertions, 9 deletions
diff --git a/lld/lib/ReaderWriter/ELF/OutputELFWriter.cpp b/lld/lib/ReaderWriter/ELF/OutputELFWriter.cpp index 78729393393..5d1addd304b 100644 --- a/lld/lib/ReaderWriter/ELF/OutputELFWriter.cpp +++ b/lld/lib/ReaderWriter/ELF/OutputELFWriter.cpp @@ -422,11 +422,14 @@ template <class ELFT> uint64_t OutputELFWriter<ELFT>::outputFileSize() const { template <class ELFT> std::error_code OutputELFWriter<ELFT>::writeOutput(const File &file, StringRef path) { - std::unique_ptr<FileOutputBuffer> buffer; + ScopedTask createOutputTask(getDefaultDomain(), "ELF Writer Create Output"); - if (std::error_code ec = FileOutputBuffer::create( - path, outputFileSize(), buffer, FileOutputBuffer::F_executable)) + ErrorOr<std::unique_ptr<FileOutputBuffer>> bufferOrErr = + FileOutputBuffer::create(path, outputFileSize(), + FileOutputBuffer::F_executable); + if (std::error_code ec = bufferOrErr.getError()) return ec; + std::unique_ptr<FileOutputBuffer> &buffer = *bufferOrErr; createOutputTask.end(); ScopedTask writeTask(getDefaultDomain(), "ELF Writer write to memory"); diff --git a/lld/lib/ReaderWriter/MachO/MachONormalizedFileBinaryWriter.cpp b/lld/lib/ReaderWriter/MachO/MachONormalizedFileBinaryWriter.cpp index 550051871b7..908945d7f8a 100644 --- a/lld/lib/ReaderWriter/MachO/MachONormalizedFileBinaryWriter.cpp +++ b/lld/lib/ReaderWriter/MachO/MachONormalizedFileBinaryWriter.cpp @@ -1309,19 +1309,18 @@ std::error_code MachOFileLayout::writeBinary(StringRef path) { if (_ec) return _ec; // Create FileOutputBuffer with calculated size. - std::unique_ptr<llvm::FileOutputBuffer> fob; unsigned flags = 0; if (_file.fileType != llvm::MachO::MH_OBJECT) flags = llvm::FileOutputBuffer::F_executable; - std::error_code ec; - ec = llvm::FileOutputBuffer::create(path, size(), fob, flags); - if (ec) + ErrorOr<std::unique_ptr<llvm::FileOutputBuffer>> fobOrErr = + llvm::FileOutputBuffer::create(path, size(), flags); + if (std::error_code ec = fobOrErr.getError()) return ec; - + std::unique_ptr<llvm::FileOutputBuffer> &fob = *fobOrErr; // Write content. _buffer = fob->getBufferStart(); writeMachHeader(); - ec = writeLoadCommands(); + std::error_code ec = writeLoadCommands(); if (ec) return ec; writeSectionContent(); |