[Wisp-cvs] wisp/users/dig elf.py,1.26,1.27
Status: Alpha
Brought to you by:
digg
From: <di...@us...> - 2003-04-14 00:32:21
|
Update of /cvsroot/wisp/wisp/users/dig In directory sc8-pr-cvs1:/tmp/cvs-serv7759 Modified Files: elf.py Log Message: explicitly zero section addresses in section header tables of relocatable object files Index: elf.py =================================================================== RCS file: /cvsroot/wisp/wisp/users/dig/elf.py,v retrieving revision 1.26 retrieving revision 1.27 diff -u -d -r1.26 -r1.27 --- elf.py 14 Apr 2003 00:26:36 -0000 1.26 +++ elf.py 14 Apr 2003 00:32:18 -0000 1.27 @@ -367,7 +367,7 @@ t.place_symbol('#elf/phnum', len(names)) return t -def make_ELF32_shtable (byte_order, names): +def make_ELF32_shtable (byte_order, names, zero_addresses = 0): t = Linkie(byte_order) t.align(4) t.place_symbol('!elf/secthdr') @@ -376,7 +376,8 @@ t.emit_tetra_sum(['#.shstrtab/strings/' + name]) t.emit_tetra_sum(['#' + name + '/sh_type']) t.emit_tetra_sum(['#' + name + '/sh_flags']) - t.emit_tetra_sum(['&' + name]) + if zero_addresses: t.emit_tetra(0) + else: t.emit_tetra_sum(['&' + name]) t.emit_tetra_sum(['!' + name]) t.emit_tetra_sum(['#' + name + '/sh_size']) t.emit_tetra_sum(['#' + name + '/sh_link']) @@ -572,7 +573,8 @@ memory_boundary = (memory_boundary + 0xFFF) & ~0xFFF # create section header table - section_header_table = make_ELF32_shtable('<', shentnames) + section_header_table = make_ELF32_shtable('<', shentnames, + zero_addresses = 'r' in flags) binary.paste(-4, section_header_table) binary.place_symbol('#elf/shstrndx', shentnames.index('.shstrtab') + 1) binary.link() |