From 2e7e3e1de169a5599f9f895a8d5e2347b4cf3c14 Mon Sep 17 00:00:00 2001 From: Ian Lance Taylor Date: Tue, 11 Jan 2011 23:26:03 +0000 Subject: [PATCH] Add file missed in previous commit. From-SVN: r168684 --- libgo/runtime/go-cgo.c | 42 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 libgo/runtime/go-cgo.c diff --git a/libgo/runtime/go-cgo.c b/libgo/runtime/go-cgo.c new file mode 100644 index 0000000..94917bc --- /dev/null +++ b/libgo/runtime/go-cgo.c @@ -0,0 +1,42 @@ +/* go-cgo.c -- SWIG support routines for libgo. + + Copyright 2011 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. */ + +#include "go-alloc.h" +#include "interface.h" +#include "go-panic.h" +#include "go-string.h" + +/* These are routines used by SWIG. The gc runtime library provides + the same routines under the same name, though in that case the code + is required to import runtime/cgo. */ + +void * +_cgo_allocate (size_t n) +{ + return __go_alloc (n); +} + +extern const struct __go_type_descriptor string_type_descriptor + asm ("__go_tdn_string"); + +void +_cgo_panic (const char *p) +{ + int len; + unsigned char *data; + struct __go_string *ps; + struct __go_empty_interface e; + + len = __builtin_strlen (p); + data = __go_alloc (len); + __builtin_memcpy (data, p, len); + ps = __go_alloc (sizeof *ps); + ps->__data = data; + ps->__length = len; + e.__type_descriptor = &string_type_descriptor; + e.__object = ps; + __go_panic (e); +} -- 2.7.4