Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 24 Nov 2009 21:06:41 +0000 (UTC)
From:      Roman Divacky <rdivacky@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-projects@freebsd.org
Subject:   svn commit: r199767 - in projects/clangbsd/contrib/llvm/tools/clang: include/clang/Driver lib/Driver
Message-ID:  <200911242106.nAOL6f3r029563@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: rdivacky
Date: Tue Nov 24 21:06:41 2009
New Revision: 199767
URL: http://svn.freebsd.org/changeset/base/199767

Log:
  Always link crt* stuff from /usr/lib/ or /usr/lib32
  depending on wheteher we are cross compiling or not.
  
  This reveales a problem wth lib32 build that I am going to fix.

Modified:
  projects/clangbsd/contrib/llvm/tools/clang/include/clang/Driver/ToolChain.h
  projects/clangbsd/contrib/llvm/tools/clang/lib/Driver/HostInfo.cpp
  projects/clangbsd/contrib/llvm/tools/clang/lib/Driver/ToolChains.cpp
  projects/clangbsd/contrib/llvm/tools/clang/lib/Driver/Tools.cpp

Modified: projects/clangbsd/contrib/llvm/tools/clang/include/clang/Driver/ToolChain.h
==============================================================================
--- projects/clangbsd/contrib/llvm/tools/clang/include/clang/Driver/ToolChain.h	Tue Nov 24 21:04:23 2009	(r199766)
+++ projects/clangbsd/contrib/llvm/tools/clang/include/clang/Driver/ToolChain.h	Tue Nov 24 21:06:41 2009	(r199767)
@@ -27,6 +27,7 @@ namespace driver {
 /// ToolChain - Access to tools for a single platform.
 class ToolChain {
 public:
+  bool Lib32;
   typedef llvm::SmallVector<std::string, 4> path_list;
 
 private:

Modified: projects/clangbsd/contrib/llvm/tools/clang/lib/Driver/HostInfo.cpp
==============================================================================
--- projects/clangbsd/contrib/llvm/tools/clang/lib/Driver/HostInfo.cpp	Tue Nov 24 21:04:23 2009	(r199766)
+++ projects/clangbsd/contrib/llvm/tools/clang/lib/Driver/HostInfo.cpp	Tue Nov 24 21:06:41 2009	(r199767)
@@ -379,6 +379,7 @@ ToolChain *FreeBSDHostInfo::CreateToolCh
     TCTriple.setArchName(ArchName);
 
     TC = new toolchains::FreeBSD(*this, TCTriple, Lib32);
+    TC->Lib32 = Lib32;
   }
 
   return TC;

Modified: projects/clangbsd/contrib/llvm/tools/clang/lib/Driver/ToolChains.cpp
==============================================================================
--- projects/clangbsd/contrib/llvm/tools/clang/lib/Driver/ToolChains.cpp	Tue Nov 24 21:04:23 2009	(r199766)
+++ projects/clangbsd/contrib/llvm/tools/clang/lib/Driver/ToolChains.cpp	Tue Nov 24 21:06:41 2009	(r199767)
@@ -651,10 +651,8 @@ Tool &OpenBSD::SelectTool(const Compilat
 FreeBSD::FreeBSD(const HostInfo &Host, const llvm::Triple& Triple, bool Lib32)
   : Generic_GCC(Host, Triple) {
   if (Lib32) {
-    getFilePaths().push_back(getHost().getDriver().Dir + "/../lib32");
     getFilePaths().push_back("/usr/lib32");
   } else {
-    getFilePaths().push_back(getHost().getDriver().Dir + "/../lib");
     getFilePaths().push_back("/usr/lib");
   }
 }

Modified: projects/clangbsd/contrib/llvm/tools/clang/lib/Driver/Tools.cpp
==============================================================================
--- projects/clangbsd/contrib/llvm/tools/clang/lib/Driver/Tools.cpp	Tue Nov 24 21:04:23 2009	(r199766)
+++ projects/clangbsd/contrib/llvm/tools/clang/lib/Driver/Tools.cpp	Tue Nov 24 21:06:41 2009	(r199767)
@@ -2543,6 +2543,7 @@ void freebsd::Link::ConstructJob(Compila
                                  const char *LinkingOutput) const {
   const Driver &D = getToolChain().getHost().getDriver();
   ArgStringList CmdArgs;
+  std::string LibPrefix("/usr/lib/");
 
   if (Args.hasArg(options::OPT_static)) {
     CmdArgs.push_back("-Bstatic");
@@ -2561,6 +2562,8 @@ void freebsd::Link::ConstructJob(Compila
   if (getToolChain().getArchName() == "i386") {
     CmdArgs.push_back("-m");
     CmdArgs.push_back("elf_i386_fbsd");
+    if (getToolChain().Lib32)
+      LibPrefix = "/usr/lib32/";
   }
 
   if (Output.isPipe()) {
@@ -2576,12 +2579,12 @@ void freebsd::Link::ConstructJob(Compila
   if (!Args.hasArg(options::OPT_nostdlib) &&
       !Args.hasArg(options::OPT_nostartfiles)) {
     if (!Args.hasArg(options::OPT_shared)) {
-      CmdArgs.push_back(Args.MakeArgString(getToolChain().GetFilePath(C, "crt1.o")));
-      CmdArgs.push_back(Args.MakeArgString(getToolChain().GetFilePath(C, "crti.o")));
-      CmdArgs.push_back(Args.MakeArgString(getToolChain().GetFilePath(C, "crtbegin.o")));
+      CmdArgs.push_back(Args.MakeArgString(getToolChain().GetFilePath(C, (LibPrefix + "crt1.o").c_str())));
+      CmdArgs.push_back(Args.MakeArgString(getToolChain().GetFilePath(C, (LibPrefix + "crti.o").c_str())));
+      CmdArgs.push_back(Args.MakeArgString(getToolChain().GetFilePath(C, (LibPrefix + "crtbegin.o").c_str())));
     } else {
-      CmdArgs.push_back(Args.MakeArgString(getToolChain().GetFilePath(C, "crti.o")));
-      CmdArgs.push_back(Args.MakeArgString(getToolChain().GetFilePath(C, "crtbeginS.o")));
+      CmdArgs.push_back(Args.MakeArgString(getToolChain().GetFilePath(C, (LibPrefix + "crti.o").c_str())));
+      CmdArgs.push_back(Args.MakeArgString(getToolChain().GetFilePath(C, (LibPrefix + "crtbeginS.o").c_str())));
     }
   }
 
@@ -2642,10 +2645,10 @@ void freebsd::Link::ConstructJob(Compila
   if (!Args.hasArg(options::OPT_nostdlib) &&
       !Args.hasArg(options::OPT_nostartfiles)) {
     if (!Args.hasArg(options::OPT_shared))
-      CmdArgs.push_back(Args.MakeArgString(getToolChain().GetFilePath(C, "crtend.o")));
+      CmdArgs.push_back(Args.MakeArgString(getToolChain().GetFilePath(C, (LibPrefix + "crtend.o").c_str())));
     else
-      CmdArgs.push_back(Args.MakeArgString(getToolChain().GetFilePath(C, "crtendS.o")));
-    CmdArgs.push_back(Args.MakeArgString(getToolChain().GetFilePath(C, "crtn.o")));
+      CmdArgs.push_back(Args.MakeArgString(getToolChain().GetFilePath(C, (LibPrefix + "crtendS.o").c_str())));
+    CmdArgs.push_back(Args.MakeArgString(getToolChain().GetFilePath(C, (LibPrefix + "crtn.o").c_str())));
   }
 
   const char *Exec =



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200911242106.nAOL6f3r029563>