aboutsummaryrefslogtreecommitdiff
path: root/elf
diff options
context:
space:
mode:
authorAdhemerval Zanella <adhemerval.zanella@linaro.org>2022-10-06 12:35:35 -0300
committerAdhemerval Zanella <adhemerval.zanella@linaro.org>2022-10-10 10:32:28 -0300
commit5355f9ca7b10183ce06e8a18003ba30f43774858 (patch)
treef32e7d1293eb1eaa33267bfe0faed90b67eb990f /elf
parentc15318bfc5499d835c434a4d98b688aa2d928412 (diff)
downloadglibc-5355f9ca7b10183ce06e8a18003ba30f43774858.zip
glibc-5355f9ca7b10183ce06e8a18003ba30f43774858.tar.gz
glibc-5355f9ca7b10183ce06e8a18003ba30f43774858.tar.bz2
elf: Remove -fno-tree-loop-distribute-patterns usage on dl-support
Besides the option being gcc specific, this approach is still fragile and not future proof since we do not know if this will be the only optimization option gcc will add that transforms loops to memset (or any libcall). This patch adds a new header, dl-symbol-redir-ifunc.h, that can b used to redirect the compiler generated libcalls to port the generic memset implementation if required. Checked on x86_64-linux-gnu and aarch64-linux-gnu. Reviewed-by: Carlos O'Donell <carlos@redhat.com>
Diffstat (limited to 'elf')
-rw-r--r--elf/Makefile5
-rw-r--r--elf/dl-support.c1
2 files changed, 1 insertions, 5 deletions
diff --git a/elf/Makefile b/elf/Makefile
index 276343a..7b50ccc 100644
--- a/elf/Makefile
+++ b/elf/Makefile
@@ -162,11 +162,6 @@ ifeq (yes,$(have-loop-to-function))
CFLAGS-rtld.c += -fno-tree-loop-distribute-patterns
endif
-ifeq (yes,$(have-loop-to-function))
-# Likewise, during static library startup, memset is not yet available.
-CFLAGS-dl-support.c = -fno-tree-loop-distribute-patterns
-endif
-
# Compile rtld itself without stack protection.
# Also compile all routines in the static library that are elided from
# the shared libc because they are in libc.a in the same way.
diff --git a/elf/dl-support.c b/elf/dl-support.c
index 4af0b5b..614b5b3 100644
--- a/elf/dl-support.c
+++ b/elf/dl-support.c
@@ -44,6 +44,7 @@
#include <dl-auxv.h>
#include <dl-find_object.h>
#include <array_length.h>
+#include <dl-symbol-redir-ifunc.h>
extern char *__progname;
char **_dl_argv = &__progname; /* This is checked for some error messages. */