ApertureOS
elf.h
Go to the documentation of this file.
1 #ifndef _ELF_H_
2 #define _ELF_H_
3 
4 #include "types.h"
5 
6 typedef uint16_t Elf32_Half; // Unsigned half int
7 typedef uint32_t Elf32_Off; // Unsigned offset
8 typedef uint32_t Elf32_Addr; // Unsigned address
9 typedef uint32_t Elf32_Word; // Unsigned int
10 typedef int32_t Elf32_Sword; // Signed int
11 
12 #define ELF_NIDENT 16
13 
14 typedef struct
15 {
16  uint8_t e_ident[ELF_NIDENT];
30 } Elf32_Ehdr;
31 
33 {
34  EI_MAG0 = 0,// 0x7F
35  EI_MAG1 = 1,// 'E'
36  EI_MAG2 = 2,// 'L'
37  EI_MAG3 = 3,// 'F'
38  EI_CLASS = 4,// Architecture (32/64)
39  EI_DATA = 5,// Byte Order
40  EI_VERSION = 6,// ELF Version
41  EI_OSABI = 7,// OS Specific
42  EI_ABIVERSION = 8, // OS Specific
43  EI_PAD = 9// Padding
44 };
45 
46 #define ELFMAG0 0x7F // e_ident[EI_MAG0]
47 #define ELFMAG1 'E' // e_ident[EI_MAG1]
48 #define ELFMAG2 'L' // e_ident[EI_MAG2]
49 #define ELFMAG3 'F' // e_ident[EI_MAG3]
50 #define ELFDATA2LSB (1) // Little Endian
51 #define ELFCLASS32 (1) // 32-bit Architecture
52 
54 {
55  ET_NONE = 0,// Unkown Type
56  ET_REL = 1,// Relocatable File
57  ET_EXEC = 2,// Executable File
58 };
59 
60 enum Ph_Type
61 {
62  PH_LOAD = 1,
63  PH_SCE_RELOCATE = 0x60000000
64 };
65 
66 enum Pf_Type
67 {
68  PF_X = 1,
69  PF_W = 2,
70  PF_R = 4
71 };
72 
73 #define EM_x86 (0x3) // x86 Machine Type
74 #define EV_CURRENT (1) // ELF Current Version
75 
76 typedef struct
77 {
86 } Elf32_Phdr;
87 
88 typedef struct
89 {
100 } Elf32_Shdr;
101 
102 typedef struct
103 {
107  uint8_t st_info;
108  uint8_t st_other;
110 } Elf32_Sym;
111 
112 
113 #endif /* end of include guard: _ELF_H_ */
Definition: elf.h:63
Elf32_Addr p_paddr
Definition: elf.h:81
Pf_Type
Definition: elf.h:66
Definition: elf.h:69
Elf32_Word sh_flags
Definition: elf.h:92
Elf32_Off e_shoff
Definition: elf.h:22
Elf32_Word e_version
Definition: elf.h:19
Definition: elf.h:14
Elf32_Word e_flags
Definition: elf.h:23
Elf32_Addr st_value
Definition: elf.h:105
Definition: elf.h:88
uint16_t Elf32_Half
Definition: elf.h:6
Definition: elf.h:68
Definition: elf.h:36
uint8_t st_info
Definition: elf.h:107
Elf32_Half e_type
Definition: elf.h:17
Elf32_Half e_shnum
Definition: elf.h:28
uint8_t st_other
Definition: elf.h:108
int32_t Elf32_Sword
Definition: elf.h:10
Elf32_Word sh_link
Definition: elf.h:96
Definition: elf.h:102
Elf32_Half e_phentsize
Definition: elf.h:25
Elf32_Word sh_addralign
Definition: elf.h:98
uint32_t Elf32_Word
Definition: elf.h:9
Definition: elf.h:40
Definition: elf.h:37
Elf32_Word sh_info
Definition: elf.h:97
Definition: elf.h:62
Definition: elf.h:43
Ph_Type
Definition: elf.h:60
Definition: elf.h:70
Elf32_Word sh_size
Definition: elf.h:95
Elf32_Addr sh_addr
Definition: elf.h:93
Elf32_Word p_memsz
Definition: elf.h:83
uint32_t Elf32_Addr
Definition: elf.h:8
Elf32_Word p_align
Definition: elf.h:85
Elf32_Half e_shstrndx
Definition: elf.h:29
Definition: elf.h:34
Elf32_Addr p_vaddr
Definition: elf.h:80
Elf32_Word p_filesz
Definition: elf.h:82
Elf32_Word sh_entsize
Definition: elf.h:99
Elf_Ident
Definition: elf.h:32
Elf32_Off e_phoff
Definition: elf.h:21
Elf32_Addr e_entry
Definition: elf.h:20
Definition: elf.h:56
Elf32_Word sh_name
Definition: elf.h:90
Elf32_Word st_name
Definition: elf.h:104
Elf32_Half e_shentsize
Definition: elf.h:27
uint32_t Elf32_Off
Definition: elf.h:7
Elf32_Word p_type
Definition: elf.h:78
Definition: elf.h:39
Elf32_Half st_shndx
Definition: elf.h:109
Elf32_Off p_offset
Definition: elf.h:79
Definition: elf.h:41
Elf32_Half e_phnum
Definition: elf.h:26
Elf_Type
Definition: elf.h:53
Definition: elf.h:42
Definition: elf.h:55
Elf32_Word sh_type
Definition: elf.h:91
Elf32_Word st_size
Definition: elf.h:106
Elf32_Half e_machine
Definition: elf.h:18
Elf32_Half e_ehsize
Definition: elf.h:24
Elf32_Off sh_offset
Definition: elf.h:94
Elf32_Word p_flags
Definition: elf.h:84
Definition: elf.h:57
Definition: elf.h:38
Definition: elf.h:35
Definition: elf.h:76
#define ELF_NIDENT
Definition: elf.h:12