FreeNOS
ELFHeader.h
Go to the documentation of this file.
1/*
2 * Copyright (C) 2009 Niek Linnenbank
3 *
4 * This program is free software: you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License as published by
6 * the Free Software Foundation, either version 3 of the License, or
7 * (at your option) any later version.
8 *
9 * This program is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 * GNU General Public License for more details.
13 *
14 * You should have received a copy of the GNU General Public License
15 * along with this program. If not, see <http://www.gnu.org/licenses/>.
16 */
17
18#ifndef __LIBEXEC_ELFHEADER_H
19#define __LIBEXEC_ELFHEADER_H
20
21#include <Types.h>
22
37#define ELF_INDEX_MAGIC0 0
38
40#define ELF_INDEX_MAGIC1 1
41
43#define ELF_INDEX_MAGIC2 2
44
46#define ELF_INDEX_MAGIC3 3
47
49#define ELF_INDEX_CLASS 4
50
52#define ELF_INDEX_DATA 5
53
55#define ELF_INDEX_VERSION 6
56
58#define ELF_INDEX_PAD 7
59
61#define ELF_INDEX_NIDENT 16
62
73#define ELF_MAGIC0 0x7f
74
76#define ELF_MAGIC1 'E'
77
79#define ELF_MAGIC2 'L'
80
82#define ELF_MAGIC3 'F'
83
94#define ELF_CLASS_NONE 0
95
97#define ELF_CLASS_32 1
98
100#define ELF_CLASS_64 2
101
112#define ELF_DATA_NONE 0
113
115#define ELF_DATA_2LSB 1
116
118#define ELF_DATA_2MSB 2
119
130#define ELF_TYPE_NONE 0
131
133#define ELF_TYPE_REL 1
134
136#define ELF_TYPE_EXEC 2
137
139#define ELF_TYPE_DYN 3
140
142#define ELF_TYPE_CORE 4
143
145#define ELF_TYPE_NUM 5
146
148#define ELF_TYPE_LOPROC 0xff00
149
151#define ELF_TYPE_HIPROC 0xffff
152
163#define ELF_MACHINE_NONE 0
164
166#define ELF_MACHINE_M32 1
167
169#define ELF_MACHINE_SPARC 2
170
172#define ELF_MACHINE_386 3
173
175#define ELF_MACHINE_68K 4
176
178#define ELF_MACHINE_88K 5
179
181#define ELF_MACHINE_860 7
182
184#define ELF_MACHINE_MIPS_RS3 8
185
187#define ELF_MACHINE_MIPS_RS4 10
188
199#define ELF_VERSION_NONE 0
200
202#define ELF_VERSION_CURRENT 1
203
218
271
323#define ELF_SEGMENT_NULL 0
324
326#define ELF_SEGMENT_LOAD 1
327
329#define ELF_SEGMENT_DYNAMIC 2
330
332#define ELF_SEGMENT_INTERP 3
333
335#define ELF_SEGMENT_NOTE 4
336
338#define ELF_SEGMENT_SHLIB 5
339
341#define ELF_SEGMENT_SELF 6
342
344#define ELF_SEGMENT_LOPROC 0x70000000
345
347#define ELF_SEGMENT_HIPROC 0x7fffffff
348
383
411
417#endif /* __LIBEXEC_ELFHEADER_H */
#define ELF_INDEX_NIDENT
Number of bytes in the ELF identity field.
Definition ELFHeader.h:61
unsigned int u32
Unsigned 32-bit number.
Definition Types.h:53
unsigned short u16
Unsigned 16-bit number.
Definition Types.h:56
unsigned long long u64
Unsigned 64-bit number.
Definition Types.h:50
unsigned char u8
Unsigned 8-bit number.
Definition Types.h:59
u16 programHeaderEntryCount
Program header table entry count.
Definition ELFHeader.h:305
u16 machine
Physical machine architecture.
Definition ELFHeader.h:281
u64 sectionHeaderOffset
Definition ELFHeader.h:293
u64 programHeaderOffset
Program header table file offset.
Definition ELFHeader.h:290
u16 sectionHeaderStringsIndex
Section header string table index.
Definition ELFHeader.h:314
u16 type
Object file type.
Definition ELFHeader.h:278
u16 sectionHeaderEntryCount
Section header table entry count.
Definition ELFHeader.h:311
u16 headerSize
ELF header size in bytes.
Definition ELFHeader.h:299
u16 programHeaderEntrySize
Program header table entry size.
Definition ELFHeader.h:302
u8 ident[ELF_INDEX_NIDENT]
Magic number and other info.
Definition ELFHeader.h:275
u64 entry
Entry point virtual address.
Definition ELFHeader.h:287
u32 version
Object file version.
Definition ELFHeader.h:284
u16 sectionHeaderEntrySize
Section header table entry size.
Definition ELFHeader.h:308
u64 alignment
Memory alignment when loaded into memory.
Definition ELFHeader.h:408
u64 memorySize
Segment memory image size.
Definition ELFHeader.h:405
u32 type
Segment type.
Definition ELFHeader.h:387
u64 offset
Offset in the file of this segment.
Definition ELFHeader.h:393
u64 fileSize
Segment file image size.
Definition ELFHeader.h:402
u64 virtualAddress
Virtual address start.
Definition ELFHeader.h:396
u64 physicalAddress
Physical address start.
Definition ELFHeader.h:399
u32 flags
Optional segment flags.
Definition ELFHeader.h:390
u16 machine
Physical machine architecture.
Definition ELFHeader.h:213
u16 type
Object file type.
Definition ELFHeader.h:210
u8 ident[ELF_INDEX_NIDENT]
Magic number and other info.
Definition ELFHeader.h:207
u32 version
Object file version.
Definition ELFHeader.h:216
Describes an ELF executable and must be placed at the beginning of executable programs.
Definition ELFHeader.h:227
u16 type
Object file type.
Definition ELFHeader.h:232
u16 programHeaderEntrySize
Program header table entry size.
Definition ELFHeader.h:256
u8 ident[ELF_INDEX_NIDENT]
Magic number and other info.
Definition ELFHeader.h:229
u16 sectionHeaderEntrySize
Section header table entry size.
Definition ELFHeader.h:262
u16 sectionHeaderStringsIndex
Section header string table index.
Definition ELFHeader.h:268
u32 sectionHeaderOffset
Definition ELFHeader.h:247
u16 machine
Physical machine architecture.
Definition ELFHeader.h:235
u32 version
Object file version.
Definition ELFHeader.h:238
u16 headerSize
ELF header size in bytes.
Definition ELFHeader.h:253
u32 programHeaderOffset
Program header table file offset.
Definition ELFHeader.h:244
u32 entry
Entry point virtual address.
Definition ELFHeader.h:241
u16 programHeaderEntryCount
Program header table entry count.
Definition ELFHeader.h:259
u16 sectionHeaderEntryCount
Section header table entry count.
Definition ELFHeader.h:265
ELF program segment in the executable file.
Definition ELFHeader.h:357
u32 memorySize
Segment memory image size.
Definition ELFHeader.h:374
u32 fileSize
Segment file image size.
Definition ELFHeader.h:371
u32 virtualAddress
Virtual address start.
Definition ELFHeader.h:365
u32 physicalAddress
Physical address start.
Definition ELFHeader.h:368
u32 type
Segment type.
Definition ELFHeader.h:359
u32 alignment
Memory alignment when loaded into memory.
Definition ELFHeader.h:380
u32 flags
Optional segment flags.
Definition ELFHeader.h:377
u32 offset
Offset in the file of this segment.
Definition ELFHeader.h:362