The data in an LIDATA record may be modified by the linker if the LIDATA record is immediately followed by a FIXUPP record.
1 byte 2 bytes
┌───────┬────────────────┬---
│ A3 │ Record │
│ │ Length │
└───────┴────────────────┴---
1 or 2 4 bytes <from Record Length> 1 byte
--┬─────────┬─────────────┬────────────────────┬───────┐
│ Seg. │ Data │ Data │Chk sum│
│ Index │ Offset │ Block │ or 0 │
--┴─────────┴─────────────┴────────────────────┴───────┘
<----- repeat ----->
The segment index and data offset (4 bytes) are the same as for an LEDATA record. The index must be nonzero.
Data Block
The data blocks have the following form:
4 bytes 2 bytes <-- from block count --> ┌──────────────┬─────────────┬────────────────────────┐ │ Repeat │ Block │ Content │ │ Count │ Count │ │ └──────────────┴─────────────┴────────────────────────┘ <-------------------- Data Block ------------------->
The Repeat Count is a 32-bit value which determines the number of repeats of the content portion.
CONFLICT:The PharLap OMF uses a 16-bit repeat count even in 32-bit records.
Block Count
The Block Count is a 16-bit word whose value determines the interpretation of the content portion, as follows:
A subsequent FIXUPP record may occur; the fixup is applied before the iterated data block is expanded. It is a translator error for a fixup to reference any of the count fields.