Commit graph

13225 commits

Author SHA1 Message Date
Alex Crichton
dc50a633f3 std: Use native #[thread_local] TLS on wasm
This commit moves `thread_local!` on WebAssembly targets to using the
`#[thread_local]` attribute in LLVM. This was recently implemented
upstream and is [in the process of being documented][dox]. This change
only takes affect if modules are compiled with `+atomics` which is
currently unstable and a pretty esoteric method of compiling wasm
artifacts.

This "new power" of the wasm toolchain means that the old
`wasm-bindgen-threads` feature of the standard library can be removed
since it should now be possible to create a fully functioning threaded
wasm module without intrusively dealing with libstd symbols or
intrinsics. Yay!

[dox]: https://github.com/WebAssembly/tool-conventions/pull/116
2019-07-25 11:17:07 -07:00
Mazdak Farrokhzad
b1a866012d
Rollup merge of #62814 - androm3da:hexagon_19jul_2019, r=alexcrichton
add support for hexagon-unknown-linux-musl
2019-07-25 01:05:00 +02:00
Nathan
b70f217262 Use raw pointers in std::sys::cloudabi when passing MaybeUninit values 2019-07-23 13:51:28 -04:00
Nathan
0ac6afafa6 Cleanup std::sys::cloudabi 2019-07-23 13:49:37 -04:00
Nathan
82dd54baf3 Modify CloudABI ReentrantMutex to use MaybeUninit
Remove uses of mem::uninitialized, which is now deprecated
2019-07-23 10:14:46 -04:00
Nathan
e1e0df8a49 Remove uses of mem::uninitialized in std::sys::cloudabi
Usages still appear in cloudabi tests and in the reentrant mutex implementation
2019-07-22 20:42:08 -04:00
Brian Cain
4b339688b5 add support for hexagon-unknown-linux-musl 2019-07-22 09:44:58 -05:00
Mazdak Farrokhzad
b94e59cc41
Rollup merge of #62845 - RalfJung:read, r=rkruppe
read: fix doc comment

No idea how that happened...
2019-07-22 15:32:23 +02:00
Mazdak Farrokhzad
002f604bc9
Rollup merge of #62787 - Indy2222:master, r=Mark-Simulacrum
Fix typo in src/libstd/net/udp.rs doc comment

Affect is usually used as a verb, effect as a verb.
2019-07-22 15:32:14 +02:00
Mazdak Farrokhzad
1d7faafe47
Rollup merge of #62746 - RalfJung:deprecated, r=KodrAus
do not use assume_init in std::io

Cc https://github.com/rust-lang/rust/issues/62397
2019-07-22 15:32:12 +02:00
Mazdak Farrokhzad
0de90c67dc
Rollup merge of #62709 - nhynes:test-maplike-fromiter, r=cuviper
Test that maplike FromIter satisfies uniqueness

This PR adds a simple assertion to the `HashMap` and `HashSet` tests to ensure that uniqueness is satisfied when `FromIter`ing. This is useful for people who want to test their custom type against the Map/Set interfaces since they'll copy the tests wholesale but possibly miss this bug (where _they_ = _me_).
2019-07-22 15:32:09 +02:00
Ralf Jung
8dc5635e13 read: fix doc comment 2019-07-21 12:47:34 +02:00
Ralf Jung
7c1e405478 ONCE_INIT is deprecated-in-future only for bootstrap 2019-07-19 09:48:06 +02:00
Ralf Jung
13ed0cf9e8 do not use mem::uninitialized in std::io 2019-07-19 09:45:38 +02:00
Ralf Jung
33452b0587 warn about deprecated-in-future in most of libstd 2019-07-19 09:35:32 +02:00
Martin Indra
48b6069eaf
Fix typo in src/libstd/net/udp.rs doc comment
Affect is usually used as a verb, effect as a verb.
2019-07-18 21:03:56 +02:00
Mark Rousskov
5d4681f76a
Rollup merge of #62732 - nathanwhit:fix_mem_uninit, r=Amanieu
Remove last use of mem::uninitialized from std::io::util

Addresses #62397 for std::io::util
2019-07-18 11:29:45 -04:00
nathanwhit
04f0d309dc Remove last use of mem::uninitialized from std::io::util 2019-07-16 22:41:38 -04:00
bors
07e0c3651c Auto merge of #61946 - BaoshanPang:vxworks, r=alexcrichton
port rust for vxWorks

The supporting for vxWorks has been enabled in this branch. Although there are still a lots of work to do, I would like to upstream the code and fix the problems later.

Please let me know if there is anything I have to do before upstream the code.

r? @alexcrichton

Thanks,
Baoshan
2019-07-16 19:26:53 +00:00
Baoshan Pang
4c0c0f6158 Add supporting for vxWorks
r? @alexcrichton
2019-07-16 00:13:07 -07:00
Nick Hynes
503cedac0c
Test that maplike FromIter satisfies uniqueness 2019-07-16 02:34:00 +00:00
gnzlbg
77c14a5c5f Update the stdarch submodule 2019-07-15 14:05:28 +02:00
bors
85a360e0ea Auto merge of #62610 - Stargateur:fix-miri-error-cstring-into_inner, r=RalfJung
Fix miri error in into_inner() of CString

Fix #62553

I choice to not transmute because I think it's more unsafe and in case the structure change this code should always work.

r? @RalfJung
2019-07-14 13:52:40 +00:00
bors
7d41ebf768 Auto merge of #62464 - GuillaumeGomez:add-missing-urls-osstr, r=QuietMisdreavus
Add missing urls for osstr

r? @QuietMisdreavus
2019-07-14 10:23:05 +00:00
Antoine PLASKOWSKI
4c4bd34067 Fix miri error in into_inner() of CString 2019-07-13 11:09:46 +02:00
Nathan Goldbaum
d4fcbb4bdb document that crate refers to the project root 2019-07-11 14:25:53 -04:00
Mazdak Farrokhzad
e07df9c9df
Rollup merge of #62425 - cyphar:linux-cloexec-use-fcntl, r=alexcrichton
filedesc: don't use ioctl(FIOCLEX) on Linux

All `ioctl(2)`s will fail on `O_PATH` file descriptors on Linux (because
they use `&empty_fops` as a security measure against `O_PATH` descriptors
affecting the backing file).

As a result, `File::try_clone()` and various other methods would always
fail with `-EBADF` on `O_PATH` file descriptors. The solution is to simply
use `F_SETFD` (as is used on other unices) which works on `O_PATH`
descriptors because it operates through the `fnctl(2)` layer and not
through `ioctl(2)`s.

Since this code is usually only used in strange error paths (a broken or
ancient kernel), the extra overhead of one syscall shouldn't cause any
dramas. Most other systems programming languages also use the fnctl(2)
so this brings us in line with them.

Fixes: rust-lang/rust#62314
Signed-off-by: Aleksa Sarai <cyphar@cyphar.com>
2019-07-11 04:33:16 +02:00
Aleksa Sarai
6031a07a46
filedesc: don't use ioctl(FIOCLEX) on Linux
All ioctl(2)s will fail on O_PATH file descriptors on Linux (because
they use &empty_fops as a security measure against O_PATH descriptors
affecting the backing file).

As a result, File::try_clone() and various other methods would always
fail with -EBADF on O_PATH file descriptors. The solution is to simply
use F_SETFD (as is used on other unices) which works on O_PATH
descriptors because it operates through the fnctl(2) layer and not
through ioctl(2)s.

Since this code is usually only used in strange error paths (a broken or
ancient kernel), the extra overhead of one syscall shouldn't cause any
dramas. Most other systems programming languages also use the fnctl(2)
so this brings us in line with them.

Fixes: rust-lang/rust#62314
Signed-off-by: Aleksa Sarai <cyphar@cyphar.com>
2019-07-10 23:59:46 +10:00
Mazdak Farrokhzad
bc18981f21
Rollup merge of #62403 - SimonSapin:concat, r=alexcrichton
Replace SliceConcatExt trait with inherent methods and SliceConcat helper trait

Before this change `SliceConcatExt` was an unstable extension trait with stable methods. It was in the libstd prelude, so that its methods could be used on the stable channel.

This replaces it with inherent methods, which can be used without any addition to the prelude. Since the methods are stable and very generic (with for example a return type that depends on the types of parameters), an helper trait is still needed. But now that trait does not need to be in scope for the methods to be used.

Removing this depedency on the libstd prelude allows the methods to be used in `#![no_std]` crate that use liballoc, which does not have its own implicitly-imported prelude.
2019-07-09 04:52:38 +02:00
Guillaume Gomez
4f1127a2bf Add missing urls for osstr 2019-07-07 15:38:53 +02:00
Yuki Okushi
559c3ec562 Document while keyword 2019-07-07 22:17:26 +09:00
Vadim Petrochenkov
15042a3c1c #[rustc_doc_only_macro] -> #[rustc_builtin_macro] 2019-07-06 16:59:08 +03:00
Mazdak Farrokhzad
3c4a6c8606
Rollup merge of #62296 - RalfJung:memalign, r=alexcrichton
request at least ptr-size alignment from posix_memalign

Fixes https://github.com/rust-lang/rust/issues/62251
2019-07-06 02:37:59 +02:00
Mazdak Farrokhzad
e89bd8c308
Rollup merge of #62414 - jethrogb:jb/sgx-uninit, r=Mark-Simulacrum
Remove last use of mem::uninitialized in SGX

See #62397
2019-07-05 20:27:08 +02:00
Mazdak Farrokhzad
c5d18600ef
Rollup merge of #62381 - pawroman:fix_typo_in_write_vectored, r=Centril
Fix a typo in Write::write_vectored docs

Fixed what seems like a typo. "Copy to from" is extremely confusing.
2019-07-05 20:27:02 +02:00
Jethro Beekman
7fb17d868b Remove last use of mem::uninitialized in SGX 2019-07-05 09:03:49 -07:00
Mazdak Farrokhzad
0f92eb8a4a
Rollup merge of #62123 - jeremystucki:needless_lifetimes_std, r=alexcrichton
Remove needless lifetimes (std)

Split from #62039
2019-07-05 13:52:58 +02:00
Simon Sapin
e808d921dd Replace SliceConcatExt trait with inherent methods and SliceConcat helper trait
Before this change `SliceConcatExt` was an unstable extension trait
with stable methods. It was in the libstd prelude, so that its methods
could be used on the stable channel.

This replaces it with inherent methods,
which can be used without any addition to the prelude.
Since the methods are stable and very generic
(with for example a return type that depends on the types of parameters),
an helper trait is still needed.
But now that trait does not need to be in scope for the methods to be used.

Removing this depedency on the libstd prelude allows the methods to be used
in `#![no_std]` crate that use liballoc, which does not have its own
implicitly-imported prelude.
2019-07-05 11:49:30 +02:00
Mark Rousskov
007d87f171 Permit use of mem::uninitialized via allow(deprecated) 2019-07-04 21:01:35 -04:00
Paweł Romanowski
7f035baaf7 Fix a typo in Write::write_vectored docs 2019-07-04 18:44:34 +02:00
Jeremy Stucki
fc67e5774d
Add missing lifetime specifier
Co-Authored-By: Mazdak Farrokhzad <twingoow@gmail.com>
2019-07-04 10:42:24 +02:00
Mazdak Farrokhzad
88c007cd04
Rollup merge of #62249 - czipperz:use-mem-take-instead-of-replace-default, r=dtolnay,Centril
Use mem::take instead of mem::replace with default
2019-07-04 01:38:46 +02:00
Ralf Jung
2e47fc3bcd fix unused-import error on android 2019-07-03 22:48:17 +02:00
Mark Rousskov
a0fcf5e6aa
Rollup merge of #62304 - SimonSapin:safe, r=eddyb
HashMap is UnwindSafe

Fixes https://github.com/rust-lang/rust/issues/62301, a regression in 1.36.0-pre which was caused by hashbrown using `NonZero<T>` where the older hashmap used `Unique<T>`.
2019-07-03 09:59:28 -04:00
Mark Rousskov
05704e80bc
Rollup merge of #62183 - alexcrichton:fix-tests, r=nikomatsakis
std: Move a process test out of libstd

This commit moves a test out of libstd which is causing deadlocks on
musl on CI. Looks like the recent update in musl versions brings in some
internal updates to musl which makes `setgid` and `setuid` invalid to
call after a `fork` in a multithreaded program. The issue seen here is
that the child thread was attempting to grab a lock held by a
nonexistent thread, meaning that the child process simply deadlocked
causing the whole test to deadlock.

This commit moves the test to its own file with no threads which should
work.
2019-07-03 09:59:16 -04:00
Simon Sapin
7454b29efc HashMap is UnwindSafe
Fixes https://github.com/rust-lang/rust/issues/62301, a regression in 1.36.0 which was caused by hashbrown using `NonZero<T>` where the older hashmap used `Unique<T>`.
2019-07-02 16:01:06 +02:00
Ralf Jung
576369bfce improve and deduplicate comments 2019-07-02 12:51:00 +02:00
Ralf Jung
2bad604587 request at least ptr-size alignment from posix_memalign 2019-07-02 09:20:41 +02:00
Chris Gregory
b0c199a969 Enable mem_take feature in relevant crates 2019-07-01 20:21:53 -07:00
Chris Gregory
636f5e6d11 Convert more usages over 2019-07-01 20:21:12 -07:00