sys_write(1, buf+i, nelem(buf)-i);
}
-void
-sys_panicl(int32 lno)
-{
- prints("\npanic on line ");
- sys_printint(lno);
- prints("\n");
- *(int32*)0 = 0;
-}
-
void
sys_printstring(string v)
{
sys_write(1, s, strlen(s));
}
+void
+sys_printpc(void *p)
+{
+ prints("PC=0x");
+ sys_printpointer(sys_getcallerpc(p));
+}
+
+void
+sys_panicl(int32 lno)
+{
+ prints("\npanic on line ");
+ sys_printint(lno);
+ prints(" ");
+ sys_printpc(&lno);
+ prints("\n");
+ *(int32*)0 = 0;
+}
+
dump(byte *p, int32 n)
{
uint32 v;
int32 l;
if(lindex < 0 || lindex > si->len ||
- hindex < lindex || hindex > si->len)
+ hindex < lindex || hindex > si->len) {
+ sys_printpc(&si);
+ prints(" ");
prbounds("slice", lindex, si->len, hindex);
+ }
l = hindex-lindex;
so = mal(sizeof(so->len)+l);
void
sys_indexstring(string s, int32 i, byte b)
{
- if(i < 0 || i >= s->len)
+ if(i < 0 || i >= s->len) {
+ sys_printpc(&s);
+ prints(" ");
prbounds("index", 0, i, s->len);
+ }
b = s->str[i];
FLUSH(&b);
void sys_breakpoint(void);
uint8* sys_mmap(byte*, uint32, int32, int32, int32, uint32);
void sys_memclr(byte*, uint32);
+void* sys_getcallerpc(void*);
/*
* runtime