This is strange and I don't know if I should report it as a bug

If I walk the Mach-O class symbols in the executable (skipping indirect symbols) and get the VMT pointer with dlsym, then I do get a valid vTypeInfo pointer from the VMT pointer, except for these symbols

vTypeInfo = -16, theSymbolName = _VMT_$SYSUTILS$_$TMARSHALLER_$__$$_TDEFERBASE, vInstanceSize = 8, vInstanceSize2 = -8 vTypeInfo = -24, theSymbolName = _VMT_$SYSUTILS$_$TMARSHALLER_$__$$_TDEFERFREEMEM, vInstanceSize = 16, vInstanceSize2 = -16 vTypeInfo = 7811903956714416498, theSymbolName = _VMT_$SYSUTILS$_$TMARSHALLER_$__$$_TDEFERMOVETOSBANDFREE, vInstanceSize = 32, vInstanceSize2 = -32

The VMT pointer as such seems to be correct, because vInstanceSize = - vInstanceSize2. But the vTypeInfo is not a valid memory pointer. Also, do we have qualified names here ?? The compiler and rtl were compiled without qualified names.

Is this a bug or one special case ?

Regards,

Adriaan van Os
_______________________________________________
fpc-devel maillist  -  [email protected]
https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-devel

Reply via email to