commit:     760fcda985678ecd945b7c33764cd2ee2fc879c2
Author:     Sergei Trofimovich <slyfox <AT> gentoo <DOT> org>
AuthorDate: Sat May  5 11:35:47 2018 +0000
Commit:     Sergei Trofimovich <slyfox <AT> gentoo <DOT> org>
CommitDate: Sat May  5 11:46:04 2018 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=760fcda9

toolchain.eclass: disallow USE="ssp -libssp" on mingw targets

gcc-8 added --disable-libssp flag. It used to be gentoo-specific
flag up to gcc-5.4.0 and gentoo was passing --disable-libssp on
all targets except solaris.

On gcc-6 gentoo stopped providing --disable-libssp flag (it became
no-op). USE=ssp became the default with gcc-6.

gcc-8 reintroduced --disable-libssp and that broke mingw. mingw
libc does not provide stack_check_*() functions and USE=ssp forces
compiler to emit those calls.

This change disallows disabling libssp on mingw if USE=ssp is set.

Signed-off-by: Sergei Trofimovich <slyfox <AT> gentoo.org>

 eclass/toolchain.eclass | 12 +++++++++++-
 1 file changed, 11 insertions(+), 1 deletion(-)

diff --git a/eclass/toolchain.eclass b/eclass/toolchain.eclass
index 2cac026eefa..47ee5495739 100644
--- a/eclass/toolchain.eclass
+++ b/eclass/toolchain.eclass
@@ -1207,7 +1207,17 @@ toolchain_src_configure() {
                        if hardened_gcc_is_stable ssp; then
                                export gcc_cv_libc_provides_ssp=yes
                        fi
-                       confgcc+=( --disable-libssp )
+                       if use_if_iuse ssp; then
+                               # On some targets USE="ssp -libssp" is an 
invalid
+                               # configuration as target libc does not provide
+                               # stack_chk_* functions. Do not disable libssp 
there.
+                               case ${CTARGET} in
+                                       mingw*|*-mingw*) ewarn "Not disabling 
libssp" ;;
+                                       *) confgcc+=( --disable-libssp ) ;;
+                               esac
+                       else
+                               confgcc+=( --disable-libssp )
+                       fi
                fi
        fi
 

Reply via email to