How to implement a kernel feature check in the crt* files?

Andreas Krebbel krebbel@linux.vnet.ibm.com
Fri Jan 8 12:54:00 GMT 2010


Hi Roland,

> There is a reliable method using AT_PHDR.  Find the first PT_LOAD with
> p_offset=0 (in practice it's always the first there is) and its p_vaddr
> is where the ELF header appears in memory.
> 
Thanks! That sounds like a good solution. Unfortunately while implementing it I 
stumbled over another problem.  Using AT_PHDR for locating the ELF header will
not work if the executable is not directly executed by the kernel e.g.
if it is passed as parameter to ld.so.  Then AT_PHDR will point to the
program headers of ld.so instead of the executable.  I'm not sure how to
work around this.  I think the situation can be detected by comparing the 
AT_ENTRY field with the first IP in _start but finding the ELF header using the 
AT_PHDR will be impossible then.  Perhaps it is ok to simply skip checking in
that case?!


Bye,

-Andreas-



More information about the Libc-help mailing list