diff options
Diffstat (limited to 'libgo/misc/cgo/test')
-rw-r--r-- | libgo/misc/cgo/test/pkg_test.go | 2 | ||||
-rw-r--r-- | libgo/misc/cgo/test/sigaltstack.go | 15 | ||||
-rw-r--r-- | libgo/misc/cgo/test/test.go | 25 | ||||
-rw-r--r-- | libgo/misc/cgo/test/testdata/issue27054/egl.h | 1 | ||||
-rw-r--r-- | libgo/misc/cgo/test/testdata/issue27054/test27054.go | 6 | ||||
-rw-r--r-- | libgo/misc/cgo/test/testx.go | 12 |
6 files changed, 53 insertions, 8 deletions
diff --git a/libgo/misc/cgo/test/pkg_test.go b/libgo/misc/cgo/test/pkg_test.go index 08e075c..26c50ad 100644 --- a/libgo/misc/cgo/test/pkg_test.go +++ b/libgo/misc/cgo/test/pkg_test.go @@ -32,7 +32,7 @@ func TestCrossPackageTests(t *testing.T) { t.Skip("Can't exec cmd/go subprocess on Android.") case "darwin": switch runtime.GOARCH { - case "arm", "arm64": + case "arm64": t.Skip("Can't exec cmd/go subprocess on iOS.") } } diff --git a/libgo/misc/cgo/test/sigaltstack.go b/libgo/misc/cgo/test/sigaltstack.go index 2c9b81c..8dfa1cb 100644 --- a/libgo/misc/cgo/test/sigaltstack.go +++ b/libgo/misc/cgo/test/sigaltstack.go @@ -14,15 +14,22 @@ package cgotest #include <stdlib.h> #include <string.h> +#ifdef _AIX +// On AIX, SIGSTKSZ is too small to handle Go sighandler. +#define CSIGSTKSZ 0x4000 +#else +#define CSIGSTKSZ SIGSTKSZ +#endif + static stack_t oss; -static char signalStack[SIGSTKSZ]; +static char signalStack[CSIGSTKSZ]; static void changeSignalStack(void) { stack_t ss; memset(&ss, 0, sizeof ss); ss.ss_sp = signalStack; ss.ss_flags = 0; - ss.ss_size = SIGSTKSZ; + ss.ss_size = CSIGSTKSZ; if (sigaltstack(&ss, &oss) < 0) { perror("sigaltstack"); abort(); @@ -55,10 +62,8 @@ import ( func testSigaltstack(t *testing.T) { switch { - case runtime.GOOS == "solaris", runtime.GOOS == "illumos", runtime.GOOS == "darwin" && (runtime.GOARCH == "arm" || runtime.GOARCH == "arm64"): + case runtime.GOOS == "solaris", runtime.GOOS == "illumos", runtime.GOOS == "darwin" && runtime.GOARCH == "arm64": t.Skipf("switching signal stack not implemented on %s/%s", runtime.GOOS, runtime.GOARCH) - case runtime.GOOS == "darwin" && runtime.GOARCH == "386": - t.Skipf("sigaltstack fails on darwin/386") } C.changeSignalStack() diff --git a/libgo/misc/cgo/test/test.go b/libgo/misc/cgo/test/test.go index b014899..35bc3a1 100644 --- a/libgo/misc/cgo/test/test.go +++ b/libgo/misc/cgo/test/test.go @@ -897,6 +897,16 @@ static uint16_t issue31093F(uint16_t v) { return v; } // issue 32579 typedef struct S32579 { unsigned char data[1]; } S32579; + +// issue 38649 +// Test that #define'd type aliases work. +#define netbsd_gid unsigned int + +// issue 40494 +// Inconsistent handling of tagged enum and union types. +enum Enum40494 { X_40494 }; +union Union40494 { int x; }; +void issue40494(enum Enum40494 e, union Union40494* up) {} */ import "C" @@ -2192,3 +2202,18 @@ func test32579(t *testing.T) { t.Errorf("&s[0].data[0] failed: got %d, want %d", s[0].data[0], 1) } } + +// issue 38649 + +var issue38649 C.netbsd_gid = 42 + +// issue 39877 + +var issue39877 *C.void = nil + +// issue 40494 +// No runtime test; just make sure it compiles. + +func Issue40494() { + C.issue40494(C.enum_Enum40494(C.X_40494), (*C.union_Union40494)(nil)) +} diff --git a/libgo/misc/cgo/test/testdata/issue27054/egl.h b/libgo/misc/cgo/test/testdata/issue27054/egl.h index 33a759e..3079627 100644 --- a/libgo/misc/cgo/test/testdata/issue27054/egl.h +++ b/libgo/misc/cgo/test/testdata/issue27054/egl.h @@ -5,3 +5,4 @@ // This is the relevant part of EGL/egl.h. typedef void *EGLDisplay; +typedef void *EGLConfig; diff --git a/libgo/misc/cgo/test/testdata/issue27054/test27054.go b/libgo/misc/cgo/test/testdata/issue27054/test27054.go index 186f5bd..01bf43a 100644 --- a/libgo/misc/cgo/test/testdata/issue27054/test27054.go +++ b/libgo/misc/cgo/test/testdata/issue27054/test27054.go @@ -13,5 +13,9 @@ import ( ) func Test27054(t *testing.T) { - var _ C.EGLDisplay = 0 // Note: 0, not nil. That makes sure we use uintptr for this type. + var ( + // Note: 0, not nil. That makes sure we use uintptr for these types. + _ C.EGLDisplay = 0 + _ C.EGLConfig = 0 + ) } diff --git a/libgo/misc/cgo/test/testx.go b/libgo/misc/cgo/test/testx.go index 42979b5..7fbc5c6 100644 --- a/libgo/misc/cgo/test/testx.go +++ b/libgo/misc/cgo/test/testx.go @@ -124,6 +124,11 @@ typedef struct { } Issue31891B; void callIssue31891(void); + +typedef struct { + int i; +} Issue38408, *PIssue38408; + */ import "C" @@ -159,7 +164,7 @@ func Add(x int) { } func testCthread(t *testing.T) { - if runtime.GOOS == "darwin" && (runtime.GOARCH == "arm" || runtime.GOARCH == "arm64") { + if runtime.GOOS == "darwin" && runtime.GOARCH == "arm64" { t.Skip("the iOS exec wrapper is unable to properly handle the panic from Add") } sum.i = 0 @@ -552,3 +557,8 @@ func useIssue31891B(c *C.Issue31891B) {} func test31891(t *testing.T) { C.callIssue31891() } + +// issue 38408 +// A typedef pointer can be used as the element type. +// No runtime test; just make sure it compiles. +var _ C.PIssue38408 = &C.Issue38408{i: 1} |