Save value of AttrName in .Name for all types

The original value of the name attribute is usually better than what the String method reconstructs.

Change-Id: I271af53933c241a25878718f0bf519a1dacf5d9b
Reviewed-on: https://go-review.googlesource.com/23085
Reviewed-by: jcd . <jcd@golang.org>
diff --git a/dwarf/type.go b/dwarf/type.go
index dfe9d6a..ae1a3f3 100644
--- a/dwarf/type.go
+++ b/dwarf/type.go
@@ -444,6 +444,7 @@
 		//	TagSubrangeType or TagEnumerationType giving one dimension.
 		//	dimensions are in left to right order.
 		t := new(ArrayType)
+		t.Name, _ = e.Val(AttrName).(string)
 		t.ReflectKind = getKind(e)
 		typ = t
 		typeCache[off] = t
@@ -592,6 +593,7 @@
 		case TagUnionType:
 			t.Kind = "union"
 		}
+		t.Name, _ = e.Val(AttrName).(string)
 		t.StructName, _ = e.Val(AttrName).(string)
 		t.Incomplete = e.Val(AttrDeclaration) != nil
 		t.Field = make([]*StructField, 0, 8)
@@ -672,6 +674,7 @@
 		// Attributes:
 		//	AttrType: subtype
 		t := new(QualType)
+		t.Name, _ = e.Val(AttrName).(string)
 		t.ReflectKind = getKind(e)
 		typ = t
 		typeCache[off] = t
@@ -700,6 +703,7 @@
 		t.ReflectKind = getKind(e)
 		typ = t
 		typeCache[off] = t
+		t.Name, _ = e.Val(AttrName).(string)
 		t.EnumName, _ = e.Val(AttrName).(string)
 		t.Val = make([]*EnumValue, 0, 8)
 		for kid := next(); kid != nil; kid = next() {
@@ -724,6 +728,7 @@
 		//	AttrType: subtype [not required!  void* has no AttrType]
 		//	AttrAddrClass: address class [ignored]
 		t := new(PtrType)
+		t.Name, _ = e.Val(AttrName).(string)
 		t.ReflectKind = getKind(e)
 		typ = t
 		typeCache[off] = t
@@ -744,6 +749,7 @@
 		//		AttrType: type of parameter
 		//	TagUnspecifiedParameter: final ...
 		t := new(FuncType)
+		t.Name, _ = e.Val(AttrName).(string)
 		t.ReflectKind = getKind(e)
 		typ = t
 		typeCache[off] = t