diff options
| -rw-r--r-- | sys/src/cmd/ktrace.c | 18 |
1 files changed, 13 insertions, 5 deletions
diff --git a/sys/src/cmd/ktrace.c b/sys/src/cmd/ktrace.c index d816d57e5..86ff89569 100644 --- a/sys/src/cmd/ktrace.c +++ b/sys/src/cmd/ktrace.c @@ -370,7 +370,7 @@ getval(uvlong a) { char buf[256]; int i, n; - uvlong r; + uvlong r, m; if(interactive){ print("// data at %#8.8llux? ", a); @@ -379,17 +379,25 @@ getval(uvlong a) return 0; buf[n] = '\0'; r = strtoull(buf, 0, 16); + }else{ + r = 0; switch(fhdr.magic){ case S_MAGIC: - r = (long)r; // sign extend + m = 0xffffffff00000000ULL; break; + default: + m = 0; } - }else{ - r = 0; for(i=0; i<naddr; i++) - if(addr[i] == a) + if((addr[i]|m) == a) r = val[i]; } + switch(fhdr.magic){ + case S_MAGIC: + r = (long)r; // sign extend + break; + } + return r; } |
