diff options
author | Russ Cox <rsc@golang.org> | 2014-09-24 16:53:47 -0400 |
---|---|---|
committer | Russ Cox <rsc@golang.org> | 2014-09-24 16:53:47 -0400 |
commit | 8ca4b32a4ef76cacf6ac5a1ae0e2a1a1113490ee (patch) | |
tree | f89bec9aa5ad22ab6103cf5f557aa12fc347a2f4 /src/debug/dwarf | |
parent | 9161f68e615a7a7fd2297f010f48c93112593d32 (diff) | |
download | go-8ca4b32a4ef76cacf6ac5a1ae0e2a1a1113490ee.tar.gz |
debug/dwarf: correct name for clang-generated complex type
Fixes issue 8694.
LGTM=iant
R=iant
CC=golang-codereviews
https://codereview.appspot.com/143570043
Diffstat (limited to 'src/debug/dwarf')
-rw-r--r-- | src/debug/dwarf/type.go | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/src/debug/dwarf/type.go b/src/debug/dwarf/type.go index fa40b2bef..6986b19e7 100644 --- a/src/debug/dwarf/type.go +++ b/src/debug/dwarf/type.go @@ -431,6 +431,17 @@ func (d *Data) readType(name string, r typeReader, off Offset, typeCache map[Off typ = new(BoolType) case encComplexFloat: typ = new(ComplexType) + if name == "complex" { + // clang writes out 'complex' instead of 'complex float' or 'complex double'. + // clang also writes out a byte size that we can use to distinguish. + // See issue 8694. + switch byteSize, _ := e.Val(AttrByteSize).(int64); byteSize { + case 8: + name = "complex float" + case 16: + name = "complex double" + } + } case encFloat: typ = new(FloatType) case encSigned: |