This is caused by a recent modification in libc6-dev (source eglibc),
presumably for multi-arch support. Attached patch teaches Clang to
search these directories. However, I suspect that it will break sooner
or later again when one does "cross-compiling" with -m64 or -m32 on i386
and amd64, respectively, because the "foreign" crt*.o files haven't been
moved yet. Don't know whether they ever will be moved, though, but logic
and some hunch tells me so...

Michael
diff -Nru clang-2.9/debian/changelog clang-2.9/debian/changelog
--- clang-2.9/debian/changelog	2011-06-06 09:55:44.000000000 +0000
+++ clang-2.9/debian/changelog	2011-06-08 07:57:58.000000000 +0000
@@ -1,3 +1,11 @@
+clang (2.9-2+nmu1) unstable; urgency=low
+
+  * Non-maintainer upload.
+  * debian/patches/11-searchMultiArchLibDir.patch: Adds the multi-arch library
+    directory to the file search path (Closes: #629594)
+
+ -- Michael Wild <them...@users.sourceforge.net>  Wed, 08 Jun 2011 09:54:43 +0200
+
 clang (2.9-2) unstable; urgency=low
 
   [ Michael Wild ]
diff -Nru clang-2.9/debian/patches/11-searchMultiArchLibDir.patch clang-2.9/debian/patches/11-searchMultiArchLibDir.patch
--- clang-2.9/debian/patches/11-searchMultiArchLibDir.patch	1970-01-01 00:00:00.000000000 +0000
+++ clang-2.9/debian/patches/11-searchMultiArchLibDir.patch	2011-06-08 08:14:24.000000000 +0000
@@ -0,0 +1,30 @@
+---
+ ToolChains.cpp |    8 ++++++++
+ 1 file changed, 8 insertions(+)
+
+Description: Add the multi-arch lib directory to the file search path
+ Otherwise Clang is not able to find crt*.o.
+
+Author: Michael Wild <them...@users.sourceforge.net>
+Bug: http://llvm.org/bugs/show_bug.cgi?id=10100
+Bug-Debian: http://bugs.debian.org/629594
+Forwarded: http://llvm.org/bugs/attachment.cgi?id=6711
+Last-Update: 2011-06-08
+
+--- clang-2.9.orig/tools/clang/lib/Driver/ToolChains.cpp
++++ clang-2.9/tools/clang/lib/Driver/ToolChains.cpp
+@@ -1531,6 +1531,14 @@ Linux::Linux(const HostInfo &Host, const
+   Paths.push_back(Base + "/../../..");
+   if (Arch == getArch() && IsUbuntu(Distro))
+     Paths.push_back("/usr/lib/" + GccTriple);
++  if (Distro == DebianWheezy && Arch == getArch())
++  {
++    if (!llvm::sys::fs::exists("/usr/lib/" + GccTriple + "/crt1.o", Exists) && Exists)
++      Paths.push_back("/usr/lib/" + GccTriple);
++    else if (Is32Bits &&
++        !llvm::sys::fs::exists("/usr/lib/i386-linux-gnu/crt1.o", Exists) && Exists)
++      Paths.push_back("/usr/lib/i386-linux-gnu");
++  }
+ }
+ 
+ bool Linux::HasNativeLLVMSupport() const {

Reply via email to