From 028c6a58fdcc0140c71fc787c42a5d74e24984a3 Mon Sep 17 00:00:00 2001 From: Khem Raj Date: Sat, 21 Apr 2018 09:56:21 -0700 Subject: clang: Do not link with -lssp when using -fstack-protector This is provided by libc both (musl and glibc) Signed-off-by: Khem Raj --- .../0001-clang-driver-Use-lib-for-ldso-on-OE.patch | 4 +-- ...r-tools.cpp-Add-lssp-and-lssp_nonshared-o.patch | 35 ---------------------- ...iver-tools.cpp-Add-lssp_nonshared-on-musl.patch | 34 +++++++++++++++++++++ ...-ppc-does-not-support-128-bit-long-double.patch | 4 +-- .../0004-clang-Prepend-trailing-to-sysroot.patch | 4 +-- ...inside-the-target-sysroot-for-compiler-ru.patch | 4 +-- ...ang-Define-releative-gcc-installation-dir.patch | 8 ++--- ...dso-for-musl-on-x86-and-x32-architectures.patch | 4 +-- recipes-devtools/clang/common.inc | 2 +- 9 files changed, 49 insertions(+), 50 deletions(-) delete mode 100644 recipes-devtools/clang/clang/0002-clang-Driver-tools.cpp-Add-lssp-and-lssp_nonshared-o.patch create mode 100644 recipes-devtools/clang/clang/0002-clang-Driver-tools.cpp-Add-lssp_nonshared-on-musl.patch 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 index e1da8f8..d19dd99 100644 --- 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 @@ -1,4 +1,4 @@ -From fa869f4c31bf70694014d24f7b50623aa6247f47 Mon Sep 17 00:00:00 2001 +From a71c6f6cad70c1cb094ffd53ca28135eb87df406 Mon Sep 17 00:00:00 2001 From: Khem Raj Date: Sat, 21 May 2016 21:52:36 -0700 Subject: [PATCH 1/7] clang: driver: Use /lib for ldso on OE @@ -52,5 +52,5 @@ index 1301cdf114..d59512627d 100644 break; } -- -2.16.1 +2.17.0 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 deleted file mode 100644 index b3189d5..0000000 --- a/recipes-devtools/clang/clang/0002-clang-Driver-tools.cpp-Add-lssp-and-lssp_nonshared-o.patch +++ /dev/null @@ -1,35 +0,0 @@ -From 1d96d952f5c293847a405d3566011e015aaa0e88 Mon Sep 17 00:00:00 2001 -From: Khem Raj -Date: Thu, 19 May 2016 21:11:06 -0700 -Subject: [PATCH 2/7] 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/ToolChains/Gnu.cpp | 7 +++++++ - 1 file changed, 7 insertions(+) - -diff --git a/lib/Driver/ToolChains/Gnu.cpp b/lib/Driver/ToolChains/Gnu.cpp -index 7845781f12..802d2e4e4f 100644 ---- a/lib/Driver/ToolChains/Gnu.cpp -+++ b/lib/Driver/ToolChains/Gnu.cpp -@@ -518,6 +518,13 @@ void tools::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.16.1 - diff --git a/recipes-devtools/clang/clang/0002-clang-Driver-tools.cpp-Add-lssp_nonshared-on-musl.patch b/recipes-devtools/clang/clang/0002-clang-Driver-tools.cpp-Add-lssp_nonshared-on-musl.patch new file mode 100644 index 0000000..e9b36c3 --- /dev/null +++ b/recipes-devtools/clang/clang/0002-clang-Driver-tools.cpp-Add-lssp_nonshared-on-musl.patch @@ -0,0 +1,34 @@ +From 0ace54d609aac7d5f1b67d9474e3782a17bec8bf Mon Sep 17 00:00:00 2001 +From: Khem Raj +Date: Thu, 19 May 2016 21:11:06 -0700 +Subject: [PATCH 2/7] clang: Driver/tools.cpp: Add -lssp_nonshared on musl + +musl driver will need to add ssp_nonshared for stack_check_local +on the linker cmdline when using stack protector commands on +compiler cmdline + +Signed-off-by: Khem Raj +--- + lib/Driver/ToolChains/Gnu.cpp | 6 ++++++ + 1 file changed, 6 insertions(+) + +diff --git a/lib/Driver/ToolChains/Gnu.cpp b/lib/Driver/ToolChains/Gnu.cpp +index 7845781f12..bbe7845765 100644 +--- a/lib/Driver/ToolChains/Gnu.cpp ++++ b/lib/Driver/ToolChains/Gnu.cpp +@@ -518,6 +518,12 @@ void tools::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"); ++ } + if (Args.hasArg(options::OPT_static)) + CmdArgs.push_back("--end-group"); + else +-- +2.17.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 index c5fff97..87778d3 100644 --- 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 @@ -1,4 +1,4 @@ -From e12b563d7e5ff427e889f18f035e9b433a578d5f Mon Sep 17 00:00:00 2001 +From d02f7f858c22fc1dcbc1ea3a96a597bcc4aa4d77 Mon Sep 17 00:00:00 2001 From: Khem Raj Date: Tue, 10 May 2016 02:00:11 -0700 Subject: [PATCH 3/7] clang: musl/ppc does not support 128-bit long double @@ -23,5 +23,5 @@ index 04bef258e3..0ae210698a 100644 LongDoubleFormat = &llvm::APFloat::IEEEdouble(); } -- -2.16.1 +2.17.0 diff --git a/recipes-devtools/clang/clang/0004-clang-Prepend-trailing-to-sysroot.patch b/recipes-devtools/clang/clang/0004-clang-Prepend-trailing-to-sysroot.patch index b0bd060..1e5b71f 100644 --- a/recipes-devtools/clang/clang/0004-clang-Prepend-trailing-to-sysroot.patch +++ b/recipes-devtools/clang/clang/0004-clang-Prepend-trailing-to-sysroot.patch @@ -1,4 +1,4 @@ -From 10d236bdc55bddde95d399931514b417f2c96284 Mon Sep 17 00:00:00 2001 +From 8a29645c68da82d6d7d1e7a74fdfad474f5c5755 Mon Sep 17 00:00:00 2001 From: Khem Raj Date: Thu, 16 Mar 2017 09:02:13 -0700 Subject: [PATCH 4/7] clang: Prepend trailing '/' to sysroot @@ -37,5 +37,5 @@ index d59512627d..624953b17f 100644 // Cross-compiling binutils and GCC installations (vanilla and openSUSE at // least) put various tools in a triple-prefixed directory off of the parent -- -2.16.1 +2.17.0 diff --git a/recipes-devtools/clang/clang/0005-clang-Look-inside-the-target-sysroot-for-compiler-ru.patch b/recipes-devtools/clang/clang/0005-clang-Look-inside-the-target-sysroot-for-compiler-ru.patch index 7ec01cd..f491028 100644 --- a/recipes-devtools/clang/clang/0005-clang-Look-inside-the-target-sysroot-for-compiler-ru.patch +++ b/recipes-devtools/clang/clang/0005-clang-Look-inside-the-target-sysroot-for-compiler-ru.patch @@ -1,4 +1,4 @@ -From d4121c0c5ad01dab4f3c35d4fc59ec92bdca36b7 Mon Sep 17 00:00:00 2001 +From 183123464de1762bf755af4f50d77353121188c1 Mon Sep 17 00:00:00 2001 From: Khem Raj Date: Thu, 16 Mar 2017 19:06:26 -0700 Subject: [PATCH 5/7] clang: Look inside the target sysroot for compiler @@ -40,5 +40,5 @@ index f96a1182e3..d286622f8d 100644 llvm::sys::path::append(Path, "lib"); } else { -- -2.16.1 +2.17.0 diff --git a/recipes-devtools/clang/clang/0006-clang-Define-releative-gcc-installation-dir.patch b/recipes-devtools/clang/clang/0006-clang-Define-releative-gcc-installation-dir.patch index 755e8bb..cbc0d19 100644 --- a/recipes-devtools/clang/clang/0006-clang-Define-releative-gcc-installation-dir.patch +++ b/recipes-devtools/clang/clang/0006-clang-Define-releative-gcc-installation-dir.patch @@ -1,4 +1,4 @@ -From 2dfc688d82a570bdcb8b512f91122e388db0684a Mon Sep 17 00:00:00 2001 +From 9a91d0b82ba48a9e2f634197809a1323298ef285 Mon Sep 17 00:00:00 2001 From: Khem Raj Date: Sun, 21 May 2017 15:38:25 -0700 Subject: [PATCH 6/7] clang: Define / releative gcc installation dir @@ -14,10 +14,10 @@ Signed-off-by: Khem Raj 1 file changed, 1 insertion(+) diff --git a/lib/Driver/ToolChains/Gnu.cpp b/lib/Driver/ToolChains/Gnu.cpp -index 802d2e4e4f..3b5c1f860e 100644 +index bbe7845765..692385ff27 100644 --- a/lib/Driver/ToolChains/Gnu.cpp +++ b/lib/Driver/ToolChains/Gnu.cpp -@@ -2071,6 +2071,7 @@ void Generic_GCC::GCCInstallationDetector::ScanLibDirForGCCTriple( +@@ -2070,6 +2070,7 @@ void Generic_GCC::GCCInstallationDetector::ScanLibDirForGCCTriple( // Debian puts cross-compilers in gcc-cross. {"gcc-cross/" + CandidateTriple.str(), "../..", true}, @@ -26,5 +26,5 @@ index 802d2e4e4f..3b5c1f860e 100644 // The Freescale PPC SDK has the gcc libraries in // /usr/lib//x.y.z so have a look there as well. Only do -- -2.16.1 +2.17.0 diff --git a/recipes-devtools/clang/clang/0007-clang-Fix-ldso-for-musl-on-x86-and-x32-architectures.patch b/recipes-devtools/clang/clang/0007-clang-Fix-ldso-for-musl-on-x86-and-x32-architectures.patch index c730477..e54f250 100644 --- a/recipes-devtools/clang/clang/0007-clang-Fix-ldso-for-musl-on-x86-and-x32-architectures.patch +++ b/recipes-devtools/clang/clang/0007-clang-Fix-ldso-for-musl-on-x86-and-x32-architectures.patch @@ -1,4 +1,4 @@ -From 7b0b7262849c2e0ff713cd1ce1b38b70ea04f4e5 Mon Sep 17 00:00:00 2001 +From e847b02f05519e1f93d26c1c7985dca9a111f091 Mon Sep 17 00:00:00 2001 From: Khem Raj Date: Wed, 16 Aug 2017 15:16:15 -0700 Subject: [PATCH 7/7] clang: Fix ldso for musl on x86 and x32 architectures @@ -40,5 +40,5 @@ index 624953b17f..69624f8432 100644 ArchName = Triple.getArchName().str(); } -- -2.16.1 +2.17.0 diff --git a/recipes-devtools/clang/common.inc b/recipes-devtools/clang/common.inc index a751150..36dcca7 100644 --- a/recipes-devtools/clang/common.inc +++ b/recipes-devtools/clang/common.inc @@ -12,7 +12,7 @@ GCCPIE ??= "" # Clang patches CLANGPATCHES = "\ 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://0002-clang-Driver-tools.cpp-Add-lssp_nonshared-on-musl.patch;patchdir=tools/clang \ file://0003-clang-musl-ppc-does-not-support-128-bit-long-double.patch;patchdir=tools/clang \ file://0004-clang-Prepend-trailing-to-sysroot.patch;patchdir=tools/clang \ file://0005-clang-Look-inside-the-target-sysroot-for-compiler-ru.patch;patchdir=tools/clang \ -- cgit v1.2.3-54-g00ecf