mirror of
https://github.com/bdnugget/eggos.git
synced 2026-11-07 04:17:27 +00:00
45 lines
757 B
C
45 lines
757 B
C
// Format of an ELF executable file
|
|
|
|
#define ELF_MAGIC 0x464C457FU // "\x7FELF" in little endian
|
|
|
|
// File header
|
|
struct elfhdr
|
|
{
|
|
uint32 magic; // must equal ELF_MAGIC
|
|
uint8 elf[12];
|
|
uint16 type;
|
|
uint16 machine;
|
|
uint32 version;
|
|
uint64 entry;
|
|
uint64 phoff;
|
|
uint64 shoff;
|
|
uint32 flags;
|
|
uint16 ehsize;
|
|
uint16 phentsize;
|
|
uint16 phnum;
|
|
uint16 shentsize;
|
|
uint16 shnum;
|
|
uint16 shstrndx;
|
|
};
|
|
|
|
// Program section header
|
|
struct proghdr
|
|
{
|
|
uint32 type;
|
|
uint32 flags;
|
|
uint64 off;
|
|
uint64 vaddr;
|
|
uint64 paddr;
|
|
uint64 filesz;
|
|
uint64 memsz;
|
|
uint64 align;
|
|
};
|
|
|
|
// Values for Proghdr type
|
|
#define ELF_PROG_LOAD 1
|
|
|
|
// Flag bits for Proghdr flags
|
|
#define ELF_PROG_FLAG_EXEC 1
|
|
#define ELF_PROG_FLAG_WRITE 2
|
|
#define ELF_PROG_FLAG_READ 4
|