diff options
author | 2022-01-23 14:20:02 +0000 | |
---|---|---|
committer | 2022-01-23 14:20:02 +0000 | |
commit | c350114d8002d91bd71d08e7ad6ee2e960c2ed35 (patch) | |
tree | b741c9324aca7c68fae566afdcabf34c8175a134 /cortex-m-rt/tests/compile-fail/non-static-resource.rs | |
parent | 92552c73d3b56dc86007450633950d16ebe0e495 (diff) | |
parent | 391fb7edb90131f295ae759ff780f2a4233dada2 (diff) | |
download | cortex-m-c350114d8002d91bd71d08e7ad6ee2e960c2ed35.tar.gz cortex-m-c350114d8002d91bd71d08e7ad6ee2e960c2ed35.tar.zst cortex-m-c350114d8002d91bd71d08e7ad6ee2e960c2ed35.zip |
Merge #391c-m-rt-v0.7.1
391: Merge cortex-m-rt into this repository r=thejpster a=adamgreig
This PR merges the cortex-m-rt repository (with history) into this repo, inside the `cortex-m-rt` folder which is added to the workspace. The main advantage is easier combined testing of cortex-m with cortex-m-rt (including on-hardware tests e.g. #355), and in the future easier changes across the two projects.
The MSRV of cortex-m-rt is bumped 1.39 -> 1.40 to align it with cortex-m itself.
I've updated the CI to run the same tests and checks as before, and updated references to the old URL.
If/after this is merged, I propose adding a note to the old repo's README and then archiving it.
An alternative to this technique would be adding all the files in one new commit (not preserving history), if anyone thinks that would be neater.
NB: This PR also adds an inline to ITM to fix a clippy hard error.
For future reference, the git work was:
```
cd cortex-m-rt
git filter-repo --to-subdirectory-filter cortex-m-rt
cd ../cortex-m
git remote add rt ../cortex-m-rt
git fetch rt
git merge --allow-unrelated-histories rt/master
```
Co-authored-by: bors[bot] <bors[bot]@users.noreply.github.com>
Co-authored-by: Jonathan 'theJPster' Pallant <github@thejpster.org.uk>
Co-authored-by: Adam Greig <adam@adamgreig.com>
Co-authored-by: Jonas Schievink <jonasschievink@gmail.com>
Co-authored-by: Jorge Aparicio <jorge@japaric.io>
Co-authored-by: Emil Fresk <emil.fresk@gmail.com>
Co-authored-by: Daniel Egger <daniel@eggers-club.de>
Co-authored-by: Niklas Claesson <nicke.claesson@gmail.com>
Co-authored-by: bors[bot] <26634292+bors[bot]@users.noreply.github.com>
Co-authored-by: Vadim Kaushan <admin@disasm.info>
Diffstat (limited to 'cortex-m-rt/tests/compile-fail/non-static-resource.rs')
-rw-r--r-- | cortex-m-rt/tests/compile-fail/non-static-resource.rs | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/cortex-m-rt/tests/compile-fail/non-static-resource.rs b/cortex-m-rt/tests/compile-fail/non-static-resource.rs new file mode 100644 index 0000000..a603728 --- /dev/null +++ b/cortex-m-rt/tests/compile-fail/non-static-resource.rs @@ -0,0 +1,44 @@ +//! Tests that no `&'static mut` to static mutable resources can be obtained, which would be +//! unsound. +//! +//! Regression test for https://github.com/rust-embedded/cortex-m-rt/issues/212 + +#![no_std] +#![no_main] + +extern crate cortex_m_rt; +extern crate panic_halt; + +use cortex_m_rt::{entry, exception, interrupt, ExceptionFrame}; + +#[allow(non_camel_case_types)] +enum interrupt { + UART0, +} + +#[exception] +fn SVCall() { + static mut STAT: u8 = 0; + + let _stat: &'static mut u8 = STAT; + //~^ ERROR lifetime of reference outlives lifetime of borrowed content +} + +#[interrupt] +fn UART0() { + static mut STAT: u8 = 0; + + let _stat: &'static mut u8 = STAT; + //~^ ERROR lifetime of reference outlives lifetime of borrowed content +} + +#[entry] +fn you_died_of_dis_entry() -> ! { + static mut STAT: u8 = 0; + + // Allowed. This is sound for the entry point since it is only ever called once, and it makes + // resources far more useful. + let _stat: &'static mut u8 = STAT; + + loop {} +} |