diff --git a/BurnOutSharp.Models/LinearExecutable/FixupRecordTableEntry.cs b/BurnOutSharp.Models/LinearExecutable/FixupRecordTableEntry.cs new file mode 100644 index 00000000..22f3a198 --- /dev/null +++ b/BurnOutSharp.Models/LinearExecutable/FixupRecordTableEntry.cs @@ -0,0 +1,39 @@ +using System.Runtime.InteropServices; + +namespace BurnOutSharp.Models.LinearExecutable +{ + /// + /// The Fixup Record Table contains entries for all fixups in the linear EXE module. + /// The fixup records for a logical page are grouped together and kept in sorted + /// order by logical page number. The fixups for each page are further sorted such + /// that all external fixups and internal selector/pointer fixups come before + /// internal non-selector/non-pointer fixups. This allows the loader to ignore + /// internal fixups if the loader is able to load all objects at the addresses + /// specified in the object table. + /// + /// + /// + [StructLayout(LayoutKind.Sequential)] + public class FixupRecordTableEntry + { + /// + /// Source type. + /// + /// + /// The source type specifies the size and type of the fixup to be performed + /// on the fixup source. + /// + public FixupRecordSourceType SourceType; + + /// + /// Target Flags. + /// + /// + /// The target flags specify how the target information is interpreted. + /// + public FixupRecordTargetFlags TargetFlags; + + // TODO: The shape of the data relies on the source and flags from here + // SRCOFF = DW/CNT = DB Source offset or source offset list count. + } +}