]> granicus.if.org Git - clang/commitdiff
Restore clang_rt library name on i686-android.
authorEvgeniy Stepanov <eugeni.stepanov@gmail.com>
Tue, 29 Aug 2017 22:12:31 +0000 (22:12 +0000)
committerEvgeniy Stepanov <eugeni.stepanov@gmail.com>
Tue, 29 Aug 2017 22:12:31 +0000 (22:12 +0000)
Summary:
Recent changes canonicalized clang_rt library names to refer to
"i386" on all x86 targets. Android historically uses i686.

This change adds a special case to keep i686 in all clang_rt
libraries when targeting Android.

Reviewers: hans, mgorny, beanz

Subscribers: srhines, cfe-commits, llvm-commits

Differential Revision: https://reviews.llvm.org/D37278

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@312048 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Driver/ToolChain.cpp
test/Driver/sanitizer-ld.c

index 384481b3ea54178d65d6fd428c600f2244d5ab76..93410a7f2a59dbcc80c803bb2f76c63aec0f5995 100644 (file)
@@ -305,6 +305,10 @@ static StringRef getArchNameForCompilerRTLib(const ToolChain &TC,
                ? "armhf"
                : "arm";
 
+  // For historic reasons, Android library is using i686 instead of i386.
+  if (TC.getArch() == llvm::Triple::x86 && Triple.isAndroid())
+    return "i686";
+
   return llvm::Triple::getArchTypeName(TC.getArch());
 }
 
index 83231c9937c6628bad80f25e883cd6dd9e59184e..45e5d004cd29b63990b3eb827ce574f568a1962d 100644 (file)
 // CHECK-ASAN-ANDROID-NOT: "-lpthread"
 //
 // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
+// RUN:     -target i686-linux-android -fuse-ld=ld -fsanitize=address \
+// RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \
+// RUN:   | FileCheck --check-prefix=CHECK-ASAN-ANDROID-X86 %s
+//
+// CHECK-ASAN-ANDROID-X86: "{{(.*[^.0-9A-Z_a-z])?}}ld{{(.exe)?}}"
+// CHECK-ASAN-ANDROID-X86-NOT: "-lc"
+// CHECK-ASAN-ANDROID-X86: "-pie"
+// CHECK-ASAN-ANDROID-X86-NOT: "-lpthread"
+// CHECK-ASAN-ANDROID-X86: libclang_rt.asan-i686-android.so"
+// CHECK-ASAN-ANDROID-X86-NOT: "-lpthread"
+//
+// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
 // RUN:     -target arm-linux-androideabi -fsanitize=address \
 // RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \
 // RUN:     -shared-libasan \