diff --git a/Cargo.lock b/Cargo.lock index 83ec97623..0877d3302 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3086,6 +3086,13 @@ dependencies = [ "serde", ] +[[package]] +name = "tests-microkit-minimal" +version = "0.1.0" +dependencies = [ + "sel4-microkit", +] + [[package]] name = "tests-microkit-passive-server-with-deferred-action-pds-client" version = "0.1.0" diff --git a/Cargo.toml b/Cargo.toml index af4cb52bc..f777c53c0 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -51,6 +51,7 @@ members = [ "crates/private/support/sel4-simple-task/threading", "crates/private/tests/capdl/threads/components/test", "crates/private/tests/capdl/utcover/components/test", + "crates/private/tests/microkit/minimal", "crates/private/tests/microkit/passive-server-with-deferred-action/pds/client", "crates/private/tests/microkit/passive-server-with-deferred-action/pds/server", "crates/private/tests/microkit/reset", diff --git a/crates/examples/microkit/banscii/pds/artist/Cargo.nix b/crates/examples/microkit/banscii/pds/artist/Cargo.nix index 59cc57feb..811971c02 100644 --- a/crates/examples/microkit/banscii/pds/artist/Cargo.nix +++ b/crates/examples/microkit/banscii/pds/artist/Cargo.nix @@ -14,7 +14,7 @@ mk { sel4-microkit-message banscii-artist-interface-types ; - sel4-microkit = localCrates.sel4-microkit // { default-features = false; features = [ "alloc" ]; }; + sel4-microkit = localCrates.sel4-microkit // { features = [ "alloc" ]; }; sel4-externally-shared = localCrates.sel4-externally-shared // { features = [ "unstable" ]; }; }; build-dependencies = { diff --git a/crates/examples/microkit/banscii/pds/artist/Cargo.toml b/crates/examples/microkit/banscii/pds/artist/Cargo.toml index b8c8a3c62..b680625ff 100644 --- a/crates/examples/microkit/banscii/pds/artist/Cargo.toml +++ b/crates/examples/microkit/banscii/pds/artist/Cargo.toml @@ -20,12 +20,8 @@ license = "BSD-2-Clause" banscii-artist-interface-types = { path = "interface-types" } rsa = { version = "0.9.6", default-features = false, features = ["pem", "sha2"] } sel4-externally-shared = { path = "../../../../../sel4-externally-shared", features = ["unstable"] } +sel4-microkit = { path = "../../../../../sel4-microkit", features = ["alloc"] } sel4-microkit-message = { path = "../../../../../sel4-microkit/message" } -[dependencies.sel4-microkit] -path = "../../../../../sel4-microkit" -default-features = false -features = ["alloc"] - [build-dependencies] rsa = "0.9.6" diff --git a/crates/examples/microkit/banscii/pds/assistant/Cargo.nix b/crates/examples/microkit/banscii/pds/assistant/Cargo.nix index 7378a99dd..e4eb5b9b4 100644 --- a/crates/examples/microkit/banscii/pds/assistant/Cargo.nix +++ b/crates/examples/microkit/banscii/pds/assistant/Cargo.nix @@ -18,6 +18,6 @@ mk { banscii-artist-interface-types ; sel4-externally-shared = localCrates.sel4-externally-shared // { features = [ "unstable" ]; }; - sel4-microkit = localCrates.sel4-microkit // { default-features = false; features = [ "alloc" ]; }; + sel4-microkit = localCrates.sel4-microkit // { features = [ "alloc" ]; }; }; } diff --git a/crates/examples/microkit/banscii/pds/assistant/Cargo.toml b/crates/examples/microkit/banscii/pds/assistant/Cargo.toml index 60acfd2e1..ae32cbfae 100644 --- a/crates/examples/microkit/banscii/pds/assistant/Cargo.toml +++ b/crates/examples/microkit/banscii/pds/assistant/Cargo.toml @@ -22,10 +22,6 @@ banscii-assistant-core = { path = "core" } embedded-hal-nb = "1.0" hex = { version = "0.4.3", default-features = false, features = ["alloc"] } sel4-externally-shared = { path = "../../../../../sel4-externally-shared", features = ["unstable"] } +sel4-microkit = { path = "../../../../../sel4-microkit", features = ["alloc"] } sel4-microkit-driver-adapters = { path = "../../../../../sel4-microkit/driver-adapters" } sel4-microkit-message = { path = "../../../../../sel4-microkit/message" } - -[dependencies.sel4-microkit] -path = "../../../../../sel4-microkit" -default-features = false -features = ["alloc"] diff --git a/crates/examples/microkit/banscii/pds/serial-driver/Cargo.nix b/crates/examples/microkit/banscii/pds/serial-driver/Cargo.nix index 849699bff..5d7b8ad5a 100644 --- a/crates/examples/microkit/banscii/pds/serial-driver/Cargo.nix +++ b/crates/examples/microkit/banscii/pds/serial-driver/Cargo.nix @@ -10,10 +10,10 @@ mk { package.name = "banscii-serial-driver"; dependencies = { inherit (localCrates) + sel4-microkit sel4-microkit-message sel4-microkit-driver-adapters ; - sel4-microkit = localCrates.sel4-microkit // { default-features = false; }; sel4-pl011-driver = localCrates.sel4-pl011-driver // { optional = true; }; }; features = { diff --git a/crates/examples/microkit/banscii/pds/serial-driver/Cargo.toml b/crates/examples/microkit/banscii/pds/serial-driver/Cargo.toml index d3c664a5e..8adf98d2a 100644 --- a/crates/examples/microkit/banscii/pds/serial-driver/Cargo.toml +++ b/crates/examples/microkit/banscii/pds/serial-driver/Cargo.toml @@ -20,7 +20,7 @@ license = "BSD-2-Clause" board-qemu_virt_aarch64 = ["sel4-pl011-driver"] [dependencies] -sel4-microkit = { path = "../../../../../sel4-microkit", default-features = false } +sel4-microkit = { path = "../../../../../sel4-microkit" } sel4-microkit-driver-adapters = { path = "../../../../../sel4-microkit/driver-adapters" } sel4-microkit-message = { path = "../../../../../sel4-microkit/message" } sel4-pl011-driver = { path = "../../../../../drivers/pl011", optional = true } diff --git a/crates/examples/microkit/http-server/pds/pl031-driver/Cargo.nix b/crates/examples/microkit/http-server/pds/pl031-driver/Cargo.nix index 829adf1c2..d0444cd4a 100644 --- a/crates/examples/microkit/http-server/pds/pl031-driver/Cargo.nix +++ b/crates/examples/microkit/http-server/pds/pl031-driver/Cargo.nix @@ -11,8 +11,8 @@ mk { dependencies = { inherit (localCrates) sel4-pl031-driver + sel4-microkit sel4-microkit-driver-adapters ; - sel4-microkit = localCrates.sel4-microkit // { default-features = false; }; }; } diff --git a/crates/examples/microkit/http-server/pds/pl031-driver/Cargo.toml b/crates/examples/microkit/http-server/pds/pl031-driver/Cargo.toml index 06302b6f1..4476bfa19 100644 --- a/crates/examples/microkit/http-server/pds/pl031-driver/Cargo.toml +++ b/crates/examples/microkit/http-server/pds/pl031-driver/Cargo.toml @@ -17,6 +17,6 @@ edition = "2021" license = "BSD-2-Clause" [dependencies] -sel4-microkit = { path = "../../../../../sel4-microkit", default-features = false } +sel4-microkit = { path = "../../../../../sel4-microkit" } sel4-microkit-driver-adapters = { path = "../../../../../sel4-microkit/driver-adapters" } sel4-pl031-driver = { path = "../../../../../drivers/pl031" } diff --git a/crates/examples/microkit/http-server/pds/server/Cargo.nix b/crates/examples/microkit/http-server/pds/server/Cargo.nix index e929b4fcd..44001d194 100644 --- a/crates/examples/microkit/http-server/pds/server/Cargo.nix +++ b/crates/examples/microkit/http-server/pds/server/Cargo.nix @@ -55,7 +55,7 @@ mk { ]; }; - sel4-microkit = localCrates.sel4-microkit // { default-features = false; features = [ "alloc" ]; }; + sel4-microkit = localCrates.sel4-microkit // { features = [ "alloc" ]; }; sel4-externally-shared = localCrates.sel4-externally-shared // { features = [ "unstable" ]; }; microkit-http-server-example-server-core = localCrates.microkit-http-server-example-server-core // { diff --git a/crates/examples/microkit/http-server/pds/server/Cargo.toml b/crates/examples/microkit/http-server/pds/server/Cargo.toml index 623df4a20..2f7e8ca16 100644 --- a/crates/examples/microkit/http-server/pds/server/Cargo.toml +++ b/crates/examples/microkit/http-server/pds/server/Cargo.toml @@ -33,6 +33,7 @@ sel4-driver-interfaces = { path = "../../../../../sel4-driver-interfaces" } sel4-externally-shared = { path = "../../../../../sel4-externally-shared", features = ["unstable"] } sel4-immediate-sync-once-cell = { path = "../../../../../sel4-immediate-sync-once-cell" } sel4-logging = { path = "../../../../../sel4-logging" } +sel4-microkit = { path = "../../../../../sel4-microkit", features = ["alloc"] } sel4-microkit-driver-adapters = { path = "../../../../../sel4-microkit/driver-adapters" } sel4-microkit-message = { path = "../../../../../sel4-microkit/message" } sel4-newlib = { path = "../../../../../sel4-newlib", features = ["nosys", "all-symbols"] } @@ -44,11 +45,6 @@ sel4-sync = { path = "../../../../../sel4-sync" } [dependencies.sel4-async-single-threaded-executor] path = "../../../../../sel4-async/single-threaded-executor" -[dependencies.sel4-microkit] -path = "../../../../../sel4-microkit" -default-features = false -features = ["alloc"] - [dependencies.sel4-shared-ring-buffer-block-io-types] path = "../../../../../sel4-shared-ring-buffer/block-io/types" diff --git a/crates/examples/microkit/http-server/pds/sp804-driver/Cargo.nix b/crates/examples/microkit/http-server/pds/sp804-driver/Cargo.nix index 4624c2cfb..2b95498c3 100644 --- a/crates/examples/microkit/http-server/pds/sp804-driver/Cargo.nix +++ b/crates/examples/microkit/http-server/pds/sp804-driver/Cargo.nix @@ -10,11 +10,11 @@ mk { package.name = "microkit-http-server-example-sp804-driver"; dependencies = { inherit (localCrates) + sel4-microkit sel4-microkit-message sel4-microkit-driver-adapters sel4-driver-interfaces sel4-sp804-driver ; - sel4-microkit = localCrates.sel4-microkit // { default-features = false; }; }; } diff --git a/crates/examples/microkit/http-server/pds/sp804-driver/Cargo.toml b/crates/examples/microkit/http-server/pds/sp804-driver/Cargo.toml index cf6d13bd4..d3fb52dfe 100644 --- a/crates/examples/microkit/http-server/pds/sp804-driver/Cargo.toml +++ b/crates/examples/microkit/http-server/pds/sp804-driver/Cargo.toml @@ -18,7 +18,7 @@ license = "BSD-2-Clause" [dependencies] sel4-driver-interfaces = { path = "../../../../../sel4-driver-interfaces" } -sel4-microkit = { path = "../../../../../sel4-microkit", default-features = false } +sel4-microkit = { path = "../../../../../sel4-microkit" } sel4-microkit-driver-adapters = { path = "../../../../../sel4-microkit/driver-adapters" } sel4-microkit-message = { path = "../../../../../sel4-microkit/message" } sel4-sp804-driver = { path = "../../../../../drivers/sp804" } diff --git a/crates/examples/microkit/http-server/pds/virtio-blk-driver/Cargo.nix b/crates/examples/microkit/http-server/pds/virtio-blk-driver/Cargo.nix index 068eeb028..c6e5ccbe9 100644 --- a/crates/examples/microkit/http-server/pds/virtio-blk-driver/Cargo.nix +++ b/crates/examples/microkit/http-server/pds/virtio-blk-driver/Cargo.nix @@ -14,6 +14,7 @@ mk { virtio-drivers = virtioDriversWith []; inherit (localCrates) + sel4-microkit sel4-microkit-message sel4 sel4-logging @@ -28,6 +29,5 @@ mk { ; sel4-externally-shared = localCrates.sel4-externally-shared // { features = [ "unstable" ]; }; - sel4-microkit = localCrates.sel4-microkit // { default-features = false; }; }; } diff --git a/crates/examples/microkit/http-server/pds/virtio-blk-driver/Cargo.toml b/crates/examples/microkit/http-server/pds/virtio-blk-driver/Cargo.toml index c7637176f..4924494f0 100644 --- a/crates/examples/microkit/http-server/pds/virtio-blk-driver/Cargo.toml +++ b/crates/examples/microkit/http-server/pds/virtio-blk-driver/Cargo.toml @@ -24,7 +24,7 @@ sel4-driver-interfaces = { path = "../../../../../sel4-driver-interfaces" } sel4-externally-shared = { path = "../../../../../sel4-externally-shared", features = ["unstable"] } sel4-immediate-sync-once-cell = { path = "../../../../../sel4-immediate-sync-once-cell" } sel4-logging = { path = "../../../../../sel4-logging" } -sel4-microkit = { path = "../../../../../sel4-microkit", default-features = false } +sel4-microkit = { path = "../../../../../sel4-microkit" } sel4-microkit-driver-adapters = { path = "../../../../../sel4-microkit/driver-adapters" } sel4-microkit-message = { path = "../../../../../sel4-microkit/message" } sel4-shared-ring-buffer = { path = "../../../../../sel4-shared-ring-buffer" } diff --git a/crates/examples/microkit/http-server/pds/virtio-net-driver/Cargo.nix b/crates/examples/microkit/http-server/pds/virtio-net-driver/Cargo.nix index f0adafde3..7442d454d 100644 --- a/crates/examples/microkit/http-server/pds/virtio-net-driver/Cargo.nix +++ b/crates/examples/microkit/http-server/pds/virtio-net-driver/Cargo.nix @@ -14,6 +14,7 @@ mk { virtio-drivers = virtioDriversWith [ "alloc" ]; inherit (localCrates) + sel4-microkit sel4-microkit-message sel4-microkit-driver-adapters sel4 @@ -26,6 +27,5 @@ mk { ; sel4-externally-shared = localCrates.sel4-externally-shared // { features = [ "unstable" ]; }; - sel4-microkit = localCrates.sel4-microkit // { default-features = false; }; }; } diff --git a/crates/examples/microkit/http-server/pds/virtio-net-driver/Cargo.toml b/crates/examples/microkit/http-server/pds/virtio-net-driver/Cargo.toml index 78c4ba847..6f3dccb7f 100644 --- a/crates/examples/microkit/http-server/pds/virtio-net-driver/Cargo.toml +++ b/crates/examples/microkit/http-server/pds/virtio-net-driver/Cargo.toml @@ -23,7 +23,7 @@ sel4-bounce-buffer-allocator = { path = "../../../../../sel4-bounce-buffer-alloc sel4-externally-shared = { path = "../../../../../sel4-externally-shared", features = ["unstable"] } sel4-immediate-sync-once-cell = { path = "../../../../../sel4-immediate-sync-once-cell" } sel4-logging = { path = "../../../../../sel4-logging" } -sel4-microkit = { path = "../../../../../sel4-microkit", default-features = false } +sel4-microkit = { path = "../../../../../sel4-microkit" } sel4-microkit-driver-adapters = { path = "../../../../../sel4-microkit/driver-adapters" } sel4-microkit-message = { path = "../../../../../sel4-microkit/message" } sel4-shared-ring-buffer = { path = "../../../../../sel4-shared-ring-buffer" } diff --git a/crates/examples/root-task/spawn-task/child/Cargo.nix b/crates/examples/root-task/spawn-task/child/Cargo.nix index 8f8b27edf..5eb538faa 100644 --- a/crates/examples/root-task/spawn-task/child/Cargo.nix +++ b/crates/examples/root-task/spawn-task/child/Cargo.nix @@ -18,7 +18,7 @@ mk { sel4-ctors-dtors ; sel4-panicking = localCrates.sel4-panicking // { - features = [ "unwinding" "alloc" ]; + features = [ "alloc" ]; }; sel4-runtime-common = localCrates.sel4-runtime-common // { features = [ "start" "tls" "unwinding" ]; diff --git a/crates/examples/root-task/spawn-task/child/Cargo.toml b/crates/examples/root-task/spawn-task/child/Cargo.toml index 7893be300..c06d7ea70 100644 --- a/crates/examples/root-task/spawn-task/child/Cargo.toml +++ b/crates/examples/root-task/spawn-task/child/Cargo.toml @@ -21,7 +21,7 @@ cfg-if = "1.0.0" sel4 = { path = "../../../../sel4" } sel4-ctors-dtors = { path = "../../../../sel4-ctors-dtors" } sel4-dlmalloc = { path = "../../../../sel4-dlmalloc" } -sel4-panicking = { path = "../../../../sel4-panicking", features = ["unwinding", "alloc"] } +sel4-panicking = { path = "../../../../sel4-panicking", features = ["alloc"] } sel4-panicking-env = { path = "../../../../sel4-panicking/env" } sel4-sync = { path = "../../../../sel4-sync" } diff --git a/crates/private/tests/microkit/minimal/Cargo.nix b/crates/private/tests/microkit/minimal/Cargo.nix new file mode 100644 index 000000000..7eadfb3e8 --- /dev/null +++ b/crates/private/tests/microkit/minimal/Cargo.nix @@ -0,0 +1,16 @@ +# +# Copyright 2024, Colias Group, LLC +# +# SPDX-License-Identifier: BSD-2-Clause +# + +{ mk, localCrates }: + +mk { + package.name = "tests-microkit-minimal"; + dependencies = { + inherit (localCrates) + sel4-microkit + ; + }; +} diff --git a/crates/private/tests/microkit/minimal/Cargo.toml b/crates/private/tests/microkit/minimal/Cargo.toml new file mode 100644 index 000000000..29a1d736d --- /dev/null +++ b/crates/private/tests/microkit/minimal/Cargo.toml @@ -0,0 +1,20 @@ +# +# Copyright 2023, Colias Group, LLC +# +# SPDX-License-Identifier: BSD-2-Clause +# +# +# This file is generated from './Cargo.nix'. You can edit this file directly +# if you are not using this project's Cargo manifest management tools. +# See 'hacking/cargo-manifest-management/README.md' for more information. +# + +[package] +name = "tests-microkit-minimal" +version = "0.1.0" +authors = ["Nick Spinale "] +edition = "2021" +license = "BSD-2-Clause" + +[dependencies] +sel4-microkit = { path = "../../../../sel4-microkit" } diff --git a/crates/private/tests/microkit/minimal/src/bin/test.rs b/crates/private/tests/microkit/minimal/src/bin/test.rs new file mode 100644 index 000000000..9198c5458 --- /dev/null +++ b/crates/private/tests/microkit/minimal/src/bin/test.rs @@ -0,0 +1,16 @@ +// +// Copyright 2024, Colias Group, LLC +// +// SPDX-License-Identifier: BSD-2-Clause +// + +#![no_std] +#![no_main] + +use sel4_microkit::{debug_println, protection_domain, NullHandler}; + +#[protection_domain] +fn init() -> NullHandler { + debug_println!("TEST_PASS"); + NullHandler::new() +} diff --git a/crates/private/tests/microkit/minimal/x.system b/crates/private/tests/microkit/minimal/x.system new file mode 100644 index 000000000..245545c3b --- /dev/null +++ b/crates/private/tests/microkit/minimal/x.system @@ -0,0 +1,11 @@ + + + + + + + diff --git a/crates/private/tests/root-task/backtrace/Cargo.nix b/crates/private/tests/root-task/backtrace/Cargo.nix index 933b112db..27b2b2f2b 100644 --- a/crates/private/tests/root-task/backtrace/Cargo.nix +++ b/crates/private/tests/root-task/backtrace/Cargo.nix @@ -13,7 +13,7 @@ mk { sel4 sel4-backtrace-embedded-debug-info ; - sel4-root-task = localCrates.sel4-root-task // { features = [ "alloc" "single-threaded" ]; }; + sel4-root-task = localCrates.sel4-root-task // { features = [ "alloc" ]; }; sel4-backtrace-simple = localCrates.sel4-backtrace-simple // { features = [ "alloc" ]; }; sel4-backtrace = localCrates.sel4-backtrace // { features = [ "full" ]; }; sel4-backtrace-types = localCrates.sel4-backtrace-types // { features = [ "full" ]; }; diff --git a/crates/private/tests/root-task/backtrace/Cargo.toml b/crates/private/tests/root-task/backtrace/Cargo.toml index 905da8b12..5f5eaae57 100644 --- a/crates/private/tests/root-task/backtrace/Cargo.toml +++ b/crates/private/tests/root-task/backtrace/Cargo.toml @@ -22,4 +22,4 @@ sel4-backtrace = { path = "../../../../sel4-backtrace", features = ["full"] } sel4-backtrace-embedded-debug-info = { path = "../../../../sel4-backtrace/embedded-debug-info" } sel4-backtrace-simple = { path = "../../../../sel4-backtrace/simple", features = ["alloc"] } sel4-backtrace-types = { path = "../../../../sel4-backtrace/types", features = ["full"] } -sel4-root-task = { path = "../../../../sel4-root-task", features = ["alloc", "single-threaded"] } +sel4-root-task = { path = "../../../../sel4-root-task", features = ["alloc"] } diff --git a/crates/sel4-capdl-initializer/Cargo.nix b/crates/sel4-capdl-initializer/Cargo.nix index 511b79d1b..2d1416cff 100644 --- a/crates/sel4-capdl-initializer/Cargo.nix +++ b/crates/sel4-capdl-initializer/Cargo.nix @@ -18,7 +18,7 @@ mk { sel4-logging sel4-sync ; - sel4-root-task = localCrates.sel4-root-task // { default-features = false; features = [ "single-threaded" ]; }; + sel4-root-task = localCrates.sel4-root-task // { features = [ "single-threaded" ]; }; sel4-capdl-initializer-types = localCrates.sel4-capdl-initializer-types // { features = [ "alloc" "serde" "deflate" ]; }; }; # features = { diff --git a/crates/sel4-capdl-initializer/Cargo.toml b/crates/sel4-capdl-initializer/Cargo.toml index 7c969085a..361dad4fe 100644 --- a/crates/sel4-capdl-initializer/Cargo.toml +++ b/crates/sel4-capdl-initializer/Cargo.toml @@ -24,9 +24,5 @@ sel4-capdl-initializer-core = { path = "core" } sel4-capdl-initializer-types = { path = "types", features = ["alloc", "serde", "deflate"] } sel4-dlmalloc = { path = "../sel4-dlmalloc" } sel4-logging = { path = "../sel4-logging" } +sel4-root-task = { path = "../sel4-root-task", features = ["single-threaded"] } sel4-sync = { path = "../sel4-sync" } - -[dependencies.sel4-root-task] -path = "../sel4-root-task" -default-features = false -features = ["single-threaded"] diff --git a/crates/sel4-capdl-initializer/with-embedded-spec/Cargo.nix b/crates/sel4-capdl-initializer/with-embedded-spec/Cargo.nix index 598f923b4..671f0745d 100644 --- a/crates/sel4-capdl-initializer/with-embedded-spec/Cargo.nix +++ b/crates/sel4-capdl-initializer/with-embedded-spec/Cargo.nix @@ -16,7 +16,7 @@ mk { sel4 sel4-logging ; - sel4-root-task = localCrates.sel4-root-task // { default-features = false; features = [ "single-threaded" ]; }; + sel4-root-task = localCrates.sel4-root-task // { features = [ "single-threaded" ]; }; }; build-dependencies = { inherit (localCrates) diff --git a/crates/sel4-capdl-initializer/with-embedded-spec/Cargo.toml b/crates/sel4-capdl-initializer/with-embedded-spec/Cargo.toml index 0bde3a1b7..55ef1ece5 100644 --- a/crates/sel4-capdl-initializer/with-embedded-spec/Cargo.toml +++ b/crates/sel4-capdl-initializer/with-embedded-spec/Cargo.toml @@ -28,11 +28,7 @@ sel4-capdl-initializer-core = { path = "../core" } sel4-capdl-initializer-types = { path = "../types" } sel4-capdl-initializer-with-embedded-spec-embedded-spec = { path = "embedded-spec" } sel4-logging = { path = "../../sel4-logging" } - -[dependencies.sel4-root-task] -path = "../../sel4-root-task" -default-features = false -features = ["single-threaded"] +sel4-root-task = { path = "../../sel4-root-task", features = ["single-threaded"] } [build-dependencies.sel4-capdl-initializer-with-embedded-spec-embedded-spec-validate] path = "embedded-spec/validate" diff --git a/crates/sel4-generate-target-specs/src/main.rs b/crates/sel4-generate-target-specs/src/main.rs index 3bfe2a2f2..e554bce95 100644 --- a/crates/sel4-generate-target-specs/src/main.rs +++ b/crates/sel4-generate-target-specs/src/main.rs @@ -23,6 +23,7 @@ struct Config { arch: Arch, context: Context, minimal: bool, + unwind: bool, musl: bool, } @@ -107,7 +108,7 @@ impl Config { let options = &mut target.options; options.is_builtin = false; options.exe_suffix = ".elf".into(); - options.eh_frame_header = !self.minimal; + options.eh_frame_header = true; } if let Context::Microkit { resettable } = &self.context { @@ -120,12 +121,10 @@ impl Config { options.link_script = Some(linker_script.into()); } - if !self.minimal { - let options = &mut target.options; - options.has_thread_local = true; - if self.arch.unwinding_support() { - options.panic_strategy = PanicStrategy::Unwind; - } + target.options.has_thread_local = !self.minimal; + + if self.unwinding_support() { + target.options.panic_strategy = PanicStrategy::Unwind; } if self.musl { @@ -140,10 +139,17 @@ impl Config { target } + fn unwinding_support(&self) -> bool { + self.arch.unwinding_support() && self.unwind + } + fn filter(&self) -> bool { if self.context.is_microkit() && !self.arch.microkit_support() { return false; } + if self.unwinding_support() && self.minimal { + return false; + } if self.musl && (self.minimal || self.context.is_microkit()) { return false; } @@ -162,6 +168,9 @@ impl Config { if self.minimal { name.push_str("-minimal"); } + if self.unwind { + name.push_str("-unwind"); + } if self.musl { name.push_str("-musl"); } @@ -173,13 +182,16 @@ impl Config { for arch in Arch::all() { for context in Context::all() { for minimal in [true, false] { - for musl in [true, false] { - all.push(Self { - arch, - context, - minimal, - musl, - }); + for unwind in [true, false] { + for musl in [true, false] { + all.push(Self { + arch, + context, + minimal, + unwind, + musl, + }); + } } } } diff --git a/crates/sel4-microkit/Cargo.nix b/crates/sel4-microkit/Cargo.nix index 5747d7ca0..e05df97b6 100644 --- a/crates/sel4-microkit/Cargo.nix +++ b/crates/sel4-microkit/Cargo.nix @@ -20,20 +20,13 @@ mk { sel4-microkit-base sel4-microkit-macros ; - sel4-runtime-common = localCrates.sel4-runtime-common // { features = [ "tls" "unwinding" "start" ]; }; + sel4-runtime-common = localCrates.sel4-runtime-common // { features = [ "unwinding" "tls" "start" ]; }; sel4 = localCrates.sel4 // { features = [ "single-threaded" ]; }; }; features = { - default = [ - "unwinding" - ]; full = [ - "default" "alloc" ]; - unwinding = [ - "sel4-panicking/unwinding" - ]; alloc = [ "sel4-panicking/alloc" ]; diff --git a/crates/sel4-microkit/Cargo.toml b/crates/sel4-microkit/Cargo.toml index f6dfcd188..bcd0776ca 100644 --- a/crates/sel4-microkit/Cargo.toml +++ b/crates/sel4-microkit/Cargo.toml @@ -18,9 +18,7 @@ license = "BSD-2-Clause" [features] alloc = ["sel4-panicking/alloc"] -default = ["unwinding"] -full = ["default", "alloc"] -unwinding = ["sel4-panicking/unwinding"] +full = ["alloc"] [dependencies] cfg-if = "1.0.0" @@ -32,5 +30,5 @@ sel4-microkit-base = { path = "base" } sel4-microkit-macros = { path = "macros" } sel4-panicking = { path = "../sel4-panicking" } sel4-panicking-env = { path = "../sel4-panicking/env" } -sel4-runtime-common = { path = "../sel4-runtime-common", features = ["tls", "unwinding", "start"] } +sel4-runtime-common = { path = "../sel4-runtime-common", features = ["unwinding", "tls", "start"] } sel4-sync = { path = "../sel4-sync" } diff --git a/crates/sel4-microkit/base/src/symbols.rs b/crates/sel4-microkit/base/src/symbols.rs index 554230c7d..80e037857 100644 --- a/crates/sel4-microkit/base/src/symbols.rs +++ b/crates/sel4-microkit/base/src/symbols.rs @@ -183,5 +183,9 @@ pub fn ipc_buffer_ptr() -> *mut sel4::IpcBuffer { static mut __sel4_ipc_buffer_obj: sel4::IpcBuffer; } - ptr::addr_of_mut!(__sel4_ipc_buffer_obj) + // Only unsafe until 1.82 + #[allow(unused_unsafe)] + unsafe { + ptr::addr_of_mut!(__sel4_ipc_buffer_obj) + } } diff --git a/crates/sel4-microkit/driver-adapters/Cargo.nix b/crates/sel4-microkit/driver-adapters/Cargo.nix index ee3b03ba0..b3ee101d8 100644 --- a/crates/sel4-microkit/driver-adapters/Cargo.nix +++ b/crates/sel4-microkit/driver-adapters/Cargo.nix @@ -21,12 +21,12 @@ mk { } // (with localCrates; { inherit sel4-driver-interfaces + sel4-microkit sel4-microkit-message sel4-shared-ring-buffer sel4-bounce-buffer-allocator ; sel4-externally-shared = sel4-externally-shared // { features = [ "unstable" ]; }; - sel4-microkit = sel4-microkit // { default-features = false; }; }); features = { # TODO diff --git a/crates/sel4-microkit/driver-adapters/Cargo.toml b/crates/sel4-microkit/driver-adapters/Cargo.toml index 47b5d03da..fd9964287 100644 --- a/crates/sel4-microkit/driver-adapters/Cargo.toml +++ b/crates/sel4-microkit/driver-adapters/Cargo.toml @@ -25,7 +25,7 @@ rtcc = "0.3.2" sel4-bounce-buffer-allocator = { path = "../../sel4-bounce-buffer-allocator" } sel4-driver-interfaces = { path = "../../sel4-driver-interfaces" } sel4-externally-shared = { path = "../../sel4-externally-shared", features = ["unstable"] } -sel4-microkit = { path = "..", default-features = false } +sel4-microkit = { path = ".." } sel4-microkit-message = { path = "../message" } sel4-shared-ring-buffer = { path = "../../sel4-shared-ring-buffer" } serde = { version = "1.0.147", default-features = false } diff --git a/crates/sel4-microkit/src/entry.rs b/crates/sel4-microkit/src/entry.rs index 5619e15cd..112f68bbf 100644 --- a/crates/sel4-microkit/src/entry.rs +++ b/crates/sel4-microkit/src/entry.rs @@ -30,7 +30,7 @@ unsafe extern "C" fn sel4_runtime_rust_entry() -> ! { #[allow(unreachable_code)] fn inner_entry() -> ! { - #[cfg(all(feature = "unwinding", panic = "unwind"))] + #[cfg(panic = "unwind")] { sel4_runtime_common::set_eh_frame_finder().unwrap(); } diff --git a/crates/sel4-panicking/Cargo.nix b/crates/sel4-panicking/Cargo.nix index 5b9e8bd8f..36ea86f7d 100644 --- a/crates/sel4-panicking/Cargo.nix +++ b/crates/sel4-panicking/Cargo.nix @@ -18,8 +18,8 @@ mk { build-dependencies = { inherit (versions) rustc_version; }; - target."cfg(not(target_arch = \"arm\"))".dependencies = { - unwinding = unwindingWith [ "personality" ] // { optional = true; }; + target."cfg(all(panic = \"unwind\", not(target_arch = \"arm\")))".dependencies = { + unwinding = unwindingWith [ "personality" ]; }; features = { alloc = []; diff --git a/crates/sel4-panicking/Cargo.toml b/crates/sel4-panicking/Cargo.toml index d259c8a7c..42df92319 100644 --- a/crates/sel4-panicking/Cargo.toml +++ b/crates/sel4-panicking/Cargo.toml @@ -27,8 +27,7 @@ sel4-panicking-env = { path = "env" } [build-dependencies] rustc_version = "0.4.0" -[target."cfg(not(target_arch = \"arm\"))".dependencies.unwinding] +[target."cfg(all(panic = \"unwind\", not(target_arch = \"arm\")))".dependencies.unwinding] version = "0.2.3" default-features = false features = ["unwinder", "fde-custom", "hide-trace", "personality"] -optional = true diff --git a/crates/sel4-panicking/src/strategy/mod.rs b/crates/sel4-panicking/src/strategy/mod.rs index 1809a1627..2cff8d596 100644 --- a/crates/sel4-panicking/src/strategy/mod.rs +++ b/crates/sel4-panicking/src/strategy/mod.rs @@ -5,7 +5,7 @@ // cfg_if::cfg_if! { - if #[cfg(all(feature = "unwinding", panic = "unwind"))] { + if #[cfg(panic = "unwind")] { mod unwind; use unwind as imp; } else { diff --git a/crates/sel4-root-task/Cargo.nix b/crates/sel4-root-task/Cargo.nix index 350610a3c..f38ffaf09 100644 --- a/crates/sel4-root-task/Cargo.nix +++ b/crates/sel4-root-task/Cargo.nix @@ -19,20 +19,12 @@ mk { sel4-ctors-dtors sel4-root-task-macros ; - sel4-runtime-common = localCrates.sel4-runtime-common // { features = [ "tls" "start" ]; }; + sel4-runtime-common = localCrates.sel4-runtime-common // { features = [ "unwinding" "tls" "start" ]; }; }; features = { - default = [ - "unwinding" - ]; full = [ - "default" "alloc" ]; - unwinding = [ - "sel4-panicking/unwinding" - "sel4-runtime-common/unwinding" - ]; alloc = [ "sel4-panicking/alloc" ]; diff --git a/crates/sel4-root-task/Cargo.toml b/crates/sel4-root-task/Cargo.toml index 24253f99e..6bf958415 100644 --- a/crates/sel4-root-task/Cargo.toml +++ b/crates/sel4-root-task/Cargo.toml @@ -18,10 +18,8 @@ license = "BSD-2-Clause" [features] alloc = ["sel4-panicking/alloc"] -default = ["unwinding"] -full = ["default", "alloc"] +full = ["alloc"] single-threaded = ["sel4/single-threaded"] -unwinding = ["sel4-panicking/unwinding", "sel4-runtime-common/unwinding"] [dependencies] sel4 = { path = "../sel4" } @@ -31,5 +29,5 @@ sel4-immediate-sync-once-cell = { path = "../sel4-immediate-sync-once-cell" } sel4-panicking = { path = "../sel4-panicking" } sel4-panicking-env = { path = "../sel4-panicking/env" } sel4-root-task-macros = { path = "macros" } -sel4-runtime-common = { path = "../sel4-runtime-common", features = ["tls", "start"] } +sel4-runtime-common = { path = "../sel4-runtime-common", features = ["unwinding", "tls", "start"] } sel4-sync = { path = "../sel4-sync" } diff --git a/crates/sel4-root-task/src/entry.rs b/crates/sel4-root-task/src/entry.rs index 3076b66a5..b7d35f330 100644 --- a/crates/sel4-root-task/src/entry.rs +++ b/crates/sel4-root-task/src/entry.rs @@ -26,7 +26,7 @@ unsafe extern "C" fn sel4_runtime_rust_entry(bootinfo: *const sel4::BootInfo) -> #[allow(unreachable_code)] fn inner_entry(bootinfo: *const sel4::BootInfo) -> ! { - #[cfg(all(feature = "unwinding", panic = "unwind"))] + #[cfg(panic = "unwind")] { sel4_runtime_common::set_eh_frame_finder().unwrap(); } diff --git a/crates/sel4-runtime-common/Cargo.nix b/crates/sel4-runtime-common/Cargo.nix index d24744d96..72162db33 100644 --- a/crates/sel4-runtime-common/Cargo.nix +++ b/crates/sel4-runtime-common/Cargo.nix @@ -14,7 +14,7 @@ mk { sel4 = localCrates.sel4 // { default-features = false; optional = true; }; sel4-initialize-tls = localCrates.sel4-initialize-tls // { features = [ "on-stack" ]; optional = true; }; }; - target."cfg(not(target_arch = \"arm\"))".dependencies = { + target."cfg(all(panic = \"unwind\", not(target_arch = \"arm\")))".dependencies = { unwinding = unwindingWith [] // { optional = true; }; }; features = { diff --git a/crates/sel4-runtime-common/Cargo.toml b/crates/sel4-runtime-common/Cargo.toml index 3c37a6cdd..0a194f90d 100644 --- a/crates/sel4-runtime-common/Cargo.toml +++ b/crates/sel4-runtime-common/Cargo.toml @@ -28,7 +28,7 @@ sel4-initialize-tls = { path = "../sel4-initialize-tls", features = ["on-stack"] sel4-panicking-env = { path = "../sel4-panicking/env" } sel4-stack = { path = "../sel4-stack" } -[target."cfg(not(target_arch = \"arm\"))".dependencies.unwinding] +[target."cfg(all(panic = \"unwind\", not(target_arch = \"arm\")))".dependencies.unwinding] version = "0.2.3" default-features = false features = ["unwinder", "fde-custom", "hide-trace"] diff --git a/hacking/binary-cache/Makefile b/hacking/binary-cache/Makefile index 6c5ae6cc2..ba4169a20 100644 --- a/hacking/binary-cache/Makefile +++ b/hacking/binary-cache/Makefile @@ -5,7 +5,7 @@ # P ?= ../.. -A ?= everythingWithExcess +A ?= withClippy.everything path := $(P) attr := $(A) diff --git a/hacking/nix/rust-utils/default.nix b/hacking/nix/rust-utils/default.nix index 5250672b0..b9382a80e 100644 --- a/hacking/nix/rust-utils/default.nix +++ b/hacking/nix/rust-utils/default.nix @@ -60,7 +60,7 @@ in , channel ? null , isNightly ? if channel != null - then lib.hasPrefix "nightly" channel + then lib.hasPrefix "nightly-" channel else throw "could not determine isNightly automatically" , backwardsCompatibilityHacks ? {} , mkCustomTargetPath ? customTargetTripleTripleName: throw "unimplemented" diff --git a/hacking/nix/scope/default.nix b/hacking/nix/scope/default.nix index 84fc14362..300d6f6c8 100644 --- a/hacking/nix/scope/default.nix +++ b/hacking/nix/scope/default.nix @@ -161,6 +161,7 @@ superCallPackage ../rust-utils {} self // { microkit ? false , resettable ? false , minimal ? false + , unwind ? false , musl ? false }: lib.concatStrings [ @@ -169,9 +170,18 @@ superCallPackage ../rust-utils {} self // (lib.optionalString microkit "-microkit") (lib.optionalString resettable "-resettable") (lib.optionalString minimal "-minimal") + (lib.optionalString unwind "-unwind") (lib.optionalString musl "-musl") ]; + allCustomRustTargetTripleNames = + lib.map + mkSeL4CustomRustTargetTripleName + (lib.cartesianProduct + (lib.mapAttrs + (_: _: [ true false ]) + (lib.functionArgs mkSeL4CustomRustTargetTripleName))); + mkSeL4RustTargetTriple = args: mkCustomRustTargetTriple (mkSeL4CustomRustTargetTripleName args); bareMetalBuiltinRustTargetTriple = { diff --git a/hacking/nix/scope/world/instances/default.nix b/hacking/nix/scope/world/instances/default.nix index f53f80942..b9ee08cfe 100644 --- a/hacking/nix/scope/world/instances/default.nix +++ b/hacking/nix/scope/world/instances/default.nix @@ -98,6 +98,7 @@ in rec { microkit.examples.hello microkit.examples.banscii microkit.examples.http-server + microkit.tests.minimal microkit.tests.passive-server-with-deferred-action microkit.tests.reset examples.root-task.hello @@ -277,6 +278,7 @@ in rec { default-test-harness = maybe (haveFullRuntime && haveUnwindingSupport) (mkInstance { rootTask = mkTask { rootCrate = crates.tests-root-task-default-test-harness; + targetTriple = mkSeL4RustTargetTriple { unwind = true; }; test = true; justBuildTests = true; }; @@ -341,6 +343,7 @@ in rec { threads = maybe (haveFullRuntime && haveCapDLInitializer) (mkInstance rec { test = mkTask { rootCrate = crates.tests-capdl-threads-components-test; + targetTriple = mkSeL4RustTargetTriple { unwind = true; }; release = true; # test optimizations }; rootTask = mkCapDLInitializer { @@ -362,6 +365,7 @@ in rec { utcover = maybe (haveFullRuntime && haveCapDLInitializer) (mkInstance rec { test = mkTask { rootCrate = crates.tests-capdl-utcover-components-test; + targetTriple = mkSeL4RustTargetTriple { unwind = true; }; release = false; }; rootTask = mkCapDLInitializer { @@ -409,8 +413,8 @@ in rec { example-root-task-without-runtime = maybe haveMinimalRuntime (mkInstance { rootTask = mkTask { rootCrate = crates.example-root-task-without-runtime; - release = false; targetTriple = mkSeL4RustTargetTriple { minimal = true; }; + release = false; }; extraPlatformArgs = lib.optionalAttrs canSimulate { canAutomateSimply = true; diff --git a/hacking/nix/scope/world/instances/microkit/default.nix b/hacking/nix/scope/world/instances/microkit/default.nix index 551e74312..b21be769f 100644 --- a/hacking/nix/scope/world/instances/microkit/default.nix +++ b/hacking/nix/scope/world/instances/microkit/default.nix @@ -18,6 +18,7 @@ , worldConfig , seL4Config , callPlatform +, verus , maybe , canSimulate @@ -77,6 +78,31 @@ in { }; tests = { + minimal = maybe isMicrokit ( + let + pd = mkPD rec { + inherit (verus) rustEnvironment; + rootCrate = crates.tests-microkit-minimal; + extraProfile = { + panic = "abort"; + }; + }; + in + callPlatform { + system = microkit.mkSystem { + searchPath = [ + "${pd}/bin" + ]; + systemXML = sources.srcRoot + "/crates/private/tests/microkit/minimal/x.system"; + }; + extraPlatformArgs = lib.optionalAttrs canSimulate { + canAutomateSimply = true; + }; + } // { + inherit pd; + } + ); + passive-server-with-deferred-action = maybe isMicrokit ( let mkCrateName = role: "tests-microkit-passive-server-with-deferred-action-pds-${role}"; diff --git a/hacking/nix/scope/world/shell.nix b/hacking/nix/scope/world/shell.nix index f0d3741da..039b225cb 100644 --- a/hacking/nix/scope/world/shell.nix +++ b/hacking/nix/scope/world/shell.nix @@ -14,7 +14,7 @@ , sources , dummyCapDLSpec, serializeCapDLSpec , seL4RustEnvVars -, mkSeL4RustTargetTriple +, allCustomRustTargetTripleNames , worldConfig , seL4ForBoot , crateUtils @@ -38,13 +38,8 @@ let libcDir = "${stdenv.cc.libc}/${hostPlatform.config}"; bindgenEnvVars = - let - targets = lib.flatten ( - lib.forEach [ true false ] (microkit: - lib.forEach [ true false ] (minimal: - mkSeL4RustTargetTriple { inherit microkit minimal; }))); - in lib.listToAttrs (lib.forEach targets (target: { - name = "BINDGEN_EXTRA_CLANG_ARGS_${target.name}"; + lib.listToAttrs (lib.forEach allCustomRustTargetTripleNames (targetName: { + name = "BINDGEN_EXTRA_CLANG_ARGS_${targetName}"; value = [ "-I${libcDir}/include" ]; })); diff --git a/hacking/nix/scope/worlds.nix b/hacking/nix/scope/worlds.nix index bade0e7d0..0885058fc 100644 --- a/hacking/nix/scope/worlds.nix +++ b/hacking/nix/scope/worlds.nix @@ -29,6 +29,8 @@ in rec { let in rec { default = qemu-arm-virt.default; + microkitDefault = qemu-arm-virt.microkit; + qemu-arm-virt = let mk = @@ -263,6 +265,7 @@ in rec { let in rec { default = qemu-riscv-virt.default; + microkitDefault = qemu-riscv-virt.microkit; qemu-riscv-virt = let diff --git a/hacking/nix/top-level/default.nix b/hacking/nix/top-level/default.nix index 5fff9d4a4..e2f3ad421 100644 --- a/hacking/nix/top-level/default.nix +++ b/hacking/nix/top-level/default.nix @@ -208,6 +208,11 @@ in { worlds = lib.fix (self: { default = self.aarch64.default; + microkit = rec { + default = aarch64; + aarch64 = self.aarch64.microkitDefault; + riscv64 = self.riscv64.microkitDefault; + }; } // lib.mapAttrs (_: arch: arch.none.this.worlds) { inherit (pkgs.host) aarch64 aarch32 x86_64 i386; riscv64 = pkgs.host.riscv64.default; diff --git a/support/targets/README.md b/support/targets/README.md index e49389b96..27d2d1706 100644 --- a/support/targets/README.md +++ b/support/targets/README.md @@ -13,7 +13,10 @@ them yourself using that utility will ensure that the resulting target specs are your Rust toolchain. The difference between the `*-minimal` targets and the non-minimal ones are that the minimal ones -have `"panic": "abort"` and `"has-thread-local": false`. +have `"has-thread-local": false`. + +The difference between the `*-unwind` targets and the non-unwind ones are that the unwind ones have +`"panic = "unwind"`. The difference between the `*-sel4-microkit` targets and the `*-sel4` ones is that the `*-sel4-microkit` targets include a linker script fragment to add the `__sel4_ipc_buffer_obj` symbol diff --git a/support/targets/aarch64-sel4-microkit-minimal.json b/support/targets/aarch64-sel4-microkit-minimal.json index 884759773..322a1359d 100644 --- a/support/targets/aarch64-sel4-microkit-minimal.json +++ b/support/targets/aarch64-sel4-microkit-minimal.json @@ -1,9 +1,8 @@ { "arch": "aarch64", "crt-objects-fallback": "false", - "data-layout": "e-m:e-i8:8:32-i16:16:32-i64:64-i128:128-n32:64-S128-Fn32", + "data-layout": "e-m:e-p270:32:32-p271:32:32-p272:64:64-i8:8:32-i16:16:32-i64:64-i128:128-n32:64-S128-Fn32", "disable-redzone": true, - "eh-frame-header": false, "exe-suffix": ".elf", "features": "+v8a,+strict-align,+neon,+fp-armv8", "link-script": "__sel4_ipc_buffer_obj = (__ehdr_start & ~(4096 - 1)) - 4096;", diff --git a/support/targets/aarch64-sel4-microkit-resettable-minimal.json b/support/targets/aarch64-sel4-microkit-resettable-minimal.json index aaacc1f43..603dd265a 100644 --- a/support/targets/aarch64-sel4-microkit-resettable-minimal.json +++ b/support/targets/aarch64-sel4-microkit-resettable-minimal.json @@ -1,9 +1,8 @@ { "arch": "aarch64", "crt-objects-fallback": "false", - "data-layout": "e-m:e-i8:8:32-i16:16:32-i64:64-i128:128-n32:64-S128-Fn32", + "data-layout": "e-m:e-p270:32:32-p271:32:32-p272:64:64-i8:8:32-i16:16:32-i64:64-i128:128-n32:64-S128-Fn32", "disable-redzone": true, - "eh-frame-header": false, "exe-suffix": ".elf", "features": "+v8a,+strict-align,+neon,+fp-armv8", "link-script": "SECTIONS {\n .persistent : {\n *(.persistent .persistent.*)\n }\n} INSERT BEFORE .data;\n\nASSERT(DEFINED(_reset), \"_reset is not defined\")\n\nENTRY(_reset)\n__sel4_ipc_buffer_obj = (__ehdr_start & ~(4096 - 1)) - 4096;", diff --git a/support/targets/aarch64-sel4-microkit-resettable-unwind.json b/support/targets/aarch64-sel4-microkit-resettable-unwind.json new file mode 100644 index 000000000..35fed7bbc --- /dev/null +++ b/support/targets/aarch64-sel4-microkit-resettable-unwind.json @@ -0,0 +1,35 @@ +{ + "arch": "aarch64", + "crt-objects-fallback": "false", + "data-layout": "e-m:e-p270:32:32-p271:32:32-p272:64:64-i8:8:32-i16:16:32-i64:64-i128:128-n32:64-S128-Fn32", + "disable-redzone": true, + "exe-suffix": ".elf", + "features": "+v8a,+strict-align,+neon,+fp-armv8", + "has-thread-local": true, + "link-script": "SECTIONS {\n .persistent : {\n *(.persistent .persistent.*)\n }\n} INSERT BEFORE .data;\n\nASSERT(DEFINED(_reset), \"_reset is not defined\")\n\nENTRY(_reset)\n__sel4_ipc_buffer_obj = (__ehdr_start & ~(4096 - 1)) - 4096;", + "linker": "rust-lld", + "linker-flavor": "gnu-lld", + "llvm-target": "aarch64-unknown-none", + "max-atomic-width": 128, + "metadata": { + "description": null, + "host_tools": null, + "std": null, + "tier": null + }, + "pre-link-args": { + "gnu-lld": [ + "-z", + "max-page-size=4096" + ] + }, + "relocation-model": "static", + "stack-probes": { + "kind": "inline" + }, + "supported-sanitizers": [ + "kcfi", + "kernel-address" + ], + "target-pointer-width": "64" +} diff --git a/support/targets/aarch64-sel4-microkit-resettable.json b/support/targets/aarch64-sel4-microkit-resettable.json index dcc7570f6..906284b21 100644 --- a/support/targets/aarch64-sel4-microkit-resettable.json +++ b/support/targets/aarch64-sel4-microkit-resettable.json @@ -1,7 +1,7 @@ { "arch": "aarch64", "crt-objects-fallback": "false", - "data-layout": "e-m:e-i8:8:32-i16:16:32-i64:64-i128:128-n32:64-S128-Fn32", + "data-layout": "e-m:e-p270:32:32-p271:32:32-p272:64:64-i8:8:32-i16:16:32-i64:64-i128:128-n32:64-S128-Fn32", "disable-redzone": true, "exe-suffix": ".elf", "features": "+v8a,+strict-align,+neon,+fp-armv8", @@ -17,6 +17,7 @@ "std": null, "tier": null }, + "panic-strategy": "abort", "pre-link-args": { "gnu-lld": [ "-z", diff --git a/support/targets/aarch64-sel4-microkit-unwind.json b/support/targets/aarch64-sel4-microkit-unwind.json new file mode 100644 index 000000000..3f3692960 --- /dev/null +++ b/support/targets/aarch64-sel4-microkit-unwind.json @@ -0,0 +1,35 @@ +{ + "arch": "aarch64", + "crt-objects-fallback": "false", + "data-layout": "e-m:e-p270:32:32-p271:32:32-p272:64:64-i8:8:32-i16:16:32-i64:64-i128:128-n32:64-S128-Fn32", + "disable-redzone": true, + "exe-suffix": ".elf", + "features": "+v8a,+strict-align,+neon,+fp-armv8", + "has-thread-local": true, + "link-script": "__sel4_ipc_buffer_obj = (__ehdr_start & ~(4096 - 1)) - 4096;", + "linker": "rust-lld", + "linker-flavor": "gnu-lld", + "llvm-target": "aarch64-unknown-none", + "max-atomic-width": 128, + "metadata": { + "description": null, + "host_tools": null, + "std": null, + "tier": null + }, + "pre-link-args": { + "gnu-lld": [ + "-z", + "max-page-size=4096" + ] + }, + "relocation-model": "static", + "stack-probes": { + "kind": "inline" + }, + "supported-sanitizers": [ + "kcfi", + "kernel-address" + ], + "target-pointer-width": "64" +} diff --git a/support/targets/aarch64-sel4-microkit.json b/support/targets/aarch64-sel4-microkit.json index e9dac07b0..6e6c6246e 100644 --- a/support/targets/aarch64-sel4-microkit.json +++ b/support/targets/aarch64-sel4-microkit.json @@ -1,7 +1,7 @@ { "arch": "aarch64", "crt-objects-fallback": "false", - "data-layout": "e-m:e-i8:8:32-i16:16:32-i64:64-i128:128-n32:64-S128-Fn32", + "data-layout": "e-m:e-p270:32:32-p271:32:32-p272:64:64-i8:8:32-i16:16:32-i64:64-i128:128-n32:64-S128-Fn32", "disable-redzone": true, "exe-suffix": ".elf", "features": "+v8a,+strict-align,+neon,+fp-armv8", @@ -17,6 +17,7 @@ "std": null, "tier": null }, + "panic-strategy": "abort", "pre-link-args": { "gnu-lld": [ "-z", diff --git a/support/targets/aarch64-sel4-minimal.json b/support/targets/aarch64-sel4-minimal.json index 3a7c1c98c..46fc21aa8 100644 --- a/support/targets/aarch64-sel4-minimal.json +++ b/support/targets/aarch64-sel4-minimal.json @@ -1,9 +1,8 @@ { "arch": "aarch64", "crt-objects-fallback": "false", - "data-layout": "e-m:e-i8:8:32-i16:16:32-i64:64-i128:128-n32:64-S128-Fn32", + "data-layout": "e-m:e-p270:32:32-p271:32:32-p272:64:64-i8:8:32-i16:16:32-i64:64-i128:128-n32:64-S128-Fn32", "disable-redzone": true, - "eh-frame-header": false, "exe-suffix": ".elf", "features": "+v8a,+strict-align,+neon,+fp-armv8", "linker": "rust-lld", diff --git a/support/targets/aarch64-sel4-musl.json b/support/targets/aarch64-sel4-musl.json index 4b4a0721d..c0d384190 100644 --- a/support/targets/aarch64-sel4-musl.json +++ b/support/targets/aarch64-sel4-musl.json @@ -3,7 +3,7 @@ "crt-objects-fallback": "false", "crt-static-default": true, "crt-static-respected": true, - "data-layout": "e-m:e-i8:8:32-i16:16:32-i64:64-i128:128-n32:64-S128-Fn32", + "data-layout": "e-m:e-p270:32:32-p271:32:32-p272:64:64-i8:8:32-i16:16:32-i64:64-i128:128-n32:64-S128-Fn32", "disable-redzone": true, "env": "musl", "exe-suffix": ".elf", @@ -20,6 +20,7 @@ "tier": null }, "os": "linux", + "panic-strategy": "abort", "pre-link-args": { "gnu-lld": [ "-z", diff --git a/support/targets/aarch64-sel4-unwind-musl.json b/support/targets/aarch64-sel4-unwind-musl.json new file mode 100644 index 000000000..738367774 --- /dev/null +++ b/support/targets/aarch64-sel4-unwind-musl.json @@ -0,0 +1,41 @@ +{ + "arch": "aarch64", + "crt-objects-fallback": "false", + "crt-static-default": true, + "crt-static-respected": true, + "data-layout": "e-m:e-p270:32:32-p271:32:32-p272:64:64-i8:8:32-i16:16:32-i64:64-i128:128-n32:64-S128-Fn32", + "disable-redzone": true, + "env": "musl", + "exe-suffix": ".elf", + "features": "+v8a,+strict-align,+neon,+fp-armv8", + "has-thread-local": true, + "linker": "rust-lld", + "linker-flavor": "gnu-lld", + "llvm-target": "aarch64-unknown-none", + "max-atomic-width": 128, + "metadata": { + "description": null, + "host_tools": null, + "std": null, + "tier": null + }, + "os": "linux", + "pre-link-args": { + "gnu-lld": [ + "-z", + "max-page-size=4096" + ] + }, + "relocation-model": "static", + "stack-probes": { + "kind": "inline" + }, + "supported-sanitizers": [ + "kcfi", + "kernel-address" + ], + "target-family": [ + "unix" + ], + "target-pointer-width": "64" +} diff --git a/support/targets/aarch64-sel4-unwind.json b/support/targets/aarch64-sel4-unwind.json new file mode 100644 index 000000000..90fa09198 --- /dev/null +++ b/support/targets/aarch64-sel4-unwind.json @@ -0,0 +1,34 @@ +{ + "arch": "aarch64", + "crt-objects-fallback": "false", + "data-layout": "e-m:e-p270:32:32-p271:32:32-p272:64:64-i8:8:32-i16:16:32-i64:64-i128:128-n32:64-S128-Fn32", + "disable-redzone": true, + "exe-suffix": ".elf", + "features": "+v8a,+strict-align,+neon,+fp-armv8", + "has-thread-local": true, + "linker": "rust-lld", + "linker-flavor": "gnu-lld", + "llvm-target": "aarch64-unknown-none", + "max-atomic-width": 128, + "metadata": { + "description": null, + "host_tools": null, + "std": null, + "tier": null + }, + "pre-link-args": { + "gnu-lld": [ + "-z", + "max-page-size=4096" + ] + }, + "relocation-model": "static", + "stack-probes": { + "kind": "inline" + }, + "supported-sanitizers": [ + "kcfi", + "kernel-address" + ], + "target-pointer-width": "64" +} diff --git a/support/targets/aarch64-sel4.json b/support/targets/aarch64-sel4.json index ca6108baa..ddb515049 100644 --- a/support/targets/aarch64-sel4.json +++ b/support/targets/aarch64-sel4.json @@ -1,7 +1,7 @@ { "arch": "aarch64", "crt-objects-fallback": "false", - "data-layout": "e-m:e-i8:8:32-i16:16:32-i64:64-i128:128-n32:64-S128-Fn32", + "data-layout": "e-m:e-p270:32:32-p271:32:32-p272:64:64-i8:8:32-i16:16:32-i64:64-i128:128-n32:64-S128-Fn32", "disable-redzone": true, "exe-suffix": ".elf", "features": "+v8a,+strict-align,+neon,+fp-armv8", @@ -16,6 +16,7 @@ "std": null, "tier": null }, + "panic-strategy": "abort", "pre-link-args": { "gnu-lld": [ "-z", diff --git a/support/targets/armv7a-sel4-minimal-unwind.json b/support/targets/armv7a-sel4-minimal-unwind.json new file mode 100644 index 000000000..c6e81ac38 --- /dev/null +++ b/support/targets/armv7a-sel4-minimal-unwind.json @@ -0,0 +1,24 @@ +{ + "abi": "eabi", + "arch": "arm", + "c-enum-min-bits": 8, + "crt-objects-fallback": "false", + "data-layout": "e-m:e-p:32:32-Fi8-i64:64-v128:64:128-a:0:32-n32-S64", + "disable-redzone": true, + "emit-debug-gdb-scripts": false, + "exe-suffix": ".elf", + "features": "+v7,+thumb2,+soft-float,-neon,+strict-align", + "linker": "rust-lld", + "linker-flavor": "gnu-lld", + "llvm-target": "armv7a-none-eabi", + "max-atomic-width": 64, + "metadata": { + "description": null, + "host_tools": null, + "std": null, + "tier": null + }, + "panic-strategy": "abort", + "relocation-model": "static", + "target-pointer-width": "32" +} diff --git a/support/targets/armv7a-sel4-minimal.json b/support/targets/armv7a-sel4-minimal.json index 6817fa5ff..c6e81ac38 100644 --- a/support/targets/armv7a-sel4-minimal.json +++ b/support/targets/armv7a-sel4-minimal.json @@ -5,7 +5,6 @@ "crt-objects-fallback": "false", "data-layout": "e-m:e-p:32:32-Fi8-i64:64-v128:64:128-a:0:32-n32-S64", "disable-redzone": true, - "eh-frame-header": false, "emit-debug-gdb-scripts": false, "exe-suffix": ".elf", "features": "+v7,+thumb2,+soft-float,-neon,+strict-align", diff --git a/support/targets/armv7a-sel4-unwind-musl.json b/support/targets/armv7a-sel4-unwind-musl.json new file mode 100644 index 000000000..0ae59d68e --- /dev/null +++ b/support/targets/armv7a-sel4-unwind-musl.json @@ -0,0 +1,32 @@ +{ + "abi": "eabi", + "arch": "arm", + "c-enum-min-bits": 8, + "crt-objects-fallback": "false", + "crt-static-default": true, + "crt-static-respected": true, + "data-layout": "e-m:e-p:32:32-Fi8-i64:64-v128:64:128-a:0:32-n32-S64", + "disable-redzone": true, + "emit-debug-gdb-scripts": false, + "env": "musl", + "exe-suffix": ".elf", + "features": "+v7,+thumb2,+soft-float,-neon,+strict-align", + "has-thread-local": true, + "linker": "rust-lld", + "linker-flavor": "gnu-lld", + "llvm-target": "armv7a-none-eabi", + "max-atomic-width": 64, + "metadata": { + "description": null, + "host_tools": null, + "std": null, + "tier": null + }, + "os": "linux", + "panic-strategy": "abort", + "relocation-model": "static", + "target-family": [ + "unix" + ], + "target-pointer-width": "32" +} diff --git a/support/targets/armv7a-sel4-unwind.json b/support/targets/armv7a-sel4-unwind.json new file mode 100644 index 000000000..ea10d3314 --- /dev/null +++ b/support/targets/armv7a-sel4-unwind.json @@ -0,0 +1,25 @@ +{ + "abi": "eabi", + "arch": "arm", + "c-enum-min-bits": 8, + "crt-objects-fallback": "false", + "data-layout": "e-m:e-p:32:32-Fi8-i64:64-v128:64:128-a:0:32-n32-S64", + "disable-redzone": true, + "emit-debug-gdb-scripts": false, + "exe-suffix": ".elf", + "features": "+v7,+thumb2,+soft-float,-neon,+strict-align", + "has-thread-local": true, + "linker": "rust-lld", + "linker-flavor": "gnu-lld", + "llvm-target": "armv7a-none-eabi", + "max-atomic-width": 64, + "metadata": { + "description": null, + "host_tools": null, + "std": null, + "tier": null + }, + "panic-strategy": "abort", + "relocation-model": "static", + "target-pointer-width": "32" +} diff --git a/support/targets/riscv32imac-sel4-minimal.json b/support/targets/riscv32imac-sel4-minimal.json index 854c2f632..e89754df5 100644 --- a/support/targets/riscv32imac-sel4-minimal.json +++ b/support/targets/riscv32imac-sel4-minimal.json @@ -3,12 +3,12 @@ "cpu": "generic-rv32", "crt-objects-fallback": "false", "data-layout": "e-m:e-p:32:32-i64:64-n32-S128", - "eh-frame-header": false, "emit-debug-gdb-scripts": false, "exe-suffix": ".elf", "features": "+m,+a,+c", "linker": "rust-lld", "linker-flavor": "gnu-lld", + "llvm-abiname": "ilp32", "llvm-target": "riscv32", "max-atomic-width": 32, "metadata": { diff --git a/support/targets/riscv32imac-sel4-musl.json b/support/targets/riscv32imac-sel4-musl.json index 023afb8ef..353d5048b 100644 --- a/support/targets/riscv32imac-sel4-musl.json +++ b/support/targets/riscv32imac-sel4-musl.json @@ -12,6 +12,7 @@ "has-thread-local": true, "linker": "rust-lld", "linker-flavor": "gnu-lld", + "llvm-abiname": "ilp32", "llvm-target": "riscv32", "max-atomic-width": 32, "metadata": { @@ -21,6 +22,7 @@ "tier": null }, "os": "linux", + "panic-strategy": "abort", "relocation-model": "static", "target-family": [ "unix" diff --git a/support/targets/riscv32imac-sel4-unwind-musl.json b/support/targets/riscv32imac-sel4-unwind-musl.json new file mode 100644 index 000000000..f3ed96943 --- /dev/null +++ b/support/targets/riscv32imac-sel4-unwind-musl.json @@ -0,0 +1,30 @@ +{ + "arch": "riscv32", + "cpu": "generic-rv32", + "crt-objects-fallback": "false", + "crt-static-default": true, + "crt-static-respected": true, + "data-layout": "e-m:e-p:32:32-i64:64-n32-S128", + "emit-debug-gdb-scripts": false, + "env": "musl", + "exe-suffix": ".elf", + "features": "+m,+a,+c", + "has-thread-local": true, + "linker": "rust-lld", + "linker-flavor": "gnu-lld", + "llvm-abiname": "ilp32", + "llvm-target": "riscv32", + "max-atomic-width": 32, + "metadata": { + "description": null, + "host_tools": null, + "std": null, + "tier": null + }, + "os": "linux", + "relocation-model": "static", + "target-family": [ + "unix" + ], + "target-pointer-width": "32" +} diff --git a/support/targets/riscv32imac-sel4-unwind.json b/support/targets/riscv32imac-sel4-unwind.json new file mode 100644 index 000000000..5c5230661 --- /dev/null +++ b/support/targets/riscv32imac-sel4-unwind.json @@ -0,0 +1,23 @@ +{ + "arch": "riscv32", + "cpu": "generic-rv32", + "crt-objects-fallback": "false", + "data-layout": "e-m:e-p:32:32-i64:64-n32-S128", + "emit-debug-gdb-scripts": false, + "exe-suffix": ".elf", + "features": "+m,+a,+c", + "has-thread-local": true, + "linker": "rust-lld", + "linker-flavor": "gnu-lld", + "llvm-abiname": "ilp32", + "llvm-target": "riscv32", + "max-atomic-width": 32, + "metadata": { + "description": null, + "host_tools": null, + "std": null, + "tier": null + }, + "relocation-model": "static", + "target-pointer-width": "32" +} diff --git a/support/targets/riscv32imac-sel4.json b/support/targets/riscv32imac-sel4.json index 89c559687..686027d40 100644 --- a/support/targets/riscv32imac-sel4.json +++ b/support/targets/riscv32imac-sel4.json @@ -9,6 +9,7 @@ "has-thread-local": true, "linker": "rust-lld", "linker-flavor": "gnu-lld", + "llvm-abiname": "ilp32", "llvm-target": "riscv32", "max-atomic-width": 32, "metadata": { @@ -17,6 +18,7 @@ "std": null, "tier": null }, + "panic-strategy": "abort", "relocation-model": "static", "target-pointer-width": "32" } diff --git a/support/targets/riscv32imafc-sel4-minimal.json b/support/targets/riscv32imafc-sel4-minimal.json index e802bc5f4..5324d8617 100644 --- a/support/targets/riscv32imafc-sel4-minimal.json +++ b/support/targets/riscv32imafc-sel4-minimal.json @@ -3,7 +3,6 @@ "cpu": "generic-rv32", "crt-objects-fallback": "false", "data-layout": "e-m:e-p:32:32-i64:64-n32-S128", - "eh-frame-header": false, "emit-debug-gdb-scripts": false, "exe-suffix": ".elf", "features": "+m,+a,+c,+f", diff --git a/support/targets/riscv32imafc-sel4-musl.json b/support/targets/riscv32imafc-sel4-musl.json index cc0244aa1..5af4c1ab4 100644 --- a/support/targets/riscv32imafc-sel4-musl.json +++ b/support/targets/riscv32imafc-sel4-musl.json @@ -22,6 +22,7 @@ "tier": null }, "os": "linux", + "panic-strategy": "abort", "relocation-model": "static", "target-family": [ "unix" diff --git a/support/targets/riscv32imafc-sel4-unwind-musl.json b/support/targets/riscv32imafc-sel4-unwind-musl.json new file mode 100644 index 000000000..cc0244aa1 --- /dev/null +++ b/support/targets/riscv32imafc-sel4-unwind-musl.json @@ -0,0 +1,30 @@ +{ + "arch": "riscv32", + "cpu": "generic-rv32", + "crt-objects-fallback": "false", + "crt-static-default": true, + "crt-static-respected": true, + "data-layout": "e-m:e-p:32:32-i64:64-n32-S128", + "emit-debug-gdb-scripts": false, + "env": "musl", + "exe-suffix": ".elf", + "features": "+m,+a,+c,+f", + "has-thread-local": true, + "linker": "rust-lld", + "linker-flavor": "gnu-lld", + "llvm-abiname": "ilp32f", + "llvm-target": "riscv32", + "max-atomic-width": 32, + "metadata": { + "description": null, + "host_tools": null, + "std": null, + "tier": null + }, + "os": "linux", + "relocation-model": "static", + "target-family": [ + "unix" + ], + "target-pointer-width": "32" +} diff --git a/support/targets/riscv32imafc-sel4-unwind.json b/support/targets/riscv32imafc-sel4-unwind.json new file mode 100644 index 000000000..d3b476bae --- /dev/null +++ b/support/targets/riscv32imafc-sel4-unwind.json @@ -0,0 +1,23 @@ +{ + "arch": "riscv32", + "cpu": "generic-rv32", + "crt-objects-fallback": "false", + "data-layout": "e-m:e-p:32:32-i64:64-n32-S128", + "emit-debug-gdb-scripts": false, + "exe-suffix": ".elf", + "features": "+m,+a,+c,+f", + "has-thread-local": true, + "linker": "rust-lld", + "linker-flavor": "gnu-lld", + "llvm-abiname": "ilp32f", + "llvm-target": "riscv32", + "max-atomic-width": 32, + "metadata": { + "description": null, + "host_tools": null, + "std": null, + "tier": null + }, + "relocation-model": "static", + "target-pointer-width": "32" +} diff --git a/support/targets/riscv32imafc-sel4.json b/support/targets/riscv32imafc-sel4.json index d3b476bae..1d5ef4d0b 100644 --- a/support/targets/riscv32imafc-sel4.json +++ b/support/targets/riscv32imafc-sel4.json @@ -18,6 +18,7 @@ "std": null, "tier": null }, + "panic-strategy": "abort", "relocation-model": "static", "target-pointer-width": "32" } diff --git a/support/targets/riscv64gc-sel4-microkit-minimal.json b/support/targets/riscv64gc-sel4-microkit-minimal.json index 1f6966f02..0e0e9ddeb 100644 --- a/support/targets/riscv64gc-sel4-microkit-minimal.json +++ b/support/targets/riscv64gc-sel4-microkit-minimal.json @@ -4,7 +4,6 @@ "cpu": "generic-rv64", "crt-objects-fallback": "false", "data-layout": "e-m:e-p:64:64-i64:64-i128:128-n32:64-S128", - "eh-frame-header": false, "emit-debug-gdb-scripts": false, "exe-suffix": ".elf", "features": "+m,+a,+f,+d,+c", diff --git a/support/targets/riscv64gc-sel4-microkit-resettable-minimal.json b/support/targets/riscv64gc-sel4-microkit-resettable-minimal.json index 37ec54429..43ffc2473 100644 --- a/support/targets/riscv64gc-sel4-microkit-resettable-minimal.json +++ b/support/targets/riscv64gc-sel4-microkit-resettable-minimal.json @@ -4,7 +4,6 @@ "cpu": "generic-rv64", "crt-objects-fallback": "false", "data-layout": "e-m:e-p:64:64-i64:64-i128:128-n32:64-S128", - "eh-frame-header": false, "emit-debug-gdb-scripts": false, "exe-suffix": ".elf", "features": "+m,+a,+f,+d,+c", diff --git a/support/targets/riscv64gc-sel4-microkit-resettable-unwind.json b/support/targets/riscv64gc-sel4-microkit-resettable-unwind.json new file mode 100644 index 000000000..c195be2ac --- /dev/null +++ b/support/targets/riscv64gc-sel4-microkit-resettable-unwind.json @@ -0,0 +1,29 @@ +{ + "arch": "riscv64", + "code-model": "medium", + "cpu": "generic-rv64", + "crt-objects-fallback": "false", + "data-layout": "e-m:e-p:64:64-i64:64-i128:128-n32:64-S128", + "emit-debug-gdb-scripts": false, + "exe-suffix": ".elf", + "features": "+m,+a,+f,+d,+c", + "has-thread-local": true, + "link-script": "SECTIONS {\n .persistent : {\n *(.persistent .persistent.*)\n }\n} INSERT BEFORE .data;\n\nASSERT(DEFINED(_reset), \"_reset is not defined\")\n\nENTRY(_reset)\n__sel4_ipc_buffer_obj = (__ehdr_start & ~(4096 - 1)) - 4096;", + "linker": "rust-lld", + "linker-flavor": "gnu-lld", + "llvm-abiname": "lp64d", + "llvm-target": "riscv64", + "max-atomic-width": 64, + "metadata": { + "description": null, + "host_tools": null, + "std": null, + "tier": null + }, + "relocation-model": "static", + "supported-sanitizers": [ + "shadow-call-stack", + "kernel-address" + ], + "target-pointer-width": "64" +} diff --git a/support/targets/riscv64gc-sel4-microkit-resettable.json b/support/targets/riscv64gc-sel4-microkit-resettable.json index c195be2ac..557fd1372 100644 --- a/support/targets/riscv64gc-sel4-microkit-resettable.json +++ b/support/targets/riscv64gc-sel4-microkit-resettable.json @@ -20,6 +20,7 @@ "std": null, "tier": null }, + "panic-strategy": "abort", "relocation-model": "static", "supported-sanitizers": [ "shadow-call-stack", diff --git a/support/targets/riscv64gc-sel4-microkit-unwind.json b/support/targets/riscv64gc-sel4-microkit-unwind.json new file mode 100644 index 000000000..14ce2b578 --- /dev/null +++ b/support/targets/riscv64gc-sel4-microkit-unwind.json @@ -0,0 +1,29 @@ +{ + "arch": "riscv64", + "code-model": "medium", + "cpu": "generic-rv64", + "crt-objects-fallback": "false", + "data-layout": "e-m:e-p:64:64-i64:64-i128:128-n32:64-S128", + "emit-debug-gdb-scripts": false, + "exe-suffix": ".elf", + "features": "+m,+a,+f,+d,+c", + "has-thread-local": true, + "link-script": "__sel4_ipc_buffer_obj = (__ehdr_start & ~(4096 - 1)) - 4096;", + "linker": "rust-lld", + "linker-flavor": "gnu-lld", + "llvm-abiname": "lp64d", + "llvm-target": "riscv64", + "max-atomic-width": 64, + "metadata": { + "description": null, + "host_tools": null, + "std": null, + "tier": null + }, + "relocation-model": "static", + "supported-sanitizers": [ + "shadow-call-stack", + "kernel-address" + ], + "target-pointer-width": "64" +} diff --git a/support/targets/riscv64gc-sel4-microkit.json b/support/targets/riscv64gc-sel4-microkit.json index 14ce2b578..aba45ed0a 100644 --- a/support/targets/riscv64gc-sel4-microkit.json +++ b/support/targets/riscv64gc-sel4-microkit.json @@ -20,6 +20,7 @@ "std": null, "tier": null }, + "panic-strategy": "abort", "relocation-model": "static", "supported-sanitizers": [ "shadow-call-stack", diff --git a/support/targets/riscv64gc-sel4-minimal.json b/support/targets/riscv64gc-sel4-minimal.json index e798c2831..0c7cefaf3 100644 --- a/support/targets/riscv64gc-sel4-minimal.json +++ b/support/targets/riscv64gc-sel4-minimal.json @@ -4,7 +4,6 @@ "cpu": "generic-rv64", "crt-objects-fallback": "false", "data-layout": "e-m:e-p:64:64-i64:64-i128:128-n32:64-S128", - "eh-frame-header": false, "emit-debug-gdb-scripts": false, "exe-suffix": ".elf", "features": "+m,+a,+f,+d,+c", diff --git a/support/targets/riscv64gc-sel4-musl.json b/support/targets/riscv64gc-sel4-musl.json index 78e533feb..fbb3ad62f 100644 --- a/support/targets/riscv64gc-sel4-musl.json +++ b/support/targets/riscv64gc-sel4-musl.json @@ -23,6 +23,7 @@ "tier": null }, "os": "linux", + "panic-strategy": "abort", "relocation-model": "static", "supported-sanitizers": [ "shadow-call-stack", diff --git a/support/targets/riscv64gc-sel4-unwind-musl.json b/support/targets/riscv64gc-sel4-unwind-musl.json new file mode 100644 index 000000000..78e533feb --- /dev/null +++ b/support/targets/riscv64gc-sel4-unwind-musl.json @@ -0,0 +1,35 @@ +{ + "arch": "riscv64", + "code-model": "medium", + "cpu": "generic-rv64", + "crt-objects-fallback": "false", + "crt-static-default": true, + "crt-static-respected": true, + "data-layout": "e-m:e-p:64:64-i64:64-i128:128-n32:64-S128", + "emit-debug-gdb-scripts": false, + "env": "musl", + "exe-suffix": ".elf", + "features": "+m,+a,+f,+d,+c", + "has-thread-local": true, + "linker": "rust-lld", + "linker-flavor": "gnu-lld", + "llvm-abiname": "lp64d", + "llvm-target": "riscv64", + "max-atomic-width": 64, + "metadata": { + "description": null, + "host_tools": null, + "std": null, + "tier": null + }, + "os": "linux", + "relocation-model": "static", + "supported-sanitizers": [ + "shadow-call-stack", + "kernel-address" + ], + "target-family": [ + "unix" + ], + "target-pointer-width": "64" +} diff --git a/support/targets/riscv64gc-sel4-unwind.json b/support/targets/riscv64gc-sel4-unwind.json new file mode 100644 index 000000000..75c62c903 --- /dev/null +++ b/support/targets/riscv64gc-sel4-unwind.json @@ -0,0 +1,28 @@ +{ + "arch": "riscv64", + "code-model": "medium", + "cpu": "generic-rv64", + "crt-objects-fallback": "false", + "data-layout": "e-m:e-p:64:64-i64:64-i128:128-n32:64-S128", + "emit-debug-gdb-scripts": false, + "exe-suffix": ".elf", + "features": "+m,+a,+f,+d,+c", + "has-thread-local": true, + "linker": "rust-lld", + "linker-flavor": "gnu-lld", + "llvm-abiname": "lp64d", + "llvm-target": "riscv64", + "max-atomic-width": 64, + "metadata": { + "description": null, + "host_tools": null, + "std": null, + "tier": null + }, + "relocation-model": "static", + "supported-sanitizers": [ + "shadow-call-stack", + "kernel-address" + ], + "target-pointer-width": "64" +} diff --git a/support/targets/riscv64gc-sel4.json b/support/targets/riscv64gc-sel4.json index 75c62c903..035af2531 100644 --- a/support/targets/riscv64gc-sel4.json +++ b/support/targets/riscv64gc-sel4.json @@ -19,6 +19,7 @@ "std": null, "tier": null }, + "panic-strategy": "abort", "relocation-model": "static", "supported-sanitizers": [ "shadow-call-stack", diff --git a/support/targets/riscv64imac-sel4-microkit-minimal.json b/support/targets/riscv64imac-sel4-microkit-minimal.json index 12a11448d..e3b061b38 100644 --- a/support/targets/riscv64imac-sel4-microkit-minimal.json +++ b/support/targets/riscv64imac-sel4-microkit-minimal.json @@ -4,13 +4,13 @@ "cpu": "generic-rv64", "crt-objects-fallback": "false", "data-layout": "e-m:e-p:64:64-i64:64-i128:128-n32:64-S128", - "eh-frame-header": false, "emit-debug-gdb-scripts": false, "exe-suffix": ".elf", "features": "+m,+a,+c", "link-script": "__sel4_ipc_buffer_obj = (__ehdr_start & ~(4096 - 1)) - 4096;", "linker": "rust-lld", "linker-flavor": "gnu-lld", + "llvm-abiname": "lp64", "llvm-target": "riscv64", "max-atomic-width": 64, "metadata": { diff --git a/support/targets/riscv64imac-sel4-microkit-resettable-minimal.json b/support/targets/riscv64imac-sel4-microkit-resettable-minimal.json index 09494cbc7..9e2e00e08 100644 --- a/support/targets/riscv64imac-sel4-microkit-resettable-minimal.json +++ b/support/targets/riscv64imac-sel4-microkit-resettable-minimal.json @@ -4,13 +4,13 @@ "cpu": "generic-rv64", "crt-objects-fallback": "false", "data-layout": "e-m:e-p:64:64-i64:64-i128:128-n32:64-S128", - "eh-frame-header": false, "emit-debug-gdb-scripts": false, "exe-suffix": ".elf", "features": "+m,+a,+c", "link-script": "SECTIONS {\n .persistent : {\n *(.persistent .persistent.*)\n }\n} INSERT BEFORE .data;\n\nASSERT(DEFINED(_reset), \"_reset is not defined\")\n\nENTRY(_reset)\n__sel4_ipc_buffer_obj = (__ehdr_start & ~(4096 - 1)) - 4096;", "linker": "rust-lld", "linker-flavor": "gnu-lld", + "llvm-abiname": "lp64", "llvm-target": "riscv64", "max-atomic-width": 64, "metadata": { diff --git a/support/targets/riscv64imac-sel4-microkit-resettable-unwind.json b/support/targets/riscv64imac-sel4-microkit-resettable-unwind.json new file mode 100644 index 000000000..74a85aaee --- /dev/null +++ b/support/targets/riscv64imac-sel4-microkit-resettable-unwind.json @@ -0,0 +1,29 @@ +{ + "arch": "riscv64", + "code-model": "medium", + "cpu": "generic-rv64", + "crt-objects-fallback": "false", + "data-layout": "e-m:e-p:64:64-i64:64-i128:128-n32:64-S128", + "emit-debug-gdb-scripts": false, + "exe-suffix": ".elf", + "features": "+m,+a,+c", + "has-thread-local": true, + "link-script": "SECTIONS {\n .persistent : {\n *(.persistent .persistent.*)\n }\n} INSERT BEFORE .data;\n\nASSERT(DEFINED(_reset), \"_reset is not defined\")\n\nENTRY(_reset)\n__sel4_ipc_buffer_obj = (__ehdr_start & ~(4096 - 1)) - 4096;", + "linker": "rust-lld", + "linker-flavor": "gnu-lld", + "llvm-abiname": "lp64", + "llvm-target": "riscv64", + "max-atomic-width": 64, + "metadata": { + "description": null, + "host_tools": null, + "std": null, + "tier": null + }, + "relocation-model": "static", + "supported-sanitizers": [ + "shadow-call-stack", + "kernel-address" + ], + "target-pointer-width": "64" +} diff --git a/support/targets/riscv64imac-sel4-microkit-resettable.json b/support/targets/riscv64imac-sel4-microkit-resettable.json index ac1acfc8c..29655939c 100644 --- a/support/targets/riscv64imac-sel4-microkit-resettable.json +++ b/support/targets/riscv64imac-sel4-microkit-resettable.json @@ -11,6 +11,7 @@ "link-script": "SECTIONS {\n .persistent : {\n *(.persistent .persistent.*)\n }\n} INSERT BEFORE .data;\n\nASSERT(DEFINED(_reset), \"_reset is not defined\")\n\nENTRY(_reset)\n__sel4_ipc_buffer_obj = (__ehdr_start & ~(4096 - 1)) - 4096;", "linker": "rust-lld", "linker-flavor": "gnu-lld", + "llvm-abiname": "lp64", "llvm-target": "riscv64", "max-atomic-width": 64, "metadata": { @@ -19,6 +20,7 @@ "std": null, "tier": null }, + "panic-strategy": "abort", "relocation-model": "static", "supported-sanitizers": [ "shadow-call-stack", diff --git a/support/targets/riscv64imac-sel4-microkit-unwind.json b/support/targets/riscv64imac-sel4-microkit-unwind.json new file mode 100644 index 000000000..010795fca --- /dev/null +++ b/support/targets/riscv64imac-sel4-microkit-unwind.json @@ -0,0 +1,29 @@ +{ + "arch": "riscv64", + "code-model": "medium", + "cpu": "generic-rv64", + "crt-objects-fallback": "false", + "data-layout": "e-m:e-p:64:64-i64:64-i128:128-n32:64-S128", + "emit-debug-gdb-scripts": false, + "exe-suffix": ".elf", + "features": "+m,+a,+c", + "has-thread-local": true, + "link-script": "__sel4_ipc_buffer_obj = (__ehdr_start & ~(4096 - 1)) - 4096;", + "linker": "rust-lld", + "linker-flavor": "gnu-lld", + "llvm-abiname": "lp64", + "llvm-target": "riscv64", + "max-atomic-width": 64, + "metadata": { + "description": null, + "host_tools": null, + "std": null, + "tier": null + }, + "relocation-model": "static", + "supported-sanitizers": [ + "shadow-call-stack", + "kernel-address" + ], + "target-pointer-width": "64" +} diff --git a/support/targets/riscv64imac-sel4-microkit.json b/support/targets/riscv64imac-sel4-microkit.json index 44f101412..66461c4a2 100644 --- a/support/targets/riscv64imac-sel4-microkit.json +++ b/support/targets/riscv64imac-sel4-microkit.json @@ -11,6 +11,7 @@ "link-script": "__sel4_ipc_buffer_obj = (__ehdr_start & ~(4096 - 1)) - 4096;", "linker": "rust-lld", "linker-flavor": "gnu-lld", + "llvm-abiname": "lp64", "llvm-target": "riscv64", "max-atomic-width": 64, "metadata": { @@ -19,6 +20,7 @@ "std": null, "tier": null }, + "panic-strategy": "abort", "relocation-model": "static", "supported-sanitizers": [ "shadow-call-stack", diff --git a/support/targets/riscv64imac-sel4-minimal.json b/support/targets/riscv64imac-sel4-minimal.json index 5b2f11d62..8697c8c59 100644 --- a/support/targets/riscv64imac-sel4-minimal.json +++ b/support/targets/riscv64imac-sel4-minimal.json @@ -4,12 +4,12 @@ "cpu": "generic-rv64", "crt-objects-fallback": "false", "data-layout": "e-m:e-p:64:64-i64:64-i128:128-n32:64-S128", - "eh-frame-header": false, "emit-debug-gdb-scripts": false, "exe-suffix": ".elf", "features": "+m,+a,+c", "linker": "rust-lld", "linker-flavor": "gnu-lld", + "llvm-abiname": "lp64", "llvm-target": "riscv64", "max-atomic-width": 64, "metadata": { diff --git a/support/targets/riscv64imac-sel4-musl.json b/support/targets/riscv64imac-sel4-musl.json index ebff77943..3d306a365 100644 --- a/support/targets/riscv64imac-sel4-musl.json +++ b/support/targets/riscv64imac-sel4-musl.json @@ -13,6 +13,7 @@ "has-thread-local": true, "linker": "rust-lld", "linker-flavor": "gnu-lld", + "llvm-abiname": "lp64", "llvm-target": "riscv64", "max-atomic-width": 64, "metadata": { @@ -22,6 +23,7 @@ "tier": null }, "os": "linux", + "panic-strategy": "abort", "relocation-model": "static", "supported-sanitizers": [ "shadow-call-stack", diff --git a/support/targets/riscv64imac-sel4-unwind-musl.json b/support/targets/riscv64imac-sel4-unwind-musl.json new file mode 100644 index 000000000..71c6f7cad --- /dev/null +++ b/support/targets/riscv64imac-sel4-unwind-musl.json @@ -0,0 +1,35 @@ +{ + "arch": "riscv64", + "code-model": "medium", + "cpu": "generic-rv64", + "crt-objects-fallback": "false", + "crt-static-default": true, + "crt-static-respected": true, + "data-layout": "e-m:e-p:64:64-i64:64-i128:128-n32:64-S128", + "emit-debug-gdb-scripts": false, + "env": "musl", + "exe-suffix": ".elf", + "features": "+m,+a,+c", + "has-thread-local": true, + "linker": "rust-lld", + "linker-flavor": "gnu-lld", + "llvm-abiname": "lp64", + "llvm-target": "riscv64", + "max-atomic-width": 64, + "metadata": { + "description": null, + "host_tools": null, + "std": null, + "tier": null + }, + "os": "linux", + "relocation-model": "static", + "supported-sanitizers": [ + "shadow-call-stack", + "kernel-address" + ], + "target-family": [ + "unix" + ], + "target-pointer-width": "64" +} diff --git a/support/targets/riscv64imac-sel4-unwind.json b/support/targets/riscv64imac-sel4-unwind.json new file mode 100644 index 000000000..f5cccf74d --- /dev/null +++ b/support/targets/riscv64imac-sel4-unwind.json @@ -0,0 +1,28 @@ +{ + "arch": "riscv64", + "code-model": "medium", + "cpu": "generic-rv64", + "crt-objects-fallback": "false", + "data-layout": "e-m:e-p:64:64-i64:64-i128:128-n32:64-S128", + "emit-debug-gdb-scripts": false, + "exe-suffix": ".elf", + "features": "+m,+a,+c", + "has-thread-local": true, + "linker": "rust-lld", + "linker-flavor": "gnu-lld", + "llvm-abiname": "lp64", + "llvm-target": "riscv64", + "max-atomic-width": 64, + "metadata": { + "description": null, + "host_tools": null, + "std": null, + "tier": null + }, + "relocation-model": "static", + "supported-sanitizers": [ + "shadow-call-stack", + "kernel-address" + ], + "target-pointer-width": "64" +} diff --git a/support/targets/riscv64imac-sel4.json b/support/targets/riscv64imac-sel4.json index 6f7a5052b..b694fd625 100644 --- a/support/targets/riscv64imac-sel4.json +++ b/support/targets/riscv64imac-sel4.json @@ -10,6 +10,7 @@ "has-thread-local": true, "linker": "rust-lld", "linker-flavor": "gnu-lld", + "llvm-abiname": "lp64", "llvm-target": "riscv64", "max-atomic-width": 64, "metadata": { @@ -18,6 +19,7 @@ "std": null, "tier": null }, + "panic-strategy": "abort", "relocation-model": "static", "supported-sanitizers": [ "shadow-call-stack", diff --git a/support/targets/x86_64-sel4-minimal.json b/support/targets/x86_64-sel4-minimal.json index ac290d485..aa3d5904f 100644 --- a/support/targets/x86_64-sel4-minimal.json +++ b/support/targets/x86_64-sel4-minimal.json @@ -5,7 +5,6 @@ "crt-objects-fallback": "false", "data-layout": "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128", "disable-redzone": true, - "eh-frame-header": false, "exe-suffix": ".elf", "features": "-mmx,-sse,-sse2,-sse3,-ssse3,-sse4.1,-sse4.2,-avx,-avx2,+soft-float", "linker": "rust-lld", diff --git a/support/targets/x86_64-sel4-musl.json b/support/targets/x86_64-sel4-musl.json index 88b326407..c6bae3bd9 100644 --- a/support/targets/x86_64-sel4-musl.json +++ b/support/targets/x86_64-sel4-musl.json @@ -22,6 +22,7 @@ "tier": null }, "os": "linux", + "panic-strategy": "abort", "plt-by-default": false, "relro-level": "full", "stack-probes": { diff --git a/support/targets/x86_64-sel4-unwind-musl.json b/support/targets/x86_64-sel4-unwind-musl.json new file mode 100644 index 000000000..88b326407 --- /dev/null +++ b/support/targets/x86_64-sel4-unwind-musl.json @@ -0,0 +1,38 @@ +{ + "arch": "x86_64", + "code-model": "small", + "cpu": "x86-64", + "crt-objects-fallback": "false", + "crt-static-default": true, + "crt-static-respected": true, + "data-layout": "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128", + "disable-redzone": true, + "env": "musl", + "exe-suffix": ".elf", + "features": "-mmx,-sse,-sse2,-sse3,-ssse3,-sse4.1,-sse4.2,-avx,-avx2,+soft-float", + "has-thread-local": true, + "linker": "rust-lld", + "linker-flavor": "gnu-lld", + "llvm-target": "x86_64-unknown-none-elf", + "max-atomic-width": 64, + "metadata": { + "description": null, + "host_tools": null, + "std": null, + "tier": null + }, + "os": "linux", + "plt-by-default": false, + "relro-level": "full", + "stack-probes": { + "kind": "inline" + }, + "supported-sanitizers": [ + "kcfi", + "kernel-address" + ], + "target-family": [ + "unix" + ], + "target-pointer-width": "64" +} diff --git a/support/targets/x86_64-sel4-unwind.json b/support/targets/x86_64-sel4-unwind.json new file mode 100644 index 000000000..184095727 --- /dev/null +++ b/support/targets/x86_64-sel4-unwind.json @@ -0,0 +1,31 @@ +{ + "arch": "x86_64", + "code-model": "small", + "cpu": "x86-64", + "crt-objects-fallback": "false", + "data-layout": "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128", + "disable-redzone": true, + "exe-suffix": ".elf", + "features": "-mmx,-sse,-sse2,-sse3,-ssse3,-sse4.1,-sse4.2,-avx,-avx2,+soft-float", + "has-thread-local": true, + "linker": "rust-lld", + "linker-flavor": "gnu-lld", + "llvm-target": "x86_64-unknown-none-elf", + "max-atomic-width": 64, + "metadata": { + "description": null, + "host_tools": null, + "std": null, + "tier": null + }, + "plt-by-default": false, + "relro-level": "full", + "stack-probes": { + "kind": "inline" + }, + "supported-sanitizers": [ + "kcfi", + "kernel-address" + ], + "target-pointer-width": "64" +} diff --git a/support/targets/x86_64-sel4.json b/support/targets/x86_64-sel4.json index 184095727..34bae4f59 100644 --- a/support/targets/x86_64-sel4.json +++ b/support/targets/x86_64-sel4.json @@ -18,6 +18,7 @@ "std": null, "tier": null }, + "panic-strategy": "abort", "plt-by-default": false, "relro-level": "full", "stack-probes": {