1 // Format of an ELF executable file 2 3 #define ELF_MAGIC 0x464C457FU // "\x7FELF" in little endian 4 5 // File header 6 struct elfhdr { 7 uint magic; // must equal ELF_MAGIC 8 uchar elf[12]; 9 ushort type; 10 ushort machine; 11 uint version; 12 uint entry; 13 uint phoff; 14 uint shoff; 15 uint flags; 16 ushort ehsize; 17 ushort phentsize; 18 ushort phnum; 19 ushort shentsize; 20 ushort shnum; 21 ushort shstrndx; 22 }; 23 24 // Program section header 25 struct proghdr { 26 uint type; 27 uint off; 28 uint vaddr; 29 uint paddr; 30 uint filesz; 31 uint memsz; 32 uint flags; 33 uint align; 34 }; 35 36 // Values for Proghdr type 37 #define ELF_PROG_LOAD 1 38 39 // Flag bits for Proghdr flags 40 #define ELF_PROG_FLAG_EXEC 1 41 #define ELF_PROG_FLAG_WRITE 2 42 #define ELF_PROG_FLAG_READ 4 43