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.
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
Some very important information like the
lrecord_implementations_table are handled indirectly using
This is the end of the dumping part.