14 unique(char *buf, Sym *s)
23 if(l == 0 || (l->lexval == Tid && l->v->set == 0))
26 if(syren == 0 && !quiet) {
27 print("Symbol renames:\n");
31 memmove(buf+1, buf, i);
34 if(renamed > 5 && !quiet) {
35 print("Too many renames; must be X source!\n");
40 print("\t%s=%s %c/%llux\n", s->name, buf, s->type, s->value);
55 List *list, **tail, *l2, *tl;
61 for(i = 0; i < n; i++) {
75 if(strlen(s->name) >= sizeof(buf)-6){
77 print("Symbol name too long: %s\n", s->name);
94 /* Enter as list of { name, type, value } */
97 list->string = strnode(buf);
99 list->next = al(TINT);
102 list->ival = s->type;
103 list->next = al(TINT);
105 list->fmt = l->v->fmt;
110 l = mkvar("symbols");
115 print("no symbol information\n");
126 if(mach->szaddr == 8){
128 fsize['a'] = fsize[afmt];
129 fsize['A'] = fsize[afmt];
132 l = mkvar("registers");
139 for(r = mach->reglist; r->rname; r++) {
148 li->string = strnode(r->rname);
157 l = mkvar("bpinst"); /* Breakpoint text */
162 v->string = gmalloc(sizeof(String));
163 v->string->len = machdata->bpsize;
164 v->string->string = gmalloc(machdata->bpsize);
165 memmove(v->string->string, machdata->bpinst, machdata->bpsize);
181 l = mkvar("pid"); /* Current process */
188 mkvar("notes"); /* Pending notes */
190 l = mkvar("proclist"); /* Attached processes */
195 rget(Map *map, char *reg)
204 fatal("rget: %s\n", reg);
208 ret = get4(map, s->v->ival, &x);
215 ret = get8(map, s->v->ival, &v);
219 error("can't get register %s: %r", reg);
224 strnodlen(char *name, int len)
228 s = gmalloc(sizeof(String)+len+1);
229 s->string = (char*)s+sizeof(String);
232 memmove(s->string, name, len);
233 s->string[len] = '\0';
244 return strnodlen(name, strlen(name));
255 for(len = 0; *p; p++)
260 s = gmalloc(sizeof(String)+len);
261 s->string = (char*)s+sizeof(String);
263 memmove(s->string, name, len);
272 stradd(String *l, String *r)
278 s = gmalloc(sizeof(String)+len+1);
282 s->string = (char*)s+sizeof(String);
283 memmove(s->string, l->string, l->len);
284 memmove(s->string+l->len, r->string, r->len);
285 s->string[s->len] = 0;
290 straddrune(String *l, Rune r)
295 len = l->len+runelen(r);
296 s = gmalloc(sizeof(String)+len+1);
300 s->string = (char*)s+sizeof(String);
301 memmove(s->string, l->string, l->len);
302 runetochar(s->string+l->len, &r);
303 s->string[s->len] = 0;
308 scmp(String *sr, String *sl)
310 if(sr->len != sl->len)
313 if(memcmp(sr->string, sl->string, sl->len))