RetroLinker
Linker for several 8-bit, 16-bit and 32-bit formats
Loading...
Searching...
No Matches
Classes | Public Member Functions | Public Attributes | List of all members
Apple::MacintoshResourceFileFormat::JumpTable Class Reference

Represents the information stored in a jump table. More...

#include <macos.h>

Classes

struct  Entry
 Describes a single jump table entry. More...
 
struct  TransitionVector
 Describes a single transition vector entry. More...
 

Public Member Functions

void AddLegacyEntry (Location entry)
 Attaches a legacy entry type, consisting of a 16-bit segment value and a 16-bit offset value.
 
void AddExtendedEntry (Location entry)
 Attaches an extended entry type, consisting of a 16-bit segment value and a 32-bit offset value.
 
void AddFlattenedEntry (Location entry)
 Attaches a flattened entry type, consisting of a 32-bit relocated address value.
 
void AddApplicationTransitionVector (Location seg_loader, Location a5_world, Location entry)
 Attaches a transition vector to an application, consisting of a location of the segLoader routine, the A5 world, and the 16-bit segment and 32-bit offset of an entry point.
 
void AddUnflattenedTransitionVector (Location a5_world, Location entry)
 Attaches an unflattened library transition vector, consisting of a location of A5 world, and the 16-bit segment and 32-bit offset of an entry point.
 
void AddFlattenedTransitionVector (Location a5_world, Location entry)
 Attaches a (flattened) library transition vector, consisting of a location of A5 world, and the 32-bit relocated addres to an entry point.
 

Public Attributes

uint32_t above_a5 = 0
 
uint32_t below_a5 = 0
 
uint32_t jump_table_size = 0
 
uint32_t jump_table_offset = 32
 
std::vector< Entry > legacy_entries
 Entries with a 16-bit segment offset, used for near model jump tables, for near model format entries in far model jump tables and classic format entries in CFM-68K jump tables.
 
std::vector< Entry > extended_entries
 Entries with a 32-bit segment offset, used for far model format entries in far model jump tables and regular format entries in CFM-68K jump tables.
 
std::vector< TransitionVector > transition_vectors
 

Detailed Description

Represents the information stored in a jump table.

Member Function Documentation

◆ AddApplicationTransitionVector()

void Apple::MacintoshResourceFileFormat::JumpTable::AddApplicationTransitionVector ( Location  seg_loader,
Location  a5_world,
Location  entry 
)
inline

Attaches a transition vector to an application, consisting of a location of the segLoader routine, the A5 world, and the 16-bit segment and 32-bit offset of an entry point.

Required for CFM-68K applications.

◆ AddExtendedEntry()

void Apple::MacintoshResourceFileFormat::JumpTable::AddExtendedEntry ( Location  entry)
inline

Attaches an extended entry type, consisting of a 16-bit segment value and a 32-bit offset value.

Note that using these during runtime requires patching the LoadSeg routine.

◆ AddFlattenedEntry()

void Apple::MacintoshResourceFileFormat::JumpTable::AddFlattenedEntry ( Location  entry)
inline

Attaches a flattened entry type, consisting of a 32-bit relocated address value.

Note that these only occur in (flattened) shared libraries, used by CFM-68K.

◆ AddFlattenedTransitionVector()

void Apple::MacintoshResourceFileFormat::JumpTable::AddFlattenedTransitionVector ( Location  a5_world,
Location  entry 
)
inline

Attaches a (flattened) library transition vector, consisting of a location of A5 world, and the 32-bit relocated addres to an entry point.

Required for CFM-68K libraries.

◆ AddUnflattenedTransitionVector()

void Apple::MacintoshResourceFileFormat::JumpTable::AddUnflattenedTransitionVector ( Location  a5_world,
Location  entry 
)
inline

Attaches an unflattened library transition vector, consisting of a location of A5 world, and the 16-bit segment and 32-bit offset of an entry point.

Required for CFM-68K.


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