[PowerPC] Add MultiarchIncludeDirs for powerpc64le
authorUlrich Weigand <ulrich.weigand@de.ibm.com>
Fri, 20 Jun 2014 13:41:24 +0000 (13:41 +0000)
committerUlrich Weigand <ulrich.weigand@de.ibm.com>
Fri, 20 Jun 2014 13:41:24 +0000 (13:41 +0000)
There was already partial support for multi-arch on powerpc64le,
but the MultiarchIncludeDirs setting was missing.  This patch
adds the appropriate definition, and also extends the
linux-header-search.cpp test case to verify an Ubuntu 14.04
powerpc64le tree.

llvm-svn: 211359

clang/lib/Driver/ToolChains.cpp
clang/test/Driver/Inputs/ubuntu_14.04_multiarch_tree/lib/powerpc64le-linux-gnu/.keep [new file with mode: 0644]
clang/test/Driver/Inputs/ubuntu_14.04_multiarch_tree/usr/include/powerpc64le-linux-gnu/c++/4.8/.keep [new file with mode: 0644]
clang/test/Driver/Inputs/ubuntu_14.04_multiarch_tree/usr/lib/gcc/powerpc64le-linux-gnu/4.8/crtbegin.o [new file with mode: 0644]
clang/test/Driver/Inputs/ubuntu_14.04_multiarch_tree/usr/lib/gcc/powerpc64le-linux-gnu/4.9/.keep [new file with mode: 0644]
clang/test/Driver/linux-header-search.cpp

index 7157556..6817898 100644 (file)
@@ -3264,6 +3264,9 @@ void Linux::AddClangSystemIncludeArgs(const ArgList &DriverArgs,
   const StringRef PPC64MultiarchIncludeDirs[] = {
     "/usr/include/powerpc64-linux-gnu"
   };
+  const StringRef PPC64LEMultiarchIncludeDirs[] = {
+    "/usr/include/powerpc64le-linux-gnu"
+  };
   ArrayRef<StringRef> MultiarchIncludeDirs;
   if (getTriple().getArch() == llvm::Triple::x86_64) {
     MultiarchIncludeDirs = X86_64MultiarchIncludeDirs;
@@ -3287,6 +3290,8 @@ void Linux::AddClangSystemIncludeArgs(const ArgList &DriverArgs,
     MultiarchIncludeDirs = PPCMultiarchIncludeDirs;
   } else if (getTriple().getArch() == llvm::Triple::ppc64) {
     MultiarchIncludeDirs = PPC64MultiarchIncludeDirs;
+  } else if (getTriple().getArch() == llvm::Triple::ppc64le) {
+    MultiarchIncludeDirs = PPC64LEMultiarchIncludeDirs;
   }
   for (StringRef Dir : MultiarchIncludeDirs) {
     if (llvm::sys::fs::exists(SysRoot + Dir)) {
diff --git a/clang/test/Driver/Inputs/ubuntu_14.04_multiarch_tree/lib/powerpc64le-linux-gnu/.keep b/clang/test/Driver/Inputs/ubuntu_14.04_multiarch_tree/lib/powerpc64le-linux-gnu/.keep
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/clang/test/Driver/Inputs/ubuntu_14.04_multiarch_tree/usr/include/powerpc64le-linux-gnu/c++/4.8/.keep b/clang/test/Driver/Inputs/ubuntu_14.04_multiarch_tree/usr/include/powerpc64le-linux-gnu/c++/4.8/.keep
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/clang/test/Driver/Inputs/ubuntu_14.04_multiarch_tree/usr/lib/gcc/powerpc64le-linux-gnu/4.8/crtbegin.o b/clang/test/Driver/Inputs/ubuntu_14.04_multiarch_tree/usr/lib/gcc/powerpc64le-linux-gnu/4.8/crtbegin.o
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/clang/test/Driver/Inputs/ubuntu_14.04_multiarch_tree/usr/lib/gcc/powerpc64le-linux-gnu/4.9/.keep b/clang/test/Driver/Inputs/ubuntu_14.04_multiarch_tree/usr/lib/gcc/powerpc64le-linux-gnu/4.9/.keep
new file mode 100644 (file)
index 0000000..e69de29
index b56a50a..b465e8b 100644 (file)
 // CHECK-UBUNTU-14-04-M32: "-internal-isystem" "[[SYSROOT]]/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../../include/c++/4.8/backward"
 // CHECK-UBUNTU-14-04-M32: "-internal-isystem" "[[SYSROOT]]/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../../include/x86_64-linux-gnu/c++/4.8/32"
 //
+// Test Ubuntu/Debian's Ubuntu 14.04 for powerpc64le
+// RUN: %clang -no-canonical-prefixes %s -### -fsyntax-only 2>&1 \
+// RUN:     -target powerpc64le-unknown-linux-gnu -m32 \
+// RUN:     --sysroot=%S/Inputs/ubuntu_14.04_multiarch_tree \
+// RUN:   | FileCheck --check-prefix=CHECK-UBUNTU-14-04-PPC64LE %s
+// CHECK-UBUNTU-14-04-PPC64LE: "{{[^"]*}}clang{{[^"]*}}" "-cc1"
+// CHECK-UBUNTU-14-04-PPC64LE: "-triple" "powerpc64le-unknown-linux-gnu"
+// CHECK-UBUNTU-14-04-PPC64LE: "-isysroot" "[[SYSROOT:[^"]+]]"
+// CHECK-UBUNTU-14-04-PPC64LE: "-internal-isystem" "[[SYSROOT]]/usr/lib/gcc/powerpc64le-linux-gnu/4.8/../../../../include/c++/4.8"
+// CHECK-UBUNTU-14-04-PPC64LE: "-internal-isystem" "[[SYSROOT]]/usr/lib/gcc/powerpc64le-linux-gnu/4.8/../../../../include/c++/4.8/powerpc64le-linux-gnu"
+// CHECK-UBUNTU-14-04-PPC64LE: "-internal-isystem" "[[SYSROOT]]/usr/lib/gcc/powerpc64le-linux-gnu/4.8/../../../../include/c++/4.8/backward"
+// CHECK-UBUNTU-14-04-PPC64LE: "-internal-isystem" "[[SYSROOT]]/usr/lib/gcc/powerpc64le-linux-gnu/4.8/../../../../include/powerpc64le-linux-gnu/c++/4.8"
+// CHECK-UBUNTU-14-04-PPC64LE: "-internal-externc-isystem" "[[SYSROOT]]/usr/include/powerpc64le-linux-gnu"
+// CHECK-UBUNTU-14-04-PPC64LE: "-internal-externc-isystem" "[[SYSROOT]]/include"
+// CHECK-UBUNTU-14-04-PPC64LE: "-internal-externc-isystem" "[[SYSROOT]]/usr/include"
+//
 // Thoroughly exercise the Debian multiarch environment.
 // RUN: %clang -no-canonical-prefixes %s -### -fsyntax-only 2>&1 \
 // RUN:     -target i686-linux-gnu \