[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