|
RetroLinker
Linker for several 8-bit, 16-bit and 32-bit formats
|
This is not actually a file format, but an interface to permit generating multiple binary outputs for various Apple computers. More...
#include <apple.h>
Public Types | |
| enum | file_type_t : uint8_t { FILE_TYPE_BIN = 0x06 , FILE_TYPE_SOS = 0x0C , FILE_TYPE_S16 = 0xB3 , FILE_TYPE_EXE = 0xB5 , FILE_TYPE_SYS = 0xFF } |
Public Member Functions | |
| void | SetAppleSingleDoubleVersion (offset_t version) |
| bool | AddSupplementaryOutputFormat (std::string subformat) override |
| If the output format actually drives multiple output formats (resource file, apple double, etc.), specify multiple types, return false if unknown. | |
| void | ReadFile (const std::shared_ptr< Linker::Reader > &rd) override |
| Loads file into memory. | |
| offset_t | WriteFile (const std::shared_ptr< Linker::Writer > &wr) const override |
| Stores data in memory to file. | |
| void | Dump (Dumper::Dumper &dump) const override |
| Display file contents in a nice manner. | |
Public Member Functions inherited from Linker::OutputFormat | |
| virtual std::vector< OptionDescription< void > > | GetMemoryModelNames () |
| Returns a list of the supported memory models, used for documentation. | |
| virtual std::vector< OptionDescription< void > * > | GetLinkerScriptParameterNames () |
| Returns a list of the parameters used in the linker scripts, used for documentation. | |
| virtual std::vector< OptionDescription< void > > | GetSpecialSymbolNames () |
| Returns a list of special symbol names recognized by the format, used for documentation. | |
| virtual std::shared_ptr< OptionCollector > | GetOptions () |
| Returns object containing a sequence of option fields provided with the -S command line flag. | |
| virtual void | SetOptions (std::map< std::string, std::string > &options) |
| Passes command line parameters as settings over to format object. | |
| std::optional< std::string > | FetchOption (std::map< std::string, std::string > &options, std::string name) |
| Convenience method to look up option by name. | |
| std::string | FetchOption (std::map< std::string, std::string > &options, std::string name, std::string default_value) |
| Convenience method to look up option by name, returning default value if name is missing. | |
| std::optional< offset_t > | FetchIntegerOption (std::map< std::string, std::string > &options, std::string name) |
| Convenience method to look up option by name and convert it to integer. | |
| virtual void | SetModel (std::string model) |
| Sets the way memory is organized, typically modifying a built-in script. | |
| virtual void | SetLinkScript (std::string script_file, std::map< std::string, std::string > &options) |
| Selects a script file to use for linking. | |
| virtual void | ProcessModule (Module &object) |
| Processes the module object and initializes format fields. | |
| virtual void | GenerateFile (std::string filename, Module &module) |
| The main function that handles processing, calculating and generating the final image. | |
| virtual std::string | GetDefaultExtension (Module &module, std::string filename) const |
| Appends a default extension to the filename. | |
| virtual std::string | GetDefaultExtension (Module &module) const |
| Provides a default filename for the output file. | |
| virtual bool | FormatSupportsSegmentation () const |
| Whether the format supports multiple segments. | |
| virtual bool | FormatIs16bit () const |
| Whether the format is 16-bit or not. | |
| virtual bool | FormatIsProtectedMode () const |
| Whether the format is in protected mode or not (x86 only) | |
| virtual bool | FormatIsLinear () const |
| Whether the address space is linear or segmented. | |
| virtual bool | FormatSupportsTransitionVectors () const |
| Whether the format supports generating transition vectors. | |
| virtual bool | FormatSupportsResources () const |
| Whether the format supports resources. | |
| virtual bool | FormatSupportsLibraries () const |
| Whether the format supports libraries. | |
| virtual bool | FormatSupportsEntryTable () const |
| Whether the format supports a structure containing addresses of methods. | |
| virtual unsigned | FormatAdditionalSectionFlags (std::string section_name) const |
| virtual void | AllocateSymbols (Module &module) const |
| Instructs the module to allocate any unallocated local symbols. | |
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. | |
| offset_t | ImageSize () const override |
| Retrieves the offset of the byte after the last one belonging to this format from the first one. | |
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 | |
| target_format_t | target |
| Format of "filename". | |
| produce_format_t | produce |
| Bitset of other files to produce. | |
| unsigned | apple_single_double_version = 2 |
| Apple::AppleSingleDouble::hfs_type | home_file_system = Apple::AppleSingleDouble::HFS_UNDEFINED |
| MacBinary::version_t | macbinary_version = MacBinary::MACBIN3 |
| MacBinary::version_t | macbinary_minimum_version = MacBinary::MACBIN2 |
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. | |
Protected Types | |
| enum | target_format_t { TARGET_NONE , TARGET_DATA_FORK , TARGET_RESOURCE_FORK , TARGET_APPLE_SINGLE , TARGET_APPLE_DOUBLE , TARGET_MAC_BINARY } |
| Represents the file type of the main file. More... | |
| enum | produce_format_t { PRODUCE_RESOURCE_FORK = 1 << 0 , PRODUCE_FINDER_INFO = 1 << 1 , PRODUCE_APPLE_DOUBLE = 1 << 2 , PRODUCE_MAC_BINARY = 1 << 3 , PRODUCE_NAPS_SUFFIX = 1 << 4 } |
| Represents what additional files should be generated. More... | |
| enum | container_format_t { CONTAINER_NONE , CONTAINER_APPLE_SINGLE , CONTAINER_MAC_BINARY } |
| Format of container stored in memory. More... | |
Protected Member Functions | |
| OutputDriver (target_format_t target=TARGET_DATA_FORK, produce_format_t produce=produce_format_t(0)) | |
| virtual bool | SupportedSupplementaryFormat (produce_format_t produce)=0 |
| void | CalculateValues () override |
| Intermediate step between processing module and generating output file to set up headers and management sections It is expected that after a module is processed, additional steps are required to evaluate the final values of the fields. | |
| virtual void | OnContainerCreated () |
| Called after the container is created. | |
| virtual void | OnReadFile (const std::shared_ptr< Linker::Reader > &rd) |
| Called if there is no container allocated. | |
| virtual offset_t | OnWriteFile (const std::shared_ptr< Linker::Writer > &wr) const |
| Called if there is no container allocated. | |
| virtual void | OnDump (Dumper::Dumper &dump) const |
| Called if there is no container allocated. | |
| void | GenerateFiles (std::string filename, std::shared_ptr< Contents > data_fork, std::shared_ptr< Contents > resource_fork, uint8_t file_type, uint16_t auxiliary_file_type) |
| Tasked to create all the requested files. | |
Protected Attributes | |
| container_format_t | container = CONTAINER_NONE |
| The container type used to store metainformation while processing. | |
| std::shared_ptr< Apple::AppleSingleDouble > | apple_single |
| Container for all the necessary additional information. | |
| std::shared_ptr< MacBinary > | mac_binary |
| Container for MacBinary (Macintosh only) | |
This is not actually a file format, but an interface to permit generating multiple binary outputs for various Apple computers.
|
protected |
Format of container stored in memory.
| Enumerator | |
|---|---|
| CONTAINER_NONE | No container is stored. |
| CONTAINER_APPLE_SINGLE | Use an AppleSingle container. |
| CONTAINER_MAC_BINARY | Use a MacBinary container as well as an AppleSingle container (Macintosh only) |
|
protected |
Represents what additional files should be generated.
| Enumerator | |
|---|---|
| PRODUCE_RESOURCE_FORK | Places a GS/OS format resource file under the directory .rsrc. |
| PRODUCE_FINDER_INFO | Places a Finder Information file under the directory .finf (Macintosh only) |
| PRODUCE_APPLE_DOUBLE | Creates an AppleDouble binary with the '' prefix. |
| PRODUCE_MAC_BINARY | Creates a MacBinary with the .mbin extension (Macintosh only) |
| PRODUCE_NAPS_SUFFIX | NuLib2 attribute preservation string suffix, such as #06xxxx (Apple II, III, IIgs only) |
|
protected |
Represents the file type of the main file.
| Enumerator | |
|---|---|
| TARGET_NONE | Do not generate main file. |
| TARGET_DATA_FORK | Main file is a data fork, typically empty. |
| TARGET_RESOURCE_FORK | Main file is a resource fork. |
| TARGET_APPLE_SINGLE | Main file is an AppleSingle. |
| TARGET_APPLE_DOUBLE | Main file is an AppleDouble. |
| TARGET_MAC_BINARY | Main file as a MacBinary (Macintosh only) |
|
overridevirtual |
If the output format actually drives multiple output formats (resource file, apple double, etc.), specify multiple types, return false if unknown.
Reimplemented from Linker::OutputFormat.
|
overrideprotectedvirtual |
Intermediate step between processing module and generating output file to set up headers and management sections It is expected that after a module is processed, additional steps are required to evaluate the final values of the fields.
Reimplemented from Linker::OutputFormat.
Reimplemented in Apple::PEFOutputDriver.
|
overridevirtual |
Display file contents in a nice manner.
Reimplemented from Linker::Format.
|
protectedvirtual |
Called after the container is created.
Reimplemented in Apple::AppleDriver, Apple::Classic68KDriver, and Apple::PEFOutputDriver.
|
protectedvirtual |
Called if there is no container allocated.
Reimplemented in Apple::AppleDriver, Apple::Classic68KDriver, and Apple::PEFOutputDriver.
|
protectedvirtual |
Called if there is no container allocated.
Reimplemented in Apple::AppleDriver, Apple::Classic68KDriver, and Apple::PEFOutputDriver.
|
protectedvirtual |
Called if there is no container allocated.
Reimplemented in Apple::AppleDriver, Apple::Classic68KDriver, and Apple::PEFOutputDriver.
|
overridevirtual |
|
overridevirtual |
Stores data in memory to file.
Implements Linker::Format.