You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Paul Bowen-Huggett edited this page Aug 14, 2018
·
1 revision
Sections
Each "section" within a fragment is given a constant index in this array. This obviously imposes a hard limit on the maximum number of sections within a fragment.
Generic Section
A section itself consists of three variable-length arrays:
The data array. An array of bytes making up the section payload. For example, in a "text" section these would be an individual function's instructions.
The internal fixup ("Ifixup") array.
The external fixup ("Xfixup") array.
The number of entries in each of these arrays is given by the DataSize, NumIFixups, and NumXfixups members of the section header.
Field
Size (bytes)
Description
Align
1
The alignment of this section, expressed as a power of 2.
NumIFixups
3
The number of internal fixup records contained within this section.
NumXFixups
4
The number of external fixup records contained within this section.
DataSize
8
The number of bytes of payload data containing within this section.
Internal Fixups
Internal fixups are those fixups which refer to other sections within the same fragment. Because the target fragment is known, these fixups improve performance by avoiding searches of the fragment index.
Field
Size (bytes)
Description
External Fixups
External fixups are used to refer (by name) to other fragments within the program. They form the arcs in the program graph of which fragments are the vertices.