void brkchk(ulong addr, int type) { Breakpoint *b; for(b = bplist; b; b = b->next) { if(b->addr == addr && (b->type&type)) { if(b->type == Equal && getmem_4(addr) == b->count) { count = 1; atbpt = 1; return; } if(--b->done == 0) { b->done = b->count; count = 1; atbpt = 1; return; } } } }
int pfmt(char fmt, int mem, uint32_t val) { int c, i; Symbol s; char *p, ch, str[1024]; c = 0; switch(fmt) { default: Bprint(bioout, "bad modifier\n"); return 0; case 'o': c = Bprint(bioout, "%-4lo ", mem ? (uint16_t)getmem_2(dot) : val); inc = 2; break; case 'O': c = Bprint(bioout, "%-8lo ", mem ? getmem_4(dot) : val); inc = 4; break; case 'q': c = Bprint(bioout, "%-4lo ", mem ? (int16_t)getmem_2(dot) : val); inc = 2; break; case 'Q': c = Bprint(bioout, "%-8lo ", mem ? (int32_t)getmem_4(dot) : val); inc = 4; break; case 'd': c = Bprint(bioout, "%-5ld ", mem ? (int16_t)getmem_2(dot) : val); inc = 2; break; case 'D': c = Bprint(bioout, "%-8ld ", mem ? (int32_t)getmem_4(dot) : val); inc = 4; break; case 'x': c = Bprint(bioout, "#%-4lux ", mem ? (int32_t)getmem_2(dot) : val); inc = 2; break; case 'X': c = Bprint(bioout, "#%-8lux ", mem ? (int32_t)getmem_4(dot) : val); inc = 4; break; case 'u': c = Bprint(bioout, "%-5ld ", mem ? (uint16_t)getmem_2(dot) : val); inc = 2; break; case 'U': c = Bprint(bioout, "%-8ld ", mem ? (uint32_t)getmem_4(dot) : val); inc = 4; break; case 'b': c = Bprint(bioout, "%-3d ", (int)(mem ? getmem_b(dot) : val)); inc = 1; break; case 'c': c = Bprint(bioout, "%c ", (int)(mem ? getmem_b(dot) : val)); inc = 1; break; case 'C': ch = mem ? getmem_b(dot) : val; if(isprint(ch)) c = Bprint(bioout, "%c ", ch); else c = Bprint(bioout, "\\x%.2x ", ch); inc = 1; break; case 's': i = 0; while(ch = getmem_b(dot+i)) str[i++] = ch; str[i] = '\0'; dot += i; c = Bprint(bioout, "%s", str); inc = 0; break; case 'S': i = 0; while(ch = getmem_b(dot+i)) str[i++] = ch; str[i] = '\0'; dot += i; for(p = str; *p; p++) if(isprint(*p)) c += Bprint(bioout, "%c", *p); else c += Bprint(bioout, "\\x%.2ux", *p); inc = 0; break; case 'Y': p = ctime(mem ? getmem_b(dot) : val); p[30] = '\0'; c = Bprint(bioout, "%s", p); inc = 4; break; case 'a': symoff(str, sizeof(str), dot, CTEXT); Bprint(bioout, "%s", str); inc = 0; break; case 'e': for (i = 0; globalsym(&s, i); i++) Bprint(bioout, "%-15s #%lux\n", s.name, getmem_4(s.value)); inc = 0; break; case 'I': case 'i': inc = machdata->das(symmap, dot, fmt, str, sizeof(str)); if (inc < 0) { Bprint(bioout, "ki: %r\n"); return 0; } c = Bprint(bioout, "\t%s", str); break; case 'n': c = width+1; inc = 0; break; case '-': c = 0; inc = -1; break; case '+': c = 0; inc = 1; break; case '^': c = 0; if(inc > 0) inc = -inc; break; case 'z': if (findsym(dot, CTEXT, &s)) Bprint(bioout, " %s() ", s.name); printsource(dot); inc = 0; break; } return c; }