diff options
| author | Ian Lance Taylor <iant@golang.org> | 2017-07-21 16:37:40 -0700 |
|---|---|---|
| committer | Ian Lance Taylor <iant@golang.org> | 2017-07-24 18:05:00 +0000 |
| commit | ee392ac10c7bed0ef1984dbb421491ca7b18e190 (patch) | |
| tree | 811aa2ddb54f2ce59fed4b9b4b3344e9a38cf4e0 /src/cmd | |
| parent | 6bb88fc280518150e31bf12744596467796a4528 (diff) | |
| download | go-ee392ac10c7bed0ef1984dbb421491ca7b18e190.tar.xz | |
cmd/compile: consider exported flag in namedata
It is possible to have an unexported name with a nil package,
for an embedded field whose type is a pointer to an unexported type.
We must encode that fact in the type..namedata symbol name,
to avoid incorrectly merging an unexported name with an exported name.
Fixes #21120
Change-Id: I2e3879d77fa15c05ad92e0bf8e55f74082db5111
Reviewed-on: https://go-review.googlesource.com/50710
Run-TryBot: Ian Lance Taylor <iant@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: David Crawshaw <crawshaw@golang.org>
Diffstat (limited to 'src/cmd')
| -rw-r--r-- | src/cmd/compile/internal/gc/reflect.go | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/src/cmd/compile/internal/gc/reflect.go b/src/cmd/compile/internal/gc/reflect.go index decd3beda7..91e6f46804 100644 --- a/src/cmd/compile/internal/gc/reflect.go +++ b/src/cmd/compile/internal/gc/reflect.go @@ -582,7 +582,11 @@ func dname(name, tag string, pkg *types.Pkg, exported bool) *obj.LSym { sname += "-noname-unexported." + tag } } else { - sname += name + "." + tag + if exported { + sname += name + "." + tag + } else { + sname += name + "-" + tag + } } } else { sname = fmt.Sprintf(`%s"".%d`, sname, dnameCount) |
