mescc: Add data as loadable ELF section.
authorJan Nieuwenhuizen <janneke@gnu.org>
Tue, 17 Jan 2017 17:48:54 +0000 (18:48 +0100)
committerJan Nieuwenhuizen <janneke@gnu.org>
Tue, 17 Jan 2017 17:48:54 +0000 (18:48 +0100)
* module/mes/elf.mes (make-elf): Add data as loadable section too.

module/mes/elf.mes

index b93cf457446411eb63cdf58710df092581ae1b3e..5e6f0bf26882dc2ea41b9b656818688b94897f38 100644 (file)
   (define e-flags (elf32-word 0))
   ;;(define e-ehsize (elf32-half 0))
   (define e-phentsize (elf32-half (length (program-header 0 0 '()))))
-  (define e-phnum (elf32-half 1))
+  (define e-phnum (elf32-half 2)) ; text+data
   (define e-shentsize (elf32-half (length (section-header 0 0 0 0 '() 0 0 0))))
   (define e-shnum (elf32-half 7))       ; sections: 7
   (define e-shstrndx (elf32-half 4))
     (length (elf-header 0 0 0)))
 
   (define program-header-size
-    (length (program-header 0 0 '())))
+    (* 2 (length (program-header 0 0 '()))))
 
   (define text-offset
     (+ elf-header-size program-header-size))
 
-  (define (program-headers text)
+  (define PT-LOAD 1)
+  (define (program-headers text data)
     (append
-     (program-header 1 text-offset text)))
+     (program-header PT-LOAD text-offset text)
+     (program-header PT-LOAD data-offset data)))
 
   (define comment
     (string->list
     (format (current-error-port) "_start=~a\n" (number->string entry 16))
     (append
      (elf-header elf-header-size entry section-headers-offset)
-     (program-headers text)
+     (program-headers text data)
      text
      data
      comment