aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDevon H. O'Dell <devon.odell@gmail.com>2009-12-17 12:38:29 -0800
committerRuss Cox <rsc@golang.org>2009-12-17 12:38:29 -0800
commit7a5f4be97e1b2d61c56c333b47470514472bd05d (patch)
treeee676268224b6f1fa9df07a1f69bd45eef10a780
parenta8123321519279357ac74e5aae6421a7fe94f9cf (diff)
downloadgo-7a5f4be97e1b2d61c56c333b47470514472bd05d.tar.gz
go-7a5f4be97e1b2d61c56c333b47470514472bd05d.zip
Use BitSize instead of the field's type native ByteSize when calculating
structs containing bitfields. Fixes #163. R=rsc CC=golang-dev https://golang.org/cl/180059
-rw-r--r--src/cmd/cgo/gcc.go3
1 files changed, 3 insertions, 0 deletions
diff --git a/src/cmd/cgo/gcc.go b/src/cmd/cgo/gcc.go
index 07bfa8ab65..aeca50eece 100644
--- a/src/cmd/cgo/gcc.go
+++ b/src/cmd/cgo/gcc.go
@@ -693,6 +693,9 @@ func (c *typeConv) Struct(dt *dwarf.StructType) (expr *ast.StructType, csyntax s
}
for _, f := range dt.Field {
+ if f.BitSize > 0 && f.BitSize != f.ByteSize*8 {
+ continue
+ }
if f.ByteOffset > off {
fld = c.pad(fld, f.ByteOffset-off)
off = f.ByteOffset