need this
diff --git a/src/cmd/acidtypes/sym.c b/src/cmd/acidtypes/sym.c
new file mode 100644
index 0000000..7250ed4
--- /dev/null
+++ b/src/cmd/acidtypes/sym.c
@@ -0,0 +1,50 @@
+#include <u.h>
+#include <errno.h>
+#include <libc.h>
+#include <bio.h>
+#include <mach.h>
+#include <stabs.h>
+#include <ctype.h>
+#include "dat.h"
+
+Sym *symbols;
+Sym **lsym;
+
+void
+addsymx(char *fn, char *name, Type *type)
+{
+	Sym *s;
+
+	s = emalloc(sizeof *s);
+	s->fn = fn;
+	s->name = name;
+	s->type = type;
+	if(lsym == nil)
+		lsym = &symbols;
+	*lsym = s;
+	lsym = &s->next;
+}
+
+void
+dumpsyms(Biobuf *b)
+{
+	Sym *s;
+	Type *t;
+
+	for(s=symbols; s; s=s->next){
+		t = s->type;
+		t = defer(t);
+		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));
+	}
+
+	symbols = nil;
+	lsym = &symbols;
+}