>> Maybe I should have given more info about my problem here. I was >> specifically looking for the types and limits of these fields. I already >> have a working solution to get method pointers and call them, even for >> virtual methods. But I have one case where this fails. The problem seems >> to be that the offset between object address and virtual table is bigger >> than 0x9000. But the delta2 field seems to be a signed short, so it >> can't hold this value bigger 0x7FFF. I was now wondering if this is >> really a limitation or if I have to compute things differently. That's why >> I was looking for a description of these fields. >> >>>Sorry, I don't know what pfn or delta2 are without more context. >> >> pfn should be the address of the normal method, or delta2 should >> be the offset to the virtual table. In my case it has a value of -16000, >> but that's not the real value, it's also not the limit, it's just some >> value I don't know what to do with it. > >Where does delta2 come from? Where do you see the name? Where do you >see the value? > >As far as I know the compiler never stores the offset between the >object address and the virtual table. If I have a virtual method virtual unsigned long CClass::vMethod(); and do in the source unsigned long (CClass::*pvm)() = &CClass::vMethod; then pvm is a structure (or pointer to it) with the elements short __delta short __index union __pfn_or_delta2 void* pfn short __delta2 These names come directly out of the debug info, they nowhere appear in the project's sources. I do see them in the elf file but I don't know if the values are fixed or calculated at runtime. pvm:(0,50)=s8__delta:(0,8),0,16;__index:(0,8),16,16;__pfn_or_delta2:(0,51)=u4__pfn:(0,52)=*(14,53),0,32;__delta2:(0,8),0,16;;,32,32;; Thanks bye Fabi