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

Represents an entry into the binary, typically DLL exported procedures. More...

#include <leexe.h>

Inheritance diagram for Microsoft::LEFormat::Entry:
Linker::Writer

Public Types

enum  entry_type {
  Unused , Entry16 , CallGate286 , Entry32 ,
  Forwarder
}
 
enum  flag_type { Exported = 1 , SharedData = 2 , ForwarderByOrdinal = 1 }
 
enum  export_type { NotExported , ExportByName , ExportByOrdinal }
 

Public Member Functions

 Entry (unsigned type)
 
 Entry (unsigned type, uint16_t object, unsigned flags, uint32_t offset)
 
bool SameBundle (const Entry &other) const
 
offset_t GetEntryHeadSize () const
 
offset_t GetEntryBodySize () const
 
void WriteEntryHead (Linker::Writer &wr) const
 
void WriteEntryBody (Linker::Writer &wr) const
 
- Public Member Functions inherited from Linker::Writer
 Writer (EndianType endiantype, std::ostream *out=nullptr)
 
void WriteData (size_t count, const void *data)
 Write out a sequence of bytes.
 
size_t WriteData (size_t max_count, const std::vector< uint8_t > &data, size_t offset=0)
 Write out a sequence of bytes.
 
size_t WriteData (const std::vector< uint8_t > &data, size_t offset=0)
 Write out a sequence of bytes.
 
template<class T , std::size_t N>
void WriteData (const std::array< T, N > &data, size_t offset=0)
 Write out a sequence of bytes.
 
void WriteData (size_t count, std::string text, char padding='\0')
 Write a string, possibly truncated or zero padded.
 
void WriteData (std::string text)
 Write a string.
 
void WriteData (size_t count, std::istream &in)
 Write data using an input stream as the source of data.
 
void WriteWord (size_t bytes, uint64_t value, EndianType endiantype)
 Read a word.
 
void WriteWord (size_t bytes, uint64_t value)
 Read a word.
 
void Seek (offset_t offset)
 Jump to a specific location in the ouput stream.
 
void Skip (offset_t offset)
 Jump to a distance in the output stream.
 
void SeekEnd (offset_t offset=0)
 Jump to a specific offset from the end.
 
offset_t Tell ()
 Retrieve the current location.
 
void FillTo (offset_t position)
 Move to a specific offset, fill with zeroes if needed.
 
void AlignTo (offset_t align)
 Align the current pointer.
 

Static Public Member Functions

static Entry ReadEntryHead (Linker::Reader &rd, uint8_t type)
 
static Entry ReadEntry (Linker::Reader &rd, uint8_t type, LEFormat::Entry &head)
 

Public Attributes

entry_type type = Unused
 
uint16_t object = 0
 
flag_type flags = flag_type(0)
 
uint32_t offset = 0
 
export_type export_state = NotExported
 Whether the entry is exported. This is not actually stored in the entry table and its value is ignored during program generation.
 
std::string entry_name
 The name of an exported entry. This is not actually stored in the entry table and its value is ignored during program generation.
 
std::string module_name
 Convenience field that stores the module name for a forwarder entry, not used for generation.
 
std::string import_name
 Convenience field that stores the imported procedure name for a forwarder entry, if imported by name, also the name for an exported entry, not used for generation.
 
bool same_bundle = false
 
- Public Attributes inherited from Linker::Writer
EndianType endiantype
 The default endianness of the binary format, used for reading multibyte numeric data.
 
std::ostream * out
 The output stream.
 

Additional Inherited Members

- Protected Member Functions inherited from Linker::Writer
void ForceSeek (offset_t offset)
 

Detailed Description

Represents an entry into the binary, typically DLL exported procedures.

Member Enumeration Documentation

◆ export_type

Enumerator
NotExported 

The entry is not exported, the Exported bit is not set.

ExportByName 

The entry is exported by name, it is referenced in the resident name table.

ExportByOrdinal 

The entry is exported by ordinal, it is referenced in the nonresident name table.


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