RetroLinker
Linker for several 8-bit, 16-bit and 32-bit formats
Loading...
Searching...
No Matches
Public Types | Public Member Functions | Public Attributes | List of all members
OMF::OMF86Format::BlockDefinitionRecord Class Reference

A record that defines a block, used for BLKDEF records (Intel only) More...

#include <omf.h>

Inheritance diagram for OMF::OMF86Format::BlockDefinitionRecord:
OMF::OMF86Format::Record OMF::OMFFormat::Record

Public Types

enum  block_type_t { NotProcedure = 0x00 , NearProcedure = 0x80 , FarProcedure = 0xC0 }
 Type of the block, if it is a procedure. More...
 
- Public Types inherited from OMF::OMF86Format::Record
enum  record_type_t {
  RHEADR = 0x6E , REGINT = 0x70 , REDATA = 0x72 , RIDATA = 0x74 ,
  OVLDEF = 0x76 , ENDREC = 0x78 , BLKDEF = 0x7A , BLKEND = 0x7C ,
  DEBSYM = 0x7E , THEADR = 0x80 , LHEADR = 0x82 , PEDATA = 0x84 ,
  PIDATA = 0x86 , COMENT = 0x88 , MODEND16 = 0x8A , MODEND = 0x8A ,
  MODEND32 = 0x8B , EXTDEF = 0x8C , TYPDEF = 0x8E , PUBDEF16 = 0x90 ,
  PUBDEF = 0x90 , PUBDEF32 = 0x91 , LOCSYM = 0x92 , LINNUM = 0x94 ,
  LNAMES = 0x96 , SEGDEF = 0x98 , GRPDEF = 0x9A , FIXUPP16 = 0x9C ,
  FIXUPP = 0x9C , FIXUPP32 = 0x9D , LEDATA16 = 0xA0 , LEDATA = 0xA0 ,
  LEDATA32 = 0xA1 , LIDATA16 = 0xA2 , LIDATA = 0xA2 , LIDATA32 = 0xA3 ,
  LIBHED = 0xA4 , LIBNAM = 0xA6 , LIBLOC = 0xA8 , LIBDIC = 0xAA ,
  COMDEF = 0xB0 , BAKPAT16 = 0xB2 , BAKPAT = 0xB2 , BAKPAT32 = 0xB3 ,
  LEXTDEF16 = 0xB4 , LEXTDEF = 0xB4 , LEXTDEF32 = 0xB5 , LPUBDEF16 = 0xB6 ,
  LPUBDEF = 0xB6 , LPUBDEF32 = 0xB7 , LCOMDEF = 0xB8 , CEXTDEF = 0xBC ,
  COMDAT16 = 0xC2 , COMDAT = 0xC2 , COMDAT32 = 0xC3 , LINSYM16 = 0xC4 ,
  LINSYM = 0xC4 , LINSYM32 = 0xC5 , ALIAS = 0xC6 , NBKPAT16 = 0xC8 ,
  NBKPAT = 0xC8 , NBKPAT32 = 0xC9 , LLNAMES = 0xCA , VERNUM = 0xCC ,
  VENDEXT = 0xCE , LibraryHeader = 0xF0 , LibraryEnd = 0xF1
}
 The recognized record types in an OMF86 file.
 

Public Member Functions

 BlockDefinitionRecord (record_type_t record_type)
 
void ReadRecordContents (OMF86Format *omf, Linker::Reader &rd) override
 Reads the record contents, except for the type, length and checksum.
 
uint16_t GetRecordSize (OMF86Format *omf) const override
 Calculates the required bytes to write the record, might be less than record_length.
 
void WriteRecordContents (OMF86Format *omf, ChecksumWriter &wr) const override
 Writes the record contents, except for the type, length and checksum.
 
void CalculateValues (OMF86Format *omf, Module *mod) override
 Updates all fields that will be used for writing an OMF module, should be called before output.
 
void ResolveReferences (OMF86Format *omf, Module *mod) override
 Resolves any fields read from an OMF module, should be called after inpnut.
 
void ReadRecordContents (OMFFormat *omf, Linker::Reader &rd) override
 Converts omf to OMF86Format and calls the other implementation of ReadRecordContents.
 
virtual void ReadRecordContents (OMF86Format *omf, Linker::Reader &rd)=0
 Reads the record contents, except for the type, length and checksum.
 
uint16_t GetRecordSize (OMFFormat *omf) const override
 Converts omf to OMF86Format and calls the other implementation of GetRecordSize.
 
virtual uint16_t GetRecordSize (OMF86Format *omf) const=0
 Calculates the required bytes to write the record, might be less than record_length.
 
void WriteRecordContents (OMFFormat *omf, ChecksumWriter &wr) const override
 Converts omf to OMF86Format and calls the other implementation of WriteRecordContents.
 
virtual void WriteRecordContents (OMF86Format *omf, ChecksumWriter &wr) const=0
 Writes the record contents, except for the type, length and checksum.
 
- Public Member Functions inherited from OMF::OMF86Format::Record
 Record (record_type_t record_type)
 
void ReadRecordContents (OMFFormat *omf, Linker::Reader &rd) override
 Converts omf to OMF86Format and calls the other implementation of ReadRecordContents.
 
uint16_t GetRecordSize (OMFFormat *omf) const override
 Converts omf to OMF86Format and calls the other implementation of GetRecordSize.
 
void WriteRecordContents (OMFFormat *omf, ChecksumWriter &wr) const override
 Converts omf to OMF86Format and calls the other implementation of WriteRecordContents.
 
bool Is32Bit (OMF86Format *omf) const
 Records are 32-bit if the least significant bit of their record type is set.
 
size_t GetOffsetSize (OMF86Format *omf) const
 The number of bytes in an offset appearing inside the record, 2 for 16-bit records, 4 for 32-bit records.
 
- Public Member Functions inherited from OMF::OMFFormat::Record
 Record (uint8_t record_type=0)
 
virtual void WriteRecord (OMFFormat *omf, Linker::Writer &wr) const
 Writes the full record.
 

Public Attributes

BaseSpecification base
 The first byte of the segment containing the block.
 
std::string name
 The name of the block or empty.
 
uint16_t offset
 Offset to the first byte of the block.
 
uint16_t length
 Length of the block.
 
block_type_t procedure
 Whether this block is a procedure, and whether it is a near or far procedure.
 
uint16_t return_address_offset
 Offset, relative to the frame pointer (BP), to the return address of the procedure in the calling frame on the stack.
 
TypeIndex type
 Type of block or procedure, only used if name != "".
 
- Public Attributes inherited from OMF::OMFFormat::Record
offset_t record_offset
 Offset of record within the file.
 
uint16_t record_length
 Length of record body file, excluding the type byte and 2-byte length field.
 
uint8_t record_type
 A byte value identifying the type of record.
 

Additional Inherited Members

- Static Public Member Functions inherited from OMF::OMF86Format::Record
static std::shared_ptr< OMFFormat::RecordReadRecord (OMF86Format *omf, Linker::Reader &rd)
 Parses and returns an instance of the next record.
 

Detailed Description

A record that defines a block, used for BLKDEF records (Intel only)

Member Enumeration Documentation

◆ block_type_t

Type of the block, if it is a procedure.

Enumerator
NotProcedure 

Block is not a procedure.

NearProcedure 

Block is a near procedure.

FarProcedure 

Block is a far procedure.

Member Function Documentation

◆ CalculateValues()

void OMF86Format::BlockDefinitionRecord::CalculateValues ( OMF86Format * omf,
Module * mod )
overridevirtual

Updates all fields that will be used for writing an OMF module, should be called before output.

Reimplemented from OMF::OMF86Format::Record.

◆ GetRecordSize() [1/3]

uint16_t OMF86Format::BlockDefinitionRecord::GetRecordSize ( OMF86Format * omf) const
overridevirtual

Calculates the required bytes to write the record, might be less than record_length.

Implements OMF::OMF86Format::Record.

◆ GetRecordSize() [2/3]

virtual uint16_t OMF::OMF86Format::Record::GetRecordSize ( OMF86Format * omf) const
virtual

Calculates the required bytes to write the record, might be less than record_length.

Implements OMF::OMF86Format::Record.

◆ GetRecordSize() [3/3]

uint16_t OMF86Format::Record::GetRecordSize ( OMFFormat * omf) const
overridevirtual

Converts omf to OMF86Format and calls the other implementation of GetRecordSize.

Implements OMF::OMFFormat::Record.

◆ ReadRecordContents() [1/3]

void OMF86Format::BlockDefinitionRecord::ReadRecordContents ( OMF86Format * omf,
Linker::Reader & rd )
overridevirtual

Reads the record contents, except for the type, length and checksum.

Implements OMF::OMF86Format::Record.

◆ ReadRecordContents() [2/3]

virtual void OMF::OMF86Format::Record::ReadRecordContents ( OMF86Format * omf,
Linker::Reader & rd )
virtual

Reads the record contents, except for the type, length and checksum.

Implements OMF::OMF86Format::Record.

◆ ReadRecordContents() [3/3]

void OMF86Format::Record::ReadRecordContents ( OMFFormat * omf,
Linker::Reader & rd )
overridevirtual

Converts omf to OMF86Format and calls the other implementation of ReadRecordContents.

Implements OMF::OMFFormat::Record.

◆ ResolveReferences()

void OMF86Format::BlockDefinitionRecord::ResolveReferences ( OMF86Format * omf,
Module * mod )
overridevirtual

Resolves any fields read from an OMF module, should be called after inpnut.

Reimplemented from OMF::OMF86Format::Record.

◆ WriteRecordContents() [1/3]

void OMF86Format::BlockDefinitionRecord::WriteRecordContents ( OMF86Format * omf,
ChecksumWriter & wr ) const
overridevirtual

Writes the record contents, except for the type, length and checksum.

Implements OMF::OMF86Format::Record.

◆ WriteRecordContents() [2/3]

virtual void OMF::OMF86Format::Record::WriteRecordContents ( OMF86Format * omf,
ChecksumWriter & wr ) const
virtual

Writes the record contents, except for the type, length and checksum.

Implements OMF::OMF86Format::Record.

◆ WriteRecordContents() [3/3]

void OMF86Format::Record::WriteRecordContents ( OMFFormat * omf,
ChecksumWriter & wr ) const
overridevirtual

Converts omf to OMF86Format and calls the other implementation of WriteRecordContents.

Implements OMF::OMFFormat::Record.


The documentation for this class was generated from the following files: