diff options
author | Nicholas Chin <nic.c3.14@gmail.com> | 2023-05-06 12:16:38 -0600 |
---|---|---|
committer | Nicholas Chin <nic.c3.14@gmail.com> | 2023-05-06 12:23:32 -0600 |
commit | 2e64f6397556b7e6fff8a7a305a5eaa1095acfc1 (patch) | |
tree | 94fa2dc794f6da0bdba0d9c67ef3d3b10a3f9703 /resources/bios_extract/patches/0001-dell_inspiron_1100_unpacker-Fix-minor-style-issues.patch | |
parent | f5150f26a8c310746a267ce8090ccca9d0fceaf1 (diff) |
Add patches for bios_extract
This updates the dell_inspiron_1100.py script from Python 2 to 3 for
better compatibility (some distros have dropped Python 2), and adds
special handling so that it works with the Latitude E6400 BIOS.
These have also been sent upstream, so these patches can be dropped
once they are merged:
https://review.coreboot.org/c/bios_extract/+/74975/
https://review.coreboot.org/c/bios_extract/+/74976/
https://review.coreboot.org/c/bios_extract/+/74977/
Diffstat (limited to 'resources/bios_extract/patches/0001-dell_inspiron_1100_unpacker-Fix-minor-style-issues.patch')
-rw-r--r-- | resources/bios_extract/patches/0001-dell_inspiron_1100_unpacker-Fix-minor-style-issues.patch | 132 |
1 files changed, 132 insertions, 0 deletions
diff --git a/resources/bios_extract/patches/0001-dell_inspiron_1100_unpacker-Fix-minor-style-issues.patch b/resources/bios_extract/patches/0001-dell_inspiron_1100_unpacker-Fix-minor-style-issues.patch new file mode 100644 index 0000000..e00379b --- /dev/null +++ b/resources/bios_extract/patches/0001-dell_inspiron_1100_unpacker-Fix-minor-style-issues.patch @@ -0,0 +1,132 @@ +From d187ceefacc4909c4a3fdb8098878cb9bcd2c198 Mon Sep 17 00:00:00 2001 +From: Nicholas Chin <nic.c3.14@gmail.com> +Date: Fri, 5 May 2023 19:34:29 -0600 +Subject: [PATCH 1/3] dell_inspiron_1100_unpacker: Fix minor style issues + +- Make indent width consistent +- Use spaces around -= operator +- Rename variable type to type_id to avoid shadowing the type method, + though that method isn't ever used in this program + +Signed-off-by: Nicholas Chin <nic.c3.14@gmail.com> +Change-Id: I2d47501845591e228b6c5d61c36ca2edce91d36a +--- + dell_inspiron_1100_unpacker.py | 84 +++++++++++++++++----------------- + 1 file changed, 42 insertions(+), 42 deletions(-) + +diff --git a/dell_inspiron_1100_unpacker.py b/dell_inspiron_1100_unpacker.py +index 3d5adf5..b12059b 100755 +--- a/dell_inspiron_1100_unpacker.py ++++ b/dell_inspiron_1100_unpacker.py +@@ -19,7 +19,7 @@ def memcpy(arr1, off1, arr2, off2, count): + raise Exception("Trying to write out of bounds") + off1 += 1 + off2 += 1 +- count -=1 ++ count -= 1 + + # looks like some lzss variation + def dell_unpack(indata): +@@ -64,58 +64,58 @@ def dell_unpack(indata): + return dst.tostring() + + mod_types = { +- 0x01: "Main ROM", +- 0x0C: "Microcode update", ++ 0x01: "Main ROM", ++ 0x0C: "Microcode update", + } + + print "Dell/Phoenix ROM BIOS PLUS unpacker" + if len(sys.argv) < 2: +- print "Usage: dell_unpack.py bios.bin [offset]" +- sys.exit(1) ++ print "Usage: dell_unpack.py bios.bin [offset]" ++ sys.exit(1) + fname = sys.argv[1] + offs = 0 + f = open(fname, "rb").read() + if len(sys.argv) > 2: +- offs = int(sys.argv[2], 16) ++ offs = int(sys.argv[2], 16) + else: +- offs = f.find("\xF0\x00Copyright 1985-\x02\x04\xF0\x0F8 Phoenix Technologies Ltd.") +- if offs == -1: +- print "Does not look like a Dell/Phoenix ROM BIOS PLUS" +- sys.exit(2) +- if f[offs-5] == '\x01': +- hlen = 5 # 32-bit length +- offs -= 5 +- fmt = "<BI" +- elif f[offs-3] == '\x01': +- hlen = 3 # 16-bit length +- offs -= 3 +- fmt = "<BH" +- else: +- print "Unhandled format!" +- sys.exit(1) +- print "Found compressed module at %08X" % offs ++ offs = f.find("\xF0\x00Copyright 1985-\x02\x04\xF0\x0F8 Phoenix Technologies Ltd.") ++ if offs == -1: ++ print "Does not look like a Dell/Phoenix ROM BIOS PLUS" ++ sys.exit(2) ++ if f[offs-5] == '\x01': ++ hlen = 5 # 32-bit length ++ offs -= 5 ++ fmt = "<BI" ++ elif f[offs-3] == '\x01': ++ hlen = 3 # 16-bit length ++ offs -= 3 ++ fmt = "<BH" ++ else: ++ print "Unhandled format!" ++ sys.exit(1) ++ print "Found compressed module at %08X" % offs + if offs > 0: + fn = "EC.bin" + print "%08X EC code, %08X %s" % (0, offs, fn) + open(fn, "wb").write(f[:offs]) + while True: +- type, leng = struct.unpack(fmt, f[offs:offs+hlen]) +- print "%08X type %02X" % (offs, type), +- offs += hlen +- if type == 0xFF: +- print "<end of chain>" +- break +- data = f[offs:offs+leng] +- offs += leng +- if type != 0xC: +- odata = dell_unpack(data) +- else: +- odata = data +- print " %08X -> %08X" % (leng, len(odata)), +- fn = "mod_%02X.bin" % type +- print " %s" % fn, +- if type in mod_types: +- print "(%s)" % mod_types[type] +- else: +- print "" +- open(fn, "wb").write(odata) ++ type_id, leng = struct.unpack(fmt, f[offs:offs+hlen]) ++ print "%08X type %02X" % (offs, type_id), ++ offs += hlen ++ if type_id == 0xFF: ++ print "<end of chain>" ++ break ++ data = f[offs:offs+leng] ++ offs += leng ++ if type_id != 0xC: ++ odata = dell_unpack(data) ++ else: ++ odata = data ++ print " %08X -> %08X" % (leng, len(odata)), ++ fn = "mod_%02X.bin" % type_id ++ print " %s" % fn, ++ if type_id in mod_types: ++ print "(%s)" % mod_types[type_id] ++ else: ++ print "" ++ open(fn, "wb").write(odata) +-- +2.40.1 + |