diff options
| author | Derek Parker <parkerderek86@gmail.com> | 2014-08-06 12:11:37 -0700 |
|---|---|---|
| committer | Brad Fitzpatrick <bradfitz@golang.org> | 2014-08-06 12:11:37 -0700 |
| commit | c0ccf6f314a1658e148d1aae4db5ac2be249fbe8 (patch) | |
| tree | ccd6c6106d01e2329a052085b0ff1c4025ea3828 /src/pkg/debug | |
| parent | 059f93be8a6362e7f53bef0d96a2f3a1315ac25b (diff) | |
| download | go-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.go | 14 |
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 { |
