author | Tony Garnock-Jones <tonygarnockjones@gmail.com> |
Wed, 16 Jan 2019 17:15:58 +0000 | |
changeset 438 | 1fe179d53161 |
parent 142 | cea3d6feb382 |
permissions | -rw-r--r-- |
141
962e73581f6a
Experiments in minimal ELF files.
Tony Garnock-Jones <tonyg@kcbbs.gen.nz>
parents:
diff
changeset
|
1 |
# Based on the teachings of http://www.muppetlabs.com/~breadbox/software/tiny/teensy.html |
962e73581f6a
Experiments in minimal ELF files.
Tony Garnock-Jones <tonyg@kcbbs.gen.nz>
parents:
diff
changeset
|
2 |
|
962e73581f6a
Experiments in minimal ELF files.
Tony Garnock-Jones <tonyg@kcbbs.gen.nz>
parents:
diff
changeset
|
3 |
origin: |
962e73581f6a
Experiments in minimal ELF files.
Tony Garnock-Jones <tonyg@kcbbs.gen.nz>
parents:
diff
changeset
|
4 |
elfheader: # Elf32_Ehdr |
962e73581f6a
Experiments in minimal ELF files.
Tony Garnock-Jones <tonyg@kcbbs.gen.nz>
parents:
diff
changeset
|
5 |
.byte 0x7F |
962e73581f6a
Experiments in minimal ELF files.
Tony Garnock-Jones <tonyg@kcbbs.gen.nz>
parents:
diff
changeset
|
6 |
.ascii "ELF" |
142
cea3d6feb382
Rearrange e_ident for readability
Tony Garnock-Jones <tonyg@kcbbs.gen.nz>
parents:
141
diff
changeset
|
7 |
.byte 1,1,1,0 |
141
962e73581f6a
Experiments in minimal ELF files.
Tony Garnock-Jones <tonyg@kcbbs.gen.nz>
parents:
diff
changeset
|
8 |
.byte 0,0,0,0 |
142
cea3d6feb382
Rearrange e_ident for readability
Tony Garnock-Jones <tonyg@kcbbs.gen.nz>
parents:
141
diff
changeset
|
9 |
.byte 0,0,0,0 # e_ident |
cea3d6feb382
Rearrange e_ident for readability
Tony Garnock-Jones <tonyg@kcbbs.gen.nz>
parents:
141
diff
changeset
|
10 |
|
141
962e73581f6a
Experiments in minimal ELF files.
Tony Garnock-Jones <tonyg@kcbbs.gen.nz>
parents:
diff
changeset
|
11 |
.short 2 # e_type |
962e73581f6a
Experiments in minimal ELF files.
Tony Garnock-Jones <tonyg@kcbbs.gen.nz>
parents:
diff
changeset
|
12 |
.short 3 # e_machine |
962e73581f6a
Experiments in minimal ELF files.
Tony Garnock-Jones <tonyg@kcbbs.gen.nz>
parents:
diff
changeset
|
13 |
.long 1 # e_version |
962e73581f6a
Experiments in minimal ELF files.
Tony Garnock-Jones <tonyg@kcbbs.gen.nz>
parents:
diff
changeset
|
14 |
.long _start # e_entry |
962e73581f6a
Experiments in minimal ELF files.
Tony Garnock-Jones <tonyg@kcbbs.gen.nz>
parents:
diff
changeset
|
15 |
.long programheader - elfheader # e_phoff |
962e73581f6a
Experiments in minimal ELF files.
Tony Garnock-Jones <tonyg@kcbbs.gen.nz>
parents:
diff
changeset
|
16 |
.long 0 # e_shoff |
962e73581f6a
Experiments in minimal ELF files.
Tony Garnock-Jones <tonyg@kcbbs.gen.nz>
parents:
diff
changeset
|
17 |
.long 0 # e_flags |
962e73581f6a
Experiments in minimal ELF files.
Tony Garnock-Jones <tonyg@kcbbs.gen.nz>
parents:
diff
changeset
|
18 |
.short elfheadersize # e_ehsize |
962e73581f6a
Experiments in minimal ELF files.
Tony Garnock-Jones <tonyg@kcbbs.gen.nz>
parents:
diff
changeset
|
19 |
.short programheaderentrysize # e_phentsize |
962e73581f6a
Experiments in minimal ELF files.
Tony Garnock-Jones <tonyg@kcbbs.gen.nz>
parents:
diff
changeset
|
20 |
.short 1 # e_phnum |
962e73581f6a
Experiments in minimal ELF files.
Tony Garnock-Jones <tonyg@kcbbs.gen.nz>
parents:
diff
changeset
|
21 |
.short 40 # e_shentsize |
962e73581f6a
Experiments in minimal ELF files.
Tony Garnock-Jones <tonyg@kcbbs.gen.nz>
parents:
diff
changeset
|
22 |
.short 0 # e_shnum |
962e73581f6a
Experiments in minimal ELF files.
Tony Garnock-Jones <tonyg@kcbbs.gen.nz>
parents:
diff
changeset
|
23 |
.short 0 # e_shstrndx |
962e73581f6a
Experiments in minimal ELF files.
Tony Garnock-Jones <tonyg@kcbbs.gen.nz>
parents:
diff
changeset
|
24 |
elfheaderend: |
962e73581f6a
Experiments in minimal ELF files.
Tony Garnock-Jones <tonyg@kcbbs.gen.nz>
parents:
diff
changeset
|
25 |
.set elfheadersize, elfheaderend - elfheader |
962e73581f6a
Experiments in minimal ELF files.
Tony Garnock-Jones <tonyg@kcbbs.gen.nz>
parents:
diff
changeset
|
26 |
|
962e73581f6a
Experiments in minimal ELF files.
Tony Garnock-Jones <tonyg@kcbbs.gen.nz>
parents:
diff
changeset
|
27 |
programheader: # Elf32_Phdr |
962e73581f6a
Experiments in minimal ELF files.
Tony Garnock-Jones <tonyg@kcbbs.gen.nz>
parents:
diff
changeset
|
28 |
.long 1 # p_type |
962e73581f6a
Experiments in minimal ELF files.
Tony Garnock-Jones <tonyg@kcbbs.gen.nz>
parents:
diff
changeset
|
29 |
.long 0 # p_offset |
962e73581f6a
Experiments in minimal ELF files.
Tony Garnock-Jones <tonyg@kcbbs.gen.nz>
parents:
diff
changeset
|
30 |
.long origin # p_vaddr |
962e73581f6a
Experiments in minimal ELF files.
Tony Garnock-Jones <tonyg@kcbbs.gen.nz>
parents:
diff
changeset
|
31 |
.long origin # p_paddr |
962e73581f6a
Experiments in minimal ELF files.
Tony Garnock-Jones <tonyg@kcbbs.gen.nz>
parents:
diff
changeset
|
32 |
.long fileend - origin# p_filesz |
962e73581f6a
Experiments in minimal ELF files.
Tony Garnock-Jones <tonyg@kcbbs.gen.nz>
parents:
diff
changeset
|
33 |
.long memsize # p_memsz |
962e73581f6a
Experiments in minimal ELF files.
Tony Garnock-Jones <tonyg@kcbbs.gen.nz>
parents:
diff
changeset
|
34 |
.long 5 # p_flags |
962e73581f6a
Experiments in minimal ELF files.
Tony Garnock-Jones <tonyg@kcbbs.gen.nz>
parents:
diff
changeset
|
35 |
.long 0x1000 # p_align |
962e73581f6a
Experiments in minimal ELF files.
Tony Garnock-Jones <tonyg@kcbbs.gen.nz>
parents:
diff
changeset
|
36 |
programheaderentryend: |
962e73581f6a
Experiments in minimal ELF files.
Tony Garnock-Jones <tonyg@kcbbs.gen.nz>
parents:
diff
changeset
|
37 |
.set programheaderentrysize, programheaderentryend - programheader |