1
0
mirror of https://github.com/golang/go synced 2024-10-06 01:31:21 -06:00
go/misc/cgo/test
Ian Lance Taylor 7904946eeb cmd/cgo: discard trailing zero-sized fields in a non-empty C struct
In order to fix issue #9401 the compiler was changed to add a padding
byte to any non-empty Go struct that ends in a zero-sized field.  That
causes the Go version of such a C struct to have a different size than
the C struct, which can considerable confusion.  Change cgo so that it
discards any such zero-sized fields, so that the Go and C structs are
the same size.

This is a change from previous releases, in that it used to be
possible to refer to a zero-sized trailing field (by taking its
address), and with this change it no longer is.  That is unfortunate,
but something has to change.  It seems better to visibly break
programs that do this rather than to silently break programs that rely
on the struct sizes being the same.

Update #9401.
Fixes #11925.

Change-Id: I3fba3f02f11265b3c41d68616f79dedb05b81225
Reviewed-on: https://go-review.googlesource.com/12864
Reviewed-by: Russ Cox <rsc@golang.org>
2015-07-30 15:55:25 +00:00
..
issue8828 cmd/go: add '_go_' suffix to go files compiled by gccgo to avoid naming conflicts 2014-10-15 13:13:37 -07:00
issue9026 misc/cgo/test: fix freebsd test failure by moving test to its own package. 2014-11-03 13:41:03 -05:00
issue9400 misc/cgo/test/issue9400: fix to build with gccgo 2015-04-29 16:57:13 +00:00
align.go test: Add the usual Copyright notice. 2012-01-24 14:48:15 -05:00
api.go misc/cgo/test: check API compatibility for cgo pseudo-functions 2013-05-30 02:59:57 +08:00
backdoor.go misc/cgo/test: get rid of the backdoor package 2014-12-24 00:18:21 +00:00
basic.go cmd/cgo: add missing ast.SliceExpr.Max case to AST traversal. 2014-09-30 16:08:04 -04:00
buildid_linux.go cmd/go: pass --build-id=none when generating a cgo .o 2014-08-07 12:38:39 -07:00
callback_c_gc.c runtime: delete cgo_allocate 2015-04-17 01:30:47 +00:00
callback_c_gccgo.c runtime: delete cgo_allocate 2015-04-17 01:30:47 +00:00
callback_c.c cgo: adjust return value location to account for stack copies. 2014-09-25 07:59:01 -07:00
callback.go runtime: rename cgocall_errno and asmcgocall_errno into cgocall and asmcgocall 2015-06-19 01:47:11 +00:00
cflags.go all: link to https instead of http 2015-07-11 14:36:33 +00:00
cgo_linux_test.go runtime: don't always unblock all signals 2015-05-22 20:24:08 +00:00
cgo_test.go cmd/cgo: discard trailing zero-sized fields in a non-empty C struct 2015-07-30 15:55:25 +00:00
cthread_unix.c misc/cgo: add various solaris build lines 2015-05-06 11:38:08 +00:00
cthread_windows.c runtime: allow cgo callbacks on non-Go threads 2013-02-20 17:48:23 -05:00
cthread.go runtime: fix stack pointer corruption in runtime.cgocallback_gofunc() 2013-04-30 04:13:32 +08:00
duplicate_symbol.go cgo: omit duplicate symbols in writeDefs 2011-08-16 14:56:23 -04:00
env.go misc/cgo/test: make tests run on windows 2012-01-20 12:59:44 +11:00
exports.go runtime: remove untyped allocation of ParFor 2014-09-16 11:03:11 -04:00
fpvar.go cmd/cgo: Add support for C function pointers 2013-08-13 12:42:21 -04:00
helpers.go cgo: fix incorrect print found by govet 2011-11-29 14:40:34 +11:00
issue1222.go runtime: scheduler, cgo reorganization 2011-03-07 10:37:42 -05:00
issue1328.go misc/cgo: re-enable some tests 2012-03-06 23:27:30 -05:00
issue1560.go misc/cgo/test: deflake TestParallelSleep once more 2013-05-18 02:55:44 +08:00
issue1635.go cmd/ld: handle a special case of scattered relocation 2/1 on Darwin/386 2012-08-29 23:42:05 +08:00
issue2462.go cgo: support export for built-in types 2011-12-20 09:28:45 -08:00
issue3250.go misc/cgo/test: skip test for issue 3250, the runtime isn't ready yet. 2013-07-15 14:37:36 +08:00
issue3250w.go runtime: correctly handle signals received on foreign threads 2013-07-12 04:39:39 +08:00
issue3261.go misc/cgo/test: skip issue3261 test on darwin/arm64 2015-04-16 13:00:47 +00:00
issue3729.go cmd/cgo: access errno from void C function 2012-12-18 00:26:08 +08:00
issue3729w.go cmd/cgo: access errno from void C function 2012-12-18 00:26:08 +08:00
issue3741.go cmd/cgo: generate definitions for GoSlice 2012-06-30 12:40:07 +08:00
issue3775.go misc/cgo/test: test recursive internal OS thread lock 2013-07-23 14:43:55 -04:00
issue3945.go all: link to https instead of http 2015-07-11 14:36:33 +00:00
issue4029.go misc/cgo/test: do not stop on first error 2013-03-06 15:03:28 -05:00
issue4029w.go misc/cgo/test: add -ldl to LDFLAGS on Linux, ignore issue4029 on windows (fix build) 2012-10-10 01:30:34 +08:00
issue4054a.go cgo: process DWARF info even when debug data is used for value 2012-09-20 13:20:33 +10:00
issue4054b.go cgo: process DWARF info even when debug data is used for value 2012-09-20 13:20:33 +10:00
issue4273.c cmd/ld: handle weak symbols 2012-10-30 23:58:43 +08:00
issue4273b.c cmd/ld: handle weak symbols 2012-10-30 23:58:43 +08:00
issue4339.c misc/cgo/test: test of issue 4339 2013-09-11 09:56:38 -04:00
issue4339.go misc/cgo/test: test of issue 4339 2013-09-11 09:56:38 -04:00
issue4339.h misc/cgo/test: test of issue 4339 2013-09-11 09:56:38 -04:00
issue4417.go cmd/cgo: access errno from void C function 2012-12-18 00:26:08 +08:00
issue4857.go cmd/cgo: using __typeof__(a->r) instead of putting invalid TYPE in "a->r = (const TYPE)" 2013-06-02 22:46:53 +08:00
issue5227.go misc/cgo/test: fix a gcc warning 2013-04-18 02:33:55 +08:00
issue5242.go cmd/cgo: fix default alignment for empty structs 2014-08-11 22:10:17 -07:00
issue5337.go misc/cgo/test: make test work with -linkmode=internal 2013-07-11 23:24:35 -04:00
issue5337w.go misc/cgo/test: add missing import 2013-05-15 15:34:47 +10:00
issue5548_c.c cmd/cgo: use intgo, not int, for string and slice structures 2013-05-23 22:51:07 -07:00
issue5548.go misc/cgo/test: make issue5548 test pickier 2014-09-05 14:59:09 -04:00
issue5603.go cmd/cgo: use gcc_struct attribute for packed structs to work around GCC PR52991. 2013-06-09 22:06:29 +08:00
issue5740.go cmd/ld: handle duplicate static symbols in COFF and Mach-O files. 2013-09-18 22:27:25 -04:00
issue5740a.c cmd/ld: handle duplicate static symbols in COFF and Mach-O files. 2013-09-18 22:27:25 -04:00
issue5740b.c cmd/ld: handle duplicate static symbols in COFF and Mach-O files. 2013-09-18 22:27:25 -04:00
issue5986.go cmd/go: fix missing __mingw_fprintf symbol for cgo on windows 2013-09-19 01:20:02 -04:00
issue6128.go cmd/cgo: fix Xcode 5 incompatibility for #defined expressions 2013-10-15 14:34:46 -04:00
issue6390.go cmd/cgo: fix build (missing file from earlier CL) 2013-09-16 14:21:54 -04:00
issue6472.go debug/dwarf: handle surprising clang encoding 2013-10-09 11:08:22 -04:00
issue6506.go misc/cgo/test: cut out non-standard functions 2013-10-15 14:25:29 -04:00
issue6612.go cmd/cgo: stop using compiler error message text to analyze C names 2013-10-18 15:56:25 -04:00
issue6833_c.c cmd/cgo: use __gcc_struct__ for go exported functions 2013-12-10 11:30:12 +11:00
issue6833.go cmd/cgo: use __gcc_struct__ for go exported functions 2013-12-10 11:30:12 +11:00
issue6997_linux.c runtime: co-exist with NPTL's pthread_cancel. 2014-01-09 09:34:04 -08:00
issue6997_linux.go all: link to https instead of http 2015-07-11 14:36:33 +00:00
issue7234_test.go all: link to https instead of http 2015-07-11 14:36:33 +00:00
issue7560.go cmd/cgo: omit misaligned struct fields, like we omit bitfields 2014-05-12 23:48:20 -04:00
issue7665.go cmd/gc: disable link-time copying of un-Go-initialized globals 2014-05-09 16:03:44 -04:00
issue7786.go cmd/cgo: given typedef struct S T, make C.T and C.struct_S interchangeable 2014-05-28 14:04:31 -04:00
issue7978.go runtime: rename cgocall_errno and asmcgocall_errno into cgocall and asmcgocall 2015-06-19 01:47:11 +00:00
issue8092.go cmd/{ld,link,objdump}, runtime, debug/gosym: move linker-defined symbols into runtime package 2014-08-27 20:15:05 -04:00
issue8148.go cmd/cgo: for typedef of untagged struct, use typedef name in C code 2014-06-05 10:42:03 -07:00
issue8331.h cmd/cgo: use same Go type for typedef to anonymous struct 2014-06-02 12:55:43 -07:00
issue8331a.go cmd/cgo: use same Go type for typedef to anonymous struct 2014-06-02 12:55:43 -07:00
issue8331b.go cmd/cgo: use same Go type for typedef to anonymous struct 2014-06-02 12:55:43 -07:00
issue8428.go cmd/cgo: discard trailing zero-sized fields in a non-empty C struct 2015-07-30 15:55:25 +00:00
issue8441.go cmd/cgo: fix recursive type mapping 2014-08-05 18:16:56 -07:00
issue8517_windows.c misc/cgo/test: add Test8517 2014-10-09 16:10:51 +11:00
issue8517_windows.go misc/cgo/test: add Test8517 2014-10-09 16:10:51 +11:00
issue8517.go misc/cgo/test: add Test8517 2014-10-09 16:10:51 +11:00
issue8694.go misc/cgo/test: skip test8694 on ARM. 2014-12-11 17:34:10 +11:00
issue8811.c cmd/ld: do not assume that only pe section names start with '.' 2014-10-11 22:01:04 +11:00
issue8811.go cmd/ld: do not assume that only pe section names start with '.' 2014-10-11 22:01:04 +11:00
issue8828.go cmd/go: add '_go_' suffix to go files compiled by gccgo to avoid naming conflicts 2014-10-15 13:13:37 -07:00
issue8945.go cmd/cgo: fix a problem with 'go build -compiler gccgo' 2015-06-29 15:15:59 +00:00
issue9026.go misc/cgo/test: fix freebsd test failure by moving test to its own package. 2014-11-03 13:41:03 -05:00
issue9400_linux.go misc/cgo: fix issue 9400 test on 386 2014-12-23 02:22:50 +00:00
issue9557.go cmd/cgo: also rewrite C.var in selector expressions 2015-01-12 21:48:57 +00:00
issue10303.go cmd/cgo: make sure pointers passed to C escape to heap 2015-06-15 17:39:53 +00:00
issue11925.go cmd/cgo: discard trailing zero-sized fields in a non-empty C struct 2015-07-30 15:55:25 +00:00
setgid_linux.go all: link to https instead of http 2015-07-11 14:36:33 +00:00
sigprocmask_linux.c misc/cgo/test: fix build for CC=clang 2015-05-22 22:54:24 +00:00
sigprocmask_linux.go runtime: don't always unblock all signals 2015-05-22 20:24:08 +00:00
sleep_windows_386.go cmd/go: new cgo build procedure 2012-08-17 03:42:34 +08:00