This is the mail archive of the
binutils@sourceware.org
mailing list for the binutils project.
Re: RFC: Add SHT_GNU_PHDRS
- From: Roland McGrath <roland at hack dot frob dot com>
- To: "H.J. Lu" <hjl dot tools at gmail dot com>
- Cc: Binutils <binutils at sourceware dot org>, gnu-gabi at sourceware dot org
- Date: Wed, 26 Sep 2018 19:53:21 -0700
- Subject: Re: RFC: Add SHT_GNU_PHDRS
- References: <CAMe9rOoqcxZxPKgJn1JwG+ux4YRVbfWQBR=d9BOR3cfQgRn9QA@mail.gmail.com>
Just put the rodata segment first. That's what lld does and it works
great. There is also the nacl layout that specifically addresses exactly
this issue for a platform that requires the code segment to have the lowest
address, but I don't think any other modern platform actually had such a
requirement.
On Wed, Sep 26, 2018, 14:54 H.J. Lu <hjl.tools@gmail.com> wrote:
> When -z separate-code is used to create executable, ld won't place any
> data in the code-only PT_LOAD segment. If there are no data sections
> placed before the code-only PT_LOAD segment, the program headers
> won't be mapped into any PT_LOAD segment. When the executable tries
> to access it (based on the program header address passed in AT_PHDR),ri
> it will lead to segfault.
>
> I am proposing
>
> #define SHT_GNU_PHDRS 0x6ffffff4 /* Dummy section for program header */
>
> This is a special read-only SHF_ALLOC zero-size data section. It is the
> first output section, which will force a data PT_LOAD segment with program
> header before the code-only PT_LOAD segment,
>
> --
> H.J.
>
> --
Thanks,
Roland