Hi!

This patch addresses PR 15171 by checking if we're constructing a
too-long argument list for the linker and writing it to a response file
if the linker supports it.  A test case is included that should test the
newly-added behavior on at least some Windows checkouts (depending on
where the checkout lives on disk).  It doesn't appear that there's any
tests that clang parses a response file, so this test takes care of that
too.

Tested on linux x86-64.

-Nathan
diff --git a/lib/Driver/Tools.cpp b/lib/Driver/Tools.cpp
index 2cb9d6f..20f802f 100644
--- a/lib/Driver/Tools.cpp
+++ b/lib/Driver/Tools.cpp
@@ -32,6 +32,7 @@
 #include "llvm/Support/Format.h"
 #include "llvm/Support/Host.h"
 #include "llvm/Support/Process.h"
+#include "llvm/Support/Program.h"
 #include "llvm/Support/raw_ostream.h"
 
 using namespace clang::driver;
@@ -187,6 +188,57 @@ static void AddLinkerInputs(const ToolChain &TC,
   addDirectoryList(Args, CmdArgs, "-L", "LIBRARY_PATH");
 }
 
+// Write the strings in CmdArgs to a temporary file.  If successful,
+// return a non-empty string containing the name of the temporary file.
+// Otherwise, return the empty string.
+static std::string WriteResponseFile(const Driver &D,
+                                     const ArgStringList &CmdArgs)
+{
+  std::string TmpPath = D.GetTemporaryPath("response-file", ".tmp");
+  llvm::sys::Path P(TmpPath);
+  std::string ErrorInfo;
+  llvm::raw_fd_ostream OS(TmpPath.c_str(), ErrorInfo,
+                          llvm::raw_fd_ostream::F_Binary);
+  if (!ErrorInfo.empty()) {
+    return "";
+  }
+
+  for (ArgStringList::const_iterator it = CmdArgs.begin(), ie = CmdArgs.end();
+       it != ie; ++it) {
+    OS << *it << '\n';
+  }
+  OS.close();
+  if (OS.has_error()) {
+    P.eraseFromDisk();
+    return "";
+  }
+
+  return TmpPath;
+}
+
+static void AddLinkerJob(Compilation &C, const JobAction &JA,
+                         const Tool &T, const ArgList &Args,
+                         const ArgStringList &CmdArgs,
+                         const char *LinkerProgramName,
+                         bool SupportsResponseFiles)
+{
+  const ToolChain &TC = T.getToolChain();
+  const char *Exec = Args.MakeArgString(TC.GetProgramPath(LinkerProgramName));
+  if (SupportsResponseFiles) {
+    if (!llvm::sys::argumentsFitWithinSystemLimits(CmdArgs)) {
+      std::string ResponseFile = WriteResponseFile(TC.getDriver(), CmdArgs);
+      if (!ResponseFile.empty()) {
+        ArgStringList AlternateArgs;
+        std::string FileArg = "@" + ResponseFile;
+        AlternateArgs.push_back(Args.MakeArgString(FileArg.c_str()));
+        C.addCommand(new Command(JA, T, Exec, AlternateArgs));
+        return;
+      }
+    }
+  }
+  C.addCommand(new Command(JA, T, Exec, CmdArgs));
+}
+
 /// \brief Determine whether Objective-C automated reference counting is
 /// enabled.
 static bool isObjCAutoRefCount(const ArgList &Args) {
@@ -4089,11 +4141,7 @@ void hexagon::Link::ConstructJob(Compilation &C, const JobAction &JA,
     CmdArgs.push_back(Args.MakeArgString(StartFilesDir + finiObj));
   }
 
-  std::string Linker = ToolChain.GetProgramPath("hexagon-ld");
-  C.addCommand(
-    new Command(
-      JA, *this,
-      Args.MakeArgString(Linker), CmdArgs));
+  AddLinkerJob(C, JA, *this, Args, CmdArgs, "hexagon-ld", false);
 }
 // Hexagon tools end.
 
@@ -4661,9 +4709,7 @@ void darwin::Link::ConstructJob(Compilation &C, const JobAction &JA,
   Args.AddAllArgs(CmdArgs, options::OPT_T_Group);
   Args.AddAllArgs(CmdArgs, options::OPT_F);
 
-  const char *Exec =
-    Args.MakeArgString(getToolChain().GetProgramPath("ld"));
-  C.addCommand(new Command(JA, *this, Exec, CmdArgs));
+  AddLinkerJob(C, JA, *this, Args, CmdArgs, "ld", true);
 }
 
 void darwin::Lipo::ConstructJob(Compilation &C, const JobAction &JA,
@@ -4858,10 +4904,7 @@ void solaris::Link::ConstructJob(Compilation &C, const JobAction &JA,
   CmdArgs.push_back(Args.MakeArgString(LibPath + "crtn.o"));
 
   addProfileRT(getToolChain(), Args, CmdArgs, getToolChain().getTriple());
-
-  const char *Exec =
-    Args.MakeArgString(getToolChain().GetProgramPath("ld"));
-  C.addCommand(new Command(JA, *this, Exec, CmdArgs));
+  AddLinkerJob(C, JA, *this, Args, CmdArgs, "ld", false);
 }
 
 void auroraux::Assemble::ConstructJob(Compilation &C, const JobAction &JA,
@@ -4970,10 +5013,7 @@ void auroraux::Link::ConstructJob(Compilation &C, const JobAction &JA,
   }
 
   addProfileRT(getToolChain(), Args, CmdArgs, getToolChain().getTriple());
-
-  const char *Exec =
-    Args.MakeArgString(getToolChain().GetProgramPath("ld"));
-  C.addCommand(new Command(JA, *this, Exec, CmdArgs));
+  AddLinkerJob(C, JA, *this, Args, CmdArgs, "ld", false);
 }
 
 void openbsd::Assemble::ConstructJob(Compilation &C, const JobAction &JA,
@@ -5119,9 +5159,7 @@ void openbsd::Link::ConstructJob(Compilation &C, const JobAction &JA,
                               getToolChain().GetFilePath("crtendS.o")));
   }
 
-  const char *Exec =
-    Args.MakeArgString(getToolChain().GetProgramPath("ld"));
-  C.addCommand(new Command(JA, *this, Exec, CmdArgs));
+  AddLinkerJob(C, JA, *this, Args, CmdArgs, "ld", true);
 }
 
 void bitrig::Assemble::ConstructJob(Compilation &C, const JobAction &JA,
@@ -5261,9 +5299,7 @@ void bitrig::Link::ConstructJob(Compilation &C, const JobAction &JA,
                               getToolChain().GetFilePath("crtendS.o")));
   }
 
-  const char *Exec =
-    Args.MakeArgString(getToolChain().GetProgramPath("ld"));
-  C.addCommand(new Command(JA, *this, Exec, CmdArgs));
+  AddLinkerJob(C, JA, *this, Args, CmdArgs, "ld", false);
 }
 
 void freebsd::Assemble::ConstructJob(Compilation &C, const JobAction &JA,
@@ -5511,10 +5547,7 @@ void freebsd::Link::ConstructJob(Compilation &C, const JobAction &JA,
   }
 
   addProfileRT(ToolChain, Args, CmdArgs, ToolChain.getTriple());
-
-  const char *Exec =
-    Args.MakeArgString(ToolChain.GetProgramPath("ld"));
-  C.addCommand(new Command(JA, *this, Exec, CmdArgs));
+  AddLinkerJob(C, JA, *this, Args, CmdArgs, "ld", true);
 }
 
 void netbsd::Assemble::ConstructJob(Compilation &C, const JobAction &JA,
@@ -5661,9 +5694,7 @@ void netbsd::Link::ConstructJob(Compilation &C, const JobAction &JA,
   }
 
   addProfileRT(getToolChain(), Args, CmdArgs, getToolChain().getTriple());
-
-  const char *Exec = Args.MakeArgString(getToolChain().GetProgramPath("ld"));
-  C.addCommand(new Command(JA, *this, Exec, CmdArgs));
+  AddLinkerJob(C, JA, *this, Args, CmdArgs, "ld", true);
 }
 
 void gnutools::Assemble::ConstructJob(Compilation &C, const JobAction &JA,
@@ -6057,8 +6088,7 @@ void gnutools::Link::ConstructJob(Compilation &C, const JobAction &JA,
   }
 
   addProfileRT(getToolChain(), Args, CmdArgs, getToolChain().getTriple());
-
-  C.addCommand(new Command(JA, *this, ToolChain.Linker.c_str(), CmdArgs));
+  AddLinkerJob(C, JA, *this, Args, CmdArgs, "ld", true);
 }
 
 void minix::Assemble::ConstructJob(Compilation &C, const JobAction &JA,
@@ -6135,8 +6165,7 @@ void minix::Link::ConstructJob(Compilation &C, const JobAction &JA,
          Args.MakeArgString(getToolChain().GetFilePath("crtend.o")));
   }
 
-  const char *Exec = Args.MakeArgString(getToolChain().GetProgramPath("ld"));
-  C.addCommand(new Command(JA, *this, Exec, CmdArgs));
+  AddLinkerJob(C, JA, *this, Args, CmdArgs, "ld", false);
 }
 
 /// DragonFly Tools
@@ -6317,10 +6346,7 @@ void dragonfly::Link::ConstructJob(Compilation &C, const JobAction &JA,
   }
 
   addProfileRT(getToolChain(), Args, CmdArgs, getToolChain().getTriple());
-
-  const char *Exec =
-    Args.MakeArgString(getToolChain().GetProgramPath("ld"));
-  C.addCommand(new Command(JA, *this, Exec, CmdArgs));
+  AddLinkerJob(C, JA, *this, Args, CmdArgs, "ld", true);
 }
 
 void visualstudio::Link::ConstructJob(Compilation &C, const JobAction &JA,
@@ -6353,7 +6379,5 @@ void visualstudio::Link::ConstructJob(Compilation &C, const JobAction &JA,
       CmdArgs.push_back(it->getFilename());
   }
 
-  const char *Exec =
-    Args.MakeArgString(getToolChain().GetProgramPath("link.exe"));
-  C.addCommand(new Command(JA, *this, Exec, CmdArgs));
+  AddLinkerJob(C, JA, *this, Args, CmdArgs, "link.exe", true);
 }
diff --git a/test/Driver/at-file-and-linker-test.cpp b/test/Driver/at-file-and-linker-test.cpp
new file mode 100644
index 0000000..76373e7
--- /dev/null
+++ b/test/Driver/at-file-and-linker-test.cpp
@@ -0,0 +1,1041 @@
+// RUN: %clang -E -P -DOBJ_FILE_NAME="%twith_a_suffix" %s > %t2
+// RUN: %clang -c -o %twith_a_suffix %s
+// RUN: %clang -DMAIN -c -o %t4 %s
+// RUN: %clang @%t2 %t4 -o %t3
+
+#if defined(OBJ_FILE_NAME)
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+OBJ_FILE_NAME
+#elif defined(MAIN)
+int main()
+{
+  return 0;
+}
+#endif
_______________________________________________
cfe-commits mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits

Reply via email to