]> Cypherpunks repositories - gostls13.git/commitdiff
runtime/testdata/testprogcgo: refactor CrashTraceback
authorAustin Clements <austin@google.com>
Fri, 20 Nov 2020 22:09:23 +0000 (17:09 -0500)
committerAustin Clements <austin@google.com>
Tue, 24 Nov 2020 21:47:20 +0000 (21:47 +0000)
This moves the C part of the CrashTraceback test into its own file in
preparation for adding a test that transitions back into Go.

Change-Id: I9560dcfd80bf8a1d30809fd360f958f5261ebb01
Reviewed-on: https://go-review.googlesource.com/c/go/+/272130
Trust: Austin Clements <austin@google.com>
Run-TryBot: Austin Clements <austin@google.com>
TryBot-Result: Go Bot <gobot@golang.org>
Reviewed-by: Ian Lance Taylor <iant@golang.org>
Reviewed-by: Cherry Zhang <cherryyz@google.com>
src/runtime/testdata/testprogcgo/traceback.go
src/runtime/testdata/testprogcgo/traceback_c.c [new file with mode: 0644]

index 2a023f66caeb74f49933e2f9111b20beac3faa69..03de894c893cc9455070d85f8fd3deae0e15fa06 100644 (file)
@@ -11,58 +11,10 @@ package main
 /*
 #cgo CFLAGS: -g -O0
 
-#include <stdint.h>
-
-char *p;
-
-static int f3(void) {
-       *p = 0;
-       return 0;
-}
-
-static int f2(void) {
-       return f3();
-}
-
-static int f1(void) {
-       return f2();
-}
-
-struct cgoTracebackArg {
-       uintptr_t  context;
-       uintptr_t  sigContext;
-       uintptr_t* buf;
-       uintptr_t  max;
-};
-
-struct cgoSymbolizerArg {
-       uintptr_t   pc;
-       const char* file;
-       uintptr_t   lineno;
-       const char* func;
-       uintptr_t   entry;
-       uintptr_t   more;
-       uintptr_t   data;
-};
-
-void cgoTraceback(void* parg) {
-       struct cgoTracebackArg* arg = (struct cgoTracebackArg*)(parg);
-       arg->buf[0] = 1;
-       arg->buf[1] = 2;
-       arg->buf[2] = 3;
-       arg->buf[3] = 0;
-}
-
-void cgoSymbolizer(void* parg) {
-       struct cgoSymbolizerArg* arg = (struct cgoSymbolizerArg*)(parg);
-       if (arg->pc != arg->data + 1) {
-               arg->file = "unexpected data";
-       } else {
-               arg->file = "cgo symbolizer";
-       }
-       arg->lineno = arg->data + 1;
-       arg->data++;
-}
+// Defined in traceback_c.c.
+int tracebackF1(void);
+void cgoTraceback(void* parg);
+void cgoSymbolizer(void* parg);
 */
 import "C"
 
@@ -77,5 +29,5 @@ func init() {
 
 func CrashTraceback() {
        runtime.SetCgoTraceback(0, unsafe.Pointer(C.cgoTraceback), nil, unsafe.Pointer(C.cgoSymbolizer))
-       C.f1()
+       C.tracebackF1()
 }
diff --git a/src/runtime/testdata/testprogcgo/traceback_c.c b/src/runtime/testdata/testprogcgo/traceback_c.c
new file mode 100644 (file)
index 0000000..54f44e1
--- /dev/null
@@ -0,0 +1,58 @@
+// Copyright 2020 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.
+
+// The C definitions for traceback.go.
+
+#include <stdint.h>
+
+char *p;
+
+int tracebackF3(void) {
+       *p = 0;
+       return 0;
+}
+
+int tracebackF2(void) {
+       return tracebackF3();
+}
+
+int tracebackF1(void) {
+       return tracebackF2();
+}
+
+struct cgoTracebackArg {
+       uintptr_t  context;
+       uintptr_t  sigContext;
+       uintptr_t* buf;
+       uintptr_t  max;
+};
+
+struct cgoSymbolizerArg {
+       uintptr_t   pc;
+       const char* file;
+       uintptr_t   lineno;
+       const char* func;
+       uintptr_t   entry;
+       uintptr_t   more;
+       uintptr_t   data;
+};
+
+void cgoTraceback(void* parg) {
+       struct cgoTracebackArg* arg = (struct cgoTracebackArg*)(parg);
+       arg->buf[0] = 1;
+       arg->buf[1] = 2;
+       arg->buf[2] = 3;
+       arg->buf[3] = 0;
+}
+
+void cgoSymbolizer(void* parg) {
+       struct cgoSymbolizerArg* arg = (struct cgoSymbolizerArg*)(parg);
+       if (arg->pc != arg->data + 1) {
+               arg->file = "unexpected data";
+       } else {
+               arg->file = "cgo symbolizer";
+       }
+       arg->lineno = arg->data + 1;
+       arg->data++;
+}