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