This is the mail archive of the
libc-alpha@sourceware.org
mailing list for the glibc project.
Re: Encoding page size in the ELF header
- From: Rich Felker <dalias at libc dot org>
- To: Florian Weimer <fweimer at redhat dot com>
- Cc: Roland McGrath <roland at hack dot frob dot com>, GNU C Library <libc-alpha at sourceware dot org>
- Date: Mon, 28 Sep 2015 10:24:18 -0400
- Subject: Re: Encoding page size in the ELF header
- Authentication-results: sourceware.org; auth=none
- References: <56054662 dot 2010106 at redhat dot com> <20150925195845 dot 3C6312C3B69 at topped-with-meat dot com> <560946D9 dot 6040303 at redhat dot com>
On Mon, Sep 28, 2015 at 03:55:37PM +0200, Florian Weimer wrote:
> On 09/25/2015 09:58 PM, Roland McGrath wrote:
> > p_align indicates the maximum page size that a given binary is built to
> > handle. What is the precise definition of "expected" that you have in mind?
>
> Interesting. I thought it was more of a minimum alignment for that segment.
In a sense it's both. The loader should align to at least this
alignment (but I don't think that's actually implemented, is it?)
which makes it a "minimum alignment". The actual "maximum alignment"
is not p_align but rather:
lcm { (ph[i].p_vaddr-ph[i].p_offset) - (ph[j].p_vaddr-ph[j].p_offset) }
where i,j range over all PT_LOAD headers. With a larger page size you
cannot simultaneously satisfy the displacement constraints between
segments.
Rich