]> Cypherpunks repositories - gostls13.git/commit
cmd/compile: when marking REFLECTMETHOD, check for reflect package itself
authorCherry Zhang <cherryyz@google.com>
Sat, 18 Apr 2020 21:47:54 +0000 (17:47 -0400)
committerCherry Zhang <cherryyz@google.com>
Sun, 19 Apr 2020 03:12:32 +0000 (03:12 +0000)
commita32262d4625e6f54cedd765e4807c215d1deb992
tree789bc89d5ce656548b8efd0d904babf290947a99
parentde2318e3c68530cd3ff6d3a1d378239598301fb0
cmd/compile: when marking REFLECTMETHOD, check for reflect package itself

reflect.Type.Method (and MethodByName) can be used to obtain a
reference of a method by reflection. The linker needs to know
if reflect.Type.Method is called, and retain all exported methods
accordingly. This is handled by the compiler, which marks the
caller of reflect.Type.Method with REFLECTMETHOD attribute. The
current code failed to handle the reflect package itself, so the
method wrapper reflect.Type.Method is not marked. This CL fixes
it.

Fixes #38515.

Change-Id: I12904d23eda664cf1794bc3676152f3218fb762b
Reviewed-on: https://go-review.googlesource.com/c/go/+/228880
Run-TryBot: Cherry Zhang <cherryyz@google.com>
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
src/cmd/compile/internal/gc/walk.go
test/reflectmethod5.go [new file with mode: 0644]
test/reflectmethod6.go [new file with mode: 0644]