]>
git.dujemihanovic.xyz Git - nameless-os.git/blob - boot/x86/stage3/elf.h
6 /* Some constants we will test against. */
7 #define ELF_MAGIC 0x464c457f
9 #define ELF_LITTLE_ENDIAN 0x1
10 #define ELF_SYSV_ABI 0x0
11 #define ELF_TYPE_EXECUTABLE 0x2
12 #define ELF_X86_ISA 0x3
14 #define ELF_PT_LOAD 0x1
16 #define ELF_FLAG_EXECUTABLE 0x1
17 #define ELF_FLAG_WRITABLE 0x2
18 #define ELF_FLAG_READABLE 0x4
20 /* Return error codes for the functions. */
21 #define ELF_HEADER_INVALID 5
22 #define MISMATCHED_SYSTEM 6
23 #define NOT_EXECUTABLE 7
29 uint8_t header_ver
; /* always 1 */
34 uint32_t elf_ver
; /* always 1 */
35 void (*entry
)(void *, int);
36 uint32_t program_hdr
; /* offset into file */
40 uint16_t ph_entry_size
;
41 uint16_t ph_entry_count
;
42 uint16_t sh_entry_size
;
43 uint16_t sh_entry_count
;
44 uint16_t sh_name_index
;
47 struct program_header
{
58 extern int execute_elf(struct elf_header
*header
, void *arg1
, int arg2
);