elf: Remove LD_HWCAP_MASK / tunable glibc.cpu.hwcap_mask

Remove the environment variable LD_HWCAP_MASK and the tunable
glibc.cpu.hwcap_mask as those are not used anymore in common-code
after removal in elf/dl-cache.c:search_cache().

The only remaining user is sparc32 where it is used in
elf_machine_matches_host().  If sparc32 does not need it anymore,
we can get rid of it at all.  Otherwise we could also move
LD_HWCAP_MASK / tunable glibc.cpu.hwcap_mask to be sparc32 specific.
Reviewed-by: Adhemerval Zanella  <adhemerval.zanella@linaro.org>
This commit is contained in:
Stefan Liebler 2024-06-07 13:42:43 +02:00
parent 343439a31e
commit ad0aa1f549
6 changed files with 6 additions and 32 deletions

View File

@ -83,13 +83,6 @@ glibc {
minval: 0 minval: 0
} }
} }
cpu {
hwcap_mask {
type: UINT_64
env_alias: LD_HWCAP_MASK
default: HWCAP_IMPORTANT
}
}
elision { elision {
enable { enable {

View File

@ -52,7 +52,6 @@ static const struct envvar_t filtered_envvars[] =
{ {
{ "GLIBC_TUNABLES", FILTERED_VALUE }, { "GLIBC_TUNABLES", FILTERED_VALUE },
{ "LD_AUDIT", FILTERED_VALUE }, { "LD_AUDIT", FILTERED_VALUE },
{ "LD_HWCAP_MASK", FILTERED_VALUE },
{ "LD_LIBRARY_PATH", FILTERED_VALUE }, { "LD_LIBRARY_PATH", FILTERED_VALUE },
{ "LD_PRELOAD", FILTERED_VALUE }, { "LD_PRELOAD", FILTERED_VALUE },
{ "LD_PROFILE", PROFILE_LIB }, { "LD_PROFILE", PROFILE_LIB },

View File

@ -96,11 +96,11 @@ where 'check' is the tunable name and 'val' is a value of same type.
To get and set tunables in a different namespace from that module, use the full To get and set tunables in a different namespace from that module, use the full
form of the macros as follows: form of the macros as follows:
val = TUNABLE_GET_FULL (glibc, cpu, hwcap_mask, uint64_t, NULL) val = TUNABLE_GET_FULL (glibc, malloc, mmap_max, int32_t, NULL)
TUNABLE_SET_FULL (glibc, cpu, hwcap_mask, val) TUNABLE_SET_FULL (glibc, malloc, mmap_max, val)
where 'glibc' is the top namespace, 'cpu' is the tunable namespace and the where 'glibc' is the top namespace, 'malloc' is the tunable namespace and the
remaining arguments are the same as the short form macros. remaining arguments are the same as the short form macros.
The minimum and maximum values can updated together with the tunable value The minimum and maximum values can updated together with the tunable value
@ -114,11 +114,11 @@ where 'check' is the tunable name, 'val' is a value of same type, 'min' and
To set the minimum and maximum values of tunables in a different namespace To set the minimum and maximum values of tunables in a different namespace
from that module, use the full form of the macros as follows: from that module, use the full form of the macros as follows:
val = TUNABLE_GET_FULL (glibc, cpu, hwcap_mask, uint64_t, NULL) val = TUNABLE_GET_FULL (glibc, malloc, mmap_max, int32_t, NULL)
TUNABLE_SET_WITH_BOUNDS_FULL (glibc, cpu, hwcap_mask, val, min, max) TUNABLE_SET_WITH_BOUNDS_FULL (glibc, malloc, mmap_max, val, min, max)
where 'glibc' is the top namespace, 'cpu' is the tunable namespace and the where 'glibc' is the top namespace, 'malloc' is the tunable namespace and the
remaining arguments are the same as the short form macros. remaining arguments are the same as the short form macros.
When TUNABLE_NAMESPACE is not defined in a module, TUNABLE_GET is equivalent to When TUNABLE_NAMESPACE is not defined in a module, TUNABLE_GET is equivalent to

View File

@ -55,7 +55,6 @@ glibc.cpu.x86_non_temporal_threshold: 0xc0000 (min: 0x4040, max: 0xfffffffffffff
glibc.cpu.x86_memset_non_temporal_threshold: 0xc0000 (min: 0x4040, max: 0xfffffffffffffff) glibc.cpu.x86_memset_non_temporal_threshold: 0xc0000 (min: 0x4040, max: 0xfffffffffffffff)
glibc.cpu.x86_shstk: glibc.cpu.x86_shstk:
glibc.pthread.stack_cache_size: 0x2800000 (min: 0x0, max: 0xffffffffffffffff) glibc.pthread.stack_cache_size: 0x2800000 (min: 0x0, max: 0xffffffffffffffff)
glibc.cpu.hwcap_mask: 0x6 (min: 0x0, max: 0xffffffffffffffff)
glibc.malloc.mmap_max: 0 (min: 0, max: 2147483647) glibc.malloc.mmap_max: 0 (min: 0, max: 2147483647)
glibc.elision.skip_trylock_internal_abort: 3 (min: 0, max: 2147483647) glibc.elision.skip_trylock_internal_abort: 3 (min: 0, max: 2147483647)
glibc.cpu.plt_rewrite: 0 (min: 0, max: 2) glibc.cpu.plt_rewrite: 0 (min: 0, max: 2)
@ -504,16 +503,6 @@ Behavior of @theglibc{} can be tuned to assume specific hardware capabilities
by setting the following tunables in the @code{cpu} namespace: by setting the following tunables in the @code{cpu} namespace:
@end deftp @end deftp
@deftp Tunable glibc.cpu.hwcap_mask
This tunable supersedes the @env{LD_HWCAP_MASK} environment variable and is
identical in features.
The @code{AT_HWCAP} key in the Auxiliary Vector specifies instruction set
extensions available in the processor at runtime for some architectures. The
@code{glibc.cpu.hwcap_mask} tunable allows the user to mask out those
capabilities at runtime, thus disabling use of those extensions.
@end deftp
@deftp Tunable glibc.cpu.hwcaps @deftp Tunable glibc.cpu.hwcaps
The @code{glibc.cpu.hwcaps=-xxx,yyy,-zzz...} tunable allows the user to The @code{glibc.cpu.hwcaps=-xxx,yyy,-zzz...} tunable allows the user to
enable CPU/ARCH feature @code{yyy}, disable CPU/ARCH feature @code{xxx} enable CPU/ARCH feature @code{yyy}, disable CPU/ARCH feature @code{xxx}

View File

@ -12,7 +12,6 @@
"LD_DEBUG\0" \ "LD_DEBUG\0" \
"LD_DEBUG_OUTPUT\0" \ "LD_DEBUG_OUTPUT\0" \
"LD_DYNAMIC_WEAK\0" \ "LD_DYNAMIC_WEAK\0" \
"LD_HWCAP_MASK\0" \
"LD_LIBRARY_PATH\0" \ "LD_LIBRARY_PATH\0" \
"LD_ORIGIN_PATH\0" \ "LD_ORIGIN_PATH\0" \
"LD_PRELOAD\0" \ "LD_PRELOAD\0" \

View File

@ -39,13 +39,7 @@ elf_machine_matches_host (const Elf32_Ehdr *ehdr)
return 1; return 1;
else if (ehdr->e_machine == EM_SPARC32PLUS) else if (ehdr->e_machine == EM_SPARC32PLUS)
{ {
#if defined SHARED
uint64_t hwcap_mask = TUNABLE_GET (glibc, cpu, hwcap_mask, uint64_t,
NULL);
return GLRO(dl_hwcap) & hwcap_mask & HWCAP_SPARC_V9;
#else
return GLRO(dl_hwcap) & HWCAP_SPARC_V9; return GLRO(dl_hwcap) & HWCAP_SPARC_V9;
#endif
} }
else else
return 0; return 0;