Rollup merge of #44116 - alexcrichton:update-libc, r=Mark-Simulacrum

Update the libc submodule

Brings in a few fixes for wasm/asmjs
This commit is contained in:
Alex Crichton 2017-08-30 11:11:11 -05:00 committed by GitHub
commit bc6981ba55
5 changed files with 30 additions and 13 deletions

@ -1 +1 @@
Subproject commit 2a5b50b7f7f539a0fd201331d6c1e0534aa332f5
Subproject commit d64716407e3ee430fce7a008cc7d19a3072dca6c

View File

@ -14,8 +14,7 @@
use fmt;
#[cfg(any(target_os = "emscripten",
all(target_os = "linux", any(target_arch = "aarch64",
#[cfg(any(all(target_os = "linux", any(target_arch = "aarch64",
target_arch = "arm",
target_arch = "powerpc",
target_arch = "powerpc64",
@ -24,8 +23,7 @@ use fmt;
target_arch = "arm")),
all(target_os = "fuchsia", target_arch = "aarch64")))]
#[stable(feature = "raw_os", since = "1.1.0")] pub type c_char = u8;
#[cfg(not(any(target_os = "emscripten",
all(target_os = "linux", any(target_arch = "aarch64",
#[cfg(not(any(all(target_os = "linux", any(target_arch = "aarch64",
target_arch = "arm",
target_arch = "powerpc",
target_arch = "powerpc64",

View File

@ -71,13 +71,21 @@ impl FileDesc {
#[cfg(target_os = "android")]
use super::android::cvt_pread64;
#[cfg(not(target_os = "android"))]
#[cfg(target_os = "emscripten")]
unsafe fn cvt_pread64(fd: c_int, buf: *mut c_void, count: usize, offset: i64)
-> io::Result<isize>
{
#[cfg(any(target_os = "linux", target_os = "emscripten"))]
use libc::pread64;
#[cfg(not(any(target_os = "linux", target_os = "emscripten")))]
cvt(pread64(fd, buf, count, offset as i32))
}
#[cfg(not(any(target_os = "android", target_os = "emscripten")))]
unsafe fn cvt_pread64(fd: c_int, buf: *mut c_void, count: usize, offset: i64)
-> io::Result<isize>
{
#[cfg(target_os = "linux")]
use libc::pread64;
#[cfg(not(target_os = "linux"))]
use libc::pread as pread64;
cvt(pread64(fd, buf, count, offset))
}
@ -104,13 +112,21 @@ impl FileDesc {
#[cfg(target_os = "android")]
use super::android::cvt_pwrite64;
#[cfg(not(target_os = "android"))]
#[cfg(target_os = "emscripten")]
unsafe fn cvt_pwrite64(fd: c_int, buf: *const c_void, count: usize, offset: i64)
-> io::Result<isize>
{
#[cfg(any(target_os = "linux", target_os = "emscripten"))]
use libc::pwrite64;
#[cfg(not(any(target_os = "linux", target_os = "emscripten")))]
cvt(pwrite64(fd, buf, count, offset as i32))
}
#[cfg(not(any(target_os = "android", target_os = "emscripten")))]
unsafe fn cvt_pwrite64(fd: c_int, buf: *const c_void, count: usize, offset: i64)
-> io::Result<isize>
{
#[cfg(target_os = "linux")]
use libc::pwrite64;
#[cfg(not(target_os = "linux"))]
use libc::pwrite as pwrite64;
cvt(pwrite64(fd, buf, count, offset))
}

View File

@ -514,6 +514,8 @@ impl File {
SeekFrom::End(off) => (libc::SEEK_END, off),
SeekFrom::Current(off) => (libc::SEEK_CUR, off),
};
#[cfg(target_os = "emscripten")]
let pos = pos as i32;
let n = cvt(unsafe { lseek64(self.0.raw(), pos, whence) })?;
Ok(n as u64)
}

View File

@ -10,7 +10,6 @@
use io::{self, Error, ErrorKind};
use libc::{self, c_int, gid_t, pid_t, uid_t};
use mem;
use ptr;
use sys::cvt;
@ -184,7 +183,9 @@ impl Command {
}
// NaCl has no signal support.
if cfg!(not(any(target_os = "nacl", target_os = "emscripten"))) {
#[cfg(not(any(target_os = "nacl", target_os = "emscripten")))]
{
use mem;
// Reset signal handling so the child process starts in a
// standardized state. libstd ignores SIGPIPE, and signal-handling
// libraries often set a mask. Child processes inherit ignored