RetroLinker
Linker for several 8-bit, 16-bit and 32-bit formats
|
Represents the declaration block of a HUNK_BSS segment (hunk) that needs to be allocated and filled with zero at load time. More...
#include <hunk.h>
Public Member Functions | |
BssBlock (uint32_t size=0, uint32_t flags=LoadAny) | |
offset_t | FileSize () const override |
Returns the size of the block as stored inside a file. | |
void | AddExtraFields (Dumper::Region ®ion, const Module &module, const Hunk *hunk, unsigned index, offset_t current_offset) const override |
![]() | |
RelocatableBlock (block_type type, uint32_t flags=LoadAny) | |
uint32_t | GetSizeField () const |
Returns the 32-bit longword that stores the size of the segment plus 2 flag bits. | |
bool | RequiresAdditionalFlags () const |
Returns true if an additional 32-bit longword is needed for flags. | |
uint32_t | GetAdditionalFlags () const |
The contents of an additional 32-bit longword is needed for flags. | |
void | Read (Linker::Reader &rd) override |
Reads the rest of the block after the type word. | |
void | Write (Linker::Writer &wr) const override |
Writes the entire block into a file. | |
offset_t | FileSize () const override |
Returns the size of the block as stored inside a file. | |
void | AddExtraFields (Dumper::Region ®ion, const Module &module, const Hunk *hunk, unsigned index, offset_t current_offset) const override |
![]() | |
Block (block_type type, bool is_executable=false) | |
virtual void | Dump (Dumper::Dumper &dump, const Module &module, const Hunk *hunk, unsigned index, offset_t current_offset) const |
void | AddCommonFields (Dumper::Region ®ion, unsigned index) const |
Public Attributes | |
uint32_t | size |
Size of memory in 4-byte longwords. | |
![]() | |
flag_type | flags |
bool | loaded_with_additional_flags = false |
![]() | |
block_type | type |
bool | is_executable = false |
Required because V37 executables define HUNK_DRELOC32 as HUNK_RELOC32SHORT, must block types ignore this field and it is not stored. | |
Protected Member Functions | |
uint32_t | GetSize () const override |
The actual size of the segment data, as a count of 32-bit longwords. | |
void | ReadBody (Linker::Reader &rd, uint32_t longword_count) override |
Reads the segment data (if any) | |
![]() | |
virtual void | WriteBody (Linker::Writer &wr) const |
Writes the segment data (if any) | |
Additional Inherited Members | |
![]() | |
enum | { FlagMask = 0xE0000000 , BitAdvisory = 0x20000000 , BitChipMem = 0x40000000 , BitFastMem = 0x80000000 , BitAdditional = 0xC0000000 } |
enum | flag_type { LoadAny = 0x00000000 , LoadPublic = 0x00000001 , LoadChipMem = 0x00000002 , LoadFastMem = 0x00000004 , LoadLocalMem = 0x00000008 , Load24BitDma = 0x00000010 , LoadClear = 0x00010000 } |
![]() | |
enum | block_type { HUNK_UNIT = 0x3E7 , HUNK_NAME = 0x3E8 , HUNK_CODE = 0x3E9 , HUNK_DATA = 0x3EA , HUNK_BSS = 0x3EB , HUNK_ABSRELOC32 = 0x3EC , HUNK_RELRELOC16 = 0x3ED , HUNK_RELRELOC8 = 0x3EE , HUNK_EXT = 0x3EF , HUNK_SYMBOL = 0x3F0 , HUNK_DEBUG = 0x3F1 , HUNK_END = 0x3F2 , HUNK_HEADER = 0x3F3 , HUNK_OVERLAY = 0x3F5 , HUNK_BREAK = 0x3F6 , HUNK_DRELOC32 = 0x3F7 , HUNK_DRELOC16 = 0x3F8 , HUNK_DRELOC8 = 0x3F9 , HUNK_LIB = 0x3FA , HUNK_INDEX = 0x3FB , HUNK_RELOC32SHORT = 0x3FC , HUNK_RELRELOC32 = 0x3FD , HUNK_ABSRELOC16 = 0x3FE , HUNK_PPC_CODE = 0x4E9 , HUNK_RELRELOC26 = 0x4EC , HUNK_V37_RELOC32SHORT = 0x3F7 } |
![]() | |
static std::shared_ptr< Block > | ReadBlock (Linker::Reader &rd, bool is_executable=false) |
Reads a single block from file. | |
Represents the declaration block of a HUNK_BSS segment (hunk) that needs to be allocated and filled with zero at load time.
|
overridevirtual |
Reimplemented from Amiga::HunkFormat::Block.
|
overridevirtual |
Returns the size of the block as stored inside a file.
Reimplemented from Amiga::HunkFormat::Block.
|
overrideprotectedvirtual |
The actual size of the segment data, as a count of 32-bit longwords.
Implements Amiga::HunkFormat::RelocatableBlock.
|
overrideprotectedvirtual |
Reads the segment data (if any)
Reimplemented from Amiga::HunkFormat::RelocatableBlock.