libgo: update to Go 1.10.2 release
[official-gcc.git] / libgo / misc / cgo / testplugin / test.bash
blobdf38204a4e9512353a138dc429acb17110b7485c
1 #!/usr/bin/env bash
2 # Copyright 2016 The Go Authors. All rights reserved.
3 # Use of this source code is governed by a BSD-style
4 # license that can be found in the LICENSE file.
6 set -e
8 if [ ! -f src/host/host.go ]; then
9 cwd=$(pwd)
10 echo "misc/cgo/testplugin/test.bash is running in $cwd" 1>&2
11 exit 1
14 goos=$(go env GOOS)
15 goarch=$(go env GOARCH)
17 function cleanup() {
18 rm -f plugin*.so unnamed*.so iface*.so issue*
19 rm -rf host pkg sub iface
21 trap cleanup EXIT
23 rm -rf pkg sub
24 mkdir sub
26 GOPATH=$(pwd) go build -i -gcflags "$GO_GCFLAGS" -buildmode=plugin plugin1
27 GOPATH=$(pwd) go build -gcflags "$GO_GCFLAGS" -buildmode=plugin plugin2
28 cp plugin2.so plugin2-dup.so
29 GOPATH=$(pwd)/altpath go build -gcflags "$GO_GCFLAGS" -buildmode=plugin plugin-mismatch
30 GOPATH=$(pwd) go build -gcflags "$GO_GCFLAGS" -buildmode=plugin -o=sub/plugin1.so sub/plugin1
31 GOPATH=$(pwd) go build -gcflags "$GO_GCFLAGS" -buildmode=plugin -o=unnamed1.so unnamed1/main.go
32 GOPATH=$(pwd) go build -gcflags "$GO_GCFLAGS" -buildmode=plugin -o=unnamed2.so unnamed2/main.go
33 GOPATH=$(pwd) go build -gcflags "$GO_GCFLAGS" host
35 LD_LIBRARY_PATH=$(pwd) ./host
37 # Test that types and itabs get properly uniqified.
38 GOPATH=$(pwd) go build -gcflags "$GO_GCFLAGS" -buildmode=plugin iface_a
39 GOPATH=$(pwd) go build -gcflags "$GO_GCFLAGS" -buildmode=plugin iface_b
40 GOPATH=$(pwd) go build -gcflags "$GO_GCFLAGS" iface
41 LD_LIBRARY_PATH=$(pwd) ./iface
43 function _timeout() (
44 set -e
45 $2 &
46 p=$!
47 (sleep $1; kill $p 2>/dev/null) &
48 p2=$!
49 wait $p 2>/dev/null
50 kill -0 $p2 2>/dev/null
53 # Test for issue 18676 - make sure we don't add the same itab twice.
54 # The buggy code hangs forever, so use a timeout to check for that.
55 GOPATH=$(pwd) go build -gcflags "$GO_GCFLAGS" -buildmode=plugin -o plugin.so src/issue18676/plugin.go
56 GOPATH=$(pwd) go build -gcflags "$GO_GCFLAGS" -o issue18676 src/issue18676/main.go
57 _timeout 10s ./issue18676
59 # Test for issue 19534 - that we can load a plugin built in a path with non-alpha
60 # characters
61 GOPATH=$(pwd) go build -gcflags "$GO_GCFLAGS" -buildmode=plugin -ldflags='-pluginpath=issue.19534' -o plugin.so src/issue19534/plugin.go
62 GOPATH=$(pwd) go build -gcflags "$GO_GCFLAGS" -o issue19534 src/issue19534/main.go
63 ./issue19534
65 # Test for issue 18584
66 GOPATH=$(pwd) go build -gcflags "$GO_GCFLAGS" -buildmode=plugin -o plugin.so src/issue18584/plugin.go
67 GOPATH=$(pwd) go build -gcflags "$GO_GCFLAGS" -o issue18584 src/issue18584/main.go
68 ./issue18584
70 # Test for issue 19418
71 GOPATH=$(pwd) go build -gcflags "$GO_GCFLAGS" -buildmode=plugin "-ldflags=-X main.Val=linkstr" -o plugin.so src/issue19418/plugin.go
72 GOPATH=$(pwd) go build -gcflags "$GO_GCFLAGS" -o issue19418 src/issue19418/main.go
73 ./issue19418
75 # Test for issue 19529
76 GOPATH=$(pwd) go build -gcflags "$GO_GCFLAGS" -buildmode=plugin -o plugin.so src/issue19529/plugin.go
78 # Test for issue 22175
79 GOPATH=$(pwd) go build -gcflags "$GO_GCFLAGS" -buildmode=plugin -o issue22175_plugin1.so src/issue22175/plugin1.go
80 GOPATH=$(pwd) go build -gcflags "$GO_GCFLAGS" -buildmode=plugin -o issue22175_plugin2.so src/issue22175/plugin2.go
81 GOPATH=$(pwd) go build -gcflags "$GO_GCFLAGS" -o issue22175 src/issue22175/main.go
82 ./issue22175
84 # Test for issue 22295
85 GOPATH=$(pwd) go build -gcflags "$GO_GCFLAGS" -buildmode=plugin -o issue.22295.so issue22295.pkg
86 GOPATH=$(pwd) go build -gcflags "$GO_GCFLAGS" -o issue22295 src/issue22295.pkg/main.go
87 ./issue22295
89 # Test for issue 24351
90 GOPATH=$(pwd) go build -gcflags "$GO_GCFLAGS" -buildmode=plugin -o issue24351.so src/issue24351/plugin.go
91 GOPATH=$(pwd) go build -gcflags "$GO_GCFLAGS" -o issue24351 src/issue24351/main.go
92 ./issue24351