Malcolm Purvis <malcolmp(a)xemacs.org> wrote:
Some of the objects that get dumped contain function pointers. In
the IA64
ABI, these point to a descriptor containing { &code, &data_context }. At the
very least data_context varies between machines and across reboots (I'm not
sure about per process). Data_context is so machine dependant that there is
no useful way that we can get access to it in XEmacs.
SuSe have a patch to 21.4 that re-assigns these function pointers at startup
(in a similar vein to reinit_vars_of_X()). It's pretty invasive but I think
it's the only way we can work around it. I've a dusty workspace that tries to
clean the patch up a bit but haven't worked on it recently for a lack of two
IA64 boxes to try it on (I'm not allowed to reboot the one I've access to).
Emacs doesn't have this problem because I don't think it dumps function
pointers.
I am about to commit Olivier Galibert's patch to enable dumping and
loading of bignums. It does this via a mechanism very like Java's
serialization mechanism. That is, for a given data type, you specify a
function that converts to a dumpable external format, and a function
that converts back from that format. Is there something we could save
that would let us recover the function pointer at run time? How about
an internal dictionary of [names <-> function pointers] and do lookups
there while undumping?
(It isn't quite that easy. We would have to make function pointers be a
data type in their own right for this to work, but it could be done.)
To what functions do we dump pointers?
--
Jerry James
http://www.ittc.ku.edu/~james/