c699605768344f93ea9d2ce136b5a27eae795996
[lunaix-os.git] / lunaix-os / uprog / includes / ld / elf.h
1 #ifndef __LUNAIX_LD_ELF_H
2 #define __LUNAIX_LD_ELF_H
3
4 typedef unsigned int elf32_ptr_t;
5 typedef unsigned short elf32_hlf_t;
6 typedef unsigned int elf32_off_t;
7 typedef unsigned int elf32_swd_t;
8 typedef unsigned int elf32_wrd_t;
9
10 #define ET_NONE 0
11 #define ET_EXEC 2
12 #define ET_DYN 3
13
14 #define PT_LOAD 1
15 #define PT_DYNAMIC 2
16 #define PT_INTERP 3
17
18 #define PF_X 0x1
19 #define PF_W 0x2
20 #define PF_R 0x4
21
22 #define EM_NONE 0
23 #define EM_386 3
24
25 #define EV_CURRENT 1
26
27 // [0x7f, 'E', 'L', 'F']
28 #define ELFMAGIC 0x464c457fU
29 #define ELFCLASS32 1
30 #define ELFCLASS64 2
31 #define ELFDATA2LSB 1
32 #define ELFDATA2MSB 2
33
34 #define EI_CLASS 4
35 #define EI_DATA 5
36
37 struct elf32_ehdr
38 {
39   unsigned char e_ident[16];
40   elf32_hlf_t e_type;
41   elf32_hlf_t e_machine;
42   elf32_wrd_t e_version;
43   elf32_ptr_t e_entry;
44   elf32_off_t e_phoff;
45   elf32_off_t e_shoff;
46   elf32_wrd_t e_flags;
47   elf32_hlf_t e_ehsize;
48   elf32_hlf_t e_phentsize;
49   elf32_hlf_t e_phnum;
50   elf32_hlf_t e_shentsize;
51   elf32_hlf_t e_shnum;
52   elf32_hlf_t e_shstrndx;
53 };
54
55 struct elf32_phdr
56 {
57   elf32_wrd_t p_type;
58   elf32_off_t p_offset;
59   elf32_ptr_t p_va;
60   elf32_ptr_t p_pa;
61   elf32_wrd_t p_filesz;
62   elf32_wrd_t p_memsz;
63   elf32_wrd_t p_flags;
64   elf32_wrd_t p_align;
65 };
66
67 #endif /* __LUNAIX_ELF_H */