ec279620339c5d7bced71adc8d774773c2dc5680
[mes.git] / lib / x86-mes / elf32-0header.hex2
1 ### Copyright (C) 2016 Jeremiah Orians
2 ### Copyright (C) 2017 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
3 ### This file is part of stage0.
4 ###
5 ### stage0 is free software: you an redistribute it and/or modify
6 ### it under the terms of the GNU General Public License as published by
7 ### the Free Software Foundation, either version 3 of the License, or
8 ### (at your option) any later version.
9 ###
10 ### stage0 is distributed in the hope that it will be useful,
11 ### but WITHOUT ANY WARRANTY; without even the implied warranty of
12 ### MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13 ### GNU General Public License for more details.
14 ###
15 ### You should have received a copy of the GNU General Public License
16 ### along with stage0.  If not, see <http://www.gnu.org/licenses/>.
17
18 ### stage0's hex2 format for x86
19 ###    !<label>          1 byte relative
20 ###    $<label>          2 byte address
21 ###    @<label>          2 byte relative
22 ###    &<label>          4 byte address
23 ###    %<label>          4 byte relative
24 ###    local_<label>     function-local
25 ###    string_<index>    string #<index>
26
27 ### elf32-header-exit-42.hex2: 32 bit elf header in hex2 for `exit 42'
28
29 :ELF_base
30 7F 45 4C 46                    # e_ident[EI_MAG0-3] ELF's magic number
31
32 01                             # e_ident[EI_CLASS] Indicating 32 bit
33 01                             # e_ident[EI_DATA] Indicating little endianness
34 01                             # e_ident[EI_VERSION] Indicating original elf
35
36 00                             # e_ident[EI_OSABI] Set at 0 because none cares
37 00                             # e_ident[EI_ABIVERSION] See above
38
39 00 00 00 00 00 00 00           # e_ident[EI_PAD]
40
41 02 00                          # e_type Indicating Executable
42 03 00                          # e_machine Indicating 32bit x86
43 01 00 00 00                    # e_version Indicating original elf
44
45 &ELF_text                      # e_entry Address of the entry point
46 %ELF_program_headers>ELF_base  # e_phoff Address of program header table
47 00 00 00 00                    # e_shoff Address of section header table
48
49 00 00 00 00                    # e_flags
50
51 34 00                          # e_ehsize Indicating our 52 Byte header
52
53 20 00                          # e_phentsize size of a program header table
54 01 00                          # e_phnum number of entries in program table
55
56 00 00                          # e_shentsize size of a section header table
57 00 00                          # e_shnum number of entries in section table
58
59 00 00                          # e_shstrndx index of the section names
60
61 # @34
62 00 00 00 00
63 00 00 00 00
64 00 00 00 00
65
66 # @40
67 :ELF_program_headers
68 :ELF_program_header__text
69 01 00 00 00                    # ph_type: PT-LOAD = 1
70 00 00 00 00                    # ph_offset
71 &ELF_base                      # ph_vaddr
72 &ELF_base                      # ph_physaddr
73 %ELF_end>ELF_base              # ph_filesz
74 %ELF_end>ELF_base              # ph_memsz
75 07 00 00 00                    # ph_flags: PF-X|PF-W|PF-R = 7
76 01 00 00 00                    # ph_align
77
78 :ELF_text