;;; -*-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)