Commit Graph

84451 Commits

Author SHA1 Message Date
kennytm e2fdf625e9 Rollup merge of #58976 - phil-opp:patch-2, r=alexcrichton
Default to integrated `rust-lld` linker for UEFI targets

The `x86_64-unknown-uefi` target was added in https://github.com/rust-lang/rust/pull/56769 with the linker defaulting to `lld-link`. This means that a system linker with that name is required for linking.

I think defaulting to `rust-lld`, which is shipped with Rust, is a better default for the following reasons:

- Most systems don't have `lld-link` installed, so it forces users to install it first.
- The naming of LLD executables is not standarized, so users often need to create an additional symlink before things work. For example, on Ubuntu `apt install lld` leads to an executable named `lld-link-6.0`.
- We already default to `rust-lld` for [many targets](https://github.com/rust-lang/rust/search?utf8=%E2%9C%93&q=rust-lld&type=), including embedded and WASM targets, so doing the same for UEFI crates seems consistent to me. (It even seems like `x86_64-unknown-uefi` is the [only target](https://github.com/rust-lang/rust/search?q=lld-link&unscoped_q=lld-link) that uses `lld-link`.)

cc @dvdhrm who added the target and @kkk669 who [proposed to use `rust-lld`](https://github.com/rust-lang/rust/pull/56769#issuecomment-461119648).
2019-03-16 14:56:25 +08:00
kennytm 152ed3717b Rollup merge of #58949 - jethrogb:jb/sgx-thread-id, r=joshtriplett
SGX target: Expose thread id function in os module

In order to call `std::os::fortanix_sgx::usercalls::send`, you need the thread id. This exposes it through another function in `std::os::fortanix_sgx`.

I looked at how other platforms do this. On Windows and `cfg(unix)` you can get the OS handle from a `thread::JoinHandle`, but that's not sufficient, I need it for a `thread::Thread`. In the future, this functionality could be added to `thread::Thread` and this platform can follow suit.

r? @joshtriplett
2019-03-16 14:56:23 +08:00
kennytm 9859b818c8 Rollup merge of #58941 - wzssyqa:master, r=alexcrichton
MIPS: add r6 support

MIPS r6 is quite different with the previous version.
It use some new target triples:
  mipsisa32r6-unknown-linux-gnu
  mipsisa32r6el-unknown-linux-gnu
  mipsisa64r6-unknown-linux-gnuabi64
  mipsisa64r6el-unknown-linux-gnuabi64

This patch has been tested with Debian Port for mips64r6el,
and the support of these triples also is included in llvm:
  https://reviews.llvm.org/rGe58c45a695f39004710b6ce940d489fee800dbd3
2019-03-16 14:56:21 +08:00
kennytm 5e232b3b13 Rollup merge of #58938 - dlrobertson:fix_58280, r=joshtriplett
core: ensure VaList passes improper_ctypes lint

Ensure the `core::ffi::VaList` structure passes the `improper_ctypes` lint.

Fixes: #58280
2019-03-16 14:56:19 +08:00
kennytm 382dfeab85 Rollup merge of #58933 - SimonSapin:alloc-prelude-v1, r=Amanieu
Move alloc::prelude::* to alloc::prelude::v1, make alloc a subset of std

This was one of the unresolved questions of https://github.com/rust-lang/rfcs/pull/2480. As the RFC says this is maybe not useful in the sense that we are unlikely to ever have a second version, but making the crate a true subset makes one less issue to think about if we stabilize it and later want to merge standard library crates and have Cargo feature flags to enable or disable parts of the `std` crate.

See also discussion in https://github.com/rust-lang/rust/pull/58175.

Also rename the feature gate and point to a dedicated tracking issue: https://github.com/rust-lang/rust/issues/58935
2019-03-16 14:56:18 +08:00
kennytm ccbf754e35 Rollup merge of #58901 - ebarnard:just-copying, r=sfackler
Change `std::fs::copy` to use `copyfile` on MacOS and iOS

`copyfile` on MacOS is similar to `CopyFileEx` on Windows. It supports copying resource forks, extended attributes, and file ACLs, none of which are copied by the current generic unix implementation.

The API is available from MacOS 10.7 and iOS 4.3 (and possibly earlier but I haven't checked).

Closes #58895.
2019-03-16 14:56:16 +08:00
kennytm d869a7b16f Rollup merge of #58873 - GuillaumeGomez:fix-auto-hide-method-doc, r=QuietMisdreavus
Fix "Auto-hide item methods documentation" setting

Fixes #58825.

r? @QuietMisdreavus
2019-03-16 14:56:14 +08:00
kennytm 2318274a2d Rollup merge of #58855 - alexcrichton:wasm-multithreaded-alloc, r=fitzgen
std: Spin for a global malloc lock on wasm32

There's lots of comments in the code, but the main gist of this commit
is that the acquisition of the global malloc lock on the
`wasm32-unknown-unknown` target when threads are enabled will not spin
on contention rather than block.
2019-03-16 14:56:13 +08:00
kennytm bc3bef8327 Rollup merge of #58854 - alexcrichton:update-windows, r=Mark-Simulacrum
appveyor: Use VS2017 for all our images

Originally added in #55935 to test build times, this was reverted
in #56201 due to a belief that it caused the exit code 259 spurious
errors. We've since learned, however, that the 259 exit code is likely
not related to this image update as we're getting it in a number of
locations now.

VS2017 looks like it may be required to compile LLVm in the near future,
notably discovered by #58408 where we attempted to update LLVM.
2019-03-16 14:56:11 +08:00
bors 52e885628e Auto merge of #58556 - oli-obk:imperative_recursion, r=pnkfelix
Optimize copying large ranges of undefmask blocks

Hopefully fixes #58523
2019-03-15 19:24:15 +00:00
bors ad8a3eb039 Auto merge of #58140 - eddyb:advent-of-print, r=nikomatsakis
Refactor ppaux out of existence.

A long-time coming, this PR reorganizes and rewrites the pretty-printing architecture of rustc, specifically the parts that involve the typesystem (which used to be in `rustc::util::ppaux`).

*Note: these commits used to be in #57967 before being split off.*

The new API (i.e. the `Printer` and `PrettyPrint` traits) is in `rustc::ty::print`.

Design points, roughly:
* using associated types in `Printer` to allow building e.g. an AST, not just printing as a side-effect
* several overloading points for implementers of `PrettyPrinter`, e.g. how `<...>` is printed
* for `fmt::Display` impls, the value to print is lifted to the `ty::tls` `tcx`, and everything after that stays within the `ty::print` API, which requires `'tcx` to match between values and the printer's `tcx`, without going through `fmt::Display` again

Most of the behavior is unchanged, except for a few details, which should be clear from the test changes.

r? @nikomatsakis

Fixes https://github.com/rust-lang/rust/issues/55464
2019-03-15 13:58:03 +00:00
Eduard-Mihai Burtescu dbf19c3975 rustbuild: remove obsolete fulldeps behavior from src/test/pretty tests, and enable them by default. 2019-03-15 13:25:10 +02:00
Eduard-Mihai Burtescu 0ee059d5a0 Fix rebase fallout and address some review comments. 2019-03-15 13:25:10 +02:00
Ralf Jung 4653ae1e3e we can now print on entering/leaving the topmost frame, and make sure it stays that way 2019-03-15 13:25:10 +02:00
Eduard-Mihai Burtescu 22d6c55cdf rustc: print ExistentialProjection with spaces around =, e.g. dyn Foo<A = X>. 2019-03-15 13:25:10 +02:00
Eduard-Mihai Burtescu a54a41ce47 rustc: provide DisambiguatedDefPathData in ty::print. 2019-03-15 13:25:10 +02:00
Eduard-Mihai Burtescu 8619edede1 rustc: slice substs in ty::print instead of passing the full ones. 2019-03-15 13:25:10 +02:00
Eduard-Mihai Burtescu 9df7c3f48f rustc: let ty::print::pretty's p! macro call arbitrary methods. 2019-03-15 13:25:10 +02:00
Eduard-Mihai Burtescu 52b4f2daa0 rustc: remove PrintCx from ty::Print and rely on printers carrying TyCtxt. 2019-03-15 13:25:10 +02:00
Eduard-Mihai Burtescu 2a656828ac rustc: remove the ability for pretty-printers to override nesting. 2019-03-15 13:25:10 +02:00
Eduard-Mihai Burtescu c0c485c3ad rustc: don't thread existential projections through path_generic_args. 2019-03-15 13:25:10 +02:00
Eduard-Mihai Burtescu ffa00d4628 rustc: make pretty_path_generic_args' task as simple as possible. 2019-03-15 13:25:10 +02:00
Eduard-Mihai Burtescu 4deaa69b42 rustc: print elided regions as '_ instead of nothing, and use a separate check when optional. 2019-03-15 13:25:10 +02:00
Eduard-Mihai Burtescu 72690d24f0 rustc: always hide defaulted generic args, even in verbose mode. 2019-03-15 13:25:10 +02:00
Eduard-Mihai Burtescu 381fa7aa18 rustc: move ty::print::PrintConfig's fields to FmtPrinter. 2019-03-15 13:25:10 +02:00
Eduard-Mihai Burtescu 1a0f3a2856 rustc: streamline the Print/fmt::Display impls in ppaux and move them to ty::print::pretty. 2019-03-15 13:25:10 +02:00
Eduard-Mihai Burtescu 030cdc9729 rustc: remove obsolete hacks from ppaux, relating to normalization under HRTB. 2019-03-15 13:25:10 +02:00
Eduard-Mihai Burtescu fb53bb9e2b rustc: move Debug impls from ppaux to ty::structural_impls. 2019-03-15 13:25:10 +02:00
Eduard-Mihai Burtescu 9c424850e8 rustc: disconnect all the Debug functionality from ty::print. 2019-03-15 13:25:10 +02:00
Eduard-Mihai Burtescu d0a1bf5c88 rustc: make util::ppaux private. 2019-03-15 13:25:10 +02:00
Eduard-Mihai Burtescu 800ddb367e rustc: remove fields from ty::print::PrintConfig available from tcx. 2019-03-15 13:25:10 +02:00
Eduard-Mihai Burtescu 55871aad9a rustc: split out the pretty-printing parts of ty::print into a separate module. 2019-03-15 13:25:10 +02:00
Eduard-Mihai Burtescu 26f180705a rustc: move ty/print.rs to ty/print/mod.rs. 2019-03-15 13:25:10 +02:00
Eduard-Mihai Burtescu 6d67d6846c rustc_codegen_utils: print all nominal types as paths, in symbol names. 2019-03-15 13:25:10 +02:00
Eduard-Mihai Burtescu 5211e37b1d rustc: don't pass Namespace explicitly, but rather track it in FmtPrinter. 2019-03-15 13:25:10 +02:00
Eduard-Mihai Burtescu ab26b26d34 rustc: introduce a ty::print::PrettyPrinter helper for printing "<...>". 2019-03-15 13:25:10 +02:00
Eduard-Mihai Burtescu 35e5123f51 rustc: support overriding type printing in ty::print::Printer. 2019-03-15 13:25:10 +02:00
Eduard-Mihai Burtescu 88d96b269c rustc: support overriding region printing in ty::print::Printer. 2019-03-15 13:25:10 +02:00
Eduard-Mihai Burtescu fc914aa88a rustc: centralize region printing in ty::RegionKind's Print impl. 2019-03-15 13:25:10 +02:00
Eduard-Mihai Burtescu cafd83d1d5 rustc: don't keep RegionHighlightMode in a thread-local. 2019-03-15 13:25:10 +02:00
Eduard-Mihai Burtescu 7c4eecef0b rustc: pass ty::print::PrintCx by value. 2019-03-15 13:25:10 +02:00
Eduard-Mihai Burtescu ab5d6fb302 rustc: remove the closure from ppaux's p! macro (by making ? implicit). 2019-03-15 13:25:10 +02:00
Eduard-Mihai Burtescu 37e918526a rustc: split off most of ty::print::PrintCx's fields into a separate struct. 2019-03-15 13:25:10 +02:00
Eduard-Mihai Burtescu 5616ca857d rustc: uniformize ty::print's error handling by requiring Result. 2019-03-15 13:25:10 +02:00
Eduard-Mihai Burtescu 972af5e808 rustc: rename ppaux' print macro to just p and make its cx input implicit. 2019-03-15 13:25:10 +02:00
Eduard-Mihai Burtescu 387ea61ec1 rustc: make ppaux' print macro use only one closure. 2019-03-15 13:25:10 +02:00
Eduard-Mihai Burtescu 27ddf2cec8 rustc: replace node_path_str with uses of def_path_str. 2019-03-15 13:25:10 +02:00
Eduard-Mihai Burtescu 36f64f15fc rustc: remove ty::print::FORCE_ABSOLUTE altogether. 2019-03-15 13:25:10 +02:00
Eduard-Mihai Burtescu 66cc029dd7 rustc: assert ty::print::FORCE_ABSOLUTE isn't needed anymore. 2019-03-15 13:25:10 +02:00
Eduard-Mihai Burtescu df6650f38c rustc: move ...::<impl ...> printing into pretty_path_qualified. 2019-03-15 13:25:10 +02:00