papermario/tools/patch_64bit_compile.py

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

24 lines
677 B
Python
Raw Normal View History

#!/usr/bin/env python3
import argparse, struct, sys
if __name__ == "__main__":
parser = argparse.ArgumentParser()
parser.add_argument("file", help="file to patch")
args = parser.parse_args()
with open(args.file, "r+b") as f:
magic = struct.unpack(">I", f.read(4))[0]
if magic != 0x7F454C46:
print("Error: Not an ELF file")
sys.exit(1)
f.seek(36)
flags = struct.unpack(">I", f.read(4))[0]
if flags & 0xF0000000 == 0x20000000: # test for mips3
# patch it
flags |= 0x00000100 # set EF_MIPS_32BITMODE
f.seek(36)
f.write(struct.pack(">I", flags))