Commit Graph

749 Commits

Author SHA1 Message Date
Tobias Bucher
70dcfd634e Use try_into and move some functions 2016-10-09 10:49:05 +02:00
Tobias Bucher
f352f0eec0 Dynamically detect presence of p{read,write}64 on Android 2016-10-09 10:48:07 +02:00
Tobias Bucher
b3f2644b66 Implement reading and writing atomically at certain offsets
These functions allow to read from and write to a file in one atomic
action from multiple threads, avoiding the race between the seek and the
read.

The functions are named `{read,write}_at` on non-Windows (which don't
change the file cursor), and `seek_{read,write}` on Windows (which
change the file cursor).
2016-10-09 10:48:07 +02:00
Tobias Bucher
717d2ddca7 Use less size_t casts in libstd since it's now defined as usize 2016-10-08 15:48:28 +02:00
bors
3210fd5c20 Auto merge of #36944 - brson:modos, r=alexcrichton
Fix mod declarations on untested platforms

r? @alexcrichton
2016-10-05 09:14:02 -07:00
Manish Goregaokar
d25aeb0ef1 Rollup merge of #36902 - ollie27:stab_impls, r=alexcrichton
std: Correct stability attributes for some implementations

These are displayed by rustdoc so should be correct.
2016-10-04 15:24:02 +05:30
Brian Anderson
2e7f796e58 Fix mod declarations on untested platforms 2016-10-03 22:29:03 +00:00
Brian Anderson
4d76ac8492 Move platform-specific arg handling to sys::args 2016-10-02 14:52:30 -07:00
Oliver Middleton
06a7dcd355 std: Correct stability attributes for some implementations
These are displayed by rustdoc so should be correct.
2016-10-01 23:58:14 +01:00
Brian Anderson
d311079a6f std: Move platform specific stdio code into sys 2016-10-01 19:33:02 +00:00
Brian Anderson
fea1bd4cdf std: Move platform specific memchr code into sys 2016-10-01 19:33:02 +00:00
Brian Anderson
5c21562302 std: Move platform specific env code into sys 2016-10-01 19:32:59 +00:00
Brian Anderson
e6457bb676 std: Move platform specific path code into sys 2016-10-01 19:28:17 +00:00
bors
5045d4e396 Auto merge of #36824 - kali:master, r=alexcrichton
SO_NOSIGPIPE and MSG_NOSIGNAL (rebased #36426)

I'm not sure what happened when I pushed a rebased branch on #36426 , github closed it...
2016-10-01 01:19:47 -07:00
Brian Anderson
d997a6291f Call emcc with ERROR_ON_UNDEFINED_SYMBOLS 2016-09-30 14:02:57 -07:00
Brian Anderson
096670ca41 Ignore various entire test modules on emscripten 2016-09-30 14:02:56 -07:00
Brian Anderson
9c4a01ee9e Ignore lots and lots of std tests on emscripten 2016-09-30 14:02:48 -07:00
Mathieu Poumeyrol
5980d5bfdd use MSG_NOSIGNAL from liblibc 2016-09-28 19:44:20 +02:00
Mathieu Poumeyrol
ed5e542819 MSG_NOSIGNAL on linux 2016-09-28 19:43:11 +02:00
Mathieu Poumeyrol
6f6e261e20 set SO_NOSIGPIPE on apple platforms 2016-09-28 19:43:11 +02:00
Jonathan Turner
5c9fc99520 Rollup merge of #36754 - tmiasko:getaddrinfo-errors, r=alexcrichton
When getaddrinfo returns EAI_SYSTEM retrieve actual error from errno.

Fixes issue #36546. This change also updates libc to earliest version
that includes EAI_SYSTEM constant.

Previously, in cases where `EAI_SYSTEM` has been returned from getaddrinfo, the
resulting `io::Error` would be broadly described as "System error":

    Error { repr: Custom(Custom { kind: Other, error: StringError("failed to lookup address information: System error") }) }

After change a more detailed error is crated based on particular value of
errno, for example:

    Error { repr: Os { code: 64, message: "Machine is not on the network" } }

The only downside is that the prefix "failed to lookup address information" is
no longer included in the error message.
2016-09-26 17:29:49 -07:00
Tomasz Miąsko
c52b957b89 When getaddrinfo returns EAI_SYSTEM retrieve actual error from errno.
Fixes issue #36546. This change also updates libc to earliest version
that includes EAI_SYSTEM constant.
2016-09-26 21:25:59 +02:00
Alexander von Gluck IV
7c34d9c144 Haiku: Use common thread set_name stub 2016-09-26 00:41:41 -05:00
Niels Sascha Reedijk
783ab7766f Haiku: Work around the lack of the FIOCLEX ioctl
* Hand rebased from Niels original work on 1.9.0
2016-09-25 11:13:57 -05:00
Niels Sascha Reedijk
1a6fc8b7b8 Add support for the Haiku operating system on x86 and x86_64 machines
* Hand rebased from Niels original work on 1.9.0
2016-09-25 11:12:23 -05:00
Ulrich Weigand
19b84088d7 Add s390x support
This adds support for building the Rust compiler and standard
library for s390x-linux, allowing a full cross-bootstrap sequence
to complete.  This includes:

- Makefile/configure changes to allow native s390x builds
- Full Rust compiler support for the s390x C ABI
  (only the non-vector ABI is supported at this point)
- Port of the standard library to s390x
- Update the liblibc submodule to a version including s390x support
- Testsuite fixes to allow clean "make check" on s390x

Caveats:

- Resets base cpu to "z10" to bring support in sync with the default
  behaviour of other compilers on the platforms.  (Usually, upstream
  supports all older processors; a distribution build may then chose
  to require a more recent base version.)  (Also, using zEC12 causes
  failures in the valgrind tests since valgrind doesn't fully support
  this CPU yet.)

- z13 vector ABI is not yet supported.  To ensure compatible code
  generation, the -vector feature is passed to LLVM.  Note that this
  means that even when compiling for z13, no vector instructions
  will be used.  In the future, support for the vector ABI should be
  added (this will require common code support for different ABIs
  that need different data_layout strings on the same platform).

- Two test cases are (temporarily) ignored on s390x to allow passing
  the test suite.  The underlying issues still need to be fixed:
  * debuginfo/simd.rs fails because of incorrect debug information.
    This seems to be a LLVM bug (also seen with C code).
  * run-pass/union/union-basic.rs simply seems to be incorrect for
    all big-endian platforms.

Signed-off-by: Ulrich Weigand <ulrich.weigand@de.ibm.com>
2016-09-09 22:28:19 +01:00
bors
5440a1fae7 Auto merge of #36322 - uweigand:nonblocking, r=alexcrichton
Fix argument to FIONBIO ioctl

The FIONBIO ioctl takes as argument a pointer to an integer, which
should be either 0 or 1 to indicate whether nonblocking mode is to
be switched off or on.  The type of the pointed-to variable is "int".

However, the set_nonblocking routine in libstd/sys/unix/net.rs passes
a pointer to a libc::c_ulong variable.  This doesn't matter on all
32-bit platforms and on all litte-endian platforms, but it will
break on big-endian 64-bit platforms.

Found while porting Rust to s390x (a big-endian 64-bit platform).

Signed-off-by: Ulrich Weigand <ulrich.weigand@de.ibm.com>
2016-09-08 22:30:12 -07:00
bors
c615b21533 Auto merge of #36048 - GuillaumeGomez:code_clean, r=brson
Clean code a bit
2016-09-08 07:20:51 -07:00
Ulrich Weigand
3f0462acbb Fix argument to FIONBIO ioctl
The FIONBIO ioctl takes as argument a pointer to an integer, which
should be either 0 or 1 to indicate whether nonblocking mode is to
be switched off or on.  The type of the pointed-to variable is "int".

However, the set_nonblocking routine in libstd/sys/unix/net.rs passes
a pointer to a libc::c_ulong variable.  This doesn't matter on all
32-bit platforms and on all litte-endian platforms, but it will
break on big-endian 64-bit platforms.

Found while porting Rust to s390x (a big-endian 64-bit platform).

Signed-off-by: Ulrich Weigand <ulrich.weigand@de.ibm.com>
2016-09-07 17:21:10 +02:00
bors
eac41469d7 Auto merge of #35048 - tmiasko:monotonic-wait-timeout, r=alexcrichton
Use monotonic time in condition variables.

Configure condition variables to use monotonic time using
pthread_condattr_setclock on systems where this is possible.
This fixes the issue when thread waiting on condition variable is
woken up too late when system time is moved backwards.
2016-08-30 16:28:32 -07:00
Tomasz Miąsko
59e5e0b2db Avoid using pthread_condattr_setclock on Android.
The pthread_condattr_setclock is available only since
Android 5.0 and API level 21.
2016-08-29 10:53:12 +02:00
Guillaume Gomez
286ae72fb7 Clean code a bit 2016-08-27 21:01:27 +02:00
bors
eaf71f8d10 Auto merge of #35906 - jseyfried:local_prelude, r=eddyb
Use `#[prelude_import]` in `libcore` and `libstd`

r? @eddyb
2016-08-25 20:45:32 -07:00
bors
528c6f3ed6 Auto merge of #35884 - habnabit:freebsd-arc4rand, r=alexcrichton
Use arc4rand(9) on FreeBSD

From rust-lang-nursery/rand#112:

>After reading through #30691 it seems that there's general agreement that using OS-provided facilities for seeding rust userland processes is fine as long as it doesn't use too much from libc. FreeBSD's `arc4random_buf(3)` is not only a whole lot of libc code, but also not even currently exposed in the libc crate. Fortunately, the mechanism `arc4random_buf(3)` et al. use for getting entropy from the kernel ([`arc4rand(9)`](https://www.freebsd.org/cgi/man.cgi?query=arc4random&apropos=0&sektion=9&manpath=FreeBSD+10.3-RELEASE&arch=default&format=html)) is exposed via `sysctl(3)` with constants that are already in the libc crate.

>I haven't found too much documentation on `KERN_ARND`—it's missing or only briefly described in most of the places that cover sysctl mibs. But, from digging through the kernel source, it appears that the sysctl used in this PR is very close to just calling `arc4rand(9)` directly (with `reseed` set to 0 and no way to change it).

I expected [rand](/rust-lang-nursery/rand) to reply quicker, so I tried submitting it there first. It's been a few weeks with no comment, so I don't know the state of it, but maybe someone will see it here and have an opinion. This is basically the same patch. It pains me to duplicate the code but I guess it hasn't been factored out into just one place yet.
2016-08-25 08:32:19 -07:00
Jeffrey Seyfried
9a2c8783d9 Use #[prelude_import] in libstd. 2016-08-24 22:12:48 +00:00
Jonathan Turner
7c2fba6d4d Rollup merge of #35842 - apasel422:typo, r=GuillaumeGomez
Fix typos in unix/rwlock.rs

r? @steveklabnik
2016-08-22 15:34:20 -07:00
Aaron Gallagher
0a70944e04 Use the kernel arc4rand for FreeBSD OsRng.
This means that /dev/urandom doesn't have to be opened.
2016-08-21 16:41:44 -07:00
Aaron Gallagher
ef6aab2935 Reduce duplication in std::sys::unix::rand.
There were a bunch of more-of-less the same few lines for doing a
fill_bytes+transmute, and I didn't want to copy-paste it yet again.
2016-08-21 16:41:43 -07:00
Andrew Paseltiner
f7961126b5 Fix typos in unix/rwlock.rs 2016-08-19 21:12:36 -04:00
Alex Crichton
afeeadeae5 std: Stabilize APIs for the 1.12 release
Stabilized

* `Cell::as_ptr`
* `RefCell::as_ptr`
* `IpAddr::is_{unspecified,loopback,multicast}`
* `Ipv6Addr::octets`
* `LinkedList::contains`
* `VecDeque::contains`
* `ExitStatusExt::from_raw` - both on Unix and Windows
* `Receiver::recv_timeout`
* `RecvTimeoutError`
* `BinaryHeap::peek_mut`
* `PeekMut`
* `iter::Product`
* `iter::Sum`
* `OccupiedEntry::remove_entry`
* `VacantEntry::into_key`

Deprecated

* `Cell::as_unsafe_cell`
* `RefCell::as_unsafe_cell`
* `OccupiedEntry::remove_pair`

Closes #27708
cc #27709
Closes #32313
Closes #32630
Closes #32713
Closes #34029
Closes #34392
Closes #34285
Closes #34529
2016-08-19 11:59:56 -07:00
Eduard-Mihai Burtescu
8ade28e9a2 Rollup merge of #35574 - badboy:emscripten-test-fixes, r=brson
Emscripten test fixes

This picks up parts of #31623 to disable certain tests that emscripten can't run, as threads/processes are not supported.
I re-applied @tomaka's changes manually, I can rebase those commits with his credentials if he wants.

It also disables jemalloc for emscripten (at least in Rustbuild, I have to check if there is another setting for the same thing in the old makefile approach).

This should not impact anything for normal builds.
2016-08-14 20:29:49 +03:00
Pietro Albini
907a20c9e4 Clarify std::os::unix::net::SocketAddr::is_unnamed's docstring 2016-08-10 17:53:25 +02:00
Pietro Albini
e3ebe8bc02 Fix docs typo in std::os::unix::net::SocketAddr::is_unnamed 2016-08-10 17:34:50 +02:00
Jan-Erik Rediger
60599df03b [emscripten] Disable code paths that don't work on emscripten 2016-08-10 16:39:32 +02:00
bors
f0139140f6 Auto merge of #35426 - frewsxcv:os-sys-env-args-phantoms, r=alexcrichton
Utilize `PhantomData` to enforce `!Sync` and `!Send` field.

None
2016-08-09 05:26:50 -07:00
Jonathan Turner
56ffcbd321 Rollup merge of #35433 - mneumann:dragonfly-fix-libstd-errno-location, r=alexcrichton
Fix build on DragonFly (unused function errno_location)

Function errno_location() is not used on DragonFly. As warnings are
errors, this breaks the build.
2016-08-07 09:59:43 -07:00
Corey Farwell
28218bed8f Utilize PhantomData to enforce !Sync and !Send field. 2016-08-07 09:06:19 -04:00
bors
877dfeb572 Auto merge of #35378 - Amanieu:rwlock_eagain, r=alexcrichton
Handle RwLock reader count overflow

`pthread_rwlock_rdlock` may return `EAGAIN` if the maximum reader count overflows. We shouldn't return a successful lock in that case.
2016-08-06 19:50:48 -07:00
Michael Neumann
e8da9159fb Fix build on DragonFly (unused function errno_location)
Function errno_location() is not used on DragonFly. As warnings are
errors, this breaks the build.
2016-08-06 22:01:51 +02:00
Eduard-Mihai Burtescu
68f7b26504 Rollup merge of #34916 - tbu-:pr_comment_on_seek_cast, r=GuillaumeGomez
Comment on the casts in the `seek` implementations on files
2016-08-06 15:01:20 +03:00