FreeNOS
|
Executable formats library can parse and extract program code and data. More...
Data Structures | |
class | ELF |
Executable and Linkable Format (ELF). More... | |
struct | ELFHeader |
Describes an ELF executable and must be placed at the beginning of executable programs. More... | |
struct | ELFSegment |
ELF program segment in the executable file. More... | |
class | ExecutableFormat |
Abstraction class of various executable formats. More... | |
class | Lz4Decompressor |
Decompress data using the LZ4 algorithm created by Yann Collet. More... | |
Typedefs | |
typedef struct ELFHeader | ELFHeader |
Describes an ELF executable and must be placed at the beginning of executable programs. More... | |
typedef struct ELFSegment | ELFSegment |
ELF program segment in the executable file. More... | |
typedef Address | EntryPoint |
Entry point of a program. More... | |
typedef ExecutableFormat * | FormatDetector(u8 *image, Size size) |
Confirms if we understand the given format. More... | |
Identification indexes | |
#define | ELF_INDEX_MAGIC0 0 |
Magic number byte 0 index. More... | |
#define | ELF_INDEX_MAGIC1 1 |
Magic number byte 1 index. More... | |
#define | ELF_INDEX_MAGIC2 2 |
Magic number byte 2 index. More... | |
#define | ELF_INDEX_MAGIC3 3 |
Magic number byte 3 index. More... | |
#define | ELF_INDEX_CLASS 4 |
File class index. More... | |
#define | ELF_INDEX_DATA 5 |
Data encoding index. More... | |
#define | ELF_INDEX_VERSION 6 |
File version index. More... | |
#define | ELF_INDEX_PAD 7 |
Unused padding index. More... | |
#define | ELF_INDEX_NIDENT 16 |
Number of bytes in the ELF identity field. More... | |
Magic numbers | |
#define | ELF_MAGIC0 0x7f |
Magic number byte 0. More... | |
#define | ELF_MAGIC1 'E' |
Magic number byte 1. More... | |
#define | ELF_MAGIC2 'L' |
Magic number byte 2. More... | |
#define | ELF_MAGIC3 'F' |
Magic number byte 3. More... | |
Processor classes | |
#define | ELF_CLASS_NONE 0 |
Invalid class. More... | |
#define | ELF_CLASS_32 1 |
32-bit objects. More... | |
#define | ELF_CLASS_64 2 |
64-bit objects. More... | |
Data encoding (endianness) | |
#define | ELF_DATA_NONE 0 |
Invalid data encoding. More... | |
#define | ELF_DATA_2LSB 1 |
2-complement, little endian. More... | |
#define | ELF_DATA_2MSB 2 |
2-complement, big endian. More... | |
Object file types | |
#define | ELF_TYPE_NONE 0 |
No file type. More... | |
#define | ELF_TYPE_REL 1 |
Relocatable file. More... | |
#define | ELF_TYPE_EXEC 2 |
Executable file. More... | |
#define | ELF_TYPE_DYN 3 |
Shared object file. More... | |
#define | ELF_TYPE_CORE 4 |
Core file. More... | |
#define | ELF_TYPE_NUM 5 |
Number of defined types. More... | |
#define | ELF_TYPE_LOPROC 0xff00 |
Processor-specific range start. More... | |
#define | ELF_TYPE_HIPROC 0xffff |
Processor-specific range end. More... | |
Machine architectures | |
#define | ELF_MACHINE_NONE 0 |
No machine. More... | |
#define | ELF_MACHINE_M32 1 |
AT&T WE 32100. More... | |
#define | ELF_MACHINE_SPARC 2 |
SPARC. More... | |
#define | ELF_MACHINE_386 3 |
Intel IBM-PC architecture. More... | |
#define | ELF_MACHINE_68K 4 |
Motorola 68000. More... | |
#define | ELF_MACHINE_88K 5 |
Motorola 88000. More... | |
#define | ELF_MACHINE_860 7 |
Intel 80860. More... | |
#define | ELF_MACHINE_MIPS_RS3 8 |
MIPS RS3000 big endian. More... | |
#define | ELF_MACHINE_MIPS_RS4 10 |
MIPS RS4000 big endian. More... | |
Object file version. | |
#define | ELF_VERSION_NONE 0 |
Invalid version. More... | |
#define | ELF_VERSION_CURRENT 1 |
Current version. More... | |
Segment types | |
#define | ELF_SEGMENT_NULL 0 |
Unused segment. More... | |
#define | ELF_SEGMENT_LOAD 1 |
Loadable segment. More... | |
#define | ELF_SEGMENT_DYNAMIC 2 |
Dynamic linker information. More... | |
#define | ELF_SEGMENT_INTERP 3 |
Path to an interpreter for dynamic linking. More... | |
#define | ELF_SEGMENT_NOTE 4 |
Auxiliary information. More... | |
#define | ELF_SEGMENT_SHLIB 5 |
Reserved. More... | |
#define | ELF_SEGMENT_SELF 6 |
Refers to the program segment header itself. More... | |
#define | ELF_SEGMENT_LOPROC 0x70000000 |
Reserved for processor-specific semantics. More... | |
#define | ELF_SEGMENT_HIPROC 0x7fffffff |
Reserved for processor-specific semantics. More... | |
Executable formats library can parse and extract program code and data.
#define ELF_CLASS_32 1 |
32-bit objects.
Definition at line 97 of file ELFHeader.h.
#define ELF_CLASS_64 2 |
64-bit objects.
Definition at line 100 of file ELFHeader.h.
#define ELF_CLASS_NONE 0 |
Invalid class.
Definition at line 94 of file ELFHeader.h.
#define ELF_DATA_2LSB 1 |
2-complement, little endian.
Definition at line 115 of file ELFHeader.h.
#define ELF_DATA_2MSB 2 |
2-complement, big endian.
Definition at line 118 of file ELFHeader.h.
#define ELF_DATA_NONE 0 |
Invalid data encoding.
Definition at line 112 of file ELFHeader.h.
#define ELF_INDEX_CLASS 4 |
File class index.
Definition at line 49 of file ELFHeader.h.
#define ELF_INDEX_DATA 5 |
Data encoding index.
Definition at line 52 of file ELFHeader.h.
#define ELF_INDEX_MAGIC0 0 |
Magic number byte 0 index.
Definition at line 37 of file ELFHeader.h.
#define ELF_INDEX_MAGIC1 1 |
Magic number byte 1 index.
Definition at line 40 of file ELFHeader.h.
#define ELF_INDEX_MAGIC2 2 |
Magic number byte 2 index.
Definition at line 43 of file ELFHeader.h.
#define ELF_INDEX_MAGIC3 3 |
Magic number byte 3 index.
Definition at line 46 of file ELFHeader.h.
#define ELF_INDEX_NIDENT 16 |
Number of bytes in the ELF identity field.
Definition at line 61 of file ELFHeader.h.
#define ELF_INDEX_PAD 7 |
Unused padding index.
Definition at line 58 of file ELFHeader.h.
#define ELF_INDEX_VERSION 6 |
File version index.
Definition at line 55 of file ELFHeader.h.
#define ELF_MACHINE_386 3 |
Intel IBM-PC architecture.
Definition at line 172 of file ELFHeader.h.
#define ELF_MACHINE_68K 4 |
Motorola 68000.
Definition at line 175 of file ELFHeader.h.
#define ELF_MACHINE_860 7 |
Intel 80860.
Definition at line 181 of file ELFHeader.h.
#define ELF_MACHINE_88K 5 |
Motorola 88000.
Definition at line 178 of file ELFHeader.h.
#define ELF_MACHINE_M32 1 |
AT&T WE 32100.
Definition at line 166 of file ELFHeader.h.
#define ELF_MACHINE_MIPS_RS3 8 |
MIPS RS3000 big endian.
Definition at line 184 of file ELFHeader.h.
#define ELF_MACHINE_MIPS_RS4 10 |
MIPS RS4000 big endian.
Definition at line 187 of file ELFHeader.h.
#define ELF_MACHINE_NONE 0 |
No machine.
Definition at line 163 of file ELFHeader.h.
#define ELF_MACHINE_SPARC 2 |
SPARC.
Definition at line 169 of file ELFHeader.h.
#define ELF_MAGIC0 0x7f |
Magic number byte 0.
Definition at line 73 of file ELFHeader.h.
#define ELF_MAGIC1 'E' |
Magic number byte 1.
Definition at line 76 of file ELFHeader.h.
#define ELF_MAGIC2 'L' |
Magic number byte 2.
Definition at line 79 of file ELFHeader.h.
#define ELF_MAGIC3 'F' |
Magic number byte 3.
Definition at line 82 of file ELFHeader.h.
#define ELF_SEGMENT_DYNAMIC 2 |
Dynamic linker information.
Definition at line 269 of file ELFHeader.h.
#define ELF_SEGMENT_HIPROC 0x7fffffff |
Reserved for processor-specific semantics.
Definition at line 287 of file ELFHeader.h.
#define ELF_SEGMENT_INTERP 3 |
Path to an interpreter for dynamic linking.
Definition at line 272 of file ELFHeader.h.
#define ELF_SEGMENT_LOAD 1 |
Loadable segment.
Definition at line 266 of file ELFHeader.h.
#define ELF_SEGMENT_LOPROC 0x70000000 |
Reserved for processor-specific semantics.
Definition at line 284 of file ELFHeader.h.
#define ELF_SEGMENT_NOTE 4 |
Auxiliary information.
Definition at line 275 of file ELFHeader.h.
#define ELF_SEGMENT_NULL 0 |
Unused segment.
Definition at line 263 of file ELFHeader.h.
#define ELF_SEGMENT_SELF 6 |
Refers to the program segment header itself.
Definition at line 281 of file ELFHeader.h.
#define ELF_SEGMENT_SHLIB 5 |
Reserved.
Definition at line 278 of file ELFHeader.h.
#define ELF_TYPE_CORE 4 |
Core file.
Definition at line 142 of file ELFHeader.h.
#define ELF_TYPE_DYN 3 |
Shared object file.
Definition at line 139 of file ELFHeader.h.
#define ELF_TYPE_EXEC 2 |
Executable file.
Definition at line 136 of file ELFHeader.h.
#define ELF_TYPE_HIPROC 0xffff |
Processor-specific range end.
Definition at line 151 of file ELFHeader.h.
#define ELF_TYPE_LOPROC 0xff00 |
Processor-specific range start.
Definition at line 148 of file ELFHeader.h.
#define ELF_TYPE_NONE 0 |
No file type.
Definition at line 130 of file ELFHeader.h.
#define ELF_TYPE_NUM 5 |
Number of defined types.
Definition at line 145 of file ELFHeader.h.
#define ELF_TYPE_REL 1 |
Relocatable file.
Definition at line 133 of file ELFHeader.h.
#define ELF_VERSION_CURRENT 1 |
Current version.
Definition at line 202 of file ELFHeader.h.
#define ELF_VERSION_NONE 0 |
Invalid version.
Definition at line 199 of file ELFHeader.h.
Describes an ELF executable and must be placed at the beginning of executable programs.
typedef struct ELFSegment ELFSegment |
ELF program segment in the executable file.
typedef Address EntryPoint |
Entry point of a program.
Definition at line 34 of file ExecutableFormat.h.
typedef ExecutableFormat* FormatDetector(u8 *image, Size size) |
Confirms if we understand the given format.
Definition at line 43 of file ExecutableFormat.h.