public inbox for libc-alpha@sourceware.org
 help / color / mirror / Atom feed
From: Palmer Dabbelt <palmerdabbelt@google.com>
To: maskray@google.com
Cc: libc-alpha@sourceware.org, Darius Rad <darius@bluespec.com>,
	maskray@google.com
Subject: Re: [PATCH] riscv: Drop reliance on _GLOBAL_OFFSET_TABLE_[0]
Date: Wed, 18 Aug 2021 09:22:26 -0700 (PDT)	[thread overview]
Message-ID: <mhng-78902389-7300-4fa6-b7b8-f8f8de778960@palmerdabbelt-glaptop> (raw)
In-Reply-To: <20210818043744.1481986-1-maskray@google.com>

On Tue, 17 Aug 2021 21:37:44 PDT (-0700), maskray@google.com wrote:
> &__ehdr_start is a better way to get the load address.
>
> This is similar to commits b37b75d269883a2c553bb7019a813094eb4e2dd1
> (x86-64) and 43d06ed218fc8be58987bdfd00e21e5720f0b862 (aarch64).
> ---
>  sysdeps/riscv/dl-machine.h | 21 ++++++++++-----------
>  1 file changed, 10 insertions(+), 11 deletions(-)
>
> diff --git a/sysdeps/riscv/dl-machine.h b/sysdeps/riscv/dl-machine.h
> index aedf69fcdd..5b0746175c 100644
> --- a/sysdeps/riscv/dl-machine.h
> +++ b/sysdeps/riscv/dl-machine.h
> @@ -76,27 +76,26 @@ elf_machine_matches_host (const ElfW(Ehdr) *ehdr)
>    return 1;
>  }
>
> +/* Return the run-time load address of the shared object.  */
> +static inline ElfW(Addr)
> +elf_machine_load_address (void)
> +{
> +  extern const ElfW(Ehdr) __ehdr_start attribute_hidden;
> +  return (ElfW(Addr)) &__ehdr_start;
> +}
> +
>  /* Return the link-time address of _DYNAMIC.  */
>  static inline ElfW(Addr)
>  elf_machine_dynamic (void)
>  {
> -  extern ElfW(Addr) _GLOBAL_OFFSET_TABLE_ __attribute__ ((visibility ("hidden")));
> -  return _GLOBAL_OFFSET_TABLE_;
> +  extern ElfW(Dyn) _DYNAMIC[] attribute_hidden;
> +  return (ElfW(Addr)) _DYNAMIC - elf_machine_load_address ();
>  }
>
>  #define STRINGXP(X) __STRING (X)
>  #define STRINGXV(X) STRINGV_ (X)
>  #define STRINGV_(...) # __VA_ARGS__
>
> -/* Return the run-time load address of the shared object.  */
> -static inline ElfW(Addr)
> -elf_machine_load_address (void)
> -{
> -  ElfW(Addr) load_addr;
> -  asm ("lla %0, _DYNAMIC" : "=r" (load_addr));
> -  return load_addr - elf_machine_dynamic ();
> -}
> -
>  /* Initial entry point code for the dynamic linker.
>     The C function `_dl_start' is the real entry point;
>     its return value is the user program's entry point.  */

Reviewed-by: Palmer Dabbelt <palmerdabbelt@google.com>
Acked-by: Palmer Dabbelt <palmerdabbelt@google.com>

LMK if you want me to commit this, but from the history it looks like 
you have commit access so feel free to yourself (assuming you've built 
it for all our targets).

Thanks!

  reply	other threads:[~2021-08-18 16:22 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-08-18  4:37 Fangrui Song
2021-08-18 16:22 ` Palmer Dabbelt [this message]
2021-08-18 16:31   ` Fāng-ruì Sòng
2021-08-18 21:09     ` Palmer Dabbelt

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=mhng-78902389-7300-4fa6-b7b8-f8f8de778960@palmerdabbelt-glaptop \
    --to=palmerdabbelt@google.com \
    --cc=darius@bluespec.com \
    --cc=libc-alpha@sourceware.org \
    --cc=maskray@google.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).