glibc/sysdeps/x86/configure
H.J. Lu 9e38f455a6 x86: Add --enable-cet=permissive
When CET is enabled, it is an error to dlopen a non CET enabled shared
library in CET enabled application.  It may be desirable to make CET
permissive, that is disable CET when dlopening a non CET enabled shared
library.  With the new --enable-cet=permissive configure option, CET is
disabled when dlopening a non CET enabled shared library.

Add DEFAULT_DL_X86_CET_CONTROL to config.h.in:

 /* The default value of x86 CET control.  */
 #define DEFAULT_DL_X86_CET_CONTROL cet_elf_property

which enables CET features based on ELF property note.

--enable-cet=permissive it to

 /* The default value of x86 CET control.  */
 #define DEFAULT_DL_X86_CET_CONTROL cet_permissive

which enables CET features permissively.

Update tst-cet-legacy-5a, tst-cet-legacy-5b, tst-cet-legacy-6a and
tst-cet-legacy-6b to check --enable-cet and --enable-cet=permissive.
2020-05-18 08:38:53 -07:00

71 lines
2.3 KiB
Plaintext

# This file is generated from configure.ac by Autoconf. DO NOT EDIT!
# Local configure fragment for sysdeps/x86.
if test $enable_cet != no; then
# Check if CET can be enabled.
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether CET can be enabled" >&5
$as_echo_n "checking whether CET can be enabled... " >&6; }
if ${libc_cv_x86_cet_available+:} false; then :
$as_echo_n "(cached) " >&6
else
cat > conftest.c <<EOF
#if !defined __CET__ || __CET__ != 3
# error CET isn't available.
#endif
EOF
if { ac_try='${CC-cc} -c $CFLAGS -fcf-protection -include cet.h conftest.c 1>&5'
{ { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
(eval $ac_try) 2>&5
ac_status=$?
$as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }; }; then
libc_cv_x86_cet_available=yes
else
libc_cv_x86_cet_available=no
fi
rm -rf conftest*
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libc_cv_x86_cet_available" >&5
$as_echo "$libc_cv_x86_cet_available" >&6; }
if test $libc_cv_x86_cet_available != yes; then
as_fn_error $? "$CC doesn't support CET" "$LINENO" 5
fi
fi
if test $enable_cet != no; then
# Check if assembler supports CET.
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $AS supports CET" >&5
$as_echo_n "checking whether $AS supports CET... " >&6; }
if ${libc_cv_x86_cet_as+:} false; then :
$as_echo_n "(cached) " >&6
else
cat > conftest.s <<EOF
incsspd %ecx
EOF
if { ac_try='${CC-cc} -c $CFLAGS conftest.s -o conftest.o 1>&5'
{ { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
(eval $ac_try) 2>&5
ac_status=$?
$as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }; }; then
libc_cv_x86_cet_as=yes
else
libc_cv_x86_cet_as=no
fi
rm -rf conftest*
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libc_cv_x86_cet_as" >&5
$as_echo "$libc_cv_x86_cet_as" >&6; }
if test $libc_cv_x86_cet_as = no; then
as_fn_error $? "$AS doesn't support CET" "$LINENO" 5
fi
fi
if test $enable_cet = yes; then
$as_echo "#define DEFAULT_DL_X86_CET_CONTROL cet_elf_property" >>confdefs.h
elif test $enable_cet = permissive; then
$as_echo "#define DEFAULT_DL_X86_CET_CONTROL cet_permissive" >>confdefs.h
fi
config_vars="$config_vars
enable-cet = $enable_cet"