about summary refs log tree commit diff
path: root/library/std/src/sys
diff options
context:
space:
mode:
authorAria Beingessner <a.beingessner@gmail.com>2022-03-23 12:38:04 -0400
committerAria Beingessner <a.beingessner@gmail.com>2022-03-29 20:18:27 -0400
commitb608df8277d0e21dd04b73691a56b124ef125d6a (patch)
treef4633d68a3e2261e91e92953d46f6471d289f2a1 /library/std/src/sys
parent09395f626b2ff7378fb250300654b1817953a390 (diff)
downloadrust-b608df8277d0e21dd04b73691a56b124ef125d6a.tar.gz
rust-b608df8277d0e21dd04b73691a56b124ef125d6a.zip
revert changes that cast functions to raw pointers, portability hazard
Diffstat (limited to 'library/std/src/sys')
-rw-r--r--library/std/src/sys/unix/weak.rs17
1 files changed, 8 insertions, 9 deletions
diff --git a/library/std/src/sys/unix/weak.rs b/library/std/src/sys/unix/weak.rs
index c9606aec3f6..da63c068384 100644
--- a/library/std/src/sys/unix/weak.rs
+++ b/library/std/src/sys/unix/weak.rs
@@ -22,10 +22,9 @@
 // that, we'll just allow that some unix targets don't use this module at all.
 #![allow(dead_code, unused_macros)]
 
-use crate::ffi::{c_void, CStr};
+use crate::ffi::CStr;
 use crate::marker::PhantomData;
 use crate::mem;
-use crate::ptr;
 use crate::sync::atomic::{self, AtomicUsize, Ordering};
 
 // We can use true weak linkage on ELF targets.
@@ -130,25 +129,25 @@ impl<F> DlsymWeak<F> {
     // Cold because it should only happen during first-time initialization.
     #[cold]
     unsafe fn initialize(&self) -> Option<F> {
-        assert_eq!(mem::size_of::<F>(), mem::size_of::<*mut ()>());
+        assert_eq!(mem::size_of::<F>(), mem::size_of::<usize>());
 
         let val = fetch(self.name);
         // This synchronizes with the acquire fence in `get`.
-        self.addr.store(val.addr(), Ordering::Release);
+        self.addr.store(val, Ordering::Release);
 
-        match val.addr() {
+        match val {
             0 => None,
-            _ => Some(mem::transmute_copy::<*mut c_void, F>(&val)),
+            addr => Some(mem::transmute_copy::<usize, F>(&addr)),
         }
     }
 }
 
-unsafe fn fetch(name: &str) -> *mut c_void {
+unsafe fn fetch(name: &str) -> usize {
     let name = match CStr::from_bytes_with_nul(name.as_bytes()) {
         Ok(cstr) => cstr,
-        Err(..) => return ptr::null_mut(),
+        Err(..) => return 0,
     };
-    libc::dlsym(libc::RTLD_DEFAULT, name.as_ptr())
+    libc::dlsym(libc::RTLD_DEFAULT, name.as_ptr()) as usize
 }
 
 #[cfg(not(any(target_os = "linux", target_os = "android")))]