diff options
| author | Michael Stapelberg <stapelberg@debian.org> | 2013-03-04 21:27:36 +0100 |
|---|---|---|
| committer | Michael Stapelberg <michael@stapelberg.de> | 2013-03-04 21:27:36 +0100 |
| commit | 04b08da9af0c450d645ab7389d1467308cfc2db8 (patch) | |
| tree | db247935fa4f2f94408edc3acd5d0d4f997aa0d8 /misc/cgo/test/issue4029.go | |
| parent | 917c5fb8ec48e22459d77e3849e6d388f93d3260 (diff) | |
| download | golang-04b08da9af0c450d645ab7389d1467308cfc2db8.tar.gz | |
Imported Upstream version 1.1~hg20130304upstream/1.1_hg20130304
Diffstat (limited to 'misc/cgo/test/issue4029.go')
| -rw-r--r-- | misc/cgo/test/issue4029.go | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/misc/cgo/test/issue4029.go b/misc/cgo/test/issue4029.go new file mode 100644 index 000000000..7495d38fe --- /dev/null +++ b/misc/cgo/test/issue4029.go @@ -0,0 +1,60 @@ +// Copyright 2012 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. + +// +build !windows + +package cgotest + +/* +#include <dlfcn.h> +#cgo linux LDFLAGS: -ldl +*/ +import "C" + +import ( + "fmt" + "testing" +) + +//export IMPIsOpaque +func IMPIsOpaque() { + fmt.Println("isOpaque") +} + +//export IMPInitWithFrame +func IMPInitWithFrame() { + fmt.Println("IInitWithFrame") +} + +//export IMPDrawRect +func IMPDrawRect() { + fmt.Println("drawRect:") +} + +//export IMPWindowResize +func IMPWindowResize() { + fmt.Println("windowDidResize:") +} + +func test4029(t *testing.T) { + loadThySelf(t, "IMPWindowResize") + loadThySelf(t, "IMPDrawRect") + loadThySelf(t, "IMPInitWithFrame") + loadThySelf(t, "IMPIsOpaque") +} + +func loadThySelf(t *testing.T, symbol string) { + this_process := C.dlopen(nil, C.RTLD_NOW) + if this_process == nil { + t.Fatal("dlopen:", C.GoString(C.dlerror())) + } + defer C.dlclose(this_process) + + symbol_address := C.dlsym(this_process, C.CString(symbol)) + if symbol_address == nil { + t.Fatal("dlsym:", C.GoString(C.dlerror())) + } else { + t.Log(symbol, symbol_address) + } +} |
