ref: 26dd49399614ec9544f66aa95809af437247322e
parent: c1b943384c1cf8bddbad7df63319d597710f943d
author: Ori Bernstein <ori@eigenstate.org>
date: Sat Sep 9 17:09:02 EDT 2023
chk: give better errors.
--- a/chk.c
+++ b/chk.c
@@ -63,9 +63,14 @@
exits("bad access");}
for(; off != end; off++){- bits = chk << (2*(off&3));;
- if((seg->shadow[off>>2] & bits) != bits){- print("invalid read: %#x at %#x (%x != %x)\n", seg->start+off, P->R[15] - 4, bits, (seg->shadow[off>>2] & bits));+ bits = seg->shadow[off>>2] >> 2*(off&3);
+ if((bits&3) != chk){+ if(chk&MARKALLOC)
+ print("%d: access outside alloc: %#x at PC %#x\n",+ P->pid, seg->start+off, P->R[15] - 4);
+ if(chk&MARKINIT)
+ print("%d: invalid read: %#x at PC %#x\n", + P->pid, seg->start+off, P->R[15] - 4);
rendezvous(&never, nil);
exits("bad access");}
--
⑨