#ifndef __LUNAIX_LD_ELF_H #define __LUNAIX_LD_ELF_H typedef unsigned int elf32_ptr_t; typedef unsigned short elf32_hlf_t; typedef unsigned int elf32_off_t; typedef unsigned int elf32_swd_t; typedef unsigned int elf32_wrd_t; #define ET_NONE 0 #define ET_EXEC 2 #define ET_DYN 3 #define PT_LOAD 1 #define PT_DYNAMIC 2 #define PT_INTERP 3 #define PF_X 0x1 #define PF_W 0x2 #define PF_R 0x4 #define EM_NONE 0 #define EM_386 3 #define EV_CURRENT 1 // [0x7f, 'E', 'L', 'F'] #define ELFMAGIC 0x464c457fU #define ELFCLASS32 1 #define ELFCLASS64 2 #define ELFDATA2LSB 1 #define ELFDATA2MSB 2 #define EI_CLASS 4 #define EI_DATA 5 struct elf32_ehdr { unsigned char e_ident[16]; elf32_hlf_t e_type; elf32_hlf_t e_machine; elf32_wrd_t e_version; elf32_ptr_t e_entry; elf32_off_t e_phoff; elf32_off_t e_shoff; elf32_wrd_t e_flags; elf32_hlf_t e_ehsize; elf32_hlf_t e_phentsize; elf32_hlf_t e_phnum; elf32_hlf_t e_shentsize; elf32_hlf_t e_shnum; elf32_hlf_t e_shstrndx; }; struct elf32_phdr { elf32_wrd_t p_type; elf32_off_t p_offset; elf32_ptr_t p_va; elf32_ptr_t p_pa; elf32_wrd_t p_filesz; elf32_wrd_t p_memsz; elf32_wrd_t p_flags; elf32_wrd_t p_align; }; #endif /* __LUNAIX_ELF_H */