[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
|