Closed
Description
Input C/C++ Header
typedef unsigned char U8;
typedef unsigned short U16;
typedef struct {
U16 MADZ : 10, MAI0 : 2, MAI1 : 2, MAI2 : 2;
U8 MADK, MABR;
U16 MATH : 10, MATE : 4, MATW : 2;
U8 MASW : 4, MABW : 3, MAXN : 1, _rB_;
} V56AMDY;
Bindgen Invocation
bindgen::Builder::default()
.header("input.h")
.generate()
.unwrap()
or
$ bindgen input.h
Actual Results
Bindings:
/* automatically generated by rust-bindgen 0.56.0 */
// ...
pub type U8 = ::std::os::raw::c_uchar;
pub type U16 = ::std::os::raw::c_ushort;
#[repr(C)]
#[repr(align(2))]
#[derive(Debug, Default, Copy, Clone)]
pub struct V56AMDY {
pub _bitfield_1: __BindgenBitfieldUnit<[u8; 2usize], u16>,
pub MADK: U8,
pub MABR: U8,
pub _bitfield_2: __BindgenBitfieldUnit<[u8; 4usize], u16>,
pub _rB_: U8,
}
#[test]
fn bindgen_test_layout_V56AMDY() {
assert_eq!(
::std::mem::size_of::<V56AMDY>(),
8usize,
concat!("Size of: ", stringify!(V56AMDY))
);
// ...
}
// ...
Layout Test:
test bindgen_test_layout_V56AMDY ... FAILED
failures:
---- bindgen_test_layout_V56AMDY stdout ----
thread 'bindgen_test_layout_V56AMDY' panicked at 'assertion failed: `(left == right)`
left: `10`,
right: `8`: Size of: V56AMDY', tests/struct_with_complex_bitfields.rs:109:5
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
failures:
bindgen_test_layout_V56AMDY
test result: FAILED. 0 passed; 1 failed; 0 ignored; 0 measured; 0 filtered out
Expected Results
Bindings:
/* automatically generated by rust-bindgen 0.56.0 */
// ...
pub type U8 = ::std::os::raw::c_uchar;
pub type U16 = ::std::os::raw::c_ushort;
#[repr(C)]
#[repr(align(2))]
#[derive(Debug, Default, Copy, Clone)]
pub struct V56AMDY {
pub _bitfield_1: __BindgenBitfieldUnit<[u8; 2usize], u16>,
pub MADK: U8,
pub MABR: U8,
pub _bitfield_2: __BindgenBitfieldUnit<[u8; 3usize], u16>,
pub _rB_: U8,
}
#[test]
fn bindgen_test_layout_V56AMDY() {
assert_eq!(
::std::mem::size_of::<V56AMDY>(),
8usize,
concat!("Size of: ", stringify!(V56AMDY))
);
// ...
}
// ...
Layout Test:
running 1 test
test bindgen_test_layout_V56AMDY ... ok
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out