From 31f279a4ca784f2109a28eb72b8dd5ee4760998a Mon Sep 17 00:00:00 2001 From: Dan Albert Date: Wed, 28 Jan 2015 23:23:36 +0000 Subject: [PATCH] [clang] Use -android environment for all compiler-rt libs. Summary: This was already done for the sanitizers, but it needs to be done for the profile and builtin libs as well. Reviewers: srhines, timmurray, eugenis, samsonov Reviewed By: samsonov Subscribers: compnerd, cfe-commits Differential Revision: http://reviews.llvm.org/D7187 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@227392 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Driver/Tools.cpp | 14 ++++++-------- test/Driver/coverage-ld.c | 9 +++++++++ test/Driver/linux-ld.c | 15 +++++++++++++++ 3 files changed, 30 insertions(+), 8 deletions(-) diff --git a/lib/Driver/Tools.cpp b/lib/Driver/Tools.cpp index c9ca29424d..27ebc8ae57 100644 --- a/lib/Driver/Tools.cpp +++ b/lib/Driver/Tools.cpp @@ -2139,8 +2139,11 @@ static SmallString<128> getCompilerRTLibDir(const ToolChain &TC) { } static SmallString<128> getCompilerRT(const ToolChain &TC, StringRef Component, - bool Shared = false, - const char *Env = "") { + bool Shared = false) { + const char *Env = TC.getTriple().getEnvironment() == llvm::Triple::Android + ? "-android" + : ""; + bool IsOSWindows = TC.getTriple().isOSWindows(); StringRef Arch = getArchNameForCompilerRTLib(TC); const char *Prefix = IsOSWindows ? "" : "lib"; @@ -2185,16 +2188,11 @@ static void addProfileRT(const ToolChain &TC, const ArgList &Args, static void addSanitizerRuntime(const ToolChain &TC, const ArgList &Args, ArgStringList &CmdArgs, StringRef Sanitizer, bool IsShared) { - const char *Env = TC.getTriple().getEnvironment() == llvm::Triple::Android - ? "-android" - : ""; - // Static runtimes must be forced into executable, so we wrap them in // whole-archive. if (!IsShared) CmdArgs.push_back("-whole-archive"); - CmdArgs.push_back(Args.MakeArgString(getCompilerRT(TC, Sanitizer, IsShared, - Env))); + CmdArgs.push_back(Args.MakeArgString(getCompilerRT(TC, Sanitizer, IsShared))); if (!IsShared) CmdArgs.push_back("-no-whole-archive"); } diff --git a/test/Driver/coverage-ld.c b/test/Driver/coverage-ld.c index 0e39249a2f..f3c3c49f21 100644 --- a/test/Driver/coverage-ld.c +++ b/test/Driver/coverage-ld.c @@ -26,3 +26,12 @@ // // CHECK-FREEBSD-X86-64: "{{(.*[^-.0-9A-Z_a-z])?}}ld{{(.exe)?}}" // CHECK-FREEBSD-X86-64: "{{.*}}/Inputs/resource_dir{{/|\\\\}}lib{{/|\\\\}}freebsd{{/|\\\\}}libclang_rt.profile-x86_64.a" +// +// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \ +// RUN: -target arm-linux-androideabi --coverage \ +// RUN: -resource-dir=%S/Inputs/resource_dir \ +// RUN: --sysroot=%S/Inputs/basic_android_tree/sysroot \ +// RUN: | FileCheck --check-prefix=CHECK-ANDROID-ARM %s +// +// CHECK-ANDROID-ARM: "{{(.*[^-.0-9A-Z_a-z])?}}ld{{(.exe)?}}" +// CHECK-ANDROID-ARM: "{{.*}}/Inputs/resource_dir{{/|\\\\}}lib{{/|\\\\}}linux{{/|\\\\}}libclang_rt.profile-arm-android.a" diff --git a/test/Driver/linux-ld.c b/test/Driver/linux-ld.c index 1ce923b61a..bde682976e 100644 --- a/test/Driver/linux-ld.c +++ b/test/Driver/linux-ld.c @@ -71,6 +71,21 @@ // CHECK-LD-RT: libclang_rt.builtins-x86_64.a" "-lgcc_s" // // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \ +// RUN: --target=arm-linux-androideabi \ +// RUN: --gcc-toolchain="" \ +// RUN: --sysroot=%S/Inputs/basic_android_tree/sysroot \ +// RUN: --rtlib=compiler-rt \ +// RUN: | FileCheck --check-prefix=CHECK-LD-RT-ANDROID %s +// CHECK-LD-RT-ANDROID-NOT: warning: +// CHECK-LD-RT-ANDROID: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]" +// CHECK-LD-RT-ANDROID: "--eh-frame-hdr" +// CHECK-LD-RT-ANDROID: "-m" "armelf_linux_eabi" +// CHECK-LD-RT-ANDROID: "-dynamic-linker" +// CHECK-LD-RT-ANDROID: libclang_rt.builtins-arm-android.a" "-lgcc_s" +// CHECK-LD-RT-ANDROID: "-lc" +// CHECK-LD-RT-ANDROID: libclang_rt.builtins-arm-android.a" "-lgcc_s" +// +// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \ // RUN: --target=x86_64-unknown-linux \ // RUN: --gcc-toolchain="" \ // RUN: --sysroot=%S/Inputs/basic_linux_tree \ -- 2.40.0