Commit graph

622 commits

Author SHA1 Message Date
Michael Goulet
aee4570adf
Rollup merge of #107429 - tgross35:from-bytes-until-null-stabilization, r=dtolnay
Stabilize feature `cstr_from_bytes_until_nul`

This PR seeks to stabilize `cstr_from_bytes_until_nul`.

Partially addresses #95027

This function has only been on nightly for about 10 months, but I think it is simple enough that there isn't harm discussing stabilization. It has also had at least a handful of mentions on both the user forum and the discord, so it seems like it's already in use or at least known.

This needs FCP still.

Comment on potential discussion points:
- eventual conversion of `CStr` to be a single thin pointer: this function will still be useful to provide a safe way to create a `CStr` after this change.
- should this return a length too, to address concerns about the `CStr` change? I don't see it as being particularly useful, and it seems less ergonomic (i.e. returning `Result<(&CStr, usize), FromBytesUntilNulError>`). I think users that also need this length without the additional `strlen` call are likely better off using a combination of other methods, but this is up for discussion
- `CString::from_vec_until_nul`: this is also useful, but it doesn't even have a nightly implementation merged yet. I propose feature gating that separately, as opposed to blocking this `CStr` implementation on that

Possible alternatives:

A user can use `from_bytes_with_nul` on a slice up to `my_slice[..my_slice.iter().find(|c| c == 0).unwrap()]`. However; that is significantly less ergonomic, and is a bit more work for the compiler to optimize compared the direct `memchr` call that this wraps.

## New stable API

```rs
// both in core::ffi

pub struct FromBytesUntilNulError(());

impl CStr {
    pub const fn from_bytes_until_nul(
        bytes: &[u8]
    ) -> Result<&CStr, FromBytesUntilNulError>
}
```

cc ```@ericseppanen``` original author, ```@Mark-Simulacrum``` original reviewer, ```@m-ou-se``` brought up some issues on the thin pointer CStr

```@rustbot``` modify labels: +T-libs-api +needs-fcp
2023-02-08 20:01:24 -08:00
Matthias Krüger
d044c1bde4
Rollup merge of #107756 - RalfJung:miri-out-of-addresses, r=oli-obk
miri: fix ICE when running out of address space

Fixes https://github.com/rust-lang/miri/issues/2769
r? `@oli-obk`

I didn't add a test since that requires https://github.com/oli-obk/ui_test/issues/38 (host must be 64bit and target 32bit). Also the test takes ~30s, so I am not sure if we want to have it in the test suite?
2023-02-07 17:57:18 +01:00
Ralf Jung
2900ba15b3 miri: fix ICE when running out of address space 2023-02-07 13:26:31 +01:00
Ralf Jung
1ef16874b5 also do not add noalias on not-Unpin Box 2023-02-06 12:17:41 +01:00
Ralf Jung
ea541bc2ee make &mut !Unpin not dereferenceable
See https://github.com/rust-lang/unsafe-code-guidelines/issues/381 for discussion.
2023-02-06 11:46:37 +01:00
Trevor Gross
83b05ef0ee Stabilize feature 'cstr_from_bytes_until_nul' 2023-02-01 02:14:07 -05:00
Ralf Jung
dfc4a7b2d0 make unaligned_reference a hard error 2023-01-31 20:28:11 +01:00
Kyle Matsuda
ab40ba2fb1 add EarlyBinder::no_bound_vars 2023-01-26 20:28:31 -07:00
Kyle Matsuda
c2414dfaa4 change fn_sig query to use EarlyBinder; remove bound_fn_sig query; add EarlyBinder to fn_sig in metadata 2023-01-26 20:28:25 -07:00
Kyle Matsuda
e982971ff2 replace usages of fn_sig query with bound_fn_sig 2023-01-26 20:15:36 -07:00
bors
65d2f2a5f9 Auto merge of #106810 - oli-obk:resolver_reverse_plumbing, r=petrochenkov
Various cleanups around pre-TyCtxt queries and functions

part of #105462

based on https://github.com/rust-lang/rust/pull/106776 (everything starting at [0e2b39f](https://github.com/rust-lang/rust/pull/106810/commits/0e2b39fd1ffde51b50d45ccbe41de52b85136b8b) is new in this PR)

r? `@petrochenkov`

I think this should be most of the uncontroversial part of #105462.
2023-01-19 05:23:40 +00:00
The 8472
2d54b7ceb2 add miri regression test 2023-01-17 22:01:33 +01:00
Oli Scherer
9f5cd03153 Move compiler input and ouput paths into session 2023-01-16 14:46:44 +00:00
Oli Scherer
42f75f1e46 Group some commonly passed together values into a struct 2023-01-16 14:46:40 +00:00
Matthias Krüger
43134714f5
Rollup merge of #106661 - mjguzik:linux_statx, r=Mark-Simulacrum
Stop probing for statx unless necessary

As is the current toy program:
fn main() -> std::io::Result<()> {
    use std::fs;

    let metadata = fs::metadata("foo.txt")?;

    assert!(!metadata.is_dir());
    Ok(())
}

... observed under strace will issue:
[snip]
statx(0, NULL, AT_STATX_SYNC_AS_STAT, STATX_ALL, NULL) = -1 EFAULT (Bad address) statx(AT_FDCWD, "foo.txt", AT_STATX_SYNC_AS_STAT, STATX_ALL, {stx_mask=STATX_ALL|STATX_MNT_ID, stx_attributes=0, stx_mode=S_IFREG|0644, stx_size=0, ...}) = 0

While statx is not necessarily always present, checking for it can be delayed to the first error condition. Said condition may very well never happen, in which case the check got avoided altogether.

Note this is still suboptimal as there still will be programs issuing it, but bulk of the problem is removed.

Tested by forbidding the syscall for the binary and observing it correctly falls back to newfstatat.

While here tidy up the commentary, in particular by denoting some problems with the current approach.
2023-01-14 18:45:26 +01:00
bors
222d1ff68d Auto merge of #105603 - oli-obk:non_repeatable_queries, r=petrochenkov
Harden the pre-tyctxt query system against accidental recomputation

While the current compiler has no issues where we `take` and then compute the query again, in https://github.com/rust-lang/rust/pull/105462 I accidentally introduced such a case.

I also took the opportunity to remove `peek_mut`, which is only ever used for `global_tcx` to then invoke `enter`. I added an `enter` method directly on the query.
2023-01-12 13:59:30 +00:00
Oli Scherer
58782a8842 Harden the pre-tyctxt query system against accidental recomputation 2023-01-12 09:26:28 +00:00
Daniel Henry-Mantilla
48b7e2a5b9
Stabilize ::{core,std}::pin::pin! 2023-01-11 14:09:14 -08:00
Mateusz Guzik
753e576722 Fix up stat test in libc-fs-with-isolation
The test relied on Error::last_os_error() coming from the stat call on
the passed file, but there is no guarantee this will be the case.

Instead extract errno from the error returned by the routine.

Patch de facto written by joboet.

Co-authored-by:	joboet <jonasboettiger@icloud.com>
2023-01-11 17:09:12 +00:00
Ralf Jung
85e87a80fc add dtors_in_dtors_in_dtors 2023-01-09 16:35:16 +01:00
bors
d61d359d5e Auto merge of #2753 - RalfJung:rustup, r=RalfJung
Rustup

Pulls in https://github.com/rust-lang/rust/pull/104658
2023-01-09 13:13:35 +00:00
Ralf Jung
8740443c35 Preparing for merge from rustc 2023-01-09 13:48:31 +01:00
bors
87a202e6f2 Auto merge of #2752 - RalfJung:win-env-current-exe, r=RalfJung
make env::current_exe work on Windows
2023-01-09 12:47:38 +00:00
Ralf Jung
5977a1626d make env::current_exe work on Windows 2023-01-09 13:46:15 +01:00
dependabot[bot]
90600e0b7d
Bump tokio from 1.23.0 to 1.23.1 in /test_dependencies
Bumps [tokio](https://github.com/tokio-rs/tokio) from 1.23.0 to 1.23.1.
- [Release notes](https://github.com/tokio-rs/tokio/releases)
- [Commits](https://github.com/tokio-rs/tokio/compare/tokio-1.23.0...tokio-1.23.1)

---
updated-dependencies:
- dependency-name: tokio
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-01-06 22:01:53 +00:00
Aaron Hill
a474872b5d
Test again wasm32-unknown-unknown 2023-01-05 21:44:37 -06:00
Aaron Hill
54be8aad79
Ignore symbol shim clash when symbol is provided by compiler_builtins
When this happens, we ignore the symbol from `compiler_builtins`
in favor of Miri's builtin support.

This allows Miri to target platforms like wasm32-unknown-unknown,
where functions like `memcmp` are provided by `compiler_builtins`.
2023-01-05 21:41:53 -06:00
Ralf Jung
794cc0854a clippy 2023-01-03 14:49:53 +01:00
Ralf Jung
d96592b4fd Merge from rustc 2023-01-03 12:22:11 +01:00
Ralf Jung
99fc745656 Preparing for merge from rustc 2023-01-03 12:21:37 +01:00
Ralf Jung
1296a4c689 tweaks to retag diagnostic handling 2023-01-02 16:05:49 +01:00
bjorn3
8c000a68c5 Add missing extern crate rustc_driver 2022-12-31 17:20:13 +00:00
Ralf Jung
dfe1898437 no need to do a no_std build for wasi 2022-12-28 18:01:20 +01:00
Ralf Jung
40d65f0152 test using a JSON target file 2022-12-28 18:01:20 +01:00
Ralf Jung
fbd6a69937 bump dependencies 2022-12-28 17:21:20 +01:00
Ralf Jung
4fa51925fa print sysroot build failure error 2022-12-28 17:18:14 +01:00
Ralf Jung
041ad1fcfe simplify path joining code a bit 2022-12-28 12:44:41 +01:00
Ralf Jung
7bdb5da916 handle unknown targets more gracefully 2022-12-28 10:51:13 +01:00
Ralf Jung
d31029226b cargo-miri: use rustc to determine the output filename 2022-12-27 20:34:45 +01:00
Ralf Jung
92b6562a25 enable some warnings that rustc bootstrap enables 2022-12-25 14:18:41 +01:00
Ralf Jung
fed7e2c935 use cargo-install to install josh-proxy 2022-12-25 14:16:10 +01:00
Ralf Jung
e52e0d8557 fix warnings 2022-12-24 10:40:50 +01:00
Ralf Jung
9c01e9f7f5 Merge from rustc 2022-12-24 10:12:14 +01:00
Ralf Jung
0c14ad4d9f Preparing for merge from rustc 2022-12-24 09:58:29 +01:00
bors
245357f619 Auto merge of #2646 - saethlin:data-race-spans, r=RalfJung
Data race spans

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

This adds output to data race errors very similar to the spans we emit for Stacked Borrows errors. For example, from our test suite:
```
help: The Atomic Load on thread `<unnamed>` is here
  --> tests/fail/data_race/atomic_read_na_write_race1.rs:23:13
   |
23 | ...   (&*c.0).load(Ordering::SeqCst) //~ ERROR: Data race detected between Atomic Load on thread `<unnamed>` and Write o...
   |       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
help: The Write on thread `<unnamed>` is here
  --> tests/fail/data_race/atomic_read_na_write_race1.rs:19:13
   |
19 |             *(c.0 as *mut usize) = 32;
   |             ^^^^^^^^^^^^^^^^^^^^^^^^^```
```

Because of https://github.com/rust-lang/miri/pull/2647 this comes without a perf regression, according to our benchmarks.
2022-12-24 08:13:31 +00:00
Ben Kimock
81fe37a900 Mention and number the components of a race in the order the interpreter sees them 2022-12-23 13:45:43 -05:00
Ralf Jung
a48d2e1783 fix one more unaligned self.ptr, and add tests 2022-12-23 15:49:23 +01:00
Ralf Jung
19422fcbfe attempt to clarify what the backtrace belongs to when there could be ambiguity 2022-12-23 15:39:14 +01:00
Ralf Jung
d0f404d77a fix IntoIter::drop on high-alignment ZST 2022-12-23 15:18:18 +01:00
Ben Kimock
f4165be780 Add a (1) and (2) to the data race errors 2022-12-22 14:24:10 -05:00