On Tue, 31 May 2011 21:09:10 -0700 Marcel Moolenaar <[email protected]> wrote:
> > On May 31, 2011, at 5:06 PM, Alexander Kabaev wrote: > >> Usually it is different only on segmented architectures like 16-bit > >> x86. > >> > > > > Not so on ia64, where they have special function descriptor type. > > Actually, no. On ia64 a function pointer has the same size as a > data pointer. It's just that a function pointer does not point > to the actual function (i.e. the first instruction of a function), > but to a function descriptor. The function descriptor contains the > address of the actual function and the value of the GP register > that needs to be set before entering the function. > > As such, only virtual functions in C++ are impacted by this. The > function descriptor needs to be stored in the object instead of > the function pointer in that case. > > FYI, > > -- Oh, you are correct. I forgot the double indirection we do to support that in dlsym, where we are maintain our own 'virtual table' of function descriptors within rtld itself. -- Alexander Kabaev
signature.asc
Description: PGP signature

