...

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