[OE-core] [pyro][PATCH] gcc: Use libssp_nonshared linker specs only for ppc/musl

Florin Ionut samentu1 at gmail.com
Wed Nov 15 19:00:30 UTC 2017


Hi,
any comments on this commit?

Thanks

On Mon, Nov 13, 2017 at 9:00 PM, Florin Sarbu <samentu1 at gmail.com> wrote:

> 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)
>
> Signed-off-by: Florin Sarbu <florin at resin.io>
> ---
>  meta/recipes-devtools/gcc/gcc-6.3.inc              |  2 +-
>  ...shared-to-link-commandline-for-musl-targe.patch | 87
> ++++++++++++++++++++++
>  .../gcc/gcc-6.3/0041-ssp_nonshared.patch           | 28 -------
>  3 files changed, 88 insertions(+), 29 deletions(-)
>  create mode 100644 meta/recipes-devtools/gcc/gcc-
> 6.3/0041-Add-ssp_nonshared-to-link-commandline-for-musl-targe.patch
>  delete mode 100644 meta/recipes-devtools/gcc/gcc-
> 6.3/0041-ssp_nonshared.patch
>
> diff --git a/meta/recipes-devtools/gcc/gcc-6.3.inc
> b/meta/recipes-devtools/gcc/gcc-6.3.inc
> index d74f12c466..5c81a33af0 100644
> --- a/meta/recipes-devtools/gcc/gcc-6.3.inc
> +++ b/meta/recipes-devtools/gcc/gcc-6.3.inc
> @@ -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
> \
> diff --git a/meta/recipes-devtools/gcc/gcc-6.3/0041-Add-ssp_
> nonshared-to-link-commandline-for-musl-targe.patch
> b/meta/recipes-devtools/gcc/gcc-6.3/0041-Add-ssp_
> nonshared-to-link-commandline-for-musl-targe.patch
> new file mode 100644
> index 0000000000..29b7ce72d2
> --- /dev/null
> +++ b/meta/recipes-devtools/gcc/gcc-6.3/0041-Add-ssp_
> nonshared-to-link-commandline-for-musl-targe.patch
> @@ -0,0 +1,87 @@
> +From 210f6b3b82084cc756e02b8bc12f909a43b14ee8 Mon Sep 17 00:00:00 2001
> +From: Khem Raj <raj.khem at 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 at 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
> +
> diff --git a/meta/recipes-devtools/gcc/gcc-6.3/0041-ssp_nonshared.patch
> b/meta/recipes-devtools/gcc/gcc-6.3/0041-ssp_nonshared.patch
> deleted file mode 100644
> index 0744529741..0000000000
> --- a/meta/recipes-devtools/gcc/gcc-6.3/0041-ssp_nonshared.patch
> +++ /dev/null
> @@ -1,28 +0,0 @@
> -From 551a5db7acb56e085a101f1c222d51b2c1b039a4 Mon Sep 17 00:00:00 2001
> -From: Szabolcs Nagy <nsz at 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
> -
> --
> 2.13.6
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.openembedded.org/pipermail/openembedded-core/attachments/20171115/3b2da301/attachment-0002.html>


More information about the Openembedded-core mailing list