X-Git-Url: https://git.lizzy.rs/?a=blobdiff_plain;f=src%2Flibstd%2Funstable%2Fdynamic_lib.rs;h=41ff79bc8845815db4eda5382c676bb04473eb62;hb=20a10ff9c922722da66d52caacee544c7e1ab03d;hp=6dbe68200b3b7fe23d28c62b72dc39083e7ec993;hpb=c87d798fb0266bfbaa1a6bea81ba50353e3302e1;p=rust.git diff --git a/src/libstd/unstable/dynamic_lib.rs b/src/libstd/unstable/dynamic_lib.rs index 6dbe68200b3..41ff79bc884 100644 --- a/src/libstd/unstable/dynamic_lib.rs +++ b/src/libstd/unstable/dynamic_lib.rs @@ -26,7 +26,7 @@ pub struct DynamicLibrary { priv handle: *libc::c_void } impl Drop for DynamicLibrary { - fn drop(&self) { + fn drop(&mut self) { match do dl::check_for_errors_in { unsafe { dl::close(self.handle) @@ -90,6 +90,8 @@ mod test { use libc; #[test] + // #[ignore(cfg(windows))] // FIXME #8818 + #[ignore] // FIXME #9137 this library isn't thread-safe fn test_loading_cosine() { // The math library does not need to be loaded since it is already // statically linked in @@ -120,6 +122,7 @@ fn test_loading_cosine() { #[cfg(target_os = "linux")] #[cfg(target_os = "macos")] #[cfg(target_os = "freebsd")] + #[ignore] // FIXME #9137 this library isn't thread-safe fn test_errors_do_not_crash() { // Open /dev/null as a library to get an error, and make sure // that only causes an error, and not a crash. @@ -135,7 +138,7 @@ fn test_errors_do_not_crash() { #[cfg(target_os = "android")] #[cfg(target_os = "macos")] #[cfg(target_os = "freebsd")] -mod dl { +pub mod dl { use c_str::ToCStr; use libc; use path; @@ -204,7 +207,7 @@ pub enum RTLD { } #[cfg(target_os = "win32")] -mod dl { +pub mod dl { use os; use libc; use path; @@ -252,6 +255,7 @@ pub unsafe fn close(handle: *libc::c_void) { FreeLibrary(handle); () } + #[cfg(target_arch = "x86")] #[link_name = "kernel32"] extern "stdcall" { fn SetLastError(error: u32); @@ -261,4 +265,15 @@ fn GetModuleHandleExW(dwFlags: libc::DWORD, name: *u16, fn GetProcAddress(handle: *libc::c_void, name: *libc::c_char) -> *libc::c_void; fn FreeLibrary(handle: *libc::c_void); } + + #[cfg(target_arch = "x86_64")] + #[link_name = "kernel32"] + extern { + fn SetLastError(error: u32); + fn LoadLibraryW(name: *u16) -> *libc::c_void; + fn GetModuleHandleExW(dwFlags: libc::DWORD, name: *u16, + handle: **libc::c_void) -> *libc::c_void; + fn GetProcAddress(handle: *libc::c_void, name: *libc::c_char) -> *libc::c_void; + fn FreeLibrary(handle: *libc::c_void); + } }