elf.mes: readelf -h a.out shows some info.
authorJan Nieuwenhuizen <janneke@gnu.org>
Fri, 12 Aug 2016 13:10:05 +0000 (15:10 +0200)
committerJan Nieuwenhuizen <janneke@gnu.org>
Fri, 12 Aug 2016 13:10:05 +0000 (15:10 +0200)
elf.mes

diff --git a/elf.mes b/elf.mes
index 494469c0ca5e8d1722c945ab0138d70a05459825..e1289d2b9105b4f0f52f66515addc981198d91b8 100644 (file)
--- a/elf.mes
+++ b/elf.mes
@@ -1,12 +1,66 @@
 ;;; -*-scheme-*-
 
-(write-char #x7f)
-(write-char #x45)
-(write-char #x4c)
-(write-char #x46)
-(write-char #x08)
-(write-char #x48)
-(write-char #x65)
-(write-char #x6c)
-(write-char #x6c)
-(write-char #x6f)
+(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 '(#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-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 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
+   ))
+
+(map write-char elf-header)