+ /// Version ID of the object file format
+ /// For now it must match FORMAT_ID for the loader to be
+ /// able to read it.
+ /// Backwards compatibility might be implemented at some
+ /// point in the future, but don't bet on that ever
+ /// happening.
+ unsigned int versionId;
+
+ /// File-relative offsets of the export section's begin
+ /// and end respectively.
+ /// Exports are named and typed addresses within the
+ /// file. This is essentially an array of Export structs.
+ unsigned int exportsBegin;
+ unsigned int exportsEnd;
+
+ /// File-relative offsets of the externals section's
+ /// begin and end respectively.
+ /// Each external names an entity which must be linked in
+ /// for this object file to function properly. This is
+ /// essentially an array of External structs.
+ unsigned int externalsBegin;
+ unsigned int externalsEnd;
+
+ /// File-relative offsets of the objet section's begin
+ /// and end respectively.
+ /// Each object begins with its type ID followed by its
+ /// size and finally the raw object data.
+ /// All referecte type fields should contain either a
+ /// file-relative offset or zero to indicate a null
+ /// reference.
+ /// This can be sen as a linked list where the next
+ /// object for a node can be obtained by adding the size
+ /// of to int and the object to the current node's
+ /// address.
+ unsigned int objectsBegin;
+ unsigned int objectsEnd;
+
+ /// File-relative offsets of the array section's begin
+ /// and end respectively.
+ /// Each array consists of an unsigned integer indicating
+ /// its size followed by a boolean flag which is true if
+ /// the arrays consists of pointers followed by the data.
+ unsigned int arraysBegin;
+ unsigned int arraysEnd;