xref: /xv6-public/elf.h (revision 4638cabf)
1 // Format of an ELF executable file
2 
3 #define ELF_MAGIC 0x464C457FU  // "\x7FELF" in little endian
4 
5 // File header
6 struct elfhdr {
7   uint magic;  // must equal ELF_MAGIC
8   uchar elf[12];
9   ushort type;
10   ushort machine;
11   uint version;
12   uint entry;
13   uint phoff;
14   uint shoff;
15   uint flags;
16   ushort ehsize;
17   ushort phentsize;
18   ushort phnum;
19   ushort shentsize;
20   ushort shnum;
21   ushort shstrndx;
22 };
23 
24 // Program section header
25 struct proghdr {
26   uint type;
27   uint off;
28   uint vaddr;
29   uint paddr;
30   uint filesz;
31   uint memsz;
32   uint flags;
33   uint align;
34 };
35 
36 // Values for Proghdr type
37 #define ELF_PROG_LOAD           1
38 
39 // Flag bits for Proghdr flags
40 #define ELF_PROG_FLAG_EXEC      1
41 #define ELF_PROG_FLAG_WRITE     2
42 #define ELF_PROG_FLAG_READ      4
43