stage0: Add stage0 hex2 gdb header and footer example.
[mes.git] / stage0 / elf32-header-exit-42.hex2
1 ### Copyright (C) 2017 Jan Nieuwenhuizen <janneke@gnu.org>
2 ### This file is part of stage0.
3 ###
4 ### stage0 is free software: you an 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 ### stage0 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 stage0.  If not, see <http://www.gnu.org/licenses/>.
16
17 ### stage0's hex2 format for x86
18 ###    !<label>          1 byte relative
19 ###    $<label>          2 byte address
20 ###    @<label>          2 byte relative
21 ###    &<label>          4 byte address
22 ###    %<label>          4 byte relative
23 ###    local_<label>     function-local
24 ###    string_<index>    string #<index>
25
26 ### elf32-header-exit-42.hex2: 32 bit elf header in hex2 for `exit 42'
27
28 :ELF_base
29 ## ELF Header
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 AMD64
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 34 00 00 00           # e_phoff Address of program header table
48 #&ELF_section_headers - &ELF_base           # e_phoff Address of program header table
49 40 01 00 00           # e_shoff Address of section header table
50
51 00 00 00 00           # e_flags
52
53 34 00                 # e_ehsize Indicating our 52 Byte header
54
55 20 00                 # e_phentsize size of a program header table
56 02 00                 # e_phnum number of entries in program table
57
58 28 00                 # e_shentsize size of a section header table
59 07 00                 # e_shnum number of entries in section table
60
61 04 00                 # e_shstrndx index of the section names
62
63 :ELF_program_header__text
64 01 00 00 00 # ph_type: PT-LOAD = 1
65 00 00 00 00 # ph_offset
66 &ELF_base   # ph_vaddr
67 &ELF_base   # ph_physaddr
68 00 03 00 00 # ph_filesz
69 00 03 00 00 # ph_memsz
70 07 00 00 00 # ph_flags: PF-X|PF-W|PF-R = 7
71 01 00 00 00 # ph_align
72
73 # @54
74 :ELF_program_header__data
75 01 00 00 00 # ph_type: PT-LOAD = 1
76 00 00 00 00 # ph_offset
77 &ELF_base   # ph_vaddr
78 &ELF_base   # ph_physaddr
79 ff ff 00 00 # ph_filesz
80 ff ff 00 00 # ph_memsz
81 07 00 00 00 # ph_flags: PF-X|PF-W|PF-R = 7
82 01 00 00 00 # ph_align
83
84 # @74
85 00 00 00 00
86 00 00 00 00
87 00 00 00 00