diff --git a/rust-version b/rust-version index dd333f98..67fa25f2 100644 --- a/rust-version +++ b/rust-version @@ -1 +1 @@ -c02a4f0852e6665cf3df3867982021383f5615df +deb947971c8748f5c6203548ce4af9022f21eaf0 diff --git a/src/tests/minicore.md b/src/tests/minicore.md index e4853b6d..507b259e 100644 --- a/src/tests/minicore.md +++ b/src/tests/minicore.md @@ -6,25 +6,37 @@ ui/codegen/assembly test suites. It provides `core` stubs for tests that need to build for cross-compiled targets but do not need/want to run. -A test can use [`minicore`] by specifying the `//@ add-core-stubs` directive. -Then, mark the test with `#![feature(no_core)]` + `#![no_std]` + `#![no_core]`. -Due to Edition 2015 extern prelude rules, you will probably need to declare -`minicore` as an extern crate. - -Due to the `no_std` + `no_core` nature of these tests, `//@ add-core-stubs` -implies and requires that the test will be built with `-C panic=abort`. -Unwinding panics are not supported. - -If you find a `core` item to be missing from the [`minicore`] stub, consider -adding it to the test auxiliary if it's likely to be used or is already needed -by more than one test. -
Please note that [`minicore`] is only intended for `core` items, and explicitly **not** `std` or `alloc` items because `core` items are applicable to a wider range of tests.
+A test can use [`minicore`] by specifying the `//@ add-core-stubs` directive. +Then, mark the test with `#![feature(no_core)]` + `#![no_std]` + `#![no_core]`. +Due to Edition 2015 extern prelude rules, you will probably need to declare +`minicore` as an extern crate. + +## Implied compiler flags + +Due to the `no_std` + `no_core` nature of these tests, `//@ add-core-stubs` +implies and requires that the test will be built with `-C panic=abort`. +**Unwinding panics are not supported.** + +Tests will also be built with `-C force-unwind-tables=yes` to preserve CFI +directives in assembly tests. + +TL;DR: `//@ add-core-stubs` implies two compiler flags: + +1. `-C panic=abort` +2. `-C force-unwind-tables=yes` + +## Adding more `core` stubs + +If you find a `core` item to be missing from the [`minicore`] stub, consider +adding it to the test auxiliary if it's likely to be used or is already needed +by more than one test. + ## Example codegen test that uses `minicore` ```rust,no_run