Previous: Data dumping, Up: Dumping phase [Contents][Index]
A bunch of tables needed to reassign properly the global pointers are then written. They are:
For each of the dynarrs we write both the pointer to the variables and the relocated offset of the object they point to. Since these variables are global, the pointers are still valid when restarting the program and are used to regenerate the global pointers.
The pdump_weak_object_chains
dynarr is a special case. The
variables it points to are the head of weak linked lists of lisp objects
of the same type. Not all objects of this list are dumped so the
relocated pointer we associate with them points to the first dumped
object of the list, or Qnil if none is available. This is also the
reason why they are not used as roots for the purpose of object
enumeration.
Some very important information like the staticpros
and
lrecord_implementations_table
are handled indirectly using
dump_add_opaque
or dump_add_root_struct_ptr
.
This is the end of the dumping part.