about summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorKartik Agaram <vc@akkartik.com>2018-07-03 14:24:50 -0700
committerKartik Agaram <vc@akkartik.com>2018-07-03 14:57:39 -0700
commit0defd18cfc5fd3e9190ceb067b859294c5b2677c (patch)
treecb3b1b3a48d14d2f7d97e2c86521dff77f8db2c5
parent7c71860b87711531f1fd590a9768603a01dc4b18 (diff)
downloadmu-0defd18cfc5fd3e9190ceb067b859294c5b2677c.tar.gz
4308
Undo 4291; turns out the generated ELF binary was no longer running
natively on 32-bit Linux. Even with p_align set to 0.

Agh, not worth my time.
-rw-r--r--subx/021translate.cc6
-rwxr-xr-xsubx/ex1bin96 -> 96 bytes
-rwxr-xr-xsubx/teensy/test5bin99 -> 99 bytes
-rw-r--r--subx/teensy/test5.s10
4 files changed, 8 insertions, 8 deletions
diff --git a/subx/021translate.cc b/subx/021translate.cc
index e43ea894..40d75a8a 100644
--- a/subx/021translate.cc
+++ b/subx/021translate.cc
@@ -68,7 +68,7 @@ void dump_elf_header(ostream& out) {
   // e_version
   O(0x01); O(0x00); O(0x00); O(0x00);
   // e_entry
-  int e_entry = START;
+  int e_entry = START + /*size of ehdr*/52 + /*size of phdr*/32;
   emit(e_entry);
   // e_phoff -- immediately after ELF header
   int e_phoff = 52;
@@ -100,14 +100,14 @@ void dump_elf_header(ostream& out) {
   uint32_t p_type = 0x1;
   emit(p_type);
   // p_offset
-  uint32_t p_offset = /*size of ehdr*/52 + /*size of phdr*/32;
+  uint32_t p_offset = 0;
   emit(p_offset);
   // p_vaddr
   emit(START);
   // p_paddr
   emit(START);
   // p_filesz
-  uint32_t size = End_of_program - /*we're not using location 0*/1;
+  uint32_t size = (End_of_program-/*we're not using location 0*/1) + /*size of ehdr*/52 + /*size of phdr*/32;
   emit(size);
   // p_memsz
   emit(size);
diff --git a/subx/ex1 b/subx/ex1
index cf6b2f4c..205f8d60 100755
--- a/subx/ex1
+++ b/subx/ex1
Binary files differdiff --git a/subx/teensy/test5 b/subx/teensy/test5
index b960ac41..a67a5299 100755
--- a/subx/teensy/test5
+++ b/subx/teensy/test5
Binary files differdiff --git a/subx/teensy/test5.s b/subx/teensy/test5.s
index e4bd0c7e..54a79846 100644
--- a/subx/teensy/test5.s
+++ b/subx/teensy/test5.s
@@ -11,7 +11,7 @@ ehdr:                                                 ; Elf32_Ehdr
               dw      2                               ;   e_type
               dw      3                               ;   e_machine
               dd      1                               ;   e_version
-              dd      $$                              ;   e_entry
+              dd      _start                          ;   e_entry
               dd      phdr - $$                       ;   e_phoff
               dd      0                               ;   e_shoff
               dd      0                               ;   e_flags
@@ -25,11 +25,11 @@ ehdrsize  equ  $ - ehdr
 
 phdr:                                                 ; Elf32_Phdr
               dd      1                               ;   p_type
-              dd      _start - $$                     ;   p_offset
+              dd      0                               ;   p_offset
               dd      $$                              ;   p_vaddr
               dd      $$                              ;   p_paddr
-              dd      codesize                        ;   p_filesz
-              dd      codesize                        ;   p_memsz
+              dd      filesize                        ;   p_filesz
+              dd      filesize                        ;   p_memsz
               dd      5                               ;   p_flags
               dd      0x1000                          ;   p_align
 phdrsize  equ  $ - phdr
@@ -43,4 +43,4 @@ _start:
     dd 0x00000001  ; imm32 operand
   int 0x80
 
-codesize      equ     $ - _start
+filesize      equ     $ - $$