about summary refs log tree commit diff
diff options
context:
space:
mode:
authorChris Denton <chris@chrisdenton.dev>2024-03-09 02:03:22 +0000
committerChris Denton <chris@chrisdenton.dev>2024-04-14 07:11:51 +0000
commitb1f1039d8bd8ffdda6a58c37f248a247fd9a4e72 (patch)
tree01aa04e96eeecd051b475aab8fc2902dc382a123
parentf3c66088610c1b80110297c2d9a8b5f9265b013f (diff)
downloadrust-b1f1039d8bd8ffdda6a58c37f248a247fd9a4e72.tar.gz
rust-b1f1039d8bd8ffdda6a58c37f248a247fd9a4e72.zip
Replace libc::c_int with core::ffi::c_int
And remove the libc crate when it isn't needed
-rw-r--r--library/panic_abort/Cargo.toml4
-rw-r--r--library/panic_unwind/Cargo.toml4
-rw-r--r--library/panic_unwind/src/seh.rs2
-rw-r--r--library/std/Cargo.toml7
-rw-r--r--library/std/src/lib.rs3
-rw-r--r--library/std/src/os/unix/net/addr.rs2
-rw-r--r--library/std/src/os/unix/net/ancillary.rs2
-rw-r--r--library/std/src/os/unix/net/datagram.rs4
-rw-r--r--library/std/src/os/unix/net/listener.rs8
-rw-r--r--library/test/Cargo.toml2
-rw-r--r--library/unwind/Cargo.toml4
-rw-r--r--library/unwind/src/lib.rs4
-rw-r--r--library/unwind/src/libunwind.rs2
-rw-r--r--library/unwind/src/unwinding.rs2
14 files changed, 35 insertions, 15 deletions
diff --git a/library/panic_abort/Cargo.toml b/library/panic_abort/Cargo.toml
index e6ea2b1849b..a9d1f53761c 100644
--- a/library/panic_abort/Cargo.toml
+++ b/library/panic_abort/Cargo.toml
@@ -15,5 +15,7 @@ doc = false
 alloc = { path = "../alloc" }
 cfg-if = { version = "1.0", features = ['rustc-dep-of-std'] }
 core = { path = "../core" }
-libc = { version = "0.2", default-features = false }
 compiler_builtins = "0.1.0"
+
+[target.'cfg(not(all(windows, target_env = "msvc")))'.dependencies]
+libc = { version = "0.2", default-features = false }
diff --git a/library/panic_unwind/Cargo.toml b/library/panic_unwind/Cargo.toml
index 85386976d63..dce2da31644 100644
--- a/library/panic_unwind/Cargo.toml
+++ b/library/panic_unwind/Cargo.toml
@@ -14,7 +14,9 @@ doc = false
 [dependencies]
 alloc = { path = "../alloc" }
 core = { path = "../core" }
-libc = { version = "0.2", default-features = false }
 unwind = { path = "../unwind" }
 compiler_builtins = "0.1.0"
 cfg-if = "1.0"
+
+[target.'cfg(not(all(windows, target_env = "msvc")))'.dependencies]
+libc = { version = "0.2", default-features = false }
diff --git a/library/panic_unwind/src/seh.rs b/library/panic_unwind/src/seh.rs
index 6bc0559c88f..04c3d3bf9c3 100644
--- a/library/panic_unwind/src/seh.rs
+++ b/library/panic_unwind/src/seh.rs
@@ -48,9 +48,9 @@
 
 use alloc::boxed::Box;
 use core::any::Any;
+use core::ffi::{c_int, c_uint, c_void};
 use core::mem::{self, ManuallyDrop};
 use core::ptr::{addr_of, addr_of_mut};
-use libc::{c_int, c_uint, c_void};
 
 // NOTE(nbdd0121): The `canary` field is part of stable ABI.
 #[repr(C)]
diff --git a/library/std/Cargo.toml b/library/std/Cargo.toml
index d2804b4d20a..cba9ff4485d 100644
--- a/library/std/Cargo.toml
+++ b/library/std/Cargo.toml
@@ -17,7 +17,6 @@ cfg-if = { version = "1.0", features = ['rustc-dep-of-std'] }
 panic_unwind = { path = "../panic_unwind", optional = true }
 panic_abort = { path = "../panic_abort" }
 core = { path = "../core", public = true }
-libc = { version = "0.2.153", default-features = false, features = ['rustc-dep-of-std'], public = true }
 compiler_builtins = { version = "0.1.105" }
 profiler_builtins = { path = "../profiler_builtins", optional = true }
 unwind = { path = "../unwind" }
@@ -31,6 +30,12 @@ rustc-demangle = { version = "0.1.21", features = ['rustc-dep-of-std'] }
 miniz_oxide = { version = "0.7.0", optional = true, default-features = false }
 addr2line = { version = "0.21.0", optional = true, default-features = false }
 
+[target.'cfg(not(all(windows, target_env = "msvc")))'.dependencies]
+libc = { version = "0.2.153", default-features = false, features = ['rustc-dep-of-std'], public = true }
+
+[target.'cfg(all(windows, target_env = "msvc"))'.dependencies]
+libc = { version = "0.2.153", default-features = false }
+
 [target.'cfg(all(not(target_os = "aix"), not(all(windows, target_env = "msvc", not(target_vendor = "uwp")))))'.dependencies]
 object = { version = "0.32.0", default-features = false, optional = true, features = ['read_core', 'elf', 'macho', 'pe', 'unaligned', 'archive'] }
 
diff --git a/library/std/src/lib.rs b/library/std/src/lib.rs
index e9de3b77670..72ae38cfa20 100644
--- a/library/std/src/lib.rs
+++ b/library/std/src/lib.rs
@@ -431,6 +431,9 @@ extern crate test;
 #[allow(unused_imports)] // macros from `alloc` are not used on all platforms
 #[macro_use]
 extern crate alloc as alloc_crate;
+
+// Many compiler tests depend on libc being pulled in by std
+// so include it here even if it's unused.
 #[doc(masked)]
 #[allow(unused_extern_crates)]
 extern crate libc;
diff --git a/library/std/src/os/unix/net/addr.rs b/library/std/src/os/unix/net/addr.rs
index 9757653e02c..7b451fec329 100644
--- a/library/std/src/os/unix/net/addr.rs
+++ b/library/std/src/os/unix/net/addr.rs
@@ -11,7 +11,7 @@ use crate::{fmt, io, mem, ptr};
 #[cfg(not(unix))]
 #[allow(non_camel_case_types)]
 mod libc {
-    pub use libc::c_int;
+    pub use core::ffi::c_int;
     pub type socklen_t = u32;
     pub struct sockaddr;
     #[derive(Clone)]
diff --git a/library/std/src/os/unix/net/ancillary.rs b/library/std/src/os/unix/net/ancillary.rs
index 1d279d6adbc..0597fdcbd72 100644
--- a/library/std/src/os/unix/net/ancillary.rs
+++ b/library/std/src/os/unix/net/ancillary.rs
@@ -20,7 +20,7 @@ use crate::sys::net::Socket;
 ))]
 #[allow(non_camel_case_types)]
 mod libc {
-    pub use libc::c_int;
+    pub use core::ffi::c_int;
     pub struct ucred;
     pub struct cmsghdr;
     pub struct sockcred2;
diff --git a/library/std/src/os/unix/net/datagram.rs b/library/std/src/os/unix/net/datagram.rs
index df698c17f6c..b29f9099a11 100644
--- a/library/std/src/os/unix/net/datagram.rs
+++ b/library/std/src/os/unix/net/datagram.rs
@@ -34,7 +34,7 @@ use libc::MSG_NOSIGNAL;
     target_os = "haiku",
     target_os = "nto",
 )))]
-const MSG_NOSIGNAL: libc::c_int = 0x0;
+const MSG_NOSIGNAL: core::ffi::c_int = 0x0;
 
 /// A Unix datagram socket.
 ///
@@ -317,7 +317,7 @@ impl UnixDatagram {
     fn recv_from_flags(
         &self,
         buf: &mut [u8],
-        flags: libc::c_int,
+        flags: core::ffi::c_int,
     ) -> io::Result<(usize, SocketAddr)> {
         let mut count = 0;
         let addr = SocketAddr::new(|addr, len| unsafe {
diff --git a/library/std/src/os/unix/net/listener.rs b/library/std/src/os/unix/net/listener.rs
index 31286a906ea..7e53acbc387 100644
--- a/library/std/src/os/unix/net/listener.rs
+++ b/library/std/src/os/unix/net/listener.rs
@@ -79,14 +79,14 @@ impl UnixListener {
                 target_os = "espidf",
                 target_os = "horizon"
             ))]
-            const backlog: libc::c_int = 128;
+            const backlog: core::ffi::c_int = 128;
             #[cfg(any(
                 target_os = "linux",
                 target_os = "freebsd",
                 target_os = "openbsd",
                 target_os = "macos"
             ))]
-            const backlog: libc::c_int = -1;
+            const backlog: core::ffi::c_int = -1;
             #[cfg(not(any(
                 target_os = "windows",
                 target_os = "redox",
@@ -138,9 +138,9 @@ impl UnixListener {
         unsafe {
             let inner = Socket::new_raw(libc::AF_UNIX, libc::SOCK_STREAM)?;
             #[cfg(target_os = "linux")]
-            const backlog: libc::c_int = -1;
+            const backlog: core::ffi::c_int = -1;
             #[cfg(not(target_os = "linux"))]
-            const backlog: libc::c_int = 128;
+            const backlog: core::ffi::c_int = 128;
             cvt(libc::bind(
                 inner.as_raw_fd(),
                 core::ptr::addr_of!(socket_addr.addr) as *const _,
diff --git a/library/test/Cargo.toml b/library/test/Cargo.toml
index 4c42e3bae56..0e2409f63ab 100644
--- a/library/test/Cargo.toml
+++ b/library/test/Cargo.toml
@@ -9,4 +9,6 @@ std = { path = "../std" }
 core = { path = "../core" }
 panic_unwind = { path = "../panic_unwind" }
 panic_abort = { path = "../panic_abort" }
+
+[target.'cfg(not(all(windows, target_env = "msvc")))'.dependencies]
 libc = { version = "0.2.150", default-features = false }
diff --git a/library/unwind/Cargo.toml b/library/unwind/Cargo.toml
index b7418d1189c..bbd1db8dfa5 100644
--- a/library/unwind/Cargo.toml
+++ b/library/unwind/Cargo.toml
@@ -15,10 +15,12 @@ doc = false
 
 [dependencies]
 core = { path = "../core" }
-libc = { version = "0.2.140", features = ['rustc-dep-of-std'], default-features = false }
 compiler_builtins = "0.1.0"
 cfg-if = "1.0"
 
+[target.'cfg(not(all(windows, target_env = "msvc")))'.dependencies]
+libc = { version = "0.2.140", features = ['rustc-dep-of-std'], default-features = false }
+
 [target.'cfg(target_os = "xous")'.dependencies]
 unwinding = { version = "0.2.1", features = ['rustc-dep-of-std', 'unwinder', 'fde-custom'], default-features = false }
 
diff --git a/library/unwind/src/lib.rs b/library/unwind/src/lib.rs
index 51d31a00afe..544d9fbf1ae 100644
--- a/library/unwind/src/lib.rs
+++ b/library/unwind/src/lib.rs
@@ -12,6 +12,10 @@
 )]
 #![allow(internal_features)]
 
+// Force libc to be included even if unused. This is required by many platforms.
+#[cfg(not(all(windows, target_env = "msvc")))]
+extern crate libc as _;
+
 cfg_if::cfg_if! {
     if #[cfg(target_env = "msvc")] {
         // Windows MSVC no extra unwinder support needed
diff --git a/library/unwind/src/libunwind.rs b/library/unwind/src/libunwind.rs
index 57ce3d0fa5c..e34e73a3516 100644
--- a/library/unwind/src/libunwind.rs
+++ b/library/unwind/src/libunwind.rs
@@ -1,6 +1,6 @@
 #![allow(nonstandard_style)]
 
-use libc::{c_int, c_void};
+use core::ffi::{c_int, c_void};
 
 #[repr(C)]
 #[derive(Debug, Copy, Clone, PartialEq)]
diff --git a/library/unwind/src/unwinding.rs b/library/unwind/src/unwinding.rs
index 95e2eb000cc..083acaeb56a 100644
--- a/library/unwind/src/unwinding.rs
+++ b/library/unwind/src/unwinding.rs
@@ -1,6 +1,6 @@
 #![allow(nonstandard_style)]
 
-use libc::{c_int, c_void};
+use core::ffi::{c_int, c_void};
 
 #[repr(C)]
 #[derive(Copy, Clone, PartialEq)]