提交 e57ee3d0 编写于 作者: M Marco A L Barbosa

Fix some tests for linux gnux32

上级 dbcd1bec
...@@ -243,24 +243,22 @@ fn test_siphash_2_4() { ...@@ -243,24 +243,22 @@ fn test_siphash_2_4() {
t += 1; t += 1;
} }
} }
#[test] #[cfg(target_arch = "arm")]
#[test]
#[cfg(target_pointer_width = "32")]
fn test_hash_usize() { fn test_hash_usize() {
let val = 0xdeadbeef_deadbeef_u64; let val = 0xdeadbeef_deadbeef_u64;
assert!(hash(&(val as u64)) != hash(&(val as usize))); assert!(hash(&(val as u64)) != hash(&(val as usize)));
assert_eq!(hash(&(val as u32)), hash(&(val as usize))); assert_eq!(hash(&(val as u32)), hash(&(val as usize)));
} }
#[test] #[cfg(target_arch = "x86_64")]
#[test]
#[cfg(target_pointer_width = "64")]
fn test_hash_usize() { fn test_hash_usize() {
let val = 0xdeadbeef_deadbeef_u64; let val = 0xdeadbeef_deadbeef_u64;
assert_eq!(hash(&(val as u64)), hash(&(val as usize))); assert_eq!(hash(&(val as u64)), hash(&(val as usize)));
assert!(hash(&(val as u32)) != hash(&(val as usize))); assert!(hash(&(val as u32)) != hash(&(val as usize)));
} }
#[test] #[cfg(target_arch = "x86")]
fn test_hash_usize() {
let val = 0xdeadbeef_deadbeef_u64;
assert!(hash(&(val as u64)) != hash(&(val as usize)));
assert_eq!(hash(&(val as u32)), hash(&(val as usize)));
}
#[test] #[test]
fn test_hash_idempotent() { fn test_hash_idempotent() {
......
...@@ -92,14 +92,15 @@ pub unsafe fn wait_timeout(&self, mutex: &Mutex, dur: Duration) -> bool { ...@@ -92,14 +92,15 @@ pub unsafe fn wait_timeout(&self, mutex: &Mutex, dur: Duration) -> bool {
assert_eq!(r, 0); assert_eq!(r, 0);
// Nanosecond calculations can't overflow because both values are below 1e9. // Nanosecond calculations can't overflow because both values are below 1e9.
let nsec = dur.subsec_nanos() as libc::c_long + now.tv_nsec as libc::c_long; let nsec = dur.subsec_nanos() + now.tv_nsec as u32;
let sec = saturating_cast_to_time_t(dur.as_secs()) let sec = saturating_cast_to_time_t(dur.as_secs())
.checked_add((nsec / 1_000_000_000) as libc::time_t) .checked_add((nsec / 1_000_000_000) as libc::time_t)
.and_then(|s| s.checked_add(now.tv_sec)); .and_then(|s| s.checked_add(now.tv_sec));
let nsec = nsec % 1_000_000_000; let nsec = nsec % 1_000_000_000;
let timeout = sec.map(|s| { let timeout = sec.map(|s| {
libc::timespec { tv_sec: s, tv_nsec: nsec } libc::timespec { tv_sec: s, tv_nsec: nsec as _}
}).unwrap_or(TIMESPEC_MAX); }).unwrap_or(TIMESPEC_MAX);
let r = libc::pthread_cond_timedwait(self.inner.get(), mutex::raw(mutex), let r = libc::pthread_cond_timedwait(self.inner.get(), mutex::raw(mutex),
......
...@@ -132,14 +132,14 @@ impl FileAttr { ...@@ -132,14 +132,14 @@ impl FileAttr {
pub fn modified(&self) -> io::Result<SystemTime> { pub fn modified(&self) -> io::Result<SystemTime> {
Ok(SystemTime::from(libc::timespec { Ok(SystemTime::from(libc::timespec {
tv_sec: self.stat.st_mtime as libc::time_t, tv_sec: self.stat.st_mtime as libc::time_t,
tv_nsec: self.stat.st_mtime_nsec as libc::c_long, tv_nsec: self.stat.st_mtime_nsec as _,
})) }))
} }
pub fn accessed(&self) -> io::Result<SystemTime> { pub fn accessed(&self) -> io::Result<SystemTime> {
Ok(SystemTime::from(libc::timespec { Ok(SystemTime::from(libc::timespec {
tv_sec: self.stat.st_atime as libc::time_t, tv_sec: self.stat.st_atime as libc::time_t,
tv_nsec: self.stat.st_atime_nsec as libc::c_long, tv_nsec: self.stat.st_atime_nsec as _,
})) }))
} }
......
...@@ -149,7 +149,7 @@ pub fn set_name(_name: &CStr) { ...@@ -149,7 +149,7 @@ pub fn set_name(_name: &CStr) {
pub fn sleep(dur: Duration) { pub fn sleep(dur: Duration) {
let mut secs = dur.as_secs(); let mut secs = dur.as_secs();
let mut nsecs = dur.subsec_nanos() as libc::c_long; let mut nsecs = dur.subsec_nanos() as _;
// If we're awoken with a signal then the return value will be -1 and // If we're awoken with a signal then the return value will be -1 and
// nanosleep will fill in `ts` with the remaining time. // nanosleep will fill in `ts` with the remaining time.
......
...@@ -60,7 +60,7 @@ fn add_duration(&self, other: &Duration) -> Timespec { ...@@ -60,7 +60,7 @@ fn add_duration(&self, other: &Duration) -> Timespec {
Timespec { Timespec {
t: libc::timespec { t: libc::timespec {
tv_sec: secs, tv_sec: secs,
tv_nsec: nsec as libc::c_long, tv_nsec: nsec as _,
}, },
} }
} }
...@@ -83,7 +83,7 @@ fn sub_duration(&self, other: &Duration) -> Timespec { ...@@ -83,7 +83,7 @@ fn sub_duration(&self, other: &Duration) -> Timespec {
Timespec { Timespec {
t: libc::timespec { t: libc::timespec {
tv_sec: secs, tv_sec: secs,
tv_nsec: nsec as libc::c_long, tv_nsec: nsec as _,
}, },
} }
} }
......
...@@ -13,6 +13,7 @@ ...@@ -13,6 +13,7 @@
// ignore-x86 // ignore-x86
// ignore-arm // ignore-arm
// ignore-emscripten // ignore-emscripten
// ignore-gnux32
// ignore 32-bit platforms (LLVM has a bug with them) // ignore 32-bit platforms (LLVM has a bug with them)
// See issue #37945. // See issue #37945.
......
...@@ -73,7 +73,7 @@ pub fn get_env(triple: &str) -> Option<&str> { ...@@ -73,7 +73,7 @@ pub fn get_env(triple: &str) -> Option<&str> {
} }
pub fn get_pointer_width(triple: &str) -> &'static str { pub fn get_pointer_width(triple: &str) -> &'static str {
if triple.contains("64") || triple.starts_with("s390x") { if (triple.contains("64") && !triple.ends_with("gnux32")) || triple.starts_with("s390x") {
"64bit" "64bit"
} else { } else {
"32bit" "32bit"
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册