diff options
author | Joerg Sonnenberger <joerg@bec.de> | 2013-09-07 17:55:28 +0000 |
---|---|---|
committer | Joerg Sonnenberger <joerg@bec.de> | 2013-09-07 17:55:28 +0000 |
commit | 5e235de9d3a0b06990ef81da9f7dae65dd56bbd9 (patch) | |
tree | 17548fc6f0684ee8e0b85eaaa3b5fdbcd05cbba6 /lld/lib/ReaderWriter/ReaderLinkerScript.cpp | |
parent | 002c2a8ecee8535ff46798138a170cd9df9fa824 (diff) | |
download | bcm5719-llvm-5e235de9d3a0b06990ef81da9f7dae65dd56bbd9.tar.gz bcm5719-llvm-5e235de9d3a0b06990ef81da9f7dae65dd56bbd9.zip |
Change the parseFile argument from MemoryBuffer pointer to LinkerInput
reference. Move readFile logic into FileNode::createLinkerInput.
llvm-svn: 190253
Diffstat (limited to 'lld/lib/ReaderWriter/ReaderLinkerScript.cpp')
-rw-r--r-- | lld/lib/ReaderWriter/ReaderLinkerScript.cpp | 21 |
1 files changed, 13 insertions, 8 deletions
diff --git a/lld/lib/ReaderWriter/ReaderLinkerScript.cpp b/lld/lib/ReaderWriter/ReaderLinkerScript.cpp index e7f1ad98fdf..bcfb7c94b3b 100644 --- a/lld/lib/ReaderWriter/ReaderLinkerScript.cpp +++ b/lld/lib/ReaderWriter/ReaderLinkerScript.cpp @@ -19,7 +19,7 @@ using namespace script; namespace { class LinkerScriptFile : public File { public: - static ErrorOr<std::unique_ptr<LinkerScriptFile>> + static ErrorOr<std::unique_ptr<LinkerScriptFile> > create(const LinkingContext &context, std::unique_ptr<llvm::MemoryBuffer> mb) { std::unique_ptr<LinkerScriptFile> file( @@ -56,9 +56,7 @@ public: return _absoluteAtoms; } - const LinkerScript *getScript() { - return _script; - } + const LinkerScript *getScript() { return _script; } private: LinkerScriptFile(const LinkingContext &context, @@ -79,9 +77,8 @@ private: namespace lld { error_code ReaderLinkerScript::parseFile( - std::unique_ptr<llvm::MemoryBuffer> &mb, - std::vector<std::unique_ptr<File>> &result) const { - auto lsf = LinkerScriptFile::create(_context, std::move(mb)); + LinkerInput &input, std::vector<std::unique_ptr<File> > &result) const { + auto lsf = LinkerScriptFile::create(_context, input.takeBuffer()); if (!lsf) return lsf; const LinkerScript *ls = (*lsf)->getScript(); @@ -89,7 +86,15 @@ error_code ReaderLinkerScript::parseFile( for (const auto &c : ls->_commands) { if (auto group = dyn_cast<lld::script::Group>(c)) for (const auto &path : group->getPaths()) { - if (error_code ec = _context.readFile(path._path, result)) + OwningPtr<llvm::MemoryBuffer> opmb; + if (error_code ec = + llvm::MemoryBuffer::getFileOrSTDIN(path._path, opmb)) + return ec; + + LinkerInput newInput(std::unique_ptr<llvm::MemoryBuffer>(opmb.take()), + input); + + if (error_code ec = _context.parseFile(newInput, result)) return ec; } } |