This is the mail archive of the
binutils@sourceware.org
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: <3faf05680605281153r1f4181f7s78e7a4a100a43d2a@mail.gmail.com>
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.
--
Alan Modra
IBM OzLabs - Linux Technology Centre