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

Andreas Krebbel krebbel@linux.vnet.ibm.com
Tue Jan 12 08:37:00 GMT 2010


Roland McGrath wrote:
>> But it would still be necessary to recognize that situation in order to
>> prevent the check from being executed since accessing the ELF header field
>> would segfault.  The only way I see is to compare the AT_ENTRY field with
>> the _start address which basically tells you if the current auxv does belong
>> to the executable or not.
> 
> I don't really see what you are talking about there.  There is nothing to
> recognize.  ld.so creates the situation, so it knows what it should do.

The above was meant for the case where ld.so does not get fixed and I would
simply ignore the case when an executable gets invoked as parameter to ld.so.
In that case I would still have to deal with the situation since the check would
segfault otherwise.

>>> That said, it seems like ld.so could fix this.  i.e., update the auxv
>>> fields on the stack to point to where it's loaded the executable
>>> rather than to ld.so itself.
>> Ok sounds reasonable.  In order to fix it completely this would mean to 
>> duplicate the auxv setup from the kernel in ld.so and keep both in sync.
> 
> I don't know exactly what you have in mind, but it sounds rather off to me.
> There is nothing to "duplicate".  There are a few known auxv entries that
> refer to the loaded image, so ld.so needs to change those entries.

Perhaps I've seen that too pessimistic. From a first glance it looked like more
work to me.

Bye,

-Andreas-



More information about the Libc-help mailing list