mirror of
git://sourceware.org/git/glibc.git
synced 2024-11-21 01:12:26 +08:00
9e38f455a6
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.
71 lines
2.3 KiB
Plaintext
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"
|