elf.mes: readelf -h a.out shows some info.
[mes.git] / elf.mes
1 ;;; -*-scheme-*-
2
3 (define ei-magic '(#x7f #\E #\L #\F))
4 ;;(define ei-magic '(#x7f #x45 #x4c #x46))
5 (define ei-class '(#x01)) ;; 32 bit
6 (define ei-data '(#x01)) ;; little endian
7 (define ei-version '(#x01))
8 (define ei-osabi '(#x00))
9 (define ei-pad '(#x0 #x0 #x0 #x0 #x0 #x0 #x0 #x0))
10 (define e-ident
11   (append
12    ei-magic
13    ei-class
14    ei-data
15    ei-version
16    ei-osabi
17    ei-pad))
18
19 (define e-type '(#x02 #x00)) ;; ET_EXEC
20 (define e-machine '(#x03 #x00))
21 (define e-version '(#x01 #x00 #x00 #x00))
22 (define e-entry '(#xb0 #x00 #x40 #x00 #x00 #x00 #x00 #x00))
23 (define e-type '(#x02 #x00))
24 (define e-phoff '(#x40 #x00 #x00 #x00 #x00 #x00 #x00 #x00))
25 (define e-shoff '(#x00 #x00 #x00 #x00 #x00 #x00 #x00 #x00))
26 (define e-flags '(#x00 #x00 #x00 #x00))
27 (define e-ehsize '(#x40 #x00))
28 (define e-phentsize '(#x38 #x00))
29 (define e-phnum '(#x02 #x00))
30 (define e-shentsize '(#x00 #x00))
31 (define e-shnum '(#x00 #x00))
32 (define e-shstrndx '(#x03 #x00))
33
34 (define elf-header
35   (append
36    e-ident
37    e-type
38    e-machine
39    e-version
40    e-entry
41    e-phoff
42    e-shoff
43    e-flags
44    e-ehsize
45    e-phentsize
46    e-phnum
47    e-shentsize
48    e-shnum
49    e-shstrndx
50    ))
51
52 ;;(define elf-header '(#x7f #x45 #x4c #x46 #x01))
53 (define program-header
54   (append
55    ;; p-offset
56    ;; p-type
57    ;; p-offset
58    ;; p-vaddr
59    ;; p-paddr
60    ;; p-filesz
61    ;; p-memsz
62    ;; p-flags
63    ;; p-align
64    ))
65
66 (map write-char elf-header)