diff options
author | Rafael Espindola <rafael.espindola@gmail.com> | 2014-08-19 18:44:51 +0000 |
---|---|---|
committer | Rafael Espindola <rafael.espindola@gmail.com> | 2014-08-19 18:44:51 +0000 |
commit | 2ed1c57b34b2f5aaf00bc7608f8a643ba4940425 (patch) | |
tree | 4539694b32f5952fb32b3d2b83868f9cf0752bfe | |
parent | 48af1c2a1a5148bc6a143bc0d8650ef744f2f7c3 (diff) | |
download | bcm5719-llvm-2ed1c57b34b2f5aaf00bc7608f8a643ba4940425.tar.gz bcm5719-llvm-2ed1c57b34b2f5aaf00bc7608f8a643ba4940425.zip |
Update for llvm api change.
llvm-svn: 216003
-rw-r--r-- | lld/lib/ReaderWriter/FileArchive.cpp | 27 | ||||
-rw-r--r-- | lld/lib/ReaderWriter/PECOFF/ReaderCOFF.cpp | 7 |
2 files changed, 21 insertions, 13 deletions
diff --git a/lld/lib/ReaderWriter/FileArchive.cpp b/lld/lib/ReaderWriter/FileArchive.cpp index 0f98ef0d0ac..ac4b0f4c356 100644 --- a/lld/lib/ReaderWriter/FileArchive.cpp +++ b/lld/lib/ReaderWriter/FileArchive.cpp @@ -57,11 +57,15 @@ public: return nullptr; if (dataSymbolOnly) { - ErrorOr<std::unique_ptr<MemoryBuffer>> buffOrErr = - ci->getMemoryBuffer(true); + ErrorOr<llvm::MemoryBufferRef> buffOrErr = ci->getMemoryBufferRef(); if (buffOrErr.getError()) return nullptr; - if (isDataSymbol(std::move(buffOrErr.get()), name)) + + llvm::MemoryBufferRef mb = buffOrErr.get(); + std::unique_ptr<MemoryBuffer> buff(MemoryBuffer::getMemBuffer( + mb.getBuffer(), mb.getBufferIdentifier(), false)); + + if (isDataSymbol(std::move(buff), name)) return nullptr; } @@ -136,14 +140,17 @@ protected: std::error_code instantiateMember(Archive::child_iterator member, std::vector<std::unique_ptr<File>> &result) const { - ErrorOr<std::unique_ptr<MemoryBuffer>> mbOrErr = - member->getMemoryBuffer(true); + ErrorOr<llvm::MemoryBufferRef> mbOrErr = member->getMemoryBufferRef(); if (std::error_code ec = mbOrErr.getError()) return ec; - std::unique_ptr<MemoryBuffer> mb = std::move(mbOrErr.get()); + llvm::MemoryBufferRef mb = mbOrErr.get(); if (_logLoading) - llvm::outs() << mb->getBufferIdentifier() << "\n"; - _registry.parseFile(mb, result); + llvm::outs() << mb.getBufferIdentifier() << "\n"; + + std::unique_ptr<MemoryBuffer> buf(MemoryBuffer::getMemBuffer( + mb.getBuffer(), mb.getBufferIdentifier(), false)); + + _registry.parseFile(buf, result); const char *memberStart = member->getBuffer().data(); _membersInstantiated.insert(memberStart); return std::error_code(); @@ -154,7 +161,7 @@ protected: // symbol or does not exist, returns a failure. std::error_code isDataSymbol(std::unique_ptr<MemoryBuffer> mb, StringRef symbol) const { - auto objOrErr(ObjectFile::createObjectFile(mb)); + auto objOrErr(ObjectFile::createObjectFile(mb->getMemBufferRef())); if (auto ec = objOrErr.getError()) return ec; std::unique_ptr<ObjectFile> obj = std::move(objOrErr.get()); @@ -218,7 +225,7 @@ public: MemoryBuffer &buff = *mb; // Make Archive object which will be owned by FileArchive object. std::error_code ec; - Archive *archive = new Archive(std::move(mb), ec); + Archive *archive = new Archive(mb->getMemBufferRef(), ec); if (ec) return ec; StringRef path = buff.getBufferIdentifier(); diff --git a/lld/lib/ReaderWriter/PECOFF/ReaderCOFF.cpp b/lld/lib/ReaderWriter/PECOFF/ReaderCOFF.cpp index 1836a099ec6..792a6af7657 100644 --- a/lld/lib/ReaderWriter/PECOFF/ReaderCOFF.cpp +++ b/lld/lib/ReaderWriter/PECOFF/ReaderCOFF.cpp @@ -144,6 +144,7 @@ private: StringRef ArrayRefToString(ArrayRef<uint8_t> array); std::unique_ptr<const llvm::object::COFFObjectFile> _obj; + std::unique_ptr<MemoryBuffer> _mb; atom_collection_vector<DefinedAtom> _definedAtoms; atom_collection_vector<UndefinedAtom> _undefinedAtoms; atom_collection_vector<SharedLibraryAtom> _sharedLibraryAtoms; @@ -287,9 +288,9 @@ DefinedAtom::Merge getMerge(const coff_aux_section_definition *auxsym) { } FileCOFF::FileCOFF(std::unique_ptr<MemoryBuffer> mb, std::error_code &ec) - : File(mb->getBufferIdentifier(), kindObject), _compatibleWithSEH(false), - _ordinal(0) { - auto binaryOrErr = llvm::object::createBinary(std::move(mb)); + : File(mb->getBufferIdentifier(), kindObject), _mb(std::move(mb)), + _compatibleWithSEH(false), _ordinal(0) { + auto binaryOrErr = llvm::object::createBinary(_mb->getMemBufferRef()); if ((ec = binaryOrErr.getError())) return; std::unique_ptr<llvm::object::Binary> bin = std::move(binaryOrErr.get()); |