Attempt to fix 32-bit
diff --git a/libc-test/tests/all.rs b/libc-test/tests/all.rs
index b717c8a..fe3bd24 100644
--- a/libc-test/tests/all.rs
+++ b/libc-test/tests/all.rs
@@ -1,6 +1,7 @@
extern crate libc;
extern crate libc_test;
+use std::any::{Any, TypeId};
use std::mem;
use libc::*;
@@ -12,6 +13,21 @@
}
}
+fn align<T: Any>() -> u64 {
+ // TODO: apparently these three types have less alignment in Rust on x86
+ // than they do in C this difference should.. probably be reconciled.
+ //
+ // Perhaps #27195?
+ if cfg!(target_pointer_width = "32") {
+ if TypeId::of::<T>() == TypeId::of::<f64>() ||
+ TypeId::of::<T>() == TypeId::of::<i64>() ||
+ TypeId::of::<T>() == TypeId::of::<u64>() {
+ return 8
+ }
+ }
+ mem::align_of::<T>() as u64
+}
+
macro_rules! offset_of {
($ty:ident, $field:ident) => (
(&((*(0 as *const $ty)).$field)) as *const _ as u64