mirror of
git://sourceware.org/git/glibc.git
synced 2024-11-21 01:12:26 +08: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
69a7ca7705
commit
3b925599de
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,
|
||||
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'
|
||||
Don't build libraries with profiling information. You may want to
|
||||
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. */
|
||||
#undef ENABLE_STACKGUARD_RANDOMIZE
|
||||
|
||||
/* Define if memory tagging support should be enabled. */
|
||||
#undef USE_MTAG
|
||||
|
||||
/* Package description. */
|
||||
#undef PKGVERSION
|
||||
|
||||
|
@ -84,6 +84,8 @@ mach-interface-list = @mach_interface_list@
|
||||
|
||||
experimental-malloc = @experimental_malloc@
|
||||
|
||||
memory-tagging = @memory_tagging@
|
||||
|
||||
nss-crypt = @libc_cv_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_nss_crypt
|
||||
build_crypt
|
||||
memory_tagging
|
||||
experimental_malloc
|
||||
enable_werror
|
||||
all_warnings
|
||||
@ -781,6 +782,7 @@ enable_all_warnings
|
||||
enable_werror
|
||||
enable_multi_arch
|
||||
enable_experimental_malloc
|
||||
enable_memory_tagging
|
||||
enable_crypt
|
||||
enable_nss_crypt
|
||||
enable_systemtap
|
||||
@ -1450,6 +1452,8 @@ Optional Features:
|
||||
architectures
|
||||
--disable-experimental-malloc
|
||||
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
|
||||
library, libcrypt
|
||||
--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.
|
||||
if test "${enable_crypt+set}" = set; then :
|
||||
enableval=$enable_crypt; build_crypt=$enableval
|
||||
|
15
configure.ac
15
configure.ac
@ -311,6 +311,21 @@ AC_ARG_ENABLE([experimental-malloc],
|
||||
[experimental_malloc=yes])
|
||||
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_HELP_STRING([--disable-crypt],
|
||||
[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
|
||||
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
|
||||
Don't build libraries with profiling information. You may want to use
|
||||
this option if you don't plan to do profiling.
|
||||
|
Loading…
Reference in New Issue
Block a user