if arch == 32:
# 32bit
- hdr_struct = struct.Struct("<HHILLLIHHHHHH")
+ hdr_fmt = "<HHILLLIHHHHHH"
hdr_size = 52
else:
# 64bit
- hdr_struct = struct.Struct("<HHIQQQIHHHHHH")
+ hdr_fmt = "<HHIQQQIHHHHHH"
hdr_size = 64
e_type, e_machine, e_version, e_entry, e_phoff, e_shoff, e_flags,\
e_ehsize, e_phentsize, e_phnum, e_shentsize, e_shnum, e_shstrndx =\
- hdr_struct.unpack(elf_header[16:hdr_size])
+ struct.unpack(hdr_fmt, elf_header[16:hdr_size])
def change_interpreter(elf_file_name):
if arch == 32:
- ph_struct = struct.Struct("<IIIIIIII")
+ ph_fmt = "<IIIIIIII"
else:
- ph_struct = struct.Struct("<IIQQQQQQ")
+ ph_fmt = "<IIQQQQQQ"
""" look for PT_INTERP section """
for i in range(0,e_phnum):
if arch == 32:
# 32bit
p_type, p_offset, p_vaddr, p_paddr, p_filesz,\
- p_memsz, p_flags, p_align = ph_struct.unpack(ph_hdr)
+ p_memsz, p_flags, p_align = struct.unpack(ph_fmt, ph_hdr)
else:
# 64bit
p_type, p_flags, p_offset, p_vaddr, p_paddr, \
- p_filesz, p_memsz, p_align = ph_struct.unpack(ph_hdr)
+ p_filesz, p_memsz, p_align = struct.unpack(ph_fmt, ph_hdr)
""" change interpreter """
if p_type == 3:
def change_dl_sysdirs():
if arch == 32:
- sh_struct = struct.Struct("<IIIIIIIIII")
+ sh_fmt = "<IIIIIIIIII"
else:
- sh_struct = struct.Struct("<IIQQQQIIQQ")
+ sh_fmt = "<IIQQQQIIQQ"
""" read section string table """
f.seek(e_shoff + e_shstrndx * e_shentsize)
sh_hdr = f.read(e_shentsize)
sh_name, sh_type, sh_flags, sh_addr, sh_offset, sh_size, sh_link,\
- sh_info, sh_addralign, sh_entsize = sh_struct.unpack(sh_hdr)
+ sh_info, sh_addralign, sh_entsize = struct.unpack(sh_fmt, sh_hdr)
name = sh_strtab[sh_name:sh_strtab.find("\0", sh_name)]
# MAIN
if len(sys.argv) < 4:
- exit(-1)
+ sys.exit(-1)
new_prefix = sys.argv[1]
new_dl_path = sys.argv[2]
try:
f = open(e, "r+b")
- except IOError as ioex:
+ except IOError, ioex:
if ioex.errno == errno.ETXTBSY:
print("Could not open %s. File used by another process.\nPlease "\
"make sure you exit all processes that might use any SDK "\
"binaries." % e)
else:
print("Could not open %s: %s(%d)" % (e, ioex.strerror, ioex.errno))
- exit(-1)
+ sys.exit(-1)
arch = get_arch()
if arch: