From d8331335ff1720ce28eba45afe1a02814b38b033 Mon Sep 17 00:00:00 2001 From: Michal Idziorek Date: Mon, 1 Dec 2014 21:49:22 +0100 Subject: finally implemented fork() syscall --- fs/elf.c | 64 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 64 insertions(+) create mode 100644 fs/elf.c (limited to 'fs') diff --git a/fs/elf.c b/fs/elf.c new file mode 100644 index 0000000..3b2f2b3 --- /dev/null +++ b/fs/elf.c @@ -0,0 +1,64 @@ +#include + +#define EI_NIDENT 16 + + +typedef uint32_t Elf32_Addr; +typedef uint32_t Elf32_Off; +typedef uint16_t Elf32_Section; +typedef uint16_t Elf32_Versym; +typedef unsigned char Elf_Byte; +typedef uint16_t Elf32_Half; +typedef int32_t Elf32_Sword; +typedef uint32_t Elf32_Word; +typedef int64_t Elf32_Sxword; +typedef uint64_t Elf32_Xword; + + +typedef struct +{ + + unsigned char e_ident[EI_NIDENT]; + Elf32_Half e_type; + Elf32_Half e_machine; + Elf32_Word e_version; + Elf32_Addr e_entry; + Elf32_Off e_phoff; + Elf32_Off e_shoff; + Elf32_Word e_flags; + Elf32_Half e_ehsize; + Elf32_Half e_phentsize; + Elf32_Half e_phnum; + Elf32_Half e_shentsize; + Elf32_Half e_shnum; + Elf32_Half e_shstrndx; + +} +Elf32_Ehdr; + + +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; + +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; +} +Elf32_Phdr; -- cgit v1.2.3