Retro68/gcc/config/cet.m4
2018-12-28 16:30:48 +01:00

51 lines
968 B
Plaintext

dnl
dnl GCC_CET_FLAGS
dnl (SHELL-CODE_HANDLER)
dnl
AC_DEFUN([GCC_CET_FLAGS],[dnl
GCC_ENABLE(cet, no, ,[enable Intel CET in target libraries],
permit yes|no|auto)
AC_MSG_CHECKING([for CET support])
case "$host" in
i[[34567]]86-*-linux* | x86_64-*-linux*)
case "$enable_cet" in
auto)
# Check if target supports multi-byte NOPs
# and if assembler supports CET insn.
AC_COMPILE_IFELSE(
[AC_LANG_PROGRAM(
[],
[
#if !defined(__SSE2__)
#error target does not support multi-byte NOPs
#else
asm ("setssbsy");
#endif
])],
[enable_cet=yes],
[enable_cet=no])
;;
yes)
# Check if assembler supports CET.
AC_COMPILE_IFELSE(
[AC_LANG_PROGRAM(
[],
[asm ("setssbsy");])],
[],
[AC_MSG_ERROR([assembler with CET support is required for --enable-cet])])
;;
esac
;;
*)
enable_cet=no
;;
esac
if test x$enable_cet = xyes; then
$1="-fcf-protection -mshstk"
AC_MSG_RESULT([yes])
else
AC_MSG_RESULT([no])
fi
])