mirror of
git://git.yoctoproject.org/poky.git
synced 2025-07-19 21:09:03 +02:00
gcc: Link libssp_nonshared.a only on musl targets
glibc already provides the content for libssp_nonshared in libc_nonshared.a therefore we dont need to make it universal. This also fixed build issues on glibc when linking statically and using -fstack-protector Fixed errors like /mnt/a/oe/build/tmp/work/i586-bec-linux/aufs-util/3.14+gitAUTOINC+bdfcc0dcfc-r0/recipe-sysroot/usr/lib/../lib/libc.a(stack_chk_fail.o): In function `__stack_chk_fail': /usr/src/debug/glibc/2.26-r0/git/debug/stack_chk_fail.c:27: multiple definition of `__stack_chk_fail_local' /mnt/a/oe/build/tmp/work/i586-bec-linux/aufs-util/3.14+gitAUTOINC+bdfcc0dcfc-r0/recipe-sysroot/usr/lib/../lib/libssp_nonshared.a(libssp_nonshared_la-ssp-local.o):/usr/src/debug/gcc-runtime/7.1.0-r0/gcc-7.1.0/build.i586-bec-linux.i586-bec-linux/i586-bec-linux/libssp/../../../../../../../../work-shared/gcc-7.1.0-r0/gcc-7.1.0/libssp/ssp-local.c:47: first defined here collect2: error: ld returned 1 exit status Cherry-picked from oe-core master d71eba26850838b2878efea3f8c392a2eb2ebbfb (From OE-Core rev: 27eaa97595cbac38a8bec118fe3d5f8920ab814e) Signed-off-by: Khem Raj <raj.khem@gmail.com> Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
parent
825073b8ff
commit
3b413b58ed
|
@ -71,7 +71,7 @@ SRC_URI = "\
|
|||
file://0038-Search-target-sysroot-gcc-version-specific-dirs-with.patch \
|
||||
file://0039-Fix-various-_FOR_BUILD-and-related-variables.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://0043-Reuse-fdebug-prefix-map-to-replace-ffile-prefix-map.patch \
|
||||
file://0044-gcc-final.c-fdebug-prefix-map-support-to-remap-sourc.patch \
|
||||
|
|
|
@ -0,0 +1,42 @@
|
|||
From 75a42d6d0f1f9784327f74882195a5c24843d5a8 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 | 6 ++++++
|
||||
1 file changed, 6 insertions(+)
|
||||
|
||||
diff --git a/gcc/config/linux.h b/gcc/config/linux.h
|
||||
index 2e683d0c430..5ff0a2cb2ff 100644
|
||||
--- a/gcc/config/linux.h
|
||||
+++ b/gcc/config/linux.h
|
||||
@@ -182,6 +182,12 @@ 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
|
||||
+#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 */
|
||||
--
|
||||
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
Block a user