aboutsummaryrefslogtreecommitdiff
path: root/misc/cgo/errors/test.bash
AgeCommit message (Collapse)Author
2017-09-13misc/cgo/errors: port test.bash to GoBryan C. Mills
This makes the test easier to run in isolation and easier to change, and simplifies the code to run the tests in parallel. updates #13467 Change-Id: I5622b5cc98276970347da18e95d071dbca3c5cc1 Reviewed-on: https://go-review.googlesource.com/63276 Run-TryBot: Bryan Mills <bcmills@google.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Ian Lance Taylor <iant@golang.org>
2017-08-14cmd/cgo: use first error position instead of last oneHiroshi Ioka
Just like https://golang.org/cl/34783 Given cgo.go: 1 package main 2 3 /* 4 long double x = 0; 5 */ 6 import "C" 7 8 func main() { 9 _ = C.x 10 _ = C.x 11 } Before: ./cgo.go:10:6: unexpected: 16-byte float type - long double After: ./cgo.go:9:6: unexpected: 16-byte float type - long double The above test case is not portable. So it is tested on only amd64. Change-Id: If0b84cf73d381a22e2ada71c8e9a6e6ec77ffd2e Reviewed-on: https://go-review.googlesource.com/54950 Reviewed-by: Ian Lance Taylor <iant@golang.org>
2017-06-03cmd/cgo: show pos info in undefined name errorsAlberto Donizetti
For test.go: package main import ( "C" "fmt" ) func main() { fmt.Println("Hello, world!") C.no_such_f() } Before: could not determine kind of name for C.no_such_f After: ./test.go:10:2: could not determine kind of name for C.no_such_f Fixes #18452 Change-Id: I49c136b7fa60fab25d2d5b905d440fe4d106e565 Reviewed-on: https://go-review.googlesource.com/34783 Run-TryBot: Alberto Donizetti <alb.donizetti@gmail.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Ian Lance Taylor <iant@golang.org>
2017-04-18cmd/cgo: reject references to builtin functions other than callsAlexander Menzhinsky
Here we restrict using cgo builtin references because internally they're go functions as opposed to C usafe.Pointer values. Fixes #18889 Change-Id: I1e4332e4884063ccbaf9772c172d4462ec8f3d13 Reviewed-on: https://go-review.googlesource.com/40934 Reviewed-by: Ian Lance Taylor <iant@golang.org> Run-TryBot: Ian Lance Taylor <iant@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org>
2017-03-09cmd/compile: print columns (not just lines) in error messagesRobert Griesemer
Compiler errors now show the exact line and line byte offset (sometimes called "column") of where an error occured. For `go tool compile x.go`: package p const c int = false //line foo.go:123 type t intg reports x.go:2:7: cannot convert false to type int foo.go:123[x.go:4:8]: undefined: intg (Some errors use the "wrong" position for the error message; arguably the byte offset for the first error should be 15, the position of 'false', rathen than 7, the position of 'c'. But that is an indepedent issue.) The byte offset (column) values are measured in bytes; they start at 1, matching the convention used by editors and IDEs. Positions modified by //line directives show the line offset only for the actual source location (in square brackets), not for the "virtual" file and line number because that code is likely generated and the //line directive only provides line information. Because the new format might break existing tools or scripts, printing of line offsets can be disabled with the new compiler flag -C. We plan to remove this flag eventually. Fixes #10324. Change-Id: I493f5ee6e78457cf7b00025aba6b6e28e50bb740 Reviewed-on: https://go-review.googlesource.com/37970 Reviewed-by: Matthew Dempsky <mdempsky@google.com>
2016-10-25misc/cgo/errors: fix malloc test for dragonflyIan Lance Taylor
The Dragonfly libc returns a non-zero value for malloc(-1). Fixes #17585. Change-Id: Icfe68011ccbc75c676273ee3c3efdf24a520a004 Reviewed-on: https://go-review.googlesource.com/32050 Run-TryBot: Ian Lance Taylor <iant@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
2016-10-25cmd/cgo: throw if C.malloc returns nilIan Lance Taylor
Change-Id: If7740ac7b6c4190db5a1ab4100d12cf16dc79c84 Reviewed-on: https://go-review.googlesource.com/31768 Run-TryBot: Ian Lance Taylor <iant@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Russ Cox <rsc@golang.org>
2016-10-19cmd/cgo: always use a function literal for pointer checkingIan Lance Taylor
The pointer checking code needs to know the exact type of the parameter expected by the C function, so that it can use a type assertion to convert the empty interface returned by cgoCheckPointer to the correct type. Previously this was done by using a type conversion, but that meant that the code accepted arguments that were convertible to the parameter type, rather than arguments that were assignable as in a normal function call. In other words, some code that should not have passed type checking was accepted. This CL changes cgo to always use a function literal for pointer checking. Now the argument is passed to the function literal, which has the correct argument type, so type checking is performed just as for a function call as it should be. Since we now always use a function literal, simplify the checking code to run as a statement by itself. It now no longer needs to return a value, and we no longer need a type assertion. This does have the cost of introducing another function call into any call to a C function that requires pointer checking, but the cost of the additional call should be minimal compared to the cost of pointer checking. Fixes #16591. Change-Id: I220165564cf69db9fd5f746532d7f977a5b2c989 Reviewed-on: https://go-review.googlesource.com/31233 Run-TryBot: Ian Lance Taylor <iant@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Matthew Dempsky <mdempsky@google.com>
2016-06-21cmd/cgo: error, not panic, if not enough arguments to functionqeed
Fixes #16116. Change-Id: Ic3cb0b95382bb683368743bda49b4eb5fdcc35c0 Reviewed-on: https://go-review.googlesource.com/24286 Reviewed-by: Emmanuel Odeke <emm.odeke@gmail.com> Reviewed-by: Ian Lance Taylor <iant@golang.org> Run-TryBot: Ian Lance Taylor <iant@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org>
2016-06-09cmd/cgo: use function arg type for _cgoCheckPointerN functionIan Lance Taylor
When cgo writes a _cgoCheckPointerN function to handle unsafe.Pointer, use the function's argument type rather than interface{}. This permits type errors to be detected at build time rather than run time. Fixes #13830. Change-Id: Ic7090905e16b977e2379670e0f83640dc192b565 Reviewed-on: https://go-review.googlesource.com/23675 Run-TryBot: Ian Lance Taylor <iant@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Austin Clements <austin@google.com>
2016-05-27cmd/cgo: remove -O options when generating compiler errorsIan Lance Taylor
The cgo tool generates compiler errors to find out what kind of name it is using. Turning on optimization can confuse that process by producing new unexpected messages. Fixes #14669. Change-Id: Idc8e35fd259711ecc9638566b691c11d17140325 Reviewed-on: https://go-review.googlesource.com/23231 Run-TryBot: Ian Lance Taylor <iant@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Russ Cox <rsc@golang.org>
2015-12-16cmd/cgo: map C unsigned char back to _Ctype_uchar in error messagesShenghou Ma
Fixes #13635. Change-Id: Icab4a45567f435f002a8f6c85db9538acf054a70 Reviewed-on: https://go-review.googlesource.com/17863 Run-TryBot: Minux Ma <minux@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Ian Lance Taylor <iant@golang.org>
2015-12-02cmd/cgo: error, not panic, if not enough arguments to functionIan Lance Taylor
Fixes #13423. Change-Id: I41bb45790cca36c57a107796f0eca61287acb2a9 Reviewed-on: https://go-review.googlesource.com/17332 Run-TryBot: Ian Lance Taylor <iant@golang.org> Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org>
2015-11-25cmd/cgo: handle another Clang DWARF quirkMatthew Dempsky
Without the fix: $ CC=clang-3.5 ./test.bash misc/cgo/errors/test.bash: BUG: expected error output to contain "C.ushort" but saw: # command-line-arguments ./issue13129.go:13: cannot use int(0) (type int) as type C.unsignedshort in assignment Fixes #13129. Change-Id: I2c019d2d000f5bfa3e33c477e533aff97031a84f Reviewed-on: https://go-review.googlesource.com/17207 Run-TryBot: Matthew Dempsky <mdempsky@google.com> Reviewed-by: Ian Lance Taylor <iant@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org>
2015-11-10cmd/cgo, runtime: add checks for passing pointers from Go to CIan Lance Taylor
This implements part of the proposal in issue 12416 by adding dynamic checks for passing pointers from Go to C. This code is intended to be on at all times. It does not try to catch every case. It does not implement checks on calling Go functions from C. The new cgo checks may be disabled using GODEBUG=cgocheck=0. Update #12416. Change-Id: I48de130e7e2e83fb99a1e176b2c856be38a4d3c8 Reviewed-on: https://go-review.googlesource.com/16003 Reviewed-by: Russ Cox <rsc@golang.org>
2015-10-05cmd/cgo: fix panic on references to non-existing C typesDidier Spezia
cgo panics in Package.rewriteRef for: var a = C.enum_test(1) or p := new(C.enum_test) when the corresponding enum type is not defined. Check nil values for Type fields and issue a proper error instead. Fixes #11097 Updates #12160 Change-Id: I5821d29097ef0a36076ec5273125b09846c7d832 Reviewed-on: https://go-review.googlesource.com/15264 Reviewed-by: Ian Lance Taylor <iant@golang.org>
2015-03-03build: convert run.bash, run.bat, and run.rc into a Go programBrad Fitzpatrick
This will enable test sharding over multiple VMs, to speed trybot answers. Update #10029 Change-Id: Ie277c6459bc38005e4d6af14d22effeaa0a4667e Reviewed-on: https://go-review.googlesource.com/6531 Reviewed-by: Russ Cox <rsc@golang.org> Reviewed-by: Alex Brainman <alex.brainman@gmail.com>
2014-08-14cmd/cgo: check for compiler errors in the C preambleMatthew Dempsky
E.g., here's the new "go build" output: $ go build misc/cgo/errors/issue8442.go # command-line-arguments could not determine kind of name for C.issue8442foo gcc errors for preamble: misc/cgo/errors/issue8442.go:11:19: error: unknown type name 'UNDEF' Fixes #8442. LGTM=iant R=iant, alex.brainman CC=golang-codereviews https://golang.org/cl/129160043
2014-08-12cmd/cgo: make C function pointers non-assignableMatthew Dempsky
Fixes #7757. Fixes #8488. LGTM=iant R=iant CC=golang-codereviews https://golang.org/cl/118690044
2014-03-27cmd/cgo: enforce typing of 0-sized typesDaniel Morsing
cgo represents all 0-sized and unsized types internally as [0]byte. This means that pointers to incomplete types would be interchangable, even if given a name by typedef. Fixes #7409. LGTM=iant R=golang-codereviews, bradfitz, iant CC=golang-codereviews https://golang.org/cl/76450043
2013-10-18cmd/cgo: fix line number in an error messageRuss Cox
Fixes #6563. R=golang-dev, iant CC=golang-dev https://golang.org/cl/14870046
2013-09-03cmd/cgo: don't let #cgo directives mess up line numberingIan Lance Taylor
Fixes #5272. R=golang-dev, r CC=golang-dev https://golang.org/cl/13498046