Allow the user to set the LLVMINTERP environment variable as a workaround, for
authorBrian Gaeke <gaeke@uiuc.edu>
Fri, 7 May 2004 21:47:36 +0000 (21:47 +0000)
committerBrian Gaeke <gaeke@uiuc.edu>
Fri, 7 May 2004 21:47:36 +0000 (21:47 +0000)
when they have to run a gccld shell script without having lli in their path.
This is intended to address Bug 289.

Also, emit the traditional syntax ${1+"$@"} for passing all of a shell script's
args to a subprocess. If you have arguments that have spaces in them, $* will
not preserve the quoting (i.e., the quoted string "foo bar" as an argument will
end up as two arguments "foo" "bar" to lli.)

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@13414 91177308-0d34-0410-b5e6-96231b3b80d8

tools/gccld/gccld.cpp

index 389a6b13da4161058034d7589e4ba4a55b894ab9..eee34dbe68172f1271dbf8e518315a6867110868 100644 (file)
@@ -309,7 +309,10 @@ int main(int argc, char **argv, char **envp) {
       if (!Out2.good())
         return PrintAndReturn(argv[0], "error opening '" + OutputFilename +
                                        "' for writing!");
-      Out2 << "#!/bin/sh\nlli \\\n";
+      Out2 << "#!/bin/sh\n";
+      // Allow user to setenv LLVMINTERP if lli is not in their PATH.
+      Out2 << "lli=${LLVMINTERP-lli}\n";
+      Out2 << "exec $lli \\\n";
       // gcc accepts -l<lib> and implicitly searches /lib and /usr/lib.
       LibPaths.push_back("/lib");
       LibPaths.push_back("/usr/lib");
@@ -327,7 +330,7 @@ int main(int argc, char **argv, char **envp) {
         if (!FullLibraryPath.empty() && IsSharedObject(FullLibraryPath))
           Out2 << "    -load=" << FullLibraryPath << " \\\n";
       }
-      Out2 << "    $0.bc $*\n";
+      Out2 << "    $0.bc ${1+\"$@\"}\n";
       Out2.close();
     }