mes/elf.mes

114 lines
2.9 KiB
Plaintext
Raw Normal View History

;;; -*-scheme-*-
(define ei-magic '(#x7f #\E #\L #\F))
;;(define ei-magic '(#x7f #x45 #x4c #x46))
(define ei-class '(#x01)) ;; 32 bit
(define ei-data '(#x01)) ;; little endian
(define ei-version '(#x01))
(define ei-osabi '(#x00))
(define ei-pad '(#x0 #x0 #x0 #x0 #x0 #x0 #x0 #x0))
(define e-ident
(append
ei-magic
ei-class
ei-data
ei-version
ei-osabi
ei-pad))
(define e-type '(#x02 #x00)) ;; ET_EXEC
(define e-machine '(#x03 #x00))
(define e-version '(#x01 #x00 #x00 #x00))
(define e-entry '(#x54 #x80 #x04 #x08))
(define e-phoff '(#x30 #x00 #x00 #x00))
(define e-shoff '(#x50 #x00 #x00 #x00))
(define e-flags '(#x00 #x00 #x00 #x00))
(define e-ehsize '(#x80 #x00))
(define e-phentsize '(#x20 #x00))
(define e-phnum '(#x01 #x00))
(define e-shentsize '(#x28 #x00))
(define e-shnum '(#x05 #x00))
(define e-shstrndx '(#x04 #x00))
(define elf-header
(append
e-ident
e-type
e-machine
e-version
e-entry
e-phoff
e-shoff
e-flags
e-ehsize
e-phentsize
e-phnum
e-shentsize
e-shnum
e-shstrndx
))
;;(define elf-header '(#x7f #x45 #x4c #x46 #x01))
(define program-header
(append
;; p-offset
;; p-type
;; p-offset
;; p-vaddr
;; p-paddr
;; p-filesz
;; p-memsz
;; p-flags
;; p-align
))
(define rest
'(
#x00 #x00 #x00 #x00 #x00 #x00 #x00 #x00
#x00 #x00 #x00 #x00 #x00 #x00 #x00 #x00
#x00 #x00 #x00 #x00 #x00 #x00 #x00 #x00
#x00 #x00 #x00 #x00 #x00 #x00 #x00 #x00
#x00 #x00 #x00 #x00 #x00 #x00 #x00 #x00
#x00 #x00 #x00 #x00 #x00 #x00 #x00 #x00
#x00 #x00 #x00 #x00 #x00 #x00 #x00 #x00
#x00 #x00 #x00 #x00 #x00 #x00 #x00 #x00
#x00 #x00 #x00 #x00 #x00 #x00 #x00 #x00
#x00 #x00 #x00 #x00 #x00 #x00 #x00 #x00
#x00 #x00 #x00 #x00 #x00 #x00 #x00 #x00
#x00 #x00 #x00 #x00 #x00 #x00 #x00 #x00
#x00 #x00 #x00 #x00 #x00 #x00 #x00 #x00
#x00 #x00 #x00 #x00 #x00 #x00 #x00 #x00
#x00 #x00 #x00 #x00 #x00 #x00 #x00 #x00
#x00 #x00 #x00 #x00 #x00 #x00 #x00 #x00
#x00 #x00 #x00 #x00 #x00 #x00 #x00 #x00
#x00 #x00 #x00 #x00 #x00 #x00 #x00 #x00
#x00 #x00 #x00 #x00 #x00 #x00 #x00 #x00
#x00 #x00 #x00 #x00 #x00 #x00 #x00 #x00
#x00 #x00 #x00 #x00 #x00 #x00 #x00 #x00
#x00 #x00 #x00 #x00 #x00 #x00 #x00 #x00
#x00 #x00 #x00 #x00 #x00 #x00 #x00 #x00
#x00 #x00 #x00 #x00 #x00 #x00 #x00 #x00
#x00 #x00 #x00 #x00 #x00 #x00 #x00 #x00
#x00 #x00 #x00 #x00 #x00 #x00 #x00 #x00
#x00 #x00 #x00 #x00 #x00 #x00 #x00 #x00
#x00 #x00 #x00 #x00 #x00 #x00 #x00 #x00
#x00 #x00 #x00 #x00 #x00 #x00 #x00 #x00
#x00 #x00 #x00 #x00 #x00 #x00 #x00 #x00
#x00 #x00 #x00 #x00 #x00 #x00 #x00 #x00
#x00 #x00 #x00 #x00 #x00 #x00 #x00 #x00
))
(define exe
(append
elf-header
rest))
(map write-char exe)