]> Cypherpunks repositories - gostls13.git/commit
cmd/cgo: use field alignment when setting field offset
authorIan Lance Taylor <iant@golang.org>
Tue, 20 Nov 2018 23:55:02 +0000 (15:55 -0800)
committerIan Lance Taylor <iant@golang.org>
Thu, 29 Nov 2018 19:18:12 +0000 (19:18 +0000)
commitfbdaa965634be842647195ee2d610dc363c760d2
treebe9382231ecf2a7d6686ce2fac0a14f379820dca
parent81a5c9c306a35a297c86d72c9729a16f69acec21
cmd/cgo: use field alignment when setting field offset

The old code ignored the field alignment, and only looked at the field
offset: if the field offset required padding, cgo added padding. But
while that approach works for Go (at least with the gc toolchain) it
doesn't work for C code using packed structs. With a packed struct the
added padding may leave the struct at a misaligned position, and the
inserted alignment, which cgo is not considering, may introduce
additional, unexpected, padding. Padding that ignores alignment is not
a good idea when the struct is not packed, and Go structs are never
packed. So don't ignore alignment.

Fixes #28896

Change-Id: Ie50ea15fa6dc35557497097be9fecfecb11efd8a
Reviewed-on: https://go-review.googlesource.com/c/150602
Run-TryBot: Ian Lance Taylor <iant@golang.org>
Reviewed-by: Bryan C. Mills <bcmills@google.com>
misc/cgo/test/cgo_test.go
misc/cgo/test/issue28896.go [new file with mode: 0644]
src/cmd/cgo/gcc.go