|
RetroLinker
Linker for several 8-bit, 16-bit and 32-bit formats
|
Stores a 68K jump table, found in 'CODE'0 resources. More...
#include <macos.h>
Public Types | |
| enum | JumpTableFormat { Near , Far , CFM_68K , CFM_68K_StartUp , CFM_68K_Library , CFM_68K_Unflattened_Library } |
| enum | { MOVE_DATA_SP = 0x3F3C , LOADSEG = 0xA9F0 , JMP_ABS_L = 0x4EF9 , FAR_VERSION_MARK = 0xFFFF , CFM_68K_VERSION_MARK = 0xFFFD } |
| enum | jump_table_parse_mode { FromUnknown , FromResource , FromPEFContainer } |
| Describes how a jump table should be handled. More... | |
Public Member Functions | |
| JumpTableCodeResource (std::shared_ptr< JumpTable > jump_table) | |
| bool | IsResource () const |
| void | CalculateValues () override |
| offset_t | JumpTableSize () const |
| offset_t | ImageSize () const override |
| Retrieves the offset of the byte after the last one belonging to this format from the first one. | |
| void | ReadFile (const std::shared_ptr< Linker::Reader > &rd) override |
| Loads file into memory. | |
| void | ReadFile (const std::shared_ptr< Linker::Reader > &rd, offset_t length) override |
| void | ReadJumpTable (const std::shared_ptr< Linker::Reader > &rd, offset_t length, jump_table_parse_mode mode, std::map< offset_t, offset_t > section_relocations={}) |
| Read full jump table. | |
| void | CollectRelocations (std::map< offset_t, offset_t > §ion_relocations) |
| Generate the section relocations in a PEF container data section. | |
| offset_t | WriteFile (const std::shared_ptr< Linker::Writer > &wr) const override |
| Stores data in memory to file. | |
| int | GetDisplayOptions () const override |
| void | Dump (Dumper::Dumper &dump, offset_t file_offset) const override |
| void | AddFields (Dumper::Dumper &dump, Dumper::Region ®ion, offset_t file_offset) const override |
| std::unique_ptr< Dumper::Region > | CreateRegion (std::string name, offset_t offset, offset_t length, unsigned display_width) const override |
Public Member Functions inherited from Apple::MacintoshResourceFileFormat::Resource | |
| void | Dump (Dumper::Dumper &dump) const override |
| Display file contents in a nice manner. | |
| virtual void | EffectFormat (MacintoshResourceFileFormat &format, const std::shared_ptr< Linker::Reader > &rd) |
| Apply some changes to the format after parsing. | |
Public Member Functions inherited from Linker::Format | |
| Format (offset_t file_offset=0) | |
| virtual void | Clear () |
| Resets all fields to their default values, deallocate memory. | |
| virtual void | SetFileOffset (offset_t new_offset) |
| Attempts to alter the offset to the first byte of the format from the beginning of the file. | |
Public Member Functions inherited from Linker::Contents | |
| virtual std::shared_ptr< const Image > | AsImage () const |
| Retrieves a randomly accessible image. | |
| std::shared_ptr< Image > | AsImage () |
| Retrieves a randomly accessible image. | |
Public Attributes | |
| std::shared_ptr< JumpTable > | jump_table |
| JumpTableFormat | jump_table_format = Near |
Public Attributes inherited from Apple::MacintoshResourceFileFormat::Resource | |
| char | type [4] |
| uint16_t | id |
| std::optional< std::string > | name |
| uint8_t | attributes |
Public Attributes inherited from Linker::Format | |
| offset_t | file_offset |
| The offset of the first byte used by this format in the file it is stored in. | |
Additional Inherited Members | |
Protected Member Functions inherited from Apple::MacintoshResourceFileFormat::Resource | |
| Resource (const char type[4], uint16_t id, uint8_t attributes=0) | |
| Resource (const char type[4], uint16_t id, std::optional< std::string > name, uint8_t attributes=0) | |
Stores a 68K jump table, found in 'CODE'0 resources.
|
overridevirtual |
Reimplemented from Apple::MacintoshResourceFileFormat::Resource.
|
overridevirtual |
Implements Apple::MacintoshResourceFileFormat::Resource.
|
overridevirtual |
Reimplemented from Apple::MacintoshResourceFileFormat::Resource.
|
overridevirtual |
Reimplemented from Apple::MacintoshResourceFileFormat::Resource.
|
overridevirtual |
Reimplemented from Apple::MacintoshResourceFileFormat::Resource.
|
overridevirtual |
Retrieves the offset of the byte after the last one belonging to this format from the first one.
Implements Apple::MacintoshResourceFileFormat::Resource.
|
overridevirtual |
Loads file into memory.
Implements Linker::Format.
|
overridevirtual |
Implements Apple::MacintoshResourceFileFormat::Resource.
| void MacintoshResourceFileFormat::JumpTableCodeResource::ReadJumpTable | ( | const std::shared_ptr< Linker::Reader > & | rd, |
| offset_t | length, | ||
| jump_table_parse_mode | mode, | ||
| std::map< offset_t, offset_t > | section_relocations = {} |
||
| ) |
Read full jump table.
When the jump table is found in a resource, this will also determine what format the jump table is in. For PEF containers, the format of the jump table must be assigned prior to calling this function.
| rd | The reader |
| length | The expected length of the jump table |
| mode | Whether to parse it as a jump table found inside a 'CODE' resource or a PEF container data section |
| section_relocations | For PEF container data, also check if there are section relocations at the specified offsets |
|
overridevirtual |
Stores data in memory to file.
Implements Linker::Format.