From 159cc0da65837a651bed5e140626ac7857d09d1a Mon Sep 17 00:00:00 2001 From: Khem Raj Date: Mon, 4 Jul 2016 23:36:06 -0700 Subject: clang: Update to latest on 3.9 Signed-off-by: Khem Raj --- recipes-devtools/clang/clang.inc | 8 +- .../0001-clang-driver-Add-musl-ldso-support.patch | 132 --------------------- .../0001-clang-driver-Use-lib-for-ldso-on-OE.patch | 56 +++++++++ ...-CMAKE_CROSSCOMPILING-so-it-can-cross-com.patch | 2 +- ...r-tools.cpp-Add-lssp-and-lssp_nonshared-o.patch | 35 ++++++ .../0002-clang-driver-Use-lib-for-ldso-on-OE.patch | 55 --------- .../0002-llvm-Do-not-assume-linux-glibc.patch | 2 +- ...r-tools.cpp-Add-lssp-and-lssp_nonshared-o.patch | 35 ------ ...-ppc-does-not-support-128-bit-long-double.patch | 27 +++++ ...LibraryInfo-Undefine-libc-functions-if-th.patch | 2 +- .../0004-clang-Check-for-float-ABI-on-arm.patch | 34 ++++++ ...-ppc-does-not-support-128-bit-long-double.patch | 27 ----- recipes-devtools/clang/clang_git.bb | 8 +- 13 files changed, 163 insertions(+), 260 deletions(-) delete mode 100644 recipes-devtools/clang/clang/0001-clang-driver-Add-musl-ldso-support.patch create mode 100644 recipes-devtools/clang/clang/0001-clang-driver-Use-lib-for-ldso-on-OE.patch create mode 100644 recipes-devtools/clang/clang/0002-clang-Driver-tools.cpp-Add-lssp-and-lssp_nonshared-o.patch delete mode 100644 recipes-devtools/clang/clang/0002-clang-driver-Use-lib-for-ldso-on-OE.patch delete mode 100644 recipes-devtools/clang/clang/0003-clang-Driver-tools.cpp-Add-lssp-and-lssp_nonshared-o.patch create mode 100644 recipes-devtools/clang/clang/0003-clang-musl-ppc-does-not-support-128-bit-long-double.patch create mode 100644 recipes-devtools/clang/clang/0004-clang-Check-for-float-ABI-on-arm.patch delete mode 100644 recipes-devtools/clang/clang/0004-clang-musl-ppc-does-not-support-128-bit-long-double.patch (limited to 'recipes-devtools') diff --git a/recipes-devtools/clang/clang.inc b/recipes-devtools/clang/clang.inc index 0b65a78..4e03d0f 100644 --- a/recipes-devtools/clang/clang.inc +++ b/recipes-devtools/clang/clang.inc @@ -10,11 +10,11 @@ LLVM_GIT_PROTOCOL ?= "git" PV = "3.9.0" BRANCH = "master" -SRCREV_llvm = "18b9b9a1f4d2582b2b2ff240f39f7298f3fe5708" -SRCREV_clang = "9f075b782a61c9af1b8652d2a4bd7d0165789830" -SRCREV_compiler-rt = "5981c629cb4879ed91a74c6f88ad96e8996f2ee5" +SRCREV_llvm = "ae50a144ace99690fb530a2d56b625ac3cb13845" +SRCREV_clang = "bf0295e9294348694b7b203149fb108be098c56c" +SRCREV_compiler-rt = "0ef859b2aaaaf976fb32d0e6c6a28cfecb57a1e7" SRCREV_libcxxabi = "5328c6b635a145efc1204ad25341706fb705e346" -SRCREV_libcxx = "70bf1c2280d514792b4bc6035c4685e82da79645" +SRCREV_libcxx = "56a761493d40cd528d548dfbf5fb27fa37a92556" SRCREV_libunwind = "7a00ec9517645046685fd6c115f0b1dc775f0bb3" LLVMMD5SUM = "43fdaa303c1c5589ad60f4ffc6a0b9ce" diff --git a/recipes-devtools/clang/clang/0001-clang-driver-Add-musl-ldso-support.patch b/recipes-devtools/clang/clang/0001-clang-driver-Add-musl-ldso-support.patch deleted file mode 100644 index 1ed45e7..0000000 --- a/recipes-devtools/clang/clang/0001-clang-driver-Add-musl-ldso-support.patch +++ /dev/null @@ -1,132 +0,0 @@ -From fb45cce576a5a748df271ba9e3aa4c4acaece100 Mon Sep 17 00:00:00 2001 -From: Khem Raj -Date: Sat, 21 May 2016 21:49:08 -0700 -Subject: [PATCH 1/4] clang: driver: Add musl ldso support - -Linux/musl libc implementation has different ldso -this needs to take effect when target arch is detected -as a musl based Linux platform - -Signed-off-by: Khem Raj ---- - lib/Driver/Tools.cpp | 104 +++++++++++++++++++++++++++++++++++++++++++++++++++ - 1 file changed, 104 insertions(+) - -diff --git a/lib/Driver/Tools.cpp b/lib/Driver/Tools.cpp -index c4ac773..ea8b528 100644 ---- a/lib/Driver/Tools.cpp -+++ b/lib/Driver/Tools.cpp -@@ -9108,6 +9108,110 @@ static void AddLibgcc(const llvm::Triple &Triple, const Driver &D, - CmdArgs.push_back("-ldl"); - } - -+static std::string getLinuxDynamicLinker(const ArgList &Args, -+ const toolchains::Linux &ToolChain) { -+ const llvm::Triple::ArchType Arch = ToolChain.getArch(); -+ const llvm::Triple &Triple = ToolChain.getTriple(); -+ -+ if (Triple.isAndroid()) -+ return Triple.isArch64Bit() ? "/system/bin/linker64" : "/system/bin/linker"; -+ if (ToolChain.getTriple().isMusl()) { -+ switch (Arch) { -+ case llvm::Triple::x86: -+ return "/lib/ld-musl-i386.so.1"; -+ case llvm::Triple::x86_64: -+ return "/lib/ld-musl-x86_64.so.1"; -+ case llvm::Triple::aarch64: -+ return "/lib/ld-musl-aarch64.so.1"; -+ case llvm::Triple::aarch64_be: -+ return "/lib/ld-musl-aarch64_be.so.1"; -+ case llvm::Triple::ppc: -+ return "/lib/ld-musl-powerpc.so.1"; -+ case llvm::Triple::ppc64: -+ return "/lib/ld-musl-powerpc64.so.1"; -+ case llvm::Triple::arm: -+ case llvm::Triple::thumb: -+ if(arm::getARMFloatABI(ToolChain, Args) == arm::FloatABI::Hard) -+ return "/lib/ld-musl-armhf.so.1"; -+ else -+ return "/lib/ld-musl-arm.so.1"; -+ case llvm::Triple::armeb: -+ case llvm::Triple::thumbeb: -+ if(arm::getARMFloatABI(ToolChain, Args) == arm::FloatABI::Hard) -+ return "/lib/ld-musl-armebhf.so.1"; -+ else -+ return "/lib/ld-musl-armeb.so.1"; -+ case llvm::Triple::mips: -+ return "/lib/ld-musl-mips.so.1"; -+ case llvm::Triple::mipsel: -+ return "/lib/ld-musl-mipsel.so.1"; -+ case llvm::Triple::mips64: -+ return "/lib/ld-musl-mips64.so.1"; -+ case llvm::Triple::mips64el: -+ return "/lib/ld-musl-mipsel64el.so.1"; -+ default: -+ llvm_unreachable("unsupported musl architecture"); -+ break; -+ } -+ } -+ switch (Arch) { -+ default: llvm_unreachable("unsupported architecture"); -+ -+ case llvm::Triple::aarch64: -+ return "/lib/ld-linux-aarch64.so.1"; -+ case llvm::Triple::aarch64_be: -+ return "/lib/ld-linux-aarch64_be.so.1"; -+ case llvm::Triple::arm: -+ case llvm::Triple::thumb: -+ case llvm::Triple::armeb: -+ case llvm::Triple::thumbeb: { -+ const bool IsHardFloat = -+ Triple.getEnvironment() == llvm::Triple::GNUEABIHF || -+ arm::getARMFloatABI(ToolChain, Args) == arm::FloatABI::Hard; -+ -+ return IsHardFloat ? "/lib/ld-linux-armhf.so.3" : "/lib/ld-linux.so.3"; -+ } -+ case llvm::Triple::mips: -+ case llvm::Triple::mipsel: -+ case llvm::Triple::mips64: -+ case llvm::Triple::mips64el: { -+ bool IsNaN2008 = mips::isNaN2008(Args, Triple); -+ bool LE = (Triple.getArch() == llvm::Triple::mipsel) || -+ (Triple.getArch() == llvm::Triple::mips64el); -+ -+ std::string LibDir = "/lib" + mips::getMipsABILibSuffix(Args, Triple); -+ StringRef LibName; -+ if (mips::isUCLibc(Args)) -+ LibName = IsNaN2008 ? "ld-uClibc-mipsn8.so.0" : "ld-uClibc.so.0"; -+ else -+ LibName = IsNaN2008 ? "ld-linux-mipsn8.so.1" : "ld.so.1"; -+ -+ return (LibDir + "/" + LibName).str(); -+ } -+ case llvm::Triple::ppc: -+ return "/lib/ld.so.1"; -+ case llvm::Triple::ppc64: -+ return (ppc::hasPPCAbiArg(Args, "elfv2")) ? "/lib64/ld64.so.2" -+ : "/lib64/ld64.so.1"; -+ case llvm::Triple::ppc64le: -+ return (ppc::hasPPCAbiArg(Args, "elfv1")) ? "/lib64/ld64.so.1" -+ : "/lib64/ld64.so.2"; -+ case llvm::Triple::sparc: -+ case llvm::Triple::sparcel: -+ return "/lib/ld-linux.so.2"; -+ case llvm::Triple::sparcv9: -+ return "/lib64/ld-linux.so.2"; -+ case llvm::Triple::systemz: -+ return "/lib/ld64.so.1"; -+ case llvm::Triple::x86: -+ return "/lib/ld-linux.so.2"; -+ case llvm::Triple::x86_64: -+ return (Triple.getEnvironment() == llvm::Triple::GNUX32) -+ ? "/libx32/ld-linux-x32.so.2" -+ : "/lib64/ld-linux-x86-64.so.2"; -+ } -+} -+ - static void AddRunTimeLibs(const ToolChain &TC, const Driver &D, - ArgStringList &CmdArgs, const ArgList &Args) { - // Make use of compiler-rt if --rtlib option is used --- -2.9.0 - diff --git a/recipes-devtools/clang/clang/0001-clang-driver-Use-lib-for-ldso-on-OE.patch b/recipes-devtools/clang/clang/0001-clang-driver-Use-lib-for-ldso-on-OE.patch new file mode 100644 index 0000000..7571c3a --- /dev/null +++ b/recipes-devtools/clang/clang/0001-clang-driver-Use-lib-for-ldso-on-OE.patch @@ -0,0 +1,56 @@ +From 5273f61c9e93d1fa263fba29f0d62ab2860cde65 Mon Sep 17 00:00:00 2001 +From: Khem Raj +Date: Sat, 21 May 2016 21:52:36 -0700 +Subject: [PATCH 1/4] clang: driver: Use /lib for ldso on OE + +OE does not follow the default base_libdir +that clang has, therefore adjust it for OE +it wont be able to support multilib since +in multilib case OE switches the base libdir +for 64bit to /lib64 instead of /lib + +Signed-off-by: Khem Raj +--- + lib/Driver/ToolChains.cpp | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) + +diff --git a/lib/Driver/ToolChains.cpp b/lib/Driver/ToolChains.cpp +index 7884c40..706612d 100644 +--- a/lib/Driver/ToolChains.cpp ++++ b/lib/Driver/ToolChains.cpp +@@ -4227,12 +4227,12 @@ std::string Linux::getDynamicLinker(const ArgList &Args) const { + Loader = "ld.so.1"; + break; + case llvm::Triple::ppc64: +- LibDir = "lib64"; ++ LibDir = "lib"; + Loader = + (tools::ppc::hasPPCAbiArg(Args, "elfv2")) ? "ld64.so.2" : "ld64.so.1"; + break; + case llvm::Triple::ppc64le: +- LibDir = "lib64"; ++ LibDir = "lib"; + Loader = + (tools::ppc::hasPPCAbiArg(Args, "elfv1")) ? "ld64.so.1" : "ld64.so.2"; + break; +@@ -4242,7 +4242,7 @@ std::string Linux::getDynamicLinker(const ArgList &Args) const { + Loader = "ld-linux.so.2"; + break; + case llvm::Triple::sparcv9: +- LibDir = "lib64"; ++ LibDir = "lib"; + Loader = "ld-linux.so.2"; + break; + case llvm::Triple::systemz: +@@ -4256,7 +4256,7 @@ std::string Linux::getDynamicLinker(const ArgList &Args) const { + case llvm::Triple::x86_64: { + bool X32 = Triple.getEnvironment() == llvm::Triple::GNUX32; + +- LibDir = X32 ? "libx32" : "lib64"; ++ LibDir = "lib"; + Loader = X32 ? "ld-linux-x32.so.2" : "ld-linux-x86-64.so.2"; + break; + } +-- +2.9.0 + diff --git a/recipes-devtools/clang/clang/0001-llvm-Remove-CMAKE_CROSSCOMPILING-so-it-can-cross-com.patch b/recipes-devtools/clang/clang/0001-llvm-Remove-CMAKE_CROSSCOMPILING-so-it-can-cross-com.patch index 8190bfb..b659f24 100644 --- a/recipes-devtools/clang/clang/0001-llvm-Remove-CMAKE_CROSSCOMPILING-so-it-can-cross-com.patch +++ b/recipes-devtools/clang/clang/0001-llvm-Remove-CMAKE_CROSSCOMPILING-so-it-can-cross-com.patch @@ -1,4 +1,4 @@ -From f480eebd16f502fabddb5e61f49205606e82945d Mon Sep 17 00:00:00 2001 +From c69a4eba88cff26594193be9aca54f54733689e5 Mon Sep 17 00:00:00 2001 From: Khem Raj Date: Fri, 15 May 2015 12:13:17 -0700 Subject: [PATCH 1/3] llvm: Remove CMAKE_CROSSCOMPILING so it can cross compile diff --git a/recipes-devtools/clang/clang/0002-clang-Driver-tools.cpp-Add-lssp-and-lssp_nonshared-o.patch b/recipes-devtools/clang/clang/0002-clang-Driver-tools.cpp-Add-lssp-and-lssp_nonshared-o.patch new file mode 100644 index 0000000..35b8009 --- /dev/null +++ b/recipes-devtools/clang/clang/0002-clang-Driver-tools.cpp-Add-lssp-and-lssp_nonshared-o.patch @@ -0,0 +1,35 @@ +From ad80343e25ebf5ef82ab3f1b8ce339d4702e5fa6 Mon Sep 17 00:00:00 2001 +From: Khem Raj +Date: Thu, 19 May 2016 21:11:06 -0700 +Subject: [PATCH 2/4] clang: Driver/tools.cpp: Add -lssp and -lssp_nonshared on + musl + +musl driver will need to add ssp libraries to linker cmdline +when using stack protector commands on compiler cmdline + +Signed-off-by: Khem Raj +--- + lib/Driver/Tools.cpp | 7 +++++++ + 1 file changed, 7 insertions(+) + +diff --git a/lib/Driver/Tools.cpp b/lib/Driver/Tools.cpp +index 2425619..ab048ba 100644 +--- a/lib/Driver/Tools.cpp ++++ b/lib/Driver/Tools.cpp +@@ -9451,6 +9451,13 @@ void gnutools::Linker::ConstructJob(Compilation &C, const JobAction &JA, + if (IsIAMCU) + CmdArgs.push_back("-lgloss"); + ++ if (ToolChain.getTriple().isMusl() && ++ (Args.hasArg(options::OPT_fstack_protector) || ++ Args.hasArg(options::OPT_fstack_protector_strong) || ++ Args.hasArg(options::OPT_fstack_protector_all))) { ++ CmdArgs.push_back("-lssp_nonshared"); ++ CmdArgs.push_back("-lssp"); ++ } + if (Args.hasArg(options::OPT_static)) + CmdArgs.push_back("--end-group"); + else +-- +2.9.0 + diff --git a/recipes-devtools/clang/clang/0002-clang-driver-Use-lib-for-ldso-on-OE.patch b/recipes-devtools/clang/clang/0002-clang-driver-Use-lib-for-ldso-on-OE.patch deleted file mode 100644 index eab2743..0000000 --- a/recipes-devtools/clang/clang/0002-clang-driver-Use-lib-for-ldso-on-OE.patch +++ /dev/null @@ -1,55 +0,0 @@ -From 9f267c3838ce237712d3bf62d77218040d10bfaf Mon Sep 17 00:00:00 2001 -From: Khem Raj -Date: Sat, 21 May 2016 21:52:36 -0700 -Subject: [PATCH 2/4] clang: driver: Use /lib for ldso on OE - -OE does not follow the default base_libdir -that clang has, therefore adjust it for OE -it wont be able to support multilib since -in multilib case OE switches the base libdir -for 64bit to /lib64 instead of /lib - -Signed-off-by: Khem Raj ---- - lib/Driver/Tools.cpp | 14 +++++++------- - 1 file changed, 7 insertions(+), 7 deletions(-) - -diff --git a/lib/Driver/Tools.cpp b/lib/Driver/Tools.cpp -index ea8b528..abb7d3b 100644 ---- a/lib/Driver/Tools.cpp -+++ b/lib/Driver/Tools.cpp -@@ -9191,24 +9191,24 @@ static std::string getLinuxDynamicLinker(const ArgList &Args, - case llvm::Triple::ppc: - return "/lib/ld.so.1"; - case llvm::Triple::ppc64: -- return (ppc::hasPPCAbiArg(Args, "elfv2")) ? "/lib64/ld64.so.2" -- : "/lib64/ld64.so.1"; -+ return (ppc::hasPPCAbiArg(Args, "elfv2")) ? "/lib/ld64.so.2" -+ : "/lib/ld64.so.1"; - case llvm::Triple::ppc64le: -- return (ppc::hasPPCAbiArg(Args, "elfv1")) ? "/lib64/ld64.so.1" -- : "/lib64/ld64.so.2"; -+ return (ppc::hasPPCAbiArg(Args, "elfv1")) ? "/lib/ld64.so.1" -+ : "/lib/ld64.so.2"; - case llvm::Triple::sparc: - case llvm::Triple::sparcel: - return "/lib/ld-linux.so.2"; - case llvm::Triple::sparcv9: -- return "/lib64/ld-linux.so.2"; -+ return "/lib/ld-linux.so.2"; - case llvm::Triple::systemz: - return "/lib/ld64.so.1"; - case llvm::Triple::x86: - return "/lib/ld-linux.so.2"; - case llvm::Triple::x86_64: - return (Triple.getEnvironment() == llvm::Triple::GNUX32) -- ? "/libx32/ld-linux-x32.so.2" -- : "/lib64/ld-linux-x86-64.so.2"; -+ ? "/lib/ld-linux-x32.so.2" -+ : "/lib/ld-linux-x86-64.so.2"; - } - } - --- -2.9.0 - diff --git a/recipes-devtools/clang/clang/0002-llvm-Do-not-assume-linux-glibc.patch b/recipes-devtools/clang/clang/0002-llvm-Do-not-assume-linux-glibc.patch index ae33470..94f79b0 100644 --- a/recipes-devtools/clang/clang/0002-llvm-Do-not-assume-linux-glibc.patch +++ b/recipes-devtools/clang/clang/0002-llvm-Do-not-assume-linux-glibc.patch @@ -1,4 +1,4 @@ -From 267078b86f351f2806604a74a05cf02e4ba0a7b8 Mon Sep 17 00:00:00 2001 +From 4a90b1c48b3aa8fe43a93e337def93bdbf82bf0f Mon Sep 17 00:00:00 2001 From: Khem Raj Date: Tue, 15 Mar 2016 05:26:47 +0000 Subject: [PATCH 2/3] llvm: Do not assume linux == glibc diff --git a/recipes-devtools/clang/clang/0003-clang-Driver-tools.cpp-Add-lssp-and-lssp_nonshared-o.patch b/recipes-devtools/clang/clang/0003-clang-Driver-tools.cpp-Add-lssp-and-lssp_nonshared-o.patch deleted file mode 100644 index 532c1b1..0000000 --- a/recipes-devtools/clang/clang/0003-clang-Driver-tools.cpp-Add-lssp-and-lssp_nonshared-o.patch +++ /dev/null @@ -1,35 +0,0 @@ -From 44c64caafedfbcda712102354450b1c5a13a4551 Mon Sep 17 00:00:00 2001 -From: Khem Raj -Date: Thu, 19 May 2016 21:11:06 -0700 -Subject: [PATCH 3/4] clang: Driver/tools.cpp: Add -lssp and -lssp_nonshared on - musl - -musl driver will need to add ssp libraries to linker cmdline -when using stack protector commands on compiler cmdline - -Signed-off-by: Khem Raj ---- - lib/Driver/Tools.cpp | 7 +++++++ - 1 file changed, 7 insertions(+) - -diff --git a/lib/Driver/Tools.cpp b/lib/Driver/Tools.cpp -index abb7d3b..11b418d 100644 ---- a/lib/Driver/Tools.cpp -+++ b/lib/Driver/Tools.cpp -@@ -9503,6 +9503,13 @@ void gnutools::Linker::ConstructJob(Compilation &C, const JobAction &JA, - if (IsIAMCU) - CmdArgs.push_back("-lgloss"); - -+ if (ToolChain.getTriple().isMusl() && -+ (Args.hasArg(options::OPT_fstack_protector) || -+ Args.hasArg(options::OPT_fstack_protector_strong) || -+ Args.hasArg(options::OPT_fstack_protector_all))) { -+ CmdArgs.push_back("-lssp_nonshared"); -+ CmdArgs.push_back("-lssp"); -+ } - if (Args.hasArg(options::OPT_static)) - CmdArgs.push_back("--end-group"); - else --- -2.9.0 - diff --git a/recipes-devtools/clang/clang/0003-clang-musl-ppc-does-not-support-128-bit-long-double.patch b/recipes-devtools/clang/clang/0003-clang-musl-ppc-does-not-support-128-bit-long-double.patch new file mode 100644 index 0000000..182ae91 --- /dev/null +++ b/recipes-devtools/clang/clang/0003-clang-musl-ppc-does-not-support-128-bit-long-double.patch @@ -0,0 +1,27 @@ +From 8a9808b868c81d3fc65a84af74f0969dfc2df877 Mon Sep 17 00:00:00 2001 +From: Khem Raj +Date: Tue, 10 May 2016 02:00:11 -0700 +Subject: [PATCH 3/4] clang: musl/ppc does not support 128-bit long double + +Signed-off-by: Khem Raj +--- + lib/Basic/Targets.cpp | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/lib/Basic/Targets.cpp b/lib/Basic/Targets.cpp +index 5e9ea68..33f0d89 100644 +--- a/lib/Basic/Targets.cpp ++++ b/lib/Basic/Targets.cpp +@@ -1592,7 +1592,8 @@ public: + break; + } + +- if (getTriple().getOS() == llvm::Triple::FreeBSD) { ++ if (getTriple().getOS() == llvm::Triple::FreeBSD ++ || getTriple().isMusl()) { + LongDoubleWidth = LongDoubleAlign = 64; + LongDoubleFormat = &llvm::APFloat::IEEEdouble; + } +-- +2.9.0 + diff --git a/recipes-devtools/clang/clang/0003-llvm-TargetLibraryInfo-Undefine-libc-functions-if-th.patch b/recipes-devtools/clang/clang/0003-llvm-TargetLibraryInfo-Undefine-libc-functions-if-th.patch index 289fe7a..d1b2aff 100644 --- a/recipes-devtools/clang/clang/0003-llvm-TargetLibraryInfo-Undefine-libc-functions-if-th.patch +++ b/recipes-devtools/clang/clang/0003-llvm-TargetLibraryInfo-Undefine-libc-functions-if-th.patch @@ -1,4 +1,4 @@ -From d9873239ee2dc198c7d2a1225d71a6d1ca5aa283 Mon Sep 17 00:00:00 2001 +From b01b39e5b7c7803783ab7bc00fb4e414189d4d10 Mon Sep 17 00:00:00 2001 From: Khem Raj Date: Sat, 21 May 2016 00:33:20 +0000 Subject: [PATCH 3/3] llvm: TargetLibraryInfo: Undefine libc functions if they diff --git a/recipes-devtools/clang/clang/0004-clang-Check-for-float-ABI-on-arm.patch b/recipes-devtools/clang/clang/0004-clang-Check-for-float-ABI-on-arm.patch new file mode 100644 index 0000000..1b54c65 --- /dev/null +++ b/recipes-devtools/clang/clang/0004-clang-Check-for-float-ABI-on-arm.patch @@ -0,0 +1,34 @@ +From 30fb1a92b9d0899a2f25cf1917000aad2f4578c5 Mon Sep 17 00:00:00 2001 +From: Khem Raj +Date: Mon, 4 Jul 2016 20:14:52 -0700 +Subject: [PATCH 4/4] clang: Check for float ABI on arm + +Triggering hard-float on arm does not just +depend upong triplet being *-*-eabihf but +also check for float ABI which can be +set on commandline + +Signed-off-by: Khem Raj + +xx +--- + lib/Driver/ToolChains.cpp | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/lib/Driver/ToolChains.cpp b/lib/Driver/ToolChains.cpp +index 706612d..8bac35a 100644 +--- a/lib/Driver/ToolChains.cpp ++++ b/lib/Driver/ToolChains.cpp +@@ -4169,7 +4169,8 @@ std::string Linux::getDynamicLinker(const ArgList &Args) const { + default: + ArchName = Triple.getArchName().str(); + } +- if (Triple.getEnvironment() == llvm::Triple::MuslEABIHF) ++ if (Triple.getEnvironment() == llvm::Triple::MuslEABIHF || ++ tools::arm::getARMFloatABI(*this, Args) == tools::arm::FloatABI::Hard) + ArchName += "hf"; + + return "/lib/ld-musl-" + ArchName + ".so.1"; +-- +2.9.0 + diff --git a/recipes-devtools/clang/clang/0004-clang-musl-ppc-does-not-support-128-bit-long-double.patch b/recipes-devtools/clang/clang/0004-clang-musl-ppc-does-not-support-128-bit-long-double.patch deleted file mode 100644 index 9904d9e..0000000 --- a/recipes-devtools/clang/clang/0004-clang-musl-ppc-does-not-support-128-bit-long-double.patch +++ /dev/null @@ -1,27 +0,0 @@ -From 688d89497051b733691d38aa3cd0aa045540448e Mon Sep 17 00:00:00 2001 -From: Khem Raj -Date: Tue, 10 May 2016 02:00:11 -0700 -Subject: [PATCH 4/4] clang: musl/ppc does not support 128-bit long double - -Signed-off-by: Khem Raj ---- - lib/Basic/Targets.cpp | 3 ++- - 1 file changed, 2 insertions(+), 1 deletion(-) - -diff --git a/lib/Basic/Targets.cpp b/lib/Basic/Targets.cpp -index 0292e1d..43b34f1 100644 ---- a/lib/Basic/Targets.cpp -+++ b/lib/Basic/Targets.cpp -@@ -1585,7 +1585,8 @@ public: - break; - } - -- if (getTriple().getOS() == llvm::Triple::FreeBSD) { -+ if (getTriple().getOS() == llvm::Triple::FreeBSD -+ || getTriple().isMusl()) { - LongDoubleWidth = LongDoubleAlign = 64; - LongDoubleFormat = &llvm::APFloat::IEEEdouble; - } --- -2.9.0 - diff --git a/recipes-devtools/clang/clang_git.bb b/recipes-devtools/clang/clang_git.bb index 90ddbc6..4ed88d0 100644 --- a/recipes-devtools/clang/clang_git.bb +++ b/recipes-devtools/clang/clang_git.bb @@ -19,10 +19,10 @@ SRC_URI = "${LLVM_GIT}/llvm.git;protocol=${LLVM_GIT_PROTOCOL};branch=${BRANCH};n file://0002-llvm-Do-not-assume-linux-glibc.patch \ file://0003-llvm-TargetLibraryInfo-Undefine-libc-functions-if-th.patch \ \ - file://0001-clang-driver-Add-musl-ldso-support.patch;patchdir=tools/clang \ - file://0002-clang-driver-Use-lib-for-ldso-on-OE.patch;patchdir=tools/clang \ - file://0003-clang-Driver-tools.cpp-Add-lssp-and-lssp_nonshared-o.patch;patchdir=tools/clang \ - file://0004-clang-musl-ppc-does-not-support-128-bit-long-double.patch;patchdir=tools/clang \ + file://0001-clang-driver-Use-lib-for-ldso-on-OE.patch;patchdir=tools/clang \ + file://0002-clang-Driver-tools.cpp-Add-lssp-and-lssp_nonshared-o.patch;patchdir=tools/clang \ + file://0003-clang-musl-ppc-does-not-support-128-bit-long-double.patch;patchdir=tools/clang \ + file://0004-clang-Check-for-float-ABI-on-arm.patch;patchdir=tools/clang \ " SRCREV_FORMAT = "llvm_clang" -- cgit v1.2.3-54-g00ecf