diff options
author | Ian Lance Taylor <ian@gcc.gnu.org> | 2018-01-27 23:45:46 +0000 |
---|---|---|
committer | Ian Lance Taylor <ian@gcc.gnu.org> | 2018-01-27 23:45:46 +0000 |
commit | f6acbd0805c24bb68ca2c88be26e770995cb4fa2 (patch) | |
tree | 4ffe6d6bcf7b916038593a991f465d2277985386 /libgo | |
parent | d779dffc4b6ec69cb51b426f779eca4bc37fd063 (diff) | |
download | gcc-f6acbd0805c24bb68ca2c88be26e770995cb4fa2.zip gcc-f6acbd0805c24bb68ca2c88be26e770995cb4fa2.tar.gz gcc-f6acbd0805c24bb68ca2c88be26e770995cb4fa2.tar.bz2 |
libgo: update to Go1.10rc1
Reviewed-on: https://go-review.googlesource.com/90295
From-SVN: r257127
Diffstat (limited to 'libgo')
-rw-r--r-- | libgo/go/cmd/go/testdata/src/coverdot1/p.go | 3 | ||||
-rw-r--r-- | libgo/go/cmd/go/testdata/src/coverdot2/p.go | 5 | ||||
-rw-r--r-- | libgo/go/cmd/go/testdata/src/coverdot2/p_test.go | 7 | ||||
-rw-r--r-- | libgo/go/runtime/testdata/testprog/badtraceback.go | 47 |
4 files changed, 62 insertions, 0 deletions
diff --git a/libgo/go/cmd/go/testdata/src/coverdot1/p.go b/libgo/go/cmd/go/testdata/src/coverdot1/p.go new file mode 100644 index 0000000..cda364f --- /dev/null +++ b/libgo/go/cmd/go/testdata/src/coverdot1/p.go @@ -0,0 +1,3 @@ +package coverdot1 + +func F() {} diff --git a/libgo/go/cmd/go/testdata/src/coverdot2/p.go b/libgo/go/cmd/go/testdata/src/coverdot2/p.go new file mode 100644 index 0000000..80f79ae --- /dev/null +++ b/libgo/go/cmd/go/testdata/src/coverdot2/p.go @@ -0,0 +1,5 @@ +package coverdot2 + +import . "coverdot1" + +func G() { F() } diff --git a/libgo/go/cmd/go/testdata/src/coverdot2/p_test.go b/libgo/go/cmd/go/testdata/src/coverdot2/p_test.go new file mode 100644 index 0000000..da66e3e --- /dev/null +++ b/libgo/go/cmd/go/testdata/src/coverdot2/p_test.go @@ -0,0 +1,7 @@ +package coverdot2 + +import "testing" + +func TestG(t *testing.T) { + G() +} diff --git a/libgo/go/runtime/testdata/testprog/badtraceback.go b/libgo/go/runtime/testdata/testprog/badtraceback.go new file mode 100644 index 0000000..d558adc --- /dev/null +++ b/libgo/go/runtime/testdata/testprog/badtraceback.go @@ -0,0 +1,47 @@ +// Copyright 2018 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 ( + "runtime" + "runtime/debug" + "unsafe" +) + +func init() { + register("BadTraceback", BadTraceback) +} + +func BadTraceback() { + // Disable GC to prevent traceback at unexpected time. + debug.SetGCPercent(-1) + + // Run badLR1 on its own stack to minimize the stack size and + // exercise the stack bounds logic in the hex dump. + go badLR1() + select {} +} + +//go:noinline +func badLR1() { + // We need two frames on LR machines because we'll smash this + // frame's saved LR. + badLR2(0) +} + +//go:noinline +func badLR2(arg int) { + // Smash the return PC or saved LR. + lrOff := unsafe.Sizeof(uintptr(0)) + if runtime.GOARCH == "ppc64" || runtime.GOARCH == "ppc64le" { + lrOff = 32 // FIXED_FRAME or sys.MinFrameSize + } + lrPtr := (*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&arg)) - lrOff)) + *lrPtr = 0xbad + + // Print a backtrace. This should include diagnostics for the + // bad return PC and a hex dump. + panic("backtrace") +} |