use pc/ln table to print source lines in traceback

r45=; 6.out
oops
panic PC=0x400316
0x400316?zi /home/rsc/go/src/runtime/rt0_amd64_linux.s:83
	main·g(4195177, 0, 4205661, ...)
	main·g(0x400369, 0x402c5d, 0x403e49, ...)
0x40034c?zi /home/rsc/go/src/runtime/x.go:24
	main·f(4205661, 0, 4210249, ...)
	main·f(0x402c5d, 0x403e49, 0x1, ...)
0x400368?zi /home/rsc/go/src/runtime/x.go:37
	main·main(4210249, 0, 1, ...)
	main·main(0x403e49, 0x1, 0x7fff9d894bd8, ...)
0x402c5c?zi /home/rsc/go/src/runtime/rt0_amd64.s:70
	mainstart(1, 0, 2643020760, ...)
	mainstart(0x1, 0x7fff9d894bd8, 0x0, ...)
r45=;

R=r
DELTA=251  (198 added, 25 deleted, 28 changed)
OCL=19965
CL=19979
diff --git a/src/runtime/runtime.h b/src/runtime/runtime.h
index 7ec9c7d..409228d 100644
--- a/src/runtime/runtime.h
+++ b/src/runtime/runtime.h
@@ -189,9 +189,13 @@
 struct	Func
 {
 	string	name;
-	string	type;
-	uint64	entry;
-	int64	frame;
+	string	type;	// go type string
+	string	src;	// src file name
+	uint64	entry;	// entry pc
+	int64	frame;	// stack frame size
+	Array	pcln;	// pc/ln tab for this func
+	int64	pc0;	// starting pc, ln for table
+	int32	ln0;
 };
 
 /*
@@ -261,6 +265,7 @@
 G*	malg(int32);
 void	minit(void);
 Func*	findfunc(uint64);
+int32	funcline(Func*, uint64);
 
 /*
  * mutual exclusion locks.  in the uncontended case,