[lld] r178914 - Correctly pass ownership of MemoryBuffers.
Michael Spencer
bigcheesegs at gmail.com
Fri Apr 5 14:57:04 PDT 2013
On Fri, Apr 5, 2013 at 2:23 PM, Nick Kledzik <kledzik at apple.com> wrote:
> Can you explain what was wrong previously?
>
> I was intentionally passing the unqiue_ptr<MemoryBuffer> by reference
> because sometimes the constructed lld::File takes ownership of the buffer
> and sometimes it does not.
>
> -Nick
>
Ah, sorry, I misread the docs and thought there were other issues. I'll
revert.
- Michael Spencer
>
> On Apr 5, 2013, at 2:08 PM, Michael J. Spencer <bigcheesegs at gmail.com>
> wrote:
> > Author: mspencer
> > Date: Fri Apr 5 16:08:30 2013
> > New Revision: 178914
> >
> > URL: http://llvm.org/viewvc/llvm-project?rev=178914&view=rev
> > Log:
> > Correctly pass ownership of MemoryBuffers.
> >
> > Modified:
> > lld/trunk/include/lld/Core/TargetInfo.h
> > lld/trunk/include/lld/ReaderWriter/CoreTargetInfo.h
> > lld/trunk/include/lld/ReaderWriter/ELFTargetInfo.h
> > lld/trunk/include/lld/ReaderWriter/MachOTargetInfo.h
> > lld/trunk/include/lld/ReaderWriter/Reader.h
> > lld/trunk/include/lld/ReaderWriter/ReaderArchive.h
> > lld/trunk/include/lld/ReaderWriter/ReaderLinkerScript.h
> > lld/trunk/lib/Core/TargetInfo.cpp
> > lld/trunk/lib/ReaderWriter/CoreTargetInfo.cpp
> > lld/trunk/lib/ReaderWriter/ELF/ELFTargetInfo.cpp
> > lld/trunk/lib/ReaderWriter/ELF/Reader.cpp
> > lld/trunk/lib/ReaderWriter/MachO/MachOTargetInfo.cpp
> > lld/trunk/lib/ReaderWriter/Native/ReaderNative.cpp
> > lld/trunk/lib/ReaderWriter/PECOFF/ReaderCOFF.cpp
> > lld/trunk/lib/ReaderWriter/Reader.cpp
> > lld/trunk/lib/ReaderWriter/ReaderArchive.cpp
> > lld/trunk/lib/ReaderWriter/ReaderLinkerScript.cpp
> > lld/trunk/lib/ReaderWriter/YAML/ReaderWriterYAML.cpp
> >
> > Modified: lld/trunk/include/lld/Core/TargetInfo.h
> > URL:
> http://llvm.org/viewvc/llvm-project/lld/trunk/include/lld/Core/TargetInfo.h?rev=178914&r1=178913&r2=178914&view=diff
> >
> ==============================================================================
> > --- lld/trunk/include/lld/Core/TargetInfo.h (original)
> > +++ lld/trunk/include/lld/Core/TargetInfo.h Fri Apr 5 16:08:30 2013
> > @@ -260,19 +260,19 @@ public:
> > /// \param [out] result The instantiated lld::File object is returned
> here.
> > /// The \p result is a vector because some input files parse into more
> than
> > /// one lld::File (e.g. YAML).
> > - virtual error_code parseFile(std::unique_ptr<MemoryBuffer> &inputBuff,
> > - std::vector<std::unique_ptr<File>> &result)
> const = 0;
> > -
> > + virtual error_code
> > + parseFile(std::unique_ptr<MemoryBuffer> inputBuff,
> > + std::vector<std::unique_ptr<File>> &result) const = 0;
> > +
> > /// This is a wrapper around parseFile() where the input file is
> specified
> > /// by file system path. The default implementation reads the input
> file
> > /// into a memory buffer and calls parseFile().
> > ///
> > /// \param path This is the file system path to the input file.
> > /// \param [out] result The instantiated lld::File object is returned
> here.
> > - virtual error_code readFile(StringRef path,
> > - std::vector<std::unique_ptr<File>> &result)
> const;
> > + virtual error_code
> > + readFile(StringRef path, std::vector<std::unique_ptr<File>> &result)
> const;
> >
> > -
> > /// This method is called by core linking to give the Writer a chance
> > /// to add file format specific "files" to set of files to be linked.
> This is
> > /// how file format specific atoms can be added to the link.
> >
> > Modified: lld/trunk/include/lld/ReaderWriter/CoreTargetInfo.h
> > URL:
> http://llvm.org/viewvc/llvm-project/lld/trunk/include/lld/ReaderWriter/CoreTargetInfo.h?rev=178914&r1=178913&r2=178914&view=diff
> >
> ==============================================================================
> > --- lld/trunk/include/lld/ReaderWriter/CoreTargetInfo.h (original)
> > +++ lld/trunk/include/lld/ReaderWriter/CoreTargetInfo.h Fri Apr 5
> 16:08:30 2013
> > @@ -30,11 +30,10 @@ public:
> > virtual ErrorOr<Reference::Kind> relocKindFromString(StringRef str)
> const;
> > virtual ErrorOr<std::string> stringFromRelocKind(Reference::Kind kind)
> const;
> >
> > + virtual error_code
> > + parseFile(std::unique_ptr<MemoryBuffer> mb,
> > + std::vector<std::unique_ptr<File>> &result) const;
> >
> > - virtual error_code parseFile(std::unique_ptr<MemoryBuffer> &mb,
> > - std::vector<std::unique_ptr<File>> &result)
> const;
> > -
> > -
> > void addPassNamed(StringRef name) {
> > _passNames.push_back(name);
> > }
> >
> > Modified: lld/trunk/include/lld/ReaderWriter/ELFTargetInfo.h
> > URL:
> http://llvm.org/viewvc/llvm-project/lld/trunk/include/lld/ReaderWriter/ELFTargetInfo.h?rev=178914&r1=178913&r2=178914&view=diff
> >
> ==============================================================================
> > --- lld/trunk/include/lld/ReaderWriter/ELFTargetInfo.h (original)
> > +++ lld/trunk/include/lld/ReaderWriter/ELFTargetInfo.h Fri Apr 5
> 16:08:30 2013
> > @@ -57,10 +57,10 @@ public:
> > }
> > virtual bool validate(raw_ostream &diagnostics);
> >
> > + virtual error_code
> > + parseFile(std::unique_ptr<MemoryBuffer> mb,
> > + std::vector<std::unique_ptr<File>> &result) const;
> >
> > - virtual error_code parseFile(std::unique_ptr<MemoryBuffer> &mb,
> > - std::vector<std::unique_ptr<File>> &result)
> const;
> > -
> > static std::unique_ptr<ELFTargetInfo> create(llvm::Triple);
> >
> > /// \brief Does this relocation belong in the dynamic plt relocation
> table?
> >
> > Modified: lld/trunk/include/lld/ReaderWriter/MachOTargetInfo.h
> > URL:
> http://llvm.org/viewvc/llvm-project/lld/trunk/include/lld/ReaderWriter/MachOTargetInfo.h?rev=178914&r1=178913&r2=178914&view=diff
> >
> ==============================================================================
> > --- lld/trunk/include/lld/ReaderWriter/MachOTargetInfo.h (original)
> > +++ lld/trunk/include/lld/ReaderWriter/MachOTargetInfo.h Fri Apr 5
> 16:08:30 2013
> > @@ -31,9 +31,10 @@ public:
> > virtual ErrorOr<Reference::Kind> relocKindFromString(StringRef str)
> const;
> > virtual ErrorOr<std::string> stringFromRelocKind(Reference::Kind kind)
> const;
> > virtual bool validate(raw_ostream &diagnostics);
> > -
> > - virtual error_code parseFile(std::unique_ptr<MemoryBuffer> &mb,
> > - std::vector<std::unique_ptr<File>> &result)
> const;
> > +
> > + virtual error_code
> > + parseFile(std::unique_ptr<MemoryBuffer> mb,
> > + std::vector<std::unique_ptr<File>> &result) const;
> >
> > uint32_t getCPUType() const;
> > uint32_t getCPUSubType() const;
> >
> > Modified: lld/trunk/include/lld/ReaderWriter/Reader.h
> > URL:
> http://llvm.org/viewvc/llvm-project/lld/trunk/include/lld/ReaderWriter/Reader.h?rev=178914&r1=178913&r2=178914&view=diff
> >
> ==============================================================================
> > --- lld/trunk/include/lld/ReaderWriter/Reader.h (original)
> > +++ lld/trunk/include/lld/ReaderWriter/Reader.h Fri Apr 5 16:08:30 2013
> > @@ -39,8 +39,9 @@ public:
> > /// file) and create a File object.
> > ///
> > /// On success, the resulting File object takes ownership of the
> MemoryBuffer.
> > - virtual error_code parseFile(std::unique_ptr<MemoryBuffer> &mb,
> > - std::vector<std::unique_ptr<File>> &result)
> const = 0;
> > + virtual error_code
> > + parseFile(std::unique_ptr<MemoryBuffer> mb,
> > + std::vector<std::unique_ptr<File>> &result) const = 0;
> >
> > protected:
> > // only concrete subclasses can be instantiated
> >
> > Modified: lld/trunk/include/lld/ReaderWriter/ReaderArchive.h
> > URL:
> http://llvm.org/viewvc/llvm-project/lld/trunk/include/lld/ReaderWriter/ReaderArchive.h?rev=178914&r1=178913&r2=178914&view=diff
> >
> ==============================================================================
> > --- lld/trunk/include/lld/ReaderWriter/ReaderArchive.h (original)
> > +++ lld/trunk/include/lld/ReaderWriter/ReaderArchive.h Fri Apr 5
> 16:08:30 2013
> > @@ -35,7 +35,7 @@ public:
> >
> > /// \brief Returns a vector of Files that are contained in the archive
> file
> > /// pointed to by the Memorybuffer
> > - error_code parseFile(std::unique_ptr<llvm::MemoryBuffer> &mb,
> > + error_code parseFile(std::unique_ptr<llvm::MemoryBuffer> mb,
> > std::vector<std::unique_ptr<File>> &result) const;
> >
> > private:
> >
> > Modified: lld/trunk/include/lld/ReaderWriter/ReaderLinkerScript.h
> > URL:
> http://llvm.org/viewvc/llvm-project/lld/trunk/include/lld/ReaderWriter/ReaderLinkerScript.h?rev=178914&r1=178913&r2=178914&view=diff
> >
> ==============================================================================
> > --- lld/trunk/include/lld/ReaderWriter/ReaderLinkerScript.h (original)
> > +++ lld/trunk/include/lld/ReaderWriter/ReaderLinkerScript.h Fri Apr 5
> 16:08:30 2013
> > @@ -26,7 +26,7 @@ public:
> >
> > /// \brief Returns a vector of Files that are contained in the archive
> file
> > /// pointed to by the Memorybuffer
> > - error_code parseFile(std::unique_ptr<llvm::MemoryBuffer> &mb,
> > + error_code parseFile(std::unique_ptr<llvm::MemoryBuffer> mb,
> > std::vector<std::unique_ptr<File>> &result) const;
> > };
> >
> >
> > Modified: lld/trunk/lib/Core/TargetInfo.cpp
> > URL:
> http://llvm.org/viewvc/llvm-project/lld/trunk/lib/Core/TargetInfo.cpp?rev=178914&r1=178913&r2=178914&view=diff
> >
> ==============================================================================
> > --- lld/trunk/lib/Core/TargetInfo.cpp (original)
> > +++ lld/trunk/lib/Core/TargetInfo.cpp Fri Apr 5 16:08:30 2013
> > @@ -37,9 +37,8 @@ error_code TargetInfo::readFile(StringRe
> > OwningPtr<llvm::MemoryBuffer> opmb;
> > if (error_code ec = llvm::MemoryBuffer::getFileOrSTDIN(path, opmb))
> > return ec;
> > -
> > - std::unique_ptr<MemoryBuffer> mb(opmb.take());
> > - return this->parseFile(mb, result);
> > +
> > + return this->parseFile(std::unique_ptr<MemoryBuffer>(opmb.take()),
> result);
> > }
> >
> > error_code TargetInfo::writeFile(const File &linkedFile) const {
> >
> > Modified: lld/trunk/lib/ReaderWriter/CoreTargetInfo.cpp
> > URL:
> http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/CoreTargetInfo.cpp?rev=178914&r1=178913&r2=178914&view=diff
> >
> ==============================================================================
> > --- lld/trunk/lib/ReaderWriter/CoreTargetInfo.cpp (original)
> > +++ lld/trunk/lib/ReaderWriter/CoreTargetInfo.cpp Fri Apr 5 16:08:30
> 2013
> > @@ -358,12 +358,12 @@ void CoreTargetInfo::addPasses(PassManag
> > }
> > }
> >
> > -
> > -error_code CoreTargetInfo::parseFile(std::unique_ptr<MemoryBuffer> &mb,
> > - std::vector<std::unique_ptr<File>> &result)
> const {
> > +error_code
> > +CoreTargetInfo::parseFile(std::unique_ptr<MemoryBuffer> mb,
> > + std::vector<std::unique_ptr<File>> &result)
> const {
> > if (!_reader)
> > - _reader = createReaderYAML(*this);
> > - return _reader->parseFile(mb,result);
> > + _reader = createReaderYAML(*this);
> > + return _reader->parseFile(std::move(mb), result);
> > }
> >
> > Writer &CoreTargetInfo::writer() const {
> >
> > Modified: lld/trunk/lib/ReaderWriter/ELF/ELFTargetInfo.cpp
> > URL:
> http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/ELFTargetInfo.cpp?rev=178914&r1=178913&r2=178914&view=diff
> >
> ==============================================================================
> > --- lld/trunk/lib/ReaderWriter/ELF/ELFTargetInfo.cpp (original)
> > +++ lld/trunk/lib/ReaderWriter/ELF/ELFTargetInfo.cpp Fri Apr 5 16:08:30
> 2013
> > @@ -91,28 +91,27 @@ bool ELFTargetInfo::isDynamic() const {
> > return false;
> > }
> >
> > -
> > -error_code ELFTargetInfo::parseFile(std::unique_ptr<MemoryBuffer> &mb,
> > - std::vector<std::unique_ptr<File>> &result)
> const {
> > +error_code
> > +ELFTargetInfo::parseFile(std::unique_ptr<MemoryBuffer> mb,
> > + std::vector<std::unique_ptr<File>> &result)
> const {
> > if (!_elfReader)
> > _elfReader = createReaderELF(*this);
> > - error_code ec = _elfReader->parseFile(mb, result);
> > - if (ec) {
> > - // Not an ELF file, check file extension to see if it might be yaml
> > - StringRef path = mb->getBufferIdentifier();
> > - if ( path.endswith(".objtxt") ) {
> > - if (!_yamlReader)
> > - _yamlReader = createReaderYAML(*this);
> > - ec = _yamlReader->parseFile(mb, result);
> > - }
> > - if (ec) {
> > - // Not a yaml file, assume it is a linkerscript
> > - if (!_linkerScriptReader)
> > - _linkerScriptReader.reset(new ReaderLinkerScript(*this));
> > - ec = _linkerScriptReader->parseFile(mb, result);
> > - }
> > + std::string path = mb->getBufferIdentifier();
> > + auto magic = llvm::sys::fs::identify_magic(mb->getBuffer());
> > + if (magic == llvm::sys::fs::file_magic::elf_relocatable ||
> > + magic == llvm::sys::fs::file_magic::elf_shared_object ||
> > + magic == llvm::sys::fs::file_magic::archive)
> > + return _elfReader->parseFile(std::move(mb), result);
> > + // Not an ELF file, check file extension to see if it might be yaml
> > + if (StringRef(path).endswith(".objtxt")) {
> > + if (!_yamlReader)
> > + _yamlReader = createReaderYAML(*this);
> > + return _yamlReader->parseFile(std::move(mb), result);
> > }
> > - return ec;
> > + // Not a yaml file, assume it is a linkerscript
> > + if (!_linkerScriptReader)
> > + _linkerScriptReader.reset(new ReaderLinkerScript(*this));
> > + return _linkerScriptReader->parseFile(std::move(mb), result);
> > }
> >
> > Writer &ELFTargetInfo::writer() const {
> >
> > Modified: lld/trunk/lib/ReaderWriter/ELF/Reader.cpp
> > URL:
> http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/Reader.cpp?rev=178914&r1=178913&r2=178914&view=diff
> >
> ==============================================================================
> > --- lld/trunk/lib/ReaderWriter/ELF/Reader.cpp (original)
> > +++ lld/trunk/lib/ReaderWriter/ELF/Reader.cpp Fri Apr 5 16:08:30 2013
> > @@ -82,8 +82,8 @@ public:
> > : lld::Reader(ti), _elfTargetInfo(ti), _readerArchive(ti, *this) {
> > }
> >
> > - error_code parseFile(std::unique_ptr<MemoryBuffer> &mb,
> > - std::vector<std::unique_ptr<File> > &result)
> const {
> > + error_code parseFile(std::unique_ptr<MemoryBuffer> mb,
> > + std::vector<std::unique_ptr<File>> &result)
> const {
> > using llvm::object::ELFType;
> > llvm::sys::LLVMFileType fileType =
> > llvm::sys::IdentifyFileType(mb->getBufferStart(),
> > @@ -96,7 +96,7 @@ public:
> > switch (fileType) {
> > case llvm::sys::ELF_Relocatable_FileType: {
> > std::unique_ptr<File> f(createELF<ELFFileCreateELFTraits>(
> > - getElfArchType(&*mb), MaxAlignment, _elfTargetInfo,
> std::move(mb),
> > + getElfArchType(mb.get()), MaxAlignment, _elfTargetInfo,
> std::move(mb),
> > ec));
> > if (ec)
> > return ec;
> > @@ -105,14 +105,15 @@ public:
> > }
> > case llvm::sys::ELF_SharedObject_FileType: {
> > auto f = createELF<DynamicFileCreateELFTraits>(
> > - getElfArchType(&*mb), MaxAlignment, _elfTargetInfo,
> std::move(mb));
> > + getElfArchType(mb.get()), MaxAlignment, _elfTargetInfo,
> > + std::move(mb));
> > if (!f)
> > return f;
> > result.push_back(std::move(*f));
> > break;
> > }
> > case llvm::sys::Archive_FileType:
> > - ec = _readerArchive.parseFile(mb, result);
> > + ec = _readerArchive.parseFile(std::move(mb), result);
> > break;
> > default:
> > return llvm::make_error_code(llvm::errc::executable_format_error);
> >
> > Modified: lld/trunk/lib/ReaderWriter/MachO/MachOTargetInfo.cpp
> > URL:
> http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/MachO/MachOTargetInfo.cpp?rev=178914&r1=178913&r2=178914&view=diff
> >
> ==============================================================================
> > --- lld/trunk/lib/ReaderWriter/MachO/MachOTargetInfo.cpp (original)
> > +++ lld/trunk/lib/ReaderWriter/MachO/MachOTargetInfo.cpp Fri Apr 5
> 16:08:30 2013
> > @@ -209,19 +209,18 @@ void MachOTargetInfo::addPasses(PassMana
> > pm.add(std::unique_ptr<Pass>(new LayoutPass()));
> > }
> >
> > -
> > -
> > -error_code MachOTargetInfo::parseFile(std::unique_ptr<MemoryBuffer> &mb,
> > - std::vector<std::unique_ptr<File>> &result)
> const {
> > +error_code MachOTargetInfo::parseFile(
> > + std::unique_ptr<MemoryBuffer> mb,
> > + std::vector<std::unique_ptr<File>> &result) const {
> > // if (!_machoReader)
> > // _machoReader = createReaderMachO(*this);
> > // error_code ec = _machoReader->parseFile(mb,result);
> > // if (ec) {
> > if (!_yamlReader)
> > _yamlReader = createReaderYAML(*this);
> > - return _yamlReader->parseFile(mb,result);
> > + return _yamlReader->parseFile(std::move(mb), result);
> > // }
> > -
> > +
> > return error_code::success();
> > }
> >
> >
> > Modified: lld/trunk/lib/ReaderWriter/Native/ReaderNative.cpp
> > URL:
> http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/Native/ReaderNative.cpp?rev=178914&r1=178913&r2=178914&view=diff
> >
> ==============================================================================
> > --- lld/trunk/lib/ReaderWriter/Native/ReaderNative.cpp (original)
> > +++ lld/trunk/lib/ReaderWriter/Native/ReaderNative.cpp Fri Apr 5
> 16:08:30 2013
> > @@ -915,9 +915,9 @@ public:
> > Reader(const TargetInfo &ti)
> > : lld::Reader(ti) {}
> >
> > - virtual error_code parseFile(
> > - std::unique_ptr<MemoryBuffer> &mb,
> > - std::vector<std::unique_ptr<lld::File> > &result) const {
> > + virtual error_code
> > + parseFile(std::unique_ptr<MemoryBuffer> mb,
> > + std::vector<std::unique_ptr<lld::File>> &result) const {
> > return File::make(_targetInfo, mb, mb->getBufferIdentifier(),
> result);
> > }
> > };
> >
> > Modified: lld/trunk/lib/ReaderWriter/PECOFF/ReaderCOFF.cpp
> > URL:
> http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/PECOFF/ReaderCOFF.cpp?rev=178914&r1=178913&r2=178914&view=diff
> >
> ==============================================================================
> > --- lld/trunk/lib/ReaderWriter/PECOFF/ReaderCOFF.cpp (original)
> > +++ lld/trunk/lib/ReaderWriter/PECOFF/ReaderCOFF.cpp Fri Apr 5 16:08:30
> 2013
> > @@ -369,8 +369,8 @@ class ReaderCOFF : public Reader {
> > public:
> > ReaderCOFF(const TargetInfo &ti) : Reader(ti) {}
> >
> > - error_code parseFile(std::unique_ptr<MemoryBuffer> &mb,
> > - std::vector<std::unique_ptr<File> > &result)
> const {
> > + error_code parseFile(std::unique_ptr<MemoryBuffer> mb,
> > + std::vector<std::unique_ptr<File>> &result)
> const {
> > llvm::error_code ec;
> > std::unique_ptr<File> f(new FileCOFF(_targetInfo, std::move(mb),
> ec));
> > if (ec) {
> >
> > Modified: lld/trunk/lib/ReaderWriter/Reader.cpp
> > URL:
> http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/Reader.cpp?rev=178914&r1=178913&r2=178914&view=diff
> >
> ==============================================================================
> > --- lld/trunk/lib/ReaderWriter/Reader.cpp (original)
> > +++ lld/trunk/lib/ReaderWriter/Reader.cpp Fri Apr 5 16:08:30 2013
> > @@ -24,7 +24,6 @@ error_code Reader::readFile(StringRef pa
> > if (error_code ec = llvm::MemoryBuffer::getFileOrSTDIN(path, opmb))
> > return ec;
> >
> > - std::unique_ptr<MemoryBuffer> mb(opmb.take());
> > - return this->parseFile(mb, result);
> > + return parseFile(std::unique_ptr<MemoryBuffer>(opmb.take()), result);
> > }
> > } // end namespace lld
> >
> > Modified: lld/trunk/lib/ReaderWriter/ReaderArchive.cpp
> > URL:
> http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ReaderArchive.cpp?rev=178914&r1=178913&r2=178914&view=diff
> >
> ==============================================================================
> > --- lld/trunk/lib/ReaderWriter/ReaderArchive.cpp (original)
> > +++ lld/trunk/lib/ReaderWriter/ReaderArchive.cpp Fri Apr 5 16:08:30 2013
> > @@ -48,7 +48,7 @@ public:
> > if (_targetInfo.logInputFiles())
> > llvm::outs() << buff->getBufferIdentifier() << "\n";
> > std::unique_ptr<MemoryBuffer> mb(buff.take());
> > - if (_targetInfo.parseFile(mb, result))
> > + if (_targetInfo.parseFile(std::move(mb), result))
> > return nullptr;
> >
> > assert(result.size() == 1);
> > @@ -159,8 +159,9 @@ public:
> >
> > // Returns a vector of Files that are contained in the archive file
> > // pointed to by the MemoryBuffer
> > -error_code ReaderArchive::parseFile(std::unique_ptr<llvm::MemoryBuffer>
> &mb,
> > - std::vector<std::unique_ptr<File>> &result)
> const {
> > +error_code
> > +ReaderArchive::parseFile(std::unique_ptr<llvm::MemoryBuffer> mb,
> > + std::vector<std::unique_ptr<File>> &result)
> const {
> > error_code ec;
> >
> > if (_targetInfo.forceLoadAllArchives()) {
> > @@ -176,7 +177,7 @@ error_code ReaderArchive::parseFile(std:
> > std::unique_ptr<MemoryBuffer> mbc(buff.take());
> > if (_targetInfo.logInputFiles())
> > llvm::outs() << buff->getBufferIdentifier() << "\n";
> > - if ((ec = _targetInfo.parseFile(mbc, result)))
> > + if ((ec = _targetInfo.parseFile(std::move(mbc), result)))
> > return ec;
> > }
> > } else {
> >
> > Modified: lld/trunk/lib/ReaderWriter/ReaderLinkerScript.cpp
> > URL:
> http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ReaderLinkerScript.cpp?rev=178914&r1=178913&r2=178914&view=diff
> >
> ==============================================================================
> > --- lld/trunk/lib/ReaderWriter/ReaderLinkerScript.cpp (original)
> > +++ lld/trunk/lib/ReaderWriter/ReaderLinkerScript.cpp Fri Apr 5
> 16:08:30 2013
> > @@ -79,9 +79,9 @@ private:
> > } // end anon namespace
> >
> > namespace lld {
> > -error_code
> > -ReaderLinkerScript::parseFile(std::unique_ptr<llvm::MemoryBuffer> &mb,
> > - std::vector<std::unique_ptr<File> >
> &result) const {
> > +error_code ReaderLinkerScript::parseFile(
> > + std::unique_ptr<llvm::MemoryBuffer> mb,
> > + std::vector<std::unique_ptr<File>> &result) const {
> > auto lsf = LinkerScriptFile::create(_targetInfo, std::move(mb));
> > if (!lsf)
> > return lsf;
> >
> > Modified: lld/trunk/lib/ReaderWriter/YAML/ReaderWriterYAML.cpp
> > URL:
> http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/YAML/ReaderWriterYAML.cpp?rev=178914&r1=178913&r2=178914&view=diff
> >
> ==============================================================================
> > --- lld/trunk/lib/ReaderWriter/YAML/ReaderWriterYAML.cpp (original)
> > +++ lld/trunk/lib/ReaderWriter/YAML/ReaderWriterYAML.cpp Fri Apr 5
> 16:08:30 2013
> > @@ -1342,7 +1342,7 @@ class ReaderYAML : public Reader {
> > public:
> > ReaderYAML(const TargetInfo &ti) : Reader(ti) {}
> >
> > - error_code parseFile(std::unique_ptr<MemoryBuffer> &mb,
> > + error_code parseFile(std::unique_ptr<MemoryBuffer> mb,
> > std::vector<std::unique_ptr<File>> &result) const
> {
> > // Note: we do not take ownership of the MemoryBuffer. That is
> > // because yaml may produce multiple File objects, so there is no
> >
> >
> > _______________________________________________
> > llvm-commits mailing list
> > llvm-commits at cs.uiuc.edu
> > http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20130405/d5d93898/attachment.html>
More information about the llvm-commits
mailing list