X-Git-Url: https://scm.lunaixsky.com/lunaix-os.git/blobdiff_plain/b632f535c4a6882bdca0317fb88cbe6e165f24eb..28c176b668c841a3b7fb093faccf0efa39257603:/lunaix-os/includes/lunaix/exebi/elf32.h diff --git a/lunaix-os/includes/lunaix/exebi/elf32.h b/lunaix-os/includes/lunaix/exebi/elf32.h deleted file mode 100644 index 33da3a5..0000000 --- a/lunaix-os/includes/lunaix/exebi/elf32.h +++ /dev/null @@ -1,130 +0,0 @@ -#ifndef __LUNAIX_ELF32_H -#define __LUNAIX_ELF32_H - -#include - -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_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 - -#define NO_LOADER 0 -#define DEFAULT_LOADER "usr/ld" - -struct elf32_ehdr -{ - u8_t 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; -}; - -struct elf32 -{ - const void* elf_file; - struct elf32_ehdr eheader; - struct elf32_phdr* pheaders; -}; - -#define declare_elf32(elf, elf_vfile) \ - struct elf32 elf = { .elf_file = elf_vfile, .pheaders = (void*)0 } - -int -elf32_check_exec(const struct elf32* elf, int type); - -int -elf32_check_arch(const struct elf32* elf); - -int -elf32_open(struct elf32* elf, const char* path); - -int -elf32_openat(struct elf32* elf, const void* elf_vfile); - -int -elf32_static_linked(const struct elf32* elf); - -int -elf32_close(struct elf32* elf); - -/** - * @brief Try to find the PT_INTERP section. If found, copy it's content to - * path_out - * - * @param elf Opened elf32 descriptor - * @param path_out - * @param len size of path_out buffer - * @return int - */ -int -elf32_find_loader(const struct elf32* elf, char* path_out, size_t len); - -int -elf32_read_ehdr(struct elf32* elf); - -int -elf32_read_phdr(struct elf32* elf); - -/** - * @brief Estimate how much memeory will be acquired if we load all loadable - * sections.、 - * - * @param elf - * @return size_t - */ -size_t -elf32_loadable_memsz(const struct elf32* elf); - -#define SIZE_EHDR sizeof(struct elf32_ehdr) -#define SIZE_PHDR sizeof(struct elf32_phdr) - -#endif /* __LUNAIX_ELF32_H */