13 unique(char *buf, Sym *s)
22 if(l == 0 || (l->lexval == Tid && l->v->set == 0))
25 if(syren == 0 && !quiet) {
26 print("Symbol renames:\n");
30 memmove(buf+1, buf, i);
33 if(renamed > 5 && !quiet) {
34 print("Too many renames; must be X source!\n");
39 print("\t%s=%s %c/%llux\n", s->name, buf, s->type, s->value);
54 List *list, **tail, *l2, *tl;
60 for(i = 0; i < n; i++) {
87 /* Enter as list of { name, type, value } */
90 list->string = strnode(buf);
92 list->next = al(TINT);
96 list->next = al(TINT);
103 l = mkvar("symbols");
108 print("no symbol information\n");
119 l = mkvar("registers");
126 for(r = mach->reglist; r->rname; r++) {
135 li->string = strnode(r->rname);
144 l = mkvar("bpinst"); /* Breakpoint text */
149 v->string = gmalloc(sizeof(String));
150 v->string->len = machdata->bpsize;
151 v->string->string = gmalloc(machdata->bpsize);
152 memmove(v->string->string, machdata->bpinst, machdata->bpsize);
168 l = mkvar("pid"); /* Current process */
175 mkvar("notes"); /* Pending notes */
177 l = mkvar("proclist"); /* Attached processes */
182 rget(Map *map, char *reg)
191 fatal("rget: %s\n", reg);
195 ret = get4(map, s->v->ival, &x);
202 ret = get8(map, s->v->ival, &v);
206 error("can't get register %s: %r", reg);
211 strnodlen(char *name, int len)
215 s = gmalloc(sizeof(String)+len+1);
216 s->string = (char*)s+sizeof(String);
219 memmove(s->string, name, len);
220 s->string[len] = '\0';
231 return strnodlen(name, strlen(name));
242 for(len = 0; *p; p++)
247 s = gmalloc(sizeof(String)+len);
248 s->string = (char*)s+sizeof(String);
250 memmove(s->string, name, len);
259 stradd(String *l, String *r)
265 s = gmalloc(sizeof(String)+len+1);
269 s->string = (char*)s+sizeof(String);
270 memmove(s->string, l->string, l->len);
271 memmove(s->string+l->len, r->string, r->len);
272 s->string[s->len] = 0;
277 straddrune(String *l, Rune r)
282 len = l->len+runelen(r);
283 s = gmalloc(sizeof(String)+len+1);
287 s->string = (char*)s+sizeof(String);
288 memmove(s->string, l->string, l->len);
289 runetochar(s->string+l->len, &r);
290 s->string[s->len] = 0;
295 scmp(String *sr, String *sl)
297 if(sr->len != sl->len)
300 if(memcmp(sr->string, sl->string, sl->len))