[Bug go/93866] New: [debug] Methods with pointer receiver incorrectly named
vries at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Fri Feb 21 09:52:00 GMT 2020
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=93866
Bug ID: 93866
Summary: [debug] Methods with pointer receiver incorrectly
named
Product: gcc
Version: 10.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: go
Assignee: ian at airs dot com
Reporter: vries at gcc dot gnu.org
CC: cmang at google dot com
Target Milestone: ---
Consider methods.go from the gdb testsuite:
...
$ cat gdb/testsuite/gdb.go/methods.go
package main
import "fmt"
type T struct { i int }
func (t T) Foo () {
fmt.Println (t.i)
}
func (t *T) Bar () {
fmt.Println (t.i)
}
func main () {
fmt.Println ("Shall we?")
var t T
t.Foo ()
var pt = new (T)
pt.Bar ()
}
...
With go1.11.13, we have:
...
$ nm methods | egrep "\.Bar"
000000000049c750 T main.(*T).Bar
...
and:
...
$ readelf -wi methods | egrep "\.Bar"
<6c49b> DW_AT_name : main.(*T).Bar
...
In contrast, with gccgo-10, we have:
...
$ nm methods | egrep "\.Bar"
0000000000402c8d T main.T.Bar
...
and:
...
$ readelf -wi methods | egrep "\.Bar"
<1df4> DW_AT_name : main.Bar..1main.T
<1dfb> DW_AT_linkage_name: main.T.Bar
...
At https://golang.org/doc/gdb, we read:
...
Methods must be qualified with the name of their receiver types. For example,
the *Regexp type’s String method is known as 'regexp.(*Regexp).String'.
...
That sounds like what go1.11.13 emits is correct, and what gccgo-10 emits is
not.
More information about the Gcc-bugs
mailing list