<div class="gmail_extra"><div class="gmail_quote">On Thu, Apr 26, 2012 at 12:57 PM, Simon Atanasyan <span dir="ltr"><<a href="mailto:satanasyan@mips.com" target="_blank">satanasyan@mips.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Author: atanasyan<br>
Date: Thu Apr 26 14:57:02 2012<br>
New Revision: 155656<br>
<br>
URL: <a href="http://llvm.org/viewvc/llvm-project?rev=155656&view=rev" target="_blank">http://llvm.org/viewvc/llvm-project?rev=155656&view=rev</a><br>
Log:<br>
MIPS: Add support for 64-bit MIPS targets: mips64 / mips64el.<br></blockquote><div><br></div><div>Very cool!</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

<br>
Modified:<br>
    cfe/trunk/lib/Driver/ToolChains.cpp<br>
    cfe/trunk/test/Driver/linux-ld.c<br>
<br>
Modified: cfe/trunk/lib/Driver/ToolChains.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/ToolChains.cpp?rev=155656&r1=155655&r2=155656&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/ToolChains.cpp?rev=155656&r1=155655&r2=155656&view=diff</a><br>

==============================================================================<br>
--- cfe/trunk/lib/Driver/ToolChains.cpp (original)<br>
+++ cfe/trunk/lib/Driver/ToolChains.cpp Thu Apr 26 14:57:02 2012<br>
@@ -1218,6 +1218,11 @@<br>
   static const char *const MIPSELLibDirs[] = { "/lib" };<br>
   static const char *const MIPSELTriples[] = { "mipsel-linux-gnu" };<br>
<br>
+  static const char *const MIPS64LibDirs[] = { "/lib64", "/lib" };<br>
+  static const char *const MIPS64Triples[] = { "mips64-linux-gnu" };<br>
+  static const char *const MIPS64ELLibDirs[] = { "/lib64", "/lib" };<br>
+  static const char *const MIPS64ELTriples[] = { "mips64el-linux-gnu" };<br>
+<br>
   static const char *const PPCLibDirs[] = { "/lib32", "/lib" };<br>
   static const char *const PPCTriples[] = {<br>
     "powerpc-linux-gnu",<br>
@@ -1263,12 +1268,40 @@<br>
       MIPSLibDirs, MIPSLibDirs + llvm::array_lengthof(MIPSLibDirs));<br>
     TripleAliases.append(<br>
       MIPSTriples, MIPSTriples + llvm::array_lengthof(MIPSTriples));<br>
+    MultiarchLibDirs.append(<br>
+      MIPS64LibDirs, MIPS64LibDirs + llvm::array_lengthof(MIPS64LibDirs));<br>
+    MultiarchTripleAliases.append(<br>
+      MIPS64Triples, MIPS64Triples + llvm::array_lengthof(MIPS64Triples));<br>
     break;<br>
   case llvm::Triple::mipsel:<br>
     LibDirs.append(<br>
       MIPSELLibDirs, MIPSELLibDirs + llvm::array_lengthof(MIPSELLibDirs));<br>
     TripleAliases.append(<br>
       MIPSELTriples, MIPSELTriples + llvm::array_lengthof(MIPSELTriples));<br>
+    MultiarchLibDirs.append(<br>
+      MIPS64ELLibDirs, MIPS64ELLibDirs + llvm::array_lengthof(MIPS64ELLibDirs));<br>
+    MultiarchTripleAliases.append(<br>
+      MIPS64ELTriples, MIPS64ELTriples + llvm::array_lengthof(MIPS64ELTriples));<br>
+    break;<br>
+  case llvm::Triple::mips64:<br>
+    LibDirs.append(<br>
+      MIPS64LibDirs, MIPS64LibDirs + llvm::array_lengthof(MIPS64LibDirs));<br>
+    TripleAliases.append(<br>
+      MIPS64Triples, MIPS64Triples + llvm::array_lengthof(MIPS64Triples));<br>
+    MultiarchLibDirs.append(<br>
+      MIPSLibDirs, MIPSLibDirs + llvm::array_lengthof(MIPSLibDirs));<br>
+    MultiarchTripleAliases.append(<br>
+      MIPSTriples, MIPSTriples + llvm::array_lengthof(MIPSTriples));<br>
+    break;<br>
+  case llvm::Triple::mips64el:<br>
+    LibDirs.append(<br>
+      MIPS64ELLibDirs, MIPS64ELLibDirs + llvm::array_lengthof(MIPS64ELLibDirs));<br>
+    TripleAliases.append(<br>
+      MIPS64ELTriples, MIPS64ELTriples + llvm::array_lengthof(MIPS64ELTriples));<br>
+    MultiarchLibDirs.append(<br>
+      MIPSELLibDirs, MIPSELLibDirs + llvm::array_lengthof(MIPSELLibDirs));<br>
+    MultiarchTripleAliases.append(<br>
+      MIPSELTriples, MIPSELTriples + llvm::array_lengthof(MIPSELTriples));<br>
     break;<br>
   case llvm::Triple::ppc:<br>
     LibDirs.append(PPCLibDirs, PPCLibDirs + llvm::array_lengthof(PPCLibDirs));<br>
@@ -1350,7 +1383,9 @@<br>
       // crtbegin.o without the subdirectory.<br>
       StringRef MultiarchSuffix<br>
         = (TargetArch == llvm::Triple::x86_64 ||<br>
-           TargetArch == llvm::Triple::ppc64) ? "/64" : "/32";<br>
+           TargetArch == llvm::Triple::ppc64 ||<br>
+           TargetArch == llvm::Triple::mips64 ||<br>
+           TargetArch == llvm::Triple::mips64el) ? "/64" : "/32";<br>
       if (llvm::sys::fs::exists(LI->path() + MultiarchSuffix + "/crtbegin.o")) {<br>
         GCCMultiarchSuffix = MultiarchSuffix.str();<br>
       } else {<br>
<br>
Modified: cfe/trunk/test/Driver/linux-ld.c<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/linux-ld.c?rev=155656&r1=155655&r2=155656&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/linux-ld.c?rev=155656&r1=155655&r2=155656&view=diff</a><br>

==============================================================================<br>
--- cfe/trunk/test/Driver/linux-ld.c (original)<br>
+++ cfe/trunk/test/Driver/linux-ld.c Thu Apr 26 14:57:02 2012<br>
@@ -291,6 +291,28 @@<br>
 // CHECK-DEBIAN-MIPSEL: "-L[[SYSROOT]]/usr/lib/gcc/mipsel-linux-gnu/4.5/../../.."<br>
 // CHECK-DEBIAN-MIPSEL: "-L[[SYSROOT]]/lib"<br>
 // CHECK-DEBIAN-MIPSEL: "-L[[SYSROOT]]/usr/lib"<br>
+// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \<br>
+// RUN:     -target mips64-linux-gnu \<br>
+// RUN:     --sysroot=%S/Inputs/debian_multiarch_tree \<br>
+// RUN:   | FileCheck --check-prefix=CHECK-DEBIAN-MIPS64 %s<br>
+// CHECK-DEBIAN-MIPS64: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"<br>
+// CHECK-DEBIAN-MIPS64: "{{.*}}/usr/lib/gcc/mips-linux-gnu/4.5/64/crtbegin.o"<br>
+// CHECK-DEBIAN-MIPS64: "-L[[SYSROOT]]/usr/lib/gcc/mips-linux-gnu/4.5/64"<br>
+// CHECK-DEBIAN-MIPS64: "-L[[SYSROOT]]/usr/lib/gcc/mips-linux-gnu/4.5"<br>
+// CHECK-DEBIAN-MIPS64: "-L[[SYSROOT]]/usr/lib/gcc/mips-linux-gnu/4.5/../../.."<br>
+// CHECK-DEBIAN-MIPS64: "-L[[SYSROOT]]/lib"<br>
+// CHECK-DEBIAN-MIPS64: "-L[[SYSROOT]]/usr/lib"<br>
+// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \<br>
+// RUN:     -target mips64el-linux-gnu \<br>
+// RUN:     --sysroot=%S/Inputs/debian_multiarch_tree \<br>
+// RUN:   | FileCheck --check-prefix=CHECK-DEBIAN-MIPS64EL %s<br>
+// CHECK-DEBIAN-MIPS64EL: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"<br>
+// CHECK-DEBIAN-MIPS64EL: "{{.*}}/usr/lib/gcc/mipsel-linux-gnu/4.5/64/crtbegin.o"<br>
+// CHECK-DEBIAN-MIPS64EL: "-L[[SYSROOT]]/usr/lib/gcc/mipsel-linux-gnu/4.5/64"<br>
+// CHECK-DEBIAN-MIPS64EL: "-L[[SYSROOT]]/usr/lib/gcc/mipsel-linux-gnu/4.5"<br>
+// CHECK-DEBIAN-MIPS64EL: "-L[[SYSROOT]]/usr/lib/gcc/mipsel-linux-gnu/4.5/../../.."<br>
+// CHECK-DEBIAN-MIPS64EL: "-L[[SYSROOT]]/lib"<br>
+// CHECK-DEBIAN-MIPS64EL: "-L[[SYSROOT]]/usr/lib"</blockquote><div><br></div><div>Please add a multilib tree and test against that as well. </div></div></div>