Broadly, I'd like to rework this to be more generic.  We should have some 
mechanism in Support to get the max command line length.  The driver should 
have some mechanism for estimating if the command line will overflow that.  The 
Tool should query that, and if it is likely to overflow, go back and put parts 
of the command into filelists or generic response files.  If you really need to 
support a linker that only supports file lists, then we'll have to change the 
representation of the command line to be a list of strings that know if they 
are inputs or flags.  That seems OK.

================
Comment at: lib/Driver/Tools.cpp:180
@@ +179,3 @@
+  const char *CurrentFileListName;
+  std::ofstream CurrentFileList;
+  unsigned FileListSequence = 0;
----------------
Use llvm::raw_fd_ostream.  It has less moving parts.

================
Comment at: lib/Driver/Tools.cpp:213
@@ +212,3 @@
+        }
+        CurrentFileList << II.getFilename() << std::endl;
+      } else {
----------------
This won't be correct for many linkers if the filename contains whitespace.  I 
think we need to know what kind of linker we're calling out to in order to get 
this right.  It's easy for link.exe and gnu ld, since we know exactly how they 
quote and unquote arguments.  See the response file parsing code in 
llvm/lib/Support/CommandLine.cpp.

http://reviews.llvm.org/D4104



_______________________________________________
cfe-commits mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits

Reply via email to