This is the mail archive of the
mailing list for the binutils project.
Re: Regarding the p_align Elf_Phdr structure variable.
- From: Alan Modra <amodra at bigpond dot net dot au>
- To: vamsi krishna <vamsi dot krishnak at gmail dot com>
- Cc: binutils at sourceware dot org
- Date: Mon, 29 May 2006 10:05:40 +0930
- Subject: Re: Regarding the p_align Elf_Phdr structure variable.
- References: <firstname.lastname@example.org>
On Mon, May 29, 2006 at 12:23:32AM +0530, vamsi krishna wrote:
> Dear All,
> I have a question regarding the program header structure variable p_align.
> o If the program header states the segment type as PT_LOAD and
> phr.p_vaddr and phdr.p_paddr both set to a virtual address
> '0x0000ac00' and I have a global variable(say a char) whose virtual
> address is '0x0000ac0f' (assume this is program header which is
> having the .data section).
> o Now if the value of the p_align is set to some 2^x will it change
> the virtual address my variable after the loader does the mmaping? of
> the segment??
No, but changing p_align independently of other segment header fields
may result in an executable that gives loader errors. You must have
p_offset mod p_align == p_vaddr mod p_align to support demand paging.
> When do we need to set the p_align flag? I'am trying to create a elf
> file with out p_align , does it have any impact on loaders
> performance, I dont find any details on how OS loader uses this
> p_align while mmaping my program header.
p_align is used to calculate the base address of the executable or
shared library, and in a similar calculation for TLS segments. p_align
must be at least as large as disk and memory page size to support demand
paged executables. See glibc sources for all the details.
IBM OzLabs - Linux Technology Centre