Commit graph

1825 commits

Author SHA1 Message Date
Vladimir Makayev
fb2d9cdfc5 Implement lldb formattter for "clang encoded" enums (LLDB 18.1+)
Summary:
I landed a fix last year to enable `DW_TAG_variant_part` encoding in LLDBs (https://reviews.llvm.org/D149213). This PR is a corresponding fix in synthetic formatters to decode that information.
This is in no way perfect implementation but at least it improves the status quo. But most types of enums will be visible and debuggable in some way.
I've also updated most of the existing tests that touch enums and re-enabled test cases based on LLDB for enums.

Test Plan:
ran tests `./x test tests/debuginfo/`. Also tested manually in LLDB CLI and LLDB VSCode

Other Thoughs
A better approach would probably be adopting [formatters from codelldb](https://github.com/vadimcn/codelldb/blob/master/formatters/rust.py). There is some neat hack that hooks up summary provider via synthetic provider which can ultimately fix more display issues for Rust types and enums too. But getting it to work well might take more time that I have right now.
2024-05-05 17:53:02 -07:00
onur-ozkan
67e3668c9a introduce x vendor
Signed-off-by: onur-ozkan <work@onurozkan.dev>
2024-04-22 17:07:49 +03:00
bors
5958f5e08f Auto merge of #123317 - RalfJung:test-in-miri, r=m-ou-se,saethlin,onur-ozkan
Support running library tests in Miri

This adds a new bootstrap subcommand `./x.py miri` which can test libraries in Miri. This is in preparation for eventually doing that as part of bors CI, but this PR only adds the infrastructure, and doesn't enable it yet.

`@rust-lang/bootstrap` should this be `x.py test --miri library/core` or `x.py miri library/core`? The flag has the advantage that we don't have to copy all the arguments from `Subcommand::Test`. It has the disadvantage that most test steps just ignore `--miri` and still run tests the regular way. For clippy you went the route of making it a separate subcommand. ~~I went with a flag now as that seemed easier, but I can change this.~~ I made it a new subcommand. Note however that the regular cargo invocation would be `cargo miri test ...`, so `x.py` is still going to be different in that the `test` is omitted. That said, we could also make it `./x.py miri-test` to make that difference smaller -- that's in fact more consistent with the internal name of the command when bootstrap invokes cargo.

`@rust-lang/libs` ~~unfortunately this PR does some unholy things to the `lib.rs` files of our library crates.~~
`@m-ou-se` found a way that entirely avoids library-level hacks, except for some new small `lib.miri.rs` files that hopefully you will never have to touch. There's a new hack in cargo-miri but there it is in good company...
2024-04-05 13:17:09 +00:00
Ralf Jung
a6803b9de4 add 'x.py miri', and make it work for 'library/{core,alloc,std}' 2024-04-03 20:27:20 +02:00
Ralf Jung
5a887942a5 x.py test: remove no-op --skip flag 2024-04-02 00:06:04 +02:00
Nathan Henrie
41e97a0a3f Add rust-lldb pretty printing for Path and PathBuf
Fixes https://github.com/rust-lang/rust/issues/120553
Fixes https://github.com/rust-lang/rust/issues/48462
2024-03-29 18:02:26 -06:00
bors
a615cea333 Auto merge of #121885 - reitermarkus:generic-nonzero-inner, r=oli-obk,wesleywiser
Move generic `NonZero` `rustc_layout_scalar_valid_range_start` attribute to inner type.

Tracking issue: https://github.com/rust-lang/rust/issues/120257

r? `@dtolnay`
2024-03-17 02:27:52 +00:00
Markus Reiter
2047e847d7
Fix StdNonZeroNumberProvider for gdb. 2024-03-14 17:34:59 +01:00
Markus Reiter
42c5eb8845
Add comment about NonZero printing as character literal. 2024-03-14 17:34:59 +01:00
Markus Reiter
4a799082fe
Fix StdNonZeroNumberSummaryProvider. 2024-03-14 17:34:58 +01:00
Markus Reiter
ecee730c45
Try fixing debuginfo test. 2024-03-14 17:34:58 +01:00
Alex Crichton
7d9690a3bc Remove old support for emscripten/wasm32-u-u
This commit removes the `wasm32-shim.js` file, for example, and deletes
old support for Emscripten which hasn't been exercised in some time.
2024-03-11 09:36:35 -07:00
Markus Reiter
021739c840
Update tests. 2024-01-27 16:38:57 +01:00
Matthias Krüger
346397d081
Rollup merge of #119562 - LegionMammal978:rename-pin-pointer, r=Amanieu,dtolnay
Rename `pointer` field on `Pin`

A few days ago, I was helping another user create a self-referential type using `PhantomPinned`. However, I noticed an odd behavior when I tried to access one of the type's fields via `Pin`'s `Deref` impl:

```rust
use std::{marker::PhantomPinned, ptr};

struct Pinned {
    data: i32,
    pointer: *const i32,
    _pin: PhantomPinned,
}

fn main() {
    let mut b = Box::pin(Pinned {
        data: 42,
        pointer: ptr::null(),
        _pin: PhantomPinned,
    });
    {
        let pinned = unsafe { b.as_mut().get_unchecked_mut() };
        pinned.pointer = &pinned.data;
    }
    println!("{}", unsafe { *b.pointer });
}
```

```rust
error[E0658]: use of unstable library feature 'unsafe_pin_internals'
  --> <source>:19:30
   |
19 |     println!("{}", unsafe { *b.pointer });
   |                              ^^^^^^^^^

error[E0277]: `Pinned` doesn't implement `std::fmt::Display`
  --> <source>:19:20
   |
19 |     println!("{}", unsafe { *b.pointer });
   |                    ^^^^^^^^^^^^^^^^^^^^^ `Pinned` cannot be formatted with the default formatter
   |
   = help: the trait `std::fmt::Display` is not implemented for `Pinned`
   = note: in format strings you may be able to use `{:?}` (or {:#?} for pretty-print) instead
   = note: this error originates in the macro `$crate::format_args_nl` which comes from the expansion of the macro `println` (in Nightly builds, run with -Z macro-backtrace for more info)
```

Since the user named their field `pointer`, it conflicts with the `pointer` field on `Pin`, which is public but unstable since Rust 1.60.0 with #93176. On versions from 1.33.0 to 1.59.0, where the field on `Pin` is private, this program compiles and prints `42` as expected.

To avoid this confusing behavior, this PR renames `pointer` to `__pointer`, so that it's less likely to conflict with a `pointer` field on the underlying type, as accessed through the `Deref` impl. This is technically a breaking change for anyone who names their field `__pointer` on the inner type; if this is undesirable, it could be renamed to something more longwinded. It's also a nightly breaking change for any external users of `unsafe_pin_internals`.
2024-01-26 23:15:49 +01:00
trevyn
5afe1399b5 Increase vscode git.detectSubmodulesLimit 2024-01-19 23:46:17 +04:00
LegionMammal978
bc3fb5245a Rename pointer field on Pin
The internal, unstable field of `Pin` can conflict with fields from the
inner type accessed via the `Deref` impl. Rename it from `pointer` to
`__pointer`, to make it less likely to conflict with anything else.
2024-01-16 14:58:42 -05:00
bors
d73bd3fb3b Auto merge of #119654 - onur-ozkan:bump-dependencies, r=clubby789
bump bootstrap dependencies

This PR removes hard-coded patch versions, updates bootstrap's dependency stack to recent versions (some of the versions were released 3-4 years ago), and removes a few dependencies from bootstrap.

Removed dependencies:

![image](https://github.com/rust-lang/rust/assets/39852038/95e86325-aea0-4055-bee5-245c144f662e)
2024-01-11 10:46:43 +00:00
onur-ozkan
f02f09a08e bless tidy
Signed-off-by: onur-ozkan <work@onurozkan.dev>
2024-01-11 10:24:41 +03:00
onur-ozkan
96bd9cdcc4 pass allow-{dirty,staged} to clippy
Signed-off-by: onur-ozkan <work@onurozkan.dev>
2024-01-01 09:41:39 +03:00
bors
51c0db6a91 Auto merge of #106790 - the8472:rawvec-niche, r=scottmcm
add more niches to rawvec

Previously RawVec only had a single niche in its `NonNull` pointer. With this change it now has `isize::MAX` niches since half the value-space of the capacity field is never needed, we can't have a capacity larger than isize::MAX.
2023-12-20 02:19:10 +00:00
The 8472
f6150db78f update natvis to match changed RawVec structure 2023-12-19 22:17:38 +01:00
The 8472
81997094e6 update debug providers to match new RawVec capacity field 2023-12-11 23:38:48 +01:00
onur-ozkan
9eeb265f7c update auto completions
Signed-off-by: onur-ozkan <work@onurozkan.dev>
2023-12-11 14:26:11 +03:00
onur-ozkan
6860654d82 allow bypassing the build directory lock
As bootstrap locks its entire build directory, parallel bootstrapping
for anything becomes impossible. This change enables developers to bypass
the locking mechanism when it is unnecessary for their specific use case.

Signed-off-by: onur-ozkan <work@onurozkan.dev>
2023-12-09 20:12:40 +03:00
bors
3aaa0f57b7 Auto merge of #115274 - bjorn3:tidy_improvements, r=davidtwco
Run tidy license checker on more workspaces

The license checker didn't run on several workspaces before this PR. The same applied to the "external package sources" check. There were also two missing lockfiles which I have added now.
2023-11-04 02:28:17 +00:00
Guillaume Gomez
20debcd345
Rollup merge of #117043 - onur-ozkan:skip-stage0-validation, r=Mark-Simulacrum
add bootstrap flag `--skip-stage0-validation`

This change introduces the `--skip-stage0-validation` flag, which permits the use of any desired version of the stage0 compiler without verifying its version.

Additionally, stage0 compiler validation check is reverted(#115103) to its default enabled state.

Helps to #115065

r? Mark-Simulacrum
2023-10-29 12:35:00 +01:00
Matthias Krüger
5f96976e82
Rollup merge of #116978 - tromey:rust-printers-cleanup, r=Mark-Simulacrum
Rewrite gdb pretty-printer registration

Currently, the Rust pretty-printers are registered in gdb using the uninformative name "lookup":

    (gdb) info pretty-printer
    global pretty-printers:
    [...]
    objfile /home/tromey/[...]
      lookup

It's nicer for users if the top-level registration is given a clear name.  Additionally, gdb lets users individually enable and disable specific printers, provided they are registered correctly.

This patch implements both these ideas.  Now the output looks like:

    (gdb) info pretty-printer
    global pretty-printers:
    [...]
    objfile /home/tromey/[...]
      rust
	StdArc
	StdBTreeMap
	StdBTreeSet
	StdCell
	StdHashMap
	StdHashSet
	StdNonZeroNumber
	StdOsString
	StdRc
	StdRef
	StdRefCell
	StdRefMut
	StdSlice
	StdStr
	StdString
	StdVec
	StdVecDeque
2023-10-23 16:23:52 +02:00
onur-ozkan
9586bb8064 add bootstrap flag --skip-stage0-validation
This change introduces the --skip-stage0-validation flag,
which permits the use of any desired version of the stage0
compiler without verifying its version.

Signed-off-by: onur-ozkan <work@onurozkan.dev>
2023-10-22 10:42:06 +03:00
Tom Tromey
7eee62c9be Use gdb.ValuePrinter tag class
GDB 14 has a "gdb.ValuePrinter" tag class that was introduced to let
GDB evolve the pretty-printer API.  Users of this tag are required to
hide any local attributes or methods.  This patch makes this change to
the Rust pretty-printers.  At present this is just a cleanup,
providing the basis for any future changes.
2023-10-20 10:49:40 -06:00
Tom Tromey
e98beb5aeb Rewrite gdb pretty-printer registration
Currently, the Rust pretty-printers are registered in gdb using the
uninformative name "lookup":

    (gdb) info pretty-printer
    global pretty-printers:
    [...]
    objfile /home/tromey/[...]
      lookup

It's nicer for users if the top-level registration is given a clear
name.  Additionally, gdb lets users individually enable and disable
specific printers, provided they are registered correctly.

This patch implements both these ideas.  Now the output looks like:

    (gdb) info pretty-printer
    global pretty-printers:
    [...]
    objfile /home/tromey/[...]
      rust
	StdArc
	StdBTreeMap
	StdBTreeSet
	StdCell
	StdHashMap
	StdHashSet
	StdNonZeroNumber
	StdOsString
	StdRc
	StdRef
	StdRefCell
	StdRefMut
	StdSlice
	StdStr
	StdString
	StdVec
	StdVecDeque
2023-10-20 10:35:28 -06:00
onur-ozkan
62d88f9775 generate zsh autocompletion for x
Signed-off-by: onur-ozkan <work@onurozkan.dev>
2023-10-15 09:05:55 +03:00
onur-ozkan
8c62ed581f bump bootstrap:clap_complete to 4.4.3
Signed-off-by: onur-ozkan <work@onurozkan.dev>
2023-10-15 09:05:21 +03:00
bjorn3
8bce7116fa Add two lockfiles 2023-10-10 12:47:26 +00:00
bjorn3
b876f2a944 Update rand dependency for test-float-parse
This removes a dependency on fuchsia-cprng which doesn't have any
license info.
2023-10-10 12:47:26 +00:00
Jakub Beránek
9a0e90f7b4
Add --enable-bolt-settings bootstrap flag 2023-10-09 22:00:17 +02:00
bors
42ca6e4e57 Auto merge of #104385 - BlackHoleFox:apple-minimum-bumps, r=petrochenkov
Raise minimum supported Apple OS versions

This implements the proposal to raise the minimum supported Apple OS versions as laid out in the now-completed MCP (https://github.com/rust-lang/compiler-team/issues/556).

As of this PR, rustc and the stdlib now support these versions as the baseline:
- macOS: 10.12 Sierra
- iOS: 10
- tvOS: 10
- watchOS: 5 (Unchanged)

In addition to everything this breaks indirectly, these changes also erase the `armv7-apple-ios` target (currently tier 3) because the oldest supported iOS device now uses ARMv7s. Not sure what the policy around tier3 target removal is but shimming it is not an option due to the linker refusing.

[Per comment](https://github.com/rust-lang/compiler-team/issues/556#issuecomment-1297175073), this requires a FCP to merge. cc `@wesleywiser.`
2023-09-24 02:35:05 +00:00
BlackHoleFox
58bbca958d Raise minimum supported macOS to 10.12 2023-09-23 19:14:25 -05:00
Ralf Jung
6dbcf5fc81 update rust_analyzer_settings.json 2023-09-14 09:58:43 +02:00
Eren K
efa41ef803
rust-gdbgui: remove excessive quotes
in commit 8dd0ec6, the `GDB_ARGS` variable was split across 3 lines. However, extra quotes were added to each line, such that the shell interprets the 3 lines as space separated strings, and tries to execute the latter two lines.
This commit simply removes the extra quotes.
2023-08-22 09:09:00 -04:00
bors
9fa6bdd764 Auto merge of #112482 - tgross35:ci-non-rust-linters, r=pietroalbini
Add support for tidy linting via external tools for non-rust files

This change adds the flag `--check-extras` to `tidy`. It accepts a comma separated list of any of the options:

* py (test everything applicable for python files)
* py:lint (lint python files using `ruff`)
* py:fmt (check formatting for python files using `black`)
* shell or shell:lint (lint shell files using `shellcheck`)

Specific files to check can also be specified via positional args. Examples:

* `./x test tidy --check-extras=shell,py`
* `./x test tidy --check-extras=py:fmt -- src/bootstrap/bootstrap.py`
* `./x test tidy --check-extras=shell -- src/ci/*.sh`
* Python formatting can be applied with bless: `./x test tidy --ckeck-extras=py:fmt --bless`

`ruff` and `black` need to be installed via pip; this tool manages these within a virtual environment at `build/venv`. `shellcheck` needs to be installed on the system already.

---

This PR doesn't fix any of the errors that show up (I will likely go through those at some point) and it doesn't enforce anything new in CI. Relevant zulip discussion: https://rust-lang.zulipchat.com/#narrow/stream/242791-t-infra/topic/Other.20linters.20in.20CI
2023-08-10 13:07:18 +00:00
Meysam Azad
0b16456efa
fix(bootstrap): rename exclude flag to skip 🐛 2023-08-06 14:29:36 +07:00
Trevor Gross
efc49e4dfa Add support for tidy linting via external tools for non-rust files
This change adds the flag `--check-extras` to `tidy`. It accepts a comma
separated list of any of the options:

- py (test everything applicable for python files)
- py:lint (lint python files using `ruff`)
- py:fmt (check formatting for python files using `black`)
- shell or shell:lint (lint shell files using `shellcheck`)

Specific files to check can also be specified via positional args.
Examples:

- `./x test tidy --check-extras=shell,py`
- `./x test tidy --check-extras=py:fmt -- src/bootstrap/bootstrap.py`
- `./x test tidy --check-extras=shell -- src/ci/*.sh`
- Python formatting can be applied with bless:
  `./x test tidy --ckeck-extras=py:fmt --bless`

`ruff` and `black` need to be installed via pip; this tool manages these
within a virtual environment at `build/venv`. `shellcheck` needs to be
installed on the system already.
2023-08-02 04:40:26 -04:00
Matthias Krüger
82c50ce97f
Rollup merge of #113906 - notriddle:notriddle/cargo-extra-env, r=Mark-Simulacrum
etc: add `RUSTC_BOOTSTRAP` to rust-analyzer config

Fixes the problem reported in https://github.com/rust-lang/rust/issues/112391#issuecomment-1597224941
2023-07-31 22:49:50 +02:00
Jakub Beránek
78403f4e13
Remove BOLT from bootstrap 2023-07-31 08:54:47 +02:00
ozkanonur
25268638aa support --stage for x clean
Signed-off-by: ozkanonur <work@onurozkan.dev>
2023-07-30 23:12:12 +03:00
Michael Howell
a62e30ee3f etc: add RUSTC_BOOTSTRAP to rust-analyzer config
Fixes the problem reported in
https://github.com/rust-lang/rust/issues/112391#issuecomment-1597224941
2023-07-20 16:53:23 -07:00
Guillaume Gomez
8e8c5c9f7e Improve htmldocck error a bit by providing line where error occurred 2023-07-19 14:34:06 +02:00
bors
da6b55cc5e Auto merge of #89132 - Cyborus04:rc_allocator_support, r=Amanieu
Add support for allocators in `Rc` & `Arc`

Adds the ability for `std::rc:Rc`, `std::rc::Weak`, `std::sync::Arc`, and `std::sync::Weak` to live in custom allocators
2023-07-17 21:51:46 +00:00
Wesley Wiser
12bed9d8cc Update natvis to match full type names for Arc, Rc, Weak, etc
Also update a test case to have the correct whitespace in a type name.
2023-07-17 15:51:46 -04:00
yukang
cfa1a79009 User may want to skip tidy check sometimes 2023-06-30 15:37:10 +08:00