[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