[OE-core] [PATCH 3/4] gcc-runtime: Disable gcc version of libssp

Burton, Ross ross.burton at intel.com
Tue Apr 17 10:12:20 UTC 2018


This is, I suspect, the cause of nativesdk-perl failing on the autobuilder:

TOPDIR/tmp/work/x86_64-nativesdk-pokysdk-linux/nativesdk-perl/5.24.1-r0/recipe-sysroot-native/usr/bin/x86_64-pokysdk-linux/../../libexec/x86_64-pokysdk-linux/gcc/x86_64-pokysdk-linux/7.3.0/ld:
cannot find -lssp_nonshared
TOPDIR/tmp/work/x86_64-nativesdk-pokysdk-linux/nativesdk-perl/5.24.1-r0/recipe-sysroot-native/usr/bin/x86_64-pokysdk-linux/../../libexec/x86_64-pokysdk-linux/gcc/x86_64-pokysdk-linux/7.3.0/ld:
cannot find -lssp
collect2: error: ld returned 1 exit status
makefile:391: recipe for target 'lib/buildcustomize.pl' failed

http://errors.yoctoproject.org/Errors/Details/176127/

Ross

On 16 April 2018 at 07:50, Khem Raj <raj.khem at gmail.com> wrote:
> libssp is implemented fully in glibc as well as in musl
> so we really do not need the gcc version of this library
> except may be for mingw, where we keep it enabled anyway
> gcc in OE is built with the knowledge that C library
> already provides libssp implementation, we should therefore
> not need the gcc implementation of same.
>
> libssp_nonshared piece is a detail which is needed when gcc
> is the compiler, in glibc this is part of libc_nonshared.a
> already and libc_nonshared.a is linked always when linking
> with -lc becuase libc.so in glibc is actually a linker script
>
> GROUP ( /usr/lib/libc.so.6 /usr/lib/libc_nonshared.a  AS_NEEDED ( /usr/lib/ld-linux-x86-64.so.2 ) )
>
> which automatically links in the needed runtime bits, this however
> is not the case for musl, where core SSP APIs are implemented in full
> but compiler specific runtime isn't, for this we add a new package
> called libssp_nonshared which generate the needed runtime stub
> and gcc is already carrying patch to link to libssp_nonshared.a
> on musl
>
> This should fix a long standing problem where static PIE executable
> were not buildable with OE since it was conflicting SSP implementation
> one from C library and the other one from gcc and we end up with
> duplicate symbol errors during linking.
>
> Signed-off-by: Khem Raj <raj.khem at gmail.com>
> ---
>  meta/recipes-devtools/gcc/gcc-7.3.inc     | 4 +++-
>  meta/recipes-devtools/gcc/gcc-runtime.inc | 4 +++-
>  2 files changed, 6 insertions(+), 2 deletions(-)
>
> diff --git a/meta/recipes-devtools/gcc/gcc-7.3.inc b/meta/recipes-devtools/gcc/gcc-7.3.inc
> index d968c322d2..7e52afc643 100644
> --- a/meta/recipes-devtools/gcc/gcc-7.3.inc
> +++ b/meta/recipes-devtools/gcc/gcc-7.3.inc
> @@ -93,10 +93,12 @@ FORTRAN = ""
>  JAVA = ""
>
>  LTO = "--enable-lto"
> +SSP ?= "--disable-libssp"
> +SSP_mingw = "--enable-libssp"
>
>  EXTRA_OECONF_BASE = "\
>      ${LTO} \
> -    --enable-libssp \
> +    ${SSP} \
>      --enable-libitm \
>      --disable-bootstrap \
>      --disable-libmudflap \
> diff --git a/meta/recipes-devtools/gcc/gcc-runtime.inc b/meta/recipes-devtools/gcc/gcc-runtime.inc
> index 97365a21dc..b4e5539575 100644
> --- a/meta/recipes-devtools/gcc/gcc-runtime.inc
> +++ b/meta/recipes-devtools/gcc/gcc-runtime.inc
> @@ -24,8 +24,10 @@ RUNTIMELIBITM_nios2 = ""
>  RUNTIMELIBITM_microblaze = ""
>  RUNTIMELIBITM_riscv32 = ""
>  RUNTIMELIBITM_riscv64 = ""
> +RUNTIMELIBSSP ?= ""
> +RUNTIMELIBSSP_mingw ?= "libssp"
>
> -RUNTIMETARGET = "libssp libstdc++-v3 libgomp libatomic ${RUNTIMELIBITM} \
> +RUNTIMETARGET = "libstdc++-v3 libgomp libatomic ${RUNTIMELIBITM} \
>      ${@bb.utils.contains_any('FORTRAN', [',fortran',',f77'], 'libquadmath', '', d)} \
>  "
>  RUNTIMETARGET_append_x86 = " libmpx"
> --
> 2.17.0
>
> --
> _______________________________________________
> Openembedded-core mailing list
> Openembedded-core at lists.openembedded.org
> http://lists.openembedded.org/mailman/listinfo/openembedded-core



More information about the Openembedded-core mailing list