[lld] r192311 - Do not process .objtxt file twice.
Rui Ueyama
ruiu at google.com
Wed Oct 9 11:14:23 PDT 2013
Author: ruiu
Date: Wed Oct 9 13:14:23 2013
New Revision: 192311
URL: http://llvm.org/viewvc/llvm-project?rev=192311&view=rev
Log:
Do not process .objtxt file twice.
A file with .objtxt extension is parsed in readFile(), but because we did not
propagate that information to the calling side, calling side would try to parse
it again. This patch will fix the issue by adding an extra parameter to
readFile().
Modified:
lld/trunk/include/lld/Driver/DarwinInputGraph.h
lld/trunk/include/lld/Driver/GnuLdInputGraph.h
lld/trunk/include/lld/Driver/InputGraph.h
lld/trunk/include/lld/Driver/WinLinkInputGraph.h
lld/trunk/lib/Driver/InputGraph.cpp
Modified: lld/trunk/include/lld/Driver/DarwinInputGraph.h
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/include/lld/Driver/DarwinInputGraph.h?rev=192311&r1=192310&r2=192311&view=diff
==============================================================================
--- lld/trunk/include/lld/Driver/DarwinInputGraph.h (original)
+++ lld/trunk/include/lld/Driver/DarwinInputGraph.h Wed Oct 9 13:14:23 2013
@@ -42,7 +42,9 @@ public:
/// \brief Parse the input file to lld::File.
llvm::error_code parse(const LinkingContext &ctx, raw_ostream &diagnostics) {
- if (error_code ec = readFile(ctx, diagnostics))
+ // Read the file to _buffer.
+ bool isYaml = false;
+ if (error_code ec = readFile(ctx, diagnostics, isYaml))
return ec;
(void) (_isWholeArchive);
return llvm::error_code::success();
Modified: lld/trunk/include/lld/Driver/GnuLdInputGraph.h
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/include/lld/Driver/GnuLdInputGraph.h?rev=192311&r1=192310&r2=192311&view=diff
==============================================================================
--- lld/trunk/include/lld/Driver/GnuLdInputGraph.h (original)
+++ lld/trunk/include/lld/Driver/GnuLdInputGraph.h Wed Oct 9 13:14:23 2013
@@ -73,8 +73,11 @@ public:
/// \brief Parse the input file to lld::File.
llvm::error_code parse(const LinkingContext &ctx, raw_ostream &diagnostics) {
// Read the file to _buffer.
- if (error_code ec = readFile(ctx, diagnostics))
+ bool isYaml = false;
+ if (error_code ec = readFile(ctx, diagnostics, isYaml))
return ec;
+ if (isYaml)
+ return error_code::success();
// Identify File type
llvm::sys::fs::file_magic FileType =
Modified: lld/trunk/include/lld/Driver/InputGraph.h
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/include/lld/Driver/InputGraph.h?rev=192311&r1=192310&r2=192311&view=diff
==============================================================================
--- lld/trunk/include/lld/Driver/InputGraph.h (original)
+++ lld/trunk/include/lld/Driver/InputGraph.h Wed Oct 9 13:14:23 2013
@@ -309,7 +309,8 @@ public:
protected:
/// \brief Read the file into _buffer.
- error_code readFile(const LinkingContext &ctx, raw_ostream &diagnostics);
+ error_code readFile(const LinkingContext &ctx, raw_ostream &diagnostics,
+ bool &isYaml);
StringRef _path; // The path of the Input file
InputGraph::FileVectorT _files; // A vector of lld File objects
Modified: lld/trunk/include/lld/Driver/WinLinkInputGraph.h
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/include/lld/Driver/WinLinkInputGraph.h?rev=192311&r1=192310&r2=192311&view=diff
==============================================================================
--- lld/trunk/include/lld/Driver/WinLinkInputGraph.h (original)
+++ lld/trunk/include/lld/Driver/WinLinkInputGraph.h Wed Oct 9 13:14:23 2013
@@ -40,8 +40,11 @@ public:
/// \brief Parse the input file to lld::File.
error_code parse(const LinkingContext &ctx, raw_ostream &diagnostics) {
// Read the file to _buffer.
- if (error_code ec = readFile(ctx, diagnostics))
+ bool isYaml = false;
+ if (error_code ec = readFile(ctx, diagnostics, isYaml))
return ec;
+ if (isYaml)
+ return error_code::success();
llvm::sys::fs::file_magic FileType =
llvm::sys::fs::identify_magic(_buffer->getBuffer());
Modified: lld/trunk/lib/Driver/InputGraph.cpp
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/lib/Driver/InputGraph.cpp?rev=192311&r1=192310&r2=192311&view=diff
==============================================================================
--- lld/trunk/lib/Driver/InputGraph.cpp (original)
+++ lld/trunk/lib/Driver/InputGraph.cpp Wed Oct 9 13:14:23 2013
@@ -99,7 +99,8 @@ FileNode::FileNode(StringRef path, int64
/// \brief Read the file into _buffer.
error_code
-FileNode::readFile(const LinkingContext &ctx, raw_ostream &diagnostics) {
+FileNode::readFile(const LinkingContext &ctx, raw_ostream &diagnostics,
+ bool &isYaml) {
ErrorOr<StringRef> filePath = getPath(ctx);
if (!filePath &&
error_code(filePath) == llvm::errc::no_such_file_or_directory)
@@ -119,9 +120,11 @@ FileNode::readFile(const LinkingContext
// YAML file is identified by a .objtxt extension
// FIXME : Identify YAML files by using a magic
- if (filePath->endswith(".objtxt"))
+ if (filePath->endswith(".objtxt")) {
if (error_code ec = ctx.getYAMLReader().parseFile(_buffer, _files))
return ec;
+ isYaml = true;
+ }
return error_code::success();
}
More information about the llvm-commits
mailing list