44 lines
826 B
C
44 lines
826 B
C
|
#ifndef JOS_INC_ELF_H
|
||
|
#define JOS_INC_ELF_H
|
||
|
|
||
|
#define ELF_MAGIC 0x464C457FU /* "\x7FELF" in little endian */
|
||
|
|
||
|
struct Elf {
|
||
|
uint32_t e_magic; // must equal ELF_MAGIC
|
||
|
uint8_t e_elf[12];
|
||
|
uint16_t e_type;
|
||
|
uint16_t e_machine;
|
||
|
uint32_t e_version;
|
||
|
uint32_t e_entry;
|
||
|
uint32_t e_phoff;
|
||
|
uint32_t e_shoff;
|
||
|
uint32_t e_flags;
|
||
|
uint16_t e_ehsize;
|
||
|
uint16_t e_phentsize;
|
||
|
uint16_t e_phnum;
|
||
|
uint16_t e_shentsize;
|
||
|
uint16_t e_shnum;
|
||
|
uint16_t e_shstrndx;
|
||
|
};
|
||
|
|
||
|
struct Proghdr {
|
||
|
uint32_t p_type;
|
||
|
uint32_t p_offset;
|
||
|
uint32_t p_va;
|
||
|
uint32_t p_pa;
|
||
|
uint32_t p_filesz;
|
||
|
uint32_t p_memsz;
|
||
|
uint32_t p_flags;
|
||
|
uint32_t p_align;
|
||
|
};
|
||
|
|
||
|
// Values for Proghdr::p_type
|
||
|
#define ELF_PROG_LOAD 1
|
||
|
|
||
|
// Flag bits for Proghdr::p_flags
|
||
|
#define ELF_PROG_FLAG_EXEC 1
|
||
|
#define ELF_PROG_FLAG_WRITE 2
|
||
|
#define ELF_PROG_FLAG_READ 4
|
||
|
|
||
|
#endif /* !JOS_INC_ELF_H */
|