mirror of
https://sourceware.org/git/glibc.git
synced 2024-11-24 14:00:30 +00:00
config: Allow memory tagging to be enabled when configuring glibc
This patch adds the configuration machinery to allow memory tagging to be enabled from the command line via the configure option --enable-memory-tagging. The current default is off, though in time we may change that once the API is more stable.
This commit is contained in:
parent
d552058570
commit
3378408987
14
INSTALL
14
INSTALL
@ -142,6 +142,20 @@ if 'CFLAGS' is specified it must enable optimization. For example:
|
|||||||
non-CET processors. '--enable-cet' has been tested for i686,
|
non-CET processors. '--enable-cet' has been tested for i686,
|
||||||
x86_64 and x32 on CET processors.
|
x86_64 and x32 on CET processors.
|
||||||
|
|
||||||
|
'--enable-memory-tagging'
|
||||||
|
Enable memory tagging support if the architecture supports it.
|
||||||
|
When the GNU C Library is built with this option then the resulting
|
||||||
|
library will be able to control the use of tagged memory when
|
||||||
|
hardware support is present by use of the tunable
|
||||||
|
'glibc.mem.tagging'. This includes the generation of tagged memory
|
||||||
|
when using the 'malloc' APIs.
|
||||||
|
|
||||||
|
At present only AArch64 platforms with MTE provide this
|
||||||
|
functionality, although the library will still operate (without
|
||||||
|
memory tagging) on older versions of the architecture.
|
||||||
|
|
||||||
|
The default is to disable support for memory tagging.
|
||||||
|
|
||||||
'--disable-profile'
|
'--disable-profile'
|
||||||
Don't build libraries with profiling information. You may want to
|
Don't build libraries with profiling information. You may want to
|
||||||
use this option if you don't plan to do profiling.
|
use this option if you don't plan to do profiling.
|
||||||
|
@ -160,6 +160,9 @@
|
|||||||
/* Define if __stack_chk_guard canary should be randomized at program startup. */
|
/* Define if __stack_chk_guard canary should be randomized at program startup. */
|
||||||
#undef ENABLE_STACKGUARD_RANDOMIZE
|
#undef ENABLE_STACKGUARD_RANDOMIZE
|
||||||
|
|
||||||
|
/* Define if memory tagging support should be enabled. */
|
||||||
|
#undef USE_MTAG
|
||||||
|
|
||||||
/* Package description. */
|
/* Package description. */
|
||||||
#undef PKGVERSION
|
#undef PKGVERSION
|
||||||
|
|
||||||
|
@ -84,6 +84,8 @@ mach-interface-list = @mach_interface_list@
|
|||||||
|
|
||||||
experimental-malloc = @experimental_malloc@
|
experimental-malloc = @experimental_malloc@
|
||||||
|
|
||||||
|
memory-tagging = @memory_tagging@
|
||||||
|
|
||||||
nss-crypt = @libc_cv_nss_crypt@
|
nss-crypt = @libc_cv_nss_crypt@
|
||||||
static-nss-crypt = @libc_cv_static_nss_crypt@
|
static-nss-crypt = @libc_cv_static_nss_crypt@
|
||||||
|
|
||||||
|
22
configure
vendored
22
configure
vendored
@ -676,6 +676,7 @@ build_nscd
|
|||||||
libc_cv_static_nss_crypt
|
libc_cv_static_nss_crypt
|
||||||
libc_cv_nss_crypt
|
libc_cv_nss_crypt
|
||||||
build_crypt
|
build_crypt
|
||||||
|
memory_tagging
|
||||||
experimental_malloc
|
experimental_malloc
|
||||||
enable_werror
|
enable_werror
|
||||||
all_warnings
|
all_warnings
|
||||||
@ -781,6 +782,7 @@ enable_all_warnings
|
|||||||
enable_werror
|
enable_werror
|
||||||
enable_multi_arch
|
enable_multi_arch
|
||||||
enable_experimental_malloc
|
enable_experimental_malloc
|
||||||
|
enable_memory_tagging
|
||||||
enable_crypt
|
enable_crypt
|
||||||
enable_nss_crypt
|
enable_nss_crypt
|
||||||
enable_systemtap
|
enable_systemtap
|
||||||
@ -1450,6 +1452,8 @@ Optional Features:
|
|||||||
architectures
|
architectures
|
||||||
--disable-experimental-malloc
|
--disable-experimental-malloc
|
||||||
disable experimental malloc features
|
disable experimental malloc features
|
||||||
|
--enable-memory-tagging enable memory tagging if supported by the
|
||||||
|
architecture [default=no]
|
||||||
--disable-crypt do not build nor install the passphrase hashing
|
--disable-crypt do not build nor install the passphrase hashing
|
||||||
library, libcrypt
|
library, libcrypt
|
||||||
--enable-nss-crypt enable libcrypt to use nss
|
--enable-nss-crypt enable libcrypt to use nss
|
||||||
@ -3519,6 +3523,24 @@ fi
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# Check whether --enable-memory-tagging was given.
|
||||||
|
if test "${enable_memory_tagging+set}" = set; then :
|
||||||
|
enableval=$enable_memory_tagging; memory_tagging=$enableval
|
||||||
|
else
|
||||||
|
memory_tagging=no
|
||||||
|
fi
|
||||||
|
|
||||||
|
if test "$memory_tagging" = yes; then
|
||||||
|
# Only enable this on architectures that support it.
|
||||||
|
case $host_cpu in
|
||||||
|
aarch64)
|
||||||
|
$as_echo "#define USE_MTAG 1" >>confdefs.h
|
||||||
|
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
# Check whether --enable-crypt was given.
|
# Check whether --enable-crypt was given.
|
||||||
if test "${enable_crypt+set}" = set; then :
|
if test "${enable_crypt+set}" = set; then :
|
||||||
enableval=$enable_crypt; build_crypt=$enableval
|
enableval=$enable_crypt; build_crypt=$enableval
|
||||||
|
15
configure.ac
15
configure.ac
@ -311,6 +311,21 @@ AC_ARG_ENABLE([experimental-malloc],
|
|||||||
[experimental_malloc=yes])
|
[experimental_malloc=yes])
|
||||||
AC_SUBST(experimental_malloc)
|
AC_SUBST(experimental_malloc)
|
||||||
|
|
||||||
|
AC_ARG_ENABLE([memory-tagging],
|
||||||
|
AC_HELP_STRING([--enable-memory-tagging],
|
||||||
|
[enable memory tagging if supported by the architecture @<:@default=no@:>@]),
|
||||||
|
[memory_tagging=$enableval],
|
||||||
|
[memory_tagging=no])
|
||||||
|
if test "$memory_tagging" = yes; then
|
||||||
|
# Only enable this on architectures that support it.
|
||||||
|
case $host_cpu in
|
||||||
|
aarch64)
|
||||||
|
AC_DEFINE(USE_MTAG)
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
fi
|
||||||
|
AC_SUBST(memory_tagging)
|
||||||
|
|
||||||
AC_ARG_ENABLE([crypt],
|
AC_ARG_ENABLE([crypt],
|
||||||
AC_HELP_STRING([--disable-crypt],
|
AC_HELP_STRING([--disable-crypt],
|
||||||
[do not build nor install the passphrase hashing library, libcrypt]),
|
[do not build nor install the passphrase hashing library, libcrypt]),
|
||||||
|
@ -171,6 +171,19 @@ NOTE: @option{--enable-cet} has been tested for i686, x86_64 and x32
|
|||||||
on non-CET processors. @option{--enable-cet} has been tested for
|
on non-CET processors. @option{--enable-cet} has been tested for
|
||||||
i686, x86_64 and x32 on CET processors.
|
i686, x86_64 and x32 on CET processors.
|
||||||
|
|
||||||
|
@item --enable-memory-tagging
|
||||||
|
Enable memory tagging support if the architecture supports it. When
|
||||||
|
@theglibc{} is built with this option then the resulting library will
|
||||||
|
be able to control the use of tagged memory when hardware support is
|
||||||
|
present by use of the tunable @samp{glibc.mem.tagging}. This includes
|
||||||
|
the generation of tagged memory when using the @code{malloc} APIs.
|
||||||
|
|
||||||
|
At present only AArch64 platforms with MTE provide this functionality,
|
||||||
|
although the library will still operate (without memory tagging) on
|
||||||
|
older versions of the architecture.
|
||||||
|
|
||||||
|
The default is to disable support for memory tagging.
|
||||||
|
|
||||||
@item --disable-profile
|
@item --disable-profile
|
||||||
Don't build libraries with profiling information. You may want to use
|
Don't build libraries with profiling information. You may want to use
|
||||||
this option if you don't plan to do profiling.
|
this option if you don't plan to do profiling.
|
||||||
|
Loading…
Reference in New Issue
Block a user