diff options
author | bors <bors@rust-lang.org> | 2016-04-03 14:48:34 -0700 |
---|---|---|
committer | bors <bors@rust-lang.org> | 2016-04-03 14:48:34 -0700 |
commit | fb2f0bbdab5aa79d684d1e15ccd755f8d37bc07e (patch) | |
tree | 5f4dfe9e1713093e9dbef00fb130c123c7551505 | |
parent | 46cca7a06ec4b3bdd080313d1c5a358a612412ac (diff) | |
parent | 4d1efd9e8ae349bdc459e04cf86b4df571dd194e (diff) | |
download | rust-libc-fb2f0bbdab5aa79d684d1e15ccd755f8d37bc07e.tar.gz |
Auto merge of #253 - nodakai:strerror_r, r=alexcrichton
On non-musl Linux, strerror_r should be linked to __xpg_strerror_r
Currently `libc::strerror_r()` wrongly returns a `c_char` pointer as a large `c_int`.
Also exclude `MS_RMT_MASK` from `libc-test`.
-rw-r--r-- | libc-test/build.rs | 1 | ||||
-rw-r--r-- | src/unix/mod.rs | 4 |
2 files changed, 3 insertions, 2 deletions
diff --git a/libc-test/build.rs b/libc-test/build.rs index 7206cc6e62..984a63ac8f 100644 --- a/libc-test/build.rs +++ b/libc-test/build.rs @@ -312,6 +312,7 @@ fn main() { // weird signed extension or something like that? "MS_NOUSER" => true, + "MS_RMT_MASK" => true, // updated in glibc 2.22 and musl 1.1.13 // These OSX constants are flagged as deprecated "NOTE_EXIT_REPARENTED" | diff --git a/src/unix/mod.rs b/src/unix/mod.rs index dc741df140..e958dd2064 100644 --- a/src/unix/mod.rs +++ b/src/unix/mod.rs @@ -506,8 +506,8 @@ extern { pub fn pthread_sigmask(how: ::c_int, set: *const sigset_t, oldset: *mut sigset_t) -> ::c_int; pub fn pthread_kill(thread: ::pthread_t, sig: ::c_int) -> ::c_int; - - // #[cfg_attr(target_os = "linux", link_name = "__xpg_strerror_r")] + #[cfg_attr(all(target_os = "linux", not(target_env = "musl")), + link_name = "__xpg_strerror_r")] pub fn strerror_r(errnum: ::c_int, buf: *mut c_char, buflen: ::size_t) -> ::c_int; |