mirror of https://github.com/golang/go.git
delete one cgo playpen
R=r DELTA=111 (0 added, 111 deleted, 0 changed) OCL=35739 CL=35744
This commit is contained in:
parent
e495953d2b
commit
71abc4deab
|
|
@ -1,20 +0,0 @@
|
|||
// Copyright 2009 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 "runtime.h"
|
||||
#include "cgocall.h"
|
||||
|
||||
// turn on ffi
|
||||
#pragma dynld initcgo initcgo "libcgo.so"
|
||||
#pragma dynld cgo cgo "libcgo.so"
|
||||
|
||||
// pull in fib from fib.so
|
||||
#pragma dynld extern_c_fib fib "fib.so"
|
||||
void (*extern_c_fib)(void*);
|
||||
|
||||
void
|
||||
fib·Fib(int32 n, int32, int32)
|
||||
{
|
||||
cgocall(extern_c_fib, &n);
|
||||
}
|
||||
|
|
@ -1,36 +0,0 @@
|
|||
# Copyright 2009 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.
|
||||
|
||||
# FFI demo
|
||||
|
||||
all: fib.a fib.so
|
||||
|
||||
gcc.o: gcc.c
|
||||
gcc -fPIC -O2 -o gcc.o -c gcc.c
|
||||
|
||||
fib.so: gcc.o
|
||||
gcc -shared -o fib.so gcc.o -L$(GOROOT)/pkg/$(GOOS)_$(GOARCH) -lcgo
|
||||
|
||||
fib.a: 6c.6 go.6
|
||||
gopack grc fib.a 6c.6 go.6
|
||||
|
||||
6c.6: 6c.c
|
||||
6c -FVw -I$(GOROOT)/src/pkg/runtime 6c.c
|
||||
|
||||
go.6: go.go
|
||||
6g go.go
|
||||
|
||||
PKG=$(GOROOT)/pkg/$(GOOS)_$(GOARCH)
|
||||
|
||||
install: $(PKG)/fib.so $(PKG)/fib.a
|
||||
|
||||
$(PKG)/fib.so: fib.so
|
||||
cp fib.so $@
|
||||
|
||||
$(PKG)/fib.a: fib.a
|
||||
cp fib.a $@
|
||||
|
||||
clean:
|
||||
rm -f *.6 *.o *.so *.a
|
||||
|
||||
|
|
@ -1,34 +0,0 @@
|
|||
// Copyright 2009 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 <stdint.h>
|
||||
|
||||
typedef int32_t int32;
|
||||
|
||||
static int32
|
||||
fib1(int32 n)
|
||||
{
|
||||
int32 a, b, t;
|
||||
|
||||
a = 0;
|
||||
b = 1;
|
||||
for(; n>0; n--) {
|
||||
t = a;
|
||||
a = b;
|
||||
b += t;
|
||||
}
|
||||
return a;
|
||||
}
|
||||
|
||||
void
|
||||
fib(void *v)
|
||||
{
|
||||
struct { // 6g func(n int) int
|
||||
int32 n;
|
||||
int32 pad;
|
||||
int32 ret;
|
||||
} *args = v;
|
||||
|
||||
args->ret = fib1(args->n);
|
||||
}
|
||||
|
|
@ -1,8 +0,0 @@
|
|||
// Copyright 2009 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.
|
||||
|
||||
package fib
|
||||
|
||||
func Fib(n int) int
|
||||
|
||||
|
|
@ -1,13 +0,0 @@
|
|||
// Copyright 2009 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.
|
||||
|
||||
package main
|
||||
|
||||
import "fib"
|
||||
|
||||
func main() {
|
||||
for i := 0; i < 10; i++ {
|
||||
println(fib.Fib(i));
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue