forked from OSchip/llvm-project
[Driver] Do not add -lpthread & -lrt with -static-libsan on Android
Summary: I am not sure anyone has tried to compile an application with sanitizers on Android with `-static-libsan`, and a recent NDK, but it fails with: ``` .../i686-linux-android/bin/ld.gold: error: cannot find -lpthread .../i686-linux-android/bin/ld.gold: error: cannot find -lrt ``` My understanding is that both are included in Bionic and as such are not needed, and actually error out. So remove the addition of those two in `linkSanitizerRuntimeDeps` when dealing with Android, and update the tests. I am unfamiliar with the evolution of the NDK and I am not sure if this has always been the case or if this is somewhat of a recent evolution. I'll let Android people chime in. Reviewers: eugenis, pirama, srhines Reviewed By: eugenis, srhines Subscribers: cfe-commits Differential Revision: https://reviews.llvm.org/D48570 llvm-svn: 335620
This commit is contained in:
parent
0f44759b0d
commit
1969c9a13e
|
@ -564,8 +564,9 @@ void tools::linkSanitizerRuntimeDeps(const ToolChain &TC,
|
|||
// Force linking against the system libraries sanitizers depends on
|
||||
// (see PR15823 why this is necessary).
|
||||
CmdArgs.push_back("--no-as-needed");
|
||||
// There's no libpthread or librt on RTEMS.
|
||||
if (TC.getTriple().getOS() != llvm::Triple::RTEMS) {
|
||||
// There's no libpthread or librt on RTEMS & Android.
|
||||
if (TC.getTriple().getOS() != llvm::Triple::RTEMS &&
|
||||
!TC.getTriple().isAndroid()) {
|
||||
CmdArgs.push_back("-lpthread");
|
||||
if (TC.getTriple().getOS() != llvm::Triple::OpenBSD)
|
||||
CmdArgs.push_back("-lrt");
|
||||
|
|
|
@ -153,7 +153,8 @@
|
|||
//
|
||||
// CHECK-ASAN-ANDROID-STATICLIBASAN: "{{(.*[^.0-9A-Z_a-z])?}}ld{{(.exe)?}}"
|
||||
// CHECK-ASAN-ANDROID-STATICLIBASAN: libclang_rt.asan-arm-android.a"
|
||||
// CHECK-ASAN-ANDROID-STATICLIBASAN: "-lpthread"
|
||||
// CHECK-ASAN-ANDROID-STATICLIBASAN-NOT: "-lpthread"
|
||||
// CHECK-ASAN-ANDROID-STATICLIBASAN-NOT: "-lrt"
|
||||
|
||||
// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
|
||||
// RUN: -target arm-linux-androideabi -fuse-ld=ld -fsanitize=undefined \
|
||||
|
@ -175,7 +176,8 @@
|
|||
//
|
||||
// CHECK-UBSAN-ANDROID-STATICLIBASAN: "{{(.*[^.0-9A-Z_a-z])?}}ld{{(.exe)?}}"
|
||||
// CHECK-UBSAN-ANDROID-STATICLIBASAN: libclang_rt.ubsan_standalone-arm-android.a"
|
||||
// CHECK-UBSAN-ANDROID-STATICLIBASAN: "-lpthread"
|
||||
// CHECK-UBSAN-ANDROID-STATICLIBASAN-NOT: "-lpthread"
|
||||
// CHECK-UBSAN-ANDROID-STATICLIBASAN-NOT: "-lrt"
|
||||
|
||||
//
|
||||
// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
|
||||
|
@ -735,7 +737,8 @@
|
|||
// CHECK-SCUDO-ANDROID-STATIC: "-pie"
|
||||
// CHECK-SCUDO-ANDROID-STATIC: "--whole-archive" "{{.*}}libclang_rt.scudo-arm-android.a" "--no-whole-archive"
|
||||
// CHECK-SCUDO-ANDROID-STATIC-NOT: "-lstdc++"
|
||||
// CHECK-SCUDO-ANDROID-STATIC: "-lpthread"
|
||||
// CHECK-SCUDO-ANDROID-STATIC-NOT: "-lpthread"
|
||||
// CHECK-SCUDO-ANDROID-STATIC-NOT: "-lrt"
|
||||
|
||||
// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
|
||||
// RUN: -target x86_64-unknown-linux -fuse-ld=ld -fsanitize=hwaddress \
|
||||
|
|
Loading…
Reference in New Issue