W must be 8 bytes wide. this is because W is the same as A, but pulls its punches. when debugging a 64-bit executable, 1\W -> 0x00000001 1\A -> 0x0000000000000001 note: since the default mach is mips, you have to be debugging a 64-bit executable to see this difference. Reference: /n/atom/patch/applied/acidwfix Date: Sun Feb 16 15:43:31 CET 2014 Signed-off-by: quanstro@quanstro.net --- /sys/src/cmd/acid/builtin.c Sun Feb 16 15:41:22 2014 +++ /sys/src/cmd/acid/builtin.c Sun Feb 16 15:41:23 2014 @@ -1068,6 +1068,9 @@ case 'V': Bprint(bout, "%lld", res->ival); break; + case 'W': + Bprint(bout, "%.8llux", res->ival); + break; case 'Y': Bprint(bout, "%.16llux", res->ival); break; @@ -1078,7 +1081,6 @@ Bprint(bout, "0%.6uo", (int)res->ival); break; case 'A': - case 'W': switch(mach->szaddr){ default: sysfatal("acid: szaddr %d unhandled", mach->szaddr); --- /sys/src/cmd/acid/expr.c Sun Feb 16 15:41:24 2014 +++ /sys/src/cmd/acid/expr.c Sun Feb 16 15:41:25 2014 @@ -20,7 +20,7 @@ ['S'] 4, ['U'] 4, ['V'] 8, -// ['W'] 8, + ['W'] 8, ['X'] 4, ['Y'] 8, ['Z'] 8, @@ -53,7 +53,6 @@ return ret; case 'a': case 'A': - case 'W': return mach->szaddr; case 'i': case 'I': --- /sys/src/cmd/acid/util.c Sun Feb 16 15:41:26 2014 +++ /sys/src/cmd/acid/util.c Sun Feb 16 15:41:27 2014 @@ -230,10 +230,10 @@ break; case 'a': case 'A': - case 'W': ret = getn(map, s->v->ival, &v, fmtsize(s->v)); break; case 'V': + case 'W': case 'Y': case 'Z': ret = get8(map, s->v->ival, &v);