diff --git a/libc-test/build.rs b/libc-test/build.rs
index 3d8ddce44c0323492641e50680973f45a0f981eb..ed40ddc362f7cff833232fa4a96323cf1f3444fb 100644
--- a/libc-test/build.rs
+++ b/libc-test/build.rs
@@ -124,7 +124,6 @@ fn do_ctest() {
         }
         cfg.header("arpa/inet.h");
         cfg.header("xlocale.h");
-        cfg.header("utmp.h");
         cfg.header("ifaddrs.h");
         if i686 || x86_64 {
             cfg.header("sys/reg.h");
@@ -208,6 +207,7 @@ fn do_ctest() {
         cfg.header("sys/personality.h");
         cfg.header("sys/swap.h");
         cfg.header("pty.h");
+        cfg.header("utmp.h");
         if !uclibc {
             cfg.header("sys/sysinfo.h");
         }
diff --git a/src/unix/bsd/apple/mod.rs b/src/unix/bsd/apple/mod.rs
index 3c0877b2758bedccea61ec1b2bcca2e310d4ce74..9483e90b6245832a80c3ae7446eeeb67827076c1 100644
--- a/src/unix/bsd/apple/mod.rs
+++ b/src/unix/bsd/apple/mod.rs
@@ -3168,6 +3168,7 @@ extern {
                    name: *mut ::c_char,
                    termp: *mut termios,
                    winp: *mut ::winsize) -> ::pid_t;
+    pub fn login_tty(fd: ::c_int) -> ::c_int;
     pub fn duplocale(base: ::locale_t) -> ::locale_t;
     pub fn freelocale(loc: ::locale_t) -> ::c_int;
     pub fn localeconv_l(loc: ::locale_t) -> *mut lconv;
diff --git a/src/unix/bsd/freebsdlike/mod.rs b/src/unix/bsd/freebsdlike/mod.rs
index 32dbb76968558cea56b75667410da0c3217ffe22..7a82a45e13f6b3878e9307c3227f2841b7b838aa 100644
--- a/src/unix/bsd/freebsdlike/mod.rs
+++ b/src/unix/bsd/freebsdlike/mod.rs
@@ -1299,6 +1299,7 @@ extern {
                    name: *mut ::c_char,
                    termp: *mut termios,
                    winp: *mut ::winsize) -> ::pid_t;
+    pub fn login_tty(fd: ::c_int) -> ::c_int;
 }
 
 cfg_if! {
diff --git a/src/unix/bsd/netbsdlike/mod.rs b/src/unix/bsd/netbsdlike/mod.rs
index 3ef2e09e42510b23e05cb852c034ae1544764cc7..c75e6de0a3e161548d5ad1e130cc1315d8476785 100644
--- a/src/unix/bsd/netbsdlike/mod.rs
+++ b/src/unix/bsd/netbsdlike/mod.rs
@@ -643,6 +643,7 @@ extern {
                    name: *mut ::c_char,
                    termp: *mut termios,
                    winp: *mut ::winsize) -> ::pid_t;
+    pub fn login_tty(fd: ::c_int) -> ::c_int;
     pub fn getpriority(which: ::c_int, who: ::id_t) -> ::c_int;
     pub fn setpriority(which: ::c_int, who: ::id_t, prio: ::c_int) -> ::c_int;
 
diff --git a/src/unix/notbsd/mod.rs b/src/unix/notbsd/mod.rs
index 2af3913097669bf81e790fbe6d7242ad600f89ec..00d5b78cddc280d01b0cee458a819c5bd404e316 100644
--- a/src/unix/notbsd/mod.rs
+++ b/src/unix/notbsd/mod.rs
@@ -1383,6 +1383,7 @@ extern {
                 name: *mut ::c_char,
                 termp: *const termios,
                 winp: *const ::winsize) -> ::c_int;
+    pub fn login_tty(fd: ::c_int) -> ::c_int;
     pub fn execvpe(file: *const ::c_char, argv: *const *const ::c_char,
                    envp: *const *const ::c_char) -> ::c_int;
     pub fn fexecve(fd: ::c_int, argv: *const *const ::c_char,