summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorbors-servo <lbergstrom+bors@mozilla.com>2018-07-01 05:07:36 -0400
committerGitHub <noreply@github.com>2018-07-01 05:07:36 -0400
commitc3955ddeac236f4a6b967d5b8ddc8dc21238d152 (patch)
treea389e0dfd1a4ee9b9b156d560060ac2f12cc1a6f
parent0176a76fbfc861c70f7e93289c1c114de16e7282 (diff)
parenta64289400ccbd58d12341da26dd1f3bebb17f845 (diff)
Auto merge of #1342 - psumbera:master, r=emilio
Fix bitfields on big-endian machines. Fixes #1340
-rwxr-xr-xsrc/codegen/bitfield_unit.rs30
-rw-r--r--tests/expectations/tests/bitfield-32bit-overflow.rs30
-rw-r--r--tests/expectations/tests/bitfield-large.rs32
-rw-r--r--tests/expectations/tests/bitfield-method-same-name.rs32
-rw-r--r--tests/expectations/tests/bitfield_align.rs30
-rw-r--r--tests/expectations/tests/bitfield_align_2.rs30
-rw-r--r--tests/expectations/tests/bitfield_method_mangling.rs32
-rw-r--r--tests/expectations/tests/derive-bitfield-method-same-name.rs30
-rw-r--r--tests/expectations/tests/derive-debug-bitfield.rs32
-rw-r--r--tests/expectations/tests/derive-partialeq-bitfield.rs32
-rw-r--r--tests/expectations/tests/divide-by-zero-in-struct-layout.rs32
-rw-r--r--tests/expectations/tests/issue-1034.rs32
-rw-r--r--tests/expectations/tests/issue-1076-unnamed-bitfield-alignment.rs32
-rw-r--r--tests/expectations/tests/issue-739-pointer-wide-bitfield.rs30
-rw-r--r--tests/expectations/tests/issue-816.rs30
-rw-r--r--tests/expectations/tests/jsval_layout_opaque.rs30
-rw-r--r--tests/expectations/tests/jsval_layout_opaque_1_0.rs30
-rw-r--r--tests/expectations/tests/layout_align.rs32
-rw-r--r--tests/expectations/tests/layout_eth_conf.rs30
-rw-r--r--tests/expectations/tests/layout_eth_conf_1_0.rs30
-rw-r--r--tests/expectations/tests/layout_mbuf.rs30
-rw-r--r--tests/expectations/tests/layout_mbuf_1_0.rs30
-rw-r--r--tests/expectations/tests/only_bitfields.rs32
-rw-r--r--tests/expectations/tests/struct_with_bitfields.rs30
-rw-r--r--tests/expectations/tests/union_bitfield.rs32
-rw-r--r--tests/expectations/tests/union_bitfield_1_0.rs32
-rw-r--r--tests/expectations/tests/union_with_anon_struct_bitfield.rs32
-rw-r--r--tests/expectations/tests/union_with_anon_struct_bitfield_1_0.rs32
-rw-r--r--tests/expectations/tests/weird_bitfields.rs30
29 files changed, 754 insertions, 144 deletions
diff --git a/src/codegen/bitfield_unit.rs b/src/codegen/bitfield_unit.rs
index 3c7c9b7b..5256be07 100755
--- a/src/codegen/bitfield_unit.rs
+++ b/src/codegen/bitfield_unit.rs
@@ -27,7 +27,12 @@ where
let byte_index = index / 8;
let byte = self.storage.as_ref()[byte_index];
- let bit_index = index % 8;
+ let mut bit_index = index % 8;
+ #[cfg(target_endian = "big")]
+ {
+ // Adjust the index for endianness.
+ bit_index = 7 - bit_index;
+ }
let mask = 1 << bit_index;
byte & mask == mask
@@ -40,7 +45,12 @@ where
let byte_index = index / 8;
let byte = &mut self.storage.as_mut()[byte_index];
- let bit_index = index % 8;
+ let mut bit_index = index % 8;
+ #[cfg(target_endian = "big")]
+ {
+ // Adjust the index for endianness.
+ bit_index = 7 - bit_index;
+ }
let mask = 1 << bit_index;
if val {
@@ -60,7 +70,13 @@ where
for i in 0..(bit_width as usize) {
if self.get_bit(i + bit_offset) {
- val |= 1 << i;
+ let mut index = i;
+ #[cfg(target_endian = "big")]
+ {
+ // Adjust the index for endianness.
+ index = bit_width as usize - 1 - index;
+ }
+ val |= 1 << index;
}
}
@@ -76,7 +92,13 @@ where
for i in 0..(bit_width as usize) {
let mask = 1 << i;
let val_bit_is_set = val & mask == mask;
- self.set_bit(i + bit_offset, val_bit_is_set);
+ let mut index = i;
+ #[cfg(target_endian = "big")]
+ {
+ // Adjust the index for endianness.
+ index = bit_width as usize - 1 - index;
+ }
+ self.set_bit(index + bit_offset, val_bit_is_set);
}
}
}
diff --git a/tests/expectations/tests/bitfield-32bit-overflow.rs b/tests/expectations/tests/bitfield-32bit-overflow.rs
index 7270649e..224062fa 100644
--- a/tests/expectations/tests/bitfield-32bit-overflow.rs
+++ b/tests/expectations/tests/bitfield-32bit-overflow.rs
@@ -28,7 +28,12 @@ where
let byte_index = index / 8;
let byte = self.storage.as_ref()[byte_index];
- let bit_index = index % 8;
+ let mut bit_index = index % 8;
+ #[cfg(target_endian = "big")]
+ {
+ // Adjust the index for endianness.
+ bit_index = 7 - bit_index;
+ }
let mask = 1 << bit_index;
byte & mask == mask
@@ -41,7 +46,12 @@ where
let byte_index = index / 8;
let byte = &mut self.storage.as_mut()[byte_index];
- let bit_index = index % 8;
+ let mut bit_index = index % 8;
+ #[cfg(target_endian = "big")]
+ {
+ // Adjust the index for endianness.
+ bit_index = 7 - bit_index;
+ }
let mask = 1 << bit_index;
if val {
@@ -61,7 +71,13 @@ where
for i in 0..(bit_width as usize) {
if self.get_bit(i + bit_offset) {
- val |= 1 << i;
+ let mut index = i;
+ #[cfg(target_endian = "big")]
+ {
+ // Adjust the index for endianness.
+ index = bit_width as usize - 1 - index;
+ }
+ val |= 1 << index;
}
}
@@ -77,7 +93,13 @@ where
for i in 0..(bit_width as usize) {
let mask = 1 << i;
let val_bit_is_set = val & mask == mask;
- self.set_bit(i + bit_offset, val_bit_is_set);
+ let mut index = i;
+ #[cfg(target_endian = "big")]
+ {
+ // Adjust the index for endianness.
+ index = bit_width as usize - 1 - index;
+ }
+ self.set_bit(index + bit_offset, val_bit_is_set);
}
}
}
diff --git a/tests/expectations/tests/bitfield-large.rs b/tests/expectations/tests/bitfield-large.rs
index 7b93f119..4f8bc177 100644
--- a/tests/expectations/tests/bitfield-large.rs
+++ b/tests/expectations/tests/bitfield-large.rs
@@ -1,9 +1,7 @@
/* automatically generated by rust-bindgen */
-
#![allow(dead_code, non_snake_case, non_camel_case_types, non_upper_case_globals)]
-
#[repr(C)]
#[derive(Copy, Clone, Debug, Default, Eq, Hash, Ord, PartialEq, PartialOrd)]
pub struct __BindgenBitfieldUnit<Storage, Align>
@@ -30,7 +28,12 @@ where
let byte_index = index / 8;
let byte = self.storage.as_ref()[byte_index];
- let bit_index = index % 8;
+ let mut bit_index = index % 8;
+ #[cfg(target_endian = "big")]
+ {
+ // Adjust the index for endianness.
+ bit_index = 7 - bit_index;
+ }
let mask = 1 << bit_index;
byte & mask == mask
@@ -43,7 +46,12 @@ where
let byte_index = index / 8;
let byte = &mut self.storage.as_mut()[byte_index];
- let bit_index = index % 8;
+ let mut bit_index = index % 8;
+ #[cfg(target_endian = "big")]
+ {
+ // Adjust the index for endianness.
+ bit_index = 7 - bit_index;
+ }
let mask = 1 << bit_index;
if val {
@@ -63,7 +71,13 @@ where
for i in 0..(bit_width as usize) {
if self.get_bit(i + bit_offset) {
- val |= 1 << i;
+ let mut index = i;
+ #[cfg(target_endian = "big")]
+ {
+ // Adjust the index for endianness.
+ index = bit_width as usize - 1 - index;
+ }
+ val |= 1 << index;
}
}
@@ -79,7 +93,13 @@ where
for i in 0..(bit_width as usize) {
let mask = 1 << i;
let val_bit_is_set = val & mask == mask;
- self.set_bit(i + bit_offset, val_bit_is_set);
+ let mut index = i;
+ #[cfg(target_endian = "big")]
+ {
+ // Adjust the index for endianness.
+ index = bit_width as usize - 1 - index;
+ }
+ self.set_bit(index + bit_offset, val_bit_is_set);
}
}
}
diff --git a/tests/expectations/tests/bitfield-method-same-name.rs b/tests/expectations/tests/bitfield-method-same-name.rs
index b8700605..81678b68 100644
--- a/tests/expectations/tests/bitfield-method-same-name.rs
+++ b/tests/expectations/tests/bitfield-method-same-name.rs
@@ -1,9 +1,7 @@
/* automatically generated by rust-bindgen */
-
#![allow(dead_code, non_snake_case, non_camel_case_types, non_upper_case_globals)]
-
#[repr(C)]
#[derive(Copy, Clone, Debug, Default, Eq, Hash, Ord, PartialEq, PartialOrd)]
pub struct __BindgenBitfieldUnit<Storage, Align>
@@ -30,7 +28,12 @@ where
let byte_index = index / 8;
let byte = self.storage.as_ref()[byte_index];
- let bit_index = index % 8;
+ let mut bit_index = index % 8;
+ #[cfg(target_endian = "big")]
+ {
+ // Adjust the index for endianness.
+ bit_index = 7 - bit_index;
+ }
let mask = 1 << bit_index;
byte & mask == mask
@@ -43,7 +46,12 @@ where
let byte_index = index / 8;
let byte = &mut self.storage.as_mut()[byte_index];
- let bit_index = index % 8;
+ let mut bit_index = index % 8;
+ #[cfg(target_endian = "big")]
+ {
+ // Adjust the index for endianness.
+ bit_index = 7 - bit_index;
+ }
let mask = 1 << bit_index;
if val {
@@ -63,7 +71,13 @@ where
for i in 0..(bit_width as usize) {
if self.get_bit(i + bit_offset) {
- val |= 1 << i;
+ let mut index = i;
+ #[cfg(target_endian = "big")]
+ {
+ // Adjust the index for endianness.
+ index = bit_width as usize - 1 - index;
+ }
+ val |= 1 << index;
}
}
@@ -79,7 +93,13 @@ where
for i in 0..(bit_width as usize) {
let mask = 1 << i;
let val_bit_is_set = val & mask == mask;
- self.set_bit(i + bit_offset, val_bit_is_set);
+ let mut index = i;
+ #[cfg(target_endian = "big")]
+ {
+ // Adjust the index for endianness.
+ index = bit_width as usize - 1 - index;
+ }
+ self.set_bit(index + bit_offset, val_bit_is_set);
}
}
}
diff --git a/tests/expectations/tests/bitfield_align.rs b/tests/expectations/tests/bitfield_align.rs
index 9821aa6f..0b28a3fa 100644
--- a/tests/expectations/tests/bitfield_align.rs
+++ b/tests/expectations/tests/bitfield_align.rs
@@ -28,7 +28,12 @@ where
let byte_index = index / 8;
let byte = self.storage.as_ref()[byte_index];
- let bit_index = index % 8;
+ let mut bit_index = index % 8;
+ #[cfg(target_endian = "big")]
+ {
+ // Adjust the index for endianness.
+ bit_index = 7 - bit_index;
+ }
let mask = 1 << bit_index;
byte & mask == mask
@@ -41,7 +46,12 @@ where
let byte_index = index / 8;
let byte = &mut self.storage.as_mut()[byte_index];
- let bit_index = index % 8;
+ let mut bit_index = index % 8;
+ #[cfg(target_endian = "big")]
+ {
+ // Adjust the index for endianness.
+ bit_index = 7 - bit_index;
+ }
let mask = 1 << bit_index;
if val {
@@ -61,7 +71,13 @@ where
for i in 0..(bit_width as usize) {
if self.get_bit(i + bit_offset) {
- val |= 1 << i;
+ let mut index = i;
+ #[cfg(target_endian = "big")]
+ {
+ // Adjust the index for endianness.
+ index = bit_width as usize - 1 - index;
+ }
+ val |= 1 << index;
}
}
@@ -77,7 +93,13 @@ where
for i in 0..(bit_width as usize) {
let mask = 1 << i;
let val_bit_is_set = val & mask == mask;
- self.set_bit(i + bit_offset, val_bit_is_set);
+ let mut index = i;
+ #[cfg(target_endian = "big")]
+ {
+ // Adjust the index for endianness.
+ index = bit_width as usize - 1 - index;
+ }
+ self.set_bit(index + bit_offset, val_bit_is_set);
}
}
}
diff --git a/tests/expectations/tests/bitfield_align_2.rs b/tests/expectations/tests/bitfield_align_2.rs
index 5d63699d..7def5ebf 100644
--- a/tests/expectations/tests/bitfield_align_2.rs
+++ b/tests/expectations/tests/bitfield_align_2.rs
@@ -28,7 +28,12 @@ where
let byte_index = index / 8;
let byte = self.storage.as_ref()[byte_index];
- let bit_index = index % 8;
+ let mut bit_index = index % 8;
+ #[cfg(target_endian = "big")]
+ {
+ // Adjust the index for endianness.
+ bit_index = 7 - bit_index;
+ }
let mask = 1 << bit_index;
byte & mask == mask
@@ -41,7 +46,12 @@ where
let byte_index = index / 8;
let byte = &mut self.storage.as_mut()[byte_index];
- let bit_index = index % 8;
+ let mut bit_index = index % 8;
+ #[cfg(target_endian = "big")]
+ {
+ // Adjust the index for endianness.
+ bit_index = 7 - bit_index;
+ }
let mask = 1 << bit_index;
if val {
@@ -61,7 +71,13 @@ where
for i in 0..(bit_width as usize) {
if self.get_bit(i + bit_offset) {
- val |= 1 << i;
+ let mut index = i;
+ #[cfg(target_endian = "big")]
+ {
+ // Adjust the index for endianness.
+ index = bit_width as usize - 1 - index;
+ }
+ val |= 1 << index;
}
}
@@ -77,7 +93,13 @@ where
for i in 0..(bit_width as usize) {
let mask = 1 << i;
let val_bit_is_set = val & mask == mask;
- self.set_bit(i + bit_offset, val_bit_is_set);
+ let mut index = i;
+ #[cfg(target_endian = "big")]
+ {
+ // Adjust the index for endianness.
+ index = bit_width as usize - 1 - index;
+ }
+ self.set_bit(index + bit_offset, val_bit_is_set);
}
}
}
diff --git a/tests/expectations/tests/bitfield_method_mangling.rs b/tests/expectations/tests/bitfield_method_mangling.rs
index e557f92b..f0fafe8f 100644
--- a/tests/expectations/tests/bitfield_method_mangling.rs
+++ b/tests/expectations/tests/bitfield_method_mangling.rs
@@ -1,9 +1,7 @@
/* automatically generated by rust-bindgen */
-
#![allow(dead_code, non_snake_case, non_camel_case_types, non_upper_case_globals)]
-
#[repr(C)]
#[derive(Copy, Clone, Debug, Default, Eq, Hash, Ord, PartialEq, PartialOrd)]
pub struct __BindgenBitfieldUnit<Storage, Align>
@@ -30,7 +28,12 @@ where
let byte_index = index / 8;
let byte = self.storage.as_ref()[byte_index];
- let bit_index = index % 8;
+ let mut bit_index = index % 8;
+ #[cfg(target_endian = "big")]
+ {
+ // Adjust the index for endianness.
+ bit_index = 7 - bit_index;
+ }
let mask = 1 << bit_index;
byte & mask == mask
@@ -43,7 +46,12 @@ where
let byte_index = index / 8;
let byte = &mut self.storage.as_mut()[byte_index];
- let bit_index = index % 8;
+ let mut bit_index = index % 8;
+ #[cfg(target_endian = "big")]
+ {
+ // Adjust the index for endianness.
+ bit_index = 7 - bit_index;
+ }
let mask = 1 << bit_index;
if val {
@@ -63,7 +71,13 @@ where
for i in 0..(bit_width as usize) {
if self.get_bit(i + bit_offset) {
- val |= 1 << i;
+ let mut index = i;
+ #[cfg(target_endian = "big")]
+ {
+ // Adjust the index for endianness.
+ index = bit_width as usize - 1 - index;
+ }
+ val |= 1 << index;
}
}
@@ -79,7 +93,13 @@ where
for i in 0..(bit_width as usize) {
let mask = 1 << i;
let val_bit_is_set = val & mask == mask;
- self.set_bit(i + bit_offset, val_bit_is_set);
+ let mut index = i;
+ #[cfg(target_endian = "big")]
+ {
+ // Adjust the index for endianness.
+ index = bit_width as usize - 1 - index;
+ }
+ self.set_bit(index + bit_offset, val_bit_is_set);
}
}
}
diff --git a/tests/expectations/tests/derive-bitfield-method-same-name.rs b/tests/expectations/tests/derive-bitfield-method-same-name.rs
index f9d29afd..43168660 100644
--- a/tests/expectations/tests/derive-bitfield-method-same-name.rs
+++ b/tests/expectations/tests/derive-bitfield-method-same-name.rs
@@ -28,7 +28,12 @@ where
let byte_index = index / 8;
let byte = self.storage.as_ref()[byte_index];
- let bit_index = index % 8;
+ let mut bit_index = index % 8;
+ #[cfg(target_endian = "big")]
+ {
+ // Adjust the index for endianness.
+ bit_index = 7 - bit_index;
+ }
let mask = 1 << bit_index;
byte & mask == mask
@@ -41,7 +46,12 @@ where
let byte_index = index / 8;
let byte = &mut self.storage.as_mut()[byte_index];
- let bit_index = index % 8;
+ let mut bit_index = index % 8;
+ #[cfg(target_endian = "big")]
+ {
+ // Adjust the index for endianness.
+ bit_index = 7 - bit_index;
+ }
let mask = 1 << bit_index;
if val {
@@ -61,7 +71,13 @@ where
for i in 0..(bit_width as usize) {
if self.get_bit(i + bit_offset) {
- val |= 1 << i;
+ let mut index = i;
+ #[cfg(target_endian = "big")]
+ {
+ // Adjust the index for endianness.
+ index = bit_width as usize - 1 - index;
+ }
+ val |= 1 << index;
}
}
@@ -77,7 +93,13 @@ where
for i in 0..(bit_width as usize) {
let mask = 1 << i;
let val_bit_is_set = val & mask == mask;
- self.set_bit(i + bit_offset, val_bit_is_set);
+ let mut index = i;
+ #[cfg(target_endian = "big")]
+ {
+ // Adjust the index for endianness.
+ index = bit_width as usize - 1 - index;
+ }
+ self.set_bit(index + bit_offset, val_bit_is_set);
}
}
}
diff --git a/tests/expectations/tests/derive-debug-bitfield.rs b/tests/expectations/tests/derive-debug-bitfield.rs
index 3743b8d9..a231c643 100644
--- a/tests/expectations/tests/derive-debug-bitfield.rs
+++ b/tests/expectations/tests/derive-debug-bitfield.rs
@@ -1,9 +1,7 @@
/* automatically generated by rust-bindgen */
-
#![allow(dead_code, non_snake_case, non_camel_case_types, non_upper_case_globals)]
-
#[repr(C)]
#[derive(Copy, Clone, Debug, Default, Eq, Hash, Ord, PartialEq, PartialOrd)]
pub struct __BindgenBitfieldUnit<Storage, Align>
@@ -30,7 +28,12 @@ where
let byte_index = index / 8;
let byte = self.storage.as_ref()[byte_index];
- let bit_index = index % 8;
+ let mut bit_index = index % 8;
+ #[cfg(target_endian = "big")]
+ {
+ // Adjust the index for endianness.
+ bit_index = 7 - bit_index;
+ }
let mask = 1 << bit_index;
byte & mask == mask
@@ -43,7 +46,12 @@ where
let byte_index = index / 8;
let byte = &mut self.storage.as_mut()[byte_index];
- let bit_index = index % 8;
+ let mut bit_index = index % 8;
+ #[cfg(target_endian = "big")]
+ {
+ // Adjust the index for endianness.
+ bit_index = 7 - bit_index;
+ }
let mask = 1 << bit_index;
if val {
@@ -63,7 +71,13 @@ where
for i in 0..(bit_width as usize) {
if self.get_bit(i + bit_offset) {
- val |= 1 << i;
+ let mut index = i;
+ #[cfg(target_endian = "big")]
+ {
+ // Adjust the index for endianness.
+ index = bit_width as usize - 1 - index;
+ }
+ val |= 1 << index;
}
}
@@ -79,7 +93,13 @@ where
for i in 0..(bit_width as usize) {
let mask = 1 << i;
let val_bit_is_set = val & mask == mask;
- self.set_bit(i + bit_offset, val_bit_is_set);
+ let mut index = i;
+ #[cfg(target_endian = "big")]
+ {
+ // Adjust the index for endianness.
+ index = bit_width as usize - 1 - index;
+ }
+ self.set_bit(index + bit_offset, val_bit_is_set);
}
}
}
diff --git a/tests/expectations/tests/derive-partialeq-bitfield.rs b/tests/expectations/tests/derive-partialeq-bitfield.rs
index a3715b0c..e707ca77 100644
--- a/tests/expectations/tests/derive-partialeq-bitfield.rs
+++ b/tests/expectations/tests/derive-partialeq-bitfield.rs
@@ -1,9 +1,7 @@
/* automatically generated by rust-bindgen */
-
#![allow(dead_code, non_snake_case, non_camel_case_types, non_upper_case_globals)]
-
#[repr(C)]
#[derive(Copy, Clone, Debug, Default, Eq, Hash, Ord, PartialEq, PartialOrd)]
pub struct __BindgenBitfieldUnit<Storage, Align>
@@ -30,7 +28,12 @@ where
let byte_index = index / 8;
let byte = self.storage.as_ref()[byte_index];
- let bit_index = index % 8;
+ let mut bit_index = index % 8;
+ #[cfg(target_endian = "big")]
+ {
+ // Adjust the index for endianness.
+ bit_index = 7 - bit_index;
+ }
let mask = 1 << bit_index;
byte & mask == mask
@@ -43,7 +46,12 @@ where
let byte_index = index / 8;
let byte = &mut self.storage.as_mut()[byte_index];
- let bit_index = index % 8;
+ let mut bit_index = index % 8;
+ #[cfg(target_endian = "big")]
+ {
+ // Adjust the index for endianness.
+ bit_index = 7 - bit_index;
+ }
let mask = 1 << bit_index;
if val {
@@ -63,7 +71,13 @@ where
for i in 0..(bit_width as usize) {
if self.get_bit(i + bit_offset) {
- val |= 1 << i;
+ let mut index = i;
+ #[cfg(target_endian = "big")]
+ {
+ // Adjust the index for endianness.
+ index = bit_width as usize - 1 - index;
+ }
+ val |= 1 << index;
}
}
@@ -79,7 +93,13 @@ where
for i in 0..(bit_width as usize) {
let mask = 1 << i;
let val_bit_is_set = val & mask == mask;
- self.set_bit(i + bit_offset, val_bit_is_set);
+ let mut index = i;
+ #[cfg(target_endian = "big")]
+ {
+ // Adjust the index for endianness.
+ index = bit_width as usize - 1 - index;
+ }
+ self.set_bit(index + bit_offset, val_bit_is_set);
}
}
}
diff --git a/tests/expectations/tests/divide-by-zero-in-struct-layout.rs b/tests/expectations/tests/divide-by-zero-in-struct-layout.rs
index 97093321..f0a6e7b0 100644
--- a/tests/expectations/tests/divide-by-zero-in-struct-layout.rs
+++ b/tests/expectations/tests/divide-by-zero-in-struct-layout.rs
@@ -1,9 +1,7 @@
/* automatically generated by rust-bindgen */
-
#![allow(dead_code, non_snake_case, non_camel_case_types, non_upper_case_globals)]
-
#[repr(C)]
#[derive(Copy, Clone, Debug, Default, Eq, Hash, Ord, PartialEq, PartialOrd)]
pub struct __BindgenBitfieldUnit<Storage, Align>
@@ -30,7 +28,12 @@ where
let byte_index = index / 8;
let byte = self.storage.as_ref()[byte_index];
- let bit_index = index % 8;
+ let mut bit_index = index % 8;
+ #[cfg(target_endian = "big")]
+ {
+ // Adjust the index for endianness.
+ bit_index = 7 - bit_index;
+ }
let mask = 1 << bit_index;
byte & mask == mask
@@ -43,7 +46,12 @@ where
let byte_index = index / 8;
let byte = &mut self.storage.as_mut()[byte_index];
- let bit_index = index % 8;
+ let mut bit_index = index % 8;
+ #[cfg(target_endian = "big")]
+ {
+ // Adjust the index for endianness.
+ bit_index = 7 - bit_index;
+ }
let mask = 1 << bit_index;
if val {
@@ -63,7 +71,13 @@ where
for i in 0..(bit_width as usize) {
if self.get_bit(i + bit_offset) {
- val |= 1 << i;
+ let mut index = i;
+ #[cfg(target_endian = "big")]
+ {
+ // Adjust the index for endianness.
+ index = bit_width as usize - 1 - index;
+ }
+ val |= 1 << index;
}
}
@@ -79,7 +93,13 @@ where
for i in 0..(bit_width as usize) {
let mask = 1 << i;
let val_bit_is_set = val & mask == mask;
- self.set_bit(i + bit_offset, val_bit_is_set);
+ let mut index = i;
+ #[cfg(target_endian = "big")]
+ {
+ // Adjust the index for endianness.
+ index = bit_width as usize - 1 - index;
+ }
+ self.set_bit(index + bit_offset, val_bit_is_set);
}
}
}
diff --git a/tests/expectations/tests/issue-1034.rs b/tests/expectations/tests/issue-1034.rs
index 687c4305..ea8626a5 100644
--- a/tests/expectations/tests/issue-1034.rs
+++ b/tests/expectations/tests/issue-1034.rs
@@ -1,9 +1,7 @@
/* automatically generated by rust-bindgen */
-
#![allow(dead_code, non_snake_case, non_camel_case_types, non_upper_case_globals)]
-
#[repr(C)]
#[derive(Copy, Clone, Debug, Default, Eq, Hash, Ord, PartialEq, PartialOrd)]
pub struct __BindgenBitfieldUnit<Storage, Align>
@@ -30,7 +28,12 @@ where
let byte_index = index / 8;
let byte = self.storage.as_ref()[byte_index];
- let bit_index = index % 8;
+ let mut bit_index = index % 8;
+ #[cfg(target_endian = "big")]
+ {
+ // Adjust the index for endianness.
+ bit_index = 7 - bit_index;
+ }
let mask = 1 << bit_index;
byte & mask == mask
@@ -43,7 +46,12 @@ where
let byte_index = index / 8;
let byte = &mut self.storage.as_mut()[byte_index];
- let bit_index = index % 8;
+ let mut bit_index = index % 8;
+ #[cfg(target_endian = "big")]
+ {
+ // Adjust the index for endianness.
+ bit_index = 7 - bit_index;
+ }
let mask = 1 << bit_index;
if val {
@@ -63,7 +71,13 @@ where
for i in 0..(bit_width as usize) {
if self.get_bit(i + bit_offset) {
- val |= 1 << i;
+ let mut index = i;
+ #[cfg(target_endian = "big")]
+ {
+ // Adjust the index for endianness.
+ index = bit_width as usize - 1 - index;
+ }
+ val |= 1 << index;
}
}
@@ -79,7 +93,13 @@ where
for i in 0..(bit_width as usize) {
let mask = 1 << i;
let val_bit_is_set = val & mask == mask;
- self.set_bit(i + bit_offset, val_bit_is_set);
+ let mut index = i;
+ #[cfg(target_endian = "big")]
+ {
+ // Adjust the index for endianness.
+ index = bit_width as usize - 1 - index;
+ }
+ self.set_bit(index + bit_offset, val_bit_is_set);
}
}
}
diff --git a/tests/expectations/tests/issue-1076-unnamed-bitfield-alignment.rs b/tests/expectations/tests/issue-1076-unnamed-bitfield-alignment.rs
index a8a52099..b2837592 100644
--- a/tests/expectations/tests/issue-1076-unnamed-bitfield-alignment.rs
+++ b/tests/expectations/tests/issue-1076-unnamed-bitfield-alignment.rs
@@ -1,9 +1,7 @@
/* automatically generated by rust-bindgen */
-
#![allow(dead_code, non_snake_case, non_camel_case_types, non_upper_case_globals)]
-
#[repr(C)]
#[derive(Copy, Clone, Debug, Default, Eq, Hash, Ord, PartialEq, PartialOrd)]
pub struct __BindgenBitfieldUnit<Storage, Align>
@@ -30,7 +28,12 @@ where
let byte_index = index / 8;
let byte = self.storage.as_ref()[byte_index];
- let bit_index = index % 8;
+ let mut bit_index = index % 8;
+ #[cfg(target_endian = "big")]
+ {
+ // Adjust the index for endianness.
+ bit_index = 7 - bit_index;
+ }
let mask = 1 << bit_index;
byte & mask == mask
@@ -43,7 +46,12 @@ where
let byte_index = index / 8;
let byte = &mut self.storage.as_mut()[byte_index];
- let bit_index = index % 8;
+ let mut bit_index = index % 8;
+ #[cfg(target_endian = "big")]
+ {
+ // Adjust the index for endianness.
+ bit_index = 7 - bit_index;
+ }
let mask = 1 << bit_index;
if val {
@@ -63,7 +71,13 @@ where
for i in 0..(bit_width as usize) {
if self.get_bit(i + bit_offset) {
- val |= 1 << i;
+ let mut index = i;
+ #[cfg(target_endian = "big")]
+ {
+ // Adjust the index for endianness.
+ index = bit_width as usize - 1 - index;
+ }
+ val |= 1 << index;
}
}
@@ -79,7 +93,13 @@ where
for i in 0..(bit_width as usize) {
let mask = 1 << i;
let val_bit_is_set = val & mask == mask;
- self.set_bit(i + bit_offset, val_bit_is_set);
+ let mut index = i;
+ #[cfg(target_endian = "big")]
+ {
+ // Adjust the index for endianness.
+ index = bit_width as usize - 1 - index;
+ }
+ self.set_bit(index + bit_offset, val_bit_is_set);
}
}
}
diff --git a/tests/expectations/tests/issue-739-pointer-wide-bitfield.rs b/tests/expectations/tests/issue-739-pointer-wide-bitfield.rs
index 81c32bbf..4a488c21 100644
--- a/tests/expectations/tests/issue-739-pointer-wide-bitfield.rs
+++ b/tests/expectations/tests/issue-739-pointer-wide-bitfield.rs
@@ -28,7 +28,12 @@ where
let byte_index = index / 8;
let byte = self.storage.as_ref()[byte_index];
- let bit_index = index % 8;
+ let mut bit_index = index % 8;
+ #[cfg(target_endian = "big")]
+ {
+ // Adjust the index for endianness.
+ bit_index = 7 - bit_index;
+ }
let mask = 1 << bit_index;
byte & mask == mask
@@ -41,7 +46,12 @@ where
let byte_index = index / 8;
let byte = &mut self.storage.as_mut()[byte_index];
- let bit_index = index % 8;
+ let mut bit_index = index % 8;
+ #[cfg(target_endian = "big")]
+ {
+ // Adjust the index for endianness.
+ bit_index = 7 - bit_index;
+ }
let mask = 1 << bit_index;
if val {
@@ -61,7 +71,13 @@ where
for i in 0..(bit_width as usize) {
if self.get_bit(i + bit_offset) {
- val |= 1 << i;
+ let mut index = i;
+ #[cfg(target_endian = "big")]
+ {
+ // Adjust the index for endianness.
+ index = bit_width as usize - 1 - index;
+ }
+ val |= 1 << index;
}
}
@@ -77,7 +93,13 @@ where
for i in 0..(bit_width as usize) {
let mask = 1 << i;
let val_bit_is_set = val & mask == mask;
- self.set_bit(i + bit_offset, val_bit_is_set);
+ let mut index = i;
+ #[cfg(target_endian = "big")]
+ {
+ // Adjust the index for endianness.
+ index = bit_width as usize - 1 - index;
+ }
+ self.set_bit(index + bit_offset, val_bit_is_set);
}
}
}
diff --git a/tests/expectations/tests/issue-816.rs b/tests/expectations/tests/issue-816.rs
index 555769a2..f2dd5be7 100644
--- a/tests/expectations/tests/issue-816.rs
+++ b/tests/expectations/tests/issue-816.rs
@@ -28,7 +28,12 @@ where
let byte_index = index / 8;
let byte = self.storage.as_ref()[byte_index];
- let bit_index = index % 8;
+ let mut bit_index = index % 8;
+ #[cfg(target_endian = "big")]
+ {
+ // Adjust the index for endianness.
+ bit_index = 7 - bit_index;
+ }
let mask = 1 << bit_index;
byte & mask == mask
@@ -41,7 +46,12 @@ where
let byte_index = index / 8;
let byte = &mut self.storage.as_mut()[byte_index];
- let bit_index = index % 8;
+ let mut bit_index = index % 8;
+ #[cfg(target_endian = "big")]
+ {
+ // Adjust the index for endianness.
+ bit_index = 7 - bit_index;
+ }
let mask = 1 << bit_index;
if val {
@@ -61,7 +71,13 @@ where
for i in 0..(bit_width as usize) {
if self.get_bit(i + bit_offset) {
- val |= 1 << i;
+ let mut index = i;
+ #[cfg(target_endian = "big")]
+ {
+ // Adjust the index for endianness.
+ index = bit_width as usize - 1 - index;
+ }
+ val |= 1 << index;
}
}
@@ -77,7 +93,13 @@ where
for i in 0..(bit_width as usize) {
let mask = 1 << i;
let val_bit_is_set = val & mask == mask;
- self.set_bit(i + bit_offset, val_bit_is_set);
+ let mut index = i;
+ #[cfg(target_endian = "big")]
+ {
+ // Adjust the index for endianness.
+ index = bit_width as usize - 1 - index;
+ }
+ self.set_bit(index + bit_offset, val_bit_is_set);
}
}
}
diff --git a/tests/expectations/tests/jsval_layout_opaque.rs b/tests/expectations/tests/jsval_layout_opaque.rs
index 7e047f6a..27de4301 100644
--- a/tests/expectations/tests/jsval_layout_opaque.rs
+++ b/tests/expectations/tests/jsval_layout_opaque.rs
@@ -28,7 +28,12 @@ where
let byte_index = index / 8;
let byte = self.storage.as_ref()[byte_index];
- let bit_index = index % 8;
+ let mut bit_index = index % 8;
+ #[cfg(target_endian = "big")]
+ {
+ // Adjust the index for endianness.
+ bit_index = 7 - bit_index;
+ }
let mask = 1 << bit_index;
byte & mask == mask
@@ -41,7 +46,12 @@ where
let byte_index = index / 8;
let byte = &mut self.storage.as_mut()[byte_index];
- let bit_index = index % 8;
+ let mut bit_index = index % 8;
+ #[cfg(target_endian = "big")]
+ {
+ // Adjust the index for endianness.
+ bit_index = 7 - bit_index;
+ }
let mask = 1 << bit_index;
if val {
@@ -61,7 +71,13 @@ where
for i in 0..(bit_width as usize) {
if self.get_bit(i + bit_offset) {
- val |= 1 << i;
+ let mut index = i;
+ #[cfg(target_endian = "big")]
+ {
+ // Adjust the index for endianness.
+ index = bit_width as usize - 1 - index;
+ }
+ val |= 1 << index;
}
}
@@ -77,7 +93,13 @@ where
for i in 0..(bit_width as usize) {
let mask = 1 << i;
let val_bit_is_set = val & mask == mask;
- self.set_bit(i + bit_offset, val_bit_is_set);
+ let mut index = i;
+ #[cfg(target_endian = "big")]
+ {
+ // Adjust the index for endianness.
+ index = bit_width as usize - 1 - index;
+ }
+ self.set_bit(index + bit_offset, val_bit_is_set);
}
}
}
diff --git a/tests/expectations/tests/jsval_layout_opaque_1_0.rs b/tests/expectations/tests/jsval_layout_opaque_1_0.rs
index 29ce27ad..145a58e7 100644
--- a/tests/expectations/tests/jsval_layout_opaque_1_0.rs
+++ b/tests/expectations/tests/jsval_layout_opaque_1_0.rs
@@ -28,7 +28,12 @@ where
let byte_index = index / 8;
let byte = self.storage.as_ref()[byte_index];
- let bit_index = index % 8;
+ let mut bit_index = index % 8;
+ #[cfg(target_endian = "big")]
+ {
+ // Adjust the index for endianness.
+ bit_index = 7 - bit_index;
+ }
let mask = 1 << bit_index;
byte & mask == mask
@@ -41,7 +46,12 @@ where
let byte_index = index / 8;
let byte = &mut self.storage.as_mut()[byte_index];
- let bit_index = index % 8;
+ let mut bit_index = index % 8;
+ #[cfg(target_endian = "big")]
+ {
+ // Adjust the index for endianness.
+ bit_index = 7 - bit_index;
+ }
let mask = 1 << bit_index;
if val {
@@ -61,7 +71,13 @@ where
for i in 0..(bit_width as usize) {
if self.get_bit(i + bit_offset) {
- val |= 1 << i;
+ let mut index = i;
+ #[cfg(target_endian = "big")]
+ {
+ // Adjust the index for endianness.
+ index = bit_width as usize - 1 - index;
+ }
+ val |= 1 << index;
}
}
@@ -77,7 +93,13 @@ where
for i in 0..(bit_width as usize) {
let mask = 1 << i;
let val_bit_is_set = val & mask == mask;
- self.set_bit(i + bit_offset, val_bit_is_set);
+ let mut index = i;
+ #[cfg(target_endian = "big")]
+ {
+ // Adjust the index for endianness.
+ index = bit_width as usize - 1 - index;
+ }
+ self.set_bit(index + bit_offset, val_bit_is_set);
}
}
}
diff --git a/tests/expectations/tests/layout_align.rs b/tests/expectations/tests/layout_align.rs
index a0f7f8ad..a101820d 100644
--- a/tests/expectations/tests/layout_align.rs
+++ b/tests/expectations/tests/layout_align.rs
@@ -1,9 +1,7 @@
/* automatically generated by rust-bindgen */
-
#![allow(dead_code, non_snake_case, non_camel_case_types, non_upper_case_globals)]
-
#[repr(C)]
#[derive(Copy, Clone, Debug, Default, Eq, Hash, Ord, PartialEq, PartialOrd)]
pub struct __BindgenBitfieldUnit<Storage, Align>
@@ -30,7 +28,12 @@ where
let byte_index = index / 8;
let byte = self.storage.as_ref()[byte_index];
- let bit_index = index % 8;
+ let mut bit_index = index % 8;
+ #[cfg(target_endian = "big")]
+ {
+ // Adjust the index for endianness.
+ bit_index = 7 - bit_index;
+ }
let mask = 1 << bit_index;
byte & mask == mask
@@ -43,7 +46,12 @@ where
let byte_index = index / 8;
let byte = &mut self.storage.as_mut()[byte_index];
- let bit_index = index % 8;
+ let mut bit_index = index % 8;
+ #[cfg(target_endian = "big")]
+ {
+ // Adjust the index for endianness.
+ bit_index = 7 - bit_index;
+ }
let mask = 1 << bit_index;
if val {
@@ -63,7 +71,13 @@ where
for i in 0..(bit_width as usize) {
if self.get_bit(i + bit_offset) {
- val |= 1 << i;
+ let mut index = i;
+ #[cfg(target_endian = "big")]
+ {
+ // Adjust the index for endianness.
+ index = bit_width as usize - 1 - index;
+ }
+ val |= 1 << index;
}
}
@@ -79,7 +93,13 @@ where
for i in 0..(bit_width as usize) {
let mask = 1 << i;
let val_bit_is_set = val & mask == mask;
- self.set_bit(i + bit_offset, val_bit_is_set);
+ let mut index = i;
+ #[cfg(target_endian = "big")]
+ {
+ // Adjust the index for endianness.
+ index = bit_width as usize - 1 - index;
+ }
+ self.set_bit(index + bit_offset, val_bit_is_set);
}
}
}
diff --git a/tests/expectations/tests/layout_eth_conf.rs b/tests/expectations/tests/layout_eth_conf.rs
index 71d03ef6..9fb9e9c7 100644
--- a/tests/expectations/tests/layout_eth_conf.rs
+++ b/tests/expectations/tests/layout_eth_conf.rs
@@ -28,7 +28,12 @@ where
let byte_index = index / 8;
let byte = self.storage.as_ref()[byte_index];
- let bit_index = index % 8;
+ let mut bit_index = index % 8;
+ #[cfg(target_endian = "big")]
+ {
+ // Adjust the index for endianness.
+ bit_index = 7 - bit_index;
+ }
let mask = 1 << bit_index;
byte & mask == mask
@@ -41,7 +46,12 @@ where
let byte_index = index / 8;
let byte = &mut self.storage.as_mut()[byte_index];
- let bit_index = index % 8;
+ let mut bit_index = index % 8;
+ #[cfg(target_endian = "big")]
+ {
+ // Adjust the index for endianness.
+ bit_index = 7 - bit_index;
+ }
let mask = 1 << bit_index;
if val {
@@ -61,7 +71,13 @@ where
for i in 0..(bit_width as usize) {
if self.get_bit(i + bit_offset) {
- val |= 1 << i;
+ let mut index = i;
+ #[cfg(target_endian = "big")]
+ {
+ // Adjust the index for endianness.
+ index = bit_width as usize - 1 - index;
+ }
+ val |= 1 << index;
}
}
@@ -77,7 +93,13 @@ where
for i in 0..(bit_width as usize) {
let mask = 1 << i;
let val_bit_is_set = val & mask == mask;
- self.set_bit(i + bit_offset, val_bit_is_set);
+ let mut index = i;
+ #[cfg(target_endian = "big")]
+ {
+ // Adjust the index for endianness.
+ index = bit_width as usize - 1 - index;
+ }
+ self.set_bit(index + bit_offset, val_bit_is_set);
}
}
}
diff --git a/tests/expectations/tests/layout_eth_conf_1_0.rs b/tests/expectations/tests/layout_eth_conf_1_0.rs
index e9a09f54..98dd4bf9 100644
--- a/tests/expectations/tests/layout_eth_conf_1_0.rs
+++ b/tests/expectations/tests/layout_eth_conf_1_0.rs
@@ -28,7 +28,12 @@ where
let byte_index = index / 8;
let byte = self.storage.as_ref()[byte_index];
- let bit_index = index % 8;
+ let mut bit_index = index % 8;
+ #[cfg(target_endian = "big")]
+ {
+ // Adjust the index for endianness.
+ bit_index = 7 - bit_index;
+ }
let mask = 1 << bit_index;
byte & mask == mask
@@ -41,7 +46,12 @@ where
let byte_index = index / 8;
let byte = &mut self.storage.as_mut()[byte_index];
- let bit_index = index % 8;
+ let mut bit_index = index % 8;
+ #[cfg(target_endian = "big")]
+ {
+ // Adjust the index for endianness.
+ bit_index = 7 - bit_index;
+ }
let mask = 1 << bit_index;
if val {
@@ -61,7 +71,13 @@ where
for i in 0..(bit_width as usize) {
if self.get_bit(i + bit_offset) {
- val |= 1 << i;
+ let mut index = i;
+ #[cfg(target_endian = "big")]
+ {
+ // Adjust the index for endianness.
+ index = bit_width as usize - 1 - index;
+ }
+ val |= 1 << index;
}
}
@@ -77,7 +93,13 @@ where
for i in 0..(bit_width as usize) {
let mask = 1 << i;
let val_bit_is_set = val & mask == mask;
- self.set_bit(i + bit_offset, val_bit_is_set);
+ let mut index = i;
+ #[cfg(target_endian = "big")]
+ {
+ // Adjust the index for endianness.
+ index = bit_width as usize - 1 - index;
+ }
+ self.set_bit(index + bit_offset, val_bit_is_set);
}
}
}
diff --git a/tests/expectations/tests/layout_mbuf.rs b/tests/expectations/tests/layout_mbuf.rs
index c42cd0ba..7911b78d 100644
--- a/tests/expectations/tests/layout_mbuf.rs
+++ b/tests/expectations/tests/layout_mbuf.rs
@@ -28,7 +28,12 @@ where
let byte_index = index / 8;
let byte = self.storage.as_ref()[byte_index];
- let bit_index = index % 8;
+ let mut bit_index = index % 8;
+ #[cfg(target_endian = "big")]
+ {
+ // Adjust the index for endianness.
+ bit_index = 7 - bit_index;
+ }
let mask = 1 << bit_index;
byte & mask == mask
@@ -41,7 +46,12 @@ where
let byte_index = index / 8;
let byte = &mut self.storage.as_mut()[byte_index];
- let bit_index = index % 8;
+ let mut bit_index = index % 8;
+ #[cfg(target_endian = "big")]
+ {
+ // Adjust the index for endianness.
+ bit_index = 7 - bit_index;
+ }
let mask = 1 << bit_index;
if val {
@@ -61,7 +71,13 @@ where
for i in 0..(bit_width as usize) {
if self.get_bit(i + bit_offset) {
- val |= 1 << i;
+ let mut index = i;
+ #[cfg(target_endian = "big")]
+ {
+ // Adjust the index for endianness.
+ index = bit_width as usize - 1 - index;
+ }
+ val |= 1 << index;
}
}
@@ -77,7 +93,13 @@ where
for i in 0..(bit_width as usize) {
let mask = 1 << i;
let val_bit_is_set = val & mask == mask;
- self.set_bit(i + bit_offset, val_bit_is_set);
+ let mut index = i;
+ #[cfg(target_endian = "big")]
+ {
+ // Adjust the index for endianness.
+ index = bit_width as usize - 1 - index;
+ }
+ self.set_bit(index + bit_offset, val_bit_is_set);
}
}
}
diff --git a/tests/expectations/tests/layout_mbuf_1_0.rs b/tests/expectations/tests/layout_mbuf_1_0.rs
index 2fd51418..485d82f8 100644
--- a/tests/expectations/tests/layout_mbuf_1_0.rs
+++ b/tests/expectations/tests/layout_mbuf_1_0.rs
@@ -28,7 +28,12 @@ where
let byte_index = index / 8;
let byte = self.storage.as_ref()[byte_index];
- let bit_index = index % 8;
+ let mut bit_index = index % 8;
+ #[cfg(target_endian = "big")]
+ {
+ // Adjust the index for endianness.
+ bit_index = 7 - bit_index;
+ }
let mask = 1 << bit_index;
byte & mask == mask
@@ -41,7 +46,12 @@ where
let byte_index = index / 8;
let byte = &mut self.storage.as_mut()[byte_index];
- let bit_index = index % 8;
+ let mut bit_index = index % 8;
+ #[cfg(target_endian = "big")]
+ {
+ // Adjust the index for endianness.
+ bit_index = 7 - bit_index;
+ }
let mask = 1 << bit_index;
if val {
@@ -61,7 +71,13 @@ where
for i in 0..(bit_width as usize) {
if self.get_bit(i + bit_offset) {
- val |= 1 << i;
+ let mut index = i;
+ #[cfg(target_endian = "big")]
+ {
+ // Adjust the index for endianness.
+ index = bit_width as usize - 1 - index;
+ }
+ val |= 1 << index;
}
}
@@ -77,7 +93,13 @@ where
for i in 0..(bit_width as usize) {
let mask = 1 << i;
let val_bit_is_set = val & mask == mask;
- self.set_bit(i + bit_offset, val_bit_is_set);
+ let mut index = i;
+ #[cfg(target_endian = "big")]
+ {
+ // Adjust the index for endianness.
+ index = bit_width as usize - 1 - index;
+ }
+ self.set_bit(index + bit_offset, val_bit_is_set);
}
}
}
diff --git a/tests/expectations/tests/only_bitfields.rs b/tests/expectations/tests/only_bitfields.rs
index 09bd8737..7a512ed5 100644
--- a/tests/expectations/tests/only_bitfields.rs
+++ b/tests/expectations/tests/only_bitfields.rs
@@ -1,9 +1,7 @@
/* automatically generated by rust-bindgen */
-
#![allow(dead_code, non_snake_case, non_camel_case_types, non_upper_case_globals)]
-
#[repr(C)]
#[derive(Copy, Clone, Debug, Default, Eq, Hash, Ord, PartialEq, PartialOrd)]
pub struct __BindgenBitfieldUnit<Storage, Align>
@@ -30,7 +28,12 @@ where
let byte_index = index / 8;
let byte = self.storage.as_ref()[byte_index];
- let bit_index = index % 8;
+ let mut bit_index = index % 8;
+ #[cfg(target_endian = "big")]
+ {
+ // Adjust the index for endianness.
+ bit_index = 7 - bit_index;
+ }
let mask = 1 << bit_index;
byte & mask == mask
@@ -43,7 +46,12 @@ where
let byte_index = index / 8;
let byte = &mut self.storage.as_mut()[byte_index];
- let bit_index = index % 8;
+ let mut bit_index = index % 8;
+ #[cfg(target_endian = "big")]
+ {
+ // Adjust the index for endianness.
+ bit_index = 7 - bit_index;
+ }
let mask = 1 << bit_index;
if val {
@@ -63,7 +71,13 @@ where
for i in 0..(bit_width as usize) {
if self.get_bit(i + bit_offset) {
- val |= 1 << i;
+ let mut index = i;
+ #[cfg(target_endian = "big")]
+ {
+ // Adjust the index for endianness.
+ index = bit_width as usize - 1 - index;
+ }
+ val |= 1 << index;
}
}
@@ -79,7 +93,13 @@ where
for i in 0..(bit_width as usize) {
let mask = 1 << i;
let val_bit_is_set = val & mask == mask;
- self.set_bit(i + bit_offset, val_bit_is_set);
+ let mut index = i;
+ #[cfg(target_endian = "big")]
+ {
+ // Adjust the index for endianness.
+ index = bit_width as usize - 1 - index;
+ }
+ self.set_bit(index + bit_offset, val_bit_is_set);
}
}
}
diff --git a/tests/expectations/tests/struct_with_bitfields.rs b/tests/expectations/tests/struct_with_bitfields.rs
index a45472d5..7f3887b4 100644
--- a/tests/expectations/tests/struct_with_bitfields.rs
+++ b/tests/expectations/tests/struct_with_bitfields.rs
@@ -28,7 +28,12 @@ where
let byte_index = index / 8;
let byte = self.storage.as_ref()[byte_index];
- let bit_index = index % 8;
+ let mut bit_index = index % 8;
+ #[cfg(target_endian = "big")]
+ {
+ // Adjust the index for endianness.
+ bit_index = 7 - bit_index;
+ }
let mask = 1 << bit_index;
byte & mask == mask
@@ -41,7 +46,12 @@ where
let byte_index = index / 8;
let byte = &mut self.storage.as_mut()[byte_index];
- let bit_index = index % 8;
+ let mut bit_index = index % 8;
+ #[cfg(target_endian = "big")]
+ {
+ // Adjust the index for endianness.
+ bit_index = 7 - bit_index;
+ }
let mask = 1 << bit_index;
if val {
@@ -61,7 +71,13 @@ where
for i in 0..(bit_width as usize) {
if self.get_bit(i + bit_offset) {
- val |= 1 << i;
+ let mut index = i;
+ #[cfg(target_endian = "big")]
+ {
+ // Adjust the index for endianness.
+ index = bit_width as usize - 1 - index;
+ }
+ val |= 1 << index;
}
}
@@ -77,7 +93,13 @@ where
for i in 0..(bit_width as usize) {
let mask = 1 << i;
let val_bit_is_set = val & mask == mask;
- self.set_bit(i + bit_offset, val_bit_is_set);
+ let mut index = i;
+ #[cfg(target_endian = "big")]
+ {
+ // Adjust the index for endianness.
+ index = bit_width as usize - 1 - index;
+ }
+ self.set_bit(index + bit_offset, val_bit_is_set);
}
}
}
diff --git a/tests/expectations/tests/union_bitfield.rs b/tests/expectations/tests/union_bitfield.rs
index 1f75ee4d..e8d11b59 100644
--- a/tests/expectations/tests/union_bitfield.rs
+++ b/tests/expectations/tests/union_bitfield.rs
@@ -1,9 +1,7 @@
/* automatically generated by rust-bindgen */
-
#![allow(dead_code, non_snake_case, non_camel_case_types, non_upper_case_globals)]
-
#[repr(C)]
#[derive(Copy, Clone, Debug, Default, Eq, Hash, Ord, PartialEq, PartialOrd)]
pub struct __BindgenBitfieldUnit<Storage, Align>
@@ -30,7 +28,12 @@ where
let byte_index = index / 8;
let byte = self.storage.as_ref()[byte_index];
- let bit_index = index % 8;
+ let mut bit_index = index % 8;
+ #[cfg(target_endian = "big")]
+ {
+ // Adjust the index for endianness.
+ bit_index = 7 - bit_index;
+ }
let mask = 1 << bit_index;
byte & mask == mask
@@ -43,7 +46,12 @@ where
let byte_index = index / 8;
let byte = &mut self.storage.as_mut()[byte_index];
- let bit_index = index % 8;
+ let mut bit_index = index % 8;
+ #[cfg(target_endian = "big")]
+ {
+ // Adjust the index for endianness.
+ bit_index = 7 - bit_index;
+ }
let mask = 1 << bit_index;
if val {
@@ -63,7 +71,13 @@ where
for i in 0..(bit_width as usize) {
if self.get_bit(i + bit_offset) {
- val |= 1 << i;
+ let mut index = i;
+ #[cfg(target_endian = "big")]
+ {
+ // Adjust the index for endianness.
+ index = bit_width as usize - 1 - index;
+ }
+ val |= 1 << index;
}
}
@@ -79,7 +93,13 @@ where
for i in 0..(bit_width as usize) {
let mask = 1 << i;
let val_bit_is_set = val & mask == mask;
- self.set_bit(i + bit_offset, val_bit_is_set);
+ let mut index = i;
+ #[cfg(target_endian = "big")]
+ {
+ // Adjust the index for endianness.
+ index = bit_width as usize - 1 - index;
+ }
+ self.set_bit(index + bit_offset, val_bit_is_set);
}
}
}
diff --git a/tests/expectations/tests/union_bitfield_1_0.rs b/tests/expectations/tests/union_bitfield_1_0.rs
index a85fad4c..2d3b1257 100644
--- a/tests/expectations/tests/union_bitfield_1_0.rs
+++ b/tests/expectations/tests/union_bitfield_1_0.rs
@@ -1,9 +1,7 @@
/* automatically generated by rust-bindgen */
-
#![allow(dead_code, non_snake_case, non_camel_case_types, non_upper_case_globals)]
-
#[repr(C)]
#[derive(Copy, Clone, Debug, Default, Eq, Hash, Ord, PartialEq, PartialOrd)]
pub struct __BindgenBitfieldUnit<Storage, Align>
@@ -30,7 +28,12 @@ where
let byte_index = index / 8;
let byte = self.storage.as_ref()[byte_index];
- let bit_index = index % 8;
+ let mut bit_index = index % 8;
+ #[cfg(target_endian = "big")]
+ {
+ // Adjust the index for endianness.
+ bit_index = 7 - bit_index;
+ }
let mask = 1 << bit_index;
byte & mask == mask
@@ -43,7 +46,12 @@ where
let byte_index = index / 8;
let byte = &mut self.storage.as_mut()[byte_index];
- let bit_index = index % 8;
+ let mut bit_index = index % 8;
+ #[cfg(target_endian = "big")]
+ {
+ // Adjust the index for endianness.
+ bit_index = 7 - bit_index;
+ }
let mask = 1 << bit_index;
if val {
@@ -63,7 +71,13 @@ where
for i in 0..(bit_width as usize) {
if self.get_bit(i + bit_offset) {
- val |= 1 << i;
+ let mut index = i;
+ #[cfg(target_endian = "big")]
+ {
+ // Adjust the index for endianness.
+ index = bit_width as usize - 1 - index;
+ }
+ val |= 1 << index;
}
}
@@ -79,7 +93,13 @@ where
for i in 0..(bit_width as usize) {
let mask = 1 << i;
let val_bit_is_set = val & mask == mask;
- self.set_bit(i + bit_offset, val_bit_is_set);
+ let mut index = i;
+ #[cfg(target_endian = "big")]
+ {
+ // Adjust the index for endianness.
+ index = bit_width as usize - 1 - index;
+ }
+ self.set_bit(index + bit_offset, val_bit_is_set);
}
}
}
diff --git a/tests/expectations/tests/union_with_anon_struct_bitfield.rs b/tests/expectations/tests/union_with_anon_struct_bitfield.rs
index 9e671741..c82d3334 100644
--- a/tests/expectations/tests/union_with_anon_struct_bitfield.rs
+++ b/tests/expectations/tests/union_with_anon_struct_bitfield.rs
@@ -1,9 +1,7 @@
/* automatically generated by rust-bindgen */
-
#![allow(dead_code, non_snake_case, non_camel_case_types, non_upper_case_globals)]
-
#[repr(C)]
#[derive(Copy, Clone, Debug, Default, Eq, Hash, Ord, PartialEq, PartialOrd)]
pub struct __BindgenBitfieldUnit<Storage, Align>
@@ -30,7 +28,12 @@ where
let byte_index = index / 8;
let byte = self.storage.as_ref()[byte_index];
- let bit_index = index % 8;
+ let mut bit_index = index % 8;
+ #[cfg(target_endian = "big")]
+ {
+ // Adjust the index for endianness.
+ bit_index = 7 - bit_index;
+ }
let mask = 1 << bit_index;
byte & mask == mask
@@ -43,7 +46,12 @@ where
let byte_index = index / 8;
let byte = &mut self.storage.as_mut()[byte_index];
- let bit_index = index % 8;
+ let mut bit_index = index % 8;
+ #[cfg(target_endian = "big")]
+ {
+ // Adjust the index for endianness.
+ bit_index = 7 - bit_index;
+ }
let mask = 1 << bit_index;
if val {
@@ -63,7 +71,13 @@ where
for i in 0..(bit_width as usize) {
if self.get_bit(i + bit_offset) {
- val |= 1 << i;
+ let mut index = i;
+ #[cfg(target_endian = "big")]
+ {
+ // Adjust the index for endianness.
+ index = bit_width as usize - 1 - index;
+ }
+ val |= 1 << index;
}
}
@@ -79,7 +93,13 @@ where
for i in 0..(bit_width as usize) {
let mask = 1 << i;
let val_bit_is_set = val & mask == mask;
- self.set_bit(i + bit_offset, val_bit_is_set);
+ let mut index = i;
+ #[cfg(target_endian = "big")]
+ {
+ // Adjust the index for endianness.
+ index = bit_width as usize - 1 - index;
+ }
+ self.set_bit(index + bit_offset, val_bit_is_set);
}
}
}
diff --git a/tests/expectations/tests/union_with_anon_struct_bitfield_1_0.rs b/tests/expectations/tests/union_with_anon_struct_bitfield_1_0.rs
index f2d63c3e..737e98d8 100644
--- a/tests/expectations/tests/union_with_anon_struct_bitfield_1_0.rs
+++ b/tests/expectations/tests/union_with_anon_struct_bitfield_1_0.rs
@@ -1,9 +1,7 @@
/* automatically generated by rust-bindgen */
-
#![allow(dead_code, non_snake_case, non_camel_case_types, non_upper_case_globals)]
-
#[repr(C)]
#[derive(Copy, Clone, Debug, Default, Eq, Hash, Ord, PartialEq, PartialOrd)]
pub struct __BindgenBitfieldUnit<Storage, Align>
@@ -30,7 +28,12 @@ where
let byte_index = index / 8;
let byte = self.storage.as_ref()[byte_index];
- let bit_index = index % 8;
+ let mut bit_index = index % 8;
+ #[cfg(target_endian = "big")]
+ {
+ // Adjust the index for endianness.
+ bit_index = 7 - bit_index;
+ }
let mask = 1 << bit_index;
byte & mask == mask
@@ -43,7 +46,12 @@ where
let byte_index = index / 8;
let byte = &mut self.storage.as_mut()[byte_index];
- let bit_index = index % 8;
+ let mut bit_index = index % 8;
+ #[cfg(target_endian = "big")]
+ {
+ // Adjust the index for endianness.
+ bit_index = 7 - bit_index;
+ }
let mask = 1 << bit_index;
if val {
@@ -63,7 +71,13 @@ where
for i in 0..(bit_width as usize) {
if self.get_bit(i + bit_offset) {
- val |= 1 << i;
+ let mut index = i;
+ #[cfg(target_endian = "big")]
+ {
+ // Adjust the index for endianness.
+ index = bit_width as usize - 1 - index;
+ }
+ val |= 1 << index;
}
}
@@ -79,7 +93,13 @@ where
for i in 0..(bit_width as usize) {
let mask = 1 << i;
let val_bit_is_set = val & mask == mask;
- self.set_bit(i + bit_offset, val_bit_is_set);
+ let mut index = i;
+ #[cfg(target_endian = "big")]
+ {
+ // Adjust the index for endianness.
+ index = bit_width as usize - 1 - index;
+ }
+ self.set_bit(index + bit_offset, val_bit_is_set);
}
}
}
diff --git a/tests/expectations/tests/weird_bitfields.rs b/tests/expectations/tests/weird_bitfields.rs
index 8ab2987c..e872600d 100644
--- a/tests/expectations/tests/weird_bitfields.rs
+++ b/tests/expectations/tests/weird_bitfields.rs
@@ -28,7 +28,12 @@ where
let byte_index = index / 8;
let byte = self.storage.as_ref()[byte_index];
- let bit_index = index % 8;
+ let mut bit_index = index % 8;
+ #[cfg(target_endian = "big")]
+ {
+ // Adjust the index for endianness.
+ bit_index = 7 - bit_index;
+ }
let mask = 1 << bit_index;
byte & mask == mask
@@ -41,7 +46,12 @@ where
let byte_index = index / 8;
let byte = &mut self.storage.as_mut()[byte_index];
- let bit_index = index % 8;
+ let mut bit_index = index % 8;
+ #[cfg(target_endian = "big")]
+ {
+ // Adjust the index for endianness.
+ bit_index = 7 - bit_index;
+ }
let mask = 1 << bit_index;
if val {
@@ -61,7 +71,13 @@ where
for i in 0..(bit_width as usize) {
if self.get_bit(i + bit_offset) {
- val |= 1 << i;
+ let mut index = i;
+ #[cfg(target_endian = "big")]
+ {
+ // Adjust the index for endianness.
+ index = bit_width as usize - 1 - index;
+ }
+ val |= 1 << index;
}
}
@@ -77,7 +93,13 @@ where
for i in 0..(bit_width as usize) {
let mask = 1 << i;
let val_bit_is_set = val & mask == mask;
- self.set_bit(i + bit_offset, val_bit_is_set);
+ let mut index = i;
+ #[cfg(target_endian = "big")]
+ {
+ // Adjust the index for endianness.
+ index = bit_width as usize - 1 - index;
+ }
+ self.set_bit(index + bit_offset, val_bit_is_set);
}
}
}