mirror of
https://github.com/golang/go
synced 2024-11-17 23:44:48 -07:00
81a61a96c9
We already do this for shared libraries. Do it for plugins also. Suggestions on how to test this would be welcome. I'd like to get this in for 1.8. It could lead to mysterious hangs when using plugins. Fixes #18676 Change-Id: I03209b096149090b9ba171c834c5e59087ed0f92 Reviewed-on: https://go-review.googlesource.com/35117 Reviewed-by: David Crawshaw <crawshaw@golang.org> Reviewed-by: Ian Lance Taylor <iant@golang.org> Reviewed-by: Michael Hudson-Doyle <michael.hudson@canonical.com>
47 lines
1.4 KiB
Bash
Executable File
47 lines
1.4 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# Copyright 2016 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.
|
|
|
|
set -e
|
|
|
|
if [ ! -f src/host/host.go ]; then
|
|
cwd=$(pwd)
|
|
echo "misc/cgo/testplugin/test.bash is running in $cwd" 1>&2
|
|
exit 1
|
|
fi
|
|
|
|
goos=$(go env GOOS)
|
|
goarch=$(go env GOARCH)
|
|
|
|
function cleanup() {
|
|
rm -f plugin*.so unnamed*.so iface*.so
|
|
rm -rf host pkg sub iface issue18676
|
|
}
|
|
trap cleanup EXIT
|
|
|
|
rm -rf pkg sub
|
|
mkdir sub
|
|
|
|
GOPATH=$(pwd) go build -buildmode=plugin plugin1
|
|
GOPATH=$(pwd) go build -buildmode=plugin plugin2
|
|
GOPATH=$(pwd)/altpath go build -buildmode=plugin plugin-mismatch
|
|
GOPATH=$(pwd) go build -buildmode=plugin -o=sub/plugin1.so sub/plugin1
|
|
GOPATH=$(pwd) go build -buildmode=plugin unnamed1.go
|
|
GOPATH=$(pwd) go build -buildmode=plugin unnamed2.go
|
|
GOPATH=$(pwd) go build host
|
|
|
|
LD_LIBRARY_PATH=$(pwd) ./host
|
|
|
|
# Test that types and itabs get properly uniqified.
|
|
GOPATH=$(pwd) go build -buildmode=plugin iface_a
|
|
GOPATH=$(pwd) go build -buildmode=plugin iface_b
|
|
GOPATH=$(pwd) go build iface
|
|
LD_LIBRARY_PATH=$(pwd) ./iface
|
|
|
|
# Test for issue 18676 - make sure we don't add the same itab twice.
|
|
# The buggy code hangs forever, so use a timeout to check for that.
|
|
GOPATH=$(pwd) go build -buildmode=plugin -o plugin.so src/issue18676/plugin.go
|
|
GOPATH=$(pwd) go build -o issue18676 src/issue18676/main.go
|
|
timeout 10s ./issue18676
|