From ecc1ebec1d1dd32cbf722e75e59c8e3b46c4561f Mon Sep 17 00:00:00 2001 From: Jan Nieuwenhuizen Date: Fri, 12 Aug 2016 15:54:15 +0200 Subject: [PATCH] elf.mes: error-free header, no program yet. --- elf.mes | 69 ++++++++++++++++++++++++++++++++++++++++++++++++--------- 1 file changed, 58 insertions(+), 11 deletions(-) diff --git a/elf.mes b/elf.mes index e1289d2b..ab85adff 100644 --- a/elf.mes +++ b/elf.mes @@ -19,17 +19,16 @@ (define e-type '(#x02 #x00)) ;; ET_EXEC (define e-machine '(#x03 #x00)) (define e-version '(#x01 #x00 #x00 #x00)) -(define e-entry '(#xb0 #x00 #x40 #x00 #x00 #x00 #x00 #x00)) -(define e-type '(#x02 #x00)) -(define e-phoff '(#x40 #x00 #x00 #x00 #x00 #x00 #x00 #x00)) -(define e-shoff '(#x00 #x00 #x00 #x00 #x00 #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 '(#x40 #x00)) -(define e-phentsize '(#x38 #x00)) -(define e-phnum '(#x02 #x00)) -(define e-shentsize '(#x00 #x00)) -(define e-shnum '(#x00 #x00)) -(define e-shstrndx '(#x03 #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 @@ -63,4 +62,52 @@ ;; p-align )) -(map write-char elf-header) +(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)