]> git.lizzy.rs Git - plan9front.git/blobdiff - sys/src/cmd/ktrace.c
cc: fix void cast crash
[plan9front.git] / sys / src / cmd / ktrace.c
index 1b9ab8bdc613b543fd44404444d915e9be3431b2..35f9becf55ee2a81af1c2139d4ebf4412b4b3332 100644 (file)
@@ -109,6 +109,7 @@ main(int argc, char *argv[])
        case V_MAGIC:   /* mips 3000 */
        case M_MAGIC:   /* mips 4000 */
        case E_MAGIC:   /* arm 7-something */
+       case R_MAGIC:   /* arm64 */
        case Q_MAGIC:   /* powerpc */
        case N_MAGIC:   /* mips 4000 LE */
        case L_MAGIC:   /* dec alpha */
@@ -370,7 +371,7 @@ getval(uvlong a)
 {
        char buf[256];
        int i, n;
-       uvlong r;
+       uvlong r, m;
 
        if(interactive){
                print("// data at %#8.8llux? ", a);
@@ -381,10 +382,25 @@ getval(uvlong a)
                r = strtoull(buf, 0, 16);
        }else{
                r = 0;
+               switch(fhdr.magic){
+               case S_MAGIC:
+               case R_MAGIC:
+                       m = 0xffffffff00000000ULL;
+                       break;
+               default:
+                       m = 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:
+       case R_MAGIC:
+               r = (long)r;    // sign extend
+               break;
+       }
+
 
        return r;
 }