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()
|