diff options
Diffstat (limited to 'misc/cgo/testplugin/testdata/issue44956/main.go')
-rw-r--r-- | misc/cgo/testplugin/testdata/issue44956/main.go | 47 |
1 files changed, 0 insertions, 47 deletions
diff --git a/misc/cgo/testplugin/testdata/issue44956/main.go b/misc/cgo/testplugin/testdata/issue44956/main.go deleted file mode 100644 index 287a60585e..0000000000 --- a/misc/cgo/testplugin/testdata/issue44956/main.go +++ /dev/null @@ -1,47 +0,0 @@ -// 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") - } -} |