/
/
opt
/
golang
/
1.22.0
/
src
/
cmd
/
cgo
/
internal
/
testplugin
/
testdata
/
issue44956
Server: in-mum-web1112.main-hosting.eu (62.72.28.111)
You: 216.73.216.137
PHP 8.3.16
Dir:
/opt/golang/1.22.0/src/cmd/cgo/internal/testplugin/testdata/issue44956
Edit:
/opt/golang/1.22.0/src/cmd/cgo/internal/testplugin/testdata/issue44956/main.go
// Copyright 2021 The Go Authors. All rights reserved. // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. // Issue 44956: writable static temp is not exported correctly. // In the test below, package base is // // X = &map{...} // // which compiles to // // X = &stmp // static // stmp = makemap(...) // in init function // // plugin1 and plugin2 both import base. plugin1 doesn't use // base.X, so that symbol is deadcoded in plugin1. // // plugin1 is loaded first. base.init runs at that point, which // initialize base.stmp. // // plugin2 is then loaded. base.init already ran, so it doesn't run // again. When base.stmp is not exported, plugin2's base.X points to // its own private base.stmp, which is not initialized, fail. package main import "plugin" func main() { _, err := plugin.Open("issue44956p1.so") if err != nil { panic("FAIL") } p2, err := plugin.Open("issue44956p2.so") if err != nil { panic("FAIL") } f, err := p2.Lookup("F") if err != nil { panic("FAIL") } x := f.(func() *map[int]int)() if x == nil || (*x)[123] != 456 { panic("FAIL") } }
Ukuran: 1.1 KB