| * XXX could remove the rock by hiding it in a special regs. |
| * That would still be sleazy but would be thread-safe. |
| ltrace(Map *map, Regs *regs, ulong pc, ulong nextpc, Symbol *sym, int depth) |
| if(sym==nil || strcmp(sym->name, rock.fn) != 0) |
| return ++rock.nframe < 40; |
| if(rget(regs, rock.reg, &v) < 0) |
| if(lookuplsym(sym, rock.var, &s1) < 0) |
| if(locsimplify(map, regs, s1.loc, &rock.l) < 0) |
| if(rock.l.type == LREG && rget(regs, rock.l.reg, &v) >= 0) |
| if(rock.l.type != LADDR && rock.l.type != LCONST) |
| localaddr(Map *map, Regs *regs, char *fn, char *var, ulong *val) |
| for(rp=mach->reglist; rp->name; rp++) |
| if(strcmp(rp->name, var) == 0) |
| stacktrace(map, regs, ltrace); |