[Wisp-cvs] wisp/users/dig make-pe-exe.py,1.66,1.67 pe.py,1.4,1.5
Status: Alpha
Brought to you by:
digg
|
From: <di...@us...> - 2003-05-16 16:47:10
|
Update of /cvsroot/wisp/wisp/users/dig
In directory sc8-pr-cvs1:/tmp/cvs-serv22417
Modified Files:
make-pe-exe.py pe.py
Log Message:
wrote populate_pe_directories
Index: make-pe-exe.py
===================================================================
RCS file: /cvsroot/wisp/wisp/users/dig/make-pe-exe.py,v
retrieving revision 1.66
retrieving revision 1.67
diff -u -d -r1.66 -r1.67
--- make-pe-exe.py 16 May 2003 16:23:04 -0000 1.66
+++ make-pe-exe.py 16 May 2003 16:47:06 -0000 1.67
@@ -187,33 +187,7 @@
# Note that null RVAs are those that equal base_address
e.place_symbol('#aout/dict-entry-count', 16)
-e.place_symbol('&export-table', base_address)
-e.place_symbol('#export-table/size', 0)
-e.place_symbol('&resource-table', base_address)
-e.place_symbol('#resource-table/size', 0)
-e.place_symbol('&exception-table', base_address)
-e.place_symbol('#exception-table/size', 0)
-e.place_symbol('!certificate-table', 0)
-e.place_symbol('#certificate-table/size', 0)
-e.place_symbol('&base-relocation-table', base_address)
-e.place_symbol('#base-relocation-table/size', 0)
-e.place_symbol('&debug-data', base_address)
-e.place_symbol('#debug-data/size', 0)
-e.place_symbol('&architecture-specific', base_address)
-e.place_symbol('#architecture-specific/size', 0)
-e.place_symbol('&global-pointer', base_address)
-e.place_symbol('&thread-local-storage', base_address)
-e.place_symbol('#thread-local-storage/size', 0)
-e.place_symbol('&load-config-table', base_address)
-e.place_symbol('#load-config-table/size', 0)
-e.place_symbol('&bound-import-table', base_address)
-e.place_symbol('#bound-import-table/size', 0)
-e.place_symbol('&import-address-table', base_address)
-e.place_symbol('#import-address-table/size', 0)
-e.place_symbol('&delay-import-descriptor', base_address)
-e.place_symbol('#delay-import-descriptor/size', 0)
-e.place_symbol('&COM+-runtime-header', base_address)
-e.place_symbol('#COM+-runtime-header/size', 0)
+populate_pe_directories(e, base_address)
e.align(512)
e.link()
Index: pe.py
===================================================================
RCS file: /cvsroot/wisp/wisp/users/dig/pe.py,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -d -r1.4 -r1.5
--- pe.py 16 May 2003 14:56:59 -0000 1.4
+++ pe.py 16 May 2003 16:47:07 -0000 1.5
@@ -85,9 +85,8 @@
h.emit_tetra_sum(['&aout/image-end', '#rva'])
# !aout/header-end must be a multiple of #aout/file-align
h.emit_tetra_sum(['!aout/header-end'])
- h.emit_tetra(0) # checksum
- h.emit_wyde_sum(['#aout/subsys'])
- h.emit_wyde_sum(['#aout/dll-flags'])
+ h[::4] = 0 # checksum
+ h[::2] = '#aout/subsys', '#aout/dll-flags'
# Known flags for #aout/dll-flags
# 0x0001 - per-process library initialization
# 0x0002 - per-process library termination
@@ -108,26 +107,26 @@
h.emit_tetra_sum(['#resource-table/size'])
h.emit_tetra_sum(['&exception-table', '#rva'])
h.emit_tetra_sum(['#exception-table/size'])
- h.emit_tetra_sum(['!certificate-table'])
- h.emit_tetra_sum(['#certificate-table/size'])
- h.emit_tetra_sum(['&base-relocation-table', '#rva'])
- h.emit_tetra_sum(['#base-relocation-table/size'])
+ h.emit_tetra_sum(['!cert-table'])
+ h.emit_tetra_sum(['#cert-table/size'])
+ h.emit_tetra_sum(['&base-rel-table', '#rva'])
+ h.emit_tetra_sum(['#base-rel-table/size'])
h.emit_tetra_sum(['&debug-data', '#rva'])
h.emit_tetra_sum(['#debug-data/size'])
- h.emit_tetra_sum(['&architecture-specific', '#rva'])
- h.emit_tetra_sum(['#architecture-specific/size'])
+ h.emit_tetra_sum(['&arch-specific', '#rva'])
+ h.emit_tetra_sum(['#arch-specific/size'])
h.emit_tetra_sum(['&global-pointer', '#rva'])
h.emit_tetra(0)
- h.emit_tetra_sum(['&thread-local-storage', '#rva'])
- h.emit_tetra_sum(['#thread-local-storage/size'])
+ h.emit_tetra_sum(['&tls', '#rva'])
+ h.emit_tetra_sum(['#tls/size'])
h.emit_tetra_sum(['&load-config-table', '#rva'])
h.emit_tetra_sum(['#load-config-table/size'])
h.emit_tetra_sum(['&bound-import-table', '#rva'])
h.emit_tetra_sum(['#bound-import-table/size'])
h.emit_tetra_sum(['&import-address-table', '#rva'])
h.emit_tetra_sum(['#import-address-table/size'])
- h.emit_tetra_sum(['&delay-import-descriptor', '#rva'])
- h.emit_tetra_sum(['#delay-import-descriptor/size'])
+ h.emit_tetra_sum(['&delay-import-descr', '#rva'])
+ h.emit_tetra_sum(['#delay-import-descr/size'])
h.emit_tetra_sum(['&COM+-runtime-header', '#rva'])
h.emit_tetra_sum(['#COM+-runtime-header/size'])
h.emit_tetra(0); h.emit_tetra(0) # reserved
@@ -147,3 +146,24 @@
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,
+ '&resource-table': base, '#resource-table/size': 0,
+ '&exception-table': base, '#exception-table/size': 0,
+ '!cert-table': 0, '#cert-table/size': 0,
+ '&base-rel-table': base, '#base-rel-table/size': 0,
+ '&debug-data': base, '#debug-data/size': 0,
+ '&arch-specific': base, '#arch-specific/size': 0,
+ '&global-pointer': base,
+ '&tls': base, '#tls/size': 0,
+ '&load-config-table': base, '#load-config-table/size': 0,
+ '&bound-import-table': base, '#bound-import-table/size': 0,
+ '&import-address-table': base, '#import-address-table/size': 0,
+ '&delay-import-descr': base, '#delay-import-descr/size': 0,
+ '&COM+-runtime-header': base, '#COM+-runtime-header/size': 0,
+ }
+ for s in defaults.keys():
+ if given.has_key(s): linkie.place_symbol(s, given[s])
+ else: linkie.place_symbol(s, defaults[s])
|