git: 9front

Download patch

ref: 6b63f7df3cfd63e9d6d8a3e22084480141aff766
parent: 8e28f6fe52c29d202f05919bbd908b5ccfd33847
author: aiju <devnull@localhost>
date: Mon Jun 19 13:22:41 EDT 2017

ktrace(1): handle amd64 stacktraces correctly

--- a/sys/src/cmd/ktrace.c
+++ b/sys/src/cmd/ktrace.c
@@ -370,7 +370,7 @@
 {
 	char buf[256];
 	int i, n;
-	uvlong r;
+	uvlong r, m;
 
 	if(interactive){
 		print("// data at %#8.8llux? ", a);
@@ -379,17 +379,25 @@
 			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;
 }
--