mirror of
https://github.com/golang/go
synced 2024-11-19 03:14:42 -07:00
runtime: add TestCgoDLLImports
The test is a simple reproduction of issue 9356. Update #8948. Update #9356. Change-Id: Ia77bc36d12ed0c3c4a8b1214cade8be181c9ad55 Reviewed-on: https://go-review.googlesource.com/7618 Reviewed-by: Minux Ma <minux@golang.org>
This commit is contained in:
parent
21aad02f9d
commit
9b69196958
@ -82,6 +82,18 @@ func TestCgoExternalThreadSIGPROF(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
func TestCgoDLLImports(t *testing.T) {
|
||||
// test issue 9356
|
||||
if runtime.GOOS != "windows" {
|
||||
t.Skip("skipping windows specific test")
|
||||
}
|
||||
got := executeTest(t, cgoDLLImportsMainSource, nil, "a/a.go", cgoDLLImportsPkgSource)
|
||||
want := "OK\n"
|
||||
if got != want {
|
||||
t.Fatalf("expected %q, but got %v", want, got)
|
||||
}
|
||||
}
|
||||
|
||||
const cgoSignalDeadlockSource = `
|
||||
package main
|
||||
|
||||
@ -269,3 +281,43 @@ func main() {
|
||||
println("OK")
|
||||
}
|
||||
`
|
||||
|
||||
const cgoDLLImportsMainSource = `
|
||||
package main
|
||||
|
||||
/*
|
||||
#include <windows.h>
|
||||
|
||||
DWORD getthread() {
|
||||
return GetCurrentThreadId();
|
||||
}
|
||||
*/
|
||||
import "C"
|
||||
|
||||
import "./a"
|
||||
|
||||
func main() {
|
||||
C.getthread()
|
||||
a.GetThread()
|
||||
println("OK")
|
||||
}
|
||||
`
|
||||
|
||||
const cgoDLLImportsPkgSource = `
|
||||
package a
|
||||
|
||||
/*
|
||||
#cgo CFLAGS: -mnop-fun-dllimport
|
||||
|
||||
#include <windows.h>
|
||||
|
||||
DWORD agetthread() {
|
||||
return GetCurrentThreadId();
|
||||
}
|
||||
*/
|
||||
import "C"
|
||||
|
||||
func GetThread() uint32 {
|
||||
return uint32(C.agetthread())
|
||||
}
|
||||
`
|
||||
|
@ -72,7 +72,14 @@ func executeTest(t *testing.T, templ string, data interface{}, extra ...string)
|
||||
}
|
||||
|
||||
for i := 0; i < len(extra); i += 2 {
|
||||
if err := ioutil.WriteFile(filepath.Join(dir, extra[i]), []byte(extra[i+1]), 0666); err != nil {
|
||||
fname := extra[i]
|
||||
contents := extra[i+1]
|
||||
if d, _ := filepath.Split(fname); d != "" {
|
||||
if err := os.Mkdir(filepath.Join(dir, d), 0755); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
}
|
||||
if err := ioutil.WriteFile(filepath.Join(dir, fname), []byte(contents), 0666); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user