@@ -38,6 +38,11 @@ Major new features:
and the wfN format length modifiers for arguments pointing to types
int_fastN_t or uint_fastN_t, as specified in draft ISO C2X.
+* A new tunable, glibc.mem.decorate_maps, can be used to add additional
+ information on underlying memory allocated by the glibc (for instance,
+ on thread stack created by pthread_create or memory allocated by
+ malloc).
+
Deprecated and removed features, and other changes affecting compatibility:
* The ldconfig program now skips file names containing ';' or ending in
@@ -3023,5 +3023,5 @@ $(objpfx)tst-dlclose-lazy.out: \
$(objpfx)tst-decorate-maps: $(shared-thread-library)
tst-decorate-maps-ENV = \
- GLIBC_TUNABLES=glibc.malloc.arena_max=8:glibc.malloc.mmap_threshold=1024
+ GLIBC_TUNABLES=glibc.malloc.arena_max=8:glibc.malloc.mmap_threshold=1024:glibc.mem.decorate_maps=1
tst-decorate-maps-ARGS = 8
@@ -160,6 +160,11 @@ glibc {
maxval: 255
security_level: SXID_IGNORE
}
+ decorate_maps {
+ type: INT_32
+ minval: 0
+ maxval: 1
+ }
}
rtld {
@@ -653,6 +653,18 @@ support in the kernel if this tunable has any non-zero value.
The default value is @samp{0}, which disables all memory tagging.
@end deftp
+@deftp Tunable glibc.mem.decorate_maps
+If the kernel supports naming anonymous virtual memory areas (since
+Linux version 5.17), this tunable can be used to control whether
+@theglibc{} decorates the underlying memory obtained from operating
+system with a string describing its usage (for instance, on the thread
+stack created by @code{ptthread_create} or memory allocated by
+@code{malloc}).
+
+This tunable takes a value of 0 and 1, where 1 enables the feature.
+The default value is @samp{0}, which disables the decoration.
+@end deftp
+
@node gmon Tunables
@section gmon Tunables
@cindex gmon tunables
@@ -20,6 +20,7 @@
#include <setvmaname.h>
#include <sys/prctl.h>
#include <sysdep.h>
+#include <elf/dl-tunables.h>
/* If PR_SET_VMA_ANON_NAME is not supported by the kernel, prctl returns
EINVAL. However, it also returns the same error for invalid argument.
@@ -30,6 +31,9 @@
void
__set_vma_name (void *start, size_t len_in, const char *name)
{
+ if (TUNABLE_GET (glibc, mem, decorate_maps, int32_t, NULL) == 0)
+ return;
+
static int prctl_supported = 1;
if (atomic_load_relaxed (&prctl_supported) == 0)
return;