Update of /cvsroot/wisp/wisp/users/dig
In directory sc8-pr-cvs1:/tmp/cvs-serv24451
Modified Files:
elf.py makehello.py
Log Message:
implemented make_ELF32_sheader
Index: elf.py
===================================================================
RCS file: /cvsroot/wisp/wisp/users/dig/elf.py,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -d -r1.7 -r1.8
--- elf.py 8 Feb 2003 18:38:42 -0000 1.7
+++ elf.py 8 Feb 2003 20:21:37 -0000 1.8
@@ -346,7 +346,7 @@
h.emit_wyde(0x34) # e_ehsize
h.emit_wyde(32) # e_phentsize
h.emit_wyde_sum(['elf/phnum'])
- h.emit_wyde_sum(['elf/shentsize'])
+ h.emit_wyde(40) # e_shentsize
h.emit_wyde_sum(['elf/shnum'])
h.emit_wyde_sum(['elf/shstrndx'])
return h
@@ -362,4 +362,19 @@
h.emit_tetra_sum([name + '/memsz'])
h.emit_tetra_sum([name + '/p_flags'])
h.emit_tetra_sum([name + '/alignment'])
+ return h
+
+def make_ELF32_sheader (byte_order, name):
+ h = Linkie(byte_order)
+ h.align(4)
+ h.emit_tetra_sum(['.shstr/strings/' + name])
+ h.emit_tetra_sum([name + '/sh_type'])
+ h.emit_tetra_sum([name + '/sh_flags'])
+ h.emit_tetra_sum([name])
+ h.emit_tetra_sum([name + '/offset'])
+ h.emit_tetra_sum([name + '/sh_size'])
+ h.emit_tetra_sum([name + '/sh_link'])
+ h.emit_tetra_sum([name + '/sh_info'])
+ h.emit_tetra_sum([name + '/alignment'])
+ h.emit_tetra_sum([name + '/sh_entsize'])
return h
Index: makehello.py
===================================================================
RCS file: /cvsroot/wisp/wisp/users/dig/makehello.py,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -d -r1.3 -r1.4
--- makehello.py 8 Feb 2003 18:38:42 -0000 1.3
+++ makehello.py 8 Feb 2003 20:21:37 -0000 1.4
@@ -9,6 +9,11 @@
from linkie import Linkie
from elf import *
+def make_marker (name):
+ m = Linkie('<')
+ m.place_symbol(name)
+ return m
+
code = Linkie('<') # ia32
code.place_symbol('_start')
code.emit_byte(0xBA); code.emit_tetra(14) # mov edx, 14
@@ -27,11 +32,7 @@
header = make_ELF32_header('<')
pheader = make_ELF32_pheader('<', '.text')
+sheader = make_ELF32_pheader('<', '.text')
-header.dump()
-print
-code.dump()
-print
-data.dump()
-print
-(header + pheader + code + data).dump()
+(header + make_marker('PHEADER') + pheader + code + data +
+ make_marker('SHEADER') + sheader).dump()
|