diff --git a/src/lib.rs b/src/lib.rs index 2be57129f0636..421631711cc4b 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -19,7 +19,7 @@ // Attributes needed when building as part of the standard library #![cfg_attr( feature = "rustc-dep-of-std", - feature(cfg_target_vendor, link_cfg, no_core) + feature(cfg_target_vendor, link_cfg, no_core, static_nobundle) )] #![cfg_attr(libc_thread_local, feature(thread_local))] // Enable extra lints: diff --git a/src/unix/linux_like/linux/gnu/b64/x86_64/not_x32.rs b/src/unix/linux_like/linux/gnu/b64/x86_64/not_x32.rs index 64a6de9c67098..56170c4ea72d0 100644 --- a/src/unix/linux_like/linux/gnu/b64/x86_64/not_x32.rs +++ b/src/unix/linux_like/linux/gnu/b64/x86_64/not_x32.rs @@ -410,7 +410,6 @@ pub const SYS_pkey_alloc: ::c_long = 330; pub const SYS_pkey_free: ::c_long = 331; pub const SYS_statx: ::c_long = 332; -#[link(name = "util")] extern "C" { pub fn sysctl( name: *mut ::c_int, diff --git a/src/unix/linux_like/linux/gnu/mod.rs b/src/unix/linux_like/linux/gnu/mod.rs index 44232e98cbe89..6ead42fee675b 100644 --- a/src/unix/linux_like/linux/gnu/mod.rs +++ b/src/unix/linux_like/linux/gnu/mod.rs @@ -1362,7 +1362,6 @@ extern "C" { ) -> ::c_int; } -#[link(name = "util")] extern "C" { pub fn ioctl(fd: ::c_int, request: ::c_ulong, ...) -> ::c_int; pub fn backtrace(buf: *mut *mut ::c_void, sz: ::c_int) -> ::c_int; @@ -1436,7 +1435,6 @@ extern "C" { ) -> ::c_int; } -#[link(name = "dl")] extern "C" { pub fn dlmopen( lmid: Lmid_t, diff --git a/src/unix/mod.rs b/src/unix/mod.rs index e8d91086989b0..21439c8a49fcb 100644 --- a/src/unix/mod.rs +++ b/src/unix/mod.rs @@ -298,6 +298,32 @@ cfg_if! { } else if #[cfg(feature = "std")] { // cargo build, don't pull in anything extra as the libstd dep // already pulls in all libs. + } else if #[cfg(all(target_os = "linux", + target_env = "gnu", + feature = "rustc-dep-of-std"))] { + #[link(name = "util", kind = "static-nobundle", + cfg(target_feature = "crt-static"))] + #[link(name = "rt", kind = "static-nobundle", + cfg(target_feature = "crt-static"))] + #[link(name = "pthread", kind = "static-nobundle", + cfg(target_feature = "crt-static"))] + #[link(name = "m", kind = "static-nobundle", + cfg(target_feature = "crt-static"))] + #[link(name = "dl", kind = "static-nobundle", + cfg(target_feature = "crt-static"))] + #[link(name = "c", kind = "static-nobundle", + cfg(target_feature = "crt-static"))] + #[link(name = "gcc_eh", kind = "static-nobundle", + cfg(target_feature = "crt-static"))] + #[link(name = "gcc", kind = "static-nobundle", + cfg(target_feature = "crt-static"))] + #[link(name = "util", cfg(not(target_feature = "crt-static")))] + #[link(name = "rt", cfg(not(target_feature = "crt-static")))] + #[link(name = "pthread", cfg(not(target_feature = "crt-static")))] + #[link(name = "m", cfg(not(target_feature = "crt-static")))] + #[link(name = "dl", cfg(not(target_feature = "crt-static")))] + #[link(name = "c", cfg(not(target_feature = "crt-static")))] + extern {} } else if #[cfg(target_env = "musl")] { #[cfg_attr(feature = "rustc-dep-of-std", link(name = "c", kind = "static",