add no-std-build for thumbv7em-none-eabi target

This commit is contained in:
Tadeo hepperle
2024-02-05 16:53:57 +01:00
parent 408f81ec3d
commit f41f0908ec
2 changed files with 16 additions and 12 deletions
+9 -3
View File
@@ -437,13 +437,19 @@ jobs:
toolchain: nightly
override: true
- name: Add the `thumbv7em-none-eabi` target
run: |
rustup target add `thumbv7em-none-eabi`
- name: Rust Cache
uses: Swatinem/rust-cache@23bce251a8cd2ffc3c1075eaa2367cf899916d84 # v2.7.3
# Note: in `no_std` no real tests are possible, we just run a binary with some tests in it which panic upon failure.
- name: Run no_std tests
# Note: We currently do not have a way to run real tests in a `no_std` environment.
# We can only make sure that they compile to ARM thumb ISA.
# Running the binary and inspecting the output would require an actual machine with matching ISA or some sort of emulator.
- name: Compile `no-std-tests` crate to `thumbv7em-none-eabi` target.
run: |
cargo run
cargo build --target thumbv7em-none-eabi
working-directory: testing/no-std-tests
- if: "failure()"
+7 -9
View File
@@ -9,7 +9,7 @@
#[start]
fn start(_argc: isize, _argv: *const *const u8) -> isize {
run_tests();
compile_test();
0
}
@@ -19,9 +19,7 @@ pub extern "C" fn rust_eh_personality() {}
#[panic_handler]
fn panic(_info: &core::panic::PanicInfo) -> ! {
unsafe {
libc::abort();
}
loop {}
}
use libc_alloc::LibcAlloc;
@@ -33,13 +31,13 @@ static ALLOCATOR: LibcAlloc = LibcAlloc;
extern crate alloc;
// Note: Panics in this function will lead to `Aborted (core dumped)` and a non-zero exit status => suitable for CI tests.
fn run_tests() {
subxt_metadata_test();
/// Including code here makes sure it is not pruned.
/// We want all code included to compile fine for the `thumbv7em-none-eabi` target.
fn compile_test() {
subxt_metadata_compiles();
}
/// Makes sure, subxt-metadata works in a no-std-context:
fn subxt_metadata_test() {
fn subxt_metadata_compiles() {
use codec::Decode;
let bytes: alloc::vec::Vec<u8> = alloc::vec![0, 1, 2, 3, 4];
subxt_metadata::Metadata::decode(&mut &bytes[..]).expect_err("invalid byte sequence");