summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJosh Triplett <josh@joshtriplett.org>2020-09-19 20:38:54 -0700
committerJosh Triplett <josh@joshtriplett.org>2020-09-21 01:15:00 -0700
commite005f4cad598c7278dfcef52ac7cbe1203c963f2 (patch)
treeb1c7cff13b2a4b7a52ea38e88e2d6757a137772c
parentac0a783953832205372cb6b6982f2071f9170964 (diff)
downloadrust-libc-e005f4cad598c7278dfcef52ac7cbe1203c963f2.tar.gz
Consolidate handling of libutil, and handle crt-static
The two library blocks that specify `#[link(name = "util")]` do not actually reference any functions in `libutil`; the functions that do use `libutil` don't have any reference to it. And having two library blocks specify it results in two separate inclusions of `-lutil` on the linker command line. Move the link lines up to `src/unix/mod.rs`, making it easier to see all the libraries `libc` links to. This also makes `libutil` respect `target-feature=+crt-static`.
-rw-r--r--src/unix/linux_like/linux/gnu/b64/x86_64/not_x32.rs1
-rw-r--r--src/unix/linux_like/linux/gnu/mod.rs1
-rw-r--r--src/unix/mod.rs3
3 files changed, 3 insertions, 2 deletions
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 64a6de9c67..56170c4ea7 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 44232e98cb..9ea34dec38 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;
diff --git a/src/unix/mod.rs b/src/unix/mod.rs
index 3b2cc3f2ad..32e8d932bb 100644
--- a/src/unix/mod.rs
+++ b/src/unix/mod.rs
@@ -301,6 +301,8 @@ cfg_if! {
} 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",
@@ -313,6 +315,7 @@ cfg_if! {
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")))]