diff options
| author | Adhemerval Zanella <adhemerval.zanella@linaro.org> | 2026-02-12 09:48:53 -0300 |
|---|---|---|
| committer | Adhemerval Zanella <adhemerval.zanella@linaro.org> | 2026-02-18 09:35:03 -0300 |
| commit | 0a380fe9a31bc2d5793c7c5d22d36c45dfe6e2ed (patch) | |
| tree | 19575a841b5a1a594dce21c264a3860f180da16d /elf | |
| parent | ecb60726d0c242b9e92683f23259337b3b915fe4 (diff) | |
| download | glibc-master.zip glibc-master.tar.gz glibc-master.tar.bz2 | |
Also replace the loop with strlen And remove
-fno-tree-loop-distribute-patterns usage.
It requires redirect the strlen to the baseline implementation
for x86_64, aarch64, and loongarch64.
Checked on x86_64-linux-gnu{-v2,v3} and aarch64-linux-gnu with
both gcc-15 and clang-21.
Reviewed-by: DJ Delorie <dj@redhat.com>
Diffstat (limited to 'elf')
| -rw-r--r-- | elf/Makefile | 6 | ||||
| -rw-r--r-- | elf/dl-tunables.c | 14 |
2 files changed, 1 insertions, 19 deletions
diff --git a/elf/Makefile b/elf/Makefile index 396e97b..1a0ed49 100644 --- a/elf/Makefile +++ b/elf/Makefile @@ -97,12 +97,6 @@ ifeq (yesyes,$(build-shared)$(run-built-tests)) tests-special += $(objpfx)list-tunables.out endif -# Make sure that the compiler does not insert any library calls in tunables -# code paths. -ifeq (yes,$(have-loop-to-function)) -CFLAGS-dl-tunables.c += -fno-tree-loop-distribute-patterns -endif - all-dl-routines = $(dl-routines) $(sysdep-dl-routines) # But they are absent from the shared libc, because that code is in ld.so. elide-routines.os = \ diff --git a/elf/dl-tunables.c b/elf/dl-tunables.c index 37ade37..bdb1de4 100644 --- a/elf/dl-tunables.c +++ b/elf/dl-tunables.c @@ -37,16 +37,6 @@ #define TUNABLES_INTERNAL 1 #include "dl-tunables.h" -/* The function might be called before the process is self-relocated. */ -static size_t -__attribute_optimization_barrier__ -_dl_strlen (const char *s) -{ - const char *p = s; - for (; *s != '\0'; s++); - return s - p; -} - static char ** get_next_env (char **envp, char **name, char **val, char ***prev_envp) { @@ -335,10 +325,8 @@ __tunables_init (char **envp) if (tunable_is_name (name, envname)) { /* The environment variable is always null-terminated. */ - size_t envvallen = _dl_strlen (envval); - tunables_env_alias[i] = - (struct tunable_toset_t) { cur, envval, envvallen }; + (struct tunable_toset_t) { cur, envval, strlen (envval) }; break; } } |
