This is the mail archive of the
binutils@sourceware.org
mailing list for the binutils project.
Re: RFC: Add SHT_GNU_PHDRS
- From: Szabolcs Nagy <nsz at port70 dot net>
- To: Florian Weimer <fweimer at redhat dot com>
- Cc: Jan Beulich <JBeulich at suse dot com>, "H.J. Lu" <hjl dot tools at gmail dot com>, Rich Felker <dalias at libc dot org>, binutils at sourceware dot org, gnu-gabi at sourceware dot org
- Date: Thu, 27 Sep 2018 12:35:40 +0200
- Subject: Re: RFC: Add SHT_GNU_PHDRS
- References: <CAMe9rOoqcxZxPKgJn1JwG+ux4YRVbfWQBR=d9BOR3cfQgRn9QA@mail.gmail.com> <CAMe9rOoqcxZxPKgJn1JwG+ux4YRVbfWQBR=d9BOR3cfQgRn9QA@mail.gmail.com> <87tvmbv8hp.fsf@oldenburg.str.redhat.com> <5BAC7D6802000078001EC6D1@prv1-mh.provo.novell.com> <87pnwzuz8r.fsf@oldenburg.str.redhat.com>
* Florian Weimer <fweimer@redhat.com> [2018-09-27 10:21:40 +0200]:
> * Jan Beulich:
> >>>> On 27.09.18 at 07:01, <fweimer@redhat.com> wrote:
> >> * H. J. Lu:
> >>
> >>> 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,
> >>
> >> Is it actually a requirement in the ELF specification that all bits
> >> loaded via segments are covered by sections as well?
> >
> > Hardly, because the presence of a section table isn't required
> > in the first place in an executable (iirc).
>
> I think so too, and that is why I don't understand this section hack is
> needed.
if there is no read-only alloc section then the program
headers are currently not part of a load segment.
https://sourceware.org/bugzilla/show_bug.cgi?id=23428
an alloc .phdr section covering the program headers solves
this problem. if sections are not required for segments
then simply the linker should ensure that there is always
a load segment covering the program headers, possibly
without containing any sections, however elf says
"An object file segment contains one or more sections".
i don't understand why a zero-size section is enough, what
if phdr > pagesize? will that get covered by the load
segment that is created for the zero-size section?