summaryrefslogtreecommitdiff
path: root/src/debug
diff options
context:
space:
mode:
authorRuss Cox <rsc@golang.org>2014-09-24 16:53:47 -0400
committerRuss Cox <rsc@golang.org>2014-09-24 16:53:47 -0400
commit8ca4b32a4ef76cacf6ac5a1ae0e2a1a1113490ee (patch)
treef89bec9aa5ad22ab6103cf5f557aa12fc347a2f4 /src/debug
parent9161f68e615a7a7fd2297f010f48c93112593d32 (diff)
downloadgo-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')
-rw-r--r--src/debug/dwarf/type.go11
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: