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: Sat, 23 Nov 2019 14:25:26 +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.
Thanks for pointing out this problem.
> +# 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
Is it possible to do this via a pragma? If I understand things
correctly, this is not necessary for PI_STATIC_AND_HIDDEN targets
(where initialization of the dynamic loader is simpler).