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