]> git.lizzy.rs Git - rust.git/log
rust.git
2 years agoAuto merge of #1870 - RalfJung:rustup, r=RalfJung
bors [Sat, 14 Aug 2021 12:49:46 +0000 (12:49 +0000)]
Auto merge of #1870 - RalfJung:rustup, r=RalfJung

rustup

Cc https://github.com/rust-lang/rust/issues/88016

2 years agorustup
Ralf Jung [Sat, 14 Aug 2021 12:47:57 +0000 (14:47 +0200)]
rustup

2 years agoAuto merge of #1868 - hyd-dev:rustup, r=RalfJung
bors [Sat, 7 Aug 2021 13:16:22 +0000 (13:16 +0000)]
Auto merge of #1868 - hyd-dev:rustup, r=RalfJung

Fix tests for `C-unwind` ABI changes

cc https://github.com/rust-lang/rust/issues/87778

2 years agoAuto merge of #1865 - rust-lang:test-cargo-miri, r=RalfJung
bors [Sat, 7 Aug 2021 12:55:06 +0000 (12:55 +0000)]
Auto merge of #1865 - rust-lang:test-cargo-miri, r=RalfJung

improve test-cargo-miri output

2 years agoFix tests for `C-unwind` ABI changes
hyd-dev [Thu, 5 Aug 2021 09:10:30 +0000 (17:10 +0800)]
Fix tests for `C-unwind` ABI changes

2 years agoimprove test-cargo-miri output
Ralf Jung [Wed, 4 Aug 2021 09:25:33 +0000 (11:25 +0200)]
improve test-cargo-miri output

2 years agoAuto merge of #1864 - hyd-dev:rustup, r=RalfJung
bors [Wed, 4 Aug 2021 09:25:18 +0000 (09:25 +0000)]
Auto merge of #1864 - hyd-dev:rustup, r=RalfJung

Update cargo-miri test

The doctest output was [changed](https://github.com/rust-lang/miri/runs/3238758260?check_suite_focus=true#step:8:1263) (probably by https://github.com/rust-lang/cargo/pull/9730). Update `test-cargo-miri/test.default.stdout.ref` to match the new output.

2 years agoUpdate cargo-miri test
hyd-dev [Wed, 4 Aug 2021 08:46:11 +0000 (16:46 +0800)]
Update cargo-miri test

3 years agoAuto merge of #1854 - RalfJung:partial-ptr-overwrite, r=RalfJung
bors [Mon, 2 Aug 2021 16:00:43 +0000 (16:00 +0000)]
Auto merge of #1854 - RalfJung:partial-ptr-overwrite, r=RalfJung

adjust for ERR_ON_PARTIAL_PTR_OVERWRITE

The Miri side of https://github.com/rust-lang/rust/pull/87248

3 years agorustup
Ralf Jung [Mon, 2 Aug 2021 15:59:48 +0000 (17:59 +0200)]
rustup

3 years agodocify some comments
Ralf Jung [Sun, 18 Jul 2021 13:22:09 +0000 (15:22 +0200)]
docify some comments

3 years agoadjust for ERR_ON_PARTIAL_PTR_OVERWRITE
Ralf Jung [Sun, 18 Jul 2021 10:47:04 +0000 (12:47 +0200)]
adjust for ERR_ON_PARTIAL_PTR_OVERWRITE

3 years agoAuto merge of #1863 - hyd-dev:parallel-compiler, r=RalfJung
bors [Fri, 30 Jul 2021 14:38:10 +0000 (14:38 +0000)]
Auto merge of #1863 - hyd-dev:parallel-compiler, r=RalfJung

Use `Lrc` instead of `Rc` in `MiriCompilerCalls::config()`

The `used_crate_source` query defines its return type as [`Lrc<CrateSource>`](https://github.com/rust-lang/rust/blob/1195bea5a7b73e079fa14b37ac7e375fc77d368a/compiler/rustc_middle/src/query/mod.rs#L1418), which would be `Arc` when `parallel-compiler = true`.

I assume this fixes rust-lang/rust#87623. I didn't test that locally -- I'm not interested in `parallel-compiler = true` enough to be willing to recompile rustc with that configuration to test it, but I'm submitting this in case it might be useful for `parallel-compiler = true` users.

3 years agoUse `Lrc` instead of `Rc` in `MiriCompilerCalls::config()`
hyd-dev [Fri, 30 Jul 2021 13:28:34 +0000 (21:28 +0800)]
Use `Lrc` instead of `Rc` in `MiriCompilerCalls::config()`

3 years agoAuto merge of #1861 - RalfJung:rustup, r=RalfJung
bors [Tue, 27 Jul 2021 16:39:12 +0000 (16:39 +0000)]
Auto merge of #1861 - RalfJung:rustup, r=RalfJung

rustup

Cc https://github.com/rust-lang/rust/issues/87518

3 years agorustup
Ralf Jung [Tue, 27 Jul 2021 16:38:35 +0000 (18:38 +0200)]
rustup

3 years agoAuto merge of #1858 - RalfJung:thread-leaks, r=oli-obk
bors [Tue, 27 Jul 2021 12:23:56 +0000 (12:23 +0000)]
Auto merge of #1858 - RalfJung:thread-leaks, r=oli-obk

also ignore 'thread leaks' with -Zmiri-ignore-leaks

This is a step towards https://github.com/rust-lang/miri/issues/1371. The remaining hard part would be supporting checking for memory leaks when there are threads still running. For now we elegantly avoid this problem by using the same flag to control both of these checks. :)

3 years agomake sure we only terminate main thread once TLS is initialized
Ralf Jung [Tue, 27 Jul 2021 12:05:37 +0000 (14:05 +0200)]
make sure we only terminate main thread once TLS is initialized

3 years agomake the loop infinite
Ralf Jung [Mon, 26 Jul 2021 19:54:28 +0000 (21:54 +0200)]
make the loop infinite

3 years agono concurrency on windows
Ralf Jung [Sun, 25 Jul 2021 12:38:02 +0000 (14:38 +0200)]
no concurrency on windows

3 years agoAuto merge of #1859 - RalfJung:global-system-mixup, r=RalfJung
bors [Sun, 25 Jul 2021 12:37:03 +0000 (12:37 +0000)]
Auto merge of #1859 - RalfJung:global-system-mixup, r=RalfJung

add test for mixing up System and Global memory

3 years agoadd test for mixing up System and Global memory
Ralf Jung [Sun, 25 Jul 2021 12:33:41 +0000 (14:33 +0200)]
add test for mixing up System and Global memory

3 years agotell users how to disable the leak check
Ralf Jung [Sun, 25 Jul 2021 12:19:57 +0000 (14:19 +0200)]
tell users how to disable the leak check

3 years agoalso ignore 'thread leaks' with -Zmiri-ignore-leaks
Ralf Jung [Sun, 25 Jul 2021 12:08:12 +0000 (14:08 +0200)]
also ignore 'thread leaks' with -Zmiri-ignore-leaks

3 years agoAuto merge of #1856 - RalfJung:no-mir, r=RalfJung
bors [Sun, 25 Jul 2021 09:50:06 +0000 (09:50 +0000)]
Auto merge of #1856 - RalfJung:no-mir, r=RalfJung

show proper error when using a sysroot without MIR

Fixes https://github.com/rust-lang/miri/issues/1834

3 years agoAuto merge of #1838 - atsmtat:fs-isolation, r=RalfJung
bors [Sun, 25 Jul 2021 09:34:02 +0000 (09:34 +0000)]
Auto merge of #1838 - atsmtat:fs-isolation, r=RalfJung

Fix use of deprecated `check_no_isolation` in posix fs shims

Update posix fs shims to use new API `reject_in_isolation`, which
allows rejection with error code instead of always forcing abort.
Error code chosen for each op is the most appropriate one from the
list in corresponding syscall's manual.

Updated helper APIs to not use quotes (\`) around input name while
preparing the message. This allows callers to pass multi-word string
like -- "\`read\` from stdin".

Cc https://github.com/rust-lang/miri/issues/1034

3 years agoMove shim argument checks before isolation check
Smit Soni [Wed, 21 Jul 2021 05:27:33 +0000 (22:27 -0700)]
Move shim argument checks before isolation check

This allows catching extremely incorrect arguments before rejecting
due to isolation.

3 years agoshow proper error when using a sysroot without MIR
Ralf Jung [Sat, 24 Jul 2021 12:02:09 +0000 (14:02 +0200)]
show proper error when using a sysroot without MIR

3 years agoUpdate error code for fs ops in isolation
Smit Soni [Sun, 18 Jul 2021 21:40:59 +0000 (14:40 -0700)]
Update error code for fs ops in isolation

Change the code to either `EACCES` (if the op is performed on the
path), or `EBADF` (if the op is performed the fd)

Updated ops: `stat`, `opendir`, `ftruncate64`, and `readlink`

Add a new test for fs ops in isolation.

3 years agoFix use of deprecated `check_no_isolation` in posix fs ops
Smit Soni [Wed, 16 Jun 2021 00:33:18 +0000 (17:33 -0700)]
Fix use of deprecated `check_no_isolation` in posix fs ops

Update posix fs shims to use new API `reject_in_isolation`, which
allows rejection with error code instead of always forcing abort.
Error code chosen for each op is the most appropriate one from the
list in corresponding syscall's manual.

Updated helper APIs to not use quotes (`) around input name while
preparing the message. This allows callers to pass multi-word string
like -- "`read` from stdin".

3 years agoAuto merge of #1853 - RalfJung:negative-offsets, r=RalfJung
bors [Tue, 20 Jul 2021 11:39:12 +0000 (11:39 +0000)]
Auto merge of #1853 - RalfJung:negative-offsets, r=RalfJung

better errors for negative out-of-bounds offsets

This is the Miri side of https://github.com/rust-lang/rust/pull/87224

3 years agorustup
Ralf Jung [Tue, 20 Jul 2021 11:38:52 +0000 (13:38 +0200)]
rustup

3 years agotest for negative offsets
Ralf Jung [Sat, 17 Jul 2021 12:43:32 +0000 (14:43 +0200)]
test for negative offsets

3 years agoadjust for PointerOutOfBounds change
Ralf Jung [Sat, 17 Jul 2021 12:43:23 +0000 (14:43 +0200)]
adjust for PointerOutOfBounds change

3 years agoAuto merge of #1855 - RalfJung:rustup, r=RalfJung
bors [Tue, 20 Jul 2021 10:21:08 +0000 (10:21 +0000)]
Auto merge of #1855 - RalfJung:rustup, r=RalfJung

rustup

This test was removed in rustc in https://github.com/rust-lang/rust/pull/87141.

We added it in https://github.com/rust-lang/miri/pull/1430, and possibly that "interesting case in unsizing" is not covered by tests now -- but I don't remember what that case is.^^ If/when `impl Trait` in bindings comes back, we should copy the new rustc tests to Miri as well.

3 years agorustup
Ralf Jung [Tue, 20 Jul 2021 10:18:59 +0000 (12:18 +0200)]
rustup

3 years agoAuto merge of #1851 - RalfJung:provenance-overhaul, r=RalfJung
bors [Sat, 17 Jul 2021 19:46:33 +0000 (19:46 +0000)]
Auto merge of #1851 - RalfJung:provenance-overhaul, r=RalfJung

adjust Miri to Pointer type overhaul

This is the Miri side of https://github.com/rust-lang/rust/pull/87123.

This was a lot more work than I expected... lucky enough it is also (hopefully) the last large-scale refactoring I will do.^^

Fixes https://github.com/rust-lang/miri/issues/224

3 years agorustup
Ralf Jung [Sat, 17 Jul 2021 18:24:57 +0000 (20:24 +0200)]
rustup

3 years agoadd test for better ptr handling in enum niches
Ralf Jung [Sat, 17 Jul 2021 11:59:58 +0000 (13:59 +0200)]
add test for better ptr handling in enum niches

3 years agoadjust Miri to Pointer type overhaul
Ralf Jung [Thu, 15 Jul 2021 18:33:08 +0000 (20:33 +0200)]
adjust Miri to Pointer type overhaul

3 years agoAuto merge of #1850 - RalfJung:fmt, r=RalfJung
bors [Mon, 12 Jul 2021 16:26:02 +0000 (16:26 +0000)]
Auto merge of #1850 - RalfJung:fmt, r=RalfJung

fmt: set force_multiline_blocks=true

This is an experiment, I am not yet sure if I like it... but it does prevent rustfmt from putting stuff after the `=>` in a `match` (unless the entire arm fits there), which IMO is a big plus. What do others think?
(I also tried setting `match_arm_blocks` back to its default of `true`, but that adds too many braces for my taste.)

Btw, `@calebcartwright` is the interaction of `match_arm_blocks = false` and `force_multiline_blocks = true` as can be seen here expected? I think I like it, but it it is not at all what I expected from the docs which describe `force_multiline_blocks = true` as "Force multiline closure and match arm bodies to be wrapped in a block" -- but here that is not the effect it has, there are no new blocks being added.

3 years agofmt cargo-miri
Ralf Jung [Sun, 11 Jul 2021 12:27:07 +0000 (14:27 +0200)]
fmt cargo-miri

3 years agofmt: set force_multiline_blocks=true
Ralf Jung [Sun, 11 Jul 2021 12:18:44 +0000 (14:18 +0200)]
fmt: set force_multiline_blocks=true

3 years agoAuto merge of #1849 - Aaron1011:rustup-track-caller, r=RalfJung
bors [Sat, 10 Jul 2021 17:15:31 +0000 (17:15 +0000)]
Auto merge of #1849 - Aaron1011:rustup-track-caller, r=RalfJung

Rustup for `#[track_caller]` trait object changes

Change test to assert that we get the correct location
even through a trait object call.

3 years agoRustup for `#[track_caller]` trait object changes
Aaron Hill [Sat, 10 Jul 2021 16:51:00 +0000 (11:51 -0500)]
Rustup for `#[track_caller]` trait object changes

Change test to assert that we get the correct location
even through a trait object call.

3 years agoAuto merge of #1848 - RalfJung:rustup, r=RalfJung
bors [Wed, 7 Jul 2021 07:33:42 +0000 (07:33 +0000)]
Auto merge of #1848 - RalfJung:rustup, r=RalfJung

rustup

Cc https://github.com/rust-lang/rust/issues/86923

3 years agorustup
Ralf Jung [Wed, 7 Jul 2021 07:32:58 +0000 (09:32 +0200)]
rustup

3 years agoAuto merge of #1846 - RalfJung:license, r=RalfJung
bors [Tue, 6 Jul 2021 11:58:42 +0000 (11:58 +0000)]
Auto merge of #1846 - RalfJung:license, r=RalfJung

sync license files with rustc repo

`@Mark-Simulacrum` pointed out that our license files are slightly different from those in rustc. This syncs them.

The question is... is this a thing we can just do?^^

3 years agoAuto merge of #1847 - RalfJung:more-tags, r=RalfJung
bors [Tue, 6 Jul 2021 08:14:03 +0000 (08:14 +0000)]
Auto merge of #1847 - RalfJung:more-tags, r=RalfJung

also treat CallerLocation and Machine memory as properly tagged

Only heap allocations need an exception.

3 years agofmt
Ralf Jung [Tue, 6 Jul 2021 08:13:30 +0000 (10:13 +0200)]
fmt

3 years agoexported_symbols_cache: ensure we do not overwrite anything
Ralf Jung [Tue, 6 Jul 2021 08:09:53 +0000 (10:09 +0200)]
exported_symbols_cache: ensure we do not overwrite anything

3 years agoalso treat CallerLocation and Machine memory as properly tagged
Ralf Jung [Tue, 6 Jul 2021 08:07:48 +0000 (10:07 +0200)]
also treat CallerLocation and Machine memory as properly tagged

3 years agoexplicitly list memory kinds for stacked borrows
Ralf Jung [Tue, 6 Jul 2021 08:04:16 +0000 (10:04 +0200)]
explicitly list memory kinds for stacked borrows

3 years agosync license files with rustc repo
Ralf Jung [Mon, 5 Jul 2021 17:34:08 +0000 (19:34 +0200)]
sync license files with rustc repo

3 years agoAuto merge of #1845 - Smittyvb:fix-after-mir-alloc-oom, r=RalfJung
bors [Sun, 4 Jul 2021 20:35:34 +0000 (20:35 +0000)]
Auto merge of #1845 - Smittyvb:fix-after-mir-alloc-oom, r=RalfJung

Make work with latest rustc

Cc https://github.com/rust-lang/rust/issues/86863, which was caused by PR https://github.com/rust-lang/rust/pull/86255.

3 years agoMake work after mir-alloc-oom
Smitty [Sun, 4 Jul 2021 13:59:55 +0000 (09:59 -0400)]
Make work after mir-alloc-oom

3 years agoAuto merge of #1842 - hyd-dev:target-dir, r=RalfJung
bors [Sat, 3 Jul 2021 07:34:41 +0000 (07:34 +0000)]
Auto merge of #1842 - hyd-dev:target-dir, r=RalfJung

Use `miri` inside the target directory used by rustc as Miri's target directory

Resolves #1311.

This PR makes Miri use `miri` inside the rustc target directory as its target directory, by letting `cargo-miri` get the rustc target directory by calling `cargo metadata`, append `miri` to it, and pass it with `--target-dir` to Cargo.

Getting the rustc target directory accurately requires calling `cargo metadata` as far as I know, because the `target-dir` can be set in config files in various places that are hard for `cargo-miri` to find.

I also considered https://doc.rust-lang.org/nightly/cargo/reference/unstable.html#custom-named-profiles, but it looks like that requires adding `cargo-features = ["named-profiles"]` to **`Cargo.toml`**, which would be tricky for `cargo-miri`:
```
$ cargo +nightly-2021-06-23 test --config 'profile.miri.inherits="release"' --profile=miri -Z named-profiles -Z unstable-options
error: config profile `miri` is not valid (defined in `--config cli option`)

Caused by:
  feature `named-profiles` is required

  consider adding `cargo-features = ["named-profiles"]` to the manifest
```

3 years agoAuto merge of #1844 - hyd-dev:rustup, r=RalfJung
bors [Fri, 2 Jul 2021 08:49:49 +0000 (08:49 +0000)]
Auto merge of #1844 - hyd-dev:rustup, r=RalfJung

Update for `TyCtxt::crates()` change

cc rust-lang/rust#86792

3 years agoImport `std::process::self`
hyd-dev [Fri, 2 Jul 2021 08:22:59 +0000 (16:22 +0800)]
Import `std::process::self`

3 years agoAdd a comment in `.github/workflows/ci.yml`
hyd-dev [Fri, 2 Jul 2021 08:20:55 +0000 (16:20 +0800)]
Add a comment in `.github/workflows/ci.yml`

3 years agoUpdate for `TyCtxt::crates()` change
hyd-dev [Fri, 2 Jul 2021 08:08:27 +0000 (16:08 +0800)]
Update for `TyCtxt::crates()` change

3 years agoAuto merge of #1843 - RalfJung:rustup, r=RalfJung
bors [Tue, 29 Jun 2021 18:48:08 +0000 (18:48 +0000)]
Auto merge of #1843 - RalfJung:rustup, r=RalfJung

rustup

Cc https://github.com/rust-lang/rust/issues/86723

3 years agorustup
Ralf Jung [Tue, 29 Jun 2021 18:47:28 +0000 (20:47 +0200)]
rustup

3 years agoImprove doc comment
hyd-dev [Sun, 27 Jun 2021 15:09:10 +0000 (23:09 +0800)]
Improve doc comment

3 years agoFix `.expect()` message
hyd-dev [Sun, 27 Jun 2021 15:08:38 +0000 (23:08 +0800)]
Fix `.expect()` message

3 years ago`drop(cmd.arg(arg))` -> `cmd.arg(arg);`
hyd-dev [Sun, 27 Jun 2021 15:07:15 +0000 (23:07 +0800)]
`drop(cmd.arg(arg))` -> `cmd.arg(arg);`

3 years agoUse `rustup-toolchain-install-master` to install Cargo
hyd-dev [Sat, 26 Jun 2021 12:43:31 +0000 (20:43 +0800)]
Use `rustup-toolchain-install-master` to install Cargo

3 years agoShow error if `--target-dir` is provided more than once
hyd-dev [Sat, 26 Jun 2021 14:36:05 +0000 (22:36 +0800)]
Show error if `--target-dir` is provided more than once

3 years agoFix typo
hyd-dev [Sat, 26 Jun 2021 14:22:40 +0000 (22:22 +0800)]
Fix typo

3 years ago`ArgFlagValueWithOtherArgsIter` -> `ArgSplitFlagValue`
hyd-dev [Sat, 26 Jun 2021 13:49:56 +0000 (21:49 +0800)]
`ArgFlagValueWithOtherArgsIter` -> `ArgSplitFlagValue`

3 years agoAdd some comments in `test-cargo-miri/run-tests.py`
hyd-dev [Sat, 26 Jun 2021 13:45:38 +0000 (21:45 +0800)]
Add some comments in `test-cargo-miri/run-tests.py`

3 years agolong closure -> function
hyd-dev [Sat, 26 Jun 2021 13:24:01 +0000 (21:24 +0800)]
long closure -> function

3 years agoUse `miri` inside the target directory used by rustc as Miri's target directory
hyd-dev [Wed, 23 Jun 2021 18:35:08 +0000 (02:35 +0800)]
Use `miri` inside the target directory used by rustc as Miri's target directory

3 years agoAuto merge of #1841 - RalfJung:debug, r=RalfJung
bors [Sun, 20 Jun 2021 17:47:42 +0000 (17:47 +0000)]
Auto merge of #1841 - RalfJung:debug, r=RalfJung

use exhaustive struct match for manual Debug impl

3 years agouse exhaustive struct match for manual Debug impl
Ralf Jung [Sun, 20 Jun 2021 17:33:05 +0000 (19:33 +0200)]
use exhaustive struct match for manual Debug impl

3 years agoAuto merge of #1840 - hyd-dev:rustup, r=RalfJung
bors [Sun, 20 Jun 2021 09:54:48 +0000 (09:54 +0000)]
Auto merge of #1840 - hyd-dev:rustup, r=RalfJung

Update backtraces

(rust-lang/rust#86034 changed them.)

cc rust-lang/rust#86474

3 years agoUpdate backtraces
hyd-dev [Sun, 20 Jun 2021 07:12:11 +0000 (15:12 +0800)]
Update backtraces

3 years agoAuto merge of #1839 - RalfJung:rustup, r=RalfJung
bors [Thu, 17 Jun 2021 18:53:16 +0000 (18:53 +0000)]
Auto merge of #1839 - RalfJung:rustup, r=RalfJung

rustup

Cc https://github.com/rust-lang/rust/issues/86409

3 years agorustup
Ralf Jung [Thu, 17 Jun 2021 18:52:35 +0000 (20:52 +0200)]
rustup

3 years agoAuto merge of #1833 - hyd-dev:82261, r=RalfJung
bors [Tue, 15 Jun 2021 10:07:24 +0000 (10:07 +0000)]
Auto merge of #1833 - hyd-dev:82261, r=RalfJung

Filter out items other than non-generic functions and statics in our version of `exported_symbols`

[`#[no_mangle]` on a `use` item](https://docs.rs/brotli-decompressor/2.3.1/src/brotli_decompressor/ffi/mod.rs.html#3-5) can make Miri ICE when compiling a dependency (rust-lang/rust#86261):
```rs
#[no_mangle]
use std::{thread,panic, io, boxed, any, string};
```

<details>

```
error: internal compiler error: compiler/rustc_middle/src/ty/mod.rs:1650:13: item_name: no name for DefPath { data: [DisambiguatedDefPathData { data: Misc, disambiguator: 14 }], krate: crate0 }

thread 'rustc' panicked at 'Box<dyn Any>', compiler/rustc_errors/src/lib.rs:1007:9
stack backtrace:
   0: std::panicking::begin_panic
   1: std::panic::panic_any
   2: rustc_errors::HandlerInner::bug
   3: rustc_errors::Handler::bug
   4: rustc_middle::ty::context::tls::with_opt
   5: rustc_middle::util::bug::opt_span_bug_fmt
   6: rustc_middle::util::bug::bug_fmt
   7: rustc_middle::ty::<impl rustc_middle::ty::context::TyCtxt>::item_name
   8: rustc_symbol_mangling::symbol_name_provider
   9: rustc_query_impl::<impl rustc_query_system::query::config::QueryAccessors<rustc_query_impl::plumbing::QueryCtxt> for rustc_query_impl::queries::symbol_name>::compute
  10: rustc_query_system::query::plumbing::get_query_impl
  11: <rustc_query_impl::Queries as rustc_middle::ty::query::QueryEngine>::symbol_name
  12: rustc_middle::middle::exported_symbols::ExportedSymbol::symbol_name_for_local_instance
  13: rustc_codegen_ssa::back::symbol_export::symbol_name_for_instance_in_crate
  14: rustc_codegen_ssa::back::linker::exported_symbols
  15: <core::iter::adapters::map::Map<I,F> as core::iter::traits::iterator::Iterator>::fold
  16: rustc_codegen_ssa::back::linker::LinkerInfo::new
  17: rustc_codegen_ssa::back::write::start_async_codegen
  18: <rustc_codegen_llvm::LlvmCodegenBackend as rustc_codegen_ssa::traits::backend::CodegenBackend>::codegen_crate
  19: rustc_interface::passes::QueryContext::enter
  20: rustc_interface::queries::Queries::ongoing_codegen
  21: rustc_interface::queries::<impl rustc_interface::interface::Compiler>::enter
  22: rustc_span::with_source_map
  23: rustc_interface::interface::create_compiler_and_run
  24: rustc_span::with_session_globals
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.

note: the compiler unexpectedly panicked. this is a bug.

note: we would appreciate a bug report: https://github.com/rust-lang/rust/issues/new?labels=C-bug%2C+I-ICE%2C+T-compiler&template=ice.md

note: rustc 1.54.0-nightly (a50d72158 2021-06-08) running on x86_64-unknown-linux-gnu

note: compiler flags: -C embed-bitcode=no -C debuginfo=1 --crate-type lib

note: some of the compiler flags provided by cargo are hidden

query stack during panic:
#0 [symbol_name] computing the symbol for `{misc#14}`
end of query stack
```
</details>

This might be because in #1776, we override the `exported_symbols` query, and our version of `exported_symbols` can return a `use` item which don't have a name if the `use` item is tagged with `#[no_mangle]`, and then:
- `rustc_codegen_ssa::back::symbol_export::symbol_name_for_instance_in_crate` is called for for every `exported_symbols`: https://github.com/rust-lang/rust/blob/fb3ea63d9b4c3e9bb90d4250b870faaffb9c8fd2/compiler/rustc_codegen_ssa/src/back/linker.rs#L1300-L1304
- it calls `rustc_middle::middle::exported_symbols::ExportedSymbol::symbol_name_for_local_instance`: https://github.com/rust-lang/rust/blob/fb3ea63d9b4c3e9bb90d4250b870faaffb9c8fd2/compiler/rustc_codegen_ssa/src/back/symbol_export.rs#L412
- which calls `rustc_symbol_mangling::symbol_name_provider`: https://github.com/rust-lang/rust/blob/fb3ea63d9b4c3e9bb90d4250b870faaffb9c8fd2/compiler/rustc_middle/src/middle/exported_symbols.rs#L37-L44
- which calls `item_name`: https://github.com/rust-lang/rust/blob/fb3ea63d9b4c3e9bb90d4250b870faaffb9c8fd2/compiler/rustc_symbol_mangling/src/lib.rs#L216, which triggers the ICE

It might also be problematic for https://github.com/rust-lang/miri/blob/d39f0c64b8b369188a73a655716ab56683a6537b/src/shims/foreign_items.rs#L165 which also uses `item_name`, but Miri cannot compile the dependency, so that code can't be reached.

Therefore, this PR makes `exported_symbols` filter out all items that are not functions or statics, so all items returned will have a name, which avoids the ICE (I have tested it in the https://github.com/jorgecarleitao/arrow2 repository).
(This PR also includes a commit that fixes a small (unrelated) bug for `#[no_mangle]` on associated functions -- I found that because I notice `#[no_mangle]` is supported on associated functions and they should not be filtered out in `exported_symbols`.)

Fixes (when the submodule is bumped) rust-lang/rust#86261.

3 years agoAuto merge of #1832 - hyd-dev:1776-follow-up, r=RalfJung
bors [Tue, 15 Jun 2021 09:53:05 +0000 (09:53 +0000)]
Auto merge of #1832 - hyd-dev:1776-follow-up, r=RalfJung

Report an error if a `#[no_mangle]`/`#[export_name = ...]` function has the same symbol name as a built-in shim

Implements https://github.com/rust-lang/miri/pull/1776#issuecomment-821322605.

The error looks like this:
```
error: found `malloc` symbol definition that clashes with a built-in shim
  --> tests/compile-fail/function_calls/exported_symbol_shim_clashing.rs:12:9
   |
12 |         malloc(0);
   |         ^^^^^^^^^ found `malloc` symbol definition that clashes with a built-in shim
   |
help: the `malloc` symbol is defined here

  --> tests/compile-fail/function_calls/exported_symbol_shim_clashing.rs:2:1
   |
2  | / extern "C" fn malloc(_: usize) -> *mut std::ffi::c_void {
3  | |     //~^ HELP the `malloc` symbol is defined here
4  | |     unreachable!()
5  | | }
   | |_^
   = note: inside `main` at tests/compile-fail/function_calls/exported_symbol_shim_clashing.rs:12:9
```

This does not implement "better error messages than we do currently for arg/ABI mismatches" in https://github.com/rust-lang/miri/pull/1776#issuecomment-821343175 -- I failed to remove all `check_arg_count()` and `check_abi()` (they are still used in `src/shims/intrinsics.rs` and `call_dlsym()`) and they don't receive the name of the shim.

3 years agoAuto merge of #1836 - hyd-dev:rustup, r=RalfJung
bors [Tue, 15 Jun 2021 09:38:44 +0000 (09:38 +0000)]
Auto merge of #1836 - hyd-dev:rustup, r=RalfJung

Rustup

cc https://github.com/rust-lang/rust/issues/86316

(I beat `@lqd` to this!)

3 years agoRustup
hyd-dev [Tue, 15 Jun 2021 08:11:49 +0000 (16:11 +0800)]
Rustup

3 years agoRename all `link_name_sym` to `link_name` and remove the only remaining `let link_nam...
hyd-dev [Mon, 14 Jun 2021 17:24:09 +0000 (01:24 +0800)]
Rename all `link_name_sym` to `link_name` and remove the only remaining `let link_name = link_name_sym.as_str()`

3 years agoRemove `strip_linker_suffix`
hyd-dev [Mon, 14 Jun 2021 17:16:38 +0000 (01:16 +0800)]
Remove `strip_linker_suffix`

3 years agoOnly pass `Symbol` to `emulate_foreign_item_by_name`
hyd-dev [Mon, 14 Jun 2021 16:43:15 +0000 (00:43 +0800)]
Only pass `Symbol` to `emulate_foreign_item_by_name`

3 years agoAdd whitespace
hyd-dev [Mon, 14 Jun 2021 15:38:15 +0000 (23:38 +0800)]
Add whitespace

3 years agoCheck argument count for `CreateThread`
hyd-dev [Mon, 14 Jun 2021 15:01:06 +0000 (23:01 +0800)]
Check argument count for `CreateThread`

3 years agoAdd some comments about `check_shim`
hyd-dev [Mon, 14 Jun 2021 14:53:17 +0000 (22:53 +0800)]
Add some comments about `check_shim`

3 years agoDon't report UB for `#[no_mangle]` on associated functions
hyd-dev [Mon, 14 Jun 2021 12:56:03 +0000 (20:56 +0800)]
Don't report UB for `#[no_mangle]` on associated functions

3 years agoDo not return `DefId` that doesn't have exported symbol in `exported_symbols`
hyd-dev [Sun, 13 Jun 2021 15:30:08 +0000 (23:30 +0800)]
Do not return `DefId` that doesn't have exported symbol in `exported_symbols`

3 years ago`let`-bind `exp_abi` of `"exit" | "ExitProcess"`
hyd-dev [Fri, 11 Jun 2021 07:53:01 +0000 (15:53 +0800)]
`let`-bind `exp_abi` of `"exit" | "ExitProcess"`

3 years agoUse `check_shim()` for `abort`
hyd-dev [Fri, 11 Jun 2021 07:47:12 +0000 (15:47 +0800)]
Use `check_shim()` for `abort`

3 years agoAuto merge of #1831 - hyd-dev:emulate-by-name-result, r=RalfJung
bors [Fri, 11 Jun 2021 07:32:23 +0000 (07:32 +0000)]
Auto merge of #1831 - hyd-dev:emulate-by-name-result, r=RalfJung

Fix the wrong `EmulateByNameResult::NotSupported` in `syscall` shim

Without the change, the newly added test will fail with:
```diff
-thread 'main' panicked at 'unsupported Miri functionality: can't execute syscall with ID 0', $DIR/unsupported_syscall.rs:10:9
+thread 'main' panicked at 'unsupported Miri functionality: can't call foreign function: syscall', $DIR/unsupported_syscall.rs:10:9
 note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
```
cc https://github.com/rust-lang/miri/pull/1818#discussion_r648868937

3 years agoImplement cache for not found symbols
hyd-dev [Tue, 8 Jun 2021 12:36:57 +0000 (20:36 +0800)]
Implement cache for not found symbols

3 years agoDisallow `#[no_mangle]`/`#[export_name = ...]` functions that have the same symbol...
hyd-dev [Sun, 6 Jun 2021 07:25:16 +0000 (15:25 +0800)]
Disallow `#[no_mangle]`/`#[export_name = ...]` functions that have the same symbol name as built-in shims

3 years agoRemove erroneous `exit()` and `ExitProcess()` in `tests/run-pass/function_calls/expor...
hyd-dev [Tue, 8 Jun 2021 12:36:21 +0000 (20:36 +0800)]
Remove erroneous `exit()` and `ExitProcess()` in `tests/run-pass/function_calls/exported_symbol.rs`

3 years agoFix the wrong `EmulateByNameResult::NotSupported` in `syscall` shim
hyd-dev [Fri, 11 Jun 2021 03:13:16 +0000 (11:13 +0800)]
Fix the wrong `EmulateByNameResult::NotSupported` in `syscall` shim

3 years agoAuto merge of #1830 - RalfJung:readme, r=RalfJung
bors [Wed, 9 Jun 2021 19:12:17 +0000 (19:12 +0000)]
Auto merge of #1830 - RalfJung:readme, r=RalfJung

tweak isolation-error message in README

3 years agotweak isolation-error message in README
Ralf Jung [Wed, 9 Jun 2021 19:09:17 +0000 (21:09 +0200)]
tweak isolation-error message in README