Thread: [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]) |