From f5ee22db489f78b9c003ef60b7ad1b837503bc4a Mon Sep 17 00:00:00 2001 From: Chuck Musser Date: Wed, 16 Sep 2020 11:45:20 -0700 Subject: DragonFlyBSD: use __errno_location now provided by the libc crate This obviates the need for the C language shim for this variable, which this commit removes. --- Cargo.toml | 2 +- build.rs | 9 --------- src/errno.rs | 24 +++--------------------- src/errno_dragonfly.c | 3 --- 4 files changed, 4 insertions(+), 34 deletions(-) delete mode 100644 build.rs delete mode 100644 src/errno_dragonfly.c diff --git a/Cargo.toml b/Cargo.toml index 8456ad7c..5dde591e 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -17,7 +17,7 @@ exclude = [ ] [dependencies] -libc = { version = "0.2.73", features = [ "extra_traits" ] } +libc = { version = "0.2.77", features = [ "extra_traits" ] } bitflags = "1.1" cfg-if = "0.1.10" diff --git a/build.rs b/build.rs deleted file mode 100644 index c527748b..00000000 --- a/build.rs +++ /dev/null @@ -1,9 +0,0 @@ -#[cfg(target_os = "dragonfly")] -fn main() { - cc::Build::new() - .file("src/errno_dragonfly.c") - .compile("liberrno_dragonfly.a"); -} - -#[cfg(not(target_os = "dragonfly"))] -fn main() {} diff --git a/src/errno.rs b/src/errno.rs index eda097d8..03a7f0e2 100644 --- a/src/errno.rs +++ b/src/errno.rs @@ -1,5 +1,4 @@ use cfg_if::cfg_if; -#[cfg(not(target_os = "dragonfly"))] use libc::{c_int, c_void}; use std::{fmt, io, error}; use crate::{Error, Result}; @@ -13,32 +12,15 @@ cfg_if! { unsafe fn errno_location() -> *mut c_int { libc::__error() } - } else if #[cfg(target_os = "dragonfly")] { - // DragonFly uses a thread-local errno variable, but #[thread_local] is - // feature-gated and not available in stable Rust as of this writing - // (Rust 1.21.0). We have to use a C extension to access it - // (src/errno_dragonfly.c). - // - // Tracking issue for `thread_local` stabilization: - // - // https://github.com/rust-lang/rust/issues/29594 - // - // Once this becomes stable, we can remove build.rs, - // src/errno_dragonfly.c, and use: - // - // extern { #[thread_local] static errno: c_int; } - // - #[link(name="errno_dragonfly", kind="static")] - extern { - pub fn errno_location() -> *mut c_int; - } } else if #[cfg(any(target_os = "android", target_os = "netbsd", target_os = "openbsd"))] { unsafe fn errno_location() -> *mut c_int { libc::__errno() } - } else if #[cfg(any(target_os = "linux", target_os = "redox"))] { + } else if #[cfg(any(target_os = "linux", + target_os = "redox", + target_os = "dragonfly"))] { unsafe fn errno_location() -> *mut c_int { libc::__errno_location() } diff --git a/src/errno_dragonfly.c b/src/errno_dragonfly.c deleted file mode 100644 index 32fb4dab..00000000 --- a/src/errno_dragonfly.c +++ /dev/null @@ -1,3 +0,0 @@ -#include - -int *errno_location() { return &errno; } -- cgit v1.2.3