diff options
author | Josh Gao <jmgao@google.com> | 2016-06-10 18:30:33 +0000 |
---|---|---|
committer | Josh Gao <jmgao@google.com> | 2016-06-10 18:30:33 +0000 |
commit | 4e9cef0491ce508904137eb857df9523f5647ff5 (patch) | |
tree | ad600c85a5b091524e7f0e20d32985ca536d84e2 | |
parent | b2b0da4ad08da9a48940c4f5398c5603d78282b7 (diff) | |
download | bcm5719-llvm-4e9cef0491ce508904137eb857df9523f5647ff5.tar.gz bcm5719-llvm-4e9cef0491ce508904137eb857df9523f5647ff5.zip |
Strip Android version when looking up toolchain paths.
Summary:
Android target triples can include a version number in the abi field
(e.g. 'aarch64-linux-android21'), used for checking for availability.
However, the driver was searching for toolchain binaries using the
passed in triple as a prefix.
Reviewers: srhines, danalbert, t.p.northover
Subscribers: t.p.northover, aemerson, tberghammer, danalbert, srhines, cfe-commits
Differential Revision: http://reviews.llvm.org/D21163
llvm-svn: 272413
4 files changed, 19 insertions, 1 deletions
diff --git a/clang/lib/Driver/Driver.cpp b/clang/lib/Driver/Driver.cpp index f7e15309ac3..7db9e112a15 100644 --- a/clang/lib/Driver/Driver.cpp +++ b/clang/lib/Driver/Driver.cpp @@ -2343,7 +2343,15 @@ void Driver::generatePrefixedToolNames( const char *Tool, const ToolChain &TC, SmallVectorImpl<std::string> &Names) const { // FIXME: Needs a better variable than DefaultTargetTriple - Names.emplace_back(DefaultTargetTriple + "-" + Tool); + StringRef Triple = DefaultTargetTriple; + + // On Android, the target triple can include a version number that needs to + // be stripped. + if (TC.getTriple().isAndroid()) { + Triple = Triple.rtrim("0123456789"); + } + + Names.emplace_back((Triple + "-" + Tool).str()); Names.emplace_back(Tool); // Allow the discovery of tools prefixed with LLVM's default target triple. diff --git a/clang/test/Driver/Inputs/android_triple_version/bin/arm-linux-androideabi-ld b/clang/test/Driver/Inputs/android_triple_version/bin/arm-linux-androideabi-ld new file mode 100755 index 00000000000..e69de29bb2d --- /dev/null +++ b/clang/test/Driver/Inputs/android_triple_version/bin/arm-linux-androideabi-ld diff --git a/clang/test/Driver/Inputs/android_triple_version/bin/arm-linux-androideabi-ld.exe b/clang/test/Driver/Inputs/android_triple_version/bin/arm-linux-androideabi-ld.exe new file mode 100755 index 00000000000..e69de29bb2d --- /dev/null +++ b/clang/test/Driver/Inputs/android_triple_version/bin/arm-linux-androideabi-ld.exe diff --git a/clang/test/Driver/android-triple-version.c b/clang/test/Driver/android-triple-version.c new file mode 100644 index 00000000000..093f71f88bd --- /dev/null +++ b/clang/test/Driver/android-triple-version.c @@ -0,0 +1,10 @@ +// Android's target triples can contain a version number in the environment +// field (e.g. arm-linux-androideabi9). +// Make sure that any version is stripped when finding toolchain binaries. + +// RUN: env "PATH=%S/Inputs/android_triple_version/bin" \ +// RUN: %clang -### -target arm-linux-androideabi %s 2>&1 | FileCheck %s +// RUN: env "PATH=%S/Inputs/android_triple_version/bin" \ +// RUN: %clang -### -target arm-linux-androideabi9 %s 2>&1 | FileCheck %s + +// CHECK: arm-linux-androideabi-ld |