GCC_CET_HOST_FLAGS: Check if host supports multi-byte NOPs

Sync with binutils for PR binutils/27397.  Check if host supports
multi-byte NOPs before enabling CET on host.

config/

	PR bootstrap/99703
	* cet.m4 (GCC_CET_HOST_FLAGS): Check if host supports multi-byte
	NOPs.

libiberty/

	PR bootstrap/99703
	* configure: Regenerated.
This commit is contained in:
H.J. Lu 2021-02-12 16:30:23 -08:00
parent 4f48c335d3
commit fd7eb4bc94
2 changed files with 45 additions and 3 deletions

View File

@ -130,6 +130,18 @@ fi
if test x$may_have_cet = xyes; then
if test x$cross_compiling = xno; then
AC_TRY_RUN([
int
main ()
{
asm ("endbr32");
return 0;
}
],
[have_multi_byte_nop=yes],
[have_multi_byte_nop=no])
have_cet=no
if test x$have_multi_byte_nop = xyes; then
AC_TRY_RUN([
static void
foo (void)
{
@ -155,9 +167,10 @@ main ()
bar ();
return 0;
}
],
[have_cet=no],
[have_cet=yes])
],
[have_cet=no],
[have_cet=yes])
fi
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

29
libiberty/configure vendored
View File

@ -5396,6 +5396,34 @@ else
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
int
main ()
{
asm ("endbr32");
return 0;
}
_ACEOF
if ac_fn_c_try_run "$LINENO"; then :
have_multi_byte_nop=yes
else
have_multi_byte_nop=no
fi
rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
have_cet=no
if test x$have_multi_byte_nop = xyes; 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
See \`config.log' for more details" "$LINENO" 5; }
else
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
static void
foo (void)
{
@ -5432,6 +5460,7 @@ rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
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
fi