diff options
author | Ian Lance Taylor <iant@golang.org> | 2021-02-18 18:54:38 -0800 |
---|---|---|
committer | Ian Lance Taylor <iant@golang.org> | 2021-02-19 12:33:25 -0800 |
commit | 13e6fadd96dc00c611a3d2f26a1a6d7a0a29ea27 (patch) | |
tree | 658d732faec422de82b372ad60e76bc6f1277689 /libgo/misc | |
parent | af027826292351218785f893d1c42fe28ae3ed9f (diff) | |
download | gcc-13e6fadd96dc00c611a3d2f26a1a6d7a0a29ea27.zip gcc-13e6fadd96dc00c611a3d2f26a1a6d7a0a29ea27.tar.gz gcc-13e6fadd96dc00c611a3d2f26a1a6d7a0a29ea27.tar.bz2 |
libgo: update to Go1.16 release
Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/293793
Diffstat (limited to 'libgo/misc')
4 files changed, 54 insertions, 0 deletions
diff --git a/libgo/misc/cgo/testshared/shared_test.go b/libgo/misc/cgo/testshared/shared_test.go index 5e08937..f52391c 100644 --- a/libgo/misc/cgo/testshared/shared_test.go +++ b/libgo/misc/cgo/testshared/shared_test.go @@ -1063,3 +1063,11 @@ func TestGCData(t *testing.T) { goCmd(t, "build", "-linkshared", "./gcdata/main") runWithEnv(t, "running gcdata/main", []string{"GODEBUG=clobberfree=1"}, "./main") } + +// Test that we don't decode type symbols from shared libraries (which has no data, +// causing panic). See issue 44031. +func TestIssue44031(t *testing.T) { + goCmd(t, "install", "-buildmode=shared", "-linkshared", "./issue44031/a") + goCmd(t, "install", "-buildmode=shared", "-linkshared", "./issue44031/b") + goCmd(t, "run", "-linkshared", "./issue44031/main") +} diff --git a/libgo/misc/cgo/testshared/testdata/issue44031/a/a.go b/libgo/misc/cgo/testshared/testdata/issue44031/a/a.go new file mode 100644 index 0000000..48827e6 --- /dev/null +++ b/libgo/misc/cgo/testshared/testdata/issue44031/a/a.go @@ -0,0 +1,9 @@ +// 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. + +package a + +type ATypeWithALoooooongName interface { // a long name, so the type descriptor symbol name is mangled + M() +} diff --git a/libgo/misc/cgo/testshared/testdata/issue44031/b/b.go b/libgo/misc/cgo/testshared/testdata/issue44031/b/b.go new file mode 100644 index 0000000..ad3ebec --- /dev/null +++ b/libgo/misc/cgo/testshared/testdata/issue44031/b/b.go @@ -0,0 +1,17 @@ +// 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. + +package b + +import "testshared/issue44031/a" + +type T int + +func (T) M() {} + +var i = a.ATypeWithALoooooongName(T(0)) + +func F() { + i.M() +} diff --git a/libgo/misc/cgo/testshared/testdata/issue44031/main/main.go b/libgo/misc/cgo/testshared/testdata/issue44031/main/main.go new file mode 100644 index 0000000..47f2e3a --- /dev/null +++ b/libgo/misc/cgo/testshared/testdata/issue44031/main/main.go @@ -0,0 +1,20 @@ +// 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. + +package main + +import "testshared/issue44031/b" + +type t int + +func (t) m() {} + +type i interface{ m() } // test that unexported method is correctly marked + +var v interface{} = t(0) + +func main() { + b.F() + v.(i).m() +} |