aboutsummaryrefslogtreecommitdiff
path: root/src/cmd/acidtypes/stabs.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/cmd/acidtypes/stabs.c')
-rw-r--r--src/cmd/acidtypes/stabs.c46
1 files changed, 4 insertions, 42 deletions
diff --git a/src/cmd/acidtypes/stabs.c b/src/cmd/acidtypes/stabs.c
index a5f3738c..90bd1de1 100644
--- a/src/cmd/acidtypes/stabs.c
+++ b/src/cmd/acidtypes/stabs.c
@@ -17,15 +17,6 @@ static Type *parsedefn(char *p, Type *t, char **pp);
static int parsebound(char**);
static vlong parsebigint(char**);
-typedef struct Sym Sym;
-struct Sym
-{
- char *fn;
- char *name;
- Type *type;
- Sym *next;
-};
-
typedef struct Ftypes Ftypes;
struct Ftypes
{
@@ -38,18 +29,6 @@ struct Ftypes
Ftypes *fstack;
Ftypes *allftypes;
-static Sym*
-mksym(char *fn, char *name, Type *type)
-{
- Sym *s;
-
- s = emalloc(sizeof *s);
- s->fn = fn;
- s->name = name;
- s->type = type;
- return s;
-}
-
static char*
estrndup(char *s, int n)
{
@@ -626,15 +605,11 @@ stabs2acid(Stab *stabs, Biobuf *b)
Ftypes *f;
Type *t, *tt;
StabSym sym;
- Sym *symbols, *s;
- Sym **lsym;
dir = nil;
file = nil;
fno = 0;
fn = nil;
- symbols = nil;
- lsym = &symbols;
for(i=0; stabsym(stabs, i, &sym)>=0; i++){
switch(sym.type){
case N_SO:
@@ -737,8 +712,7 @@ stabs2acid(Stab *stabs, Biobuf *b)
if(c != 't' && c != 'T')
switch(sym.type){
case N_GSYM:
- *lsym = mksym(nil, name, t);
- lsym = &(*lsym)->next;
+ addsymx(nil, name, t);
break;
case N_FUN:
fn = name;
@@ -748,8 +722,7 @@ stabs2acid(Stab *stabs, Biobuf *b)
case N_LCSYM:
case N_STSYM:
case N_RSYM:
- *lsym = mksym(fn, name, t);
- lsym = &(*lsym)->next;
+ addsymx(fn, name, t);
break;
}
break;
@@ -757,19 +730,8 @@ stabs2acid(Stab *stabs, Biobuf *b)
}
printtypes(b);
-
- for(s=symbols; s; s=s->next){
- t = s->type;
- if(t->ty == Pointer){
- t = t->sub;
- if(t && t->equiv)
- t = t->equiv;
- }
- if(t == nil || t->ty != Aggr)
- continue;
- Bprint(b, "complex %s %s%s%s;\n", nameof(t, 1),
- s->fn ? fixname(s->fn) : "", s->fn ? ":" : "", fixname(s->name));
- }
+ dumpsyms(b);
+ freetypes();
return 0;
}