libgo: update to Go1.10rc1
Reviewed-on: https://go-review.googlesource.com/90295 From-SVN: r257127
This commit is contained in:
parent
d779dffc4b
commit
f6acbd0805
4 changed files with 62 additions and 0 deletions
3
libgo/go/cmd/go/testdata/src/coverdot1/p.go
vendored
Normal file
3
libgo/go/cmd/go/testdata/src/coverdot1/p.go
vendored
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
package coverdot1
|
||||||
|
|
||||||
|
func F() {}
|
5
libgo/go/cmd/go/testdata/src/coverdot2/p.go
vendored
Normal file
5
libgo/go/cmd/go/testdata/src/coverdot2/p.go
vendored
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
package coverdot2
|
||||||
|
|
||||||
|
import . "coverdot1"
|
||||||
|
|
||||||
|
func G() { F() }
|
7
libgo/go/cmd/go/testdata/src/coverdot2/p_test.go
vendored
Normal file
7
libgo/go/cmd/go/testdata/src/coverdot2/p_test.go
vendored
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
package coverdot2
|
||||||
|
|
||||||
|
import "testing"
|
||||||
|
|
||||||
|
func TestG(t *testing.T) {
|
||||||
|
G()
|
||||||
|
}
|
47
libgo/go/runtime/testdata/testprog/badtraceback.go
vendored
Normal file
47
libgo/go/runtime/testdata/testprog/badtraceback.go
vendored
Normal file
|
@ -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")
|
||||||
|
}
|
Loading…
Add table
Reference in a new issue