[Wisp-cvs] wisp/users/dig elf.py,1.7,1.8 makehello.py,1.3,1.4
Status: Alpha
Brought to you by:
digg
From: <di...@us...> - 2003-02-08 20:21:41
|
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() |