https://gcc.gnu.org/94998 https://bugs.gentoo.org/729074 From 2c7ae01349f779f1d4e66d8831052ee59f9c948b Mon Sep 17 00:00:00 2001 From: "H.J. Lu" Date: Tue, 12 May 2020 10:39:42 -0700 Subject: [PATCH] Enable CET in cross compiler if possible Don't perform CET run-time check for host when cross compiling. Instead, enable CET in cross compiler if possible so that it will run on both CET and non-CET hosts. config/ PR bootstrap/94998 * cet.m4 (GCC_CET_HOST_FLAGS): Enable CET in cross compiler if possible. libiberty/ PR bootstrap/94998 * configure: Regenerated. lto-plugin/ PR bootstrap/94998 * configure: Regenerated. (cherry picked from commit d17cdc17c90ce77cb90c569322c1f241d3530cec) --- config/cet.m4 | 18 ++++++++++++------ libiberty/configure | 12 +++++++++--- lto-plugin/configure | 16 +++++++++++----- 3 files changed, 32 insertions(+), 14 deletions(-) --- a/config/cet.m4 +++ b/config/cet.m4 @@ -111,7 +111,8 @@ if test x$may_have_cet = xyes; then fi if test x$may_have_cet = xyes; then - AC_TRY_RUN([ + if test x$cross_compiling = xno; then + AC_TRY_RUN([ static void foo (void) { @@ -137,12 +138,17 @@ main () bar (); return 0; } - ], - [have_cet=no], - [have_cet=yes]) - if test x$enable_cet = xno -a x$have_cet = xyes; then - AC_MSG_ERROR([Intel CET must be enabled on Intel CET enabled host]) + ], + [have_cet=no], + [have_cet=yes]) + if test x$enable_cet = xno -a x$have_cet = xyes; then + AC_MSG_ERROR([Intel CET must be enabled on Intel CET enabled host]) + fi fi +else + # Enable CET in cross compiler if possible so that it will run on both + # CET and non-CET hosts. + have_cet=yes fi if test x$enable_cet = xyes; then $1="-fcf-protection" --- a/libiberty/configure +++ b/libiberty/configure @@ -5375,7 +5375,8 @@ rm -f core conftest.err conftest.$ac_objext \ fi if test x$may_have_cet = xyes; then - if test "$cross_compiling" = yes; then : + if test x$cross_compiling = xno; then + if test "$cross_compiling" = yes; then : { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot run test program while cross compiling @@ -5420,9 +5421,14 @@ rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi - if test x$enable_cet = xno -a x$have_cet = xyes; then - as_fn_error $? "Intel CET must be enabled on Intel CET enabled host" "$LINENO" 5 + if test x$enable_cet = xno -a x$have_cet = xyes; then + as_fn_error $? "Intel CET must be enabled on Intel CET enabled host" "$LINENO" 5 + fi fi +else + # Enable CET in cross compiler if possible so that it will run on both + # CET and non-CET hosts. + have_cet=yes fi if test x$enable_cet = xyes; then CET_HOST_FLAGS="-fcf-protection" --- a/lto-plugin/configure +++ b/lto-plugin/configure @@ -5768,7 +5768,8 @@ rm -f core conftest.err conftest.$ac_objext \ fi if test x$may_have_cet = xyes; then - if test "$cross_compiling" = yes; then : + if test x$cross_compiling = xno; then + if test "$cross_compiling" = yes; then : { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot run test program while cross compiling @@ -5813,9 +5814,14 @@ rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi - if test x$enable_cet = xno -a x$have_cet = xyes; then - as_fn_error $? "Intel CET must be enabled on Intel CET enabled host" "$LINENO" 5 + if test x$enable_cet = xno -a x$have_cet = xyes; then + as_fn_error $? "Intel CET must be enabled on Intel CET enabled host" "$LINENO" 5 + fi fi +else + # Enable CET in cross compiler if possible so that it will run on both + # CET and non-CET hosts. + have_cet=yes fi if test x$enable_cet = xyes; then CET_HOST_FLAGS="-fcf-protection" @@ -11941,7 +11947,7 @@ else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF -#line 11944 "configure" +#line 11950 "configure" #include "confdefs.h" #if HAVE_DLFCN_H @@ -12047,7 +12053,7 @@ else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF -#line 12050 "configure" +#line 12056 "configure" #include "confdefs.h" #if HAVE_DLFCN_H -- 2.27.0