Next: The header, Previous: Object inventory, Up: Dumping phase [Contents][Index]
The next step is to allocate the offsets of each of the objects in the
final dump file. This is done by pdump_allocate_offset()
which
is called indirectly by pdump_scan_by_alignment()
.
The strategy to deal with alignment problems uses these facts:
Hence, for each lrecord type, C struct type or opaque data block the
alignment requirement is computed as a power of two, with a minimum of
2^2 for lrecords. pdump_scan_by_alignment()
then scans all the
pdump_entry_list_elmt
’s, the ones with the highest requirements
first. This ensures the best packing.
The maximum alignment requirement we take into account is 2^8.
pdump_allocate_offset()
only has to do a linear allocation,
starting at offset 256 (this leaves room for the header and keeps the
alignments happy).