gcc: Use libssp_nonshared linker specs only for ppc/musl
Link libssp_nonshared.a only for ppc/musl because glibc already provides the content for libssp_nonshared in libc_nonshared.a and therefore we dont need to make it universal. (From OE-Core rev: c08247e3c7c004a40281d4010186a9ace86e0e47) (From OE-Core rev: ac2aad028daca6ea3aa0c0ccea8d528e896f8349) Signed-off-by: Florin Sarbu <florin@resin.io> Signed-off-by: Armin Kuster <akuster@mvista.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
parent
8f7b65de99
commit
6d7fe76005
|
@ -71,7 +71,7 @@ SRC_URI = "\
|
||||||
file://0038-Search-target-sysroot-gcc-version-specific-dirs-with.patch \
|
file://0038-Search-target-sysroot-gcc-version-specific-dirs-with.patch \
|
||||||
file://0039-Fix-various-_FOR_BUILD-and-related-variables.patch \
|
file://0039-Fix-various-_FOR_BUILD-and-related-variables.patch \
|
||||||
file://0040-nios2-Define-MUSL_DYNAMIC_LINKER.patch \
|
file://0040-nios2-Define-MUSL_DYNAMIC_LINKER.patch \
|
||||||
file://0041-ssp_nonshared.patch \
|
file://0041-Add-ssp_nonshared-to-link-commandline-for-musl-targe.patch \
|
||||||
file://0042-gcc-libcpp-support-ffile-prefix-map-old-new.patch \
|
file://0042-gcc-libcpp-support-ffile-prefix-map-old-new.patch \
|
||||||
file://0043-Reuse-fdebug-prefix-map-to-replace-ffile-prefix-map.patch \
|
file://0043-Reuse-fdebug-prefix-map-to-replace-ffile-prefix-map.patch \
|
||||||
file://0044-gcc-final.c-fdebug-prefix-map-support-to-remap-sourc.patch \
|
file://0044-gcc-final.c-fdebug-prefix-map-support-to-remap-sourc.patch \
|
||||||
|
|
|
@ -0,0 +1,87 @@
|
||||||
|
From 210f6b3b82084cc756e02b8bc12f909a43b14ee8 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Khem Raj <raj.khem@gmail.com>
|
||||||
|
Date: Tue, 27 Jun 2017 18:10:54 -0700
|
||||||
|
Subject: [PATCH 40/49] Add ssp_nonshared to link commandline for musl targets
|
||||||
|
|
||||||
|
when -fstack-protector options are enabled we need to
|
||||||
|
link with ssp_shared on musl since it does not provide
|
||||||
|
the __stack_chk_fail_local() so essentially it provides
|
||||||
|
libssp but not libssp_nonshared something like
|
||||||
|
TARGET_LIBC_PROVIDES_SSP_BUT_NOT_SSP_NONSHARED
|
||||||
|
where-as for glibc the needed symbols
|
||||||
|
are already present in libc_nonshared library therefore
|
||||||
|
we do not need any library helper on glibc based systems
|
||||||
|
but musl needs the libssp_noshared from gcc
|
||||||
|
|
||||||
|
Upstream-Status: Pending
|
||||||
|
|
||||||
|
Signed-off-by: Khem Raj <raj.khem@gmail.com>
|
||||||
|
---
|
||||||
|
gcc/config/linux.h | 7 +++++++
|
||||||
|
gcc/config/rs6000/linux.h | 10 ++++++++++
|
||||||
|
gcc/config/rs6000/linux64.h | 10 ++++++++++
|
||||||
|
3 files changed, 27 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/gcc/config/linux.h b/gcc/config/linux.h
|
||||||
|
index 2e683d0c430..1b4df798671 100644
|
||||||
|
--- a/gcc/config/linux.h
|
||||||
|
+++ b/gcc/config/linux.h
|
||||||
|
@@ -182,6 +182,13 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
|
||||||
|
{ GCC_INCLUDE_DIR, "GCC", 0, 1, 0, 0 }, \
|
||||||
|
{ 0, 0, 0, 0, 0, 0 } \
|
||||||
|
}
|
||||||
|
+#ifdef TARGET_LIBC_PROVIDES_SSP
|
||||||
|
+#undef LINK_SSP_SPEC
|
||||||
|
+#define LINK_SSP_SPEC "%{fstack-protector|fstack-protector-all" \
|
||||||
|
+ "|fstack-protector-strong|fstack-protector-explicit" \
|
||||||
|
+ ":-lssp_nonshared}"
|
||||||
|
+#endif
|
||||||
|
+
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if (DEFAULT_LIBC == LIBC_UCLIBC) && defined (SINGLE_LIBC) /* uClinux */
|
||||||
|
diff --git a/gcc/config/rs6000/linux.h b/gcc/config/rs6000/linux.h
|
||||||
|
index 684afd6c190..22cfa391b89 100644
|
||||||
|
--- a/gcc/config/rs6000/linux.h
|
||||||
|
+++ b/gcc/config/rs6000/linux.h
|
||||||
|
@@ -91,6 +91,16 @@
|
||||||
|
" -m elf32ppclinux")
|
||||||
|
#endif
|
||||||
|
|
||||||
|
+/* link libssp_nonshared.a with musl */
|
||||||
|
+#if DEFAULT_LIBC == LIBC_MUSL
|
||||||
|
+#ifdef TARGET_LIBC_PROVIDES_SSP
|
||||||
|
+#undef LINK_SSP_SPEC
|
||||||
|
+#define LINK_SSP_SPEC "%{fstack-protector|fstack-protector-all" \
|
||||||
|
+ "|fstack-protector-strong|fstack-protector-explicit" \
|
||||||
|
+ ":-lssp_nonshared}"
|
||||||
|
+#endif
|
||||||
|
+#endif
|
||||||
|
+
|
||||||
|
#undef LINK_OS_LINUX_SPEC
|
||||||
|
#define LINK_OS_LINUX_SPEC LINK_OS_LINUX_EMUL " %{!shared: %{!static: \
|
||||||
|
%{rdynamic:-export-dynamic} \
|
||||||
|
diff --git a/gcc/config/rs6000/linux64.h b/gcc/config/rs6000/linux64.h
|
||||||
|
index 3b00ec0fcf0..8371f8d7b6b 100644
|
||||||
|
--- a/gcc/config/rs6000/linux64.h
|
||||||
|
+++ b/gcc/config/rs6000/linux64.h
|
||||||
|
@@ -465,6 +465,16 @@ extern int dot_symbols;
|
||||||
|
" -m elf64ppc")
|
||||||
|
#endif
|
||||||
|
|
||||||
|
+/* link libssp_nonshared.a with musl */
|
||||||
|
+#if DEFAULT_LIBC == LIBC_MUSL
|
||||||
|
+#ifdef TARGET_LIBC_PROVIDES_SSP
|
||||||
|
+#undef LINK_SSP_SPEC
|
||||||
|
+#define LINK_SSP_SPEC "%{fstack-protector|fstack-protector-all" \
|
||||||
|
+ "|fstack-protector-strong|fstack-protector-explicit" \
|
||||||
|
+ ":-lssp_nonshared}"
|
||||||
|
+#endif
|
||||||
|
+#endif
|
||||||
|
+
|
||||||
|
#define LINK_OS_LINUX_SPEC32 LINK_OS_LINUX_EMUL32 " %{!shared: %{!static: \
|
||||||
|
%{rdynamic:-export-dynamic} \
|
||||||
|
-dynamic-linker " GNU_USER_DYNAMIC_LINKER32 "}} \
|
||||||
|
--
|
||||||
|
2.13.2
|
||||||
|
|
|
@ -1,28 +0,0 @@
|
||||||
From 551a5db7acb56e085a101f1c222d51b2c1b039a4 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Szabolcs Nagy <nsz@port70.net>
|
|
||||||
Date: Sat, 7 Nov 2015 14:58:40 +0000
|
|
||||||
Subject: [PATCH 41/46] ssp_nonshared
|
|
||||||
|
|
||||||
---
|
|
||||||
Upstream-Status: Inappropriate [OE Configuration]
|
|
||||||
|
|
||||||
gcc/gcc.c | 3 ++-
|
|
||||||
1 file changed, 2 insertions(+), 1 deletion(-)
|
|
||||||
|
|
||||||
diff --git a/gcc/gcc.c b/gcc/gcc.c
|
|
||||||
index 2812819..9de96ee 100644
|
|
||||||
--- a/gcc/gcc.c
|
|
||||||
+++ b/gcc/gcc.c
|
|
||||||
@@ -863,7 +863,8 @@ proper position among the other output files. */
|
|
||||||
#ifndef LINK_SSP_SPEC
|
|
||||||
#ifdef TARGET_LIBC_PROVIDES_SSP
|
|
||||||
#define LINK_SSP_SPEC "%{fstack-protector|fstack-protector-all" \
|
|
||||||
- "|fstack-protector-strong|fstack-protector-explicit:}"
|
|
||||||
+ "|fstack-protector-strong|fstack-protector-explicit" \
|
|
||||||
+ ":-lssp_nonshared}"
|
|
||||||
#else
|
|
||||||
#define LINK_SSP_SPEC "%{fstack-protector|fstack-protector-all" \
|
|
||||||
"|fstack-protector-strong|fstack-protector-explicit" \
|
|
||||||
--
|
|
||||||
2.8.2
|
|
||||||
|
|
Loading…
Reference in New Issue