Browse Source

AROS: ABI compatibility update structure TETask (ABI/BC break)

These changes break Binary Compatibility between ABIv0 and ABIv1.

Record TETask was not compliant to ABIv1 because field et_Compatibility is
only required for ABIv0 (https://github.com/deadw00d/AROS/commit/06538a17900b3e6c45d053128957fba8668c2c15).

Therefor these changes update record TETask for both RTL (execd.inc) and unit
exec (exec.pas) so that field et_Compatibility is only present for ABIv0.

The impact of these changes should be minimal because all relevant fields are
still accessible (some located at another offset) and code should never rely
on the size of this structure.
magorium 3 years ago
parent
commit
8bc7d5897d
2 changed files with 4 additions and 0 deletions
  1. 2 0
      packages/arosunits/src/exec.pas
  2. 2 0
      rtl/aros/i386/execd.inc

+ 2 - 0
packages/arosunits/src/exec.pas

@@ -765,7 +765,9 @@ type
     et_Result1: ULONG;     // First result
     et_Result2: APTR;      // Result data pointer (AllocVec)
     et_TaskMsgPort: TMsgPort;
+{$IFDEF AROS_ABIv0}
     et_Compatibility: array[0..3] of APTR;   // Reserve this space for compiled software to access iet_startup and iet_acpd
+{$ENDIF}
     et_MemPool: Pointer;              // Task's private memory pool
 {$ifdef aros}
     et_Reserved: array[0..0] of IPTR; // MorphOS Private

+ 2 - 0
rtl/aros/i386/execd.inc

@@ -760,7 +760,9 @@ type
     et_Result1: DWord;     // First result
     et_Result2: Pointer;      // Result data pointer (AllocVec)
     et_TaskMsgPort: TMsgPort;
+{$IFDEF AROS_ABIv0}
     et_Compatibility: array[0..3] of Pointer;   // Reserve this space for compiled software to access iet_startup and iet_acpd
+{$ENDIF}
     et_MemPool: Pointer;              // Task's private memory pool
 {$ifdef aros}
     et_Reserved: array[0..0] of PtrUInt; // MorphOS Private