From aaff1ad73c50b46e7cd2558d6c1b14f84000545f Mon Sep 17 00:00:00 2001 From: ian Date: Tue, 27 Jun 2017 04:21:40 +0000 Subject: libgo: add misc/cgo files Copy all the misc/cgo files from the gc toolchain into libgo/misc. These will be used for testing purposes by later changes to the gotools directory. Reviewed-on: https://go-review.googlesource.com/46721 git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@249674 138bc75d-0d04-0410-961f-82ee72b054a4 --- libgo/misc/cgo/errors/malloc.go | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 libgo/misc/cgo/errors/malloc.go (limited to 'libgo/misc/cgo/errors/malloc.go') diff --git a/libgo/misc/cgo/errors/malloc.go b/libgo/misc/cgo/errors/malloc.go new file mode 100644 index 00000000000..65da0208b97 --- /dev/null +++ b/libgo/misc/cgo/errors/malloc.go @@ -0,0 +1,34 @@ +// Copyright 2016 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. + +// Test that C.malloc does not return nil. + +package main + +// #include +import "C" + +import ( + "fmt" + "runtime" +) + +func main() { + var size C.size_t + size-- + + // The Dragonfly libc succeeds when asked to allocate + // 0xffffffffffffffff bytes, so pass a different value that + // causes it to fail. + if runtime.GOOS == "dragonfly" { + size = C.size_t(0x7fffffff << (32 * (^uintptr(0) >> 63))) + } + + p := C.malloc(size) + if p == nil { + fmt.Println("malloc: C.malloc returned nil") + // Just exit normally--the test script expects this + // program to crash, so exiting normally indicates failure. + } +} -- cgit v1.2.1