GCC_CET_HOST_FLAGS: Check if host supports multi-byte NOPs

Check if host supports multi-byte NOPs before enabling CET on host.

config/

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

libiberty/

	PR binutils/27397
	* configure: Regenerated.
This commit is contained in:
H.J. Lu 2021-03-18 07:54:15 -07:00
parent 835f2fae11
commit 538c15fc2a
4 changed files with 56 additions and 3 deletions

View File

@ -1,3 +1,9 @@
2021-03-18 H.J. Lu <hongjiu.lu@intel.com>
PR binutils/27397
* cet.m4 (GCC_CET_HOST_FLAGS): Check if host supports multi-byte
NOPs.
2021-02-13 Mike Frysinger <vapier@gentoo.org>
* debuginfod.m4: Delete m4_include(../config/pkg.m4).

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

View File

@ -1,3 +1,8 @@
2021-03-18 H.J. Lu <hongjiu.lu@intel.com>
PR binutils/27397
* configure: Regenerated.
2021-01-11 H.J. Lu <hongjiu.lu@intel.com>
PR ld/27173

29
libiberty/configure vendored
View File

@ -5539,6 +5539,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)
{
@ -5575,6 +5603,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