From ec240fb4669b46a55f6a6f9589281fccf9a98cbd Mon Sep 17 00:00:00 2001 From: Michael Buesch Date: Thu, 23 Sep 2010 16:42:33 +0200 Subject: [PATCH] b43-fwdump: Disassembler fixups Signed-off-by: Michael Buesch --- debug/b43-fwdump | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/debug/b43-fwdump b/debug/b43-fwdump index 24f1f0d..6ac7aa0 100755 --- a/debug/b43-fwdump +++ b/debug/b43-fwdump @@ -21,6 +21,7 @@ import getopt from libb43 import * from sys import stdout from tempfile import * +import re def usage(): @@ -91,21 +92,28 @@ def dump_regs(prefix, regs): stdout.write("\n") return +def dasmLineIsPC(line, pc): + m = re.match(r'.*/\*\s+([0-9a-fA-F]+)\s+\*/.*', line, re.DOTALL) + if not m: + return False + linePC = int(m.group(1), 16) + return pc == linePC + def makeShortDump(dasm, pc): dasm = dasm.splitlines() i = 0 for line in dasm: - if "/* %03X */" % pc in line: + if dasmLineIsPC(line, pc): break i += 1 - if i >= len(dasm): + else: return "" ret = "" pos = max(i - 8, 0) end = min(i + 8, len(dasm) - 1) while pos != end: ret += dasm[pos] - if "/* %03X */" % pc in dasm[pos]: + if dasmLineIsPC(dasm[pos], pc): ret += "\t\t<<<<<<<<<<<" ret += "\n" pos += 1 -- 2.31.1