| 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 |
| ]) |