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