aboutsummaryrefslogtreecommitdiff
path: root/libgo/go/runtime/crash_cgo_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'libgo/go/runtime/crash_cgo_test.go')
-rw-r--r--libgo/go/runtime/crash_cgo_test.go23
1 files changed, 22 insertions, 1 deletions
diff --git a/libgo/go/runtime/crash_cgo_test.go b/libgo/go/runtime/crash_cgo_test.go
index 64a7c08..b0198ff 100644
--- a/libgo/go/runtime/crash_cgo_test.go
+++ b/libgo/go/runtime/crash_cgo_test.go
@@ -154,7 +154,7 @@ func TestCgoExecSignalMask(t *testing.T) {
case "windows", "plan9":
t.Skipf("skipping signal mask test on %s", runtime.GOOS)
}
- got := runTestProg(t, "testprogcgo", "CgoExecSignalMask")
+ got := runTestProg(t, "testprogcgo", "CgoExecSignalMask", "GOTRACEBACK=system")
want := "OK\n"
if got != want {
t.Errorf("expected %q, got %v", want, got)
@@ -257,6 +257,27 @@ func TestCgoCrashTraceback(t *testing.T) {
}
}
+func TestCgoCrashTracebackGo(t *testing.T) {
+ t.Parallel()
+ switch platform := runtime.GOOS + "/" + runtime.GOARCH; platform {
+ case "darwin/amd64":
+ case "linux/amd64":
+ case "linux/ppc64le":
+ default:
+ t.Skipf("not yet supported on %s", platform)
+ }
+ if runtime.Compiler == "gccgo" {
+ t.Skip("gccgo does not have SetCgoTraceback")
+ }
+ got := runTestProg(t, "testprogcgo", "CrashTracebackGo")
+ for i := 1; i <= 3; i++ {
+ want := fmt.Sprintf("main.h%d", i)
+ if !strings.Contains(got, want) {
+ t.Errorf("missing %s", want)
+ }
+ }
+}
+
func TestCgoTracebackContext(t *testing.T) {
t.Parallel()
if runtime.Compiler == "gccgo" {