diff options
Diffstat (limited to 'lld/lib/ReaderWriter')
-rw-r--r-- | lld/lib/ReaderWriter/ELF/ELFReader.h | 8 | ||||
-rw-r--r-- | lld/lib/ReaderWriter/FileArchive.cpp | 17 | ||||
-rw-r--r-- | lld/lib/ReaderWriter/MachO/MachOLinkingContext.cpp | 6 | ||||
-rw-r--r-- | lld/lib/ReaderWriter/MachO/MachONormalizedFileBinaryReader.cpp | 19 | ||||
-rw-r--r-- | lld/lib/ReaderWriter/PECOFF/ReaderCOFF.cpp | 8 | ||||
-rw-r--r-- | lld/lib/ReaderWriter/PECOFF/ReaderImportHeader.cpp | 10 | ||||
-rw-r--r-- | lld/lib/ReaderWriter/YAML/ReaderWriterYAML.cpp | 20 |
7 files changed, 44 insertions, 44 deletions
diff --git a/lld/lib/ReaderWriter/ELF/ELFReader.h b/lld/lib/ReaderWriter/ELF/ELFReader.h index 723109f1dc6..76f3823fb6a 100644 --- a/lld/lib/ReaderWriter/ELF/ELFReader.h +++ b/lld/lib/ReaderWriter/ELF/ELFReader.h @@ -28,12 +28,12 @@ public: return FileT::canParse(magic); } - std::error_code - loadFile(std::unique_ptr<MemoryBuffer> mb, const class Registry &, - std::vector<std::unique_ptr<File>> &result) const override { + std::error_code loadFile(std::unique_ptr<MemoryBuffer> mb, + const class Registry &, + std::unique_ptr<File> &result) const override { if (std::error_code ec = FileT::isCompatible(*mb, _ctx)) return ec; - result.push_back(llvm::make_unique<FileT>(std::move(mb), _ctx)); + result = llvm::make_unique<FileT>(std::move(mb), _ctx); return std::error_code(); } diff --git a/lld/lib/ReaderWriter/FileArchive.cpp b/lld/lib/ReaderWriter/FileArchive.cpp index 9e3e3175438..23a2cb5f2a7 100644 --- a/lld/lib/ReaderWriter/FileArchive.cpp +++ b/lld/lib/ReaderWriter/FileArchive.cpp @@ -173,9 +173,11 @@ private: std::unique_ptr<MemoryBuffer> memberMB(MemoryBuffer::getMemBuffer( mb.getBuffer(), mb.getBufferIdentifier(), false)); - std::vector<std::unique_ptr<File>> files; - if (std::error_code ec = _registry.loadFile(std::move(memberMB), files)) + std::unique_ptr<File> file; + if (std::error_code ec = _registry.loadFile(std::move(memberMB), file)) return ec; + std::vector<std::unique_ptr<File>> files; + files.push_back(std::move(file)); assert(files.size() == 1); result = std::move(files[0]); if (std::error_code ec = result->parse()) @@ -265,13 +267,12 @@ public: return magic == llvm::sys::fs::file_magic::archive; } - std::error_code - loadFile(std::unique_ptr<MemoryBuffer> mb, const Registry ®, - std::vector<std::unique_ptr<File>> &result) const override { + std::error_code loadFile(std::unique_ptr<MemoryBuffer> mb, + const Registry ®, + std::unique_ptr<File> &result) const override { StringRef path = mb->getBufferIdentifier(); - std::unique_ptr<FileArchive> file( - new FileArchive(std::move(mb), reg, path, _logLoading)); - result.push_back(std::move(file)); + result = + llvm::make_unique<FileArchive>(std::move(mb), reg, path, _logLoading); return std::error_code(); } diff --git a/lld/lib/ReaderWriter/MachO/MachOLinkingContext.cpp b/lld/lib/ReaderWriter/MachO/MachOLinkingContext.cpp index 9b5837cd45f..aff6c87c894 100644 --- a/lld/lib/ReaderWriter/MachO/MachOLinkingContext.cpp +++ b/lld/lib/ReaderWriter/MachO/MachOLinkingContext.cpp @@ -623,9 +623,11 @@ MachODylibFile* MachOLinkingContext::loadIndirectDylib(StringRef path) { if (mbOrErr.getError()) return nullptr; - std::vector<std::unique_ptr<File>> files; - if (registry().loadFile(std::move(mbOrErr.get()), files)) + std::unique_ptr<File> file; + if (registry().loadFile(std::move(mbOrErr.get()), file)) return nullptr; + std::vector<std::unique_ptr<File>> files; + files.push_back(std::move(file)); assert(files.size() == 1 && "expected one file in dylib"); files[0]->parse(); MachODylibFile* result = reinterpret_cast<MachODylibFile*>(files[0].get()); diff --git a/lld/lib/ReaderWriter/MachO/MachONormalizedFileBinaryReader.cpp b/lld/lib/ReaderWriter/MachO/MachONormalizedFileBinaryReader.cpp index b05f4316609..45757eeef1c 100644 --- a/lld/lib/ReaderWriter/MachO/MachONormalizedFileBinaryReader.cpp +++ b/lld/lib/ReaderWriter/MachO/MachONormalizedFileBinaryReader.cpp @@ -30,6 +30,7 @@ #include "llvm/ADT/SmallString.h" #include "llvm/ADT/StringRef.h" #include "llvm/ADT/StringSwitch.h" +#include "llvm/ADT/STLExtras.h" #include "llvm/ADT/Twine.h" #include "llvm/Object/MachO.h" #include "llvm/Support/Casting.h" @@ -521,11 +522,10 @@ public: mb.getBufferSize() > 32); } - std::error_code - loadFile(std::unique_ptr<MemoryBuffer> mb, const Registry ®istry, - std::vector<std::unique_ptr<File>> &result) const override { - auto *file = new MachOFile(std::move(mb), &_ctx); - result.push_back(std::unique_ptr<MachOFile>(file)); + std::error_code loadFile(std::unique_ptr<MemoryBuffer> mb, + const Registry ®istry, + std::unique_ptr<File> &result) const override { + result = llvm::make_unique<MachOFile>(std::move(mb), &_ctx); return std::error_code(); } @@ -547,11 +547,10 @@ public: } } - std::error_code - loadFile(std::unique_ptr<MemoryBuffer> mb, const Registry ®istry, - std::vector<std::unique_ptr<File>> &result) const override { - auto *file = new MachODylibFile(std::move(mb), &_ctx); - result.push_back(std::unique_ptr<MachODylibFile>(file)); + std::error_code loadFile(std::unique_ptr<MemoryBuffer> mb, + const Registry ®istry, + std::unique_ptr<File> &result) const override { + result = llvm::make_unique<MachODylibFile>(std::move(mb), &_ctx); return std::error_code(); } diff --git a/lld/lib/ReaderWriter/PECOFF/ReaderCOFF.cpp b/lld/lib/ReaderWriter/PECOFF/ReaderCOFF.cpp index f7c9c7e8ea5..aa053bc9e28 100644 --- a/lld/lib/ReaderWriter/PECOFF/ReaderCOFF.cpp +++ b/lld/lib/ReaderWriter/PECOFF/ReaderCOFF.cpp @@ -1052,12 +1052,10 @@ public: return magic == llvm::sys::fs::file_magic::coff_object; } - std::error_code - loadFile(std::unique_ptr<MemoryBuffer> mb, const Registry &, - std::vector<std::unique_ptr<File>> &result) const override { + std::error_code loadFile(std::unique_ptr<MemoryBuffer> mb, const Registry &, + std::unique_ptr<File> &result) const override { // Parse the memory buffer as PECOFF file. - auto *file = new FileCOFF(std::move(mb), _ctx); - result.push_back(std::unique_ptr<File>(file)); + result = llvm::make_unique<FileCOFF>(std::move(mb), _ctx); return std::error_code(); } diff --git a/lld/lib/ReaderWriter/PECOFF/ReaderImportHeader.cpp b/lld/lib/ReaderWriter/PECOFF/ReaderImportHeader.cpp index 76e37345a27..75d58071c48 100644 --- a/lld/lib/ReaderWriter/PECOFF/ReaderImportHeader.cpp +++ b/lld/lib/ReaderWriter/PECOFF/ReaderImportHeader.cpp @@ -367,11 +367,11 @@ public: return magic == llvm::sys::fs::file_magic::coff_import_library; } - std::error_code - loadFile(std::unique_ptr<MemoryBuffer> mb, const class Registry &, - std::vector<std::unique_ptr<File> > &result) const override { - auto *file = new FileImportLibrary(std::move(mb), _ctx.getMachineType()); - result.push_back(std::unique_ptr<File>(file)); + std::error_code loadFile(std::unique_ptr<MemoryBuffer> mb, + const class Registry &, + std::unique_ptr<File> &result) const override { + result = llvm::make_unique<FileImportLibrary>(std::move(mb), + _ctx.getMachineType()); return std::error_code(); } diff --git a/lld/lib/ReaderWriter/YAML/ReaderWriterYAML.cpp b/lld/lib/ReaderWriter/YAML/ReaderWriterYAML.cpp index eccb099415d..d6863f342e3 100644 --- a/lld/lib/ReaderWriter/YAML/ReaderWriterYAML.cpp +++ b/lld/lib/ReaderWriter/YAML/ReaderWriterYAML.cpp @@ -1294,9 +1294,9 @@ public: return ext.equals(".objtxt") || ext.equals(".yaml"); } - std::error_code - loadFile(std::unique_ptr<MemoryBuffer> mb, const class Registry &, - std::vector<std::unique_ptr<File>> &result) const override { + std::error_code loadFile(std::unique_ptr<MemoryBuffer> mb, + const class Registry &, + std::unique_ptr<File> &result) const override { // Create YAML Input Reader. YamlContext yamlContext; yamlContext._registry = &_registry; @@ -1306,19 +1306,19 @@ public: // Fill vector with File objects created by parsing yaml. std::vector<const lld::File *> createdFiles; yin >> createdFiles; + assert(createdFiles.size() == 1); // Error out now if there were parsing errors. if (yin.error()) return make_error_code(lld::YamlReaderError::illegal_value); std::shared_ptr<MemoryBuffer> smb(mb.release()); - for (const File *file : createdFiles) { - // Note: loadFile() should return vector of *const* File - File *f = const_cast<File *>(file); - f->setLastError(std::error_code()); - f->setSharedMemoryBuffer(smb); - result.emplace_back(f); - } + const File *file = createdFiles[0]; + // Note: loadFile() should return vector of *const* File + File *f = const_cast<File *>(file); + f->setLastError(std::error_code()); + f->setSharedMemoryBuffer(smb); + result = std::unique_ptr<File>(f); return make_error_code(lld::YamlReaderError::success); } |