This is the mail archive of the
libc-alpha@sourceware.org
mailing list for the glibc project.
Re: [PATCH] Compile elf/rtld.c with -fno-tree-loop-distribute-patterns.
- From: Florian Weimer <fw at deneb dot enyo dot de>
- To: Sandra Loosemore <sandra at codesourcery dot com>
- Cc: <libc-alpha at sourceware dot org>
- Date: Tue, 26 Nov 2019 19:41:39 +0100
- Subject: Re: [PATCH] Compile elf/rtld.c with -fno-tree-loop-distribute-patterns.
- References: <20191121021040.14554-1-sandra@codesourcery.com>
* Sandra Loosemore:
> In GCC 10, the default at -O2 is now -ftree-loop-distribute-patterns.
> This optimization causes GCC to "helpfully" convert the hand-written
> loop in _dl_start into a call to memset, which is not available that
> early in program startup. Similar problems in other places in GLIBC
> have been addressed by explicitly building with
> -fno-tree-loop-distribute-patterns, but this one may have been
> overlooked previously because it only affects targets where
> HAVE_BUILTIN_MEMSET is not defined.
>
> This patch fixes a bug observed on nios2-linux-gnu target that caused
> all programs to segv on startup.
> ---
> elf/Makefile | 6 ++++++
> 1 file changed, 6 insertions(+)
>
> diff --git a/elf/Makefile b/elf/Makefile
> index 0668818..b05af5c 100644
> --- a/elf/Makefile
> +++ b/elf/Makefile
> @@ -65,6 +65,12 @@ CFLAGS-dl-runtime.c += -fexceptions
> -fasynchronous-unwind-tables
> CFLAGS-dl-lookup.c += -fexceptions -fasynchronous-unwind-tables
> CFLAGS-dl-iterate-phdr.c += $(uses-callbacks)
>
> +# On targets without __builtin_memset, rtld.c uses a hand-coded loop
> +# in _dl_start. Make sure this isn't turned into a call to regular memset.
> +ifeq (yes,$(have-loop-to-function))
> +CFLAGS-rtld.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.
I've pushed this now, given that Adhemerval had not objections either,
and it's a solution we have available today. Thanks.