aboutsummaryrefslogtreecommitdiff
path: root/src/pkg/debug
diff options
context:
space:
mode:
authorDerek Parker <parkerderek86@gmail.com>2014-08-06 12:11:37 -0700
committerBrad Fitzpatrick <bradfitz@golang.org>2014-08-06 12:11:37 -0700
commitc0ccf6f314a1658e148d1aae4db5ac2be249fbe8 (patch)
treeccd6c6106d01e2329a052085b0ff1c4025ea3828 /src/pkg/debug
parent059f93be8a6362e7f53bef0d96a2f3a1315ac25b (diff)
downloadgo-c0ccf6f314a1658e148d1aae4db5ac2be249fbe8.tar.xz
debug/dwarf: fix Reader panic on DW_TAG_unspecified_type
The linker currently produces the DWARF 3 DW_TAG_unspecified_type tag, however the Reader in debug/dwarf will panic whenever that tag is encountered. Fixes #8437. LGTM=rsc R=golang-codereviews, bradfitz, iant, rsc CC=golang-codereviews https://golang.org/cl/117280043
Diffstat (limited to 'src/pkg/debug')
-rw-r--r--src/pkg/debug/dwarf/type.go14
1 files changed, 14 insertions, 0 deletions
diff --git a/src/pkg/debug/dwarf/type.go b/src/pkg/debug/dwarf/type.go
index 7b5f1cf7b9..e59737b0a4 100644
--- a/src/pkg/debug/dwarf/type.go
+++ b/src/pkg/debug/dwarf/type.go
@@ -88,6 +88,11 @@ type AddrType struct {
BasicType
}
+// A UnspecifiedType represents implicit, unknown, ambiguous or nonexistent type.
+type UnspecifiedType struct {
+ BasicType
+}
+
// qualifiers
// A QualType represents a type that has the C/C++ "const", "restrict", or "volatile" qualifier.
@@ -630,6 +635,15 @@ func (d *Data) readType(name string, r typeReader, off Offset, typeCache map[Off
typeCache[off] = t
t.Name, _ = e.Val(AttrName).(string)
t.Type = typeOf(e)
+
+ case TagUnspecifiedType:
+ // Unspecified type (DWARF v3 ยง5.2)
+ // Attributes:
+ // AttrName: name
+ t := new(UnspecifiedType)
+ typ = t
+ typeCache[off] = t
+ t.Name, _ = e.Val(AttrName).(string)
}
if err != nil {