aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorH.J. Lu <hjl.tools@gmail.com>2021-02-12 16:30:23 -0800
committerH.J. Lu <hjl.tools@gmail.com>2021-05-03 05:00:05 -0700
commitfd7eb4bc94cafa745eba75c64fa483a1689a5aad (patch)
treefe9a68be3e55f37d4353b944e77a472dcbf4f5d4
parent4f48c335d36674f90046b2823f0ac1c0545dc082 (diff)
downloadgcc-fd7eb4bc94cafa745eba75c64fa483a1689a5aad.zip
gcc-fd7eb4bc94cafa745eba75c64fa483a1689a5aad.tar.gz
gcc-fd7eb4bc94cafa745eba75c64fa483a1689a5aad.tar.bz2
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.
-rw-r--r--config/cet.m419
-rwxr-xr-xlibiberty/configure29
2 files changed, 45 insertions, 3 deletions
diff --git a/config/cet.m4 b/config/cet.m4
index c67fb4f..7718be1 100644
--- a/config/cet.m4
+++ b/config/cet.m4
@@ -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
diff --git a/libiberty/configure b/libiberty/configure
index 2ea7c11..fc0c953 100755
--- a/libiberty/configure
+++ b/libiberty/configure
@@ -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