[PATCH v5 4/7] csu: Avoid weak ref for __ehdr_start in static PIE
H.J. Lu
hjl.tools@gmail.com
Wed Jan 20 15:36:30 GMT 2021
On Wed, Jan 20, 2021 at 7:34 AM Szabolcs Nagy via Libc-alpha
<libc-alpha@sourceware.org> wrote:
>
> 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.
> ---
> csu/libc-start.c | 4 ++++
> 1 file changed, 4 insertions(+)
>
> diff --git a/csu/libc-start.c b/csu/libc-start.c
> index db859c3bed..5b9ce1d158 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;
> --
> 2.17.1
>
LGTM. Please wait for Adhemerval approval.
--
H.J.
More information about the Libc-alpha
mailing list