diff --git a/src/cmd/6g/gsubr.c b/src/cmd/6g/gsubr.c
index 20654fa..ac807c6 100644
--- a/src/cmd/6g/gsubr.c
+++ b/src/cmd/6g/gsubr.c
@@ -322,7 +322,11 @@
 
 	s = t->sym;
 	if(s == S)
-		fatal("nodtypesig: no sym for type");
+		fatal("signame: no sym for type");
+
+	// mark it as used so signature will be generated
+	if(s->local == 1)
+		s->local = 2;
 
 	snprint(namebuf, sizeof(namebuf), "%s_%s", e, s->name);
 	s = pkglookup(namebuf, s->package);
diff --git a/src/cmd/6g/obj.c b/src/cmd/6g/obj.c
index 709ece3..f1f86ee 100644
--- a/src/cmd/6g/obj.c
+++ b/src/cmd/6g/obj.c
@@ -459,7 +459,7 @@
 void
 dumpsignatures(void)
 {
-	Dcl *d;
+	Dcl *d, *x;
 	Type *t, *f;
 	Sym *s1, *s;
 	int et, o, wi, ot;
@@ -468,6 +468,44 @@
 	Prog *p;
 	char *sp;
 
+	// copy externdcl list to signatlist
+	for(d=externdcl; d!=D; d=d->forw) {
+		if(d->op != OTYPE)
+			continue;
+
+		t = d->dtype;
+		if(t == T)
+			continue;
+
+		et = t->etype;
+		if(et != TSTRUCT && et != TINTER)
+			continue;
+
+		s = d->dsym;
+		if(s == S)
+			continue;
+
+		if(s->name[0] == '_')
+			continue;
+
+		// if it was imported
+		if(s->local == 0)
+			continue;
+
+// until i can figure out
+// when/if it is used, do them all
+//		// if not used and not exported
+//		if(s->local == 1 && !s->export)
+//			continue;
+
+		x = mal(sizeof(*d));
+		x->op = OTYPE;
+		x->dsym = s;
+		x->dtype = t;
+		x->forw = signatlist;
+		signatlist = x;
+	}
+
 	/*
 	 * put all the names into a linked
 	 * list so that it may be generated in sorted order.
@@ -505,7 +543,7 @@
 
 	wi = types[TINT32]->width;
 
-	for(d=externdcl; d!=D; d=d->forw) {
+	for(d=signatlist; d!=D; d=d->forw) {
 		if(d->op != OTYPE)
 			continue;
 
diff --git a/src/cmd/gc/dcl.c b/src/cmd/gc/dcl.c
index 54c437d..01b4902 100644
--- a/src/cmd/gc/dcl.c
+++ b/src/cmd/gc/dcl.c
@@ -52,6 +52,7 @@
 	}
 	if(exportadj)
 		exportsym(n->sym);
+	n->sym->local = 1;
 	addtyp(n, t, dclcontext);
 }
 
diff --git a/src/cmd/gc/go.h b/src/cmd/gc/go.h
index 11d8b56..b7019bc 100644
--- a/src/cmd/gc/go.h
+++ b/src/cmd/gc/go.h
@@ -195,8 +195,9 @@
 
 	uchar	undef;		// a diagnostic has been generated
 	uchar	export;		// marked as export
-	uchar	exported;	// has been exported
+	uchar	exported;	// exported
 	uchar	sym;		// huffman encoding in object file
+	uchar	local;		// created in this file
 
 	char*	opackage;	// original package name
 	char*	package;	// package name
@@ -429,6 +430,7 @@
 EXTERN	Dcl*	paramdcl;
 EXTERN	Dcl*	externdcl;
 EXTERN	Dcl*	exportlist;
+EXTERN	Dcl*	signatlist;
 EXTERN	int	dclcontext;	// PEXTERN/PAUTO
 EXTERN	int	importflag;
 EXTERN	int	inimportsys;
diff --git a/src/cmd/gc/walk.c b/src/cmd/gc/walk.c
index c317fbd..8612f6d 100644
--- a/src/cmd/gc/walk.c
+++ b/src/cmd/gc/walk.c
@@ -1970,8 +1970,6 @@
 			goto shape;
 
 		// mapassign1(hmap *map[any-1]any-2, key any-3, val any-4);
-
-//dump("assign1", n);
 		if(n->left->op != OINDEX)
 			goto shape;
 
@@ -1999,8 +1997,6 @@
 
 	assign2:
 		// mapassign2(hmap *map[any]any, key any, val any, pres bool);
-
-//dump("assign2", n);
 		if(n->left->op != OINDEX)
 			goto shape;
 
