On Wed, Jan 18, 2017 at 6:55 PM, Cholerae Hu <cholerae...@gmail.com> wrote: > I'm trying to play with go:linkname, and I wrote a demo for this. > > directory structure: > > [test]$ tree > . > ├── main.go > ├── pri > │ └── a.go > └── pub > ├── issue15006.s > └── b.go > > a.go: > > package pri > > > import ( > "fmt" > ) > func rua() int64 { > fmt.Println("rua in pri") > return 1 > } > > b.go: > > package pub > > > import ( > "unsafe" > ) > > > var _ = unsafe.Sizeof(0) > > > //go:noescape > //go:linkname rua test/pri.rua > func rua() int64 > > > func Rua() int64 { > return rua() > } > > main.go: > > package main > > > import ( > "test/pub" > ) > > > func main() { > println(pub.Rua()) > } > > issue15006.s is a workaround for issue 15006 and it's totally empty. > > Than I ran `go run main.go` and got an error: > > # command-line-arguments > test/pub.Rua: test/pri.rua: not defined > test/pub.Rua: undefined: test/pri.rua > > So what's wrong with this demo?
Nothing in your program imports test/pri. go:linkname only changes the name used for a symbol. It doesn't cause a package to be imported. Ian -- You received this message because you are subscribed to the Google Groups "golang-nuts" group. To unsubscribe from this group and stop receiving emails from it, send an email to golang-nuts+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.