summaryrefslogtreecommitdiffstats
path: root/lld/lib/ReaderWriter/ReaderLinkerScript.cpp
diff options
context:
space:
mode:
authorJoerg Sonnenberger <joerg@bec.de>2013-09-07 17:55:28 +0000
committerJoerg Sonnenberger <joerg@bec.de>2013-09-07 17:55:28 +0000
commit5e235de9d3a0b06990ef81da9f7dae65dd56bbd9 (patch)
tree17548fc6f0684ee8e0b85eaaa3b5fdbcd05cbba6 /lld/lib/ReaderWriter/ReaderLinkerScript.cpp
parent002c2a8ecee8535ff46798138a170cd9df9fa824 (diff)
downloadbcm5719-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.cpp21
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;
}
}
OpenPOWER on IntegriCloud