Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
cmd/cgo: don't translate bitfields into Go fields
The cgo tool would sometimes emit a bitfield at an offset that did not correspond to the C offset, such as for the example in the new test. Change-Id: I61b2ca10ee44a42f81c13ed12865f2060168fed5 Reviewed-on: https://go-review.googlesource.com/c/go/+/252378 Trust: Ian Lance Taylor <iant@golang.org> Run-TryBot: Ian Lance Taylor <iant@golang.org> Reviewed-by: Matthew Dempsky <mdempsky@google.com> TryBot-Result: Go Bot <gobot@golang.org>
- Loading branch information
1 parent
b6dbaef
commit eaa97fb
Showing
5 changed files
with
75 additions
and
15 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,31 @@ | ||
// Copyright 2020 The Go Authors. All rights reserved. | ||
// Use of this source code is governed by a BSD-style | ||
// license that can be found in the LICENSE file. | ||
// | ||
// +build ignore | ||
|
||
package main | ||
|
||
// This file tests that we don't generate an incorrect field location | ||
// for a bitfield that appears aligned. | ||
|
||
/* | ||
struct bitfields { | ||
unsigned int B1 : 5; | ||
unsigned int B2 : 1; | ||
unsigned int B3 : 1; | ||
unsigned int B4 : 1; | ||
unsigned int Short1 : 16; // misaligned on 8 bit boundary | ||
unsigned int B5 : 1; | ||
unsigned int B6 : 1; | ||
unsigned int B7 : 1; | ||
unsigned int B8 : 1; | ||
unsigned int B9 : 1; | ||
unsigned int B10 : 3; | ||
unsigned int Short2 : 16; // alignment is OK | ||
unsigned int Short3 : 16; // alignment is OK | ||
}; | ||
*/ | ||
import "C" | ||
|
||
type bitfields C.struct_bitfields |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters