]> git.lizzy.rs Git - rust.git/log
rust.git
4 years agomemory access sanity checks: abort instead of panic
Ralf Jung [Sat, 6 Jun 2020 09:56:58 +0000 (11:56 +0200)]
memory access sanity checks: abort instead of panic

4 years agoAuto merge of #72962 - lcnr:ObligationCause-lrc, r=ecstatic-morse
bors [Tue, 16 Jun 2020 06:22:52 +0000 (06:22 +0000)]
Auto merge of #72962 - lcnr:ObligationCause-lrc, r=ecstatic-morse

store `ObligationCause` on the heap

Stores `ObligationCause` on the heap using an `Rc`.

This PR trades off some transient memory allocations to reduce the size of–and thus the number of instructions required to memcpy–a few widely used data structures in trait solving.

4 years agoAuto merge of #72357 - ortem:new-dbg-pretty-printers, r=pnkfelix
bors [Mon, 15 Jun 2020 15:21:45 +0000 (15:21 +0000)]
Auto merge of #72357 - ortem:new-dbg-pretty-printers, r=pnkfelix

Implement new gdb/lldb pretty-printers

Reopened #60826

This PR replaces current gdb and lldb pretty-printers with new ones that were originally written for [IntelliJ Rust](https://github.com/intellij-rust/intellij-rust/tree/master/prettyPrinters).

The current state of lldb pretty-printers is poor, because [they don't use synthetic children](https://github.com/rust-lang/rust/issues/55586#issuecomment-436610063). When I started to reimplement lldb pretty-printers with synthetic children support, I've found current version strange and hard to support. I think `debugger_pretty_printers_common.py` is overkill, so I got rid of it.

The new pretty-printers have to support all types supported by current pretty-printers, and also support `Rc`, `Arc`, `Cell`, `Ref`, `RefCell`, `RefMut`, `HashMap`, `HashSet`.

Fixes #56252

4 years agoAuto merge of #73369 - RalfJung:rollup-hl8g9zf, r=RalfJung
bors [Mon, 15 Jun 2020 11:39:23 +0000 (11:39 +0000)]
Auto merge of #73369 - RalfJung:rollup-hl8g9zf, r=RalfJung

Rollup of 10 pull requests

Successful merges:

 - #72707 (Use min_specialization in the remaining rustc crates)
 - #72740 (On recursive ADT, provide indirection structured suggestion)
 - #72879 (Miri: avoid tracking current location three times)
 - #72938 (Stabilize Option::zip)
 - #73086 (Rename "cyclone" to "apple-a7" per changes in upstream LLVM)
 - #73104 (Example about explicit mutex dropping)
 - #73139 (Add methods to go from a nul-terminated Vec<u8> to a CString)
 - #73296 (Remove vestigial CI job msvc-aux.)
 - #73304 (Revert heterogeneous SocketAddr PartialEq impls)
 - #73331 (extend network support for HermitCore)

Failed merges:

r? @ghost

4 years agoRollup merge of #73331 - hermitcore:listen, r=kennytm
Ralf Jung [Mon, 15 Jun 2020 10:01:14 +0000 (12:01 +0200)]
Rollup merge of #73331 - hermitcore:listen, r=kennytm

extend network support for HermitCore

- add basic support of TcpListerner for HermitCore
- revise TcpStream to support peer_addr

4 years agoRollup merge of #73304 - dtolnay:socketeq, r=Mark-Simulacrum
Ralf Jung [Mon, 15 Jun 2020 10:01:13 +0000 (12:01 +0200)]
Rollup merge of #73304 - dtolnay:socketeq, r=Mark-Simulacrum

Revert heterogeneous SocketAddr PartialEq impls

Originally added in #72239.

These lead to inference regressions (mostly in tests) in code that looks like:

```rust
let socket = SocketAddrV4::new(Ipv4Addr::new(127, 0, 0, 1), 8080);
assert_eq!(socket, "127.0.0.1:8080".parse().unwrap());
```

That compiles as of stable 1.44.0 but fails in beta with:

```console
error[E0284]: type annotations needed
 --> src/main.rs:3:41
  |
3 |     assert_eq!(socket, "127.0.0.1:8080".parse().unwrap());
  |                                         ^^^^^ cannot infer type for type parameter `F` declared on the associated function `parse`
  |
  = note: cannot satisfy `<_ as std::str::FromStr>::Err == _`
help: consider specifying the type argument in the method call
  |
3 |     assert_eq!(socket, "127.0.0.1:8080".parse::<F>().unwrap());
  |
```

Closes #73242.

4 years agoRollup merge of #73296 - ehuss:remove-msvc-aux, r=Mark-Simulacrum
Ralf Jung [Mon, 15 Jun 2020 10:01:11 +0000 (12:01 +0200)]
Rollup merge of #73296 - ehuss:remove-msvc-aux, r=Mark-Simulacrum

Remove vestigial CI job msvc-aux.

This CI job isn't really doing anything, so it seems prudent to remove it.

For some history:
* This was introduced in #48809 when the msvc job was split in two to keep it under 2 hours (oh the good old days). At the time, this check-aux job did a bunch of things:
    * tidy
    * src/test/pretty
    * src/test/run-pass/pretty
    * src/test/run-fail/pretty
    * src/test/run-pass-valgrind/pretty
    * src/test/run-pass-fulldeps/pretty
    * src/test/run-fail-fulldeps/pretty
* Tidy was removed in #60777.
* run-pass and run-pass-fulldeps moved to UI in #63029
* src/test/pretty removed in #58140
* src/test/run-fail moved to UI in #71185
* run-fail-fulldeps removed in #51285

Over time through attrition, the job was left with one lonely thing: `src/test/run-pass-valgrind/pretty`. And of course, this wasn't actually running the "pretty" tests. The normal `run-pass-valgrind` tests ran, and then when it tried to run in "pretty" mode, all the tests were ignored because compiletest thought nothing had changed (apparently compiletest isn't fingerprinting the mode?  Needs more investigation…). `run-pass-valgrind` is already being run as part of `x86_64-msvc-1`, so there's no need to run it here.

I've taken the liberty of removing `src/test/run-pass-valgrind/pretty` as a distinct test. I'm guessing from the other PR's that the pretty tests should now live in `src/test/pretty`, and that the team has moved away from doing pretty tests on other parts of the `src/test` tree.

4 years agoRollup merge of #73139 - poliorcetics:cstring-from-vec-with-nul, r=dtolnay
Ralf Jung [Mon, 15 Jun 2020 10:01:09 +0000 (12:01 +0200)]
Rollup merge of #73139 - poliorcetics:cstring-from-vec-with-nul, r=dtolnay

Add methods to go from a nul-terminated Vec<u8> to a CString

Fixes #73100.

Doc tests have been written and the documentation on the error type
updated too.

I used `#[stable(feature = "cstring_from_vec_with_nul", since = "1.46.0")]` but I don't know if the version is correct.

4 years agoRollup merge of #73104 - poliorcetics:explicit-mutex-drop-example, r=dtolnay
Ralf Jung [Mon, 15 Jun 2020 10:01:07 +0000 (12:01 +0200)]
Rollup merge of #73104 - poliorcetics:explicit-mutex-drop-example, r=dtolnay

Example about explicit mutex dropping

Fixes #67457.

Following the remarks made in #73074, I added an example on the main `Mutex` type, with a situation where there is mutable data and a computation result.

In my testing it is effectively needed to explicitly drop the lock, else it deadlocks.

r? @dtolnay because you were the one to review the previous PR.

4 years agoRollup merge of #73086 - trevyn:apple-a7, r=nikic
Ralf Jung [Mon, 15 Jun 2020 10:01:05 +0000 (12:01 +0200)]
Rollup merge of #73086 - trevyn:apple-a7, r=nikic

Rename "cyclone" to "apple-a7" per changes in upstream LLVM

It looks like they intended to keep "cyclone" as a legacy option, but removed it from the list of subtarget features. This created a flood of warnings when targeting aarch64-apple-ios, and probably also created incorrectly optimized artifacts.

See:
https://reviews.llvm.org/D70779
https://reviews.llvm.org/D70779#C1703593NL568

LLVM 10 merged into master at:
https://github.com/rust-lang/rust/pull/67759

4 years agoRollup merge of #72938 - lzutao:stabilize_option_zip, r=dtolnay
Ralf Jung [Mon, 15 Jun 2020 10:01:03 +0000 (12:01 +0200)]
Rollup merge of #72938 - lzutao:stabilize_option_zip, r=dtolnay

Stabilize Option::zip

This PR stabilizes the following API:

```rust
impl<T> Option<T> {
    pub fn zip<U>(self, other: Option<U>) -> Option<(T, U)>;
}
```

This API has real world usage as seen in <https://grep.app/search?q=-%3E%20Option%3C%5C%28T%2C%5Cs%3FU%5C%29%3E&regexp=true&filter[lang][0]=Rust>.

The `zip_with` method is left unstably as this API is kinda niche
and it hasn't received much usage in Rust repositories on GitHub.

cc #70086

4 years agoRollup merge of #72879 - RalfJung:miri-tctx-at, r=oli-obk
Ralf Jung [Mon, 15 Jun 2020 10:01:01 +0000 (12:01 +0200)]
Rollup merge of #72879 - RalfJung:miri-tctx-at, r=oli-obk

Miri: avoid tracking current location three times

Miri tracks the current instruction to execute in the call stack, but it also additionally has two `TyCtxtAt` that carry a `Span` that also tracks the current instruction. That is quite silly, so this PR uses `TyCtxt` instead, and then uses a method for computing the current span when a `TyCtxtAt` is needed. Having less redundant (semi-)global state seems like a good improvement to me. :D

To keep the ConstProp errors the same, I had to add the option to `error_to_const_error` to overwrite the span. Also for some reason this changes cycle errors a bit -- not sure if we are now better or worse as giving those queries the right span. (It is unfortunately quite easy to accidentally use `DUMMY_SP` by calling the query on a `TyCtxt` instead of a `TyCtxtAt`.)

r? @oli-obk @eddyb

4 years agoRollup merge of #72740 - estebank:recursive-indirection, r=matthewjasper
Ralf Jung [Mon, 15 Jun 2020 10:00:59 +0000 (12:00 +0200)]
Rollup merge of #72740 - estebank:recursive-indirection, r=matthewjasper

On recursive ADT, provide indirection structured suggestion

4 years agoRollup merge of #72707 - matthewjasper:rustc_min_spec, r=oli-obk
Ralf Jung [Mon, 15 Jun 2020 10:00:58 +0000 (12:00 +0200)]
Rollup merge of #72707 - matthewjasper:rustc_min_spec, r=oli-obk

Use min_specialization in the remaining rustc crates

This adds a lot of `transmute` calls to replace the unsound uses of specialization.
It's ugly, but at least it's honest about what's going on.

cc #71420, @RalfJung

4 years agoAuto merge of #73367 - RalfJung:rollup-4ewvk9b, r=RalfJung
bors [Mon, 15 Jun 2020 08:09:38 +0000 (08:09 +0000)]
Auto merge of #73367 - RalfJung:rollup-4ewvk9b, r=RalfJung

Rollup of 10 pull requests

Successful merges:

 - #71824 (Check for live drops in constants after drop elaboration)
 - #72389 (Explain move errors that occur due to method calls involving `self`)
 - #72556 (Fix trait alias inherent impl resolution)
 - #72584 (Stabilize vec::Drain::as_slice)
 - #72598 (Display information about captured variable in `FnMut` error)
 - #73336 (Group `Pattern::strip_*` method together)
 - #73341 (_match.rs: fix module doc comment)
 - #73342 (Fix iterator copied() documentation example code)
 - #73351 (Update E0446.md)
 - #73353 (structural_match: non-structural-match ty closures)

Failed merges:

r? @ghost

4 years agoremove obsolete , to pass the format check
Stefan Lankes [Mon, 15 Jun 2020 08:05:14 +0000 (10:05 +0200)]
remove obsolete , to pass the format check

4 years agoRollup merge of #73353 - davidtwco:issue-73003-non-structural-match-ty-closures,...
Ralf Jung [Mon, 15 Jun 2020 07:57:37 +0000 (09:57 +0200)]
Rollup merge of #73353 - davidtwco:issue-73003-non-structural-match-ty-closures, r=varkor

structural_match: non-structural-match ty closures

Fixes #73003.

This PR adds a `Closure` variant to `NonStructuralMatchTy` in `structural_match`, fixing an ICE which can occur when `impl_trait_in_bindings` is used with constants.

4 years agoRollup merge of #73351 - gnodarse:patch-1, r=ecstatic-morse
Ralf Jung [Mon, 15 Jun 2020 07:57:35 +0000 (09:57 +0200)]
Rollup merge of #73351 - gnodarse:patch-1, r=ecstatic-morse

Update E0446.md

The existing error documentation did not show how to use a child module's functions if the types used in those functions are private. These are some other places this problem has popped up that did not present a solution (these are from before the solution existed, 2016-2017. The solution was released in the Rust 2018 edition. However these were the places I was pointed to when I encountered the problem myself):
https://github.com/rust-lang/rust/issues/30905
https://stackoverflow.com/questions/39334430/how-to-reference-private-types-from-public-functions-in-private-modules/62374958#62374958

4 years agoRollup merge of #73342 - schteve:master, r=jonas-schievink
Ralf Jung [Mon, 15 Jun 2020 07:57:33 +0000 (09:57 +0200)]
Rollup merge of #73342 - schteve:master, r=jonas-schievink

Fix iterator copied() documentation example code

The documentation for copied() gives example code with variable v_cloned instead of v_copied. This seems like a copy/paste error from cloned() and it would be clearer to use v_copied.

4 years agoRollup merge of #73341 - jonas-schievink:matchdoc, r=davidtwco
Ralf Jung [Mon, 15 Jun 2020 07:57:32 +0000 (09:57 +0200)]
Rollup merge of #73341 - jonas-schievink:matchdoc, r=davidtwco

_match.rs: fix module doc comment

It was applied to a `use` item, not to the module

4 years agoRollup merge of #73336 - lzutao:pattern-group, r=sfackler
Ralf Jung [Mon, 15 Jun 2020 07:57:30 +0000 (09:57 +0200)]
Rollup merge of #73336 - lzutao:pattern-group, r=sfackler

Group `Pattern::strip_*` method together

4 years agoRollup merge of #72598 - Aaron1011:feature/fnmut-capture-span, r=nikomatsakis
Ralf Jung [Mon, 15 Jun 2020 07:57:28 +0000 (09:57 +0200)]
Rollup merge of #72598 - Aaron1011:feature/fnmut-capture-span, r=nikomatsakis

Display information about captured variable in `FnMut` error

Fixes #69446

When we encounter a region error involving an `FnMut` closure, we
display a specialized error message. However, we currently do not
tell the user which upvar was captured. This makes it difficult to
determine the cause of the error, especially when the closure is large.

This commit records marks constraints involving closure upvars
with `ConstraintCategory::ClosureUpvar`. When we decide to 'blame'
a `ConstraintCategory::Return`, we additionall store
the captured upvar if we found a `ConstraintCategory::ClosureUpvar` in
the path.

When generating an error message, we point to relevant spans if we have
closure upvar information available. We further customize the message if
an `async` closure is being returned, to make it clear that the captured
variable is being returned indirectly.

4 years agoRollup merge of #72584 - CAD97:stabilize-58957, r=dtolnay
Ralf Jung [Mon, 15 Jun 2020 07:57:26 +0000 (09:57 +0200)]
Rollup merge of #72584 - CAD97:stabilize-58957, r=dtolnay

Stabilize vec::Drain::as_slice

and add `AsRef<[T]> for Drain<'_, T>`.

Tracking issue: #58957. Does not stabilize `slice::IterMut::as_slice` yet. cc @cuviper
This PR proposes stabilizing just the `vec::Drain::as_slice` part of that tracking issue.

My ultimate goal here: being able to use `for<T, I: Iterator<Item=T> + AsRef<[T]>> I` to refer to `vec::IntoIter`, `vec::Drain`, and eventually `array::IntoIter`, as an approximation of the set of by-value iterators that can be "previewed" as by-ref iterators. (Actually expressing that as a trait requires GAT.)

4 years agoRollup merge of #72556 - matthew-mcallister:trait-alias-inherent-impl, r=estebank
Ralf Jung [Mon, 15 Jun 2020 07:57:24 +0000 (09:57 +0200)]
Rollup merge of #72556 - matthew-mcallister:trait-alias-inherent-impl, r=estebank

Fix trait alias inherent impl resolution

Fixes #60021 and fixes #72415.

Obviously, the fix was very easy, but getting started with the testing and debugging rust compiler was an interesting experience. Now I can cross it off my bucket list!

4 years agoRollup merge of #72389 - Aaron1011:feature/move-fn-self-msg, r=nikomatsakis
Ralf Jung [Mon, 15 Jun 2020 07:57:22 +0000 (09:57 +0200)]
Rollup merge of #72389 - Aaron1011:feature/move-fn-self-msg, r=nikomatsakis

Explain move errors that occur due to method calls involving `self`

When calling a method that takes `self` (e.g. `vec.into_iter()`), the method receiver is moved out of. If the method receiver is used again, a move error will be emitted::

```rust
fn main() {
    let a = vec![true];
    a.into_iter();
    a;
}
```

emits

```
error[E0382]: use of moved value: `a`
 --> src/main.rs:4:5
  |
2 |     let a = vec![true];
  |         - move occurs because `a` has type `std::vec::Vec<bool>`, which does not implement the `Copy` trait
3 |     a.into_iter();
  |     - value moved here
4 |     a;
  |     ^ value used here after move
```

However, the error message doesn't make it clear that the move is caused by the call to `into_iter`.

This PR adds additional messages to move errors when the move is caused by using a value as the receiver of a `self` method::

```
error[E0382]: use of moved value: `a`
   --> vec.rs:4:5
    |
2   |     let a = vec![true];
    |         - move occurs because `a` has type `std::vec::Vec<bool>`, which does not implement the `Copy` trait
3   |     a.into_iter();
    |     ------------- value moved due to this method call
4   |     a;
    |     ^ value used here after move
    |
note: this function takes `self`, which moves the receiver
   --> /home/aaron/repos/rust/src/libcore/iter/traits/collect.rs:239:5
    |
239 |     fn into_iter(self) -> Self::IntoIter;
```

TODO:

- [x] Add special handling for `FnOnce/FnMut/Fn` - we probably don't want to point at the unstable trait methods
- [x] Consider adding additional context for operations (e.g. `Shr::shr`) when the call was generated using the operator syntax (e.g. `a >> b`)
- [x] Consider pointing to the method parent (impl or trait block) in addition to the method itself.

4 years agoRollup merge of #71824 - ecstatic-morse:const-check-post-drop-elab, r=oli-obk
Ralf Jung [Mon, 15 Jun 2020 07:57:20 +0000 (09:57 +0200)]
Rollup merge of #71824 - ecstatic-morse:const-check-post-drop-elab, r=oli-obk

Check for live drops in constants after drop elaboration

Resolves #66753.

This PR splits the MIR "optimization" pass series in two and introduces a query–`mir_drops_elaborated_and_const_checked`–that holds the result of the `post_borrowck_cleanup` analyses and checks for live drops. This query is invoked in `rustc_interface` for all items requiring const-checking, which means we now do `post_borrowck_cleanup` for items even if they are unused in the crate.

As a result, we are now more precise about when drops are live. This is because drop elaboration can e.g. eliminate drops of a local when all its fields are moved from. This does not mean we are doing value-based analysis on move paths, however; Storing a `Some(CustomDropImpl)` into a field of a local will still set the qualifs for that entire local.

r? @oli-obk

4 years agoadd comment about the usage of Arc
Stefan Lankes [Mon, 15 Jun 2020 07:29:32 +0000 (09:29 +0200)]
add comment about the usage of Arc

4 years agouse Ipv6Addr::from to build the IPv6 address
Stefan Lankes [Mon, 15 Jun 2020 06:53:58 +0000 (08:53 +0200)]
use Ipv6Addr::from to build the IPv6 address

4 years agoRevert "simplify conversion to IpAddr::V6"
Stefan Lankes [Mon, 15 Jun 2020 06:43:44 +0000 (08:43 +0200)]
Revert "simplify conversion to IpAddr::V6"

This reverts commit d221ffc68e543f4a38efcc2bd34f52145f89003b.

4 years agoRevert "changes to pass the format check"
Stefan Lankes [Mon, 15 Jun 2020 06:43:08 +0000 (08:43 +0200)]
Revert "changes to pass the format check"

This reverts commit 9d596b50f15dfff47fa2272ee63cdc9aeb9307fa.

4 years agoremove obsolete line
Stefan Lankes [Mon, 15 Jun 2020 06:07:56 +0000 (08:07 +0200)]
remove obsolete line

4 years agochanges to pass the format check
Stefan Lankes [Mon, 15 Jun 2020 05:28:53 +0000 (07:28 +0200)]
changes to pass the format check

4 years agoAuto merge of #72080 - matthewjasper:uniform-impl-trait, r=nikomatsakis
bors [Mon, 15 Jun 2020 04:10:24 +0000 (04:10 +0000)]
Auto merge of #72080 - matthewjasper:uniform-impl-trait, r=nikomatsakis

Clean up type alias impl trait implementation

- Removes special case for top-level impl trait
- Removes associated opaque types
- Forbid lifetime elision in let position impl trait. This is consistent with the behavior for inferred types.
- Handle lifetimes in type alias impl trait more uniformly with other parameters

cc #69323
cc #63063
Closes #57188
Closes #62988
Closes #69136
Closes #73061

4 years agosimplify conversion to IpAddr::V6
Stefan Lankes [Sun, 14 Jun 2020 21:43:54 +0000 (23:43 +0200)]
simplify conversion to IpAddr::V6

4 years agoUpdate to use the new error type and correctly compile the doc tests
Alexis Bourget [Sun, 14 Jun 2020 21:22:36 +0000 (23:22 +0200)]
Update to use the new error type and correctly compile the doc tests

4 years agoAdd a new error type for the new method
Alexis Bourget [Sun, 14 Jun 2020 21:21:40 +0000 (23:21 +0200)]
Add a new error type for the new method

4 years agoUpdate E0446.md
gnodarse [Sun, 14 Jun 2020 18:25:19 +0000 (14:25 -0400)]
Update E0446.md

The existing error documentation did not show how to use a child module's functions if the types used in those functions are private. These are some other places this problem has popped up that did not present a solution (these are from before the solution existed, 2016-2017. The solution was released in the Rust 2018 edition. However these were the places I was pointed to when I encountered the problem myself):
https://github.com/rust-lang/rust/issues/30905
https://stackoverflow.com/questions/39334430/how-to-reference-private-types-from-public-functions-in-private-modules/62374958#62374958

4 years agostructural_match: non-structural-match ty closures
David Wood [Sun, 14 Jun 2020 18:16:35 +0000 (19:16 +0100)]
structural_match: non-structural-match ty closures

This commit adds a `Closure` variant to `NonStructuralMatchTy` in
`structural_match`, fixing an ICE which can occur when
`impl_trait_in_bindings` is used with constants.

Signed-off-by: David Wood <david@davidtw.co>
4 years agoRemoving the TryFrom impl
Alexis Bourget [Sun, 14 Jun 2020 17:21:44 +0000 (19:21 +0200)]
Removing the TryFrom impl

4 years agoFix iterator copied() documentation example code
Steve Heindel [Sun, 14 Jun 2020 12:53:23 +0000 (08:53 -0400)]
Fix iterator copied() documentation example code

4 years agokeep root_span and tcx together
Ralf Jung [Sun, 14 Jun 2020 13:02:51 +0000 (15:02 +0200)]
keep root_span and tcx together

4 years ago_match.rs: fix module doc comment
Jonas Schievink [Sun, 14 Jun 2020 12:53:36 +0000 (14:53 +0200)]
_match.rs: fix module doc comment

It was applied to a `use` item, not to the module

4 years agoAuto merge of #73089 - tmiasko:musl-1.1.24, r=kennytm
bors [Sun, 14 Jun 2020 10:37:36 +0000 (10:37 +0000)]
Auto merge of #73089 - tmiasko:musl-1.1.24, r=kennytm

Update musl to 1.1.24

Release notes since previous version 1.1.22:

## 1.1.23 release notes

### new features:
- riscv64 port
- configure now allows customizing AR and RANLIB vars
- header-level support for new linux features in 5.1

### major internal changes:
- removed extern __syscall; syscall header code is now fully self-contained

### performance:
- new math library implementation for log/exp/pow
- aarch64 dynamic tlsdesc function is streamlined

### compatibility & conformance:
- O_TTY_INIT is now defined
- sys/types.h no longer pollutes namespace with sys/sysmacros.h in any profile
- powerpc asm is now compatible with clang internal assembler

### changes for new POSIX interpretations:
- fgetwc now sets stream error indicator on encoding errors
- fmemopen no longer rejects 0 size

### bugs fixed:
- static TLS for shared libraries was allocated wrong on "Variant I" archs
- crash in dladdr reading through uninitialized pointer on non-match
- sigaltstack wrongly errored out on invalid ss_size when doing SS_DISABLE
- getdents function misbehaved with buffer length larger than INT_MAX
- set*id could deadlock after fork from multithreaded process

### arch-specfic bugs fixed:
- s390x SO_PEERSEC definition was wrong
- passing of 64-bit syscall arguments was broken on microblaze
- posix_fadvise was broken on mips due to missing 7-arg syscall support
- vrregset_t layout and member naming was wrong on powerpc64

## 1.1.24 release notes

### new features:
- GLOB_TILDE extension to glob
- non-stub catgets localization API, using netbsd binary catalog format
- posix_spawn file actions for [f]chdir (extension, pending future standard)
- secure_getenv function (extension)
- copy_file_range syscall wrapper (Linux extension)
- header-level support for new linux features in 5.2

### performance:
- new fast path for lrint (generic C version) on 32-bit archs

### major internal changes:
- functions involving time are overhauled to be time64-ready in 32-bit archs
- x32 uses the new time64 code paths to replace nasty hacks in syscall glue

### compatibility & conformance:
- support for powerpc[64] unaligned relocation types
- powerpc[64] and sh sys/user.h no longer clash with kernel asm/ptrace.h
- select no longer modifies timeout on failure (or at all)
- mips64 stat results are no longer limited to 32-bit time range
- optreset (BSD extension) now has a public declaration
- support for clang inconsistencies in wchar_t type vs some 32-bit archs
- mips r6 syscall asm no longer has invalid lo/hi register clobbers
- vestigial asm declarations of __tls_get_new are removed (broke some tooling)
- riscv64 mcontext_t mismatch glibc's member naming is corrected

### bugs fixed:
- glob failed to match broken symlinks consistently
- invalid use of interposed calloc to allocate initial TLS
- various dlsym symbol resolution logic errors
- semctl with SEM_STAT_ANY didn't work
- pthread_create with explicit scheduling was subject to priority inversion
- pthread_create failure path had data race for thread count
- timer_create with SIGEV_THREAD notification had data race getting timer id
- wide printf family failed to support l modifier for float formats

### arch-specific bugs fixed:
- x87 floating point stack imbalance in math asm (i386-only CVE-2019-14697)
- x32 clock_adjtime, getrusage, wait3, wait4 produced junk (struct mismatches)
- lseek broken on x32 and mipsn32 with large file offsets
- riscv64 atomics weren't compiler barriers
- riscv64 atomics had broken asm constraints (missing earlyclobber flag)
- arm clone() was broken when compiled as thumb if start function returned
- mipsr6 setjmp/longjmp did not preserve fpu register state correctly

Fixes #71099.

4 years agoAuto merge of #73232 - RalfJung:miri-no-default, r=Mark-Simulacrum
bors [Sun, 14 Jun 2020 06:42:40 +0000 (06:42 +0000)]
Auto merge of #73232 - RalfJung:miri-no-default, r=Mark-Simulacrum

x.py: do not build Miri by default on stable/beta

Fixes https://github.com/rust-lang/rust/issues/73117

Do I need to do anything to make sure Miri is still built by the tools CI builder? Are there other tools that should be off-by-default?

Also, unfortunately the `DEFAULT` associated const has no doc comment, so I have no idea what it does, or why there are semmingly two places where the default build of tools is controlled.

4 years agoAuto merge of #73188 - mati865:use-preinstalled-msys2, r=pietroalbini
bors [Sun, 14 Jun 2020 03:10:53 +0000 (03:10 +0000)]
Auto merge of #73188 - mati865:use-preinstalled-msys2, r=pietroalbini

Use preinstalled msys2

Fixes https://github.com/rust-lang/rust/issues/65767

4 years agoGroup Pattern::strip_* method together
Lzu Tao [Sun, 14 Jun 2020 01:01:07 +0000 (01:01 +0000)]
Group Pattern::strip_* method together

4 years agouse latest interface to HermitCore
Stefan Lankes [Sat, 13 Jun 2020 22:39:14 +0000 (00:39 +0200)]
use latest interface to HermitCore

4 years agoremove unused function
Stefan Lankes [Sat, 13 Jun 2020 22:38:31 +0000 (00:38 +0200)]
remove unused function

4 years agoadd TcpListener support for HermitCore
Stefan Lankes [Sat, 13 Jun 2020 18:51:00 +0000 (20:51 +0200)]
add TcpListener support for HermitCore

Add basic support of TcpListerner for HermitCore.
In addition, revise TcpStream to support peer_addr.

4 years agoAdd tests for `const_precise_live_drops`
Dylan MacKenzie [Thu, 11 Jun 2020 22:08:53 +0000 (15:08 -0700)]
Add tests for `const_precise_live_drops`

4 years agoUpdate incorrect error code docs
Dylan MacKenzie [Sun, 3 May 2020 19:41:48 +0000 (12:41 -0700)]
Update incorrect error code docs

4 years agoEnsure that `drop_elaboration_and_check_consts` runs for all const items
Dylan MacKenzie [Sun, 3 May 2020 04:16:55 +0000 (21:16 -0700)]
Ensure that `drop_elaboration_and_check_consts` runs for all const items

4 years agoAdd MIR phase and query for drop elaboration
Dylan MacKenzie [Sun, 3 May 2020 04:16:17 +0000 (21:16 -0700)]
Add MIR phase and query for drop elaboration

4 years agoAdd `CheckLiveDrops` pass
Dylan MacKenzie [Sun, 3 May 2020 18:18:26 +0000 (11:18 -0700)]
Add `CheckLiveDrops` pass

4 years agoAdd feature gate for precise live drop checking
Dylan MacKenzie [Thu, 11 Jun 2020 21:30:19 +0000 (14:30 -0700)]
Add feature gate for precise live drop checking

4 years agoMake `Qualifs` getters public
Dylan MacKenzie [Fri, 1 May 2020 04:04:59 +0000 (21:04 -0700)]
Make `Qualifs` getters public

4 years agoMove `check_op` logic to `ops` module
Dylan MacKenzie [Fri, 1 May 2020 04:04:46 +0000 (21:04 -0700)]
Move `check_op` logic to `ops` module

4 years agoAdd test for comparing SocketAddr with inferred right-hand side
David Tolnay [Sat, 13 Jun 2020 17:21:11 +0000 (10:21 -0700)]
Add test for comparing SocketAddr with inferred right-hand side

4 years agoRewrap comments in Mutex example
David Tolnay [Sat, 13 Jun 2020 17:11:02 +0000 (10:11 -0700)]
Rewrap comments in Mutex example

4 years agoClarify the scope-related explanation
Poliorcetics [Sat, 13 Jun 2020 16:43:37 +0000 (18:43 +0200)]
Clarify the scope-related explanation

Based on the review made by dtolnay.

4 years agoApply suggestions from code review
Poliorcetics [Sat, 13 Jun 2020 16:41:01 +0000 (18:41 +0200)]
Apply suggestions from code review

Co-authored-by: David Tolnay <dtolnay@gmail.com>
4 years agoAuto merge of #73316 - Dylan-DPC:rollup-zgouwou, r=Dylan-DPC
bors [Sat, 13 Jun 2020 15:50:56 +0000 (15:50 +0000)]
Auto merge of #73316 - Dylan-DPC:rollup-zgouwou, r=Dylan-DPC

Rollup of 8 pull requests

Successful merges:

 - #72932 (Clarify the behaviour of Pattern when used with methods like str::contains)
 - #73066 (Querify whether a type has structural equality (Take 2))
 - #73194 (Prefer the associated constants for pattern matching error)
 - #73241 (Add/update comments about MinGW late_link_args)
 - #73267 (Use the built cargo for cargotest.)
 - #73290 (Fix links when pinging notification groups)
 - #73302 (Adjusted some doctests in libcore to use `should_panic`.)
 - #73308 (pretty/asm.rs should only be tested for x86_64 and not AArch64)

Failed merges:

r? @ghost

4 years agoRollup merge of #73308 - yerke:fix-pretty-asm-rs-test-for-aarch64, r=Amanieu
Dylan DPC [Sat, 13 Jun 2020 14:47:56 +0000 (16:47 +0200)]
Rollup merge of #73308 - yerke:fix-pretty-asm-rs-test-for-aarch64, r=Amanieu

pretty/asm.rs should only be tested for x86_64 and not AArch64

pretty/asm.rs should only be tested for x86_64 and not AArch64
closes #73134
r?  @Amanieu

4 years agoRollup merge of #73302 - JakobDegen:should-panic-documentation, r=Mark-Simulacrum
Dylan DPC [Sat, 13 Jun 2020 14:47:54 +0000 (16:47 +0200)]
Rollup merge of #73302 - JakobDegen:should-panic-documentation, r=Mark-Simulacrum

Adjusted some doctests in libcore to use `should_panic`.

Fixes #73196 .

I grepped libstd and libcore for all the instances of this pattern that I could find, but its possible that I missed some of course. If anyone knows of any more, please let me know and I will add them to the PR.

4 years agoRollup merge of #73290 - LeSeulArtichaut:patch-1, r=Dylan-DPC
Dylan DPC [Sat, 13 Jun 2020 14:47:53 +0000 (16:47 +0200)]
Rollup merge of #73290 - LeSeulArtichaut:patch-1, r=Dylan-DPC

Fix links when pinging notification groups

I think a blank line is necessary for the link to be applied.
Not sure who to assign, r? @Dylan-DPC

4 years agoRollup merge of #73267 - ehuss:cargotest-this-cargo, r=Mark-Simulacrum
Dylan DPC [Sat, 13 Jun 2020 14:47:51 +0000 (16:47 +0200)]
Rollup merge of #73267 - ehuss:cargotest-this-cargo, r=Mark-Simulacrum

Use the built cargo for cargotest.

cargotest was using the beta (bootstrap) cargo. This changes it so that it will use the locally built cargo. This is intended to provide a sort of smoke test to ensure Cargo is functional. This *shouldn't* have any real impact on the CI build time.  The cargotest job also happens to run cargo's testsuite, so it should already be building cargo.

Note: This will fail until #73266 is merged.

4 years agoRollup merge of #73241 - mati865:mingw-libs-order-comment, r=petrochenkov
Dylan DPC [Sat, 13 Jun 2020 14:47:49 +0000 (16:47 +0200)]
Rollup merge of #73241 - mati865:mingw-libs-order-comment, r=petrochenkov

Add/update comments about MinGW late_link_args

4 years agoRollup merge of #73194 - lzutao:INT-patterns, r=dtolnay
Dylan DPC [Sat, 13 Jun 2020 14:47:47 +0000 (16:47 +0200)]
Rollup merge of #73194 - lzutao:INT-patterns, r=dtolnay

Prefer the associated constants for pattern matching error

Resolved this comment: https://github.com/rust-lang/rust/issues/68490#issuecomment-641614383

4 years agoRollup merge of #73066 - ecstatic-morse:query-structural-eq2, r=pnkfelix
Dylan DPC [Sat, 13 Jun 2020 14:47:45 +0000 (16:47 +0200)]
Rollup merge of #73066 - ecstatic-morse:query-structural-eq2, r=pnkfelix

Querify whether a type has structural equality (Take 2)

Alternative to #72177.

Unlike in #72177, this helper method works for all types, falling back to a query for `TyKind::Adt`s that determines whether the `{Partial,}StructuralEq` traits are implemented.

This is my preferred interface for this method. I think this is better than just documenting that the helper only works for ADTs. If others disagree, we can just merge #72177 with the fixes applied. This has already taken far too long.

4 years agoRollup merge of #72932 - poliorcetics:pattern-contains-behaviour, r=hanna-kruppe
Dylan DPC [Sat, 13 Jun 2020 14:47:40 +0000 (16:47 +0200)]
Rollup merge of #72932 - poliorcetics:pattern-contains-behaviour, r=hanna-kruppe

Clarify the behaviour of Pattern when used with methods like str::contains

Fixes #45507.

I used the previous work by @Emerentius (thanks !), added a paragraph and checked the links (they work for me but I'm not against someone else checking them too).

4 years agoAdd/update comments about MinGW late_link_args
Mateusz Mikuła [Thu, 11 Jun 2020 15:22:30 +0000 (17:22 +0200)]
Add/update comments about MinGW late_link_args

4 years agorun const_eval_raw with root_span
Ralf Jung [Sat, 13 Jun 2020 11:55:01 +0000 (13:55 +0200)]
run const_eval_raw with root_span

4 years agoavoid computing precise span for const_eval query
Ralf Jung [Sat, 13 Jun 2020 11:47:37 +0000 (13:47 +0200)]
avoid computing precise span for const_eval query

4 years agopretty/asm.rs should only be tested for x86_64 and not AArch64
Yerkebulan Tulibergenov [Sat, 13 Jun 2020 07:41:39 +0000 (00:41 -0700)]
pretty/asm.rs should only be tested for x86_64 and not AArch64

4 years agoRevert heterogeneous SocketAddr PartialEq impls
David Tolnay [Sat, 13 Jun 2020 05:12:45 +0000 (22:12 -0700)]
Revert heterogeneous SocketAddr PartialEq impls

These lead to inference regressions (mostly in tests) in code that looks
like:

    let socket = std::net::SocketAddrV4::new(std::net::Ipv4Addr::new(127, 0, 0, 1), 8080);
    assert_eq!(socket, "127.0.0.1:8080".parse().unwrap());

That compiles as of stable 1.44.0 but fails in beta with:

    error[E0284]: type annotations needed
     --> src/main.rs:3:41
      |
    3 |     assert_eq!(socket, "127.0.0.1:8080".parse().unwrap());
      |                                         ^^^^^ cannot infer type for type parameter `F` declared on the associated function `parse`
      |
      = note: cannot satisfy `<_ as std::str::FromStr>::Err == _`
    help: consider specifying the type argument in the method call
      |
    3 |     assert_eq!(socket, "127.0.0.1:8080".parse::<F>().unwrap());
      |

4 years agoAdjusted some doctests in libcore to use `should_panic`.
Jake Degen [Sat, 13 Jun 2020 04:06:09 +0000 (00:06 -0400)]
Adjusted some doctests in libcore to use `should_panic`.

Previously, some doctests were spawning new threads and joining them to
indicate that a particular call should panic; this hurt readability, so
the tests have been adjusted to simply call the method and use the
`should_panic` marker.

4 years agoStabilize Option::zip
Lzu Tao [Sat, 13 Jun 2020 01:27:14 +0000 (01:27 +0000)]
Stabilize Option::zip

4 years agoPrefer the associated consts for pattern matching error
Lzu Tao [Thu, 11 Jun 2020 03:03:59 +0000 (03:03 +0000)]
Prefer the associated consts for pattern matching error

4 years agoAuto merge of #73277 - RalfJung:miri-caller-location, r=oli-obk
bors [Sat, 13 Jun 2020 00:55:34 +0000 (00:55 +0000)]
Auto merge of #73277 - RalfJung:miri-caller-location, r=oli-obk

fix caller_location intrinsic for Miri

Fixes https://github.com/rust-lang/rust/issues/73272

r? @oli-obk Cc @Aaron1011

4 years agoRemove vestigial CI job msvc-aux.
Eric Huss [Fri, 12 Jun 2020 21:17:42 +0000 (14:17 -0700)]
Remove vestigial CI job msvc-aux.

4 years agoAuto merge of #73262 - wesleywiser:simplifyarmidentity_beta_regression, r=oli-obk
bors [Fri, 12 Jun 2020 19:38:15 +0000 (19:38 +0000)]
Auto merge of #73262 - wesleywiser:simplifyarmidentity_beta_regression, r=oli-obk

Disable the `SimplifyArmIdentity` pass

This pass is buggy so I'm disabling it to fix a stable-to-beta
regression.

Related to #73223

4 years agoFix links when pinging notification groups
LeSeulArtichaut [Fri, 12 Jun 2020 18:33:18 +0000 (20:33 +0200)]
Fix links when pinging notification groups

4 years agoMake `type_marked_structural` private
Dylan MacKenzie [Fri, 12 Jun 2020 15:47:26 +0000 (08:47 -0700)]
Make `type_marked_structural` private

4 years agoUse "reflexive equality" in docs
Dylan MacKenzie [Fri, 12 Jun 2020 15:47:13 +0000 (08:47 -0700)]
Use "reflexive equality" in docs

4 years agoHelper method for whether type has structural equality
Dylan MacKenzie [Wed, 13 May 2020 20:40:22 +0000 (13:40 -0700)]
Helper method for whether type has structural equality

This helper method works for all types, falling back to a query for
`TyKind::Adt`s to determine whether the implement the
`{Partial,}StructuralEq` traits.

4 years agoAuto merge of #73276 - Dylan-DPC:rollup-hfd81qw, r=Dylan-DPC
bors [Fri, 12 Jun 2020 13:10:57 +0000 (13:10 +0000)]
Auto merge of #73276 - Dylan-DPC:rollup-hfd81qw, r=Dylan-DPC

Rollup of 5 pull requests

Successful merges:

 - #72906 (Migrate to numeric associated consts)
 - #73178 (expand: More precise locations for expansion-time lints)
 - #73225 (Allow inference regions when relating consts)
 - #73236 (Clean up E0666 explanation)
 - #73273 (Fix Zulip pings)

Failed merges:

r? @ghost

4 years agoDisable the `SimplifyArmIdentity` pass on beta
Wesley Wiser [Fri, 12 Jun 2020 00:46:55 +0000 (20:46 -0400)]
Disable the `SimplifyArmIdentity` pass on beta

This pass is buggy so I'm disabling it to fix a stable-to-beta
regression.

Related to #73223

4 years agofix caller_location intrinsic for Miri
Ralf Jung [Fri, 12 Jun 2020 10:35:37 +0000 (12:35 +0200)]
fix caller_location intrinsic for Miri

4 years agoRollup merge of #73273 - LeSeulArtichaut:patch-1, r=Dylan-DPC
Dylan DPC [Fri, 12 Jun 2020 10:28:31 +0000 (12:28 +0200)]
Rollup merge of #73273 - LeSeulArtichaut:patch-1, r=Dylan-DPC

Fix Zulip pings

r? @Dylan-DPC

4 years agoRollup merge of #73236 - GuillaumeGomez:cleanup-e0666, r=Dylan-DPC
Dylan DPC [Fri, 12 Jun 2020 10:28:29 +0000 (12:28 +0200)]
Rollup merge of #73236 - GuillaumeGomez:cleanup-e0666, r=Dylan-DPC

Clean up E0666 explanation

r? @Dylan-DPC

4 years agoRollup merge of #73225 - tmandry:issue-73050, r=oli-obk
Dylan DPC [Fri, 12 Jun 2020 10:28:27 +0000 (12:28 +0200)]
Rollup merge of #73225 - tmandry:issue-73050, r=oli-obk

Allow inference regions when relating consts

As first noticed by @eddyb, `super_relate_consts` doesn't need to check for inference vars since `eval` does it already (and handles lifetimes correctly by erasing them).

Fixes #73050

r? @oli-obk

4 years agoRollup merge of #73178 - petrochenkov:explint, r=varkor
Dylan DPC [Fri, 12 Jun 2020 10:28:25 +0000 (12:28 +0200)]
Rollup merge of #73178 - petrochenkov:explint, r=varkor

expand: More precise locations for expansion-time lints

First commit: a macro expansion doesn't have a `NodeId` associated with it, but it has a parent `DefId` which we can use for linting.
The observable effect is that lints associated with macro expansions can now be `allow`ed at finer-grained level than whole crate.

Second commit: each macro definition has a `NodeId` which we can use for linting, unless that macro definition was decoded from other crate.

4 years agoRollup merge of #72906 - lzutao:migrate-numeric-assoc-consts, r=dtolnay
Dylan DPC [Fri, 12 Jun 2020 10:28:23 +0000 (12:28 +0200)]
Rollup merge of #72906 - lzutao:migrate-numeric-assoc-consts, r=dtolnay

Migrate to numeric associated consts

The deprecation PR is #72885

cc #68490
cc rust-lang/rfcs#2700

4 years agoFix Zulip pings
LeSeulArtichaut [Fri, 12 Jun 2020 08:40:41 +0000 (10:40 +0200)]
Fix Zulip pings

4 years agoavoid computing cur_span all the time
Ralf Jung [Thu, 11 Jun 2020 07:53:38 +0000 (09:53 +0200)]
avoid computing cur_span all the time

4 years agofix const_prop spans and re-bless tests
Ralf Jung [Mon, 1 Jun 2020 09:17:38 +0000 (11:17 +0200)]
fix const_prop spans and re-bless tests

4 years agomake miri InterpCx TyCtxtAt a TyCtxt, and separately remember the root span of the...
Ralf Jung [Mon, 1 Jun 2020 08:15:17 +0000 (10:15 +0200)]
make miri InterpCx TyCtxtAt a TyCtxt, and separately remember the root span of the evaluation

4 years agox.py: do not build Miri by default
Ralf Jung [Thu, 11 Jun 2020 07:25:06 +0000 (09:25 +0200)]
x.py: do not build Miri by default

4 years agomake miri memory TyCtxtAt a TyCtxt
Ralf Jung [Mon, 1 Jun 2020 06:42:40 +0000 (08:42 +0200)]
make miri memory TyCtxtAt a TyCtxt

4 years agoAuto merge of #73266 - ehuss:update-cargo, r=ehuss
bors [Fri, 12 Jun 2020 04:46:03 +0000 (04:46 +0000)]
Auto merge of #73266 - ehuss:update-cargo, r=ehuss

Update cargo

2 commits in 1ec223effbbbf9fddd3453cdcae3a96a967608eb..79c769c3d7b4c2cf6a93781575b7f592ef974255
2020-06-09 20:03:14 +0000 to 2020-06-11 22:13:37 +0000
- Fix failure with missing readme. (rust-lang/cargo#8353)
- Some LTO fixes. (rust-lang/cargo#8349)