Added elf_o module
This commit is contained in:
@@ -606,4 +606,114 @@ typedef struct _PECOFF_IMAGE_RESOURCE_DATA_ENTRY
|
||||
ULONG Reserved;
|
||||
} PECOFF_IMAGE_RESOURCE_DATA_ENTRY, *PPECOFF_IMAGE_RESOURCE_DATA_ENTRY;
|
||||
|
||||
/* TODO: Name these enumerations */
|
||||
typedef enum _ELF_IDENT
|
||||
{
|
||||
EI_MAG0 = 0,
|
||||
EI_MAG1 = 1,
|
||||
EI_MAG2 = 2,
|
||||
EI_MAG3 = 3,
|
||||
EI_CLASS = 4,
|
||||
EI_DATA = 5,
|
||||
EI_VERSION = 6,
|
||||
EI_OSABI = 7,
|
||||
EI_ABIVERSION = 8
|
||||
} ELF_IDENT;
|
||||
|
||||
typedef enum _ELF_PT
|
||||
{
|
||||
PT_NULL = 0,
|
||||
PT_LOAD = 1,
|
||||
PT_DYNAMIC = 2,
|
||||
PT_INTERP = 3,
|
||||
PT_NOTE = 4,
|
||||
PT_SHLIB = 5,
|
||||
PT_PHDR = 6,
|
||||
PT_TLS = 7
|
||||
} ELF_PT;
|
||||
|
||||
/* ELF image representation structure */
|
||||
typedef struct _ELF_IMAGE_CONTEXT
|
||||
{
|
||||
union
|
||||
{
|
||||
PELF32_HEADER Header32;
|
||||
PELF64_HEADER Header64;
|
||||
};
|
||||
PVOID Data;
|
||||
PVOID EntryPoint;
|
||||
UINT64 FileSize;
|
||||
UINT ImagePages;
|
||||
UINT ImageSize;
|
||||
LOADER_MEMORY_TYPE MemoryType;
|
||||
PVOID PhysicalAddress;
|
||||
PVOID VirtualAddress;
|
||||
} ELF_IMAGE_CONTEXT, *PELF_IMAGE_CONTEXT;
|
||||
|
||||
/* 32-bit ELF image header structure */
|
||||
typedef struct _ELF32_HEADER
|
||||
{
|
||||
/* NOTE: EI_NIDENT seems to always be defined as 16. */
|
||||
UCHAR e_ident[16];
|
||||
UINT16 e_type;
|
||||
UINT16 e_machine;
|
||||
UINT32 e_version;
|
||||
UINT32 e_entry;
|
||||
UINT32 e_phoff;
|
||||
UINT32 e_shoff;
|
||||
UINT32 e_flags;
|
||||
UINT16 e_ehsize;
|
||||
UINT16 e_phentsize;
|
||||
UINT16 e_phnum;
|
||||
UINT16 e_shentsize;
|
||||
UINT16 e_shnum;
|
||||
UINT16 e_shstrndx;
|
||||
} ELF32_HEADER, *PELF32_HEADER;
|
||||
|
||||
/* 64-bit ELF image header structure */
|
||||
typedef struct _ELF64_HEADER
|
||||
{
|
||||
/* NOTE: EI_NIDENT seems to always be defined as 16. */
|
||||
UCHAR e_ident[16];
|
||||
UINT16 e_type;
|
||||
UINT16 e_machine;
|
||||
UINT32 e_version;
|
||||
ULONG e_entry;
|
||||
ULONG e_phoff;
|
||||
ULONG e_shoff;
|
||||
UINT32 e_flags;
|
||||
UINT16 e_ehsize;
|
||||
UINT16 e_phentsize;
|
||||
UINT16 e_phnum;
|
||||
UINT16 e_shentsize;
|
||||
UINT16 e_shnum;
|
||||
UINT16 e_shstrndx;
|
||||
} ELF64_HEADER, *PELF64_HEADER;
|
||||
|
||||
/* 32-bit ELF program header structure */
|
||||
typedef struct _ELF32_PROGRAM_HEADER
|
||||
{
|
||||
UINT32 p_type;
|
||||
UINT32 p_offset;
|
||||
UINT32 p_vaddr;
|
||||
UINT32 p_paddr;
|
||||
UINT32 p_filesz;
|
||||
UINT32 p_memsz;
|
||||
UINT32 p_flags;
|
||||
UINT32 p_align;
|
||||
} ELF32_PROGRAM_HEADER, *PELF32_PROGRAM_HEADER;
|
||||
|
||||
/* 64-bit ELF program header structure */
|
||||
typedef struct _ELF64_PROGRAM_HEADER
|
||||
{
|
||||
UINT32 p_type;
|
||||
UINT32 p_flags;
|
||||
ULONG p_offset;
|
||||
ULONG p_vaddr;
|
||||
ULONG p_paddr;
|
||||
ULONG p_filesz;
|
||||
ULONG p_memsz;
|
||||
ULONG p_align;
|
||||
} ELF64_PROGRAM_HEADER, *PELF64_PROGRAM_HEADER;
|
||||
|
||||
#endif /* __XTDK_XTIMAGE_H */
|
||||
|
@@ -254,6 +254,11 @@ typedef struct _PECOFF_IMAGE_ROM_HEADER PECOFF_IMAGE_ROM_HEADER, *PPECOFF_IMAGE_
|
||||
typedef struct _PECOFF_IMAGE_ROM_OPTIONAL_HEADER PECOFF_IMAGE_ROM_OPTIONAL_HEADER, *PPECOFF_IMAGE_ROM_OPTIONAL_HEADER;
|
||||
typedef struct _PECOFF_IMAGE_SECTION_HEADER PECOFF_IMAGE_SECTION_HEADER, *PPECOFF_IMAGE_SECTION_HEADER;
|
||||
typedef struct _PECOFF_IMAGE_VXD_HEADER PECOFF_IMAGE_VXD_HEADER, *PPECOFF_IMAGE_VXD_HEADER;
|
||||
typedef struct _ELF_IMAGE_CONTEXT ELF_IMAGE_CONTEXT, *PELF_IMAGE_CONTEXT;
|
||||
typedef struct _ELF32_HEADER ELF32_HEADER, *PELF32_HEADER;
|
||||
typedef struct _ELF64_HEADER ELF64_HEADER, *PELF64_HEADER;
|
||||
typedef struct _ELF32_PROGRAM_HEADER ELF32_PROGRAM_HEADER, *PELF32_PROGRAM_HEADER;
|
||||
typedef struct _ELF64_PROGRAM_HEADER ELF64_PROGRAM_HEADER, *PELF64_PROGRAM_HEADER;
|
||||
typedef struct _PROCESSOR_POWER_STATE PROCESSOR_POWER_STATE, *PPROCESSOR_POWER_STATE;
|
||||
typedef struct _SINGLE_LIST_ENTRY SINGLE_LIST_ENTRY, *PSINGLE_LIST_ENTRY;
|
||||
typedef struct _STRING STRING, *PSTRING;
|
||||
|
Reference in New Issue
Block a user