Hi all,
the attached patch changes the driver to look for "x86_64--netbsd-ld"
and "x86_64--netbsd-as" when compiling for x86_64--netbsd as target
triple. If they can't be found, it falls back to the normal "ld" and
"as" lookup. This simplifies the cross compiling setup quite a bit.
What other platforms are interested in this behavior?

Joerg
Index: lib/Driver/Tools.cpp
===================================================================
--- lib/Driver/Tools.cpp	(revision 127752)
+++ lib/Driver/Tools.cpp	(working copy)
@@ -37,6 +37,17 @@
 using namespace clang::driver;
 using namespace clang::driver::tools;
 
+/// FindTargetProgram - Return path of the target specific version of
+/// ProgName.  If it doesn't exist, return path of ProgName itself.
+static std::string FindTargetProgram(const ToolChain &TheToolChain,
+                                     const char *ProgName) {
+  std::string Executable(TheToolChain.getTripleString() + "-" + ProgName);
+  std::string Path(TheToolChain.GetProgramPath(Executable.c_str()));
+  if (Path != Executable)
+    return Path;
+  return TheToolChain.GetProgramPath(ProgName);
+}
+
 /// CheckPreprocessingOptions - Perform some validation of preprocessing
 /// arguments that is shared with gcc.
 static void CheckPreprocessingOptions(const Driver &D, const ArgList &Args) {
@@ -3404,8 +3415,8 @@
     CmdArgs.push_back(II.getFilename());
   }
 
-  const char *Exec =
-    Args.MakeArgString(getToolChain().GetProgramPath("as"));
+  const char *Exec = Args.MakeArgString(FindTargetProgram(getToolChain(),
+                                                          "as"));
   C.addCommand(new Command(JA, *this, Exec, CmdArgs));
 }
 
@@ -3515,8 +3526,8 @@
                                                                     "crtn.o")));
   }
 
-  const char *Exec =
-    Args.MakeArgString(getToolChain().GetProgramPath("ld"));
+  const char *Exec = Args.MakeArgString(FindTargetProgram(getToolChain(),
+                                                          "ld"));
   C.addCommand(new Command(JA, *this, Exec, CmdArgs));
 }
 
_______________________________________________
cfe-commits mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits

Reply via email to