From 46bfba7f5bbbd679591708b4a03d4cec688f4cbe Mon Sep 17 00:00:00 2001 From: Mark Seaborn Date: Thu, 22 Jan 2009 20:49:25 +0000 Subject: [PATCH] Add prefix to validator errors to make them easier to find --- ncv/ncval-annotate.py | 13 +++++++------ ncv/ncvalidate.c | 21 +++++++++++---------- 2 files changed, 18 insertions(+), 16 deletions(-) diff --git a/ncv/ncval-annotate.py b/ncv/ncval-annotate.py index 97b935f6..1cac0905 100644 --- a/ncv/ncval-annotate.py +++ b/ncv/ncval-annotate.py @@ -19,12 +19,13 @@ def main(args): regexp = re.compile("[0-9a-f]{3,}") for line in proc.stdout: sys.stdout.write(line) - match = regexp.search(line) - if match is not None: - addr = match.group() - proc2.stdin.write("%s\n" % addr) - info = proc2.stdout.readline() - sys.stdout.write(" - %s: %s" % (addr, info)) + if line.startswith("VALIDATOR:"): + match = regexp.search(line) + if match is not None: + addr = match.group() + proc2.stdin.write("%s\n" % addr) + info = proc2.stdout.readline() + sys.stdout.write(" - %s: %s" % (addr, info)) if __name__ == "__main__": diff --git a/ncv/ncvalidate.c b/ncv/ncvalidate.c index 95947d93..f504a66d 100644 --- a/ncv/ncvalidate.c +++ b/ncv/ncvalidate.c @@ -312,7 +312,7 @@ struct NCValidatorState *NCValidateInit(const uint32_t vbase, static void RememberIP(const uint32_t ip, struct NCValidatorState *vstate) { uint32_t ioffset = ip - vstate->iadrbase; if (ip < vstate->iadrbase || ip >= vstate->iadrlimit) { - vprint(("JUMP TARGET %08x out of range in RememberIP\n", ip)); + vprint(("VALIDATOR: JUMP TARGET %08x out of range in RememberIP\n", ip)); Stats_BadTarget(vstate); return; } @@ -348,7 +348,7 @@ static void RememberTP(const uint32_t src, uint32_t target, return; } } - vprint(("%08x: JUMP TARGET %08x out of range\n", src, target)); + vprint(("VALIDATOR: %08x: JUMP TARGET %08x out of range\n", src, target)); Stats_BadTarget(vstate); return; } while (0); @@ -359,7 +359,7 @@ static void ForgetIP(const uint32_t ip, struct NCValidatorState *vstate) { uint32_t ioffset = ip - vstate->iadrbase; if (ip < vstate->iadrbase || ip >= vstate->iadrlimit) { - vprint(("JUMP TARGET %08x out of range in ForgetIP\n", ip)); + vprint(("VALIDATOR: JUMP TARGET %08x out of range in ForgetIP\n", ip)); Stats_BadTarget(vstate); return; } @@ -382,23 +382,24 @@ int NCValidateFinish(struct NCValidatorState *vstate) { Stats_CheckTarget(vstate); if (!GetAdrTable(offset, vstate->vttable)) { Stats_BadTarget(vstate); - vprint(("Bad jump target at %x\n", vstate->iadrbase + offset)); + vprint(("VALIDATOR: Bad jump target at %x\n", vstate->iadrbase + offset)); } } } /* check basic block boundaries */ if (vstate->iadrbase & vstate->alignmask) { - vprint(("Bad base address alignment 0x%08x\n", vstate->iadrbase)); + vprint(("VALIDATOR: Bad base address alignment 0x%08x\n", vstate->iadrbase)); Stats_BadAlignment(vstate); } for (offset = 0; offset < vstate->iadrlimit - vstate->iadrbase; offset += vstate->alignment) { if (!GetAdrTable(offset, vstate->vttable)) { - vprint(("Bad basic block alignment at %08x\n", + vprint(("VALIDATOR: Bad basic block alignment at %08x\n", vstate->iadrbase + offset)); Stats_BadAlignment(vstate); } } + fflush(stdout); /* Now that all the work is done, generate return code. */ /* Return zero if there are no problems. */ @@ -416,7 +417,7 @@ void NCValidateFreeState(struct NCValidatorState **vstate) { static void ValidateCallAlignment(const struct NCDecoderState *mstate) { uint32_t fallthru = mstate->inst.vaddr + mstate->inst.length; if (fallthru & mstate->vstate->alignmask) { - printf("bad call alignment at %x\n", mstate->inst.vaddr); + printf("VALIDATOR: bad call alignment at %x\n", mstate->inst.vaddr); /* This makes bad call alignment a fatal error. */ Stats_BadAlignment(mstate->vstate); } @@ -622,7 +623,7 @@ void ValidateInst(const struct NCDecoderState *mstate) { BadPrefixMask[mstate->opinfo->insttype]) == 0) break; } } - vprint(("BadPrefix at %08x, length %i\n", mstate->inst.vaddr, + vprint(("VALIDATOR: BadPrefix at %08x, length %i\n", mstate->inst.vaddr, mstate->inst.prefixbytes)); Stats_BadPrefix(mstate->vstate); } while (0); @@ -731,7 +732,7 @@ void ValidateInst(const struct NCDecoderState *mstate) { uint8_t *opcode = mstate->inst.maddr + mstate->inst.prefixbytes; Stats_IllegalInst(mstate->vstate); if (VERBOSE) { - printf("illegal inst at %x (%02x)\n", mstate->inst.vaddr, *opcode); + printf("VALIDATOR: illegal inst at %x (%02x)\n", mstate->inst.vaddr, *opcode); } break; } @@ -741,7 +742,7 @@ void ValidateInst(const struct NCDecoderState *mstate) { Stats_IllegalInst(mstate->vstate); Stats_InternalError(mstate->vstate); if (VERBOSE) { - printf("undefined inst at %x (%02x)\n", mstate->inst.vaddr, *opcode); + printf("VALIDATOR: undefined inst at %x (%02x)\n", mstate->inst.vaddr, *opcode); } break; } -- 2.11.4.GIT