diff options
author | Khem Raj <raj.khem@gmail.com> | 2015-07-09 00:24:44 -0700 |
---|---|---|
committer | Khem Raj <raj.khem@gmail.com> | 2015-07-09 00:24:44 -0700 |
commit | 422f10869cbb8d62cc5b4c71dc5a861ed43fd55e (patch) | |
tree | 78391b723a8f71d01d6696bc4a06b2f0aa960129 | |
parent | cf4d3b3c7c2d21ac581272197427f4872ddf4de1 (diff) | |
download | meta-clang-422f10869cbb8d62cc5b4c71dc5a861ed43fd55e.tar.gz |
clang: Fix dynamic linker name for arm hard-float
OE depends on commandline option to decide on hf ABI unlike other
distros which use target triplet *-*-gnueabihf and clang driver only reacted to
triplet and not cmdline options, this patch makes it do that as well
Signed-off-by: Khem Raj <raj.khem@gmail.com>
-rw-r--r-- | recipes-devtools/clang/clang/0001-Choose-right-dynamic-linker-when-hard-float-ABI-is-e.patch | 40 | ||||
-rw-r--r-- | recipes-devtools/clang/clang_git.bb | 1 |
2 files changed, 41 insertions, 0 deletions
diff --git a/recipes-devtools/clang/clang/0001-Choose-right-dynamic-linker-when-hard-float-ABI-is-e.patch b/recipes-devtools/clang/clang/0001-Choose-right-dynamic-linker-when-hard-float-ABI-is-e.patch new file mode 100644 index 0000000..17f5fde --- /dev/null +++ b/recipes-devtools/clang/clang/0001-Choose-right-dynamic-linker-when-hard-float-ABI-is-e.patch | |||
@@ -0,0 +1,40 @@ | |||
1 | From 19a19feb6bd13586463597a826bf6cda9af0e05b Mon Sep 17 00:00:00 2001 | ||
2 | From: Khem Raj <raj.khem@gmail.com> | ||
3 | Date: Wed, 8 Jul 2015 23:25:36 -0700 | ||
4 | Subject: [PATCH] Choose right dynamic linker when hard float ABI is expressed | ||
5 | on commandline | ||
6 | |||
7 | Currently trigger to select hard-float linker is only based of -gnueahf | ||
8 | appearing in target triplet, but we should also select it when hardfloat | ||
9 | is requested via cmdline | ||
10 | |||
11 | Signed-off-by: Khem Raj <raj.khem@gmail.com> | ||
12 | --- | ||
13 | lib/Driver/Tools.cpp | 6 ++++-- | ||
14 | 1 file changed, 4 insertions(+), 2 deletions(-) | ||
15 | |||
16 | diff --git a/tools/clang/lib/Driver/Tools.cpp b/tools/clang/lib/Driver/Tools.cpp | ||
17 | index 756600e..89a9a64 100644 | ||
18 | --- a/tools/clang/lib/Driver/Tools.cpp | ||
19 | +++ b/tools/clang/lib/Driver/Tools.cpp | ||
20 | @@ -7715,13 +7715,15 @@ static std::string getLinuxDynamicLinker(const ArgList &Args, | ||
21 | return "/lib/ld-linux-aarch64_be.so.1"; | ||
22 | else if (ToolChain.getArch() == llvm::Triple::arm || | ||
23 | ToolChain.getArch() == llvm::Triple::thumb) { | ||
24 | - if (ToolChain.getTriple().getEnvironment() == llvm::Triple::GNUEABIHF) | ||
25 | + if (ToolChain.getTriple().getEnvironment() == llvm::Triple::GNUEABIHF || | ||
26 | + tools::arm::getARMFloatABI(ToolChain.getDriver(), Args, ToolChain.getTriple()) == "hard") | ||
27 | return "/lib/ld-linux-armhf.so.3"; | ||
28 | else | ||
29 | return "/lib/ld-linux.so.3"; | ||
30 | } else if (ToolChain.getArch() == llvm::Triple::armeb || | ||
31 | ToolChain.getArch() == llvm::Triple::thumbeb) { | ||
32 | - if (ToolChain.getTriple().getEnvironment() == llvm::Triple::GNUEABIHF) | ||
33 | + if (ToolChain.getTriple().getEnvironment() == llvm::Triple::GNUEABIHF || | ||
34 | + tools::arm::getARMFloatABI(ToolChain.getDriver(), Args, ToolChain.getTriple()) == "hard") | ||
35 | return "/lib/ld-linux-armhf.so.3"; /* TODO: check which dynamic linker name. */ | ||
36 | else | ||
37 | return "/lib/ld-linux.so.3"; /* TODO: check which dynamic linker name. */ | ||
38 | -- | ||
39 | 2.1.4 | ||
40 | |||
diff --git a/recipes-devtools/clang/clang_git.bb b/recipes-devtools/clang/clang_git.bb index 638096b..55cd4bb 100644 --- a/recipes-devtools/clang/clang_git.bb +++ b/recipes-devtools/clang/clang_git.bb | |||
@@ -15,6 +15,7 @@ LIC_FILES_CHKSUM = "file://LICENSE.TXT;md5=4c0bc17c954e99fd547528d938832bfa; \ | |||
15 | SRC_URI = "git://github.com/llvm-mirror/llvm.git;branch=${BRANCH};name=llvm \ | 15 | SRC_URI = "git://github.com/llvm-mirror/llvm.git;branch=${BRANCH};name=llvm \ |
16 | git://github.com/llvm-mirror/clang.git;branch=${BRANCH};destsuffix=git/tools/clang;name=clang \ | 16 | git://github.com/llvm-mirror/clang.git;branch=${BRANCH};destsuffix=git/tools/clang;name=clang \ |
17 | file://0001-Remove-CMAKE_CROSSCOMPILING-so-it-can-cross-compile.patch \ | 17 | file://0001-Remove-CMAKE_CROSSCOMPILING-so-it-can-cross-compile.patch \ |
18 | file://0001-Choose-right-dynamic-linker-when-hard-float-ABI-is-e.patch \ | ||
18 | " | 19 | " |
19 | 20 | ||
20 | SRCREV_llvm = "08709687efd951d1d6c3ad5f8d518129c068c737" | 21 | SRCREV_llvm = "08709687efd951d1d6c3ad5f8d518129c068c737" |