This is the mail archive of the
binutils@sourceware.org
mailing list for the binutils project.
Re: entries in PT_DYNAMIC section refer to the correct address at runtime?
- From: Alan Modra <amodra at gmail dot com>
- To: Yubin Ruan <ablacktshirt at gmail dot com>
- Cc: binutils at sourceware dot org, elfutils-devel at sourceware dot org
- Date: Thu, 14 Sep 2017 19:55:25 +0930
- Subject: Re: entries in PT_DYNAMIC section refer to the correct address at runtime?
- Authentication-results: sourceware.org; auth=none
- References: <CAJYFCiMKh3CwuoPHKBpcqUruJxEm_M4Cr17DD9ou5aMZq1hOZw@mail.gmail.com>
On Thu, Sep 14, 2017 at 12:09:51PM +0800, Yubin Ruan wrote:
> Hi,
>
> I read the ELF spec and note that, a segment designated by a program
> header of type PT_DYNAMIC have several entries, many of which contain
> addresses of other things. For example, an entry of type DT_SYMTAB was
> described (in the ELF) spec to "holds the address of the symbol
> table". I wonder whether this address is true at runtime?
>
> Normally a program header would have the following structure:
>
> typedef struct {
> Elf32_Word p_type;
> Elf32_Off p_offset;
> Elf32_Addr p_vaddr;
> Elf32_Addr p_paddr;
> Elf32_Word p_filesz;
> Elf32_Word p_memsz;
> Elf32_Word p_flags;
> Elf32_Word p_align;
> } Elf32_Phdr;
>
> The `p_vaddr` hold the virtual address (runtime address) for a shared
> object file and a executable file. But, as stated in the ELF spec,
> `p_vaddr` might not be correct for a shared object (because it is
> required to be PIC). So, if that `p_vaddr` is not correct, will those
> entries in PT_DYNAMIC be correct?
DT_ entries that specify addresses will need to be offset by the base
address.
--
Alan Modra
Australia Development Lab, IBM