xref: /haiku/headers/private/storage/Elf.h (revision d3ed58a7c930f54288037be26894a38550ec787e)
1 /*
2  * Copyright 2002-2009, Ingo Weinhold, ingo_weinhold@gmx.de.
3  * Distributed under the terms of the MIT License.
4  */
5 #ifndef _ELF_H
6 #define _ELF_H
7 
8 
9 #include <SupportDefs.h>
10 
11 
12 // types
13 typedef uint32		Elf32_Addr;
14 typedef uint32		Elf32_Off;
15 typedef uint16		Elf32_Half;
16 typedef int32		Elf32_Sword;
17 typedef uint32		Elf32_Word;
18 typedef uint32		Elf32_Xword;
19 typedef int32		Elf32_Sxword;
20 
21 typedef uint64		Elf64_Addr;
22 typedef uint64		Elf64_Off;
23 typedef uint16		Elf64_Half;
24 typedef int32		Elf64_Sword;
25 typedef uint32		Elf64_Word;
26 typedef uint64		Elf64_Xword;
27 typedef int64		Elf64_Sxword;
28 
29 // e_ident indices
30 #define EI_MAG0		0
31 #define EI_MAG1		1
32 #define EI_MAG2		2
33 #define EI_MAG3		3
34 #define EI_CLASS	4
35 #define EI_DATA		5
36 #define EI_VERSION	6
37 #define EI_PAD		7
38 #define EI_NIDENT	16
39 
40 // e_ident EI_VERSION values
41 #define EV_NONE 	0
42 #define EV_CURRENT 	1
43 
44 // e_ident EI_CLASS and EI_DATA values
45 #define ELFCLASSNONE	0
46 #define ELFCLASS32		1
47 #define ELFCLASS64		2
48 #define ELFDATANONE		0
49 #define ELFDATA2LSB		1
50 #define ELFDATA2MSB		2
51 
52 // p_type
53 #define PT_NULL		0
54 #define PT_LOAD		1
55 #define PT_DYNAMIC	2
56 #define PT_INTERP	3
57 #define PT_NOTE		4
58 #define PT_SHLIB	5
59 #define PT_PHDIR	6
60 #define PT_LOPROC	0x70000000
61 #define PT_HIPROC	0x7fffffff
62 
63 // sh_type values
64 #define SHT_NULL		0
65 #define SHT_PROGBITS	1
66 #define SHT_SYMTAB		2
67 #define SHT_STRTAB		3
68 #define SHT_RELA		4
69 #define SHT_HASH		5
70 #define SHT_DYNAMIC		6
71 #define SHT_NOTE		7
72 #define SHT_NOBITS		8
73 #define SHT_REL			9
74 #define SHT_SHLIB		10
75 #define SHT_DYNSYM		11
76 #define SHT_LOPROC		0x70000000
77 #define SHT_HIPROC		0x7fffffff
78 #define SHT_LOUSER		0x80000000
79 #define SHT_HIUSER		0xffffffff
80 
81 // 32 bit definitions
82 #undef _ELFX_BITS
83 #define _ELFX_BITS	32
84 #include <ElfX.h>
85 
86 // 64 bit definitions
87 #undef _ELFX_BITS
88 #define _ELFX_BITS	64
89 #include <ElfX.h>
90 
91 #undef _ELFX_BITS
92 
93 
94 #endif	// _ELF_H
95