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++) {
74 if(strlen(s->name) >= sizeof(buf)-6){
76 print("Symbol name too long: %s\n", s->name);
93 /* Enter as list of { name, type, value } */
96 list->string = strnode(buf);
98 list->next = al(TINT);
101 list->ival = s->type;
102 list->next = al(TINT);
109 l = mkvar("symbols");
114 print("no symbol information\n");
125 l = mkvar("registers");
132 for(r = mach->reglist; r->rname; r++) {
141 li->string = strnode(r->rname);
150 l = mkvar("bpinst"); /* Breakpoint text */
155 v->string = gmalloc(sizeof(String));
156 v->string->len = machdata->bpsize;
157 v->string->string = gmalloc(machdata->bpsize);
158 memmove(v->string->string, machdata->bpinst, machdata->bpsize);
174 l = mkvar("pid"); /* Current process */
181 mkvar("notes"); /* Pending notes */
183 l = mkvar("proclist"); /* Attached processes */
188 rget(Map *map, char *reg)
197 fatal("rget: %s\n", reg);
201 ret = get4(map, s->v->ival, &x);
208 ret = get8(map, s->v->ival, &v);
212 error("can't get register %s: %r", reg);
217 strnodlen(char *name, int len)
221 s = gmalloc(sizeof(String)+len+1);
222 s->string = (char*)s+sizeof(String);
225 memmove(s->string, name, len);
226 s->string[len] = '\0';
237 return strnodlen(name, strlen(name));
248 for(len = 0; *p; p++)
253 s = gmalloc(sizeof(String)+len);
254 s->string = (char*)s+sizeof(String);
256 memmove(s->string, name, len);
265 stradd(String *l, String *r)
271 s = gmalloc(sizeof(String)+len+1);
275 s->string = (char*)s+sizeof(String);
276 memmove(s->string, l->string, l->len);
277 memmove(s->string+l->len, r->string, r->len);
278 s->string[s->len] = 0;
283 straddrune(String *l, Rune r)
288 len = l->len+runelen(r);
289 s = gmalloc(sizeof(String)+len+1);
293 s->string = (char*)s+sizeof(String);
294 memmove(s->string, l->string, l->len);
295 runetochar(s->string+l->len, &r);
296 s->string[s->len] = 0;
301 scmp(String *sr, String *sl)
303 if(sr->len != sl->len)
306 if(memcmp(sr->string, sl->string, sl->len))