Blob


1 #include <u.h>
2 #include <errno.h>
3 #include <libc.h>
4 #include <bio.h>
5 #include <mach.h>
6 #include <stabs.h>
7 #include <ctype.h>
8 #include "dat.h"
10 Sym *symbols;
11 Sym **lsym;
13 void
14 addsymx(char *fn, char *name, Type *type)
15 {
16 Sym *s;
18 s = emalloc(sizeof *s);
19 s->fn = fn;
20 s->name = name;
21 s->type = type;
22 if(lsym == nil)
23 lsym = &symbols;
24 *lsym = s;
25 lsym = &s->next;
26 }
28 void
29 dumpsyms(Biobuf *b)
30 {
31 Sym *s;
32 Type *t;
34 for(s=symbols; s; s=s->next){
35 t = s->type;
36 t = defer(t);
37 if(t->ty == Pointer){
38 t = t->sub;
39 if(t && t->equiv)
40 t = t->equiv;
41 }
42 if(t == nil || t->ty != Aggr)
43 continue;
44 Bprint(b, "complex %B %B%s%B;\n", nameof(t, 1),
45 s->fn ? fixname(s->fn) : "", s->fn ? ":" : "", fixname(s->name));
46 }
48 symbols = nil;
49 lsym = &symbols;
50 }