]> Cypherpunks repositories - gostls13.git/commit
[release-branch.go1.2] cmd/cgo: fix handling of array of pointers when using clang
authorAndrew Gerrand <adg@golang.org>
Wed, 13 Nov 2013 03:33:38 +0000 (14:33 +1100)
committerAndrew Gerrand <adg@golang.org>
Wed, 13 Nov 2013 03:33:38 +0000 (14:33 +1100)
commit6ec8f31510093f7c377197c4156ef6dc5720c923
treefef498233377cd4d90d85b3480c1b54337721185
parentf0189653caccfc8b9e264e919551d2a06e9511be
[release-branch.go1.2] cmd/cgo: fix handling of array of pointers when using clang

««« CL 22840043 / e6794866ebeb
cmd/cgo: fix handling of array of pointers when using clang

Clang does not record the "size" field for pointer types,
so we must insert the size ourselves. We were already
doing this, but only for the case of pointer types.
For an array of pointer types, the setting of the size for
the nested pointer type was happening after the computation
of the size of the array type, meaning that the array type
was always computed as 0 bytes. Delay the size computation.

This bug happens on all Clang systems, not just FreeBSD.
Our test checked that cgo wrote something, not that it was correct.
FreeBSD's default clang rejects array[0] as a C struct field,
so it noticed the incorrect sizes. But the sizes were incorrect
everywhere.

Update testcdefs to check the output has the right semantics.

Fixes #6292.

R=golang-dev, iant
CC=golang-dev
https://golang.org/cl/22840043
»»»

R=golang-dev
CC=golang-dev
https://golang.org/cl/25460046
misc/cgo/testcdefs/main.c [new file with mode: 0644]
misc/cgo/testcdefs/main.go
misc/cgo/testcdefs/test.bash
src/cmd/cgo/gcc.go