[Wisp-cvs] wisp/users/dig pe.py,1.12,1.13 pe.tran,1.3,1.4
Status: Alpha
Brought to you by:
digg
From: <di...@us...> - 2003-05-18 15:36:31
|
Update of /cvsroot/wisp/wisp/users/dig In directory sc8-pr-cvs1:/tmp/cvs-serv7974 Modified Files: pe.py pe.tran Log Message: replaced make_pe_section_header by the |make-pe-section-header| tran macro Index: pe.py =================================================================== RCS file: /cvsroot/wisp/wisp/users/dig/pe.py,v retrieving revision 1.12 retrieving revision 1.13 diff -u -d -r1.12 -r1.13 --- pe.py 17 May 2003 16:49:13 -0000 1.12 +++ pe.py 18 May 2003 15:36:28 -0000 1.13 @@ -121,21 +121,6 @@ h.emit_tetra(0); h.emit_tetra(0) # reserved return h -def make_pe_section_header (name): - t = Linkie('<') - t.align(4) - t.emit_string((name + '\0' * 8)[:8]) - t[::4] = '#%s/memsz' % name - t[::4] = '&%s #rva' % name - t[::4] = '#%s/filesz' % name - t[::4] = '!%s' % name - t[::4] = '!%s/reloc' % name - t[::4] = '!%s/lineno' % name - t[::2] = '#%s/reloc' % name - t[::2] = '#%s/lineno' % name - t[::4] = '#%s/flags' % name - return t - def populate_pe_directories (linkie, base, **given): defaults = { '&export-table': base, '#export-table/size': 0, @@ -154,8 +139,8 @@ '&COM+-runtime-header': base, '#COM+-runtime-header/size': 0, } for sym, defval in defaults.items(): - if given.has_key(s): linkie.place_symbol(s, given[s]) - else: linkie.place_symbol(s, defval) + if given.has_key(sym): linkie.place_symbol(sym, given[sym]) + else: linkie.place_symbol(sym, defval) def make_pe_executable (text = None, data = None, bss = None, base_address = 0x00400000): @@ -173,7 +158,7 @@ sectnames = ['.text', '.data', '.bss', '.imports'] sections = {'.text': text, '.data': data, '.bss': bss, '.imports': imports} for s in sectnames: - e.glue(e.memsz(), make_pe_section_header(s), None) + interpret_single(["'", s, 'make-pe-section-header'], e, include = 'pe') e.place_symbol('!' + s + '/reloc', 0) e.place_symbol('!' + s + '/lineno', 0) e.place_symbol('#' + s + '/reloc', 0) Index: pe.tran =================================================================== RCS file: /cvsroot/wisp/wisp/users/dig/pe.tran,v retrieving revision 1.3 retrieving revision 1.4 diff -u -d -r1.3 -r1.4 --- pe.tran 17 May 2003 15:05:17 -0000 1.3 +++ pe.tran 18 May 2003 15:36:28 -0000 1.4 @@ -9,7 +9,7 @@ include mz \ The result's assumed origin address is 0x100. -:[ ] make-pe-mz-stub-structure \ no message itself +:[ ] make-pe-mz-stub-structure \ ( -- ) no message itself make-mz-header 0 =: #mz/reloc-count \ no relocation 0 =: #mz/header-size \ empty MZ header--load it all @@ -29,6 +29,20 @@ #xCD b, #x21 b, \ int 0x21 #xB8 b, #x4CFF w, \ mov %ax, 0x4CFF #xCD b, #x21 b, \ int 0x21 +; + +:[ ] make-pe-section-header \ ( name -- ) + 4 align + dup 8 padded-symbol, + dup mingle #*/memsz t, + dup mingle &* '#rva + t, \ IOW, it's a RVA + dup mingle #*/filesz t, + dup mingle !* t, + dup mingle !*/reloc t, + dup mingle !*/lineno t, + dup mingle #*/reloc w, + dup mingle #*/lineno w, + mingle #*/flags t, ; \ vim: ft=tran |