summaryrefslogtreecommitdiff
path: root/kernel/elf.h
diff options
context:
space:
mode:
Diffstat (limited to 'kernel/elf.h')
-rw-r--r--kernel/elf.h98
1 files changed, 0 insertions, 98 deletions
diff --git a/kernel/elf.h b/kernel/elf.h
deleted file mode 100644
index 2ad4353..0000000
--- a/kernel/elf.h
+++ /dev/null
@@ -1,98 +0,0 @@
-#ifndef ELF_H
-#define ELF_H
-#include <assert.h>
-#include <fs/vfs.h>
-#include <mmu.h>
-#include <typedefs.h>
-
-#define ET_NONE 0 // No file type
-#define ET_REL 1 // Relocatable file
-#define ET_EXEC 2 // Executable file
-#define ET_DYN 3 // Shared object file
-#define ET_CORE 4 // Core file
-#define ET_LOPROC 0xff00 // Processor-specific
-#define ET_HIPROC 0xffff // Processor-specific
-
-#define EM_NONE 0 // No machine
-#define EM_M32 1 // AT&T WE 32100
-#define EM_SPARC 2 // SPARC
-#define EM_386 3 // Intel 80386
-#define EM_68K 4 // Motorola 68000
-#define EM_88K 5 // Motorola 88000
-#define EM_860 7 // Intel 80860
-#define EM_MIPS 8 // MIPS RS3000
-
-#define EV_NONE 0 // Invalid version
-#define EV_CURRENT 1 // Current version
-
-#define ELF_EXECUTABLE (1 << 0)
-#define ELF_WRITABLE (1 << 1)
-#define ELF_READABLE (1 << 2)
-
-#define Elf32_Addr u32 // Unsigned program address
-#define Elf32_Half u16 // Unsigned medium integer
-#define Elf32_Off u32 // Unsigned file offset
-#define Elf32_Sword u32 // Signed large integer
-#define Elf32_Word u32 // Unsigned large integer
-
-#define ELF_EXEC (1 << 0)
-#define ELF_WRITE (1 << 1)
-#define ELF_READ (1 << 2)
-
-// ELF header
-typedef struct {
- unsigned char e_ident[16];
- Elf32_Half e_type; // Object file type (ET_*)
- Elf32_Half e_machine; // Required architecture (EM_*)
- Elf32_Word e_version; // Object file version (EV_*)
- Elf32_Addr e_entry; // File entry point
- Elf32_Off e_phoff; // Program header table's offset(bytes)
- Elf32_Off e_shoff; // Section header table's offset(bytes)
- Elf32_Word e_flags;
- Elf32_Half e_ehsize; // ELF Header size
- Elf32_Half
- e_phentsize; // Size of program's header tables(all are the same size)
- Elf32_Half e_phnum; // Amount of program headers
- Elf32_Half e_shentsize;
- Elf32_Half e_shnum;
- Elf32_Half e_shstrndx;
-} __attribute__((packed)) ELFHeader;
-
-// Section header
-typedef struct {
- Elf32_Word sh_name;
- Elf32_Word sh_type;
- Elf32_Word sh_flags;
- Elf32_Addr sh_addr;
- Elf32_Off sh_offset;
- Elf32_Word sh_size;
- Elf32_Word sh_link;
- Elf32_Word sh_info;
- Elf32_Word sh_addralign;
- Elf32_Word sh_entsize;
-} Elf32_Shdr;
-
-enum ShT_Types {
- SHT_NULL = 0, // Null section
- SHT_PROGBITS = 1, // Program information
- SHT_SYMTAB = 2, // Symbol table
- SHT_STRTAB = 3, // String table
- SHT_RELA = 4, // Relocation (w/ addend)
- SHT_NOBITS = 8, // Not present in file
- SHT_REL = 9, // Relocation (no addend)
-};
-
-// Program header
-typedef struct {
- Elf32_Word p_type;
- Elf32_Off p_offset;
- Elf32_Addr p_vaddr;
- Elf32_Addr p_paddr;
- Elf32_Word p_filesz;
- Elf32_Word p_memsz;
- Elf32_Word p_flags;
- Elf32_Word p_align;
-} __attribute__((packed)) Elf32_Phdr;
-
-void *load_elf_file(const char *f, u32 *ds);
-#endif