...
Text file src/runtime/cgo/gcc_traceback.c
1 // Copyright 2016 The Go Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style
3 // license that can be found in the LICENSE file.
4
5 // +build cgo,darwin cgo,linux
6
7 #include <stdint.h>
8 #include "libcgo.h"
9
10 // Call the user's traceback function and then call sigtramp.
11 // The runtime signal handler will jump to this code.
12 // We do it this way so that the user's traceback function will be called
13 // by a C function with proper unwind info.
14 void
15 x_cgo_callers(uintptr_t sig, void *info, void *context, void (*cgoTraceback)(struct cgoTracebackArg*), uintptr_t* cgoCallers, void (*sigtramp)(uintptr_t, void*, void*)) {
16 struct cgoTracebackArg arg;
17
18 arg.Context = 0;
19 arg.SigContext = (uintptr_t)(context);
20 arg.Buf = cgoCallers;
21 arg.Max = 32; // must match len(runtime.cgoCallers)
22 (*cgoTraceback)(&arg);
23 sigtramp(sig, info, context);
24 }
View as plain text