From: Szabolcs Nagy Date: Wed, 6 Jan 2021 14:28:02 +0000 (+0000) Subject: csu: Avoid weak ref for __ehdr_start in static PIE X-Git-Tag: glibc-2.33~38 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=04af1eb3132904519f9bc8fdcca49525bec83fc7;p=thirdparty%2Fglibc.git csu: Avoid weak ref for __ehdr_start in static PIE All linkers support __ehdr_start that support static PIE linking, so there is no need to check for its presence via a weak reference. This avoids a RELATIVE relocation in static PIE startup code on some targets. With non-PIE static linking the weak ref check is kept in case the linker does not support __ehdr_start. Reviewed-by: Adhemerval Zanella --- diff --git a/csu/libc-start.c b/csu/libc-start.c index db859c3bed1..5b9ce1d158c 100644 --- a/csu/libc-start.c +++ b/csu/libc-start.c @@ -175,8 +175,12 @@ LIBC_START_MAIN (int (*main) (int, char **, char ** MAIN_AUXVEC_DECL), information from auxv. */ extern const ElfW(Ehdr) __ehdr_start +# if BUILD_PIE_DEFAULT + __attribute__ ((visibility ("hidden"))); +# else __attribute__ ((weak, visibility ("hidden"))); if (&__ehdr_start != NULL) +# endif { assert (__ehdr_start.e_phentsize == sizeof *GL(dl_phdr)); GL(dl_phdr) = (const void *) &__ehdr_start + __ehdr_start.e_phoff;