[parisc-linux] userspace function pointers in the kernel
David Huggins-Daines
dhd@linuxcare.com
12 Sep 2000 23:27:18 -0400
Cary Coutant <cary@cup.hp.com> writes:
> I can't say for sure how Linux/IA-64 uses the .opd section, but the
> runtime and the psABI recommend that the "official" function descriptors
> be created by the dynamic loader as needed in response to dynamic FPTR
> relocations.
Ah, okay, that makes sense. This is what Linux/IA-64 does - dynamic
FPTR relocations result in OFDs being created dynamically (always, for
both local and global symbols). And yes, the code in GNU libc does
ensure that they are mapped one-to-one with symbols in each process.
As mentioned earlier we have been trying to decide whether to do this
on PA-RISC as well. Originally I threw it in so that (you guessed it)
comparisons of function pointers with NULL would work properly :-)
But as Alan says, it looks like we need it for other reasons as well.
> One way of avoiding the dynamic allocation by the dynamic loader is for
> the linker to allocate OFDs statically for each exported function, and
> for each hidden or static function whose address is taken.
Hm. I'm not nearly as familiar with the linker code as I am with the
dynamic linker code, so I'm not sure what it does. But, as noted
above, GNU libc does dynamic allocation, so it's probably not relevant.
--
dhd@linuxcare.com, http://www.linuxcare.com/
Linuxcare. Support for the revolution.