From 3ac66b29e695b3ab98d2f71883dc9908363d8663 Mon Sep 17 00:00:00 2001 From: Rowan Hart Date: Wed, 13 Dec 2023 10:08:22 -0800 Subject: [PATCH 01/19] Fix doc links (#43) --- docs/src/documentation/README.md | 16 ++++++++-------- .../edk2-simics-platform-bios/harnessing.md | 7 ++++--- 2 files changed, 12 insertions(+), 11 deletions(-) diff --git a/docs/src/documentation/README.md b/docs/src/documentation/README.md index f43ce023..104aefd5 100644 --- a/docs/src/documentation/README.md +++ b/docs/src/documentation/README.md @@ -7,12 +7,12 @@ TSFFS are provided here. - [Crate Documentation](https://intel.github.io/tsffs/crates/) - [tsffs](https://intel.github.io/tsffs/crates/tsffs/) - [simics](https://intel.github.io/tsffs/crates/simics) - - [simics-macro](https://intel.github.io/tsffs/crates/simics-macro) - - [simics-codegen](https://intel.github.io/tsffs/crates/simics-codegen) - - [simics-api-sys](https://intel.github.io/tsffs/crates/simics-api-sys) - - [ispm-wrapper](https://intel.github.io/tsffs/crates/ispm-wrapper) - - [command-ext](https://intel.github.io/tsffs/crates/command-ext) - - [ffi-macro](https://intel.github.io/tsffs/crates/ffi-macro) + - [simics-macro](https://intel.github.io/tsffs/crates/simics_macro) + - [simics-codegen](https://intel.github.io/tsffs/crates/simics_codegen) + - [simics-api-sys](https://intel.github.io/tsffs/crates/simics_api_sys) + - [ispm-wrapper](https://intel.github.io/tsffs/crates/ispm_wrapper) + - [command-ext](https://intel.github.io/tsffs/crates/command_ext) + - [ffi-macro](https://intel.github.io/tsffs/crates/ffi_macro) - [getters](https://intel.github.io/tsffs/crates/getters) - - [raw-cstr](https://intel.github.io/tsffs/crates/raw-cstr) - - [version-tools](https://intel.github.io/tsffs/crates/version-tools) \ No newline at end of file + - [raw-cstr](https://intel.github.io/tsffs/crates/raw_cstr) + - [version-tools](https://intel.github.io/tsffs/crates/version_tools) \ No newline at end of file diff --git a/docs/src/tutorials/edk2-simics-platform-bios/harnessing.md b/docs/src/tutorials/edk2-simics-platform-bios/harnessing.md index 570fd82e..6eb4b40c 100644 --- a/docs/src/tutorials/edk2-simics-platform-bios/harnessing.md +++ b/docs/src/tutorials/edk2-simics-platform-bios/harnessing.md @@ -5,9 +5,10 @@ week concerning the boot logo parser in many vendors BIOS images called [LogoFAIL](https://binarly.io/posts/finding_logofail_the_dangers_of_image_parsing_during_system_boot/). In a [press release](https://min.news/en/tech/128c34878b2b582065c1e05379912294.html) the vulnerability finders noted that "Our fuzz testing and subsequent vulnerability triage -results clearly indicate that these image parsers were never tested by IBV or OEM". This -[may not be accurate](https://github.com/tianocore/edk2-staging/tree/HBFA/HBFA/UefiHostFuzzTestCasePkg/TestCase/MdeModulePkg/Library/BaseBmpSupportLib), -but even so let's change that for our tutorial platform and get it fuzzed! +results clearly indicate that these image parsers were never tested by IBV or OEM". +Unlike the findings, [some](https://github.com/tianocore/edk2-staging/tree/HBFA/HBFA/UefiHostFuzzTestCasePkg/TestCase/MdeModulePkg/Library/BaseBmpSupportLib), +have been fuzzed, but even so let's get our platform harnessed -- all we need to do is +add the vulnerability ourselves! ## Writing a Harness From 17fbafcb9c16e8f803446baf5aaeaa4f299b83a0 Mon Sep 17 00:00:00 2001 From: Rowan Hart Date: Wed, 13 Dec 2023 16:46:10 -0800 Subject: [PATCH 02/19] Switch to external command-ext library (#44) --- Cargo.toml | 3 - build.rs | 2 +- docs/src/documentation/README.md | 2 - .../tsffs/src/simics/ispm-wrapper/Cargo.toml | 2 +- modules/tsffs/src/util/command-ext/Cargo.toml | 17 --- modules/tsffs/src/util/command-ext/src/lib.rs | 106 ------------------ modules/tsffs/tests/Cargo.toml | 4 +- 7 files changed, 4 insertions(+), 132 deletions(-) delete mode 100644 modules/tsffs/src/util/command-ext/Cargo.toml delete mode 100644 modules/tsffs/src/util/command-ext/src/lib.rs diff --git a/Cargo.toml b/Cargo.toml index cb1d6aff..b7ff4384 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -33,7 +33,6 @@ members = [ "modules/tsffs/src/simics/simics-codegen", "modules/tsffs/src/simics/simics", - "modules/tsffs/src/util/command-ext", "modules/tsffs/src/util/ffi-macro", "modules/tsffs/src/util/raw-cstr", "modules/tsffs/src/util/version-tools", @@ -47,7 +46,6 @@ default-members = [ "modules/tsffs/src/simics/simics-codegen", "modules/tsffs/src/simics/simics", - "modules/tsffs/src/util/command-ext", "modules/tsffs/src/util/ffi-macro", "modules/tsffs/src/util/raw-cstr", "modules/tsffs/src/util/version-tools", @@ -61,7 +59,6 @@ simics-codegen = { path = "modules/tsffs/src/simics/simics-codegen" } simics = { path = "modules/tsffs/src/simics/simics" } ispm-wrapper = { path = "modules/tsffs/src/simics/ispm-wrapper" } -command-ext = { path = "modules/tsffs/src/util/command-ext" } ffi-macro = { path = "modules/tsffs/src/util/ffi-macro" } raw-cstr = { path = "modules/tsffs/src/util/raw-cstr" } version-tools = { path = "modules/tsffs/src/util/version-tools" } diff --git a/build.rs b/build.rs index edac314a..598ec320 100755 --- a/build.rs +++ b/build.rs @@ -11,7 +11,7 @@ //! ```cargo //! [dependencies] //! anyhow = "*" -//! command-ext = { path = "modules/tsffs/src/util/command-ext" } +//! command-ext = "*" //! typed-builder = "*" //! walkdir = "*" //! serde = { version = "*", features = ["derive"] } diff --git a/docs/src/documentation/README.md b/docs/src/documentation/README.md index 104aefd5..d0166933 100644 --- a/docs/src/documentation/README.md +++ b/docs/src/documentation/README.md @@ -11,8 +11,6 @@ TSFFS are provided here. - [simics-codegen](https://intel.github.io/tsffs/crates/simics_codegen) - [simics-api-sys](https://intel.github.io/tsffs/crates/simics_api_sys) - [ispm-wrapper](https://intel.github.io/tsffs/crates/ispm_wrapper) - - [command-ext](https://intel.github.io/tsffs/crates/command_ext) - [ffi-macro](https://intel.github.io/tsffs/crates/ffi_macro) - - [getters](https://intel.github.io/tsffs/crates/getters) - [raw-cstr](https://intel.github.io/tsffs/crates/raw_cstr) - [version-tools](https://intel.github.io/tsffs/crates/version_tools) \ No newline at end of file diff --git a/modules/tsffs/src/simics/ispm-wrapper/Cargo.toml b/modules/tsffs/src/simics/ispm-wrapper/Cargo.toml index 208d68d4..36f84ff1 100644 --- a/modules/tsffs/src/simics/ispm-wrapper/Cargo.toml +++ b/modules/tsffs/src/simics/ispm-wrapper/Cargo.toml @@ -16,7 +16,7 @@ version.workspace = true [dependencies] anyhow = { workspace = true } -command-ext = { workspace = true } +command-ext = "0.1.1" getters2 = "0.1.2" serde = { workspace = true, features = ["derive"] } serde_json = { workspace = true } diff --git a/modules/tsffs/src/util/command-ext/Cargo.toml b/modules/tsffs/src/util/command-ext/Cargo.toml deleted file mode 100644 index 55ccbd9d..00000000 --- a/modules/tsffs/src/util/command-ext/Cargo.toml +++ /dev/null @@ -1,17 +0,0 @@ -# Copyright (C) 2023 Intel Corporation -# SPDX-License-Identifier: Apache-2.0 - -[package] -name = "command-ext" -authors = ["Rowan Hart "] -description = "Extension traits for std::process::Command" -edition = "2021" -license = "Apache-2.0" -publish = false -repository = "https://github.com/intel/tsffs" -version = "0.1.0" - -# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html - -[dependencies] -thiserror = "1.0.48" diff --git a/modules/tsffs/src/util/command-ext/src/lib.rs b/modules/tsffs/src/util/command-ext/src/lib.rs deleted file mode 100644 index e0c6d4a3..00000000 --- a/modules/tsffs/src/util/command-ext/src/lib.rs +++ /dev/null @@ -1,106 +0,0 @@ -// Copyright (C) 2023 Intel Corporation -// SPDX-License-Identifier: Apache-2.0 - -use std::{ - io::{self}, - process::{Command, Output}, -}; -use thiserror::Error; - -#[derive(Error, Debug)] -/// An error when checking the result of a command -pub enum CommandExtError { - #[error("Command failed to execute with code ({code}), stdout ({stdout}), stderr ({stderr})")] - Check { - code: i32, - stdout: String, - stderr: String, - }, - #[error("I/O error: {source}")] - Io { source: io::Error }, -} - -pub trait CommandExt: CommandExtCheck {} - -/// Extension trait for [`std::process::Command`] to check the output of a command -pub trait CommandExtCheck { - type Error; - - /// Check the result of a command, returning an error containing the output and - /// error stream content if the status is not success - fn check(&mut self) -> Result; -} - -impl CommandExtCheck for Command { - type Error = CommandExtError; - - /// Check the result of a command, returning an error containing the output and - /// error stream content if the status is not success - fn check(&mut self) -> Result { - self.output() - .map_err(|e| CommandExtError::Io { source: e }) - .and_then(|r| { - r.status - .success() - .then_some(r.clone()) - .ok_or_else(|| CommandExtError::Check { - code: r.status.code().unwrap_or(-1), - stdout: String::from_utf8_lossy(&r.stdout).to_string(), - stderr: String::from_utf8_lossy(&r.stderr).to_string(), - }) - }) - } -} - -#[cfg(test)] -mod test { - use std::process::Command; - - use crate::{CommandExtCheck, CommandExtError}; - - #[test] - #[cfg_attr(miri, ignore)] - /// Check that a successful command returns a success output - fn test_success() { - let output = Command::new("echo").arg("x").check(); - match output { - Ok(output) => assert_eq!( - String::from_utf8_lossy(&output.stdout), - "x\n", - "Output mismatch" - ), - Err(e) => panic!("Unexpected error from command: {}", e), - }; - } - - #[test] - #[cfg_attr(miri, ignore)] - /// Test that a command that doesn't exist returns a wrapped IO error - fn test_nocmd() { - let output = Command::new("asdfasdfasdfasdfjkljkljkl").check(); - - match output { - Ok(output) => panic!("Unexpected success from command: {:?}", output), - Err(e) => assert!(matches!(e, CommandExtError::Io { source: _ })), - } - } - - #[test] - #[cfg_attr(miri, ignore)] - /// Test that a command which fails by returning a nonzero status code returns a check error - fn test_failure() { - let output = Command::new("false").check(); - - match output { - Ok(output) => panic!("Unexpected success from command: {:?}", output), - Err(e) => assert!(matches!( - e, - CommandExtError::Check { - code: _, - stdout: _, - stderr: _ - } - )), - } - } -} diff --git a/modules/tsffs/tests/Cargo.toml b/modules/tsffs/tests/Cargo.toml index fe6f3fec..1fbcb272 100644 --- a/modules/tsffs/tests/Cargo.toml +++ b/modules/tsffs/tests/Cargo.toml @@ -17,7 +17,7 @@ version.workspace = true [dependencies] anyhow = { workspace = true } cargo_metadata = "0.18.1" -command-ext.workspace = true +command-ext = "0.1.1" getters2 = "0.1.2" indoc = "2.0.4" ispm-wrapper.workspace = true @@ -28,6 +28,6 @@ walkdir = "2.4.0" [build-dependencies] anyhow.workspace = true -command-ext.workspace = true +command-ext = "0.1.1" simics-codegen.workspace = true ispm-wrapper.workspace = true From 625080718981ec9af2d33aebef9790d486ed7f28 Mon Sep 17 00:00:00 2001 From: Rowan Hart Date: Fri, 15 Dec 2023 12:33:02 -0800 Subject: [PATCH 03/19] External command ext (#46) --- .github/workflows/ci.yml | 4 ++-- modules/tsffs/src/simics/simics-codegen/src/lib.rs | 2 +- modules/tsffs/src/util/version-tools/src/lib.rs | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index a3f8e7e4..8f4a6e1a 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -180,7 +180,7 @@ jobs: - name: Test Project run: | - TSFFS_TEST_CLEANUP_EACH=1 SIMICS_BASE=${HOME}/simics/simics-${{ env.PUBLIC_SIMICS_PACKAGE_VERSION_1000 }} cargo test -p command-ext -p raw-cstr -p version-tools -p tests -- --nocapture || ( echo "❗ Tests failed" && exit 1 ) + TSFFS_TEST_CLEANUP_EACH=1 SIMICS_BASE=${HOME}/simics/simics-${{ env.PUBLIC_SIMICS_PACKAGE_VERSION_1000 }} cargo test -p raw-cstr -p version-tools -p tests -- --nocapture || ( echo "❗ Tests failed" && exit 1 ) echo "✅ Tests passed" - name: Build Docs @@ -195,7 +195,7 @@ jobs: run: | SIMICS_BASE=${HOME}/simics/simics-${{ env.PUBLIC_SIMICS_PACKAGE_VERSION_1000 }} \ MIRIFLAGS="-Zmiri-backtrace=full -Zmiri-disable-isolation -Zmiri-panic-on-unsupported" \ - cargo miri test -p command-ext -p raw-cstr -p version-tools \ + cargo miri test -p raw-cstr -p version-tools \ || ( echo "❗ [CT39 (2/2)] Failed MIRI static analysis checks" && exit 1 ) echo "✅ [CT39 (2/2)] Passed MIRI static analysis checks" diff --git a/modules/tsffs/src/simics/simics-codegen/src/lib.rs b/modules/tsffs/src/simics/simics-codegen/src/lib.rs index 31cd9d8d..6b661909 100644 --- a/modules/tsffs/src/simics/simics-codegen/src/lib.rs +++ b/modules/tsffs/src/simics/simics-codegen/src/lib.rs @@ -804,7 +804,7 @@ where .err() .ok_or_else(|| anyhow::anyhow!("Expected failure, got success"))?; - if let command_ext::CommandExtError::Check { code: _, stdout, stderr: _ } = res { + if let command_ext::CommandExtError::Check { status: _, stdout, stderr: _ } = res { println!("stdout:\n{stdout}"); } } diff --git a/modules/tsffs/src/util/version-tools/src/lib.rs b/modules/tsffs/src/util/version-tools/src/lib.rs index b3cac350..a948a4e0 100644 --- a/modules/tsffs/src/util/version-tools/src/lib.rs +++ b/modules/tsffs/src/util/version-tools/src/lib.rs @@ -21,7 +21,7 @@ #![deny(clippy::unwrap_used)] #![forbid(unsafe_code)] -use anyhow::{anyhow, bail, Error, Result}; +use anyhow::{anyhow, bail, Result}; use serde::{de::Error as _, Deserialize, Deserializer}; use std::{fmt::Display, str::FromStr}; pub use versions::*; @@ -98,7 +98,7 @@ impl From<&str> for VersionConstraint { } impl FromStr for VersionConstraint { - type Err = Error; + type Err = anyhow::Error; /// Convert from a string like `==1.0.0` or `*` to a [`VersionConstraint`] /// From 18a8a9321197240334be0b4ed40d19790571c4c9 Mon Sep 17 00:00:00 2001 From: Rowan Hart Date: Mon, 8 Jan 2024 10:01:50 -0800 Subject: [PATCH 04/19] Use crates.io libafl and miscellaneous cleanups (#48) Signed-off-by: Tamas K Lengyel Co-authored-by: Tamas K Lengyel --- Cargo.toml | 6 ++--- .../tutorials/edk2-simics-platform/.gitignore | 2 ++ .../edk2-simics-platform/project/.gitignore | 3 +++ .../edk2-simics-platform/project/fuzz2.simics | 27 +++++++++++++++++++ modules/tsffs/src/tsffs/Cargo.toml | 2 +- 5 files changed, 36 insertions(+), 4 deletions(-) create mode 100644 examples/tutorials/edk2-simics-platform/.gitignore create mode 100644 examples/tutorials/edk2-simics-platform/project/.gitignore create mode 100644 examples/tutorials/edk2-simics-platform/project/fuzz2.simics diff --git a/Cargo.toml b/Cargo.toml index b7ff4384..22d967d3 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -64,9 +64,9 @@ raw-cstr = { path = "modules/tsffs/src/util/raw-cstr" } version-tools = { path = "modules/tsffs/src/util/version-tools" } anyhow = { version = "1.0.75" } -libafl = { git = "https://github.com/AFLplusplus/LibAFL" } -libafl_bolts = { git = "https://github.com/AFLplusplus/LibAFL" } -libafl_targets = { git = "https://github.com/AFLplusplus/LibAFL", default-features = false, features = [ +libafl = { version = "0.11.2" } +libafl_bolts = { version = "0.11.2" } +libafl_targets = { version = "0.11.2", default-features = false, features = [ "std", ] } serde = { version = "1.0.188", features = ["derive"] } diff --git a/examples/tutorials/edk2-simics-platform/.gitignore b/examples/tutorials/edk2-simics-platform/.gitignore new file mode 100644 index 00000000..c0bbc4c1 --- /dev/null +++ b/examples/tutorials/edk2-simics-platform/.gitignore @@ -0,0 +1,2 @@ +workspace +tsffs-gcc-x86_64.h \ No newline at end of file diff --git a/examples/tutorials/edk2-simics-platform/project/.gitignore b/examples/tutorials/edk2-simics-platform/project/.gitignore new file mode 100644 index 00000000..b8ed5a5e --- /dev/null +++ b/examples/tutorials/edk2-simics-platform/project/.gitignore @@ -0,0 +1,3 @@ +corpus +modules +solutions \ No newline at end of file diff --git a/examples/tutorials/edk2-simics-platform/project/fuzz2.simics b/examples/tutorials/edk2-simics-platform/project/fuzz2.simics new file mode 100644 index 00000000..2d169e2c --- /dev/null +++ b/examples/tutorials/edk2-simics-platform/project/fuzz2.simics @@ -0,0 +1,27 @@ +load-module tsffs +@tsffs = SIM_create_object(SIM_get_class("tsffs"), "tsffs", []) +tsffs.log-level 4 +@tsffs.iface.tsffs.set_start_on_harness(True) +@tsffs.iface.tsffs.set_stop_on_harness(True) +@tsffs.iface.tsffs.set_timeout(3.0) +@tsffs.iface.tsffs.add_exception_solution(13) +@tsffs.iface.tsffs.add_exception_solution(14) + +load-module uefi-fw-tracker + +load-target "qsp-x86/qsp-uefi-custom" namespace = qsp machine:hardware:firmware:bios = "%simics%/workspace/Build/SimicsOpenBoardPkg/BoardX58Ich10/DEBUG_GCC/FV/BOARDX58ICH10.fd" + +new-os-awareness name = qsp.software +qsp.software.insert-tracker tracker = uefi_fw_tracker_comp +qsp.software.tracker.detect-parameters -overwrite param-file = "%simics%/uefi.params" map-file = "%simics%/workspace/Build/SimicsOpenBoardPkg/BoardX58Ich10/DEBUG_GCC/SimicsX58.map" +qsp.software.tracker.load-parameters "%simics%/uefi.params" +qsp.software.enable-tracker +@tcf = SIM_get_debugger() +@debug_context = tcf.iface.debug_query.matching_contexts('"UEFI Firmware"/*')[1][0] +@simenv.debug_assert_address = next(filter(lambda s: s.get("symbol") == "DebugAssert", tcf.iface.debug_symbol.list_functions(debug_context)[1])).get("address") +$ctx = (new-context) +qsp.mb.cpu0.core[0][0].set-context $ctx +$debug_assert_bp = ($ctx.break -x $debug_assert_address) +@tsffs.iface.tsffs.add_breakpoint_solution(simenv.debug_assert_bp) + +run diff --git a/modules/tsffs/src/tsffs/Cargo.toml b/modules/tsffs/src/tsffs/Cargo.toml index 961e2833..f4c39501 100644 --- a/modules/tsffs/src/tsffs/Cargo.toml +++ b/modules/tsffs/src/tsffs/Cargo.toml @@ -32,7 +32,7 @@ yaxpeax-x86 = "1.2.0" typed-builder = "0.18.0" getters2 = "0.1.2" serde_json.workspace = true -goblin = "0.7.1" +goblin = "0.8.0" yaxpeax-riscv = { git = "https://github.com/novafacing/yaxpeax-riscv", version = "0.1.0", features = [ "serde", ], rev = "696eb047208e4d3c903654aa557a42071c466e71" } From f640c20a4c2b1635e45e857aac7223a69ef8938a Mon Sep 17 00:00:00 2001 From: Rowan Hart Date: Mon, 8 Jan 2024 13:18:49 -0800 Subject: [PATCH 05/19] Fix cargo script syntax for new nightly (Rust issue #122207) (#50) --- build.rs | 37 ++++++++++++++++++------------------- 1 file changed, 18 insertions(+), 19 deletions(-) diff --git a/build.rs b/build.rs index 598ec320..0bdae46d 100755 --- a/build.rs +++ b/build.rs @@ -1,23 +1,22 @@ #!/usr/bin/env -S cargo +nightly -Z script - -//! This script builds and packages the TSFFS package. It simply: -//! - Invokes make to build the module -//! - Invokes make again to ensure the interface is up to date -//! - Generates the packages.list file for the module and interface -//! - Calls the `create-package-specs` script -//! - Calls the `create-modcache` script -//! - Calls the `create-packages` script -//! -//! ```cargo -//! [dependencies] -//! anyhow = "*" -//! command-ext = "*" -//! typed-builder = "*" -//! walkdir = "*" -//! serde = { version = "*", features = ["derive"] } -//! serde_json = "*" -//! cargo_metadata = "*" -//! ``` +``` +[dependencies] +anyhow = "*" +command-ext = "*" +typed-builder = "*" +walkdir = "*" +serde = { version = "*", features = ["derive"] } +serde_json = "*" +cargo_metadata = "*" +``` + +// This script builds and packages the TSFFS package. It simply: +// - Invokes make to build the module +// - Invokes make again to ensure the interface is up to date +// - Generates the packages.list file for the module and interface +// - Calls the `create-package-specs` script +// - Calls the `create-modcache` script +// - Calls the `create-packages` script use anyhow::{anyhow, bail, Error, Result}; use cargo_metadata::MetadataCommand; From 45b5e7089de289ebadd9edcc27050a4c131fcc2e Mon Sep 17 00:00:00 2001 From: Rowan Hart Date: Tue, 9 Jan 2024 10:41:53 -0800 Subject: [PATCH 06/19] Cargo script fixes (2) (#51) --- .github/builder/Dockerfile | 2 +- .github/workflows/ci.yml | 23 +- build.rs | 18 +- .../simics-api-sys/scripts/update-bindings.rs | 763 ------------------ 4 files changed, 10 insertions(+), 796 deletions(-) delete mode 100755 modules/tsffs/src/simics/simics-api-sys/scripts/update-bindings.rs diff --git a/.github/builder/Dockerfile b/.github/builder/Dockerfile index 8f7b741d..751519bf 100644 --- a/.github/builder/Dockerfile +++ b/.github/builder/Dockerfile @@ -1,5 +1,5 @@ # hadolint global ignore=DL3033,SC3044 -FROM novafacing/fedora-rustc-oldcompat:0.0.2 +FROM novafacing/fedora-rustc-oldcompat:0.0.3 ENV PATH="${PATH}:/simics/ispm/" ENV PATH="${PATH}:/root/.cargo/bin/" diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 8f4a6e1a..b1b94ef3 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -290,7 +290,7 @@ jobs: uses: actions/cache@v3 with: path: .github/builder/rsrc - key: cache-builder-dependencies + key: "cache-builder-dependencies-${{ env.PUBLIC_SIMICS_ISPM_URL}}-${{env.PUBLIC_SIMICS_PKGS_URL }}" - name: Download Builder Dependencies if: ${{ steps.cache-builder-dependencies.outputs.cache-hit != 'true' }} @@ -360,24 +360,3 @@ jobs: fi fi cd ../../../../../ - - cd modules/tsffs/src/util/util/raw-cstr - - cargo fuzz build - - timeout --preserve-status 600 cargo fuzz run \ - fuzz_raw_cstr || exit 0 - - echo "Done fuzzing!" - - if [ -d ./fuzz/artifacts ]; then - if find ./fuzz/artifacts -mindepth 1 -maxdepth 1 2> /dev/null | read -r; then - echo "❗ [CT632] Fuzz test found an issue" - exit 1 - fi - fi - - cd ../../../../../ - - echo "✅ [CT632] Fuzz test completed" - exit 0 diff --git a/build.rs b/build.rs index 0bdae46d..7a46f155 100755 --- a/build.rs +++ b/build.rs @@ -1,14 +1,12 @@ #!/usr/bin/env -S cargo +nightly -Z script -``` -[dependencies] -anyhow = "*" -command-ext = "*" -typed-builder = "*" -walkdir = "*" -serde = { version = "*", features = ["derive"] } -serde_json = "*" -cargo_metadata = "*" -``` +## [dependencies] +## anyhow = "*" +## command-ext = "*" +## typed-builder = "*" +## walkdir = "*" +## serde = { version = "*", features = ["derive"] } +## serde_json = "*" +## cargo_metadata = "*" // This script builds and packages the TSFFS package. It simply: // - Invokes make to build the module diff --git a/modules/tsffs/src/simics/simics-api-sys/scripts/update-bindings.rs b/modules/tsffs/src/simics/simics-api-sys/scripts/update-bindings.rs deleted file mode 100755 index 2be3ee12..00000000 --- a/modules/tsffs/src/simics/simics-api-sys/scripts/update-bindings.rs +++ /dev/null @@ -1,763 +0,0 @@ -#!/usr/bin/env -S cargo +nightly -Zscript - -// Copyright (C) 2023 Intel Corporation -// SPDX-License-Identifier: Apache-2.0 - -//! ```cargo -//! [dependencies] -//! clap = { version = "*", features = ["derive"] } -//! anyhow = "*" -//! bindgen = "*" -//! bytes = "*" -//! flate2 = "*" -//! reqwest = { version = "*", features = ["blocking"] } -//! tar = "*" -//! toml_edit = "*" -//! versions = "*" -//! walkdir = "*" -//! ``` - -// Bindings build script for SIMICS sys API -// -// This script will download every version of the SIMICS 6 Base package and generate an API -// bindings file for each one. It will output the bindings to the `src/bindings` directory of -// this crate, where they will be included by feature flag with the `src/bindings/mod.rs` file. - -use anyhow::{anyhow, bail, ensure, Result}; -use bindgen::{ - callbacks::{MacroParsingBehavior, ParseCallbacks}, - Builder, FieldVisibilityKind, -}; -use bytes::{buf::Reader, Buf}; -use clap::Parser; -use flate2::bufread::GzDecoder; -use reqwest::blocking::get; -use std::{ - collections::{HashMap, HashSet}, - ffi::OsStr, - fs::{create_dir_all, read, read_dir, File, OpenOptions}, - io::{copy, BufRead, BufReader, Write}, - path::{Path, PathBuf}, - process::{Command, Stdio}, - thread::spawn, -}; -use tar::Archive; -use toml_edit::{value, Array, Document, Item, Table}; -use versions::Versioning; -use walkdir::WalkDir; - -/// Base path to where the SIMICS packages can be downloaded from -const SIMICS_BASE_PACKAGE_NUMBER: usize = 1000; - -/// Base package filename pattern -const SIMICS_BASE_PACKAGE_FILENAME_PATTERN: &str = r#"simics-pkg-1000-([0-9\.]+)-linux64.tar"#; - -#[derive(Parser)] -struct Args { - #[arg(short, long)] - /// List of base versions, defaults to everything if none are provided - base_versions: Vec, - #[arg(short, long)] - /// Directory to use to download and unpack packages - packages_dir: PathBuf, - #[arg(short = 'B', long)] - /// Directory to use to output bindings - bindings_dir: PathBuf, - #[arg(short, long)] - /// Cargo.toml file to update with required features - toml_file: PathBuf, - #[arg(short, long)] - /// ISPM tar.gz file - ispm_tarball_url: String, - #[arg(short, long)] - simics_package_repo_url: String, -} - -// https://github.com/rust-lang/rust-bindgen/issues/687#issuecomment-1312298570 -const IGNORE_MACROS: [&str; 20] = [ - "FE_DIVBYZERO", - "FE_DOWNWARD", - "FE_INEXACT", - "FE_INVALID", - "FE_OVERFLOW", - "FE_TONEAREST", - "FE_TOWARDZERO", - "FE_UNDERFLOW", - "FE_UPWARD", - "FP_INFINITE", - "FP_INT_DOWNWARD", - "FP_INT_TONEAREST", - "FP_INT_TONEARESTFROMZERO", - "FP_INT_TOWARDZERO", - "FP_INT_UPWARD", - "FP_NAN", - "FP_NORMAL", - "FP_SUBNORMAL", - "FP_ZERO", - "IPPORT_RESERVED", -]; - -fn download_file(url: S, path: P) -> Result<()> -where - S: AsRef, - P: AsRef, -{ - let response = get(url.as_ref())?; - - println!("{:?}", response); - let mut dest = if path.as_ref().is_dir() { - bail!("Can't download into directory. Provide a file path"); - } else { - ensure!( - path.as_ref() - .parent() - .ok_or_else(|| anyhow!("No parent of path"))? - .is_dir(), - "Parent of path must be directory" - ); - File::create(path.as_ref())? - }; - copy(&mut response.bytes()?.reader(), &mut dest)?; - Ok(()) -} - -#[derive(Debug)] -struct IgnoreMacros(HashSet); - -impl ParseCallbacks for IgnoreMacros { - fn will_parse_macro(&self, name: &str) -> MacroParsingBehavior { - if self.0.contains(name) { - MacroParsingBehavior::Ignore - } else { - MacroParsingBehavior::Default - } - } -} - -impl IgnoreMacros { - fn new() -> Self { - Self(IGNORE_MACROS.into_iter().map(|s| s.to_string()).collect()) - } -} - -fn generate_include_wrapper

(base_package_path: P) -> Result -where - P: AsRef, -{ - let simics_include_path = base_package_path.as_ref().join("src").join("include"); - let simics_include_path = simics_include_path.canonicalize()?; - - let mut include_paths = WalkDir::new(&simics_include_path) - .into_iter() - .filter_map(|p| p.ok()) - .filter_map(|p| { - let simics_include_path = &simics_include_path; - match p.path().extension() { - Some(e) => { - if e == "h" { - match p.path().canonicalize() { - Ok(p) => p.strip_prefix(simics_include_path).map_or_else( - |e| { - eprintln!( - "Failed to strip prefix {} from {}: {}", - simics_include_path.display(), - p.display(), - e - ); - None:: - }, - |p| Some(p.to_path_buf()), - ), - Err(e) => { - eprintln!( - "Failed to canonicalize path {}: {}", - p.path().display(), - e - ); - None - } - } - } else { - eprintln!("Ignoring path {}, no '.h' extension", p.path().display()); - None - } - } - None => { - eprintln!("Ignoring path {}, no extension", p.path().display()); - None - } - } - }) - .collect::>(); - - // We need to move python-header.h to the beginning of the list - if let Some(python_hdr_pos) = include_paths - .iter() - .position(|p| p.file_name() == Some(OsStr::new("python-header.h"))) - { - include_paths.swap(0, python_hdr_pos); - } - - let hdr_denylist = vec![ - // Most of these are denylisted because they include follower-time.h and it's :/ broken - "global.h", - "vtutils.h", - "libfollower.h", - "follower-time.h", - "follower.h", - "link-endpoint.h", - "data-structs.h", - // slave-time.h/slave.h is also broken (it is the old name for follower) - "slave-time.h", - "slave.h", - ]; - - hdr_denylist.iter().for_each(|le| { - if let Some(pos) = include_paths - .iter() - .position(|p| p.file_name() == Some(OsStr::new(le))) - { - include_paths.remove(pos); - } - }); - - let include_stmts = include_paths - .iter() - .map(|p| format!("#include <{}>", p.display())) - .collect::>(); - let wrapper = include_stmts.join("\n") + "\n"; - - Ok(wrapper) -} - -fn get_existing_versions(args: &Args) -> Result> { - let mut versions = args - .bindings_dir - .read_dir()? - .filter_map(|de| de.ok()) - .map(|de| de.path()) - .filter(|p| { - p.is_file() - && if let Some(ext) = p.extension() { - ext == "rs" - } else { - false - } - }) - .filter_map(|p| { - p.file_name() - .map(|fname| fname.to_string_lossy().to_string()) - }) - .filter(|fname| fname.starts_with("bindings-")) - .filter_map(|fname| { - let fname_parts = fname.split('-').collect::>(); - fname_parts - .get(1) - .map(|part| part.to_string().replace(".rs", "")) - }) - .filter_map(|v| Versioning::new(&v)) - .collect::>(); - - versions.sort(); - - Ok(versions.iter().map(|v| format!("{}", v)).collect()) -} - -fn generate_bindings(args: &Args) -> Result<()> { - if !args.bindings_dir.exists() { - create_dir_all(&args.bindings_dir)?; - } - - let existing_versions = get_existing_versions(args)?; - - let mut base_versions = if !args.base_versions.is_empty() { - args.base_versions - .clone() - .iter() - .filter(|s| !existing_versions.contains(&s)) - .cloned() - .collect::>() - } else { - bail!("No base versions provided"); - }; - - let include_wrappers = base_versions - .iter() - .map(|v| { - println!("Generating include wrapper for version {}", v); - let base_package_path = args.packages_dir.join(format!("simics-{}", v)); - ( - v, - ( - generate_include_wrapper(&base_package_path) - .expect("Couldn't generate wrapper"), - base_package_path, - ), - ) - }) - .collect::>(); - - for (base_version, (wrapper, base_path)) in include_wrappers { - let bindings_file = args - .bindings_dir - .join(format!("bindings-{}.rs", base_version)); - let simics_include_path = base_path.join("src").join("include"); - let simics_linux64_include_path = base_path.join("linux64").join("include"); - let mut python_include_versions = read_dir(&simics_linux64_include_path)? - .filter_map(|de| de.ok()) - .map(|de| de.path()) - .filter_map(|p| { - if p.is_dir() { - let dirname = p.components().last().unwrap(); - let name = dirname.as_os_str().to_string_lossy().to_string(); - if name.contains("python") { - Some(name) - } else { - None - } - } else { - None - } - }) - .filter_map(|p| Versioning::new(&p.replace("python", ""))) - .collect::>(); - - python_include_versions.sort(); - let simics_python_include_path = simics_linux64_include_path.join(format!( - "python{}", - python_include_versions - .last() - .ok_or_else(|| anyhow!("No python versions found"))? - )); - - println!("Generating bindings file {} with simics include path {} and simics python include path {}", bindings_file.display(), simics_include_path.display(), simics_python_include_path.display()); - - let header_path = args.packages_dir.join(format!("simics-{}.h", base_version)); - - let mut wrapper_file = OpenOptions::new() - .create(true) - .write(true) - .truncate(true) - .open(&header_path)?; - - wrapper_file.write_all(wrapper.as_bytes())?; - - let header = header_path.as_os_str().to_string_lossy().to_string(); - - let bindings = Builder::default() - .clang_arg(format!("-I{}", simics_include_path.display())) - .clang_arg(format!("-I{}", simics_python_include_path.display())) - .clang_arg("-fretain-comments-from-system-headers") - .clang_arg("-fparse-all-comments") - // We don't care at all what warnings simics has if they aren't errors :) - .clang_arg("-Wno-everything") - .default_visibility(FieldVisibilityKind::Public) - .derive_default(true) - .derive_hash(true) - .derive_partialord(true) - .derive_ord(true) - .derive_eq(true) - .derive_partialeq(true) - .generate_comments(true) - .header(header) - // NOTE: These callbacks are required to emit `cargo:rerun-if-changed` - // statements, so we do not need to use them in this script. If you want to - // repurpose this script to use in a `build.rs`, you should re-enable this - // line: - // .parse_callbacks(Box::new(CargoCallbacks)) - .parse_callbacks(Box::new(IgnoreMacros::new())) - // These functions and types use (i|u)128 which isn't FFI-safe, we block them because the warnings - // are not important and annoying to parse through - .blocklist_function("qecvt") - .blocklist_function("qfcvt") - .blocklist_function("qgcvt") - .blocklist_function("qecvt_r") - .blocklist_function("qfcvt_r") - .blocklist_function("qgcvt_r") - .blocklist_function("strtold") - .blocklist_function("__acoshl") - .blocklist_function("acoshl") - .blocklist_function("__acosl") - .blocklist_function("acosl") - .blocklist_function("__asinhl") - .blocklist_function("asinhl") - .blocklist_function("__asinl") - .blocklist_function("asinl") - .blocklist_function("__atan2l") - .blocklist_function("atan2l") - .blocklist_function("__atanhl") - .blocklist_function("atanhl") - .blocklist_function("__atanl") - .blocklist_function("atanl") - .blocklist_function("__cbrtl") - .blocklist_function("cbrtl") - .blocklist_function("__ceill") - .blocklist_function("ceill") - .blocklist_function("__copysignl") - .blocklist_function("copysignl") - .blocklist_function("__coshl") - .blocklist_function("coshl") - .blocklist_function("__cosl") - .blocklist_function("cosl") - .blocklist_function("__dreml") - .blocklist_function("dreml") - .blocklist_function("__erfcl") - .blocklist_function("erfcl") - .blocklist_function("__erfl") - .blocklist_function("erfl") - .blocklist_function("__exp2l") - .blocklist_function("exp2l") - .blocklist_function("__expl") - .blocklist_function("expl") - .blocklist_function("__expm1l") - .blocklist_function("expm1l") - .blocklist_function("__fabsl") - .blocklist_function("fabsl") - .blocklist_function("__fdiml") - .blocklist_function("fdiml") - .blocklist_function("__finitel") - .blocklist_function("finitel") - .blocklist_function("__floorl") - .blocklist_function("floorl") - .blocklist_function("__fmal") - .blocklist_function("fmal") - .blocklist_function("__fmaxl") - .blocklist_function("fmaxl") - .blocklist_function("__fminl") - .blocklist_function("fminl") - .blocklist_function("__fmodl") - .blocklist_function("fmodl") - .blocklist_function("__fpclassifyl") - .blocklist_function("__frexpl") - .blocklist_function("frexpl") - .blocklist_function("__gammal") - .blocklist_function("gammal") - .blocklist_function("__hypotl") - .blocklist_function("hypotl") - .blocklist_function("__ilogbl") - .blocklist_function("ilogbl") - .blocklist_function("__iseqsigl") - .blocklist_function("__isinfl") - .blocklist_function("isinfl") - .blocklist_function("__isnanl") - .blocklist_function("isnanl") - .blocklist_function("__issignalingl") - .blocklist_function("__j0l") - .blocklist_function("j0l") - .blocklist_function("__j1l") - .blocklist_function("j1l") - .blocklist_function("__jnl") - .blocklist_function("jnl") - .blocklist_function("__ldexpl") - .blocklist_function("ldexpl") - .blocklist_function("__lgammal") - .blocklist_function("lgammal") - .blocklist_function("__lgammal_r") - .blocklist_function("lgammal_r") - .blocklist_function("__llrintl") - .blocklist_function("llrintl") - .blocklist_function("__llroundl") - .blocklist_function("llroundl") - .blocklist_function("__log10l") - .blocklist_function("log10l") - .blocklist_function("__log1pl") - .blocklist_function("log1pl") - .blocklist_function("__log2l") - .blocklist_function("log2l") - .blocklist_function("__logbl") - .blocklist_function("logbl") - .blocklist_function("__logl") - .blocklist_function("logl") - .blocklist_function("__lrintl") - .blocklist_function("lrintl") - .blocklist_function("__lroundl") - .blocklist_function("lroundl") - .blocklist_function("__modfl") - .blocklist_function("modfl") - .blocklist_function("__nanl") - .blocklist_function("nanl") - .blocklist_function("__nearbyintl") - .blocklist_function("nearbyintl") - .blocklist_function("__nextafterl") - .blocklist_function("nextafterl") - .blocklist_function("__nexttoward") - .blocklist_function("nexttoward") - .blocklist_function("__nexttowardf") - .blocklist_function("nexttowardf") - .blocklist_function("__nexttowardl") - .blocklist_function("nexttowardl") - .blocklist_function("__powl") - .blocklist_function("powl") - .blocklist_function("__remainderl") - .blocklist_function("remainderl") - .blocklist_function("__remquol") - .blocklist_function("remquol") - .blocklist_function("__rintl") - .blocklist_function("rintl") - .blocklist_function("__roundl") - .blocklist_function("roundl") - .blocklist_function("__scalbl") - .blocklist_function("scalbl") - .blocklist_function("__scalblnl") - .blocklist_function("scalblnl") - .blocklist_function("__scalbnl") - .blocklist_function("scalbnl") - .blocklist_function("__signbitl") - .blocklist_function("__significandl") - .blocklist_function("significandl") - .blocklist_function("__sinhl") - .blocklist_function("sinhl") - .blocklist_function("__sinl") - .blocklist_function("sinl") - .blocklist_function("__sqrtl") - .blocklist_function("sqrtl") - .blocklist_function("__tanhl") - .blocklist_function("tanhl") - .blocklist_function("__tanl") - .blocklist_function("tanl") - .blocklist_function("__tgammal") - .blocklist_function("tgammal") - .blocklist_function("__truncl") - .blocklist_function("truncl") - .blocklist_function("wcstold") - .blocklist_function("__y0l") - .blocklist_function("y0l") - .blocklist_function("__y1l") - .blocklist_function("y1l") - .blocklist_function("__ynl") - .blocklist_function("ynl") - .blocklist_item("M_E") - .blocklist_item("M_LOG2E") - .blocklist_item("M_LOG10E") - .blocklist_item("M_LN2") - .blocklist_item("M_LN10") - .blocklist_item("M_PI") - .blocklist_item("M_PI_2") - .blocklist_item("M_PI_4") - .blocklist_item("M_1_PI") - .blocklist_item("M_2_PI") - .blocklist_item("M_2_SQRTPI") - .blocklist_item("M_SQRT2") - .blocklist_item("M_SQRT1_2") - .blocklist_item("Py_MATH_PIl") - .blocklist_item("Py_MATH_PI") - .blocklist_item("Py_MATH_El") - .blocklist_item("Py_MATH_E") - .blocklist_item("Py_MATH_TAU") - // Blocklisted because the doc comments cause doc tests to fail - .blocklist_function("_PyErr_TrySetFromCause") - .generate()?; - bindings.write_to_file(&bindings_file)?; - } - - Ok(()) -} - -fn install_packages(args: &Args) -> Result<()> { - let fake_simics_home = args.packages_dir.clone(); - - if !fake_simics_home.exists() { - create_dir_all(&fake_simics_home)?; - } - - let base_versions = if !args.base_versions.is_empty() { - args.base_versions.clone() - } else { - bail!("No base versions"); - }; - - let existing_versions = get_existing_versions(args)?; - let base_versions_needed = base_versions - .iter() - .filter(|v| { - let version_dirname = format!("simics-{}", v); - let version_dir = fake_simics_home.join(version_dirname); - // Filter out versions we already downloaded *or* already have a binding file for - // because we assume things won't get yanked and re-published with the same - // version number - !version_dir.is_dir() && !existing_versions.contains(&v) - }) - .collect::>(); - - println!( - "Installing packages to fake simics home at {}", - fake_simics_home.display() - ); - let ispm_dest = fake_simics_home.join("ispm"); - let ispm_tarball = fake_simics_home.join("ispm.tar.gz"); - - if !ispm_dest.is_dir() { - download_file(&args.ispm_tarball_url, &ispm_tarball)?; - let tar = GzDecoder::new(BufReader::new(File::open(&ispm_tarball)?)); - let mut archive = Archive::new(tar); - archive.unpack(&ispm_dest)?; - } - - let ispm = read_dir(&ispm_dest)? - .filter_map(|e| e.ok()) - .next() - .ok_or_else(|| anyhow!("No entries in unpacked directory"))? - .path() - .join("ispm"); - - if !base_versions_needed.is_empty() { - let mut ispm_command = Command::new(ispm) - .arg("install") - .arg("--install-dir") - .arg(&fake_simics_home) - .arg("--package-repo") - .arg(&args.simics_package_repo_url) - .arg("-y") - .args( - base_versions_needed - .iter() - .rev() - .map(|v| format!("{}-{}", SIMICS_BASE_PACKAGE_NUMBER, v)) - .collect::>(), - ) - .stdout(Stdio::piped()) - .stderr(Stdio::piped()) - .spawn()?; - - let stdout = ispm_command - .stdout - .take() - .ok_or_else(|| anyhow!("No stdout to take"))?; - let stderr = ispm_command - .stderr - .take() - .ok_or_else(|| anyhow!("No stderr to take"))?; - - let stdout_reader = spawn(|| { - let mut line = String::new(); - let mut out_reader = BufReader::new(stdout); - loop { - line.clear(); - let len = out_reader.read_line(&mut line); - match len { - Ok(0) => { - break; - } - Err(e) => { - eprint!("Error reading from stdout: {}", e); - } - Ok(_) => { - let line = line.trim(); - if !line.is_empty() { - println!("{}", line); - } - } - } - } - }); - - let stderr_reader = spawn(|| { - let mut line = String::new(); - let mut out_reader = BufReader::new(stderr); - loop { - line.clear(); - let len = out_reader.read_line(&mut line); - match len { - Ok(0) => { - break; - } - Err(e) => { - eprint!("Error reading from stderr: {}", e); - } - Ok(_) => { - let line = line.trim(); - if !line.is_empty() { - println!("{}", line); - } - } - } - } - }); - - let status = ispm_command.wait()?; - - stdout_reader.join().expect("Could not join stdout reader"); - stderr_reader.join().expect("Could not join stderr reader"); - - if !status.success() { - bail!("Failed to run ispm command"); - } - } else { - println!("Skipping package install, all requested versions already exist"); - } - Ok(()) -} - -fn generate_mod(args: &Args) -> Result<()> { - let versions = get_existing_versions(args)?; - - let mut mod_text = r#"//! Raw bindings to the SIMICS API - -#![allow(non_upper_case_globals)] -#![allow(non_camel_case_types)] -#![allow(non_snake_case)] -#![allow(clippy::useless_transmute)] -#![allow(clippy::missing_safety_doc)] -#![allow(clippy::type_complexity)] -#![allow(clippy::too_many_arguments)] -#![allow(clippy::unnecessary_cast)] -"# - .to_string(); - - for version in versions { - mod_text += &format!(r#"#[cfg(feature = "{}")]"#, version); - mod_text += "\n"; - mod_text += &format!(r#"include!("bindings-{}.rs");"#, version); - mod_text += "\n"; - } - - let mut mod_file = OpenOptions::new() - .create(true) - .write(true) - .truncate(true) - .open(args.bindings_dir.join("mod.rs"))?; - - mod_file.write_all(mod_text.as_bytes())?; - - Ok(()) -} - -fn update_cargo_toml(args: &Args) -> Result<()> { - let versions = get_existing_versions(args)?; - - let mut doc = String::from_utf8_lossy(&read(&args.toml_file)?).parse::()?; - - doc["features"] = Item::Table(Table::new()); - - for version in versions { - doc["features"][version] = value(Array::default()); - } - - let updated_toml = doc.to_string(); - - let mut toml_file = OpenOptions::new() - .create(true) - .write(true) - .truncate(true) - .open(&args.toml_file)?; - - toml_file.write_all(updated_toml.as_bytes())?; - - Ok(()) -} - -fn main() -> Result<()> { - let args = Args::parse(); - - // Download and install all the requested base versions into the packages directory - - install_packages(&args)?; - /// Generate Rust bindings for all the downloaded versions - generate_bindings(&args)?; - // Generate a top-level mod.rs that includes the versioned bindings based on the set feature - generate_mod(&args)?; - // Add a feature to the Cargo.toml file for each version - update_cargo_toml(&args)?; - - Ok(()) -} From b8bfc8c514b15cdec58fa6f26124e0de6bda6c8a Mon Sep 17 00:00:00 2001 From: Rowan Hart Date: Fri, 12 Jan 2024 10:23:02 -0800 Subject: [PATCH 07/19] Doc link fixes (#52) --- README.md | 2 +- .../images/DEBUGGING_FUZZER_Run_and_Debug.png | Bin 0 -> 15893 bytes .../HARNESSING_UEFI_SIMPLE_Run_Target.png | Bin 0 -> 23831 bytes ...HARNESSING_UEFI_SIMPLE_Run_Target_Post.png | Bin 0 -> 22694 bytes ...QUIREMENTS_Test_Micro_Checkpoints_Post.png | Bin 0 -> 25792 bytes ...EQUIREMENTS_Test_Micro_Checkpoints_Pre.png | Bin 0 -> 24819 bytes ...REMENTS_Test_Micro_Checkpoints_TestRun.png | Bin 0 -> 25231 bytes docs/images/SETUP_Install_Finished.png | Bin 0 -> 135974 bytes docs/images/SETUP_Install_Only.png | Bin 0 -> 376768 bytes docs/images/SETUP_Install_Proceed.png | Bin 0 -> 133860 bytes .../images/SETUP_Select_Install_Directory.png | Bin 0 -> 585518 bytes docs/images/mini.mp4 | Bin 0 -> 1590108 bytes docs/src/documentation/README.md | 2 - docs/src/fuzzing/compatibility.md | 37 ++-- docs/src/setup/linux.md | 4 +- docs/src/setup/windows.md | 163 +++++++++++++++--- 16 files changed, 165 insertions(+), 43 deletions(-) create mode 100644 docs/images/DEBUGGING_FUZZER_Run_and_Debug.png create mode 100644 docs/images/HARNESSING_UEFI_SIMPLE_Run_Target.png create mode 100644 docs/images/HARNESSING_UEFI_SIMPLE_Run_Target_Post.png create mode 100644 docs/images/REQUIREMENTS_Test_Micro_Checkpoints_Post.png create mode 100644 docs/images/REQUIREMENTS_Test_Micro_Checkpoints_Pre.png create mode 100644 docs/images/REQUIREMENTS_Test_Micro_Checkpoints_TestRun.png create mode 100644 docs/images/SETUP_Install_Finished.png create mode 100644 docs/images/SETUP_Install_Only.png create mode 100644 docs/images/SETUP_Install_Proceed.png create mode 100644 docs/images/SETUP_Select_Install_Directory.png create mode 100644 docs/images/mini.mp4 diff --git a/README.md b/README.md index 9fafeecd..704db15e 100644 --- a/README.md +++ b/README.md @@ -38,7 +38,7 @@ Then, run the provided example target and fuzzing configuration: ## Documentation & Setup -Documentation for setup & usage of this project lives in the [docs](./docs/SUMMARY.md) +Documentation for setup & usage of this project lives in the [docs](./docs/src/SUMMARY.md) directory of this repository. ## Capabilities diff --git a/docs/images/DEBUGGING_FUZZER_Run_and_Debug.png b/docs/images/DEBUGGING_FUZZER_Run_and_Debug.png new file mode 100644 index 0000000000000000000000000000000000000000..ad45c23a06850597f7571eb52111318aace8c363 GIT binary patch literal 15893 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 rUAx2(+*xYvHXAF{xwv61yBwxT5wl_9 literal 0 HcmV?d00001 diff --git a/docs/images/HARNESSING_UEFI_SIMPLE_Run_Target_Post.png b/docs/images/HARNESSING_UEFI_SIMPLE_Run_Target_Post.png new file mode 100644 index 0000000000000000000000000000000000000000..cc74d9c52ff9b05e5dc626fcd819e46013c5eb1a GIT binary patch literal 22694 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 U!>OnTO{}vZU8DQecc1?CUuAtV*Z=?k literal 0 HcmV?d00001 diff --git a/docs/images/REQUIREMENTS_Test_Micro_Checkpoints_Pre.png b/docs/images/REQUIREMENTS_Test_Micro_Checkpoints_Pre.png new file mode 100644 index 0000000000000000000000000000000000000000..64668964a383630279bf1640eab04d30ea8bf64c GIT binary patch literal 24819 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 U4Xm%v7_J|1J9V;#9}uNk7&e`|x{nm0ibgkJceM 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 bi=|jP;}ZgJ7&=n4`w-O9;R@;U_51$=G~N;u literal 0 HcmV?d00001 diff --git a/docs/images/REQUIREMENTS_Test_Micro_Checkpoints_TestRun.png b/docs/images/REQUIREMENTS_Test_Micro_Checkpoints_TestRun.png new file mode 100644 index 0000000000000000000000000000000000000000..7ef22653b9b3fc4b0bfdd8e93aedb0fd0ff5cd3b GIT binary patch literal 25231 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 C)FR6O literal 0 HcmV?d00001 diff --git a/docs/images/SETUP_Install_Finished.png b/docs/images/SETUP_Install_Finished.png new file mode 100644 index 0000000000000000000000000000000000000000..516dc33900cd1f1c11fc29f18e4d040777880f56 GIT binary patch literal 135974 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%0A;J@niRNiB*NmDpbN&}tgWdc`Mx^#ksJ)* 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%0AT@i0j0{pI$) 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 *#vP>ptgd(1Gvg=LdIkDZA13(mP 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

u_SM`uDcS%IFoLfP?X;cx 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%0AU7U_i?^dB!H2xGn!A2(+B87S@NtP>atYuNv z+bYHWw^|M1ok;dOd{t5%n1*5J(^{!JlkR1?W@k=wHF^nl&BYpCn43rt9%_lRbJg2` zCo!%&ewQ2b-3s+DxIksTyc+FQ1$SMuWWDoTpi>@g&QV)@0kgbv%Q#X^8ul@u15j>2 z2+i&Ds4XnSt7u>#MfB0`VAR9vDRJZe)v2Ozgr}rCVTC@rR611|ba`K^Ndn&yM2jQ2 z-_Ex2VzBAz8~Nk9sS8>c21FT1U*{%WxdrW&B^l@bEq7cwc#>tS#2N2=6*;x2qozT{ zk|eYQA$L`=FuF!Qtp!MAr*)zAN)g;PSBOxg zX6wA-;W(5x5Uk_P(FdNLUEO`DScW}@Dh^$hcM#B)gm-(Xxk{}qGcY|n%Zv~Pc#&R& z7M~WH-)>~}29a!r6!ePsv|Zm9aO%c(HUAcmYzZSF;0i zb@{Pg!g=KYO*x#kCX{ zzN89D)VVm!UO$V{v_1bVk3{=e&k*M?*CXhw_Xfno3@#Nb%Sap9)nv+4Tvq|Q7{_z} zxbnH!bZ*%S=%F=kib-L#j@^#+m<6{|7Phrmo_z|$oZ7i?fc zngMa}>sTMXsDqoX3ds+#MO4mof))6e1*%H9bg z48dQImb{k}&orif_SiHaA4>f_`L!rUc#OMs9xkD4DRvCKazS7EG&r4vZHcwp+7_g) zV$@p@6;ZNt-Yu}114q~U{vy7fzz@eLwR~z?#0aJ-N5WRNMffPuU`8rbWKL;}b6rjW znu9!(=X&9l0N!&~K)LIoN4DwR=m0X|Cd1_+zOfZ}(OBf`#9AT-H#I(Q5(70>dw5{$M)`juUcz-8NT9+SyerKiu`(hd; zMKdo3i^?}8DaAw*y)*K*xVE)YwL4KZOnrvgIK!losOOJA*owv7o?}o2g|AH1^B}vl z;=d!anvr|{LE9I^AlAsnuwp`lkYY;JoXvocVJu!bo!ll<`h}@4+Z%Or5HB9zcuO7P zI?aOUk5#-7UHCT_WCXd_@3{lrj|pTxtf0F!=O7`xpWi7SyoUkFEef$qb24{$sBH$m zgxkK6&sjB5Epg6;>wx_G)WOp8^w&Na=*aznfh~hdR0oWLo9XJ}xEds@bx=p|Ny203 zsEU(s7|2DIJgZLi1eusnUmX=3+fcY1%1e3&XWpWu#5~At;0PTT3%O)sAKvhDFgv}u zmw#B^!$DP`qSMj1VOSg}XLI2qXZFy!iRWZ(V-ty9GuA@Mx*U1KYLKM5W34Zi<3ELT z#>#m@G_Z>SZbbm%B<*F+)v5ZJo>%Ibxp4{VnxK}Nrb%)61sKmC{R0>SHe~yYNys&5 z6}WNMQo1t*^|Qn4v&bJqs~_!UXgNWPm`Yf|Ky@4-#K+JMzdAOhsM3&9-!EPEW?y=9 zlzC7re>5RD{cX-jru!=NcPeAw>fBag;3pbPMy1o*YO;vPwT0Mcd@;@pgOJWPCC$;S zD_Jj{*NFUXM|ApQFhuP$rQpE#0%POst1XdUc~Y2Y4-J=&`7BvNHWj5b%S}VZU)Tue zdG2q*=ht0YZ6ceN&}a?+pHfA%w?a4iD6B`%l5h=PYAD0nz2QlVh15YYbZ3HiSgr z8w?Wf5eJECTzk%%+%ywh$O>MS?hooHhjP#9()=RYSgN6SY9qYHcnRxMFxSWG&EWJK z7s9NS=(*;5f(c&Jpn~X>r}!i!R9Rnu*gKjS8PxijP;KtWyGHBxy{!+;e14@W{(_{6 z_O^(q`Mf2y*iT2pYx)dzs5Ls-lla`IU~-TT8C8q#`gk>$lGR20sTzF{MKniI7v_o; z3sA`p&AWo}SsR$bdLFCBtZWuj1q0Ams0Q%q0~^(Sv%!0hh$Tz$MUEyIRT9Dx$=%rH zW&;f>at$LuFz~iKS7;km$hzD>izHOEb-dXOUFh)*b+^dG#d;$WrDMn~pNquhx`(8`bM`{qxY`rlqY^C31iJY8Lg=I7{$5FD5 zLxjViQS=O{!HA=5<3_OZ7CFPRfjfR_21|?~`!%I|%$j9#{+TWDXwfgkpd_C&vLtc! zb+Y?7QyDv4*>}%@;=olOuO9a3hapHHR$U6yRbD8s*knzNQbl)creX1H{T`)>`)E#OWGcmP@EnIG!mc60!Zb#*~0lKrz zetMKYGPtr*M%RhUwhU+`I|Zt?VhgpddHxf3^rM|Z7!20^5c`W6G9)&417D>9@%~oD z0q2dxt@GiYV{XC7(jkK8u7xfk9w@tom|RJ>=Q1rufz84YXpw#DaI)`#$z*fi-09lb z4W@+OPV=C^s?)u@+crW;Abh!vAzi0I(FqoA^_^w%R8^cp+m=myef`}!1ClL5n%BHU zDE&zHG2=IY@~V$-3_C;I`Ud={7OLr--_$zhbxh}T2|)a6H1$t*FJb93D@4Ml{`8$h zXE8T7X&7*1+Aopou(;6bb$u3K)9laPOxx=)oRGHLsOyP5E;8@F-_MRoT{tQ^s8v`b zpU5bjk4Wgw5PQzJq~SIIu8AC#MyGYpw=4gIIS7J#YR-wjkp}gajuVd1Hyd$mKMHqP zN4h0OWll||C55%4SwpaGPNAkmT_n0;Rb&7UHwMtJg#OOprMTu&kNIj3y}rMj6B{(u z1xD&Xuh_SHM8T~plj(SfmXt$ItCdJ8@EA83%t%Msux;O8xfVRUGr^+X9&cpIEJL(B zJD2AxzF55mCY6<22Aezyyk(bN=nvZ9x(8VvreL~h?3Y~I5q5O9b2Xu8=TQUg?m;qC zR((yMnV5>tX}xv;|(rtO2pR9N$TbZ2HZSuEq)bKjMV~s67CER zizyyNPBM}&!7S+X0!6)F#QB8hdgQfN6hMIcSpDfyH*r3S3u`-cbJZL#B)pvkezgsn zw>C%L<`>GK*{xM)Y`wA(;o`jLosPjx!af({)-0DMVYsW<)g@*ab`|PoVrtTLQ#G!u znO87c15abYtRYUX*OSYJ!yk_e{|0{yC(pL*S~6SfoF;w_{(NX93=6}t!LVy`*fmto z3<}dTv$C?XiU^6aBiy3wgSqo)zn?|-t!qTo-0$X|;D+iBfA2hgspacoBu_*k%Iz>+ z+#>h{spZmaCAAR@aDX-C28k1f5fmxY+IOAsZU~2_V>al9!fr%W9H4B+NKJvy?=f#= zyZ)L<*T;(K{2q&SczAfI_okEO)7n2h$Ar<{sE?WsgkxT>k6Xfmx#K8YAPk2Ml+=PO zU@!qyIM<#jk3~A~@HYn>@Wp)5?=f3f)}rC>CJArg4q?Edim{k<)|C|#j%uug54}KQ8yzJjZL`l!h@l7WnFcm@Q&RQ3$2aBtLRpx zn;9Q(Nx@SmWd_492zx+6)7M+}LCoay?IN00v=$^WT1HfP6KF z$`1q&FLhFb={XP%EVv~4_OJ`MZQeMuIEA+l55sH?4pZ0$`{8xbi z(;MZP~?FSvk*61p1Zon^^cRPsiC%?Sf$4xF7jYD_c7<7>_ zw~vpafmYMYlwN0NLO%W9(}bnl`9#B1CBkW}=bR4pVpPa_%f`DLcQ8cTL9E`qO(D}~ z8}!@GOT~0O5hCi~L6%iHjXBFx+wF_n$|ng#9~C(&lC!TY7lrEV%O_!rlTgHHAqHkWbJkZ!6dK6l1w^dNc@fRhha|^ zr^lYU7DYb}9pAZhykNgcGTb8e865|H+;C5s3azy#2%h5 zJ)`h^ektCEnkBYop-!76Sy~cPJ-8feXvfm=+SCvAuk;gow}AgoyZYIy4F)fO0!rCk|4NB)XSwNRQ$d$Pc}?WL@3S}}fL#D;;CC}jLZ(*9{cI5H$s zV$t+)q=H7a40%|+hFaTglum=j(TMKb8Z=ic&xLQqn-~{y3ZUKpy0PSYEb(0X;KUfp zblb^~l~`6ESX(MM;tD$k{&wBw+bput)^ZI~LEcs8h&!^5wtJ*E9dFf|)J-~@0(fip z2i0KhiBr~k6bIu4)`VYedU>N(-Idw4kxfC;u5;5|RTiLsFE2OQUyvpL!CkK6i&;wJ zvD>!6G-`_lOs7`fY9NVmk*bKQXa@H2E%BRss{*^1TmFu_dUQdJCq*GUhgqR|#xnT! z;ewOfS04b0eUl&3z7m|fzH|#4eF=C$&l=h|dxB2T1|dEUR8;%J(%0ViUI^oIlWBzb@sE_RVh*yYfc8BO$5ky z)T_+9H!Ox*)z068hBp6q7ov}`5)O~)vvws_81QCV(;ep2!U&;0G{1+KR zN(~k1);w{e2u$R7RQVp(|0UqZh!d~V`3UL4xmRY2UgWLS-LyeDd32p=-i6tkRF0cWhJ|nbJeShNfz7e84NyXK1wxm4o>U18oEk|`la|cBd z^FpG6DDTXGItU59ER=yJVEHc#>Rku+o9ek(c=6}HjUI#V_@zRFt%i^7{L+$p)09>& z9RU@PC|{mnOIlu@Ek}Oy*`X?@r9WrA^fPQ8Rj6p+aICl5-)Y&_kSJ)_d0U&vE(PRV z(B|oO#BLP~=VPRmx|!Hx^QzgI64~$A!&PLtLt)HGN5`vw;95;{P<$KS=wIs*ZVN7i zLql@+FzmwIt3jhL{m(ItDPS8O?v;U|yI zNZHyUe%CTyK3WIySlhLdWV9@lUNtMVw$# z7$A2M;btmoyK}y|deo~h5nss*tL7G&E?$-yIBJbn{8HC?X`Ds7`zO4|ROI zLY=14x&z!v1}(Yd;VbHwL{_}n9r%o{?9^ML8>Her_;->OYHgDz=;THM(z2@udRU_` z8Xf6)`ri(EIJ!D@{QIH~+1!U)-3u=21F2b4MAOte8Wb)$W>=60n*qDoFdB{nTHwZyX=s9p z*s2~6WuWVY_{3plMQPeBRI;|7V8VYZ=((JBleO6h9ILf=n{@Lh{PwAA;KW*4&FL;g z)6_5_{dsYRMPZ=%$bXoACMy>ftZfsnd+5LLrjkdAG?Qr%Fc!?W<=ZeJ?#ipaNpYv& zd9)i}-cTzHj{Z^h6C3n5r(KMCaGTjRgggl z+Q%bCSvvYe_Q6wKF5;V@HLq9$;IH2}=q-!Oa$B>%U2=1DPcV_8fXz7C&$NbJA#yA) zb(LG0^5|ii*ZQDW^cO+C)9G)y(e3n)k!XyAq#R)f7PU@|GLqp;e9ChjE(o-pSP-d} z5R7YXP^Br<#`;aL-ty=BCP$=#wz~0e$z8wp>KpiPnzWCemid&P=ef zyWI%Pm056lacrZPFZUZG@8Y`2^`CUL1c*iVal+cX)Vy=OZE*UjksUlo#cfVaHBdTU z+vWH>P7z9qK#y@@j@DMnMA5d>+Zby8$_a%^?O*u%ww3rYwph$sYw0J&7lf+eWlbvA zvTwj3O3p1ZsCmsh6@1kd9>nFHh8#ba+xE%Wu7FZ@@+k^YLX9VOrjhFFnuuk6A$BJg z@<Mra~;}N{TDX-2`CBw(qlnXXleP2!UQ8X+Mc& zpEgLUkSNX;3T&p&Z=c{PNKb|Tms`Jd0#38BlBJ*ME;kQ5R}X0sV+@ zc-`;30|r-{zOv77A&8E2Gd2G?6@MwuuV|fx+@mS}StY}RGnTe;U9mY3Px$pDV&HDr`2@*CB`-7kBu`%S_1cf# zUvu!<7k;K-H*plvm?8k~-~7 zlr6-CQsC^?{m?Q&`K%t0sarHj#>?rIg2TGF9XQs$DVM2z++MdqC4+A-QtNz*H-%%6 zx~{M;Z^9E^)}hlEF{qUQFd)ebizU}l8Bmk43oMQHDvz>#6J-~rqpl=^W)~eVd8e%d zcB3#Iue7bud4FNvv}8C+sQ=^)k6mfpg$BK@kBRzNGT3*@z!OJ^HB{D$-q7o<> z6{V?0v!0m%Dn6E^t;YvAxtaaBc2y~QmYX1fTVUNsmSJDg!?i(tLf2}jwuURvVZ{{N zsAJ|Aw*=?Y;8SWyCUjm^S}HujE7f|;C272Alxy>v*nK|28`7L>Z}&GUbS4ItLY%Cy z9T@+(HTdZXv*}gHys7{Zjb`!epyqG!+Aq{>ztD@6>BfCU8E1&J?~4nqDQ=*bscqP{ zJ2YMDUtd_ytLrlA=^bF#I;*uHAszWrzet(=djw|9)Pp+#UJ!|BQmvpCnH-2ROY@zgx` zpBluoI-fG9?tut%OTbE{2+wgRn@^-J5RW{fAzl82yLR-$>|I+HHM@p)FYzd%tyDN1 zIclCSvPDk+hUC`jv?8{3n*E&DP=mdZ7J6#r8ZoUir>jP;BV%`FG9zi?HOF`|dhAR1 z7ebY_EITq1MGr`%_8!GxhIh_uQD6++)?RG6V1;loraBH=9@jejcK53W&+pREi;U`g zXZLsmrra9%{GodOA4pR(meuiJkw&Vn#Yu)fHG~~_=~skJx0-Qu`&8V5LgVLJ8N`CM zzuv}L{Gj>Wf4vkHTWUaUFE~O_FVI_{rmtG<9h>%t{N`OKf$aXb#KGhy;rN)kEMuFL zcFxklv3t*v?k(`vz8Qa5%=}D%cSB-a- zRc<{s_l#@)ml{hQxpQ{u+m_k&J1l(_+y#(k3EOb`33^B0z;u5kr$u0lQDBUWjH~`B zzT_iW?}L)^wy;KUhDckge~V+P0HN0|cYavc(qy1wO>foZ{q9a+I^M3G`E(;rwX}f& zv4rQ?TBYF%`bvdaBoziKcgeJoN7*<3ls;-OAe{eLT$S~1hNq2&Z=gS~)i|wK7ChZd zP#HgTDhM`6wj5>yt^sTqmx-P4=YqYkN^S{AYL0pm5&B)*{ zjiRE!%al?4idFmuW?2+JV+8f^hw^G@xJ)c9eNuAs4KBST@v#idQw@6Do`9XchqxOv zpO2}W^JIc3mVF&$PP`$w0d0OrAPM8a$w1ZI?#^gYSnMFQPHg9x#_uhwz{?4w@Cz>{ zPV8wp&$!sjpjin`ZYwP7fd|!L?GnRJgymxER2^dvt8;Qw7nz5>u9du}75N-}67* z7_dM2Tl?bze}0Q|m$pkRAP)74PX-uB1^c7_FBhh+;R#gNqzAUSF<8izeMuC0)AGsa zdBxTfe1Cb<=8H8fwdnkN0$IR7BUvVJ-!~h5XMIJBpG7)vK5#ggBkRWd z@@!%Bv-#GQMMo6+I)`1*7H@n_DAz7!ZM#Fh*IN@Bd-Aj$ zsBJgR`vj{~XAaIMhOEV1bgQ2N?*c5E#XV_lShU-GaDuJsrOYBVEtfayK4HmyW|u?9 zR!p>~!V1JhjUEP|vSXfqmPvY!&oV=ipX&|^B=x886d_a+Nylq`$TKjQUL{mUOpLJr zV954OYoHh1Sq$MF>)*Z|)?Chv#_YOMCiC?R`ZG>81F=Hh+Q-I<15TC>G7bKWu z^-RGx+)E0+1S9fh| z+zcTc$_XF~RTFJCa*>fqq4Rk>T|&l7Qwj=R`z5c$CSU_?QL%4-639}?-b#Hy@|~BM zlm)#tx|ME&%o+pV2*S7Nr$kL<*Ze?dt>H|Le^S3e%se~QceUc?i?M1A$Pfl@0K6sy@m6j@K&+RaiEmRP zKz?0kTGI-rPOKfoV4B#I=aF8bo_PtDb)m0a?ZuZV<7@Bdtxu>$-P>Sfov#9(TS!8_O(yz*W0K-i4HK z+O_HvY6Nmjtr9qHKkJfx>As*vTUb1UH%?7~FpuxvPeXKE>u%K0vU3$;X0+S6NrRuK zPdXmq{jq1LFh1GK%h|O62ReDxL7DeI!G6ik6(pQ!IHqIukD_QLPAX9 z&8wc!weDrHval`kn;1ysBC-Y4r}`WDN9VG+TDx||Y&t(}YEvo`R&Y=0FtBM*q~42H zi#H2Kjy+0C6h`LU*Xcu7bZoBW`8`SNPvV&G;4YG|gq^NIv)Ic#S*UtS)~*Dx@Rx>=G0!es?ylC7&auM^j4e2`@D0Tf3~(#{Q$~OD zxk3<4bw8gE?;f0)5`^k>B#rG$518s-3LRAtWG?bY`MNaGN$2?}JYo9s9{7t^_j%6e zY_q*>8bolgg$XeQ|JYT=#du?5n?TZ&Ct3gcbFc8;ljo1SM|vE(D0GqML}z?L73Hnt z=Sgx)PE3`jNgkpYXedcd1o?g4q`t4C?VCt3Vp-YRG_)!^LH;IePV{1Rus59z&!8gteWSCMtRZW5#Fvbvv1Puc@$}6^ zDKvo5;`2*IwyNifoKV^7E5}_F+TQ;q@9)kO7%x-QDXWsG0RCw@?d?7C3}00Z_4v$R zGg;G?Af&!7U8R-pAU`=D3%6$8x9T|QPfdel>$uqp`?^<6GVpw;ncUtzX<3I)b>_$(j_S=CEeW}f~0f}4boi$Gw&JoQJ-(W zKNqu>e~9PI9sAzeape+gf_N_4hQnG z%$XjfVg%EK21T=@Cq(mHbbDe026$@;eOnX@J&wHp+&`Y;akSF%*NUO8t*(o_o!Db>}^14G3QOj&iJGkF~RxNY+t?8$5M{HhI5uV=Y5^pqod~|6;e1~ zlRYt^S6ACXlR6B9HrHiR1}C{uM4FmQgl@!-bYEMh$cniRHT#HC;qpq;D7+Kbh!f1r zHoVVg-=FVlW*6t?F;rug=#lQb z0BTo4u+TY0vfEKmbICx8z0>;cGqc6kw^O#)Jlx>ze)m^Hp7cv+X>&pTYT9uo^Oqh} z#Dl`DrUYM>JXxtlaO;xR>EQ0WY%SO5gA?$daI$VsBI_#APJMT>csIWmM=H?w( zuw%g&a|YI-RQyx{0|`MJsorg#^TM!G)@1KC#GNWIl!W~aiigpW3bW?{&G|MkdF0%% zMXp9z8wz|GT6gYHLodj}1+I8PNh*+>z~*|)wX2T{bsD%vp{JW8NMZq2{>}@R0g$Qq z_YvKmA^Sb1U;(7e?(hyHH5O#h^{zFO?GD-lgRv=FlBSz*o=bCZ>#TLliWYcSpU$>N z$GO3E3X0T9Zr$upAkT|68#YS{|8N*n`%daY2;h@~XW#?^C3C|v_PAe9%?8AKqCq6uJcI4a$Yt$mR4nE8laDQmTS{}Zvki$ZAD5h6l1zpw*oREIe;eS{ijWieefG^iQ}v&IT^1+|TPv9| z?K$k-I8L{$-&l~i=-1Qhc?51j6TWU60Qp#_xMF*q9ZT7a+}h9|X>!(Y@jP!sd*F@5 z1a=_+9SrirMD~G~q+Mnc8+^%dx9JT1p1^P2%s;d(_MCVnce;YjWVqX9iCcatJv#&e z<#1gq!Rw}vK#&5?H= z&v91WE7KL2Gt?ip-CVpF+MbKJceWmsQBQS|DfTJz12f{$y|Tf-4k_f5fY8j$r*e9) zKhx=c3;w)|nz4;zM#V4V=S5L_{I0Z7u>@91Q0(>kElULFM&XG#9)(82{eO0421!O} z;6Mf&RMJK(ciY%tb~SL;0D>9Ti8%w`p^%MOhDW<%TU-i@PXC+)fe z&7FpG-P*-#*F6LKAwlv7X;+Tg_Ty_Nrlx2XnKAg;N@$=`vvITQ)xm~?^OlydTf|?_ z1+8-^dsePpH|j4x8V|J*bAvI#u!XSRH9L@xpc5Di@`4XEId4N(+;EkjZ~1Wt7K>5R z_Bjc=P2S6a$?aql0W{?pkG98m8)pF-#P&+Wd*yg|C+ob)ZD@ASA3oe#Gw^{Ib;r9r zqg8kZ)A%^VSWqeSpU>i4K5EC{`ZL2vzj7=S%3nEFENX|q)+zPNeEYuqI(oj)LGSLK zfZw4cSMKU`H^f6I;(Wmyym?6{iRp|{4my}ggCc_xcp)Ui7~CG~0xUYTsAO(_x_61LWOj3{4R#OFlwz6(w6m(3G3)_S1UJ8C*%z%cL> z>$u#nUT|ZuqYcoIq9mWG)@BL#9zYdZlHz7JKFLM;L>f}Bp5TJe;aD=8W^hP!Dcghm*TBv#RH!8pu{B?uhp z%suNWNI7fpV$XW0p5>795|!Ee6Xm76#$6_kt)$z1GSa}LL2Ty`z_Cp-ky`0@hVsNq zafW{T=4odL@O^cVqS1Mm_IhU{1-|rZ?z2p8QU4Bc;&FzY5rtd18XWA_Q2*LpDdFzC z2WguSO?UT(GlO>suXda=X|g-P&}w`XxsMbV$s67f{udt`TOfGd=99%;?)#7plilfx z2QwkN%{|rR9Ay1!jlr@3m}rlP+_6a5Kn9W#Twcuv*R{Kc?bhBKOma0fH7nUhtOh-Y zD~NgqH1d(plr-@USt;~eGk8*h!NFlFhT(LT!dVnR zUM#gGVZ6bocI>ka2J!?cRZ50czZ|}tLbCf0(=ZpmD8u@Zf3JhB{H>QB;~#A=^j*#_ zH_GZMl4k$$0vsf6moCSum7eRmX8>zut&h9Z@VjsA%GoRsa{^l@!>PHkQC_6_T@pWP zb>D9Z*zFE&+lmnGX7#${VX50h#3UJ}?x>k38frSwYP_7#0{NJiG$3Rvk-{!F=?Ft4 z2+?nOm~Iyxjz|@hx_nXEsa@f*s9K9l;C9Bw{^*4)$9MXKg4dq@>U=*yP4`Cd>g0Qv zL3pC&4No%nxi*Ev<`U0t61aUwqe6it{$PcFuYK!ff$gA%apwZ8VvvWDyKoYvwJ5HdGMGT9so9*vaf0q;VXjEu1pms_>R zt)sBJ1bze-Rag9t-wLC5%n<|Gq=Ua7(H* zmwBUy^pd%X@JhNyBq7Oq$?0RyO5vJYYMWjd5@=MBVjmNB{$r&$6xaxDbI;so%T>0bbp<8 zxej`uJl*m>t5J>BN~>0(*xa(KzN$#QWsd{Mq=?jR_)`e>WIXTbsE2ZVkP8bhO{Ohy zhaFgi*kxyQn6vtmiSn*D-E{20=F}?$!<;NMFJbm@tLwEyn48g!O}WXaY<#X&DwlH`v!b1;D-yc+w&^tFksLr5r)IoUW;V)ZKZsr-u)P$xNAW?%ij!7X@iE5d0PbCr8LC3!2+xtcXnSG_*zZUnt{Iz5zM9YG52d4!{CseE@5UpE zW2e82Z%uq#I7lGjDCpB{vT7R1TB8`7PjJdHNif7-AUPI3y!zHs;!L7L@*ypd%?tRY zv}BD`Qa)8;eaPP>$$2imaVtowee!uPn!Mwn2AXrY#-G)+MU?8gu93`X%;E&Lq&=HA zE^*_|F<0orxdn<9E$n^jzipNwT(aX0ZL_ZjBAk_&`a_W7GDuNmq9>Gq;o5R2)h`}uGu>Lvo zP$@)dn)3lrsws#ouoT!^iXUxK6+||Y8ZA&GX3U&Ax(>gt4}U_3dHm*8lW=G4dj1~H zD9oiu!c%sR>ms9`l?H+-EB7a$i+^Mg`SjT3r30a%L=RGs^cY3`I2&;EyN*RU#JxA; zYbY7GFDhJI#s8IYmVwUt8xDPT5>$H8Hj>N#`hR6} z7NO5UqNuBOMENZEDgG+PDy9m$9HP-l;_@%seiA6v{|5r4oTAM2>iDk<0S}tDVgQX^ zA{(I6@Ch~ZSR|-O-^tzsYQNnYE_~H6vZxTb+YS!%#(PJ#o=; zXqIwDgBDGl6LOMOXOg}{L~LT_<#>~~OZA(rQr`El>!{Po`(N<8iLK}@e{*EhQNvNQi#$5&o*$9pN?d+Yt^c9lpqh;6e{oYl%% zRuiZeDl<*pEw<4mOp}0Jp8kcd`!^E&#%m0`DJaoC?sv8p7+9F=;ZepcCWD4HeW=@* zlaFtF@8zoj5!DTN4nD>}=1R8OZ>f^K)p^xhA4s?R=?l_q@J`74Fcon*u_;$ne(z_Q zru^@+bXE2k_*B<`BdG=s@&b0A^ zd8U;(d?H>-FNAI>c2??)jp+!PrK&!$l==Z`37-P72fG71Y9_hdtT^ajQ*0>FrWPsD z6Zp{DpDs2^h2~|{`;WkFWQJ#b3o8ua8D*)I-X-+KZOI+G^B0;8(~GJ8;^vKe_<9@w zldV~zay%O`e+`To&n+6{Va0^lryV(?B+u@TXh=Isb>Cj)1US>P6GBc8*Vf*e&X-Kj z+XsD}{Io}-oDy@*r6^7r9&#x~@rDmWBkh2jr^q8tN!ivOKq~fL;WehzaQqZWFvx2Z z^k<^Cp66K;Mj}NL;EIB1QC9t6q+Hb*suEj58-?ZG6O!%uigb1(Up@sITEf9c)3PGog{9YlW_ZIFlHfCC>bDVa}dJ z0T12xn9V&^>0xS8Y%6EDYo>Qu|==Kp33NLvn0M@s)SwW@@X1hFG!lyq;FE_n>3 zIWst%)k&Wb|2$D7DW4hhm9s3dRjEi$+zPD>QI7fg?)#D~e`0k{b+JNBHRItWaiYMV zIOJSxumM#E?*C6{r!CJ=h{KP)6&cAOhWM6_6JF#<{~z~(?{~*U_zH>~3jrDsd-CT9 zQiwY#(e#{Y9%%EOyR6k0_x&{y3`E(@iVU%D%aLU^nZMFg*WFQ)$b%%8%h-3UC&)G; zNGxY4i{O0$79bFfUMxq2#$^->YCLaZFvX=jWzY;riRj$W`k`S&xZOy_ZY7teYVV@_ zHCBXaN4oCmN}-R`B>P1(Fz;%POZJ=%3k7Xv8N|9iYy;CvkVf5Mx~7boB3+3gx^ryS3l6duNIO@u#L4bG+wUITvc zW!Cxvr~9O3ABcY82Us&tNQLYtr=N$>^fZMYOTqEf$nv{V3TO`k20(uRz@M&V90%Y{ zN$vKTn$bcP=2qm3>FcYAdVp+V*B;ffM!p~ z>%HU(cwYJ%_6)KFMWJf1pEwCASJQ*&z}Xtp_KZ>cVD0`wgAKUJd8x0TRbq%rkj?&# z{bGB&DPcjLn6WkABV<0G_OYY*>XP9B<#`j^M0o0Xgg+fGS;_N)qP z2oY;rM}$DIb(%Z2oZzK6cyfJ^w?VEb*!us1J_$4$SG_3M4fwnu4e>VMWk?xNB~4Tb za;;4i>V#C8Yn4?yQUZ8;o8t2Kif%mZ_nK;I9Nd- zEw!E2M421c`QSADGo>33=u=S<7WehgIh$=n6T91v3k8<}eJYT$pF6^?CtGZww=ha4 zy&wji36ux1UzE#E+5+ZEp+ANJ~#;fqYSTW~0+FW6K{S|x4v&6G( z@k4*9)9#EkWHM6<2a~e?&VuU(^`3zqnGo6eqh{(H&tuF`GX5Ws7IaY4Qq)=YAURag zphy4YjDLBx#1qN7qBrr){U1$asq2lEV!+V;U73Z*LB~OSFdzI zlMJ0k0NE^DhlomjE!Mug4L#_Yv^l8swdrj`S^AQb+AT$0bR@Vj?+or>%<)9x2h8r( zU|YoS1V_SDm!mxCo+^5&hu;(7pDOhVr$-MnW%1b2z4w?^*OUF}C&hmR ziETP2{t45^-kDs0^wEuoyrF8)%l?jjNK~C1kX?L8CaS(^znG1D`nst0I(Uw?R?L_pS6hu&SvP|yy%&8J)U>frPiz`ks3(#f9lKC zjnU$Yj`K(d69mjtiT)K{1)E)`&GpG1f9XMRf9cNJT7vh;{iyTfrgL!5Vw>-Lqc+RR z^1gQX0QW3r$X*==_^Nxd>?n+zeYcc!bH0EWdj6UGPc;hWWz|wM61&tuDJA0F%fm;udUF4bTgqoZG{Y00q#hG+ib1{MvDvt#?@Ff!Yj*ds zd&iT*{Cmk^kQnd3$0VhI8iJbK&N|Pn>k&M!P7pwi7o(2_pqT^NK6s(+PCOp~2oMM>PE%CAw=F}P$t`?5SoY0( z05ICs?7r`hF_^X?#C1Lg_*3)rdN|c|!sFuNTDfEx6(7ceKn1Er-ST^l7~U|*th!B` z2l&`&##Uf3&AB)!&Gn4J!}fUK;AVe5P@4q>G-Yr;Upkb9WHXP&yaYp4Qw z_+~xkWgHlZ#qf1_rWdH&GugqcP`iFJ%`AJ ztx)uuuVdA0dnDwcd&(W z?eFc*@%V?)%uv-ri@R9Qf}uAe4>_lYyuj zpcv5iTy?*o|C7Rz=>TVMAYMnA#k5_FO!jaD8x`9tA68;o6dL3>=6aMS_wysqB0$ar z`7jmNlL4b=tKD!QW6^Y~uquvS5zfa|X<4U@{S8NuM34V;HNV92u}S2aW5eEKgyZ#8 zB!stb$*}?6H9w|i;)qGH2`0|V+wUc_MorrBj-Yx3eJjR3Ut`D!dX@GJMa9$d@I$th zq7&?yUR$S*b6a$a7nwY4U4uf%o=Z;X&?VV^f;4D0vbud{!jU1CNn+aWS%x|@qNjw^ zqq|QXvL1h6$$I$u$!PUTdj6cG3ZLFiltX=#BObrANz@GEZ5l5{Mw2X^gI$l=#zlRgMYY;R6X zRyO#%BW9^sug{#DmmS>Q`E@nV9y?J8vm9{JLxk-*Q3W7#$1?^R41@rRRJ33}j_ zpkAKdNbRZHNDdNgxi$h%T3vx*0dRE|P+Nx{VV-YK;sj85;9~P$+?}gkBZAXwtHunA z*4Z8Z>a*8IF@Rgct}axm4B17>%*>#N%)x%Joh?Evqat!EJQSek&{Iux?7|B2Xa?a@gijn^TAWKpP+V}lF(-gVcR}MN3c8-S(mN+N%yO>H| z?Kho?1Bb_Lta$Hmc0!`{VBgtexh8~YdF%X3?5Taj z#}-aR*@3f#;_(e?vcr}skKOu<6F_KzZ@!c7-^hC?IA^bHd93&9cs7SSY-hMz{HH74 zq-(P*^*GP@j~A$#Vt4Z|9-7ldEid*$3_Py^h4ur#~8s@(Dx=?sQ0#{*TL zyXu%dyeLWSjIg@#emN`eubBjjjFuC8i4H;(U41x&pG%n{F;K+3#kUmE&UP+ga>S#^ zAZu@@n9>u@Nkp=43lPr>p%(^U6L`rZgbxkJxrl%l+G6wB$h-t3H>U+tDL`^aueCnB0c6g$ zuXNZwnJq4uJ*hU2L9J2+s`{6~ci@U&Wlfa<@K+Z|3g7}?@Pb$} z>y>331+_WS(!ZFKi0e0s=`S~6Tscpo!t}nM8G?2H#V@Emc;dp8 z@ExuzD$QMSQc>wuWDsh0?pHWemIV7uOiFRP3tr)DBor76H_C=inpypQSRET~(|V5Fgis37RtL2-})V zWV!q4jRFIqCXkxlRd_E#YLv4T${ zJGx$!e5=g(iRt1>g>x*rC%wm$%U{Y%w_yEsdA9$8ZeQMNJk>K{tP}~PkjX$+e2B#G zviYG;BAp(knN?MGVjOvx!^_MH8BSn-%($vrT8c!~ZW1bp2VdLfr+OB}8b9T>VcX6% zm!D8#l_3)cbhHWm4Z6ciqD1W=wy&AGFvahZ&HR=lIvao8hb0A@D?Sj_@)ia*N6`Tl zFP7HFN2Dw>m7X7?sD3W5n1{~DK+V#@0%za{UHZq*wPowZKzJ@Di_-t74 z2Y3nwBq+f>IRh~}ZW&oBj`|*%fuC;5*>cazTvts%f`OOf&c)`O5x8&$D;uC7)#ubz zm;QU}1_qKzr>jMz_CCG)02w(rrOH21;z2s$9lz{NjkFp{+h94NpS#ckP$tZP`X$QB zFl9W@MdAzde@n$Fhn7s#e-j$o3w|6<>H%xlUeqCpLsv9luF+# zI2KpbiGUr{A`8$>kNvVwZWl`YTU2U0;gban0(8<_5=Lkc`##NPsMx=dZ^jhj!VD|? zOx>QWN$6OYLgg?Zf^YV;eMm@>jK1#n4(G+M)~MDYWF90HpO@O2gx%xq5m zhXgral8Zk~&CW6ga2OSe9=%bCp#8j?@p!`BUPPSe^ED>UkPrXGmQs`&%>(pZ@qhBnJf^RVNsgH2@|vO$B(fF;%jnbJ zcIN+LmO$wKaRQpbu7nu3;Pze3zF5{Pbn?O8=bZBRDKGQtMmL{Gjy`iBQkst{LvS5H zm9@ebe95dw#dh?_cD(Py@G3nxh3(;cT+N>40spX&vyjmN{#US@D_?jn*$IZaB;UG@F@MI)G!Dl zSkG?&dDD?U#gV@Nx<4Yie|UyPMwEq8v^(vSIxb*eRc`7=-^<|OrYwrr+%fTWcF1GF z3Em{RPaOA;mj08x-)D}nyPRrFrq#CMJcjE}&t<7-fbf+CJN)GT7wKI_%f%w}V?c_; zmFtqY>+va8B~>{V<3g&ri{u$OiQu+90O50HX=E)Dc#Q!a4!FK6x{tFtLudIiXsBg)6)*D~x=7BL

oC&-UATgSc?a8e>EXfcSDu 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 literal 0 HcmV?d00001 diff --git a/docs/images/SETUP_Install_Proceed.png b/docs/images/SETUP_Install_Proceed.png new file mode 100644 index 0000000000000000000000000000000000000000..e57a1c0de4e0e7efc7ac7a84c62730bb4bd20201 GIT binary patch literal 133860 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 literal 0 HcmV?d00001 diff --git a/docs/images/SETUP_Select_Install_Directory.png b/docs/images/SETUP_Select_Install_Directory.png new file mode 100644 index 0000000000000000000000000000000000000000..e752a4673705143ee743d7fc3092b22dedb00ca3 GIT binary patch literal 585518 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

;YN)33a_+yah!N3(uSvYd1HbtYAOkKy)ep|BPm* z`v}4vm+B_1|4-F(aw+5U_4AO|T~!9>o4;su&!cx?On zzRb&mUoCgFAZYPQyvsWvdO|iSfDv^u{;j}dz3R7B0%Ur}8+QW0u)561M~S-u;bkM% zvnRh)LmGGh94N0(%azu!Z--wUil?Go#Z?Q#69$bOhW7R8ziTV+e8I20`b=lA^U!c% zJxM?-n8k)3iMJ0$zTc027csf7);sGvUG8zt zn1H0J-J-0GFhi+{Bp^hMw~|QG18cp`v!{_48+SCd*S$;E_1$`jwL{1{`3iABupq|5 zHsuk7uJ9OdXGEUqY&U)1Xfq5TQ_y}Kn7=Z|&-CtqUyP4}J|VsE zu-xB*zZUSeOxnmsm(9<#?$!I$0^o&hh;G9Z^oiMo1M;KUMp|35uqw+c^)1Dnn-;&H zU>C|z(@eAR3yiqjLDSCQy0-EH3|HmH^Zp_Gn=D))56b%szVs}F#_dPn%OSr6S2VBy z2zksHAG)waFnP`La~t@n$ab(_7vhrCDG%#x-gia6&aeOF`{;p(%gVLBTijLe^$bFS zkHtFIDSna}Dem}XDdX>;Uw4JSO{_{~+G_v#eF8iv`NQ!qZ>b}N%Abf`w3TSw*KziJ z?^@-oinLJthxSY2jfZQ^)SjBTf4#swFn#E}pa=Ib|I+&^Koe}%baaOvqGbv?wZfb% zWmakm_d}0?PvGt`Zd2q}9n+W@qM9+5u`7qpqJ0&l1rA-6Dd2CEb!OK>DtC zLN)RryDPRgX5UIM^QsKSVI*tEdpz$Ofwf)xymKo!Pxw5{ma^U1G*21;ppPkeG9z4b zQ^J&69?HyHx*sVHwSlr*%2i(b#fdp~N!>-A)K!Tp?9{63OC3SATqf;=eN5Zs=fo#e z(t_zV!yT)_ppdRQnXQjzwocfaqZ@k0E5DrlXsBYyez|STDIiQ=L~Ri_Ddl~iSI(qg zA!8o2J;D>tvvIUVL2t*<>-6T-ZlsZ`K;$FINDFb8W%vi8Uzuy66B0BXy{=X5#1%-4B9?;H6_c<_DyG}=C2mJ$yqzkfrk#BK0S zrw!hj%d(N||9GqO3%WY5LpU#Pt!q{0evEQx8$IIa>=>@`4C6CbhwNRmEZM8CCQZiP zzCxT9X%8Q81Hh>H0!SB*Urj0mb0=7F*pX;f^^0hAFJ@Kb>h|K3A8>F7-6{Gs?4B88wbpA&RZs-(Fr3neA3^mfgeu z3V-R4#cY>$gr+<1Kcg}hT{6-MZ{>xOR-F!%is}v~&xTeKE*{86nbyC~R^qoi?~uT8 znVnwZ7Xr6>*Pume=xyt;gWu8xJeY-k0Rw4!3TVtUJVhLns#RK&t8Rc!cqnn@Zb(xg*az~RQ>Gr99(Ce3l&(^;;M=;T7EA5Z38uqAQ#3z$) z-m9KXTbX&L+Ob)OZWt1o8$AH%yM?rL1&QZQaJFt|vB%@e)*J0uOC zyt)|wA@^gO%|nqs4ZU@%i??sODW{)a-%)dx`#95-yf5FT;e1S{p&|d6^kSUJSlmyq z^XyH<-$h;qh|0;<)o$`W%hvO}6_PA{qaGz>y_OJ9V)G0Oa*|Y>Ce0T@{YO7Y~ zL_gbA`5N{eQ3mN7KBR2uQlPq+Si?AuP6WF&LfShcT(43AR&nLrJRWp6jt zxW*)*cCd(Q*-PtBj`!mo6?QZ_9DBFduJMq(`sY0h$`8Mu-*rcY5S#aH2GR0^yHdFB zlx&|?*eqa5={I>$UN`fk0YJ`tuP>-yuvq#0h^AxxVY9j&q0fIDd-6|;m(8k7;PQ?i zyMo;GhoTr?JL;H8pE!gMqblP=Vdz7(@ayjk1PqW|Iq?F)D@Kex{-2#HRI=XyI3M_I35A1wU>mQm4D7)T>QbD5H8CT%}cwA(WSkPGCPO+nTYna<

6OGu`j=TeZbXD_ke&TScVF&v1#=~IBY))VcS$9*%>B|b$mr-TQMJ<2f|Z!y7IC1v>OtFxez>dv-eC&tZw@ zJ0&J`hn}1ll8$zvH+R5gR^sg~NylhCbJzxnqlZ;=C&T1_)@ zYC>{_l%Xw)-P(8c>s-{gF2X|UKljDoj)KPV?@fMsj^&)%Yc56Kd=UBC$um zac-wFP-z@D}r-V2fw@_efs$=+r`daUzw)&0l^+ByUj{}x17H7K>zA}J1H z=PQ&aiW_P~+McZ552y?A)!4)Qxf&o)Y%zT260TWowf|EPc15=aI&}6^;HmJ!G5>#L znvj~igC-6-M9g^rugEUsbYq(ZD37SM@tmLlPrru66)t`O9vorqcK04)jbyFudf*8* z3ywcJMaizds9cjhOH@ZAt5>!jl(3g74($7w?fjx_!Zx zo5hg`-mux|TjD{f;NPFNEogET-IYX76pc)xGjay#q(56U^s>av^8&S8=c-nSb{<9Ne3y@Z4n z`szui8#P5*Lon6y}KWfBpi)TIuv%}{zeBb zccqB~M!ynOQoX4v;g;kO^;KfmMkDI)n}?O|gIi338+;QbZI)dKD2+s!Hz= zI)oA+`Mw{}IcH|>%$=D#bLYn}ddIC@yBZvKW+h#=a~z)!szueqCjmPxKX2~C)eCLjk%|L2`dG&~B_Jfln#Yj6 zISP}#R539YcA%UQ$k$RWRk~wRfINpoLgFNNV=w#O4QjZkaQFbN4%`q$gzy zCubest~mSP*5{NhaSQoJX*t;H)wGQZTU-3RF^YonF3t`bbXCqDEnreRfS&?7XdNhD zg`qw6)?pf7pRSu}U>D-n2~^{!tgU^a2q%z2V#Zm^eVM`{LMu>s4)+fDDgdf+YZ0BJ z6#jmX8cVi!nL(k+p10spfC1Qe9KAxH3zmh@mwxUdNkMiHzUQI7lJ;4drg$ql94r9+ zUd6h#jWnGj;|lGxjt;~w3D|xG>OCvp2c9?k%T-tSmu=>rGcjLQAABUWMK-q8;X6v! zcwM4Mb?lxgK$FHSwT9ptyaxD24qKMMd+PF>h9+HaMTQ0VJ&rBXM=g$3n#_K5^y6TV zC{%f3>t{?etf$Fc6KN@~9~`1H z9VjK=Rv=9QqIEA0lcO_3B=DX&dSSIv97SdD~^k#*B*Rb^rF<33F7n%lrj^olgQ?`wod32w>Bs7m5|`lC+8(Valw zQ<>NKE_rvBx8{j)h)GZ=Nj?$Kz|g2j=4%JO7cu>7fA2u0tH%h*55y z4NKwbr4OQ?F1%?e2`RSr(o|ipxOOVj=$Z9N)r>rhGp%hpK9t_9G4GAb>0>wCPDShS z#vD;|2lZXzt|pwOSVD4A6QDG{ofmJQ6%#+r306ESO$UE{1AQ=O4*D6>o)eNb1Xp*H z79glFJG#3ty!zlr!+;z7QT=Ix@| zvo^u}LC#~r>bGuG-m_1O)!k5gcK0BQT>5a(TC%T-zHzV|d{p|=M?s$L871aRWF;W2 zuTT&(jO?SlQAy|ZtkIB8}H*-7c<&8%0DZ~F@>2MtA&86z22Lj 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

ekIcY2OL?1bJO>fj)6%Y`S)n0;SLNzDx_J@+ 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

vQllJ{Gd!8n%IX(hwEwH&BU418< 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�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�_bcBbpJUC>!&O?tD3!OY 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 v`YGWz;oS&s8wGr?JWkNhF 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 +Yi<4RkM!5t`Wy6TZT(qWf0EGeIq;9uR-f9B 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%0D^>EE>-%c2`Y9p2+J)_`nv9 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 z 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

sIU_YSPZiM?=w#FC8aHQhS8xE{l#uq;i# z)UWaqeRX@loh;K+E5Qh1-hm?BK+t4RYS*|B?z+Ci z;^#cdInVWGZg@lKh+%s7t_%W=I+pb&1w5zf9I*%+<+DyXaQ!dpI|96c%>JC2aIJlW zs{j-J1T6IY#KDw zLP7fHS|K+Lz7Zw;N%a*EwHKF{P9)o-{e+f;T4R^t_zTS2%|WA=Qw> z8=zt>S5}DxUaK8p5kncj(>w*2)vU-Kmc+^4Mmn}riM^sKCey@>2&M1U8hx}0b5r!e z9EHkh3Kz2{CC3RyNABekp)i!jhxd&Uv*k6>n?7|ugjmTM0u|1P`Nq&YgeXp^MV?Ceb2*hSNV*Xvz0Ggl7QR7> z8IURplK%BKbDp0mdx&rekXZzG@rur6pjNln`9E62hZJeyPz!zC_(3rS2>2`n6?ia- z-5L^>HSZ4loiR}i9N6b)_fNCb3<=khQ5At{BQ7+{si zeG-HSwSnrurBS`?WN78d5ggs>lQNRIIX=pWiYgVeF5iW{i%VZNe8k=JLKS%_G83sGU#AdG9p-)*4D*abKl zBO*01?IOVN+kWl;(Y%zyBh-WM#I>U8DKyV`6t*EW=Jjn}UnIvDleQUKYZ|v%RmsK} z7~-s{8N-nVgsjV;spMgL#D(e&{;1~+&f*sbZGctkf>HWd5a7}uUYc~a*aT;(&~cBOjrC#OKLIrS*Of^9!rhZCvFbz)>7Y=;Yf9K z?e0hlEmi~ZBI%X#u%veM*1qGRQVFgo?hQ$S!gyLDnL*rEhrEfZ{-cI$)wV^9&m{B; z9#*f`ZR0EJ1Egy(aYnDIh8Cm}?gn~{YMwQ1vj&wDAJzI3c{^R`_6M)tj|H34=gcQ^ z_k+$*ZI_RjR0~OI90{_nz`}ixva)x=n5R&X&DX_BQ$a9v?It4GryivOEGkC{$pHw& zY&wS^i026Vg9!g4&QXot6W|14>Ch#`APhN9KhWX$7oBq#T(|U7f_H^CHg;$A*QaLB zR6|V^q+LdBvZB}v&lH>m{&@qcoWn=DYhD}eq1o9EPDErK1gvrn_%s2Cu18%A(`2c* zt-Kqjd38EGn?AwyNT>JI9tA5|bBm!(4ZvXT)Ygs9a$yE;Y<)Q7NfG+#cdO|8g$WZmk$Y0^+S)+I zTiE+S+En|!^l~C=t$g>z$`%8@Vv~so6;JcY{2B1VviJyM8VlzDa0XdpW5QM;9WusW??O$=wfvZ9YipBfiE|#c_(%u#Ivo} zyvor>#H3p_5EDE{{;fO|O@o7)E{TqOtq8@~j)v`mZ5cCVgr4zq+T|`@?@1InAaqh1 zYu75+FMW;LN!yX*q3xL>y-ewugyr5%jXThy1`L}M*nD&WTuF~-aUNWV;gfw>LU$ny z%H-t~RDjOhV+wIGDgE%_LA%RoKg^n9bsWj4vZzHzt0`k%>ukGPp-$3!RAa%Pn!g&D zF&nS8e2Pcu1ZVxD^m#+0ihedGalskX$@NMMrXLwAaG@gD8D#EkW1YJi`f4X7WS31! z#Z#K%C@(-X3_J)`+%dU1TjiMpl!U}+~ zS5Fqt6Sls;zMyxxH;NEQtFF400bSXC@8%t!qWj)OlIFM~6|KZ{Y<1wZ7R;a}$FCh& zKtcTVML@En{g~SQBQN>ZcbU(8)>sDtxUe2n3;c=BuBH4er9}^#`mN$U21B@Q%e%aC zfOkWz{{+=%b3~Q;p*wst6ZL&D&~t<*6Gv%T5=7x+LQ5*R>LOLGOrg=Et0huFKPv5* z?i5^QacC}=(WDLm+=;vPVvq$|M-JL!wZ=4rpkFK2Y`l6Fnsh9q13Z-jzB*w33O@sI zPv}11b95qY`okE@LwYV7f8ri|rM=(9uiG*{8RvHQ4y!f{d$K=|7N`+9)1&gB#T1J} zDUiZPxnN`^b2Pj~@RI^9dq4$(RV7xmjPwJ`W4PBKg%^^j`&O7EMN=B@ni3wZd&^)9UL_RPZy&$NpTQC>q0zC{jfzh9b*8)8#iHXfkH|LD}Saods zuP>`E%KSvXD@(qKK6^=k%#BKPPEw%Kmb3cH2SC2!H2TWsz|bJ%9d6;n4NwS=Hp0oq zv)LcmVKXJ!$6RKe%m6T62s-sJQ%~K`nXcqFoV(cZo;_^kJ7HT1*n;})H;%4CAGA!= zKFS&APeHpXIn=3#Yf=1ib#De4TypJIp@5PD0wMDeuN-6C3Uk_#ZJR7O3=A9_nUGe7 zv`8FS9lKwy5vmFUTl2a<% z6n2OQeFcv&4xbXao<>h?i)JLiWRF4yOCKL7lMy2DorXr;gDi;dWuF#Q&FZ){Q6FK> z?V7`n`O@?bg{QT3q9l6d;WnR;TX^jRS!VoXX{QlX3`@U^I7KbC#yS!8I>L6?W0R#A z+0b7Emwa#D)~TPW(F#u1+G7atKuMqw4+XZ8uVf7+RE>3{EsUOZY9~-9(6=2eiy1MJ z?doyJJl;fnU|WnMyCU$dpmu!VA5^tw6|pOpu^p>Fe9LK)IO7rbvM16pSm{}MT{0AH zK0lg-CwT8adav*v4U23tzZde_t692mu?fDASYxPZr34`Db-+Xm)Gy${occ=T>maJD zE@}0Bxh0Pxoa9G0#r`Cf{6ydvHeX-vw%T3+zI8uEKXd+Yk+A@O3`kRid(p!lGH3h7 zJQuZD>M@X)>W=u_s7pnyJ?S>?T4WvRAFr3O4V>9|Xuo3Hzr$k5ty|s8AyKLxKLf0k z(H)pWQJ2Cspvm90TL#BkS0%a9kAy4j6aBEV0*d!!gLErbljwDd5DvU{b9;b2H46PZ)+)%BuKNc!oOaCRx?z?#T!N_P zFDfGTXQg#VX~B-}y(rkkkuCM=_jy) zv-QC2Oa<1*KPSZtoPFILFa_KuUB`_*X$C8pglvyFc^vdft~~KmNdPvtTzllPocFV5 zd9Eg(2T89ffwy~Lx!$WdqWa4*rFCCtdKCPV;D*LaMHfVJMqX~82VLFC%M*QEH`+3G-d-5YNMCKCB5=h#MA8EA1?=@$-V5cahA>@s zVuTjZbe$cGWyAsW=U2K6!l(FH_Lx_uTIQlAUb<{X4ugnq*^J%G6_tD~T}Z*i>N+69 zUP~IY8>Hk680?S00GxWU$#F?1o79w2-XSUkv|uGV=h`Nq&GKqORTo#bGpa>Y{BqHZ z7*n+pWs{Ia66455t1R+bdwpdOm_^RDFQU3&&{%)6vPhL z3t*^PRZ=lZ44qEa*CGTuB0$HE9FeT~wiU&u6u9610A_My6_WS#n%K~q=W7RBJKg1a zq*`?9!CDV<8lZB99do>)6A9=^@Pn0WlwC-s&Sz!V$p zmNZqZ8+0(dRR`XMm~!Tc`z3SdI5(Zy^)-Za)9d?YEKP86eUq`pPRi8m923jq9C))n z%nYY%(Jg892q0^em!7YAgLgBKX(q{w&pJOLiTQqOaeL+2WV|OaxDfEN`4J<@?B>uW zHA$8r6%Aur!gihG=UdAlOs+$h+}79L&dhhA!tbVS$;qwX_!D+)yzFgFSu*kaGq~#O zHpQz}@AE$BYftTMOjv-j)eIn%kq}N5Jj1Nc)ctpaO@Xfy(0!0$S9&6D+nw$Qomjb; zjjFJ;9bHemYY%Ux>S#$=cDNRvK_yVxUWaZeWC3>LO*98mszoe*QzVIp^b#}0$>*mI z6-O+F7H$cK1X2U$;vgeE(4ESswysR2&`bJNF?3zZNG|E>6a33KXy=kL&8&=l1!2&jzHYMM?;0)=QJX&L$aA zI<9yGO^JmM0Sz-S=Y)GpWgNo*d19P|S@R%>O1~9S2H0Hx%>BjnNu%xxTrmX(rL~<+ zX^`+-99GB6a1xrI57qh5;=60af0GBmh|9V#I#uPKp#p9nybgaF;m+uQ&yVO-D?1Y0 zw~ayIaqgoO;kJX;5ze)wN&x#BhsA)K_c)Y7x_2hk$I<6}f#q<=#k(1q)`cRM(m2(R zj(=+4Ll3y0(!4)tPR2nJCa_#0@dHv4#Z9^vopDQch?ab|vojYN2QjwRrv^dN!Yh4| zio-)zFFvKpjH?Iow=44cAi;R3PHT7Rz*GC7Du!$dQ*Dh{(Bh}dGgx7NlS_Tr${XI# zq|AUP6^V^BfF@Ygk8W6Rx6|tx`1|^2Xl@xV!!@Nv#t21)A3Pwj--lGf%9F(=!4!RI zZ&9N{g4}iw9MX6rLD!RW9>pw`mcxZqkty{9kXcf8b%F!5Z~# z&}TSTImkh46F=&4+Rib^|`k(e0HO0GP^5Th0i$ES?vk>jW!&Qqd< z_jPTQ)D5>l3raxwOQFjTe27vTXVXm%5Hos5w^EZ%DE=x4gC`9y+ zYoGvyVIvrlw~CiPF5?nw>w~63)L68B2II(U;PC)9+WvIgOeuV^tDtf$c0lP^+!!bS z;#D+NI%)^|x zt$xdMR6AZmx|$*f!270jC7YjLYhP&FL%MZZgHLX!>NfFpVVKYnfTvcG(3k$CMY&+- z)UbpGPY8~FsSP7(J+&i-7k3#sCs>JE;_3$eGD%a?B*YVhZo0RKV)+1`C;qaY0}^b& zJ+XlRN+#L^tZOS{25!4huw0GC)j?drc)6xF^2DKo+MxN0)GiZr{29z^#eZ};_UGr&+xY;UvCG4d>qVLd!)v}Fd)AroWpobO zUUc3a$L&G_{UaC~E!LlHPU+H7V1P(!mcWjzItPCOD#Gxr{ue1;o`fpBSV!>}#-G1(p(kXGZN`K;O$!QT>o*v5zcd?N!VO7A zrWDhiG9?RX^nO=2;re_u_fl#mQk=Za{K`Tf+z+O6}r_Tzxiq^Iax zz>?(gO8eo9HHpKqWg;E+VLZ?FQdKQUNix6rS%9pTIYCsQ9!AntRp=`W$7!l}yRpQZ zx+lvbIomfOCJu6!Ns4@TpWOFgsG+NO?6!I(cY9Wb(Lo}JX%Hz_)P13pii4Xb`U_ZH z>){j?;~eSvV5hZ;Snn3nuJ)O&NE&arbOzeR4jA6@;Y=8sdvCzreYR0_+~c>33dTG( z%0@B>Cx|tCOT^YE)kLi;BWvf^DWh#Ofp4e_*3E}HwF|_QIhdR)*V~`RQB_YTKvpL- zIZds2gWCA3_8L&P*39usE~u&-d#BAjBFPe4me+T1Z<=OUmMRjpa#5l*8x5CkUx_LK zt4;b7ldM3A*8aAMgzvOk*-gQG*2!4r+>|83yJB`qX>8+X=hgLxn+W+yFSTPB?UW~& z3pA!N+5LyFc1Mx%p(hN3KGiPfAZhRf;=+?A^*`PBioM7hGzOwa}hF~?$ zdb=prw-$~td4JSs$P3{1t(p*U-V@|JP7NEF_J@p}08<#aWkI6*>?`QYRu+6u#e;|1 z{RIdYX~x9#m$Yl%{D#6xf{L6kPa|H44g!P?n46mW!~;K$Mr1+%1~A&FxT6_ZW4|qZ zykD(D9Gn#8jY1fJd; ziviIJ1!c<``RX?(Ft5Gs>7;lM=?-|Mp=jZxLoveAjH=(Z)*27OOBKjOipho5C~N@$ zfMEB3)Z_n^*!I7V%=UlA|KEH30RRAyzh&0F-?#Dj4h*v%WpZ|a2mH&N5pMPi~{x<}O z|D0Y3Cs>m_zmY++fkV*Z-i%EH3Yny+g~&@?)ym&4{OleHC!s4Hrmk`{;Aaw_HN(Ak z-H&%ttog#+`Q7>2HbFa*?p-5uwz`oRDHKfqZFs+u!)w6Y%B#^|fy|!~ypC zI|x$uUw7iW6*TX^hA{uK?ElsE|FY|L@Bf(fzqeWcXZ-)Y$Nzic`(8zO0=)mlwZ^ZwKaLF!Lq9mI450iq8pu`>M<1*cv?m&(8 zHf`_ZAwVVl;Lhunp&+EmY7x3#4+b*}CCo&3m%Iq;rs<8cqovEXDh6c0dlBduwmaVV z=H6SkW{+R6AA_Knk@*w@&%dkQ#`4A9AhrgevDQcz6k*Cu6R@$j4`pao1vhlwA7ZNqE(N@e_sPcl-YQN4~HVMfPJaaxzWNk3nplc(L;B zUwJ|dZmhMQ^OK5G=a{QAcT6J!Uky2sZ@-bVAoYx$WM*>M#6n$6jo53$zP!cTDI?SA znTg?36iYG{>LMV0%nqyYnqK39nG6A8EOQmz+z!Qod~fv~**s5d>;O6Y^+TBvu>vX2 zQ&rJv{*YPHdleUk>MG;#T<&5H-LVt9n)}*G4ZQdd8-9Yw`%(w5kb3t{)p2+KO?WP@ zxfvrEp^-GvFsY?3Ph4oEfcV^?NFfG|?IyAM9l}1%TKo@wp3L6|n29~yzL}|_i3;b< zuLs^c-0Be$g$68_75r#MJy#>G9?GIv(%O|DqJ8b}CxYxM91`>MZFtcstLP6~zuY9Y6PS04j|;*Q(R(#7-^mi_qN_WyFf$RTKt2EGM!|pBL*3$Q zaWsHDNjzBI>Z3vo%}UKow+}y)_E))tY7|^G^h*DW8(D$VetVpE@1fbrh9pggn%C(! zml7erxB|Nnt+QP?{htzG>okQ^AfiNlXL2%u+HA5ywd9-ystK5Ce zS=qLu%m|@Ua$kGow5 zu?1cZd`U@bQ8KcPOHJAPN^=ps`=?Ifg1inO-{>U=gXzWBkAqVzoR#>hm_byfj75QP z(Y$Z;4rU>rripE$or`m|$L7q*%B45rO0SZ3tH9JTeTbFh5{{~fAaP`c z9v~d05-hE~C#d4WA7zhv7uzKAUVCppLWB^doClcsPGI-gz`pupc(7!m(7xE*oq=ja zY#JQnvY2cK0G4HSAbWtlDn~BHbHhyf)%r~Co{bCO%e7;xw>cO*0OOWCE6f=8k_kqB zMdHB1kdtXtmTz4)l1(t!`bPl~sM1Mx7SL`U;A;o^OLJj~_bDE{Xd=r$U^i(QV1?@N{t0g<;uUi{tKFVBy zx>)&g-Ucso(mpRd(dV83qslHuB2o5)+1t7~9U3*T!H$gPfc+MsbR|#+e{A)bT1OBQ zJa5Wo+;Ew{%CZhiWhcX9JIcd_S9m~cHVj;OBqX-U=TRV+H0CnawSj$#2oRJ@_LxbE zh)1nXQ4Gs$j0fkrSin(M+BMh!gy!L(6?E>;fbKbFz8EwrFH~(#t388#N%ro{Ud_#9 zT`Ji^Njj83C;{Pi9gxn}Pv|b%MU&E-I^gI0)p^ueId#pA^79VcN|W)~GTP0d75D{t z@P_Wbl4UwoiEn`Q#gjh}*l;--lzB(DtXkW{-ROQq_z;=%g zUOu9vWobv@g@#z2up;(Yh4Z1A^OY%P!bs9mG7c?{!UpXn?k5{4hs1kc+lZGI?#PL% zmq5COVLoY{al=C z+Bh3oZiB=W(p7-iQ_pJn*|$deQI3#B^K`hZZbsbGrO;hIQMY`wpw`uk=-*&DuNzn~ zCg6yzJAAG^>l%VXXD^ zV-v*ldPx|Z9%2gruE&xbE9Ou81*w3E-eY&nt$f0e%84)X`~yE9sbaa}@A6AvghuXA z{ce>*8V7z&LIaT_ZX@*QY7UiH#)ns4doaqtdTl1uE^09i=k~k%0oK>glTwzKLr@2P zNEO6r;&SvX?nWr5T!|+1fTI{UMu1 zoqcq0vl6k7em<3DjkQ~yVad92{1JhtxS}3CIEwm;@{iMi*0RFD=TzEQDF>T5s8x_g zj-&4vp5F>I=pm?QR0Vi}QZbevs!j<4;;&+=Png6m?n%`c?NV6Q5nMZ^@+~59I{fA` zSq^s^rbDrLWX3R-()xq&y6?^8tLq|fWW51~Grr?0C%XV~L8-V9(uUKXbzPOVNrGBx z5M3X}{Z36lAz1q~DL2=oKGa#!V6&=FC-2Zr`XFR23@A{E^g7pcwees$gKX5i;~R8; z?!g%Du7Tcze-*rRr8i#!{sB{97s!$ zA+!`_m}dcUDUj<#Xg?{y5(mZ^Y2F_@@$Q1aUrvx%>&~z;U*y;?FSXTOs8u$o*=y7q zY!PmEPWp!VZ$WbECBSb7j3Z?DRV4NSbhmh}H(cg*pMQ(AND|s&u+#e@r3BTEF z-@tZRDEtr=G9eJk+dyeKf*KB&UX+=ePB*FYLkX2pCA_h9uSB<3cfyj`^tObU|6RGT zZHYoBiz>*ZGlKn@;?edQ&$!U|PMu@@r=3Sn%<2%s^uvvlND>-=P~wZoeFmDPHc@mF z5Cdpm-l7(cM|UaAUJUA$w8b^_E$-a<7U|U>LZmUa=br3iLz!oWYU6B;1~9we+)7{X zex#qx4DW_7j>>MKs;|eE7l6w|C>!Kp-oirBOfpHtfhHH=Ps$AK||~#AJMIZ!+*XGR6sw_lY z9@*de1--v0OyA?o%(B}#dGryMXHN|X(~>?L@qJJWRU}2&5571Z5*#N*=J|ZUme#w~ zjH;tz+*QKZ|8d(M9&1B6l0Y0N3kwZdQD7xs#Rj98ho>DMVpi0jeO+DpiaFvx=`I@ zO|2X(bE+lplJ2XR$T*(ec2d26JEe$^;REJpAe;I2ggkj~B*V-p6U(d?f`-F#xq`k7 zo`^4UDM2U{)WP>rX*ZqSP1Pso3oD_qE({xoQly z(&!wdSeszsmcP69&s{Ok3*{d7qdSPn(?4$xN}+BmOf{tK1e!OmH^wFJ2*No{K-F5R zqOdpAX$LHDq(CwNzxtvGv!bjmz{&d+RMlnb4Ac54=*_@ST#xlIp=z_32Wvvglq(KQ z0&acp`shPdAwWAl_HS zrm@x==#GsvP2lQDkS+pM1CfGk#4Pn7RI_bcdaQ=iCzTOE6kyzRCdA7+ zL$X1QpH1V}m$hwd9BXz0U8+1b?%!!78R`Sb$+BCqIT;eV*<@^04^P4OT(eJsYv8Q=Nxqrg6&;y8l_f6W zlLShWU*WLyjs)U-M$bJ3>dIUWUw}wMTQbq3?w?|rrp|8W;9T%6VJev~kbIFqHdZa) zD767#wBZM}*OWmr!{`**>!!z`eVOSFgUYfU$=EM=r+)!g+=8mt4x{G?yTXYRc}v+M z;px>qmQQ0lb-*zBx^2^yM+OwSPknEu$@*bau6OpktPX|_^;bW*B~7VwD7BlklqOA4 zl__u)qVdpc@K^Auv?80%=M8{lAyHER1cdCquP2@u_gVkqt!jNbqbAdpBw9~vjL7IP z?TiIBBf)2j8wW?=Vp+suY5*L&3u9r2*zg#{eDeom)yM zL?C1h3W-o0d7bbSss4)Ry!Zwsu^O7VK#zUIRfF+b4f47`4em6-ip6f4180=<{wvsP za%nu_nV`ykqL;ZTj-d2w~9 z0rN5Vnt6aU^3qtwyf+rws4Rp+c7?;b=MF|p0%L7M$R8d(5#cr3YAuDL9tq^v^< zG#vAUG0n)gE9Sfpu`{oq=)pZYb4-1o9AVtR;r$w1S{vj2bqaR3eM=VLUkcY(68<+|!8*{1rE8KX&QJ%~Xn-b^QDmm^0l{os4B7wV5x z{4q?2JkY^d6PsO75h7BM?36GC@-tRTU>C^xq?g?A%@MWmv(zbIh%>%Cusjl|u37SA zl0d(loX7-7ZS+tquz2yUeosME@$%Q6kAONFW^w8~s3OgQ$-Wr$K$wTRit})@O6z0` zh72VlfEEN(n0UI1@Y?wZ)g*b^T84RTod9=Ivr0e2fpHgl>N|9(#?rmE9~VUdH~lC& zL~tofc1{wRNFC%g!t4#FE>e6#W_Dwfxq<|DZ6jev3LM3r_ z{Wki?z)=&f+$WDVzXBvr&Eh8Fa|xSQZYHqZ&SNskQ>#|CqHsp$W%VQmGD4pZ&-j)b zW-fJy{a$n?3Xm+BmAwLtCem-xRLSZ`L@~T367jHt1~Mgi6Frg8GZuPsrFxA71BM%; ze#;4VoxAumjp0uHt)T2bN$D@8t!&j}J@e(D{oiT3?}YDv<%0iJ=I)=l;C}`EGZ*~7p#S88 z|C0-@Z~sq;>t9*Hzg;cB`{VCQT-iJ_e^U!MhM)VJTEHvt{r{;2K)3&+7VtkI_j#%? z|FN|VzCpf%7c#fWN-r6?BHY6JJ!vgaLHL+wK~h1YHzSr)82@zaFi5C;V)7J`nI(s|D|^gzljDusZe>*J(hK%1 z&(>?rjQG6FE;2kSA~-av!O+2)gxxwH{_vKro6%)P>d>0MU4@={hAcB?gvH%Jq<;i6J<9$Kgj z)y__!@M4y%H^vWwXW zrz}_D9v9^-y$IAIdy`1N-LKZIV_2BgGhmF==rDKr&`@OkdKP(A05&&{g}S=*b&jzF zwXJ3myG2z8ksGi%$%>g`E`2$pnm?OhJo^2Ote1@4r5kgTR<|&udd@(jk8)}%B=mmb z=)jap6ZH*=OnQa6|Cm(E#E1KJ9f6X+OC<5}+#7?ts!876Wq^WyY!t?IRjKHNH%Bh) z1wJ9p;hvX+&d-!s%g8;1r0(Ox{s`!n0?#v zQdQ@zeK*UG(1-j>js14sj&h`DFx0+u{&>jBlSJpSh76dmYEzRI6#s z9V)gBe!m*fqq+0(5Q}mcs>Pg@t`D^$SJ`-<9*TfV(umirI70ZZZdzV5)N4>$N~w*W zTDZjeK(v#g6Sy}MEjalBu~sSjEfP;Bneu6=AA6$p$GOsnP=R{{{6F^IDLl_@ZU2sK z+qRR&cG}o!Y}>YNvu$j%vC-H@V>|ge*XsMO_di#%`|ZqbWM`a5j*J}7?>R4xd)&7h zl^K1T5K+zfxI|@jjNdR@HCXqT47INjsK#b%{F#uhYkDK+pLjs!EZbmKKu6^t7@7xd z;sZY|F5(sz%B4V~9&1@EE$Yt#CVV@T%DUkW@Ok;PeKj1`{L)Sj)EeDTIzn`aqn!T$ z=AE|}Ru)oojJ=#E>02JX-wZwAhL4{!_+voVZ}JN5ZeTsL+(NvXSQ%e*F2gWmG(&CM zZk+oQnF@$uD@bcIev@*H)?jH9H5C+-9k+GQ5dUcd)LoB&Z6V+|)LjuTQ?oYzTDU)8 zs5F5wC(vV(T(?VL!0RHOjYdbEWHmYtFb-?8m^V0Q7fXzNRG*4}#a&>Zxouk$STfkw zwy-WShP0U+YY8>q4@J!pM~pG@Bfdg965WHQYY|bN2&w??Ri3WyJ3t@h&vEZMDsl>hyrvwN+`E4#7kOjT9CGRJ2C$JY$9g zO8$CNVzOXNB4Lt!OC!!RnG2V{j<_n_(W`OYkT5kBcdBx5x=*VBGC=WE_KdN*Rj+Cw zk%(a&KPl^1yxVR)_POynsOFf@bbj39hZLP$JJO6Uhaf7rR`f1iKqyfjWkAB(#>k2z z*GIy#+(Gv<3N=|BUoPr^! zH1i|Rtct6}^Q@?aR@}TG(r5k2eqUWlnu_3EgDRqMc)&7GRyQRBkE)gXo=hEJ1%YTP z!dlA*$cuT3a;Jqo6r+G(>UV$84o-2~qn#)Dr+yi5fdeDGc}@n7@`=Eh$iw65qc(D!`hM3OLRl z#mRKrA=gMKETn7KXXCW0z{{4}u1`VE|NN);fos6DfzTj$UAkQTq~zIOhi6=D=Swh)DknUf+VCzYg*+#4Y&Ye7`> zMa5>n^~0SlZod`D{4Snk=Y)2Vdn&rqhWKbqo(08MX;Kn^14a*a#|&F97MyN*@yqQ` zk!BKhQvnwGjFv)fH#}H2f;EbxYLxR!8n2r*lG?=ty*ZPhDnWx8HMEogh39TzOUNhlH_8t-aGf)jOh-|GEgsyv|9E& zsR*a~%^f8QoJGsKCQS`PeX1m+7;)o1Jy|?3pC=bw_{E39dMO3eQt?nTz%UpyFd1J_ zTsy2df+@NIj4o?tBh2oT^mHYX%n%gL$Z83@%JSw1*>DXK~0-gwM9S$8D$|HY=`Rv1Bf2Tl8XT zoPS*53?I`AYMO$~Mnbf;O284;P<`U(l?h*Ei>aT)JA!9-aQY~7sDYs@-#|L*fMMT; z4Ex-NhAW$6l3$m_O)T<(8d10wDCcx|x0-dM!jsb13Fg+4do0 zHc7clRS`ynI(u4d>@`o)#TZ5F*Vm6Q zBfFhJHGQTJgo}NoxGdkV;JghD5uI5Qv3CT>?P}^FyjQ` zMGy)m9Gav>u%lk|P$K?eNfxS#KiXmTsT&i0BSUCL!l)CY!D&@L1hFg-x=sazT%D$6 zIC+2@@$yT);t7Z50gNoSm2}5ZKGVL_DDmR}%8TTs{}#}B&L*0z$~S!8RUL4svE~c? zvusa+C)nvs{1|cgE{0PZBJIxLHD89S(CV*#7id~iZEWNn#j1-iKj(4t0eaawFx`x! zNZab4BL{hk;GiFS)598|>m5VD<}a@Wy)ctJJv(CuzCDy1_d;-~Hvvu)xTLf8x!tc0 zyX4>l54>*IIEL6OMeRf7?+0j`&Ic5D7sv7+W0c1GHTw{UCLt0`67$~?OtdN-q!k{; zj@zgC5b5NK#)l0M!VbdpN86gKVV0*x?e~iX_zfx2(n<}~v*RRj)T1!}OF}4xXTGBs>RrN&3IGyoXUi5PUM8p^nJWe70~mvM+CCq@uILlBHjF|h z_-(0W-t(dGt-}|_&^XGlt5~t_KuG-}`C9bnr)4vj{jfOku=5hO5g>4X0Zs4M*DF(W z1E?rJ9d{HTwS2B25J68`Kosg7ZA&Sv$dqxF<7_XnM7&TmIL%saeYtEr*GYmB^wJue z50{<}d}JbS{X04E3|d|3A#nl}%sr`OBVycgvI8iK*>;CE#gf}l=;|Aka|Rm{uXMpT zwXRQVi?DZwxHY($rAt>|QwKo#6exBKEFp$W8sO+sENI~lQA-*WDg^J=0`IJQDsT20 zE36EVf`Hp_6LTZ$BZh^p>c;C2)9RYhXERb@4JFjNdp!LSvBYn^v#c6XSf+e6aB@gO z_qI)&$CHQ15y>V86h`qy@KVG&jxFP~l+@d z>hM?W*-gCA0&Pg#)n##pEv-$uo(hpuG4@l-!n8lCl^z1%xlQqE45jJhpJqS8+3|)_ zgsoB98vgE_PDK{HCn?qFT!CM0bT&pfu$QdLT5Gjp9uGs zAN`JSZ%Mx++~1@>5$;cf`_o;2n}L5?cikJ{<-P8DCtvhC8O|B});k%_6Y$-CWjH{3 z|H^RwCee0u{*+C1ziT?5_hK%Ob9007gvnofrX(=8j4nBD)q1mDZ zb(|g&wuQ3tPT%=cmCDhh1^Mc%25KnYG*EgpfIht*2VPnBNWVedlCU zU)a5VEO&g_@Rwi}s3K{sm4vx1KIQEq8Q*|9f#vx5h_N$Jw||wjlc&u}gj8m;%vsB8TubyK8jx#fwM(ZPo%!4lNQO-6;YTTsD{F zYO8Q{qpEd{k;drLlJ$!m411&sc_W(c&s03zo2`{Hr`NXR0RR>9++N07r24>L2bC9C z@FQGOJ*0hrSyXnLPh16AIqHAC=&_YjNww@VODpDej+J&b?&bNWd{XQ>E|LCYfDr*@ z2BB8Xehje^#4nUUdHz#(oN?@ zD(}k-nplJQ@#ZA~?W~D8{EWkGT=bjNG(i#t@Q|5N5j~^uK+OBt^$4?M+a?C}DpPrq zIiIQKaj|cGnr$_OPg;FQ1H(DvTo%$P(dmMzgUnB=1YpV7sAzCh;>QY4=E#^r_S)s_ zrK~U*hB5hx;f$fkOOj&eC+OL0Df@g5Llvf2cm_r*@oH8gL6}zXpd4>-R74S*a?8Y4 zD=&IRDx06AdI>{60C;R)e{9tUVAl!$K(hz;ms#NmD_tY#w4>b*sc2YvtHKR)c@wz0 z$mlfOJ{d|-loh?QDXsX3?BPhZF!LSKgP%454IsXSk410Qn#3%)ehb6o%T?kKq6j${ zyXMhqwYIQ?6k*bWx4b~o5RBUYHb7w;pVPe!Kz)n|y*-oBZ1l*sC0@9lInTo{1#|@G z�lV{e0mX(Lc9`^Waw;FRsN^32Z|7J&WvR_#odkhqjduIvNaI`&xwA9kaU>#Z5lh zF$O(rX;E^?cc1wYMTlaw_VXAuacm7yJNha4b0{YNHeDLWCmk~ODQF}MdpA2}__|lw z@%_QLCeX6+`mEe8aG3f4JPDI|fcT}8_}Qu}9}kIJ1&^}(CKBHC4mR*P3P0?E1dk!2 zMzoD|&=ZG)@)!HM3Tn14+d`|{y1O{IkL9xC9J7}YgOCbgBeXONt!^Z`x!F-NOdr+e zCila6@}B#trHZsdV_N5g%zt3|^8{`Jz*319 z(Qb)RBsu*sC5l6|4N(j>|E9P{dEKxe+tC5F3BPgw-@oS(<(SGz>`5RuufDC zJgu#MB2bmX<14bz+T1*2oj}nFB0|jJRxYv}$s`Tr z@9VMN79HR}a8lK-7+s}mw#E*Rg$=VCTbMj=x^>*UEA}c9YWrCGQSGoU4CF+ZRuA(48v*hEO~ z?ddmDCQ8mNIy+#Ps;dd7r=ciK-BGN^xCgQ1lI>^}ni~%;a~-0~%Rlv-HBBdgr2@0r zG^GZ`WuU9hm$ut%!+h)R(?XLa;WA`PbNcLBeQDxz7GlgJaIVx}`;C0ozBkk_X+1bO zJ`T5X^}+)sV4@sc|0a3Zlx(uo{2aa7QgA(&%)Pfh*y!Su!WKF6!f_2u)cOzg+|Rdy zi@OsfhC)07MD;?1Fr%ejTpc;}PXC*& zegS@Z59{}&zp#F56Th*3OZtuV-=sfS|H1lC8}Mxg{&BX}`TAb8KI1!m$JUT#-GN$Ow}yKBzaR)0=Gz`tHJ>MKdH)hU@0`T6rZV&&}n;Due9Bybr&KG zyZ~wz@4P6*PE(6D#R@9Kzek#cX~&4hvD{wzb{2nDlf8Dzp$%@801?tnWn}t#N7@*@ znujM+k5l$D=dj?Z!f(PbZ0(~U@iKfNJi~{zNA(>9&jM%BwD{{Uv_QHLn*fkr31Ut> z9Ms!!ZbA?f@rXvbl(Z6x%YyJ+iv}yVhQ!+OuJk?hZo;+eGLPGql|>->)A)rXLTJ-g zS!x-~VBDtawvh2FUCLl-Pv3{jxfKBb#5(^|SpM(F{Z}OVeFNg}Q1v(IPpEp^rv6&} zr&*N`Aiz5r7y$r3{M%Lq0e}GfwpIB7fB?K>Rqsl_GO#x{@$U@mP3hlQ|6Tfn^&hPN zWMFSI@Q<@K0f2WhFaiXA`gd#%1OfUTTLT0Ede7G0l3-5$m4W&E?8SDgf-6EfHLT!^U15H&05bJqZT)I4IeA4PoJCgD3UR$YV z@rT=a2L4hGQF7%fID&PZH-q&=*6#5~_w|p~gRwa~Anixf$d#a(UFa9I)g>cPq}mOW zvdVKcjZVtQaZpLibG}ty>$5|Yq|^}0%O!l)5Ugq8&Mb^V66!Y|p+*t>%*$w4?ec@D zZZCUuVxs0AHT!PL_>=7+brhJtp`(_cDPQWv22R%sVuuh-P#}PB{~W&EwkSvIreXD$ zg;A1)za@v7RG)Pj4gsK!J^6BsiUcR#OId!Bb@lO!6LDBw*D@~*pDowci;asgs9>b( zh&KiT)~czQntBGB~I4 zsE2+jWvQhll1D(+M|#tJ!(IHYNY&O_BoZ7Oz2B}{0T9j}uoePDyntBOBiHTp8K;1# zq({^Uz-?kw-TXrHQUp8JCwP}EV)e~0DG@JlVB^l$ZN5z9g%RIjzk-K-z8t26Vm_ys z1NPO|arLs`LuCO<*>iXO^dsOy6CKDl0TtA}*rrcay2BK9?)KKXRrjlKrmNnw*8FrBK*&1@ zEiAtd-J87Bg1dMeh1cm}f$ZlBJep!_rJX-QDTr}?qB7+Qs~pG+tn^0}U$&h6&NiF8 zys?qXY>&K*=7FS|0$?=2joI&GirD6Xo)}zBVm(7wr{b~?g;-wQx431CFW?dC?p0_~ zZO(0B5hRNPQ$YlRm>HV%pjAWeKo9a%?=i-pKq=(DCk_1?>CuB{+Bb}7DfR3Jc}d#! zP$cff$Bnfb`qL0SBCY^tV#f>wx~PH$EEDVg(g=Ed5NxQoSH`nTQ)4>A*!ZK`>3X|H zQ}QYj(hZbge$3!c{&t zw=SMxoSeidJ$yK?PYx|ZJgg^|u9ohn9*e{MJSF2dr9jQ*K}kF4g@V3kLx`;5cv$<> z1}Jer3d&5Yc8U1ls?SurT!MpCXng=2>)JNhw|$->9*r!%>@~e9PTMpFh`v6i%2hjU zaN&HZDA9aF!un4G`J4ipS7PXO2v!7+%v?{YCz5rxXnsHuLaR<*kHVgH!`BdFgLesC3G~oy8uWiO> z5e)$fnm2MO9uSkUyaZ}{@fDM#J+VCj{M2=AHVB>zb0hNO1+ms#?&6tEyr?ykBWun< zSZHSsZn{Vd3ZMJ9_4&p7DMBdr(}1+nmth|s$Ubv3DjmPJ<6aT7TSE*h2(r&#cOZy} zcUewMT?nK)yRB9jsOx6}AkZCNMwrU1?agGjg?xSKiij~NN2k_-Q`fmiW!drPqzY%Z z=MmaAz3@rx_1PmtBu6smO9Z!0mFmA;*lJ;eH)*3!=NO9+_vi2=O_c8PZN+|T!a09| zjgBrfB6l5F#r94Pdcl4z4x>ZzKa`El73CbeHv$WI9Uoj7Yxqj+B3@=3ciq!QOJp2< zTKmyix`-Uamosb$rkjcab|QP(j@|gg^-Er~NNo17k zy{+VIarRuZ1Qsv878SnH+TO4W&y-JW4J~?X*28^KZMh3S z268`byWtEfj13c9<7TYv1^=Ms1lcb6AZc;t(y=)_PMIB>T=MIn!Zp1{qOzo!=Un3O zLz=?%q$2s#?7I&xM`Eyg&{jqckE0oHJjLQ_`>L6= z-ag*#CLcIDl#(An6)Sixfz&d{EI$GeQJbSqO%|- zR-YeXwO?mN`db_wSP9+0p%Pz?3ZNsdRwp1rjBLG;OGL#L@jIj!^qg%>k+1p12N5^c9_-=&N0^ESnQ1tTZlb-4Af)$yWQLJ361dk!Di{n_Plw znm6O3CUIxhbV}$^(Ykwd;KK}sO9%90({3Y|XoKt44RvY!R$yF{gdaVzba&MBE`I^P-b5E_qGg8#~Gp8V0>1hns<-hZ( zu*CCZ)HrZ3Hz%!a^bLy3`!i6i2I_s zp=GvzG;x|NpYc;_&Y?374>`?Wwk#&F{L49T2fi-X*7$0#Uh#AK7a3zb)IiqJ$)|)4 zvFrtKJ+1z&J)vG4*U*uVYZQ3JjPs@T^QbYqYd;5UcYLpXl||@Ox_yDf2M~Pqi91`@ zL$lLV*uhTe1HarA08rMgfe@NyLIW0}!Y)aC2~&h-}Z zrZ$JoZ*2E^vi(>;F<04Q!@Ptg*v1Fj@UvD%=XH=r_jt5V{){nybtm&$OMxHiv`NDV z4AG)nqvrBweG^T91~$Dd6rXi{y?Nx;t ziok(9KwPz8bJVz(u@GnyLxuf?tkM=W3`kX!&E9TAR~t!w%foOUT#%K&?Q!&jN8}|w zUGfyZm6oe#Dgvv(bqYeOojXocVM}yFz5r2@jIKS`onE?|OpsEjrrT;l#EKu;;1-SX z0D}4nWef!g{Ej@d3n(Pf8GV_Q80xi}%i^;)QPb&lMEyK}QZ^FK1M?4c!|-Y4#u*K3 z-%!VNi|%%I$wL--1PcGuf|N%$DzcM2dq#^@9m{H65C^q!li1SC>trD+=1Fnz)4Uwa zBvRm%0~lAvFSu2ET)cbQ1SLUjBvPzG!p%h@hsocEE4rTNt}|RxK0cXX#o6n30L?8k zl<}4}$_M+qS_sb*S9N}!mK5P1&9C*ws;H!GWHRThz59mkZC(IXq^v^ja)tlu16a7@ zs|uUZq#q>Gzh)V^Rxxi?XDgvoU4S+9)v`6jqilNuV(~`}&e%72t2?2qJ^e75mkz<~ zCOf4Q^P6SwGR#iYU(XU+?eXAT-@L%(sKso;8eyG3vK@?mDL?$qft~uZ8gWJs)v|b{ z4X|LVeWMuC;UGDY6#ZlL=r!Q&wJb2u|2852Q}O&)6Y}rUpKi_DmHJ<+|F~-17x29% zBmw`YcdB&=1mt(Bbs!Ls_p0?brC;sDznYN$XA?0LiTyd~vHNx%^(_kiIiLTpgy`3KR9`@#_cAtq{^)mX4FQ4p9a{qdfq2i> z-jjaW+MApBx2?S?{oB_5F8#5!w}Afl+CL6!0igGywJd+dJ6NM2P``sUCJ{j(r>K)CjG(s57vK*khdB5$Jv@M@O#l(hkyJXTf;zLe#h3pKw#dpwfCgI zZ0)U0{I<2Xq~EsoH|dY9y^Zu=tN%ExyMW(|);9d7?_iCC!1WH+;2?1SjkV`r4@LR? zNBaNijo-z9i>UDU(xzM z(qE62x`N}!`77tJwI#Y?fVXelXl4V>?t>bKK`xEInysRc^LzAqqzB(q&kJIe*Ta?o z>mPnuf^!3pJg9s+103Y6Wglz+Ku#HJTane_;R8(gyn)19m;hXr=gNDGbr*XoA(>Hu zuPPzit+%18X%y1AevW%ZdjVbx{5^$`RYus2%*#v2-7D0A8U8A9OAzc1FhCe0&10Nu zX5Ia34dhEnYkoOZi*;3P=d?m!MybkSt!16{ysagb;UbyMu66Xq0hEa9=aqDuVTi8? zo%NGGTX58}0OzK%@<7NVjcx-!2vcm`Gmbu94bhdh#$9xChPoud|CnX7M5Xz#v9k9K z5BR15W@&krl1WSt-E|j*dpMvToEG}$JX9_EwNueV1zcMo?c>Cnd@$7zBqv6WLsIa< z{E4jC2<#L2vHBh6YK3s@8n%!_haL^yxgKKGsj=M%homHssSk^yO8C$d95c@MQUv}W z4XMM{`9jIKK(GyF1z<8e#OrzM#n$4Vf3f6ZP|U9!epwjyWiTDnwt1$G6VNeG~*^q}X4h1>gyHCqDWT z8%A4xlPSks>gpq?s-t7{tJX}1*1sSQ`K~Fmm*P%K(2uD7A^aJ)BDam{qHsR1??oeu zrC`t^x;`v~l=cUd&a!sSP%a}2a==kP;;+9dei~AIz<48XLGGW%T#@Xn1YtHYp$G6& zw28k#aR+9bZ!KUwBX>HbI&CH8bHPMpZ<2u%62-i~>@v~3za>ux0We1<+%$p&pyR04 zuJb{Er&$>mqw=5{`uv>`Bk$sQ-TV^7f?w*7dCKUFV>@Mi^jjCQ%_m@u#6w&cU@zbZ zSf~K!su^$b9|}af46-OL>W(tVOXO6R9WBcTj0XMI((`!8Is;N4j$KHB0KNMiDZPIJ zEzk1R0#wJk(gmi(7><0Z4c;u&SL6cTu0)oPIBS7@W*>bSAreiB%QPY^R;lhT515u< zo)CfMm%i+0QD^Cvl97t~q-pN2vR}$D-1lkgWx&s5q!mMHSZuY{c|+hDzCAo7CcY8o zOctwL`D{a_!t^Qm*+J_e@N;;G65Qx2W#pPQfoqT*3A3Vux9D&I1V07Xy)h2n{#FjZ zqbQhkeL%e8Hp_N!^rq+;kvgiHL)FTI<6t=^^2=wvks1K4GyBf4a4X3P6Dlg&9Wj7nl|@BspfZ z9YRA8eBz|lLoaArj$?>BE&{$!Wcwu%quyghDAjF)?(RfflZnppH6~%cKR|xnAviYA z(b5RHMrMn6HYFxfm>1sh`b=7DDu`IHRx$yB0%aQu6=m0e{vny-Zn8ClCX;tot@Xkr zN5%gzJ!J*syFsh_r_KCDpduSLd?(8?lajzI{Pcy|I2h1yzbalpQ$DVw*tEmEY zwH>7&ao|7f;8CyxmQBxxWfhjYgC3&r#8{$Ri_93DT)OG78ZzCjO zIld3Cudsncx8=-P!1e8B+jUhk?@t4Z!J$Xru9NbOy`_=tK55J)A0 zGUM}|4?}Q%{6!x%GRE=5@GI>_K zLRzI6z*xgvgKIvF$zZLwh-4I;JP-gTpR!Xi_G>_DE!y2hwJA?_pd-l<5-{(m znNNcql7mRpVP_N(1LkS!b{aKCe-WrF;q8x5u0=vmuyJGG_`H^pqHwEh6(rS&7#Lo4 zZDK0WDEhjIN&a#QqDjO{Qr_G?T_a)*UHo7KKedU%5Wrz?-M7Vl3q-HK@_~LVUI;}+ z6d~92g8;BzQ*+K&VYzST&IHnG*FBDg5Nz^jqimO6{qsVv-572+wHP|dhSklDFJojP z)0S>N!{1nN579v%YUv1ZcZ~&PaAkQ1Fs{--L{Q8OAUMQ6T?Wk-OSmJkkz;o|@K`*c z0otb^q!?WAFspA6XX#QN3vR{Gv7m4^9BAzB7&%$Ov^}~?thvmZ%a$O=!KjQc1<3`G z#pGC&VSTJ+ENNT2JeM3JNCfqV%=-SiR=*iiegABO3x?$v!x>OTbXinr`~z2F(9uB? z)RsWX^;#aml@ zUSFocIo5><8breM28I#LktzB}}<1VM}$S3Mz|VkRGvDvr}mQzxbf{6OBU znGv_&3YZDkLEH7o0d#3NQODJby3W&1DIcD2?x_1fyPA#?p!PK%0)0@*`B4tLZ{l3?$cG1754Wrs-so3gF%H-|SK+J+ydg5*L$y}H znkuX4$;6p`iKjZfr!sH{f89V&`7hQ)eKXAXJmAld#&ejHMTKN5^p9-?EG@Cl_Dxjv zuW%o;q%o^qn>IgrFOavor}0Mb<*!7^L6FL{+o1vW-fM4Pk$b<=R{;8a3IHMuzSJ(c z<+L+84Mp|aWwV070Mj%neY~goiSDz{M;emtQD|+zh2}g!q^&oJK1!jqMIScdl?$G$ z0PT6k=biL&0vc)WH{tIE*9hE^;XbhfSfQR)U!k0iEa01Y&IwMx9&1@VsKLr)(NFF( zbeev*vw=|~QF=cfGd~`aUog|{IN4^vQ8}C^Fb>mY%ZWIOS$_a8%KD);OTP|@Q`pH> zATUxs&vDKhoP{BukX*c%md;+%Z=ej4cCBIKO5OZ3*KM_%k1pS^3ClG|HZ}D!KO3NP z=%tz$N6@C&SC#n$NEJ}`;%`&eh{rSh8qP7+*nAnfc{d%O-0&c%$46EO)O&~ago(LE z?vGaEc>+%b!penxgL*2xoH}7gh9^d4uVsV2w{GT`;&P=MSaoJ=HV*|-Cw67W0tRUs zh|#^EzZhC2L+FPKEE@zsXhu;PF&19IYor!6^1TALd}!jJCl!XPSZl;alm<2?20ScG zuL_md{ZQW5?|to=RfS+_J@+DP(bcjJUa&^LZ7ctA{Nc-Y?bo<*kRxY);RQdlfM0JB z^10V|QS(`I2p=6WX~e2^y`TU}t(-7p{$rlP5j|{0`a{ z79+GqY>iGzoJd$CBrBXmbpTILEgsiA@JxQMw=E&a`%zjlpXKM|O=cPaz9%RV8-(xm zrb0}9gWZ%wAzRAD0h@2AJ8@eY(gOWTt7^tgeDnD-LzPI_XV%9;HOX*SeLGjk@(49d zltrkfZwlYhq2o3iG=y-lg1ZB1v0@*DrG#5pe@(;X({8Wt6Nn==5o7)heCV##EfqUg zHA@=kIthqRHzC-9pYXw9$wFM@8TSrpXO{70*9Tq;n^t{oVW_OKg&1|e0#|oZsV;3a zwxW%5Z9y){6CZ=Vrr6*`bRtM#2m+O|@3#}+T4++?9@2PS zsL;dFT1H=!&OIxeiA)e{lHFZ(a=Ssem^C;ktkX$}^0^Zl{2Eu5aMU7FVVyDT6HZI3 z&2r-{9`H8Bdc4VwcD*?`P%Vy1Nvpi?kJL--ot}yFsMw1Oc(eiB;gHK0iYre_A!+&o zDk_2DINbq0@+4ACnu${wXsn5ScSl>cZaBBv`$Uv43pq-pL3Dr(59m?SGnv6uVzWXI zjUEzPZqpT>4>Gu@RFZ9@iU078NIn}F0(m_l6JV)m53BY7s%vtN8N&PWN#-8$nk?A6 z8Cru^h;Pu4(HVYLr|;my-1)uhTEZbTAz54nkN_GdtzFQed{~+v;5 zG@0005^vz?>KX>-dd}PeVA+X50gYCSgli5P+H~w3zV)13jl@+F4?O zl3Q~63{iChTBB7Oamcgak;@NU#B9dBJ0*sTZifgm&+vhIl~@5Gg+4I4J4SP*V&B@P z3Fcd>k38}RtJI}FKUuSp9|a2@Fe6?R7@&^7`k{Q#E^}XIHmbIWE@NU4-cpmhdu0{u z34{O^gfgMnb@$Ad1C_?S3@Tm?rQS1#EQvl7kiOBbTKsSZ+IGYQ?J9v8aI=A6s=zwh ziBSvwh2Xh(TQ3Wlmes3j9;Zu9l);|*u_Nlm92ty+y^kd|dv$yLGWXORcLgP9b^d#D zW7kwW>I6r%5Pv>>(Y1A-+rATv<7$bDx|r4hxrupD$*m zbjSo$^(L18p^|d{ipxULcW2?U?+zL}udcwS9=>Ku8S9rC- z!nQpx{Eg20{gbWasOS1}(fmWk$v*eL&y=hBq#HHYYd) z+J|Pt*lQAVd||PCcHQ$Fmy+Jk8t{j?SB{ZWWN7&rRK4Fja#W(ZVTy7exKaF*mcaQw zfxEBPMIgr@+kLp}i+Pzb$h}i1S+;6B#GJ^Z@)8_UKJimy9yGF(*vs7_KWOVZO)*#b zp-;{(bgXKn^(-J8GzFcfQfMN!wBx2U^mzi;$kITRn?g|ypQJpW7SVZv<+#LR_<9Bp zJ9+FC*xw&$1rIl6<10R$*lO|^=?tZfFUI)P;X*nx7LL*%B*kI0=R*tS>+>k0+*4UhI&kyvWWtl z2_`1ToPbVMq~qZ<0P}#faWBTNbQGAGwgEu?3|ERT0&t%6?w8?HS_+=Gr!Y|TgB;lE zm;q6vBkaHt^=cto)5IB86l#X(D%t~9P}0r7y`fnrkHr})v|4>PHG`O`}O8e*vV8 zfs<{4I#aek{UB_c(7#ffVFpXVx}zQ!>~OgQVyP#yg#J5D*9Q!NMnwR0 z_Tn}fowzjHOeO6tN!G{-MVE}0bh9;E6n;XDd&LZaA> zSM)(fp+rZ8?7Jv?*ss+`8yzBP-?2o!4gm!_@3}nqfPvclgLL z(Nqc8;uen+twRnmjd)QwDFWxL6DZIS!!KU9GZbcNX|7GJ&BOk=!qfWoTttNKmgTm+ zMURo;_N>DUE!S4_3)jVAkJYVvY)1(q5y@ElMDj;g}_JzhsLPkDQMd>y9*D)8LWK05CybAYR19{uSl+<;!)DzV3w+C8~cKg<4_3!4U7PB7=)@PW3U3v&d9)P7^;l z#-_-FDAGl+JRDNt`NDqsw_p$7?k-)qIM;0FrUJ}9VEu-a1LMQ*Z4oqi%S@d^!DO&9 zh1|MCQ}wA&YC7MfW21~jUhj($!$Y+x%uvH*3h@SeNl1sdo-~c@(E@&cQwI@Ib(4L4 zviXLkl@f6Ed}vE^#*ch|32sO*HG!L7Vz(((p%E+q0--^KSQOr2MT|!{^N!U zU7+vHN-G7d-x(^&w_0Kvb83jarfQQ8`QYz!T!(C6y|!yF2db-UK)tlUL ziGSTq5*&xaFO~vIeP^ zz4Od11RAgOj37LnrhQ&UPc!qW4E4B`;9sNl8rpGbl<$CVvA=pZ@=xiu*?@B(CIfJn zc=XEcGbGfZFNm&PCXYea`3ZUueAV|ur1t0F{5Dk^r6eu$j6PdnYA^dD9Hfu}&9c)5 zJtysH-jIFnyr_%jU=7U36;)zVAJxq{C`ikhZOv#a9O=E#`XQD&+&E*?78Bw$39Zl$ zf*PL9(0lgm`{7_6Gh7Yw?FzZDPDn7Lw20^2p~Y-XRiY*@2P|Cf<-S3ejk^QNvRpC0 zLqTjulkn8~VYy)u#XYnICH9h2zv_lw7-GQqsvIeM?!iFR%0$1TO&l_?kxkyf@RyGu!5L zB+get;qUTnEbs%u$ee{E*)2i7y#)H*h@ABJbMu&Ga4Q46gug zW0Ig;|FBpj>H^7fo{K;X8w0%0RON-hr9ZXs2{4f&cJ*{;xQH)lA_yPKsCuptClR}C zJScSGZlsnO>y@oYt9<%eqdh_X+~-O@PrEDK)1gAIova6supGE8Y}|kbmJ=nJ>j)Bs zZ;ejsH3klLxnp~v&F4&< zu+0Ze7^Xdco)}kr+n5P6Z4CjS=|`#vq5J68oH6{eDwwM^V!m*8Z2W@2J`S&8ll$G$ z@@k{TIP^mE?_(R8b|Iq7tav7oHIh@^7OhoMd3M@~6?2ScH%FF`8d`fx(OaMzh1`}5 zs!R7G0G_3qXUzrh)Hf_PIC%o)M>hC+M*-bVUS>6cz(iG<*;a zvG~qk_>-r2kxh+EPL>3npGx?p>zbMhBzNg!FVDN|lnW zmYXJp1Zl#u+(Gv<3N=f2F}vn)4Tv&Mzx!S5Q6untDZRFA(7kxC8(bv%`9 z8k>%qft}KIl*#K|Zj0zp7w;Omhz`hq=6mXusK|aDZa?-W^zx9*4fOZ>oZ%^?(0Hf- z(&(l-kk(j1WvcWrDpv}xPXL_5NOg3H-7Da@dPbdzJf-%Od1OF^QV(eXJ4sjXYgqKm zGKpH`q;AbOYmc;L6Mml}8Rg1Yh2fHkV^vWgwqgerV`+FFdzU2md^TZ{7<{K$FD=B& zWo{TPI%K9pvu(|h6+44k64sBo=#Z~y^i27c@WRZ9`1L|8^!C^HxxX7Dlv9Ok(@P${ z1`p>a0AT$@jjZou<(AR{X|lL*M_s|}O(~A|rk02YPtrgIn!Ppo&w_Ps+CfA4;J6`T z@r$YH&r^Phr_)vtatQO9RT;Pq3AH%I)ANHsF~{UP!@U9hVeRl;yipgJ9wl(>$x4Wg z3I<8-rpHO$Djk)UZQs6xPzdnP2~+DZAh+MbKG1ipFFzZ1(rCVh+g)<*Gv-Up&2*XN zF3^p;c%8lKriASfh94hu2|8$|rGCh&19eq_eWX!u=*azFHH~zPlhhNy_^r^~6YLDTsuPYQHik zn;{_vEONKjqiK|*9S1?bh=ik>qOX>;(Oig)F{Li649{!dmB)wX2F}yZ-w1FjzRo^_ zWH4?r8C91>_ENgWKF=QK?kcFq2g?awr=TTc@J?1m(CZLvhW#mZ@JOhPTu_2x;6XDB zG@GY{p5iN37*S_WpecBxzDGbC73W}T1dyUYH1z@(`$stV)i2R=)UH%ss3t_%K#|9I z$$DN7V*+5V%HRqid!wJ9=Z!;E)RI>DRXdwtDJjmbxBGOt))mm*MTulpgJZrE_AdPEO>#uXoeGAl zRCyX}C5~Nz&!K4B%nU-gHJnmuKy6pt0?hh4%HdHlt_~FjPN54iYHRhgJGn_Xv0jeX0bHVMSofTA3 zLbqv)8dFl8;@j3WFcnYCO-~FDbJ-aC5YSf@^F66AT^a zOvQ_JEWSU(p@|+@suSNOqJ$*P3F4PWXY=Q_eujCHv?%d~#_?DyTwJ{VcT6}SivrBL z3M9*{^8rLE5x2O*Sn0M5b!GC)fK#lrT3#3*9;FmMQ(`v%^Co`BfzLwa?Ixqcr~uiP z)fr~K{^|_pUR)yo=J#_mkn0igZ8Xvh5tey*xvhCh9fS)ggZjzYppw%ilu)6j1&v*Y zH9>A^tEGF6#f6_>4&iq`+6~7xIB5!qSvrps+f6Q`U^Q%%DcF3tO1BF`jW`*J|jB?pGbvS zbXPFUA8e3H?wnC$Q8uo>A|HoAV`ItZdq_*67b*JT?KqB3_n>^VRbKpZCE7&mt>gf7 zI?r1zaQt^tkwj?|*_idA#50sb@#Bc`2Dg!Uv{lC_P0XLfjkbQ)Rs|Vz>|odne&(KF zSY6iFpMil0NntYY~yxIHS5@(hoblUbW94Ri|I3zKOTRslL0>6y+^b4%JgvyFfmXN&@ zTVs#Y{F!*UTekCkq&jLcr?FE=?aU%SQn5`ctL~y@ggol>LBht7IdYi8 zDx-No;RpG-S!x21$0@_JJ&J~J?7YBn>B$l;0SxL2`@N7sLc zwsS%ekZtSO!h@rxXb(R9s&B0RbrbI2MVs%wZxD2{vK~37MX?L#4oGV7I(wy)(;yGS z+K$|AQ9PGMU&CSG+9@EAYuYmXVGg!apdxRoI+aV=)$&@e-aonj2Sc7V@<`hiSTpl` zxhQ?fAIks~n+~uWUmzd`qF;aS&)(9%|K2Ot=l(AJ?k&CESNLP}pVM3T{R26#QSi_C z{(m{guOG+>5QKQEcRnsy@kWP+1|4sUh^>3_yp9H@|vB#$?24H1mse{2oJIrA%qWCCoCa4}v7|qZ%i?wcJY8&RZb|R(khojnAQQeN1_!7rg!{ zp+RdE^1@pwTOzZh%3ABTwBGJZ)FcJK^?E$NzrBLOnwvG41t>)sbfL+r8GVc%8orsT z^3L#+T$S3W zexf^d*0CfbZzVxTixR+l&^%TtQvUGsM`r=Pt|49{Mk_&Ny15($%~aV2oti`fp*gga zFyMyB6Xw7~ck$5xdn^Jw%J~La6rTl2LI2%gV=M)wFUQT<>^C1{wG{OnW@%$x*O`er zV!~?wh19v4Ux_`uiK*F30S;k#;;u%yf>h(25t7$?4P}eOz1*p|BZv3vTLD-5`FM6q z0OfY620z7IGXyUj(?+@+tE5y>tq<7+-wa5Z0~*fXv2#jZw^*QewP>zfY*gRs{h&b- zj3>&u!Du68MGc&O&z@6~MPh-Dg0joN@uc9_ivw#B)gJ-Z+|Z6i#le`7y9UzWR=J34 z!Ui8gvC-~Yl+(}Ot6) z8?I{6Gu^Uwj*De2Hsv?!gKC3A&2)Zc>f6JX+hs0fjuhQp!;f^h=4H24%q(P4rm6j` zX-WJm>q(EBJ`fpr(!l6X(^F+02I7+VovDN))2{lk;dQ5DUeruR+&uUT~LpV@W`4i=B~_#0vEQ`AaU2_$5PkoxnzvbT}*VjdKl=FU$zm%X5Iii|&M|}{sZ%=6 z_NKAYiJT+bjs&-4-zp9Rkf}V$n3G0^y4bTl&9s>$ zBvUr>_6WQ)xjw8e=7a{+hn@ zQ-Z?qG_0Vmx^0z!z5!D-CI_Rdcq=cpAX+nGT#iqqE_g|^=uJmd<=saIqeW;ci_&h~ zrv&y;14S30JcU96+eW$B^ixiY><)Hu7cj{5!P*JK0=oOSRK}(*GH1BO!5C=Zlu&dn zY#`eX%O1ZFlimjtiD)EPB2np&PCod#BEiEWy^4d+FhyP1B7$4#!^|hXglerC3152s zHM&VoL4dDnY`StIk*pHPJ|I8sdrraUZ#GTYxTYGpo9;iVW9m6!hb`d%PUA;RB-=T5 zr_q(ug!WeoaRp`3&e?BtWpIB0TdyA&xiWA8imB4)NAcBjCli`WeOqpRPO2^$bY{+- zP>EUR+}La2MW&)x=(;xBZ+y2*EO->T0WtI zYnB(>N{aM_@^0JbwIuui*^}waKD3%%$B0huqFtlEkQ_!?2bDwPXMAC9mY{hU_g?%T*KQ zQ27CD+1-Lhc7>Ss@`M}q>->m4Ht}ek{Dt zUIDnuIMx%$FirNV&C=3=IE3K>yrnxv6ptB5$_kd<)fQky##KCY(3rEsXI_khiJ8Kv z3C(;wCvDSW8js;M6zx`QkS$yI3YjI{-qWL?R6oKt6=Ym($)jJ-de2=q@~>kuAveHf4*vHcoBR_Lu) zogKK6EviHB9|a8AU?_=Vqmrgt=b6#nR^?1aKjKo7At7KM!)ywhnqp4X=^Pn0yo(?( z^o8fggfWP4osxNh@oqXjTL>alu;Vl#y0(X8oR=w&dJ2^dl$#qT@i6=;Mdt?@m^BxE zbI)2QhnpMyV4bomCNe`wQ_=xLQ%WG-c4&k#>lC9;5NR_ow@nyxY!(D~iI|n2DXlDNXO)_UBcw+xN{I!o$aU47?Njx}cu|+5T?3X{mTQx4?;f`{2J@N;Dd^F?E@Cg`^ChcP$W@h#6f)YkdoXhnIX^FuA~$2V_=5f|J4O|`C_owEq%J@#1iD#N{Rayr?1r3Cf1bU9`H?>0~_XGWCzA*$md#Et+ zfPwDShTLX?FX$H%yu^VvTpsR$d9`Fp_E0>h=JBp(Rxw{qiAxvPhG5#0?*nq`leihz z@k1SZrnA9Yq=4UJ&p*wB%?=YIYPGvtO~e_|KyM74smYwxpIemjmlX+oVIU#@KBYGI z1ZsZjb#@_Rv`r(_ixswJK~0TCip~Usy@jB|66AD6FTwR$PZ!xkaXh z{GsOdqX>;f9oC&8WVl!U^+xEjQh|2_0@13)i{5I^9N?J{%NZxCepD2Rf4GFb%-T+S z*1P{6V?kv%WbadyeTHhKV-8fR3P2~#Y&cQCP8PFE zlcM`6>abpx4Hpc(5!iDwT@DB_NU<>xZR9|-*K$1KO5ICyvxT+l>+I-MTEf-PBq|`5MMAE+km^>e(pJL*9 z;mVdU_GNgB%*F8U(QPiYmRde%O1mVT}yZO|7W5Rmbd8$-o-^bH6Jp*vLeVF4hr zYwBpv6(yDPOzi`{@^5>tc{-J*&q=_iaX9z@4uj$?*G7t!QJ-g+z9ErXg91b0b=GIv z)BDmTPpA-9k58b?!iZCkLDb4pvEep+roS)7A86cy^hYFj0K~B{m0HMUsdEHtM#rvN zR|D=K9Pk9(_);zVk1YjlPzUI~FAop*@qOCyBC`g@Ko32RO*-OO0ob=f(U%c?wFQY# zaZKqq7t*Jr@^zU(i$O|-(^b*4&1u=r3991MbMAxQOjFG$XZZxiI;-rJmt-5qioQ0H zcrgL!PgRMoDgIy{o%;z(g+8z(*QCX}D`66+hwYBnThm@$0EL^g7*o3(Ils4fW6gPl zs^>~g!t8WkKA`)<5`n40$4&P;dKyHd533a#Gdi1DlwwW8xR#Oqk~uS5t!ANjT)sGT zoR^?-OprIeXcDH9-(`+#4pjINcUG!g*IHjc!_>v8*OHUme&NRaKo|l7v=K?oNZSlT6MwC?g`}3iSBuj7{*YX6q;-~pk;S+c83HS&1mFvejQkV(dCrQUu-<@!&lbtT@ zi6>#k9L(w6@(QZCARVB>GVWL|9{`W^nv$F7c+-iuI?vUoDJPB~x`$~e28x#$pnFHD z(8;}{GtliH5GBxdGrbh(#?NXOZ8>FCHaQr*i#hWI6tO|Eluh4SH54Dy>VcbvVZGOR zAY=kvQK!s&e)+&lk3x?_08QS7FZ^26ond%aYEspGnvX}g99uuAeKUoqb zyHR+Qha4Epx(aJcbLpG2!8!eqBT><9+kudenV!kB)}l0lhI~fizOw_pDsf(NcsBIm z&Mt?eo;&Ts>`omkJXR9Dmm25KCsl-AbiQMdQ}|Jnx}1C{nxD(csueB@J`B5BAjl3o z-Rh9mdKLOGhBPgsN1wJL0yfTc?y?ZxMPu@U_!iM=%MEIrjCv&iH?HVpnNR77q~v*t zk*aj#SAI7xRz+SVndO@<&0S;gpPj=K8zW&TG@BZDo?xXTWH34;@Xb!n))?{WCsA_X z+C>i{U<(jX%%t0G5=6k56Z7UXSnMB zjt}L+EdAvDnP4m!1Gc)i)rtI;OLM?Vvp)!X^xfA}=c&bL&}+qRH|`}`T0cFjR^;~d zq)(haNWroBxLlVkJ&WZP+!qa_DjBLl%Oy)zLbS#zl3?F-2$Gd~shVWUHnFE6$uAzX zBHgiOqdOvXJF}6iu^a+XCw68-y;NbCmIEv1eI&*BxxZHiwqBz8>#&>AKjC@+!=qIC z>7g~nKsl>3KC#hX4!3DxO7hHwS$h=gQ<5Kkm41h95aGqV`K^>%r=kihCM!6kl4Xa1 z?(k6(Eb^3|^U2&0RSyW|JS{tIAL0KkKJm@L%zvU@e#R%r;V$qF-o5 z%w-~ufZF2Hc?jt5sxOC3x1{-Z!(Jc{!Gx%lq4X*vx1VLG9`=e+Uo3rFz2N|WLunDI zNMV~WCH53F&g>Hem>>%kw#WKl3TSx$ip?QsRaqCV8uj|{`ZF=YqziO+J!Sc#Gf8nM zOW=3Zl6%7DQlyjyFEv9tM4>%YYqtpP->r<}(5J2S#Dcfa#NP40SS4X#FC^E2gniA% zeK@M1{UDKQ1O*3?emhb7GGTwFD{9hkiY3DLNR{@pdo8vW;VP+TvP}%nriu&tMR~%_V-)Giwh;7zaxI7R~fIb)a+I4>n`RdB?jpIbi84VUa@*|Svs&a*bPnfMlbScDn z);_P;W4`lpgzp`|DQZ{v=PD*A!*@ANS19$5>VqBMi212Qq1|Sq2{b~>r|16250ySE zq7x&hw3*i|RPiz=*mxyBRN=1D^*z|hpZTFZ|C1jo&~(Jp7O`5ulYF+hDzgmGozR=sECz@wH&>hZcZ;H$|NG#hd;%@D1m*32=81>7>q zw%X*EA5gbYrb^f4raGwCOS(H7N}zc{@SwMl=Z_j(v>jxvy1suvho6d9=LqWsk|x3B zY&2o02&J-bV>$vB#L4>jyz`|^?7p6KcptHzuBB}x1SjiZ1nMIvZDTSUEQ!ND$?W|CCHu!qtXYwz}0 z-ffr*Eh{1^xljZz?ENyP-UAwKi?aHTo~9pl`m4C#oYSbF(6~k>rM+6wQ9mhgrqszX zuq`n7bG_gF{$W=3VK_SxdoK_4c0wL*7{zbIDVQf^Dr){RBh#@WMy2~>99dd+j*im1 z>*00dxwV(W0|Xvv3U6j*UxiH6mZTaw$uA8q(&Bi3LBD9`F0zec$~`asIRAFzk0 zfp>jQciNenb6&@TAGucja8LzPH)HeDchY{C!4FcT7^uSc{}dMg zwK@A&jv`3#FX_+1;_uS$!s2&f@%#Mtbq4-%g{2_W8|SygNJ8{)6qX`L;cpa{$YAf@ zDlA`>ei_uS*HQxiYZ9*n$o{wdw*c9{OTVq{b*%pw{l}s02mMyhgh)v44YWTX#lL|z z3K;2IXul=>f%a>Y`16gcSEavJ?7w~LH`c$g{=H(q&cHv;);gizTCo{~Y~QdoX{7Ww zYz-BR{4HC1OZvmsUYo>Uw)UFzm#zIx`fY2kBmKwdKL_jI*FIjO;GgsT|LRlxy7mzS z4D;4*O+YC64O^2(%6-Gu(7-6)vbDFQU$*w@B>uFuSEWB~?eEfWTYC-YKga%YSPR0u zwOY#yRlI?AxWLSt{Zt2$E68}5n$_Wpm}_1E(M zD{ApA>5omrYm@kE)9{+~*QVib(r;UP9qB(t|8ZD%!oIa>uoF6c18Z%h<~Oj$1fzQk z>$jvouzqb4e_{Qa^cU8DlYV3U8|&Yz_3I4$(`+pm81Ajr+E*Cy4O`Pg>VCu4u)rAp z$JWpc|Fv5GNBR}D*bYyFS|nt=A=t^SNhB$f4QE2e(D(CaxkU;wgDKEFw2Y)7(xPj6C~^>0U@{K@NQ! z!d9ZHpI$gl>=U6dGDx49ArOy_zThq#1>4nh3z&iEP_r79ES#r87~JSAqcSZv?+M0w z;meUvLp}Ryo3vl!{iH^zH;NH(%nO~xO!O>-N zQ!!urJ8UJva(WoM;(9jsmdtmJ5zQxSfEPmOZm2OG^if$J$0;jgh4C*cz$LLPa`^n6JcJQJ7ZR;u+--6%?=W|U zSPJ-+%xdgjVs^!(^PadlZ#cTZylz z6vInlNrR6@a$HGKgG0Z!?H4nSSQ%o?b>gS%@Zg&;QJ8GSp>Y#I5d3mnh$9^N31{sh zTZO90{fB9YGB^q%kFEpPNo%BU@p~Hs=@;`h; z*;R_>j8`Nljg``8CUFiiIMBQh_AXigzdb6B?|!dfOnPZOCrxN{&z!@ z8hs3@MG^T^EzcGDZDtxY)n8%_%dkA;(ZABy7m9tu#)nB*RKx~)=+ZM=>>E!0(lW(t z)MFXSUT0~#N$YGU*_^r)`OvYYBe7@6WsZ+uK?kQ9b9fLq&Dd#&r;c>(_odOlCEWM+ z2n<#UdKW<_(YM37acs#umhlF##j;F~ILjVquO*I;Jao(Ig@HX*RVJh!16A}r-FU@w zxDNC~GUF_`G7{CslZHKYS_qhAxCN6u6(L?HQvcwHPOnseah^e;H^EkZ?}H52%<_@i zRBRm@Vk)@>M&W3^-4J@CdSP~+wz}rIBJH{odKem~ArM%L)y(M{BuqDs`M!LdTr=+N z#}9$9)jxRlcjnN`cX~m(T`X-N$6)=k6u;mwx;khuVRk?cW7{FyMIn{T8OG^{5gT#<%0&#>9Tz6L5)U(v~M6c0IL zhJh<~4%^1NURi>|CiJFCmK@GGk|ndso++p2oiWyFwKw2IpCp12ShoVqb2xr!Eelu> zr>GjOYP%eKFX$vvMZHclzcRth6gYqA(>-z^LXSdEg#{rTo=!~0a?dEpK0kVNYu7d4 z84SY?CtJmTT&rKCK$nxwMF~{f(`@0Sdw1 zd7)CCF@T>;h8o)jqJ|(?W7TKHQL1+5cr@a6C`%EJ7`PRpTc+t9F4@9mhj|~5jUSSxh#YYCq>&7BVsHLxMMWr;w|kg&ISP7Bu#Hus7i@PN?iwA zS9%FT87|W6hgFO zWhxYy80|XhVL|FYo7I-4-NUj8m=R_oNt}M{?xXg+e^#hR`^;03|DqH7?o^HzhzHR0 z**Qu0C%~{7!@pYrzjLM6sM2rtoVt zXC3nl5q_R69)up$kN2XKo$Yc^ zI0Qn#y^_3nyKGkE{=9KwOPr!X(XC}wYh~zN>Rs-ovc-8R1H#vdwaen%kpoh>E;lER ztgC3wt3mseof(q(ZG8=AQO@YkN!~y=>v`EL9O;q0FCdv@n$r$=IyF{3f?swsqVzqL z#1UEnLqOnF{uX_p0RV}{ptT6464@q?4z~s9R>E^CuDnHd$EI7c}eM5&>dmJ0kX!duXL|O}|1;gHa(*xT6S;g)6x? zp$Nw7;Xd|tYXsgn(^Eu{+EJNHwar<} z>O3%bfYiuDSy@u`)fnk>?5NCeE^@7bIO!oy7LcTjn!B$8W`1 zi5pw>_IiRnda!*ZNJxH^cS|j)V7$zG7e`=@qHS3~*du-;ndX?g7g}Z-$ibxp1xQ4$ zt-@X$;)%AIw3P0XH1eQ_{-T}<41K9e5m~3Xauj@ z#Nl6cLmF^d@iLV5k=5?ysWJKUx}P#_A8C_i31L_xqRdTUV>FYWTH&z#p?(OD8@2ub$Bg^5$~GfKStxh^Uz-~p+P9q@<0f=pFa&vQS3B^o{UXs zy-WO=D50c=Gks()-4kbsFi1+an$t!GkK!4UZ(K_xF-gsEMEsqPVYXtv5@bIc@4{zG z^M>Aus8O?q9woNYb|4bBxcA_lMgmbQcpfENu7u6DOo!@cngsj{0I*M~#EV;VMrq-? zGip44l{Kgz`+Qq?jO#$))T-a;f{Jf_?i6x{WPDFbSRyM0~2 zS3h{9n&bP`-2r}=VlWBWUFGvm^{e?PMbp*x z_YHO2S;)r!PzvCytj^Z+WjUe;Rq4oS^#}(Rqtm6|4dUM$2`$1eKWc4+(9$5G1zJJd z;qr9tQ*%QGDeL@f?BPkKje38hvma#E{A5Ya2XpV$$zJiZW< z5?7j(XkD{ zk=*EK4XT)oO}^eVvNIZ2qrNYrNMc-AYqZ~rXBVG|YDr_H^2enwb*doeDqbIjmGH-}R4oZfNm z%v35()G|TB%ju!eC^t1ACFF!lw0+nw;X9peib5k0*OxaB7Njkv`4-ASEmO^IV&OQ? z(KV4S&c^id!Q%l7?4qm91I-Gw4UQ^eI>`6ps4;)+vvz`L5+gM>Y5lS!7Jn{^u2&&j zlzd-@mOEkb;|{NPBa&EBGrn>~%g7hqW)aX-867^Q+goCXWvdREPrrF}91>$OwpM9G@;3(;)FM}sH}A?<$SY8?Z?xEz&lvL}?q zK0H-EVI>rLS%`cBRm34z=?F%qoZ+iGgJ_|cFiK(4qRs{?(N;b#FFMzJ zcj6%k#cv3)ygh9XC8b;!N$D&d1szG9V&)WY?6L2%zRwbRiy+t1Hlw6X`jN%G3Hw=j zhY)EEqwt}nLj|e?Ab~pEUb`FP-il_ z%N?)AAv%!kT9h0Z+^d_OB#&cu?;d_ge|xPW9!U=2%wT*?TG=>* z?Qb7@2Y6JD`-+*6`kaZ#p&B%P47lj*CVFZIOvF+b5j1sgeR!D$bj&rm8dbiR9QnF^ zK_@_pz|OemSz}gAk6HmQ@Q{}MspT>@0)A3=fHN|+MSnatMuGR;9`F}nu?Jy4dzjco zz}|v9^_P@{;W_MacyDx3U_yRI<8+lD{w+xE+YBo`e(d{^xk11tnEtx_ zzdBRT)mA|g?)2`$+q=-I>~_VB@jaafFlumaQ)owRrwj*jAQi+1u|4#~8%d=vLwbri zs*~TpE0br*@ne`{R}qg2wWI@%vNYv$oWI?}du>~(Yl$@$BuCISLVY$gJ4C4FeO47c znuVkJP&P|d`k7tu1oLETM9oi}nP9VQ{jK+Py*;3lD%mtnv8XGz|PI6AT zA>2;2R2GJ9-_*q9C_9A`@>Ho|`TXZ6iusGNPwn-qVw)Xvr?G<1{n|O=?6VO=7e!hY z*;E-K>vQSt`8Vg)!7qJEZ{E^{wb1aU(?ki~UyQ(_|9ONdr5B}H) zv(9R#rXZQ6xi@n9e9yN8@Wudps{QJ^srhR3hyh9oXOF^$ck;5TTM2}Z?Va<;i3~@H zut=$!Pr;7Q=nT(;=1`j+1igI6A)6+vnaI0N95yWiP!S(sG@eSluz=VrIP5MRJBJA9 zciioc3t0j`KUg}5C|tlabcH6fAqd?Pw9|MaI#7Ux+NGt~L1MQ?FX?QNGuZM`Cu2BqYNP|Jfhc-vBCuR4;@ z&Rs-0!*2Z<$SU{S@$e57b!6@*i43&vvBS~x;fYYgDsbFeJNcM&WfJy=a1xm&Siq6s zQHgjgW=B|&6#kF;_e?!B(dXJE4RxIG!)0jc*yXw3t? z!lhrOl^yq!#@`l;IDM$rxDxSODl0dSa&9n&-$LNY$0Um4+KFoxzSHH4fnvu)aVuvg zT^eMor8si7k;Njk4pTUJfP)|>tDOQ^_*yDLbu=Jw7sRk6U8mr+Vt1X-@sfpv!E)X5 zTV9G-ww{||LR2s2Wg?1>5%T~|za!${z{EqA!jCAga%tCv++&SqtAFBV?Jc<-HgBw9 zL;9*_f6LT+IUFQvTGvFCT}kiN6ehkUalfT8GZ*TAC4z}2MIBwoO=rwY)E>;qNFBcD zY>hJ-;r76ZIyfo}dAZ@Sn|(Dr{3*NJs2&0`K>J!Ui|mgV9)6vJ{5m3ewW0av5y`94 zpGPErmwq3Syxt!FWAq=_A{T^v>*Oy+nEs6xxe?Ov8!d8dFsA=$kpq$bt401_(y!n^ z{c&e2Ko+QISJmSZAQfoI_dkrkHlx27e@*&}@xMvG8UM}r?_u9s*QCE}?Qha=TYDYpKSuv?Sa-s| zwRBes+rELd71GihSmT1Ry@mB#(jQpAHi^Hmeogud>%U3AvHp$q@74Ns2L5Tb_8A!A zt<}0iIQk7+vqRc^!`AS?e!bjr2zdFwUiANSwSG(bWoxfa;!j(9Rr=G`{x1EtwbzmU zWAvYc_3!J3uTk*N`Tl=(Hhx_<{49v@)^2TFxZ(|4b3!_N!`AS@xcO@o!HOh|a8tfMM zQ(P(>(lgnrbw-B|Z^NO?bbD6t!NCZIL5#FyP1E-e-=`AE1PY0sGwCANMeSnQJ)GK( z?+v~xk$fg~aL?j&46KKEPjb=4*&*L*tEtlzoN7B7HP=@{#w1B=M0KLvP6c8scvXhz zr_K+GGV+c5xo>UzaD%DcON)c(tgINqgyaj;cYxL=c8mKi)+f~&dH2Mk>T9p$%?4E= zGtF`gSW2+`g4tjiK`@{Yl(}LdfKlucSO0>vSZ)-X9ji?Dx9lpcqUd%kG;`$>fI{Z@WWyA)6`)M_o=n!GNKN%q&-R^o^NOF^WS727+^-*75VtP$lcKflzTZ zsI;p0xO=nKSl!1tUw5VE62CJXyo7Rpi;~t9)|VOlF3jeIC*hh=K_rhCH>$G% zdKsClj^1UiX?UI5O8dU74R25iikfzIpy@fNMF_BnPSc5(hE7X&?i+1uHQK#Q$MvpB zC_p-|$k}%pc&PWhjuLJ$TU_m!QPj+7Keq=ZqT}=Ek8xvrbJoJH&5qLtSh;`t7w*D-Ax{n(~8 zWCt$j3kU}Rqidb0rtQ@zlezAX>j4!7=OW#3kbvAD+j7wp-?(Uf*pJZza}dQKl5mbR zyISl@FI+*O`i9Qqd>=Asmrn4B%3 zFb`MHd&5nZBqh^Zk&nca8A=`GT|* zaI-n>^5NO7;2YN(gFMc~4_A_WIq0s!1`5}zdPLj9c z;mNi5*P#1g_lByX=L&D|VJb=g`}0tvZRpV>2R;suj1GpA>X2Yoz- zwA>9o$>bhHK%9zrq)u2ve#jgz4aVX%*Nc79&$G#_6&wEGa*F95&lSGIPXn7iyCo6;aI!emo~^JNc3(UB2K4Xv##2GxQ7gGy zJHo2EFbUnVLy5bbwg>W}jm1~J^ELJ+EG(KHRna>UWZ1A$WC*TA2!Jno)V3}1r)a~R zhB$(TT8?&n<;)x8yG;@=AO~>Fh9zfp*hccdHa1&_cXmJLbr!JXI6OcZchiA>X1ls- zZCud~M3|G6q`n1h%VOrM!yxb)cD*fHx2W7ymm^72qKqNt9YWM_!=0-hze`OWmFB-=L=~C6yyzm@3-C{pdHi+Q4kN&muiOq; z^#SY|-g81fNyun}*?FfQHG78T6{A-l9fRsooUBm7Lyf%9B;7!g(j|82AePC74auY8 zupS)33l|&doZJW(l*cSZ#uKk67B%u3c?T-(@z*}xM@55C4zJ*lx zMxWA!d{XEepfvK1mrBQp_lxhuKcUZ z*Iygr*H*T_HpG9Ees73h+Y0?T_K({T`60el=dB5ky|E#3MY?=rLqq_^^FJFR1nPfn zi2h50SA)hb#F8E5B|M$znFN|Q3oo(N?)_LG%UnQ{Y1`EYW~SFW3ZW%)D& z^j-}FSDtkB>`I&1<_VWJmqC{F^0eH^a_f7J>Ul@orYcIbSK34%JJBb*HN@F0WQTMx zC9E>`jVe-%G<~#F6$1*51-JbS%$-6Clg0qsQKmt%@sL z8+zq2LTzwO7H#s(_m1^tJf3u332x(q$N+W8-j7r{VyE=LE>rt$@ZMNt1-_M?m}MYeXedT5mQJ68^gH+(0c zu`XB^RfpGzU49&YXf zMmz!9ecyWVtI3&5jaXmcHWA%`)G>QK^q7Zx4}tN;F#_cDPaHc5wNTtDd&#bRlOb13 zVFIm{vri(yIT({{wp2oxpqvB0nnEcQQK-KAUOApxEqzVOEVtK788nD;+*}#^JnW(E zDG5~;h@m8Z>70uM;A5@S$UvGUAlAsB>tPJAbTWxONn=ej?@fXP0!~ClFni&R9YMqf zF8G{s)HB^7U-#)U5g}wk@V!9}O2lxDCRBpFX^G>f5!pO$)s4m#6WfFAJSiu6k0fyU z#FoWF^N)<*Z#Rp8NgaeAt0Y9|>DpX(<$bNRGSL>sC-|x8HbP(_CE?=p=7Pf|gAd50 z=lG19GLjff2nBvr7x@65n!~MHmw0%+AWZ9&FMzryBBXi;$SAr(z^X0u+vXFbSu*9~ zQ)!a6>0%Mf-1pL|VV3*I%ec{az8aN+z1!6VH~}%}f5-ryJ)>FsVhdIqo#xZPtfIcb zy^`YJUl=FuGIwSsx6a-PNl`@6QrO|Wx*1Jo3dZJi>BBaRGGQaTU~F4P<$tOYS)LrT z>xfSg7trsfb>t_DFSgoreOtce9f!Ygl0Tk|Bjtar8BNQ9gsWhjS7owKM{BmCNZM-5 zStp^0l(Rt_WOmCGQF+d3B4}Ogtq`X{nKSMp6#{fI5#2lga>2ph=GX%$sBg1jRih&4 zwD%fiyIT_*I}}Rit9dwQk7|6ljmW3CMsZf_JpB?L{4t%`Hy#281*@@yBXdBy9jdlO zOWaeFnG>@#QIf4gB3Oxl(PlSpULHNesqe_dI}53#y@)(i>d2EO9grQ;xDR*7~ zbObFIb*;DCb@9X+WzSaJw5SEa9g96ZdR9UR&5~#_Nb@BwP zq}H(nd9)U3BF(eHwhoU&JY$8a1zI&|HQN@wV1U3P*EQgB5ElsM@c2N2!ym_6nJgIV zd={P9h~@I+m@joxmijG?jW-WODaVS3_l8~*w~sOUTQ#Q&Z%WPa=|vqHk%_VJ zlK^8KHZs_cX#%N){B_}23t@%=5e{aHkI~6M23gtYLpgwi*&*OIk#IMjl^5|XoX_)g zDsd*Z@!RX2h_BP1ZC#Bz{~@e5_K| zQ+E_AnIn$Z6+JfM<1GsJDOFv-3|NbL#c0ylx}H5&3aGsv_Xli&qoI@X@)p4Z@d&T4 zh0Hq3w*4_z9&(?y4NjHWrrg80b@VsRTPzoAO-VQubnpf#5Rx0RGW0maz$vm)(< z>0`-%si>4OO3i>*lCDc*rw373ky+5b|ID_JiXSJ8zjkRy#VeYu+P;nPJ8LbukCl2j7DbV+AL5^Uu$Uv zAE(TTz37qKM_+yzfRC0q+ne+_R_SEH2pc4QSN|qHWhAi4?z-zh^C;wn?y$Ce>vX2- z_WA6kQIuY2NdWiM8LH_vJf0Qsim02}M96s=rxJgz(QiJk=EtH{dMAc#7o+yfZc{MV zr=LV1FX~@nfro>Jl=k?XoMFqAv8(kazOTw*u?*$V+4oEa4N3})UOTW;4nY-Y8&EXm zKsGp63soi|%hL2&&`{h@ASRhnu(8nw!sn0wME{T>Yh*^X*Qpt?Cd-SN#L=^t-3k+W zjw#+!1uyjIuqnBp1i;snLLD(G+rRe8F2%p&IvCj}zx6@hmdcBKi$!0(DE5HOc$J@~ zfa{yMjzbRE;?)wVRRf?i4tS92(Z)AWie88%`U7h-E@wO!_d)DM7XH*3%}3azRDwyD zPhT|oxT%aqeXr4dB9T5SZn~QJqjWF4m?Ud@$AsYfS`wI+=V5S1! zyhM0980fB>;^JFDU60$UCdk%fQh&HK!z!W)uxS-eVw;p}73Sz$k9L1MOGB@9njNLH zDeP23nYq3R4lq=Q`t_>W03Q5mAP@ji z&_qqkD@B3cZ-xWYbB52FSYzJK40lmIBV#s$*_^|viOHoY2E|P^*i_>uf6)#b(zw5Y z(e9E;?hg}Jf9rqx%mvEWeG$j&7#3H-={=hT~7) zLf!e|l-<%MY5Uqry1j%=8t17M_OlBDBBF}SqA>12-01QEacGf+J= z>Id1PcTZ}=iHvIxNBE$+?~<{#cw&BJW=^Bxj5~X_`rW_QEot15@Uwj^+0#b4sgG-@ za8yll)In~ezniUA)fRBQ30r1|*GJS7{0bNZsrUXhCUK z0*^TGq@7=>JU+eh(S2L1_>vmU@KzIHU3ahslX`dI=VHV54!~Z-AaNS80Mo9U0^R;^ zAi=>^y%@2X=mPO;G6506W1Ew`RAc1P=_Zt7M{=2~FZ4JG6` z-X<9dGUYltgm@sW$Tv2)Qqi&X*2G^HomQ zuQ_$w1FDnL$^9;4z3V4ZL?9ZGaeCbs=(m!nP-2_jc|mnQLG<;m6H{Ks{HCy%Il~1r zWLRsF<|~FWM=)e|y#leD!|Z)bBt&K;lb$0&D!e>ChIq0PXl^PW=X0>3&(Z4Rt%3EC z+^SALTK9zeL(MnAlb{k4PhJSi^Pv8ef={D|s}f5GA%TPlAoqIhbH!VbtoItvA+>h9 z-mlI;u5kjJgm|U$C7vI{-4CtTPCm5y4_r9mi^rTuI7K_s{!EoIC6zDp&sCiU1^M6e zhrw^nrN5Jox1`@m$KRwsNyne00@tvd#AB5+> zk}d%Jenc3_*EoUXhNzjbD*+kg;a#)c+M*JAz|xBnhl zU$J;JGl*QX1v>?YN=e(t#E%_Vya1+VSF)!W^$L!Nj@1-82QcPKQmwvk-;g+77Cfj& zR<%{o=*2*W^Na0)p%qfq`Vf=^${nIk4bBw{b1}(BaFkL+N(ID=s)MT>%N{?>5vE?k z0UpGdkw_w;j^01ak{JQ0OBJtneuo@s{jtts^SPhMsNJE&T{*UylRAu*DQjww z0jtMvNu4A3;Z~blXP-6-Q_drNE!S5L&%U6y>;Z)`Pgo>n`8ZjR=ekv_ zqnMA!`8p@lC^KL0XjD2oGqL;{epg?V-@S5uvb8fNPI?IYb9qfu+qmr~DNI(~5zNit z-CPR`KoCaCDqz+cu`^st12V&>N1JWSv=v||*zp#-f|N8}`kGwm)AeL)9Ds}sYd043 zi`xCH`&n5;0K2;!gasx7lj_D%B_$bQZd#>S?C*U}7CW(vxD)eLVhF(Wxe5^webR$j zT@3*PEhv>XKD!tDTqzF+4!#tz3}lX44wM8E?k4GVkCfg&)m}KY9L(>Pg1pat2M2je z*~K_jl8M8ls>e-Qfv|*)2la~m(aY#MU;}np5!ma#V;rDb7DtGUZ7x>fo|2?A*&u^b z1E;PMdN6TihmB1tqAgDb?;L)VoC=(i3`nOaFgI~ZOc2qbR<73}&uGW1g2|UvRru_P zcL0`;Kp2#)IDaSYg1YV5ZlsH@vRRMchg(l^S}70ox&DOwVIOP%B`m8gIQ#s8&!zz1 zAhH1sh$z_Bqb&F{!Y7xT1;CH$MMTl*f0V5#@%sz?!qb3r&mzqHv?9y-LxkNF#Y3=k; z9MSxOc|gQ#wgR5GwY0m@3vTcB#~${b6_1bz5<@_LK5A-B?K89R=zv`KrdLn?iJu5w zTBd@6j#g=%`C~zw+r9bx-mJi(yXc6By@~CQK1l(W*9}_e&{bh@Jc+_hw|rFp{D)rc z&@vA@lO)~BLnI4WE)zNtNUpmPRmJ>0Y3mfsih_#daF$C+>v4#N_>eCzwEEAW+_L8e z7N6O(mR>)h;B|1OqHT1kU+g*flaHXQ1(7d{>?WkdLt=c@ohesW9qZ1oGx1JQGkl?3 zD{m`Ej8FQUdT)hqG%e;E1v4NA7tB19v_E?bIj_1B64aLk-(+9T8NzMHCQ z7x6POG^87$h~wCs!GS~^710OVJu*bgk+zO#u(Dk!@wQd#6~e} zV`5EPWCD9SowRG`00OpSv7ev@1Ygw5zexZA&6I}zZ%gvXZB-YyXi?JRe zrLhdD;U0`oX&!gpPZqp^HQokin~52P%*9{zHG>D_&@+js05uJi)4Ev%V$WZ9DWyGL zU-N(Pyb^kONMr~4`)Rd~3CcGe$%8bxsSKvJspRmr;^npsVIShgEnLZQ52%tvb9u}g zRnZdcT{u@q7kyqJtzs4Gm|gb)YH2D{nB^m%U|j#XVG_YFVy-=&UEjn_8#CkRNyKv$ zt)R=}j&N{p{=CJQ+m)?n)jEYWBd)XB%~UpfY>rLr+ItmQRIZ`K_Cxch0b+gOQs!3c z3^4EO6l!Ukysaocj2_8>#u+21oGTamEC8@&q+L(&X-|Z*L82xh(#stG(*piNf-;|c zE{B{uDN#w<&_gjBJhYvvwGWBGH*^;`*EZX!r1po1E+`^w=tL&}hKrQ*y0J@4eh%E3^5RMCFj3)nPo51PTnUa^5qt5K^`t74$gLQ&`L|C4^R8Gl?FX0 z(r9!8&g)PqYT%qe!O5wPR7?@?8-6s1p*r&V^(-@?5OF?w41M8PmD8P0U!J?aPm|zS@`-q;^;y$d6+hSj^|_-yilcz#dHnUDyWE~Ll@BGnC)!J-yLcLf ztEn(SdxExD(wRExTMjueIAS6;>WS!0Y|IhtObk9yVu;h%P?)7=zO9!r+kvv6bU7Bi zzyyfxxv|Ia9jf~PQBXc547iw+uO0Zdg8nAOEFk)LX7SiqRrx>Say2N4D#h|(KJURn zA5GAW!$wh~YUzl-a9PA_KLUGhf^8~%H0ktkg08x1=TsX%29Ci~wkvRE6qZ3m^SKW~ zim?c3EmP8cLISX-y$iN>7)Z({F*1X8CT*wOm{83Cy)}W;Fw@6rT%c^b$>>0|U!6Wr zCjOi=0qHpNf%G~#^lOgimRd{p_pyvn$0Safv1p2l{^om^CrZ{(@>DtEi~Hg3>endl zT_9}mFJ$o1K0;w)R2U5lJnJy1!nF}$@C5hD^iz|lf{DjLk=qK}%5`@oq6N!V;~hXi zd7!~yanbFvcmSqY2`!o-K_-ahftV9QZE6HH^9*;!emo9WW*K7z$QP$B2}fm76X$Hc zJP;+JRq?VED!yN_CfxX7l^?&xD{IEkRQiutBU*^>%WWe8|CHif9eBR>XoC#SlTHx( zHn-|5BeY#YB+=wtY1EU{8+ar1{NOI=SOzpNf)s8W#VoTnjuxYgN?BFtURU!Wp%Ufp zlz(92yFCv%|I+tCxT<>#eYF*jGsCt|@V>j)i3N6yFgKvB8|EgVJTujhVy}w$jsT&9 zFl#`k6zE!bNTHBV+p2;P(}0?MM-BJ1HOO(~XCubT+V=L^ zE|@?DyN`)8etpdSgvkA^n3n&;*$KEza|qgsW&Be8G1YgRge`NP)3g2FlC|rDhnk?G z+SkV&6nJFH@=|><*!`+llv+uO&sQa|A(jq^OZyMVj|gEuD|-t{ngC*w$Izq)LNkpa zP@7wL#R*3(-QXuN%E5~f^7-<=5)x^jAb3@sXc8Y zEqMcB_>jKHR5dP0bKXZRqMs#}<3?d=9%Y7B-Etw+cQE2xlXW^Tw%tG?3Q9pj_iZr2 zE!=fl5z0V~(uHZaD-d?!^kCMU+$Q~%{6-&8QjD@ed4c%o;HhtKC{Y^4@~gNR0jt6e zw`|T+a8SIr6dVJ!06{OMeP>q-%|&GOK;Qs2tC1iT#Tz__seqh9&U-ZAI5{6c;O9}j zvrML~V=R|Z;75|YUFm=kz>v1YKGc~ApKOYG6fovp0dFs~Z<#_{x(ii=uS_knvzA-v zs>-kjrhn2Mzmjsk#ZYk+@Xd*wi*IT{*)9`CnuPN2po^7{!)V#1?YC0_@f$| zyw@Zlw?U`O;0K;%R802B@j1%}1*vU#9){vsk8uEN#vNFw?sMehTW-yk3^(-cIsuU< zNq8%lifXZZvXg7b9aZL60D1#IZrI_~k4zOO3}ages|C7Q>HOgC2YgLE!}IRL&0nId z8pJmy24@^I>EdOGWtW7$p?y6;kEb9DB(#W3Dzmv`)v$9Qog6vW!H4MOgo9xvTLft8LOyD%< zY#EWX1GBiAit1NT7#Eg zQLM$k9(V9RlcmprPatHHg3bqavl1uvU7(bp4c00LhaoQd^Y+%BA?jeY0uIgJFwCun1-@$Sk^NMb|3};(GVpw`;4)_ z`r!z4(B$rHDt+QfS*>>r2ZZg12KATqNI?$QTzZ5KAy00`#?LZn3Q3KTwp#i4(SmGsP8~G_Zx$#m3P7Juj}5Opb9BI9 zU>{Bz=3sS%vVI9`ZY)7tFL+S#+p6zo4L-QE4Yg5~=BC&oO!*zX8a+x=uD{-v z;pt1TPLc7DjrtHx(ac%^>Lcf z+VLXNOl8TaX395dmBr)nO(7)(UvCIJpbm|+mmc*nC&Do!9d8hYaX%u+=@Jb!$B>cx zu-*Ke%l9@^PFBfbk}}kG`99S^h+pHkm@;2G5A4gGkdnRZZx@;;>SB<~Pcg|JE^)oz zRK7&m$C-jXdUU_B?SFMpfMc`#s?Z_Xzzv-Na zm0jYx%?!1>O>O03v*uQ3j0%B2jv(g-?HdU*a=7pFx;>`b}4o~Q(FR|@{}nXRRGH^d_YETUSQsSDE)--UGzQ0#TZiR86P zE-AxvH=_z#dC%$Ml^Aw~S=P9oB!IRO>?I7o2>{vC1fW6&%XTbZkttzVjDHS#!>9Wm zEpHzk8BB#kyoY7$dHN6p6>|HzzEl>UPU4V@U`1O_PwGH60f9@5{HMShZdAm+$)Aiyl! zwu?f&N>`m`%u69cTsVqMLrtH&6H&c@&(+RjbMkJ1Vso8uj! z4O-eNeA5|Ob*E)#umnkAR@Q_46wex>_t^;`Pp$~hx>jzlIRsT56TrIDyw~@OQQw1+coYIOfv}X8gEwxjP|(O|-{+xc zsN!x+A^z>O5vEfgeC2l4`1C$M)gIzAAi%3ytM1$g1dDi5F~p|>j~Up4t(F-pmlOjx zG;+%pSGLTX{BYouFUyU3K7ek8(USJh!oUHZI@Qt%{udh!bhPSAbn4QYLfoO zLQeyuKZ9o8yat_hve>4zHy(Fra>L(x}y4 zObR7$fXJcpwZbelRaR=*+N|vVB=;3Zsy!;Tt<_F600)tFjkkiW1C_0;dwML;J5qQ| zK;i7kHK354)|*fdp1do2$@_5b$_^AQU@4ht!ST|4xGc(2X}ujc*=P2P-2VJc_V8XM zZ7AcwzF&6bvS(6uQ}#Bq`I?bJ$frR}nZ3ehR=MboiufDW>w+z=N?7KTm;;m@11$I2 zcv;O0VAqd|kIkS0_Ki<)3Zqd}qRApHe&hR|k3%qYPhAYp1YE7EMp<${tBV1F7|5@|k8;(YA_15o|8B?&4QgEDW#U^Mx+=|-JO zGsO8!qnV7MQ<6<7x*Q`yNA}?OhSRymrVN1u8{|z34foRMSiZnR1liBxqiVQI#CjTY zsU%ZaLAbiI6OO>1k#&hlL#;dUntIeb*xlUd25FX8Gm`2{7?TX@8p%Y^Hvt1c=y--{sx^nf#@d`}QkJg$$m3{72BR#leXEYg0QxkAR{#Lu4*wSczSSN49xDDO z{TV9WZYcj+{pU25f1d9076t#D|Nk%N`1N#`5J05&vJyU_sCR~nXhh<7h6)l8vHuz> zen)`sNx!m^H#hO`tmIAU-?sL5>5r|w1@yny{&86IBfU2(e-f&E2kUr5s&}v^1(A3U z>$fDh?0*e6A^*FHU+-3IXY;(p+F-oBMdC71IG~9N!&BawkAQ&H2>%X#M-9jq#rKM2 zQQm-amZ?-TjlzBypu$j&r8^eT>3cPdf-P|;tJz7nTyM)C_TdTbEy(PU*h&D za0itiRWss#O<+CAsYnAKRcZk6=M=!>RAojppQ+3#npNszcRB+PcAkZ1z6ZHnsIQA2 zJFPF&H60rFG1h!6A<3DZ=D$T6TNMJ}JEW}GfhAYhRCuO3MyKgpz0!7*(p?NU@B*k^ zy7QtCJxeLk5Y4L;>y9u9)s7a4{djxn+gYNe`svy!izc{D97Iqzg@Li?jnQK3(r?l*bWKKp_y>GGJU#o`quLIFXP&c2YTR`p4UjIxCIF;Yyr>g58`XBK zn;^tw9HLP+1&z4E4*_`2C4-e)Lt^bXSGrz0H=(+9>Bnu$ssa%GS^RtwL9|(`ud3-x zU|gnZwvcfvT}oi7Pu(N1?9IoX4D(=RB9h){B|Q&I@sK@0^kPA>ccC~9Sd~nZyMqc< z9S8#9!Zyq(3)DUP?hIUQ${A*}PcZH<%@k$(rzKoNFR+^w2J<>8XL8L;v~NMIG@JkJ<7{NKJmb#(}fzQhf}0JW^Kqwu{_&uB5%ciF2x;%}=PDyM|+ zJ4f1PC{;;JkpYF9fU&8<79hHE03OSdcMSUqPut5y)(G+13 zT9{2Kbgs5vD+cy^i%xTsZitV1L2HZq6i3EFB;`D~El3~*(wRzR8+g&9khje%1_IWq zshKLj#u3%4sWqcVvxw$XhId6mI6JirQlaY(PLY`6v&V<) zubjggX-VMmt3wx#qg-?KE&10^ODg){|)Z<#wUSNy)6~*SxR9=M(8>yPqGr5hfD1Ks+D> z!vp$-3QVS*lf>ubJV`u~Kk|@XbMB5h;XPyTPz`(Tof*P9Cg7VAd0iOfDPS>vQ{&y~ z#JhKL6o+NFvf6?&z$M5K?WVxJhcR96bW7~+fOvT99I3|a{ZzRD?e^W)hHVboqDOlK zzDJEVf84LIq-@<3vE2hbA-IObdS2YdsJ5_$J`!DIHw-0VWDPUs1j4;CHg-dAqq zM>IkBu~g&qNs37{?!tuz*LU`$&%HhESNzt>)$vk}y=B7nbT<&>;PJcm-xw0EIqas! zuY$VKDOh0P#5#YyPep3*3KPD<-keutJ7HdAcK!!yU%Pm}+v^Mn-!7Lk<5Te3gg8P? zeKG54@*FqkT-0+5nXKlF8x=MoFSkA;-JXyP`4;94sMriaF+bf`UsD!HR$7>rIjR;Z z!HtQb(p!qy74^?|RUA?zQTOs(YH6v**m3WQ6gWKJVQ_{9lGne}P* zsiMYf`6@IgQx-`D7COOkpihC@*d~f9lfa@s+_=>GX^O)5(bL0H&T%znPk}P!%I)2g zPd4->8;enW{jzzJgTj`{o{7R@Bf+K{7E>B(c$<>E>damAM36ocUZsO%`p6LJ%WB0* zxRJ%ZA#Z=sHXScze_m1YMUgJnfN}qM@97Cn4wr<%{*F-o;ravb10V3t7%iD(GwVzF zadx?)E-hA5-e$SoLj-3#A&!PS!E9Mmq}%syi2&^)mz7=CW6v3SUY(64(}qUvF@AAV z)uoxGkzshr2IQfS>&SgHqFRY$(T{MAVlMsTy|Sc)+N|gfsBi#5S4J9C0lkO;LCkB= z)>M~1xrnfrXRQvR81gbIZC_;28!$J&e#wgR#hz!Smvt-jD94HyuP6dxaRd7q%iLTZ zAt*u`wl?QoHE5~=6VRvT(F8nMv)hnU0713-LqVz1NiG;N$M7)nlOGX}zRYe;b@|@H z7FiTftECEGAnkdBfr=)OPcf~A?2zhddCsX-5&+Hw;I5f((@TW45wdkkHfLn?!7Er( z78tQ8a);_U;i+ScgAr({f@@-0!nvmen8Rl-H{j#MXL7c2OM7)zXKpTsA1_GV&gl^w zjrT6r8yyeDPaEVs^^jO7`ekQ{I%2XXs-27MrLg(D+G^7_XtB_6Hh4vg~!05cg z-88-)x5JeWz;x8!%z{al-OJ&ZwsT>!necJox0ju)H)OI2s`4(mOd)VRHRYQt%HFPU zoHopiNSlO7(bFwCECCZWrk7Yl8)u^7bbpV4!+b*ZvUHf+@{*vDN9yk;lg5%i(2sbo z(e^HPc_BvsV3a;UcYtO)B*u520QekUuwya9+7QI6-0#oFmWwV{a+|#g&EYZ-yt?uo zieKwlNE$ClbtE7&)Hg#ZlPKPr+=3Wq{XsX?vCXK2#Zt~sFT8x0O7Do|IR{tFUg~U zHr}-oW$9L-`;+uMSF#XeAI5|6fTW5-tF|5_AwMjlj_Ih5=KM`OB=)M7{oQo`hfV;} zt&c1Ty~(ss!{HHaG}y(Q1cB^Q_|bE*756lFkr38O zfK~8DSL0<*_?MVF)Q^x?@r&!{-hD}5<#~x&m6(E6549R8%i^aKyIGU2KNcS46v^I~ z&tl)jy}l08?$?9A9v%^4eG5<~fBYC+i0Cia4^D$4>yT~nRiUKDzWRG=U%zgLAN^Bf zbmkV+2|LA*Ow_)BJ~LkTYp8V^9_Ul56`cL1kjem>tNQVu3CdZpgr>iV zP#MF;@I0ZU6BCvdqm!PI^)9jUUyo++F|hM84P?E}m}{*?{M_u!2Y+7vb>8eN*Q+e} zi!i+`EnO`mZwD_9Qk!2CMJHvLobM#3 zo|si_7ii|V;jw|8n}ju>m7r=Hi8j^CZU-oNCFYlo_`4!syuO~LsVpohtF>@`3P#%aP=n*D3+AI3Bbo4XoiCOV1iunNM_cOS#28hYzjIRe z%+qH86rO9YhK=KEC(e3)fKX8(<>=nfNIx2r0-Npoo6_dOQ^~;Yoad4cx~K+bV&ER&3;i(8b0@Dr-^lxZ+>S#*H~rZS}40U@Qt;cHS5 zMeF=f7@%@`SbA};yTsXz@bZwf(*lxQv&r!obADv{69LKc$qu7qp6AoLrFebDU7WTR zBp6ai6<@zZ0CvPBIAQW0UXw;R>fM*6(vVYmP;z|7bFIL7V~ad8)!G>vbi>FSw+ zz|4Q0jL>H1juV;R8r7J~Pn0OFYtMP7m*ysuazZ9i2XNK<(brMOzWIfCpG?s`rM`Um z2eMgc)E*o@1?ALysB39)*q770o&WVO!6Xs*0mH=m%#<j?_fWGTfd{)& zjjR(n0F*07feOqL1>J#R@e|RfExB!nnJe;9lR%NNrkQh~BJ<&hsji=>(_&`?hmn@& z(ZcH4tH-f4R1!4NwIM;!a$9i6`h$GI!3gFbm7^9LWh}X!wGcahOejW2mLil|DxK`ZlHuN5ev&Md zYAYshaqzM(f`7E@#6bAp-1z^7)W7l*0AQe?U()Y@<$vebe@lM?mOlZ@pTj6`Gw_cK z*nE-S%Z+t}Cf*6yk`bBS3D`b>NWB-Zy(#@NsK0XK|JXz{dBQ*z`X_*UpZ~MA|B(M~ zZGV&gSlioJ|F!y$L%R$4z3kXV=uv$aq_l=mvOk1+f@ww8q`_>QfSgM50=*4~qT+1i_%__wXSDgE2l z{x1EowYQP}YxN(8H9yLG)jC?3?j5Z25GCKingZnWe_;*S_ODaX|0e-r0zT}U2MoEr zZk=CJ;<#^`j7o_IpL5+(v;^_qebV9%1;{Zh^G>|R#U z!?Oi&OJP0E`)MvjZbikZmsmCWV~X zMN%8#I2RylbshnV9E6vdeYm!LGVk+8p`~UQY~3}`l7JfHsunmxRZk9j2&E+ztn%~{ zGHwN9Gdcu)(2$M=_ZwlC4@7a?G+`-XMfp`^K-K%SXhq+0OZdGnvSR~wJ4|1FXcM8n ze3!99n!7bh`*G*Z%MErV5>DWA$b-9i(HiB^>e=kE$NmKdp~7pH`bU%Ge)8m(UBq_j zQ^73bX092UE>pI)&HP{vTv%~&fF@_TQdt`AH73&v%i=IRzW$b(76O!PpTF+LBJhD$ z5rUvp{Tc^Y|1~Xy{w5^|Xe9=}ZJC$FvnSa|(pm>_NUj;6P90`tSQT%69SAlVpB@0H z0;v;@?SChU|M}53?$`cZ`r}Q1yy;KN^)>_lsM@rzyB_L``X4P9%oE?>m;~|%x`qw- zICZ_3&P763G&0+r z9-8Xt8c&60u9`O4*;+?nr`PS+CCQv2@VB}aN&B*$*yM;btpz%bfI#g)QfdTKs_=2F z91@V}G$SSx`7VupkARQrgxeS!kCk?XN{2T?EhUJ;f7RQ+;^$v?hW|r?Rc4z>ex|hn08{w4C;!z-{(pbm z-@*0oR`M5pB%{ZajE^&jLv{(5Y^v7n+infJ+%Kr zdK2xpHu4+ox1`@_|4sUX_8+wWbRusv@K3Y0FhI2b=tO=O%YRqxPT{C`tgQ-B{~c?i z22pv>+Wtd&%i7-D$iJ=aP3hm(_IK%zwY`n?U#tHdwEx^-dW(X8&j0_{DDbOm3*$$7 zuWOqWu6)PZ>JZJ}u{IhIwfC&;KcqLU?X8XcwzjvV-`4gw>5sL&1@*tz{&8sgqQ6(Q z*M%qELAwdj{vEVwK{WmgZQy^uY4rajK#bQiYFD`^leM)bK;;nMsc|<9-W?ozhRK|+ zXNJj{{&7^*!Kbwk(g!&+2mP8sWgjtAzudK@rRH&FQi#zy5#tOws`OS?Arroy@;RZ( zWMXo=g3(6BPGU6v2>8AYm8kmqIg-Vh3{}YjDPC#o(v%a)Wq^;7+W1g^-SYducUdqQ zO>G{nDx(Q~VnYC%AJ!Exah>DeM7WfksBOz*Y`u@96)l+u3HwqU1YRdcYu%q>ICPbrWjRemBA);v0g8z>FxL@1HLB73MEb=G{?{{%Wut7zG|_ zieV7c9L?I2lHKO@g**mcyv(@hT(sV~x;`f~MAys%v~4TP9RYKDOM8g57%=b(Sz~Pq zwvfOu(!bWyy_pH8M8Y`9aAPX=wb5ot(8}QE%-vd|BPDCFy}!JwYqngv`1BUg^#LCO z2G08)LXv;BTnY-|UM$PVDh(SZD(Y#f&X6d#>!RX_Q$eYiw96Qw(GU+vu})yKsfwbk z6|#NL2?)$J0Wt6ei~SUa@C~IalBCQXQ(fvG&4{-KX^$M7a)&7U?}A+ zs&Wcwa|;8(yKX*PkohMrenLqof)ICNnUC8gGklD&Q$nHFH4|7*ApohAovGPr%yMMP z`nb?ZaCUP$dM>+zM$S3uC%?y=bX{dfOXIu>-@FT|>69D}eoVwGYXsY|ExCXJnP>J?OzJCo z+VE#BfX(sZ6il+#Yht*|%c{Jh{IkX*YUs0N(JB`)o-j|k83J{YestAJZe%rCu)ga( zef2L+Fk&4Fio&GYEVfeRJ=O>;7fwuhbJp?)MB)97w79)u%cWTWDD?juJ%zpXx%}<) zZ%MzM{%_JBr~l*hf9CVI8TiLl`Y!bMn%JMhXYW+{HbnP#Dm@*D)_+y{->Le4NN+Z= zZ*AnawY??%wzj`Xf2{3otp8g5r=cAVi1AJnOAH_a{|?%ni2m=OO%I~;UueUZ{_6{) z|B&vhH4194(O+t$XMu>BDp>}bXmUjtY&|eS5R}qKkY-^R8~~v5K8)0Cgy0V6oedQp_iu!31*v9xtNQz#=0#Fk~w~sW`?Xjk4mmIHtxqtOBCkQ$!4c zTWE}3)VjR*L3c9l4q*72QY6rb!<%^D)=X~(RqK&3W3pE@qcZjy@ea?7))z-RQezR2 zQN@N29Sj|P0DZ!nfGFOoG8PL?ZK2+YFv%M3r2pwIacGSS1r1-RMR%vZGGQ#=qW$Tn zX7lXYX(^5N%Uy@Ab_x05;M`4676{jx%Ir$DQ7;)TIxc!3Wy=od85btep-KFzhlQ$M48=XmHjE2=clNm8v6+{c3sr}eymj*f zg3^frw=8HhUgc!V1JHI6jRWhHODJj`Cbris8V{vPl4(Ae+? zkGnAn)5;-)Po2Kag=_V*!#6$+tH?oYh1&W6($iQAwS%m#Jz)`GgsMywtbI}@R$NAa zhjR6-95<RS9jb6a}urReeOun@5}nXwxF&@B@31)V=-LjWb$p0vp0tY)Z#RK>`3FWQ4R| zgz%)jv{220wg!&5t%!}~CKEjKr>K?~REaZMgZ2rRDH}387DP>0P1jyuWp0RG{9?}Z z)l2!C?KhrmfVE%rt9jRukia&nEc9Ja<7L^pTq;5hBb}}bqXH*tqBt-UNd&5uLk;jT z)6ts~ZH#Pr2N66CWqkRZx3Hu$WWI5!B=(V6=D5eDHmkv+RwI}_<&8^5m58)k0h==> z0AaXEZ|T`(18){1e&`pa*hIlvIMN-7Nkh!D+xCZ9^zNKYT9`WR;Hd61XF9ueL3|vz zubu!`^MD13$EYAAz1}nBz!rpW0Evoh@R`v_<|1E!4gtydT+NYK+XN%B@IVm;sGZ#0 z=5s*YCjq?|%Q)bIq^M`$m&)GO0e2`2tAd z%ZWJPw0Hy!J|PLU7J$z&DYnM536aPb$;M!aeR)@@2fx>^$r<1xBbB?!VtWvBqAG;aDy^wjU?*G?Gi}_B;U7|3&Vw`b8gF3FF-Gd zLpFMt5}v2a18Ln0J!QE1E<73lrQZW3a?Qhr3J%KonbjbEsKX~_9DCR9>sTxg`Oo1x z7Y^%C6VIYG-!NA$U&=Kxg%XOz4pxi<;H@D8+exzoG5uIa>Kh5tGYNx*T?|E@W<~6b ziLPUdMHV3GhxNPVo3|TKK#esSS}`*V6V*fpF+5OQI4i4BUpm0IMT8|E_{T~-T6sk* zzH~dFV~Mkz;)^wARE^+i78Hge4yO$Jk9vOy6c0^Z-f)d~-s(fTCgkibo({#lazvIT z&szO9AjOP_m074m8CUJsEJBML&JWutL?{;Pkzc~h>e;H{aF!1NB^C`=G+Wdu8~z+kBGPF zg$i+ou9J6k{x-MwMKQJ?Zd;0*!6X;Dp_x-BEW1D$&b36U`oo=$g*U30E*i#2pQGU` zaF#_jGUN&6EUnd);7+y!6uBzct$p)7f6t3qPbr;eabm{2poq(H8g^C8@G04vzJi2! zz)>n5Rm-Sm^OqLVt)g{rL9=qa!E>kNdvWNL8XR$0jrd$y>^8k>vyEIFrM*~;pKaKV zh~#=7N&r8mWidmyk4%C+V}vSu0*|6H?_#lDmt*ZX>y%bHF#XuF5U)njLn^ zlFKHf)TUUPT|zOj?zK6qL%i>Ab{ zSPey`s7uC~>+#|z`={{IizXG?tJg0sq-v7wcUVhwekXDEsc>mY-^}@NWXFSfB*_P-`Wz)4DdEFcyjBKJdBDLavOe9~laVC|!*?!$IdPSK=CEr!V zrmYM{Cv|aaMfN3iL__e;qN|O2^4-C&i`r$t=y)9s&lX0FG}a^cxxU+9y1Ilm4bX;Y z^Q!oqQf|(%y__A7u)kTW#m*FmH{uiMFN+2y&emDsK9Pm#t?PpJF%%-E2n6WllvBj5 z1S!l7E7Ldeg@HTSD5uJDhtfcPzuN52q9Yfd&1wYEPwtmkUPPM$jEVVzov^~uFX@VU zYG{mfsqPJotv0z^wSMqJ&lvqUwl7 z-U7F_y;BFauwL6Za3n$Dxg52J=0k4ToT{|olz*r@&_u(L^O(Uoj|ekK?P2OlduCLz09fXwmc1F;hD7{C&{(PQgih#!YlQ@{kG&2?#~4 z+MJ&>w6I^QU{mQyu1~O+bdW)1RE<;%jqh&po-vKhu=b!%V#NaJl(8@<%w(CtIlCyZ ze>Ev3-sSMe&)aC$8Vi4h)L6{@?(-Sfp{)&}it{u#F1Tm+JT}Cfa#t;kWI44*X zvL<<kWrY(qNi* zGFW4Z&FWa-C7Y|N8w^sa(l|9R8`*n9xu`oTi=7E3eWmEN_6*=_SrL^8k*F56 z`tJB~+ETHp$NAVDGM-(^0jiy$^#$IzxXH&MpoCI7i~5D()=B=#9yPbMa^_`ggLl=Q{$#;EziVa|M1L}%H z-BuQS^5bB8d0U8Vc7XKz)S!^{cZo zj?k+LjGi`m`jI|#&x`JJ!FdW;y^6`c99$@zb-Lk&s)O_zYnGP>gz$av!kj1rt~AZX z({>o+qT30c(XTqigi}ef%CwpN6!a@U$3B8WOkl)A^R(S$z4_d_0C10XRSN?a3{^Vfb*Qn{q=+~&}&**v7^gL>Mo}xd^z+X3N z_iL$FluA~)%(w=@%Lf2fTACtOAmjlh~HX!D*COpKcZ)?J&p9w z)xQpFA51_KbOK=+09f}T#sR>Z5!B#6Si_P1GeQ4%$Q=%nE`=ld2$==3>^US7KtvMwF#0YS(Y8)7vg4zFfw zMk_Bx-X+m}KPbe?COdx-q(|Bypd+n%f=}{SXXTfJ)h1Xyj`)06YYPfwP*CTrq z{Ehy5RKgzRvcHVWv<6&>(k>+@u+72hRxU{0X*1%6=xBdE&NN8F$K%7R0sl5o)@Xqn z1=?2ZU2!Ig&thYIKoVWGmIuJ7k?vm(EDkw%PnzRYaw`t(9@pRnxCT+Wd(#b(G8aVVoFnZ03 zjF99?Z1^jsRYdK=)MR%c!Y^~lgAUqc`7!1mE2e!tbu@4hN#f?I7`1Ac}sS5H~JHCDHmYWD66>^K%O-pb~mO#Rs-mBAsl^6dPoO99pj9*ZN^i zd4Rg>sEpk$H|t|})ip7I1;cg1DDvWw*A8^zIYg91r~K(GLYvjCO_main`fkg7^0a+ zHuwB3*h?j+II*>G@sjs-Zn63cY(>gakz}e_k*UmhKRsS{1YbCgBAZ6T=jT~9VwTV) zinH0m9xP|xeql`TAsQuy{uWPiX^5L68E4a~VV#sc^YyaFHih%(UUd3RTzgTD32;zB zL-pLT5Pw<|$2G#1(eW}N17`N=+xhIyz5xcLdIwCi2VhX`nlp|a)?h!EWUHQtuUeH@ zeH_eK2_&RjCPu=HE{S#nt!tNQITpw)=rhRc2OjC*jGrQ54WxAtCVw0xO0xtVv0J4_ z&C|QoY`<(uVFz}j($YoNnh%l>u6Ntk3Tst;UK4%%USu?416~~8J$Z;NU^vCyTGVxe zX_hMpoBhC!Ae5!vbH$7QA?`EY4VPWmRk%(8E(CL%y&D-cM1TnQLKO{~C$2q0P-z|H zOx9ixT7x9UtB-B-2Z3N3Byo7q_ajqo+{1(V=N|69yJ6-YI1|ERRd4;S_r%KLXxz;7 zZ;};E-wE|D!&nN?<>IH;`mAKu_+m?lA3qkNEE-{L==Mf2!bXaw0naaXnbwYJlYgKev$ODCkav(M>Y)Xq!8hdnC z%grK3uv*@{qI!6KKIQ>^J9=xdWz`)q0fbiaF~5)zr>I=)N_9(Q|w28SCNj}Nv)>$z^2YvU~)K|Cp*jNoh+{IU_y}47*#L$9bq$vTrbZgr4HefYrKZa(J6268 z`#0t=wpw>kXj0nY_GvPcxhn@Zi{Ut<<-6&$A5EEp&RNaC)4+jc+9f($7t*0B$W|if-Y>_!e4rnvA9>ufgV@1hrdo8u%&~)5u*}R`aLDu3;G#B= z(vnf_|I~}4N|(`Y%yQ+tbSuO*8U4n6+NhM4X6w|cEILh-X$9@;(RJ))JWz5cT7+VlZ%|I!}HdW#~qBg9G`Sh7$v*Q?3m+;4c5eoN61K$ z!WX(#e)pLB60bUkfdW_tqD@{cKVAvO1wELeCJp$gS<&|js&z9oo81;{5_Qn}G99|I zOmwO)Wr3i(41LT<10kY3yJtapx8eQDIcjPqAmKdB7sificX!*FY`|_Xg zKFSwS)qPF)Ud}=<9TxYNjCyqu^4qr-!!V_mD@+V}4niLMZd8kGy1h!#8%!xo67id5 ztHZB|MDnsQFEPdp4*1<)VtG=>pLaAmFn5z|+lg+O_dte^N|NS&YJC(;(}-Co=|&^? zNEO@1m1rBeR^7VN8I6ezC$2sjUlIA)s5%9<&SSX>CMQJV;};Yeli+&7I{rA zR--Z#8)Hyix;m2kyb+Hl;r1mrZyS@>_9DLF6oTHU(RgHa27#4x%^{EY9)AR-hyV+7 zHyWv}lpc|^BA>?|==Aa}s-rlInxt>6Zp?WVFQ~pn!dyxW@g?;Y$!;&#mL9U%D(fpF zdSI~^90dm3i_Y|{p0=FW<15+cQc2zhFIX#W)hsXfxPTD9$)XAqXK~=4WnW-Q9-zKz z4c8x%_tRHIX<)QB3lLP?LGivIK^{BAWMgAX1EZy@uwYF}x$y028Z|m3>d*$Cn+Y&`zXHl;1{F zKa?U5A7B?&;nd7fHePtNAlfaBpCnYJ5z=bRM2JS#uVNBj#YqR<3=i_q@p!xrt}m(!46)4 zmQZoibJ4;gFW=)d5Cxl$==Fk28KM;YUdoF*rq5J4=etTfj;}B?gsV~BaTW)S7;}#V z^}azo%gItWG`>xhd}AruvY*Ac-KG^6p`hsh$wj;q=J>1I_=FXFV|03L-hR0=g-`h- z3uLb9(utTCrtLc3PVr2L(kd3B%_my7C@T0SL~8!DMosg_xQ*2;3=WHS2_qY?x8LIz z@Cqolt(?L*F0ze4NWNPa=^Nnk1cFsl8N8~GSbRN5j44anD8lBKd-`B2jh?TtbF8v3 z)NP#5w$K;i-Rmi=&I{5)W>@d+;~1^JC@`<2{n2GLa4uRmcB+GFBQhP)AjMAIph%M1 z`B6D0cJiw8h9*VaZA6ndtF)eAW)YT;sC6=@oZ23}U}?A(Zc<(SgtMFVj7CjoO@Xc} z8#yaC?{Fs4j<$w2NNkz+P+p3GOD-y1EIe~y5v16>(H&W7Q--&mFNFFEMr>`gW%ziY z{e`fC(xBjVNy1cUc63|#N?+7f*3fOWlYo0D&1+8(zUXX)u?4a--_c^3)?{nyNx7|e zSA(S8-p=u9D@}f`u3;M5B*$R+9PK4QzSmz`cdZn~feJUbymcJzO4%`yEaGmUTGKwc zTTg>T4nO$dfA7-X#$rxgS9k1!nmNkZW>1{6_pcp?EW$!`bB?8=2+!jJx_(XPJjXwm z{YhEaa(n+n>ep)e!p!lqk)(bx+JiO3KpH+$^RJ|07vu0B)M`UXGf=@jwaH+q8eO;+ zYGLx)PdSP&z_6wW5Rm&Y%;zW=H7Pu>BZZ+w{rPwkJj!NLP)|#$vm-?0fSlpbJ|q|8 zN&)YLHy0#Z1?2h<1j|=`=u##OXbmuA_@skUUZ zhpr6{9Ora{amF6kXGkp5wgToGW58iy+!XPG)}yXTb8pn`zx3t^eSwyw;@zuPK(jUi z4Sb`oR&F#m!O0p?%?}1-@OFgv|E9N3-IV?wb37IO9&`K=J&!q_#~jbo+ou`$>&9Gd zn1H6Y^uksE#$1DlsQ|`YOrS>p8FK+${WIqJBl`dOePfl3S#kBbEcQc5xfT}QShnmY zuAF{o&`cr??k#mzFbs$a1S)?gv=1;!MtpUq`h2HDQi1ntqGQ(7o}yU@C_t@)UvyIB zx>}0Jj&{f_qkJJY@jyYcYl`f`d_8Di?X;y0;}lrQ?tD`k9_+%?+NCq>bDXI{HO*Gs z{-`kuwmMw$e(|I3=X#13v8KrICeLyUunX(f=yX3egwJ(k`p6!vS6c4v%mzr?Dn;mi z`}m+Pav?!kH#Rb;^PH=|Zm~^C0|BJ-w~_TLKYnpH^`BF)!hiply~i(rwyu2VWyz2v zA`cOOt>3E-IbqWp`Obi@x3spcGV!uQL9d0uh9=OXkYiaO9Zcjxf9L*0RQm1fc51te z4F4eLnCjgGEEb*LOm3E9e1)rxxKc5C4&8%jn1#d3I0O8*X-zKZ^v4TKYFr41&2e(X zuuTu*3HX!5a;PeM!Nd}+$*WFkR5fnyDR8X(gR)ha<_;?5U`HXE$PC&bFQQ=?%S=v( zS0LFqr7mZ>*DAOeO>)ATP*pm^6C3)qSi*QVj8rZlN-2QIOUF?QUDT4LNW=nDwBDi0 zEkIT7_H>P>KXjOT8E6Eo!|%hCSs8>Ii2&*X#@#Yw3K^g5W|3d!S{sk+%qJmOJk&Gh{^ z_#Zx=WzvMZyrpC-C@oZCAM%HV9SwN zl5>RRTO4RO^elVp_x)tt3P%An*ftYGmlXp1E`hKgaMv(EsPz!dK8f7dti7lhH^iyr zrrkia%ybDrCSy4AI@0IStfwNypm)E1mAvT&o=MO6(eH%m=Jl(4pD}$i?iqG_^9P3t z!L7HqUoYkMDk*Hlk5UKFvo~T1)wMqy3AQ{Gcs{1Zq;}PGAQtj2RnhKz*X{XUHK_xB zLC|S|9Fa+>qCkd%cp=|^V=#tP-HG*ml5iXw)9IA%+ew7XUPIrSMLji2awhHk4MEJ9 zv5)svgaa8j=QJH;eNT7|T&7S27Hy2gIe#3}hDBEEmvTc?lbSoupMb5_7X{eG?6B0ji zR`vIs*ru`9nYi2F@&wrr#SfaNb8q;~S3kig(ZaB3O3i3;^Y9C8T<^j!H)RmmQN>7R zsw}H!ThvmTrHg5d`7Xd7N;~p-Uj%h%jjjmpF(OU{`t&Tn^@3BS#u81HdEW)e3Rjs4 zMn+O-4S5sKMh`WUOojsK8t$E{K}IO`&Y8<9%v9BA(GexEVNGuten!MP)5L;Q6J~D0 zpQj&_rJ7o*`PgE;OkTJDGq2)63OCTSIDL%x_1yfc7lGzyDH$kJpjpAyQoatob&34` zMsCO8n<^B3!L5xR-GO1Py)-VnTg_b6m2Zf|w_>;iHL#7qHC0bAl=`%7w({~4&1>%} zB4fK5V(2-P^_V|kt^AmStMdj*wZ3Y?te9r^K;W>XIPjv zZio1)lcDK}x$1u8`NdI_YU^mKsft~>^V;=I(wnKu*~M_17Y=d`r=!NM0 zUhmDQz;i}*$4MValjZr~v1n>acSw0y78+4vzrxu>hw{PISITn*J%sEfH<&nBiWYL5@JUN`8sBf|Yc%jb+)Vqz$VY z2X4&ou0WV(rb<6|z#HDbw$;$QEB~YCCr%ptGkV@TKfQ1Ix%&6)ot_WDc#49*=lcIJ z$B#oWB7m^~JtF26jsmcE9!1Oouy1 zuYMXzhxdQo_CNU(Zu>KOcH2`_|62R&*yh6mbYCbdTmpdYNyGvGY_oux0%99b^y5=K z5l$K*B4X9=72#)~J+6-a^0Ij_SH3y_MK+#XF zJypbStvwa}*4iJ@v(}zQ`seCjhjkk^pl)p~d;|dN1;hpbShIp!0>TbMBr(mWLI!7cy}EP>kFyc?OYm5ArI|61)-XcYUjMT2`5 z-9Cb}uPg6-8KaSCq!gcp(>S%pmw7aP-WOzO1$smx$jnTSw011sS2PCB_ic3x zR8Zf|7mskEEMb!8mFX}a(>ZJq@5=lVyXpPgY?(sLw%PhASo+G(-f;29QKRFi)MMx^ z>!!racQB>r2powUo8IxYJD{0vMkZaaW2V6$QNM&_A$u7~!?!a7Vd2uFRImaCap&{! zEo+dB?F_z=H9;bf_bJ!>J(hXC{(txN|26N31jYfhdGZ#42he3!5IX>L88%Ss|8yA;t$*en{}%yc zg5izJ*`^^=5x+iT2knmu0{>#{I)5Wd?}sFw#2ZuMLCnxcJKF@iys)tTfFtx-z`I+( zM|*7iximJe;wYPg7iVwuCqEK$>042~)%-y6^S5H6Wm`TQb7r ziFNQP@nqx{PkWO3s=l`2r5>{^v2Jw1;l<+zg^>|4L;(p-mk^_^*BpLV9>Sj}i1@{0CnInV&zf?Ip`fyLjG7{)px&rR zj7z>Xc)n^-JkXj-@*Ohx;paTyi+HtlN63iIuQhVoQLP=(oF03A;_8?dd`s`?3ts7< zYL0VW#9v-e#BQmDDZL$Ga!710H1NZX%LkpoX;TBd|V_E?*FjVu$gQ?iyw*~y1pLrcS=@{-1)=2$KkH0tJ# zyntQ=;jE!JtnBv>l~&BUREiD=@yJ1f-&^sfmU)n!@B9|6Y{aoknU2M1%(*^7MV#@a z>REIE?aXYgZxE?4A8>yD`ZygjNQl=yM;Efjv<2*AU&(YjJ58wEQWo`T1Wec$xGQ!c zR*_9BRO$hKTl-z<8t`b;Cl~)LVVK@Rv&sRyS_WWvUjz?Y5t%aBLP%BX2Rk^)B*n_N zh?@m<%XitVhk6Cn4ZgAtOqZ3g7Tcuvql3xxqbls)l`SCa#kO?Z+|sJ-;PA4Gn@|XO zdwRoiR3d)2_wYOLiP!|2Z|RHlao9p!DHDv%+-+vd&Ow<6RaT}o_iDGdjV%-Gk9$Uw zV`)*>Q7ldPz1#Htx0Tqj)7_o)HjnWf!mMV*y4Nk}{nAt8bDhKEcQW zsC1)~*wMwqFoj4j1sFIMD+FiZ=p58uE9zuU1M}O9a+3?cdmDtnHg*%*2TCdZfwB>z zVT~+(gmAyW!M=`!Y$SRt_`|eJk zNPWxRfyl$j5`mU6m*IGY5G_JyD*EMELxWmop<&_>tgYEm!fJr&VdK;T3mwH^G2Bi-)T?P?+ zC+w}^c14ueOij%5z2#II3xST z;W?eY`HxpIOt`MCkU7YrSd0bAqc*L^fd$t+hFNvvJ;D{DXHttT&`bQUY3I8(XN zOP`zkbCcIyiR8lpbSoJxLIqy9ANc>y0z` z40B89FOCZSz(QE2)lr#Rf+D(54=ST9(T5v3-G6O_A;brlI6Z9N5FQa;^yP zX?|+q2uW*tX@i#<%|M+#)GTm+Soy3|Sg=c5w1VcK);!{nu+UV;WR&)_O{;Id#3<7h zc=oYWI@3y$1*o`>L1LH%p( z?-@`1M!O9c(9We)#0mh~`-t-Z(B=en{14hltpA|>ujslgVb6b{bvmm0g*Q_CHp+c= z{$=!5hPvwNX?}jq8=+&f`C%eul8@FqrL(6yW8`HTv)%`XXZFD7 z$<*RvF~)r3lv3B;RiZJSf{J$x-y+GH+j>-IXG_jhXQxe)dj1FFV1ji?%R8cn>Ndiq05BnZMn%@*<>~tI;or zizr`DO(u$>B}7B8ULc4SW3dc2)vNbvCl?$pd6$ecs!mwAqjR?3!Dia(j4E;(-zGU|)PK|`2iE0-cL z4=wfYE-FJ}JILO;!m=6OP39KDPc=Gm6ozvTg41vKdDP>vj?kaypjm;7q$=gW*lqP> zS43ZtHIRzS-D1`>B2%s&b304|BrnYJI$=F1oa!ce*Y#6v{%&1kWyp{dzFizk zr4Bd2mQ-S0WZyZYL&sjP()Y*M?2uEuK4s z`4mgV*oC@NvPDh8J?XG*dNS`!r`jKH<()aH>7UTs6z-MvNgdtP_GScokG%tEz8&EdxSKDs8z@kXB zOfSxF8VqPXK!yTtp%h2f6xT=dc-vYaXDJ#B_b;pgwV1>jlXTVjEsu}KTr$@@{84w&8fn>V zhNVIf`ssu_=)@T%n0*Rw9Lv(`=Sov9*1N>Myy-LWg@aqnYRuTPQf%zaW1y!(#%nf4 z{=V06*93Krf1W{af#TltmgQ&`bgKb0>0Wl}c5Q(`yMUzUHu;dIN`3q$G9%zRv+T^e zI<+)~vy`m+Ln^50MYoeN&l^?~a{j9@#FDPiN5Lq;x_K%X+@biwgqPtOsff(2MHg^z zN?P4nM^No0U^jPoz*J3HSF2=T@n}FD1{vw}!6EDjz6Vl~GQ}foZL$qP1Ktj)Eu3#U z1$kz_>Mm(EhsZ4(8i2)gep}_cRar8cGqxL#@qtAL+28ZszG(Tt712SofcVkpnvITA z+Rd#Uobx_WX^c+GP6Vuw*O*^8Z-(m!&3Cb6)f$CcrAwqvQB*jmGA%?$OyFMn6}`Ty@(9JvE32W- z)b7QbN8J&&2<$QZa_uDmOvfHu!N0~ zm<4TO_B9z4#t3f#-8AGx6-<2)PTP%H0%7}xr-8%m1afVcI|a|f$cbvol)M{gCNn`5 zi@8%4vpPK65Pa>~J`Y!Bq|E=}dfxG!d&4NFtlS*L2?6yBgMyYwymBFLgrX!U(TY)J zaqH_>D_y>s5S|dVk8=*J4j7VOaaEO>Ka-DGxKsr$4m;Xr6?Dj!!R^DD2r|MsO^T)w znH`9s!Bji<+kq}FS!aX0+?h1OgYO)|A+1Z!q|=>GNR3`JJ!OaFQ2UR za$vIaW6XorAV}^>81cjzW(|Kqqyy^7q_5h$gJ1y7o8HG^`~KM0&#`!$SR?uI0UtUX z)h&!J-$6bELXWcV;(HK5d_e_QaUP#p&YL$O#5k+7pI`Hyfzuj|VrpFYxs@7|2>B?mhJhLe#_H%{Q(Ru3 zyo`Tar76_Ij(P7X#zhQIVacy@>0m|d#9V|29*^kg|8f5)QTkPxHodsxpya3d)@dN> zQN1wT@afwOFStlH)>&0%rBzIGxl`Gd`E4>eFk9cx^}8W_v_#v@&5meJ(zs01Ho)$0=_j!jfuLUwdqAAeXLv5@d)y!+T z&d7BoplT)?&3;#MF(GE3o<5K`m@us3qukUkN6?b4k?cFX%8hC0#^_GFErI_YDEdAe zG||ITyQLK3s%gQBzYpF-ex*17JJ$;A@i6lJ+v_jxA75Tg=uZb}tlCd7vdEZVpGWET zWjizUwciUs3GlOs-yKdr$O7qfTqF=$rs`-gNoB_q8w=V*E?7;XN|8mTRNPb0uGNrCSbdyCR_5Cf#w{X>~ z5sW?htPtimoCI2({Moc9r)EnC_o_dr_CN1o={D*iI><$X~En z`ivvxsSF)`1$Py(Y}rGA5`dPy+UC#+K03On4bxP***VL(6g;*#>dR#>mW$W6Sb7}M z6;zIZIm)y|9%q$Jt&BvPiJbO{Pt!ifwbVY8n=fLDtWBrBZP%GiEFl1f$5(Q-;1Jnb z%t-w_?iu}6Gh=1Z~aT8SxpV;^E;vrS~n1x!c_ z1+QYM7XkxktZ&n{mdk`rLeHhk4a*{N1d5>|HiGci)mklylQPaw5iirRAPeXZI`@h&Hz`ZP$^?PGSap?yDQ<!<^v(Y83(-b>qsb!vqMb7 z!G1+Ff@55of?D3A{>+rs%R-@h=qOurhkAe7cfBbZ4fD0!2C|$-S~h|7#^3FEg^e!o z5&G5M_6mrzs_a>!QV^GR`&g$dvVol@@LTfOsu8EaVC|bDms-^9VUg75^s#u5u4ppN zLTQV~T&}n)6)EvQWTjT_2bjC<;KAB*IEqPPL18wUg{LyOxRz^&obbpn zpcW`H$E9hi)=pNj_IaiB2XETJbm@)}l_-Vlkb_y;+9$L))aWp^kK}kyG490=B#js z0LAh$V%3YDy3D3G38&~io+~?5{e-&aa!0S<2Npc;QnMWtTl(M&Im5L_fVsavB7x{f z*FqI>xIhgxO3I*~^#=zkwEt|EySPyU)>4w`pXqleo1wVCEu9Mu+a zh^QgEEaK+}dBm=$#M)p_nNFnxv+WWe0!#;`Ug9sHu&ZOYra=l=s5A5YA(yY+C zPVj}nCbJWp1K-J5+FyG{#p0My%3@k<5{L$lO)2N z(Ge}RlM)QBGF*6q@Ul0=m)UbtKvek-R_e@OhdcCA)15^%FToWh(VM}G_WSi69tB?J zj4#*eI03U(+|LE~vuj>2jcV>8C-Ey)Gw0-jc&VF~c7zbx%9~oaZjJgLj zgHdDtWyI0-N1T#fYj03QE*fp=D^v8B+*)hlTM}b-1Rx*hF@$opl1SQ3 zr#>OKgwl&(%%oR2Ouq#}G?L{av;LIc{j%2b@-s5W^u`c@*wA}Mm=78*uNoJbclxz3 zL4z~)#>{O^j?k4buoXbXLUe()O&Gd*S-;L?v!xmm7Ame%4OG zB8jd82R9|#WVvhOk#N3=*@h^$i7uSi+AsnX)amWXhE-CQmd08Z$Cym|%v;T9(Xsh6 zZSBiu7uVzQBI2cqVdRiK+5NDwkLNDvab3}Lx3!L6oD8CdktBbdHs`0X>NRYX`}?rD zIAK)7j(9i1epTW_UhF#5Y`=F4V$p@U6utLDSpOU~mk#~);n*LTk>Xp4LQ@xEilv?p zn?aZ~!b-7ao)$Kq%!5{->;IiIcQ3=krsIRrhbnh@;t^%aVz8?X1_W> zIfx{?U6l+T&aBhZ6gLNGdHCpi0+x!*Sr~Y{5bv$AQ#4kIxCV**PqgL^xe?}K!XeKd z=;?Hha)N=CTPw87>-C0Igf=X|Zx}pR`G-pP7!*PjTC`!-BVM;W-oeXAYti(?Hi)4% zZBWy_US6&;*D1gQ@79}Q`OyEqOPg6CeF0gCS8X%7fp~>F6w2;>-dBjsQNL?c@AIBq zC11!4NVkR7{ZM`dwzw^vx@(V$oR|V1&6UF?N+&F6oR*pQ;0RgjqBVz)3j1sV1q&96x3clMWB6N=S>v=kT%X2E1c3B~o!|#I1!A;H^L2U6hLB5*Lt|aqZ^-XL$eL z)2ye4RKLfbPes4So_|EoW6$TY=kr$@o@U^08+%6q;{kf2(<%}LVC;R2xCUVC{RY(e zKV$FT=Pv__emtaqvWQ<=douc^wLhb0tv!wO&(*&N>*oj6Pf_sqT>oEB^P>3h06onc z6)6FrwR6Nh09xY$bp@m~K+#XFJypbStvwa}*4iJ@v(}yh`q$cDhqVtrpl-b)G6DeW zE5tJZSaXBA1Hu|m^b_l+iujH7Q_*j%|A?Nke#ZLwCgf=b{yMF-;REW{$0A1nw04Jh z3qWf;pq_xV1}OTewWo^st+l73-&*@4de++0NdH{@+pvxXCIHZ_Nq|J*pT-&z2nhrL z*1VwJfUpJ>{lNOkB7R~0Wb_N`Kci=?pRs=K)=x9=*J+K906@1UK@g<_pfyk=XaHK{ z1N8-@H9*l%tvyx5Z>>EQ{npwa(X-Z`M*8RKUx&31A)szeASwd@YX~G{09f;b`UAom zQ1lb)r;7NE^;6MrtpA9fv3|z-xm!QYz+b1eHbOw%nqJfjfYxA;umNaI05lMg)&NC6 zwf0mIzqR&M^jm9xM9*4#8tI>_e-GBr5BQ#<;P1KqzaH?#022Y)t?`OR0ni!(5-|X+ z34#U#(i))Xht{4f;+NK*jDBhD&*)iePXYaF?XSa{j|fn=mK7}lfHevd6#%S-Ktlmx z4Ji7F^;1Rs#`>w~H`aed&saZW{d^PhGy{K~)_jNob!#2b5dd1lKw<)*HDSQ-p{2~AUDl(xHB3|r}ONPZMZMrHmp&1`y8GE zjT^XHy?`BTpYu7HHzvp}=jL%?+Wv6XVo{w55~ZgqkQ4>Wb+-+vUZ3f>FxFXJD@jek zoeeFFGtSx?B8mauZKxrriPXn)#o~s?Q3<23?1v^^B#`0l`S8^=cRa=bAxl$sArry7 zt2B$S(|FkeA3=tFpilBh3&PY3JpJA~>@~Fg@TwhKC1agv>t^fvw|7VV6MR&Lob-r#5NGz*>H{cCuIoiLC*J5TBDcDzpWQB+j6{p{ z^{A}->4D>hF-gh9O2I?cMWdX9cRT0@F1lWu$gY2Y@0kMu<>@_#zcU%c)z=UCGVx8_ z0sdJ2zE|9sh~3}nty}aq=AjJpfVG-59b2C6aF9UIagtIPVXb0!eer((W_SHWJpr;e z5HKkakY%EkxHT5Uk6W7`KKiMur@;EHs;8pgs`?{(R@Jkro_AnRGw@fns!iRMSYVQW z?Z9B})SOIZlT9yt(v6fjL}FsFvrd*{*=EOLyTwa#4B%Fo3-O4NBI6Lz_fVsg`#;Zv z+FY~;AP}Oyqy{P9jF&oUsAoK|+c8G?AicWoDFb=2SCt=3)<4y3TWzA7?yUov>4K(= zGWQVeUR-69*lduM>a%6}7V3aFG!#*d#5F=^mzbNURq;SdEio>q5^X&zJhS&x3fyYj z2J65(u!o93vWN@Ec!|>K!D^l>^U;pHmM`P!6lIuRg|eUw8nYaN(*=0Uxmh}%@r9&n zwS`We7$D3_b3gQnrVHfEM&d0751{!HAPE3yzM`Pf|7pHJKfLJm#qJco@M>?8};YvU-f4Fam-#U9|@p+WwaO_0JKSvBmkf-1{w

L;A0M$nR$Pt7~V7$pBCrInrAI zY7+;I2c))tMNg{jsX~6M?WyRu+Wv^1)%G;jKUe=cwA)Alb?s6yD*$LyBdG>LSbw zAhiD#J&E>Hh5SbQspvP_e?-q{KcoHJwV!6-Z&O@U{vg>?6#PBc|JMh};`m+x+O>^}l>ks1 zGm;qqwMl`d08-n(q9@h%R3X3B_Ehv+ZGS}1YI_RmUu%CI+CF4}y7r3L2mrL%kn8}U zEe-nNKWG!F{xc!}zX%v|N5wt5DwV45W`dE%kiU_naq-?%nxo1VjI3oI*Lr`#N02*S|Q>H3b`^h zqQ$!*HmqDN^Nkc5#OaP%r84yK-^$C)y|c6p6R8unB9KvHO%XYD>tTJM3Hy>7p%;nR z%BkM5;wQh;kOh%mOZX0lQJn#T2z)+D+391t7T?sAvdN;Zm=xB65xILl zEl;}Q>weiKHnPU@AW@kca`wCCqXSOz6g6Q=#~tdkFfi{_<5|PEmQy3A%AIj5bh+ak z*p4-^MqR^i{o$o{61A81lLGMKCv&sIUe4u^mIbqo@>@oB+(0Cl9NEW6tsGtvEPu3- z_(piM7?24)d**Tw;iW^)k^}Y(*=`MX_&0Q!nXB?eWjKC| z>6iDUA}BKXgMB;81tfcu$Ock}EO{07CXc0bM^USnu`>Mp(bdpiejgBU#=wd9R9f(T z*0ec3w6MHCJC3c72TB&IhYLNcj1^n>4mBwuPJ^6FdSP`wz`5fa;g_J+2Y>kjtNjKz zq4VSwJqXU|9G9}DUTZPw+X`Mk@-I0^5g8oZUW}pkA=Fu%9l}9=*!u_%xY*R+zOO2` zeP;5dqIbW)hd|CkWm)FxF$P}HdtYNBf*pe7w}+xfEVHc2d?RI7L0ngiR@XT<8WmJRnnP~UC&ba+zufIH z-cYdWwyZN}edTlHIl-`qD{IZju5=)V19|trZ96X(gBFi|yRZV~s!IZ!T7Rws<1>Fi zGyImVzEa-Qc=i2V!csB33+xV1<_z%T^4zK&h`tT}*eW&d%0ex6g1Mq&4T0u5>-^%I zN{IOr6o!q@;j{zf!TU;ew#*xCC#>1FZ>{52rHd>iRzC`~ze5&RC1LPx*3`MnP`@Jp zM}$&6XF!z1)4O!?xk60ec5l-!RDffTB!xU*R9<-8Q;{yd4PL%RZANfsL;Bn!j%RqL zEF}gRAAr*nbG7T?9pEmgSlf)4+f$VF&bRa%Xi<#;*Cb-w$k^anH*myZn)*%U`c!A=bcCb5u5HdCb9k`Eu<+Q#R|)4hB9zjc4D8B=ryCd}3@hpChuzl$Cz z-%?y;(m1VFEZa`HXwSuUz$+g%RQcN2`=Tqhj2|=fEdpOlx0K9HO(#;0XE7@K(ZW=pG?kZ`8?FeRp8aI2DRf%0v9ElP-W5w zKEfmIpu5keIgx>Wbk_}!=PH&VBDQusrwZ(id#K2EIj8SEta8Yeso}IZy)Hl48z|hL z`f@jYkYyXHg2Qcc75-u8N(wkLf6MO>*2cGQ^GkAqjrG`rOTSfAR3x9GGUFozxHZ;G z;M-Zfkx#(dIre(V2h1wGs57Psw+^0s>-MwZ{+-|$X~L-<8dQE`ejiMK{G0}gT{W?< zojl2T=)l3Jwrlm{l=mOUx^7>WZ*Zu`L*fx+Hi@&LhP;~z`vPqE9m5sxEe;R*2dm@P z!4`!o$(siKUM=9S%5;(*s`OafB@l~>#|fZ##Dgn+zZa31TnoXDo+B2cqu4Zg#@to6 zP+=!$qmjOUoz=NG5Z2kL5PB0k(%9i?UBW|$GGFMdHhXMRkxeX5_VJo=#bu@*tKsng z_Dn;qhD9OgwnF6Y+Gyy^crhlp)UGnd0OMtH2b*^wY8O3hLM|3XmHz05QT7ymhfZS{ z^^*y@+~XFn@@yRjyT>>exxOG5c|)k%`raNo8Qcs$Jv*ABw9uD&Xo;Yapgq!;sN}cH zLVniHlqX4wB;@4^E$urn(6b=B)zgNTCGT>u(>PY~d%cF*S^_>2O3A)QwKj>Po%2iF-g^UeUQWOo%k173QTsLVp!#eTR}(8WX(Q? z`YqXn&}q(Tni#$d%ZEtVmUbrwicw1q{~kus5Dw6JxL3IZFINX<6G1WPwj~HpG)40# zS4uW538SrjWg5K1T;9l{!dyg>s6MFbm2p>XZ-Y=o!4++r<+YrNr!&u>+&bss1zWH~ z(BhrTX_SX-@K(qdGK0N!WAV__*HEHBgATlZ1@jnR;?|XOlMwx0iA5(A!4lje*sEkU z%=d&D_@uaF!>NK>GY)Rd=VHYJ#llrmf6fawlX4|FfQ}f|MzOmmmp$=?#7dzbY29EN zE^qI-1LvFD3HN~<7N7wJM#w5fLPSI{Ye=%=nFz0Y=z_ULKbl1u?0`Jsekgb;{(-Xb z`Y%hy@oxzs-P?qwiVD#--f)r2whyYS2E@RkpNe>W(YkP>yBJs!iUi3s7##5-a)(Y0 zC?tGaKiD#_*;!l3hL22WYcuNhK%ex^wP|CMshHhEgRAp{)|-f4p$9Pf7Q`y{sB_!% z+2uB@aoJCBb!IOXU-+gK@*817-_C(2Cn`D@@gWvBHysAyi+8B!LPMssVd)AX)E-G$ z>O;rEj7lN++BaFq9itHK+RSqAAry}LtQM1{8RuLqeRP>cNa1>U|E6hf>HlNzE!(R6 zqJC|}c?gr_WlJ4%3l92B1ZUku_z5hP<-iMp@3DlSK_huZflXJ{9 zuW`*KdK#?817%jyJPNTP_?}w)K)7`}ol%P3^VqOnv3 zbf&P>p605A2s!z{!@Y10qYOW>uyV2MSie9be!(= zD%?qFRUuX;Dyu@a5fTP+<`&r}CUmCIhuSU)pAGUNHc`aw&UG#JobH5=CeB7zSSRF$NrQs4%Hyln( zG6lFNLWDkf$#LbSKK}L;W-dyDd9N}Zv|9bUObl%@CjlAfqg)9SkDQ@9{EN>r!dGZF zBk5_$_K5{x=E)Z#*}4+qGWh4{4cj)D7&Y{Q6Jo1XuZ1a8oo-y z){%a>o1o(tH?B-u+L_Yya(dA8T_Mz1PtEz|`E#~S4|MlB)k|fCqLW>vs%7h>I*5=K ztxNne-TE~|H6c32u~c+7(z`2}nzP5Ma5@fDRT!< zwEJC`C@$C<(+P}4|Eqjx*YK$8D{75yR@M@JF~}) z#7QB_CuFa4)~1|}+DOWMAcV(kay5(2MD@|T^_c2h>b8PQSXV$HMg?10wEF5?^ZvBS z^63)2R;x!BCamGTfKlI&N1)Ov9CbZtYbaF8WK9BU%N^zDrS_Ict@}d4Dj|~tjVA&G z{MTuV7V$Ao+hB@S#;T$(V_HBNTC(-uAR490wo@P7zXeWpUbQ>(ibG(f8eB#3Q1;19 z7`>caKOGCad_Pvfk=iJe8#LB2ia}!_56}55?AbNpnj9#3l-oV)Sz-)T6;r9)2zuqA z-rKAgKciDP#NpN<^9-CWCTeM95&2bBXj+Gh}?$kAVBeG(1g|a{T{_2ga5GR#U zY?za|nH_ys$r~|JRok!@lMD61-ogiI0%rJJ!|^Y8QhTx8ci6JmXIXl6MS(BMeBHx# zM0g1|Crw}w_xbg!c+U6t@6_&M3_Y-#6R7&{7E6b93)UXr<0Ap5(F(}d!* zZ{4JmhLJ0H*mE%T`zn7kpnTs~Uh>Q)F^@J@L-SGnstC-fKF`c9yZO-VEORAf)1C)R zJGSDa`6@e>8`NlTO#qi3HDa3n+O{2pwB+iPj{!?oI#Nh*xC|eno~gvRwRb9$8Zw1% z$H)EV2zB#0b2Bq(G|59Vd7=wSgTnC8tMR#VBwEryVY%U5V{f?M9p-mwVi)#ASj;QJ zZ|{a4Nb3x0OzJDf`fI>gz|CB)q?C8SXR(W^Y8p8jo(`U@6>*)E%xH1t^sz$TC1Q2@RvmxN+Rq9cfwnzZb>EQ5c(8nooWyGx>~N zauW3R0v*dZ$>@$3SIgdTfht-Zh!0gkf_HK_NoF2q0VwrBlMt%V1?{fJbK(ZGZxy3? zw<064+m)V&!VIdql8jmPC-hUdYsIDx5| z=vczu-9sO9(Q2-#)0aozo)t43DGW^?6*JS8F0!P|+x#)MJKJ!V;U3>tS|UG*H|dh%}T( zv6qb<2wCcbiQ#>PQl(_~GQ5DW<-2DO=Icejqm&;dPTWbG94KfF$3`ZbdYQi+^>r}4 z;ygzsj$m;eF|CXX*5gdIip___pnd7&V(zT8iifHH@}uk8*VQDdR-$xzcUtYZ2#Zl_ z^vp#}OnBdU%fZwxK=0uy!r^oB2v@D;WtZQHhlcwI7f(Ly-R=%aMnFIsu8Bfjf&;d6~ZBJVk2|g&Bjt475+0xG50x}Jgct_t5bPuxkA&SIB97-q zY#aRd8;Ox4TxTr>>nYl~MB)3n4B|>TQ3CAh?=qiFHhZ4olvF}|B856!NFMHOF??|S z_tX}c5XXk=jK%65tz31qC{rOLT5YQ7Zd`V2(=cH7N%4+B(_;D;CB?aD-PZODu#Q>+ zm5tBVsT6%xgx$SB1+IkpZ(wq!+2G(SH_ING&ko-@UT}@d!bTTnPU+Qtb|5HnE%0<% zA+t6A-23?}s$)1qBHBi4Z!-|zQN-=Y;eo1^jLyS+kTDa;qGLwY*(A(EU{+7-M1O`K zn;r@-+MRVd~k_32sH&UZ>nlgkKji;i}MU=1#2yhKo;$!jZkrAyqC7s zd@!yQGNWW}j#TBSU5IX$TxMOtnj<$!-Y|_;j$SY3mM@oa7P7+o7UX7JPXAs1R02O? zzHo7r^?mj71|t$tGx{gx@UJ(=@q7mp-DpToa|cEwhD#yB%2t+zi~?aXJU&XP?RbW?XTVoQead#eQ{#{b zC+IOVJnz+s%*bP_k^6j+?FzYV{>j#zc>Cqij^*-jSyg9*k?@iZde2#~y|<`im$G8! z2P)<^(lx0o58jv>x<2#8-b}Qd;-}k9@L-s}uppx=9zv7nh?rU#uyxnW`;2#3;X@R% zdZaA(s&|LV+->|m935z;UUhH%?M0$QWBo_K9iE&B$5uRM=_eNHW!B1|kURB0ww}>L z+4w8SkhTcXmGElWBus7LbH4Wny-GE4g=Rr}BXX;ps5w06tljwymrPcq9-+Tr)I8J`BM5esO5Sb0)3#Sujug{)tm$*ip23sPJh-s`u~JtVuiQ&MYk#ri>G zmd{scmwVv_fduIKi+%*#`0nICAL;ryoXRz@uVrgfr#u2OO+Fhe^DJGXM2<(GO=&f^ z4-fn~udzACB6yY zvgbw-zTkJC*vdj2gCBGH(O3*g#LAzbp*m+;Bjr8aX9eDeNX1H2l;0@7_~ehe^n);( zepqj6fM|=)F&T6eDnCXuYbbV|4sF5$!jz+u5vFKb-(g8HsD4OE0B2q>@btOdIwX~F z*%aMhgt-|;MFoZrr#OWAq-D$$EOb&$AJ%mLb?U8l9rcSOwiKpB*D!YGE$>8Ovdow zlwKZ1G$E=5VY>5P1hwh6PgvVhKck~YGxkncOwk_Z@ z>5rjNxhaBj_LXTaz9r7}CC6(#|`ng2)eRjD?B4QP_!3+x0(rgDu9JF@` z8Kud)n}?TGhuz$oZzZz(nAkp*(Fv)2F7D@?=h_RV>n;?-HGp&ebaDagyq_v#SY_LomnA@hUn4s?$% zwWO>(O4UtDUdQ9X9vn=(^ai4xvMp2sisAdn=ZT@ds*r{>6Y75cc9{)2ogaO7G``}I z37o3>tnW4Rs!e9~BhlTTi*D0}9n2*KWy;RQ#lp$mMtB*zPzz(VziFsqlK<>7RJu3& zCYJ_nKkSV(`~`(3-(6UobO>;S%2{L zd`^4WAHrObvP1xnWU^HKK3J*rlYQ^u%!?w z4N6IgP7fn`_io{tc;}N&@Ry_>jI9R85Wd<7vfkj>4E|)MggF@>ZXd1YlczCQwWCJR zo+nOmCbbjr2lw&9QZ>_e==UD6gdV$sofn~z_b!6K$obBe;HsV!{sz71%Dsi@_8}iP za|Wew(L5lIf&--ouai#pcH8`BX>6ZbZ{+btFO>YZ1yEv(WE`7HhQ3-tLsy^5xgy_U z1e*u5q7J#Q-9wH*rN-EX@`B-yp@O^FSJV0pW%^^Nf)jxyr7~<7$S8xAPOW0@0zHi$ zBENNoD$*xagMr)5qVQe6rm6WtW|vA_BxjMAVqYU3%!$q(v6$ME3Pj`%GaZqK*rE)J z!y(49M$Zqo5b*NCVY31r=>@+AUgX03CRy8%qlMjU7LAd5cK!33oNR8yGbFhBtUa^0 zuXe$({-nC5fyX7rh*u43v%Tj%TuwxFEdoM=)7dGE*@gigNaNe@pd0J?1Je3o@_yj1 zsfPA)U?NSQi47*T>8!M)Z-RE>K3dI=_oQ+DI6^ud5&+$MLeM<0lk15}_`cet+W4|A zg`uk|Y%QkgE-<30UlIcOy&N1YXquKS3&&p+n@eI(Ja^WPRq0D#1bKmVz64}lPhn-6 z{(g{Uzm1Zm^c&T92e`$F7La62V{mx*Sx5|yyu>#*t>%JDg}U=v{QftYKsTV3I)R>X zFDzN#oJw{O30qdw5;=;rBMrzB$mhJ?Jf?e77B!8jj3dhH>Z{lv?QYI8CoJ(yv?9NA zo^MrP(zj96m~JdQmPV*64uegnZ1=7&p(-7_)0l9#U8+aQ*L(&t9B&C-p~!O5yTyPc z6qqWuquE`B7?U?BW%Trf&pROX_oo$i3Mj~2{2`>H2L9t1hQ6#XkH!AHGbr11;|1I; z0s3+(>s;Ybgr|F5aEXYGxU6lt^Ei)be>zfj#AKLd8}<|UNq?aF@inq(pmCI!w{17- zSirCivgK(SY;0_HlMMGdmWSa&g$1HSI#py%d9>#;WL!}g)jT3B8(s$qeGU29)S}A9 zBkDavf?=dviSx6)-W69bsHNL|4nN$m(94wgla<_z10RLp;>=fsMpF;ge)qf8Vb^Rz z&=Do(bUOpQ8N(JF#492Cx?>?l{uv2<6J~zD65~NEjwqrDvQ~e1*gn405}jcWE`7HU zBN&zpRY9o5?|li3f)FCvp0O~d2MCbRrg}3}jPf0AbF-c{kMkTLi)X#^sDk28*#~p1 zc}~l^)ijO6GZb2kN5i$F4D`bdTG+2CBBcMryPZ@L*nQa-0 zL8|-@@_fT8YNlX8kYnN?JA=Lu+Z@)-S+C!^Z~7RMM$J|)Sy0gy$c>M{Ctjf-R+!`E z@LN*U;OoKZAH>3t<_I$xS=6me%Nnl@G1Iy6VHarXA){Cn0k3ON0pqAOT8ia5f-)UO z!0d4t?uDxhB_j>pIw*Sc0ux-~knn~#DG-v}^#h@Zt5SjstWVC9WFq%m=Lio^5P)^# z$xiDSKdhoRaJ0=rY$P9Dl$FqP%o0%W7J#d9O&WBXDr)A+x9?&q#8nCR+<+ zgiH?-lGCg`ae|kfDb)?>o)59^yvJbX8jA3?RL-C^QHvV?>1#K4>?+;Wz(rT)SlJES z=SC8chuxdp+wW3)r^!3reN|1%)iTN7s-~RLl{Re=M5rTIWbi>XSt&?8j$-_Q z2Qid4fO$GGiLBMK#EPt_pF=-dw6>B<#gp~ah++7!xzQqhCk;ZQB!v@pU1YP?7A>EO zejzEK;!86}3H8LXBz20h@0RqKV^&2>UBxLd^?I~0!Z2SV9T`e-Ddt8d>mIhZ-!;%* z=Fo5=ew?JeZ{j7m!`6~{wvql?T1$CY16)@7QQKpbE{aL>B(}tMhPl2(DM|KX%i}^5 ze+{U$8%Rh5swbi2wiD75h*UjiApJajNUW!4K5jK}sI^DoZUj2ZttQrx5Im9oBLexX0}OqFQW?P$3l0gqv+G|7c{>)=NuZZLQKbiO?u(@{OiXTWUH>rGWrAN5$I=hVz>_pw=?;@FP(rlUr;cit)j20XbWkr|W zlcGm)z~vnA^nEy#Qsyhce47b)dV z!Lo?Ln(@aV)Y7YFRwUGqWkEIRbt{pnFDedJTyGf=i)B-m?|HHN*(-BP8) zxoIA;b;edDcbHtKoU-T>-VrMT-6$8S?;;D5)5T?;`{sY5f<#c5rP$_T|M`QkHL@l9 zC=gEuVU{>O7Q#_1gxvP0lwoUptVGa;WFs>EvQ|f)M}Czk zGxP4>o~t|Agk=yFf$|X@V^g-`gsLIsBnlAEDTVb50=-B;1Fl%x~ zdYr^t=s|WAf#G7tDnS}W*DeMU!|JWeBw+{4%g=wzS+hA;oTl*cjjnfaE>C&|kcls% z8bi9#I86z(3G4SSH>jptvRx*VcA=Hg!%Q`4d8^^ssJ+<4k1+XgkhFmaDEptO4V$4; z+)F-7g~6zsms^tD1$5_lMf`ZMoz+ zfmrkF(&}#L)@MPTEHc>XXL^rLxQ;&KWYCeT1AZ6PtJdr zBMe^IKv`Ej;L7xPK%eA`-%s0sY{Fu>7fYI$FGaoF^WAdzvTy@Mh)uzqRnF{?2&6n_ zbP^S`HMZtgU1?XimsgLT&sWOTvg;*%Kz_r2vqCycH=P@$x-UEU!3NBqFENYMAWPb1QJS!4ut#1OGcD&1(ih+~6D$+QYJC3i9ib=!co1p?jS=lF_(ng5P z9)V&9H{U5UD7Oi01XUa{8nadR;p2i^aX2=AjtYk`Md-okHLrG?jinW|D3dm#)g_9i zQ1pKBR|>oM?4E5P>Jwzx?U{@glLxjfiTv%%d0qi&kYj`ZMomNAr%SiUfw?`rd;gMn z32p8w&<~VfK9M~SALO}Z)3))$#y~*oUW+n&VE2@vxhp0+eZ>562XNVtYT z0?7~aK=Dhb@w3(6eLW?AD0!COHIwkAcd|jwQTXG2PVgKeZo=3|2S0T@sCag$ucT({ zw#&E9slSawcvm4m#xZ*ZH3+Q~K0-^g(B@8}pOY0W%k)ltZel-zH}`3PTDm|x>|@)U zu*DR10B?vcdt1rZAL!Pw6APj6GC>4UKIV88?w9*{G~S_9?oW*i?zrIuJ*w?D#uABe zehH`U9toK}wYwt=^nE6?rEm7d>;yj?qkTv`46n0wM8bI=FRI)6QJI|Er)x*%>t&r= zphXdF#*<5R*O!+ORKiIxyZR){ApAb$qb}=^+(0h|p`dy(1<17ahVdXZ4$mS~;kCJW z#(Kem6=bB^LUfC|-mgMAw{@V4qb5Q=%@g2>7;W5S*-}ZGs9)A&eJnd6r|?pLPOZ2} z*KUm-oroA`HMKH%-Sp^r^i=LuCe-z_4xl@1byUYP@ABqT#j+oxB7-ncP=6q<*k?+W zXU5TuOy1CIR;o&_zfiZeE2d92oY!acU}C<6GSg5O zNl!ylnY^V~|L76Sl0&wmoo`_}xXgWosi^okVBS2P0FesHX4{+^9G8KqHec3ZyA4;| z)31#oPr_}?mgcPER&({i_dL{;SMWk*pstvF)}b%VKWRNAIX(`*YW30+EpWU7((opE z*oj|A;jcTPHBsrdEulME_!`RBS+_l(BkemiLo%R;4zrixcwYy z){X#jn_{N;69FnRrfJ93m&C!IQTt%uY7cJiJzg>158Lau_x!OB<=Ii};tSY^p zq+GC$pXXag+kv1gVgnKl^FHiumc??VA5#}A_E(Fnvthxcf~-{|%YZCP!E(>^-khO3 zU$dH{rA$^O390GmiMxvFsE$07Uo+_rEu>5ynzu4tCJG0OY5QF1y87pd2CL^rn@|e5E%rP25PZ!n@`wbQfx<%L^o(aoX|-WMPhbNpRGbqQ{>(% zkI}PA;!nJSr4Hc^(Q@?GB0oR#guNu7BL1=iRxpX$O91T$=z;JEg3I%4vxpBT*5*eP z(1A=4eMO%;ERP>(E{0S79g^gq8KMT{Y~&M?K9^X(fy_K%vVn(>Lmk;>P1nK}e1G}E z;HY{zV8ZjZn$9&Xfv7P|k2HXrFdZmu!RXDA%b9GNxJNC|JP?qN@BdyU@c(zg$f{o> zzQ13b{5=Ew$DHTC8Q_02!2jOddYys4ZU(%Y9MJ0x=aOdtX25w+JOIpq%Yl9Re`dge z@cw58{EvtnrWA1_@VE;I2wC^PZT$aM0t~%lN_!Rtq(y0)>haZ&YEq)h+Cl;p zP7%&|8u17cK>X68hA*quw8B(>Zes8Er9b?Ox!@Qi1a{{9Sio_Di;*m!{XhU9NiPQz-S7fkizs#ou0^xT71|4q3-vIDf9 z5_2&odd0cwl|gLKbe#}xDDgN266E&b@Q-cF3XC2a)&O}p6?w!TGB$G!Dz>nZ{+6s0!egN1~%YG$r3sCD?QpD~Z* z&OWmBj_XC68d(Q6q?^j+lfqD7knUVJR`^O~Ux?-oO@6!LI#9D0jevlbQ69o$c%vKb zDUPS}+^}v>+E)()>0s2Ct=xPQYchgN)+3Bw{Ekyuyt8=pBmb20)Ur~kV-TBTgX#X^ zZUHxx8XIjANsf)a;_q!hNay!B3xT5EAgt?A>-L6>lOR+wBkDwuwjb5p{ljuoggV#9 z`IanW4K1!HkuUM!<1W^13nz2K-`?WBK!)pF4O7A}Ur@|}`WfoEd0X&`c|hqPU7ZlZ(UgTyohAF89Yfnzhe*B+iB`11VP$*!x&4M1b=|S znQ^VpB5%Lv2f{-Ao(7?haQ(7SFw+_EDS^bGUx&i_zj!DDF|ERP3QNeqUZ8J2Xf zT}$pr5BAvLIm)0!DeSQ)1N#!?*-K#7Ka6Z8{p1gQMcRE|AmPo=gR>fTXp9*d_Ze<{ z#~ci{pppe56X)*A1a@o?VyLfA)~j1fb2`J+^quWY!1*oc(Ddv^WqYRi;(@L_$clC#qd; zp+PE)ejtu@U0d8A{a&J;O)P%wwS6hh+cZYVe!ga^)jRD75&WrWG5kX!hL2zKxCFJn zi(}R!S>ULT+~(B!EA+r=g=r8Gx}`?#IV{F>jZqSMHw{1upKQyVEN6ww!~>tfq-V+Q z#yy~BML8)86??|NNfue`+*`K~J$Mt5)eV!iSIqb_2}DR|X2+%dwewnGukg^y3tV9e zL5_`Tc~7MazQI!+BHy^zoI3vj&2=}x3R^L&=(yx*<69yTsZN`5h9s(A!XyR5rcuU6e9Hi^b zUqX`h$o2?ysPEQd6fzg?PVCPIW}~&-%{!ZTS!b?5){>31(7_zie3=#;G52mu=h^2m zQaD!btBgwFurDukzlAxKo`3sEpQ!l{V=QYZGM%CwDB`!fET?9!MABV7)+-Fu4KsmI zn2ygQOyxEX=JMOZetvWXZ?P!9O|FBcuJe48XD6JK&Y#_$M{3{nCM0z*WRDb;8p)h5 z71}yeX(+z5)5e8t*2SF8HWht4kj6 z@vLQgcGFY0!rYkm1E7u(k3uc z^mJ>B>mWpJIF(m1#`vgHgGzDmm~W{b7Z1w&9}_eRNTUMZrLh!FHiCK>b-ZX?Jc`lD zeB+GPout`{`{?)ctH1-c?9f84?anMPIo9}_!3$}pWE7xfb9PjejU*Kk=k}G5*c2Uz z6P-H6l>m4?DZj4HA_-p%UJLc{2muL2>XHE7jsBZ>)@^qdk28Zv(mQw26Mu8b(rdp|PJ}oT!B#ZBMkyhy3?;-+C=?KjnRnl_76m(^%vV?wp2t zj7$rSR?vM}SpU$xl=o$OXs2|@*msaLB#K(^_)QN@WTy#=~rR4Y5YJ8-wczB#}uCplX~H7#Jf zCxSny8XDN#ti$%a)x09Z!KEm>0e+rw^1qNJxaD`n$glKPe|b|Zy#GzBG^eX9M5z|H zgBYJ`IyWyazU}?qP#y~&BVl+zf&r`4_mYeeYJDrK7$qlWlN9l>RU>YR4HSDUSF1b( zQNu3nwB$MilG)P9l6`c?m+vBs%4>Zl-|-UPBgYf9e+v(Vab!o z_IN}rQi6ZKp(WCjX{v#q&Q*CM>W`@I>$$atJ?t!(@otq+$$ZkW>AAhNIq^G6O2L8Z zI+zF(q>#I{$5MDyl01HBhi7w~3l`OQML3il< zHsoqo43@VX#}^YvNVBvNxVgw<2^37li=tm16Qmyp@OPFLZd#VS&pTvHjuVI{Adk6M zeUd86#S33nOd+)%Yi*KbBgTnH+bVJVK{mcpScn1VG`~-f$bhALzxlp3uF4a3{QHuO z#HH%IMxdv)svQ&tr$u9NVzYvv?JenK+XV>WxZznlC;l?W~6~-8P@>9x-{OCUW z@fas{dhJ?7(K)Yv;^ZX#&Q;n&pG8Wn^n121vh&6UVAgr>8(f*P{cY*IgU6b!8f04V zcENfHRKxLOmTf;VnNKhKC@g?;?jv+KOsm57=O1T#<{c>+jj%8!Xq$UzNr7&#?k5vr zvvva2A)MPpZ5&2QPfXr~Uh!1P=HKW?aBorYM<`a4I$Yqjut5lJS`-v?&PrW<%DY3*{G3?7R(o{qPUz zRCH^tGN}$u9s467p;2sj>jdo*PZ*kIGHoBiz~5U9^^0e^F1sEC5_vH$Y$iRhp93O?=MciKC!@NP%AOOySU~nuTG|^dY7drPf z4d833+b0O);nsnkNdc>2fjr|-7I8}dh*tr z6H9LLJ+1ISwsFO{p+I8cSDpM!Tmz2Xo^n*`aC!tR+6_|@umtk&J^B31*MWX~y*G`U zQ~p}35^Qg17z;8X}Fgnwh1EhK&WkDvnjc&5|Uo zvx1vW`Maj%4&I$NYpU`;XZETa*>!Gz$Y~Zh5bC*32kl#@+X{myaf%Msls|Y=DU_{f zxlzvUZ;;-Fqcu2B-^yCz2p(JoC)nJHG_tzoZM_j}`&7b89smj=oAkL_rl($?Rxl&M z)JRt)D}kfkX&n7zmfLAhc((1n(WQGH(u{OF zeZ~AlR+#2$twvB5AfgkMK6F@ZvbR$rn{3jxXl(i1qwNBGzPR3xv7@7B>p$tA)PGlf zmqEd8Cyl#rmA}EFQKam9$F*=)gNqyKd^)*xE}eJZ<;E9mwSn(X(QcB|vuIuB=ZwaP zgd`-p=TDfoQX&W8X6ORCa)S}lv#-3xA!?jnF<{%*22EixEnG;xo!nEBb=bb)Q zvFfYAwV)$WmJ1%Erk$*#8rH(w$DGir*ad8KqqTa~01@c7OnyY5ULUV2O}=fCHH%3x7$dMJ;T^f5&GG;Ux2L?$vg75LhF=2lxGCtWGR(BULdGma9r= zHH~5Nfcgr9=Jt4Z@#19EgYrf+zMmb6e0`v>K8LA{CCUN`9LWJvp09a$cVg5a?d4W~x zf#ON9-&JUaDy}+BH3} zZ&8O2tc@2Nje~j*DG0TlyI9kl@(591!mD?8%Ojnr^|V~S3c$2@B&yCJ)-YzF5=RQF zGlW$8OIzvBCLG=3v2P14Q+Wp7kB*GYo@f%FSBfO15(?+=i&3$3FC4^Qv0s_A4;U5*c_f$Qj= zJ#JkXpD@Q~TJEEwNK7SQOEJ1R>UKtA9Kv(i*DyqIg*SQ`DRS3MCX84jY=w%BIBdjV zpcm*gUoh+VoLL)neBA_fv*TFM%)9>Khx2Jy^2U!@5$Hty@-LDwU#~xOT4U{eic};u z)yHW9TZvG(xzS2JV_ao;(Xt8aLa^}7-z^u6Bi46R^6p$}&-(Gxgc*+OBVsky;Z#w6 z4ewV*&XcXKSML}E!`@!tLCV1LU@XhYgBZDcCB5ft!yZs4!9U5?3_n15Bny|P?DEkm zt2ED;oMPHN>vp&TXMNF?;1}A}FRxN}w77iXCu&ZitjrP1NN*K@mIQH}ZiUV&dW@M= zl%s=G;maegx%|ZCfsRBa`ZkqK3KoXSkJoRyMc9se6iwbqF)(Bk?i$lsJoWI6-9sa> zNdsAOTXIr@5kp{{0l_kLg3`6so$r0Bz4=y8#Pcl;UF>bPctJ$F5Azj#c4&t_<$l#Z zu&(US?+gFujQD?#SpMHL;yn0lb<&!1B!lLdH-q=|6PCbYV_Zuk3XY-SpUQN-=mM$8Tjk8CP)F`(FZA# z6g>c~iJ(LP(3%2RE+DM|ihgPBwIY6N?X~E)*8Yh8Y3+5Sf35y?So=`|>efV3asaTF zK#2!{wIbMOKv)BceqsGu5x=p1E&7f1AJIRo|6%>FTfff0U#GQhN)?O{*KdrqQ{in4*qkmd^4e0;Y{yMA$sQ`6r zd8tYOSSzEH0>D}YtOO9&fTCYmzgEO=tY3?MWBo_;59@ze|N9d1Is<>5*8Hdeb!$DT zF#uXqL#YLzHC3=OKw1M7{nFZNMf}#0TOG=RFbuQVb6t?8lk z0MMEmSQQ|x0g8TV?bRaw)7q=ie_H!9`lq$mk^Z&%*I_M41E^bnl%@xOwGqlN0Ib!) zY5-yVS_I1aKX2@iG*~L4BeapK3tsot0(dZ1?Tc}*rq^JgZ9d{Kg;{o$5*2nd| zz8q_|jk#YNhE=34c&3;8q|V2_$=HtCXloxTbQWgG3hOQ^h*ixl8vt(q_rDCsWTK2ANEl_TA-a$NXv#~ z$1jnPN*oy|TrcfUsTil+EYlnfcGKh7Fl%}vWZpeyYDW1Y>8u=#X!a$oC(&P`;su_U zE&CcB;Gbekz&D>EnD!fP4fQEzhsfNCHub!JM<`0wT1U%WK<$~|6Ia@I-E>#A{C+Xs(6EV+E?&I__}ABv|3Q;raBre@FmXq z6yiFC7<+ULR(Lm5{+nxfXOdm=IBhjb3s*ArQMEgZPd<*E!ce+u7F{OFCfOfmIze;C zauuw-x~@Hdd~v+Rsx0}x_z{OrO8^_Ksv=Cp<*a&-mfeeLd$=kN$IC?DOzw5ez^@%M z;)Q4=lPuv4m!?lwO1+VRE%5WefE}nKx5$we0H=CDV`H;T|FXBiNrIWx+vC!QJ)HhN zuk+hk^&yGDcON2mGU#U|6m9cUf^I5M%C=_W_bcY9t3pF?%Y_$BZ`t_|;PXT8vJK^m zuwM4U@=|B5MbTpIPw{rNz9IdX(Fe7J`2gHW;rC_F=0R0*kw2p1iZSXb_ko;1%-(b7 zOPVH|HPJ9!oba)d-h0lcB}~3M$;AV~V1|5+Z70ddMsSg-xqyyu&UKm2^^|1TZ>9ps zV#UB?Z)W(v4T;%9&}l146CTamuH9|*5)xUJRg_Ru8zRhSz~Xkke-0FD^!qFabbhee zM5d))J^Ohm`ToI?XdcYM!zc6r{{xUn<|2oNTD%b#{L}EKWDwICIv(R#hX0+x{J;Nj z{&-LS&*-1@|4IMfUiNhc{<@~`M+;~#n=LH|py_`=nF7%CHNffsHGM$Quf6PRMf~2& zz83x7%l;Al)7tAu|62X)uw3n@twgG^(CCU;2tTn+J0AUR%`i1ptMf}G4wdgn2 ze?n`aS09vy}*#e+7EwCm)S_2gQ)Y_{>{HL{7qyMz_ zXY@~NuOt0y_3y#@->}+i6#PA(|9``3$%1r%c5CC(l>oHnh;jr#YuaEffV2iE`lYqk ziukRy*P`EA`y=|Nwby|DZ|$$c+K(Pkw_cYX1Aw(F$`t^tb->yHVGStyh4pJi{KopV z=r`7XME|hj0!RK+!L)y;j6;t-Tig z*4iJ@Kdrrv^sm*w4eJzO1_0ff3`hnM0M@>!pa8Je1M32WHK6Dx)~^=vAJ(r%|6%=S z^bhNQSpVzRuQTx1X-$v;K({7ClA#BnwLnx@09w-r`vOR7fTCYod##AyT6-<}t+hX* ze_DGT>0hgV9oBw~fVwr2j2r;0Ls3xyU~K@_3kYjK(J!oDE8;iSuSLJH{v-N_^*^lt zb?es|`0KRR%?PMlGsxHg&{`xaE�=g7pK^8ldQx)?O>(x7J>ZerxTI=%3bJNBY<5 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 literal 0 HcmV?d00001 diff --git a/docs/src/documentation/README.md b/docs/src/documentation/README.md index d0166933..2c2678ee 100644 --- a/docs/src/documentation/README.md +++ b/docs/src/documentation/README.md @@ -11,6 +11,4 @@ TSFFS are provided here. - [simics-codegen](https://intel.github.io/tsffs/crates/simics_codegen) - [simics-api-sys](https://intel.github.io/tsffs/crates/simics_api_sys) - [ispm-wrapper](https://intel.github.io/tsffs/crates/ispm_wrapper) - - [ffi-macro](https://intel.github.io/tsffs/crates/ffi_macro) - - [raw-cstr](https://intel.github.io/tsffs/crates/raw_cstr) - [version-tools](https://intel.github.io/tsffs/crates/version_tools) \ No newline at end of file diff --git a/docs/src/fuzzing/compatibility.md b/docs/src/fuzzing/compatibility.md index 4e23d482..0f1df922 100644 --- a/docs/src/fuzzing/compatibility.md +++ b/docs/src/fuzzing/compatibility.md @@ -32,7 +32,7 @@ Supported Architectures: If your model's target architecture is one of these, it is supported by TSFFS. If not, file an issue or pull request. Adding new architectures is easy, and can be a good first contribution to the fuzzer. See the generic and specific architecture information -[here](../modules/tsffs/src/tsffs/src/arch/). +[here](../../../modules/tsffs/src/tsffs/src/arch). ## Micro Checkpoints @@ -48,14 +48,14 @@ model with a simple test. ### Testing Micro Checkpoints As an example, let's consider the x86 QSP platform model that ships with SIMICS and the -Hello World EFI [example](../examples/hello-world/). The process for fuzzing this -target software follows the basic flow: +Hello World EFI [example](../../../examples/tests/x86_64-uefi/). The process for fuzzing +this target software follows the basic flow: 1. Boot the x86 QSP BIOS with the QSP x86 hdd boot script, with a minimal boot disk -2. Upload the HelloWorld.efi EFI app using the SIMICS agent (for most real targets, we +2. Upload the test.efi EFI app using the SIMICS agent (for most real targets, we would just boot an image that has our target software EFI app already included). -3. Run the HelloWorld.efi EFI app we uploaded -4. While running, the HelloWorld.efi target software code reaches our start harness, +3. Run the test.efi EFI app we uploaded +4. While running, the test.efi target software code reaches our start harness, which triggers the beginning of the fuzzing loop by taking a micro checkpoint. The fuzzer continues execution of the target software. 5. While running, either a fault is encountered or the software reaches the stop @@ -116,17 +116,20 @@ script-branch "UEFI Shell Enter Branch" { # We are now in the UEFI shell, we'll download our EFI app local $manager = (start-agent-manager) - $con.input ("SimicsAgent.efi --download " + (lookup-file "%simics%/HelloWorld.efi") + "\n") + $con.input ("SimicsAgent.efi --download " + (lookup-file "%simics%/test.efi") + "\n") bp.time.wait-for seconds = .5 } ``` -Finally, copy the `HelloWorld.efi` module and the `minimal_boot_disk.craff` image into -the project root: +Finally, build and copy the `test.efi` module and the `minimal_boot_disk.craff` image +into the project root: ```sh -cp /path/to/this/repo/examples/hello-world/rsrc/HelloWorld.efi ./ -cp /path/to/this/repo/examples/hello-world/rsrc/minimal_boot_disk.craff ./ +pushd /path/to/this/repo/examples/tests/x86_64-uefi/ +ninja +popd +cp /path/to/this/repo/examples/tests/x86_64-uefi/test.efi ./ +cp /path/to/this/repo/examples/rsrc/minimal_boot_disk.craff ./ ``` #### Test Micro Checkpoints @@ -204,17 +207,17 @@ running> You'll see several automatic actions on the SIMICS GUI, and you will end up with the console screen below. -![The EFI console, with the prompt FS0: \\>](./images/REQUIREMENTS_Test_Micro_Checkpoints_Pre.png) +![The EFI console, with the prompt FS0: \\>](../../images/REQUIREMENTS_Test_Micro_Checkpoints_Pre.png) First, we'll run our EFI app to make sure all is well. ```simics -running> $system.console.con.input "HelloWorld.efi\n" +running> $system.console.con.input "test.efi\n" ``` You should see "Working..." print out on the console. -![The EFI console, after test run](./images/REQUIREMENTS_Test_Micro_Checkpoints_TestRun.png) +![The EFI console, after test run](../../images/REQUIREMENTS_Test_Micro_Checkpoints_TestRun.png) Now, we'll go ahead stop the simulation and take our micro checkpoint. @@ -228,7 +231,7 @@ Our simulation is now stopped, with a checkpoint just taken. We'll run the EFI a again and continue, then stop the simulation after the app finishes running. ```simics -simics> $system.console.con.input "HelloWorld.efi\n" +simics> $system.console.con.input "test.efi\n" simics> continue running> stop ``` @@ -236,7 +239,7 @@ running> stop We stopped our execution after the app executed, so you should see the output from the second time we ran it ("Working...") printed on the GUI console. -![The EFI console, after running again](./images/REQUIREMENTS_Test_Micro_Checkpoints_Post.png) +![The EFI console, after running again](../../images/REQUIREMENTS_Test_Micro_Checkpoints_Post.png) Now, we will restore our micro checkpoint and clear the recorder. The second step is important, because if we did not clear the recorder we would *replay* the execution of @@ -253,7 +256,7 @@ simics> continue The console should be back to the state it was before you ran the second app execution, and will look like this: -![The EFI console, after test run](./images/REQUIREMENTS_Test_Micro_Checkpoints_TestRun.png) +![The EFI console, after test run](../../images/REQUIREMENTS_Test_Micro_Checkpoints_TestRun.png) #### Testing for Your App diff --git a/docs/src/setup/linux.md b/docs/src/setup/linux.md index f1c1bf08..f3155ba0 100644 --- a/docs/src/setup/linux.md +++ b/docs/src/setup/linux.md @@ -170,8 +170,8 @@ ispm packages -i linux64/packages/*-linux64.ispm \ --non-interactive --trust-insecure-packages ``` -You are now ready to use TSFFS! See the [User Guide](./UserGuide.md) to learn how to -add TSFFS to your SIMICS projects, configure TSFFS, and run fuzzing campaigns. +You are now ready to use TSFFS! Continue on to learn how to add TSFFS to your SIMICS +projects, configure TSFFS, and run fuzzing campaigns. ## Set Up For Local Development diff --git a/docs/src/setup/windows.md b/docs/src/setup/windows.md index de9af8e5..211eee4e 100644 --- a/docs/src/setup/windows.md +++ b/docs/src/setup/windows.md @@ -6,6 +6,7 @@ should be run in PowerShell (the default shell on recent Windows versions). - [Setup (Windows)](#setup-windows) - [Install System Dependencies](#install-system-dependencies) + - [Update WinGet](#update-winget) - [Git](#git) - [7-Zip](#7-zip) - [Install MinGW-w64](#install-mingw-w64) @@ -20,16 +21,93 @@ should be run in PowerShell (the default shell on recent Windows versions). ## Install System Dependencies +### Update WinGet + +```powershell +winget source update +``` + +If you see the following output (with the `Cancelled` message): + +```powershell +winget source update +Updating all sources... +Updating source: msstore... +Done +Updating source: winget... + 0% +Cancelled +``` + +Then run the following to manually update the winget source: + +```powershell +Invoke-WebRequest -Uri https://cdn.winget.microsoft.com/cache/source.msix -OutFile ~/Downloads/source.msix +Add-AppxPackage ~/Downloads/source/msix +winget source update winget +``` + +You should now see the correct output: + +```txt +Updating source: winget... +Done +``` + ### Git -Download and install Git for Windows from the [git +Install Git with WinGet and add it to your `PATH`: + +```powershell +winget install --id Git.Git -e --source winget +$env:Path += ";C:\Program Files\Git\bin" +[Environment]::SetEnvironmentVariable("Path", $env:Path + ";C:\Program Files\Git\bin", "Machine") +``` + +Alternatively, you can add Git to the PATH using the GUI. + +1. Open the `Edit the System Environment Variables` control panel option +2. Select `Environment Variables` +3. Highlight `Path` under `User variables for YOUR_USERNAME` +4. Select `Edit...`. A new window will open. +5. Select `New` +6. Type `C:\Users\Program Files\Git\bin`. +7. Select `OK`. The window will close. +8. Select `OK` on the previous window. +9. Close your terminal and open a new one. Run `git -h` and ensure no error +occurs. + +Alternatively you can also download and install Git for Windows from the [git website](https://git-scm.com/download/win). The default options are acceptable. In a new powershell terminal, the command `git -h` should complete with no error. + ### 7-Zip -Download and install 7-Zip from the [website](https://www.7-zip.org/). In a new -powershell terminal, the command `7z -h` should complete with no error. +Install 7-zip and add it to your `PATH`: + +```powershell +winget install --id 7zip.7zip -e --source winget +$env:Path += ";C:\Program Files\7-Zip" +[Environment]::SetEnvironmentVariable("Path", $env:Path + "C:\Program Files\7-Zip", "Machine") +``` + +Alternatively, you can add 7-Zip to the PATH using the GUI. + +1. Open the `Edit the System Environment Variables` control panel option +2. Select `Environment Variables` +3. Highlight `Path` under `User variables for YOUR_USERNAME` +4. Select `Edit...`. A new window will open. +5. Select `New` +6. Type `C:\Users\Program Files\7-Zip`. +7. Select `OK`. The window will close. +8. Select `OK` on the previous window. +9. Close your terminal and open a new one. Run `7z -h` and ensure no error +occurs. + +Alternatively you can also download and install 7-Zip from the +[website](https://www.7-zip.org/). In a new powershell terminal, the command `7z -h` +should complete with no error. ### Install MinGW-w64 @@ -37,21 +115,37 @@ If you already have a MinGW-w64 installation, you can skip this step and see the [section](#i-already-have-a-mingw-installation) on using an existing installation. Download the MinGW archive from [winlibs.com](https://winlibs.com/#download-release). -Select the UCRT runtime *with* POSIX threads and LLVM/Clang/LLD/LLDB. Select the Win64 -7-Zip archive, or use the [direct +Select the 7-Zip archive for Win64 with UCRT runtime *and* POSIX threads and +LLVM/Clang/LLD/LLDB: + +```powershell +$ProgressPreference = 'SilentlyContinue' +Invoke-WebRequest -Uri "https://github.com/brechtsanders/winlibs_mingw/releases/download/13.2.0-16.0.6-11.0.0-ucrt-r1/winlibs-x86_64-posix-seh-gcc-13.2.0-llvm-16.0.6-mingw-w64ucrt-11.0.0-r1.7z" -OutFile ~/Downloads/winlibs-x86_64-posix-seh-gcc-13.2.0-llvm-16.0.6-mingw-w64ucrt-11.0.0-r1.7z +``` + +Alternatively you can also use the [direct link](https://github.com/brechtsanders/winlibs_mingw/releases/download/13.2.0-16.0.6-11.0.0-ucrt-r1/winlibs-x86_64-posix-seh-gcc-13.2.0-llvm-16.0.6-mingw-w64ucrt-11.0.0-r1.7z) -to download an install the tested MinGW version (LLVM/Clang/LLD/LLDB+UCRT+POSIX, GCC -13.2.0). Once downloaded, run the following commands (assuming the file is downloaded to +to download and install the tested MinGW version (LLVM/Clang/LLD/LLDB+UCRT+POSIX, GCC +13.2.0). + +Once downloaded, run the following commands (assuming the file is downloaded to `~/Downloads`, substitute the correct path if not) to extract the file to the MinGW directory. You may prefer to right-click the `7z` file, choose `7-Zip: Extract Files`, and type `C:\MinGW\` as the destination instead of running these commands. ```powershell -7z x -o ~/Downloads/mingw-w64/ ~/Downloads/winlibs-x86_64-posix-seh-gcc-13.2.0-llvm-16.0.6-mingw-w64ucrt-11.0.0-r1.7z -mv ~/Downloads/mingw-w64/mingw64/ C:/MinGW/ +7z x -omingw-w64/ $HOME/Downloads/winlibs-x86_64-posix-seh-gcc-13.2.0-llvm-16.0.6-mingw-w64ucrt-11.0.0-r1.7z +mv mingw-w64/mingw64/ C:/MinGW/ +``` + +Next, add MinGW to the `Path` in your environment variables: + +```powershell +$env:Path += ";C:\MinGW\bin" +[Environment]::SetEnvironmentVariable("Path", $env:Path + "C:\MinGW\bin", "Machine") ``` -Next, add MinGW to the `Path` in your environment variables. +Alternatively, you can use the GUI: 1. Open the `Edit the System Environment Variables` control panel option 2. Select `Environment Variables` @@ -61,17 +155,23 @@ Next, add MinGW to the `Path` in your environment variables. 6. Type `C:\MinGW\bin` 7. Select `OK`. The window will close. 8. Select `OK` on the previous window. - -Close your terminal and open a new terminal. Run `gcc --version` and ensure no error +9. Close your terminal and open a new terminal. Run `gcc --version` and ensure no error occurs. ### Install Rust -Go to [rustup.rs](https://rustup.rs/) and download `rustup-init.exe`. Run +Download `rustup-init.exe`: + +```powershell +$ProgressPreference = 'SilentlyContinue' +Invoke-WebRequest -Uri "https://win.rustup.rs/x86_64" -OutFile $HOME/Downloads/rustup-init.exe +``` + +You can also go to [rustup.rs](https://rustup.rs/) and download `rustup-init.exe`. Run `rustup-init.exe` with the following arguments: ```powershell -rustup-init.exe --default-toolchain nightly --default-host x86_64-pc-windows-gnu -y +~\Downloads\rustup-init.exe --default-toolchain nightly --default-host x86_64-pc-windows-gnu -y ``` After installation, close your terminal and open a new terminal as prompted. Run `cargo @@ -80,15 +180,37 @@ script). ### Install SIMICS -Go to the [SIMICS download +Download SIMICS: + +```powershell +$ProgressPreference = 'SilentlyContinue' +Invoke-WebRequest -Uri "https://registrationcenter-download.intel.com/akdlm/IRC_NAS/881ee76a-c24d-41c0-af13-5d89b2a857ff/simics-6-packages-2023-31-win64.ispm" -OutFile $HOME/Downloads/simics-6-packages.ispm +Invoke-WebRequest -Uri "https://registrationcenter-download.intel.com/akdlm/IRC_NAS/881ee76a-c24d-41c0-af13-5d89b2a857ff/intel-simics-package-manager-1.7.5-win64.exe" -OutFile $HOME/Downloads/intel-simics-package-manager-win64.exe +``` + +Alternatively, you can also go to the [SIMICS download page](https://www.intel.com/content/www/us/en/developer/articles/tool/simics-simulator.html) and download: * `simics-6-packages-VERSION-win64.ispm` * `intel-simics-package-manager-VERSION-win64.exe` -Run the downloaded `.exe` file to install `ispm` using the default settings (for your -user only). Next, add ISPM to the `Path` in your environment variables. +Run the downloaded `.exe` file with the command below in an elevated PowerShell prompt +to install `ispm` using the default settings (for your user only, note that if you +downloaded manually, you should type the name of the file you downloaded). + +```powershell +~/Downloads/intel-simics-package-manager-win64.exe /S | Out-Null +``` + +Next, add ISPM to the `Path` in your environment variables: + +```powershell +$env:Path += ";$HOME\AppData\Local\Programs\Intel Simics Package Manager" +[Environment]::SetEnvironmentVariable("Path", $env:Path + "$HOME\AppData\Local\Programs\Intel Simics Package manager", "User") +``` + +Alternatively, you can add ISPM to the PATH using the GUI: 1. Open the `Edit the System Environment Variables` control panel option 2. Select `Environment Variables` @@ -99,8 +221,7 @@ user only). Next, add ISPM to the `Path` in your environment variables. replacing `YOUR_USERNAME` with your Windows user account name. 7. Select `OK`. The window will close. 8. Select `OK` on the previous window. - -Close your terminal and open a new one. Run `ispm.exe --version` and ensure no error +9. Close your terminal and open a new one. Run `ispm.exe --version` and ensure no error occurs. Next, install the downloaded SIMICS packages. Run the following, replacing VERSION with @@ -110,7 +231,7 @@ the version in your downloaded filename: mkdir ~/simics ispm.exe settings install-dir ~/simics ispm.exe packages --install-bundle ~/Downloads/simics-6-VERSION-win64.ispm ` - --non-interactive + --non-interactive --trust-insecure-packages ``` You may be prompted to accept certificates, choose `Y`. @@ -123,7 +244,7 @@ Clone TSFFS to your system (anywhere you like) and build with: git clone https://github.com/intel/tsffs cd tsffs ispm.exe projects $(pwd) --create --non-interactive --ignore-existing-files -./bin/project-setup.bat --mingw-dir C:\MinGW\ --ignore-existing-files --force +./bin/project-setup.bat --mingw-dir C:\MinGW\ --force cargo -Zscript build.rs ``` From 5e26288b885488c40954d8e23d95d4498eddb05c Mon Sep 17 00:00:00 2001 From: Rowan Hart Date: Wed, 13 Mar 2024 10:52:13 -0700 Subject: [PATCH 08/19] Remove utils (#49) --- .gitattributes | 6 +- .github/builder/Dockerfile | 57 +- .github/builder/build.sh | 68 +- .github/dependabot/2024-02-23.csv | 1 + .github/dependabot/2024-02-23.json | 3 + .github/workflows/ci.yml | 504 +- .github/workflows/docs.yml | 6 +- .github/workflows/scans.yml | 18 +- .gitignore | 1 + .gitleaksignore | 1 + Cargo.toml | 121 +- Dockerfile | 34 +- LICENSE | 2 +- build.rs | 645 +-- config/dist/README | 442 -- config/dist/access-labels.list | 3 - config/dist/macros.list | 122 - config/dist/released-6.version | 11 - config/dist/tokens | 13 - docs/book.toml | 3 + docs/images/demo.cast | 4 +- docs/src/config/common-options.md | 67 +- docs/src/config/installing-in-projects.md | 57 +- docs/src/config/loading-module.md | 27 +- docs/src/developer/build.md | 19 +- docs/src/developer/refresh.md | 18 +- docs/src/developer/specific-simics-version.md | 17 +- docs/src/documentation/README.md | 1 - docs/src/fuzzing/analyzing-results.md | 2 +- docs/src/fuzzing/compatibility.md | 7 +- docs/src/fuzzing/running-fuzzer.md | 2 +- docs/src/harnessing/closed-box.md | 12 +- docs/src/harnessing/compiled-in.md | 15 +- docs/src/harnessing/manual.md | 2 +- docs/src/setup/docker.md | 8 +- docs/src/setup/linux.md | 47 +- docs/src/setup/windows.md | 23 +- .../edk2-simics-platform-bios/configuring.md | 17 +- .../edk2-simics-platform-bios/optimizing.md | 15 +- .../edk2-simics-platform-bios/running.md | 2 +- .../edk2-uefi/configuring-the-fuzzer.md | 15 +- .../tutorials/edk2-uefi/reproducing-runs.md | 2 +- .../tutorials/edk2-uefi/running-the-fuzzer.md | 2 +- .../edk2-uefi/testing-the-application.md | 2 +- .../build-configuration-updates.md | 2 +- .../kernel-module/running-the-fuzzer.md | 22 +- examples/docker-example/fuzz.simics | 2 +- examples/manual-example/Dockerfile | 32 +- examples/manual-example/build.ninja | 4 +- examples/manual-example/fuzz.simics | 22 +- examples/manual-example/test.c | 2 +- examples/tests/riscv-64/build.sh | 60 - .../test-kernel-from-userspace-magic.simics | 33 - .../tests/riscv-64/test-kernel-magic.simics | 31 - .../riscv-64/test-userspace-magic.simics | 30 - examples/tests/x86-user/build.sh | 18 - examples/tests/x86-user/test-user.py | 60 - .../test-magic.simics | 43 - .../tests/x86_64-crash-uefi/test-magic.simics | 32 - .../test-magic.simics | 32 - .../test-call-all-apis.simics | 51 - .../x86_64-uefi-edk2/test-uefi-magic.simics | 33 - examples/tests/x86_64-uefi/.gitignore | 6 - examples/tests/x86_64-uefi/test-magic.simics | 32 - examples/tests/x86_64-uefi/test-manual-max.py | 101 - examples/tests/x86_64-uefi/test-manual.py | 104 - .../edk2-simics-platform/build-custom.sh | 3 + .../tutorials/edk2-simics-platform/build.sh | 3 + .../edk2-simics-platform/project/fuzz.simics | 16 +- .../edk2-simics-platform/project/fuzz2.simics | 16 +- .../project/run-alderlake.simics | 13 +- .../project/run-custom.simics | 14 +- .../edk2-simics-platform/project/run.simics | 3 + .../edk2-simics-platform/project/uefi.params | 2 +- .../edk2-simics-platform}/tsffs-gcc-x86_64.h | 3 + examples/tutorials/edk2-uefi/build.sh | 3 + .../tutorials/edk2-uefi/project/run.simics | 17 +- .../tutorials/edk2-uefi/src/PlatformBuild.py | 3 +- examples/tutorials/edk2-uefi/src/Tutorial.c | 2 +- examples/tutorials/edk2-uefi/src/Tutorial.inf | 2 +- .../edk2-uefi/src/tsffs-gcc-x86_64.h | 3 + examples/tutorials/risc-v-kernel/build.sh | 2 +- .../risc-v-kernel/project/run.simics | 13 +- .../risc-v-kernel/src/tsffs-gcc-riscv64.h | 3 + .../tutorial-mod/tsffs-gcc-riscv64.h | 3 + .../tutorial-mod/tutorial-mod.c | 3 + .../risc-v-kernel/src/tutorial-mod-driver.c | 3 + harness/tsffs-gcc-riscv32.h | 3 + harness/tsffs-gcc-riscv64.h | 3 + harness/tsffs-gcc-x86.h | 3 + harness/tsffs-gcc-x86_64.h | 3 + modules/tsffs-interface/Makefile | 8 - modules/tsffs-interface/tsffs-interface.dml | 42 - modules/tsffs-interface/tsffs-interface.h | 53 - modules/tsffs/Makefile | 25 - .../tsffs/src/simics/ispm-wrapper/Cargo.toml | 24 - .../tsffs/src/simics/simics-api-sys/.modcache | 585 --- .../src/simics/simics-api-sys/Cargo.toml | 31 - .../tsffs/src/simics/simics-api-sys/README.md | 32 - .../tsffs/src/simics/simics-api-sys/build.rs | 759 --- .../simics-api-sys/examples/simple-simics.rs | 47 - .../src/simics/simics-codegen/Cargo.toml | 28 - .../src/simics/simics-codegen/src/lib.rs | 843 --- .../tsffs/src/simics/simics-macro/Cargo.toml | 36 - .../tsffs/src/simics/simics-macro/src/lib.rs | 1546 ------ modules/tsffs/src/simics/simics/Cargo.toml | 46 - modules/tsffs/src/simics/simics/build.rs | 79 - .../simics/src/api/base/memory_transaction.rs | 6 - .../src/simics/simics/src/api/base/sobject.rs | 7 - .../src/simics/simics/src/api/internal/mod.rs | 8 - .../simics/src/api/simulator/debugger.rs | 10 - .../simics/src/api/simulator/snapshots.rs | 66 - .../src/simics/simics/src/api/traits/class.rs | 70 - .../simics/simics/src/api/traits/interface.rs | 26 - .../src/simics/simics/src/api/traits/mod.rs | 16 - .../tsffs/src/simics/simics/src/error/mod.rs | 100 - modules/tsffs/src/simics/simics/src/lib.rs | 32 - modules/tsffs/src/tsffs/Cargo.toml | 41 - modules/tsffs/src/tsffs/src/arch/arc.rs | 11 - modules/tsffs/src/tsffs/src/arch/arm.rs | 11 - .../tsffs/src/tsffs/src/arch/arm_thumb2.rs | 11 - modules/tsffs/src/tsffs/src/arch/armv8.rs | 11 - .../tsffs/src/tsffs/src/configuration/mod.rs | 100 - modules/tsffs/src/tsffs/src/fuzzer/mod.rs | 389 -- modules/tsffs/src/tsffs/src/init/mod.rs | 24 - modules/tsffs/src/tsffs/src/lib.rs | 520 -- modules/tsffs/src/tsffs/src/util/mod.rs | 24 - modules/tsffs/src/util/ffi-macro/Cargo.toml | 32 - modules/tsffs/src/util/ffi-macro/src/lib.rs | 670 --- .../tsffs/src/util/ffi-macro/tests/example.rs | 32 - .../util/ffi-macro/tests/test_basic_ffi.rs | 135 - .../src/util/ffi-macro/tests/test_lifetime.rs | 21 - modules/tsffs/src/util/ffi-macro/tests/ui.rs | 9 - modules/tsffs/src/util/raw-cstr/Cargo.toml | 21 - .../tsffs/src/util/raw-cstr/fuzz/.gitignore | 4 - .../tsffs/src/util/raw-cstr/fuzz/Cargo.lock | 142 - .../tsffs/src/util/raw-cstr/fuzz/Cargo.toml | 33 - .../fuzz/fuzz_targets/fuzz_raw_cstr.rs | 26 - modules/tsffs/src/util/raw-cstr/src/lib.rs | 93 - modules/tsffs/src/util/raw-cstr/tests/test.rs | 56 - .../tsffs/src/util/version-tools/Cargo.toml | 22 - .../src/util/version-tools/fuzz/.gitignore | 4 - .../src/util/version-tools/fuzz/Cargo.lock | 119 - .../src/util/version-tools/fuzz/Cargo.toml | 32 - .../fuzz_version_constraint_parse.rs | 14 - .../tsffs/src/util/version-tools/src/lib.rs | 442 -- modules/tsffs/tests/Cargo.toml | 33 - modules/tsffs/tests/SUITEINFO | 2 - modules/tsffs/tests/build.rs | 57 - modules/tsffs/tests/s-load-tsffs.py | 6 - modules/tsffs/tests/s-test-fail.py | 6 - modules/tsffs/tests/s-test-success.py | 3 - modules/tsffs/tests/src/lib.rs | 470 -- modules/tsffs/tests/tests/riscv_64.rs | 115 - modules/tsffs/tests/tests/x86.rs | 57 - modules/tsffs/tests/tests/x86_64.rs | 258 - scripts/build.sh | 60 +- scripts/check.sh | 4 +- scripts/ci.sh | 4 +- scripts/cov.sh | 2 +- scripts/dependabot.sh | 2 +- scripts/fmt.sh | 2 +- scripts/license.sh | 21 +- scripts/update-simics-rs.sh | 23 + simics-rs/.dockerignore | 2 + simics-rs/.github/.gitignore | 1 + simics-rs/.github/linters/.flake8 | 3 + simics-rs/.github/linters/.hadolint.yaml | 10 + simics-rs/.github/linters/.isort.cfg | 2 + simics-rs/.github/linters/.jscpd.json | 10 + simics-rs/.github/linters/.markdown-lint.yml | 39 + simics-rs/.github/linters/.mypy.ini | 4 + .../.github/linters/.python-black | 0 simics-rs/.github/linters/.textlintrc | 5 + simics-rs/.github/linters/.yaml-lint.yml | 61 + simics-rs/.github/linters/actionlint.yml | 5 + simics-rs/.gitignore | 6 + simics-rs/CITATION.cff | 12 + simics-rs/CODE_OF_CONDUCT.md | 127 + simics-rs/CONTRIBUTING.md | 63 + simics-rs/Cargo.toml | 74 + simics-rs/LICENSE | 201 + simics-rs/README.md | 35 + simics-rs/SECURITY.md | 9 + simics-rs/cargo-simics-build/Cargo.toml | 35 + .../cargo-simics-build/README.md | 0 simics-rs/cargo-simics-build/src/lib.rs | 378 ++ simics-rs/cargo-simics-build/src/main.rs | 15 + simics-rs/docs/.gitignore | 1 + simics-rs/docs/book.toml | 9 + simics-rs/docs/src/SUMMARY.md | 3 + simics-rs/docs/src/chapter_1.md | 1 + simics-rs/ispm-wrapper/Cargo.toml | 31 + .../ispm-wrapper/src/data/mod.rs | 228 +- .../ispm-wrapper/src/lib.rs | 79 +- .../simple-public/simics-package-manager.cfg | 0 simics-rs/scripts/check.sh | 55 + simics-rs/scripts/ci.sh | 84 + simics-rs/scripts/cov.sh | 15 + simics-rs/scripts/fmt.sh | 35 + simics-rs/scripts/gen-simics-api-items.rs | 1046 ++++ simics-rs/scripts/license.sh | 57 + .../simics-api-sys/.gitignore | 0 simics-rs/simics-api-sys/Cargo.toml | 42 + simics-rs/simics-api-sys/build.rs | 1010 ++++ simics-rs/simics-api-sys/simics_api_items.rs | 2369 +++++++++ .../simics-api-sys/src/bindings/mod.rs | 3 + .../simics-api-sys/src/lib.rs | 4 +- simics-rs/simics-build-utils/Cargo.toml | 28 + simics-rs/simics-build-utils/src/lib.rs | 411 ++ simics-rs/simics-macro/Cargo.toml | 37 + simics-rs/simics-macro/src/attr_value/mod.rs | 484 ++ simics-rs/simics-macro/src/class/mod.rs | 844 +++ simics-rs/simics-macro/src/conf_object/mod.rs | 124 + simics-rs/simics-macro/src/exception/mod.rs | 134 + simics-rs/simics-macro/src/init/mod.rs | 171 + simics-rs/simics-macro/src/interface/mod.rs | 1428 ++++++ simics-rs/simics-macro/src/lib.rs | 193 + simics-rs/simics-package/Cargo.toml | 39 + simics-rs/simics-package/src/artifacts/mod.rs | 172 + simics-rs/simics-package/src/error/mod.rs | 138 + simics-rs/simics-package/src/lib.rs | 18 + simics-rs/simics-package/src/package/mod.rs | 259 + simics-rs/simics-package/src/spec/mod.rs | 556 ++ simics-rs/simics-package/src/util/mod.rs | 65 + simics-rs/simics-sign/Cargo.toml | 27 + simics-rs/simics-sign/src/lib.rs | 536 ++ simics-rs/simics-test/Cargo.toml | 35 + simics-rs/simics-test/src/lib.rs | 571 +++ simics-rs/simics/Cargo.toml | 55 + simics-rs/simics/build.rs | 823 +++ .../simics/src/api/base/attr_value.rs | 2597 ++++++++-- .../simics/src/api/base/conf_object.rs | 137 +- .../simics/src/api/base/event.rs | 24 +- .../simics/src/api/base/memory_transaction.rs | 9 + .../simics/src/api/base/mod.rs | 5 +- .../simics/src/api/base/sim_exception.rs | 7 +- simics-rs/simics/src/api/base/sobject.rs | 11 + .../simics/src/api/base/time.rs | 6 +- .../simics/src/api/base/version.rs | 11 +- .../simics/src/api/interface/mod.rs | 6 +- .../simics/src/api/internal/core.rs | 4 +- simics-rs/simics/src/api/internal/mod.rs | 7 + .../simics/src/api/logging/mod.rs | 154 +- .../simics/src/api/mod.rs | 10 +- .../simics/src/api/processor/context.rs | 8 +- .../simics/src/api/processor/mod.rs | 4 +- .../simics/src/api/processor/stc.rs | 13 +- .../simics/src/api/processor/types.rs | 12 +- .../simics/src/api/simulator/breakpoints.rs | 10 +- .../simics/src/api/simulator/callbacks.rs | 10 +- .../simics/src/api/simulator/configuration.rs | 18 +- .../simics/src/api/simulator/control.rs | 16 +- .../simics/src/api/simulator/debugger.rs | 12 + .../simics/src/api/simulator/embed.rs | 41 +- .../simics/src/api/simulator/hap_consumer.rs | 23 +- .../src/api/simulator/host_profiling.rs | 7 +- .../simics/src/api/simulator/memory.rs | 9 +- .../simics/src/api/simulator/mod.rs | 19 +- .../simics/src/api/simulator/modules.rs | 17 +- .../simics/src/api/simulator/paths.rs | 13 +- .../simics/src/api/simulator/processor.rs | 8 +- .../simics/src/api/simulator/python.rs | 14 +- .../simics/src/api/simulator/rev_exec.rs | 27 +- .../simics/src/api/simulator/script.rs | 17 +- .../simics/src/api/simulator/sim_caches.rs | 7 +- .../src/api/simulator/sim_conf_object.rs | 25 +- .../simics/src/api/simulator/sim_get_class.rs | 10 +- .../simics/src/api/simulator/snapshots.rs | 208 + simics-rs/simics/src/api/traits/class.rs | 118 + .../src/api/traits/conf_object_traits.rs | 45 + .../simics/src/api/traits/hap.rs | 16 +- simics-rs/simics/src/api/traits/interface.rs | 48 + simics-rs/simics/src/api/traits/mod.rs | 14 + .../simics/src/api/util/alloc.rs | 12 +- .../simics/src/api/util/mod.rs | 3 +- simics-rs/simics/src/error/mod.rs | 263 + simics-rs/simics/src/lib.rs | 102 + .../simics/src/log/mod.rs | 48 +- .../simics/src/util/mod.rs | 64 +- .../tests/packages/hello-world/Cargo.toml | 29 + .../tests/packages/hello-world/build.rs | 4 +- .../tests/packages/hello-world/src/lib.rs | 65 + simics-rs/tests/test-packages/Cargo.toml | 30 + simics-rs/tests/test-packages/build.rs | 4 + simics-rs/tests/test-packages/src/lib.rs | 7 + .../tests/test-packages/tests/hello_world.rs | 37 + .../tsffs/src/tsffs/src => src}/arch/mod.rs | 87 +- .../src/tsffs/src => src}/arch/risc_v.rs | 8 +- .../tsffs/src/tsffs/src => src}/arch/x86.rs | 94 +- .../src/tsffs/src => src}/arch/x86_64.rs | 92 +- src/fuzzer/feedbacks/mod.rs | 174 + src/fuzzer/messages/mod.rs | 10 + src/fuzzer/mod.rs | 480 ++ .../tsffs/src => src}/fuzzer/tokenize/mod.rs | 3 + .../tsffs/src/tsffs/src => src}/haps/mod.rs | 231 +- src/interfaces/config.rs | 42 + src/interfaces/fuzz.rs | 191 + src/interfaces/mod.rs | 8 + .../mod.rs => src/interfaces/tsffs.rs | 218 +- src/lib.rs | 835 +++ src/log/mod.rs | 114 + .../tsffs/src/tsffs/src => src}/state/mod.rs | 56 +- .../tsffs/src/tsffs/src => src}/tracer/mod.rs | 93 +- .../tsffs/src/tsffs/src => src}/traits/mod.rs | 2 +- src/util/mod.rs | 33 + tests/riscv_64_kernel_from_userspace_magic.rs | 78 + tests/riscv_64_kernel_magic.rs | 76 + tests/riscv_64_userspace_magic.rs | 75 + {examples/tests => tests/rsrc}/README.md | 0 {examples/tests => tests/rsrc}/build.sh | 4 + tests/rsrc/minimal_boot_disk.craff | 3 + tests/rsrc/riscv-64/.config | 4503 +++++++++++++++++ .../tests => tests/rsrc}/riscv-64/.gitignore | 0 .../tests => tests/rsrc}/riscv-64/Dockerfile | 33 +- tests/rsrc/riscv-64/build.sh | 60 + .../riscv-64/simics_simple_riscv_defconfig | 0 .../riscv-64/test-kernel-modules/Config.in | 0 .../test-kernel-modules/external.desc | 0 .../riscv-64/test-kernel-modules/external.mk | 0 .../package/kernel-modules/Config.in | 0 .../package/kernel-modules/kernel-modules.mk | 0 .../package/kernel-modules/test-mod/Config.in | 0 .../package/kernel-modules/test-mod/Makefile | 0 .../kernel-modules/test-mod/test-mod.c | 4 + .../kernel-modules/test-mod/test-mod.mk | 0 .../test-mod/tsffs-gcc-riscv64.h | 124 + .../rsrc}/riscv-64/test-mod-userspace.c | 3 + .../tests => tests/rsrc}/riscv-64/test-mod.c | 3 + .../tests => tests/rsrc}/riscv-64/test.c | 2 +- tests/rsrc/riscv-64/tsffs-gcc-riscv64.h | 124 + .../tests => tests/rsrc}/x86-user/.gitignore | 0 .../tests => tests/rsrc}/x86-user/build.ninja | 2 +- tests/rsrc/x86-user/build.sh | 25 + tests/rsrc/x86-user/minimal_boot_disk.craff | 3 + .../tests => tests/rsrc}/x86-user/test.c | 2 +- tests/rsrc/x86-user/tsffs-gcc-riscv64.h | 42 + tests/rsrc/x86-user/tsffs-gcc-x86.h | 134 + .../x86_64-breakpoint-uefi-edk2/.gitignore | 0 .../x86_64-breakpoint-uefi-edk2}/Dockerfile | 0 .../x86_64-breakpoint-uefi-edk2/build.ninja | 2 +- .../x86_64-breakpoint-uefi-edk2/build.sh | 16 +- .../src/.gitignore | 0 .../src/HelloWorld.c | 2 +- .../src/HelloWorld.dsc | 0 .../src/HelloWorld.inf | 2 +- .../src/HelloWorldExtra.uni | 0 .../src/HelloWorldStr.uni | 0 .../src/PlatformBuild.py | 2 +- .../src/tsffs-gcc-x86_64.h | 3 + .../rsrc}/x86_64-crash-uefi/.gitignore | 0 .../rsrc}/x86_64-crash-uefi/build.ninja | 4 +- .../rsrc/x86_64-crash-uefi}/build.sh | 3 + .../x86_64-crash-uefi/minimal_boot_disk.craff | 3 + .../rsrc}/x86_64-crash-uefi/test.c | 2 +- .../x86_64-crash-uefi}/tsffs-gcc-x86_64.h | 3 + .../rsrc/x86_64-timeout-uefi-edk2}/.gitignore | 0 .../rsrc}/x86_64-timeout-uefi-edk2/Dockerfile | 0 .../x86_64-timeout-uefi-edk2/build.ninja | 2 +- .../rsrc/x86_64-timeout-uefi-edk2}/build.sh | 16 +- .../minimal_boot_disk.craff | 3 + .../x86_64-timeout-uefi-edk2/src/.gitignore | 0 .../x86_64-timeout-uefi-edk2/src/HelloWorld.c | 2 +- .../src/HelloWorld.dsc | 0 .../src/HelloWorld.inf | 2 +- .../src/HelloWorldExtra.uni | 0 .../src/HelloWorldStr.uni | 0 .../src/PlatformBuild.py | 2 +- .../src/tsffs-gcc-x86_64.h | 134 + .../rsrc/x86_64-uefi-edk2}/.gitignore | 0 .../rsrc/x86_64-uefi-edk2}/Dockerfile | 0 .../rsrc}/x86_64-uefi-edk2/build.ninja | 2 +- .../rsrc/x86_64-uefi-edk2}/build.sh | 16 +- .../x86_64-uefi-edk2/minimal_boot_disk.craff | 3 + .../rsrc/x86_64-uefi-edk2}/src/.gitignore | 0 .../rsrc}/x86_64-uefi-edk2/src/HelloWorld.c | 2 +- .../rsrc/x86_64-uefi-edk2}/src/HelloWorld.dsc | 0 .../rsrc}/x86_64-uefi-edk2/src/HelloWorld.inf | 2 +- .../x86_64-uefi-edk2}/src/HelloWorldExtra.uni | 0 .../x86_64-uefi-edk2}/src/HelloWorldStr.uni | 0 .../x86_64-uefi-edk2}/src/PlatformBuild.py | 2 +- .../x86_64-uefi-edk2/src/tsffs-gcc-x86_64.h | 134 + tests/rsrc/x86_64-uefi/.gitignore | 6 + .../rsrc}/x86_64-uefi/build.ninja | 10 +- .../rsrc/x86_64-uefi}/build.sh | 3 + .../rsrc/x86_64-uefi/minimal_boot_disk.craff | 3 + tests/rsrc/x86_64-uefi/test-cov.c | 114 + tests/rsrc/x86_64-uefi/test-fast.c | 98 + .../tests => tests/rsrc}/x86_64-uefi/test.c | 2 +- tests/rsrc/x86_64-uefi/tsffs-gcc-x86_64.h | 134 + tests/x86_64_edk2_magic.rs | 77 + tests/x86_64_edk2_timeout.rs | 77 + tests/x86_64_magic.rs | 77 + tests/x86_64_magic_apitest.rs | 96 + tests/x86_64_magic_crash.rs | 77 + tests/x86_64_magic_reporting.rs | 79 + tests/x86_64_magic_speedtest.rs | 77 + tests/x86_64_magic_speedtest_tokenize.rs | 78 + tests/x86_64_manual.rs | 155 + tests/x86_64_manual_max.rs | 152 + tests/x86_userspace_magic.rs | 113 + 401 files changed, 27190 insertions(+), 12472 deletions(-) create mode 100644 .github/dependabot/2024-02-23.csv create mode 100644 .github/dependabot/2024-02-23.json mode change 100755 => 100644 build.rs delete mode 100644 config/dist/README delete mode 100644 config/dist/access-labels.list delete mode 100644 config/dist/macros.list delete mode 100644 config/dist/released-6.version delete mode 100644 config/dist/tokens delete mode 100755 examples/tests/riscv-64/build.sh delete mode 100644 examples/tests/riscv-64/test-kernel-from-userspace-magic.simics delete mode 100644 examples/tests/riscv-64/test-kernel-magic.simics delete mode 100644 examples/tests/riscv-64/test-userspace-magic.simics delete mode 100755 examples/tests/x86-user/build.sh delete mode 100644 examples/tests/x86-user/test-user.py delete mode 100644 examples/tests/x86_64-breakpoint-uefi-edk2/test-magic.simics delete mode 100644 examples/tests/x86_64-crash-uefi/test-magic.simics delete mode 100644 examples/tests/x86_64-timeout-uefi-edk2/test-magic.simics delete mode 100644 examples/tests/x86_64-uefi-edk2/test-call-all-apis.simics delete mode 100644 examples/tests/x86_64-uefi-edk2/test-uefi-magic.simics delete mode 100644 examples/tests/x86_64-uefi/.gitignore delete mode 100644 examples/tests/x86_64-uefi/test-magic.simics delete mode 100644 examples/tests/x86_64-uefi/test-manual-max.py delete mode 100644 examples/tests/x86_64-uefi/test-manual.py rename examples/{tests/x86_64-timeout-uefi-edk2/src => tutorials/edk2-simics-platform}/tsffs-gcc-x86_64.h (98%) delete mode 100644 modules/tsffs-interface/Makefile delete mode 100644 modules/tsffs-interface/tsffs-interface.dml delete mode 100644 modules/tsffs-interface/tsffs-interface.h delete mode 100644 modules/tsffs/Makefile delete mode 100644 modules/tsffs/src/simics/ispm-wrapper/Cargo.toml delete mode 100644 modules/tsffs/src/simics/simics-api-sys/.modcache delete mode 100644 modules/tsffs/src/simics/simics-api-sys/Cargo.toml delete mode 100644 modules/tsffs/src/simics/simics-api-sys/README.md delete mode 100644 modules/tsffs/src/simics/simics-api-sys/build.rs delete mode 100644 modules/tsffs/src/simics/simics-api-sys/examples/simple-simics.rs delete mode 100644 modules/tsffs/src/simics/simics-codegen/Cargo.toml delete mode 100644 modules/tsffs/src/simics/simics-codegen/src/lib.rs delete mode 100644 modules/tsffs/src/simics/simics-macro/Cargo.toml delete mode 100644 modules/tsffs/src/simics/simics-macro/src/lib.rs delete mode 100644 modules/tsffs/src/simics/simics/Cargo.toml delete mode 100644 modules/tsffs/src/simics/simics/build.rs delete mode 100644 modules/tsffs/src/simics/simics/src/api/base/memory_transaction.rs delete mode 100644 modules/tsffs/src/simics/simics/src/api/base/sobject.rs delete mode 100644 modules/tsffs/src/simics/simics/src/api/internal/mod.rs delete mode 100644 modules/tsffs/src/simics/simics/src/api/simulator/debugger.rs delete mode 100644 modules/tsffs/src/simics/simics/src/api/simulator/snapshots.rs delete mode 100644 modules/tsffs/src/simics/simics/src/api/traits/class.rs delete mode 100644 modules/tsffs/src/simics/simics/src/api/traits/interface.rs delete mode 100644 modules/tsffs/src/simics/simics/src/api/traits/mod.rs delete mode 100644 modules/tsffs/src/simics/simics/src/error/mod.rs delete mode 100644 modules/tsffs/src/simics/simics/src/lib.rs delete mode 100644 modules/tsffs/src/tsffs/Cargo.toml delete mode 100644 modules/tsffs/src/tsffs/src/arch/arc.rs delete mode 100644 modules/tsffs/src/tsffs/src/arch/arm.rs delete mode 100644 modules/tsffs/src/tsffs/src/arch/arm_thumb2.rs delete mode 100644 modules/tsffs/src/tsffs/src/arch/armv8.rs delete mode 100644 modules/tsffs/src/tsffs/src/configuration/mod.rs delete mode 100644 modules/tsffs/src/tsffs/src/fuzzer/mod.rs delete mode 100644 modules/tsffs/src/tsffs/src/init/mod.rs delete mode 100644 modules/tsffs/src/tsffs/src/lib.rs delete mode 100644 modules/tsffs/src/tsffs/src/util/mod.rs delete mode 100644 modules/tsffs/src/util/ffi-macro/Cargo.toml delete mode 100644 modules/tsffs/src/util/ffi-macro/src/lib.rs delete mode 100644 modules/tsffs/src/util/ffi-macro/tests/example.rs delete mode 100644 modules/tsffs/src/util/ffi-macro/tests/test_basic_ffi.rs delete mode 100644 modules/tsffs/src/util/ffi-macro/tests/test_lifetime.rs delete mode 100644 modules/tsffs/src/util/ffi-macro/tests/ui.rs delete mode 100644 modules/tsffs/src/util/raw-cstr/Cargo.toml delete mode 100644 modules/tsffs/src/util/raw-cstr/fuzz/.gitignore delete mode 100644 modules/tsffs/src/util/raw-cstr/fuzz/Cargo.lock delete mode 100644 modules/tsffs/src/util/raw-cstr/fuzz/Cargo.toml delete mode 100644 modules/tsffs/src/util/raw-cstr/fuzz/fuzz_targets/fuzz_raw_cstr.rs delete mode 100644 modules/tsffs/src/util/raw-cstr/src/lib.rs delete mode 100644 modules/tsffs/src/util/raw-cstr/tests/test.rs delete mode 100644 modules/tsffs/src/util/version-tools/Cargo.toml delete mode 100644 modules/tsffs/src/util/version-tools/fuzz/.gitignore delete mode 100644 modules/tsffs/src/util/version-tools/fuzz/Cargo.lock delete mode 100644 modules/tsffs/src/util/version-tools/fuzz/Cargo.toml delete mode 100644 modules/tsffs/src/util/version-tools/fuzz/fuzz_targets/fuzz_version_constraint_parse.rs delete mode 100644 modules/tsffs/src/util/version-tools/src/lib.rs delete mode 100644 modules/tsffs/tests/Cargo.toml delete mode 100644 modules/tsffs/tests/SUITEINFO delete mode 100644 modules/tsffs/tests/build.rs delete mode 100644 modules/tsffs/tests/s-load-tsffs.py delete mode 100644 modules/tsffs/tests/s-test-fail.py delete mode 100644 modules/tsffs/tests/s-test-success.py delete mode 100644 modules/tsffs/tests/src/lib.rs delete mode 100644 modules/tsffs/tests/tests/riscv_64.rs delete mode 100644 modules/tsffs/tests/tests/x86.rs delete mode 100644 modules/tsffs/tests/tests/x86_64.rs create mode 100755 scripts/update-simics-rs.sh create mode 100644 simics-rs/.dockerignore create mode 100644 simics-rs/.github/.gitignore create mode 100644 simics-rs/.github/linters/.flake8 create mode 100644 simics-rs/.github/linters/.hadolint.yaml create mode 100644 simics-rs/.github/linters/.isort.cfg create mode 100644 simics-rs/.github/linters/.jscpd.json create mode 100644 simics-rs/.github/linters/.markdown-lint.yml create mode 100644 simics-rs/.github/linters/.mypy.ini rename modules/.gitignore => simics-rs/.github/linters/.python-black (100%) create mode 100644 simics-rs/.github/linters/.textlintrc create mode 100644 simics-rs/.github/linters/.yaml-lint.yml create mode 100644 simics-rs/.github/linters/actionlint.yml create mode 100644 simics-rs/.gitignore create mode 100644 simics-rs/CITATION.cff create mode 100644 simics-rs/CODE_OF_CONDUCT.md create mode 100644 simics-rs/CONTRIBUTING.md create mode 100644 simics-rs/Cargo.toml create mode 100644 simics-rs/LICENSE create mode 100644 simics-rs/README.md create mode 100644 simics-rs/SECURITY.md create mode 100644 simics-rs/cargo-simics-build/Cargo.toml rename examples/tests/.gitignore => simics-rs/cargo-simics-build/README.md (100%) create mode 100644 simics-rs/cargo-simics-build/src/lib.rs create mode 100644 simics-rs/cargo-simics-build/src/main.rs create mode 100644 simics-rs/docs/.gitignore create mode 100644 simics-rs/docs/book.toml create mode 100644 simics-rs/docs/src/SUMMARY.md create mode 100644 simics-rs/docs/src/chapter_1.md create mode 100644 simics-rs/ispm-wrapper/Cargo.toml rename {modules/tsffs/src/simics => simics-rs}/ispm-wrapper/src/data/mod.rs (53%) rename {modules/tsffs/src/simics => simics-rs}/ispm-wrapper/src/lib.rs (88%) rename {modules/tsffs/src/simics => simics-rs}/ispm-wrapper/tests/config/simple-public/simics-package-manager.cfg (100%) create mode 100755 simics-rs/scripts/check.sh create mode 100755 simics-rs/scripts/ci.sh create mode 100755 simics-rs/scripts/cov.sh create mode 100755 simics-rs/scripts/fmt.sh create mode 100755 simics-rs/scripts/gen-simics-api-items.rs create mode 100755 simics-rs/scripts/license.sh rename {modules/tsffs/src/simics => simics-rs}/simics-api-sys/.gitignore (100%) create mode 100644 simics-rs/simics-api-sys/Cargo.toml create mode 100644 simics-rs/simics-api-sys/build.rs create mode 100644 simics-rs/simics-api-sys/simics_api_items.rs rename {modules/tsffs/src/simics => simics-rs}/simics-api-sys/src/bindings/mod.rs (85%) rename {modules/tsffs/src/simics => simics-rs}/simics-api-sys/src/lib.rs (89%) create mode 100644 simics-rs/simics-build-utils/Cargo.toml create mode 100644 simics-rs/simics-build-utils/src/lib.rs create mode 100644 simics-rs/simics-macro/Cargo.toml create mode 100644 simics-rs/simics-macro/src/attr_value/mod.rs create mode 100644 simics-rs/simics-macro/src/class/mod.rs create mode 100644 simics-rs/simics-macro/src/conf_object/mod.rs create mode 100644 simics-rs/simics-macro/src/exception/mod.rs create mode 100644 simics-rs/simics-macro/src/init/mod.rs create mode 100644 simics-rs/simics-macro/src/interface/mod.rs create mode 100644 simics-rs/simics-macro/src/lib.rs create mode 100644 simics-rs/simics-package/Cargo.toml create mode 100644 simics-rs/simics-package/src/artifacts/mod.rs create mode 100644 simics-rs/simics-package/src/error/mod.rs create mode 100644 simics-rs/simics-package/src/lib.rs create mode 100644 simics-rs/simics-package/src/package/mod.rs create mode 100644 simics-rs/simics-package/src/spec/mod.rs create mode 100644 simics-rs/simics-package/src/util/mod.rs create mode 100644 simics-rs/simics-sign/Cargo.toml create mode 100644 simics-rs/simics-sign/src/lib.rs create mode 100644 simics-rs/simics-test/Cargo.toml create mode 100644 simics-rs/simics-test/src/lib.rs create mode 100644 simics-rs/simics/Cargo.toml create mode 100644 simics-rs/simics/build.rs rename {modules/tsffs/src/simics => simics-rs}/simics/src/api/base/attr_value.rs (51%) rename {modules/tsffs/src/simics => simics-rs}/simics/src/api/base/conf_object.rs (88%) rename {modules/tsffs/src/simics => simics-rs}/simics/src/api/base/event.rs (98%) create mode 100644 simics-rs/simics/src/api/base/memory_transaction.rs rename {modules/tsffs/src/simics => simics-rs}/simics/src/api/base/mod.rs (62%) rename {modules/tsffs/src/simics => simics-rs}/simics/src/api/base/sim_exception.rs (90%) create mode 100644 simics-rs/simics/src/api/base/sobject.rs rename {modules/tsffs/src/simics => simics-rs}/simics/src/api/base/time.rs (97%) rename {modules/tsffs/src/simics => simics-rs}/simics/src/api/base/version.rs (80%) rename {modules/tsffs/src/simics => simics-rs}/simics/src/api/interface/mod.rs (72%) rename {modules/tsffs/src/simics => simics-rs}/simics/src/api/internal/core.rs (84%) create mode 100644 simics-rs/simics/src/api/internal/mod.rs rename {modules/tsffs/src/simics => simics-rs}/simics/src/api/logging/mod.rs (60%) rename {modules/tsffs/src/simics => simics-rs}/simics/src/api/mod.rs (60%) rename {modules/tsffs/src/simics => simics-rs}/simics/src/api/processor/context.rs (65%) rename {modules/tsffs/src/simics => simics-rs}/simics/src/api/processor/mod.rs (68%) rename {modules/tsffs/src/simics => simics-rs}/simics/src/api/processor/stc.rs (83%) rename {modules/tsffs/src/simics => simics-rs}/simics/src/api/processor/types.rs (59%) rename {modules/tsffs/src/simics => simics-rs}/simics/src/api/simulator/breakpoints.rs (96%) rename {modules/tsffs/src/simics => simics-rs}/simics/src/api/simulator/callbacks.rs (98%) rename {modules/tsffs/src/simics => simics-rs}/simics/src/api/simulator/configuration.rs (93%) rename {modules/tsffs/src/simics => simics-rs}/simics/src/api/simulator/control.rs (93%) create mode 100644 simics-rs/simics/src/api/simulator/debugger.rs rename {modules/tsffs/src/simics => simics-rs}/simics/src/api/simulator/embed.rs (80%) rename {modules/tsffs/src/simics => simics-rs}/simics/src/api/simulator/hap_consumer.rs (85%) rename {modules/tsffs/src/simics => simics-rs}/simics/src/api/simulator/host_profiling.rs (77%) rename {modules/tsffs/src/simics => simics-rs}/simics/src/api/simulator/memory.rs (95%) rename {modules/tsffs/src/simics => simics-rs}/simics/src/api/simulator/mod.rs (66%) rename {modules/tsffs/src/simics => simics-rs}/simics/src/api/simulator/modules.rs (87%) rename {modules/tsffs/src/simics => simics-rs}/simics/src/api/simulator/paths.rs (90%) rename {modules/tsffs/src/simics => simics-rs}/simics/src/api/simulator/processor.rs (93%) rename {modules/tsffs/src/simics => simics-rs}/simics/src/api/simulator/python.rs (92%) rename {modules/tsffs/src/simics => simics-rs}/simics/src/api/simulator/rev_exec.rs (83%) rename {modules/tsffs/src/simics => simics-rs}/simics/src/api/simulator/script.rs (88%) rename {modules/tsffs/src/simics => simics-rs}/simics/src/api/simulator/sim_caches.rs (79%) rename {modules/tsffs/src/simics => simics-rs}/simics/src/api/simulator/sim_conf_object.rs (87%) rename {modules/tsffs/src/simics => simics-rs}/simics/src/api/simulator/sim_get_class.rs (76%) create mode 100644 simics-rs/simics/src/api/simulator/snapshots.rs create mode 100644 simics-rs/simics/src/api/traits/class.rs create mode 100644 simics-rs/simics/src/api/traits/conf_object_traits.rs rename {modules/tsffs/src/simics => simics-rs}/simics/src/api/traits/hap.rs (58%) create mode 100644 simics-rs/simics/src/api/traits/interface.rs create mode 100644 simics-rs/simics/src/api/traits/mod.rs rename {modules/tsffs/src/simics => simics-rs}/simics/src/api/util/alloc.rs (91%) rename {modules/tsffs/src/simics => simics-rs}/simics/src/api/util/mod.rs (74%) create mode 100644 simics-rs/simics/src/error/mod.rs create mode 100644 simics-rs/simics/src/lib.rs rename {modules/tsffs/src/simics => simics-rs}/simics/src/log/mod.rs (85%) rename {modules/tsffs/src/simics => simics-rs}/simics/src/util/mod.rs (65%) create mode 100644 simics-rs/tests/packages/hello-world/Cargo.toml rename modules/tsffs/src/simics/simics/src/ispm/mod.rs => simics-rs/tests/packages/hello-world/build.rs (58%) create mode 100644 simics-rs/tests/packages/hello-world/src/lib.rs create mode 100644 simics-rs/tests/test-packages/Cargo.toml create mode 100644 simics-rs/tests/test-packages/build.rs create mode 100644 simics-rs/tests/test-packages/src/lib.rs create mode 100644 simics-rs/tests/test-packages/tests/hello_world.rs rename {modules/tsffs/src/tsffs/src => src}/arch/mod.rs (84%) rename {modules/tsffs/src/tsffs/src => src}/arch/risc_v.rs (99%) rename {modules/tsffs/src/tsffs/src => src}/arch/x86.rs (94%) rename {modules/tsffs/src/tsffs/src => src}/arch/x86_64.rs (93%) create mode 100644 src/fuzzer/feedbacks/mod.rs create mode 100644 src/fuzzer/messages/mod.rs create mode 100644 src/fuzzer/mod.rs rename {modules/tsffs/src/tsffs/src => src}/fuzzer/tokenize/mod.rs (98%) rename {modules/tsffs/src/tsffs/src => src}/haps/mod.rs (63%) create mode 100644 src/interfaces/config.rs create mode 100644 src/interfaces/fuzz.rs create mode 100644 src/interfaces/mod.rs rename modules/tsffs/src/tsffs/src/interface/mod.rs => src/interfaces/tsffs.rs (84%) create mode 100644 src/lib.rs create mode 100644 src/log/mod.rs rename {modules/tsffs/src/tsffs/src => src}/state/mod.rs (58%) rename {modules/tsffs/src/tsffs/src => src}/tracer/mod.rs (72%) rename {modules/tsffs/src/tsffs/src => src}/traits/mod.rs (92%) create mode 100644 src/util/mod.rs create mode 100644 tests/riscv_64_kernel_from_userspace_magic.rs create mode 100644 tests/riscv_64_kernel_magic.rs create mode 100644 tests/riscv_64_userspace_magic.rs rename {examples/tests => tests/rsrc}/README.md (100%) rename {examples/tests => tests/rsrc}/build.sh (84%) create mode 100644 tests/rsrc/minimal_boot_disk.craff create mode 100644 tests/rsrc/riscv-64/.config rename {examples/tests => tests/rsrc}/riscv-64/.gitignore (100%) rename {examples/tests => tests/rsrc}/riscv-64/Dockerfile (72%) create mode 100755 tests/rsrc/riscv-64/build.sh rename {examples/tests => tests/rsrc}/riscv-64/simics_simple_riscv_defconfig (100%) rename {examples/tests => tests/rsrc}/riscv-64/test-kernel-modules/Config.in (100%) rename {examples/tests => tests/rsrc}/riscv-64/test-kernel-modules/external.desc (100%) rename {examples/tests => tests/rsrc}/riscv-64/test-kernel-modules/external.mk (100%) rename {examples/tests => tests/rsrc}/riscv-64/test-kernel-modules/package/kernel-modules/Config.in (100%) rename {examples/tests => tests/rsrc}/riscv-64/test-kernel-modules/package/kernel-modules/kernel-modules.mk (100%) rename {examples/tests => tests/rsrc}/riscv-64/test-kernel-modules/package/kernel-modules/test-mod/Config.in (100%) rename {examples/tests => tests/rsrc}/riscv-64/test-kernel-modules/package/kernel-modules/test-mod/Makefile (100%) rename {examples/tests => tests/rsrc}/riscv-64/test-kernel-modules/package/kernel-modules/test-mod/test-mod.c (97%) rename {examples/tests => tests/rsrc}/riscv-64/test-kernel-modules/package/kernel-modules/test-mod/test-mod.mk (100%) create mode 100644 tests/rsrc/riscv-64/test-kernel-modules/package/kernel-modules/test-mod/tsffs-gcc-riscv64.h rename {examples/tests => tests/rsrc}/riscv-64/test-mod-userspace.c (95%) rename {examples/tests => tests/rsrc}/riscv-64/test-mod.c (95%) rename {examples/tests => tests/rsrc}/riscv-64/test.c (97%) create mode 100644 tests/rsrc/riscv-64/tsffs-gcc-riscv64.h rename {examples/tests => tests/rsrc}/x86-user/.gitignore (100%) rename {examples/tests => tests/rsrc}/x86-user/build.ninja (78%) create mode 100755 tests/rsrc/x86-user/build.sh create mode 100644 tests/rsrc/x86-user/minimal_boot_disk.craff rename {examples/tests => tests/rsrc}/x86-user/test.c (97%) create mode 100644 tests/rsrc/x86-user/tsffs-gcc-riscv64.h create mode 100644 tests/rsrc/x86-user/tsffs-gcc-x86.h rename {examples/tests => tests/rsrc}/x86_64-breakpoint-uefi-edk2/.gitignore (100%) rename {examples/tests/x86_64-uefi-edk2 => tests/rsrc/x86_64-breakpoint-uefi-edk2}/Dockerfile (100%) rename {examples/tests => tests/rsrc}/x86_64-breakpoint-uefi-edk2/build.ninja (74%) rename {examples/tests => tests/rsrc}/x86_64-breakpoint-uefi-edk2/build.sh (66%) rename {examples/tests/x86_64-uefi-edk2 => tests/rsrc/x86_64-breakpoint-uefi-edk2}/src/.gitignore (100%) rename {examples/tests => tests/rsrc}/x86_64-breakpoint-uefi-edk2/src/HelloWorld.c (97%) rename {examples/tests/x86_64-uefi-edk2 => tests/rsrc/x86_64-breakpoint-uefi-edk2}/src/HelloWorld.dsc (100%) rename {examples/tests => tests/rsrc}/x86_64-breakpoint-uefi-edk2/src/HelloWorld.inf (96%) rename {examples/tests/x86_64-uefi-edk2 => tests/rsrc/x86_64-breakpoint-uefi-edk2}/src/HelloWorldExtra.uni (100%) rename {examples/tests/x86_64-uefi-edk2 => tests/rsrc/x86_64-breakpoint-uefi-edk2}/src/HelloWorldStr.uni (100%) rename {examples/tests/x86_64-uefi-edk2 => tests/rsrc/x86_64-breakpoint-uefi-edk2}/src/PlatformBuild.py (98%) rename {examples/tests/x86_64-uefi-edk2 => tests/rsrc/x86_64-breakpoint-uefi-edk2}/src/tsffs-gcc-x86_64.h (98%) rename {examples/tests => tests/rsrc}/x86_64-crash-uefi/.gitignore (100%) rename {examples/tests => tests/rsrc}/x86_64-crash-uefi/build.ninja (71%) rename {examples/tests/x86_64-uefi => tests/rsrc/x86_64-crash-uefi}/build.sh (78%) create mode 100644 tests/rsrc/x86_64-crash-uefi/minimal_boot_disk.craff rename {examples/tests => tests/rsrc}/x86_64-crash-uefi/test.c (98%) rename {examples/tests/x86_64-breakpoint-uefi-edk2/src => tests/rsrc/x86_64-crash-uefi}/tsffs-gcc-x86_64.h (98%) rename {examples/tests/x86_64-uefi-edk2 => tests/rsrc/x86_64-timeout-uefi-edk2}/.gitignore (100%) rename {examples/tests => tests/rsrc}/x86_64-timeout-uefi-edk2/Dockerfile (100%) rename {examples/tests => tests/rsrc}/x86_64-timeout-uefi-edk2/build.ninja (74%) rename {examples/tests/x86_64-uefi-edk2 => tests/rsrc/x86_64-timeout-uefi-edk2}/build.sh (66%) create mode 100644 tests/rsrc/x86_64-timeout-uefi-edk2/minimal_boot_disk.craff rename {examples/tests => tests/rsrc}/x86_64-timeout-uefi-edk2/src/.gitignore (100%) rename {examples/tests => tests/rsrc}/x86_64-timeout-uefi-edk2/src/HelloWorld.c (97%) rename {examples/tests => tests/rsrc}/x86_64-timeout-uefi-edk2/src/HelloWorld.dsc (100%) rename {examples/tests => tests/rsrc}/x86_64-timeout-uefi-edk2/src/HelloWorld.inf (96%) rename {examples/tests => tests/rsrc}/x86_64-timeout-uefi-edk2/src/HelloWorldExtra.uni (100%) rename {examples/tests => tests/rsrc}/x86_64-timeout-uefi-edk2/src/HelloWorldStr.uni (100%) rename {examples/tests => tests/rsrc}/x86_64-timeout-uefi-edk2/src/PlatformBuild.py (98%) create mode 100644 tests/rsrc/x86_64-timeout-uefi-edk2/src/tsffs-gcc-x86_64.h rename {examples/tests/x86_64-timeout-uefi-edk2 => tests/rsrc/x86_64-uefi-edk2}/.gitignore (100%) rename {examples/tests/x86_64-breakpoint-uefi-edk2 => tests/rsrc/x86_64-uefi-edk2}/Dockerfile (100%) rename {examples/tests => tests/rsrc}/x86_64-uefi-edk2/build.ninja (74%) rename {examples/tests/x86_64-timeout-uefi-edk2 => tests/rsrc/x86_64-uefi-edk2}/build.sh (66%) create mode 100644 tests/rsrc/x86_64-uefi-edk2/minimal_boot_disk.craff rename {examples/tests/x86_64-breakpoint-uefi-edk2 => tests/rsrc/x86_64-uefi-edk2}/src/.gitignore (100%) rename {examples/tests => tests/rsrc}/x86_64-uefi-edk2/src/HelloWorld.c (97%) rename {examples/tests/x86_64-breakpoint-uefi-edk2 => tests/rsrc/x86_64-uefi-edk2}/src/HelloWorld.dsc (100%) rename {examples/tests => tests/rsrc}/x86_64-uefi-edk2/src/HelloWorld.inf (96%) rename {examples/tests/x86_64-breakpoint-uefi-edk2 => tests/rsrc/x86_64-uefi-edk2}/src/HelloWorldExtra.uni (100%) rename {examples/tests/x86_64-breakpoint-uefi-edk2 => tests/rsrc/x86_64-uefi-edk2}/src/HelloWorldStr.uni (100%) rename {examples/tests/x86_64-breakpoint-uefi-edk2 => tests/rsrc/x86_64-uefi-edk2}/src/PlatformBuild.py (98%) create mode 100644 tests/rsrc/x86_64-uefi-edk2/src/tsffs-gcc-x86_64.h create mode 100644 tests/rsrc/x86_64-uefi/.gitignore rename {examples/tests => tests/rsrc}/x86_64-uefi/build.ninja (52%) rename {examples/tests/x86_64-crash-uefi => tests/rsrc/x86_64-uefi}/build.sh (78%) create mode 100644 tests/rsrc/x86_64-uefi/minimal_boot_disk.craff create mode 100644 tests/rsrc/x86_64-uefi/test-cov.c create mode 100644 tests/rsrc/x86_64-uefi/test-fast.c rename {examples/tests => tests/rsrc}/x86_64-uefi/test.c (98%) create mode 100644 tests/rsrc/x86_64-uefi/tsffs-gcc-x86_64.h create mode 100644 tests/x86_64_edk2_magic.rs create mode 100644 tests/x86_64_edk2_timeout.rs create mode 100644 tests/x86_64_magic.rs create mode 100644 tests/x86_64_magic_apitest.rs create mode 100644 tests/x86_64_magic_crash.rs create mode 100644 tests/x86_64_magic_reporting.rs create mode 100644 tests/x86_64_magic_speedtest.rs create mode 100644 tests/x86_64_magic_speedtest_tokenize.rs create mode 100644 tests/x86_64_manual.rs create mode 100644 tests/x86_64_manual_max.rs create mode 100644 tests/x86_userspace_magic.rs diff --git a/.gitattributes b/.gitattributes index 475f94a0..7d675281 100644 --- a/.gitattributes +++ b/.gitattributes @@ -1,3 +1,7 @@ *.ispm filter=lfs diff=lfs merge=lfs -text *.tar.gz filter=lfs diff=lfs merge=lfs -text -*.ext2 filter=lfs diff=lfs merge=lfs -text \ No newline at end of file +*.ext2 filter=lfs diff=lfs merge=lfs -text +*.fs filter=lfs diff=lfs merge=lfs -text +*.craff filter=lfs diff=lfs merge=lfs -text +Image filter=lfs diff=lfs merge=lfs -text +*.elf filter=lfs diff=lfs merge=lfs -text \ No newline at end of file diff --git a/.github/builder/Dockerfile b/.github/builder/Dockerfile index 751519bf..fd6a3e9a 100644 --- a/.github/builder/Dockerfile +++ b/.github/builder/Dockerfile @@ -1,6 +1,51 @@ # hadolint global ignore=DL3033,SC3044 -FROM novafacing/fedora-rustc-oldcompat:0.0.3 +FROM fedora:20 +ENV PATH="${PATH}:/root/.cargo/bin/" + +RUN yum -y update && \ + yum -y install \ + coreutils \ + gcc \ + gcc-c++ \ + make \ + yum clean all + +COPY .github/builder/rsrc/rustup-init /install/rustup-init +COPY .github/builder/rsrc/make-4.4.1.tar.gz /install/make-4.4.1.tar.gz +COPY .github/builder/rsrc/cmake-3.28.0-rc5-linux-x86_64.tar.gz /install/cmake-3.28.0-rc5-linux-x86_64.tar.gz +COPY .github/builder/rsrc/llvm-5.0.2.src.tar.xz /install/llvm-5.0.2.src.tar.xz +COPY .github/builder/rsrc/cfe-5.0.2.src.tar.xz /install/cfe-5.0.2.src.tar.xz +COPY .github/builder/rsrc/patchelf-0.18.0-x86_64.tar.gz /install/patchelf-0.18.0-x86_64.tar.gz + +RUN chmod +x /install/rustup-init && \ + /install/rustup-init -y --default-toolchain nightly && \ + mkdir -p /make && \ + tar -C /make --strip-components=1 -xf /install/make-4.4.1.tar.gz && \ + pushd /make && \ + ./configure && \ + make && \ + make install && \ + make clean && \ + popd && \ + tar -C /usr/local/ --strip-components=1 -xf /install/cmake-3.28.0-rc5-linux-x86_64.tar.gz && \ + mkdir -p /llvm/tools/clang && \ + tar -C /llvm --strip-components=1 -xf /install/llvm-5.0.2.src.tar.xz && \ + tar -C /llvm/tools/clang --strip-components=1 -xf /install/cfe-5.0.2.src.tar.xz && \ + mkdir -p /llvm/build && \ + pushd /llvm/build && \ + cmake -G "Unix Makefiles" -DCMAKE_BUILD_TYPE="MinSizeRel" -DLLVM_TARGETS_TO_BUILD="X86" .. && \ + make -j "$(nproc)" && \ + make install && \ + make clean && \ + rm -rf /llvm/build/ && \ + popd && \ + rm -rf /make /llvm && \ + tar -C /usr/local/ --strip-components=1 -xf /install/patchelf-0.18.0-x86_64.tar.gz + +WORKDIR / + +ARG PUBLIC_SIMICS_PACKAGE_VERSION_1000 ENV PATH="${PATH}:/simics/ispm/" ENV PATH="${PATH}:/root/.cargo/bin/" @@ -9,9 +54,11 @@ COPY . /tsffs/ WORKDIR /tsffs/ RUN mkdir -p /simics/ispm && \ - tar -C /simics/ispm --strip-components=1 -xvf .github/builder/rsrc/ispm.tar.gz && \ + tar -C /simics/ispm --strip-components=1 -xf .github/builder/rsrc/ispm.tar.gz && \ ispm settings install-dir /simics && \ ispm packages --install-bundle .github/builder/rsrc/simics.ispm --non-interactive --trust-insecure-packages && \ - ispm projects "$(pwd)" --create --ignore-existing-files --non-interactive && \ - bin/project-setup --force && \ - cargo -Zscript build.rs + ls -lah /simics/ && \ + cargo install --path simics-rs/cargo-simics-build && \ + cargo simics-build --with-patchelf -r && \ + mkdir -p /packages && \ + cp target/release/*.ispm /packages diff --git a/.github/builder/build.sh b/.github/builder/build.sh index 13e6763d..f98fd63a 100755 --- a/.github/builder/build.sh +++ b/.github/builder/build.sh @@ -1,23 +1,73 @@ #!/bin/bash -PUBLIC_SIMICS_PKGS_URL="https://registrationcenter-download.intel.com/akdlm/IRC_NAS/881ee76a-c24d-41c0-af13-5d89b2a857ff/simics-6-packages-2023-31-linux64.ispm" -PUBLIC_SIMICS_ISPM_URL="https://registrationcenter-download.intel.com/akdlm/IRC_NAS/881ee76a-c24d-41c0-af13-5d89b2a857ff/intel-simics-package-manager-1.7.5-linux64.tar.gz" +# NOTE: Do not just copy-paste scripts/build.sh! + +CFE_URL="https://releases.llvm.org/5.0.2/cfe-5.0.2.src.tar.xz" +LLVM_SRC_URL="https://releases.llvm.org/5.0.2/llvm-5.0.2.src.tar.xz" +MAKE_SRC_URL="https://ftp.gnu.org/gnu/make/make-4.4.1.tar.gz" +RUSTUP_INIT_URL="https://static.rust-lang.org/rustup/dist/x86_64-unknown-linux-gnu/rustup-init" +CMAKE_URL="https://github.com/Kitware/CMake/releases/download/v3.28.0-rc5/cmake-3.28.0-rc5-linux-x86_64.tar.gz" +PATCHELF_URL="https://github.com/NixOS/patchelf/releases/download/0.18.0/patchelf-0.18.0-x86_64.tar.gz" +PUBLIC_SIMICS_PKGS_URL="https://registrationcenter-download.intel.com/akdlm/IRC_NAS/ead79ef5-28b5-48c7-8d1f-3cde7760798f/simics-6-packages-2024-05-linux64.ispm" +PUBLIC_SIMICS_ISPM_URL="https://registrationcenter-download.intel.com/akdlm/IRC_NAS/ead79ef5-28b5-48c7-8d1f-3cde7760798f/intel-simics-package-manager-1.8.3-linux64.tar.gz" +PUBLIC_SIMICS_PACKAGE_VERSION_1000="6.0.185" SCRIPT_DIR=$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" &>/dev/null && pwd) +ROOT_DIR="${SCRIPT_DIR}/../../" +BUILDER_DIR="${ROOT_DIR}/.github/builder/" IMAGE_NAME="tsffs-builder" CONTAINER_UID=$(echo "${RANDOM}" | sha256sum | head -c 8) CONTAINER_NAME="${IMAGE_NAME}-tmp-${CONTAINER_UID}" -mkdir -p "${SCRIPT_DIR}/rsrc" -if [ ! -f "${SCRIPT_DIR}/rsrc/ispm.tar.gz" ]; then - curl --noproxy '*.intel.com' -o "${SCRIPT_DIR}/rsrc/ispm.tar.gz" \ +mkdir -p "${BUILDER_DIR}/rsrc" + +if [ ! -f "${BUILDER_DIR}/rsrc/ispm.tar.gz" ]; then + + curl --noproxy '*.intel.com' -L -o "${BUILDER_DIR}/rsrc/ispm.tar.gz" \ "${PUBLIC_SIMICS_ISPM_URL}" fi -if [ ! -f "${SCRIPT_DIR}/rsrc/simics.ispm" ]; then - curl --noproxy '*.intel.com' -o "${SCRIPT_DIR}/rsrc/simics.ispm" \ + +if [ ! -f "${BUILDER_DIR}/rsrc/simics.ispm" ]; then + curl --noproxy '*.intel.com' -L -o "${BUILDER_DIR}/rsrc/simics.ispm" \ "${PUBLIC_SIMICS_PKGS_URL}" fi -docker build -t "${IMAGE_NAME}" -f "${SCRIPT_DIR}/Dockerfile" "${SCRIPT_DIR}/../../" +if [ ! -f "${BUILDER_DIR}/rsrc/cfe-5.0.2.src.tar.xz" ]; then + curl --noproxy '*.intel.com' -L -o "${BUILDER_DIR}/rsrc/cfe-5.0.2.src.tar.xz" \ + "${CFE_URL}" +fi + +if [ ! -f "${BUILDER_DIR}/rsrc/llvm-5.0.2.src.tar.xz" ]; then + curl --noproxy '*.intel.com' -L -o "${BUILDER_DIR}/rsrc/llvm-5.0.2.src.tar.xz" \ + "${LLVM_SRC_URL}" +fi + +if [ ! -f "${BUILDER_DIR}/rsrc/make-4.4.1.tar.gz" ]; then + curl --noproxy '*.intel.com' -L -o "${BUILDER_DIR}/rsrc/make-4.4.1.tar.gz" \ + "${MAKE_SRC_URL}" +fi + +if [ ! -f "${BUILDER_DIR}/rsrc/rustup-init" ]; then + curl --noproxy '*.intel.com' -L -o "${BUILDER_DIR}/rsrc/rustup-init" \ + "${RUSTUP_INIT_URL}" + chmod +x "${BUILDER_DIR}/rsrc/rustup-init" +fi + +if [ ! -f "${BUILDER_DIR}/rsrc/cmake-3.28.0-rc5-linux-x86_64.tar.gz" ]; then + curl --noproxy '*.intel.com' -L -o "${BUILDER_DIR}/rsrc/cmake-3.28.0-rc5-linux-x86_64.tar.gz" \ + "${CMAKE_URL}" +fi + +if [ ! -f "${BUILDER_DIR}/rsrc/patchelf-0.18.0-x86_64.tar.gz" ]; then + curl --noproxy '*.intel.com' -L -o "${BUILDER_DIR}/rsrc/patchelf-0.18.0-x86_64.tar.gz" \ + "${PATCHELF_URL}" +fi + +unset SIMICS_BASE +docker build \ + --build-arg \ + "PUBLIC_SIMICS_PACKAGE_VERSION_1000=${PUBLIC_SIMICS_PACKAGE_VERSION_1000}" \ + -t "${IMAGE_NAME}" -f "${BUILDER_DIR}/Dockerfile" "${ROOT_DIR}" docker create --name "${CONTAINER_NAME}" "${IMAGE_NAME}" bash -docker cp "${CONTAINER_NAME}:/tsffs/linux64/packages/" "${SCRIPT_DIR}/../../" +mkdir -p "${ROOT_DIR}/packages" +docker cp "${CONTAINER_NAME}:/packages" "${ROOT_DIR}/" docker rm -f "${CONTAINER_NAME}" \ No newline at end of file diff --git a/.github/dependabot/2024-02-23.csv b/.github/dependabot/2024-02-23.csv new file mode 100644 index 00000000..2e5ba135 --- /dev/null +++ b/.github/dependabot/2024-02-23.csv @@ -0,0 +1 @@ +CVE,Package Name,Severity,Manifest File,Status,CVSS,CVSS Vector,Vulnerable Versions,Fixed Versions,Triaged By,Triage Reason,Triage Comment diff --git a/.github/dependabot/2024-02-23.json b/.github/dependabot/2024-02-23.json new file mode 100644 index 00000000..41b42e67 --- /dev/null +++ b/.github/dependabot/2024-02-23.json @@ -0,0 +1,3 @@ +[ + +] diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index b1b94ef3..152bf656 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -9,17 +9,25 @@ on: env: CARGO_TERM_COLOR: always - PUBLIC_SIMICS_PKGS_URL: "https://registrationcenter-download.intel.com/akdlm/IRC_NAS/881ee76a-c24d-41c0-af13-5d89b2a857ff/simics-6-packages-2023-31-linux64.ispm" - PUBLIC_SIMICS_ISPM_URL: "https://registrationcenter-download.intel.com/akdlm/IRC_NAS/881ee76a-c24d-41c0-af13-5d89b2a857ff/intel-simics-package-manager-1.7.5-linux64.tar.gz" - PUBLIC_SIMICS_PKGS_URL_WINDOWS: "https://registrationcenter-download.intel.com/akdlm/IRC_NAS/881ee76a-c24d-41c0-af13-5d89b2a857ff/simics-6-packages-2023-31-win64.ispm" - PUBLIC_SIMICS_ISPM_URL_WINDOWS: "https://registrationcenter-download.intel.com/akdlm/IRC_NAS/881ee76a-c24d-41c0-af13-5d89b2a857ff/intel-simics-package-manager-1.7.5-win64.exe" - PUBLIC_SIMICS_PACKAGE_VERSION_1000: "6.0.169" + CFE_URL: "https://releases.llvm.org/5.0.2/cfe-5.0.2.src.tar.xz" + LLVM_SRC_URL: "https://releases.llvm.org/5.0.2/llvm-5.0.2.src.tar.xz" + MAKE_SRC_URL: "https://ftp.gnu.org/gnu/make/make-4.4.1.tar.gz" + RUSTUP_INIT_URL: "https://static.rust-lang.org/rustup/dist/x86_64-unknown-linux-gnu/rustup-init" + CMAKE_URL: "https://github.com/Kitware/CMake/releases/download/v3.28.0-rc5/cmake-3.28.0-rc5-linux-x86_64.tar.gz" + PATCHELF_URL: "https://github.com/NixOS/patchelf/releases/download/0.18.0/patchelf-0.18.0-x86_64.tar.gz" + PUBLIC_SIMICS_PKGS_URL_WINDOWS: "https://registrationcenter-download.intel.com/akdlm/IRC_NAS/ead79ef5-28b5-48c7-8d1f-3cde7760798f/simics-6-packages-2024-05-win64.ispm" + # NOTE: We use the old ISPM because there is something wrong with 1.8.3 with unattended installation + # PUBLIC_SIMICS_ISPM_URL_WINDOWS: "https://registrationcenter-download.intel.com/akdlm/IRC_NAS/881ee76a-c24d-41c0-af13-5d89b2a857ff/intel-simics-package-manager-1.7.5-win64.exe" + PUBLIC_SIMICS_ISPM_URL_WINDOWS: "https://registrationcenter-download.intel.com/akdlm/IRC_NAS/ead79ef5-28b5-48c7-8d1f-3cde7760798f/intel-simics-package-manager-1.8.3-win64.exe" + PUBLIC_SIMICS_PKGS_URL: "https://registrationcenter-download.intel.com/akdlm/IRC_NAS/ead79ef5-28b5-48c7-8d1f-3cde7760798f/simics-6-packages-2024-05-linux64.ispm" + PUBLIC_SIMICS_ISPM_URL: "https://registrationcenter-download.intel.com/akdlm/IRC_NAS/ead79ef5-28b5-48c7-8d1f-3cde7760798f/intel-simics-package-manager-1.8.3-linux64.tar.gz" + PUBLIC_SIMICS_PACKAGE_VERSION_1000: "6.0.185" + PUBLIC_SIMICS_ISPM_VERSION: "1.8.3" MINGW_URL: "https://github.com/brechtsanders/winlibs_mingw/releases/download/13.2.0-16.0.6-11.0.0-ucrt-r1/winlibs-x86_64-posix-seh-gcc-13.2.0-llvm-16.0.6-mingw-w64ucrt-11.0.0-r1.7z" MINGW_VERSION: "13.2.0-16.0.6-11.0.0-ucrt-r1" jobs: - build_test_artifacts: - name: Build Test Artifacts + cache_craff: runs-on: ubuntu-latest steps: - name: Add ISPM to PATH @@ -35,10 +43,10 @@ jobs: - name: Cache SIMICS Dependencies id: cache-simics-packages - uses: actions/cache@v3 + uses: actions/cache@v4 with: path: ~/simics - key: simics-linux-${{ env.PUBLIC_SIMICS_PACKAGE_VERSION_1000 }} + key: simics-linux-${{ env.PUBLIC_SIMICS_PACKAGE_VERSION_1000 }}-${{ env.PUBLIC_SIMICS_ISPM_VERSION }} - name: Install SIMICS (External) if: ${{ steps.cache-simics-packages.outputs.cache-hit != 'true' }} @@ -61,34 +69,294 @@ jobs: ispm packages --install-bundle "${HOME}/simics/simics.ispm" \ --non-interactive --trust-insecure-packages + - name: Copy CRAFF Utilities + run: | + mkdir bin && \ + cp "${HOME}/simics/simics-${{ env.PUBLIC_SIMICS_PACKAGE_VERSION_1000 }}/linux64/bin/craff" bin/craff && \ + cp "${HOME}/simics/simics-${{ env.PUBLIC_SIMICS_PACKAGE_VERSION_1000 }}/linux64/bin/craff-fs" bin/craff-fs && \ + rm -rf "${HOME}/simics/" + + - name: Upload Test Artifacts + uses: actions/upload-artifact@v4 + with: + name: craff-${{ env.PUBLIC_SIMICS_PACKAGE_VERSION_1000 }} + path: bin/ + + build_test_artifacts_riscv_64: + name: Build Test Artifacts (RISCV-64) + runs-on: ubuntu-latest + needs: cache_craff + steps: + - name: Install Dependencies + run: | + sudo apt-get -y update && \ + sudo apt-get -y install \ + clang libclang-dev cmake curl dosfstools g++ gcc git llvm make \ + mtools ninja-build openssl libssl-dev python3 python3-pip lld + - uses: actions/checkout@v4 with: lfs: true + - name: Download Craff + uses: actions/download-artifact@v4 + with: + name: craff-${{ env.PUBLIC_SIMICS_PACKAGE_VERSION_1000 }} + path: bin/ + + - name: Make Craff Executable + run: | + chmod 755 bin/* + chmod +x bin/* + - name: Cache Test Artifacts - id: cache-test-artifacts - uses: actions/cache@v3 + id: cache-test-artifacts-riscv-64 + uses: actions/cache@v4 with: - path: examples/tests - key: cache-test-artifacts-${{ hashFiles('examples/tests/**/*') }} + path: tests/rsrc/riscv-64/ + key: cache-test-artifacts-${{ hashFiles('tests/rsrc/riscv-64/**/*') }} - name: Build Test Artifacts - if: ${{ steps.cache-test-artifacts.outputs.cache-hit != 'true' }} + if: ${{ steps.cache-test-artifacts-riscv-64.outputs.cache-hit != 'true' }} run: | - cd examples/tests/ + cd tests/rsrc/riscv-64 ./build.sh - name: Upload Test Artifacts - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: - name: test-artifacts - path: examples/tests/ + name: test-artifacts-riscv-64 + path: tests/rsrc/riscv-64 + + build_test_artifacts_x86_64_breakpoint_uefi_edk2: + name: Build Test Artifacts (x86_64 Breakpoints UEFI EDK2) + runs-on: ubuntu-latest + steps: + - name: Install Dependencies + run: | + sudo apt-get -y update && \ + sudo apt-get -y install \ + clang libclang-dev cmake curl dosfstools g++ gcc git llvm make \ + mtools ninja-build openssl libssl-dev python3 python3-pip lld + + - uses: actions/checkout@v4 + with: + lfs: true + + - name: Cache Test Artifacts + id: cache-test-artifacts-x86_64-breakpoint-uefi-edk2 + uses: actions/cache@v4 + with: + path: tests/rsrc/x86_64-breakpoint-uefi-edk2 + key: cache-test-artifacts-${{ hashFiles('tests/rsrc/x86_64-breakpoint-uefi-edk2/**/*') }} + + - name: Build Test Artifacts + if: ${{ steps.cache-test-artifacts-x86_64-breakpoint-uefi-edk2.outputs.cache-hit != 'true' }} + run: | + cd tests/rsrc/x86_64-breakpoint-uefi-edk2 + ./build.sh + + - name: Upload Test Artifacts + uses: actions/upload-artifact@v4 + with: + name: test-artifacts-x86_64-breakpoint-uefi-edk2 + path: tests/rsrc/x86_64-breakpoint-uefi-edk2 + + build_test_artifacts_x86_64_crash-uefi: + name: Build Test Artifacts (x86_64 Crash UEFI) + runs-on: ubuntu-latest + steps: + - name: Install Dependencies + run: | + sudo apt-get -y update && \ + sudo apt-get -y install \ + clang libclang-dev cmake curl dosfstools g++ gcc git llvm make \ + mtools ninja-build openssl libssl-dev python3 python3-pip lld + + - uses: actions/checkout@v4 + with: + lfs: true + + - name: Cache Test Artifacts + id: cache-test-artifacts-x86_64-crash-uefi + uses: actions/cache@v4 + with: + path: tests/rsrc/x86_64-crash-uefi + key: cache-test-artifacts-${{ hashFiles('tests/rsrc/x86_64-crash-uefi/**/*') }} + + - name: Build Test Artifacts + if: ${{ steps.cache-test-artifacts-x86_64-crash-uefi.outputs.cache-hit != 'true' }} + run: | + cd tests/rsrc/x86_64-crash-uefi + ./build.sh + + - name: Upload Test Artifacts + uses: actions/upload-artifact@v4 + with: + name: test-artifacts-x86_64-crash-uefi + path: tests/rsrc/x86_64-crash-uefi + + build_test_artifacts_x86_64_timeout_uefi_edk2: + name: Build Test Artifacts (x86_64 Timeout UEFI EDK2) + runs-on: ubuntu-latest + steps: + - name: Install Dependencies + run: | + sudo apt-get -y update && \ + sudo apt-get -y install \ + clang libclang-dev cmake curl dosfstools g++ gcc git llvm make \ + mtools ninja-build openssl libssl-dev python3 python3-pip lld + + - uses: actions/checkout@v4 + with: + lfs: true + + - name: Cache Test Artifacts + id: cache-test-artifacts-x86_64-timeout-uefi-edk2 + uses: actions/cache@v4 + with: + path: tests/rsrc/x86_64-timeout-uefi-edk2 + key: cache-test-artifacts-${{ hashFiles('tests/rsrc/x86_64-timeout-uefi-edk2/**/*') }} + + - name: Build Test Artifacts + if: ${{ steps.cache-test-artifacts-x86_64-timeout-uefi-edk2.outputs.cache-hit != 'true' }} + run: | + cd tests/rsrc/x86_64-timeout-uefi-edk2 + ./build.sh + + - name: Upload Test Artifacts + uses: actions/upload-artifact@v4 + with: + name: test-artifacts-x86_64-timeout-uefi-edk2 + path: tests/rsrc/x86_64-timeout-uefi-edk2 + + build_test_artifacts_x86_64_uefi: + name: Build Test Artifacts (x86_64 UEFI) + runs-on: ubuntu-latest + steps: + - name: Install Dependencies + run: | + sudo apt-get -y update && \ + sudo apt-get -y install \ + clang libclang-dev cmake curl dosfstools g++ gcc git llvm make \ + mtools ninja-build openssl libssl-dev python3 python3-pip lld + + - uses: actions/checkout@v4 + with: + lfs: true + + - name: Cache Test Artifacts + id: cache-test-artifacts-x86_64-uefi + uses: actions/cache@v4 + with: + path: tests/rsrc/x86_64-uefi + key: cache-test-artifacts-${{ hashFiles('tests/rsrc/x86_64-uefi/**/*') }} + + - name: Build Test Artifacts + if: ${{ steps.cache-test-artifacts-x86_64-uefi.outputs.cache-hit != 'true' }} + run: | + cd tests/rsrc/x86_64-uefi + ./build.sh + + - name: Upload Test Artifacts + uses: actions/upload-artifact@v4 + with: + name: test-artifacts-x86_64-uefi + path: tests/rsrc/x86_64-uefi + + build_test_artifacts_x86_64_uefi_edk2: + name: Build Test Artifacts (x86_64 UEFI EDK2) + runs-on: ubuntu-latest + steps: + - name: Install Dependencies + run: | + sudo apt-get -y update && \ + sudo apt-get -y install \ + clang libclang-dev cmake curl dosfstools g++ gcc git llvm make \ + mtools ninja-build openssl libssl-dev python3 python3-pip lld + + - uses: actions/checkout@v4 + with: + lfs: true + + - name: Cache Test Artifacts + id: cache-test-artifacts-x86_64-uefi-edk2 + uses: actions/cache@v4 + with: + path: tests/rsrc/x86_64-uefi-edk2 + key: cache-test-artifacts-${{ hashFiles('tests/rsrc/x86_64-uefi-edk2/**/*') }} + + - name: Build Test Artifacts + if: ${{ steps.cache-test-artifacts-x86_64-uefi-edk2.outputs.cache-hit != 'true' }} + run: | + cd tests/rsrc/x86_64-uefi-edk2 + ./build.sh + + - name: Upload Test Artifacts + uses: actions/upload-artifact@v4 + with: + name: test-artifacts-x86_64-uefi-edk2 + path: tests/rsrc/x86_64-uefi-edk2 + + build_test_artifacts_x86_user: + name: Build Test Artifacts (x86) + runs-on: ubuntu-latest + needs: cache_craff + steps: + - name: Install Dependencies + run: | + sudo apt-get -y update && \ + sudo apt-get -y install \ + clang libclang-dev cmake curl dosfstools g++ gcc git llvm make \ + mtools ninja-build openssl libssl-dev python3 python3-pip lld \ + build-essential gcc-multilib + + - uses: actions/checkout@v4 + with: + lfs: true + + - name: Download Craff + uses: actions/download-artifact@v4 + with: + name: craff-${{ env.PUBLIC_SIMICS_PACKAGE_VERSION_1000 }} + path: bin/ + + - name: Make Craff Executable + run: | + chmod 755 bin/* + chmod +x bin/* + + - name: Cache Test Artifacts + id: cache-test-artifacts-x86-user + uses: actions/cache@v4 + with: + path: tests/rsrc/x86-user/ + key: cache-test-artifacts-${{ hashFiles('tests/rsrc/x86-user/**/*') }} + + - name: Build Test Artifacts + if: ${{ steps.cache-test-artifacts-x86-user.outputs.cache-hit != 'true' }} + run: | + cd tests/rsrc/x86-user + ./build.sh + + - name: Upload Test Artifacts + uses: actions/upload-artifact@v4 + with: + name: test-artifacts-x86-user + path: tests/rsrc/x86-user build_and_test: name: Build and Test (Linux) container: fedora:38 runs-on: ubuntu-latest - needs: build_test_artifacts + needs: + - build_test_artifacts_riscv_64 + - build_test_artifacts_x86_64_breakpoint_uefi_edk2 + - build_test_artifacts_x86_64_crash-uefi + - build_test_artifacts_x86_64_timeout_uefi_edk2 + - build_test_artifacts_x86_64_uefi + - build_test_artifacts_x86_64_uefi_edk2 + - build_test_artifacts_x86_user steps: - name: Add ISPM to PATH run: | @@ -111,19 +379,55 @@ jobs: - name: Delete Un-Built Test Dependencies run: | - rm -rf examples/tests/ + rm -rf tests/rsrc/ + + - name: Download Test Artifacts (RISCV-64) + uses: actions/download-artifact@v4 + with: + name: test-artifacts-riscv-64 + path: tests/rsrc/riscv-64 - - name: Download Test Dependencies - uses: actions/download-artifact@v3 + - name: Download Test Artifacts (x86_64 Breakpoints UEFI EDK2) + uses: actions/download-artifact@v4 with: - name: test-artifacts - path: examples/tests/ + name: test-artifacts-x86_64-breakpoint-uefi-edk2 + path: tests/rsrc/x86_64-breakpoint-uefi-edk2 + + - name: Download Test Artifacts (x86_64 Timeout UEFI EDK2) + uses: actions/download-artifact@v4 + with: + name: test-artifacts-x86_64-crash-uefi + path: tests/rsrc/x86_64-crash-uefi + + - name: Download Test Artifacts (x86_64 Timeout UEFI EDK2) + uses: actions/download-artifact@v4 + with: + name: test-artifacts-x86_64-timeout-uefi-edk2 + path: tests/rsrc/x86_64-timeout-uefi-edk2 + + - name: Download Test Artifacts (x86_64 UEFI) + uses: actions/download-artifact@v4 + with: + name: test-artifacts-x86_64-uefi + path: tests/rsrc/x86_64-uefi + + - name: Download Test Artifacts (x86_64 UEFI EDK2) + uses: actions/download-artifact@v4 + with: + name: test-artifacts-x86_64-uefi-edk2 + path: tests/rsrc/x86_64-uefi-edk2 + + - name: Download Test Artifacts (x86) + uses: actions/download-artifact@v4 + with: + name: test-artifacts-x86-user + path: tests/rsrc/x86-user - name: Take Ownership of Test Dependencies run: | - ls -lahR examples/tests/ - chown -R "${USER}:${USER}" examples/tests/ - chmod -R 0755 examples/tests/ + ls -lahR tests/rsrc/ + chown -R "${USER}:${USER}" tests/rsrc/ + chmod -R 0755 tests/rsrc/ - uses: dtolnay/rust-toolchain@nightly with: @@ -132,18 +436,18 @@ jobs: - name: Cache SIMICS Dependencies id: cache-simics-packages - uses: actions/cache@v3 + uses: actions/cache@v4 with: path: ~/simics - key: simics-linux-${{ env.PUBLIC_SIMICS_PACKAGE_VERSION_1000 }} + key: simics-linux-${{ env.PUBLIC_SIMICS_PACKAGE_VERSION_1000 }}-${{ env.PUBLIC_SIMICS_ISPM_VERSION }} - name: Install SIMICS (External) if: ${{ steps.cache-simics-packages.outputs.cache-hit != 'true' }} run: | mkdir -p "${HOME}/simics/ispm/" && \ - curl --noproxy -L -o "${HOME}/simics/ispm.tar.gz" \ + curl -L -o "${HOME}/simics/ispm.tar.gz" \ "${{ env.PUBLIC_SIMICS_ISPM_URL }}" && \ - curl --noproxy -L -o "${HOME}/simics/simics.ispm" \ + curl -L -o "${HOME}/simics/simics.ispm" \ "${{ env.PUBLIC_SIMICS_PKGS_URL }}" && \ tar -C "${HOME}/simics/ispm" --strip-components=1 \ -xvf "${HOME}/simics/ispm.tar.gz" @@ -158,46 +462,28 @@ jobs: ispm packages --install-bundle "${HOME}/simics/simics.ispm" \ --non-interactive --trust-insecure-packages - - name: Build and Install TSFFS SIMICS Package + - name: Install SIMICS Build run: | - ispm projects "$(pwd)" --create --ignore-existing-files \ - --non-interactive - bin/project-setup --force - ./build.rs - ispm packages \ - -i linux64/packages/simics-pkg-31337-*-linux64.ispm \ - --non-interactive --trust-insecure-packages + cargo install --path simics-rs/cargo-simics-build - - name: Build Project + - name: Build TSFFS Package run: | - SIMICS_BASE=${HOME}/simics/simics-${{ env.PUBLIC_SIMICS_PACKAGE_VERSION_1000 }} cargo build + cargo simics-build -r - name: CT39 - Clippy Check Project run: | - SIMICS_BASE=${HOME}/simics/simics-${{ env.PUBLIC_SIMICS_PACKAGE_VERSION_1000 }} cargo clippy \ + cargo clippy \ || ( echo "❗ [CT39 (1/2)] Failed clippy static analysis checks" && exit 1 ) echo "✅ [CT39 (1/2)] Passed clippy static analysis checks" - name: Test Project run: | - TSFFS_TEST_CLEANUP_EACH=1 SIMICS_BASE=${HOME}/simics/simics-${{ env.PUBLIC_SIMICS_PACKAGE_VERSION_1000 }} cargo test -p raw-cstr -p version-tools -p tests -- --nocapture || ( echo "❗ Tests failed" && exit 1 ) + SIMICS_TEST_CLEANUP_EACH=1 SIMICS_TEST_LOCAL_PACKAGES_ONLY=1 cargo test --no-fail-fast -r || ( echo "❗ Tests failed" && exit 1 ) echo "✅ Tests passed" - name: Build Docs run: | - SIMICS_BASE=${HOME}/simics/simics-${{ env.PUBLIC_SIMICS_PACKAGE_VERSION_1000 }} cargo doc --workspace --no-deps - - - name: Test Docs - run: | - SIMICS_BASE=${HOME}/simics/simics-${{ env.PUBLIC_SIMICS_PACKAGE_VERSION_1000 }} cargo test --doc - - - name: CT39 - MIRI Check Project - run: | - SIMICS_BASE=${HOME}/simics/simics-${{ env.PUBLIC_SIMICS_PACKAGE_VERSION_1000 }} \ - MIRIFLAGS="-Zmiri-backtrace=full -Zmiri-disable-isolation -Zmiri-panic-on-unsupported" \ - cargo miri test -p raw-cstr -p version-tools \ - || ( echo "❗ [CT39 (2/2)] Failed MIRI static analysis checks" && exit 1 ) - echo "✅ [CT39 (2/2)] Passed MIRI static analysis checks" + cargo doc --workspace --no-deps build_windows: name: Build and Test (Windows) @@ -213,7 +499,7 @@ jobs: - name: Cache MinGW id: cache-mingw - uses: actions/cache@v3 + uses: actions/cache@v4 with: path: C:\MinGW\ key: mingw-${{ env.MINGW_VERSION }} @@ -221,35 +507,44 @@ jobs: - name: Download and Extract MinGW-w64 if: ${{ steps.cache-mingw.outputs.cache-hit != 'true' }} run: | + $ProgressPreference = 'SilentlyContinue' + echo "Downloading MinGW" Invoke-WebRequest -URI ${{ env.MINGW_URL }} -OutFile mingw.7z + echo "Downloaded MinGW. Extracting MinGW." 7z x mingw.7z -oC:\mingw-w64\ + echo "Extracted MinGW." mv C:\mingw-w64\mingw64\ C:\MinGW\ - name: Download and Install Rust run: | - Invoke-WebRequest -URI https://win.rustup.rs/x86_64 -o C:\rustup-init.exe + $ProgressPreference = 'SilentlyContinue' + echo "Downloading Rustup" + Invoke-WebRequest -URI https://win.rustup.rs/x86_64 -OutFile C:\rustup-init.exe + echo "Installing Rust" C:\rustup-init.exe --default-toolchain nightly --default-host x86_64-pc-windows-gnu -y - name: Cache SIMICS id: cache-simics-packages-windows - uses: actions/cache@v3 + uses: actions/cache@v4 with: path: | C:\ISPM\ C:\SIMICS\ - key: simics-windows-${{ env.PUBLIC_SIMICS_PACKAGE_VERSION_1000 }} + key: simics-windows-${{ env.PUBLIC_SIMICS_PACKAGE_VERSION_1000 }}-${{ env.PUBLIC_SIMICS_ISPM_VERSION }} # ispm-installer.exe is a NSIS installer for the elctron build. We want the - # default options, so we pass /S to install silently: + # default options, so we pass /S to install silently and /D to change directory. + # NOTE that the argument to /D must never contain quotes!: # https://nsis.sourceforge.io/Docs/Chapter3.html#installerusage # # NOTE: We use | Out-Null on the installer command to make powershell wait for it # to actually finish instead of forking it to the background - name: Download and Install ISPM + shell: powershell if: ${{ steps.cache-simics-packages-windows.outputs.cache-hit != 'true' }} run: | - Invoke-WebRequest -URI ${{ env.PUBLIC_SIMICS_ISPM_URL_WINDOWS }} -o C:\ispm-installer.exe - C:\ispm-installer.exe /S /D='C:\ISPM\' | Out-Null + Invoke-WebRequest -URI ${{ env.PUBLIC_SIMICS_ISPM_URL_WINDOWS }} -OutFile C:\ispm-installer.exe + C:\ispm-installer.exe /S /D=C:\ISPM\ | Out-Null - name: Set SIMICS Install Directory run: | @@ -258,8 +553,12 @@ jobs: - name: Download and Install SIMICS Packages if: ${{ steps.cache-simics-packages-windows.outputs.cache-hit != 'true' }} run: | - Invoke-WebRequest -URI ${{ env.PUBLIC_SIMICS_PKGS_URL_WINDOWS }} -o C:\simics-6-packages.ispm + $ProgressPreference = 'SilentlyContinue' + echo "Downloading Simics 6 Packages" + Invoke-WebRequest -URI ${{ env.PUBLIC_SIMICS_PKGS_URL_WINDOWS }} -OutFile C:\simics-6-packages.ispm + echo "Installing ISPM packages" ispm.exe packages --install-bundle C:\simics-6-packages.ispm --non-interactive --trust-insecure-packages + echo "Installed ISPM packages" - uses: actions/checkout@v4 with: @@ -267,15 +566,14 @@ jobs: - name: Setup, Build, and Install TSFFS run: | - ispm.exe projects $(pwd) --create --non-interactive --ignore-existing-files - ./bin/project-setup.bat --mingw-dir C:\MinGW\ --ignore-existing-files --force - cargo -Zscript build.rs + cargo install --path simics-rs/cargo-simics-build + cargo simics-build -r - name: Upload Distribution Package - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: name: simics-pkg-31337-win64 - path: win64/packages/simics-pkg-31337-*-win64.ispm + path: target/release/simics-pkg-31337-*-win64.ispm build_dist: name: Build for Distribution @@ -287,10 +585,10 @@ jobs: - name: Cache Builder Dependencies id: cache-builder-dependencies - uses: actions/cache@v3 + uses: actions/cache@v4 with: path: .github/builder/rsrc - key: "cache-builder-dependencies-${{ env.PUBLIC_SIMICS_ISPM_URL}}-${{env.PUBLIC_SIMICS_PKGS_URL }}" + key: "cache-builder-dependencies-${{ env.PUBLIC_SIMICS_ISPM_URL}}-${{env.PUBLIC_SIMICS_PKGS_URL }}-${{ env.CFE_URL }}-${{ env.LLVM_SRC_URL }}-${{ env.MAKE_SRC_URL }}-${{ env.RUSTUP_INIT_URL }}-${{ env.CMAKE_URL }}" - name: Download Builder Dependencies if: ${{ steps.cache-builder-dependencies.outputs.cache-hit != 'true' }} @@ -300,63 +598,29 @@ jobs: "${{ env.PUBLIC_SIMICS_ISPM_URL }}" && \ curl -L -o .github/builder/rsrc/simics.ispm \ "${{ env.PUBLIC_SIMICS_PKGS_URL }}" + curl -L -o .github/builder/rsrc/cfe-5.0.2.src.tar.xz \ + "${{ env.CFE_URL }}" + curl -L -o .github/builder/rsrc/llvm-5.0.2.src.tar.xz \ + "${{ env.LLVM_SRC_URL }}" + curl -L -o .github/builder/rsrc/make-4.4.1.tar.gz \ + "${{ env.MAKE_SRC_URL }}" + curl -L -o .github/builder/rsrc/rustup-init \ + "${{ env.RUSTUP_INIT_URL }}" + chmod +x .github/builder/rsrc/rustup-init + curl -L -o .github/builder/rsrc/cmake-3.28.0-rc5-linux-x86_64.tar.gz \ + "${{ env.CMAKE_URL }}" + curl -L -o .github/builder/rsrc/patchelf-0.18.0-x86_64.tar.gz \ + "${{ env.PATCHELF_URL}}" - name: Build Distribution Package run: | docker build -t tsffs-dist -f .github/builder/Dockerfile . docker create --name tsffs-dist tsffs-dist bash - docker cp tsffs-dist:/tsffs/linux64/packages/ packages/ + docker cp tsffs-dist:/packages . docker rm -f tsffs-dist - name: Upload Distribution Package - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: name: simics-pkg-31337-linux64 path: packages/simics-pkg-31337-*-linux64.ispm - - fuzz_tests: - name: Run Fuzz Tests - container: fedora:38 - runs-on: ubuntu-latest - steps: - - name: Install Dependencies - run: | - dnf -y update && \ - dnf -y install \ - alsa-lib atk clang clang-libs clang-resource-filesystem \ - clang-tools-extra cmake cups curl dosfstools g++ gcc git \ - git-lfs glibc-devel glibc-devel.i686 glibc-static \ - glibc-static.i686 gtk3 lld lld-devel lld-libs llvm llvm-libs \ - llvm-static make mesa-libgbm mtools ninja-build openssl \ - openssl-devel openssl-libs python3 python3-pip yamllint - - - uses: actions/checkout@v4 - with: - lfs: true - - - uses: dtolnay/rust-toolchain@nightly - with: - toolchain: nightly - components: rustfmt,clippy,miri - - - name: Install Cargo-Fuzz - run: | - cargo install cargo-fuzz - - name: CT632 (E/C) - Perform fuzz testing - run: | - cd modules/tsffs/src/util/version-tools - - cargo fuzz build - - timeout --preserve-status 600 cargo fuzz run \ - fuzz_version_constraint_parse || exit 0 - - echo "Done fuzzing!" - - if [ -d ./fuzz/artifacts ]; then - if find ./fuzz/artifacts -mindepth 1 -maxdepth 1 2> /dev/null | read -r; then - echo "❗ [CT632] Fuzz test found an issue" - exit 1 - fi - fi - cd ../../../../../ diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml index eba88f39..95ba3ea0 100644 --- a/.github/workflows/docs.yml +++ b/.github/workflows/docs.yml @@ -7,9 +7,9 @@ on: workflow_dispatch: env: - PUBLIC_SIMICS_PKGS_URL: "https://registrationcenter-download.intel.com/akdlm/IRC_NAS/881ee76a-c24d-41c0-af13-5d89b2a857ff/simics-6-packages-2023-31-linux64.ispm" - PUBLIC_SIMICS_ISPM_URL: "https://registrationcenter-download.intel.com/akdlm/IRC_NAS/881ee76a-c24d-41c0-af13-5d89b2a857ff/intel-simics-package-manager-1.7.5-linux64.tar.gz" - PUBLIC_SIMICS_PACKAGE_VERSION_1000: "6.0.169" + PUBLIC_SIMICS_PKGS_URL: "https://registrationcenter-download.intel.com/akdlm/IRC_NAS/ead79ef5-28b5-48c7-8d1f-3cde7760798f/simics-6-packages-2024-05-linux64.ispm" + PUBLIC_SIMICS_ISPM_URL: "https://registrationcenter-download.intel.com/akdlm/IRC_NAS/ead79ef5-28b5-48c7-8d1f-3cde7760798f/intel-simics-package-manager-1.8.3-linux64.tar.gz" + PUBLIC_SIMICS_PACKAGE_VERSION_1000: "6.0.185" permissions: contents: read diff --git a/.github/workflows/scans.yml b/.github/workflows/scans.yml index 2253b848..b33c867f 100644 --- a/.github/workflows/scans.yml +++ b/.github/workflows/scans.yml @@ -54,9 +54,9 @@ jobs: # - examples/manual-example/Dockerfile # - modules/tsffs/tests/targets/minimal-riscv-64/Dockerfile # - modules/tsffs/tests/targets/minimal-riscv-64-edk2/Dockerfile - - examples/tests/x86_64-breakpoint-uefi-edk2/Dockerfile - - examples/tests/x86_64-timeout-uefi-edk2/Dockerfile - - examples/tests/x86_64-uefi-edk2/Dockerfile + - tests/rsrc/x86_64-breakpoint-uefi-edk2/Dockerfile + - tests/rsrc/x86_64-timeout-uefi-edk2/Dockerfile + - tests/rsrc/x86_64-uefi-edk2/Dockerfile include: # NOTE: These containers exceed the GitHub size limit and must be scanned manually # - dockerfile: Dockerfile @@ -67,12 +67,12 @@ jobs: # context: modules/tsffs/tests/targets/minimal-riscv-64/ # - dockerfile: modules/tsffs/tests/targets/minimal-riscv-64-edk2/Dockerfile # context: modules/tsffs/tests/targets/minimal-riscv-64-edk2/ - - dockerfile: examples/tests/x86_64-breakpoint-uefi-edk2/Dockerfile - context: examples/tests/x86_64-breakpoint-uefi-edk2/ - - dockerfile: examples/tests/x86_64-timeout-uefi-edk2/Dockerfile - context: examples/tests/x86_64-timeout-uefi-edk2/ - - dockerfile: examples/tests/x86_64-uefi-edk2/Dockerfile - context: examples/tests/x86_64-uefi-edk2/ + - dockerfile: tests/rsrc/x86_64-breakpoint-uefi-edk2/Dockerfile + context: tests/rsrc/x86_64-breakpoint-uefi-edk2/ + - dockerfile: tests/rsrc/x86_64-timeout-uefi-edk2/Dockerfile + context: tests/rsrc/x86_64-timeout-uefi-edk2/ + - dockerfile: tests/rsrc/x86_64-uefi-edk2/Dockerfile + context: tests/rsrc/x86_64-uefi-edk2/ steps: - uses: actions/checkout@v4 diff --git a/.gitignore b/.gitignore index 640b2e42..9aa0249e 100644 --- a/.gitignore +++ b/.gitignore @@ -18,6 +18,7 @@ compiler.mk *.project-setup.new documentation !documentation/ +*.log .cargo/ diff --git a/.gitleaksignore b/.gitleaksignore index 0dd9616d..b0f0c5cd 100644 --- a/.gitleaksignore +++ b/.gitleaksignore @@ -1,2 +1,3 @@ 6fff107aa30d12a9e7c1bb0ae12d0892cf8267e1:docs/src/tutorials/edk2-uefi/writing-the-application.md:generic-api-key:160 +067469f3f03739661a08afdf1542bc3e088deeeb:docs/src/tutorials/edk2-uefi/writing-the-application.md:generic-api-key:160 6e7bfe7256ea34323926bdbc2f7c157126782c87:docs/src/tutorials/edk2-uefi.md:generic-api-key:167 \ No newline at end of file diff --git a/Cargo.toml b/Cargo.toml index 22d967d3..6690f2c7 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,7 +1,8 @@ -# Copyright (C) 2023 Intel Corporation +# Copyright (C) 2024 Intel Corporation # SPDX-License-Identifier: Apache-2.0 -[workspace.package] +[package] +name = "tsffs" authors = [ "Rowan Hart ", "Brandon Marken ", @@ -18,67 +19,77 @@ readme = "README.md" repository = "https://github.com/intel/tsffs" version = "0.2.1" -[workspace.metadata] -build-id = 3 -version = "6.0.2" +[package.metadata.simics] +package-number = 31337 +# version = "6.0.pre4" +version = "6.0.4" -[workspace] -resolver = "2" -members = [ - "modules/tsffs/tests", - "modules/tsffs/src/tsffs", - "modules/tsffs/src/simics/ispm-wrapper", - "modules/tsffs/src/simics/simics-api-sys", - "modules/tsffs/src/simics/simics-macro", - "modules/tsffs/src/simics/simics-codegen", - "modules/tsffs/src/simics/simics", +[lib] +crate-type = ["cdylib", "rlib"] +test = false - "modules/tsffs/src/util/ffi-macro", - "modules/tsffs/src/util/raw-cstr", - "modules/tsffs/src/util/version-tools", -] -default-members = [ - "modules/tsffs/tests", - "modules/tsffs/src/tsffs", - "modules/tsffs/src/simics/ispm-wrapper", - "modules/tsffs/src/simics/simics-api-sys", - "modules/tsffs/src/simics/simics-macro", - "modules/tsffs/src/simics/simics-codegen", - "modules/tsffs/src/simics/simics", - - "modules/tsffs/src/util/ffi-macro", - "modules/tsffs/src/util/raw-cstr", - "modules/tsffs/src/util/version-tools", -] -exclude = [] - -[workspace.dependencies] -simics-api-sys = { path = "modules/tsffs/src/simics/simics-api-sys" } -simics-macro = { path = "modules/tsffs/src/simics/simics-macro" } -simics-codegen = { path = "modules/tsffs/src/simics/simics-codegen" } -simics = { path = "modules/tsffs/src/simics/simics" } -ispm-wrapper = { path = "modules/tsffs/src/simics/ispm-wrapper" } - -ffi-macro = { path = "modules/tsffs/src/util/ffi-macro" } -raw-cstr = { path = "modules/tsffs/src/util/raw-cstr" } -version-tools = { path = "modules/tsffs/src/util/version-tools" } - -anyhow = { version = "1.0.75" } -libafl = { version = "0.11.2" } -libafl_bolts = { version = "0.11.2" } -libafl_targets = { version = "0.11.2", default-features = false, features = [ +[dependencies] +anyhow = { version = "1.0.80" } +# libafl = { version = "0.11.2" } +# libafl_bolts = { version = "0.11.2" } +# libafl_targets = { version = "0.11.2", default-features = false, features = [ +# "std", +# ] } +libafl = { git = "https://github.com/AFLplusplus/LibAFL", default-features = false, features = [ + "std", + "derive", + "llmp_compression", + "llmp_small_maps", + "llmp_broker_timeouts", + "rand_trait", + "fork", + "prelude", + "gzip", + "regex", + "serdeany_autoreg", +] } +libafl_bolts = { git = "https://github.com/AFLplusplus/LibAFL", features = [ + "xxh3", +] } +libafl_targets = { git = "https://github.com/AFLplusplus/LibAFL", default-features = false, features = [ + "std", +] } +yaxpeax-arch = { version = "0.2.7", default-features = false, features = [ + "std", + "use-serde", +] } +yaxpeax-x86 = { version = "1.2.2", default-features = false, features = [ "std", + "use-serde", + "fmt", ] } -serde = { version = "1.0.188", features = ["derive"] } -serde_json = { version = "1.0.107" } -versions = { version = "6.0.0", features = ["serde"] } +typed-builder = "0.18.1" +raw-cstr = "0.1.4" +goblin = "0.8.0" +yaxpeax-riscv = { git = "https://github.com/DrChat/yaxpeax-riscv", version = "0.1.0", features = [ + "serde", +], rev = "0e2151b" } +crc32fast = "1.4.0" +simics = { path = "simics-rs/simics" } +indoc = "2.0.4" +serde = { version = "1.0.197", features = ["derive"] } +serde_json = "1.0.114" +versions = { version = "6.1.0", features = ["serde"] } +ffi = "0.1.1" +[dev-dependencies] +simics-test = { path = "simics-rs/simics-test" } +anyhow = "1.0.80" +command-ext = "0.1.2" +indoc = "2.0.4" +ispm-wrapper = { path = "simics-rs/ispm-wrapper" } +versions = { version = "6.1.0", features = ["serde"] } -[profile.dev] -rpath = true +[build-dependencies] +simics = { path = "simics-rs/simics" } +simics-build-utils = { path = "simics-rs/simics-build-utils" } [profile.release] -rpath = true lto = true codegen-units = 1 opt-level = 3 diff --git a/Dockerfile b/Dockerfile index 4b5b288b..972685de 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -# Copyright (C) 2023 Intel Corporation +# Copyright (C) 2024 Intel Corporation # SPDX-License-Identifier: Apache-2.0 # hadolint global ignore=DL3041,DL3040 @@ -6,8 +6,10 @@ FROM fedora:38 # Download links can be obtained from: # https://lemcenter.intel.com/productDownload/?Product=256660e5-a404-4390-b436-f64324d94959 -ARG PUBLIC_SIMICS_PKGS_URL="https://registrationcenter-download.intel.com/akdlm/IRC_NAS/881ee76a-c24d-41c0-af13-5d89b2a857ff/simics-6-packages-2023-31-linux64.ispm" -ARG PUBLIC_SIMICS_ISPM_URL="https://registrationcenter-download.intel.com/akdlm/IRC_NAS/881ee76a-c24d-41c0-af13-5d89b2a857ff/intel-simics-package-manager-1.7.5-linux64.tar.gz" +ENV PUBLIC_SIMICS_PKGS_URL="https://registrationcenter-download.intel.com/akdlm/IRC_NAS/ead79ef5-28b5-48c7-8d1f-3cde7760798f/simics-6-packages-2024-05-linux64.ispm" +ENV PUBLIC_SIMICS_ISPM_URL="https://registrationcenter-download.intel.com/akdlm/IRC_NAS/ead79ef5-28b5-48c7-8d1f-3cde7760798f/intel-simics-package-manager-1.8.3-linux64.tar.gz" +ENV PUBLIC_SIMICS_PACKAGE_VERSION_1000="6.0.185" +ENV SIMICS_BASE="/workspace/simics/simics-${PUBLIC_SIMICS_PACKAGE_VERSION_1000}/" # Add cargo and ispm to the path ENV PATH="/root/.cargo/bin:/workspace/simics/ispm:${PATH}" @@ -64,8 +66,7 @@ RUN dnf -y update && \ isort==5.12.0 \ mypy==1.6.1 \ pylint==3.0.2 && \ - curl https://sh.rustup.rs -sSf | bash -s -- -y && \ - rustup toolchain install nightly + curl https://sh.rustup.rs -sSf | bash -s -- -y --default-toolchain nightly WORKDIR /workspace @@ -74,12 +75,13 @@ WORKDIR /workspace # ispm SIMICS package and project manager. ISPM will be on the path due to the ENV command # above RUN mkdir -p /workspace/simics/ispm/ && \ - curl --noproxy -L -o /workspace/simics/ispm.tar.gz "${PUBLIC_SIMICS_ISPM_URL}" && \ - curl --noproxy -L -o /workspace/simics/simics.ispm "${PUBLIC_SIMICS_PKGS_URL}" && \ + curl --noproxy '*.intel.com' -L -o /workspace/simics/ispm.tar.gz "${PUBLIC_SIMICS_ISPM_URL}" && \ + curl --noproxy '*.intel.com' -L -o /workspace/simics/simics.ispm "${PUBLIC_SIMICS_PKGS_URL}" && \ tar -C /workspace/simics/ispm --strip-components=1 \ - -xvf /workspace/simics/ispm.tar.gz && \ + -xf /workspace/simics/ispm.tar.gz && \ ispm settings install-dir /workspace/simics && \ - ispm packages --install-bundle /workspace/simics/simics.ispm --non-interactive && \ + ispm packages --install-bundle /workspace/simics/simics.ispm --non-interactive \ + --trust-insecure-packages && \ rm /workspace/simics/ispm.tar.gz /workspace/simics/simics.ispm && \ rm -rf /workspace/simics-6-packages/ @@ -91,13 +93,11 @@ WORKDIR /workspace/tsffs/ # Build the project by initializing it as a project associated with the local SIMICS installation # and building the module using the build script. Then, install the built TSFFS SIMICS # package into the local SIMICS installation for use. -RUN ispm projects /workspace/tsffs/ --create --ignore-existing-files --non-interactive && \ - bin/project-setup --force && \ - ./build.rs && \ +RUN cargo install --path simics-rs/cargo-simics-build && \ + cargo simics-build -r && \ ispm packages \ - -i /workspace/tsffs/linux64/packages/*-linux64.ispm \ - --non-interactive --trust-insecure-packages && \ - make clobber + -i target/release/*-linux64.ispm \ + --non-interactive --trust-insecure-packages WORKDIR /workspace/projects/example/ @@ -117,8 +117,8 @@ RUN ispm projects /workspace/projects/example/ --create \ 1030-latest \ 31337-latest --ignore-existing-files --non-interactive && \ cp /workspace/tsffs/examples/docker-example/fuzz.simics /workspace/projects/example/ && \ - cp /workspace/tsffs/modules/tsffs/tests/rsrc/minimal_boot_disk.craff /workspace/projects/example/ && \ - cp /workspace/tsffs/modules/tsffs/tests/targets/minimal-x86_64/* /workspace/projects/example/ && \ + cp /workspace/tsffs/tests/rsrc/minimal_boot_disk.craff /workspace/projects/example/ && \ + cp /workspace/tsffs/tests/rsrc/x86_64-uefi/* /workspace/projects/example/ && \ cp /workspace/tsffs/harness/tsffs-gcc-x86_64.h /workspace/projects/example/ && \ ninja diff --git a/LICENSE b/LICENSE index cb031561..ea5fec7a 100644 --- a/LICENSE +++ b/LICENSE @@ -186,7 +186,7 @@ same "printed page" as the copyright notice for easier identification within third-party archives. - Copyright 2023 Intel Corporation + Copyright 2024 Intel Corporation Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/build.rs b/build.rs old mode 100755 new mode 100644 index 7a46f155..ad6c4bf1 --- a/build.rs +++ b/build.rs @@ -1,640 +1,11 @@ -#!/usr/bin/env -S cargo +nightly -Z script -## [dependencies] -## anyhow = "*" -## command-ext = "*" -## typed-builder = "*" -## walkdir = "*" -## serde = { version = "*", features = ["derive"] } -## serde_json = "*" -## cargo_metadata = "*" +// Copyright (C) 2024 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 -// This script builds and packages the TSFFS package. It simply: -// - Invokes make to build the module -// - Invokes make again to ensure the interface is up to date -// - Generates the packages.list file for the module and interface -// - Calls the `create-package-specs` script -// - Calls the `create-modcache` script -// - Calls the `create-packages` script +/// The environment variable containing the path to the Simics installation +const SIMICS_BASE_ENV: &str = "SIMICS_BASE"; -use anyhow::{anyhow, bail, Error, Result}; -use cargo_metadata::MetadataCommand; -use command_ext::CommandExtCheck; -use serde::{Deserialize, Serialize}; -use serde_json::{to_string, value::Value}; -use std::{ - collections::HashMap, - env::current_dir, - fs::{create_dir_all, write}, - iter::once, - path::{Path, PathBuf}, - process::Command, -}; -use typed_builder::TypedBuilder; -use walkdir::WalkDir; - -fn make() -> Result<()> { - #[cfg(unix)] - Command::new("make").check()?; - #[cfg(windows)] - Command::new("mingw32-make.exe").check()?; - Ok(()) -} - -fn version() -> Result { - let metadata = MetadataCommand::new().exec()?; - let Value::Object(workspace_metadata) = metadata.workspace_metadata else { - bail!("No workspace metadata"); - }; - - let Some(Value::String(version)) = workspace_metadata.get("version") else { - bail!("No version in workspace metadata"); - }; - - Ok(version.to_string()) -} - -fn build_id() -> Result { - let metadata = MetadataCommand::new().exec()?; - let Value::Object(workspace_metadata) = metadata.workspace_metadata else { - bail!("No workspace metadata"); - }; - - let Some(Value::Number(num)) = workspace_metadata.get("build-id") else { - bail!("No build-id in workspace metadata"); - }; - - num.as_i64() - .map(|i| i as isize) - .ok_or_else(|| anyhow!("build-id is not an integer")) -} - -fn current_crate() -> Result { - let metadata = MetadataCommand::new().exec()?; - Ok(metadata - .workspace_root - .file_name() - .ok_or_else(|| anyhow!("No file name"))? - .to_string()) -} - -fn recursive_directory_listing

(directory: P) -> Vec -where - P: AsRef, -{ - WalkDir::new(directory.as_ref()) - .into_iter() - .filter_map(|p| p.ok()) - .map(|p| p.path().to_path_buf()) - .filter(|p| p.is_file()) - .collect::>() -} - -#[derive(TypedBuilder, Debug)] -struct PackagesList { - #[builder(setter(into))] - dist: String, - #[builder(setter(into))] - name: String, - #[builder(default, setter(strip_option, into))] - package_number: Option, - #[builder(default = false)] - disabled: bool, - #[builder(setter(into))] - description: String, - #[builder(default, setter(strip_option, into))] - bin_encryption_key: Option, - #[builder(default, setter(into))] - owners: Vec, - #[builder(default, setter(into))] - access_labels: Vec, - #[builder(default, setter(into))] - hosts: Vec, - #[builder(default, setter(into))] - make: Vec, - #[builder(default, setter(strip_option, into))] - doc_title: Option, - #[builder(default, setter(into))] - refman_localfiles: Vec, - #[builder(default, setter(strip_option, into))] - comment: Option, - #[builder(default = false)] - include_refmanual: bool, - #[builder(default = false)] - include_release_notes: bool, - #[builder(setter(into))] - confidentiality: String, - #[builder(default, setter(into))] - ip_plans: Vec, - #[builder(default, setter(into))] - data: Vec, - #[builder(default, setter(into))] - groups: Vec, -} - -impl ToString for PackagesList { - fn to_string(&self) -> String { - let mut list = format!("Dist: {}\nName: {}\n", self.dist, self.name); - list += &self - .package_number - .map(|n| format!("Package-number: {}\n", n)) - .unwrap_or_default(); - list += self - .disabled - .then_some("Disabled: Yes\n") - .unwrap_or_default(); - list += &format!("Description: {}\n", self.description); - list += &self - .bin_encryption_key - .as_ref() - .map(|b| format!("Bin-encryption-key: {}", b)) - .unwrap_or_default(); - list += &(!self.owners.is_empty()) - .then_some(format!("Owners: {}\n", self.owners.join(", "))) - .unwrap_or_default(); - list += &(!self.access_labels.is_empty()) - .then_some(format!( - "Access-labels: {}\n", - self.access_labels.join(", ") - )) - .unwrap_or_default(); - list += &(!self.hosts.is_empty()) - .then_some(format!("Hosts: {}\n", self.hosts.join(" "))) - .unwrap_or_default(); - list += &(!self.make.is_empty()) - .then_some(format!("Make: {}\n", self.make.join(", "))) - .unwrap_or_default(); - list += &self - .doc_title - .as_ref() - .map(|t| format!("Doc-title: {}\n", t)) - .unwrap_or_default(); - list += &(!self.refman_localfiles.is_empty()) - .then_some(format!( - "Refman-localfiles: {}\n", - self.refman_localfiles.join(", ") - )) - .unwrap_or_default(); - list += &self - .comment - .as_ref() - .map(|c| format!("Comment: {}\n", c)) - .unwrap_or_default(); - list += self - .include_refmanual - .then_some("Include-refmanual: Yes\n") - .unwrap_or_default(); - list += self - .include_release_notes - .then_some("Include-release-notes: Yes\n") - .unwrap_or_default(); - list += &format!("Confidentiality: {}\n", self.confidentiality); - list += &(!self.ip_plans.is_empty()) - .then_some(format!("IP-plans: {}\n", self.ip_plans.join(", "))) - .unwrap_or_default(); - list += &self - .data - .iter() - .map(|d| format!(" {}", d)) - .collect::>() - .join("\n"); - list += "\n\n"; - list += &self - .groups - .iter() - .map(|g| g.to_string()) - .collect::>() - .join("\n\n"); - list - } -} - -#[derive(TypedBuilder, Debug)] -struct PackagesListGroup { - #[builder(setter(into))] - group: String, - #[builder(default, setter(into))] - hosts: Vec, - #[builder(default, setter(into))] - make: Vec, - #[builder(default, setter(into))] - doc_make: Vec, - #[builder(default, setter(into))] - doc_formats: Vec, - #[builder(default, setter(into))] - require_tokens: Vec, - #[builder(default, setter(strip_option, into))] - directory: Option, - #[builder(default, setter(into))] - data: Vec, -} - -impl ToString for PackagesListGroup { - fn to_string(&self) -> String { - let mut group = format!("Group: {}\n", self.group); - group += &(!self.hosts.is_empty()) - .then_some(format!("Hosts: {}\n", self.hosts.join(" "))) - .unwrap_or_default(); - group += &(!self.make.is_empty()) - .then_some(format!("Make: {}\n", self.make.join(", "))) - .unwrap_or_default(); - group += &(!self.doc_make.is_empty()) - .then_some(format!("Doc-make: {}\n", self.doc_make.join(", "))) - .unwrap_or_default(); - group += &(!self.doc_formats.is_empty()) - .then_some(format!("Doc-formats: {}\n", self.doc_formats.join(", "))) - .unwrap_or_default(); - group += &(!self.require_tokens.is_empty()) - .then_some(format!( - "Require-tokens: {}\n", - self.require_tokens.join(", ") - )) - .unwrap_or_default(); - group += &self - .directory - .as_ref() - .map(|d| format!("Directory: {}\n", d)) - .unwrap_or_default(); - group += &self - .data - .iter() - .map(|d| format!(" {}", d)) - .collect::>() - .join("\n"); - group - } -} - -impl PackagesListGroup { - pub fn group_ref(&self) -> String { - format!("@{}", self.group) - } -} - -fn generate_packages_list

(directory: P) -> Result -where - P: AsRef, -{ - // Src has no dependencies - let src_group = PackagesListGroup::builder() - .group("src") - .data( - recursive_directory_listing( - directory.as_ref().join("modules").join("tsffs").join("src"), - ) - .iter() - .filter_map(|p| { - p.strip_prefix(directory.as_ref()) - .map(|p| p.to_path_buf()) - .ok() - }) - .map(|p| p.to_string_lossy().to_string()) - .collect::>(), - ) - .build(); - - // The module depends on the module src (of course) - let tsffs_group = PackagesListGroup::builder() - .group("tsffs") - .make(["tsffs".to_string()]) - .data([ - "$(HOST)/lib/tsffs$(SO)".to_string(), - src_group.group_ref(), - "modules/tsffs/Makefile".to_string(), - ]) - .build(); - - // The interface src is generated by the tsffs build process - let tsffs_interface_src_group = PackagesListGroup::builder() - .group("tsffs-interface-src") - .make(["tsffs".to_string()]) - .data([ - "modules/tsffs-interface/Makefile".to_string(), - "modules/tsffs-interface/tsffs-interface.dml".to_string(), - "modules/tsffs-interface/tsffs-interface.h".to_string(), - ]) - .build(); - - // The interface depends on the interface src - let tsffs_interface_group = PackagesListGroup::builder() - .group("tsffs-interface") - .make(["tsffs-interface".to_string()]) - .data([ - "$(HOST)/lib/tsffs-interface$(SO)".to_string(), - tsffs_interface_src_group.group_ref(), - ]) - .build(); - - let tl_data = vec![tsffs_group.group_ref(), tsffs_interface_group.group_ref()]; - - let groups = vec![ - src_group, - tsffs_group, - tsffs_interface_src_group, - tsffs_interface_group, - ]; - - let packages_list = PackagesList::builder() - .dist("TSFFS") - .name("TSFFS Fuzzer") - .package_number(31337) - .owners(["rhart".to_string()]) - .access_labels(["external-intel".to_string()]) - .hosts(["linux64".to_string(), "win64".to_string()]) - .doc_title("TSFFS Fuzzer") - .comment("TSFFS: Target Software Fuzzer For SIMICS") - .description("TSFFS: Target Software Fuzzer For SIMICS") - .confidentiality("Public") - .data(tl_data) - .groups(groups) - .build(); - - Ok(packages_list) -} - -/// Implements the Schema for package-specs.json -/// { -/// "$schema": "https://json-schema.org/draft/2020-12/schema", -/// "type": "array", -/// "title": "Simics Package Specification file", -/// "items": { -/// "type": "object", -/// "required": [ -/// "package-name", "package-number", "name", "description", -/// "host", "version", "build-id", "build-id-namespace", -/// "confidentiality", "files" -/// ], -/// "properties": { -/// "package-name": { -/// "type": "string" -/// }, -/// "package-number": { -/// "anyOf": [{"type": "integer"}, {"type": "null"}] -/// }, -/// "name": { -/// "type": "string" -/// }, -/// "description": { -/// "type": "string" -/// }, -/// "host": { -/// "type": "string" -/// }, -/// "version": { -/// "type": "string" -/// }, -/// "build-id": { -/// "type": "integer" -/// }, -/// "build-id-namespace": { -/// "type": "string" -/// }, -/// "confidentiality": { -/// "type": "string" -/// }, -/// "files": { -/// "type": "object", -/// "patternProperties": { -/// "^[^\\:]*/$": { -/// "type": "object", -/// "properties": { -/// "source-directory": { -/// "type": "string" -/// }, -/// "file-list": { -/// "type": "string" -/// }, -/// "suffixes": { -/// "type": "array", -/// "items": { -/// "type": "string" -/// } -/// } -/// } -/// }, -/// "^[^\\:]*[^/]$": { -/// "type": "string" -/// } -/// } -/// }, -/// "type": { -/// "enum": ["addon", "base"] -/// }, -/// "disabled": { -/// "type": "boolean" -/// }, -/// "doc-title": { -/// "anyOf": [{"type": "string"}, {"type": "null"}] -/// }, -/// "make-targets": { -/// "type": "array", -/// "items": { -/// "type": "string" -/// } -/// } -/// } -/// } -/// } -#[derive(Debug, Clone, Serialize, Deserialize)] -pub struct PackageSpec { - #[serde(rename = "package-name")] - package_name: String, - #[serde(rename = "package-name-full")] - package_name_full: String, - #[serde(rename = "package-number")] - package_number: Option, - name: String, - description: String, - host: String, - version: String, - #[serde(rename = "build-id")] - build_id: isize, - #[serde(rename = "build-id-namespace")] - build_id_namespace: String, - confidentiality: String, - files: HashMap, - #[serde(rename = "type")] - // NOTE: Either "addon" or "base" -- convert to enum - typ: String, - disabled: bool, - #[serde(rename = "doc-title")] - doc_title: Option, - #[serde(rename = "make-targets")] - make_targets: Vec, - #[serde(rename = "include-release-notes")] - include_release_notes: bool, - #[serde(rename = "ip-plans")] - ip_plans: Vec, - #[serde(rename = "legacy-doc-make-targets")] - legacy_doc_make_targets: Vec, - #[serde(rename = "release-notes")] - release_notes: Vec, - #[serde(rename = "access-labels")] - access_labels: Vec, -} - -#[derive(Debug, Clone, Serialize, Deserialize)] -pub struct PackageSpecs(Vec); - -impl TryFrom for PackageSpecs { - type Error = Error; - - fn try_from(value: PackagesList) -> Result { - let version = version()?; - let build_id_namespace = current_crate()?; - let build_id = build_id()?; - let files = value - .groups - .iter() - .map(|g| g.data.clone()) - .flatten() - .collect::>(); - let make_targets = value - .groups - .iter() - .map(|g| g.make.clone()) - .flatten() - .collect::>(); - Ok(Self( - value - .hosts - .iter() - .map(|h| { - let package_name_full = format!("{}-{}", value.dist, h); - let files = files - .iter() - .map(|f| { - f.replace("$(HOST)", h) - .replace("$(SO)", if h == "linux64" { ".so" } else { ".dll" }) - }) - .filter_map(|f| match PathBuf::from(".").join(&f).canonicalize() { - Ok(fc) => Some((f.clone(), fc.to_string_lossy().to_string())), - Err(_) => None, - }) - .chain(once(( - format!("{}/lib/{}.modcache", h, package_name_full), - PathBuf::from(".") - .canonicalize() - .unwrap_or_else(|_| panic!("Failed to canonicalize modcache path")) - .join(format!("{}/lib/{}.modcache", h, package_name_full)) - .to_string_lossy() - .to_string(), - ))) - .collect::>(); - PackageSpec { - name: value.name.clone(), - package_name: value.dist.clone(), - package_name_full: package_name_full, - package_number: value.package_number.map(|pn| pn as isize), - disabled: value.disabled, - description: value.description.clone(), - host: h.clone(), - version: version.clone(), - build_id: build_id.clone(), - build_id_namespace: build_id_namespace.clone(), - confidentiality: value.confidentiality.clone(), - files: files.clone(), - typ: "addon".to_string(), - doc_title: value.doc_title.clone(), - make_targets: make_targets.clone(), - include_release_notes: value.include_release_notes, - ip_plans: value.ip_plans.clone(), - legacy_doc_make_targets: vec![], - release_notes: vec![], - access_labels: value.access_labels.clone(), - } - }) - .collect(), - )) - } -} - -fn create_package_specs(packages_list: PackagesList) -> Result<()> { - // NOTE: On systems with doc-and-packaging available, this will work, but since end users - // do not have access to this package, we do this ourselves. - // Command::new(directory.as_ref().join("bin").join("create-package-specs")) - // .arg("-o") - // .arg("linux64/package-specs.json") - // .arg("config/dist") - // .check()?; - let package_spec: PackageSpecs = packages_list.try_into()?; - #[cfg(unix)] - { - create_dir_all("linux64")?; - write( - &PathBuf::from("linux64/package-specs.json"), - to_string(&package_spec)?.as_bytes(), - )?; - } - #[cfg(windows)] - { - create_dir_all("win64")?; - write( - &PathBuf::from("win64/package-specs.json"), - to_string(&package_spec)?.as_bytes(), - )?; - } - Ok(()) -} - -fn create_modcache

(directory: P) -> Result<()> -where - P: AsRef, -{ - #[cfg(unix)] - Command::new(directory.as_ref().join("bin").join("create-modcache")) - .arg("-p") - .arg("linux64/package-specs.json") - .check()?; - - #[cfg(windows)] - Command::new(directory.as_ref().join("bin").join("create-modcache.bat")) - .arg("-p") - .arg("win64/package-specs.json") - .check()?; - Ok(()) -} - -fn create_packages

(directory: P) -> Result<()> -where - P: AsRef, -{ - #[cfg(unix)] - Command::new(directory.as_ref().join("bin").join("create-packages")) - .arg("--package-specs") - .arg("linux64/package-specs.json") - .arg("-o") - .arg("linux64/packages") - .arg("31337") - .check()?; - #[cfg(windows)] - Command::new(directory.as_ref().join("bin").join("create-packages.bat")) - .arg("--package-specs") - .arg("win64/package-specs.json") - .arg("-o") - .arg("win64/packages") - .arg("31337") - .check()?; - Ok(()) -} - -fn main() -> Result<()> { - let current_dir = current_dir()?; - - if !current_dir.join("build.rs").is_file() { - bail!("build.rs must be run from the package root like ./build.rs"); - } - - make()?; - make()?; - let packages_list_path = current_dir - .join("config") - .join("dist") - .join("packages.list"); - let packages_list = generate_packages_list(¤t_dir)?; - write(&packages_list_path, packages_list.to_string())?; - create_package_specs(packages_list)?; - create_modcache(¤t_dir)?; - create_packages(¤t_dir)?; - - Ok(()) +fn main() { + println!("cargo:rerun-if-env-changed={SIMICS_BASE_ENV}"); + simics_build_utils::emit_cfg_directives().expect("Failed to emit cfg directives"); + simics_build_utils::emit_link_info().expect("Failed to emit link info"); } diff --git a/config/dist/README b/config/dist/README deleted file mode 100644 index c970683b..00000000 --- a/config/dist/README +++ /dev/null @@ -1,442 +0,0 @@ -Note -______________________________________________________________________ - -Starting with the 4.8 release the way source files are distributed -changed. The background for this is to make it easier for both us and -customers. From Simics 6, source and binary files are treated the same without -any special key for extracting source files. At the same time it should be -easy for Simics Engineers to see who can get access to a particular -group of files, hence each group will have to specify an access label -('Require-tokens'). - -Each group that contains files should provide the 'Require-tokens' to -state the access restriction to that particular group. This is not -needed for groups only including other groups, neither for macro -groups (as they are expanded to files in the group where they are -used). Supported values for the 'Require-tokens' should be added and -documented to a tokens file, such as config/dist/tokens. - -Groups can be defined in .list files. And it is possible to define and use -groups in MODULEINFO files as well, for example one group for source files -and one for binary files. MODULEINFO files are located in the same folder as -modules, extensions, etc., such as src/devices/{name}/MODULEINFO. Such a -file should just include files required by that module. - -In order to convert a group to the new format you may have to create a new -group for the source code if the source code should not be as public as the -binaries. - -During a transition period it will be possible to break some rules. -Groups only including binary files (that is files not located under -%simics%/src or specially tagged as binary) can be white listed in the -'whitelist.txt' file in this directory. It will then pass the policy checker -even if it does not provide a 'Require-tokens' property. This is not possible -for packages containing source code. The reason for that is to prevent source -files to be accidentally provided to a customer with access to the package and -a model builder license, but not the former source package. Such source code -must instead be commented out, manually checked before being distributed, and -added to groups which require appropriate tokens. - -Format ----------------------------------------------------------------------- - -The input to the dist scripts consists of a series of records, in one -or more text files. The scripts are given one or more directories as -command-line arguments, and will parse all *.list files in them. - -Order among the records does not matter. Horisontal space does not -matter, except (1) where needed to separate words and (2) in the -beginning of data lines. Records are separated by blank lines. -Everything following a "#" is ignored. - -Each record starts with a Dist or Group header, followed by -zero or more additional headers, followed by zero or more data lines. -Data lines _must_ begin with whitespace. - -A header line ending with a comma is continued on the next line: - - Foo-header: foo-value-1, foo-value-2, # ends in comma - foo-value-3 # this belongs to Foo-header too - - -Structure ----------------------------------------------------------------------- - -A group record defines a set of files or groups. It is used to group -files that should be distributed together. For example, one could -define a group for all the files that make up a device, and a group -for all the files that make up a target machine. The group for the -target machine should list the groups for the devices it uses, rather -than listing all their files directly. - -A dist record consists of a set of groups (and some metadata). For -each dist, the build system will make one package per host, containing -the files specified by the groups. - - -Access-label record ----------------------------------------------------------------------- - -Headers: - - Access-label: identifier - - Comment: - - Free text comment describing the label and its uses - - Includes: (optional) - - List of access-label identifiers that are included when setting this label - - Provide-tokens: (optional) - - Comma-separated list of security tokens that this label provides. - See Require-tokens - -Group record ----------------------------------------------------------------------- - -Headers: - - Group: identifier - - Hosts: (optional) - - Space-separated platform list. See the "Platform specifications" section. - - Make: (optional) - - Comma-separated list of make targets sufficient to build the files - specified by this group. - - Doc-make: (optional) - - Comma-separated list of documentation make targets sufficient to - build the documentation files specified by this group. - - Doc-formats: (optional) - - Comma-separated list of documentation formats to build the documentation - specified in Doc-make. Defaults to "text,neu". - - Require-tokens: (optional) - - Comma-separated list of security tokens a dist must provide - (via its access labels) in order to be allowed to include this group. - If the provided tokens don't match the required tokens exactly, the system - will cry bloody murder and refuse to continue. - - Required tokens should be the most restrictive that applies to that - group; including groups are tainted by their child groups. - - Tokens are required if the group includes any kind of files, or if the - group includes any macros. However, a macro cannot set the 'Require-tokens' - since the actual content will likely depend on how the macro is - used. Groups that only include other groups do not require any tokens. - - Directory: (optional) - - A directory that contains files to distribute. - You have to specify both the directory and the file in the directory that - lists the file to distribute on the form `/[]`. The - file list file should be a json file containing a list with directory - relative paths to the files in the directory to package. This is used by - documentation in html format, where the set of files generated during build - is not known in advance. - -Data: - - @group-identifier - - A group identifier prefixed by an @ sign means that the current - group pulls in all files specified by the named group. - - filename - - A filename simply names a file to be included by the group. The - filename may contain variable names inside $(), such as "$(SO)"; - these will be expanded according to the platform they are packaged - for. - - The filename may contain a bracketed prefix, such as - "[linux64/]lib/foo". This means that the file is interpreted as - "linux64/lib/foo" in the source tree, but appears as "lib/foo" in - the package. The bracketed prefix may recursively contain a - bracketed prefix. - - Absolute paths and .. path components may only appear within a - bracketed prefix. - - Each group or filename may be prefixed by a comma-separated tag - list, enclosed in parentheses. See the "Tags" section. - - -Link record ----------------------------------------------------------------------- - -Headers: - - Link: identifier - Link-name: name shown in the start menu (or equivalent) - Link-args: arguments passed when executing the link - Link-wdir: working directory used to execute the link - Link-target: file pointed at by the link - - See also group, as Link behaves as a group otherwise. - -Data: - See also group, as Link behaves as a group otherwise. - -Note that Link should normally not be used directly. You can use the template -shortcut-and-file(file, name, args, wdir) that will include the file that is -pointed at and the link definition. - -If you use Link directly, be aware that the file that is pointed at is expected -to be included in the data part of the link, either directly or in a sub-group. - -Link is currently implemented only for Windows shortcuts, and as such exposes -some of the internal behind our Windows packaging. For example, the name of the -file will be used as-is, so it may include Wix specific templates such as -[SimicsMenuFolder] or others. - -Dist record ----------------------------------------------------------------------- - -Headers: - - Dist: identifier - Name: pretty name - Package-number: integer (optional) - Disabled: Yes|No (optional, defaults to No) - - Description: - - A description of the package. - - Bin-encryption-key: (optional) - - The 64-digit hexadecimal key used to encrypt and decrypt packages - based on this dist. - - Owners: - - Comma-separated list of the person(s) responsible for this dist. - - Access-labels: - - Comma-separated list of access-label identifiers that apply for this - distribution. - - Hosts: (optional) - - Same as for group records. - - Make: (optional) - - Same as for group records. - - Doc-title: (optional) - - The human-readable name of this dist in the documentation. - May include spaces. - - Refman-localfiles: (optional) - - List of extra source files to scan for documentation to include in - this dist's reference manual. - - Comment: (optional) - - Free text comment describing the package. - - Include-refmanual: Yes|No (optional, defaults to No) - - Says if the package includes the Reference manual. - - Include-release-notes: Yes|No (optional, defaults to No) - - Says if the package includes the Release Notes. - - Confidentiality: Public|Intel-Confidential|Top-Secret - - Defines the confidentiality level for this dist. This determines - which access labels can be used with this dist, as well as which - groups are allowed to be included, based on their required tokens. - See the tests in t361 for more details. - - IP-plans: (optional for internal packages) - - Comma-separated list of Protex project identifiers that map to the - IP plans for this distribution. An IP plan is required if the package - has an Access-Label that marks it as being uploaded externally. - The Protex project identifiers must be included in the list - in config/protex/projects. - -Data: - - Same as for group records. However, a dist cannot include files or - macros since the dist cannot both provide and require tokens at the - same time. The simplest way is to make the dist include a single - group, e.g. @Foo-Bar-package-content. - - -Common-release-notes ----------------------------------------------------------------------- - -The Common-release-notes record is used to add release notes source -files to all Dist groups. You can specify this record multiple -times. The set of common release notes will be the union of the -release notes from all Common-release-notes records. - -Headers: - - Common-release-notes: - Set of common release note files to include in every Dist. Same - format as Release-notes headers in Groups and Dists. - -Data: - No data. - - -Macro groups ----------------------------------------------------------------------- - -A group name may end with a comma-separated list of parameter names -enclosed in parentheses, like this: "foo(x,y)". In the rest of the -group definition, parameter names enclosed in curly braces will be -replaced by the corresponding parameter values. If the parameter name -is followed by a colon and an underscore, dashes in the value are -replaced by underscores. For example, a macro group for processors -could be defined like this: - - Group: cpu(name) - Make: {name} - $(HOST)/lib/{name}$(SO) - @module_load({name}) - -In other groups, you would include instances of the macro group like -this: - - @cpu(ppc750) - -Note: When calling or defining a macro with more than one parameter, -make sure to not have any separating whitespace: - - @foo(47,11) - - -Platform specifications ----------------------------------------------------------------------- - -Platform specifications can occur in Group and Dist declarations after -the Hosts: keyword, and in brackets before each included file or group: - - Group: somegroup - Hosts: - () file.txt - () @some_other_group - -Allowed platform values: - linux64, win64 (concrete values) - windows (win64), linux (linux64) - -Multiple platforms are space-separated, meaning the union of the platforms. -Example: - - Group: group1 - file1 - (win64) file2 - (linux64 win64) file3 - (linux) file4 - -which results in the inclusion of the files on the following platforms: - - file1 on all platforms (linux64 win64) - file2 on win64 - file3 on linux64 and win64 - file4 on linux64 - -If each platform is prefixed with a minus sign, it means its complement: - - Group: group2 - (-win64) file5 - (-linux) file6 - -which results in: - - file5 on linux64 - file6 on win64 - -Platform specifications on containing Group and Dist declarations -will each constrain the contained files: - - Dist: dist1 - Hosts: -linux64 - ... - (-win64) @group3 - - Group: group3 - Hosts: linux64 win64 - file7 - (linux) file8 - -which results in these files being included in dist1: - - file7 on win64 only - file8 not at all - - -Writing guidelines ----------------------------------------------------------------------- - -Try to put each file in at most one group. (This may be enforced in a -later version of the parser.) - -The general idea of groups is that related files, such as devices and target -machines, should have their own groups, and depend on all the other necessary -groups. Each group that includes files or macros should be written in a way -that it only contains files with the same (legal) classification. In this ideal -world, extending a package with the group for a target machine will -automatically pull in all devices and such that are needed to run the target -machine, but it will also make it easy to track what can and cannot be shipped -to a specific customer. - - -Cool tools ----------------------------------------------------------------------- - -To get a nice list of our packages, with package numbers, encryption -keys, and version, simply run - - $ python scripts/dist/list_distributions.py config/dist - -If you want to do more than just watch, export.py is for you. It will -copy the files specified in one or more dists or groups from your -build tree to a new directory. This is very useful when changing a -package, since you can simply export the updated version and test it -for completeness etc. right away, without having to wait for the -nightly build. - -This example will export the contents of the Simics-Base-linux64 package -to the directory foo: - - $ python scripts/dist/export.py --host=linux64 --destination=foo \ - --export=Simics-Base config/dist - -You will get a warning if not all files were available in your build -tree; the script will also helpfully print the set of maketargets -Moneypenny would use to build the stuff in this package. - -If you are feeling ambitious in your package testing, you might even -start from a clean tree, build only the stuff specified in this list, -and see if the export script still complained about missing files. - -So much for testing a single package. If you want to see what a change -in config/dist/*.list does to all packages, just say - - $ python scripts/dist/package_contents.py config/dist - -which will give you a complete content list of all packages. Diffing -this list from before and after your change will show you what would -happen. diff --git a/config/dist/access-labels.list b/config/dist/access-labels.list deleted file mode 100644 index fc501aff..00000000 --- a/config/dist/access-labels.list +++ /dev/null @@ -1,3 +0,0 @@ -Access-Label: external-intel -Comment: Uploaded to Intel, external delivery allowed -Provide-tokens: public \ No newline at end of file diff --git a/config/dist/macros.list b/config/dist/macros.list deleted file mode 100644 index 7f2847aa..00000000 --- a/config/dist/macros.list +++ /dev/null @@ -1,122 +0,0 @@ -# A bunch of macros used to simplify shortcut and documentation inclusion in -# packages: -# -# The high-level ones are probably the ones you are interested in: -# * doc() -# * doc-files() - -Main-version: 6 - -# Start-menu (or equivalent) shortcut that includes the it -# points at, the of the shortcut, the arguments used to execute -# and the working directory when executing it. -Link: shortcut-and-file(file, name, args, wdir) -Link-name: {name} -Link-args: {args} -Link-wdir: {wdir} -Link-target: {file} - {file} - -# Start-menu (or equivalent) shortcut that includes the it -# points at, the of the shortcut, the arguments used to execute -# and the working directory when executing it and a custom . -Link: shortcut-and-file-with-icon(file, name, args, wdir, icon) -Link-name: {name} -Link-args: {args} -Link-wdir: {wdir} -Link-target: {file} -Link-icon: {icon} - {file} - -# All documentation formats corresponding to the document -Group: doc-files(name) -Directory: $(HOST)/doc/html/{name}/[filelist.json] -Directory-Suffixes: .css, .js, .html, .png, .json, .svg - -Group: doc-files-pdf-only(name) - [$(HOST)/]doc/{name}.pdf - -# same as doc-files(), but with shortcutname for backward compatibility -Group: doc-files-and-shortcut(name,shortcutname) - @doc-files({name}) - -# Generic template for a reference manual in all formats and its start menu shortcut -Group: refmanual(name, dname) -Doc-make: refmanual-{name} - @doc-files(reference-manual-{name}) - -Group: online-release-notes(name) -Doc-make: rn-online -# dummy format -Doc-formats: neu - $(HOST)/doc/{name}.rndata - -# generic template for a release-notes document in all formats and its -# start menu shortcut -Group: release-notes(name) -Doc-make: rn-{name} -Doc-formats: text,html - [$(HOST)/doc/]RELEASENOTES-{name}.html - [$(HOST)/doc/RELEASENOTES-{name}.text/]RELEASENOTES-{name}$(TXT) - @doc-files(RELEASENOTES-{name}) - @online-release-notes({name}) - -# distribute a file as-is on unix, and with DOS-style newlines and a -# .txt suffix on Windows -Group: text-file(path) -Doc-make: txt-files - (-windows) {path} - (+windows) [$(HOST)/doc/txt-files/]{path}.txt - -# generic template for a target guide in all formats and its start menu shortcut -Group: targetguide(name, dname) -Doc-make: targetguide-{name} - @doc-files(target-guide-{name}) - -# Same as doc-files, but including the makefile rule to build the document -Group: doc(name) -Doc-make: {name} - @doc-files({name}) - -# Same as doc(), shortcut for backward compatibility -Group: doc-and-shortcut(name,shortcutname) -Doc-make: {name} - @doc-files({name}) - -Group: doc-pdf-only(name) -Doc-formats: pdf -Doc-make: {name} - @doc-files-pdf-only({name}) - -Group: doc-md(name) -Make: doc/{name} -Directory: $(HOST)/doc/html/{name}/[filelist.json] -Directory-Suffixes: .css, .js, .html, .png, .json, .svg - -Group: module_load(name) - $(HOST)/lib/python-py3/simmod/{name}/module_load.py - -Group: simics_start(name) - @module_py({name}/simics_start) - -Group: module_py(filename) - $(HOST)/lib/python-py3/simmod/{filename}.py - -Group: module_load_py(name) - $(HOST)/lib/python-py3/simmod/{name}/module_load.py - -Group: simics_start_py(name) - @module_py({name}/simics_start) - -Group: interface_module(filename) - $(HOST)/lib/{filename}$(SO) - -Group: core-build(f) - (+win64) win64/{f} - (+linux64) linux64/{f} - -# Use this to distribute .py files -# Do not distribute separate .py source -Group: core-py(f) - (+win64) win64/{f}.py - (+linux64) linux64/{f}.py diff --git a/config/dist/released-6.version b/config/dist/released-6.version deleted file mode 100644 index fb6372fe..00000000 --- a/config/dist/released-6.version +++ /dev/null @@ -1,11 +0,0 @@ -# This is a list of released versions of packages. Given this list of -# all released versions of a package, we can compute what the next -# version is going to be. -# -# The columns are: package-number, version, build-id. For example, -# "4711 3.2.1" 1501. -# -# Blank lines are ignored. Everything between a hash and end-of-line -# is ignored. - -31337 0.1.0 1 \ No newline at end of file diff --git a/config/dist/tokens b/config/dist/tokens deleted file mode 100644 index 15196b74..00000000 --- a/config/dist/tokens +++ /dev/null @@ -1,13 +0,0 @@ -# Tokens that a group can specify as 'required' and a dist-group can -# specify as 'provided'. -# -# NOTE: When creating a token, also give a clear description about -# restrictions and intended recipients. -# -# Example of how to run the policy.py test script with this file: -# [simics-base]/bin/minipython [pkg-6007]/scripts/dist/policy.py \ -# config/dist/ --token-file=config/dist/tokens - - -GROUP_TOKENS: -public diff --git a/docs/book.toml b/docs/book.toml index 6f6cdf27..35041e3a 100644 --- a/docs/book.toml +++ b/docs/book.toml @@ -1,3 +1,6 @@ +# Copyright (C) 2024 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + [book] authors = ["novafacing"] language = "en" diff --git a/docs/images/demo.cast b/docs/images/demo.cast index bea258bf..ef1c1ffa 100644 --- a/docs/images/demo.cast +++ b/docs/images/demo.cast @@ -720,7 +720,7 @@ [231.943197, "o", "c"] [232.073185, "o", "s"] [232.192233, "o", "\r\n\u001b[?2004l\r"] -[232.252548, "o", "\u001b[?1049h\u001b[22;0;0t\u001b[42;1H\u001b[?1h\u001b=\r# Copyright (C) 2023 Intel Corporation\r\n# SPDX-License-Identifier: Apache-2.0\r\n\r\n# Load the TSFFS module. The project has the TSFFS package added to it by the\r\n# ISPM command, this loads the known module into the simulator.\r\nload-module tsffs\r\n\r\n# Create the TSFFS fuzzer object\r\n@tsffs = SIM_create_object(SIM_get_class(\"tsffs\"), \"tsffs\", [])\r\n\r\n# Set the log level for TSFFS to 3 (debug). Set to 4 (trace) or 1 (error) for additional\r\n# debug information or brevity, respectively\r\ntsffs.log-level 3\r\n\r\n# Set to start on magic harness. This is the \"default\" behavior for harnessing.\r\n@tsffs.iface.tsffs.set_start_on_harness(True)\r\n\r\n# Set to stop on magic harness. This is the \"default\" behavior for harnessing.\r\n@tsffs.iface.tsffs.set_stop_on_harness(True)\r\n\r\n# Set a virtual-time timeout of 3 seconds. If the target runs for this amount of time\r\n# without encountering a normal stop or another solution condition, it will be\r\n# considered a timeout.\r\n@tsffs.iface.tsffs.set_timeout(3.0)\r\n\r\n# Set page faults as an exception-type solution. When the CPU raises exception #14, the\r\n# input that caused it will be saved as a solution.\r\n@tsffs.iface.tsffs.add_exception_solution(14)\r\n\r\n# Set to generate a random corpus. This is only used for demonstration purposes.\r\n@tsffs.iface.tsffs.set_generate_random_corpus(True)\r\n\r\n# Public SIMICS uses SIMICS base version 6.0.169, so snapshots are not yet available\r\n@tsffs.iface.tsffs.set_use_snapshots(False)\r\n\r\n# Tokenize our UEFI executable to greatly enhance mutation efficacy\r\n@tsffs.iface.tsffs.tokenize_executable(\"%simics%/test.efi\")\r\n\r\n# Load the UEFI shell target for the QSP-x86 board, using an x86-64 Golden Cove (Sapphire Rapids) processor class\r\n# We set disk0 to the minimal_boot_disk.craff provided, which includes the SimicsAgent.efi app we can use to download\r\n# our target UEFI application.\r\n\u001b[7mfuzz.simics\u001b[27m\u001b[K"] +[232.252548, "o", "\u001b[?1049h\u001b[22;0;0t\u001b[42;1H\u001b[?1h\u001b=\r# Copyright (C) 2024 Intel Corporation\r\n# SPDX-License-Identifier: Apache-2.0\r\n\r\n# Load the TSFFS module. The project has the TSFFS package added to it by the\r\n# ISPM command, this loads the known module into the simulator.\r\nload-module tsffs\r\n\r\n# Create the TSFFS fuzzer object\r\n@tsffs = SIM_create_object(SIM_get_class(\"tsffs\"), \"tsffs\", [])\r\n\r\n# Set the log level for TSFFS to 3 (debug). Set to 4 (trace) or 1 (error) for additional\r\n# debug information or brevity, respectively\r\ntsffs.log-level 3\r\n\r\n# Set to start on magic harness. This is the \"default\" behavior for harnessing.\r\n@tsffs.iface.tsffs.set_start_on_harness(True)\r\n\r\n# Set to stop on magic harness. This is the \"default\" behavior for harnessing.\r\n@tsffs.iface.tsffs.set_stop_on_harness(True)\r\n\r\n# Set a virtual-time timeout of 3 seconds. If the target runs for this amount of time\r\n# without encountering a normal stop or another solution condition, it will be\r\n# considered a timeout.\r\n@tsffs.iface.tsffs.set_timeout(3.0)\r\n\r\n# Set page faults as an exception-type solution. When the CPU raises exception #14, the\r\n# input that caused it will be saved as a solution.\r\n@tsffs.iface.tsffs.add_exception_solution(14)\r\n\r\n# Set to generate a random corpus. This is only used for demonstration purposes.\r\n@tsffs.iface.tsffs.set_generate_random_corpus(True)\r\n\r\n# Public SIMICS uses SIMICS base version 6.0.169, so snapshots are not yet available\r\n@tsffs.iface.tsffs.set_use_snapshots(False)\r\n\r\n# Tokenize our UEFI executable to greatly enhance mutation efficacy\r\n@tsffs.iface.tsffs.tokenize_executable(\"%simics%/test.efi\")\r\n\r\n# Load the UEFI shell target for the QSP-x86 board, using an x86-64 Golden Cove (Sapphire Rapids) processor class\r\n# We set disk0 to the minimal_boot_disk.craff provided, which includes the SimicsAgent.efi app we can use to download\r\n# our target UEFI application.\r\n\u001b[7mfuzz.simics\u001b[27m\u001b[K"] [236.596424, "o", "\r\u001b[Kload-target \"qsp-x86/uefi-shell\" namespace = qsp machine:hardware:storage:disk0:image = \"minimal_boot_disk.craff\" machine:hardware:processor:class = \"x \b:\u001b[K"] [237.196555, "o", "\r\u001b[K86-goldencove-server\"\r\n:\u001b[K"] [237.236912, "o", "\r\u001b[K\r\n:\u001b[K"] @@ -796,7 +796,7 @@ [252.10705, "o", "s"] [252.457975, "o", "\r\n\u001b[?2004l\r"] [252.598811, "o", "\r"] -[252.669243, "o", "Intel Simics 6 (build 6233 linux64) © 2023 Intel Corporation\r\n\r\nUse of this software is subject to appropriate license.\r\nType 'copyright' for details on copyright and 'help' for on-line documentation.\r\n\r\n"] +[252.669243, "o", "Intel Simics 6 (build 6233 linux64) © 2024 Intel Corporation\r\n\r\nUse of this software is subject to appropriate license.\r\nType 'copyright' for details on copyright and 'help' for on-line documentation.\r\n\r\n"] [252.673864, "o", "[sim info] Created class tsffs\r\n"] [252.673959, "o", "[sim info] Registered interface for class tsffs\r\n"] [252.674435, "o", "[tsffs info] set_start_on_harness(true)\r\n[tsffs info] set_stop_on_harness(true)\r\n"] diff --git a/docs/src/config/common-options.md b/docs/src/config/common-options.md index 747994ab..9ae2fd7f 100644 --- a/docs/src/config/common-options.md +++ b/docs/src/config/common-options.md @@ -29,7 +29,7 @@ To set the number of seconds in virtual time until an iteration is considered *t use the following (for example, to set the timeout to 3 seconds): ```python -tsffs.iface.tsffs.set_timeout(3.0) +@tsffs.timeout = 3.0 ``` Note that this timeout is in virtual time, not real time. This means that whether the @@ -49,26 +49,27 @@ tracked condition that will cause the fuzzer to consider an exception (in this e GPF #13) as a solution with: ```python -tsffs.iface.tsffs.add_exception_solution(13) +@tsffs.exceptions = [13] ``` An already-added exception can be removed from the tracked set that are considered solutions with: ```python -tsffs.iface.tsffs.remove_exception_solution(13) +@tsffs.exceptions.remove(13) ``` In addition, if *all* exceptions should be considered as solutions, use: ```python -tsffs.iface.tsffs.set_all_exceptions_are_solutions(True) +@tsffs.all_exceptions_are_solutions = True ``` -Note that this is typically not useful, all exceptions including innocuous exceptions -like timer interrupts will cause solutions. It is mainly useful for embedded models -running short code paths like when fuzzing interrupt handlers themselves, where any -exception occurring is truly an error. +Note that this is typically not useful in practice. With all exceptions set as +solutions, all exceptions including innocuous exceptions like timer interrupts will +cause solutions. It is mainly useful for embedded models running short code paths like +when fuzzing interrupt handlers themselves, where any exception occurring is truly an +error. ### Setting Breakpoint Solutions @@ -87,14 +88,27 @@ Breakpoints have numbers, which you can add and remove from the set of breakpoin the fuzzer treats as solutions with: ```python -tsffs.iface.tsffs.add_breakpoint_solution(bp_number) -tsffs.iface.tsffs.remove_breakpoint_solution(bp_number) +@tsffs.breakpoints = [2] +@tsffs.breakpoints.remove() +``` + +Note that when setting a breakpoint via a Simics command, like: + +```simics +local $bp_number = ($ctx.break -w $BREAK_BUFFER_ADDRESS $BREAK_BUFFER_SIZE) +``` + +The variable `bp_number` can be added to the set of solution breakpoints by accessing +the `simenv` variable, like: + +```python +@tsffs.breakpoints += [simenv.bp_number] ``` If not specifying a breakpoint number, breakpoints can be set as solutions with: ```python -tsffs.iface.tsffs.set_all_breakpoints_are_solutions(True) +@tsffs.all_breakpoints_are_solutions = True ``` This is useful when testing code that is not allowed to write, read, or execute specific @@ -113,7 +127,7 @@ feature is not enabled by default. To use reverse-execution micro-checkpoints instead, use: ```python -tsffs.iface.tsffs.set_use_snapshots(False) +@tsffs.use_snapshots = False ``` Micro-checkpoints cannot be used by when compiling the module against versions of SIMICS @@ -129,7 +143,7 @@ values that are compared against during execution and uses them to mutate the in Comparison logging is enabled by default. It can be disabled with: ```python -tsffs.iface.tsffs.set_cmplog_enabled(False) +@tsffs.cmplog = False ``` ### Set Corpus and Solutions Directory @@ -141,14 +155,15 @@ Initial test cases should be placed in this directory. The directory test cases are taken from and written to can be changed with: ```python -tsffs.iface.tsffs.set_corpus_directory("%simics%/other_corpus_directory") +@tsffs.corpus_directory = SIM_lookup_file("%simics%/other_corpus_directory") ``` -Likewise, the directory solutions are saved to can be changed with: +Note the directory must exist. Likewise, the directory solutions are saved to can be +changed with: ```python -tsffs.iface.tsffs.set_solutions_directory("%simics%/other_solutions_directory") +tsffs.solutions_directory = SIM_lookup_file("%simics%/other_solutions_directory") ``` ### Enable Random Corpus Generation @@ -164,7 +179,7 @@ API](#set-corpus-and-solutions-directory)). This can be enabled with: ```python -tsffs.iface.tsffs.set_generate_random_corpus(True) +@tsffs.generate_random_corpus = True ``` ### Set an Iteration Limit @@ -173,7 +188,7 @@ The fuzzer can be set to execute only a specific number of iterations before exi This is useful for CI fuzzing or for testing. The limit can be set with: ```python -tsffs.iface.tsffs.set_iterations(1000) +@tsffs.iteration_limit = 1000 ``` ### Adding Tokens From Target Software @@ -190,16 +205,18 @@ applications) or ELF (i.e. unpacked kernel images or Linux applications). To add tokens from an executable file: ```python -tsffs.iface.tsffs.tokenize_executable("%simics%/test.efi") +@tsffs.token_executables += [SIM_lookup_file("%simics%/test.efi")] ``` Tokens from source files are extracted in a best-effort language-independent way. Multiple source files can be added. ```python -tsffs.iface.tsffs.tokenize_executable("/home/user/source/test.c") -tsffs.iface.tsffs.tokenize_executable("/home/user/source/test_lib.c") -tsffs.iface.tsffs.tokenize_executable("/home/user/source/test.h") +@tsffs.token_src_files += [ + "/home/user/source/test.c", + "/home/user/source/test_lib.c", + "/home/user/source/test.h" +] ``` Dictionary files are given in the same format as AFL and LibFuzzer: @@ -218,7 +235,7 @@ more accurately than the built-in executable tokenizer using some existing tools Once created, the tokens from these dictionaries can be added to the fuzzer with: ```python -tsffs.iface.tsffs.add_token_file("%simics%/token-file.txt") +@tsffs.token_files += [SIM_lookup_file("%simics%/token-file.txt")] ``` ### Setting an Architecture Hint @@ -232,7 +249,7 @@ running `i386` code in backward-compatibility mode. An architecture hint can be set with: ```python -tsffs.iface.tsffs.add_architecture_hint(qsp.mb.cpu0.core[0][0], "i386") +@tsffs.iface.tsffs.add_architecture_hint(qsp.mb.cpu0.core[0][0], "i386") ``` ### Adding a Trace Processor @@ -242,5 +259,5 @@ to the [manual start API](../harnessing/closed-box.md) is traced during executio code running on multiple cores, the additional cores can be added with: ```python -tsffs.iface.tsffs.add_trace_processor(qsp.mb.cpu0.core[0][1]) +@tsffs.iface.tsffs.add_trace_processor(qsp.mb.cpu0.core[0][1]) ``` \ No newline at end of file diff --git a/docs/src/config/installing-in-projects.md b/docs/src/config/installing-in-projects.md index 76ef2b39..f9dff406 100644 --- a/docs/src/config/installing-in-projects.md +++ b/docs/src/config/installing-in-projects.md @@ -6,10 +6,11 @@ the [Linux](../setup/linux.md#build-tsffs) and when creating projects. - [Installing In Projects](#installing-in-projects) - - [In New Projects](#in-new-projects) + - [In New Projects Using ISPM](#in-new-projects-using-ispm) - [In Existing Projects](#in-existing-projects) + - [In Projects Which Do Not Use ISPM](#in-projects-which-do-not-use-ispm) -## In New Projects +## In New Projects Using ISPM Projects are created using `ispm` (Intel Simics Package Manager). The command below would create a project with packages numbered 1000 (SIMICS Base), 2096 (Quick Start @@ -49,4 +50,54 @@ You can obtain your latest installed version with: ```sh ispm packages --list-installed --json | jq -r '[ .installedPackages[] | select(.pkgNumber == 31337) ] | ([ .[].version ] | max_by(split(".") | map(tonumber))) as $m | first(first(.[]|select(.version == $m)).paths[0])' -``` \ No newline at end of file +``` + +## In Projects Which Do Not Use ISPM + +Some projects, including those which use custom builds of Simics, do not use the `ispm` +package manager. In these scenarios, the TSFFS package can be installed in a project by +extracting the package manually: + +```sh +tar -xf simics-pkg-31337-7.0.0-linux64.ispm +tar -xf package.tar.gz +``` + +This will extract to a directory `simics-tsffs-7.0.0`. In your existing Simics project, +you can run: + +```sh +./bin/addon-manager -s /path/to/simics-tsffs-7.0.0/ +``` + +You should see a prompt like: + +```txt +Simics 6 Add-on Package Manager +=============================== + +This script will configure this Simics installation to use optional +Simics add-on packages. + +Default alternatives are enclosed in square brackets ([ ]). + +=== Using the package list in project (/home/rhart/hub/tsffs/target/tmp/test_riscv_64_kernel_from_userspace_magic/project) === + +Configured add-on packages: + RISC-V-CPU 7.2.0 ../simics-risc-v-cpu-7.2.0 + RISC-V-Simple 7.1.0 ../simics-risc-v-simple-7.1.0 + tsffs 7.0.0 ../simics-tsffs-7.0.0 + +The following operations will be performed: + -> Upgrade tsffs 7.0.0 ../simics-tsffs-7.0.0 + to 7.0.0 ../../../../../packages/simics-tsffs-7.0.0 + +New package list: + RISC-V-CPU 7.2.0 ../simics-risc-v-cpu-7.2.0 + RISC-V-Simple 7.1.0 ../simics-risc-v-simple-7.1.0 + tsffs 7.0.0 ../../../../../packages/simics-tsffs-7.0.0 + +Do you want to update the package list? (y/n) [y] +``` + +Type `y` to accept each prompt. \ No newline at end of file diff --git a/docs/src/config/loading-module.md b/docs/src/config/loading-module.md index fb9f5ad3..f58bc13d 100644 --- a/docs/src/config/loading-module.md +++ b/docs/src/config/loading-module.md @@ -27,14 +27,19 @@ SIM_load_module("tsffs") "The Fuzzer" is an instance of the `tsffs` class, declared in the `tsffs` module. The `tsffs` class can only be instantiated once in a given simulation. -You can get the `tsffs` class by running (in a Python script -- this can be done in a -SIMICS script by prefixing this line with the `@` prefix): +This can be done by running (in a SIMICS script): + +```simics +init-tsffs +``` + +Alternatively, in a Python script, you can write: ```python tsffs_cls = SIM_get_class("tsffs") ``` -Once we have the `tsffs_cls` an instance can be created with: +And in the Python script, once we have the `tsffs_cls` an instance can be created with: ```python tsffs = SIM_create_object(tsffs_cls, "tsffs", []) @@ -44,18 +49,16 @@ The fuzzer instance is now created and ready to configure and use. ## Configuring the Fuzzer -The fuzzer is configured through its singular interface, simply called -`tsffs`. This interface is used for both configuration and control of the -fuzzer. - -This interface can be accessed in Python scripts like: +The fuzzer is configured via various attributes, many of which have default values. You +can view the list of configuration settings at runtime by running: ```python -tsffs.iface.tsffs.interface_method_name(interface_args, ...) +@print(*tsffs.attributes, sep="\n") ``` -And from SIMICS scripts like using the `@` prefix like: +Most settings can be set from Python scripting, for example the timeout can be set to 3 +seconds with: -```simics -@tsffs.iface.tsffs.interface_method_name(interface_args, ...) +```python +@tsffs.timeout = 3.0 ``` \ No newline at end of file diff --git a/docs/src/developer/build.md b/docs/src/developer/build.md index 72b4e79b..a49e01c2 100644 --- a/docs/src/developer/build.md +++ b/docs/src/developer/build.md @@ -61,21 +61,8 @@ attribute macros for implementing: It also provides derive macros for converting Rust structs to and from `AttrValue`s. -In particular, the `#[interface_impl]` attribute generates a `.dml`, `.h`, and -`Makefile` to produce an interface. This is the reason the top level build invokes -`make` twice, to ensure the interface definition is updated and rebuilt. - ## Build Process -The build process for the TSFFS SIMICS package is implemented in the top level -`build.rs` script. - -* Call `make` twice - * The first time, the TSFFS module is built and the interface files are emitted - * The second time, the updated interface is built -* Produce a package list file and package spec JSON file - * There is a script provided by an internal SIMICS package to produce the JSON file - from the package list, but the functionality is re-implemented in the top-level - build script because this script is not available to open source public users -* Create a module cache -* Create the final `.ispm` package \ No newline at end of file +The build process for the TSFFS SIMICS package is implemented in the +`cargo-simics-build` crate. It builds the crate with correct link arguments, signs the +output module, and packages the module along with any built interfaces. diff --git a/docs/src/developer/refresh.md b/docs/src/developer/refresh.md index 55f3d7ec..e03ae628 100644 --- a/docs/src/developer/refresh.md +++ b/docs/src/developer/refresh.md @@ -2,20 +2,4 @@ In some cases, the TSFFS package environment can become desynchronized with the local SIMICS installation. To resolve this issue, you can remove the files SIMICS/ISPM added -during setup and re-initialize the project: - - -```sh -rm -rf .project-properties \ - bin \ - linux64 \ - win64 \ - targets \ - .package-list \ - compiler.mk* \ - config.mk* \ - GNUmakefile \ - simics* -ispm projects $(pwd) --create --non-interactive --ignore-existing-files -bin/project-setup --force -``` \ No newline at end of file +during setup and re-initialize the project by running `cargo clean`. diff --git a/docs/src/developer/specific-simics-version.md b/docs/src/developer/specific-simics-version.md index 1011143c..1e155ad3 100644 --- a/docs/src/developer/specific-simics-version.md +++ b/docs/src/developer/specific-simics-version.md @@ -1,19 +1,10 @@ # Targeting A Specific SIMICS Version -To target a specific SIMICS base version when building TSFFS, choose the version you -want to target when initializing the project. For example, during the -[Linux Setup](../setup/linux.md), instead of running: - - -```sh -ispm projects $(pwd) --create --ignore-existing-files --non-interactive -``` - -If we wanted to target `simics-6.0.163`, we could run: +The Simics version the module is built against is determined by the Simics base +directory pointed to by the `SIMICS_BASE` environment variable. For example, running: ```sh -ispm projects $(pwd) --create 1000-6.0.163 --ignore-existing-files --non-interactive +SIMICS_BASE=/home/user/simics/simics-6.0.185/ cargo simics-build ``` -If you already initialized your TSFFS project and need to reinitialize it, see -[refreshing build environment](./refresh.md). \ No newline at end of file +will build the module against Simics version 6.0.185. diff --git a/docs/src/documentation/README.md b/docs/src/documentation/README.md index 2c2678ee..178f4075 100644 --- a/docs/src/documentation/README.md +++ b/docs/src/documentation/README.md @@ -11,4 +11,3 @@ TSFFS are provided here. - [simics-codegen](https://intel.github.io/tsffs/crates/simics_codegen) - [simics-api-sys](https://intel.github.io/tsffs/crates/simics_api_sys) - [ispm-wrapper](https://intel.github.io/tsffs/crates/ispm_wrapper) - - [version-tools](https://intel.github.io/tsffs/crates/version_tools) \ No newline at end of file diff --git a/docs/src/fuzzing/analyzing-results.md b/docs/src/fuzzing/analyzing-results.md index b5fa50c7..b749563b 100644 --- a/docs/src/fuzzing/analyzing-results.md +++ b/docs/src/fuzzing/analyzing-results.md @@ -9,5 +9,5 @@ Once a solution is found, the fuzzer can be run in *repro* mode which will: Repro mode can be run after stopping execution, or before executing the fuzzing loop. ```python -tsffs.iface.tsffs.repro("%simics%/solutions/TESTCASE") +tsffs.iface.fuzz.repro("%simics%/solutions/TESTCASE") ``` \ No newline at end of file diff --git a/docs/src/fuzzing/compatibility.md b/docs/src/fuzzing/compatibility.md index 0f1df922..0cc90d84 100644 --- a/docs/src/fuzzing/compatibility.md +++ b/docs/src/fuzzing/compatibility.md @@ -36,6 +36,9 @@ first contribution to the fuzzer. See the generic and specific architecture info ## Micro Checkpoints +Micro checkpoints are only supported prior to Simics 7.0.0. If you are using a newer +version of Simics, [snapshots](#snapshots) first. + SIMICS has a feature called *micro checkpoints* that allows in-memory snapshots of the target software state, as well as reasonably fast restoration of these snapshots to enable fuzzing. @@ -138,7 +141,7 @@ To test micro checkpoints, run SIMICS in the project with the script you just cr ```sh $ ./simics test.simics -Intel Simics 6 (build 6218 linux64) © 2023 Intel Corporation +Intel Simics 6 (build 6218 linux64) © 2024 Intel Corporation Use of this software is subject to appropriate license. Type 'copyright' for details on copyright and 'help' for on-line documentation. @@ -281,7 +284,7 @@ similar to micro checkpoints but do not rely on underlying rev-exec support. If model supports a new version of SIMICS, follow the same instructions as for micro checkpoints, but replace: -* `VT_save_micro_checkpoint("origin", 0)` with `VT_save_snapshot("origin")` +* `VT_save_micro_checkpoint("origin", 0)` with `VT_take_snapshot("origin")` * `VT_restore_micro_checkpoint(0)` with `VT_restore_snapshot("origin")` And do not call `CORE_discard_future`. \ No newline at end of file diff --git a/docs/src/fuzzing/running-fuzzer.md b/docs/src/fuzzing/running-fuzzer.md index a15c20f4..15a76053 100644 --- a/docs/src/fuzzing/running-fuzzer.md +++ b/docs/src/fuzzing/running-fuzzer.md @@ -3,7 +3,7 @@ Once a fuzzing campaign is set up, you can generally run the fuzzer like: ```sh -./simics -no-gui --no-win --batch-mode fuzz.simics +./simics --no-win --batch-mode fuzz.simics ``` At a log level of 2 or greater (i.e. set `tsffs.log-level 2` in your script) , you'll diff --git a/docs/src/harnessing/closed-box.md b/docs/src/harnessing/closed-box.md index fd5e8739..72bfabca 100644 --- a/docs/src/harnessing/closed-box.md +++ b/docs/src/harnessing/closed-box.md @@ -32,8 +32,8 @@ can disable magic harnesses (this is not strictly necessary unless any magic har actually exist in the target software, but it is good practice). ```python -tsffs.iface.tsffs.set_start_on_harness(False) -tsffs.iface.tsffs.set_stop_on_harness(False) +@tsffs.start_on_harness = False +@tsffs.stop_on_harness = False ``` Once compiled-in harnesses are disabled, the fuzzing loop can be started manually. There @@ -59,7 +59,7 @@ testcase pointer, and the size of the testcase will be written to the provided s pointer. This API is called like: ```python -tsffs.iface.tsffs.start(cpu, testcase_address, size_address, True) +@tsffs.iface.fuzz.start(cpu, testcase_address, size_address, True) ``` The second API takes one memory address and a maximum size. Testcases will be written @@ -67,7 +67,7 @@ to the provided testcase address, and will be truncated to the provided maximum This API is called like: ```python -tsffs.iface.tsffs.start_with_maximum_size(cpu, testcase_address, maximum_size, True) +@tsffs.iface.fuzz.start_with_maximum_size(cpu, testcase_address, maximum_size, True) ``` ## Triggering Manual Stops/Solutions @@ -82,7 +82,7 @@ a normal exit (i.e. *not* a solution), and reset to the initial snapshot with a testcase with: ```python -tsffs.iface.tsffs.stop() +@tsffs.iface.fuzz.stop() ``` Likewise, the fuzzer can be signaled to stop the current testcase execution with a @@ -93,5 +93,5 @@ solution for later use. Any id and message can be provided, it is entirely up to user: ```python -tsffs.iface.tsffs.solution(1, "A descriptive message about why this is a solution condition") +@tsffs.iface.fuzz.solution(1, "A descriptive message about why this is a solution condition") ``` diff --git a/docs/src/harnessing/compiled-in.md b/docs/src/harnessing/compiled-in.md index 4fa38851..42d3faf4 100644 --- a/docs/src/harnessing/compiled-in.md +++ b/docs/src/harnessing/compiled-in.md @@ -61,10 +61,11 @@ By default, TSFFS is enabled to use these harnesses, so no explicit configuratio necessary. However, the defaults are equivalent to the configuration: ```python -tsffs.iface.tsffs.set_start_on_harness(True) -tsffs.iface.tsffs.set_stop_on_harness(True) -tsffs.iface.tsffs.set_start_magic_number(1) -tsffs.iface.tsffs.set_start_magic_number(2) +@tsffs.start_on_harness = True +@tsffs.stop_on_harness = True +@tsffs.magic_start = 1 +@tsffs.magic_stop = 2 +@tsffs.magic_assert = 3 ``` This sets TSFFS to start the fuzzing loop on a *magic* harness with magic number `1` @@ -126,9 +127,9 @@ And configuration settings like: ```python -tsffs.iface.tsffs.set_start_on_harness(True) -tsffs.iface.tsffs.set_stop_on_harness(True) -tsffs.iface.tsffs.set_start_magic_number(4) +@tsffs.start_on_harness = True +@tsffs.stop_on_harness = True +@tsffs.start_magic_number = 4 ``` With this runtime configuration, the first harness will be ignored, and only the second diff --git a/docs/src/harnessing/manual.md b/docs/src/harnessing/manual.md index 16dfbf1b..b92f9d14 100644 --- a/docs/src/harnessing/manual.md +++ b/docs/src/harnessing/manual.md @@ -11,5 +11,5 @@ a CPU object. When called, the initial snapshot is still captured in the same wa with other [closed-box](closed-box.md) harnessing methods. ```python -testcase = tsffs.iface.tsffs.start_without_buffer(cpu) +@testcase = tsffs.iface.fuzz.start_without_buffer(cpu) ``` \ No newline at end of file diff --git a/docs/src/setup/docker.md b/docs/src/setup/docker.md index 78066c84..90f64764 100644 --- a/docs/src/setup/docker.md +++ b/docs/src/setup/docker.md @@ -28,10 +28,10 @@ First, you'll need to install ISPM. External users can install it from the publi release: ```sh -curl --noproxy -L -o $HOME/Downloads/ispm.tar.gz \ - "https://registrationcenter-download.intel.com/akdlm/IRC_NAS/881ee76a-c24d-41c0-af13-5d89b2a857ff/intel-simics-package-manager-1.7.5-linux64.tar.gz" +curl --noproxy '*.intel.com' -L -o $HOME/Downloads/ispm.tar.gz \ + "https://registrationcenter-download.intel.com/akdlm/IRC_NAS/ead79ef5-28b5-48c7-8d1f-3cde7760798f/intel-simics-package-manager-1.8.3-linux64.tar.gz" mkdir -p $HOME/simics/ispm/ -tar -C $HOME/simics/ispm --strip-components=1 -xvf $HOME/Downloads/ispm.tar.gz +tar -C $HOME/simics/ispm --strip-components=1 -xf $HOME/Downloads/ispm.tar.gz ``` Next, we add `$HOME/simics/ispm` to our `PATH` by adding a line to our `.bashrc` or @@ -58,8 +58,6 @@ ISPM is installed. You can check that it is installed and working with: ispm --version ``` - - ### Build and Install TSFFS If you want to use a container to *build* TSFFS, but you want to run it on your own diff --git a/docs/src/setup/linux.md b/docs/src/setup/linux.md index f3155ba0..01540a2a 100644 --- a/docs/src/setup/linux.md +++ b/docs/src/setup/linux.md @@ -34,8 +34,7 @@ Rust's official installation instructions can be found at project (including the nightly toolchain), run: ```sh -curl https://sh.rustup.rs -sSf | bash -s -- -y -rustup toolchain install nightly +curl https://sh.rustup.rs -sSf | bash -s -- -y --default-toolchain nightly ``` The installer may prompt you to add `source $HOME/.cargo/env` to your shell init file. @@ -64,9 +63,9 @@ directly from the download page, replace `ispm.tar.gz` with the full name of the tarball you downloaded, and likewise with `simics-6-packages`. ```sh -curl --noproxy -L -o $HOME/Downloads/ispm.tar.gz \ +curl --noproxy '*.intel.com' -L -o $HOME/Downloads/ispm.tar.gz \ "https://registrationcenter-download.intel.com/akdlm/IRC_NAS/881ee76a-c24d-41c0-af13-5d89b2a857ff/intel-simics-package-manager-1.7.5-linux64.tar.gz" -curl --noproxy -L -o $HOME/Downloads/simics-6-packages.ispm \ +curl --noproxy '*.intel.com' -L -o $HOME/Downloads/simics-6-packages.ispm \ "https://registrationcenter-download.intel.com/akdlm/IRC_NAS/881ee76a-c24d-41c0-af13-5d89b2a857ff/simics-6-packages-2023-31-linux64.ispm" ``` @@ -75,7 +74,7 @@ Next, we will install SIMICS. Here, we install to `$HOME/simics/` . We will ext ```sh mkdir -p $HOME/simics/ispm/ -tar -C $HOME/simics/ispm --strip-components=1 -xvf $HOME/Downloads/ispm.tar.gz +tar -C $HOME/simics/ispm --strip-components=1 -xf $HOME/Downloads/ispm.tar.gz ``` Next, we add `$HOME/simics/ispm` to our `PATH` by adding a line to our `.bashrc` or @@ -132,41 +131,21 @@ git clone https://github.com/intel/tsffs $HOME/simics/tsffs/ cd $HOME/simics/tsffs/ ``` -The first step to building `tsffs` is to initialize the repository as a SIMICS project -so it is associated with your installed SIMICS packages. +With the repository cloned, you can install and run the build utility: ```sh -ispm projects $(pwd) --create --ignore-existing-files --non-interactive +cargo install --path simics-rs/cargo-simics-build +cargo simics-build -r ``` -Next, we run the `project-setup` script SIMICS installs into the repository for us to -update the project. - -```sh -bin/project-setup --force -``` - -Then, we will build the TSFFS package using the build script. This automates several -steps for us: - -* Runs `make` twice to invoke `cargo` with the correct environment to build and generate - a signed shared object (module) to be loaded into SIMICS -* Creates a `packages-spec.json` file from the TSFFS crate's contents -* Creates module info for the packaging scripts -* Creates a `.ispm` package that can be installed into the local SIMICS installation - -```sh -./build.rs -``` - -This will produce a file `linux64/packages/simics-pkg-31337-VERSION-linux64.ispm`. We can +This will produce a file `target/release/simics-pkg-31337-VERSION-linux64.ispm`. We can then install this package into our local SIMICS installation. This in turn allows us to add the TSFFS package to our SIMICS projects for use. Note the `--trust-insecure-packages` flag is required because this package is not built and signed by the SIMICS team, but by ourselves. ```sh -ispm packages -i linux64/packages/*-linux64.ispm \ +ispm packages -i target/release/*-linux64.ispm \ --non-interactive --trust-insecure-packages ``` @@ -193,7 +172,7 @@ ispm packages --list-installed --json | jq -r '[ .installedPackages[] | select(. On the author's system, for example, this prints: ```txt -/home/YOUR_USERNAME/simics/simics-6.0.169 +/home/YOUR_USERNAME/simics/simics-6.0.185 ``` Add this path in the `[env]` section of `.cargo/config.toml` as the variable @@ -202,13 +181,11 @@ would look like: ```toml [env] -SIMICS_BASE = "/home/YOUR_USERNAME/simics/simics-6.0.169" +SIMICS_BASE = "/home/YOUR_USERNAME/simics/simics-6.0.185" ``` This lets `cargo` find your SIMICS installation, and it uses several fallback methods to -find the SIMICS libraries to link with. Paths to the libraries are provided via the -SIMICS Makefile system, which is used by the `./build.rs` script above, hence this step -is only needed for local development. +find the SIMICS libraries to link with. Finally, check that your configuration is correct by running: diff --git a/docs/src/setup/windows.md b/docs/src/setup/windows.md index 211eee4e..d2834eec 100644 --- a/docs/src/setup/windows.md +++ b/docs/src/setup/windows.md @@ -243,15 +243,14 @@ Clone TSFFS to your system (anywhere you like) and build with: ```powershell git clone https://github.com/intel/tsffs cd tsffs -ispm.exe projects $(pwd) --create --non-interactive --ignore-existing-files -./bin/project-setup.bat --mingw-dir C:\MinGW\ --force -cargo -Zscript build.rs +cargo install --path simics-rs/cargo-simics-build +cargo simics-build -r ``` Once built, install TSFFS to your SIMICS installation with: ```powershell -ispm.exe packages -i win64/packages/*-win64.ispm --non-interactive --trust-insecure-packages +ispm.exe packages -i target/release/*-win64.ispm --non-interactive --trust-insecure-packages ``` ## Test TSFFS @@ -264,11 +263,11 @@ disk, and the same fuzz script used in the Linux docker example in the mkdir $env:TEMP\TSFFS-Windows ispm.exe projects $env:TEMP\TSFFS-Windows\ --create cp examples\docker-example\fuzz.simics $env:TEMP\TSFFS-Windows\ -cp modules\tsffs\tests\targets\minimal-x86_64\* $env:TEMP\TSFFS-Windows\ -cp modules\tsffs\tests\rsrc\minimal_boot_disk.craff $env:TEMP\TSFFS-Windows\ +cp tests\rsrc\x86_64-uefi\* $env:TEMP\TSFFS-Windows\ +cp tests\rsrc\minimal_boot_disk.craff $env:TEMP\TSFFS-Windows\ cp harness\tsffs-gcc-x86_64.h $env:TEMP\TSFFS-Windows\ cd $env:TEMP\TSFFS-Windows -./simics ./fuzz.simics +./simics --no-win ./fuzz.simics ``` ## Set Up For Local Development @@ -291,7 +290,7 @@ ispm packages --list-installed --json | jq -r '[ .installedPackages[] | select(. On the author's system, for example, this prints: ```txt -C:\Users\YOUR_USERNAME\simics\simics-6.0.169 +C:\Users\YOUR_USERNAME\simics\simics-6.0.185 ``` Add this path in the `[env]` section of `.cargo/config.toml` as the variable @@ -300,13 +299,11 @@ would look like: ```toml [env] -SIMICS_BASE = "C:\Users\YOUR_USERNAME\simics\simics-6.0.169" +SIMICS_BASE = "C:\Users\YOUR_USERNAME\simics\simics-6.0.185" ``` This lets `cargo` find your SIMICS installation, and it uses several fallback methods to -find the SIMICS libraries to link with. Paths to the libraries are provided via the -SIMICS Makefile system, which is used by the `./build.rs` script above, hence this step -is only needed for local development. +find the SIMICS libraries to link with. Finally, check that your configuration is correct by running: @@ -333,4 +330,4 @@ steps: 1. Run `echo $env:PATH` and ensure the directory containing the command you are trying to run is present, add it to your `Path` environment variable if it is absent. 2. Close your terminal and open a new one. The `Path` variable is only reloaded on new - terminal sessions \ No newline at end of file + terminal sessions diff --git a/docs/src/tutorials/edk2-simics-platform-bios/configuring.md b/docs/src/tutorials/edk2-simics-platform-bios/configuring.md index 0a531561..5fe07628 100644 --- a/docs/src/tutorials/edk2-simics-platform-bios/configuring.md +++ b/docs/src/tutorials/edk2-simics-platform-bios/configuring.md @@ -98,10 +98,10 @@ do is add the harness macros to it and turn on the fuzzer. We'll use the breakpoint API to wait for the `DebugAssert` function in a loop. We do this instead of using the `$bp_num = bp.source_location.break DebugAssert` command and adding it to the fuzzer configuration with -`@tsffs.iface.tsffs.add_breakpoint_solution(simenv.bp_num)` because the HAP for +`@tsffs.breakpoints = [simenv.bp_num]` because the HAP for breakpoints does not trigger on breakpoints set on source locations in this way, so the fuzzer cannot intercept it. This is in contrast to breakpoints set with the following, -which will work with the `add_breakpoint_solution` API: +which will work with the `tsffs` API: ```simics $ctx = (new-context) @@ -114,13 +114,12 @@ tutorials. ```simics load-module tsffs -@tsffs = SIM_create_object(SIM_get_class("tsffs"), "tsffs", []) +init-tsffs tsffs.log-level 4 -@tsffs.iface.tsffs.set_start_on_harness(True) -@tsffs.iface.tsffs.set_stop_on_harness(True) -@tsffs.iface.tsffs.set_timeout(3.0) -@tsffs.iface.tsffs.add_exception_solution(13) -@tsffs.iface.tsffs.add_exception_solution(14) +@tsffs.start_on_harness = True +@tsffs.stop_on_harness = True +@tsffs.timeout = 3.0 +@tsffs.exceptions = [13, 14] load-module uefi-fw-tracker @@ -136,7 +135,7 @@ script-branch { while 1 { bp.source_location.wait-for DebugAssert -x -error-not-planted echo "Got breakpoint" - @tsffs.iface.tsffs.solution(1, "DebugAssert") + @tsffs.iface.fuzz.solution(1, "DebugAssert") } } diff --git a/docs/src/tutorials/edk2-simics-platform-bios/optimizing.md b/docs/src/tutorials/edk2-simics-platform-bios/optimizing.md index 8d87816e..130cb169 100644 --- a/docs/src/tutorials/edk2-simics-platform-bios/optimizing.md +++ b/docs/src/tutorials/edk2-simics-platform-bios/optimizing.md @@ -18,7 +18,7 @@ script-branch { while 1 { bp.source_location.wait-for DebugAssert -x -error-not-planted echo "Got breakpoint" - @tsffs.iface.tsffs.solution(1, "DebugAssert") + @tsffs.iface.fuzz.solution(1, "DebugAssert") } } ``` @@ -36,13 +36,12 @@ to the fuzzer. ```simics load-module tsffs -@tsffs = SIM_create_object(SIM_get_class("tsffs"), "tsffs", []) +init-tsffs tsffs.log-level 4 -@tsffs.iface.tsffs.set_start_on_harness(True) -@tsffs.iface.tsffs.set_stop_on_harness(True) -@tsffs.iface.tsffs.set_timeout(3.0) -@tsffs.iface.tsffs.add_exception_solution(13) -@tsffs.iface.tsffs.add_exception_solution(14) +@tsffs.start_on_harness = True +@tsffs.stop_on_harness =True +@tsffs.timeout = 3.0 +@tsffs.exceptions = [13, 14] load-module uefi-fw-tracker @@ -61,7 +60,7 @@ qsp.software.enable-tracker $ctx = (new-context) qsp.mb.cpu0.core[0][0].set-context $ctx $debug_assert_bp = ($ctx.break -x $debug_assert_address) -@tsffs.iface.tsffs.add_breakpoint_solution(simenv.debug_assert_bp) +@tsffs.breakpoints = [simenv.debug_assert_bp] run ``` diff --git a/docs/src/tutorials/edk2-simics-platform-bios/running.md b/docs/src/tutorials/edk2-simics-platform-bios/running.md index 18265724..209a7906 100644 --- a/docs/src/tutorials/edk2-simics-platform-bios/running.md +++ b/docs/src/tutorials/edk2-simics-platform-bios/running.md @@ -3,7 +3,7 @@ Now that everything is harnessed, we can run the fuzzer: ```sh -./simics -no-gui --no-win fuzz.simics +./simics --no-win fuzz.simics ``` After some time, we should be able to discover the bugs we added. \ No newline at end of file diff --git a/docs/src/tutorials/edk2-uefi/configuring-the-fuzzer.md b/docs/src/tutorials/edk2-uefi/configuring-the-fuzzer.md index c71cfb09..bfef86a6 100644 --- a/docs/src/tutorials/edk2-uefi/configuring-the-fuzzer.md +++ b/docs/src/tutorials/edk2-uefi/configuring-the-fuzzer.md @@ -97,7 +97,7 @@ First, we need to create an actual `tsffs` object to instantiate the fuzzer. ```simics load-module tsffs # You should already have this -@tsffs = SIM_create_object(SIM_get_class("tsffs"), "tsffs", []) +init-tsffs ``` Next, we'll set the log level to maximum for demonstration purposes: @@ -112,8 +112,8 @@ usage unless you want to change the defaults, they are just provided here for completeness. ```simics -@tsffs.iface.tsffs.set_start_on_harness(True) -@tsffs.iface.tsffs.set_stop_on_harness(True) +@tsffs.start_on_harness = True +@tsffs.stop_on_harness = True ``` We'll set up our "solutions" which are all the exceptional conditions that we want to @@ -122,9 +122,8 @@ hangs, and CPU exceptions. we'll enable exceptions 13 for general protection fau 14 for page faults to detect out of bounds reads and writes. ```simics -@tsffs.iface.tsffs.set_timeout(3.0) -@tsffs.iface.tsffs.add_exception_solution(13) -@tsffs.iface.tsffs.add_exception_solution(14) +@tsffs.timeout = 3.0 +@tsffs.exceptions = [13, 14] ``` We'll tell the fuzzer where to take its corpus and save its solutions. The fuzzer will @@ -133,8 +132,8 @@ directory in the project by default, so this call can be skipped in real usage u you want to change the defaults. ```simics -@tsffs.iface.tsffs.set_corpus_directory("%simics%/corpus") -@tsffs.iface.tsffs.set_solutions_directory("%simics%/solutions") +@tsffs.corpus_directory = SIM_lookup_file("%simics%/corpus") +@tsffs.solutions_directory = SIM_lookup_file("%simics%/solutions") ``` We'll also *delete* the following code from the `run.simics` script: diff --git a/docs/src/tutorials/edk2-uefi/reproducing-runs.md b/docs/src/tutorials/edk2-uefi/reproducing-runs.md index 0cf723cf..5e83b38a 100644 --- a/docs/src/tutorials/edk2-uefi/reproducing-runs.md +++ b/docs/src/tutorials/edk2-uefi/reproducing-runs.md @@ -27,7 +27,7 @@ simics> !hexdump -C corpus/4385dc33f608888d | head -n 2 We can tell the fuzzer that we want to run with this specific input by using: ```txt -simics> @tsffs.iface.tsffs.repro("%simics%/corpus/4385dc33f608888d") +simics> @tsffs.iface.fuzz.repro("%simics%/corpus/4385dc33f608888d") ``` The simulation will run once with this input, then output a message that you can replay diff --git a/docs/src/tutorials/edk2-uefi/running-the-fuzzer.md b/docs/src/tutorials/edk2-uefi/running-the-fuzzer.md index 699c640a..c72e985c 100644 --- a/docs/src/tutorials/edk2-uefi/running-the-fuzzer.md +++ b/docs/src/tutorials/edk2-uefi/running-the-fuzzer.md @@ -4,7 +4,7 @@ Now that we have configured the fuzzer and harnessed our target application, it' to run again: ```sh -./simics -no-gui --no-win run.simics +./simics --no-win run.simics ``` Press Ctrl+C at any time to stop the fuzzing process and return to the SIMICS CLI. diff --git a/docs/src/tutorials/edk2-uefi/testing-the-application.md b/docs/src/tutorials/edk2-uefi/testing-the-application.md index 7c8a7cb1..b5c761f3 100644 --- a/docs/src/tutorials/edk2-uefi/testing-the-application.md +++ b/docs/src/tutorials/edk2-uefi/testing-the-application.md @@ -93,7 +93,7 @@ run Run the script: ```sh -./simics -no-gui --no-win --batch-mode run.simics +./simics --no-win --batch-mode run.simics ``` The machine will boot, the UEFI application will run and dump out the contents of the diff --git a/docs/src/tutorials/kernel-module/build-configuration-updates.md b/docs/src/tutorials/kernel-module/build-configuration-updates.md index 72e8e333..3004bc6e 100644 --- a/docs/src/tutorials/kernel-module/build-configuration-updates.md +++ b/docs/src/tutorials/kernel-module/build-configuration-updates.md @@ -44,7 +44,7 @@ a format mountable in SIMICS. ```sh #!/bin/bash -# Copyright (C) 2023 Intel Corporation +# Copyright (C) 2024 Intel Corporation # SPDX-License-Identifier: Apache-2.0 SCRIPT_DIR=$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" &>/dev/null && pwd) diff --git a/docs/src/tutorials/kernel-module/running-the-fuzzer.md b/docs/src/tutorials/kernel-module/running-the-fuzzer.md index f7784d79..56559874 100644 --- a/docs/src/tutorials/kernel-module/running-the-fuzzer.md +++ b/docs/src/tutorials/kernel-module/running-the-fuzzer.md @@ -30,13 +30,13 @@ the kernel module, using the default start/stop on harness. ```simics load-module tsffs +init-tsffs -@tsffs = SIM_create_object(SIM_get_class("tsffs"), "tsffs", []) tsffs.log-level 4 -@tsffs.iface.tsffs.set_start_on_harness(True) -@tsffs.iface.tsffs.set_stop_on_harness(True) -@tsffs.iface.tsffs.set_timeout(3.0) -@tsffs.iface.tsffs.add_exception_solution(14) +@tsffs.start_on_harness = True +@tsffs.stop_on_harness = True +@tsffs.timeout = 3.0 +@tsffs.exceptions = [14] load-target "risc-v-simple/linux" namespace = riscv machine:hardware:storage:disk1:image = "test.fs.craff" @@ -71,17 +71,17 @@ To change harnesses, instead harnessing via the user-space driver program, the same target software should be used. Only the two lines: ```simics -@tsffs.iface.tsffs.set_start_on_harness(True) -@tsffs.iface.tsffs.set_stop_on_harness(True) +@tsffs.start_on_harness = True +@tsffs.stop_on_harness = True ``` Should be changed to: ```simics -@tsffs.iface.tsffs.set_start_on_harness(False) -@tsffs.iface.tsffs.set_stop_on_harness(False) -@tsffs.iface.tsffs.set_start_magic_number(4) -@tsffs.iface.tsffs.set_stop_magic_number(5) +@tsffs.start_on_harness = False +@tsffs.stop_on_harness = False +@tsffs.magic_start = 4 +@tsffs.magic_stop = 5 ``` You can run the script again -- this time, the fuzzing loop will instantiate in the diff --git a/examples/docker-example/fuzz.simics b/examples/docker-example/fuzz.simics index 4e451c99..f0614f57 100644 --- a/examples/docker-example/fuzz.simics +++ b/examples/docker-example/fuzz.simics @@ -1,4 +1,4 @@ -# Copyright (C) 2023 Intel Corporation +# Copyright (C) 2024 Intel Corporation # SPDX-License-Identifier: Apache-2.0 # Load the TSFFS module. The project has the TSFFS package added to it by the diff --git a/examples/manual-example/Dockerfile b/examples/manual-example/Dockerfile index 1364c6b9..efc2cd20 100644 --- a/examples/manual-example/Dockerfile +++ b/examples/manual-example/Dockerfile @@ -1,4 +1,4 @@ -# Copyright (C) 2023 Intel Corporation +# Copyright (C) 2024 Intel Corporation # SPDX-License-Identifier: Apache-2.0 # hadolint global ignore=DL3041,DL3040 @@ -6,8 +6,10 @@ FROM fedora:38 # Download links can be obtained from: # https://lemcenter.intel.com/productDownload/?Product=256660e5-a404-4390-b436-f64324d94959 -ARG PUBLIC_SIMICS_PKGS_URL="https://registrationcenter-download.intel.com/akdlm/IRC_NAS/881ee76a-c24d-41c0-af13-5d89b2a857ff/simics-6-packages-2023-31-linux64.ispm" -ARG PUBLIC_SIMICS_ISPM_URL="https://registrationcenter-download.intel.com/akdlm/IRC_NAS/881ee76a-c24d-41c0-af13-5d89b2a857ff/intel-simics-package-manager-1.7.5-linux64.tar.gz" +ENV PUBLIC_SIMICS_PKGS_URL="https://registrationcenter-download.intel.com/akdlm/IRC_NAS/ead79ef5-28b5-48c7-8d1f-3cde7760798f/simics-6-packages-2024-05-linux64.ispm" +ENV PUBLIC_SIMICS_ISPM_URL="https://registrationcenter-download.intel.com/akdlm/IRC_NAS/ead79ef5-28b5-48c7-8d1f-3cde7760798f/intel-simics-package-manager-1.8.3-linux64.tar.gz" +ENV PUBLIC_SIMICS_PACKAGE_VERSION_1000="6.0.185" +ENV SIMICS_BASE="/workspace/simics/simics-${PUBLIC_SIMICS_PACKAGE_VERSION_1000}/" # Add cargo and ispm to the path ENV PATH="/root/.cargo/bin:/workspace/simics/ispm:${PATH}" @@ -64,8 +66,7 @@ RUN dnf -y update && \ isort==5.12.0 \ mypy==1.6.1 \ pylint==3.0.2 && \ - curl https://sh.rustup.rs -sSf | bash -s -- -y && \ - rustup toolchain install nightly + curl https://sh.rustup.rs -sSf | bash -s -- -y --default-toolchain nightly WORKDIR /workspace @@ -74,13 +75,15 @@ WORKDIR /workspace # ispm SIMICS package and project manager. ISPM will be on the path due to the ENV command # above RUN mkdir -p /workspace/simics/ispm/ && \ - curl --noproxy -L -o /workspace/simics/ispm.tar.gz "${PUBLIC_SIMICS_ISPM_URL}" && \ - curl --noproxy -L -o /workspace/simics/simics.ispm "${PUBLIC_SIMICS_PKGS_URL}" && \ + curl --noproxy '*.intel.com' -L -o /workspace/simics/ispm.tar.gz "${PUBLIC_SIMICS_ISPM_URL}" && \ + curl --noproxy '*.intel.com' -L -o /workspace/simics/simics.ispm "${PUBLIC_SIMICS_PKGS_URL}" && \ tar -C /workspace/simics/ispm --strip-components=1 \ - -xvf /workspace/simics/ispm.tar.gz && \ + -xf /workspace/simics/ispm.tar.gz && \ ispm settings install-dir /workspace/simics && \ - ispm packages --install-bundle /workspace/simics/simics.ispm --non-interactive && \ - rm /workspace/simics/ispm.tar.gz /workspace/simics/simics.ispm + ispm packages --install-bundle /workspace/simics/simics.ispm --non-interactive \ + --trust-insecure-packages && \ + rm /workspace/simics/ispm.tar.gz /workspace/simics/simics.ispm && \ + rm -rf /workspace/simics-6-packages/ # Copy the local repository into the workspace COPY . /workspace/tsffs/ @@ -90,11 +93,10 @@ WORKDIR /workspace/tsffs/ # Build the project by initializing it as a project associated with the local SIMICS installation # and building the module using the build script. Then, install the built TSFFS SIMICS # package into the local SIMICS installation for use. -RUN ispm projects /workspace/tsffs/ --create --ignore-existing-files --non-interactive && \ - bin/project-setup --force && \ - ./build.rs && \ +RUN cargo install --path simics-rs/cargo-simics-build && \ + cargo simics-build -r && \ ispm packages \ - -i /workspace/tsffs/linux64/packages/*-linux64.ispm \ + -i target/release/*-linux64.ispm \ --non-interactive --trust-insecure-packages WORKDIR /workspace/projects/example/ @@ -110,5 +112,3 @@ RUN ispm projects /workspace/projects/example/ --create --ignore-existing-files RUN echo 'echo "To run the demo, run ./simics -no-gui --no-win fuzz.simics"' >> /root/.bashrc - - diff --git a/examples/manual-example/build.ninja b/examples/manual-example/build.ninja index 5cf12979..34fba016 100644 --- a/examples/manual-example/build.ninja +++ b/examples/manual-example/build.ninja @@ -1,4 +1,4 @@ -# Copyright (C) 2023 Intel Corporation +# Copyright (C) 2024 Intel Corporation # SPDX-License-Identifier: Apache-2.0 rule cc @@ -6,7 +6,7 @@ rule cc -mno-red-zone $cflags -c $in -o $out rule link - command = lld-link $ldflags -filealign:16 -subsystem:efi_application -nodefaultlib -dll $ + command = lld -flavor link $ldflags -filealign:16 -subsystem:efi_application -nodefaultlib -dll $ -entry:UefiMain $in -out:$out rule copy diff --git a/examples/manual-example/fuzz.simics b/examples/manual-example/fuzz.simics index 6ad1585a..6817adf8 100644 --- a/examples/manual-example/fuzz.simics +++ b/examples/manual-example/fuzz.simics @@ -1,3 +1,6 @@ +# Copyright (C) 2024 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + # Read the start and stop addresses from the files containing them (see Dockerfile for # how they are generated) @simenv.start_addr = int(open("START_ADDRESS").read().strip(), 16) @@ -5,15 +8,14 @@ # Configure the fuzzer load-module tsffs -@tsffs = SIM_create_object(SIM_get_class("tsffs"), "tsffs", []) +init-tsffs @tsffs.log_level = 4 -@tsffs.iface.tsffs.set_start_on_harness(False) -@tsffs.iface.tsffs.set_stop_on_harness(False) -@tsffs.iface.tsffs.set_timeout(3.0) -@tsffs.iface.tsffs.add_exception_solution(14) -@tsffs.iface.tsffs.set_generate_random_corpus(True) -@tsffs.iface.tsffs.set_use_snapshots(False) -@tsffs.iface.tsffs.tokenize_executable("%simics%/test.efi") +@tsffs.start_on_harness = False +@tsffs.stop_on_harness = False +@tsffs.timeout = 3.0 +@tsffs.exceptions += [14] +@tsffs.set_generate_random_corpus = True +@tsffs.token_executables += [SIM_lookup_file("%simics%/test.efi")] # load the target load-target "qsp-x86/uefi-shell" namespace = qsp machine:hardware:storage:disk0:image = "minimal_boot_disk.craff" @@ -29,7 +31,7 @@ script-branch { echo "Got start BP" local $rdi = (qsp.mb.cpu0.core[0][0].read-reg reg-name = "rdi") echo ("Starting with buffer " + $rdi) - @tsffs.iface.tsffs.start_with_maximum_size(conf.qsp.mb.cpu0.core[0][0], simenv.rdi, 8) + @tsffs.iface.fuzz.start_with_maximum_size(conf.qsp.mb.cpu0.core[0][0], simenv.rdi, 8) } } @@ -38,7 +40,7 @@ script-branch { while 1 { bp.wait-for-breakpoint id = $stop_bp echo "Got stop BP" - @tsffs.iface.tsffs.stop() + @tsffs.iface.fuzz.stop() } } diff --git a/examples/manual-example/test.c b/examples/manual-example/test.c index b7767ecb..0726f926 100644 --- a/examples/manual-example/test.c +++ b/examples/manual-example/test.c @@ -1,4 +1,4 @@ -// Copyright (C) 2023 Intel Corporation +// Copyright (C) 2024 Intel Corporation // SPDX-License-Identifier: Apache-2.0 #include diff --git a/examples/tests/riscv-64/build.sh b/examples/tests/riscv-64/build.sh deleted file mode 100755 index 2c11ce55..00000000 --- a/examples/tests/riscv-64/build.sh +++ /dev/null @@ -1,60 +0,0 @@ -#!/bin/bash - -# Copyright (C) 2023 Intel Corporation -# SPDX-License-Identifier: Apache-2.0 - -# Build the HelloWorld.efi module and copy it into the resource directory for the example -# this only needs to be run if you want to modify the source code for the HelloWorld.efi module, -# otherwise, the EFI is included in the source tree for ease of use - -if [ -z "${SIMICS_BASE}" ]; then - echo "SIMICS_BASE must be set" - exit 1 -fi - -SCRIPT_DIR=$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" &>/dev/null && pwd) -IMAGE_NAME="buildroot-build-tsffs-gcc-riscv64-test" -CONTAINER_UID=$(echo "${RANDOM}" | sha256sum | head -c 8) -CONTAINER_NAME="${IMAGE_NAME}-tmp-${CONTAINER_UID}" - -pushd "${SCRIPT_DIR}" || exit 1 - -cp "${SCRIPT_DIR}/../../../harness/tsffs-gcc-riscv64.h" "${SCRIPT_DIR}/tsffs-gcc-riscv64.h" -cp "${SCRIPT_DIR}/../../../harness/tsffs-gcc-riscv64.h" "${SCRIPT_DIR}/test-kernel-modules/package/kernel-modules/test-mod/tsffs-gcc-riscv64.h" -mkdir -p "${SCRIPT_DIR}/targets/risc-v-simple/images/linux/" - -if [ ! -e "${SCRIPT_DIR}/images.tar.gz" ] \ - || [ ! -e "${SCRIPT_DIR}/test" ] \ - || [ ! -e "${SCRIPT_DIR}/test-mod" ] \ - || [ ! -e "${SCRIPT_DIR}/test-mod-userspace" ] \ - || [ ! -e "${SCRIPT_DIR}/test-mod.ko" ]; then - docker build -t "${IMAGE_NAME}" -f "Dockerfile" . - docker create --name "${CONTAINER_NAME}" "${IMAGE_NAME}" - docker cp \ - "${CONTAINER_NAME}:/buildroot/images.tar.gz" \ - "${SCRIPT_DIR}/images.tar.gz" - docker cp \ - "${CONTAINER_NAME}:/test/usr/test" \ - "${SCRIPT_DIR}/test" - docker cp \ - "${CONTAINER_NAME}:/test/usr/test-mod" \ - "${SCRIPT_DIR}/test-mod" - docker cp \ - "${CONTAINER_NAME}:/test/usr/test-mod-userspace" \ - "${SCRIPT_DIR}/test-mod-userspace" - docker cp \ - "${CONTAINER_NAME}:/test/output/test-mod-1.0/test-mod.ko"\ - "${SCRIPT_DIR}/test-mod.ko" - docker rm -f "${CONTAINER_NAME}" -fi - -tar -C "${SCRIPT_DIR}/targets/risc-v-simple/images/linux/" -xvf images.tar.gz -rm images.tar.gz - -dd if=/dev/zero of=test.fs bs=1024 count=131072 -mkfs.fat test.fs -mcopy -i test.fs test-mod-userspace ::test-mod-userspace -mcopy -i test.fs test-mod ::test-mod -mcopy -i test.fs test ::test -mcopy -i test.fs test-mod.ko ::test-mod.ko -"${SIMICS_BASE}/linux64/bin/craff" -o test.fs.craff test.fs diff --git a/examples/tests/riscv-64/test-kernel-from-userspace-magic.simics b/examples/tests/riscv-64/test-kernel-from-userspace-magic.simics deleted file mode 100644 index 0a7dccd1..00000000 --- a/examples/tests/riscv-64/test-kernel-from-userspace-magic.simics +++ /dev/null @@ -1,33 +0,0 @@ -load-module tsffs - -@tsffs = SIM_create_object(SIM_get_class("tsffs"), "tsffs", []) -tsffs.log-level 4 -@tsffs.iface.tsffs.set_start_on_harness(True) -@tsffs.iface.tsffs.set_stop_on_harness(True) -@tsffs.iface.tsffs.set_start_magic_number(4) -@tsffs.iface.tsffs.set_stop_magic_number(5) -@tsffs.iface.tsffs.set_timeout(3.0) -@tsffs.iface.tsffs.add_exception_solution(14) -@tsffs.iface.tsffs.set_generate_random_corpus(True) -@tsffs.iface.tsffs.set_iterations(1000) -@tsffs.iface.tsffs.set_use_snapshots(True) - -load-target "risc-v-simple/linux" namespace = riscv machine:hardware:storage:disk1:image = "test.fs.craff" - -script-branch { - bp.time.wait-for seconds = 15 - board.console.con.input "mkdir /mnt/disk0\r\n" - bp.time.wait-for seconds = 1.0 - board.console.con.input "mount /dev/vdb /mnt/disk0\r\n" - bp.time.wait-for seconds = 1.0 - board.console.con.input "insmod /mnt/disk0/test-mod.ko\r\n" - bp.time.wait-for seconds = 1.0 - board.console.con.input "/mnt/disk0/test-mod-userspace\r\n" -} - -script-branch { - bp.time.wait-for seconds = 240 - quit 1 -} - -run \ No newline at end of file diff --git a/examples/tests/riscv-64/test-kernel-magic.simics b/examples/tests/riscv-64/test-kernel-magic.simics deleted file mode 100644 index 91e04817..00000000 --- a/examples/tests/riscv-64/test-kernel-magic.simics +++ /dev/null @@ -1,31 +0,0 @@ -load-module tsffs - -@tsffs = SIM_create_object(SIM_get_class("tsffs"), "tsffs", []) -tsffs.log-level 4 -@tsffs.iface.tsffs.set_start_on_harness(True) -@tsffs.iface.tsffs.set_stop_on_harness(True) -@tsffs.iface.tsffs.set_timeout(3.0) -@tsffs.iface.tsffs.add_exception_solution(14) -@tsffs.iface.tsffs.set_generate_random_corpus(True) -@tsffs.iface.tsffs.set_iterations(1000) -@tsffs.iface.tsffs.set_use_snapshots(True) - -load-target "risc-v-simple/linux" namespace = riscv machine:hardware:storage:disk1:image = "test.fs.craff" - -script-branch { - bp.time.wait-for seconds = 15 - board.console.con.input "mkdir /mnt/disk0\r\n" - bp.time.wait-for seconds = 1.0 - board.console.con.input "mount /dev/vdb /mnt/disk0\r\n" - bp.time.wait-for seconds = 1.0 - board.console.con.input "insmod /mnt/disk0/test-mod.ko\r\n" - bp.time.wait-for seconds = 1.0 - board.console.con.input "/mnt/disk0/test-mod-userspace\r\n" -} - -script-branch { - bp.time.wait-for seconds = 240 - quit 1 -} - -run \ No newline at end of file diff --git a/examples/tests/riscv-64/test-userspace-magic.simics b/examples/tests/riscv-64/test-userspace-magic.simics deleted file mode 100644 index 6a466fed..00000000 --- a/examples/tests/riscv-64/test-userspace-magic.simics +++ /dev/null @@ -1,30 +0,0 @@ -load-module tsffs - -@tsffs = SIM_create_object(SIM_get_class("tsffs"), "tsffs", []) -tsffs.log-level 4 -@tsffs.iface.tsffs.set_start_on_harness(True) -@tsffs.iface.tsffs.set_stop_on_harness(True) -@tsffs.iface.tsffs.set_timeout(3.0) -@tsffs.iface.tsffs.add_exception_solution(14) -@tsffs.iface.tsffs.set_generate_random_corpus(True) -@tsffs.iface.tsffs.set_iterations(1000) -@tsffs.iface.tsffs.set_use_snapshots(True) - -load-target "risc-v-simple/linux" namespace = riscv machine:hardware:storage:disk1:image = "test.fs.craff" - -script-branch { - bp.time.wait-for seconds = 15 - board.console.con.input "mkdir /mnt/disk0\r\n" - bp.time.wait-for seconds = 1.0 - board.console.con.input "mount /dev/vdb /mnt/disk0\r\n" - bp.time.wait-for seconds = 1.0 - board.console.con.capture-start out.txt - board.console.con.input "/mnt/disk0/test\r\n" -} - -script-branch { - bp.time.wait-for seconds = 240 - quit 1 -} - -run \ No newline at end of file diff --git a/examples/tests/x86-user/build.sh b/examples/tests/x86-user/build.sh deleted file mode 100755 index aa60c82e..00000000 --- a/examples/tests/x86-user/build.sh +++ /dev/null @@ -1,18 +0,0 @@ -#!/bin/bash - -if [ -z "${SIMICS_BASE}" ]; then - echo "SIMICS_BASE must be set" - exit 1 -fi - -SCRIPT_DIR=$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" &>/dev/null && pwd) - -cp "${SCRIPT_DIR}/../../../harness/tsffs-gcc-x86.h" "${SCRIPT_DIR}/tsffs-gcc-x86.h" -cp "${SCRIPT_DIR}/../../rsrc/minimal_boot_disk.craff" "${SCRIPT_DIR}/minimal_boot_disk.craff" - -ninja - -dd if=/dev/zero of=test.fs bs=1024 count=131072 -mkfs.fat test.fs -mcopy -i test.fs test ::test -"${SIMICS_BASE}/linux64/bin/craff" -o test.fs.craff test.fs \ No newline at end of file diff --git a/examples/tests/x86-user/test-user.py b/examples/tests/x86-user/test-user.py deleted file mode 100644 index 642fac62..00000000 --- a/examples/tests/x86-user/test-user.py +++ /dev/null @@ -1,60 +0,0 @@ -import cli -import simics - -simics.SIM_load_module("tsffs") - -tsffs = simics.SIM_create_object(simics.SIM_get_class("tsffs"), "tsffs", []) -simics.SIM_set_log_level(tsffs, 4) -tsffs.iface.tsffs.set_start_on_harness(True) -tsffs.iface.tsffs.set_stop_on_harness(True) -tsffs.iface.tsffs.set_timeout(3.0) -tsffs.iface.tsffs.set_generate_random_corpus(True) -tsffs.iface.tsffs.set_iterations(1000) -tsffs.iface.tsffs.set_use_snapshots(True) - -simics.SIM_load_target( - "qsp-x86/clear-linux", # Target - "qsp", # Namespace - [], # Presets - [["machine:hardware:storage:disk1:image", "test.fs.craff"]], -) - -qsp = simics.SIM_get_object("qsp") - -tsffs.iface.tsffs.add_architecture_hint(qsp.mb.cpu0.core[0][0], "i386") - - -# When we're running userspace code, we don't want to catch exeptions until -# we actually start fuzzing, including GPFs on other code. We can wait to -# enable the exception until later (we could even toggle it on and off per -# iteration) -def on_magic(o, e, r): - # Wait for magic stop -- in reality this could wait for any stop - # condition, but we make it easy on ourselves for testing purposes - if r == 1: - tsffs.iface.tsffs.add_exception_solution(13) - - -def startup_script_branch(): - cli.global_cmds.wait_for_global_time(seconds=20.0, _relative=True) - qsp.serconsole.con.iface.con_input.input_str("sudo mkdir /disk0/\n") - cli.global_cmds.wait_for_global_time(seconds=1.0, _relative=True) - qsp.serconsole.con.iface.con_input.input_str("sudo mount /dev/sdb /disk0/\n") - cli.global_cmds.wait_for_global_time(seconds=1.0, _relative=True) - qsp.serconsole.con.iface.con_input.input_str("ls /disk0\n") - cli.global_cmds.wait_for_global_time(seconds=1.0, _relative=True) - qsp.serconsole.con.iface.con_input.input_str("/disk0/test\n") - - -def exit_script_branch(): - cli.global_cmds.wait_for_global_time(seconds=240.0, _relative=True) - simics.SIM_quit(1) - - -simics.SIM_hap_add_callback("Core_Magic_Instruction", on_magic, None) -cli.sb_create(startup_script_branch) -cli.sb_create(exit_script_branch) - -simics.SIM_continue(0) -# NOTE: If running from CLI, omit this! -simics.SIM_main_loop() diff --git a/examples/tests/x86_64-breakpoint-uefi-edk2/test-magic.simics b/examples/tests/x86_64-breakpoint-uefi-edk2/test-magic.simics deleted file mode 100644 index 5a79353d..00000000 --- a/examples/tests/x86_64-breakpoint-uefi-edk2/test-magic.simics +++ /dev/null @@ -1,43 +0,0 @@ -load-module tsffs - -@tsffs = SIM_create_object(SIM_get_class("tsffs"), "tsffs", []) -tsffs.log-level 4 -@tsffs.iface.tsffs.set_start_on_harness(True) -@tsffs.iface.tsffs.set_stop_on_harness(True) -@tsffs.iface.tsffs.set_timeout(3.0) -@tsffs.iface.tsffs.add_exception_solution(14) -@tsffs.iface.tsffs.add_exception_solution(6) -@tsffs.iface.tsffs.set_generate_random_corpus(True) -@tsffs.iface.tsffs.set_iterations(1000) -@tsffs.iface.tsffs.set_use_snapshots(True) -@tsffs.iface.tsffs.set_all_breakpoints_are_solutions(True) - -load-target "qsp-x86/uefi-shell" namespace = qsp machine:hardware:storage:disk0:image = "minimal_boot_disk.craff" - -script-branch { - bp.time.wait-for seconds = 15 - qsp.serconsole.con.input "\n" - bp.time.wait-for seconds = .5 - qsp.serconsole.con.input "FS0:\n" - bp.time.wait-for seconds = .5 - local $manager = (start-agent-manager) - qsp.serconsole.con.input ("SimicsAgent.efi --download " + (lookup-file "%simics%/test.efi") + "\n") - bp.time.wait-for seconds = .5 - qsp.serconsole.con.input "test.efi\n" -} - -script-branch { - local $BP_BUFFER_ADDRESS = 0x4000000 - local $MAGIC_START = 1 - bp.magic.wait-for $MAGIC_START - local $ctx = (new-context) - qsp.mb.cpu0.core[0][0].set-context $ctx - $ctx.break -w $BP_BUFFER_ADDRESS 0x1000 -} - -script-branch { - bp.time.wait-for seconds = 240 - quit 1 -} - -run \ No newline at end of file diff --git a/examples/tests/x86_64-crash-uefi/test-magic.simics b/examples/tests/x86_64-crash-uefi/test-magic.simics deleted file mode 100644 index 0cc7faad..00000000 --- a/examples/tests/x86_64-crash-uefi/test-magic.simics +++ /dev/null @@ -1,32 +0,0 @@ -load-module tsffs - -@tsffs = SIM_create_object(SIM_get_class("tsffs"), "tsffs", []) -tsffs.log-level 4 -@tsffs.iface.tsffs.set_start_on_harness(True) -@tsffs.iface.tsffs.set_stop_on_harness(True) -@tsffs.iface.tsffs.set_timeout(3.0) -@tsffs.iface.tsffs.add_exception_solution(14) -@tsffs.iface.tsffs.set_generate_random_corpus(True) -@tsffs.iface.tsffs.set_iterations(1000) -@tsffs.iface.tsffs.set_use_snapshots(True) - -load-target "qsp-x86/uefi-shell" namespace = qsp machine:hardware:storage:disk0:image = "minimal_boot_disk.craff" - -script-branch { - bp.time.wait-for seconds = 15 - qsp.serconsole.con.input "\n" - bp.time.wait-for seconds = .5 - qsp.serconsole.con.input "FS0:\n" - bp.time.wait-for seconds = .5 - local $manager = (start-agent-manager) - qsp.serconsole.con.input ("SimicsAgent.efi --download " + (lookup-file "%simics%/test.efi") + "\n") - bp.time.wait-for seconds = .5 - qsp.serconsole.con.input "test.efi\n" -} - -script-branch { - bp.time.wait-for seconds = 240 - quit 1 -} - -run \ No newline at end of file diff --git a/examples/tests/x86_64-timeout-uefi-edk2/test-magic.simics b/examples/tests/x86_64-timeout-uefi-edk2/test-magic.simics deleted file mode 100644 index 0f578ae6..00000000 --- a/examples/tests/x86_64-timeout-uefi-edk2/test-magic.simics +++ /dev/null @@ -1,32 +0,0 @@ -load-module tsffs - -@tsffs = SIM_create_object(SIM_get_class("tsffs"), "tsffs", []) -tsffs.log-level 4 -@tsffs.iface.tsffs.set_start_on_harness(True) -@tsffs.iface.tsffs.set_stop_on_harness(True) -@tsffs.iface.tsffs.set_timeout(3.0) -@tsffs.iface.tsffs.add_exception_solution(14) -@tsffs.iface.tsffs.set_generate_random_corpus(True) -@tsffs.iface.tsffs.set_iterations(100) -@tsffs.iface.tsffs.set_use_snapshots(True) - -load-target "qsp-x86/uefi-shell" namespace = qsp machine:hardware:storage:disk0:image = "minimal_boot_disk.craff" - -script-branch { - bp.time.wait-for seconds = 15 - qsp.serconsole.con.input "\n" - bp.time.wait-for seconds = .5 - qsp.serconsole.con.input "FS0:\n" - bp.time.wait-for seconds = .5 - local $manager = (start-agent-manager) - qsp.serconsole.con.input ("SimicsAgent.efi --download " + (lookup-file "%simics%/test.efi") + "\n") - bp.time.wait-for seconds = .5 - qsp.serconsole.con.input "test.efi\n" -} - -script-branch { - bp.time.wait-for seconds = 240 - quit 1 -} - -run \ No newline at end of file diff --git a/examples/tests/x86_64-uefi-edk2/test-call-all-apis.simics b/examples/tests/x86_64-uefi-edk2/test-call-all-apis.simics deleted file mode 100644 index 1c46b22c..00000000 --- a/examples/tests/x86_64-uefi-edk2/test-call-all-apis.simics +++ /dev/null @@ -1,51 +0,0 @@ -load-module tsffs - -@tsffs = SIM_create_object(SIM_get_class("tsffs"), "tsffs", []) -tsffs.log-level 4 -@tsffs.iface.tsffs.set_start_on_harness(True) -@tsffs.iface.tsffs.set_start_magic_number(1) -@tsffs.iface.tsffs.set_stop_on_harness(True) -@tsffs.iface.tsffs.set_stop_magic_number(2) -@tsffs.iface.tsffs.set_timeout(3.0) -@tsffs.iface.tsffs.add_exception_solution(14) -@tsffs.iface.tsffs.add_exception_solution(6) -@tsffs.iface.tsffs.remove_exception_solution(14) -@tsffs.iface.tsffs.remove_exception_solution(6) -@tsffs.iface.tsffs.set_all_exceptions_are_solutions(True) -@tsffs.iface.tsffs.set_all_exceptions_are_solutions(False) -@tsffs.iface.tsffs.add_breakpoint_solution(1) -@tsffs.iface.tsffs.remove_breakpoint_solution(1) -@tsffs.iface.tsffs.set_all_breakpoints_are_solutions(True) -@tsffs.iface.tsffs.set_all_breakpoints_are_solutions(False) -@tsffs.iface.tsffs.set_cmplog_enabled(False) -@tsffs.iface.tsffs.set_cmplog_enabled(True) -@tsffs.iface.tsffs.set_generate_random_corpus(True) -@import time -@print("Sleeping") -@time.sleep(30) -@tsffs.iface.tsffs.set_corpus_directory("%simics%/corpus") -@tsffs.iface.tsffs.set_solutions_directory("%simics%/solutions") -@tsffs.iface.tsffs.set_iterations(1000) -@tsffs.iface.tsffs.set_use_snapshots(True) -@tsffs.iface.tsffs.tokenize_executable("%simics%/test.efi") - -load-target "qsp-x86/uefi-shell" namespace = qsp machine:hardware:storage:disk0:image = "minimal_boot_disk.craff" - -script-branch { - bp.time.wait-for seconds = 15 - qsp.serconsole.con.input "\n" - bp.time.wait-for seconds = .5 - qsp.serconsole.con.input "FS0:\n" - bp.time.wait-for seconds = .5 - local $manager = (start-agent-manager) - qsp.serconsole.con.input ("SimicsAgent.efi --download " + (lookup-file "%simics%/test.efi") + "\n") - bp.time.wait-for seconds = .5 - qsp.serconsole.con.input "test.efi\n" -} - -script-branch { - bp.time.wait-for seconds = 240 - quit 1 -} - -run \ No newline at end of file diff --git a/examples/tests/x86_64-uefi-edk2/test-uefi-magic.simics b/examples/tests/x86_64-uefi-edk2/test-uefi-magic.simics deleted file mode 100644 index efff5a41..00000000 --- a/examples/tests/x86_64-uefi-edk2/test-uefi-magic.simics +++ /dev/null @@ -1,33 +0,0 @@ -load-module tsffs - -@tsffs = SIM_create_object(SIM_get_class("tsffs"), "tsffs", []) -tsffs.log-level 4 -@tsffs.iface.tsffs.set_start_on_harness(True) -@tsffs.iface.tsffs.set_stop_on_harness(True) -@tsffs.iface.tsffs.set_timeout(3.0) -@tsffs.iface.tsffs.add_exception_solution(14) -@tsffs.iface.tsffs.add_exception_solution(6) -@tsffs.iface.tsffs.set_generate_random_corpus(True) -@tsffs.iface.tsffs.set_iterations(1000) -@tsffs.iface.tsffs.set_use_snapshots(True) - -load-target "qsp-x86/uefi-shell" namespace = qsp machine:hardware:storage:disk0:image = "minimal_boot_disk.craff" - -script-branch { - bp.time.wait-for seconds = 15 - qsp.serconsole.con.input "\n" - bp.time.wait-for seconds = .5 - qsp.serconsole.con.input "FS0:\n" - bp.time.wait-for seconds = .5 - local $manager = (start-agent-manager) - qsp.serconsole.con.input ("SimicsAgent.efi --download " + (lookup-file "%simics%/test.efi") + "\n") - bp.time.wait-for seconds = .5 - qsp.serconsole.con.input "test.efi\n" -} - -script-branch { - bp.time.wait-for seconds = 240 - quit 1 -} - -run \ No newline at end of file diff --git a/examples/tests/x86_64-uefi/.gitignore b/examples/tests/x86_64-uefi/.gitignore deleted file mode 100644 index 77bdfbae..00000000 --- a/examples/tests/x86_64-uefi/.gitignore +++ /dev/null @@ -1,6 +0,0 @@ -.ninja_log -test.efi -test.lib -test.o -*.h -*.craff \ No newline at end of file diff --git a/examples/tests/x86_64-uefi/test-magic.simics b/examples/tests/x86_64-uefi/test-magic.simics deleted file mode 100644 index b120d4f8..00000000 --- a/examples/tests/x86_64-uefi/test-magic.simics +++ /dev/null @@ -1,32 +0,0 @@ -load-module tsffs - -@tsffs = SIM_create_object(SIM_get_class("tsffs"), "tsffs", []) -tsffs.log-level 1 -@tsffs.iface.tsffs.set_start_on_harness(True) -@tsffs.iface.tsffs.set_stop_on_harness(True) -@tsffs.iface.tsffs.set_timeout(3.0) -@tsffs.iface.tsffs.add_exception_solution(14) -@tsffs.iface.tsffs.set_generate_random_corpus(True) -@tsffs.iface.tsffs.set_iterations(1000) -@tsffs.iface.tsffs.set_use_snapshots(True) - -load-target "qsp-x86/uefi-shell" namespace = qsp machine:hardware:storage:disk0:image = "minimal_boot_disk.craff" - -script-branch { -bp.time.wait-for seconds = 15 -qsp.serconsole.con.input "\n" -bp.time.wait-for seconds = .5 -qsp.serconsole.con.input "FS0:\n" -bp.time.wait-for seconds = .5 -local $manager = (start-agent-manager) -qsp.serconsole.con.input ("SimicsAgent.efi --download " + (lookup-file "%simics%/test.efi") + "\n") -bp.time.wait-for seconds = .5 -qsp.serconsole.con.input "test.efi\n" -} - -script-branch { -bp.time.wait-for seconds = 240 -quit 1 -} - -run \ No newline at end of file diff --git a/examples/tests/x86_64-uefi/test-manual-max.py b/examples/tests/x86_64-uefi/test-manual-max.py deleted file mode 100644 index 68e42baa..00000000 --- a/examples/tests/x86_64-uefi/test-manual-max.py +++ /dev/null @@ -1,101 +0,0 @@ -import cli -import simics - -simics.SIM_load_module("tsffs") - -tsffs = simics.SIM_create_object(simics.SIM_get_class("tsffs"), "tsffs", []) -simics.SIM_set_log_level(tsffs, 4) -tsffs.iface.tsffs.set_start_on_harness(False) -tsffs.iface.tsffs.set_stop_on_harness(False) -tsffs.iface.tsffs.set_timeout(3.0) -tsffs.iface.tsffs.add_exception_solution(14) -tsffs.iface.tsffs.set_generate_random_corpus(True) -tsffs.iface.tsffs.set_iterations(1000) -tsffs.iface.tsffs.set_use_snapshots(False) - -simics.SIM_load_target( - "qsp-x86/uefi-shell", # Target - "qsp", # Namespace - [], # Presets - [ # Cmdline args - ["machine:hardware:storage:disk0:image", "minimal_boot_disk.craff"], - ["machine:hardware:processor:class", "x86-goldencove-server"], - ], -) - -qsp = simics.SIM_get_object("qsp") - - -def on_magic(o, e, r): - # Wait for magic stop -- in reality this could wait for any stop - # condition, but we make it easy on ourselves for testing purposes - if r == 2: - print("Got magic stop...") - tsffs.iface.tsffs.stop() - - -def start_script_branch(): - # Wait for magic start -- in reality this could wait for any - # start condition, but we make it easy on ourselves for testing purposes - print("Waiting for magic start...") - conf.bp.magic.cli_cmds.wait_for(number=1) - print("Got magic start...") - - # In reality, you probably have a known buffer in mind to fuzz - testcase_address_regno = conf.qsp.mb.cpu0.core[0][0].iface.int_register.get_number( - "rdi" - ) - print("testcase address regno: ", testcase_address_regno) - testcase_address = conf.qsp.mb.cpu0.core[0][0].iface.int_register.read( - testcase_address_regno - ) - print("testcase address: ", testcase_address) - maximum_size = 8 - virt = False - - print( - "Starting with testcase address", - hex(testcase_address), - "maximum size", - hex(maximum_size), - "virt", - virt, - ) - - tsffs.iface.tsffs.start_with_maximum_size( - conf.qsp.mb.cpu0.core[0][0], - testcase_address, - maximum_size, - True, - ) - - -def startup_script_branch(): - cli.global_cmds.wait_for_global_time(seconds=15.0, _relative=True) - qsp.serconsole.con.iface.con_input.input_str("\n") - cli.global_cmds.wait_for_global_time(seconds=1.0, _relative=True) - qsp.serconsole.con.iface.con_input.input_str("FS0:\n") - cli.global_cmds.wait_for_global_time(seconds=1.0, _relative=True) - cli.global_cmds.start_agent_manager() - qsp.serconsole.con.iface.con_input.input_str( - "SimicsAgent.efi --download " - + simics.SIM_lookup_file("%simics%/test.efi") - + "\n" - ) - cli.global_cmds.wait_for_global_time(seconds=3.0, _relative=True) - qsp.serconsole.con.iface.con_input.input_str("test.efi\n") - - -def exit_script_branch(): - cli.global_cmds.wait_for_global_time(seconds=240.0, _relative=True) - simics.SIM_quit(1) - - -simics.SIM_hap_add_callback("Core_Magic_Instruction", on_magic, None) -cli.sb_create(start_script_branch) -cli.sb_create(startup_script_branch) -cli.sb_create(exit_script_branch) - -simics.SIM_continue(0) -# NOTE: If running from CLI, omit this! -simics.SIM_main_loop() diff --git a/examples/tests/x86_64-uefi/test-manual.py b/examples/tests/x86_64-uefi/test-manual.py deleted file mode 100644 index 59b36f33..00000000 --- a/examples/tests/x86_64-uefi/test-manual.py +++ /dev/null @@ -1,104 +0,0 @@ -import cli -import simics - -simics.SIM_load_module("tsffs") - -tsffs = simics.SIM_create_object(simics.SIM_get_class("tsffs"), "tsffs", []) -simics.SIM_set_log_level(tsffs, 1) -tsffs.iface.tsffs.set_start_on_harness(False) -tsffs.iface.tsffs.set_stop_on_harness(False) -tsffs.iface.tsffs.set_timeout(3.0) -tsffs.iface.tsffs.add_exception_solution(14) -tsffs.iface.tsffs.set_generate_random_corpus(True) -tsffs.iface.tsffs.set_iterations(1000) -tsffs.iface.tsffs.set_use_snapshots(False) - -simics.SIM_load_target( - "qsp-x86/uefi-shell", # Target - "qsp", # Namespace - [], # Presets - [ # Cmdline args - ["machine:hardware:storage:disk0:image", "minimal_boot_disk.craff"], - ["machine:hardware:processor:class", "x86-goldencove-server"], - ], -) - -qsp = simics.SIM_get_object("qsp") - - -def on_magic(o, e, r): - # Wait for magic stop -- in reality this could wait for any stop - # condition, but we make it easy on ourselves for testing purposes - if r == 2: - print("Got magic stop...") - tsffs.iface.tsffs.stop() - - -def start_script_branch(): - # Wait for magic start -- in reality this could wait for any - # start condition, but we make it easy on ourselves for testing purposes - print("Waiting for magic start...") - conf.bp.magic.cli_cmds.wait_for(number=1) - print("Got magic start...") - - # In reality, you probably have a known buffer in mind to fuzz - testcase_address_regno = conf.qsp.mb.cpu0.core[0][0].iface.int_register.get_number( - "rdi" - ) - print("testcase address regno: ", testcase_address_regno) - testcase_address = conf.qsp.mb.cpu0.core[0][0].iface.int_register.read( - testcase_address_regno - ) - print("testcase address: ", testcase_address) - size_regno = conf.qsp.mb.cpu0.core[0][0].iface.int_register.get_number("rsi") - print("size regno: ", size_regno) - size_address = conf.qsp.mb.cpu0.core[0][0].iface.int_register.read(size_regno) - print("size address: ", size_address) - virt = False - - print( - "Starting with testcase address", - hex(testcase_address), - "size address", - hex(size_address), - "virt", - virt, - ) - - tsffs.iface.tsffs.start( - conf.qsp.mb.cpu0.core[0][0], - testcase_address, - size_address, - True, - ) - - -def startup_script_branch(): - cli.global_cmds.wait_for_global_time(seconds=15.0, _relative=True) - qsp.serconsole.con.iface.con_input.input_str("\n") - cli.global_cmds.wait_for_global_time(seconds=1.0, _relative=True) - qsp.serconsole.con.iface.con_input.input_str("FS0:\n") - cli.global_cmds.wait_for_global_time(seconds=1.0, _relative=True) - cli.global_cmds.start_agent_manager() - qsp.serconsole.con.iface.con_input.input_str( - "SimicsAgent.efi --download " - + simics.SIM_lookup_file("%simics%/test.efi") - + "\n" - ) - cli.global_cmds.wait_for_global_time(seconds=3.0, _relative=True) - qsp.serconsole.con.iface.con_input.input_str("test.efi\n") - - -def exit_script_branch(): - cli.global_cmds.wait_for_global_time(seconds=240.0, _relative=True) - simics.SIM_quit(1) - - -simics.SIM_hap_add_callback("Core_Magic_Instruction", on_magic, None) -cli.sb_create(start_script_branch) -cli.sb_create(startup_script_branch) -cli.sb_create(exit_script_branch) - -simics.SIM_continue(0) -# NOTE: If running from CLI, omit this! -simics.SIM_main_loop() diff --git a/examples/tutorials/edk2-simics-platform/build-custom.sh b/examples/tutorials/edk2-simics-platform/build-custom.sh index 61137292..8740fc1a 100755 --- a/examples/tutorials/edk2-simics-platform/build-custom.sh +++ b/examples/tutorials/edk2-simics-platform/build-custom.sh @@ -1,5 +1,8 @@ #!/bin/bash +# Copyright (C) 2024 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + SCRIPT_DIR=$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" &>/dev/null && pwd) IMAGE_NAME="edk2-simics" DOCKERFILE="${SCRIPT_DIR}/Dockerfile-custom" diff --git a/examples/tutorials/edk2-simics-platform/build.sh b/examples/tutorials/edk2-simics-platform/build.sh index 8dda6243..998e3539 100755 --- a/examples/tutorials/edk2-simics-platform/build.sh +++ b/examples/tutorials/edk2-simics-platform/build.sh @@ -1,5 +1,8 @@ #!/bin/bash +# Copyright (C) 2024 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + SCRIPT_DIR=$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" &>/dev/null && pwd) IMAGE_NAME="edk2-simics-platform" DOCKERFILE="${SCRIPT_DIR}/Dockerfile" diff --git a/examples/tutorials/edk2-simics-platform/project/fuzz.simics b/examples/tutorials/edk2-simics-platform/project/fuzz.simics index 1e0fb88b..56b7db1c 100644 --- a/examples/tutorials/edk2-simics-platform/project/fuzz.simics +++ b/examples/tutorials/edk2-simics-platform/project/fuzz.simics @@ -1,11 +1,13 @@ +# Copyright (C) 2024 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + load-module tsffs -@tsffs = SIM_create_object(SIM_get_class("tsffs"), "tsffs", []) +init-tsffs tsffs.log-level 4 -@tsffs.iface.tsffs.set_start_on_harness(True) -@tsffs.iface.tsffs.set_stop_on_harness(True) -@tsffs.iface.tsffs.set_timeout(3.0) -@tsffs.iface.tsffs.add_exception_solution(13) -@tsffs.iface.tsffs.add_exception_solution(14) +@tsffs.start_on_harness = True +@tsffs.stop_on_harness = True +@tsffs.timeout = 3.0 +@tsffs.exceptions = [13, 14] load-module uefi-fw-tracker @@ -21,7 +23,7 @@ script-branch { while 1 { bp.source_location.wait-for DebugAssert -x -error-not-planted echo "Got breakpoint" - @tsffs.iface.tsffs.solution(1, "DebugAssert") + @tsffs.iface.fuzz.solution(1, "DebugAssert") } } diff --git a/examples/tutorials/edk2-simics-platform/project/fuzz2.simics b/examples/tutorials/edk2-simics-platform/project/fuzz2.simics index 2d169e2c..7414dfff 100644 --- a/examples/tutorials/edk2-simics-platform/project/fuzz2.simics +++ b/examples/tutorials/edk2-simics-platform/project/fuzz2.simics @@ -1,11 +1,13 @@ +# Copyright (C) 2024 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + load-module tsffs -@tsffs = SIM_create_object(SIM_get_class("tsffs"), "tsffs", []) +init-tsffs tsffs.log-level 4 -@tsffs.iface.tsffs.set_start_on_harness(True) -@tsffs.iface.tsffs.set_stop_on_harness(True) -@tsffs.iface.tsffs.set_timeout(3.0) -@tsffs.iface.tsffs.add_exception_solution(13) -@tsffs.iface.tsffs.add_exception_solution(14) +@tsffs.start_on_harness = True +@tsffs.stop_on_harness = True +@tsffs.timeout = 3.0 +@tsffs.exceptions = [13, 14] load-module uefi-fw-tracker @@ -22,6 +24,6 @@ qsp.software.enable-tracker $ctx = (new-context) qsp.mb.cpu0.core[0][0].set-context $ctx $debug_assert_bp = ($ctx.break -x $debug_assert_address) -@tsffs.iface.tsffs.add_breakpoint_solution(simenv.debug_assert_bp) +@tsffs.breakpoints = [simenv.debug_assert_bp] run diff --git a/examples/tutorials/edk2-simics-platform/project/run-alderlake.simics b/examples/tutorials/edk2-simics-platform/project/run-alderlake.simics index c1e992fa..7faeb0dd 100644 --- a/examples/tutorials/edk2-simics-platform/project/run-alderlake.simics +++ b/examples/tutorials/edk2-simics-platform/project/run-alderlake.simics @@ -1,14 +1,5 @@ -# Load the TSFFS module (to make sure we can load it) -# load-module tsffs -# @tsffs = SIM_create_object(SIM_get_class("tsffs"), "tsffs", []) -# tsffs.log-level 2 -# @tsffs.iface.tsffs.set_start_on_harness(True) -# @tsffs.iface.tsffs.set_stop_on_harness(True) -# @tsffs.iface.tsffs.set_timeout(3.0) -# @tsffs.iface.tsffs.add_exception_solution(13) -# @tsffs.iface.tsffs.add_exception_solution(14) -# @tsffs.iface.tsffs.set_corpus_directory("%simics%/corpus") -# @tsffs.iface.tsffs.set_solutions_directory("%simics%/solutions") +# Copyright (C) 2024 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 load-target "qsp-x86/qsp-uefi-custom-alderlake" namespace = qsp machine:hardware:firmware:bios = "%simics%/targets/qsp-x86/images/ALDERLAKEPRVP.fd" machine:hardware:storage:disk0:image = "minimal_boot_disk.craff" machine:hardware:processor:class = "x86-alderlake" diff --git a/examples/tutorials/edk2-simics-platform/project/run-custom.simics b/examples/tutorials/edk2-simics-platform/project/run-custom.simics index 709cc814..4490d0d9 100644 --- a/examples/tutorials/edk2-simics-platform/project/run-custom.simics +++ b/examples/tutorials/edk2-simics-platform/project/run-custom.simics @@ -1,12 +1,14 @@ +# Copyright (C) 2024 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + # Load the TSFFS module (to make sure we can load it) load-module tsffs -@tsffs = SIM_create_object(SIM_get_class("tsffs"), "tsffs", []) +init-tsffs tsffs.log-level 4 -@tsffs.iface.tsffs.set_start_on_harness(True) -@tsffs.iface.tsffs.set_stop_on_harness(True) -@tsffs.iface.tsffs.set_timeout(3.0) -@tsffs.iface.tsffs.add_exception_solution(13) -@tsffs.iface.tsffs.add_exception_solution(14) +@tsffs.start_on_harness = True +@tsffs.stop_on_harness = True +@tsffs.timeout = 3.0 +@tsffs.exceptions = [13, 14] load-target "qsp-x86/qsp-uefi-custom" namespace = qsp machine:hardware:firmware:bios = "%simics%/targets/qsp-x86/images/BOARDX58ICH10_CUSTOM.fd" diff --git a/examples/tutorials/edk2-simics-platform/project/run.simics b/examples/tutorials/edk2-simics-platform/project/run.simics index 7ec81da5..78d56d2a 100644 --- a/examples/tutorials/edk2-simics-platform/project/run.simics +++ b/examples/tutorials/edk2-simics-platform/project/run.simics @@ -1,3 +1,6 @@ +# Copyright (C) 2024 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + load-target "qsp-x86/qsp-uefi-custom" namespace = qsp machine:hardware:firmware:bios = "%simics%/workspace/Build/SimicsOpenBoardPkg/BoardX58Ich10/DEBUG_GCC/FV/BOARDX58ICH10.fd" script-branch { diff --git a/examples/tutorials/edk2-simics-platform/project/uefi.params b/examples/tutorials/edk2-simics-platform/project/uefi.params index a4acfb6b..c6bbb83a 100644 --- a/examples/tutorials/edk2-simics-platform/project/uefi.params +++ b/examples/tutorials/edk2-simics-platform/project/uefi.params @@ -1,2 +1,2 @@ # -*- Python -*- -['uefi_fw_tracker', {'map_info': [[4294885568, '/home/rhart/hub/tsffs/examples/tutorials/edk2-simics-platform/project/workspace/Build/SimicsOpenBoardPkg/BoardX58Ich10/DEBUG_GCC/X64/SimicsOpenBoardPkg/SecCore/SecMain/DEBUG/SecMain.efi'], [8520000, '/home/rhart/hub/tsffs/examples/tutorials/edk2-simics-platform/project/workspace/Build/SimicsOpenBoardPkg/BoardX58Ich10/DEBUG_GCC/X64/MdeModulePkg/Core/Pei/PeiMain/DEBUG/PeiCore.efi'], [8572224, '/home/rhart/hub/tsffs/examples/tutorials/edk2-simics-platform/project/workspace/Build/SimicsOpenBoardPkg/BoardX58Ich10/DEBUG_GCC/X64/UefiCpuPkg/CpuMpPei/CpuMpPei/DEBUG/CpuMpPei.efi'], [8627776, '/home/rhart/hub/tsffs/examples/tutorials/edk2-simics-platform/project/workspace/Build/SimicsOpenBoardPkg/BoardX58Ich10/DEBUG_GCC/X64/MdeModulePkg/Universal/PCD/Pei/Pcd/DEBUG/PcdPeim.efi'], [8649536, '/home/rhart/hub/tsffs/examples/tutorials/edk2-simics-platform/project/workspace/Build/SimicsOpenBoardPkg/BoardX58Ich10/DEBUG_GCC/X64/MdeModulePkg/Universal/ReportStatusCodeRouter/Pei/ReportStatusCodeRouterPei/DEBUG/ReportStatusCodeRouterPei.efi'], [8656192, '/home/rhart/hub/tsffs/examples/tutorials/edk2-simics-platform/project/workspace/Build/SimicsOpenBoardPkg/BoardX58Ich10/DEBUG_GCC/X64/MdeModulePkg/Universal/StatusCodeHandler/Pei/StatusCodeHandlerPei/DEBUG/StatusCodeHandlerPei.efi'], [8668480, '/home/rhart/hub/tsffs/examples/tutorials/edk2-simics-platform/project/workspace/Build/SimicsOpenBoardPkg/BoardX58Ich10/DEBUG_GCC/X64/UefiCpuPkg/CpuIoPei/CpuIoPei/DEBUG/CpuIoPei.efi'], [8677184, '/home/rhart/hub/tsffs/examples/tutorials/edk2-simics-platform/project/workspace/Build/SimicsOpenBoardPkg/BoardX58Ich10/DEBUG_GCC/X64/MdeModulePkg/Universal/PcatSingleSegmentPciCfg2Pei/PcatSingleSegmentPciCfg2Pei/DEBUG/PcatSingleSegmentPciCfg2Pei.efi'], [8685504, '/home/rhart/hub/tsffs/examples/tutorials/edk2-simics-platform/project/workspace/Build/SimicsOpenBoardPkg/BoardX58Ich10/DEBUG_GCC/X64/MdeModulePkg/Universal/Variable/Pei/VariablePei/DEBUG/PeiVariable.efi'], [8697408, '/home/rhart/hub/tsffs/examples/tutorials/edk2-simics-platform/project/workspace/Build/SimicsOpenBoardPkg/BoardX58Ich10/DEBUG_GCC/X64/MdeModulePkg/Universal/FaultTolerantWritePei/FaultTolerantWritePei/DEBUG/FaultTolerantWritePei.efi'], [8705216, '/home/rhart/hub/tsffs/examples/tutorials/edk2-simics-platform/project/workspace/Build/SimicsOpenBoardPkg/BoardX58Ich10/DEBUG_GCC/X64/MdeModulePkg/Core/DxeIplPeim/DxeIpl/DEBUG/DxeIpl.efi'], [8731200, '/home/rhart/hub/tsffs/examples/tutorials/edk2-simics-platform/project/workspace/Build/SimicsOpenBoardPkg/BoardX58Ich10/DEBUG_GCC/X64/MinPlatformPkg/PlatformInit/ReportFv/ReportFvPei/DEBUG/ReportFvPei.efi'], [8744896, '/home/rhart/hub/tsffs/examples/tutorials/edk2-simics-platform/project/workspace/Build/SimicsOpenBoardPkg/BoardX58Ich10/DEBUG_GCC/X64/MinPlatformPkg/PlatformInit/PlatformInitPei/PlatformInitPreMem/DEBUG/PlatformInitPreMem.efi'], [8784192, '/home/rhart/hub/tsffs/examples/tutorials/edk2-simics-platform/project/workspace/Build/SimicsOpenBoardPkg/BoardX58Ich10/DEBUG_GCC/X64/MinPlatformPkg/PlatformInit/SiliconPolicyPei/SiliconPolicyPeiPreMem/DEBUG/SiliconPolicyPeiPreMem.efi'], [8785344, '/home/rhart/hub/tsffs/examples/tutorials/edk2-simics-platform/project/workspace/Build/SimicsOpenBoardPkg/BoardX58Ich10/DEBUG_GCC/X64/SimicsOpenBoardPkg/SimicsPei/SimicsPei/DEBUG/SimicsPei.efi'], [8800448, '/home/rhart/hub/tsffs/examples/tutorials/edk2-simics-platform/project/workspace/Build/SimicsOpenBoardPkg/BoardX58Ich10/DEBUG_GCC/X64/MinPlatformPkg/PlatformInit/PlatformInitPei/PlatformInitPostMem/DEBUG/PlatformInitPostMem.efi'], [8839232, '/home/rhart/hub/tsffs/examples/tutorials/edk2-simics-platform/project/workspace/Build/SimicsOpenBoardPkg/BoardX58Ich10/DEBUG_GCC/X64/MinPlatformPkg/PlatformInit/SiliconPolicyPei/SiliconPolicyPeiPostMem/DEBUG/SiliconPolicyPeiPostMem.efi'], [8840384, '/home/rhart/hub/tsffs/examples/tutorials/edk2-simics-platform/project/workspace/Build/SimicsOpenBoardPkg/BoardX58Ich10/DEBUG_GCC/X64/UefiCpuPkg/Universal/Acpi/S3Resume2Pei/S3Resume2Pei/DEBUG/S3Resume2Pei.efi'], [9437332, '/home/rhart/hub/tsffs/examples/tutorials/edk2-simics-platform/project/workspace/Build/SimicsOpenBoardPkg/BoardX58Ich10/DEBUG_GCC/X64/MdeModulePkg/Core/Dxe/DxeMain/DEBUG/DxeCore.efi'], [9631816, '/home/rhart/hub/tsffs/examples/tutorials/edk2-simics-platform/project/workspace/Build/SimicsOpenBoardPkg/BoardX58Ich10/DEBUG_GCC/X64/MdeModulePkg/Universal/PCD/Dxe/Pcd/DEBUG/PcdDxe.efi'], [9657252, '/home/rhart/hub/tsffs/examples/tutorials/edk2-simics-platform/project/workspace/Build/SimicsOpenBoardPkg/BoardX58Ich10/DEBUG_GCC/X64/MdeModulePkg/Universal/ReportStatusCodeRouter/RuntimeDxe/ReportStatusCodeRouterRuntimeDxe/DEBUG/ReportStatusCodeRouterRuntimeDxe.efi'], [9669252, '/home/rhart/hub/tsffs/examples/tutorials/edk2-simics-platform/project/workspace/Build/SimicsOpenBoardPkg/BoardX58Ich10/DEBUG_GCC/X64/MdeModulePkg/Universal/StatusCodeHandler/RuntimeDxe/StatusCodeHandlerRuntimeDxe/DEBUG/StatusCodeHandlerRuntimeDxe.efi'], [9683716, '/home/rhart/hub/tsffs/examples/tutorials/edk2-simics-platform/project/workspace/Build/SimicsOpenBoardPkg/BoardX58Ich10/DEBUG_GCC/X64/UefiCpuPkg/CpuIo2Dxe/CpuIo2Dxe/DEBUG/CpuIo2Dxe.efi'], [9691236, '/home/rhart/hub/tsffs/examples/tutorials/edk2-simics-platform/project/workspace/Build/SimicsOpenBoardPkg/BoardX58Ich10/DEBUG_GCC/X64/MdeModulePkg/Universal/Metronome/Metronome/DEBUG/Metronome.efi'], [9698580, '/home/rhart/hub/tsffs/examples/tutorials/edk2-simics-platform/project/workspace/Build/SimicsOpenBoardPkg/BoardX58Ich10/DEBUG_GCC/X64/MdeModulePkg/Universal/WatchdogTimerDxe/WatchdogTimer/DEBUG/WatchdogTimer.efi'], [9704800, '/home/rhart/hub/tsffs/examples/tutorials/edk2-simics-platform/project/workspace/Build/SimicsOpenBoardPkg/BoardX58Ich10/DEBUG_GCC/X64/PcAtChipsetPkg/PcatRealTimeClockRuntimeDxe/PcatRealTimeClockRuntimeDxe/DEBUG/PcRtc.efi'], [9720756, '/home/rhart/hub/tsffs/examples/tutorials/edk2-simics-platform/project/workspace/Build/SimicsOpenBoardPkg/BoardX58Ich10/DEBUG_GCC/X64/MdeModulePkg/Core/RuntimeDxe/RuntimeDxe/DEBUG/RuntimeDxe.efi'], [9731640, '/home/rhart/hub/tsffs/examples/tutorials/edk2-simics-platform/project/workspace/Build/SimicsOpenBoardPkg/BoardX58Ich10/DEBUG_GCC/X64/MdeModulePkg/Universal/MonotonicCounterRuntimeDxe/MonotonicCounterRuntimeDxe/DEBUG/MonotonicCounterRuntimeDxe.efi'], [9739268, '/home/rhart/hub/tsffs/examples/tutorials/edk2-simics-platform/project/workspace/Build/SimicsOpenBoardPkg/BoardX58Ich10/DEBUG_GCC/X64/MdeModulePkg/Universal/BdsDxe/BdsDxe/DEBUG/BdsDxe.efi'], [9832412, '/home/rhart/hub/tsffs/examples/tutorials/edk2-simics-platform/project/workspace/Build/SimicsOpenBoardPkg/BoardX58Ich10/DEBUG_GCC/X64/MdeModulePkg/Universal/SerialDxe/SerialDxe/DEBUG/SerialDxe.efi'], [9839460, '/home/rhart/hub/tsffs/examples/tutorials/edk2-simics-platform/project/workspace/Build/SimicsOpenBoardPkg/BoardX58Ich10/DEBUG_GCC/X64/MdeModulePkg/Universal/Console/TerminalDxe/TerminalDxe/DEBUG/TerminalDxe.efi'], [9872472, '/home/rhart/hub/tsffs/examples/tutorials/edk2-simics-platform/project/workspace/Build/SimicsOpenBoardPkg/BoardX58Ich10/DEBUG_GCC/X64/MdeModulePkg/Universal/DriverHealthManagerDxe/DriverHealthManagerDxe/DEBUG/DriverHealthManagerDxe.efi'], [9915732, '/home/rhart/hub/tsffs/examples/tutorials/edk2-simics-platform/project/workspace/Build/SimicsOpenBoardPkg/BoardX58Ich10/DEBUG_GCC/X64/MdeModulePkg/Universal/SecurityStubDxe/SecurityStubDxe/DEBUG/SecurityStubDxe.efi'], [9947148, '/home/rhart/hub/tsffs/examples/tutorials/edk2-simics-platform/project/workspace/Build/SimicsOpenBoardPkg/BoardX58Ich10/DEBUG_GCC/X64/MdeModulePkg/Universal/CapsuleRuntimeDxe/CapsuleRuntimeDxe/DEBUG/CapsuleRuntimeDxe.efi'], [9955516, '/home/rhart/hub/tsffs/examples/tutorials/edk2-simics-platform/project/workspace/Build/SimicsOpenBoardPkg/BoardX58Ich10/DEBUG_GCC/X64/MdeModulePkg/Universal/ResetSystemRuntimeDxe/ResetSystemRuntimeDxe/DEBUG/ResetSystemRuntimeDxe.efi'], [9968708, '/home/rhart/hub/tsffs/examples/tutorials/edk2-simics-platform/project/workspace/Build/SimicsOpenBoardPkg/BoardX58Ich10/DEBUG_GCC/X64/PcAtChipsetPkg/HpetTimerDxe/HpetTimerDxe/DEBUG/HpetTimerDxe.efi'], [9983572, '/home/rhart/hub/tsffs/examples/tutorials/edk2-simics-platform/project/workspace/Build/SimicsOpenBoardPkg/BoardX58Ich10/DEBUG_GCC/X64/MdeModulePkg/Bus/Pci/PciBusDxe/PciBusDxe/DEBUG/PciBusDxe.efi'], [10057436, '/home/rhart/hub/tsffs/examples/tutorials/edk2-simics-platform/project/workspace/Build/SimicsOpenBoardPkg/BoardX58Ich10/DEBUG_GCC/X64/MdeModulePkg/Bus/Pci/XhciDxe/XhciDxe/DEBUG/XhciDxe.efi'], [10114652, '/home/rhart/hub/tsffs/examples/tutorials/edk2-simics-platform/project/workspace/Build/SimicsOpenBoardPkg/BoardX58Ich10/DEBUG_GCC/X64/MdeModulePkg/Bus/Pci/EhciDxe/EhciDxe/DEBUG/EhciDxe.efi'], [10149724, '/home/rhart/hub/tsffs/examples/tutorials/edk2-simics-platform/project/workspace/Build/SimicsOpenBoardPkg/BoardX58Ich10/DEBUG_GCC/X64/MdeModulePkg/Bus/Pci/UhciDxe/UhciDxe/DEBUG/UhciDxe.efi'], [10178396, '/home/rhart/hub/tsffs/examples/tutorials/edk2-simics-platform/project/workspace/Build/SimicsOpenBoardPkg/BoardX58Ich10/DEBUG_GCC/X64/MdeModulePkg/Bus/Usb/UsbBusDxe/UsbBusDxe/DEBUG/UsbBusDxe.efi'], [10217380, '/home/rhart/hub/tsffs/examples/tutorials/edk2-simics-platform/project/workspace/Build/SimicsOpenBoardPkg/BoardX58Ich10/DEBUG_GCC/X64/MdeModulePkg/Bus/Usb/UsbMassStorageDxe/UsbMassStorageDxe/DEBUG/UsbMassStorageDxe.efi'], [10240956, '/home/rhart/hub/tsffs/examples/tutorials/edk2-simics-platform/project/workspace/Build/SimicsOpenBoardPkg/BoardX58Ich10/DEBUG_GCC/X64/MdeModulePkg/Bus/Usb/UsbKbDxe/UsbKbDxe/DEBUG/UsbKbDxe.efi'], [10266756, '/home/rhart/hub/tsffs/examples/tutorials/edk2-simics-platform/project/workspace/Build/SimicsOpenBoardPkg/BoardX58Ich10/DEBUG_GCC/X64/MdeModulePkg/Universal/Disk/DiskIoDxe/DiskIoDxe/DEBUG/DiskIoDxe.efi'], [10283724, '/home/rhart/hub/tsffs/examples/tutorials/edk2-simics-platform/project/workspace/Build/SimicsOpenBoardPkg/BoardX58Ich10/DEBUG_GCC/X64/MdeModulePkg/Universal/Disk/PartitionDxe/PartitionDxe/DEBUG/PartitionDxe.efi'], [10310236, '/home/rhart/hub/tsffs/examples/tutorials/edk2-simics-platform/project/workspace/Build/SimicsOpenBoardPkg/BoardX58Ich10/DEBUG_GCC/X64/MdeModulePkg/Universal/Disk/UnicodeCollation/EnglishDxe/EnglishDxe/DEBUG/EnglishDxe.efi'], [10317604, '/home/rhart/hub/tsffs/examples/tutorials/edk2-simics-platform/project/workspace/Build/SimicsOpenBoardPkg/BoardX58Ich10/DEBUG_GCC/X64/FatPkg/EnhancedFatDxe/Fat/DEBUG/Fat.efi'], [10359260, '/home/rhart/hub/tsffs/examples/tutorials/edk2-simics-platform/project/workspace/Build/SimicsOpenBoardPkg/BoardX58Ich10/DEBUG_GCC/X64/MdeModulePkg/Universal/Console/GraphicsConsoleDxe/GraphicsConsoleDxe/DEBUG/GraphicsConsoleDxe.efi'], [10382900, '/home/rhart/hub/tsffs/examples/tutorials/edk2-simics-platform/project/workspace/Build/SimicsOpenBoardPkg/BoardX58Ich10/DEBUG_GCC/X64/MdeModulePkg/Universal/Console/ConPlatformDxe/ConPlatformDxe/DEBUG/ConPlatformDxe.efi'], [10399620, '/home/rhart/hub/tsffs/examples/tutorials/edk2-simics-platform/project/workspace/Build/SimicsOpenBoardPkg/BoardX58Ich10/DEBUG_GCC/X64/MdeModulePkg/Universal/Console/ConSplitterDxe/ConSplitterDxe/DEBUG/ConSplitterDxe.efi'], [10432620, '/home/rhart/hub/tsffs/examples/tutorials/edk2-simics-platform/project/workspace/Build/SimicsOpenBoardPkg/BoardX58Ich10/DEBUG_GCC/X64/MdeModulePkg/Universal/DevicePathDxe/DevicePathDxe/DEBUG/DevicePathDxe.efi'], [10483028, '/home/rhart/hub/tsffs/examples/tutorials/edk2-simics-platform/project/workspace/Build/SimicsOpenBoardPkg/BoardX58Ich10/DEBUG_GCC/X64/MdeModulePkg/Universal/MemoryTest/NullMemoryTestDxe/NullMemoryTestDxe/DEBUG/NullMemoryTestDxe.efi'], [10490500, '/home/rhart/hub/tsffs/examples/tutorials/edk2-simics-platform/project/workspace/Build/SimicsOpenBoardPkg/BoardX58Ich10/DEBUG_GCC/X64/MdeModulePkg/Universal/HiiDatabaseDxe/HiiDatabaseDxe/DEBUG/HiiDatabase.efi'], [10620312, '/home/rhart/hub/tsffs/examples/tutorials/edk2-simics-platform/project/workspace/Build/SimicsOpenBoardPkg/BoardX58Ich10/DEBUG_GCC/X64/MdeModulePkg/Universal/SetupBrowserDxe/SetupBrowserDxe/DEBUG/SetupBrowser.efi'], [10727200, '/home/rhart/hub/tsffs/examples/tutorials/edk2-simics-platform/project/workspace/Build/SimicsOpenBoardPkg/BoardX58Ich10/DEBUG_GCC/X64/MdeModulePkg/Universal/DisplayEngineDxe/DisplayEngineDxe/DEBUG/DisplayEngine.efi'], [11072364, '/home/rhart/hub/tsffs/examples/tutorials/edk2-simics-platform/project/workspace/Build/SimicsOpenBoardPkg/BoardX58Ich10/DEBUG_GCC/X64/IntelSiliconPkg/Feature/SmmAccess/SmmAccessDxe/SmmAccess/DEBUG/SmmAccess.efi'], [11173392, '/home/rhart/hub/tsffs/examples/tutorials/edk2-simics-platform/project/workspace/Build/SimicsOpenBoardPkg/BoardX58Ich10/DEBUG_GCC/X64/MdeModulePkg/Bus/Pci/PciHostBridgeDxe/PciHostBridgeDxe/DEBUG/PciHostBridgeDxe.efi'], [11228668, '/home/rhart/hub/tsffs/examples/tutorials/edk2-simics-platform/project/workspace/Build/SimicsOpenBoardPkg/BoardX58Ich10/DEBUG_GCC/X64/SimicsIch10Pkg/SmmControl/RuntimeDxe/SmmControl2Dxe/DEBUG/SmmControl2Dxe.efi'], [11250932, '/home/rhart/hub/tsffs/examples/tutorials/edk2-simics-platform/project/workspace/Build/SimicsOpenBoardPkg/BoardX58Ich10/DEBUG_GCC/X64/MdeModulePkg/Universal/EbcDxe/EbcDxe/DEBUG/EbcDxe.efi'], [11274996, '/home/rhart/hub/tsffs/examples/tutorials/edk2-simics-platform/project/workspace/Build/SimicsOpenBoardPkg/BoardX58Ich10/DEBUG_GCC/X64/MdeModulePkg/Bus/Pci/SataControllerDxe/SataControllerDxe/DEBUG/SataController.efi'], [11286492, '/home/rhart/hub/tsffs/examples/tutorials/edk2-simics-platform/project/workspace/Build/SimicsOpenBoardPkg/BoardX58Ich10/DEBUG_GCC/X64/UefiCpuPkg/CpuDxe/CpuDxe/DEBUG/CpuDxe.efi'], [11426316, '/home/rhart/hub/tsffs/examples/tutorials/edk2-simics-platform/project/workspace/Build/SimicsOpenBoardPkg/BoardX58Ich10/DEBUG_GCC/X64/MdeModulePkg/Universal/Variable/RuntimeDxe/VariableSmmRuntimeDxe/DEBUG/VariableSmmRuntimeDxe.efi'], [11551536, '/home/rhart/hub/tsffs/examples/tutorials/edk2-simics-platform/project/workspace/Build/SimicsOpenBoardPkg/BoardX58Ich10/DEBUG_GCC/X64/MdeModulePkg/Core/PiSmmCore/PiSmmIpl/DEBUG/PiSmmIpl.efi'], [11698972, '/home/rhart/hub/tsffs/examples/tutorials/edk2-simics-platform/project/workspace/Build/SimicsOpenBoardPkg/BoardX58Ich10/DEBUG_GCC/X64/MdeModulePkg/Universal/SmmCommunicationBufferDxe/SmmCommunicationBufferDxe/DEBUG/SmmCommunicationBufferDxe.efi'], [11727332, '/home/rhart/hub/tsffs/examples/tutorials/edk2-simics-platform/project/workspace/Build/SimicsOpenBoardPkg/BoardX58Ich10/DEBUG_GCC/X64/MdeModulePkg/Universal/Acpi/AcpiTableDxe/AcpiTableDxe/DEBUG/AcpiTableDxe.efi'], [11758492, '/home/rhart/hub/tsffs/examples/tutorials/edk2-simics-platform/project/workspace/Build/SimicsOpenBoardPkg/BoardX58Ich10/DEBUG_GCC/X64/MdeModulePkg/Universal/Acpi/FirmwarePerformanceDataTableDxe/FirmwarePerformanceDxe/DEBUG/FirmwarePerformanceDxe.efi'], [11791852, '/home/rhart/hub/tsffs/examples/tutorials/edk2-simics-platform/project/workspace/Build/SimicsOpenBoardPkg/BoardX58Ich10/DEBUG_GCC/X64/MdeModulePkg/Universal/Acpi/BootGraphicsResourceTableDxe/BootGraphicsResourceTableDxe/DEBUG/BootGraphicsResourceTableDxe.efi'], [11800948, '/home/rhart/hub/tsffs/examples/tutorials/edk2-simics-platform/project/workspace/Build/SimicsOpenBoardPkg/BoardX58Ich10/DEBUG_GCC/X64/NetworkPkg/DpcDxe/DpcDxe/DEBUG/DpcDxe.efi'], [11807988, '/home/rhart/hub/tsffs/examples/tutorials/edk2-simics-platform/project/workspace/Build/SimicsOpenBoardPkg/BoardX58Ich10/DEBUG_GCC/X64/NetworkPkg/SnpDxe/SnpDxe/DEBUG/SnpDxe.efi'], [11842088, '/home/rhart/hub/tsffs/examples/tutorials/edk2-simics-platform/project/workspace/Build/SimicsOpenBoardPkg/BoardX58Ich10/DEBUG_GCC/X64/NetworkPkg/VlanConfigDxe/VlanConfigDxe/DEBUG/VlanConfigDxe.efi'], [11874932, '/home/rhart/hub/tsffs/examples/tutorials/edk2-simics-platform/project/workspace/Build/SimicsOpenBoardPkg/BoardX58Ich10/DEBUG_GCC/X64/NetworkPkg/MnpDxe/MnpDxe/DEBUG/MnpDxe.efi'], [11924276, '/home/rhart/hub/tsffs/examples/tutorials/edk2-simics-platform/project/workspace/Build/SimicsOpenBoardPkg/BoardX58Ich10/DEBUG_GCC/X64/NetworkPkg/ArpDxe/ArpDxe/DEBUG/ArpDxe.efi'], [11948532, '/home/rhart/hub/tsffs/examples/tutorials/edk2-simics-platform/project/workspace/Build/SimicsOpenBoardPkg/BoardX58Ich10/DEBUG_GCC/X64/NetworkPkg/Dhcp4Dxe/Dhcp4Dxe/DEBUG/Dhcp4Dxe.efi'], [11992304, '/home/rhart/hub/tsffs/examples/tutorials/edk2-simics-platform/project/workspace/Build/SimicsOpenBoardPkg/BoardX58Ich10/DEBUG_GCC/X64/NetworkPkg/Ip4Dxe/Ip4Dxe/DEBUG/Ip4Dxe.efi'], [12080692, '/home/rhart/hub/tsffs/examples/tutorials/edk2-simics-platform/project/workspace/Build/SimicsOpenBoardPkg/BoardX58Ich10/DEBUG_GCC/X64/NetworkPkg/Udp4Dxe/Udp4Dxe/DEBUG/Udp4Dxe.efi'], [12121396, '/home/rhart/hub/tsffs/examples/tutorials/edk2-simics-platform/project/workspace/Build/SimicsOpenBoardPkg/BoardX58Ich10/DEBUG_GCC/X64/NetworkPkg/Mtftp4Dxe/Mtftp4Dxe/DEBUG/Mtftp4Dxe.efi'], [12164732, '/home/rhart/hub/tsffs/examples/tutorials/edk2-simics-platform/project/workspace/Build/SimicsOpenBoardPkg/BoardX58Ich10/DEBUG_GCC/X64/NetworkPkg/Dhcp6Dxe/Dhcp6Dxe/DEBUG/Dhcp6Dxe.efi'], [12210744, '/home/rhart/hub/tsffs/examples/tutorials/edk2-simics-platform/project/workspace/Build/SimicsOpenBoardPkg/BoardX58Ich10/DEBUG_GCC/X64/NetworkPkg/Ip6Dxe/Ip6Dxe/DEBUG/Ip6Dxe.efi'], [12334332, '/home/rhart/hub/tsffs/examples/tutorials/edk2-simics-platform/project/workspace/Build/SimicsOpenBoardPkg/BoardX58Ich10/DEBUG_GCC/X64/NetworkPkg/Udp6Dxe/Udp6Dxe/DEBUG/Udp6Dxe.efi'], [12375484, '/home/rhart/hub/tsffs/examples/tutorials/edk2-simics-platform/project/workspace/Build/SimicsOpenBoardPkg/BoardX58Ich10/DEBUG_GCC/X64/NetworkPkg/Mtftp6Dxe/Mtftp6Dxe/DEBUG/Mtftp6Dxe.efi'], [12421508, '/home/rhart/hub/tsffs/examples/tutorials/edk2-simics-platform/project/workspace/Build/SimicsOpenBoardPkg/BoardX58Ich10/DEBUG_GCC/X64/NetworkPkg/TcpDxe/TcpDxe/DEBUG/TcpDxe.efi'], [12505028, '/home/rhart/hub/tsffs/examples/tutorials/edk2-simics-platform/project/workspace/Build/SimicsOpenBoardPkg/BoardX58Ich10/DEBUG_GCC/X64/NetworkPkg/UefiPxeBcDxe/UefiPxeBcDxe/DEBUG/UefiPxeBcDxe.efi'], [12577428, '/home/rhart/hub/tsffs/examples/tutorials/edk2-simics-platform/project/workspace/Build/SimicsOpenBoardPkg/BoardX58Ich10/DEBUG_GCC/X64/NetworkPkg/DnsDxe/DnsDxe/DEBUG/DnsDxe.efi'], [12633556, '/home/rhart/hub/tsffs/examples/tutorials/edk2-simics-platform/project/workspace/Build/SimicsOpenBoardPkg/BoardX58Ich10/DEBUG_GCC/X64/NetworkPkg/HttpDxe/HttpDxe/DEBUG/HttpDxe.efi'], [12689196, '/home/rhart/hub/tsffs/examples/tutorials/edk2-simics-platform/project/workspace/Build/SimicsOpenBoardPkg/BoardX58Ich10/DEBUG_GCC/X64/NetworkPkg/HttpUtilitiesDxe/HttpUtilitiesDxe/DEBUG/HttpUtilitiesDxe.efi'], [12698552, '/home/rhart/hub/tsffs/examples/tutorials/edk2-simics-platform/project/workspace/Build/SimicsOpenBoardPkg/BoardX58Ich10/DEBUG_GCC/X64/NetworkPkg/HttpBootDxe/HttpBootDxe/DEBUG/HttpBootDxe.efi'], [12777536, '/home/rhart/hub/tsffs/examples/tutorials/edk2-simics-platform/project/workspace/Build/SimicsOpenBoardPkg/BoardX58Ich10/DEBUG_GCC/X64/SmbiosFeaturePkg/SmbiosBasicDxe/SmbiosBasicDxe/DEBUG/SmbiosBasic.efi'], [12789348, '/home/rhart/hub/tsffs/examples/tutorials/edk2-simics-platform/project/workspace/Build/SimicsOpenBoardPkg/BoardX58Ich10/DEBUG_GCC/X64/MdeModulePkg/Universal/Acpi/S3SaveStateDxe/S3SaveStateDxe/DEBUG/S3SaveStateDxe.efi'], [12814748, '/home/rhart/hub/tsffs/examples/tutorials/edk2-simics-platform/project/workspace/Build/SimicsOpenBoardPkg/BoardX58Ich10/DEBUG_GCC/X64/MdeModulePkg/Universal/Acpi/BootScriptExecutorDxe/BootScriptExecutorDxe/DEBUG/BootScriptExecutorDxe.efi'], [12902756, '/home/rhart/hub/tsffs/examples/tutorials/edk2-simics-platform/project/workspace/Build/SimicsOpenBoardPkg/BoardX58Ich10/DEBUG_GCC/X64/UefiCpuPkg/CpuS3DataDxe/CpuS3DataDxe/DEBUG/CpuS3DataDxe.efi'], [12910796, '/home/rhart/hub/tsffs/examples/tutorials/edk2-simics-platform/project/workspace/Build/SimicsOpenBoardPkg/BoardX58Ich10/DEBUG_GCC/X64/MdeModulePkg/Universal/PrintDxe/PrintDxe/DEBUG/PrintDxe.efi'], [12925780, '/home/rhart/hub/tsffs/examples/tutorials/edk2-simics-platform/project/workspace/Build/SimicsOpenBoardPkg/BoardX58Ich10/DEBUG_GCC/X64/MdeModulePkg/Bus/Scsi/ScsiBusDxe/ScsiBusDxe/DEBUG/ScsiBus.efi'], [12941076, '/home/rhart/hub/tsffs/examples/tutorials/edk2-simics-platform/project/workspace/Build/SimicsOpenBoardPkg/BoardX58Ich10/DEBUG_GCC/X64/MdeModulePkg/Bus/Scsi/ScsiDiskDxe/ScsiDiskDxe/DEBUG/ScsiDisk.efi'], [12985948, '/home/rhart/hub/tsffs/examples/tutorials/edk2-simics-platform/project/workspace/Build/SimicsOpenBoardPkg/BoardX58Ich10/DEBUG_GCC/X64/MdeModulePkg/Bus/Ata/AtaAtapiPassThru/AtaAtapiPassThru/DEBUG/AtaAtapiPassThruDxe.efi'], [13031284, '/home/rhart/hub/tsffs/examples/tutorials/edk2-simics-platform/project/workspace/Build/SimicsOpenBoardPkg/BoardX58Ich10/DEBUG_GCC/X64/MdeModulePkg/Bus/Ata/AtaBusDxe/AtaBusDxe/DEBUG/AtaBusDxe.efi'], [13078812, '/home/rhart/hub/tsffs/examples/tutorials/edk2-simics-platform/project/workspace/Build/SimicsOpenBoardPkg/BoardX58Ich10/DEBUG_GCC/X64/MdeModulePkg/Bus/Pci/NvmExpressDxe/NvmExpressDxe/DEBUG/NvmExpressDxe.efi'], [13125228, '/home/rhart/hub/tsffs/examples/tutorials/edk2-simics-platform/project/workspace/Build/SimicsOpenBoardPkg/BoardX58Ich10/DEBUG_GCC/X64/BoardModulePkg/LegacySioDxe/LegacySioDxe/DEBUG/LegacySioDxe.efi'], [13140168, '/home/rhart/hub/tsffs/examples/tutorials/edk2-simics-platform/project/workspace/Build/SimicsOpenBoardPkg/BoardX58Ich10/DEBUG_GCC/X64/BoardModulePkg/BoardBdsHookDxe/BoardBdsHookDxe/DEBUG/BoardBdsHookDxe.efi'], [13207260, '/home/rhart/hub/tsffs/examples/tutorials/edk2-simics-platform/project/workspace/Build/SimicsOpenBoardPkg/BoardX58Ich10/DEBUG_GCC/X64/MdeModulePkg/Bus/Isa/Ps2KeyboardDxe/Ps2KeyboardDxe/DEBUG/Ps2KeyboardDxe.efi'], [13229908, '/home/rhart/hub/tsffs/examples/tutorials/edk2-simics-platform/project/workspace/Build/SimicsOpenBoardPkg/BoardX58Ich10/DEBUG_GCC/X64/SimicsOpenBoardPkg/SmbiosPlatformDxe/SmbiosPlatformDxe/DEBUG/SmbiosPlatformDxe.efi'], [13236756, '/home/rhart/hub/tsffs/examples/tutorials/edk2-simics-platform/project/workspace/Build/SimicsOpenBoardPkg/BoardX58Ich10/DEBUG_GCC/X64/MdeModulePkg/Universal/Acpi/AcpiPlatformDxe/AcpiPlatformDxe/DEBUG/AcpiPlatform.efi'], [13242900, '/home/rhart/hub/tsffs/examples/tutorials/edk2-simics-platform/project/workspace/Build/SimicsOpenBoardPkg/BoardX58Ich10/DEBUG_GCC/X64/SimicsOpenBoardPkg/AcpiTables/MinPlatformAcpiTables/AcpiPlatform/DEBUG/AcpiPlatform.efi'], [13307788, '/home/rhart/hub/tsffs/examples/tutorials/edk2-simics-platform/project/workspace/Build/SimicsOpenBoardPkg/BoardX58Ich10/DEBUG_GCC/X64/SimicsOpenBoardPkg/SimicsVideoDxe/SimicsVideoDxe/DEBUG/QemuVideoDxe.efi'], [13346420, '/home/rhart/hub/tsffs/examples/tutorials/edk2-simics-platform/project/workspace/Build/SimicsOpenBoardPkg/BoardX58Ich10/DEBUG_GCC/X64/MinPlatformPkg/PlatformInit/PlatformInitDxe/PlatformInitDxe/DEBUG/PlatformInitDxe.efi'], [13363384, '/home/rhart/hub/tsffs/examples/tutorials/edk2-simics-platform/project/workspace/Build/SimicsOpenBoardPkg/BoardX58Ich10/DEBUG_GCC/X64/SimicsOpenBoardPkg/SimicsDxe/SimicsDxe/DEBUG/SimicsDxe.efi'], [14533900, '/home/rhart/hub/tsffs/examples/tutorials/edk2-simics-platform/project/workspace/Build/SimicsOpenBoardPkg/BoardX58Ich10/DEBUG_GCC/IA32/SimicsIch10BinPkg/UndiBinary/UndiDxe/DEBUG/UndiDxe.efi']], 'map_file': '/home/rhart/hub/tsffs/examples/tutorials/edk2-simics-platform/project/workspace/Build/SimicsOpenBoardPkg/BoardX58Ich10/DEBUG_GCC/SimicsX58.map', 'pre_dxe_tracking': False, 'pre_dxe_start': 0, 'pre_dxe_size': 0, 'dxe_tracking': True, 'hand_off_tracking': True, 'dxe_start': 0, 'dxe_size': 4294967296, 'exec_scan_size': 327680, 'exec_tracking': True, 'notification_tracking': True, 'smm_tracking': True, 'reset_tracking': True, 'tracker_version': 6263}] +['uefi_fw_tracker', {'map_info': [[4288676032, '/home/rhart/hub/tsffs/examples/tutorials/edk2-simics-platform/project/workspace/Build/SimicsOpenBoardPkg/BoardX58Ich10/DEBUG_CLANGSAN/IA32/SimicsOpenBoardPkg/SecCore/SecMain/DEBUG/SecMain.efi'], [8520000, '/home/rhart/hub/tsffs/examples/tutorials/edk2-simics-platform/project/workspace/Build/SimicsOpenBoardPkg/BoardX58Ich10/DEBUG_CLANGSAN/IA32/MdeModulePkg/Core/Pei/PeiMain/DEBUG/PeiCore.efi'], [8561472, '/home/rhart/hub/tsffs/examples/tutorials/edk2-simics-platform/project/workspace/Build/SimicsOpenBoardPkg/BoardX58Ich10/DEBUG_CLANGSAN/IA32/UefiCpuPkg/CpuMpPei/CpuMpPei/DEBUG/CpuMpPei.efi'], [8600384, '/home/rhart/hub/tsffs/examples/tutorials/edk2-simics-platform/project/workspace/Build/SimicsOpenBoardPkg/BoardX58Ich10/DEBUG_CLANGSAN/IA32/MdeModulePkg/Universal/PCD/Pei/Pcd/DEBUG/PcdPeim.efi'], [8614720, '/home/rhart/hub/tsffs/examples/tutorials/edk2-simics-platform/project/workspace/Build/SimicsOpenBoardPkg/BoardX58Ich10/DEBUG_CLANGSAN/IA32/MdeModulePkg/Universal/ReportStatusCodeRouter/Pei/ReportStatusCodeRouterPei/DEBUG/ReportStatusCodeRouterPei.efi'], [8619968, '/home/rhart/hub/tsffs/examples/tutorials/edk2-simics-platform/project/workspace/Build/SimicsOpenBoardPkg/BoardX58Ich10/DEBUG_CLANGSAN/IA32/MdeModulePkg/Universal/StatusCodeHandler/Pei/StatusCodeHandlerPei/DEBUG/StatusCodeHandlerPei.efi'], [8631104, '/home/rhart/hub/tsffs/examples/tutorials/edk2-simics-platform/project/workspace/Build/SimicsOpenBoardPkg/BoardX58Ich10/DEBUG_CLANGSAN/IA32/UefiCpuPkg/CpuIoPei/CpuIoPei/DEBUG/CpuIoPei.efi'], [8638016, '/home/rhart/hub/tsffs/examples/tutorials/edk2-simics-platform/project/workspace/Build/SimicsOpenBoardPkg/BoardX58Ich10/DEBUG_CLANGSAN/IA32/MdeModulePkg/Universal/PcatSingleSegmentPciCfg2Pei/PcatSingleSegmentPciCfg2Pei/DEBUG/PcatSingleSegmentPciCfg2Pei.efi'], [8644544, '/home/rhart/hub/tsffs/examples/tutorials/edk2-simics-platform/project/workspace/Build/SimicsOpenBoardPkg/BoardX58Ich10/DEBUG_CLANGSAN/IA32/MdeModulePkg/Universal/Variable/Pei/VariablePei/DEBUG/PeiVariable.efi'], [8654016, '/home/rhart/hub/tsffs/examples/tutorials/edk2-simics-platform/project/workspace/Build/SimicsOpenBoardPkg/BoardX58Ich10/DEBUG_CLANGSAN/IA32/MdeModulePkg/Universal/FaultTolerantWritePei/FaultTolerantWritePei/DEBUG/FaultTolerantWritePei.efi'], [8660416, '/home/rhart/hub/tsffs/examples/tutorials/edk2-simics-platform/project/workspace/Build/SimicsOpenBoardPkg/BoardX58Ich10/DEBUG_CLANGSAN/IA32/MdeModulePkg/Core/DxeIplPeim/DxeIpl/DEBUG/DxeIpl.efi'], [8680768, '/home/rhart/hub/tsffs/examples/tutorials/edk2-simics-platform/project/workspace/Build/SimicsOpenBoardPkg/BoardX58Ich10/DEBUG_CLANGSAN/IA32/MinPlatformPkg/PlatformInit/ReportFv/ReportFvPei/DEBUG/ReportFvPei.efi'], [8691392, '/home/rhart/hub/tsffs/examples/tutorials/edk2-simics-platform/project/workspace/Build/SimicsOpenBoardPkg/BoardX58Ich10/DEBUG_CLANGSAN/IA32/MinPlatformPkg/PlatformInit/PlatformInitPei/PlatformInitPreMem/DEBUG/PlatformInitPreMem.efi'], [8725696, '/home/rhart/hub/tsffs/examples/tutorials/edk2-simics-platform/project/workspace/Build/SimicsOpenBoardPkg/BoardX58Ich10/DEBUG_CLANGSAN/IA32/MinPlatformPkg/PlatformInit/SiliconPolicyPei/SiliconPolicyPeiPreMem/DEBUG/SiliconPolicyPeiPreMem.efi'], [8726848, '/home/rhart/hub/tsffs/examples/tutorials/edk2-simics-platform/project/workspace/Build/SimicsOpenBoardPkg/BoardX58Ich10/DEBUG_CLANGSAN/IA32/SimicsOpenBoardPkg/SimicsPei/SimicsPei/DEBUG/SimicsPei.efi'], [8737728, '/home/rhart/hub/tsffs/examples/tutorials/edk2-simics-platform/project/workspace/Build/SimicsOpenBoardPkg/BoardX58Ich10/DEBUG_CLANGSAN/IA32/MdeModulePkg/Universal/Acpi/FirmwarePerformanceDataTablePei/FirmwarePerformancePei/DEBUG/FirmwarePerformancePei.efi'], [8746048, '/home/rhart/hub/tsffs/examples/tutorials/edk2-simics-platform/project/workspace/Build/SimicsOpenBoardPkg/BoardX58Ich10/DEBUG_CLANGSAN/IA32/MinPlatformPkg/PlatformInit/PlatformInitPei/PlatformInitPostMem/DEBUG/PlatformInitPostMem.efi'], [8780096, '/home/rhart/hub/tsffs/examples/tutorials/edk2-simics-platform/project/workspace/Build/SimicsOpenBoardPkg/BoardX58Ich10/DEBUG_CLANGSAN/IA32/MinPlatformPkg/PlatformInit/SiliconPolicyPei/SiliconPolicyPeiPostMem/DEBUG/SiliconPolicyPeiPostMem.efi'], [8781248, '/home/rhart/hub/tsffs/examples/tutorials/edk2-simics-platform/project/workspace/Build/SimicsOpenBoardPkg/BoardX58Ich10/DEBUG_CLANGSAN/IA32/UefiCpuPkg/Universal/Acpi/S3Resume2Pei/S3Resume2Pei/DEBUG/S3Resume2Pei.efi'], [8794432, '/home/rhart/hub/tsffs/examples/tutorials/edk2-simics-platform/project/workspace/Build/SimicsOpenBoardPkg/BoardX58Ich10/DEBUG_CLANGSAN/IA32/SimicsX58SktPkg/Smm/Access/SmmAccessPei/DEBUG/SmmAccessPei.efi'], [9437332, '/home/rhart/hub/tsffs/examples/tutorials/edk2-simics-platform/project/workspace/Build/SimicsOpenBoardPkg/BoardX58Ich10/DEBUG_CLANGSAN/X64/MdeModulePkg/Core/Dxe/DxeMain/DEBUG/DxeCore.efi'], [10402712, '/home/rhart/hub/tsffs/examples/tutorials/edk2-simics-platform/project/workspace/Build/SimicsOpenBoardPkg/BoardX58Ich10/DEBUG_CLANGSAN/X64/MdeModulePkg/Universal/PCD/Dxe/Pcd/DEBUG/PcdDxe.efi'], [10732852, '/home/rhart/hub/tsffs/examples/tutorials/edk2-simics-platform/project/workspace/Build/SimicsOpenBoardPkg/BoardX58Ich10/DEBUG_CLANGSAN/X64/MdeModulePkg/Universal/ReportStatusCodeRouter/RuntimeDxe/ReportStatusCodeRouterRuntimeDxe/DEBUG/ReportStatusCodeRouterRuntimeDxe.efi'], [11034068, '/home/rhart/hub/tsffs/examples/tutorials/edk2-simics-platform/project/workspace/Build/SimicsOpenBoardPkg/BoardX58Ich10/DEBUG_CLANGSAN/X64/MdeModulePkg/Universal/StatusCodeHandler/RuntimeDxe/StatusCodeHandlerRuntimeDxe/DEBUG/StatusCodeHandlerRuntimeDxe.efi'], [11327316, '/home/rhart/hub/tsffs/examples/tutorials/edk2-simics-platform/project/workspace/Build/SimicsOpenBoardPkg/BoardX58Ich10/DEBUG_CLANGSAN/X64/UefiCpuPkg/CpuIo2Dxe/CpuIo2Dxe/DEBUG/CpuIo2Dxe.efi'], [11608756, '/home/rhart/hub/tsffs/examples/tutorials/edk2-simics-platform/project/workspace/Build/SimicsOpenBoardPkg/BoardX58Ich10/DEBUG_CLANGSAN/X64/MdeModulePkg/Universal/Metronome/Metronome/DEBUG/Metronome.efi'], [11890212, '/home/rhart/hub/tsffs/examples/tutorials/edk2-simics-platform/project/workspace/Build/SimicsOpenBoardPkg/BoardX58Ich10/DEBUG_CLANGSAN/X64/MdeModulePkg/Universal/WatchdogTimerDxe/WatchdogTimer/DEBUG/WatchdogTimer.efi'], [12160176, '/home/rhart/hub/tsffs/examples/tutorials/edk2-simics-platform/project/workspace/Build/SimicsOpenBoardPkg/BoardX58Ich10/DEBUG_CLANGSAN/X64/PcAtChipsetPkg/PcatRealTimeClockRuntimeDxe/PcatRealTimeClockRuntimeDxe/DEBUG/PcRtc.efi'], [12475012, '/home/rhart/hub/tsffs/examples/tutorials/edk2-simics-platform/project/workspace/Build/SimicsOpenBoardPkg/BoardX58Ich10/DEBUG_CLANGSAN/X64/MdeModulePkg/Core/RuntimeDxe/RuntimeDxe/DEBUG/RuntimeDxe.efi'], [12762824, '/home/rhart/hub/tsffs/examples/tutorials/edk2-simics-platform/project/workspace/Build/SimicsOpenBoardPkg/BoardX58Ich10/DEBUG_CLANGSAN/X64/MdeModulePkg/Universal/MonotonicCounterRuntimeDxe/MonotonicCounterRuntimeDxe/DEBUG/MonotonicCounterRuntimeDxe.efi'], [13042004, '/home/rhart/hub/tsffs/examples/tutorials/edk2-simics-platform/project/workspace/Build/SimicsOpenBoardPkg/BoardX58Ich10/DEBUG_CLANGSAN/X64/MdeModulePkg/Universal/BdsDxe/BdsDxe/DEBUG/BdsDxe.efi'], [13576512, '/home/rhart/hub/tsffs/examples/tutorials/edk2-simics-platform/project/workspace/Build/SimicsOpenBoardPkg/BoardX58Ich10/DEBUG_CLANGSAN/X64/MdeModulePkg/Universal/DriverHealthManagerDxe/DriverHealthManagerDxe/DEBUG/DriverHealthManagerDxe.efi'], [13960956, '/home/rhart/hub/tsffs/examples/tutorials/edk2-simics-platform/project/workspace/Build/SimicsOpenBoardPkg/BoardX58Ich10/DEBUG_CLANGSAN/X64/MdeModulePkg/Universal/SecurityStubDxe/SecurityStubDxe/DEBUG/SecurityStubDxe.efi'], [14254772, '/home/rhart/hub/tsffs/examples/tutorials/edk2-simics-platform/project/workspace/Build/SimicsOpenBoardPkg/BoardX58Ich10/DEBUG_CLANGSAN/X64/MdeModulePkg/Universal/CapsuleRuntimeDxe/CapsuleRuntimeDxe/DEBUG/CapsuleRuntimeDxe.efi'], [14546980, '/home/rhart/hub/tsffs/examples/tutorials/edk2-simics-platform/project/workspace/Build/SimicsOpenBoardPkg/BoardX58Ich10/DEBUG_CLANGSAN/X64/MdeModulePkg/Universal/ResetSystemRuntimeDxe/ResetSystemRuntimeDxe/DEBUG/ResetSystemRuntimeDxe.efi'], [14850220, '/home/rhart/hub/tsffs/examples/tutorials/edk2-simics-platform/project/workspace/Build/SimicsOpenBoardPkg/BoardX58Ich10/DEBUG_CLANGSAN/X64/PcAtChipsetPkg/HpetTimerDxe/HpetTimerDxe/DEBUG/HpetTimerDxe.efi'], [15153852, '/home/rhart/hub/tsffs/examples/tutorials/edk2-simics-platform/project/workspace/Build/SimicsOpenBoardPkg/BoardX58Ich10/DEBUG_CLANGSAN/X64/MdeModulePkg/Bus/Pci/PciBusDxe/PciBusDxe/DEBUG/PciBusDxe.efi'], [15699204, '/home/rhart/hub/tsffs/examples/tutorials/edk2-simics-platform/project/workspace/Build/SimicsOpenBoardPkg/BoardX58Ich10/DEBUG_CLANGSAN/X64/MdeModulePkg/Bus/Pci/XhciDxe/XhciDxe/DEBUG/XhciDxe.efi'], [16194756, '/home/rhart/hub/tsffs/examples/tutorials/edk2-simics-platform/project/workspace/Build/SimicsOpenBoardPkg/BoardX58Ich10/DEBUG_CLANGSAN/X64/MdeModulePkg/Bus/Pci/EhciDxe/EhciDxe/DEBUG/EhciDxe.efi'], [16584388, '/home/rhart/hub/tsffs/examples/tutorials/edk2-simics-platform/project/workspace/Build/SimicsOpenBoardPkg/BoardX58Ich10/DEBUG_CLANGSAN/X64/MdeModulePkg/Bus/Pci/UhciDxe/UhciDxe/DEBUG/UhciDxe.efi'], [16939396, '/home/rhart/hub/tsffs/examples/tutorials/edk2-simics-platform/project/workspace/Build/SimicsOpenBoardPkg/BoardX58Ich10/DEBUG_CLANGSAN/X64/MdeModulePkg/Bus/Usb/UsbBusDxe/UsbBusDxe/DEBUG/UsbBusDxe.efi'], [17342412, '/home/rhart/hub/tsffs/examples/tutorials/edk2-simics-platform/project/workspace/Build/SimicsOpenBoardPkg/BoardX58Ich10/DEBUG_CLANGSAN/X64/MdeModulePkg/Bus/Usb/UsbMassStorageDxe/UsbMassStorageDxe/DEBUG/UsbMassStorageDxe.efi'], [17676260, '/home/rhart/hub/tsffs/examples/tutorials/edk2-simics-platform/project/workspace/Build/SimicsOpenBoardPkg/BoardX58Ich10/DEBUG_CLANGSAN/X64/MdeModulePkg/Bus/Usb/UsbKbDxe/UsbKbDxe/DEBUG/UsbKbDxe.efi'], [18035052, '/home/rhart/hub/tsffs/examples/tutorials/edk2-simics-platform/project/workspace/Build/SimicsOpenBoardPkg/BoardX58Ich10/DEBUG_CLANGSAN/X64/MdeModulePkg/Universal/Disk/DiskIoDxe/DiskIoDxe/DEBUG/DiskIoDxe.efi'], [18346100, '/home/rhart/hub/tsffs/examples/tutorials/edk2-simics-platform/project/workspace/Build/SimicsOpenBoardPkg/BoardX58Ich10/DEBUG_CLANGSAN/X64/MdeModulePkg/Universal/Disk/PartitionDxe/PartitionDxe/DEBUG/PartitionDxe.efi'], [18699140, '/home/rhart/hub/tsffs/examples/tutorials/edk2-simics-platform/project/workspace/Build/SimicsOpenBoardPkg/BoardX58Ich10/DEBUG_CLANGSAN/X64/MdeModulePkg/Universal/Disk/UnicodeCollation/EnglishDxe/EnglishDxe/DEBUG/EnglishDxe.efi'], [18977612, '/home/rhart/hub/tsffs/examples/tutorials/edk2-simics-platform/project/workspace/Build/SimicsOpenBoardPkg/BoardX58Ich10/DEBUG_CLANGSAN/X64/FatPkg/EnhancedFatDxe/Fat/DEBUG/Fat.efi'], [19392580, '/home/rhart/hub/tsffs/examples/tutorials/edk2-simics-platform/project/workspace/Build/SimicsOpenBoardPkg/BoardX58Ich10/DEBUG_CLANGSAN/X64/MdeModulePkg/Universal/Console/GraphicsConsoleDxe/GraphicsConsoleDxe/DEBUG/GraphicsConsoleDxe.efi'], [19745564, '/home/rhart/hub/tsffs/examples/tutorials/edk2-simics-platform/project/workspace/Build/SimicsOpenBoardPkg/BoardX58Ich10/DEBUG_CLANGSAN/X64/MdeModulePkg/Universal/Console/ConPlatformDxe/ConPlatformDxe/DEBUG/ConPlatformDxe.efi'], [20107948, '/home/rhart/hub/tsffs/examples/tutorials/edk2-simics-platform/project/workspace/Build/SimicsOpenBoardPkg/BoardX58Ich10/DEBUG_CLANGSAN/X64/MdeModulePkg/Universal/Console/ConSplitterDxe/ConSplitterDxe/DEBUG/ConSplitterDxe.efi'], [20512980, '/home/rhart/hub/tsffs/examples/tutorials/edk2-simics-platform/project/workspace/Build/SimicsOpenBoardPkg/BoardX58Ich10/DEBUG_CLANGSAN/X64/MdeModulePkg/Universal/DevicePathDxe/DevicePathDxe/DEBUG/DevicePathDxe.efi'], [20792700, '/home/rhart/hub/tsffs/examples/tutorials/edk2-simics-platform/project/workspace/Build/SimicsOpenBoardPkg/BoardX58Ich10/DEBUG_CLANGSAN/X64/MdeModulePkg/Universal/MemoryTest/NullMemoryTestDxe/NullMemoryTestDxe/DEBUG/NullMemoryTestDxe.efi'], [21066220, '/home/rhart/hub/tsffs/examples/tutorials/edk2-simics-platform/project/workspace/Build/SimicsOpenBoardPkg/BoardX58Ich10/DEBUG_CLANGSAN/X64/MdeModulePkg/Universal/HiiDatabaseDxe/HiiDatabaseDxe/DEBUG/HiiDatabase.efi'], [21727872, '/home/rhart/hub/tsffs/examples/tutorials/edk2-simics-platform/project/workspace/Build/SimicsOpenBoardPkg/BoardX58Ich10/DEBUG_CLANGSAN/X64/MdeModulePkg/Universal/SetupBrowserDxe/SetupBrowserDxe/DEBUG/SetupBrowser.efi'], [22365960, '/home/rhart/hub/tsffs/examples/tutorials/edk2-simics-platform/project/workspace/Build/SimicsOpenBoardPkg/BoardX58Ich10/DEBUG_CLANGSAN/X64/MdeModulePkg/Universal/DisplayEngineDxe/DisplayEngineDxe/DEBUG/DisplayEngine.efi'], [24210900, '/home/rhart/hub/tsffs/examples/tutorials/edk2-simics-platform/project/workspace/Build/SimicsOpenBoardPkg/BoardX58Ich10/DEBUG_CLANGSAN/X64/SimicsX58SktPkg/Smm/Access/SmmAccess2Dxe/DEBUG/SmmAccess2Dxe.efi'], [25143040, '/home/rhart/hub/tsffs/examples/tutorials/edk2-simics-platform/project/workspace/Build/SimicsOpenBoardPkg/BoardX58Ich10/DEBUG_CLANGSAN/X64/MdeModulePkg/Bus/Pci/PciHostBridgeDxe/PciHostBridgeDxe/DEBUG/PciHostBridgeDxe.efi'], [25521004, '/home/rhart/hub/tsffs/examples/tutorials/edk2-simics-platform/project/workspace/Build/SimicsOpenBoardPkg/BoardX58Ich10/DEBUG_CLANGSAN/X64/SimicsIch10Pkg/SmmControl/RuntimeDxe/SmmControl2Dxe/DEBUG/SmmControl2Dxe.efi'], [26099748, '/home/rhart/hub/tsffs/examples/tutorials/edk2-simics-platform/project/workspace/Build/SimicsOpenBoardPkg/BoardX58Ich10/DEBUG_CLANGSAN/X64/MdeModulePkg/Universal/EbcDxe/EbcDxe/DEBUG/EbcDxe.efi'], [26457252, '/home/rhart/hub/tsffs/examples/tutorials/edk2-simics-platform/project/workspace/Build/SimicsOpenBoardPkg/BoardX58Ich10/DEBUG_CLANGSAN/X64/MdeModulePkg/Bus/Pci/SataControllerDxe/SataControllerDxe/DEBUG/SataController.efi'], [26748684, '/home/rhart/hub/tsffs/examples/tutorials/edk2-simics-platform/project/workspace/Build/SimicsOpenBoardPkg/BoardX58Ich10/DEBUG_CLANGSAN/X64/UefiCpuPkg/CpuDxe/CpuDxe/DEBUG/CpuDxe.efi'], [27742844, '/home/rhart/hub/tsffs/examples/tutorials/edk2-simics-platform/project/workspace/Build/SimicsOpenBoardPkg/BoardX58Ich10/DEBUG_CLANGSAN/X64/MdeModulePkg/Universal/Variable/RuntimeDxe/VariableSmmRuntimeDxe/DEBUG/VariableSmmRuntimeDxe.efi'], [28673056, '/home/rhart/hub/tsffs/examples/tutorials/edk2-simics-platform/project/workspace/Build/SimicsOpenBoardPkg/BoardX58Ich10/DEBUG_CLANGSAN/X64/MdeModulePkg/Core/PiSmmCore/PiSmmIpl/DEBUG/PiSmmIpl.efi'], [30518284, '/home/rhart/hub/tsffs/examples/tutorials/edk2-simics-platform/project/workspace/Build/SimicsOpenBoardPkg/BoardX58Ich10/DEBUG_CLANGSAN/X64/MdeModulePkg/Universal/SmmCommunicationBufferDxe/SmmCommunicationBufferDxe/DEBUG/SmmCommunicationBufferDxe.efi'], [31110292, '/home/rhart/hub/tsffs/examples/tutorials/edk2-simics-platform/project/workspace/Build/SimicsOpenBoardPkg/BoardX58Ich10/DEBUG_CLANGSAN/X64/MdeModulePkg/Universal/Acpi/AcpiTableDxe/AcpiTableDxe/DEBUG/AcpiTableDxe.efi'], [31487308, '/home/rhart/hub/tsffs/examples/tutorials/edk2-simics-platform/project/workspace/Build/SimicsOpenBoardPkg/BoardX58Ich10/DEBUG_CLANGSAN/X64/MdeModulePkg/Universal/Acpi/FirmwarePerformanceDataTableDxe/FirmwarePerformanceDxe/DEBUG/FirmwarePerformanceDxe.efi'], [32120604, '/home/rhart/hub/tsffs/examples/tutorials/edk2-simics-platform/project/workspace/Build/SimicsOpenBoardPkg/BoardX58Ich10/DEBUG_CLANGSAN/X64/MdeModulePkg/Universal/Acpi/BootGraphicsResourceTableDxe/BootGraphicsResourceTableDxe/DEBUG/BootGraphicsResourceTableDxe.efi'], [32403364, '/home/rhart/hub/tsffs/examples/tutorials/edk2-simics-platform/project/workspace/Build/SimicsOpenBoardPkg/BoardX58Ich10/DEBUG_CLANGSAN/X64/NetworkPkg/DpcDxe/DpcDxe/DEBUG/DpcDxe.efi'], [32678564, '/home/rhart/hub/tsffs/examples/tutorials/edk2-simics-platform/project/workspace/Build/SimicsOpenBoardPkg/BoardX58Ich10/DEBUG_CLANGSAN/X64/NetworkPkg/SnpDxe/SnpDxe/DEBUG/SnpDxe.efi'], [33073752, '/home/rhart/hub/tsffs/examples/tutorials/edk2-simics-platform/project/workspace/Build/SimicsOpenBoardPkg/BoardX58Ich10/DEBUG_CLANGSAN/X64/NetworkPkg/VlanConfigDxe/VlanConfigDxe/DEBUG/VlanConfigDxe.efi'], [33427940, '/home/rhart/hub/tsffs/examples/tutorials/edk2-simics-platform/project/workspace/Build/SimicsOpenBoardPkg/BoardX58Ich10/DEBUG_CLANGSAN/X64/NetworkPkg/MnpDxe/MnpDxe/DEBUG/MnpDxe.efi'], [33863972, '/home/rhart/hub/tsffs/examples/tutorials/edk2-simics-platform/project/workspace/Build/SimicsOpenBoardPkg/BoardX58Ich10/DEBUG_CLANGSAN/X64/NetworkPkg/ArpDxe/ArpDxe/DEBUG/ArpDxe.efi'], [34217828, '/home/rhart/hub/tsffs/examples/tutorials/edk2-simics-platform/project/workspace/Build/SimicsOpenBoardPkg/BoardX58Ich10/DEBUG_CLANGSAN/X64/NetworkPkg/Dhcp4Dxe/Dhcp4Dxe/DEBUG/Dhcp4Dxe.efi'], [34677216, '/home/rhart/hub/tsffs/examples/tutorials/edk2-simics-platform/project/workspace/Build/SimicsOpenBoardPkg/BoardX58Ich10/DEBUG_CLANGSAN/X64/NetworkPkg/Ip4Dxe/Ip4Dxe/DEBUG/Ip4Dxe.efi'], [35277412, '/home/rhart/hub/tsffs/examples/tutorials/edk2-simics-platform/project/workspace/Build/SimicsOpenBoardPkg/BoardX58Ich10/DEBUG_CLANGSAN/X64/NetworkPkg/Udp4Dxe/Udp4Dxe/DEBUG/Udp4Dxe.efi'], [35686884, '/home/rhart/hub/tsffs/examples/tutorials/edk2-simics-platform/project/workspace/Build/SimicsOpenBoardPkg/BoardX58Ich10/DEBUG_CLANGSAN/X64/NetworkPkg/Mtftp4Dxe/Mtftp4Dxe/DEBUG/Mtftp4Dxe.efi'], [36111788, '/home/rhart/hub/tsffs/examples/tutorials/edk2-simics-platform/project/workspace/Build/SimicsOpenBoardPkg/BoardX58Ich10/DEBUG_CLANGSAN/X64/NetworkPkg/Dhcp6Dxe/Dhcp6Dxe/DEBUG/Dhcp6Dxe.efi'], [36589352, '/home/rhart/hub/tsffs/examples/tutorials/edk2-simics-platform/project/workspace/Build/SimicsOpenBoardPkg/BoardX58Ich10/DEBUG_CLANGSAN/X64/NetworkPkg/Ip6Dxe/Ip6Dxe/DEBUG/Ip6Dxe.efi'], [37293612, '/home/rhart/hub/tsffs/examples/tutorials/edk2-simics-platform/project/workspace/Build/SimicsOpenBoardPkg/BoardX58Ich10/DEBUG_CLANGSAN/X64/NetworkPkg/Udp6Dxe/Udp6Dxe/DEBUG/Udp6Dxe.efi'], [37702764, '/home/rhart/hub/tsffs/examples/tutorials/edk2-simics-platform/project/workspace/Build/SimicsOpenBoardPkg/BoardX58Ich10/DEBUG_CLANGSAN/X64/NetworkPkg/Mtftp6Dxe/Mtftp6Dxe/DEBUG/Mtftp6Dxe.efi'], [38139124, '/home/rhart/hub/tsffs/examples/tutorials/edk2-simics-platform/project/workspace/Build/SimicsOpenBoardPkg/BoardX58Ich10/DEBUG_CLANGSAN/X64/NetworkPkg/TcpDxe/TcpDxe/DEBUG/TcpDxe.efi'], [38740980, '/home/rhart/hub/tsffs/examples/tutorials/edk2-simics-platform/project/workspace/Build/SimicsOpenBoardPkg/BoardX58Ich10/DEBUG_CLANGSAN/X64/NetworkPkg/UefiPxeBcDxe/UefiPxeBcDxe/DEBUG/UefiPxeBcDxe.efi'], [39353604, '/home/rhart/hub/tsffs/examples/tutorials/edk2-simics-platform/project/workspace/Build/SimicsOpenBoardPkg/BoardX58Ich10/DEBUG_CLANGSAN/X64/NetworkPkg/DnsDxe/DnsDxe/DEBUG/DnsDxe.efi'], [39840964, '/home/rhart/hub/tsffs/examples/tutorials/edk2-simics-platform/project/workspace/Build/SimicsOpenBoardPkg/BoardX58Ich10/DEBUG_CLANGSAN/X64/NetworkPkg/HttpDxe/HttpDxe/DEBUG/HttpDxe.efi'], [40362076, '/home/rhart/hub/tsffs/examples/tutorials/edk2-simics-platform/project/workspace/Build/SimicsOpenBoardPkg/BoardX58Ich10/DEBUG_CLANGSAN/X64/NetworkPkg/HttpUtilitiesDxe/HttpUtilitiesDxe/DEBUG/HttpUtilitiesDxe.efi'], [40657192, '/home/rhart/hub/tsffs/examples/tutorials/edk2-simics-platform/project/workspace/Build/SimicsOpenBoardPkg/BoardX58Ich10/DEBUG_CLANGSAN/X64/NetworkPkg/HttpBootDxe/HttpBootDxe/DEBUG/HttpBootDxe.efi'], [41272560, '/home/rhart/hub/tsffs/examples/tutorials/edk2-simics-platform/project/workspace/Build/SimicsOpenBoardPkg/BoardX58Ich10/DEBUG_CLANGSAN/X64/SmbiosFeaturePkg/SmbiosBasicDxe/SmbiosBasicDxe/DEBUG/SmbiosBasic.efi'], [41554516, '/home/rhart/hub/tsffs/examples/tutorials/edk2-simics-platform/project/workspace/Build/SimicsOpenBoardPkg/BoardX58Ich10/DEBUG_CLANGSAN/X64/MdeModulePkg/Universal/Acpi/S3SaveStateDxe/S3SaveStateDxe/DEBUG/S3SaveStateDxe.efi'], [41909132, '/home/rhart/hub/tsffs/examples/tutorials/edk2-simics-platform/project/workspace/Build/SimicsOpenBoardPkg/BoardX58Ich10/DEBUG_CLANGSAN/X64/MdeModulePkg/Universal/Acpi/BootScriptExecutorDxe/BootScriptExecutorDxe/DEBUG/BootScriptExecutorDxe.efi'], [42409748, '/home/rhart/hub/tsffs/examples/tutorials/edk2-simics-platform/project/workspace/Build/SimicsOpenBoardPkg/BoardX58Ich10/DEBUG_CLANGSAN/X64/UefiCpuPkg/CpuS3DataDxe/CpuS3DataDxe/DEBUG/CpuS3DataDxe.efi'], [42696484, '/home/rhart/hub/tsffs/examples/tutorials/edk2-simics-platform/project/workspace/Build/SimicsOpenBoardPkg/BoardX58Ich10/DEBUG_CLANGSAN/X64/MdeModulePkg/Universal/Console/TerminalDxe/TerminalDxe/DEBUG/TerminalDxe.efi'], [43069828, '/home/rhart/hub/tsffs/examples/tutorials/edk2-simics-platform/project/workspace/Build/SimicsOpenBoardPkg/BoardX58Ich10/DEBUG_CLANGSAN/X64/MdeModulePkg/Universal/PrintDxe/PrintDxe/DEBUG/PrintDxe.efi'], [43342412, '/home/rhart/hub/tsffs/examples/tutorials/edk2-simics-platform/project/workspace/Build/SimicsOpenBoardPkg/BoardX58Ich10/DEBUG_CLANGSAN/X64/MdeModulePkg/Bus/Scsi/ScsiBusDxe/ScsiBusDxe/DEBUG/ScsiBus.efi'], [43647500, '/home/rhart/hub/tsffs/examples/tutorials/edk2-simics-platform/project/workspace/Build/SimicsOpenBoardPkg/BoardX58Ich10/DEBUG_CLANGSAN/X64/MdeModulePkg/Bus/Scsi/ScsiDiskDxe/ScsiDiskDxe/DEBUG/ScsiDisk.efi'], [44059284, '/home/rhart/hub/tsffs/examples/tutorials/edk2-simics-platform/project/workspace/Build/SimicsOpenBoardPkg/BoardX58Ich10/DEBUG_CLANGSAN/X64/MdeModulePkg/Bus/Ata/AtaAtapiPassThru/AtaAtapiPassThru/DEBUG/AtaAtapiPassThruDxe.efi'], [44472108, '/home/rhart/hub/tsffs/examples/tutorials/edk2-simics-platform/project/workspace/Build/SimicsOpenBoardPkg/BoardX58Ich10/DEBUG_CLANGSAN/X64/MdeModulePkg/Bus/Ata/AtaBusDxe/AtaBusDxe/DEBUG/AtaBusDxe.efi'], [45144148, '/home/rhart/hub/tsffs/examples/tutorials/edk2-simics-platform/project/workspace/Build/SimicsOpenBoardPkg/BoardX58Ich10/DEBUG_CLANGSAN/X64/MdeModulePkg/Bus/Pci/NvmExpressDxe/NvmExpressDxe/DEBUG/NvmExpressDxe.efi'], [45557540, '/home/rhart/hub/tsffs/examples/tutorials/edk2-simics-platform/project/workspace/Build/SimicsOpenBoardPkg/BoardX58Ich10/DEBUG_CLANGSAN/X64/BoardModulePkg/LegacySioDxe/LegacySioDxe/DEBUG/LegacySioDxe.efi'], [45856532, '/home/rhart/hub/tsffs/examples/tutorials/edk2-simics-platform/project/workspace/Build/SimicsOpenBoardPkg/BoardX58Ich10/DEBUG_CLANGSAN/X64/BoardModulePkg/BoardBdsHookDxe/BoardBdsHookDxe/DEBUG/BoardBdsHookDxe.efi'], [46343396, '/home/rhart/hub/tsffs/examples/tutorials/edk2-simics-platform/project/workspace/Build/SimicsOpenBoardPkg/BoardX58Ich10/DEBUG_CLANGSAN/X64/MdeModulePkg/Bus/Isa/Ps2KeyboardDxe/Ps2KeyboardDxe/DEBUG/Ps2KeyboardDxe.efi'], [46680924, '/home/rhart/hub/tsffs/examples/tutorials/edk2-simics-platform/project/workspace/Build/SimicsOpenBoardPkg/BoardX58Ich10/DEBUG_CLANGSAN/X64/SimicsOpenBoardPkg/SmbiosPlatformDxe/SmbiosPlatformDxe/DEBUG/SmbiosPlatformDxe.efi'], [46956956, '/home/rhart/hub/tsffs/examples/tutorials/edk2-simics-platform/project/workspace/Build/SimicsOpenBoardPkg/BoardX58Ich10/DEBUG_CLANGSAN/X64/MdeModulePkg/Universal/Acpi/AcpiPlatformDxe/AcpiPlatformDxe/DEBUG/AcpiPlatform.efi'], [47228636, '/home/rhart/hub/tsffs/examples/tutorials/edk2-simics-platform/project/workspace/Build/SimicsOpenBoardPkg/BoardX58Ich10/DEBUG_CLANGSAN/X64/SimicsOpenBoardPkg/AcpiTables/MinPlatformAcpiTables/AcpiPlatform/DEBUG/AcpiPlatform.efi'], [47608468, '/home/rhart/hub/tsffs/examples/tutorials/edk2-simics-platform/project/workspace/Build/SimicsOpenBoardPkg/BoardX58Ich10/DEBUG_CLANGSAN/X64/SimicsOpenBoardPkg/SimicsVideoDxe/SimicsVideoDxe/DEBUG/QemuVideoDxe.efi'], [48015036, '/home/rhart/hub/tsffs/examples/tutorials/edk2-simics-platform/project/workspace/Build/SimicsOpenBoardPkg/BoardX58Ich10/DEBUG_CLANGSAN/X64/MinPlatformPkg/PlatformInit/PlatformInitDxe/PlatformInitDxe/DEBUG/PlatformInitDxe.efi'], [48565696, '/home/rhart/hub/tsffs/examples/tutorials/edk2-simics-platform/project/workspace/Build/SimicsOpenBoardPkg/BoardX58Ich10/DEBUG_CLANGSAN/X64/SimicsOpenBoardPkg/SimicsDxe/SimicsDxe/DEBUG/SimicsDxe.efi'], [51897492, '/home/rhart/hub/tsffs/examples/tutorials/edk2-simics-platform/project/workspace/Build/SimicsOpenBoardPkg/BoardX58Ich10/DEBUG_CLANGSAN/X64/SimicsIch10BinPkg/UndiBinary/UndiDxe/DEBUG/UndiDxe.efi']], 'map_file': '/home/rhart/hub/tsffs/examples/tutorials/edk2-simics-platform/project/workspace/Build/SimicsOpenBoardPkg/BoardX58Ich10/DEBUG_CLANGSAN/SimicsX58.map', 'pre_dxe_tracking': False, 'pre_dxe_start': 0, 'pre_dxe_size': 0, 'dxe_tracking': True, 'hand_off_tracking': True, 'dxe_start': 0, 'dxe_size': 4294967296, 'exec_scan_size': 327680, 'exec_tracking': True, 'notification_tracking': True, 'smm_tracking': True, 'reset_tracking': True, 'tracker_version': 7010}] diff --git a/examples/tests/x86_64-timeout-uefi-edk2/src/tsffs-gcc-x86_64.h b/examples/tutorials/edk2-simics-platform/tsffs-gcc-x86_64.h similarity index 98% rename from examples/tests/x86_64-timeout-uefi-edk2/src/tsffs-gcc-x86_64.h rename to examples/tutorials/edk2-simics-platform/tsffs-gcc-x86_64.h index c2afe7ac..706f9946 100644 --- a/examples/tests/x86_64-timeout-uefi-edk2/src/tsffs-gcc-x86_64.h +++ b/examples/tutorials/edk2-simics-platform/tsffs-gcc-x86_64.h @@ -1,3 +1,6 @@ +// Copyright (C) 2023 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 + /// Definitions and macros for compiled-in harnessing of C and C++ target /// software for the RISC-V (64-bit) architecture /// diff --git a/examples/tutorials/edk2-uefi/build.sh b/examples/tutorials/edk2-uefi/build.sh index d086a720..6547862f 100755 --- a/examples/tutorials/edk2-uefi/build.sh +++ b/examples/tutorials/edk2-uefi/build.sh @@ -1,5 +1,8 @@ #!/bin/bash +# Copyright (C) 2024 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + SCRIPT_DIR=$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" &>/dev/null && pwd) IMAGE_NAME="tsffs-tutorial-edk2-uefi" diff --git a/examples/tutorials/edk2-uefi/project/run.simics b/examples/tutorials/edk2-uefi/project/run.simics index 869f1232..5774a79e 100644 --- a/examples/tutorials/edk2-uefi/project/run.simics +++ b/examples/tutorials/edk2-uefi/project/run.simics @@ -1,14 +1,15 @@ +# Copyright (C) 2024 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + # Load the TSFFS module (to make sure we can load it) + load-module tsffs -@tsffs = SIM_create_object(SIM_get_class("tsffs"), "tsffs", []) +init-tsffs tsffs.log-level 2 -@tsffs.iface.tsffs.set_start_on_harness(True) -@tsffs.iface.tsffs.set_stop_on_harness(True) -@tsffs.iface.tsffs.set_timeout(3.0) -@tsffs.iface.tsffs.add_exception_solution(13) -@tsffs.iface.tsffs.add_exception_solution(14) -@tsffs.iface.tsffs.set_corpus_directory("%simics%/corpus") -@tsffs.iface.tsffs.set_solutions_directory("%simics%/solutions") +@tsffs.start_on_harness = True +@tsffs.stop_on_harness = True +@tsffs.timeout = 3.0 +@tsffs.exceptions = [13, 14] load-target "qsp-x86/uefi-shell" namespace = qsp machine:hardware:storage:disk0:image = "minimal_boot_disk.craff" diff --git a/examples/tutorials/edk2-uefi/src/PlatformBuild.py b/examples/tutorials/edk2-uefi/src/PlatformBuild.py index 0c988a57..60cd7e28 100644 --- a/examples/tutorials/edk2-uefi/src/PlatformBuild.py +++ b/examples/tutorials/edk2-uefi/src/PlatformBuild.py @@ -1,4 +1,4 @@ -# Copyright (C) 2023 Intel Corporation +# Copyright (C) 2024 Intel Corporation # SPDX-License-Identifier: Apache-2.0 """ @@ -15,7 +15,6 @@ from edk2toolext.invocables.edk2_platform_build import BuildSettingsManager from edk2toolext.invocables.edk2_setup import RequiredSubmodule, SetupSettingsManager from edk2toolext.invocables.edk2_update import UpdateSettingsManager -from edk2toollib.utility_functions import GetHostInfo class TutorialSettingsManager( diff --git a/examples/tutorials/edk2-uefi/src/Tutorial.c b/examples/tutorials/edk2-uefi/src/Tutorial.c index 6e40b460..48f50675 100644 --- a/examples/tutorials/edk2-uefi/src/Tutorial.c +++ b/examples/tutorials/edk2-uefi/src/Tutorial.c @@ -1,4 +1,4 @@ -// Copyright (C) 2023 Intel Corporation +// Copyright (C) 2024 Intel Corporation // SPDX-License-Identifier: Apache-2.0 #include diff --git a/examples/tutorials/edk2-uefi/src/Tutorial.inf b/examples/tutorials/edk2-uefi/src/Tutorial.inf index da166388..3c558c1e 100644 --- a/examples/tutorials/edk2-uefi/src/Tutorial.inf +++ b/examples/tutorials/edk2-uefi/src/Tutorial.inf @@ -1,4 +1,4 @@ -# Copyright (C) 2023 Intel Corporation +# Copyright (C) 2024 Intel Corporation # SPDX-License-Identifier: Apache-2.0 [Defines] diff --git a/examples/tutorials/edk2-uefi/src/tsffs-gcc-x86_64.h b/examples/tutorials/edk2-uefi/src/tsffs-gcc-x86_64.h index 7f4e63bf..7925dae7 100644 --- a/examples/tutorials/edk2-uefi/src/tsffs-gcc-x86_64.h +++ b/examples/tutorials/edk2-uefi/src/tsffs-gcc-x86_64.h @@ -1,3 +1,6 @@ +// Copyright (C) 2024 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 + /// Definitions and macros for compiled-in harnessing of C and C++ target /// software for the RISC-V (64-bit) architecture /// diff --git a/examples/tutorials/risc-v-kernel/build.sh b/examples/tutorials/risc-v-kernel/build.sh index 53c45c08..790a2dcc 100755 --- a/examples/tutorials/risc-v-kernel/build.sh +++ b/examples/tutorials/risc-v-kernel/build.sh @@ -1,6 +1,6 @@ #!/bin/bash -# Copyright (C) 2023 Intel Corporation +# Copyright (C) 2024 Intel Corporation # SPDX-License-Identifier: Apache-2.0 SCRIPT_DIR=$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" &>/dev/null && pwd) diff --git a/examples/tutorials/risc-v-kernel/project/run.simics b/examples/tutorials/risc-v-kernel/project/run.simics index 73584596..fc95234d 100644 --- a/examples/tutorials/risc-v-kernel/project/run.simics +++ b/examples/tutorials/risc-v-kernel/project/run.simics @@ -1,11 +1,14 @@ +# Copyright (C) 2024 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + load-module tsffs +init-tsffs -@tsffs = SIM_create_object(SIM_get_class("tsffs"), "tsffs", []) tsffs.log-level 4 -@tsffs.iface.tsffs.set_start_on_harness(True) -@tsffs.iface.tsffs.set_stop_on_harness(True) -@tsffs.iface.tsffs.set_timeout(3.0) -@tsffs.iface.tsffs.add_exception_solution(14) +@tsffs.start_on_harness = True +@tsffs.stop_on_harness = True +@tsffs.set_timeout = 3.0 +@tsffs.exceptions = [14] load-target "risc-v-simple/linux" namespace = riscv machine:hardware:storage:disk1:image = "test.fs.craff" diff --git a/examples/tutorials/risc-v-kernel/src/tsffs-gcc-riscv64.h b/examples/tutorials/risc-v-kernel/src/tsffs-gcc-riscv64.h index 43014a3c..f6acf1ea 100644 --- a/examples/tutorials/risc-v-kernel/src/tsffs-gcc-riscv64.h +++ b/examples/tutorials/risc-v-kernel/src/tsffs-gcc-riscv64.h @@ -1,3 +1,6 @@ +// Copyright (C) 2024 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 + /// Definitions and macros for compiled-in harnessing of C and C++ target /// software for the RISC-V (64-bit) architecture /// diff --git a/examples/tutorials/risc-v-kernel/src/tutorial-kernel-modules/package/kernel-modules/tutorial-mod/tsffs-gcc-riscv64.h b/examples/tutorials/risc-v-kernel/src/tutorial-kernel-modules/package/kernel-modules/tutorial-mod/tsffs-gcc-riscv64.h index 43014a3c..f6acf1ea 100644 --- a/examples/tutorials/risc-v-kernel/src/tutorial-kernel-modules/package/kernel-modules/tutorial-mod/tsffs-gcc-riscv64.h +++ b/examples/tutorials/risc-v-kernel/src/tutorial-kernel-modules/package/kernel-modules/tutorial-mod/tsffs-gcc-riscv64.h @@ -1,3 +1,6 @@ +// Copyright (C) 2024 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 + /// Definitions and macros for compiled-in harnessing of C and C++ target /// software for the RISC-V (64-bit) architecture /// diff --git a/examples/tutorials/risc-v-kernel/src/tutorial-kernel-modules/package/kernel-modules/tutorial-mod/tutorial-mod.c b/examples/tutorials/risc-v-kernel/src/tutorial-kernel-modules/package/kernel-modules/tutorial-mod/tutorial-mod.c index 263cb714..2ce22982 100644 --- a/examples/tutorials/risc-v-kernel/src/tutorial-kernel-modules/package/kernel-modules/tutorial-mod/tutorial-mod.c +++ b/examples/tutorials/risc-v-kernel/src/tutorial-kernel-modules/package/kernel-modules/tutorial-mod/tutorial-mod.c @@ -1,3 +1,6 @@ +// Copyright (C) 2024 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 + #include #include #include diff --git a/examples/tutorials/risc-v-kernel/src/tutorial-mod-driver.c b/examples/tutorials/risc-v-kernel/src/tutorial-mod-driver.c index 3e114aa0..8bbc9851 100644 --- a/examples/tutorials/risc-v-kernel/src/tutorial-mod-driver.c +++ b/examples/tutorials/risc-v-kernel/src/tutorial-mod-driver.c @@ -1,3 +1,6 @@ +// Copyright (C) 2024 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 + #include #include #include diff --git a/harness/tsffs-gcc-riscv32.h b/harness/tsffs-gcc-riscv32.h index 3272b0d4..1847b3c4 100644 --- a/harness/tsffs-gcc-riscv32.h +++ b/harness/tsffs-gcc-riscv32.h @@ -1,3 +1,6 @@ +// Copyright (C) 2024 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 + /// Definitions and macros for compiled-in harnessing of C and C++ target /// software for the RISC-V (64-bit) architecture /// diff --git a/harness/tsffs-gcc-riscv64.h b/harness/tsffs-gcc-riscv64.h index 43014a3c..f6acf1ea 100644 --- a/harness/tsffs-gcc-riscv64.h +++ b/harness/tsffs-gcc-riscv64.h @@ -1,3 +1,6 @@ +// Copyright (C) 2024 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 + /// Definitions and macros for compiled-in harnessing of C and C++ target /// software for the RISC-V (64-bit) architecture /// diff --git a/harness/tsffs-gcc-x86.h b/harness/tsffs-gcc-x86.h index c4a61831..6f91792c 100644 --- a/harness/tsffs-gcc-x86.h +++ b/harness/tsffs-gcc-x86.h @@ -1,3 +1,6 @@ +// Copyright (C) 2024 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 + /// Definitions and macros for compiled-in harnessing of C and C++ target /// software for the RISC-V (64-bit) architecture /// diff --git a/harness/tsffs-gcc-x86_64.h b/harness/tsffs-gcc-x86_64.h index c2afe7ac..8de28fa1 100644 --- a/harness/tsffs-gcc-x86_64.h +++ b/harness/tsffs-gcc-x86_64.h @@ -1,3 +1,6 @@ +// Copyright (C) 2024 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 + /// Definitions and macros for compiled-in harnessing of C and C++ target /// software for the RISC-V (64-bit) architecture /// diff --git a/modules/tsffs-interface/Makefile b/modules/tsffs-interface/Makefile deleted file mode 100644 index 71923ae4..00000000 --- a/modules/tsffs-interface/Makefile +++ /dev/null @@ -1,8 +0,0 @@ -IFACE_FILES = tsffs-interface.h -THREAD_SAFE = yes - -ifeq ($(MODULE_MAKEFILE),) -$(error Make sure you compile your module from the project directory) -else -include $(MODULE_MAKEFILE) -endif diff --git a/modules/tsffs-interface/tsffs-interface.dml b/modules/tsffs-interface/tsffs-interface.dml deleted file mode 100644 index aca60e34..00000000 --- a/modules/tsffs-interface/tsffs-interface.dml +++ /dev/null @@ -1,42 +0,0 @@ -// Copyright (C) 2023 Intel Corporation -// SPDX-License-Identifier: Apache-2.0 - -dml 1.4; - -header %{ -#include "tsffs-interface.h" -%} - -extern typedef struct { - void (*set_start_on_harness)(conf_object_t * obj, bool start_on_harness); - void (*set_start_magic_number)(conf_object_t * obj, int64 magic_number); - void (*set_stop_on_harness)(conf_object_t * obj, bool stop_on_harness); - void (*set_stop_magic_number)(conf_object_t * obj, int64 magic_number); - void (*start)(conf_object_t * obj, conf_object_t * cpu, generic_address_t testcase_address, generic_address_t size_address, bool virt); - void (*start_with_maximum_size)(conf_object_t * obj, conf_object_t * cpu, generic_address_t testcase_address, uint32 maximum_size, bool virt); - attr_value_t (*start_without_buffer)(conf_object_t * obj, conf_object_t * cpu); - void (*stop)(conf_object_t * obj); - void (*solution)(conf_object_t * obj, uint64 id, char * message); - void (*set_use_snapshots)(conf_object_t * obj, bool use_snapshots); - void (*set_timeout)(conf_object_t * obj, double timeout); - void (*add_exception_solution)(conf_object_t * obj, int64 exception); - void (*remove_exception_solution)(conf_object_t * obj, int64 exception); - void (*set_all_exceptions_are_solutions)(conf_object_t * obj, bool all_exceptions_are_solutions); - void (*add_breakpoint_solution)(conf_object_t * obj, breakpoint_id_t breakpoint); - void (*remove_breakpoint_solution)(conf_object_t * obj, breakpoint_id_t breakpoint); - void (*set_all_breakpoints_are_solutions)(conf_object_t * obj, bool all_breakpoints_are_solutions); - void (*set_cmplog_enabled)(conf_object_t * obj, bool enabled); - void (*set_corpus_directory)(conf_object_t * obj, char * corpus_directory); - void (*set_solutions_directory)(conf_object_t * obj, char * solutions_directory); - void (*set_generate_random_corpus)(conf_object_t * obj, bool generate_random_corpus); - void (*set_iterations)(conf_object_t * obj, size_t iterations); - attr_value_t (*get_configuration)(conf_object_t * obj); - void (*tokenize_executable)(conf_object_t * obj, char * executable_file); - void (*tokenize_src)(conf_object_t * obj, char * source_file); - void (*add_token_file)(conf_object_t * obj, char * token_file); - void (*add_trace_processor)(conf_object_t * obj, conf_object_t * cpu); - void (*add_architecture_hint)(conf_object_t * obj, conf_object_t * cpu, char * hint); - void (*repro)(conf_object_t * obj, char * testcase_file); -} tsffs_interface_t; - -extern const char *const TSFFS_INTERFACE; diff --git a/modules/tsffs-interface/tsffs-interface.h b/modules/tsffs-interface/tsffs-interface.h deleted file mode 100644 index 240c7a31..00000000 --- a/modules/tsffs-interface/tsffs-interface.h +++ /dev/null @@ -1,53 +0,0 @@ -// Copyright (C) 2023 Intel Corporation -// SPDX-License-Identifier: Apache-2.0 - -#ifndef TSFFS_INTERFACE_H -#define TSFFS_INTERFACE_H - -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -SIM_INTERFACE(tsffs) { - void (*set_start_on_harness)(conf_object_t * obj, bool start_on_harness); - void (*set_start_magic_number)(conf_object_t * obj, int64 magic_number); - void (*set_stop_on_harness)(conf_object_t * obj, bool stop_on_harness); - void (*set_stop_magic_number)(conf_object_t * obj, int64 magic_number); - void (*start)(conf_object_t * obj, conf_object_t * cpu, generic_address_t testcase_address, generic_address_t size_address, bool virt); - void (*start_with_maximum_size)(conf_object_t * obj, conf_object_t * cpu, generic_address_t testcase_address, uint32 maximum_size, bool virt); - attr_value_t (*start_without_buffer)(conf_object_t * obj, conf_object_t * cpu); - void (*stop)(conf_object_t * obj); - void (*solution)(conf_object_t * obj, uint64 id, char * message); - void (*set_use_snapshots)(conf_object_t * obj, bool use_snapshots); - void (*set_timeout)(conf_object_t * obj, double timeout); - void (*add_exception_solution)(conf_object_t * obj, int64 exception); - void (*remove_exception_solution)(conf_object_t * obj, int64 exception); - void (*set_all_exceptions_are_solutions)(conf_object_t * obj, bool all_exceptions_are_solutions); - void (*add_breakpoint_solution)(conf_object_t * obj, breakpoint_id_t breakpoint); - void (*remove_breakpoint_solution)(conf_object_t * obj, breakpoint_id_t breakpoint); - void (*set_all_breakpoints_are_solutions)(conf_object_t * obj, bool all_breakpoints_are_solutions); - void (*set_cmplog_enabled)(conf_object_t * obj, bool enabled); - void (*set_corpus_directory)(conf_object_t * obj, char * corpus_directory); - void (*set_solutions_directory)(conf_object_t * obj, char * solutions_directory); - void (*set_generate_random_corpus)(conf_object_t * obj, bool generate_random_corpus); - void (*set_iterations)(conf_object_t * obj, size_t iterations); - attr_value_t (*get_configuration)(conf_object_t * obj); - void (*tokenize_executable)(conf_object_t * obj, char * executable_file); - void (*tokenize_src)(conf_object_t * obj, char * source_file); - void (*add_token_file)(conf_object_t * obj, char * token_file); - void (*add_trace_processor)(conf_object_t * obj, conf_object_t * cpu); - void (*add_architecture_hint)(conf_object_t * obj, conf_object_t * cpu, char * hint); - void (*repro)(conf_object_t * obj, char * testcase_file); -}; - -#define TSFFS_INTERFACE "tsffs" - -#ifdef __cplusplus -} -#endif - -#endif // TSFFS_INTERFACE_H - diff --git a/modules/tsffs/Makefile b/modules/tsffs/Makefile deleted file mode 100644 index 795b1012..00000000 --- a/modules/tsffs/Makefile +++ /dev/null @@ -1,25 +0,0 @@ -# We are creating a module which registers the class `tsffs` -MODULE_CLASSES = tsffs -# The module is thread safe -THREAD_SAFE = yes -# This is passed as a dependency to the final shared object in Make, so this dependency is -# triggered to invoke cargo -EXTRA_OBJ_FILES = $(TARGET_DIR)/../obj/release/lib$(TARGET).a - -ifeq ($(MODULE_MAKEFILE),) -$(error Make sure you compile your module from the project directory) -else -include $(MODULE_MAKEFILE) -endif - -# Cargo generates a .d file as well as the library for us -$(TARGET_DIR)/../obj/release/lib$(TARGET).a $(TARGET_DIR)/../obj/release/lib$(TARGET).d: - $(info CARGO $@) - cargo rustc -r --manifest-path $(SRC_BASE)/tsffs/src/tsffs/Cargo.toml --target-dir $(TARGET_DIR)/../obj/ -- -C link-args="-Wl,--disable-new-dtags -Wl,-rpath,$(SIMICS_BASE)/$(HOST_TYPE)/bin:$(dir $(PYTHON3_LDFLAGS))" - -# We include the .d file that cargo generates, which includes lib$(TARGET).a: [the list of dependencies] -include $(TARGET_DIR)/../obj/release/lib$(TARGET).d - -# Set the user-init-local flag to make module_id.c invoke init_local instead of providing an -# empty one -_INIT_LOCAL_FLAG = --user-init-local \ No newline at end of file diff --git a/modules/tsffs/src/simics/ispm-wrapper/Cargo.toml b/modules/tsffs/src/simics/ispm-wrapper/Cargo.toml deleted file mode 100644 index 36f84ff1..00000000 --- a/modules/tsffs/src/simics/ispm-wrapper/Cargo.toml +++ /dev/null @@ -1,24 +0,0 @@ -[package] -name = "ispm-wrapper" -authors.workspace = true -categories.workspace = true -description.workspace = true -edition.workspace = true -homepage.workspace = true -keywords.workspace = true -license.workspace = true -publish.workspace = true -readme.workspace = true -repository.workspace = true -version.workspace = true - -# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html - -[dependencies] -anyhow = { workspace = true } -command-ext = "0.1.1" -getters2 = "0.1.2" -serde = { workspace = true, features = ["derive"] } -serde_json = { workspace = true } -version-tools = { workspace = true } -typed-builder = "0.18.0" diff --git a/modules/tsffs/src/simics/simics-api-sys/.modcache b/modules/tsffs/src/simics/simics-api-sys/.modcache deleted file mode 100644 index 8af58de1..00000000 --- a/modules/tsffs/src/simics/simics-api-sys/.modcache +++ /dev/null @@ -1,585 +0,0 @@ -version 6247 -dir /home/rhart/hub/tsffs/src/simics/simics-api-sys/. -dir /home/rhart/simics-public/simics-6.0.174/linux64/lib -file 65160 1696283664 8042.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283661;MOD:8042;ABI:6247;API:5;PY_VERSION:0;PY_MINOR_VERSION:0;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;CLS:i8042;MODULE_LOAD;SIMICS_START;THREADSAFE; -file 38576 1696283664 82077.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283662;MOD:82077;ABI:6247;API:6;PY_VERSION:0;PY_MINOR_VERSION:0;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;CLS:i82077;CLS:floppy-drive;MODULE_LOAD;THREADSAFE; -file 33392 1696283663 8237x2.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283661;MOD:8237x2;ABI:6247;API:6;PY_VERSION:0;PY_MINOR_VERSION:0;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;CLS:i8237x2;MODULE_LOAD;THREADSAFE; -file 43984 1696283666 8254.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283664;MOD:8254;ABI:6247;API:6;PY_VERSION:0;PY_MINOR_VERSION:0;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;CLS:i8254;MODULE_LOAD;THREADSAFE; -file 45088 1696283666 8259x2.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283664;MOD:8259x2;ABI:6247;API:6;PY_VERSION:0;PY_MINOR_VERSION:0;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;CLS:i8259x2;MODULE_LOAD;THREADSAFE; -file 177328 1696283677 AM79C960.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283664;MOD:AM79C960;ABI:6247;API:6;PY_VERSION:0;PY_MINOR_VERSION:0;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;CLS:AM79C960;MODULE_LOAD;THREADSAFE; -file 351496 1696283694 AM79C973.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283664;MOD:AM79C973;ABI:6247;API:6;PY_VERSION:0;PY_MINOR_VERSION:0;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;CLS:AM79C973;MODULE_LOAD;THREADSAFE; -file 36216 1696283668 AT24Cxx.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283665;MOD:AT24Cxx;ABI:6247;API:6;PY_VERSION:0;PY_MINOR_VERSION:0;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;CLS:AT24Cxx;CLS:AT24C04;MODULE_LOAD;SIMICS_START;THREADSAFE; -file 25680 1696283667 AT24Cxxx.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283665;MOD:AT24Cxxx;ABI:6247;API:6;PY_VERSION:0;PY_MINOR_VERSION:0;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;CLS:AT24Cxxx;THREADSAFE; -file 196608 1696283674 BCM5703C.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283667;MOD:BCM5703C;ABI:6247;API:6;PY_VERSION:0;PY_MINOR_VERSION:0;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;CLS:BCM5703C;MODULE_LOAD;THREADSAFE; -file 196840 1696283675 BCM5704C.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283667;MOD:BCM5704C;ABI:6247;API:6;PY_VERSION:0;PY_MINOR_VERSION:0;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;CLS:BCM5704C;MODULE_LOAD;THREADSAFE; -file 63088 1696283670 CL-PD6729.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283667;MOD:CL-PD6729;ABI:6247;API:6;PY_VERSION:0;PY_MINOR_VERSION:0;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;CLS:CL-PD6729;MODULE_LOAD;THREADSAFE; -file 106496 1696283670 DEC21041.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283667;MOD:DEC21041;ABI:6247;API:6;PY_VERSION:0;PY_MINOR_VERSION:0;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;CLS:DEC21041;MODULE_LOAD;THREADSAFE; -file 245168 1696283689 DEC21140A-dml.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283667;MOD:DEC21140A-dml;ABI:6247;API:6;PY_VERSION:0;PY_MINOR_VERSION:0;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;CLS:DEC21140A-dml;MODULE_LOAD;THREADSAFE; -file 106496 1696283671 DEC21140A.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283667;MOD:DEC21140A;ABI:6247;API:6;PY_VERSION:0;PY_MINOR_VERSION:0;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;CLS:DEC21140A;MODULE_LOAD;THREADSAFE; -file 106560 1696283671 DEC21143.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283667;MOD:DEC21143;ABI:6247;API:6;PY_VERSION:0;PY_MINOR_VERSION:0;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;CLS:DEC21143;MODULE_LOAD;THREADSAFE; -file 30736 1696283670 DS12887-c.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283668;MOD:DS12887-c;ABI:6247;API:6;PY_VERSION:0;PY_MINOR_VERSION:0;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;CLS:DS12887-c;MODULE_LOAD;SIMICS_START;THREADSAFE; -file 148896 1696283677 DS12887.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283668;MOD:DS12887;ABI:6247;API:6;PY_VERSION:0;PY_MINOR_VERSION:0;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;CLS:DS12887;MODULE_LOAD;THREADSAFE; -file 128280 1696283678 DS323x.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283669;MOD:DS323x;ABI:6247;API:6;PY_VERSION:0;PY_MINOR_VERSION:0;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;CLS:DS323x;CLS:DS3231;MODULE_LOAD;THREADSAFE; -file 179328 1696283680 NS16x50.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283669;MOD:NS16x50;ABI:6247;API:6;PY_VERSION:0;PY_MINOR_VERSION:0;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;CLS:NS16550;CLS:NS16450;MODULE_LOAD;SIMICS_START;THREADSAFE; -file 36016 1696283674 PCF8582C.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283669;MOD:PCF8582C;ABI:6247;API:6;PY_VERSION:0;PY_MINOR_VERSION:0;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;CLS:PCF8582C;THREADSAFE; -file 508840 1696283715 TSB12LV26.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283673;MOD:TSB12LV26;ABI:6247;API:6;PY_VERSION:0;PY_MINOR_VERSION:0;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;CLS:TSB12LV26;MODULE_LOAD;THREADSAFE; -file 132368 1696283680 accel-vga.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283675;MOD:accel-vga;ABI:6247;API:5;PY_VERSION:0;PY_MINOR_VERSION:0;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;CLS:accel-vga;MODULE_LOAD;SIMICS_START;THREADSAFE; -file 74960 1696283646 apic-inter-core-smi-handling-interface.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283633;MOD:apic-inter-core-smi-handling-interface;ABI:6247;API:6;PY_VERSION:3;PY_MINOR_VERSION:0;HOSTTYPE:linux64;PYIFACE:apic_inter_core_smi_handling;THREADSAFE; -file 87784 1696283681 apic.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283677;MOD:apic;ABI:6247;API:6;PY_VERSION:0;PY_MINOR_VERSION:0;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;CLS:apic;CLS:apic-bus;MODULE_LOAD;SIMICS_START;THREADSAFE; -file 21840 1696283681 arinc429-bus.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283679;MOD:arinc429-bus;ABI:6247;API:6;PY_VERSION:0;PY_MINOR_VERSION:0;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;CLS:arinc429_bus;MODULE_LOAD;THREADSAFE; -file 22216 1696283683 async-bridge.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283681;MOD:async-bridge;ABI:6247;API:6;PY_VERSION:0;PY_MINOR_VERSION:0;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;CLS:async-bridge;MODULE_LOAD;THREADSAFE; -file 15168 1696283683 attr-meter.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283682;MOD:attr-meter;ABI:6247;API:6;PY_VERSION:0;PY_MINOR_VERSION:0;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;CLS:attr-meter;MODULE_LOAD;SIMICS_START;THREADSAFE; -file 16968 1696283684 bank-coverage-tool.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283682;MOD:bank-coverage-tool;ABI:6247;API:6;PY_VERSION:0;PY_MINOR_VERSION:0;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;CLS:bank_coverage_tool;CLS:bank_coverage_tool_connection;MODULE_LOAD;SIMICS_START;THREADSAFE; -file 16976 1696283684 bank-patch-tool.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283682;MOD:bank-patch-tool;ABI:6247;API:6;PY_VERSION:0;PY_MINOR_VERSION:0;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;CLS:bank_patch_tool;CLS:bank_patch_tool_connection;MODULE_LOAD;SIMICS_START;THREADSAFE; -file 17032 1696283685 bitmask-translator.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283682;MOD:bitmask-translator;ABI:6247;API:6;PY_VERSION:0;PY_MINOR_VERSION:0;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;CLS:bitmask-translator;MODULE_LOAD;THREADSAFE; -file 15168 1696283688 blueprints.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283683;MOD:blueprints;ABI:6247;API:6;PY_VERSION:0;PY_MINOR_VERSION:0;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;CLS:x58-mb;CLS:script-engine;CLS:eth-connector;CLS:eth-link-connector;CLS:usb-device-connector;CLS:usb-host-connector;CLS:uart-device-connector;CLS:uart-remote-connector;CLS:sata-controller-connector;CLS:sata-device-connector;MODULE_LOAD;SIMICS_START;THREADSAFE; -file 15168 1696283686 bp-manager.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283684;MOD:bp-manager;ABI:6247;API:6;PY_VERSION:0;PY_MINOR_VERSION:0;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;CLS:bp-manager;MODULE_LOAD;SIMICS_START;THREADSAFE; -file 44256 1696283689 can-interface.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283685;MOD:can-interface;ABI:6247;API:6;PY_VERSION:3;PY_MINOR_VERSION:9;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;PYIFACE:can_device;PYIFACE:can_link;THREADSAFE; -file 17552 1696283686 can-link.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283685;MOD:can-link;ABI:6247;API:6;PY_VERSION:0;PY_MINOR_VERSION:0;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;CLS:can_link_impl;CLS:can_endpoint;CLS:can_link;COMP:can_link;MODULE_LOAD;THREADSAFE; -file 26464 1696283688 cdrom-image.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283685;MOD:cdrom-image;ABI:6247;API:6;PY_VERSION:0;PY_MINOR_VERSION:0;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;CLS:cdrom_image;MODULE_LOAD;SIMICS_START;THREADSAFE; -file 17152 1696283687 clipboard-gateway.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283685;MOD:clipboard-gateway;ABI:6247;API:6;PY_VERSION:0;PY_MINOR_VERSION:0;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;CLS:clipboard-gateway;MODULE_LOAD;THREADSAFE; -file 36920 1696283688 clock.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283685;MOD:clock;ABI:6247;API:6;PY_VERSION:0;PY_MINOR_VERSION:0;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;CLS:clock;CLS:cell_and_clocks_comp;CLS:cell-and-clocks;COMP:cell_and_clocks_comp;COMP:cell-and-clocks;MODULE_LOAD;THREADSAFE; -file 17832 1696283688 co-engine.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283687;MOD:co-engine;ABI:6247;API:6;PY_VERSION:0;PY_MINOR_VERSION:0;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;CLS:co-engine;THREADSAFE; -file 22296 1696283678 co-execute.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283676;MOD:co-execute;ABI:6247;API:6;PY_VERSION:0;PY_MINOR_VERSION:0;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;CLS:co-execute;THREADSAFE; -file 59488 1696283995 code-coverage.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283991;MOD:code-coverage;ABI:6247;API:6;PY_VERSION:3;PY_MINOR_VERSION:9;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;CLS:code_coverage;CLS:code_coverage_helper;PYIFACE:code_coverage;MODULE_LOAD;SIMICS_START;THREADSAFE; -file 15168 1696283689 console-components.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283688;MOD:console-components;ABI:6247;API:6;PY_VERSION:0;PY_MINOR_VERSION:0;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;CLS:txt_console_comp;CLS:gfx_console_comp;COMP:txt_console_comp;COMP:gfx_console_comp;MODULE_LOAD;THREADSAFE; -file 15168 1696283611 cp3_quad100tx.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283610;MOD:cp3_quad100tx;ABI:6247;API:6;PY_VERSION:0;PY_MINOR_VERSION:0;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;CLS:cp3_quad100tx;COMP:cp3_quad100tx;MODULE_LOAD;THREADSAFE; -file 15168 1696283611 cpci-adapter-comp.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283610;MOD:cpci-adapter-comp;ABI:6247;API:6;PY_VERSION:0;PY_MINOR_VERSION:0;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;CLS:cpci_adapter;COMP:cpci_adapter;MODULE_LOAD;THREADSAFE; -file 16344 1696283611 cpu-group.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283610;MOD:cpu-group;ABI:6247;API:6;PY_VERSION:0;PY_MINOR_VERSION:0;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;CLS:cpu-group;MODULE_LOAD;THREADSAFE; -file 16992 1696283611 cpu-mode-filter.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283610;MOD:cpu-mode-filter;ABI:6247;API:6;PY_VERSION:0;PY_MINOR_VERSION:0;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;CLS:cpu_mode_filter;MODULE_LOAD;SIMICS_START;THREADSAFE; -file 15168 1696283897 cpumode-software-tracker.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283896;MOD:cpumode-software-tracker;ABI:6247;API:6;PY_VERSION:0;PY_MINOR_VERSION:0;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;CLS:cpumode_software_mapper;CLS:cpumode_software_tracker;CLS:cpumode_software_tracker_comp;MODULE_LOAD;SIMICS_START;THREADSAFE; -file 55584 1696283614 cstate-v3-interface.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283611;MOD:cstate-v3-interface;ABI:6247;API:6;PY_VERSION:3;PY_MINOR_VERSION:9;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;PYIFACE:x86_cstate_notification_v3;PYIFACE:x86_cstate_notification_v4;PYIFACE:x86_cstate_notification_v5;THREADSAFE; -file 16376 1696283611 cycle-staller.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283610;MOD:cycle-staller;ABI:6247;API:6;PY_VERSION:0;PY_MINOR_VERSION:0;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;CLS:cycle_staller;MODULE_LOAD;SIMICS_START;THREADSAFE; -file 17368 1696283611 datagram-link.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283610;MOD:datagram-link;ABI:6247;API:6;PY_VERSION:0;PY_MINOR_VERSION:0;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;CLS:datagram_link_impl;CLS:datagram_link_endpoint;CLS:datagram_link;COMP:datagram_link;MODULE_LOAD;THREADSAFE; -file 7198808 1696283957 disassemble-arm.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283689;MOD:disassemble-arm;ABI:6247;API:6;PY_VERSION:0;PY_MINOR_VERSION:0;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;CLS:disassemble_arm;THREADSAFE; -file 2509800 1696283776 disassemble_x86.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283689;MOD:disassemble_x86;ABI:6247;API:6;PY_VERSION:0;PY_MINOR_VERSION:0;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;CLS:disassemble_x86;THREADSAFE; -file 155984 1696283621 dm9161.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283610;MOD:dm9161;ABI:6247;API:6;PY_VERSION:0;PY_MINOR_VERSION:0;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;CLS:dm9161;MODULE_LOAD;THREADSAFE; -file 15168 1696283910 dml-api-info.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283909;MOD:dml-api-info;ABI:6247;API:6;PY_VERSION:0;PY_MINOR_VERSION:0;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;THREADSAFE; -file 39248 1696283614 doma-cstate-interface.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283611;MOD:doma-cstate-interface;ABI:6247;API:6;PY_VERSION:3;PY_MINOR_VERSION:9;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;PYIFACE:x86_doma_cstate;THREADSAFE; -file 15168 1696283611 empty-components.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283610;MOD:empty-components;ABI:6247;API:6;PY_VERSION:0;PY_MINOR_VERSION:0;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;CLS:empty_components;COMP:empty_components;MODULE_LOAD;THREADSAFE; -file 16144 1696283611 empty-device-c.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283610;MOD:empty-device-c;ABI:6247;API:6;PY_VERSION:0;PY_MINOR_VERSION:0;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;CLS:empty_device_c;MODULE_LOAD;THREADSAFE; -file 86416 1696283615 empty-device-cc.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283610;MOD:empty-device-cc;ABI:6247;API:6;PY_VERSION:0;PY_MINOR_VERSION:0;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;CLS:empty_device_cc;MODULE_LOAD;THREADSAFE; -file 100168 1696283617 empty-device-dml.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283610;MOD:empty-device-dml;ABI:6247;API:6;PY_VERSION:0;PY_MINOR_VERSION:0;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;CLS:empty_device_dml;MODULE_LOAD;THREADSAFE; -file 15168 1696283611 empty-device-pyobj.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283610;MOD:empty-device-pyobj;ABI:6247;API:6;PY_VERSION:0;PY_MINOR_VERSION:0;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;CLS:empty_device_pyobj;MODULE_LOAD;THREADSAFE; -file 15168 1696283611 empty-device-python.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283610;MOD:empty-device-python;ABI:6247;API:6;PY_VERSION:0;PY_MINOR_VERSION:0;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;CLS:empty_device_python;MODULE_LOAD;THREADSAFE; -file 43320 1696283613 empty-interface.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283611;MOD:empty-interface;ABI:6247;API:6;PY_VERSION:3;PY_MINOR_VERSION:9;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;PYIFACE:empty_interface;THREADSAFE; -file 26072 1696283902 empty-software-tracker.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283900;MOD:empty-software-tracker;ABI:6247;API:6;PY_VERSION:0;PY_MINOR_VERSION:0;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;CLS:empty_software_tracker;CLS:empty_software_mapper;CLS:empty_software_tracker_comp;MODULE_LOAD;THREADSAFE; -file 38624 1696283614 eri-interface.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283611;MOD:eri-interface;ABI:6247;API:6;PY_VERSION:3;PY_MINOR_VERSION:9;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;PYIFACE:x86_eri_v1;THREADSAFE; -file 94264 1696283614 etg.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283610;MOD:etg;ABI:6247;API:6;PY_VERSION:0;PY_MINOR_VERSION:0;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;CLS:etg;MODULE_LOAD;THREADSAFE; -file 15168 1696283611 eth-injector-comp.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283610;MOD:eth-injector-comp;ABI:6247;API:6;PY_VERSION:0;PY_MINOR_VERSION:0;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;CLS:eth_injector_comp;COMP:eth_injector_comp;MODULE_LOAD;THREADSAFE; -file 15168 1696283611 eth-injector.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283610;MOD:eth-injector;ABI:6247;API:6;PY_VERSION:0;PY_MINOR_VERSION:0;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;CLS:eth_injector;MODULE_LOAD;THREADSAFE; -file 51920 1696283613 eth-links.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283610;MOD:eth-links;ABI:6247;API:6;PY_VERSION:0;PY_MINOR_VERSION:0;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;CLS:eth-hub-link;CLS:eth-hub-link-endpoint;CLS:eth-cable-link;CLS:eth-cable-link-endpoint;CLS:eth-switch-link;CLS:eth-switch-link-endpoint;CLS:eth-link-snoop-endpoint;CLS:eth-switch-link-snoop-endpoint;CLS:ethernet_hub;CLS:ethernet_cable;CLS:ethernet_switch;CLS:ethernet_vlan_switch;COMP:ethernet_hub;COMP:ethernet_cable;COMP:ethernet_switch;COMP:ethernet_vlan_switch;MODULE_LOAD;SIMICS_START;THREADSAFE; -file 26096 1696283612 eth-probe.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283610;MOD:eth-probe;ABI:6247;API:6;PY_VERSION:0;PY_MINOR_VERSION:0;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;CLS:eth-probe;CLS:eth-probe-port;MODULE_LOAD;THREADSAFE; -file 26216 1696283612 eth-transceiver.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283610;MOD:eth-transceiver;ABI:6247;API:6;PY_VERSION:0;PY_MINOR_VERSION:0;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;CLS:eth-transceiver;MODULE_LOAD;THREADSAFE; -file 15168 1696283611 event-histogram.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283610;MOD:event-histogram;ABI:6247;API:6;PY_VERSION:0;PY_MINOR_VERSION:0;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;CLS:event_histogram;CLS:event_histogram_connection;MODULE_LOAD;SIMICS_START;THREADSAFE; -file 43008 1696283614 event-provider-interface.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283611;MOD:event-provider-interface;ABI:6247;API:6;PY_VERSION:3;PY_MINOR_VERSION:9;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;PYIFACE:event_provider;THREADSAFE; -file 15168 1696283611 examples-comp.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283610;MOD:examples-comp;ABI:6247;API:6;PY_VERSION:0;PY_MINOR_VERSION:0;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;CLS:emmett;CLS:mcfly;CLS:deckard;CLS:rachel;CLS:tyrell;CLS:sebastian;CLS:roy_batty;CLS:frankie_carbone;CLS:tyler_durden;CLS:maria_singer;CLS:ripley;CLS:nemo;CLS:nikita;CLS:wall_e;CLS:hal;CLS:marvin;CLS:elliot;CLS:gertie;CLS:brody;CLS:hunt;CLS:ethan;CLS:korben;CLS:zorg;CLS:leeloo;CLS:godzilla;COMP:emmett;COMP:mcfly;COMP:deckard;COMP:rachel;COMP:tyrell;COMP:sebastian;COMP:roy_batty;COMP:frankie_carbone;COMP:tyler_durden;COMP:maria_singer;COMP:ripley;COMP:nemo;COMP:nikita;COMP:wall_e;COMP:hal;COMP:marvin;COMP:elliot;COMP:gertie;COMP:brody;COMP:hunt;COMP:ethan;COMP:korben;COMP:zorg;COMP:leeloo;COMP:godzilla;MODULE_LOAD;THREADSAFE; -file 16984 1696283611 exception-histogram.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283610;MOD:exception-histogram;ABI:6247;API:6;PY_VERSION:0;PY_MINOR_VERSION:0;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;CLS:exception_histogram;CLS:exception_histogram_connection;MODULE_LOAD;SIMICS_START;THREADSAFE; -file 36944 1696283688 external-connection.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283686;MOD:external-connection;ABI:6247;API:6;PY_VERSION:0;PY_MINOR_VERSION:0;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;CLS:tcp-server;CLS:unix-socket-server;MODULE_LOAD;THREADSAFE; -file 45400 1696283614 firewire-bus.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283610;MOD:firewire-bus;ABI:6247;API:6;PY_VERSION:0;PY_MINOR_VERSION:0;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;CLS:firewire_bus;CLS:firewire_device_test_wrapper;MODULE_LOAD;THREADSAFE; -file 15168 1696283611 firewire-components.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283610;MOD:firewire-components;ABI:6247;API:6;PY_VERSION:0;PY_MINOR_VERSION:0;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;CLS:pci-tsb12lv26;CLS:std-firewire-bus;CLS:std-firewire-sample-device;COMP:pci-tsb12lv26;COMP:std-firewire-bus;COMP:std-firewire-sample-device;MODULE_LOAD;THREADSAFE; -file 25712 1696283611 framebuffer.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283610;MOD:framebuffer;ABI:6247;API:5;PY_VERSION:0;PY_MINOR_VERSION:0;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;CLS:framebuffer;THREADSAFE; -file 26920 1696283613 frequency-bus.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283610;MOD:frequency-bus;ABI:6247;API:6;PY_VERSION:0;PY_MINOR_VERSION:0;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;CLS:frequency_bus;MODULE_LOAD;THREADSAFE; -file 16432 1696283611 frontend-server-console.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283610;MOD:frontend-server-console;ABI:6247;API:6;PY_VERSION:0;PY_MINOR_VERSION:0;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;CLS:frontend-server-console;THREADSAFE; -file 66440 1696283613 ftp-service.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283610;MOD:ftp-service;ABI:6247;API:6;PY_VERSION:0;PY_MINOR_VERSION:0;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;CLS:ftp-service;CLS:ftp-control;CLS:ftp-data;MODULE_LOAD;THREADSAFE; -file 16968 1696283612 ftp_alg.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283610;MOD:ftp_alg;ABI:6247;API:6;PY_VERSION:0;PY_MINOR_VERSION:0;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;CLS:ftp-alg;SIMICS_START;THREADSAFE; -file 94304 1696283613 g-cache.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283610;MOD:g-cache;ABI:6247;API:6;PY_VERSION:0;PY_MINOR_VERSION:0;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;CLS:g-cache;CLS:trans-splitter;CLS:trans-sorter;MODULE_LOAD;SIMICS_START;THREADSAFE; -file 149648 1696283615 gdb-remote.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283610;MOD:gdb-remote;ABI:6247;API:6;PY_VERSION:0;PY_MINOR_VERSION:0;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;CLS:gdb-remote;MODULE_LOAD;SIMICS_START;THREADSAFE; -file 85224 1696283613 generic-flash-memory.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283610;MOD:generic-flash-memory;ABI:6247;API:6;PY_VERSION:0;PY_MINOR_VERSION:0;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;CLS:generic-flash-memory;CLS:new-flash-memory;MODULE_LOAD;THREADSAFE; -file 43608 1696283614 generic-message-interfaces.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283611;MOD:generic-message-interfaces;ABI:6247;API:6;PY_VERSION:3;PY_MINOR_VERSION:9;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;PYIFACE:generic_message_link;PYIFACE:generic_message_device;THREADSAFE; -file 256216 1696283618 generic-mmc-card.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283610;MOD:generic-mmc-card;ABI:6247;API:6;PY_VERSION:0;PY_MINOR_VERSION:0;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;CLS:generic-mmc-card;MODULE_LOAD;THREADSAFE; -file 15168 1696283611 generic-pcie-switch-comp.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283610;MOD:generic-pcie-switch-comp;ABI:6247;API:6;PY_VERSION:0;PY_MINOR_VERSION:0;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;CLS:generic_pcie_switch;MODULE_LOAD;THREADSAFE; -file 308960 1696283639 generic-pcie-switch-port.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283610;MOD:generic-pcie-switch-port;ABI:6247;API:6;PY_VERSION:0;PY_MINOR_VERSION:0;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;CLS:generic_pcie_switch_port;MODULE_LOAD;SIMICS_START;THREADSAFE; -file 461896 1696283639 generic-sdmmc-card.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283610;MOD:generic-sdmmc-card;ABI:6247;API:6;PY_VERSION:0;PY_MINOR_VERSION:0;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;CLS:mmc_card;CLS:sd_card;MODULE_LOAD;SIMICS_START;THREADSAFE; -file 193840 1696283621 generic-spi-flash.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283610;MOD:generic-spi-flash;ABI:6247;API:6;PY_VERSION:0;PY_MINOR_VERSION:0;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;CLS:generic_spi_flash;CLS:M25Pxx;MODULE_LOAD;SIMICS_START;THREADSAFE; -file 714288 1696283653 generic_eth_phy.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283610;MOD:generic_eth_phy;ABI:6247;API:6;PY_VERSION:0;PY_MINOR_VERSION:0;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;CLS:generic_eth_phy;MODULE_LOAD;THREADSAFE; -file 15168 1696283611 global-messages.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283610;MOD:global-messages;ABI:6247;API:6;PY_VERSION:0;PY_MINOR_VERSION:0;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;MODULE_LOAD;THREADSAFE; -file 26824 1696283612 gml-link.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283610;MOD:gml-link;ABI:6247;API:6;PY_VERSION:0;PY_MINOR_VERSION:0;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;CLS:gml_link_impl;CLS:gml_link_endpoint;CLS:gml_link;COMP:gml_link;MODULE_LOAD;THREADSAFE; -file 138600 1696283901 graphcon.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283896;MOD:graphcon;ABI:6247;API:6;PY_VERSION:0;PY_MINOR_VERSION:0;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;CLS:graphcon;CLS:gfx-frontend-winsome;MODULE_LOAD;SIMICS_START;THREADSAFE; -file 21784 1696283612 hap-meter.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283610;MOD:hap-meter;ABI:6247;API:6;PY_VERSION:0;PY_MINOR_VERSION:0;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;CLS:hap-meter;MODULE_LOAD;SIMICS_START;THREADSAFE; -file 21864 1696283611 host-serial-console.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283610;MOD:host-serial-console;ABI:6247;API:6;PY_VERSION:0;PY_MINOR_VERSION:0;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;CLS:host-serial-console;CLS:pty-console;THREADSAFE; -file 45296 1696283612 hostfs.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283610;MOD:hostfs;ABI:6247;API:6;PY_VERSION:0;PY_MINOR_VERSION:0;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;CLS:hostfs;MODULE_LOAD;THREADSAFE; -file 38848 1696283612 hypersim-pattern-matcher.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283610;MOD:hypersim-pattern-matcher;ABI:6247;API:6;PY_VERSION:0;PY_MINOR_VERSION:0;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;CLS:hypersim-pattern-matcher;MODULE_LOAD;SIMICS_START;THREADSAFE; -file 15168 1696283611 i210-comp.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283610;MOD:i210-comp;ABI:6247;API:6;PY_VERSION:0;PY_MINOR_VERSION:0;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;CLS:i210_comp;COMP:i210_comp;MODULE_LOAD;THREADSAFE; -file 1023456 1696283696 i210.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283610;MOD:i210;ABI:6247;API:6;PY_VERSION:0;PY_MINOR_VERSION:0;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;CLS:i210;MODULE_LOAD;SIMICS_START;THREADSAFE; -file 67832 1696283613 i21150.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283611;MOD:i21150;ABI:6247;API:6;PY_VERSION:0;PY_MINOR_VERSION:0;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;CLS:i21150;MODULE_LOAD;THREADSAFE; -file 67832 1696283614 i21152.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283611;MOD:i21152;ABI:6247;API:6;PY_VERSION:0;PY_MINOR_VERSION:0;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;CLS:i21152;MODULE_LOAD;THREADSAFE; -file 176512 1696283626 i21154.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283611;MOD:i21154;ABI:6247;API:6;PY_VERSION:0;PY_MINOR_VERSION:0;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;CLS:i21154;MODULE_LOAD;THREADSAFE; -file 76000 1696283614 i21554.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283611;MOD:i21554;ABI:6247;API:6;PY_VERSION:0;PY_MINOR_VERSION:0;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;CLS:i21554-prim;CLS:i21554-scnd;THREADSAFE; -file 76000 1696283614 i21555.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283611;MOD:i21555;ABI:6247;API:6;PY_VERSION:0;PY_MINOR_VERSION:0;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;CLS:i21555-prim;CLS:i21555-scnd;THREADSAFE; -file 50280 1696283614 i2c-bus.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283611;MOD:i2c-bus;ABI:6247;API:6;PY_VERSION:0;PY_MINOR_VERSION:0;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;CLS:i2c-bus;CLS:i2c_slave_v2_to_bus_adapter;MODULE_LOAD;THREADSAFE; -file 58280 1696283616 i2c-link-v1.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283610;MOD:i2c-link-v1;ABI:6247;API:6;PY_VERSION:0;PY_MINOR_VERSION:0;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;CLS:i2c_link_v1;CLS:i2c_link;MODULE_LOAD;THREADSAFE; -file 67704 1696283615 i2c-link-v2.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283611;MOD:i2c-link-v2;ABI:6247;API:6;PY_VERSION:0;PY_MINOR_VERSION:0;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;CLS:i2c-link-impl;CLS:i2c-link-endpoint;CLS:i2c_wire;CLS:i2c_link_v2;COMP:i2c_link_v2;MODULE_LOAD;SIMICS_START;THREADSAFE; -file 269368 1696283622 i3c-link.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283611;MOD:i3c-link;ABI:6247;API:6;PY_VERSION:0;PY_MINOR_VERSION:0;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;CLS:i3c_link_impl;CLS:i3c_link_endpoint;CLS:i3c_cable_impl;CLS:i3c_cable_endpoint;CLS:i3c_bus;CLS:i3c_wire;CLS:i2c_to_i3c_adapter;CLS:i3c_cable;CLS:i3c_link;COMP:i3c_cable;COMP:i3c_link;MODULE_LOAD;THREADSAFE; -file 118736 1696283614 i82543.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283611;MOD:i82543;ABI:6247;API:6;PY_VERSION:0;PY_MINOR_VERSION:0;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;CLS:i82543;MODULE_LOAD;SIMICS_START;THREADSAFE; -file 118736 1696283614 i82546.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283611;MOD:i82546;ABI:6247;API:6;PY_VERSION:0;PY_MINOR_VERSION:0;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;CLS:i82546;MODULE_LOAD;SIMICS_START;THREADSAFE; -file 266544 1696283635 i82559.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283611;MOD:i82559;ABI:6247;API:6;PY_VERSION:0;PY_MINOR_VERSION:0;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;CLS:i82559;MODULE_LOAD;THREADSAFE; -file 15168 1696283612 i82571EB-v2-comp.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283611;MOD:i82571EB-v2-comp;ABI:6247;API:6;PY_VERSION:0;PY_MINOR_VERSION:0;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;CLS:i82571EB_v2_comp;COMP:i82571EB_v2_comp;MODULE_LOAD;THREADSAFE; -file 931432 1696283688 i82571EB-v2.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283611;MOD:i82571EB-v2;ABI:6247;API:6;PY_VERSION:0;PY_MINOR_VERSION:0;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;CLS:i82571EB_v2;MODULE_LOAD;SIMICS_START;THREADSAFE; -file 15168 1696283612 i82574-v2-comp.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283611;MOD:i82574-v2-comp;ABI:6247;API:6;PY_VERSION:0;PY_MINOR_VERSION:0;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;CLS:i82574_v2_comp;COMP:i82574_v2_comp;MODULE_LOAD;THREADSAFE; -file 997984 1696283695 i82574-v2.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283612;MOD:i82574-v2;ABI:6247;API:6;PY_VERSION:0;PY_MINOR_VERSION:0;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;CLS:i82574_v2;MODULE_LOAD;SIMICS_START;THREADSAFE; -file 15168 1696283612 i82576EB-v2-comp.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283611;MOD:i82576EB-v2-comp;ABI:6247;API:6;PY_VERSION:0;PY_MINOR_VERSION:0;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;CLS:i82576EB_v2_comp;COMP:i82576EB_v2_comp;MODULE_LOAD;THREADSAFE; -file 1044472 1696283697 i82576EB-v2.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283612;MOD:i82576EB-v2;ABI:6247;API:6;PY_VERSION:0;PY_MINOR_VERSION:0;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;CLS:i82576EB_v2;MODULE_LOAD;SIMICS_START;THREADSAFE; -file 15168 1696283612 i82583V-v2-comp.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283611;MOD:i82583V-v2-comp;ABI:6247;API:6;PY_VERSION:0;PY_MINOR_VERSION:0;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;CLS:i82583V_v2_comp;COMP:i82583V_v2_comp;MODULE_LOAD;THREADSAFE; -file 837296 1696283684 i82583V-v2.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283612;MOD:i82583V-v2;ABI:6247;API:6;PY_VERSION:0;PY_MINOR_VERSION:0;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;CLS:i82583V_v2;MODULE_LOAD;SIMICS_START;THREADSAFE; -file 15968 1696283613 id-splitter.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283612;MOD:id-splitter;ABI:6247;API:6;PY_VERSION:0;PY_MINOR_VERSION:0;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;CLS:id-splitter;THREADSAFE; -file 101232 1696283616 ide.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283612;MOD:ide;ABI:6247;API:6;PY_VERSION:0;PY_MINOR_VERSION:0;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;CLS:ide;CLS:ide-disk;CLS:ide-cdrom;MODULE_LOAD;SIMICS_START;THREADSAFE; -file 57792 1696283616 ieee-802-15-4-interfaces.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283613;MOD:ieee-802-15-4-interfaces;ABI:6247;API:6;PY_VERSION:3;PY_MINOR_VERSION:9;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;PYIFACE:ieee_802_15_4_link;PYIFACE:ieee_802_15_4_control;PYIFACE:ieee_802_15_4_receiver;PYIFACE:ieee_802_15_4_probe;THREADSAFE; -file 36584 1696283614 ieee-802-15-4-link.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283612;MOD:ieee-802-15-4-link;ABI:6247;API:6;PY_VERSION:0;PY_MINOR_VERSION:0;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;CLS:ieee_802_15_4_link_impl;CLS:ieee_802_15_4_link_endpoint;CLS:ieee_802_15_4_link;COMP:ieee_802_15_4_link;MODULE_LOAD;THREADSAFE; -file 26496 1696283615 ieee-802-15-4-probe.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283612;MOD:ieee-802-15-4-probe;ABI:6247;API:6;PY_VERSION:0;PY_MINOR_VERSION:0;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;CLS:ieee_802_15_4_probe;MODULE_LOAD;THREADSAFE; -file 16688 1696283613 instruction-count.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283612;MOD:instruction-count;ABI:6247;API:6;PY_VERSION:0;PY_MINOR_VERSION:0;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;CLS:instruction_count;CLS:instruction_count_connection;MODULE_LOAD;SIMICS_START;THREADSAFE; -file 46360 1696283614 instruction-histogram.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283612;MOD:instruction-histogram;ABI:6247;API:6;PY_VERSION:0;PY_MINOR_VERSION:0;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;CLS:instruction_histogram;CLS:mnemonic_histogram_connection;CLS:size_histogram_connection;CLS:x86_normalized_histogram_connection;CLS:xed_iform_histogram_connection;MODULE_LOAD;SIMICS_START;THREADSAFE; -file 16176 1696283613 instrumentation-filter-aggregator.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283612;MOD:instrumentation-filter-aggregator;ABI:6247;API:6;PY_VERSION:0;PY_MINOR_VERSION:0;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;CLS:instrumentation_filter_aggregator;MODULE_LOAD;THREADSAFE; -file 31088 1696283614 instrumentation-tracer-tool.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283612;MOD:instrumentation-tracer-tool;ABI:6247;API:6;PY_VERSION:0;PY_MINOR_VERSION:0;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;CLS:tracer_tool;CLS:tracer_tool_connection;MODULE_LOAD;SIMICS_START;THREADSAFE; -file 173736 1696283626 intel-e1000.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283612;MOD:intel-e1000;ABI:6247;API:6;PY_VERSION:0;PY_MINOR_VERSION:0;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;CLS:e1000_spi;MODULE_LOAD;THREADSAFE; -file 21960 1696283615 interrupt-to-signal.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283612;MOD:interrupt-to-signal;ABI:6247;API:6;PY_VERSION:0;PY_MINOR_VERSION:0;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;CLS:interrupt_to_signal;MODULE_LOAD;THREADSAFE; -file 26648 1696283614 io-apic.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283612;MOD:io-apic;ABI:6247;API:6;PY_VERSION:0;PY_MINOR_VERSION:0;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;CLS:io-apic;MODULE_LOAD;THREADSAFE; -file 15168 1696283614 isa-components.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283613;MOD:isa-components;ABI:6247;API:6;PY_VERSION:0;PY_MINOR_VERSION:0;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;CLS:std-super-io;CLS:ps2-keyboard-mouse;CLS:pc-dual-serial-ports;CLS:pc-quad-serial-ports;CLS:pc-floppy-controller;CLS:pc-single-parallel-port;CLS:isa-vga;CLS:isa-lance;CLS:sio-w83627hf;COMP:std-super-io;COMP:ps2-keyboard-mouse;COMP:pc-dual-serial-ports;COMP:pc-quad-serial-ports;COMP:pc-floppy-controller;COMP:pc-single-parallel-port;COMP:isa-vga;COMP:isa-lance;COMP:sio-w83627hf;MODULE_LOAD;THREADSAFE; -file 17248 1696283614 isa.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283613;MOD:isa;ABI:6247;API:6;PY_VERSION:0;PY_MINOR_VERSION:0;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;CLS:ISA;MODULE_LOAD;THREADSAFE; -file 478200 1696283923 linux-tracker.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283901;MOD:linux-tracker;ABI:6247;API:6;PY_VERSION:0;PY_MINOR_VERSION:0;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;CLS:linux_analyzer;CLS:linux_mapper;CLS:linux_tracker;CLS:linux_tracker_comp;MODULE_LOAD;SIMICS_START;THREADSAFE; -file 17736 1696283615 mac-splitter.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283613;MOD:mac-splitter;ABI:6247;API:6;PY_VERSION:0;PY_MINOR_VERSION:0;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;CLS:mac_splitter;THREADSAFE; -file 96216 1696283617 magic-pipe-interface.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283614;MOD:magic-pipe-interface;ABI:6247;API:6;PY_VERSION:3;PY_MINOR_VERSION:9;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;PYIFACE:magic_pipe_reader;PYIFACE:magic_pipe_writer;PYIFACE:magic_pipe_setup;THREADSAFE; -file 41304 1696283615 magic-pipe.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283613;MOD:magic-pipe;ABI:6247;API:6;PY_VERSION:0;PY_MINOR_VERSION:0;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;CLS:magic_pipe;MODULE_LOAD;SIMICS_START;THREADSAFE; -file 15168 1696283614 matic.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283613;MOD:matic;ABI:6247;API:6;PY_VERSION:0;PY_MINOR_VERSION:0;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;CLS:agent_manager;CLS:agent_handle;MODULE_LOAD;SIMICS_START;THREADSAFE; -file 26448 1696283614 mem-traffic-meter.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283613;MOD:mem-traffic-meter;ABI:6247;API:6;PY_VERSION:0;PY_MINOR_VERSION:0;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;CLS:mem-traffic-meter;MODULE_LOAD;SIMICS_START;THREADSAFE; -file 15168 1696283614 memory-comp.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283613;MOD:memory-comp;ABI:6247;API:6;PY_VERSION:0;PY_MINOR_VERSION:0;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;CLS:simple_memory_module;CLS:ddr_memory_module_comp;CLS:ddr2_memory_module_comp;CLS:ddr3_memory_module_comp;CLS:sdram_memory_module_comp;COMP:simple_memory_module;COMP:ddr_memory_module_comp;COMP:ddr2_memory_module_comp;COMP:ddr3_memory_module_comp;COMP:sdram_memory_module_comp;MODULE_LOAD;THREADSAFE; -file 15168 1696283614 memory-components.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283613;MOD:memory-components;ABI:6247;API:6;PY_VERSION:0;PY_MINOR_VERSION:0;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;CLS:ddr-memory-module;CLS:ddr2-memory-module;CLS:ddr3-memory-module;CLS:sdram-memory-module;COMP:ddr-memory-module;COMP:ddr2-memory-module;COMP:ddr3-memory-module;COMP:sdram-memory-module;MODULE_LOAD;THREADSAFE; -file 31032 1696283614 memory-profiler.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283613;MOD:memory-profiler;ABI:6247;API:6;PY_VERSION:0;PY_MINOR_VERSION:0;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;CLS:memory_profiler;CLS:memory_profiler_connection;MODULE_LOAD;SIMICS_START;THREADSAFE; -file 25416 1696283614 microwire-eeprom.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283613;MOD:microwire-eeprom;ABI:6247;API:6;PY_VERSION:0;PY_MINOR_VERSION:0;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;CLS:microwire-eeprom;THREADSAFE; -file 25856 1696283614 mii-management-bus.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283613;MOD:mii-management-bus;ABI:6247;API:6;PY_VERSION:0;PY_MINOR_VERSION:0;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;CLS:mii-management-bus;MODULE_LOAD;THREADSAFE; -file 56776 1696283615 mii-transceiver.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283613;MOD:mii-transceiver;ABI:6247;API:6;PY_VERSION:0;PY_MINOR_VERSION:0;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;CLS:mii-transceiver;MODULE_LOAD;THREADSAFE; -file 15168 1696283687 mini_winsome.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283686;MOD:mini_winsome;ABI:6247;API:6;PY_VERSION:0;PY_MINOR_VERSION:0;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;SIMICS_START;THREADSAFE; -file 15168 1696283614 mmc-card-comp.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283613;MOD:mmc-card-comp;ABI:6247;API:6;PY_VERSION:0;PY_MINOR_VERSION:0;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;CLS:micron_mtfc4ggqdi_sdhc_card;CLS:micron_mtfc4ggqdi_emmc_card;CLS:micron_mtfc2ggqdi_emmc_card;CLS:micron_mtfc4gacaeam_emmc_card;CLS:micron_mtfc8gacaeam_emmc_card;CLS:micron_mtfc8gam_emmc_card;CLS:micron_mtfc16gap_emmc_card;CLS:micron_mtfc32gap_emmc_card;CLS:micron_mtfc64gap_emmc_card;CLS:micron_mtfc128gap_emmc_card;CLS:micron_mtfc64ggqdi_sdhc_card;MODULE_LOAD;SIMICS_START;THREADSAFE; -file 36016 1696283615 ms1553-link-v2.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283613;MOD:ms1553-link-v2;ABI:6247;API:6;PY_VERSION:0;PY_MINOR_VERSION:0;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;CLS:ms1553-link-v2-impl;CLS:ms1553-link-v2-endpoint;CLS:ms1553-link-v2-snoop-endpoint;CLS:ms1553_link_v2;COMP:ms1553_link_v2;MODULE_LOAD;THREADSAFE; -file 43128 1696283616 ms1553-snoop-interface.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283613;MOD:ms1553-snoop-interface;ABI:6247;API:6;PY_VERSION:3;PY_MINOR_VERSION:9;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;PYIFACE:ms1553_snoop;THREADSAFE; -file 25720 1696283614 mtprof.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283613;MOD:mtprof;ABI:6247;API:6;PY_VERSION:0;PY_MINOR_VERSION:0;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;CLS:mtprof;MODULE_LOAD;SIMICS_START;THREADSAFE; -file 129136 1696283617 nfs-server.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283613;MOD:nfs-server;ABI:6247;API:6;PY_VERSION:0;PY_MINOR_VERSION:0;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;CLS:nfs_server;MODULE_LOAD;SIMICS_START;THREADSAFE; -file 22528 1696283615 notifier-example.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283613;MOD:notifier-example;ABI:6247;API:6;PY_VERSION:0;PY_MINOR_VERSION:0;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;CLS:tcp_server;CLS:connected_device;THREADSAFE; -file 15168 1696283614 old-breakpoint-manager.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283613;MOD:old-breakpoint-manager;ABI:6247;API:6;PY_VERSION:0;PY_MINOR_VERSION:0;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;MODULE_LOAD;SIMICS_START;THREADSAFE; -file 81248 1696283618 onfi-flash.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283613;MOD:onfi-flash;ABI:6247;API:6;PY_VERSION:0;PY_MINOR_VERSION:0;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;CLS:onfi_flash;MODULE_LOAD;THREADSAFE; -file 82432 1696283618 os-awareness-interfaces.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283615;MOD:os-awareness-interfaces;ABI:6247;API:6;PY_VERSION:3;PY_MINOR_VERSION:9;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;PYIFACE:osa_linux_software_info;PYIFACE:osa_linux_software_tracker_info;PYIFACE:osa_tracker_parameters;PYIFACE:osa_target_info;THREADSAFE; -file 161768 1696283694 os-awareness.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283688;MOD:os-awareness;ABI:6247;API:6;PY_VERSION:0;PY_MINOR_VERSION:0;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;CLS:osa_admin_emulator;CLS:os_awareness;MODULE_LOAD;SIMICS_START;THREADSAFE; -file 67248 1696283907 partition-tracker.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283902;MOD:partition-tracker;ABI:6247;API:6;PY_VERSION:0;PY_MINOR_VERSION:0;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;CLS:partition_tracker;CLS:partition_mapper;CLS:partition_tracker_comp;MODULE_LOAD;SIMICS_START;THREADSAFE; -file 15168 1696283615 pc-config.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283614;MOD:pc-config;ABI:6247;API:6;PY_VERSION:0;PY_MINOR_VERSION:0;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;CLS:pc-config;MODULE_LOAD;SIMICS_START;THREADSAFE; -file 16832 1696283615 pc-shadow.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283614;MOD:pc-shadow;ABI:6247;API:6;PY_VERSION:0;PY_MINOR_VERSION:0;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;CLS:pc-shadow;MODULE_LOAD;THREADSAFE; -file 43880 1696283616 pci-bus.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283614;MOD:pci-bus;ABI:6247;API:6;PY_VERSION:0;PY_MINOR_VERSION:0;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;CLS:pci-bus;MODULE_LOAD;THREADSAFE; -file 15168 1696283615 pci-comp.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283614;MOD:pci-comp;ABI:6247;API:6;PY_VERSION:0;PY_MINOR_VERSION:0;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;CLS:pci_bcm5703c_comp;CLS:pci_bcm5704c_comp;CLS:pci_am79c973_comp;CLS:pci_vga_comp;CLS:pci_accel_vga_comp;CLS:pci_i21152_comp;CLS:pci_i82543gc_comp;CLS:pci_i82546bg_comp;CLS:pci_i82559_comp;CLS:pci_pd6729_comp;CLS:pci_dec21041_comp;CLS:pci_dec21143_comp;CLS:pci_dec21140;CLS:pci_dec21140_panel;CLS:pci_dec21140a_comp;COMP:pci_bcm5703c_comp;COMP:pci_bcm5704c_comp;COMP:pci_am79c973_comp;COMP:pci_vga_comp;COMP:pci_accel_vga_comp;COMP:pci_i21152_comp;COMP:pci_i82543gc_comp;COMP:pci_i82546bg_comp;COMP:pci_i82559_comp;COMP:pci_pd6729_comp;COMP:pci_dec21041_comp;COMP:pci_dec21143_comp;COMP:pci_dec21140;COMP:pci_dec21140_panel;COMP:pci_dec21140a_comp;MODULE_LOAD;THREADSAFE; -file 15168 1696283615 pci-components.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283614;MOD:pci-components;ABI:6247;API:6;PY_VERSION:0;PY_MINOR_VERSION:0;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;CLS:pci-bcm5703c;CLS:pci-bcm5704c;CLS:pci-dec21041;CLS:pci-dec21140a;CLS:pci-dec21143;CLS:pci-dec21140a-dml;CLS:pci-am79c973;CLS:pci-vga;CLS:pci-accel-vga;CLS:pci-i21152;CLS:pci-pd6729;CLS:pci-i82543gc;CLS:pci-i82546bg;CLS:pci-i82559;COMP:pci-bcm5703c;COMP:pci-bcm5704c;COMP:pci-dec21041;COMP:pci-dec21140a;COMP:pci-dec21143;COMP:pci-dec21140a-dml;COMP:pci-am79c973;COMP:pci-vga;COMP:pci-accel-vga;COMP:pci-i21152;COMP:pci-pd6729;COMP:pci-i82543gc;COMP:pci-i82546bg;COMP:pci-i82559;MODULE_LOAD;SIMICS_START;THREADSAFE; -file 15168 1696283615 pci-proxy.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283614;MOD:pci-proxy;ABI:6247;API:6;PY_VERSION:0;PY_MINOR_VERSION:0;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;CLS:pci_proxy;CLS:pci_proxy_mf;MODULE_LOAD;THREADSAFE; -file 48680 1696283617 pcie-bus.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283614;MOD:pcie-bus;ABI:6247;API:6;PY_VERSION:0;PY_MINOR_VERSION:0;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;CLS:pcie-bus;CLS:pcie-switch;MODULE_LOAD;THREADSAFE; -file 256504 1696283625 pcie-downstream-port.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283614;MOD:pcie-downstream-port;ABI:6247;API:6;PY_VERSION:0;PY_MINOR_VERSION:0;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;CLS:pcie-downstream-port;CLS:pcie-downstream-port-legacy;MODULE_LOAD;SIMICS_START;THREADSAFE; -file 15168 1696283615 phy-comp.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283614;MOD:phy-comp;ABI:6247;API:6;PY_VERSION:0;PY_MINOR_VERSION:0;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;CLS:phy_comp;COMP:phy_comp;MODULE_LOAD;THREADSAFE; -file 15168 1696283615 phy-components.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283614;MOD:phy-components;ABI:6247;API:6;PY_VERSION:0;PY_MINOR_VERSION:0;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;CLS:phy-mii-transceiver;COMP:phy-mii-transceiver;MODULE_LOAD;THREADSAFE; -file 21128 1696283616 pipe-manager-example.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283615;MOD:pipe-manager-example;ABI:6247;API:6;PY_VERSION:0;PY_MINOR_VERSION:0;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;CLS:pipe_manager;MODULE_LOAD;SIMICS_START;THREADSAFE; -file 15168 1696283616 probe-monitor.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283615;MOD:probe-monitor;ABI:6247;API:6;PY_VERSION:0;PY_MINOR_VERSION:0;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;CLS:probe_monitor;CLS:probe_streamer;CLS:probe_system_perfmeter;MODULE_LOAD;SIMICS_START;THREADSAFE; -file 29944 1696283616 process-filter.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283615;MOD:process-filter;ABI:6247;API:6;PY_VERSION:0;PY_MINOR_VERSION:0;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;CLS:process_filter;MODULE_LOAD;SIMICS_START;THREADSAFE; -file 15168 1696283616 process-histogram.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283615;MOD:process-histogram;ABI:6247;API:6;PY_VERSION:0;PY_MINOR_VERSION:0;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;CLS:process_histogram;CLS:process_histogram_connection;MODULE_LOAD;SIMICS_START;THREADSAFE; -file 17488 1696283616 ram-tracer.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283615;MOD:ram-tracer;ABI:6247;API:6;PY_VERSION:0;PY_MINOR_VERSION:0;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;CLS:ram_tracer;CLS:ram_tracer_connection;MODULE_LOAD;SIMICS_START;THREADSAFE; -file 53776 1696283617 real-network.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283615;MOD:real-network;ABI:6247;API:6;PY_VERSION:0;PY_MINOR_VERSION:0;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;CLS:rn-eth-bridge-tap;CLS:real-network-host;CLS:real-network-bridge;CLS:real_network_host_comp;CLS:real_network_bridge_comp;COMP:real-network-host;COMP:real-network-bridge;COMP:real_network_host_comp;COMP:real_network_bridge_comp;MODULE_LOAD;SIMICS_START;THREADSAFE; -file 21040 1696283616 realtime.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283615;MOD:realtime;ABI:6247;API:6;PY_VERSION:0;PY_MINOR_VERSION:0;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;CLS:realtime;MODULE_LOAD;SIMICS_START;THREADSAFE; -file 35824 1696283616 recorder.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283615;MOD:recorder;ABI:6247;API:6;PY_VERSION:0;PY_MINOR_VERSION:0;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;CLS:recorder;MODULE_LOAD;THREADSAFE; -file 16264 1696283616 replace-consoles.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283615;MOD:replace-consoles;ABI:6247;API:6;PY_VERSION:0;PY_MINOR_VERSION:0;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;CLS:patch_vga_interfaces;SIMICS_START;THREADSAFE; -file 15168 1696283616 sample-802-15-4-transceiver-comp.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283615;MOD:sample-802-15-4-transceiver-comp;ABI:6247;API:6;PY_VERSION:0;PY_MINOR_VERSION:0;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;CLS:sample_802_15_4_transceiver_comp;CLS:sample_802_15_4_panel;COMP:sample_802_15_4_transceiver_comp;COMP:sample_802_15_4_panel;MODULE_LOAD;THREADSAFE; -file 69528 1696283620 sample-802-15-4-transceiver.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283615;MOD:sample-802-15-4-transceiver;ABI:6247;API:6;PY_VERSION:0;PY_MINOR_VERSION:0;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;CLS:sample_802_15_4_transceiver;MODULE_LOAD;THREADSAFE; -file 15168 1696283616 sample-components.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283615;MOD:sample-components;ABI:6247;API:6;PY_VERSION:0;PY_MINOR_VERSION:0;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;CLS:sample_pci_card;COMP:sample_pci_card;MODULE_LOAD;THREADSAFE; -file 15168 1696283616 sample-cpci-comp.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283615;MOD:sample-cpci-comp;ABI:6247;API:6;PY_VERSION:0;PY_MINOR_VERSION:0;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;CLS:cpci_backplane;COMP:cpci_backplane;MODULE_LOAD;THREADSAFE; -file 554424 1696283635 sample-device-c++.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283615;MOD:sample-device-c++;ABI:6247;API:6;PY_VERSION:0;PY_MINOR_VERSION:0;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;CLS:sample_device_cpp;CLS:sample_device_cpp_with_register_as_data;MODULE_LOAD;THREADSAFE; -file 16072 1696283616 sample-device-c.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283615;MOD:sample-device-c;ABI:6247;API:6;PY_VERSION:0;PY_MINOR_VERSION:0;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;CLS:sample-device-c;MODULE_LOAD;THREADSAFE; -file 94848 1696283623 sample-device-dml.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283615;MOD:sample-device-dml;ABI:6247;API:6;PY_VERSION:0;PY_MINOR_VERSION:0;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;CLS:sample_device_dml;MODULE_LOAD;THREADSAFE; -file 54984 1696283619 sample-device-mixed.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283615;MOD:sample-device-mixed;ABI:6247;API:6;PY_VERSION:0;PY_MINOR_VERSION:0;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;CLS:sample_device_mixed;MODULE_LOAD;THREADSAFE; -file 94240 1696283622 sample-device-pkg-prio.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283615;MOD:sample-device-pkg-prio;ABI:6247;API:6;PY_VERSION:0;PY_MINOR_VERSION:0;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;CLS:sample_device_pkg_prio;MODULE_LOAD;THREADSAFE; -file 15168 1696283616 sample-device-python.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283615;MOD:sample-device-python;ABI:6247;API:6;PY_VERSION:0;PY_MINOR_VERSION:0;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;CLS:sample_device_python;MODULE_LOAD;THREADSAFE; -file 469792 1696283634 sample-dma-device-c++.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283616;MOD:sample-dma-device-c++;ABI:6247;API:6;PY_VERSION:0;PY_MINOR_VERSION:0;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;CLS:sample_dma_device_cpp;MODULE_LOAD;THREADSAFE; -file 129528 1696283623 sample-dma-device.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283615;MOD:sample-dma-device;ABI:6247;API:6;PY_VERSION:0;PY_MINOR_VERSION:0;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;CLS:sample_dma_device;MODULE_LOAD;THREADSAFE; -file 15168 1696283616 sample-dynamic-connectors.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283615;MOD:sample-dynamic-connectors;ABI:6247;API:6;PY_VERSION:0;PY_MINOR_VERSION:0;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;CLS:sample_dynamic_connectors;COMP:sample_dynamic_connectors;MODULE_LOAD;THREADSAFE; -file 49632 1696283619 sample-event-device.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283615;MOD:sample-event-device;ABI:6247;API:6;PY_VERSION:0;PY_MINOR_VERSION:0;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;CLS:sample_event_device;MODULE_LOAD;THREADSAFE; -file 137816 1696283625 sample-firewire-device.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283616;MOD:sample-firewire-device;ABI:6247;API:6;PY_VERSION:0;PY_MINOR_VERSION:0;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;CLS:sample_firewire_device;MODULE_LOAD;THREADSAFE; -file 31856 1696283619 sample-generic-message-device.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283616;MOD:sample-generic-message-device;ABI:6247;API:6;PY_VERSION:0;PY_MINOR_VERSION:0;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;CLS:sample_generic_message_device;MODULE_LOAD;THREADSAFE; -file 18248 1696283618 sample-i2c-device.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283615;MOD:sample-i2c-device;ABI:6247;API:6;PY_VERSION:0;PY_MINOR_VERSION:0;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;CLS:sample_i2c_device;MODULE_LOAD;THREADSAFE; -file 105616 1696283622 sample-i3c-devices.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283615;MOD:sample-i3c-devices;ABI:6247;API:6;PY_VERSION:0;PY_MINOR_VERSION:0;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;CLS:sample-i3c-target;CLS:sample_i3c_master;MODULE_LOAD;THREADSAFE; -file 15168 1696283616 sample-i3c-target-comp.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283616;MOD:sample-i3c-target-comp;ABI:6247;API:6;PY_VERSION:0;PY_MINOR_VERSION:0;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;CLS:sample_i3c_target_comp;COMP:sample_i3c_target_comp;MODULE_LOAD;THREADSAFE; -file 42448 1696283619 sample-interface.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283616;MOD:sample-interface;ABI:6247;API:6;PY_VERSION:3;PY_MINOR_VERSION:9;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;PYIFACE:sample;THREADSAFE; -file 68088 1696283620 sample-interrupt-device.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283616;MOD:sample-interrupt-device;ABI:6247;API:6;PY_VERSION:0;PY_MINOR_VERSION:0;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;CLS:sample_interrupt_device;MODULE_LOAD;THREADSAFE; -file 53808 1696283908 sample-linux-tracker.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283903;MOD:sample-linux-tracker;ABI:6247;API:6;PY_VERSION:0;PY_MINOR_VERSION:0;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;CLS:sample_linux_tracker;CLS:sample_linux_mapper;CLS:sample_linux_tracker_comp;MODULE_LOAD;THREADSAFE; -file 16688 1696283617 sample-memhier.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283616;MOD:sample-memhier;ABI:6247;API:6;PY_VERSION:0;PY_MINOR_VERSION:0;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;CLS:sample-memhier;THREADSAFE; -file 86328 1696283621 sample-notifier-c++.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283616;MOD:sample-notifier-c++;ABI:6247;API:6;PY_VERSION:0;PY_MINOR_VERSION:0;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;CLS:sample_notifier_cc;MODULE_LOAD;THREADSAFE; -file 43128 1696283620 sample-notifier-dml.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283616;MOD:sample-notifier-dml;ABI:6247;API:6;PY_VERSION:0;PY_MINOR_VERSION:0;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;CLS:sample_notifier_dml;MODULE_LOAD;THREADSAFE; -file 337960 1696283631 sample-pci-device.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283616;MOD:sample-pci-device;ABI:6247;API:6;PY_VERSION:0;PY_MINOR_VERSION:0;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;CLS:sample_pci_device;MODULE_LOAD;THREADSAFE; -file 120440 1696283627 sample-pcie-device.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283616;MOD:sample-pcie-device;ABI:6247;API:6;PY_VERSION:0;PY_MINOR_VERSION:0;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;CLS:sample_pcie_device;MODULE_LOAD;THREADSAFE; -file 1401280 1696283661 sample-pcie-sriov-device.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283616;MOD:sample-pcie-sriov-device;ABI:6247;API:6;PY_VERSION:0;PY_MINOR_VERSION:0;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;CLS:sample_pcie_sriov_device;MODULE_LOAD;THREADSAFE; -file 72960 1696283619 sample-risc.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283616;MOD:sample-risc;ABI:6247;API:6;PY_VERSION:0;PY_MINOR_VERSION:0;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;CLS:sample-risc;CLS:sample-risc-core;MODULE_LOAD;THREADSAFE; -file 64968 1696283620 sample-serial-device.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283616;MOD:sample-serial-device;ABI:6247;API:6;PY_VERSION:0;PY_MINOR_VERSION:0;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;CLS:sample_serial_device;MODULE_LOAD;THREADSAFE; -file 32016 1696283619 sample-signal-device.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283616;MOD:sample-signal-device;ABI:6247;API:6;PY_VERSION:0;PY_MINOR_VERSION:0;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;CLS:sample_signal_device_impl;CLS:sample_signal_device;MODULE_LOAD;THREADSAFE; -file 15168 1696283617 sample-system-panel-comp.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283616;MOD:sample-system-panel-comp;ABI:6247;API:6;PY_VERSION:0;PY_MINOR_VERSION:0;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;CLS:sample_system_panel_component;CLS:sample_bitmap_panel;COMP:sample_system_panel_component;COMP:sample_bitmap_panel;MODULE_LOAD;THREADSAFE; -file 55616 1696283620 sample-timer-device.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283616;MOD:sample-timer-device;ABI:6247;API:6;PY_VERSION:0;PY_MINOR_VERSION:0;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;CLS:sample_timer_device;MODULE_LOAD;THREADSAFE; -file 33264 1696283620 sample-transaction-atoms.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283617;MOD:sample-transaction-atoms;ABI:6247;API:6;PY_VERSION:3;PY_MINOR_VERSION:9;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;THREADSAFE; -file 16544 1696283617 sample-user-decoder.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283616;MOD:sample-user-decoder;ABI:6247;API:6;PY_VERSION:0;PY_MINOR_VERSION:0;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;CLS:sample-user-decoder;THREADSAFE; -file 16512 1696283618 sample-x86-isa-extension.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283616;MOD:sample-x86-isa-extension;ABI:6247;API:6;PY_VERSION:0;PY_MINOR_VERSION:0;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;CLS:sample-x86-isa-extension;MODULE_LOAD;THREADSAFE; -file 118328 1696283622 sata.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283617;MOD:sata;ABI:6247;API:6;PY_VERSION:0;PY_MINOR_VERSION:0;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;CLS:sata;MODULE_LOAD;THREADSAFE; -file 156848 1696283620 sdl-console.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283617;MOD:sdl-console;ABI:6247;API:5;PY_VERSION:0;PY_MINOR_VERSION:0;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;CLS:sdl-console;MODULE_LOAD;SIMICS_START;THREADSAFE; -file 21744 1696283618 selfprof.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283617;MOD:selfprof;ABI:6247;API:6;PY_VERSION:0;PY_MINOR_VERSION:0;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;CLS:selfprof;MODULE_LOAD;SIMICS_START;THREADSAFE; -file 31160 1696283618 ser-link.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283617;MOD:ser-link;ABI:6247;API:6;PY_VERSION:0;PY_MINOR_VERSION:0;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;CLS:ser-link-impl;CLS:ser-link-endpoint;CLS:ser_link;COMP:ser_link;MODULE_LOAD;THREADSAFE; -file 379560 1696283694 service-node.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283685;MOD:service-node;ABI:6247;API:6;PY_VERSION:0;PY_MINOR_VERSION:0;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;CLS:service-node;CLS:service-node-device;CLS:port-forward-outgoing-server;CLS:port-forward-incoming-server;CLS:std-service-node;CLS:service_node_comp;COMP:std-service-node;COMP:service_node_comp;MODULE_LOAD;SIMICS_START;THREADSAFE; -file 16256 1696283618 set-memory.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283617;MOD:set-memory;ABI:6247;API:6;PY_VERSION:0;PY_MINOR_VERSION:0;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;CLS:set-memory;MODULE_LOAD;THREADSAFE; -file 21816 1696283619 signal-bus.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283617;MOD:signal-bus;ABI:6247;API:6;PY_VERSION:0;PY_MINOR_VERSION:0;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;CLS:signal-bus;MODULE_LOAD;SIMICS_START;THREADSAFE; -file 22608 1696283618 signal-link.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283617;MOD:signal-link;ABI:6247;API:6;PY_VERSION:0;PY_MINOR_VERSION:0;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;CLS:signal_link_impl;CLS:signal_link_endpoint;CLS:signal_link;COMP:signal_link;MODULE_LOAD;THREADSAFE; -file 17784 1696283619 signal-to-interrupt.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283617;MOD:signal-to-interrupt;ABI:6247;API:6;PY_VERSION:0;PY_MINOR_VERSION:0;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;CLS:signal_to_interrupt;MODULE_LOAD;THREADSAFE; -file 25792 1696283619 simics-inspector.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283617;MOD:simics-inspector;ABI:6247;API:6;PY_VERSION:0;PY_MINOR_VERSION:0;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;CLS:sr_histogram;CLS:sr_histogram_connection;CLS:sr_ticks;CLS:sr_ticks_connection;MODULE_LOAD;SIMICS_START;THREADSAFE; -file 15168 1696283618 simics-nvme-comp.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283617;MOD:simics-nvme-comp;ABI:6247;API:6;PY_VERSION:0;PY_MINOR_VERSION:0;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;CLS:simics_nvme_comp;COMP:simics_nvme_comp;MODULE_LOAD;THREADSAFE; -file 749840 1696283642 simics-nvme-controller.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283617;MOD:simics-nvme-controller;ABI:6247;API:6;PY_VERSION:0;PY_MINOR_VERSION:0;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;CLS:simics_nvme_controller;MODULE_LOAD;THREADSAFE; -file 15168 1696283618 simics-telemetry.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283617;MOD:simics-telemetry;ABI:6247;API:6;PY_VERSION:0;PY_MINOR_VERSION:0;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;CLS:telemetry_manager;MODULE_LOAD;THREADSAFE; -file 258416 1696283631 simics-uefi.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283617;MOD:simics-uefi;ABI:6247;API:6;PY_VERSION:0;PY_MINOR_VERSION:0;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;CLS:simics-uefi;MODULE_LOAD;THREADSAFE; -file 69768 1696283620 simicsfs-server.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283617;MOD:simicsfs-server;ABI:6247;API:6;PY_VERSION:0;PY_MINOR_VERSION:0;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;CLS:simicsfs_server;MODULE_LOAD;SIMICS_START;THREADSAFE; -file 16360 1696283618 simple-byte-dump.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283617;MOD:simple-byte-dump;ABI:6247;API:6;PY_VERSION:0;PY_MINOR_VERSION:0;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;CLS:simple-byte-dump;MODULE_LOAD;THREADSAFE; -file 86808 1696283622 simple-cache-tool.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283618;MOD:simple-cache-tool;ABI:6247;API:6;PY_VERSION:3;PY_MINOR_VERSION:9;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;CLS:simple_cache_tool;CLS:simple_cache_connection;CLS:simple_cache;CLS:simple_directory;PYIFACE:simple_cache;MODULE_LOAD;SIMICS_START;THREADSAFE; -file 27000 1696283621 simple-i2c-device.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283618;MOD:simple-i2c-device;ABI:6247;API:6;PY_VERSION:0;PY_MINOR_VERSION:0;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;CLS:simple_i2c_device;MODULE_LOAD;SIMICS_START;THREADSAFE; -file 120640 1696283629 simple-pcie-device.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283618;MOD:simple-pcie-device;ABI:6247;API:6;PY_VERSION:0;PY_MINOR_VERSION:0;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;CLS:simple_pcie_device;MODULE_LOAD;THREADSAFE; -file 34192 1696283620 simple-scsi-disk.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283618;MOD:simple-scsi-disk;ABI:6247;API:6;PY_VERSION:0;PY_MINOR_VERSION:0;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;CLS:simple-scsi-disk;MODULE_LOAD;THREADSAFE; -file 43056 1696283621 simple-timing-interface.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283619;MOD:simple-timing-interface;ABI:6247;API:6;PY_VERSION:3;PY_MINOR_VERSION:9;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;PYIFACE:simple_timing_v2;THREADSAFE; -file 20784 1696283619 simple-tty.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283618;MOD:simple-tty;ABI:6247;API:6;PY_VERSION:0;PY_MINOR_VERSION:0;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;CLS:simple-tty;THREADSAFE; -file 205960 1696283631 sja1000-can.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283618;MOD:sja1000-can;ABI:6247;API:6;PY_VERSION:0;PY_MINOR_VERSION:0;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;CLS:sja1000_can;MODULE_LOAD;THREADSAFE; -file 33008 1696283622 snooper-helpers.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283619;MOD:snooper-helpers;ABI:6247;API:6;PY_VERSION:3;PY_MINOR_VERSION:9;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;THREADSAFE; -file 15168 1696283619 sparse-memory.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283618;MOD:sparse-memory;ABI:6247;API:6;PY_VERSION:0;PY_MINOR_VERSION:0;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;CLS:sparse-memory;MODULE_LOAD;THREADSAFE; -file 15168 1696283619 spi_checker.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283618;MOD:spi_checker;ABI:6247;API:6;PY_VERSION:0;PY_MINOR_VERSION:0;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;CLS:spi_checker;MODULE_LOAD;THREADSAFE; -file 67320 1696283622 state-assertion.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283618;MOD:state-assertion;ABI:6247;API:6;PY_VERSION:0;PY_MINOR_VERSION:0;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;CLS:state-assertion;MODULE_LOAD;THREADSAFE; -file 15168 1696283619 std-comp.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283618;MOD:std-comp;ABI:6247;API:6;PY_VERSION:0;PY_MINOR_VERSION:0;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;CLS:dummy_comp;CLS:etg_comp;CLS:etg_panel_comp;CLS:graphics_console_comp;CLS:host_serial_console_comp;CLS:ide_cdrom_comp;CLS:ide_disk_comp;CLS:mmc_card_comp;CLS:pcmcia_flash_disk_comp;CLS:sata_disk_comp;CLS:sata_cdrom_comp;CLS:server_console_comp;CLS:telnet_console_comp;CLS:text_console_comp;CLS:text_graphics_console_comp;COMP:dummy_comp;COMP:etg_comp;COMP:etg_panel_comp;COMP:graphics_console_comp;COMP:host_serial_console_comp;COMP:ide_cdrom_comp;COMP:ide_disk_comp;COMP:mmc_card_comp;COMP:pcmcia_flash_disk_comp;COMP:sata_disk_comp;COMP:sata_cdrom_comp;COMP:server_console_comp;COMP:telnet_console_comp;COMP:text_console_comp;COMP:text_graphics_console_comp;MODULE_LOAD;THREADSAFE; -file 51208 1696283622 system-panel-interface.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283619;MOD:system-panel-interface;ABI:6247;API:6;PY_VERSION:3;PY_MINOR_VERSION:9;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;PYIFACE:system_panel;PYIFACE:system_panel_object;PYIFACE:system_panel_layout;PYIFACE:system_panel_state_manager;PYIFACE:system_panel_frontend;THREADSAFE; -file 15168 1696283620 system-panel-text.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283619;MOD:system-panel-text;ABI:6247;API:6;PY_VERSION:0;PY_MINOR_VERSION:0;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;CLS:text_panel_frontend;MODULE_LOAD;THREADSAFE; -file 60536 1696283623 system-panel.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283619;MOD:system-panel;ABI:6247;API:6;PY_VERSION:0;PY_MINOR_VERSION:0;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;CLS:system_panel_bool;CLS:system_panel_number;CLS:system_panel_state_manager;MODULE_LOAD;SIMICS_START;THREADSAFE; -file 15168 1696283620 system-perfmeter.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283619;MOD:system-perfmeter;ABI:6247;API:6;PY_VERSION:0;PY_MINOR_VERSION:0;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;SIMICS_START;THREADSAFE; -file 15168 1696283676 systemc-commands.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283675;MOD:systemc-commands;ABI:6247;API:6;PY_VERSION:0;PY_MINOR_VERSION:0;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;MODULE_LOAD;THREADSAFE; -file 131552 1696283682 systemc-interfaces.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283677;MOD:systemc-interfaces;ABI:6247;API:6;PY_VERSION:3;PY_MINOR_VERSION:9;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;PYIFACE:sc_trace;PYIFACE:sc_object;PYIFACE:sc_module;PYIFACE:sc_process;PYIFACE:sc_initiator_gasket;PYIFACE:sc_export;PYIFACE:sc_port;PYIFACE:sc_process_profiler;PYIFACE:sc_process_profiler_control;PYIFACE:sc_memory_profiler;PYIFACE:sc_memory_profiler_control;PYIFACE:sc_signal_read;PYIFACE:sc_signal_write;PYIFACE:sc_tlm_fw_transport;PYIFACE:sc_tlm_bw_transport;PYIFACE:sc_vector;PYIFACE:sc_event;PYIFACE:sc_register_access;PYIFACE:sc_memory_access;PYIFACE:sc_simcontext;PYIFACE:sc_version;PYIFACE:sc_gasket_info;PYIFACE:sc_provider_controller;PYIFACE:sc_tool_connection;MODULE_LOAD;THREADSAFE; -file 15168 1696283620 systemc-tools.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283619;MOD:systemc-tools;ABI:6247;API:6;PY_VERSION:0;PY_MINOR_VERSION:0;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;CLS:systemc_filter;MODULE_LOAD;SIMICS_START;THREADSAFE; -file 1852176 1696283990 tcf-agent.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283910;MOD:tcf-agent;ABI:6247;API:6;PY_VERSION:3;PY_MINOR_VERSION:9;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;CLS:tcf-agent;CLS:tcf-context-proxy;CLS:tcf-serial-tee;PYIFACE:agent_proxy_finder;PYIFACE:tcf_breakpoints;PYIFACE:tcf_pathmap;PYIFACE:tcf_memorymap;PYIFACE:tcf_elf;PYIFACE:tcf_pe;PYIFACE:tcf_uefi_tracker_inspection;PYIFACE:tcf_trace;PYIFACE:tcf_target_identification;PYIFACE:debug_internal;PYIFACE:tcf_serial_tap;PYIFACE:symdebug;PYIFACE:run_control;PYIFACE:debug_config;MODULE_LOAD;SIMICS_START;THREADSAFE; -file 45568 1696283621 telnet-console.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283619;MOD:telnet-console;ABI:6247;API:6;PY_VERSION:0;PY_MINOR_VERSION:0;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;CLS:telnet_console;CLS:server-console;MODULE_LOAD;THREADSAFE; -file 30320 1696283620 telnet-frontend.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283619;MOD:telnet-frontend;ABI:6247;API:6;PY_VERSION:0;PY_MINOR_VERSION:0;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;CLS:telnet_frontend;MODULE_LOAD;SIMICS_START;THREADSAFE; -file 17936 1696283621 test-cdrom-media-wrapper.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283619;MOD:test-cdrom-media-wrapper;ABI:6247;API:6;PY_VERSION:0;PY_MINOR_VERSION:0;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;CLS:test_cdrom_media_wrapper;THREADSAFE; -file 21840 1696283621 test-generic-message-device.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283619;MOD:test-generic-message-device;ABI:6247;API:6;PY_VERSION:0;PY_MINOR_VERSION:0;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;CLS:test_generic_message_device;THREADSAFE; -file 15720 1696283620 test-probe.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283619;MOD:test-probe;ABI:6247;API:6;PY_VERSION:0;PY_MINOR_VERSION:0;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;CLS:c_test_probe;CLS:py_test_probe;MODULE_LOAD;THREADSAFE; -file 22032 1696283621 test-usb-device.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283619;MOD:test-usb-device;ABI:6247;API:6;PY_VERSION:0;PY_MINOR_VERSION:0;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;CLS:test_usb_device;THREADSAFE; -file 136288 1696283903 textcon.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283896;MOD:textcon;ABI:6247;API:6;PY_VERSION:0;PY_MINOR_VERSION:0;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;CLS:textcon;CLS:text-frontend-winsome;MODULE_LOAD;SIMICS_START;THREADSAFE; -file 35568 1696283620 time-server-c.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283619;MOD:time-server-c;ABI:6247;API:6;PY_VERSION:0;PY_MINOR_VERSION:0;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;CLS:time-server;SIMICS_START;THREADSAFE; -file 21120 1696283620 trace-sync.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283619;MOD:trace-sync;ABI:6247;API:6;PY_VERSION:0;PY_MINOR_VERSION:0;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;CLS:trace-sync;MODULE_LOAD;SIMICS_START;THREADSAFE; -file 49216 1696283621 trace.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283619;MOD:trace;ABI:6247;API:6;PY_VERSION:0;PY_MINOR_VERSION:0;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;CLS:trace-mem-hier;CLS:base-trace-mem-hier;MODULE_LOAD;SIMICS_START;THREADSAFE; -file 15832 1696283620 trans-staller.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283619;MOD:trans-staller;ABI:6247;API:6;PY_VERSION:0;PY_MINOR_VERSION:0;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;CLS:trans-staller;THREADSAFE; -file 37912 1696283623 tsc-update-interface.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283620;MOD:tsc-update-interface;ABI:6247;API:6;PY_VERSION:3;PY_MINOR_VERSION:9;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;PYIFACE:tsc_update;THREADSAFE; -file 229696 1696283917 uefi-fw-tracker.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283903;MOD:uefi-fw-tracker;ABI:6247;API:6;PY_VERSION:0;PY_MINOR_VERSION:0;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;CLS:uefi_fw_tracker;CLS:uefi_fw_mapper;CLS:uefi_fw_tracker_comp;MODULE_LOAD;SIMICS_START;THREADSAFE; -file 15168 1696283620 usb-comp.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283619;MOD:usb-comp;ABI:6247;API:6;PY_VERSION:0;PY_MINOR_VERSION:0;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;CLS:usb_disk_comp;CLS:usb_tablet_component;COMP:usb_disk_comp;COMP:usb_tablet_component;MODULE_LOAD;SIMICS_START;THREADSAFE; -file 15168 1696283620 usb-components.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283619;MOD:usb-components;ABI:6247;API:6;PY_VERSION:0;PY_MINOR_VERSION:0;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;CLS:usb-disk;CLS:usb-tablet-comp;COMP:usb-disk;COMP:usb-tablet-comp;MODULE_LOAD;THREADSAFE; -file 45384 1696283623 usb-disk.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283620;MOD:usb-disk;ABI:6247;API:6;PY_VERSION:0;PY_MINOR_VERSION:0;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;CLS:usb_disk;THREADSAFE; -file 15168 1696283621 usb-hid-components.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283620;MOD:usb-hid-components;ABI:6247;API:6;PY_VERSION:0;PY_MINOR_VERSION:0;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;CLS:usb_mouse_comp;CLS:usb_keyboard_comp;CLS:usb_hs_keyboard_comp;COMP:usb_mouse_comp;COMP:usb_keyboard_comp;COMP:usb_hs_keyboard_comp;MODULE_LOAD;THREADSAFE; -file 90992 1696283624 usb-input-devices.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283620;MOD:usb-input-devices;ABI:6247;API:6;PY_VERSION:0;PY_MINOR_VERSION:0;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;CLS:usb_mouse;CLS:usb_keyboard;CLS:usb_hs_keyboard;MODULE_LOAD;THREADSAFE; -file 36304 1696283623 usb-tablet.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283620;MOD:usb-tablet;ABI:6247;API:6;PY_VERSION:0;PY_MINOR_VERSION:0;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;CLS:usb_tablet;MODULE_LOAD;THREADSAFE; -file 118664 1696283624 vga-pci.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283620;MOD:vga-pci;ABI:6247;API:5;PY_VERSION:0;PY_MINOR_VERSION:0;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;CLS:vga_pci;MODULE_LOAD;THREADSAFE; -file 80280 1696283623 vga.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283620;MOD:vga;ABI:6247;API:5;PY_VERSION:0;PY_MINOR_VERSION:0;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;CLS:vga;MODULE_LOAD;THREADSAFE; -file 15168 1696283621 virtio-comp.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283620;MOD:virtio-comp;ABI:6247;API:6;PY_VERSION:0;PY_MINOR_VERSION:0;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;CLS:virtio_pcie_net_comp;CLS:virtio_pcie_blk_comp;CLS:virtio_mmio_blk_comp;CLS:virtio_pcie_fs_comp;COMP:virtio_pcie_net_comp;COMP:virtio_pcie_blk_comp;COMP:virtio_mmio_blk_comp;COMP:virtio_pcie_fs_comp;MODULE_LOAD;THREADSAFE; -file 2105224 1696283641 virtio.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283620;MOD:virtio;ABI:6247;API:6;PY_VERSION:0;PY_MINOR_VERSION:0;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;CLS:virtio_mmio_blk;CLS:virtio_mmio_net;CLS:virtio_mmio_fs;CLS:virtio-mmio-entropy;CLS:virtio_pcie_blk;CLS:virtio_pcie_net;CLS:virtio_pcie_fs;MODULE_LOAD;THREADSAFE; -file 48040 1696283624 virtiofs-fuse.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283621;MOD:virtiofs-fuse;ABI:6247;API:6;PY_VERSION:3;PY_MINOR_VERSION:9;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;CLS:virtiofs_fuse;PYIFACE:virtiofs_fuse;MODULE_LOAD;THREADSAFE; -file 35568 1696283623 vmcom.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283620;MOD:vmcom;ABI:6247;API:6;PY_VERSION:0;PY_MINOR_VERSION:0;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;CLS:vmcom;MODULE_LOAD;THREADSAFE; -file 15168 1696283621 vtune-measurement.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283620;MOD:vtune-measurement;ABI:6247;API:6;PY_VERSION:0;PY_MINOR_VERSION:0;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;CLS:vtune_measurement;MODULE_LOAD;SIMICS_START;THREADSAFE; -file 148840 1696283623 x11-console.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283620;MOD:x11-console;ABI:6247;API:5;PY_VERSION:0;PY_MINOR_VERSION:0;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;CLS:gfx-console;CLS:x11-console;MODULE_LOAD;SIMICS_START;THREADSAFE; -file 2167008 1696283646 x2apic-c++.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283645;MOD:x2apic-c++;ABI:6247;API:6;PY_VERSION:0;PY_MINOR_VERSION:0;HOSTTYPE:linux64;CLS:x2apic_v2;CLS:apic_bus_v2;MODULE_LOAD;THREADSAFE; -file 17312 1696283621 x86-branch-profiler.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283620;MOD:x86-branch-profiler;ABI:6247;API:6;PY_VERSION:0;PY_MINOR_VERSION:0;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;CLS:x86_branch_profiler;CLS:x86_branch_prof_connection;MODULE_LOAD;SIMICS_START;THREADSAFE; -file 15168 1696283622 x86-comp.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283620;MOD:x86-comp;ABI:6247;API:6;PY_VERSION:0;PY_MINOR_VERSION:0;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;CLS:x86_chassis;CLS:motherboard_x86_simple;CLS:motherboard_x86_simple_no_apic;COMP:x86_chassis;COMP:motherboard_x86_simple;COMP:motherboard_x86_simple_no_apic;MODULE_LOAD;THREADSAFE; -file 15168 1696283621 x86-mode-filter.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283620;MOD:x86-mode-filter;ABI:6247;API:6;PY_VERSION:0;PY_MINOR_VERSION:0;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;CLS:x86_mode_filter;MODULE_LOAD;SIMICS_START;THREADSAFE; -file 17088 1696283622 x86-mode-histogram.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283620;MOD:x86-mode-histogram;ABI:6247;API:6;PY_VERSION:0;PY_MINOR_VERSION:0;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;CLS:x86_mode_histogram;CLS:x86_mode_histogram_connection;MODULE_LOAD;SIMICS_START;THREADSAFE; -file 33680 1696283624 x86-rar-interface.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283621;MOD:x86-rar-interface;ABI:6247;API:6;PY_VERSION:3;PY_MINOR_VERSION:9;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;PYIFACE:x86_rar_interrupt;THREADSAFE; -file 34096 1696283624 x86-reset-bus-interface.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283621;MOD:x86-reset-bus-interface;ABI:6247;API:6;PY_VERSION:3;PY_MINOR_VERSION:9;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;PYIFACE:x86_reset_bus;THREADSAFE; -file 16616 1696283622 x86-reset-bus.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283620;MOD:x86-reset-bus;ABI:6247;API:6;PY_VERSION:0;PY_MINOR_VERSION:0;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;CLS:x86-reset-bus;MODULE_LOAD;THREADSAFE; -file 33384 1696283624 x86-tsc-cycles-interface.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283621;MOD:x86-tsc-cycles-interface;ABI:6247;API:6;PY_VERSION:3;PY_MINOR_VERSION:9;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;PYIFACE:x86_tsc_cycles;THREADSAFE; -file 15928 1696283621 x86_broadcast.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283620;MOD:x86_broadcast;ABI:6247;API:6;PY_VERSION:0;PY_MINOR_VERSION:0;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;CLS:x86_broadcast;MODULE_LOAD;THREADSAFE; -file 30672 1696283622 x86_tlb.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283620;MOD:x86_tlb;ABI:6247;API:6;PY_VERSION:0;PY_MINOR_VERSION:0;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;CLS:x86-tlb;MODULE_LOAD;SIMICS_START;THREADSAFE; -file 197104 1696283632 x86ex_interface.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283625;MOD:x86ex_interface;ABI:6247;API:6;PY_VERSION:3;PY_MINOR_VERSION:9;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;PYIFACE:x86_txt_chipset;PYIFACE:x86_unplug;PYIFACE:x86_unplug_v2;PYIFACE:x86_external_reset;PYIFACE:x86_smm_notification;PYIFACE:apic_bus_v2;PYIFACE:apic_timer;PYIFACE:x86_sai;PYIFACE:mktme;PYIFACE:apic_to_apic_bus;PYIFACE:apic_bus_to_apic;PYIFACE:x86_cstate_notification_v2;PYIFACE:x86_monitor_notification;PYIFACE:x86_monitor;PYIFACE:x86_vcounters;THREADSAFE; -file 16456 1696283622 x87_exception.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283621;MOD:x87_exception;ABI:6247;API:6;PY_VERSION:0;PY_MINOR_VERSION:0;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;CLS:x87_exception;MODULE_LOAD;THREADSAFE; -file 143320 1696283624 xterm-console.so -cap VER:5000;BLD:6247;BLD_NS:simics;BUILDDATE:1696283621;MOD:xterm-console;ABI:6247;API:6;PY_VERSION:0;PY_MINOR_VERSION:0;HOSTTYPE:linux64;USRVER:be6b710740621c16470167a8af78aceb6e22da6b;CLS:xterm-console;CLS:text-console;MODULE_LOAD;SIMICS_START;THREADSAFE; diff --git a/modules/tsffs/src/simics/simics-api-sys/Cargo.toml b/modules/tsffs/src/simics/simics-api-sys/Cargo.toml deleted file mode 100644 index 0506e1e5..00000000 --- a/modules/tsffs/src/simics/simics-api-sys/Cargo.toml +++ /dev/null @@ -1,31 +0,0 @@ -# Copyright (C) 2023 Intel Corporation -# SPDX-License-Identifier: Apache-2.0 - -[package] -name = "simics-api-sys" -categories.workspace = true -description = "Low level SIMICS API bindings, generated by bindgen" -edition.workspace = true -homepage.workspace = true -keywords.workspace = true -license.workspace = true -publish.workspace = true -readme.workspace = true -repository.workspace = true -version.workspace = true - - -[build-dependencies] -anyhow.workspace = true -bindgen = { git = "https://github.com/novafacing/rust-bindgen", branch = "f16" } -scraper = "0.18.1" -walkdir = "2.4.0" - -[features] -default = [] -link = [] -auto = [] - -[dev-dependencies] -anyhow.workspace = true -raw-cstr.workspace = true diff --git a/modules/tsffs/src/simics/simics-api-sys/README.md b/modules/tsffs/src/simics/simics-api-sys/README.md deleted file mode 100644 index b84afdce..00000000 --- a/modules/tsffs/src/simics/simics-api-sys/README.md +++ /dev/null @@ -1,32 +0,0 @@ -# SIMICS API SYS - -This crate provides low-level (direct) bindings to the SIMICS API generated with -`bindgen`. This crate shouldn't be used directly, instead you should use the -`simics-api` crate. - -## Using This Crate - -This crate's bindings are versioned by the Simics Base package version they were -generated from. This means that without any feature flags, this crate does nothing. - -To use it in your crate, you should write, for example: - -```toml -simics-api-sys = { version = "0.1.0", features = ["6.0.169"] } -``` - -## Updating Bindings - -When a new Simics Base version is released, or you want to add older bindings, you -should edit the `SIMICS_BASE_VERSIONS` list in -[update-bindings.rs](./scripts/update-bindings.rs), then run `cargo make -update-bindings` to update the bindings. If you don't have `cargo make`, you can install -it with `cargo install cargo-make` - -## Updating ISPM - -When a new ISPM version is released, you should be able to continue to use this crate's -`update-bindings` automatically, but if a newer Simics Base version requires a newer -version of ISPM for some reason, you can update the ISPM tarball in the [script -resource](./scripts/resource/) directory, then update the `ispm_file` argument in the -`update-bindings.rs` script `main`. diff --git a/modules/tsffs/src/simics/simics-api-sys/build.rs b/modules/tsffs/src/simics/simics-api-sys/build.rs deleted file mode 100644 index 4870ece2..00000000 --- a/modules/tsffs/src/simics/simics-api-sys/build.rs +++ /dev/null @@ -1,759 +0,0 @@ -//! Build script for the low-level sys bindings crate to the SIMCS API implemented in: -//! -//! - libsimics-common.so -//! - libvtutils.so -//! -//! This build script requires the following environment variables to be set: -//! -//! - `SIMICS_BASE` -//! - `PYTHON3_INCLUDE` -//! - `INCLUDE_PATHS` -//! - `PYTHON3_LDFLAGS` -//! - `LDFLAGS` -//! - `LIBS` -//! -//! For test and development builds (e.g. under rust-analyzer), these values can be manually set -//! in the build environment, e.g. through the workspace's `.vscode/settings.json` file. -//! -//! Given a SIMICS installation directory /home/user/simics/ and a latest SIMICS base -//! version of 6.0.174, the variables would be set like so: -//! -//! - `SIMICS_BASE=/home/user/simics/simics-6.0.174` -//! - `PYTHON3_INCLUDE=-I/home/user/simics/simics-6.0.174/linux64/include/python3.9` -//! - `INCLUDE_PATHS=/home/user/simics/simics-6.0.174/src/include` -//! - `PYTHON3_LDFLAGS=/home/user/simics/simics-6.0.174/linux64/sys/lib/libpython3.so` -//! - NOTE: This is *not* actually the shared object that needs to be linked against, we must -//! link against the versioned shared object in the same directory e.g. libpython3.9.so.1.0. -//! - `LDFLAGS=-L/home/user/simics/simics-6.0.174/linux64/bin -z noexecstack -z relro -z now` -//! - `LIBS=-lsimics-common -lvtutils` - -use anyhow::{anyhow, bail, ensure, Result}; -use bindgen::{ - callbacks::{MacroParsingBehavior, ParseCallbacks}, - AliasVariation, Builder, EnumVariation, FieldVisibilityKind, MacroTypeVariation, - NonCopyUnionStyle, -}; -use scraper::{Html, Selector}; -use std::{ - collections::HashSet, - env::var, - ffi::OsStr, - fmt::Write, - fs::{read, read_dir, write}, - iter::once, - path::{Path, PathBuf}, -}; -use walkdir::WalkDir; - -// NOTE: The following environment variables are set under the SIMICS package make system -// -// PYTHON: The path to SIMICS's mini-python -// PYTHON3_LDFLAGS: The path to SIMICS's libpython3.so. Starting in 6.0.177, this variable can -// be empty, in which case we use a fallback. -// LIBS: `-lsimics-common -lvtutils` -// CXX_INCLUDE_PATHS: Path to SIMICS_BASE/linux64/api -// PYTHON3: The path to SIMICS's mini-python -// SIMICS_WORKSPACE: The path to the package root -// MOD_MAKEFILE: The makefile being invoked to build the module currently being built -// SIMICS_BASE: The path to the simics base version for the package/project -// DMLC: The path to dml python -// PYTHON3_INCLUDE: -I flag for the path to SIMICS's python3 include directory -// DML_INCLUDE_PATHS: The path to the dml api include directory -// SIMICS_MAJOR_VERSION: The simics major version -// SIMICS_PROJECT: The path to the simics project -// PYTHON_LDFLAGS: The path to SIMICS's libpython3.so -// MODULE_MAKEFILE: The path to the module.mk makefile in simics base -// SRC_BASE: The path to the modules directory for the package -// CCLDFLAGS_DYN: CC/LD flags for dynamic linking -// LDFLAGS: Linker flags to link to libsimics and friends -// SIMICS_PACKAGE_LIST: The path to the .package-list file for this package -// SIMICS_MODEL_BUILDER: The simics used to build models -// PYTHON_INCLUDE: -I flag for the path to SIMICS's python3 include directory -// DMLC_DIR: The path to the simics bin directory containing the dml compiler -// PY2TO3: Path to the py-2to3 tool -// LDFLAGS_PY3: -L flag to include simics base's bin directory -// INCLUDE_PATHS: The path to the SIMICS base include directory - -/// Name for the environment variable set by the SIMICS build system to the path to the -/// simics base package. We actually use SIMICS_MODEL_BUILDER here, because we are indeed -/// building a model. -const SIMICS_BASE_ENV: &str = "SIMICS_BASE"; -/// Name for the environment variable set by the SIMICS build system to the flag to -/// include e.g. -I SIMICS_BASE/linux64/include/python3.9/ -const PYTHON3_INCLUDE_ENV: &str = "PYTHON3_INCLUDE"; -/// Name for the ldflags environment variable, which will point to -/// Name for the environment variable by the SIMICS build system to the path to the -/// simics include directory e.g. SIMICS_BASE/src/include/ -const INCLUDE_PATHS_ENV: &str = "INCLUDE_PATHS"; - -/// Name for the environment variable set by the SIMICS build system to the libpython3.so library -const PYTHON3_LDFLAGS_ENV: &str = "PYTHON3_LDFLAGS"; -/// Name for the LDFLAGS environment variable set by the SIMICS build system containing -/// the link search path for the libsimics library, among other flags. e.g. -LPATH -z noexecstack -const LDFLAGS_ENV: &str = "LDFLAGS"; -/// Name for the environment variable containing shared library link flags for simics common and -/// vtutils -const LIBS_ENV: &str = "LIBS"; - -/// Name for the environment variable set by cargo to the path to the OUT_DIR used for intermediate -/// build results -const OUT_DIR_ENV: &str = "OUT_DIR"; -/// The name of the file generated when generating bindings in auto (package-time) mode. -const AUTO_BINDINGS_FILENAME: &str = "bindings-auto.rs"; -/// The name of the file generated including the automatic simics version declaration when -/// generating bindings in auto (package-time) mode. -const AUTO_BINDINGS_VERSION_FILENAME: &str = "version-auto.rs"; - -#[cfg(not(windows))] -/// The name of the binary/library/object subdirectory on linux systems -const HOST_DIRNAME: &str = "linux64"; -#[cfg(windows)] -/// The name of the binary/library/object subdirectory on windows systems -const HOST_DIRNAME: &str = "win64"; - -/// The path in SIMICS_BASE/HOST_TYPE/ of the HTML file containing HAP documentation required -/// for high level codegen of builtin HAPs -const HAP_DOC_PATH: &str = "doc/html/rm-base/rm-haps.html"; - -// https://github.com/rust-lang/rust-bindgen/issues/687#issuecomment-1312298570 -const IGNORE_MACROS: [&str; 20] = [ - "FE_DIVBYZERO", - "FE_DOWNWARD", - "FE_INEXACT", - "FE_INVALID", - "FE_OVERFLOW", - "FE_TONEAREST", - "FE_TOWARDZERO", - "FE_UNDERFLOW", - "FE_UPWARD", - "FP_INFINITE", - "FP_INT_DOWNWARD", - "FP_INT_TONEAREST", - "FP_INT_TONEARESTFROMZERO", - "FP_INT_TOWARDZERO", - "FP_INT_UPWARD", - "FP_NAN", - "FP_NORMAL", - "FP_SUBNORMAL", - "FP_ZERO", - "IPPORT_RESERVED", -]; - -const HDR_DENYLIST: [&str; 9] = [ - // Most of these are denylisted because they include follower-time.h and it's :/ broken - "global.h", - "vtutils.h", - "libfollower.h", - "follower-time.h", - "follower.h", - "link-endpoint.h", - "data-structs.h", - // slave-time.h/slave.h is also broken (it is the old name for follower) - "slave-time.h", - "slave.h", -]; - -#[derive(Debug)] -struct IgnoreMacros(HashSet); - -impl ParseCallbacks for IgnoreMacros { - fn will_parse_macro(&self, name: &str) -> MacroParsingBehavior { - if self.0.contains(name) { - MacroParsingBehavior::Ignore - } else { - MacroParsingBehavior::Default - } - } -} - -impl IgnoreMacros { - fn new() -> Self { - Self(IGNORE_MACROS.into_iter().map(|s| s.to_string()).collect()) - } -} - -fn generate_include_wrapper(simics_include_path: P, hap_code: S) -> Result -where - P: AsRef, - S: AsRef, -{ - let simics_include_path = simics_include_path.as_ref().to_path_buf().canonicalize()?; - let mut include_paths = WalkDir::new(&simics_include_path) - .into_iter() - .filter_map(|p| p.ok()) - .filter_map(|p| { - let simics_include_path = &simics_include_path; - match p.path().extension() { - Some(e) => { - if e == "h" { - match p.path().canonicalize() { - Ok(p) => p.strip_prefix(simics_include_path).map_or_else( - |e| { - eprintln!( - "cargo:warning=Failed to strip prefix {} from {}: {}", - simics_include_path.display(), - p.display(), - e - ); - None:: - }, - |p| Some(p.to_path_buf()), - ), - Err(e) => { - eprintln!( - "cargo:warning=Failed to canonicalize path {}: {}", - p.path().display(), - e - ); - None - } - } - } else { - eprintln!( - "cargo:warning=Ignoring path {}, no '.h' extension", - p.path().display() - ); - None - } - } - None => { - eprintln!( - "cargo:warning=Ignoring path {}, no extension", - p.path().display() - ); - None - } - } - }) - .collect::>(); - - // We need to move python-header.h to the beginning of the list - if let Some(python_hdr_pos) = include_paths - .iter() - .position(|p| p.file_name() == Some(OsStr::new("python-header.h"))) - { - include_paths.swap(0, python_hdr_pos); - } - - HDR_DENYLIST.iter().for_each(|le| { - if let Some(pos) = include_paths - .iter() - .position(|p| p.file_name() == Some(OsStr::new(le))) - { - include_paths.remove(pos); - } - }); - - let include_stmts = include_paths - .iter() - .map(|p| format!("#include <{}>", p.display())) - .collect::>(); - let wrapper = include_stmts.join("\n") + "\n" + hap_code.as_ref(); - - println!("{wrapper}"); - - Ok(wrapper) -} - -/// Get the only subdirectory of a directory, if only one exists. If zero or more than one subdirectories -/// exist, returns an error -fn subdir

(dir: P) -> Result -where - P: AsRef, -{ - let subdirs = read_dir(dir)? - .filter_map(|p| p.ok()) - .map(|p| p.path()) - .filter(|p| p.is_dir()) - .collect::>(); - ensure!( - subdirs.len() == 1, - "Expected exactly 1 sub-directory, found {}", - subdirs.len() - ); - - subdirs - .first() - .cloned() - .ok_or_else(|| anyhow!("No sub-directories found")) -} - -fn main() -> Result<()> { - println!("cargo:rerun-if-changed=build.rs"); - - let base_dir_path = PathBuf::from( - var(SIMICS_BASE_ENV) - .map_err(|e| anyhow!("No environment variable {SIMICS_BASE_ENV} found: {e}"))?, - ); - - ensure!( - base_dir_path.is_dir(), - "{} is not a directory", - base_dir_path.display() - ); - - let hap_doc_path = base_dir_path.join(HOST_DIRNAME).join(HAP_DOC_PATH); - - let hap_document = - Html::parse_document(&String::from_utf8(read(&hap_doc_path).map_err(|e| { - anyhow!( - "Error reading document path {} to extract HAP definitions: {e}", - hap_doc_path.display() - ) - })?)?); - - let haps_selector = Selector::parse(r#"article"#).unwrap(); - let haps_id_selector = Selector::parse(r#"h2"#).unwrap(); - let section_selector = Selector::parse(r#"section"#).unwrap(); - let hap_code_selector = Selector::parse(r#"pre"#).unwrap(); - let hap_description_selector = Selector::parse(r#"h3"#).unwrap(); - let hap_index_selector = Selector::parse(r#"code"#).unwrap(); - - let haps_article = hap_document.select(&haps_selector).next().unwrap(); - let haps_names = haps_article - .select(&haps_id_selector) - .filter_map(|h| h.value().id()) - .collect::>(); - let haps_sections = haps_article.select(§ion_selector).collect::>(); - let haps_code_indices_descriptions = haps_sections - .iter() - .map(|s| { - let code = s - .select(&hap_code_selector) - .next() - .unwrap() - .inner_html() - .trim() - .to_string(); - let maybe_index = s - .select(&hap_index_selector) - .next() - .map(|i| i.inner_html().trim().to_string()); - let maybe_description = s - .select(&hap_description_selector) - .last() - .and_then(|i| i.next_sibling()) - .and_then(|n| n.value().as_text().map(|t| t.trim().to_string())); - (code, maybe_index, maybe_description) - }) - .collect::>(); - - let hap_code = haps_names - .iter() - .zip(haps_code_indices_descriptions.iter()) - .try_fold( - String::default(), - |mut s, (name, (code, maybe_index, maybe_description))| { - let mut hap_name_name = name.to_ascii_uppercase(); - hap_name_name += "_HAP_NAME"; - let mut hap_callback_name = name.to_ascii_lowercase(); - hap_callback_name += "_hap_callback"; - let code = code - .replace("(*)", &format!("(*{})", hap_callback_name)) - .replace(['/', '-'], "_"); - let comment = format!( - "/**\n * Index: {}\n * Description: {}\n */", - maybe_index - .as_ref() - .unwrap_or(&"Indices not supported".to_string()), - maybe_description - .as_ref() - .unwrap_or(&"No description".to_string()) - ); - - write!( - &mut s, - "#define {} \"{}\"\n{}\ntypedef {}\n", - hap_name_name, name, comment, code - ) - .and_then(|_| Ok(s)) - }, - )?; - - let simics_base_version = base_dir_path - .file_name() - .ok_or_else(|| anyhow!("No file name found in SIMICS base path"))? - .to_str() - .ok_or_else(|| anyhow!("Could not convert file name to string"))? - .split('-') - .last() - .ok_or_else(|| anyhow!("Could not split to obtain version: SIMICS base directory may not be in the format simics-X.X.XXX"))? - .to_string(); - - let simics_base_version_const_declaration = format!( - r#"pub const SIMICS_VERSION: &str = "{}";"#, - simics_base_version - ); - - let out_dir_path = PathBuf::from( - var(OUT_DIR_ENV) - .map_err(|e| anyhow!("No environment variable {OUT_DIR_ENV} found: {e}"))?, - ); - - let bindings_file_path = out_dir_path.join(AUTO_BINDINGS_FILENAME); - let version_file_path = out_dir_path.join(AUTO_BINDINGS_VERSION_FILENAME); - - write(version_file_path, simics_base_version_const_declaration)?; - - let include_paths_env = var(INCLUDE_PATHS_ENV).or_else(|e| { - println!("cargo:warning=No environment variable {INCLUDE_PATHS_ENV} set. Using default include paths: {e}"); - base_dir_path - .join("src") - .join("include") - .to_str() - .map(|s| s.to_string()) - .ok_or_else(|| anyhow!("Could not convert path to string")) - })?; - - let include_paths = PathBuf::from(&include_paths_env); - - let wrapper_contents = generate_include_wrapper(include_paths, hap_code)?; - - let bindings = - Builder::default() - .clang_arg(var(PYTHON3_INCLUDE_ENV).or_else(|e| { - println!("cargo:warning=No environment variable {PYTHON3_INCLUDE_ENV} set. Using default include paths: {e}"); - subdir(base_dir_path - .join(HOST_DIRNAME) - .join("include")) - .and_then(|p| { - p.to_str() - .map(|s| format!("-I{}", s)) - .ok_or_else(|| anyhow!("Could not convert path to string")) - }) - })?) - .clang_arg(format!("-I{}", include_paths_env,)) - .clang_arg("-fretain-comments-from-system-headers") - .clang_arg("-fparse-all-comments") - // We don't care at all what warnings simics has if they aren't errors :) - .clang_arg("-Wno-everything") - .default_visibility(FieldVisibilityKind::Public) - .default_alias_style(AliasVariation::TypeAlias) - .default_enum_style(EnumVariation::Rust { - non_exhaustive: false, - }) - .default_macro_constant_type(MacroTypeVariation::Unsigned) - .default_non_copy_union_style(NonCopyUnionStyle::BindgenWrapper) - .derive_default(true) - .derive_hash(true) - .derive_partialord(true) - .derive_ord(true) - .derive_eq(true) - .derive_partialeq(true) - .generate_comments(true) - .header_contents("wrapper.h", &wrapper_contents) - // NOTE: These callbacks are required to emit `cargo:rerun-if-changed` - // statements, so we do not need to use them in this script. If you want to - // repurpose this script to use in a `build.rs`, you should re-enable this - // line: - // .parse_callbacks(Box::new(CargoCallbacks)) - .parse_callbacks(Box::new(IgnoreMacros::new())) - // These functions and types use (i|u)128 which isn't FFI-safe, we block them because the warnings - // are not important and annoying to parse through - .blocklist_function("qecvt") - .blocklist_function("qfcvt") - .blocklist_function("qgcvt") - .blocklist_function("qecvt_r") - .blocklist_function("qfcvt_r") - .blocklist_function("qgcvt_r") - .blocklist_function("strtold") - .blocklist_function("__acoshl") - .blocklist_function("acoshl") - .blocklist_function("__acosl") - .blocklist_function("acosl") - .blocklist_function("__asinhl") - .blocklist_function("asinhl") - .blocklist_function("__asinl") - .blocklist_function("asinl") - .blocklist_function("__atan2l") - .blocklist_function("atan2l") - .blocklist_function("__atanhl") - .blocklist_function("atanhl") - .blocklist_function("__atanl") - .blocklist_function("atanl") - .blocklist_function("__cbrtl") - .blocklist_function("cbrtl") - .blocklist_function("__ceill") - .blocklist_function("ceill") - .blocklist_function("__copysignl") - .blocklist_function("copysignl") - .blocklist_function("__coshl") - .blocklist_function("coshl") - .blocklist_function("__cosl") - .blocklist_function("cosl") - .blocklist_function("__dreml") - .blocklist_function("dreml") - .blocklist_function("__erfcl") - .blocklist_function("erfcl") - .blocklist_function("__erfl") - .blocklist_function("erfl") - .blocklist_function("__exp2l") - .blocklist_function("exp2l") - .blocklist_function("__expl") - .blocklist_function("expl") - .blocklist_function("__expm1l") - .blocklist_function("expm1l") - .blocklist_function("__fabsl") - .blocklist_function("fabsl") - .blocklist_function("__fdiml") - .blocklist_function("fdiml") - .blocklist_function("__finitel") - .blocklist_function("finitel") - .blocklist_function("__floorl") - .blocklist_function("floorl") - .blocklist_function("__fmal") - .blocklist_function("fmal") - .blocklist_function("__fmaxl") - .blocklist_function("fmaxl") - .blocklist_function("__fminl") - .blocklist_function("fminl") - .blocklist_function("__fmodl") - .blocklist_function("fmodl") - .blocklist_function("__fpclassifyl") - .blocklist_function("__frexpl") - .blocklist_function("frexpl") - .blocklist_function("__gammal") - .blocklist_function("gammal") - .blocklist_function("__hypotl") - .blocklist_function("hypotl") - .blocklist_function("__ilogbl") - .blocklist_function("ilogbl") - .blocklist_function("__iseqsigl") - .blocklist_function("__isinfl") - .blocklist_function("isinfl") - .blocklist_function("__isnanl") - .blocklist_function("isnanl") - .blocklist_function("__issignalingl") - .blocklist_function("__j0l") - .blocklist_function("j0l") - .blocklist_function("__j1l") - .blocklist_function("j1l") - .blocklist_function("__jnl") - .blocklist_function("jnl") - .blocklist_function("__ldexpl") - .blocklist_function("ldexpl") - .blocklist_function("__lgammal") - .blocklist_function("lgammal") - .blocklist_function("__lgammal_r") - .blocklist_function("lgammal_r") - .blocklist_function("__llrintl") - .blocklist_function("llrintl") - .blocklist_function("__llroundl") - .blocklist_function("llroundl") - .blocklist_function("__log10l") - .blocklist_function("log10l") - .blocklist_function("__log1pl") - .blocklist_function("log1pl") - .blocklist_function("__log2l") - .blocklist_function("log2l") - .blocklist_function("__logbl") - .blocklist_function("logbl") - .blocklist_function("__logl") - .blocklist_function("logl") - .blocklist_function("__lrintl") - .blocklist_function("lrintl") - .blocklist_function("__lroundl") - .blocklist_function("lroundl") - .blocklist_function("__modfl") - .blocklist_function("modfl") - .blocklist_function("__nanl") - .blocklist_function("nanl") - .blocklist_function("__nearbyintl") - .blocklist_function("nearbyintl") - .blocklist_function("__nextafterl") - .blocklist_function("nextafterl") - .blocklist_function("__nexttoward") - .blocklist_function("nexttoward") - .blocklist_function("__nexttowardf") - .blocklist_function("nexttowardf") - .blocklist_function("__nexttowardl") - .blocklist_function("nexttowardl") - .blocklist_function("__powl") - .blocklist_function("powl") - .blocklist_function("__remainderl") - .blocklist_function("remainderl") - .blocklist_function("__remquol") - .blocklist_function("remquol") - .blocklist_function("__rintl") - .blocklist_function("rintl") - .blocklist_function("__roundl") - .blocklist_function("roundl") - .blocklist_function("__scalbl") - .blocklist_function("scalbl") - .blocklist_function("__scalblnl") - .blocklist_function("scalblnl") - .blocklist_function("__scalbnl") - .blocklist_function("scalbnl") - .blocklist_function("__signbitl") - .blocklist_function("__significandl") - .blocklist_function("significandl") - .blocklist_function("__sinhl") - .blocklist_function("sinhl") - .blocklist_function("__sinl") - .blocklist_function("sinl") - .blocklist_function("__sqrtl") - .blocklist_function("sqrtl") - .blocklist_function("__tanhl") - .blocklist_function("tanhl") - .blocklist_function("__tanl") - .blocklist_function("tanl") - .blocklist_function("__tgammal") - .blocklist_function("tgammal") - .blocklist_function("__truncl") - .blocklist_function("truncl") - .blocklist_function("wcstold") - .blocklist_function("__y0l") - .blocklist_function("y0l") - .blocklist_function("__y1l") - .blocklist_function("y1l") - .blocklist_function("__ynl") - .blocklist_function("ynl") - .blocklist_item("M_E") - .blocklist_item("M_LOG2E") - .blocklist_item("M_LOG10E") - .blocklist_item("M_LN2") - .blocklist_item("M_LN10") - .blocklist_item("M_PI") - .blocklist_item("M_PI_2") - .blocklist_item("M_PI_4") - .blocklist_item("M_1_PI") - .blocklist_item("M_2_PI") - .blocklist_item("M_2_SQRTPI") - .blocklist_item("M_SQRT2") - .blocklist_item("M_SQRT1_2") - .blocklist_item("Py_MATH_PIl") - .blocklist_item("Py_MATH_PI") - .blocklist_item("Py_MATH_El") - .blocklist_item("Py_MATH_E") - .blocklist_item("Py_MATH_TAU") - // Blocklisted because the doc comments cause doc tests to fail - .blocklist_function("_PyErr_TrySetFromCause") - // Blocklisted because packed and align reprs differ - .blocklist_type("__mingw_ldbl_type_t") - .bitfield_enum("event_class_flag_t") - .bitfield_enum("micro_checkpoint_flags_t") - .bitfield_enum("access_t") - .bitfield_enum("breakpoint_flag") - .bitfield_enum("save_flags_t") - .generate()?; - - bindings.write_to_file(bindings_file_path)?; - - if cfg!(feature = "link") { - let base_dir_path = PathBuf::from( - var(SIMICS_BASE_ENV) - .map_err(|e| anyhow!("No environment variable {SIMICS_BASE_ENV} found: {e}"))?, - ); - - ensure!( - base_dir_path.is_dir(), - "{} is not a directory", - base_dir_path.display() - ); - - let libpython_path = - PathBuf::from(var(PYTHON3_LDFLAGS_ENV).map_err(|e| { - anyhow!("No environment variable {PYTHON3_LDFLAGS_ENV} found: {e}") - }).and_then(|v| if v.is_empty() { bail!("Environment variable {PYTHON3_LDFLAGS_ENV} is empty") } else { Ok(v) }).or_else(|e| { - println!("cargo:warning=No environment variable {INCLUDE_PATHS_ENV} set. Using default include paths: {e}"); - base_dir_path - .join(HOST_DIRNAME) - .join("sys") - .join("lib") - .join("libpython3.so") - .to_str() - .map(|s| s.to_string()) - .ok_or_else(|| anyhow!("Could not convert path to string")) - })?); - - let libpython_dir = libpython_path - .parent() - .ok_or_else(|| anyhow!("libpython path {} has no parent", libpython_path.display()))? - .to_path_buf(); - - let link_search_paths = var(LDFLAGS_ENV) - .or_else(|e| { - println!("cargo:warning=No environment variable {LDFLAGS_ENV} set. Using default include paths: {e}"); - base_dir_path - .join(HOST_DIRNAME) - .join("bin") - .to_str() - .map(|s| format!("-L{}", s)) - .ok_or_else(|| anyhow!("Could not convert path to string")) - })? - .split_whitespace() - .filter_map(|s| s.starts_with("-L").then_some(s.replace("-L", ""))) - .map(PathBuf::from) - .chain(once(libpython_dir)) - .collect::>(); - - #[cfg(not(windows))] - let libs = var(LIBS_ENV) - .unwrap_or_else(|e| { - println!("cargo:warning=No environment variable {LIBS_ENV} set. Using default include paths: {e}"); - "-lsimics-common -lvtutils".to_string() - }) - .split_whitespace() - .filter_map(|s| s.starts_with("-l").then_some(s.replace("-l", ""))) - .collect::>(); - - #[cfg(windows)] - let libs = "-lsimics-common -lvtutils" - .split_whitespace() - .filter_map(|s| s.starts_with("-l").then_some(s.replace("-l", ""))) - .collect::>(); - - link_search_paths.iter().for_each(|p| { - // NOTE: These are removed by cargo, which is why we use absolute paths. - // We emit them just for posterity - println!("cargo:rustc-link-search=native={}", p.display()); - // NOTE: This is needed for the recursive linking step against libpython from - // libsimics-common.so - println!("cargo:rustc-link-arg=-Wl,-rpath-link,{}", p.display()); - // NOTE: This is needed so we can locate the shared libraries at runtime, because - // unlike the `simics` script in each project, we don't get to write an absolute - // path - // println!("cargo-rustc-link-arg=-Wl,-rpath,{}", p.display()); - // println!("cargo-rustc-cdylib-link-arg=-Wl,-rpath,{}", p.display()); - // println!("cargo-rustc-link-arg=-Wl,-rpath={}", p.display()); - // println!("cargo-rustc-cdylib-link-arg=-Wl,-rpath={}", p.display()); - }); - - libs.iter() - .for_each(|l| println!("cargo:rustc-link-lib=dylib={}", l)); - - let library_search_paths = link_search_paths - .iter() - .map(|p| { - p.to_str() - .ok_or_else(|| anyhow!("Could not convert path {} to string", p.display())) - }) - .collect::>>()? - .join(":"); - - // NOTE: This enables running binaries linked with this one when running with `cargo run` - println!("cargo:rustc-env=LD_LIBRARY_PATH={}", library_search_paths); - - // NOTE: - // EVEN with all of the above, a binary built using `cargo build` will not be able to find - // libsimics-common.so. Instead, when we build a binary that transitively depends on this - // -sys crate, we compile it with `cargo rustc`, passing the `-rpath` link argument like - // so. Note `--disable-new-dtags`, otherwise `libsimics-common.so` cannot find - // `libpython3.9.so.1.0` because it will be missing the recursive rpath lookup. - - // SIMICS_BASE=/home/rhart/simics-public/simics-6.0.174 - // PYTHON3_INCLUDE=-I/home/rhart/simics-public/simics-6.0.174/linux64/include/python3.9 - // INCLUDE_PATHS=/home/rhart/simics-public/simics-6.0.174/src/include - // PYTHON3_LDFLAGS=/home/rhart/simics-public/simics-6.0.174/linux64/sys/lib/libpython3.so - // LDFLAGS="-L/home/rhart/simics-public/simics-6.0.174/linux64/bin -z - // noexecstack -z relro -z now" LIBS="-lsimics-common -lvtutils" cargo rustc - // --features=auto,link --example simple-simics -- -C - // link-args="-Wl,--disable-new-dtags - // -Wl,-rpath,/home/rhart/simics-public/simics-6.0.174/linux64/bin;/home/rhart/simics-public/simics-6.0.174/linux64/sys/lib/" - - // This command (the environment variables can be left out) can be auto-generated in the - // SIMICS makefile build system. - } - - Ok(()) -} diff --git a/modules/tsffs/src/simics/simics-api-sys/examples/simple-simics.rs b/modules/tsffs/src/simics/simics-api-sys/examples/simple-simics.rs deleted file mode 100644 index 8b9685a8..00000000 --- a/modules/tsffs/src/simics/simics-api-sys/examples/simple-simics.rs +++ /dev/null @@ -1,47 +0,0 @@ -//! The simple-simics example from SIMICS, in (unsafe) Rust - -use anyhow::Result; -use raw_cstr::raw_cstr; -use simics_api_sys::{ - init_arg_t, init_arg_t__bindgen_ty_1, SIM_init_command_line, SIM_init_environment, - SIM_init_simulator2, SIM_main_loop, -}; -use std::{mem::forget, ptr::null}; - -fn main() -> Result<()> { - let mut init_args = vec![ - init_arg_t { - name: raw_cstr("quiet")?, - boolean: true, - u: init_arg_t__bindgen_ty_1 { enabled: false }, - }, - init_arg_t { - name: raw_cstr("project")?, - boolean: false, - u: init_arg_t__bindgen_ty_1 { - string: raw_cstr(".")?, - }, - }, - init_arg_t { - name: raw_cstr("gui-mode")?, - boolean: false, - u: init_arg_t__bindgen_ty_1 { - string: raw_cstr("no-gui")?, - }, - }, - init_arg_t { - name: null(), - boolean: false, - u: init_arg_t__bindgen_ty_1 { string: null() }, - }, - ]; - let mut args = vec![raw_cstr("simple-simics")?]; - let args_ptr = args.as_mut_ptr(); - forget(args); - - unsafe { SIM_init_environment(args_ptr, false, true) }; - unsafe { SIM_init_simulator2(init_args.as_mut_ptr()) }; - unsafe { SIM_init_command_line() }; - unsafe { SIM_main_loop() }; - unreachable!("SIM_main_loop should never return"); -} diff --git a/modules/tsffs/src/simics/simics-codegen/Cargo.toml b/modules/tsffs/src/simics/simics-codegen/Cargo.toml deleted file mode 100644 index cfb129ba..00000000 --- a/modules/tsffs/src/simics/simics-codegen/Cargo.toml +++ /dev/null @@ -1,28 +0,0 @@ -# Copyright (C) 2023 Intel Corporation -# SPDX-License-Identifier: Apache-2.0 - -[package] -name = "simics-codegen" -categories.workspace = true -description = "Code generation for high level SIMICS API bindings" -edition.workspace = true -homepage.workspace = true -keywords.workspace = true -license.workspace = true -publish.workspace = true -readme.workspace = true -repository.workspace = true -version.workspace = true - -[dependencies] -quote = "1.0.26" -syn = { version = "2.0.15", features = ["full"] } -proc-macro2 = "1.0.56" -darling = "0.20.3" - -[dev-dependencies] -anyhow.workspace = true -raw-cstr.workspace = true -trybuild = { version = "1.0.80", features = ["diff"] } - -[features] diff --git a/modules/tsffs/src/simics/simics-codegen/src/lib.rs b/modules/tsffs/src/simics/simics-codegen/src/lib.rs deleted file mode 100644 index 6b661909..00000000 --- a/modules/tsffs/src/simics/simics-codegen/src/lib.rs +++ /dev/null @@ -1,843 +0,0 @@ -use std::{ - collections::HashMap, - env::var, - fs::read_dir, - path::{Path, PathBuf}, -}; - -use darling::Error; -use proc_macro2::TokenStream as TokenStream2; -use quote::{format_ident, quote}; -use syn::{ - parse_file, Expr, Field, GenericArgument, Item, ItemConst, ItemType, Lit, Meta, PathArguments, - ReturnType, Type, -}; - -trait SnakeToCamel { - fn snake_to_camel(&self) -> String; -} - -impl SnakeToCamel for String { - fn snake_to_camel(&self) -> String { - let mut s = String::new(); - let mut upper = false; - for c in self.chars() { - if upper || s.is_empty() { - s.push(c.to_ascii_uppercase()); - upper = false; - } else if c == '_' { - upper = true; - } else { - s.push(c.to_ascii_lowercase()); - } - } - s - } -} - -fn interface_field_to_method(field: &Field) -> Option { - let vis = &field.vis; - if let Some(name) = &field.ident { - let name_string = name.to_string(); - if let Type::Path(ref p) = field.ty { - if let Some(last) = p.path.segments.last() { - if last.ident == "Option" { - if let PathArguments::AngleBracketed(ref args) = last.arguments { - if let Some(GenericArgument::Type(Type::BareFn(proto))) = args.args.first() - { - // NOTE: We `use crate::api::sys::*;` at the top of the module, otherwise - // we would need to rewrite all of the types on `inputs` here. - let inputs = &proto.inputs; - let first_input = inputs.iter().next(); - let has_obj = if let Some(first) = first_input { - quote!(#first).to_string().ends_with("conf_object_t") - } else { - false - }; - let input_names = inputs - .iter() - .skip(if has_obj { 1 } else { 0 }) - .filter_map(|a| a.name.clone().map(|n| n.0)) - .collect::>(); - let wrapper_inputs = inputs - .iter() - .skip(if has_obj { 1 } else { 0 }) - .collect::>(); - let (is_attr_value, output) = match &proto.output { - ReturnType::Default => (false, quote!(())), - ReturnType::Type(_, t) => match &**t { - Type::Path(p) => { - if let Some(last) = p.path.get_ident() { - if last == "attr_value_t" { - (true, quote!(crate::api::AttrValue)) - } else { - (false, quote!(#t)) - } - } else { - (false, quote!(#t)) - } - } - _ => (false, quote!(#t)), - }, - }; - // NOTE: We need to make a new name because in some cases the fn ptr name is the same as one of the parameter - // names - let some_name = format_ident!("{}_fn", name); - let maybe_self_obj = - has_obj.then_some(quote!(self.obj,)).unwrap_or_default(); - - let ok_value = if is_attr_value { - quote!(Ok(unsafe { #some_name(#maybe_self_obj #(#input_names),*) }.into())) - } else { - quote!(Ok(unsafe { #some_name(#maybe_self_obj #(#input_names),*) })) - }; - - return Some(quote! { - #vis fn #name(&mut self, #(#wrapper_inputs),*) -> crate::Result<#output> { - if let Some(#some_name) = unsafe { *self.interface}.#name { - #ok_value - } else { - Err(crate::Error::NoInterfaceMethod { method: #name_string.to_string() }) - } - } - }); - } - } - } - } - } - } - None -} - -fn hap_name_and_type_to_struct( - name_callback_type: (&&&ItemConst, &&ItemType), -) -> Option { - let name = name_callback_type.0; - let name_name = &name.ident; - let callback_type = name_callback_type.1; - let callback_doc = &callback_type.attrs; - let supports_index_callbacks = callback_type.attrs.iter().find_map(|a| { - if let Meta::NameValue(ref meta) = a.meta { - if let Expr::Lit(ref lit) = meta.value { - if let Lit::Str(ref str_lit) = lit.lit { - if !str_lit.value().contains("Index: Indices not supported") { - Some(str_lit.value()) - } else { - None - } - } else { - None - } - } else { - None - } - } else { - None - } - }); - - let struct_name = format_ident!( - "{}Hap", - callback_type - .ident - .to_string() - .trim_end_matches("_hap_callback") - .to_string() - .snake_to_camel() - ); - - let handler_name = format_ident!( - "{}", - "handle_".to_string() - + callback_type - .ident - .to_string() - .trim_end_matches("_hap_callback"), - ); - if let Type::Path(ref p) = &*callback_type.ty { - if let Some(last) = p.path.segments.last() { - if last.ident == "Option" { - if let PathArguments::AngleBracketed(ref args) = last.arguments { - if let Some(GenericArgument::Type(Type::BareFn(proto))) = args.args.first() { - // NOTE: We `use crate::api::sys::*;` at the top of the module, otherwise - // we would need to rewrite all of the types on `inputs` here. - let inputs = &proto.inputs; - let input_names = inputs - .iter() - .filter_map(|a| a.name.clone().map(|n| n.0)) - .collect::>(); - if let Some(userdata_name) = input_names.first() { - let output = match &proto.output { - ReturnType::Default => quote!(()), - ReturnType::Type(_, t) => quote!(#t), - }; - let closure_params = - inputs.iter().skip(1).map(|a| &a.ty).collect::>(); - let closure_param_names = - input_names.iter().skip(1).collect::>(); - let callback_ty = - quote!(FnMut(#(#closure_params),*) -> #output + 'static); - - let add_callback_methods = quote! { - /// Add a callback to be called on each occurrence of this HAP. The callback may capture its environment. - /// - /// # Arguments - /// - /// * `callback` - The closure to fire as a callback. The closure will be doubly boxed. Any program state accessed inside - /// the closure must have the static lifetime. This is not enforced by the compiler, it is up to the programmer to ensure - /// the soundness of their callback code. - pub fn add_callback(callback: F) -> crate::Result - where - F: #callback_ty, - { - let callback = Box::new(callback); - let callback_box = Box::new(callback); - let callback_raw = Box::into_raw(callback_box); - let handler: unsafe extern "C" fn() = unsafe { std::mem::transmute(#handler_name:: as usize) }; - Ok(unsafe { - crate::api::sys::SIM_hap_add_callback( - Self::NAME.as_raw_cstr()?, - Some(handler), - callback_raw as *mut std::ffi::c_void, - ) - }) - } - - /// Add a callback to be called on each occurrence of this HAP for a specific object. The callback may capture its environment. - /// - /// # Arguments - /// - /// * `callback` - The closure to fire as a callback. The closure will be doubly boxed. Any program state accessed inside - /// the closure must have the static lifetime. This is not enforced by the compiler, it is up to the programmer to ensure - /// the soundness of their callback code. - /// * `obj` - The object to fire this callback for. This HAP will not trigger the callback when firing on any object other than - /// this one. - pub fn add_callback_object(callback: F, obj: *mut crate::api::ConfObject) -> crate::Result - where - F: #callback_ty - { - let callback = Box::new(callback); - let callback_box = Box::new(callback); - let callback_raw = Box::into_raw(callback_box); - let handler: unsafe extern "C" fn() = unsafe { std::mem::transmute(#handler_name:: as usize) }; - Ok(unsafe { - crate::api::sys::SIM_hap_add_callback_obj( - Self::NAME.as_raw_cstr()?, - obj, - 0, - Some(handler), - callback_raw as *mut std::ffi::c_void, - ) - }) - } - }; - - let maybe_index_callback_methods = supports_index_callbacks.map(|index| { - let index_doc = format!("* `index` - The index value for this HAP: {}", index); - let range_start_doc = format!("* `start` - The start of the range of index values for this HAP: {}", index); - let range_end_doc = format!("* `end` - The start of the range of index values for this HAP: {}", index); - quote! { - /// Add a callback to be called on each occurrence of this HAP for a specific index value. The callback may capture its environment. - /// - /// Only HAPs which support an index may add a callback in this manner, and the index varies for each HAP. For example, the - /// [`CoreMagicInstructionHap`] supports an index equal to the magic value. - /// - /// # Arguments - /// - /// * `callback` - The closure to fire as a callback. The closure will be doubly boxed. Any program state accessed inside - /// the closure must have the static lifetime. This is not enforced by the compiler, it is up to the programmer to ensure - /// the soundness of their callback code. - #[doc = #index_doc] - pub fn add_callback_index(callback: F, index: i64) -> crate::Result - where - F: #callback_ty - { - let callback = Box::new(callback); - let callback_box = Box::new(callback); - let callback_raw = Box::into_raw(callback_box); - let handler: unsafe extern "C" fn() = unsafe { std::mem::transmute(#handler_name:: as usize) }; - Ok(unsafe { - crate::api::sys::SIM_hap_add_callback_index( - Self::NAME.as_raw_cstr()?, - Some(handler), - callback_raw as *mut std::ffi::c_void, - index - ) - }) - } - - /// Add a callback to be called on each occurrence of this HAP for a specific index value range. The callback may capture its environment. - /// - /// Only HAPs which support an index may add a callback in this manner, and the index varies for each HAP. For example, the - /// [`CoreMagicInstructionHap`] supports an index equal to the magic value. - /// - /// # Arguments - /// - /// * `callback` - The closure to fire as a callback. The closure will be doubly boxed. Any program state accessed inside - /// the closure must have the static lifetime. This is not enforced by the compiler, it is up to the programmer to ensure - /// the soundness of their callback code. - #[doc = #range_start_doc] - #[doc = #range_end_doc] - pub fn add_callback_range(callback: F, start: i64, end: i64) -> crate::Result - where - F: #callback_ty - { - let callback = Box::new(callback); - let callback_box = Box::new(callback); - let callback_raw = Box::into_raw(callback_box); - let handler: unsafe extern "C" fn() = unsafe { std::mem::transmute(#handler_name:: as usize) }; - Ok(unsafe { - crate::api::sys::SIM_hap_add_callback_range( - Self::NAME.as_raw_cstr()?, - Some(handler), - callback_raw as *mut std::ffi::c_void, - start, - end, - ) - }) - } - - /// Add a callback to be called on each occurrence of this HAP on a specific object for a specific index value. The callback may capture its environment. - /// - /// Only HAPs which support an index may add a callback in this manner, and the index varies for each HAP. For example, the - /// [`CoreMagicInstructionHap`] supports an index equal to the magic value. - /// - /// # Arguments - /// - /// * `callback` - The closure to fire as a callback. The closure will be doubly boxed. Any program state accessed inside - /// the closure must have the static lifetime. This is not enforced by the compiler, it is up to the programmer to ensure - /// the soundness of their callback code. - /// * `obj` - The object to fire this callback for. This HAP will not trigger the callback when firing on any object other than - /// this one. - #[doc = #index_doc] - pub fn add_callback_object_index(callback: F, obj: *mut crate::api::ConfObject, index: i64) -> crate::Result - where - F: #callback_ty - { - let callback = Box::new(callback); - let callback_box = Box::new(callback); - let callback_raw = Box::into_raw(callback_box); - let handler: unsafe extern "C" fn() = unsafe { std::mem::transmute(#handler_name:: as usize) }; - Ok(unsafe { - crate::api::sys::SIM_hap_add_callback_obj_index( - Self::NAME.as_raw_cstr()?, - obj, - 0, - Some(handler), - callback_raw as *mut std::ffi::c_void, - index - ) - }) - } - - /// Add a callback to be called on each occurrence of this HAP on a specific object for a specific index value range. The callback may capture its environment. - /// - /// Only HAPs which support an index may add a callback in this manner, and the index varies for each HAP. For example, the - /// [`CoreMagicInstructionHap`] supports an index equal to the magic value. - /// - /// # Arguments - /// - /// * `callback` - The closure to fire as a callback. The closure will be doubly boxed. Any program state accessed inside - /// the closure must have the static lifetime. This is not enforced by the compiler, it is up to the programmer to ensure - /// the soundness of their callback code. - /// * `obj` - The object to fire this callback for. This HAP will not trigger the callback when firing on any object other than - /// this one. - #[doc = #range_start_doc] - #[doc = #range_end_doc] - pub fn add_callback_object_range(callback: F, obj: *mut crate::api::ConfObject, start: i64, end: i64) -> crate::Result - where - F: #callback_ty - { - let callback = Box::new(callback); - let callback_box = Box::new(callback); - let callback_raw = Box::into_raw(callback_box); - let handler: unsafe extern "C" fn() = unsafe { std::mem::transmute(#handler_name:: as usize) }; - Ok(unsafe { - crate::api::sys::SIM_hap_add_callback_obj_range( - Self::NAME.as_raw_cstr()?, - obj, - 0, - Some(handler), - callback_raw as *mut std::ffi::c_void, - start, - end, - ) - }) - } - - - }}).unwrap_or_default(); - - let struct_and_impl = quote! { - #(#callback_doc)* - pub struct #struct_name {} - - impl crate::api::traits::hap::Hap for #struct_name { - type Name = &'static [u8]; - const NAME: Self::Name = crate::api::sys::#name_name; - } - - impl #struct_name { - #add_callback_methods - #maybe_index_callback_methods - } - - /// The handler for HAPs of a specific type. Unboxes a boxed - /// closure and calls it with the correct HAP callback arguments - extern "C" fn #handler_name(#inputs) -> #output - where F: #callback_ty - { - // NOTE: This box must be leaked, because we may call this closure again, we cannot drop it - let closure = Box::leak(unsafe { Box::from_raw(#userdata_name as *mut Box) }); - closure(#(#closure_param_names),*) - } - - }; - - return Some(struct_and_impl); - } - } - } - } - } - } - None -} - -/// Automatically generate high level bindings to all interfaces provided by SIMICS -/// -/// Interfaces are defined by the sys bindings as (for example): -/// -/// ```rust,ignore -/// #[repr(C)] -/// pub struct breakpoint_interface { -/// pub insert_breakpoint: Option, -/// pub remove_breakpoint: Option, -/// pub get_breakpoint: Option breakpoint_info_t>, -/// } -/// ``` -/// -/// Along with the name of the interface: -/// -/// ```rust,ignore -/// pub const BREAKPOINT_INTERFACE: &[u8; 11] = b"breakpoint\0"; -/// ``` -/// -/// Code-generation takes each interface structure and name and creates a Rust-named -/// structure, implements the [`Interface`] trait for it, and implements a safe(ish) -/// wrapper for the interface object. For the above example, the generation would be: -/// -/// ```rust,ignore -/// pub struct BreakpointInterface { -/// interface: *mut crate::api::sys::breakpoint_interface, -/// } -/// impl BreakpointInterface { -/// pub fn insert_breakpoint( -/// &mut self, -/// object: *mut conf_object_t, -/// caller: *mut conf_object_t, -/// handle: breakpoint_handle_t, -/// access: access_t, -/// start: generic_address_t, -/// end: generic_address_t, -/// ) -> crate::Result<()> { -/// if let Some(insert_breakpoint_fn) = unsafe { *self.interface } -/// .insert_breakpoint -/// { -/// Ok(unsafe { -/// insert_breakpoint_fn( -/// object, -/// caller, -/// handle, -/// access, -/// start, -/// end, -/// ) -/// }) -/// } else { -/// Err(crate::Error::NoInterfaceMethod { -/// method: "insert_breakpoint".to_string(), -/// }) -/// } -/// } -/// pub fn remove_breakpoint( -/// &mut self, -/// object: *mut conf_object_t, -/// handle: breakpoint_handle_t, -/// ) -> crate::Result<()> { -/// if let Some(remove_breakpoint_fn) = unsafe { *self.interface } -/// .remove_breakpoint -/// { -/// Ok(unsafe { remove_breakpoint_fn(object, handle) }) -/// } else { -/// Err(crate::Error::NoInterfaceMethod { -/// method: "remove_breakpoint".to_string(), -/// }) -/// } -/// } -/// pub fn get_breakpoint( -/// &mut self, -/// obj: *mut conf_object_t, -/// handle: breakpoint_handle_t, -/// ) -> crate::Result { -/// if let Some(get_breakpoint_fn) = unsafe { *self.interface } -/// .get_breakpoint -/// { -/// Ok(unsafe { get_breakpoint_fn(obj, handle) }) -/// } else { -/// Err(crate::Error::NoInterfaceMethod { -/// method: "get_breakpoint".to_string(), -/// }) -/// } -/// } -/// } -/// impl crate::api::traits::interface::Interface for BreakpointInterface { -/// type InternalInterface = crate::api::sys::breakpoint_interface; -/// type Name = &'static [u8]; -/// const NAME: &'static [u8] = crate::api::sys::BREAKPOINT_INTERFACE; -/// fn new(interface: *mut Self::InternalInterface) -> Self { -/// Self { interface } -/// } -/// fn register(cls: *mut crate::api::ConfClass) -> crate::Result<()> { -/// crate::api::base::conf_object::register_interface::(cls)?; -/// Ok(()) -/// } -/// fn get(obj: *mut crate::api::ConfObject) -> crate::Result { -/// crate::api::base::conf_object::get_interface::(obj) -/// } -/// } -/// ``` -/// -pub fn simics_interface_codegen(bindings: &str) -> TokenStream2 { - let parsed_bindings = match parse_file(bindings) { - Ok(b) => b, - Err(e) => return Error::from(e).write_errors(), - }; - - let interface_name_items = parsed_bindings - .items - .iter() - .filter_map(|i| { - if let Item::Const(c) = i { - if c.ident.to_string().ends_with("_INTERFACE") { - Some((c.ident.to_string(), c)) - } else { - None - } - } else { - None - } - }) - .collect::>(); - - let interfaces = parsed_bindings - .items - .iter() - .filter_map(|i| { - if let Item::Struct(s) = i { - interface_name_items - .get(&s.ident.to_string().to_ascii_uppercase()) - .map(|interface_name_item| (interface_name_item, s)) - } else { - None - } - }) - .collect::>(); - - let interface_structs = interfaces - .iter() - .map(|(name, interface)| { - let camel_name = name.ident.to_string().snake_to_camel(); - let struct_name = format_ident!("{camel_name}",); - let interface_ident = &interface.ident; - let name_ident = &name.ident; - let interface_methods = interface - .fields - .iter() - .filter_map(interface_field_to_method) - .collect::>(); - let q = quote! { - pub struct #struct_name { - obj: *mut crate::api::ConfObject, - interface: *mut crate::api::sys::#interface_ident, - } - - impl #struct_name { - #(#interface_methods)* - } - - impl crate::api::traits::interface::Interface for #struct_name { - type InternalInterface = crate::api::sys::#interface_ident; - type Name = &'static [u8]; - - const NAME: &'static [u8] = crate::api::sys::#name_ident; - - fn new(obj: *mut crate::api::ConfObject, interface: *mut Self::InternalInterface) -> Self { - Self { obj, interface } - } - - fn register(cls: *mut crate::api::ConfClass) -> crate::Result<()> { - crate::api::base::conf_object::register_interface::(cls)?; - Ok(()) - } - - fn get(obj: *mut crate::api::ConfObject) -> crate::Result { - crate::api::base::conf_object::get_interface::(obj) - } - } - }; - q - }) - .collect::>(); - - quote! { - #[allow(dead_code, non_snake_case)] - pub mod interfaces { - use crate::api::sys::*; - - #(#interface_structs)* - } - } -} - -/// Automatically generate high level bindings to all HAPs provided by SIMICS. -/// -/// HAPs are defined as a string name like: -/// -/// ```rust,ignore -/// pub const CORE_EXCEPTION_HAP_NAME: &[u8; 15] = b"Core_Exception\0"; -/// ``` -/// -/// This macro generates a struct with an implementation of [`Hap`]. If the hap is -/// marked as having an index pseudo-parameter, methods to add callbacks receiving an -/// index will be generated. Methods to add callbacks not receiving an index are -/// generated for all haps. -/// -/// ```rust,ignore -/// pub struct CoreExceptionHap {} -/// impl crate::api::traits::hap::Hap for CoreExceptionHap { -/// type Handler = unsafe extern "C" fn( -/// callback_data: *mut lang_void, -/// trigger_obj: *mut conf_object_t, -/// exception_number: int64, -/// ); -/// type Name = &'static [u8]; -/// type Callback = Box< -/// dyn Fn(*mut conf_object_t, int64) -> () + 'static, -/// >; -/// const NAME: Self::Name = crate::api::sys::CORE_EXCEPTION_HAP_NAME; -/// const HANDLER: Self::Handler = handle_core_exception::< -/// Self::Callback, -/// >; -/// fn add_callback( -/// callback: Self::Callback, -/// ) -> crate::Result { -/// let callback_box = Box::new(callback); -/// let callback_raw = Box::into_raw(callback_box); -/// let handler: unsafe extern "C" fn() = unsafe { -/// std::mem::transmute(Self::HANDLER) -/// }; -/// Ok(unsafe { -/// crate::api::sys::SIM_hap_add_callback( -/// Self::NAME.as_raw_cstr()?, -/// Some(handler), -/// callback_raw as *mut std::ffi::c_void, -/// ) -/// }) -/// } -/// fn add_callback_object( -/// callback: Self::Callback, -/// obj: *mut crate::api::ConfObject, -/// ) -> crate::Result { -/// let callback_box = Box::new(callback); -/// let callback_raw = Box::into_raw(callback_box); -/// let handler: unsafe extern "C" fn() = unsafe { -/// std::mem::transmute(Self::HANDLER) -/// }; -/// Ok(unsafe { -/// crate::api::sys::SIM_hap_add_callback_obj( -/// Self::NAME.as_raw_cstr()?, -/// obj, -/// 0, -/// Some(handler), -/// callback_raw as *mut std::ffi::c_void, -/// ) -/// }) -/// } -/// } -/// extern "C" fn handle_core_exception( -/// callback_data: *mut lang_void, -/// trigger_obj: *mut conf_object_t, -/// exception_number: int64, -/// ) -> () -/// where -/// F: Fn(*mut conf_object_t, int64) -> () + 'static, -/// { -/// let closure: Box> = unsafe { -/// Box::from_raw(callback_data as *mut Box) -/// }; -/// closure(trigger_obj, exception_number) -/// } -/// ``` -pub fn simics_hap_codegen(bindings: &str) -> TokenStream2 { - let parsed_bindings = match parse_file(bindings) { - Ok(b) => b, - Err(e) => return Error::from(e).write_errors(), - }; - - let hap_name_items = parsed_bindings - .items - .iter() - .filter_map(|i| { - if let Item::Const(c) = i { - if c.ident.to_string().ends_with("_HAP_NAME") { - Some((c.ident.to_string(), c)) - } else { - None - } - } else { - None - } - }) - .collect::>(); - - // println!("{:?}", hap_name_items); - - let haps = parsed_bindings - .items - .iter() - .filter_map(|i| { - if let Item::Type(ty) = i { - if ty.ident.to_string().ends_with("_hap_callback") { - hap_name_items - .get( - &(ty.ident - .to_string() - .trim_end_matches("_hap_callback") - .to_ascii_uppercase() - + "_HAP_NAME"), - ) - .map(|hap_name_item| (hap_name_item, ty)) - } else { - None - } - } else { - None - } - }) - .collect::>(); - - // println!("{:?}", haps); - - let hap_structs = haps - .iter() - .filter_map(hap_name_and_type_to_struct) - .collect::>(); - - quote! { - #[allow(dead_code, non_snake_case)] - pub mod haps { - use crate::api::sys::*; - use crate::api::traits::hap::Hap; - use raw_cstr::AsRawCstr; - - #(#hap_structs)* - } - } -} - -/// Generate separate test functions for all SIMICS test python scripts (scripts beginning with -/// 's-' inside a directory that contains a SUITEINFO file. -/// -/// The path `package_root` should be a relative path from the test crate root to the package -/// root directory. Tests whose filenames end in "-fail" will expect a failure, not a success. -pub fn simics_tests

(package_root: P) -> TokenStream2 -where - P: AsRef, -{ - let crate_directory_path = PathBuf::from( - var("CARGO_MANIFEST_DIR").expect("No CARGO_MANIFEST_DIR set. This should be impossible."), - ); - - let test_runner_path = crate_directory_path - .join(package_root.as_ref()) - .join("bin/test-runner"); - - if !test_runner_path.is_file() { - panic!( - "Test runner path {} does not exist.", - test_runner_path.display() - ); - } - - let test_runner_path = test_runner_path.to_str().unwrap_or_else(|| { - panic!( - "Could not get string for test runner path {}", - test_runner_path.display() - ) - }); - - let integration_tests_directory = crate_directory_path; - - let tests = read_dir(integration_tests_directory) - .expect("Failed to read integration tests directory") - .filter_map(|e| e.ok()) - .filter_map(|e| { - let p = e.path(); - p.file_stem().and_then(move |f| { - f.to_str() - .map(|f| f.to_string()) - .filter(|f| f.starts_with("s-")) - }) - }) - .map(|test_name| { - let test_name_ident = format_ident!( - "test_simics_{}", - test_name - .to_ascii_lowercase() - .replace("s-", "") - .replace('-', "_") - ); - let try_or_invert_try_and_print = if test_name.ends_with("-fail") { - quote! { - .err() - .ok_or_else(|| anyhow::anyhow!("Expected failure, got success"))?; - - if let command_ext::CommandExtError::Check { status: _, stdout, stderr: _ } = res { - println!("stdout:\n{stdout}"); - } - } - } else { - quote! { - ?; - - let stdout = String::from_utf8_lossy(&res.stdout); - - println!("stdout:\n{stdout}"); - } - }; - quote! { - #[test] - fn #test_name_ident() -> anyhow::Result<()> { - #[allow(unused)] - let res = std::process::Command::new(#test_runner_path) - .arg("-v") - .arg("-n") - .arg(#test_name) - .check() - #try_or_invert_try_and_print - - Ok(()) - } - } - }) - .collect::>(); - - quote! { - #[allow(unused_imports)] - use command_ext::CommandExtCheck; - - #(#tests)* - } -} diff --git a/modules/tsffs/src/simics/simics-macro/Cargo.toml b/modules/tsffs/src/simics/simics-macro/Cargo.toml deleted file mode 100644 index e999c855..00000000 --- a/modules/tsffs/src/simics/simics-macro/Cargo.toml +++ /dev/null @@ -1,36 +0,0 @@ -# Copyright (C) 2023 Intel Corporation -# SPDX-License-Identifier: Apache-2.0 - -[package] -name = "simics-macro" -categories.workspace = true -description = "High level SIMICS API proc macros" -edition.workspace = true -homepage.workspace = true -keywords.workspace = true -license.workspace = true -publish.workspace = true -readme.workspace = true -repository.workspace = true -version.workspace = true - -# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html -[lib] -proc-macro = true - -[dependencies] -quote = "1.0.26" -syn = { version = "2.0.15", features = ["full"] } -proc-macro2 = "1.0.56" -proc-macro-error = "1.0.4" -darling = "0.20.3" -indoc = "2.0.4" - -[dev-dependencies] - -anyhow.workspace = true -raw-cstr.workspace = true -trybuild = { version = "1.0.80", features = ["diff"] } - - -[features] diff --git a/modules/tsffs/src/simics/simics-macro/src/lib.rs b/modules/tsffs/src/simics/simics-macro/src/lib.rs deleted file mode 100644 index f3b4ca8d..00000000 --- a/modules/tsffs/src/simics/simics-macro/src/lib.rs +++ /dev/null @@ -1,1546 +0,0 @@ -// Copyright (C) 2023 Intel Corporation -// SPDX-License-Identifier: Apache-2.0 - -//! Derive/attribute macros for simics-api - -#![deny(clippy::unwrap_used)] -#![forbid(unsafe_code)] - -use std::{ - env::var, - fs::{create_dir_all, read_dir, write}, - path::PathBuf, -}; - -use darling::{ - ast::{Data, NestedMeta}, - util::Flag, - Error, FromDeriveInput, FromField, FromMeta, Result, -}; -use indoc::formatdoc; -use proc_macro::TokenStream; -use proc_macro2::TokenStream as TokenStream2; -use proc_macro_error::{abort, proc_macro_error}; -use quote::{format_ident, quote, ToTokens}; -use syn::{ - parse::Parser, parse_macro_input, parse_str, DeriveInput, Expr, Field, Fields, FnArg, - GenericArgument, Generics, Ident, ImplGenerics, ImplItem, ItemFn, ItemImpl, ItemStruct, Lit, - Meta, Pat, PathArguments, ReturnType, Signature, Type, TypeGenerics, Visibility, WhereClause, -}; - -#[derive(Debug, FromDeriveInput)] -#[darling(attributes(module), supports(struct_named))] -struct ClassDerive { - ident: Ident, - generics: Generics, -} - -impl ToTokens for ClassDerive { - fn to_tokens(&self, tokens: &mut TokenStream2) { - let ident = &self.ident; - let (impl_generics, ty_generics, where_clause) = self.generics.split_for_impl(); - tokens.extend(quote! { - impl #impl_generics simics::api::traits::class::Class for #ident #ty_generics #where_clause {} - }) - } -} - -#[proc_macro_derive(Class)] -/// Derive macro for the [`Class`] trait. -pub fn class_derive(input: TokenStream) -> TokenStream { - let input = parse_macro_input!(input as DeriveInput); - let args = match ClassDerive::from_derive_input(&input) { - Ok(opts) => opts, - Err(e) => return e.write_errors().into(), - }; - quote! { - #args - } - .into() -} - -#[derive(Debug, FromDeriveInput)] -#[darling(attributes(module), supports(struct_named))] -struct AsConfObjectDerive { - ident: Ident, - generics: Generics, -} - -impl ToTokens for AsConfObjectDerive { - fn to_tokens(&self, tokens: &mut TokenStream2) { - let ident = &self.ident; - let (impl_generics, ty_generics, where_clause) = self.generics.split_for_impl(); - tokens.extend(quote! { - impl #impl_generics simics::api::traits::class::AsConfObject for #ident #ty_generics #where_clause {} - }) - } -} - -#[proc_macro_derive(AsConfObject)] -/// Derive macro for the [`Class`] trait. -pub fn as_conf_object_derive(input: TokenStream) -> TokenStream { - let input = parse_macro_input!(input as DeriveInput); - let args = match AsConfObjectDerive::from_derive_input(&input) { - Ok(opts) => opts, - Err(e) => return e.write_errors().into(), - }; - quote! { - #args - } - .into() -} - -#[derive(Debug, FromMeta)] -struct ClassOpts { - name: Expr, - derive: Flag, - description: Option, - short_description: Option, - kind: Option, -} - -#[proc_macro_error] -#[proc_macro_attribute] -/// Attribute to add boilerplate to a `struct` to enable it to be used as a SIMICS Conf Object. -/// -/// * Generate default implementations for CFFI to call functions defined in the [`Class`] trait -/// impl -/// * Insert a [ConfObject] field to permit instances of the struct to be passed via CFFI to and -/// from SIMICS -/// * Optionally, derive the default implementations of the [`Class`] trait -/// -/// The macro accepts the following arguments: -/// -/// * `name = "name"` (Required) specifies the generated class name the class will be registered with -/// * `derive` (Optional) which allows you to derive the default -/// implementation of [`Class`] alongside automatic implementations of the extern functions -/// required to register the class. -/// * `description = "describe your class"` (Optional) set a custom description for the generated -/// class. Defaults to the struct name. -/// * `short_description = "short desc"` (Optional) set a custom short description for the -/// generated class. Defaults to the struct name. -/// * `kind = ClassKind::Vanilla` (Optional) set a class kind. Most classes are Vanilla, -/// which is the default, but the kind can be set here. -/// -/// # Examples -/// -/// Without deriving [`Class`]: -/// -/// ```rust,ignore -/// use simics::api::{Class, CreateClass}; -/// use simics_macro::class; -/// -/// #[class(name = "test")] -/// struct Test {} -/// ``` -/// -/// Derive [`Class`]: -/// -/// ```rust,ignore -/// use simics::api::{Class, CreateClass}; -/// use simics_macro::class; -/// -/// #[class(derive, name = "test")] -/// struct Test {} -/// ``` -/// Derive [`Class`] and customize the generated class description and kind: -/// -/// ```rust,ignore -/// use simics::api::{Class, CreateClass}; -/// use simics_macro::class; -/// -/// #[module( -/// derive, -/// name = "test_module_4", -/// description = "Test module 4", -/// short_description = "TM4", -/// kind = ClassKind::Session -/// )] -/// struct Test {} -/// ``` -/// -pub fn class(args: TokenStream, input: TokenStream) -> TokenStream { - let attr_args = match NestedMeta::parse_meta_list(args.into()) { - Ok(a) => a, - Err(e) => return TokenStream::from(Error::from(e).write_errors()), - }; - - let mut input = parse_macro_input!(input as ItemStruct); - - let args = match ClassOpts::from_list(&attr_args) { - Ok(a) => a, - Err(e) => return TokenStream::from(e.write_errors()), - }; - - let name = &input.ident; - let (impl_generics, ty_generics, where_clause) = input.generics.split_for_impl(); - let fields = &input.fields; - - let raw_impl = raw_impl(name, fields, &impl_generics, &ty_generics, &where_clause); - - // This needs to be generated first before we add the `ConfObject` field - - if let Fields::Named(ref mut fields) = input.fields { - fields.named.insert( - 0, - Field::parse_named - .parse2(quote!(conf_object: simics::api::ConfObject)) - .expect("Couldn't parse field `conf_object`"), - ); - }; - - // Only derive Module if we get a `derive` argument - let maybe_derive_attribute = args - .derive - .is_present() - .then_some(quote!(#[derive(Class, AsConfObject)])); - - let ffi_impl = ffi_impl(name.to_string()); - let register_impl = create_impl( - name.to_string(), - &args, - &impl_generics, - &ty_generics, - &where_clause, - ); - let from_impl = from_impl(&input); - - quote! { - #maybe_derive_attribute - #[repr(C)] - #input - #ffi_impl - #register_impl - #raw_impl - #from_impl - } - .into() -} - -fn ffi_impl(name: S) -> TokenStream2 -where - S: AsRef, -{ - let name_string = name.as_ref().to_string().to_ascii_lowercase(); - let name = format_ident!("{}", name.as_ref()); - let alloc_fn_name = format_ident!("{}_alloc", &name_string); - let init_fn_name = format_ident!("{}_init", &name_string); - let finalize_fn_name = format_ident!("{}_finalize", &name_string); - let objects_finalized_fn_name = format_ident!("{}_objects_finalized", &name_string); - let deinit_fn_name = format_ident!("{}_deinit", &name_string); - let dealloc_fn_name = format_ident!("{}_dealloc", &name_string); - - quote! { - #[no_mangle] - pub extern "C" fn #alloc_fn_name(cls: *mut simics::api::ConfClass) -> *mut simics::api::ConfObject { - let cls: *mut simics::api::ConfClass = cls.into(); - let obj: *mut simics::api::ConfObject = #name::alloc::<#name>(cls) - .unwrap_or_else(|e| panic!("{}::alloc failed: {}", #name_string, e)) - .into(); - obj - } - - #[no_mangle] - pub extern "C" fn #init_fn_name(obj: *mut simics::api::ConfObject) -> *mut std::ffi::c_void { - let ptr: *mut simics::api::ConfObject = #name::init(obj.into()) - .unwrap_or_else(|e| panic!("{}::init failed: {}", #name_string, e)) - .into(); - ptr as *mut std::ffi::c_void - } - - #[no_mangle] - pub extern "C" fn #finalize_fn_name(obj: *mut simics::api::ConfObject) { - #name::finalize(obj.into()) - .unwrap_or_else(|e| panic!("{}::finalize failed: {}", #name_string, e)); - } - - #[no_mangle] - pub extern "C" fn #objects_finalized_fn_name(obj: *mut simics::api::ConfObject) { - #name::objects_finalized(obj.into()) - .unwrap_or_else(|e| panic!("{}::objects_finalized failed: {}", #name_string, e)); - } - - #[no_mangle] - pub extern "C" fn #deinit_fn_name(obj: *mut simics::api::ConfObject) { - #name::deinit(obj.into()) - .unwrap_or_else(|e| panic!("{}::deinit failed: {}", #name_string, e)); - } - - #[no_mangle] - pub extern "C" fn #dealloc_fn_name(obj: *mut simics::api::ConfObject) { - #name::dealloc(obj.into()) - .unwrap_or_else(|e| panic!("{}::dealloc failed: {}", #name_string, e)); - } - } -} - -fn create_impl( - name: S, - args: &ClassOpts, - impl_generics: &ImplGenerics, - ty_generics: &TypeGenerics, - where_clause: &Option<&WhereClause>, -) -> TokenStream2 -where - S: AsRef, -{ - let name_string = name.as_ref().to_string().to_ascii_lowercase(); - let name = format_ident!("{}", name.as_ref()); - - let alloc_fn_name = format_ident!("{}_alloc", &name_string); - let init_fn_name = format_ident!("{}_init", &name_string); - let finalize_fn_name = format_ident!("{}_finalize", &name_string); - let objects_finalized_fn_name = format_ident!("{}_objects_finalized", &name_string); - let deinit_fn_name = format_ident!("{}_deinit", &name_string); - let dealloc_fn_name = format_ident!("{}_dealloc", &name_string); - - // TODO: Can we clean up the re-quoting of these strings? - let class_name = &args.name; - - let description = args.description.as_ref().unwrap_or(&name_string); - - let short_description = args.short_description.as_ref().unwrap_or(&name_string); - - let kind = args - .kind - .as_ref() - .map(|k| quote!(#k)) - .unwrap_or(quote!(simics::api::ClassKind::Sim_Class_Kind_Vanilla)); - - quote! { - impl #impl_generics #name #ty_generics #where_clause { - const CLASS: simics::api::ClassInfo = simics::api::ClassInfo { - alloc: Some(#alloc_fn_name), - init: Some(#init_fn_name), - finalize: Some(#finalize_fn_name), - objects_finalized: Some(#objects_finalized_fn_name), - deinit: Some(#deinit_fn_name), - dealloc: Some(#dealloc_fn_name), - description: raw_cstr::c_str!(#description).as_ptr(), - short_desc: raw_cstr::c_str!(#short_description).as_ptr(), - kind: #kind, - }; - - } - - impl #impl_generics simics::api::CreateClass for #name #ty_generics #where_clause { - fn create() -> simics::Result<*mut simics::api::ConfClass> { - simics::api::create_class(#class_name, #name::CLASS) - } - } - } -} - -fn raw_impl( - name: &Ident, - fields: &Fields, - impl_generics: &ImplGenerics, - ty_generics: &TypeGenerics, - where_clause: &Option<&WhereClause>, -) -> TokenStream2 { - let mut field_parameters = Vec::new(); - - for field in fields { - let ty = &field.ty; - if let Some(ident) = &field.ident { - field_parameters.push(quote! { - #ident: #ty - }); - } - } - - let mut field_initializers = Vec::new(); - - for field in fields { - if let Some(ident) = &field.ident { - field_initializers.push(quote! { - unsafe { std::ptr::addr_of_mut!((*ptr).#ident).write(#ident) }; - }) - } - } - - quote! { - impl #impl_generics #name #ty_generics #where_clause { - #[allow(clippy::too_many_arguments)] - #[allow(clippy::not_unsafe_ptr_arg_deref)] - fn new( - obj: *mut simics::api::ConfObject, - value: #name #ty_generics - ) -> *mut simics::api::ConfObject { - let ptr: *mut #name #ty_generics = obj as *mut #name #ty_generics; - unsafe { std::ptr::addr_of_mut!(*ptr).write(value) }; - ptr as *mut simics::api::ConfObject - } - - } - } -} - -fn from_impl(input: &ItemStruct) -> TokenStream2 { - let name = &input.ident; - let (impl_generics, ty_generics, where_clause) = input.generics.split_for_impl(); - - quote! { - impl #impl_generics From<*mut simics::api::ConfObject> for &'static mut #name #ty_generics - #where_clause - { - fn from(value: *mut simics::api::ConfObject) -> Self { - let ptr: *mut #name #ty_generics = value as *mut #name #ty_generics ; - unsafe { &mut *ptr } - } - } - - impl #impl_generics From<*mut simics::api::ConfObject> for &'static #name #ty_generics - #where_clause - { - fn from(value: *mut simics::api::ConfObject) -> Self { - let ptr: *const #name #ty_generics = value as *const #name #ty_generics ; - unsafe { &*ptr } - } - } - } -} - -#[derive(Debug, FromMeta)] -struct SimicsExceptionOpts {} - -trait IsResultType { - fn is_result_type(&self) -> bool; -} - -impl IsResultType for ReturnType { - fn is_result_type(&self) -> bool { - match self { - ReturnType::Default => false, - ReturnType::Type(_, ty) => match &**ty { - Type::Path(p) => p - .path - .segments - .last() - .map(|l| l.ident == "Result") - .unwrap_or(false), - _ => false, - }, - } - } -} - -#[proc_macro_error] -#[proc_macro_attribute] -/// Marks a function as being a SIMICS API that can throw exceptions. A SIMICS exception -/// can be generated by most APIs. This macro makes the function private, wraps it, and -/// adds the requisite code to check for and report exceptions. `clear_exception` should -/// *not* be called inside the wrapped function. `last_error` may be called, however, as -/// any exceptions will be cleared after the wrapped function returns. -/// -/// # Examples -/// -/// ```rust,ignore -/// #[simics_exception] -/// pub fn write_byte(physical_memory: *mut ConfObject, physical_addr: u64, byte: u8) { -/// unsafe { SIM_write_byte(physical_memory, physical_addr, byte) }; -/// } -/// ``` -/// -/// Expands to: -/// -/// ```rust,ignore -/// fn _write_byte(physical_memory: *mut ConfObject, physical_addr: u64, byte: u8) { -/// unsafe { SIM_write_byte(physical_memory, physical_addr, byte) }; -/// } -/// -/// pub fn write_byte(physical_memory: *mut ConfObject, physical_addr: u64, byte: u8) -> Result<()> { -/// let res = _write_byte(physical_memory, physical_addr, byte); -/// -/// match simics::api::get_pending_exception() { -/// SimException::SimExc_No_Exception => Ok(()), -/// exception => { -/// clear_exception(); -/// Err(Error::from(exception)) -/// } -/// } -/// } -/// ``` -pub fn simics_exception(args: TokenStream, input: TokenStream) -> TokenStream { - let attr_args = match NestedMeta::parse_meta_list(args.into()) { - Ok(a) => a, - Err(e) => return TokenStream::from(Error::from(e).write_errors()), - }; - - let mut input = parse_macro_input!(input as ItemFn); - - let _args = match SimicsExceptionOpts::from_list(&attr_args) { - Ok(a) => a, - Err(e) => return TokenStream::from(e.write_errors()), - }; - - // Get the original ident and visibility before we change them - let vis = input.vis.clone(); - let mut sig = input.sig.clone(); - let attrs = &input.attrs; - let doc_attrs = attrs - .iter() - .filter(|a| { - if let Meta::NameValue(attr) = &a.meta { - if let Some(first) = attr.path.segments.first() { - first.ident == "doc" - } else { - false - } - } else { - false - } - }) - .collect::>(); - - let inner_ident = format_ident!("_{}", input.sig.ident); - input.sig.ident = inner_ident.clone(); - let input_name = input.sig.ident.to_string(); - input.vis = Visibility::Inherited; - - let ok_return = sig - .output - .is_result_type() - .then_some(quote!(result)) - .unwrap_or(quote!(Ok(result))); - - sig.output = match sig.output.is_result_type().then_some(&sig.output) { - Some(o) => o.clone(), - None => { - let output = match &sig.output { - ReturnType::Default => quote!(()), - ReturnType::Type(_, ty) => quote!(#ty), - }; - - match parse_str("e!(-> crate::error::Result<#output>).to_string()) { - Ok(o) => o, - Err(e) => return TokenStream::from(Error::from(e).write_errors()), - } - } - }; - - let maybe_ty_generics = (!&sig.generics.params.is_empty()).then_some({ - let params = &sig.generics.params; - quote!(::<#params>) - }); - - let args = sig - .inputs - .iter() - .map(|i| match i { - syn::FnArg::Receiver(_) => { - abort!(i, "Cannot apply attribute to function with a receiver") - } - syn::FnArg::Typed(t) => { - let pat = &t.pat; - quote!(#pat) - } - }) - .collect::>(); - - let wrapper = quote! { - #(#doc_attrs)* - #vis #sig { - let result = #inner_ident #maybe_ty_generics(#(#args),*); - match crate::api::get_pending_exception() { - crate::api::base::sim_exception::SimException::SimExc_No_Exception => #ok_return, - exception => { - crate::api::base::sim_exception::clear_exception(); - Err(crate::error::Error::SimicsException { - exception, - msg: crate::api::base::sim_exception::last_error() + "(" + #input_name + ")" - }) - } - } - } - - }; - - quote! { - #input - #wrapper - } - .into() -} - -trait SnakeToCamel { - fn snake_to_camel(&self) -> String; -} - -impl SnakeToCamel for String { - fn snake_to_camel(&self) -> String { - let mut s = String::new(); - let mut upper = false; - for c in self.chars() { - if upper || s.is_empty() { - s.push(c.to_ascii_uppercase()); - upper = false; - } else if c == '_' { - upper = true; - } else { - s.push(c.to_ascii_lowercase()); - } - } - s - } -} - -#[derive(Debug, FromMeta)] -struct InterfaceOpts {} - -#[proc_macro_error] -#[proc_macro_attribute] -/// Declare that a struct has an interface which can be registered for use with the SIMICS API. -/// -/// This macro generates an implementation of [`Interface`] and [`HasInterface`] for the -/// struct, as well as a new struct called #original_nameInterface, which wraps the -/// low-level pointer to CFFI compatible struct. The interface will be named the same as -/// the class, converted to ascii lowercase characters. For example a struct named -/// `Tsffs` will have a generated interface name `tsffs`. -/// -/// One implementation of the struct should be annotated with `#[interface_impl]` to -/// generate CFFI compatible functions that can be called through the SIMICS interface for that -/// implementation's methods. -pub fn interface(args: TokenStream, input: TokenStream) -> TokenStream { - let attr_args = match NestedMeta::parse_meta_list(args.into()) { - Ok(a) => a, - Err(e) => return TokenStream::from(Error::from(e).write_errors()), - }; - - let input = parse_macro_input!(input as ItemStruct); - - let _args = match InterfaceOpts::from_list(&attr_args) { - Ok(a) => a, - Err(e) => return TokenStream::from(e.write_errors()), - }; - - let vis = &input.vis; - let (impl_generics, ty_generics, where_clause) = &input.generics.split_for_impl(); - let ident = &input.ident; - let interface_ident = format_ident!("{}Interface", ident); - let interface_internal_ident = format_ident!("{}InterfaceInternal", ident); - let interface_name_literal: Lit = match parse_str(&format!( - r#"b"{}\0""#, - input.ident.to_string().to_ascii_lowercase() - )) { - Ok(l) => l, - Err(e) => return TokenStream::from(Error::from(e).write_errors()), - }; - - quote! { - #input - - #vis struct #interface_ident { - obj: *mut simics::api::ConfObject, - interface: *mut #interface_internal_ident, - } - - impl #impl_generics simics::api::traits::interface::HasInterface for #ident #ty_generics - #where_clause - { - type Interface = #interface_ident; - } - - impl simics::api::traits::interface::Interface for #interface_ident { - type InternalInterface = #interface_internal_ident; - type Name = &'static [u8]; - - const NAME: &'static [u8] = #interface_name_literal; - - fn new(obj: *mut simics::api::ConfObject, interface: *mut Self::InternalInterface) -> Self { - Self { obj, interface } - } - - fn register(cls: *mut simics::api::ConfClass) -> simics::Result<()> { - simics::api::base::conf_object::register_interface::(cls)?; - Ok(()) - } - - fn get(obj: *mut simics::api::ConfObject) -> simics::Result where Self: Sized { - simics::api::base::conf_object::get_interface::(obj) - } - } - } - .into() -} - -fn type_name(ty: &Type) -> Result { - if let Type::Path(ref p) = ty { - if let Some(segment) = p.path.segments.last() { - return Ok(segment.ident.clone()); - } - } - - Err(Error::custom("Incorrect type to get ident")) -} - -fn interface_function_type_to_ctype(ty: &Type) -> String { - match &ty { - Type::Paren(i) => interface_function_type_to_ctype(&i.elem), - Type::Tuple(t) => { - if t.elems.is_empty() { - "void".to_string() - } else { - panic!("Non-empty tuple is not a valid C type"); - } - } - Type::Path(p) => { - // First, check if the outer is an option. If it is, we just discard it and take the - // inner type. - if let Some(last) = p.path.segments.last() { - let ty_ident = &last.ident; - match &last.arguments { - syn::PathArguments::None => { - // No angle arguments, we can break down the type now - let tystr = ty_ident.to_string(); - match tystr.as_str() { - "ConfObject" => "conf_object_t", - "AttrValue" => "attr_value_t", - "BreakpointId" => "breakpoint_id_t", - "GenericAddress" => "generic_address_t", - "u8" => "uint8", - "u16" => "uint16", - "u32" => "uint32", - "u64" => "uint64", - "i8" => "int8", - "i16" => "int16", - "i32" => "int32", - "i64" => "int64", - // NOTE: This is not exactly right, but we don't expect anyone to - // run simics on a 32-bit host. - "f32" => "float", - "f64" => "double", - "usize" => "size_t", - "isize" => "ssize_t", - "c_char" => "char", - // Attempt to use the type as-is. This is unlikely to work, but allows - // creative people to be creative - other => other, - } - .to_string() - } - syn::PathArguments::AngleBracketed(a) => { - // Options and results can be extracted directly - if last.ident == "Option" || last.ident == "Result" { - if let Some(GenericArgument::Type(ty)) = a.args.first() { - interface_function_type_to_ctype(ty) - } else { - panic!("Unsupported generic arguments"); - } - } else { - panic!("Unsupported function type with arguments: {ty_ident}"); - } - } - _ => panic!("Unsupported interface function type argument"), - } - } else { - panic!("Unexpected empty path in interface function type"); - } - } - Type::Ptr(p) => { - let ptr_ty = interface_function_type_to_ctype(&p.elem); - let maybe_const = p - .const_token - .is_some() - .then_some("const ".to_string()) - .unwrap_or_default(); - format!("{maybe_const}{ptr_ty} *") - } - _ => panic!("Unsupported type for C interface generation: {ty:?}"), - } -} - -fn generate_interface_function_type(signature: &Signature) -> String { - let name = &signature.ident; - let ty = signature - .inputs - .iter() - .map(|i| match i { - FnArg::Receiver(_) => "conf_object_t * obj".to_string(), - FnArg::Typed(a) => { - let ty = interface_function_type_to_ctype(&a.ty); - let name = match &*a.pat { - Pat::Ident(ref p) => p.ident.to_string(), - _ => panic!("Expected ident pattern type"), - }; - format!("{} {}", ty, name) - } - }) - .collect::>(); - let ty_params = ty.join(", "); - - let output = match &signature.output { - ReturnType::Default => "void".to_string(), - ReturnType::Type(_, t) => interface_function_type_to_ctype(t), - }; - - format!("{output} (*{name})({ty_params});") -} - -fn generate_interface_header(input: &ItemImpl) -> String { - let input_name = type_name(&input.self_ty).expect("Invalid type name"); - let interface_name = input_name.to_string().to_ascii_lowercase(); - let interface_struct_name = format!("{interface_name}_interface"); - let interface_struct_name_define = interface_struct_name.to_ascii_uppercase(); - let include_guard = format!("{}_INTERFACE_H", interface_name.to_ascii_uppercase()); - let interface_functions = input - .items - .iter() - .filter_map(|i| { - if let ImplItem::Fn(ref f) = i { - Some(&f.sig) - } else { - None - } - }) - .map(generate_interface_function_type) - .collect::>(); - let interface_functions_code = interface_functions.join("\n "); - - formatdoc! {r#" - // Copyright (C) 2023 Intel Corporation - // SPDX-License-Identifier: Apache-2.0 - - #ifndef {include_guard} - #define {include_guard} - - #include - #include - - #ifdef __cplusplus - extern "C" {{ - #endif - - SIM_INTERFACE({interface_name}) {{ - {interface_functions_code} - }}; - - #define {interface_struct_name_define} "{interface_name}" - - #ifdef __cplusplus - }} - #endif - - #endif // {include_guard} - - "#} -} - -fn generate_interface_dml(input: &ItemImpl, header_name: S) -> String -where - S: AsRef, -{ - let header_name = header_name.as_ref(); - let input_name = type_name(&input.self_ty).expect("Invalid type name"); - let interface_name = input_name.to_string().to_ascii_lowercase(); - let interface_struct_name = format!("{interface_name}_interface"); - let interface_struct_name_define = interface_struct_name.to_ascii_uppercase(); - let interface_struct_ty_name = format!("{interface_struct_name}_t"); - let interface_functions = input - .items - .iter() - .filter_map(|i| { - if let ImplItem::Fn(ref f) = i { - Some(&f.sig) - } else { - None - } - }) - .map(generate_interface_function_type) - .collect::>(); - let interface_functions_code = interface_functions.join("\n "); - - formatdoc! {r#" - // Copyright (C) 2023 Intel Corporation - // SPDX-License-Identifier: Apache-2.0 - - dml 1.4; - - header %{{ - #include "{header_name}" - %}} - - extern typedef struct {{ - {interface_functions_code} - }} {interface_struct_ty_name}; - - extern const char *const {interface_struct_name_define}; - "#} -} - -fn generate_interface_makefile(header_name: S) -> String -where - S: AsRef, -{ - let header_name = header_name.as_ref(); - - formatdoc! {r#" - IFACE_FILES = {header_name} - THREAD_SAFE = yes - - ifeq ($(MODULE_MAKEFILE),) - $(error Make sure you compile your module from the project directory) - else - include $(MODULE_MAKEFILE) - endif - "#} -} - -#[derive(Debug, FromMeta)] -struct InterfaceImplOpts { - #[darling(rename = "modules_path")] - generate_path: Option, -} - -#[proc_macro_error] -#[proc_macro_attribute] -/// An implementation for an interface on a module. This attribute should be added to an -/// implementation of a struct annotated with `#[interface()]`. It generates an -/// FFI-compatible structure containing CFFI compatible function pointers to call -/// through to this struct's methods. -/// -/// # Arguments -/// -/// - `modules_path`: If set, generate a Makefile, .h, and .dml file for the interface. This -/// path should be to the project's `modules` directory. It can be relative to the crate -/// containing the code using this attribute. For example, if the `tsffs` crate is located in -/// $SIMICS_PROJECT/src/tsffs/, `modules_path = "../../modules/"` would be specified. This is -/// similar to the syntax used by `include!` and `include_str!`. -/// -/// # Notes on C/H generation -/// -/// In the normal build toolchain, an interface called `tsffs` is declared with: -/// -/// ```c -/// #ifndef TSFFS_INTERFACE_H -/// #define TSFFS_INTERFACE_H -/// #include -/// #include -/// -/// #ifdef __cplusplus -/// extern "C" { -/// #endif -/// -/// SIM_INTERFACE(tsffs) { -/// // Python-exportable interface methods... -/// #ifndef PYWRAP -/// // Non python-exportable methods -/// #endif -/// }; -/// #define TSFFS_INTERFACE "tsffs" -/// -/// #ifdef __cplusplus -/// } -/// #endif -/// #endif TSFFS_INTERFACE_H -/// ``` -/// Where `SIM_INTERFACE(tsffs)` expands to: -/// -/// ```c -/// typedef struct tsffs_interface tsffs_interface_t; struct tsffs_interface -/// ``` -/// -/// During code-generation, we do not include `pywrap.h`, and all methods must be exportable to -/// Python. We also do not use the `SIM_INTERFACE` macro. -pub fn interface_impl(args: TokenStream, input: TokenStream) -> TokenStream { - let attr_args = match NestedMeta::parse_meta_list(args.into()) { - Ok(a) => a, - Err(e) => return TokenStream::from(Error::from(e).write_errors()), - }; - - let input = parse_macro_input!(input as ItemImpl); - - let args = match InterfaceImplOpts::from_list(&attr_args) { - Ok(a) => a, - Err(e) => return TokenStream::from(e.write_errors()), - }; - - let input_name = match type_name(&input.self_ty) { - Ok(n) => n, - Err(e) => return TokenStream::from(e.write_errors()), - }; - let ffi_interface_mod_name = format!( - "{}_interface_ffi", - input_name.to_string().to_ascii_lowercase() - ); - let (impl_generics, ty_generics, where_clause) = input.generics.split_for_impl(); - let impl_fns = input - .items - .iter() - .filter_map(|i| { - if let ImplItem::Fn(ref f) = i { - Some(quote! { - #[ffi(arg(self), arg(rest))] - #f - }) - } else { - None - } - }) - .collect::>(); - - let internal_interface_name = format_ident!("{}InterfaceInternal", input_name); - let internal_interface_fields = input - .items - .iter() - .filter_map(|i| { - if let ImplItem::Fn(ref f) = i { - Some(&f.sig) - } else { - None - } - }) - .map(|s| { - let name = &s.ident; - let mut inputs = s - .inputs - .iter() - .skip(1) - .map(|i| quote!(#i)) - .collect::>(); - inputs.insert(0, quote!(obj: *mut simics::api::ConfObject)); - let output = match &s.output { - ReturnType::Default => quote!(()), - ReturnType::Type(_, t) => { - if s.output.is_result_type() { - let Type::Path(ref path) = &**t else { - panic!("Type is result but is not a path"); - }; - let Some(last) = path.path.segments.last() else { - panic!("Path has no last segment"); - }; - let PathArguments::AngleBracketed(args) = &last.arguments else { - panic!("Path does not have angle bracketed arguments"); - }; - let Some(first) = args.args.first() else { - panic!("Path does not have a first angle bracketed argument"); - }; - quote!(#first) - } else { - quote!(#t) - } - } - }; - quote!(pub #name: Option #output>) - }) - .collect::>(); - let internal_interface_default_args = input - .items - .iter() - .filter_map(|i| { - if let ImplItem::Fn(ref f) = i { - Some(&f.sig) - } else { - None - } - }) - .map(|s| { - let name = &s.ident; - let ffi_interface_mod_name = format_ident!("{ffi_interface_mod_name}"); - quote!(#name: Some(#ffi_interface_mod_name::#name)) - }) - .collect::>(); - - let crate_directory_path = PathBuf::from( - var("CARGO_MANIFEST_DIR").expect("No CARGO_MANIFEST_DIR set. This should be impossible."), - ); - - if let Some(generate_path) = args.generate_path { - let generate_path = if generate_path.starts_with('/') { - PathBuf::from(generate_path) - } else { - crate_directory_path.join(generate_path).join(format!( - "{}-interface", - input_name.to_string().to_ascii_lowercase() - )) - }; - - if !generate_path.is_dir() { - if let Err(e) = create_dir_all(&generate_path) { - return TokenStream::from( - Error::custom(format!( - "Failed to create generated interface directory: {e}" - )) - .write_errors(), - ); - } - } - - let header_name = format!( - "{}-interface.h", - input_name.to_string().to_ascii_lowercase() - ); - let dml_name = format!( - "{}-interface.dml", - input_name.to_string().to_ascii_lowercase() - ); - let makefile_name = "Makefile"; - - let header = generate_interface_header(&input); - let dml = generate_interface_dml(&input, &header_name); - let makefile = generate_interface_makefile(&header_name); - - write(generate_path.join(header_name), header).expect("Failed to write header file"); - write(generate_path.join(dml_name), dml).expect("Failed to write dml file"); - write(generate_path.join(makefile_name), makefile).expect("Failed to write makefile"); - } - - let q: TokenStream = quote! { - #[ffi(expect, mod_name = #ffi_interface_mod_name, self_ty = "*mut simics::api::ConfObject")] - impl #impl_generics #input_name #ty_generics #where_clause { - #(#impl_fns)* - } - - #[derive(Debug)] - #[repr(C)] - pub struct #internal_interface_name { - #(#internal_interface_fields),* - } - - impl Default for #internal_interface_name { - fn default() -> Self { - Self { - #(#internal_interface_default_args),* - } - } - } - } - .into(); - - // println!("{q}"); - - q -} - -#[derive(Debug, FromMeta)] -struct SimicsTestsOpts { - package_root: String, -} - -#[proc_macro_error] -#[proc_macro_attribute] -/// Generate separate test functions for all SIMICS test python scripts (scripts beginning with -/// 's-' inside a directory that contains a SUITEINFO file. -/// -/// The path `package_root` should be a relative path from the test crate root to the package -/// root directory. Tests whose filenames end in "-fail" will expect a failure, not a success. -pub fn simics_tests(args: TokenStream, _input: TokenStream) -> TokenStream { - let attr_args = match NestedMeta::parse_meta_list(args.into()) { - Ok(a) => a, - Err(e) => return TokenStream::from(Error::from(e).write_errors()), - }; - - let args = match SimicsTestsOpts::from_list(&attr_args) { - Ok(a) => a, - Err(e) => return TokenStream::from(e.write_errors()), - }; - - let crate_directory_path = PathBuf::from( - var("CARGO_MANIFEST_DIR").expect("No CARGO_MANIFEST_DIR set. This should be impossible."), - ); - - let test_runner_path = crate_directory_path - .join(args.package_root) - .join("bin/test-runner"); - - if !test_runner_path.is_file() { - panic!( - "Test runner path {} does not exist.", - test_runner_path.display() - ); - } - - let test_runner_path = test_runner_path.to_str().unwrap_or_else(|| { - panic!( - "Could not get string for test runner path {}", - test_runner_path.display() - ) - }); - - let integration_tests_directory = crate_directory_path; - - let tests = read_dir(integration_tests_directory) - .expect("Failed to read integration tests directory") - .filter_map(|e| e.ok()) - .filter_map(|e| { - let p = e.path(); - p.file_stem().and_then(move |f| { - f.to_str() - .map(|f| f.to_string()) - .filter(|f| f.starts_with("s-")) - }) - }) - .map(|test_name| { - let test_name_ident = format_ident!( - "test_simics_{}", - test_name - .to_ascii_lowercase() - .replace("s-", "") - .replace('-', "_") - ); - let try_or_invert_try = if test_name.ends_with("-fail") { - quote!(.err().ok_or_else(|| anyhow::anyhow!("Expected failure, got success"))?) - } else { - quote!(?) - }; - quote! { - #[test] - fn #test_name_ident() -> anyhow::Result<()> { - std::process::Command::new(#test_runner_path) - .arg("-v") - .arg("-n") - .arg(#test_name) - .check()#try_or_invert_try; - - Ok(()) - } - } - }) - .collect::>(); - - quote! { - use command_ext::CommandExtCheck; - - #(#tests)* - } - .into() -} - -#[derive(Debug, FromField)] -#[darling(attributes(try_into_attr_value_type))] -struct TryIntoAttrValueTypeField { - ident: Option, - #[allow(unused)] - ty: Type, - skip: Flag, -} - -#[derive(Debug, FromDeriveInput)] -#[darling(attributes(try_into_attr_value_type), supports(struct_named))] -struct TryIntoAttrValueTypeDictOpts { - ident: Ident, - generics: Generics, - data: Data<(), TryIntoAttrValueTypeField>, -} - -impl TryIntoAttrValueTypeDictOpts { - fn to_tokens_dict(&self, tokens: &mut TokenStream2) { - let ident = &self.ident; - let (impl_generics, ty_generics, where_clause) = self.generics.split_for_impl(); - let Some(fields) = self.data.as_ref().take_struct() else { - panic!("Fields must be struct fields"); - }; - let dict_fields = fields - .iter() - .filter(|f| !f.skip.is_present()) - .filter_map(|f| { - f.ident.clone().map(|i| { - let ident_name = i.to_string(); - let accessor = format_ident!("{}_ref", i); - quote!((#ident_name.try_into()?, value.#accessor().clone().try_into()?)) - }) - }) - .collect::>(); - - tokens.extend(quote! { - impl #impl_generics TryFrom<#ident #ty_generics> for simics::api::AttrValueType #where_clause { - type Error = simics::Error; - fn try_from(value: #ident #ty_generics) -> simics::Result { - Ok(Self::Dict( - std::collections::BTreeMap::from_iter([ - #(#dict_fields),* - ]) - )) - } - } - - impl #impl_generics TryFrom<&#ident #ty_generics> for simics::api::AttrValueType #where_clause { - type Error = simics::Error; - fn try_from(value: &#ident #ty_generics) -> simics::Result { - value.clone().try_into() - } - } - }); - } -} - -impl ToTokens for TryIntoAttrValueTypeDictOpts { - fn to_tokens(&self, tokens: &mut TokenStream2) { - self.to_tokens_dict(tokens) - } -} - -#[proc_macro_derive(TryIntoAttrValueTypeDict)] -/// Derive macro for the [`Class`] trait. -pub fn try_into_attr_value_type_dict(input: TokenStream) -> TokenStream { - let input = parse_macro_input!(input as DeriveInput); - let args = match TryIntoAttrValueTypeDictOpts::from_derive_input(&input) { - Ok(opts) => opts, - Err(e) => return e.write_errors().into(), - }; - quote! { - #args - } - .into() -} - -#[derive(Debug, FromDeriveInput)] -#[darling(attributes(try_into_attr_value_type), supports(struct_named))] -struct TryIntoAttrValueTypeListOpts { - ident: Ident, - generics: Generics, - data: Data<(), TryIntoAttrValueTypeField>, -} - -impl TryIntoAttrValueTypeListOpts { - fn to_tokens_list(&self, tokens: &mut TokenStream2) { - let ident = &self.ident; - let (impl_generics, ty_generics, where_clause) = self.generics.split_for_impl(); - let Some(fields) = self.data.as_ref().take_struct() else { - panic!("Fields must be struct fields"); - }; - let dict_fields = fields - .iter() - .filter(|f| !f.skip.is_present()) - .filter_map(|f| { - f.ident.clone().map(|i| { - let accessor = format_ident!("{}_ref", i); - quote!(value.#accessor().clone().try_into()?) - }) - }) - .collect::>(); - - tokens.extend(quote! { - impl #impl_generics TryFrom<#ident #ty_generics> for simics::api::AttrValueType #where_clause { - type Error = simics::Error; - fn try_from(value: #ident #ty_generics) -> simics::Result { - Ok(Self::List( - [ - #(#dict_fields),* - ] - .iter() - .collect::>() - )) - } - } - - impl #impl_generics TryFrom<&#ident #ty_generics> for simics::api::AttrValueType #where_clause { - type Error = simics::Error; - fn try_from(value: &#ident #ty_generics) -> simics::Result { - value.clone().try_into() - } - } - }); - } -} - -impl ToTokens for TryIntoAttrValueTypeListOpts { - fn to_tokens(&self, tokens: &mut TokenStream2) { - self.to_tokens_list(tokens) - } -} - -#[proc_macro_derive(TryIntoAttrValueTypeList)] -/// Derive macro for the [`Class`] trait. -pub fn try_into_attr_value_type_list(input: TokenStream) -> TokenStream { - let input = parse_macro_input!(input as DeriveInput); - let args = match TryIntoAttrValueTypeListOpts::from_derive_input(&input) { - Ok(opts) => opts, - Err(e) => return e.write_errors().into(), - }; - quote! { - #args - } - .into() -} - -#[derive(Debug, FromField)] -#[darling(attributes(try_from_attr_value_type))] -struct TryFromAttrValueTypeField { - ident: Option, - #[allow(unused)] - ty: Type, -} - -#[derive(Debug, FromDeriveInput)] -#[darling(attributes(try_from_attr_value_type), supports(struct_named))] -struct TryFromAttrValueTypeListOpts { - ident: Ident, - generics: Generics, - data: Data<(), TryFromAttrValueTypeField>, -} - -impl TryFromAttrValueTypeListOpts { - fn to_tokens_list(&self, tokens: &mut TokenStream2) { - let ident = &self.ident; - let (impl_generics, ty_generics, where_clause) = self.generics.split_for_impl(); - let Some(fields) = self.data.as_ref().take_struct() else { - panic!("Fields must be struct fields"); - }; - - let dict_fields = fields - .iter() - .enumerate() - .filter_map(|(index, f)| { - f.ident.clone().map(|ident| { - let ident_name = ident.to_string(); - quote! { - #ident: value.get(#index) - .ok_or_else(|| simics::Error::AttrValueDictMissingKey { key: #ident_name.to_string()})? - .clone() - .try_into()? - } - }) - }) - .collect::>(); - - tokens.extend(quote! { - impl #impl_generics TryFrom for #ident #ty_generics #where_clause { - type Error = simics::Error; - - fn try_from(value: simics::api::AttrValueType) -> simics::Result { - let simics::api::AttrValueType::List(value) = value else { - return Err(simics::Error::FromAttrValueTypeConversionError { - ty: std::any::type_name::<#ident #ty_generics>().to_string(), - }); - }; - - Ok(Self { - #(#dict_fields),* - }) - } - } - - impl #impl_generics TryFrom for #ident #ty_generics #where_clause { - type Error = simics::Error; - - fn try_from(value: simics::api::AttrValue) -> simics::Result { - // NOTE: We cannot use AttrValueType here, because we are most likely - // converting from a non-homogeneous list. - let value: Vec = value.as_heterogeneous_list()?.ok_or_else(|| simics::Error::AttrValueType { - actual: value.kind(), - expected: simics::api::AttrKind::Sim_Val_List, - })?; - - Ok(Self { - #(#dict_fields),* - }) - } - } - }); - } -} - -impl ToTokens for TryFromAttrValueTypeListOpts { - fn to_tokens(&self, tokens: &mut TokenStream2) { - self.to_tokens_list(tokens) - } -} - -#[proc_macro_derive(TryFromAttrValueTypeList)] -/// Derive macro that allows deserialization from an attrvalue -pub fn try_from_attr_value_type_list(input: TokenStream) -> TokenStream { - let input = parse_macro_input!(input as DeriveInput); - let args = match TryFromAttrValueTypeListOpts::from_derive_input(&input) { - Ok(opts) => opts, - Err(e) => return e.write_errors().into(), - }; - let q: TokenStream = quote! { - #args - } - .into(); - - // println!("{}", q); - - q -} - -#[derive(Debug, FromDeriveInput)] -#[darling(attributes(try_from_attr_value_type), supports(struct_named))] -struct TryFromAttrValueTypeDictOpts { - ident: Ident, - generics: Generics, - data: Data<(), TryFromAttrValueTypeField>, -} - -impl TryFromAttrValueTypeDictOpts { - fn to_tokens_dict(&self, tokens: &mut TokenStream2) { - let ident = &self.ident; - let (impl_generics, ty_generics, where_clause) = self.generics.split_for_impl(); - let Some(fields) = self.data.as_ref().take_struct() else { - panic!("Fields must be struct fields"); - }; - - let dict_fields = fields - .iter() - .filter_map(|f| { - f.ident.clone().map(|i| { - let ident_name = i.to_string(); - quote! { - #i: value.get(&#ident_name.into()) - .ok_or_else(|| simics::Error::AttrValueDictMissingKey { key: #ident_name.to_string()})? - .clone() - .try_into()? - - } - }) - }) - .collect::>(); - - tokens.extend(quote! { - impl #impl_generics TryFrom for #ident #ty_generics #where_clause { - type Error = simics::Error; - - fn try_from(value: simics::api::AttrValueType) -> simics::Result { - let simics::api::AttrValueType::Dict(value) = value else { - return Err(simics::Error::FromAttrValueTypeConversionError { - ty: std::any::type_name::<#ident #ty_generics>().to_string(), - }); - }; - Ok(Self { - #(#dict_fields),* - }) - } - } - - impl #impl_generics TryFrom for #ident #ty_generics #where_clause { - type Error = simics::Error; - - fn try_from(value: simics::api::AttrValue) -> simics::Result { - let value = value.as_heterogeneous_dict()?.ok_or_else(|| simics::Error::AttrValueType { - actual: value.kind(), - expected: simics::api::AttrKind::Sim_Val_Dict, - })?; - - Ok(Self { - #(#dict_fields),* - }) - } - } - }); - } -} - -impl ToTokens for TryFromAttrValueTypeDictOpts { - fn to_tokens(&self, tokens: &mut TokenStream2) { - self.to_tokens_dict(tokens) - } -} - -#[proc_macro_derive(TryFromAttrValueTypeDict)] -/// Derive macro that allows deserialization from an attrvalue -pub fn try_from_attr_value_type_dict(input: TokenStream) -> TokenStream { - let input = parse_macro_input!(input as DeriveInput); - let args = match TryFromAttrValueTypeDictOpts::from_derive_input(&input) { - Ok(opts) => opts, - Err(e) => return e.write_errors().into(), - }; - let q: TokenStream = quote! { - #args - } - .into(); - - // println!("{}", q); - - q -} diff --git a/modules/tsffs/src/simics/simics/Cargo.toml b/modules/tsffs/src/simics/simics/Cargo.toml deleted file mode 100644 index dd2bbad7..00000000 --- a/modules/tsffs/src/simics/simics/Cargo.toml +++ /dev/null @@ -1,46 +0,0 @@ -# Copyright (C) 2023 Intel Corporation -# SPDX-License-Identifier: Apache-2.0 - -[package] -name = "simics" -categories.workspace = true -description = "Tools for embedding SIMICS in Rust applications" -edition.workspace = true -homepage.workspace = true -keywords.workspace = true -license.workspace = true -publish.workspace = true -readme.workspace = true -repository.workspace = true -version.workspace = true - -[dependencies] -raw-cstr = { workspace = true } -simics-macro = { workspace = true, optional = true } -simics-api-sys = { workspace = true } -ispm-wrapper = { workspace = true } -clap = { version = "4.3.0", features = ["derive"] } -num = "0.4.0" -num-traits = "0.2.15" -paste = "1.0.12" -regex = "1.8.3" -tracing = "0.1.37" -walkdir = "2.3.3" -thiserror = "1.0.49" -anyhow.workspace = true -typed-builder = "0.18.0" -ordered-float = "4.1.1" - -[features] -default = ["derive", "link"] -derive = ["simics-macro"] -link = ["simics-api-sys/link"] - -[build-dependencies] -anyhow.workspace = true -prettyplease = "0.2.15" -simics-api-sys.workspace = true -simics-codegen.workspace = true -simics-macro.workspace = true -syn = "2.0.38" -version-tools.workspace = true diff --git a/modules/tsffs/src/simics/simics/build.rs b/modules/tsffs/src/simics/simics/build.rs deleted file mode 100644 index 02b3deca..00000000 --- a/modules/tsffs/src/simics/simics/build.rs +++ /dev/null @@ -1,79 +0,0 @@ -use anyhow::{anyhow, Result}; -use prettyplease::unparse; -use std::{env::var, fs::write, path::PathBuf, str::FromStr}; -use syn::parse_file; -use version_tools::{VersionConstraint, Versioning}; - -/// The name of the environment variable set by cargo containing the path to the out directory -/// for intermediate build results -const OUT_DIR_ENV: &str = "OUT_DIR"; - -use simics_api_sys::{SIMICS_API_BINDINGS, SIMICS_VERSION}; -use simics_codegen::{simics_hap_codegen, simics_interface_codegen}; - -const INTERFACES_FILE: &str = "interfaces.rs"; -const HAPS_FILE: &str = "haps.rs"; - -/// Configuration indicating that the experimental snapshots API is available -pub const CFG_SIMICS_EXPERIMENTAL_API_SNAPSHOTS: &str = "simics_experimental_api_snapshots"; -/// Configuration indicating that SIM_log_info is deprecated and should be replaced with VT_log_info -/// until an API update -pub const CFG_SIMICS_DEPRECATED_API_SIM_LOG: &str = "simics_deprecated_api_sim_log"; - -fn main() -> Result<()> { - let out_dir = PathBuf::from( - var(OUT_DIR_ENV) - .map_err(|e| anyhow!("No environment variable {OUT_DIR_ENV} found: {e}"))?, - ); - - // Write intermediate auto-generated high level bindings for interfaces and haps - - let interfaces_out_file = out_dir.join(INTERFACES_FILE); - let haps_out_file = out_dir.join(HAPS_FILE); - - let interfaces_tokens = simics_interface_codegen(SIMICS_API_BINDINGS); - let haps_tokens = simics_hap_codegen(SIMICS_API_BINDINGS); - - write( - interfaces_out_file, - unparse(&parse_file(&interfaces_tokens.to_string())?), - )?; - write( - haps_out_file, - unparse(&parse_file(&haps_tokens.to_string())?), - )?; - - // Set configurations to conditionally enable experimental features that aren't - // compatible with all supported SIMICS versions, based on the SIMICS version of the - // low level bindings. - - let simics_api_version = Versioning::new(SIMICS_VERSION) - .ok_or_else(|| anyhow!("Invalid version {}", SIMICS_VERSION))?; - - if VersionConstraint::from_str("<6.0.163")?.matches(&simics_api_version) { - // Bail out if we are targeting a version before 6.0.163. We don't test any earlier than - // this. - panic!("Target SIMICS API version is too old. The minimum version supported is 6.0.163."); - } - - if VersionConstraint::from_str(">=6.0.173")?.matches(&simics_api_version) { - // Enable the experimental snapshots api for versions over 6.0.173 (where the API first - // appears) - println!("cargo:rustc-cfg={CFG_SIMICS_EXPERIMENTAL_API_SNAPSHOTS}"); - } - - if VersionConstraint::from_str(">=6.0.177")?.matches(&simics_api_version) { - // Deprecate (temporarily) the SIM_log APIs for versions over 6.0.177 (where the API - // was first deprecated) - // NOTE: This will be un-deprecated at an unspecified time in the future - println!("cargo:rustc-cfg={CFG_SIMICS_DEPRECATED_API_SIM_LOG}"); - } - - if VersionConstraint::from_str(">=6.0.173")?.matches(&simics_api_version) { - // Enable the experimental snapshots api for versions over 6.0.173 (where the API first - // appears) - println!("cargo:rustc-cfg={CFG_SIMICS_EXPERIMENTAL_API_SNAPSHOTS}"); - } - - Ok(()) -} diff --git a/modules/tsffs/src/simics/simics/src/api/base/memory_transaction.rs b/modules/tsffs/src/simics/simics/src/api/base/memory_transaction.rs deleted file mode 100644 index d17d3a1f..00000000 --- a/modules/tsffs/src/simics/simics/src/api/base/memory_transaction.rs +++ /dev/null @@ -1,6 +0,0 @@ -// Copyright (C) 2023 Intel Corporation -// SPDX-License-Identifier: Apache-2.0 - -use crate::api::sys::generic_transaction_t; - -pub type GenericTransaction = generic_transaction_t; diff --git a/modules/tsffs/src/simics/simics/src/api/base/sobject.rs b/modules/tsffs/src/simics/simics/src/api/base/sobject.rs deleted file mode 100644 index d53d821b..00000000 --- a/modules/tsffs/src/simics/simics/src/api/base/sobject.rs +++ /dev/null @@ -1,7 +0,0 @@ -// Copyright (C) 2023 Intel Corporation -// SPDX-License-Identifier: Apache-2.0 - -use crate::api::sys::{sclass_t, sobject_t}; - -pub type SObject = sobject_t; -pub type SClass = sclass_t; diff --git a/modules/tsffs/src/simics/simics/src/api/internal/mod.rs b/modules/tsffs/src/simics/simics/src/api/internal/mod.rs deleted file mode 100644 index 6b7b1ef9..00000000 --- a/modules/tsffs/src/simics/simics/src/api/internal/mod.rs +++ /dev/null @@ -1,8 +0,0 @@ -// Copyright (C) 2023 Intel Corporation -// SPDX-License-Identifier: Apache-2.0 - -//! Internal SIMICS APIs that are not exported through the API but can be useful for various -//! purposes - -pub mod core; -pub use self::core::*; diff --git a/modules/tsffs/src/simics/simics/src/api/simulator/debugger.rs b/modules/tsffs/src/simics/simics/src/api/simulator/debugger.rs deleted file mode 100644 index 496761af..00000000 --- a/modules/tsffs/src/simics/simics/src/api/simulator/debugger.rs +++ /dev/null @@ -1,10 +0,0 @@ -// Copyright (C) 2023 Intel Corporation -// SPDX-License-Identifier: Apache-2.0 - -use crate::api::{sys::SIM_get_debugger, ConfObject}; -use simics_macro::simics_exception; - -#[simics_exception] -pub fn get_debugger() -> *mut ConfObject { - unsafe { SIM_get_debugger() } -} diff --git a/modules/tsffs/src/simics/simics/src/api/simulator/snapshots.rs b/modules/tsffs/src/simics/simics/src/api/simulator/snapshots.rs deleted file mode 100644 index 218e809e..00000000 --- a/modules/tsffs/src/simics/simics/src/api/simulator/snapshots.rs +++ /dev/null @@ -1,66 +0,0 @@ -// Copyright (C) 2023 Intel Corporation -// SPDX-License-Identifier: Apache-2.0 - -//! Experimental snapshot APIs - -use crate::{ - api::{ - sys::{ - VT_delete_snapshot, VT_list_snapshots, VT_restore_snapshot, VT_save_snapshot, - VT_snapshot_size_used, VT_snapshots_ignore_class, - }, - AttrValue, - }, - Result, -}; -use raw_cstr::raw_cstr; -use simics_macro::simics_exception; - -#[simics_exception] -/// Save a snapshot with a name -pub fn save_snapshot(name: S) -> Result -where - S: AsRef, -{ - Ok(unsafe { VT_save_snapshot(raw_cstr(name)?) }) -} - -#[simics_exception] -/// Restore a snapshot with a name -pub fn restore_snapshot(name: S) -> Result -where - S: AsRef, -{ - Ok(unsafe { VT_restore_snapshot(raw_cstr(name)?) }) -} - -#[simics_exception] -/// Delete a snapshot with a name -pub fn delete_snapshot(name: S) -> Result -where - S: AsRef, -{ - Ok(unsafe { VT_delete_snapshot(raw_cstr(name)?) }) -} - -#[simics_exception] -/// Get the total size used by all snapshots -pub fn snapshot_size_used() -> AttrValue { - unsafe { VT_snapshot_size_used() }.into() -} - -#[simics_exception] -/// Get the list of all snapshots -pub fn list_snapshots() -> AttrValue { - unsafe { VT_list_snapshots() }.into() -} - -#[simics_exception] -/// Set snapshots to ignore a given class by name -pub fn snapshots_ignore_class(class_name: S) -> Result<()> -where - S: AsRef, -{ - unsafe { VT_snapshots_ignore_class(raw_cstr(class_name)?) }; - Ok(()) -} diff --git a/modules/tsffs/src/simics/simics/src/api/traits/class.rs b/modules/tsffs/src/simics/simics/src/api/traits/class.rs deleted file mode 100644 index 5b3c62d5..00000000 --- a/modules/tsffs/src/simics/simics/src/api/traits/class.rs +++ /dev/null @@ -1,70 +0,0 @@ -// Copyright (C) 2023 Intel Corporation -// SPDX-License-Identifier: Apache-2.0 - -use crate::api::{ConfClass, ConfObject}; -use crate::error::Result; - -/// Trait for simics module objects to implement to create a threadsafe module implementation -pub trait Class { - /// Allocates an instance of the object using mm_zalloc and returns a pointer to the - /// allocated object, whose first entry is the `ConfObject` instance associated with it - fn alloc(_cls: *mut ConfClass) -> Result<*mut ConfObject> { - let size = std::mem::size_of::(); - Ok(Into::into(crate::simics_alloc!(crate::ConfClass, size)?)) - } - - /// Perform class specific instantiation, set default values for attributes. May allocate - /// additional memory if co-allocation is not used. Attribute setters are called *after* this - /// function returns. The default implementation returns the object without modification. - /// Returning NULL from this function indicates an error - fn init(instance: *mut ConfObject) -> Result<*mut ConfObject> { - Ok(instance) - } - - /// Object can do final initialization that requires attribute values, but should avoid calling - /// interface methods on *other* objects. The default implementation of this method does - /// nothing - fn finalize(_instance: *mut ConfObject) -> Result<()> { - Ok(()) - } - - /// Called after object is fully constructed and can participate in simulation and reverse - /// execution. May call interface methods on other objects here as part of initialization. - /// The default implementation of this method does nothing - fn objects_finalized(_instance: *mut ConfObject) -> Result<()> { - Ok(()) - } - - /// Called first on all objects being deleted, should do the opposite of `init` and - /// deinitialize any additionally-allocated memory, destroy file descriptors, etc. - /// The default implementation of this method does nothing - fn deinit(_instance: *mut ConfObject) -> Result<()> { - Ok(()) - } - - /// Called after all objects are deinitialized, this should free the allocated object using - /// mm_free - fn dealloc(instance: *mut ConfObject) -> Result<()> { - crate::api::free(instance); - Ok(()) - } -} - -pub trait CreateClass { - /// Create a class and register it in SIMICS. This does not instantiate the class by creating - /// any objects, it only creates the (python) class that is used as a blueprint to instantiate - /// the class - fn create() -> Result<*mut ConfClass>; -} - -pub trait AsConfObject { - /// Get a reference to this object as a `ConfObject` raw pointer - fn as_conf_object(&self) -> *const ConfObject { - self as *const _ as *const ConfObject - } - - /// Get a mutable reference to this object as a mutable raw `ConfObject` pointer - fn as_conf_object_mut(&mut self) -> *mut ConfObject { - self as *mut _ as *mut ConfObject - } -} diff --git a/modules/tsffs/src/simics/simics/src/api/traits/interface.rs b/modules/tsffs/src/simics/simics/src/api/traits/interface.rs deleted file mode 100644 index 714c05fc..00000000 --- a/modules/tsffs/src/simics/simics/src/api/traits/interface.rs +++ /dev/null @@ -1,26 +0,0 @@ -use crate::{ - api::{ConfClass, ConfObject}, - Result, -}; -use raw_cstr::AsRawCstr; - -/// A SIMICS interface containing a number of methods that can be called on an -/// object -pub trait Interface { - type InternalInterface: Default; - type Name: AsRawCstr; - const NAME: Self::Name; - /// Create a new instance of this interface - fn new(obj: *mut ConfObject, interface: *mut Self::InternalInterface) -> Self; - /// Register this interface for a type - fn register(cls: *mut ConfClass) -> Result<()>; - /// Get this interface for an object that implements it - fn get(obj: *mut ConfObject) -> Result - where - Self: Sized; -} - -/// An object which has a SIMICS interface -pub trait HasInterface { - type Interface: Interface; -} diff --git a/modules/tsffs/src/simics/simics/src/api/traits/mod.rs b/modules/tsffs/src/simics/simics/src/api/traits/mod.rs deleted file mode 100644 index 0d435b7f..00000000 --- a/modules/tsffs/src/simics/simics/src/api/traits/mod.rs +++ /dev/null @@ -1,16 +0,0 @@ -// Copyright (C) 2023 Intel Corporation -// SPDX-License-Identifier: Apache-2.0 - -//! Traits to help implement common SIMICS structures to build SIMICS modules: -//! -//! - SIMICS classes -//! - HAPs -//! - Class and object interfaces - -pub mod class; -pub mod hap; -pub mod interface; - -pub use class::*; -pub use hap::*; -pub use interface::*; diff --git a/modules/tsffs/src/simics/simics/src/error/mod.rs b/modules/tsffs/src/simics/simics/src/error/mod.rs deleted file mode 100644 index 49538687..00000000 --- a/modules/tsffs/src/simics/simics/src/error/mod.rs +++ /dev/null @@ -1,100 +0,0 @@ -// Copyright (C) 2023 Intel Corporation -// SPDX-License-Identifier: Apache-2.0 - -//! SIMICS Result and error types - -#![allow(unused)] - -use crate::api::AttrValue; - -pub type Result = std::result::Result; - -#[derive(thiserror::Error, Debug)] -/// SIMICS errors, including internal and APIs used -pub enum Error { - #[error("AttrValue is {actual:?}, expected {expected:?}")] - AttrValueType { - actual: crate::api::base::attr_value::AttrKind, - expected: crate::api::base::attr_value::AttrKind, - }, - #[error("AttrValue type is unknown")] - AttrValueTypeUnknown, - #[error("Index {index} out of bounds of list length {length}")] - AttrValueListIndexOutOfBounds { index: usize, length: usize }, - #[error("Index {index} out of bounds of dictionary size {size}")] - AttrValueDictIndexOutOfBounds { index: usize, size: usize }, - #[error("Null data requires zero size")] - InvalidNullDataSize, - #[error("Error converting to from {ty} to AttrValue")] - ToAttrValueConversionError { ty: String }, - #[error("Error converting from {value:?} to {ty}")] - FromAttrValueConversionError { value: AttrValue, ty: String }, - #[error("Error converting to from {ty} to AttrValueType")] - ToAttrValueTypeConversionError { ty: String }, - #[error("Error converting to from AttrValueType to {ty}")] - FromAttrValueTypeConversionError { ty: String }, - #[error("Error converting to from {ty} to AttrValue")] - NestedToAttrValueConversionError { ty: String, source: Box }, - #[error("Error converting from AttrValue {value:?} to {ty}")] - NestedFromAttrValueConversionError { - value: AttrValue, - ty: String, - source: Box, - }, - #[error("Error converting to from {ty} to AttrValueType")] - NestedToAttrValueTypeConversionError { ty: String, source: Box }, - #[error("Error converting to from AttrValueType to {ty}")] - NestedFromAttrValueTypeConversionError { ty: String, source: Box }, - #[error("Key {key} not found")] - AttrValueDictMissingKey { key: String }, - #[error("AttrValue list is non-homogeneous")] - NonHomogeneousList, - #[error("AttrValue dictionary is non-homogeneous")] - NonHomogeneousDict, - #[error("Could not convert to string")] - ToString, - #[error("File {file} was not found in lookup")] - FileLookup { file: String }, - #[error("Failed to create class {name}: {message}")] - CreateClass { name: String, message: String }, - #[error("Failed to register {name}: {message}")] - RegisterInterface { name: String, message: String }, - #[error("Could not find class with name {name}")] - ClassNotFound { name: String }, - #[error("Could not find object with name {name}")] - ObjectNotFound { name: String }, - #[error("Could not create object: {message}")] - CreateObject { message: String }, - #[error("No current checkpoint directory: {message}")] - CurrentCheckpointDir { message: String }, - #[error("No matching event found")] - NoEventFound, - #[error("No method {method} found on interface")] - NoInterfaceMethod { method: String }, - #[error("{exception:?}: {msg}")] - /// An internal error that comes from the sys API. - SimicsException { - exception: crate::api::base::sim_exception::SimException, - msg: String, - }, - #[error("This registration type is not supported for this hap")] - HapRegistrationType, - #[error("This deletion type is not supported for this hap")] - HapDeleteType, - #[error("Value size {actual} is too large (expected <= {expected})")] - ValueTooLarge { expected: usize, actual: usize }, - - // Transparently wrapped errors from std - #[error(transparent)] - TryFromIntError(#[from] std::num::TryFromIntError), - #[error(transparent)] - Utf8Error(#[from] std::str::Utf8Error), - #[error(transparent)] - NulError(#[from] std::ffi::NulError), - // Anyhow error type to allow wrapping any other errors (e.g. from other crates in the - // workspace) - #[error(transparent)] - Other(#[from] anyhow::Error), - #[error(transparent)] - Infallible(#[from] std::convert::Infallible), -} diff --git a/modules/tsffs/src/simics/simics/src/lib.rs b/modules/tsffs/src/simics/simics/src/lib.rs deleted file mode 100644 index ce3adaa9..00000000 --- a/modules/tsffs/src/simics/simics/src/lib.rs +++ /dev/null @@ -1,32 +0,0 @@ -// Copyright (C) 2023 Intel Corporation -// SPDX-License-Identifier: Apache-2.0 - -//! SIMICS -//! -//! The SIMICS crate provides: -//! -//! * High level API bindings to the SIMICS API -//! * Re-exports the low level API bindings to the SIMICS API -//! * Utility and logging functionality relevant to the SIMICS API -//! * A global allocator using the SIMICS allocation functionality for consistent memory -//! management when running code embedded in the SIMICS simulator - -#![deny(clippy::unwrap_used)] - -pub use api::alloc::SimicsAlloc; -pub use error::{Error, Result}; - -extern crate num_traits; - -pub mod api; -pub mod error; -pub mod ispm; -pub mod log; - -#[forbid(unsafe_code)] -pub mod util; - -#[global_allocator] -/// All crates using the SIMICS API must also use the SIMICS allocator as their -/// global allocator, hence we set it here -static GLOBAL: SimicsAlloc = SimicsAlloc; diff --git a/modules/tsffs/src/tsffs/Cargo.toml b/modules/tsffs/src/tsffs/Cargo.toml deleted file mode 100644 index f4c39501..00000000 --- a/modules/tsffs/src/tsffs/Cargo.toml +++ /dev/null @@ -1,41 +0,0 @@ -# Copyright (C) 2023 Intel Corporation -# SPDX-License-Identifier: Apache-2.0 - -[package] -name = "tsffs" -categories.workspace = true -description = "Loadable SIMICS module for TSFFS fuzzer" -edition.workspace = true -homepage.workspace = true -keywords.workspace = true -license.workspace = true -publish.workspace = true -readme.workspace = true -repository.workspace = true -version.workspace = true - -[lib] -crate-type = ["staticlib", "lib"] - -[dependencies] -anyhow = { workspace = true } -ffi-macro = { workspace = true } -libafl = { workspace = true } -libafl_bolts = { workspace = true } -libafl_targets = { workspace = true } -raw-cstr = { workspace = true } -serde = { workspace = true, features = ["derive"] } -simics = { workspace = true, features = ["link"] } -simics-macro = { workspace = true } -yaxpeax-arch = "0.2.7" -yaxpeax-x86 = "1.2.0" -typed-builder = "0.18.0" -getters2 = "0.1.2" -serde_json.workspace = true -goblin = "0.8.0" -yaxpeax-riscv = { git = "https://github.com/novafacing/yaxpeax-riscv", version = "0.1.0", features = [ - "serde", -], rev = "696eb047208e4d3c903654aa557a42071c466e71" } -crc32fast = "1.3.2" - -[dev-dependencies] diff --git a/modules/tsffs/src/tsffs/src/arch/arc.rs b/modules/tsffs/src/tsffs/src/arch/arc.rs deleted file mode 100644 index 9945dca6..00000000 --- a/modules/tsffs/src/tsffs/src/arch/arc.rs +++ /dev/null @@ -1,11 +0,0 @@ -// Copyright (C) 2023 Intel Corporation -// SPDX-License-Identifier: Apache-2.0 - -/// The default register the fuzzer expects to contain a pointer to an area to write -/// each testcase into when using an in-target harness -pub const DEFAULT_TESTCASE_AREA_REGISTER_NAME: &str = "r0"; -/// The default register the fuzzer expects to contain a pointer to a variable, -/// initially containing the maximum size of the area pointed to by -/// `DEFAULT_TESTCASE_AREA_REGISTER_NAME`, which will be written each fuzzer execution -/// to contain the actual size of the current testcase. -pub const DEFAULT_TESTCASE_SIZE_REGISTER_NAME: &str = "r1"; diff --git a/modules/tsffs/src/tsffs/src/arch/arm.rs b/modules/tsffs/src/tsffs/src/arch/arm.rs deleted file mode 100644 index 9945dca6..00000000 --- a/modules/tsffs/src/tsffs/src/arch/arm.rs +++ /dev/null @@ -1,11 +0,0 @@ -// Copyright (C) 2023 Intel Corporation -// SPDX-License-Identifier: Apache-2.0 - -/// The default register the fuzzer expects to contain a pointer to an area to write -/// each testcase into when using an in-target harness -pub const DEFAULT_TESTCASE_AREA_REGISTER_NAME: &str = "r0"; -/// The default register the fuzzer expects to contain a pointer to a variable, -/// initially containing the maximum size of the area pointed to by -/// `DEFAULT_TESTCASE_AREA_REGISTER_NAME`, which will be written each fuzzer execution -/// to contain the actual size of the current testcase. -pub const DEFAULT_TESTCASE_SIZE_REGISTER_NAME: &str = "r1"; diff --git a/modules/tsffs/src/tsffs/src/arch/arm_thumb2.rs b/modules/tsffs/src/tsffs/src/arch/arm_thumb2.rs deleted file mode 100644 index 9945dca6..00000000 --- a/modules/tsffs/src/tsffs/src/arch/arm_thumb2.rs +++ /dev/null @@ -1,11 +0,0 @@ -// Copyright (C) 2023 Intel Corporation -// SPDX-License-Identifier: Apache-2.0 - -/// The default register the fuzzer expects to contain a pointer to an area to write -/// each testcase into when using an in-target harness -pub const DEFAULT_TESTCASE_AREA_REGISTER_NAME: &str = "r0"; -/// The default register the fuzzer expects to contain a pointer to a variable, -/// initially containing the maximum size of the area pointed to by -/// `DEFAULT_TESTCASE_AREA_REGISTER_NAME`, which will be written each fuzzer execution -/// to contain the actual size of the current testcase. -pub const DEFAULT_TESTCASE_SIZE_REGISTER_NAME: &str = "r1"; diff --git a/modules/tsffs/src/tsffs/src/arch/armv8.rs b/modules/tsffs/src/tsffs/src/arch/armv8.rs deleted file mode 100644 index dea8a583..00000000 --- a/modules/tsffs/src/tsffs/src/arch/armv8.rs +++ /dev/null @@ -1,11 +0,0 @@ -// Copyright (C) 2023 Intel Corporation -// SPDX-License-Identifier: Apache-2.0 - -/// The default register the fuzzer expects to contain a pointer to an area to write -/// each testcase into when using an in-target harness -pub const DEFAULT_TESTCASE_AREA_REGISTER_NAME: &str = "x0"; -/// The default register the fuzzer expects to contain a pointer to a variable, -/// initially containing the maximum size of the area pointed to by -/// `DEFAULT_TESTCASE_AREA_REGISTER_NAME`, which will be written each fuzzer execution -/// to contain the actual size of the current testcase. -pub const DEFAULT_TESTCASE_SIZE_REGISTER_NAME: &str = "x1"; diff --git a/modules/tsffs/src/tsffs/src/configuration/mod.rs b/modules/tsffs/src/tsffs/src/configuration/mod.rs deleted file mode 100644 index 0b7da5f5..00000000 --- a/modules/tsffs/src/tsffs/src/configuration/mod.rs +++ /dev/null @@ -1,100 +0,0 @@ -use std::{ - collections::{BTreeSet, HashMap}, - path::PathBuf, -}; - -use getters2::Getters; -use simics::api::{lookup_file, BreakpointId}; -use simics_macro::TryIntoAttrValueTypeDict; -use typed_builder::TypedBuilder; - -use crate::arch::ArchitectureHint; - -impl Configuration { - /// The timeout runs in virtual time, so a typical 5 second timeout is acceptable - pub const DEFAULT_TIMEOUT_SECONDS: f64 = 5.0; - /// The default start magic mnumber the fuzzer expects to be triggered, either - /// via an in-target macro or another means. - pub const DEFAULT_MAGIC_START: i64 = 1; - /// The default stop magic mnumber the fuzzer expects to be triggered, either - /// via an in-target macro or another means. - pub const DEFAULT_MAGIC_STOP: i64 = 2; - /// The default assert magic mnumber the fuzzer expects to be triggered, either - /// via an in-target macro or another means. - pub const DEFAULT_MAGIC_ASSERT: i64 = 3; - pub const DEFAULT_CORPUS_DIRECTORY_NAME: &'static str = "corpus"; - pub const DEFAULT_SOLUTIONS_DIRECTORY_NAME: &'static str = "solutions"; - pub const DEFAULT_EXECUTOR_TIMEOUT: u64 = 60; - pub const DEFAULT_INITIAL_RANDOM_CORPUS_SIZE: usize = 8; - #[cfg(simics_experimental_api_snapshots)] - pub const DEFAULT_USE_SNAPSHOTS: bool = true; - #[cfg(not(simics_experimental_api_snapshots))] - pub const DEFAULT_USE_SNAPSHOTS: bool = false; -} - -#[derive(TypedBuilder, Getters, Debug, Clone, TryIntoAttrValueTypeDict)] -#[getters(deref, mutable)] -pub struct Configuration { - #[builder(default = false)] - /// Whether any breakpoint that occurs during fuzzing is treated as a fault - all_breakpoints_are_solutions: bool, - #[builder(default = false)] - /// Whether any CPU exception that occurs during fuzzing is treated as a solution - all_exceptions_are_solutions: bool, - #[builder(default)] - #[getters(skip_deref, clone)] - /// The set of specific exception numbers that are treated as a solution - exceptions: BTreeSet, - #[builder(default)] - #[getters(skip_deref, clone)] - /// The set of breakpoints to treat as solutions - breakpoints: BTreeSet, - #[builder(default = Configuration::DEFAULT_TIMEOUT_SECONDS)] - /// The amount of time in seconds before a testcase execution is considered "timed - /// out" and will be treated as a solution - timeout: f64, - #[builder(default = false)] - start_on_harness: bool, - #[builder(default = false)] - stop_on_harness: bool, - #[builder(default = Configuration::DEFAULT_USE_SNAPSHOTS)] - use_snapshots: bool, - #[builder(default = Configuration::DEFAULT_MAGIC_START)] - magic_start: i64, - #[builder(default = Configuration::DEFAULT_MAGIC_STOP)] - magic_stop: i64, - #[builder(default = Configuration::DEFAULT_MAGIC_ASSERT)] - magic_assert: i64, - #[builder(default, setter(strip_option))] - iterations: Option, - #[builder(default)] - #[getters(skip_deref, clone)] - tokens: Vec>, - #[builder(default = lookup_file("%simics%").expect("No simics project root found").join(Configuration::DEFAULT_CORPUS_DIRECTORY_NAME))] - #[getters(skip_deref, clone)] - corpus_directory: PathBuf, - #[builder(default = lookup_file("%simics%").expect("No simics project root found").join(Configuration::DEFAULT_SOLUTIONS_DIRECTORY_NAME))] - #[getters(skip_deref, clone)] - solutions_directory: PathBuf, - #[builder(default = false)] - generate_random_corpus: bool, - #[builder(default)] - #[getters(skip_deref, clone)] - token_files: Vec, - #[builder(default = Configuration::DEFAULT_EXECUTOR_TIMEOUT)] - /// The executor timeout in seconds - executor_timeout: u64, - #[builder(default = Configuration::DEFAULT_INITIAL_RANDOM_CORPUS_SIZE)] - initial_random_corpus_size: usize, - #[builder(default = true)] - cmplog: bool, - #[builder(default)] - #[getters(skip_deref, clone)] - architecture_hints: HashMap, -} - -impl Default for Configuration { - fn default() -> Self { - Self::builder().build() - } -} diff --git a/modules/tsffs/src/tsffs/src/fuzzer/mod.rs b/modules/tsffs/src/tsffs/src/fuzzer/mod.rs deleted file mode 100644 index f16dd727..00000000 --- a/modules/tsffs/src/tsffs/src/fuzzer/mod.rs +++ /dev/null @@ -1,389 +0,0 @@ -// Copyright (C) 2023 Intel Corporation -// SPDX-License-Identifier: Apache-2.0 - -use crate::Tsffs; -use anyhow::{anyhow, Result}; -use getters2::Getters; -use libafl::{ - feedback_or, feedback_or_fast, - prelude::{ - havoc_mutations, ondisk::OnDiskMetadataFormat, tokens_mutations, AFLppRedQueen, BytesInput, - CachedOnDiskCorpus, Corpus, CorpusId, CrashFeedback, ExitKind, HasTargetBytes, - HitcountsMapObserver, I2SRandReplace, InProcessExecutor, MaxMapFeedback, OnDiskCorpus, - RandBytesGenerator, SimpleEventManager, SimpleMonitor, StdCmpValuesObserver, - StdMOptMutator, StdMapObserver, StdScheduledMutator, TimeFeedback, TimeObserver, Tokens, - }, - schedulers::{ - powersched::PowerSchedule, IndexesLenTimeMinimizerScheduler, StdWeightedScheduler, - }, - stages::{ - mutational::MultiMutationalStage, CalibrationStage, ColorizationStage, DumpToDiskStage, - GeneralizationStage, IfStage, StdMutationalStage, StdPowerMutationalStage, - SyncFromDiskStage, TracingStage, - }, - state::{HasCorpus, HasMetadata, StdState}, - Fuzzer, StdFuzzer, -}; -use libafl_bolts::{ - current_nanos, - prelude::OwnedMutSlice, - rands::StdRand, - tuples::{tuple_list, Merge}, - AsMutSlice, AsSlice, -}; -use libafl_targets::{AFLppCmpLogObserver, AFLppCmplogTracingStage}; -use simics::{api::AsConfObject, debug, warn}; -use std::{ - cell::RefCell, fmt::Debug, slice::from_raw_parts_mut, sync::mpsc::channel, thread::spawn, -}; - -pub mod tokenize; - -#[derive(Getters, Clone, PartialEq, Eq)] -pub struct Testcase { - #[getters(clone)] - testcase: Vec, - #[getters(deref)] - cmplog: bool, -} - -impl Debug for Testcase { - fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_struct("Testcase") - .field( - "testcase", - &format!( - "{:?}{} ({} bytes)", - &self.testcase[..(if self.testcase.len() < 32 { - self.testcase.len() - } else { - 32 - })], - if self.testcase.len() >= 32 { "..." } else { "" }, - self.testcase.len() - ), - ) - .field("cmplog", &self.cmplog) - .finish() - } -} - -#[derive(Debug, Clone, Default, PartialEq, Eq)] -pub struct ShutdownMessage {} - -impl Tsffs { - const EDGES_OBSERVER_NAME: &'static str = "coverage"; - const AFLPP_CMP_OBSERVER_NAME: &'static str = "aflpp_cmplog"; - const CMPLOG_OBSERVER_NAME: &'static str = "cmplog"; - const TIME_OBSERVER_NAME: &'static str = "time"; - const TIMEOUT_FEEDBACK_NAME: &'static str = "time"; - const CORPUS_CACHE_SIZE: usize = 4096; - - /// Start the fuzzing thread. - pub fn start_fuzzer_thread(&mut self) -> Result<()> { - if self.fuzz_thread_ref().is_some() { - warn!(self.as_conf_object(), "Fuzz thread already started but start_fuzzer_thread called. Returning without error."); - // We can only start the thread once - return Ok(()); - } - - debug!(self.as_conf_object_mut(), "Starting fuzzer thread"); - - let (tx, orx) = channel::(); - let (otx, rx) = channel::(); - let (stx, srx) = channel::(); - let (mtx, mrx) = channel::(); - - self.fuzzer_tx = Some(tx); - self.fuzzer_rx = Some(rx); - self.fuzzer_shutdown = Some(stx); - self.fuzzer_messages = Some(mrx); - - let client = RefCell::new((otx, orx)); - let configuration = self.configuration_clone(); - let coverage_map = unsafe { - from_raw_parts_mut( - self.coverage_map_mut().as_mut_slice().as_mut_ptr(), - Self::COVERAGE_MAP_SIZE, - ) - }; - let aflpp_cmp_map = Box::leak(unsafe { Box::from_raw(*self.aflpp_cmp_map_ptr_ref()) }); - let aflpp_cmp_map_dup = Box::leak(unsafe { Box::from_raw(*self.aflpp_cmp_map_ptr_ref()) }); - let cmplog_enabled = *self.configuration_ref().cmplog_ref(); - - // NOTE: We do *not* use `run_in_thread` because it causes the fuzzer to block when HAPs arrive - // which prevents forward progress. - *self.fuzz_thread_mut() = Some(spawn(move || -> Result<()> { - let mut harness = |input: &BytesInput| { - let testcase = input.target_bytes().as_slice().to_vec(); - // println!("Sending testcase {:?}", testcase); - client - .borrow_mut() - .0 - .send(Testcase { - testcase, - cmplog: false, - }) - .expect("Failed to send testcase message"); - // println!("Sent testcase, waiting for status"); - let status = match client.borrow_mut().1.recv() { - Err(e) => panic!("Error receiving status: {e}"), - Ok(m) => m, - }; - // println!("Got status: {:?}", status); - - status - }; - - let mut aflpp_cmp_harness = |input: &BytesInput| { - let testcase = input.target_bytes().as_slice().to_vec(); - // println!("Sending testcase {:?}", testcase); - client - .borrow_mut() - .0 - .send(Testcase { - testcase, - cmplog: true, - }) - .expect("Failed to send testcase message"); - // println!("Sent testcase, waiting for status"); - - let status = match client.borrow_mut().1.recv() { - Err(e) => panic!("Error receiving status: {e}"), - Ok(m) => m, - }; - // println!("Got status: {:?}", status); - - status - }; - - let mut tracing_harness = aflpp_cmp_harness; - - let edges_observer = HitcountsMapObserver::new(StdMapObserver::from_mut_slice( - Self::EDGES_OBSERVER_NAME, - OwnedMutSlice::from(coverage_map), - )); - let aflpp_cmp_observer = - AFLppCmpLogObserver::new(Self::AFLPP_CMP_OBSERVER_NAME, aflpp_cmp_map, true); - let cmplog_observer = - StdCmpValuesObserver::new(Self::CMPLOG_OBSERVER_NAME, aflpp_cmp_map_dup, true); - let time_observer = TimeObserver::new(Self::TIME_OBSERVER_NAME); - - let map_feedback = MaxMapFeedback::tracking(&edges_observer, true, true); - let time_feedback = TimeFeedback::with_observer(&time_observer); - - let crash_feedback = CrashFeedback::new(); - let timeout_feedback = TimeFeedback::new(Self::TIMEOUT_FEEDBACK_NAME); - - let solutions = OnDiskCorpus::with_meta_format( - configuration.solutions_directory_ref(), - OnDiskMetadataFormat::JsonPretty, - )?; - - let corpus = CachedOnDiskCorpus::with_meta_format( - configuration.corpus_directory_ref(), - Self::CORPUS_CACHE_SIZE, - Some(OnDiskMetadataFormat::Json), - )?; - - // NOTE: Initialize these here before we move the feedbacks - let calibration_stage = CalibrationStage::new(&map_feedback); - let colorization_stage = ColorizationStage::new(&edges_observer); - let generalization_stage = GeneralizationStage::new(&edges_observer); - - let mut feedback = feedback_or!(map_feedback, time_feedback); - let mut objective = feedback_or_fast!(crash_feedback, timeout_feedback); - - let mut state = StdState::new( - StdRand::with_seed(current_nanos()), - corpus, - solutions, - &mut feedback, - &mut objective, - ) - .map_err(|e| anyhow!("Couldn't initialize state: {e}"))?; - - let mut tokens = Tokens::default(); - configuration - .token_files_ref() - .iter() - .try_for_each(|f| tokens.add_from_file(f).map(|_| ()))?; - tokens.add_tokens(configuration.tokens_ref()); - state.add_metadata(tokens); - - let scheduler = - IndexesLenTimeMinimizerScheduler::new(StdWeightedScheduler::with_schedule( - &mut state, - &edges_observer, - Some(PowerSchedule::EXPLORE), - )); - - let mut fuzzer = StdFuzzer::new(scheduler, feedback, objective); - - let monitor = { - SimpleMonitor::new(move |s| { - mtx.send(s).expect("Failed to send monitor message"); - }) - }; - - let mut manager = SimpleEventManager::new(monitor); - - let mut executor = InProcessExecutor::new( - &mut harness, - tuple_list!(edges_observer, time_observer), - &mut fuzzer, - &mut state, - &mut manager, - )?; - - let aflpp_cmp_executor = InProcessExecutor::new( - &mut aflpp_cmp_harness, - tuple_list!(aflpp_cmp_observer), - &mut fuzzer, - &mut state, - &mut manager, - )?; - - let tracing_executor = InProcessExecutor::new( - &mut tracing_harness, - tuple_list!(cmplog_observer), - &mut fuzzer, - &mut state, - &mut manager, - )?; - - let input_to_state_stage = StdMutationalStage::new(StdScheduledMutator::new( - tuple_list!(I2SRandReplace::new()), - )); - let havoc_mutational_stage = StdPowerMutationalStage::new(StdScheduledMutator::new( - havoc_mutations().merge(tokens_mutations()), - )); - let mopt_mutational_stage = StdPowerMutationalStage::new(StdMOptMutator::new( - &mut state, - havoc_mutations().merge(tokens_mutations()), - 7, - 5, - )?); - let redqueen_mutational_stage = - MultiMutationalStage::new(AFLppRedQueen::with_cmplog_options(true, true)); - let aflpp_tracing_stage = AFLppCmplogTracingStage::with_cmplog_observer_name( - aflpp_cmp_executor, - Self::AFLPP_CMP_OBSERVER_NAME, - ); - let tracing_stage = TracingStage::new(tracing_executor); - let synchronize_corpus_stage = - SyncFromDiskStage::with_from_file(configuration.corpus_directory_clone()); - let dump_corpus_stage = DumpToDiskStage::new( - |input: &BytesInput, _state: &_| input.target_bytes().as_slice().to_vec(), - configuration.corpus_directory_ref(), - configuration.solutions_directory_ref(), - )?; - - if state.must_load_initial_inputs() { - state.load_initial_inputs( - &mut fuzzer, - &mut executor, - &mut manager, - &[configuration.corpus_directory_ref().clone()], - )?; - - if state.corpus().count() < 1 && *configuration.generate_random_corpus_ref() { - let mut generator = RandBytesGenerator::new(64); - state.generate_initial_inputs( - &mut fuzzer, - &mut executor, - &mut generator, - &mut manager, - configuration.initial_random_corpus_size_deref(), - )?; - } - } - - if state.corpus().count() < 1 { - panic!( - "No interesting cases found from inputs! This may mean \ - your harness is incorrect (check your arguments), your inputs \ - are not triggering new code paths, or all inputs are causing \ - crashes.", - ); - } - - let mut stages = tuple_list!( - calibration_stage, - generalization_stage, - IfStage::new( - |_fuzzer: &mut _, - _executor: &mut _, - state: &mut StdState<_, CachedOnDiskCorpus<_>, _, _>, - _event_manager: &mut _, - corpus_id: CorpusId| - -> Result { - Ok(cmplog_enabled - && state.corpus().get(corpus_id)?.borrow().scheduled_count() == 1) - }, - tuple_list!( - colorization_stage, - aflpp_tracing_stage, - redqueen_mutational_stage - ) - ), - IfStage::new( - |_fuzzer: &mut _, - _executor: &mut _, - _state: &mut StdState<_, CachedOnDiskCorpus<_>, _, _>, - _event_manager: &mut _, - _corpus_id: CorpusId| - -> Result { Ok(cmplog_enabled) }, - tuple_list!(tracing_stage, input_to_state_stage) - ), - havoc_mutational_stage, - mopt_mutational_stage, - dump_corpus_stage, - synchronize_corpus_stage, - ); - - loop { - // Check if we have a message to shut down, and if so, exit. - if let Ok(_msg) = srx.try_recv() { - break; - } - - fuzzer.fuzz_one(&mut stages, &mut executor, &mut state, &mut manager)?; - } - - println!("Fuzzing loop exited."); - - Ok(()) - })); - - Ok(()) - } - - pub fn send_shutdown(&mut self) -> Result<()> { - if let Some(stx) = self.fuzzer_shutdown_mut() { - stx.send(ShutdownMessage::default())?; - } - - Ok(()) - } - - pub fn get_testcase(&mut self) -> Result { - let testcase = if let Some(testcase) = self.repro_testcase_ref() { - debug!(self.as_conf_object(), "Using repro testcase"); - Testcase { - testcase: testcase.clone(), - cmplog: false, - } - } else { - self.fuzzer_rx_mut() - .as_mut() - .ok_or_else(|| anyhow!("Fuzzer receiver not set"))? - .recv() - .map_err(|e| anyhow!("Error receiving from fuzzer: {e}"))? - }; - - debug!(self.as_conf_object(), "Testcase: {testcase:?}"); - - Ok(testcase) - } -} diff --git a/modules/tsffs/src/tsffs/src/init/mod.rs b/modules/tsffs/src/tsffs/src/init/mod.rs deleted file mode 100644 index e6629f40..00000000 --- a/modules/tsffs/src/tsffs/src/init/mod.rs +++ /dev/null @@ -1,24 +0,0 @@ -use crate::{Tsffs, CLASS_NAME}; -use simics::{ - api::{CreateClass, HasInterface, Interface}, - warn, -}; - -#[no_mangle] -/// Called by SIMICS when the module is loaded via `load-module tsffs` or -/// `SIM_load_module("tsffs")` -pub extern "C" fn init_local() { - let cls = - Tsffs::create().unwrap_or_else(|e| panic!("Failed to create class {}: {}", CLASS_NAME, e)); - - warn!("Created class {}", CLASS_NAME); - - ::Interface::register(cls).unwrap_or_else(|e| { - panic!( - "Failed to register interface for class {}: {}", - CLASS_NAME, e - ) - }); - - warn!("Registered interface for class {}", CLASS_NAME); -} diff --git a/modules/tsffs/src/tsffs/src/lib.rs b/modules/tsffs/src/tsffs/src/lib.rs deleted file mode 100644 index 8bf2cf4a..00000000 --- a/modules/tsffs/src/tsffs/src/lib.rs +++ /dev/null @@ -1,520 +0,0 @@ -// Copyright (C) 2023 Intel Corporation -// SPDX-License-Identifier: Apache-2.0 - -//! TFFS Module for SIMICS -//! -//! # Overview -//! -//! This crate provides a client and module loadable by SIMICS to enable fuzzing on the SIMICS -//! platform. The client is intended to be used by the `simics-fuzz` crate, but it can be used -//! manually to enable additional use cases. -//! -//! # Capabilities -//! -//! The Module can: -//! -//! - Trace branch hits during an execution of a target on an x86_64 processor. These branches -//! are traced into shared memory in the format understood by the AFL family of tools. -//! - Catch exception/fault events registered in an initial configuration or dynamically using -//! a SIMICS Python script -//! - Catch timeout events registered in an initial configuration or dynamically using a SIMICS -//! Python script -//! - Manage the state of a target under test by taking and restoring a snapshot of its state for -//! deterministic snapshot fuzzing - -#![deny(clippy::all)] -// NOTE: We have to do this a lot, and it sucks to have all these functions be unsafe -#![allow(clippy::not_unsafe_ptr_arg_deref)] -#![deny(clippy::unwrap_used)] - -use crate::{ - interface::TsffsInterfaceInternal, - state::{Solution, SolutionKind}, -}; -use anyhow::{anyhow, Result}; -use arch::{Architecture, ArchitectureOperations}; -use configuration::Configuration; -use fuzzer::{ShutdownMessage, Testcase}; -use getters2::Getters; -use libafl::prelude::ExitKind; -use libafl_bolts::{prelude::OwnedMutSlice, AsSlice}; -use libafl_targets::AFLppCmpLogMap; -use serde::{Deserialize, Serialize}; -#[cfg(simics_experimental_api_snapshots)] -use simics::api::{restore_snapshot, save_snapshot}; -use simics::{ - api::{ - break_simulation, discard_future, free_attribute, get_class, get_interface, - get_processor_number, object_clock, restore_micro_checkpoint, run_command, - save_micro_checkpoint, AsConfObject, Class, ConfObject, CoreBreakpointMemopHap, - CoreExceptionHap, CoreMagicInstructionHap, CoreSimulationStoppedHap, - CpuInstrumentationSubscribeInterface, Event, EventClassFlag, HapHandle, - MicroCheckpointFlags, - }, - info, trace, -}; -use simics_macro::{class, interface, AsConfObject}; -use state::StopReason; -use std::{ - alloc::{alloc_zeroed, Layout}, - collections::HashMap, - mem::size_of, - ptr::null_mut, - slice::from_raw_parts, - sync::mpsc::{Receiver, Sender}, - thread::JoinHandle, - time::SystemTime, -}; -use tracer::tsffs::{on_instruction_after, on_instruction_before}; -use typed_builder::TypedBuilder; -use util::Utils; - -pub mod arch; -pub mod configuration; -pub mod fuzzer; -pub mod haps; -pub mod init; -pub mod interface; -pub mod state; -pub mod tracer; -pub mod traits; -pub mod util; - -/// The class name used for all operations interfacing with SIMICS - -pub const CLASS_NAME: &str = env!("CARGO_PKG_NAME"); - -#[derive(TypedBuilder, Getters, Serialize, Deserialize, Clone, Debug)] -pub struct StartBuffer { - #[getters(deref)] - /// The physical address of the buffer. Must be physical, if the input address was - /// virtual, it should be pre-translated - pub physical_address: u64, - #[getters(deref)] - /// Whether the address that translated to this physical address was virtual - /// this should not be used or checked, it's simply informational - pub virt: bool, -} - -#[derive(TypedBuilder, Getters, Serialize, Deserialize, Clone, Debug)] -pub struct StartSize { - #[builder(default, setter(into, strip_option))] - /// The address of the magic start size value, and whether the address that translated - /// to this physical address was virtual. The address must be physical. - pub physical_address: Option<(u64, bool)>, - #[builder(default, setter(into, strip_option))] - // NOTE: There is no need to save the size fo the size, it must be pointer-sized. - /// The initial size of the magic start size - pub initial_size: Option, -} -impl Tsffs { - pub const COVERAGE_MAP_SIZE: usize = 128 * 1024; - pub const TIMEOUT_EVENT_NAME: &'static str = "detector_timeout_event"; - pub const SNAPSHOT_NAME: &'static str = "tsffs-origin-snapshot"; -} - -#[class(name = CLASS_NAME)] -#[derive(TypedBuilder, AsConfObject, Getters)] -#[getters(mutable)] -#[interface] -pub struct Tsffs { - /// The pointer to this instance. This is a self pointer. - instance: *mut ConfObject, - #[builder(default)] - #[getters(clone)] - /// The configuration for the fuzzer - configuration: Configuration, - - // Registered HAPs - #[builder(default = { - CoreSimulationStoppedHap::add_callback( - // NOTE: Core_Simulation_Stopped is called with an object, exception and - // error string, but the exception is always - // SimException::SimExc_No_Exception and the error string is always - // null_mut. - move |_, _, _| { - // On stops, call the module's stop callback method, which will in turn call the - // stop callback methods on each of the module's components. The stop reason will - // be retrieved from the module, if one is set. It is an error for the module to - // stop itself without setting a reason - let tsffs: &'static mut Tsffs = instance.into(); - tsffs - .on_simulation_stopped() - .expect("Error calling simulation stopped callback"); - }, - ) - .expect("Failed to register core simulation stopped hap callback") - })] - /// Handle for the core simulation stopped hap - stop_hap_handle: HapHandle, - #[builder(default = { - CoreBreakpointMemopHap::add_callback( - move |trigger_obj, breakpoint_number, memop| { - let tsffs: &'static mut Tsffs = instance.into(); - tsffs - .on_breakpoint_memop(trigger_obj, breakpoint_number, memop) - .expect("Error calling breakpoint memop callback"); - } - ).expect("Failed to register breakpoint memop callback") - })] - breakpoint_memop_hap_handle: HapHandle, - #[builder(default = { - CoreExceptionHap::add_callback( - move |trigger_obj, exception_number| { - let tsffs: &'static mut Tsffs = instance.into(); - tsffs - .on_exception(trigger_obj, exception_number) - .expect("Error calling breakpoint memop callback"); - } - ).expect("Failed to register breakpoint memop callback") - })] - exception_hap_handle: HapHandle, - #[builder(default = { - CoreMagicInstructionHap::add_callback( - move |trigger_obj, magic_number| { - let tsffs: &'static mut Tsffs = instance.into(); - - tsffs - .on_magic_instruction(trigger_obj, magic_number) - .expect("Error calling magic instruction callback"); - }, - ).expect("Failed to register magic instruction callback") - })] - /// The handle for the registered magic HAP, used to - /// listen for magic start and stop if `start_on_harness` - /// or `stop_on_harness` are set. - magic_hap_handle: HapHandle, - - // Fuzzer thread and channels - #[builder(default)] - fuzz_thread: Option>>, - #[builder(default)] - fuzzer_tx: Option>, - #[builder(default)] - fuzzer_rx: Option>, - #[builder(default)] - fuzzer_shutdown: Option>, - #[builder(default)] - fuzzer_messages: Option>, - - // Fuzzer coverage maps - #[builder(default = OwnedMutSlice::from(vec![0; Tsffs::COVERAGE_MAP_SIZE]))] - /// Coverage map owned by the tracer - coverage_map: OwnedMutSlice<'static, u8>, - #[builder(default = unsafe { - let layout = Layout::new::(); - alloc_zeroed(layout) as *mut AFLppCmpLogMap - })] - #[getters(deref)] - /// Comparison logging map owned by the tracer - aflpp_cmp_map_ptr: *mut AFLppCmpLogMap, - #[builder(default = unsafe { &mut *aflpp_cmp_map_ptr})] - aflpp_cmp_map: &'static mut AFLppCmpLogMap, - #[builder(default = 0)] - #[getters(deref)] - coverage_prev_loc: u64, - - // Registered events - #[builder(default = Event::builder() - .name(Tsffs::TIMEOUT_EVENT_NAME) - .cls(get_class(CLASS_NAME).expect("Error getting class")) - .flags(EventClassFlag::Sim_EC_No_Flags) - .build() - )] - timeout_event: Event, - - // Micro checkpoint/snapshot management - #[builder(default)] - /// The name of the fuzz snapshot, if saved - snapshot_name: Option, - #[builder(default)] - #[getters(deref)] - /// The index of the micro checkpoint saved for the fuzzer. Only present if not using - /// snapshots. - micro_checkpoint_index: Option, - - #[builder(default)] - stop_reason: Option, - #[builder(default)] - /// The buffer and size information, if saved - start_buffer: Option, - #[builder(default)] - start_size: Option, - - // Statistics - #[builder(default = 0)] - #[getters(deref)] - /// The number of fuzzing iterations run. Incremented on stop - iterations: usize, - #[builder(default = SystemTime::now())] - #[getters(deref)] - /// The time the fuzzer was started at - start_time: SystemTime, - - // State and settings - #[builder(default = false)] - #[getters(deref)] - /// Whether cmplog is currently enabled - coverage_enabled: bool, - #[builder(default = false)] - #[getters(deref)] - /// Whether cmplog is currently enabled - cmplog_enabled: bool, - #[builder(default)] - #[getters(deref)] - /// The number of the processor which starts the fuzzing loop (via magic or manual methods) - start_processor_number: Option, - #[builder(default)] - /// Tracked processors. This always includes the start processor, and may include - /// additional processors that are manually added by the user - processors: HashMap, - #[builder(default)] - /// A testcase to use for repro - repro_testcase: Option>, - #[builder(default)] - #[getters(deref)] - repro_bookmark_set: bool, - #[builder(default)] - #[getters(deref)] - stopped_for_repro: bool, -} - -impl Class for Tsffs { - fn init(instance: *mut ConfObject) -> simics::Result<*mut ConfObject> { - let tsffs = Self::builder() - .conf_object(unsafe { *instance }) - .instance(instance) - .build(); - - info!(instance, "Initialized instance"); - - Ok(Tsffs::new(instance, tsffs)) - } -} - -/// Implementations for controlling the simulation -impl Tsffs { - pub fn stop_simulation(&mut self, reason: StopReason) -> Result<()> { - let break_string = reason.to_string(); - *self.stop_reason_mut() = Some(reason); - break_simulation(break_string)?; - - Ok(()) - } -} - -/// Implementations for common functionality -impl Tsffs { - pub fn add_processor(&mut self, cpu: *mut ConfObject, is_start: bool) -> Result<()> { - let cpu_number = get_processor_number(cpu)?; - - if !self.processors_ref().contains_key(&cpu_number) { - let architecture = if let Some(hint) = self - .configuration_ref() - .architecture_hints_ref() - .get(&cpu_number) - { - hint.architecture(cpu)? - } else { - Architecture::new(cpu)? - }; - self.processors_mut().insert(cpu_number, architecture); - let mut cpu_interface: CpuInstrumentationSubscribeInterface = get_interface(cpu)?; - cpu_interface.register_instruction_after_cb( - null_mut(), - Some(on_instruction_after), - self as *mut Self as *mut _, - )?; - cpu_interface.register_instruction_before_cb( - null_mut(), - Some(on_instruction_before), - self as *mut Self as *mut _, - )?; - } - - if is_start { - *self.start_processor_number_mut() = Some(cpu_number); - } - - Ok(()) - } - - pub fn start_processor(&mut self) -> Option<&mut Architecture> { - self.start_processor_number_deref() - .and_then(|n| self.processors_mut().get_mut(&n)) - } -} - -impl Tsffs { - pub fn save_initial_snapshot(&mut self) -> Result<()> { - if self.configuration_ref().use_snapshots_deref() && self.snapshot_name_ref().is_none() { - #[cfg(simics_experimental_api_snapshots)] - { - save_snapshot(Self::SNAPSHOT_NAME)?; - *self.snapshot_name_mut() = Some(Self::SNAPSHOT_NAME.to_string()); - } - #[cfg(not(simics_experimental_api_snapshots))] - panic!("Snapshots cannot be used without SIMICS support from recent SIMICS versions."); - } else if !self.configuration_ref().use_snapshots_deref() - && self.snapshot_name_ref().is_none() - && self.micro_checkpoint_index_ref().is_none() - { - save_micro_checkpoint( - Self::SNAPSHOT_NAME, - MicroCheckpointFlags::Sim_MC_ID_User | MicroCheckpointFlags::Sim_MC_Persistent, - )?; - - *self.snapshot_name_mut() = Some(Self::SNAPSHOT_NAME.to_string()); - - *self.micro_checkpoint_index_mut() = Some( - Utils::get_micro_checkpoints()? - .iter() - .enumerate() - .find_map(|(i, c)| (c.name == Self::SNAPSHOT_NAME).then_some(i as i32)) - .ok_or_else(|| { - anyhow!("No micro checkpoint with just-registered name found") - })?, - ); - } - - Ok(()) - } - - pub fn restore_initial_snapshot(&mut self) -> Result<()> { - if self.configuration_ref().use_snapshots_deref() { - #[cfg(simics_experimental_api_snapshots)] - restore_snapshot(Self::SNAPSHOT_NAME)?; - #[cfg(not(simics_experimental_api_snapshots))] - panic!("Snapshots cannot be used without SIMICS support from recent SIMICS versions."); - } else { - restore_micro_checkpoint(self.micro_checkpoint_index_ref().ok_or_else(|| { - anyhow!("Not using snapshots and no micro checkpoint index present") - })?)?; - - discard_future()?; - } - - Ok(()) - } - - pub fn have_initial_snapshot(&self) -> bool { - (self.snapshot_name_ref().is_some() && self.configuration_ref().use_snapshots_deref()) - || (self.snapshot_name_ref().is_some() - && self.micro_checkpoint_index_ref().is_some() - && !self.configuration_ref().use_snapshots_deref()) - } - - pub fn save_repro_bookmark_if_needed(&mut self) -> Result<()> { - if self.repro_testcase_ref().is_some() && !self.repro_bookmark_set_deref() { - free_attribute(run_command("set-bookmark start")?)?; - *self.repro_bookmark_set_mut() = true; - } - - Ok(()) - } -} - -impl Tsffs { - /// Get a testcase from the fuzzer and write it to memory along with, optionally, a size - pub fn get_and_write_testcase(&mut self) -> Result<()> { - let testcase = self.get_testcase()?; - - *self.cmplog_enabled_mut() = testcase.cmplog_deref(); - - // TODO: Fix cloning - refcell? - let start_buffer = self - .start_buffer_ref() - .as_ref() - .ok_or_else(|| anyhow!("No start buffer"))? - .clone(); - - let start_size = self - .start_size_ref() - .as_ref() - .ok_or_else(|| anyhow!("No start size"))? - .clone(); - - let start_processor = self - .start_processor() - .ok_or_else(|| anyhow!("No start processor"))?; - - start_processor.write_start(testcase.testcase_ref(), &start_buffer, &start_size)?; - - Ok(()) - } - - pub fn post_timeout_event(&mut self) -> Result<()> { - let tsffs_ptr = self.as_conf_object_mut(); - let start_processor = self - .start_processor() - .ok_or_else(|| anyhow!("No start processor"))?; - let start_processor_time = start_processor.cycle().get_time()?; - let start_processor_cpu = start_processor.cpu(); - let start_processor_clock = object_clock(start_processor_cpu)?; - let timeout_time = self.configuration_ref().timeout_deref() + start_processor_time; - trace!( - self.as_conf_object(), - "Posting event on processor at time {} for {}s (time {})", - start_processor_time, - self.configuration_ref().timeout_deref(), - timeout_time - ); - self.timeout_event_ref().post_time( - start_processor_cpu, - start_processor_clock, - self.configuration_ref().timeout_deref(), - move |obj| { - let tsffs: &'static mut Tsffs = tsffs_ptr.into(); - info!(tsffs.as_conf_object_mut(), "timeout({:#x})", obj as usize); - tsffs - .stop_simulation(StopReason::Solution( - Solution::builder().kind(SolutionKind::Timeout).build(), - )) - .expect("Error calling timeout callback"); - }, - )?; - - Ok(()) - } - - pub fn cancel_timeout_event(&mut self) -> Result<()> { - if let Some(start_processor) = self.start_processor() { - let start_processor_time = start_processor.cycle().get_time()?; - let start_processor_cpu = start_processor.cpu(); - let start_processor_clock = object_clock(start_processor_cpu)?; - match self - .timeout_event_ref() - .find_next_time(start_processor_clock, start_processor_cpu) - { - Ok(next_time) => trace!( - self.as_conf_object(), - "Cancelling event with next time {} (current time {})", - next_time, - start_processor_time - ), - // NOTE: This is not an error, it almost always means we did not find a next - // time, which always happens if the timeout goes off. - Err(e) => trace!( - self.as_conf_object(), - "Not cancelling event with next time due to error: {e}" - ), - } - self.timeout_event_ref() - .cancel_time(start_processor_cpu, start_processor_clock)?; - } - Ok(()) - } - - pub fn coverage_hash(&self) -> u32 { - crc32fast::hash(self.coverage_map_ref().as_slice()) - } - - pub fn cmplog_hash(&self) -> u32 { - crc32fast::hash(unsafe { - from_raw_parts( - self.aflpp_cmp_map_ptr_deref() as *const u8, - size_of::(), - ) - }) - } -} diff --git a/modules/tsffs/src/tsffs/src/util/mod.rs b/modules/tsffs/src/tsffs/src/util/mod.rs deleted file mode 100644 index bfa042a5..00000000 --- a/modules/tsffs/src/tsffs/src/util/mod.rs +++ /dev/null @@ -1,24 +0,0 @@ -// Copyright (C) 2023 Intel Corporation -// SPDX-License-Identifier: Apache-2.0 - -use anyhow::Result; -use simics::api::{get_attribute, get_object}; -use simics_macro::TryFromAttrValueTypeList; - -#[derive(Debug, Clone, TryFromAttrValueTypeList)] -pub struct MicroCheckpointInfo { - pub name: String, - #[allow(unused)] - pub pages: u64, - #[allow(unused)] - pub zero: u64, -} - -pub struct Utils {} - -impl Utils { - /// Get the list of saved micro checkpoints - pub fn get_micro_checkpoints() -> Result> { - Ok(get_attribute(get_object("sim.rexec")?, "state_info")?.try_into()?) - } -} diff --git a/modules/tsffs/src/util/ffi-macro/Cargo.toml b/modules/tsffs/src/util/ffi-macro/Cargo.toml deleted file mode 100644 index 9a7aa1e4..00000000 --- a/modules/tsffs/src/util/ffi-macro/Cargo.toml +++ /dev/null @@ -1,32 +0,0 @@ -# Copyright (C) 2023 Intel Corporation -# SPDX-License-Identifier: Apache-2.0 - -[package] -name = "ffi-macro" -categories.workspace = true -description = "Macro for routing C FFI callbacks to struct methods" -edition.workspace = true -homepage.workspace = true -keywords.workspace = true -license.workspace = true -publish.workspace = true -readme.workspace = true -repository.workspace = true -version.workspace = true - - -# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html -[lib] -proc-macro = true - -[dependencies] -proc-macro2 = "1.0.56" -proc-macro-error = "1.0.4" -quote = "1.0.26" -syn = { version = "2.0.15", features = ["full"] } -anyhow.workspace = true -darling = "0.20.3" - -[dev-dependencies] -anyhow.workspace = true -trybuild = "1.0.80" diff --git a/modules/tsffs/src/util/ffi-macro/src/lib.rs b/modules/tsffs/src/util/ffi-macro/src/lib.rs deleted file mode 100644 index ab969c47..00000000 --- a/modules/tsffs/src/util/ffi-macro/src/lib.rs +++ /dev/null @@ -1,670 +0,0 @@ -// Copyright (C) 2023 Intel Corporation -// SPDX-License-Identifier: Apache-2.0 - -//! The `ffi` macro automatically generates a module containing FFI-compatible functions that -//! wrap a struct or enum's implementation methods, to facilitate their use in callbacks. -//! -//! For example, suppose a C functon that schedules a callback to run at a later time which will -//! compute the sum of two numbers and return the result. As is typical, this callback also takes -//! a user-data `void *` parameter, which will be passed as-is to the callback. -//! -//! ```c,ignore -//! int schedule_add_callback(uint64_t (*cb)(uint64_t, uint64_t, void *), void *userdata); -//! ``` -//! -//! Doing this in Rust requires a large amount of boilerplate. In particular, you must provide a -//! C ABI compatible function as the callback parameter by declaring a separate function like: -//! -//! ```rust,ignore -//! #[no_mangle] -//! pub extern "C" fn cb(a: u64, b: u64, _: *mut std::ffi::c_void) -> u64 { a + b } -//! ``` -//! -//! Complicating matters, suppose the callback is not invoked in a stateless fashion, -//! and your program needs to store information or produce some side effect when this -//! callback is triggered. In this case, you likely have a struct instance containing some state, -//! along with implementations roughly corresponding to your desired callback behavior. This macro -//! automates the process of wrapping those implementation methods in FFI-compatible extern -//! functions that can be used as FFI callbacks, or automating parts of creating a C API to your -//! library. -//! -//! In the above example, suppose we have an accumulator which stores the total sum of all -//! nubers it has been asked to add, as well as returning the result of various mathematical -//! operations. Using `ffi_macro`, this looks like: -//! -//! -//! ```rust,ignore -//! use std::{ffi::c_void, ptr::addr_of_mut}; -//! -//! use anyhow::Result; -//! use ffi_macro::ffi; -//! -//! #[derive(Debug, Default)] -//! pub struct Accumulator { -//! total: u64, -//! } -//! -//! impl From<*mut std::ffi::c_void> for &mut Accumulator { -//! fn from(value: *mut std::ffi::c_void) -> Self { -//! unsafe { *(value as *mut Self) } -//! } -//! } -//! -//! #[ffi(mod_name = "ffi", expect, self_ty = "*mut std::ffi::c_void")] -//! impl Accumulator { -//! #[ffi(arg(rest), arg(self))] -//! pub fn add(&mut self, a: u64, b: u64) -> Result { -//! self.total += a; -//! self.total += b; -//! Ok(a + b) -//! } -//! } -//! -//! fn main() { -//! let mut a = Accumulator::default(); -//! let res = ffi::add(1, 2, addr_of_mut!(a) as *mut c_void); -//! assert_eq!(res, 3); -//! assert_eq!(a.total, 3); -//! } -//! ``` - -#![deny(clippy::unwrap_used)] -#![forbid(unsafe_code)] - -use std::collections::HashMap; - -use darling::{ - ast::NestedMeta, - util::{Flag, WithOriginal}, - Error, FromAttributes, FromMeta, Result, -}; -use proc_macro::TokenStream; -use proc_macro2::TokenStream as TokenStream2; -use proc_macro_error::{abort, proc_macro_error}; -use quote::{format_ident, quote}; -use syn::{ - parse_macro_input, parse_str, FnArg, ImplGenerics, ImplItem, ImplItemFn, ItemImpl, Pat, - PathArguments, ReturnType, Type, TypeGenerics, WhereClause, -}; - -#[derive(Debug, Clone, FromMeta)] -#[darling(and_then = "Self::validate")] -struct FfiMethodOptArg { - #[darling(rename = "self")] - /// Whether this argument needs to be converted to the receiver type - receiver: Flag, - #[darling(default)] - ty: Option, - #[darling(default)] - rename: Option, - rest: Flag, -} - -impl FfiMethodOptArg { - fn validate(self) -> Result { - if self.receiver.is_present() && self.rest.is_present() { - Err(Error::custom( - "An argument may either be self or have rest enabled.", - )) - } else if self.rest.is_present() && (self.ty.is_some() || self.rename.is_some()) { - Err(Error::custom( - "The rest argument may not specify a rename or type change", - )) - } else { - Ok(self) - } - } -} - -#[derive(Debug, FromAttributes)] -#[darling(attributes(ffi))] -struct FfiMethodOpts { - expect: Flag, - #[darling(default)] - visibility: Option, - #[darling(default)] - name: Option, - #[darling(multiple)] - arg: Vec, -} - -impl FfiMethodOpts { - fn visibility(&self) -> TokenStream2 { - if let Some(ref visibility) = self.visibility { - match parse_str(visibility) { - Ok(visibility) => visibility, - Err(e) => Error::from(e).write_errors(), - } - } else { - // NOTE: Default is "pub" because typically this is required for FFI - quote!(pub) - } - } -} - -#[derive(Debug)] -struct FfiMethods<'a> { - ffi_self_ty: Option, - expect: Flag, - self_ty: Type, - self_generics: (ImplGenerics<'a>, TypeGenerics<'a>, Option<&'a WhereClause>), - ffi_methods: Vec>, - other_items: Vec<&'a ImplItem>, -} - -impl<'a> TryFrom<(&'a ItemImpl, Option, Flag)> for FfiMethods<'a> { - type Error = Error; - - fn try_from(value: (&'a ItemImpl, Option, Flag)) -> Result { - let expect = value.2; - let ffi_self_ty = value.1; - let value = value.0; - let self_generics = value.generics.split_for_impl(); - let mut ffi_methods = Vec::new(); - let mut other_items = Vec::new(); - let mut errors = Vec::new(); - - value.items.iter().for_each(|i| { - if let ImplItem::Fn(ref f) = i { - match FfiMethodOpts::from_attributes(&f.attrs) { - Ok(opts) => { - let mut f = f.clone(); - // NOTE: This effectively makes splitting the ffi() macro across multiple invocations - // an error. I'm okay with that, I don't like the syntax and it'll break the argument - // ordering anyway. - f.attrs - .retain(|a| FfiMethodOpts::from_attributes(&[a.clone()]).is_err()); - ffi_methods.push(WithOriginal::new(opts, f)); - } - Err(e) => errors.push(e), - } - } else { - other_items.push(i); - } - }); - - if !errors.is_empty() { - Err(Error::multiple(errors)) - } else { - Ok(Self { - ffi_self_ty, - expect, - self_ty: *value.self_ty.clone(), - self_generics, - ffi_methods, - other_items, - }) - } - } -} - -impl<'a> FfiMethods<'a> { - fn original(&self) -> TokenStream2 { - let orig_ffi_methods = self - .ffi_methods - .iter() - .map(|m| &m.original) - .collect::>(); - - let other_items = &self.other_items; - - quote! { - #(#orig_ffi_methods)* - #(#other_items)* - } - } - - fn ffi_return_ty(return_ty: &ReturnType, expect: bool) -> (TokenStream2, TokenStream2, bool) { - if expect { - if let ReturnType::Type(_, t) = return_ty { - if let Type::Path(p) = &**t { - if let Some(last) = p.path.segments.last() { - if last.ident == "Result" { - if let PathArguments::AngleBracketed(a) = &last.arguments { - return ( - quote!(#return_ty), - a.args - .first() - .map(|a| quote!(-> #a)) - .unwrap_or(quote!(#return_ty)), - true, - ); - } - } - } - } - } - } - - (quote!(#return_ty), quote!(#return_ty), false) - } - - fn ffi(&self) -> TokenStream2 { - // NOTE: by default, the first argument is the receiver. - let mut methods = Vec::new(); - - for method in &self.ffi_methods { - let ffi_func_name = method - .parsed - .name - .as_ref() - .map(|n| { - let name = format_ident!("{n}"); - quote!(#name) - }) - .unwrap_or({ - let name = &method.original.sig.ident; - quote!(#name) - }); - - let (_impl_method_return_ty, ffi_func_return_ty, need_expect) = Self::ffi_return_ty( - &method.original.sig.output, - method.parsed.expect.is_present() || self.expect.is_present(), - ); - - let Some(impl_method_receiver) = method.original.sig.receiver() else { - abort!(method.original, "No receiver on method"); - }; - - let maybe_mut_ref = impl_method_receiver.mutability.map(|m| quote!(#m)); - - let impl_method_args = method.original.sig.inputs.iter().collect::>(); - - let impl_method_args_no_receiver = method - .original - .sig - .inputs - .iter() - .filter(|a| !matches!(a, FnArg::Receiver(_))) - .cloned() - .collect::>(); - - let mut ffi_receiver_name = None; - let mut ffi_func_args = Vec::new(); - let mut ffi_func_renames = HashMap::new(); - - for (i, arg) in method.parsed.arg.iter().enumerate() { - if arg.receiver.is_present() { - let ty = if let Some(ref ty) = arg.ty { - match parse_str::(ty) { - Ok(ty) => quote!(#ty), - Err(e) => return Error::from(e).write_errors(), - } - } else if let Some(ref ty) = self.ffi_self_ty { - quote!(#ty) - } else { - let ty = &self.self_ty; - quote!(#ty) - }; - - let name = arg - .rename - .as_ref() - .map(|n| { - let n = format_ident!("{n}"); - quote!(#n) - }) - .unwrap_or(quote!(slf)); - ffi_func_args.push(quote!(#name: #ty)); - ffi_receiver_name = Some(name); - } else if arg.rest.is_present() { - // If we have already seen the receiver argument, we need to look one - // argument forward - let mut arg_index = i; - - if ffi_receiver_name.is_none() { - arg_index += 1; - } - - ffi_func_args.extend( - impl_method_args_no_receiver - .iter() - .enumerate() - .filter_map(|(i, a)| (i >= arg_index - 1).then_some(a)) - .map(|a| quote!(#a)), - ); - } else if ffi_func_args.len() <= impl_method_args_no_receiver.len() + 1 { - // If we have already seen the receiver argument, we need to look one - // argument forward - let mut arg_index = i; - - if ffi_receiver_name.is_none() { - arg_index += 1; - } - - if let Some(FnArg::Typed(impl_method_arg_pat_type)) = - impl_method_args.get(arg_index) - { - let ty = &impl_method_arg_pat_type.ty; - if let Some(ref rename) = arg.rename { - ffi_func_renames.insert(i, (rename, ty)); - ffi_func_args.push({ - let rename = format_ident!("{rename}"); - quote!(#rename: #ty) - }); - } else { - ffi_func_args.push(quote!(#impl_method_arg_pat_type)); - } - } else { - return Error::custom( - "Argument is not a typed argument while getting ffi function arguments", - ) - .write_errors(); - } - } else { - return Error::custom( - "Argument is not a typed argument while getting ffi function arguments", - ) - .write_errors(); - } - } - - let mut impl_method_call_args = Vec::new(); - - for (i, arg) in impl_method_args_no_receiver.iter().enumerate() { - if let Some((rename, _ty)) = ffi_func_renames.get(&i) { - let ident = format_ident!("{rename}"); - impl_method_call_args.push(quote!(#ident)); - } else { - let FnArg::Typed(ref typed) = arg else { - return Error::custom(format!("Argument {i} is not a typed argument")) - .write_errors(); - }; - let Pat::Ident(ref ident) = &*typed.pat else { - return Error::custom("Pattern is not an identifier").write_errors(); - }; - let ident = &ident.ident; - impl_method_call_args.push(quote!(#ident)); - } - } - - let self_ty = &self.self_ty; - let ffi_func_visibility = method.parsed.visibility(); - let Some(self_name) = ffi_receiver_name else { - return Error::custom("No receiver name").write_errors(); - }; - let impl_method_name = &method.original.sig.ident; - let impl_maybe_expect = need_expect - .then_some({ - let expect_message = - format!("Failed to execute FFI method {}", method.original.sig.ident); - quote!(.expect(#expect_message)) - }) - .unwrap_or_default(); - let (_self_impl_genrics, self_ty_generics, self_where_clause) = &self.self_generics; - - let impl_method_call = quote! { - Into::<&#maybe_mut_ref #self_ty>::into(#self_name).#impl_method_name( - #(#impl_method_call_args),* - )#impl_maybe_expect - }; - - methods.push(quote! { - #[no_mangle] - #ffi_func_visibility extern "C" fn #ffi_func_name #self_ty_generics( - #(#ffi_func_args),* - ) #ffi_func_return_ty #self_where_clause { - #impl_method_call - } - }) - } - - quote! { - #(#methods)* - } - } -} - -#[derive(Debug, FromMeta)] -struct FfiOpts { - #[darling(default, rename = "mod_name")] - name: Option, - #[darling(default)] - visibility: Option, - #[darling(default)] - self_ty: Option, - expect: Flag, - from_ptr: Flag, - from_any_ptr: Flag, -} - -#[proc_macro_attribute] -#[proc_macro_error] -/// FFI helper macro -/// -/// Accepts the following options: -/// -/// ```rust,ignore -/// #[ffi( -/// mod_name = "your_ffi_mod_name", -/// visibility = "pub(crate)", -/// self_ty = "*mut std::ffi::c_void", -/// expect -/// )] -/// impl Foo {} -/// ``` -/// -/// All options are optional. The module name defaults to the name of the implementation's self -/// type (i.e. `Foo` in the example above). The visibility defaults to `pub`. The self type -/// on each method takes priority, followed by the implementation-wide type, then defaults to -/// the self type of the implementation if noneis provided. By default, result types will not -/// be unwrapped with `.expect()` and will be returned as-is. -/// -/// Function items in the implementation accept their own set of arguments. -/// -/// ```rust,ignore -/// #[ffi( -/// mod_name = "your_ffi_mod_name", -/// visibility = "pub(crate)", -/// self_ty = "*mut std::ffi::c_void", -/// expect -/// )] -/// impl Foo { -/// #[ffi( -/// expect, -/// visibility = "pub(crate)", -/// name = "bar_override", -/// arg(self), -/// arg(rest), -/// )] -/// pub fn bar(&self, a: u64, b: Baz) -> anyhow::Result { -/// self.total += a + b.xyzzy(a); -/// Ok(a) -/// } -/// } -/// ``` -/// -/// The first three arguments (expect, visibility, name) are optional. Expect and visibility have -/// the same meaning as the impl-wide settings, and allow more granular control. `arg` can be -/// specified multiple times, with the following flags. `self`, marks the arg in the corresponding -/// position in the FFI callback's parameters as the receiver. `ty = "OtherType"` allows overriding -/// the type of individual FFI parameters (for example, to receive void pointers instead of -/// references. `rename = "othername"` to rename the parameter, and `rest`, which indicates the -/// remaining arguments should be added as-they-are to the FFI function's parameters. -pub fn ffi(args: TokenStream, input: TokenStream) -> TokenStream { - let meta = match NestedMeta::parse_meta_list(args.into()) { - Ok(o) => o, - Err(e) => return TokenStream::from(Error::from(e).write_errors()), - }; - - // Extract the options from the #[ffi()] attribute - let impl_item_opts = match FfiOpts::from_list(&meta) { - Ok(o) => o, - Err(e) => return TokenStream::from(e.write_errors()), - }; - - let impl_item = parse_macro_input!(input as ItemImpl); - - // Extract the trait component of the `impl X (for Y) {` item. We need this in addition to the - // generics below because we re-emit the original implementation. - let maybe_trait = impl_item.trait_.as_ref().map(|(not, path, f)| { - let maybe_not = not.map(|not| quote!(#not)).unwrap_or_default(); - quote!(#maybe_not #path #f) - }); - - let impl_generics = &impl_item.generics.params.iter().collect::>(); - let where_clause = &impl_item.generics.where_clause; - - let (impl_item_name, self_ty_generics) = if let Type::Path(p) = &*impl_item.self_ty { - if let Some(last) = p.path.segments.last() { - match last.arguments { - PathArguments::None => { - let name = &impl_item.self_ty; - (quote!(#name), vec![]) - } - PathArguments::AngleBracketed(ref a) => { - let last_ident = &last.ident; - let mut segments = p.path.segments.iter().cloned().collect::>(); - segments.pop(); - let segments = segments.iter().map(|s| quote!(#s)).collect::>(); - let impl_item_name = quote!(#(#segments)::*#last_ident); - let ty_generics = a.args.clone().into_iter().collect::>(); - (impl_item_name, ty_generics) - } - PathArguments::Parenthesized(_) => abort!( - impl_item, - "Parenthesized path arguments are not allowed here" - ), - } - } else { - abort!(impl_item, "Self type must have segments"); - } - } else { - abort!(impl_item, "Self type must be path"); - }; - - let impl_methods = match FfiMethods::try_from(( - &impl_item, - impl_item_opts - .self_ty - .as_ref() - .and_then(|s| parse_str::(s).ok()), - impl_item_opts.expect, - )) { - Ok(o) => o, - Err(e) => return e.write_errors().into(), - }; - - let impl_methods_original = &impl_methods.original(); - - let ffi_mod_name = match impl_item_opts.name.map(|n| { - let n = format_ident!("{n}"); - quote!(#n) - }) { - Some(n) => n, - None => { - let Type::Path(path) = impl_item.self_ty.as_ref() else { - abort!(impl_item, "Implementation self type is not a path"); - }; - let Some(name) = path.path.segments.first() else { - abort!(path, "Path has no segments"); - }; - let ffi_mod_name = format_ident!("{}", name.ident.to_string().to_ascii_lowercase()); - quote!(#ffi_mod_name) - } - }; - - let ffi_mod_visibility = if let Some(ref visibility) = impl_item_opts.visibility { - match parse_str(visibility) { - Ok(visibility) => visibility, - Err(e) => return TokenStream::from(Error::from(e).write_errors()), - } - } else { - // NOTE: Defaults to public visibility, because this is typically requred for FFI - quote!(pub) - }; - - let ffi_mod_methods = &impl_methods.ffi(); - - let mut impl_generics_from = self_ty_generics - .iter() - .map(|g| quote!(#g)) - .collect::>(); - - if impl_item_opts.from_any_ptr.is_present() { - impl_generics_from.push(quote!(T)); - } - - let maybe_from_any_ptr = impl_item_opts.from_any_ptr.is_present().then_some(quote! { - impl<#(#impl_generics_from),*> From<*mut T> for &'static mut #impl_item_name<#(#self_ty_generics),*> { - fn from(value: *mut T) -> Self { - let ptr: *mut #impl_item_name <#(#self_ty_generics),*>= value as *mut #impl_item_name <#(#self_ty_generics),*>; - unsafe { &mut *ptr } - } - } - - impl<#(#impl_generics_from),*> From<*mut T> for &'static #impl_item_name<#(#self_ty_generics),*> { - fn from(value: *mut T) -> Self { - let ptr: *mut #impl_item_name <#(#self_ty_generics),*> = value as *mut #impl_item_name <#(#self_ty_generics),*>; - unsafe { &*ptr } - } - } - - impl<#(#impl_generics_from),*> From<*const T> for &'static #impl_item_name<#(#self_ty_generics),*> { - fn from(value: *const T) -> Self { - let ptr: *const #impl_item_name <#(#self_ty_generics),*> = value as *const #impl_item_name <#(#self_ty_generics),*>; - unsafe { &*ptr } - } - } - }).unwrap_or_default(); - - let maybe_from_ptr = if impl_item_opts.from_ptr.is_present() { - impl_item_opts - .self_ty - .as_ref() - .and_then(|st| { - parse_str(st).ok().map(|stp: Type| { - quote! { - impl<#(#impl_generics_from),*> From<#stp> for &'static mut #impl_item_name<#(#self_ty_generics),*> { - fn from(value: #stp) -> Self { - let ptr: *mut #impl_item_name <#(#self_ty_generics),*>= value as *mut #impl_item_name <#(#self_ty_generics),*>; - unsafe { &mut *ptr } - } - } - - impl<#(#impl_generics_from),*> From<#stp> for &'static #impl_item_name<#(#self_ty_generics),*> { - fn from(value: #stp) -> Self { - let ptr: *mut #impl_item_name <#(#self_ty_generics),*> = value as *mut #impl_item_name <#(#self_ty_generics),*>; - unsafe { &*ptr } - } - } - } - }) - }) - .unwrap_or_default() - } else { - quote!() - }; - - let maybe_impl_generics = if impl_generics.is_empty() { - quote!() - } else { - quote!(<#(#impl_generics),*>) - }; - - let maybe_self_ty_generics = if self_ty_generics.is_empty() { - quote!() - } else { - quote!(<#(#self_ty_generics),*>) - }; - - let q: TokenStream = quote! { - impl #maybe_impl_generics #maybe_trait #impl_item_name #maybe_self_ty_generics #where_clause { - #impl_methods_original - } - - #maybe_from_ptr - - #maybe_from_any_ptr - - #ffi_mod_visibility mod #ffi_mod_name { - use super::*; - #ffi_mod_methods - } - } - .into(); - - // println!("{q}"); - - q -} diff --git a/modules/tsffs/src/util/ffi-macro/tests/example.rs b/modules/tsffs/src/util/ffi-macro/tests/example.rs deleted file mode 100644 index 9f2d71e7..00000000 --- a/modules/tsffs/src/util/ffi-macro/tests/example.rs +++ /dev/null @@ -1,32 +0,0 @@ -use std::{ffi::c_void, ptr::addr_of_mut}; - -use anyhow::Result; -use ffi_macro::ffi; - -#[derive(Debug, Default)] -pub struct Accumulator { - total: u64, -} - -impl From<*mut std::ffi::c_void> for &mut Accumulator { - fn from(value: *mut std::ffi::c_void) -> Self { - unsafe { *(value as *mut Self) } - } -} - -#[ffi(mod_name = "ffi", expect, self_ty = "*mut std::ffi::c_void")] -impl Accumulator { - #[ffi(arg(rest), arg(self))] - pub fn add(&mut self, a: u64, b: u64) -> Result { - self.total += a; - self.total += b; - Ok(a + b) - } -} - -fn main() { - let mut a = Accumulator::default(); - let res = ffi::add(1, 2, addr_of_mut!(a) as *mut c_void); - assert_eq!(res, 3); - assert_eq!(a.total, 3); -} diff --git a/modules/tsffs/src/util/ffi-macro/tests/test_basic_ffi.rs b/modules/tsffs/src/util/ffi-macro/tests/test_basic_ffi.rs deleted file mode 100644 index d2da41bf..00000000 --- a/modules/tsffs/src/util/ffi-macro/tests/test_basic_ffi.rs +++ /dev/null @@ -1,135 +0,0 @@ -use ffi_macro::ffi; -use std::ffi::c_void; - -pub struct Test { - x: u64, -} - -impl From<*mut c_void> for &Test { - fn from(value: *mut c_void) -> Self { - unsafe { *(value as *mut Self) } - } -} - -#[ffi(mod_name = "test_ffi_forward", self_ty = "*mut std::ffi::c_void")] -impl Test { - #[ffi(arg(self), arg(), arg(), arg())] - pub fn test_forward(&self, a: u64, b: u64, c: u64) -> u64 { - a + b + c + self.x - } -} - -#[ffi(mod_name = "test_ffi_reverse", self_ty = "*mut std::ffi::c_void")] -impl Test { - #[ffi(arg(), arg(), arg(), arg(self))] - pub fn test_reverse(&self, a: u64, b: u64, c: u64) -> u64 { - a + b + c + self.x - } -} - -#[ffi(mod_name = "test_ffi_middle", self_ty = "*mut std::ffi::c_void")] -impl Test { - #[ffi(arg(), arg(self), arg(), arg())] - pub fn test_middle(&self, a: u64, b: u64, c: u64) -> u64 { - a + b + c + self.x - } -} - -#[ffi(mod_name = "test_ffi_forward_rest", self_ty = "*mut std::ffi::c_void")] -impl Test { - #[ffi(arg(self), arg(rest))] - pub fn test_forward_rest(&self, a: u64, b: u64, c: u64) -> u64 { - a + b + c + self.x - } -} - -#[ffi(mod_name = "test_ffi_reverse_rest", self_ty = "*mut std::ffi::c_void")] -impl Test { - #[ffi(arg(rest), arg(self))] - pub fn test_reverse_rest(&self, a: u64, b: u64, c: u64) -> u64 { - a + b + c + self.x - } -} - -#[ffi(mod_name = "test_ffi_middle_rest", self_ty = "*mut std::ffi::c_void")] -impl Test { - #[ffi(arg(), arg(self), arg(rest))] - pub fn test_middle_rest(&self, a: u64, b: u64, c: u64) -> u64 { - a + b + c + self.x - } -} - -#[ffi( - mod_name = "test_ffi_forward_expect", - expect, - self_ty = "*mut std::ffi::c_void" -)] -impl Test { - #[ffi(arg(self), arg(), arg(), arg())] - pub fn test_forward_expect(&self, a: u64, b: u64, c: u64) -> anyhow::Result { - Ok(a + b + c + self.x) - } -} - -#[ffi( - mod_name = "test_ffi_reverse_expect", - expect, - self_ty = "*mut std::ffi::c_void" -)] -impl Test { - #[ffi(arg(), arg(), arg(), arg(self))] - pub fn test_reverse_expect(&self, a: u64, b: u64, c: u64) -> anyhow::Result { - Ok(a + b + c + self.x) - } -} - -#[ffi( - mod_name = "test_ffi_middle_expect", - expect, - self_ty = "*mut std::ffi::c_void" -)] -impl Test { - #[ffi(arg(), arg(self), arg(), arg())] - pub fn test_middle_expect(&self, a: u64, b: u64, c: u64) -> anyhow::Result { - Ok(a + b + c + self.x) - } -} - -#[ffi( - mod_name = "test_ffi_forward_rest_expect", - expect, - self_ty = "*mut std::ffi::c_void" -)] -impl Test { - #[ffi(arg(self), arg(rest))] - pub fn test_forward_rest_expect(&self, a: u64, b: u64, c: u64) -> anyhow::Result { - Ok(a + b + c + self.x) - } -} - -#[ffi( - mod_name = "test_ffi_reverse_rest_expect", - expect, - self_ty = "*mut std::ffi::c_void" -)] -impl Test { - #[ffi(arg(rest), arg(self))] - pub fn test_reverse_rest_expect(&self, a: u64, b: u64, c: u64) -> anyhow::Result { - Ok(a + b + c + self.x) - } -} - -#[ffi( - mod_name = "test_ffi_middle_rest_expect", - expect, - self_ty = "*mut std::ffi::c_void" -)] -impl Test { - #[ffi(arg(), arg(self), arg(rest))] - pub fn test_middle_rest_expect(&self, a: u64, b: u64, c: u64) -> anyhow::Result { - Ok(a + b + c + self.x) - } -} - -#[cfg(test)] -mod test {} diff --git a/modules/tsffs/src/util/ffi-macro/tests/test_lifetime.rs b/modules/tsffs/src/util/ffi-macro/tests/test_lifetime.rs deleted file mode 100644 index 879c26d0..00000000 --- a/modules/tsffs/src/util/ffi-macro/tests/test_lifetime.rs +++ /dev/null @@ -1,21 +0,0 @@ -use ffi_macro::ffi; -use std::ffi::c_void; - -pub struct Test<'a> -where - 'a: 'static, -{ - x: &'a mut u64, -} - -#[ffi(from_ptr, expect, self_ty = "*mut c_void")] -impl<'a> Test<'a> -where - 'a: 'static, -{ - #[ffi(arg(rest), arg(self))] - pub fn get(&mut self, y: u64) -> u64 { - *self.x += y; - *self.x - } -} diff --git a/modules/tsffs/src/util/ffi-macro/tests/ui.rs b/modules/tsffs/src/util/ffi-macro/tests/ui.rs deleted file mode 100644 index 936d66f5..00000000 --- a/modules/tsffs/src/util/ffi-macro/tests/ui.rs +++ /dev/null @@ -1,9 +0,0 @@ -// Copyright (C) 2023 Intel Corporation -// SPDX-License-Identifier: Apache-2.0 - -#[test] -#[cfg_attr(miri, ignore)] -fn ui() { - // let t = trybuild::TestCases::new(); - // t.compile_fail("tests/ui/test_missing_params.rs"); -} diff --git a/modules/tsffs/src/util/raw-cstr/Cargo.toml b/modules/tsffs/src/util/raw-cstr/Cargo.toml deleted file mode 100644 index 802109ae..00000000 --- a/modules/tsffs/src/util/raw-cstr/Cargo.toml +++ /dev/null @@ -1,21 +0,0 @@ -# Copyright (C) 2023 Intel Corporation -# SPDX-License-Identifier: Apache-2.0 - -[package] -name = "raw-cstr" -categories.workspace = true -description = "Keep raw-cstrings in thread local storage for reuse" -edition.workspace = true -homepage.workspace = true -keywords.workspace = true -license.workspace = true -publish.workspace = true -readme.workspace = true -repository.workspace = true -version.workspace = true - -# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html - -[dependencies] -anyhow.workspace = true -byte-strings = { version = "0.3.1", features = ["const-friendly"] } diff --git a/modules/tsffs/src/util/raw-cstr/fuzz/.gitignore b/modules/tsffs/src/util/raw-cstr/fuzz/.gitignore deleted file mode 100644 index 1a45eee7..00000000 --- a/modules/tsffs/src/util/raw-cstr/fuzz/.gitignore +++ /dev/null @@ -1,4 +0,0 @@ -target -corpus -artifacts -coverage diff --git a/modules/tsffs/src/util/raw-cstr/fuzz/Cargo.lock b/modules/tsffs/src/util/raw-cstr/fuzz/Cargo.lock deleted file mode 100644 index e741c0be..00000000 --- a/modules/tsffs/src/util/raw-cstr/fuzz/Cargo.lock +++ /dev/null @@ -1,142 +0,0 @@ -# This file is automatically @generated by Cargo. -# It is not intended for manual editing. -version = 3 - -[[package]] -name = "anyhow" -version = "1.0.74" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c6f84b74db2535ebae81eede2f39b947dcbf01d093ae5f791e5dd414a1bf289" - -[[package]] -name = "arbitrary" -version = "1.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2d098ff73c1ca148721f37baad5ea6a465a13f9573aba8641fbbbae8164a54e" -dependencies = [ - "derive_arbitrary", -] - -[[package]] -name = "byte-strings" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "002ee5531feb8450e59862fefa550eeac39b726d60b186071672751045ebc29a" -dependencies = [ - "byte-strings-proc_macros", -] - -[[package]] -name = "byte-strings-proc_macros" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62f7e0e71f98d6c71bfe42b0a7a47d0f870ad808401fad2d44fa156ed5b0ae03" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "cc" -version = "1.0.79" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50d30906286121d95be3d479533b458f87493b30a4b5f79a607db8f5d11aa91f" -dependencies = [ - "jobserver", -] - -[[package]] -name = "derive_arbitrary" -version = "1.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "53e0efad4403bfc52dc201159c4b842a246a14b98c64b55dfd0f2d89729dfeb8" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "jobserver" -version = "0.1.26" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "936cfd212a0155903bcbc060e316fb6cc7cbf2e1907329391ebadc1fe0ce77c2" -dependencies = [ - "libc", -] - -[[package]] -name = "libc" -version = "0.2.147" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4668fb0ea861c1df094127ac5f1da3409a82116a4ba74fca2e58ef927159bb3" - -[[package]] -name = "libfuzzer-sys" -version = "0.4.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "beb09950ae85a0a94b27676cccf37da5ff13f27076aa1adbc6545dd0d0e1bd4e" -dependencies = [ - "arbitrary", - "cc", - "once_cell", -] - -[[package]] -name = "once_cell" -version = "1.18.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd8b5dd2ae5ed71462c540258bedcb51965123ad7e7ccf4b9a8cafaa4a63576d" - -[[package]] -name = "proc-macro2" -version = "1.0.64" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78803b62cbf1f46fde80d7c0e803111524b9877184cfe7c3033659490ac7a7da" -dependencies = [ - "unicode-ident", -] - -[[package]] -name = "quote" -version = "1.0.29" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "573015e8ab27661678357f27dc26460738fd2b6c86e46f386fde94cb5d913105" -dependencies = [ - "proc-macro2", -] - -[[package]] -name = "raw-cstr" -version = "0.1.0" -dependencies = [ - "anyhow", - "byte-strings", -] - -[[package]] -name = "raw-cstr-fuzz" -version = "0.0.0" -dependencies = [ - "arbitrary", - "libfuzzer-sys", - "raw-cstr", -] - -[[package]] -name = "syn" -version = "2.0.25" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "15e3fc8c0c74267e2df136e5e5fb656a464158aa57624053375eb9c8c6e25ae2" -dependencies = [ - "proc-macro2", - "quote", - "unicode-ident", -] - -[[package]] -name = "unicode-ident" -version = "1.0.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22049a19f4a68748a168c0fc439f9516686aa045927ff767eca0a85101fb6e73" diff --git a/modules/tsffs/src/util/raw-cstr/fuzz/Cargo.toml b/modules/tsffs/src/util/raw-cstr/fuzz/Cargo.toml deleted file mode 100644 index 0a630375..00000000 --- a/modules/tsffs/src/util/raw-cstr/fuzz/Cargo.toml +++ /dev/null @@ -1,33 +0,0 @@ -# Copyright (C) 2023 Intel Corporation -# SPDX-License-Identifier: Apache-2.0 - -[package] -name = "raw-cstr-fuzz" -description = "Macro for routing C FFI callbacks to struct methods" -edition = "2021" -publish = false -version = "0.0.0" - - -[package.metadata] -cargo-fuzz = true - -[dependencies] -libfuzzer-sys = "0.4" -arbitrary = { version = "1.3", features = ["derive"] } - -[dependencies.raw-cstr] -path = ".." - -# Prevent this from interfering with workspaces -[workspace] -members = ["."] - -[profile.release] -debug = 1 - -[[bin]] -name = "fuzz_raw_cstr" -path = "fuzz_targets/fuzz_raw_cstr.rs" -test = false -doc = false diff --git a/modules/tsffs/src/util/raw-cstr/fuzz/fuzz_targets/fuzz_raw_cstr.rs b/modules/tsffs/src/util/raw-cstr/fuzz/fuzz_targets/fuzz_raw_cstr.rs deleted file mode 100644 index 4c9fabb2..00000000 --- a/modules/tsffs/src/util/raw-cstr/fuzz/fuzz_targets/fuzz_raw_cstr.rs +++ /dev/null @@ -1,26 +0,0 @@ -// Copyright (C) 2023 Intel Corporation -// SPDX-License-Identifier: Apache-2.0 - -#![no_main] -#![forbid(unsafe_code)] - -use arbitrary::Arbitrary; -use libfuzzer_sys::{fuzz_target, Corpus}; -use raw_cstr::raw_cstr; - -#[derive(Arbitrary, Debug)] -struct Input { - inputs: Vec, -} - -fuzz_target!(|data: Input| -> Corpus { - for s in &data.inputs { - if !s.contains('\0') { - let _ = raw_cstr(s).unwrap(); - } else { - return Corpus::Reject; - } - } - - Corpus::Keep -}); diff --git a/modules/tsffs/src/util/raw-cstr/src/lib.rs b/modules/tsffs/src/util/raw-cstr/src/lib.rs deleted file mode 100644 index b159419b..00000000 --- a/modules/tsffs/src/util/raw-cstr/src/lib.rs +++ /dev/null @@ -1,93 +0,0 @@ -// Copyright (C) 2023 Intel Corporation -// SPDX-License-Identifier: Apache-2.0 - -#![deny(clippy::unwrap_used)] - -use anyhow::{bail, Result}; -use std::{cell::RefCell, collections::HashMap, ffi::CString}; - -struct RawCStrs(RefCell>); - -impl Drop for RawCStrs { - fn drop(&mut self) { - self.0.borrow_mut().iter_mut().for_each(|(_, c)| unsafe { - drop(CString::from_raw(*c)); - }); - self.0.borrow_mut().clear(); - } -} - -thread_local! { - static RAW_CSTRS: RawCStrs = RawCStrs(RefCell::new(HashMap::new())); -} - -/// Create a constant raw C string as a `*mut i8` from a Rust string reference. C Strings are cached, -/// and creating the same string twice will cost zero additional memory. This is useful when calling -/// C APIs that take a string as an argument, particularly when the string can't be known at compile -/// time, although this function is also efficient in space (but not time) when a constant string -/// is known. For compile-time constants, you can use `c_str!`. -/// -/// # Safety -/// -/// - Do *not* use [`String::from_raw_parts`] to convert the pointer back to a [`String`]. This -/// may cause a double free because the [`String`] will take ownership of the pointer. Use -/// [`CStr::from_ptr`] instead, and convert to a string with -/// `.to_str().expect("...").to_owned()` instead. -/// -pub fn raw_cstr(str: S) -> Result<*mut i8> -where - S: AsRef, -{ - // This is the old, inefficient way to implement this. Instead, we use a thread local cache - // of raw strings, because we only use this function to talk to SIMICS - // let raw = CString::new(str.as_ref())?.into_raw(); - // Ok(raw) - RAW_CSTRS.with(|rc| { - let mut raw_cstrs_map = rc.0.borrow_mut(); - let saved = raw_cstrs_map.get(str.as_ref()); - - if let Some(saved) = saved { - Ok(*saved) - } else { - let raw = CString::new(str.as_ref())?.into_raw(); - raw_cstrs_map.insert(str.as_ref().to_string(), raw); - Ok(raw) - } - }) -} - -pub use byte_strings::c_str; - -pub trait AsRawCstr { - /// Get a type as a raw C string - fn as_raw_cstr(&self) -> Result<*mut i8>; -} - -impl AsRawCstr for &'static [u8] { - /// Get a static slice as a raw C string. Useful for interfaces. - fn as_raw_cstr(&self) -> Result<*mut i8> { - if self.last().is_some_and(|l| *l == 0) { - Ok(self.as_ptr() as *const i8 as *mut i8) - } else { - bail!("Empty slice or last element is nonzero: {:?}", self); - } - } -} - -impl AsRawCstr for *mut i8 { - fn as_raw_cstr(&self) -> Result<*mut i8> { - Ok(*self) - } -} - -impl AsRawCstr for &str { - fn as_raw_cstr(&self) -> Result<*mut i8> { - raw_cstr(self) - } -} - -impl AsRawCstr for String { - fn as_raw_cstr(&self) -> Result<*mut i8> { - raw_cstr(self) - } -} diff --git a/modules/tsffs/src/util/raw-cstr/tests/test.rs b/modules/tsffs/src/util/raw-cstr/tests/test.rs deleted file mode 100644 index a82c86c9..00000000 --- a/modules/tsffs/src/util/raw-cstr/tests/test.rs +++ /dev/null @@ -1,56 +0,0 @@ -// Copyright (C) 2023 Intel Corporation -// SPDX-License-Identifier: Apache-2.0 - -use std::ffi::CStr; - -use anyhow::Result; -use raw_cstr::raw_cstr; - -#[test] -fn test_string_eq() -> Result<()> { - const ORIG_STR: &str = "Hello, world!"; - let c_str = raw_cstr(ORIG_STR)?; - - let rust_str = unsafe { CStr::from_ptr(c_str) } - .to_str() - .expect("Couldn't get CStr") - .to_owned(); - - assert_eq!(rust_str, ORIG_STR, "Raw C String doesn't match"); - - Ok(()) -} - -#[test] -fn test_strings_reused() -> Result<()> { - const ORIG_STR: &str = "Hello, world!"; - let c_str = raw_cstr(ORIG_STR)?; - let o_c_str = raw_cstr(ORIG_STR)?; - - assert_eq!( - c_str as usize, o_c_str as usize, - "String pointers are different" - ); - - let rust_str = unsafe { CStr::from_ptr(c_str) } - .to_str() - .expect("Couldn't get CStr") - .to_owned(); - let o_rust_str = unsafe { CStr::from_ptr(o_c_str) } - .to_str() - .expect("Couldn't get CStr") - .to_owned(); - - assert_ne!(rust_str.as_ptr(), c_str as *const u8); - assert_ne!(o_rust_str.as_ptr(), c_str as *const u8); - assert_ne!(rust_str.as_ptr(), o_rust_str.as_ptr()); - - assert_eq!(rust_str, ORIG_STR, "Raw C String doesn't match rust string"); - assert_eq!( - o_rust_str, ORIG_STR, - "Other Raw C String doesn't match rust string" - ); - assert_eq!(rust_str, o_rust_str, "Raw C strings don't match each other"); - - Ok(()) -} diff --git a/modules/tsffs/src/util/version-tools/Cargo.toml b/modules/tsffs/src/util/version-tools/Cargo.toml deleted file mode 100644 index 1358e399..00000000 --- a/modules/tsffs/src/util/version-tools/Cargo.toml +++ /dev/null @@ -1,22 +0,0 @@ -# Copyright (C) 2023 Intel Corporation -# SPDX-License-Identifier: Apache-2.0 - -[package] -name = "version-tools" -categories.workspace = true -description = "Tools for parsing and sorting versions in non-semver formats" -edition.workspace = true -homepage.workspace = true -keywords.workspace = true -license.workspace = true -publish.workspace = true -readme.workspace = true -repository.workspace = true -version.workspace = true - -# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html - -[dependencies] -anyhow.workspace = true -serde.workspace = true -versions.workspace = true diff --git a/modules/tsffs/src/util/version-tools/fuzz/.gitignore b/modules/tsffs/src/util/version-tools/fuzz/.gitignore deleted file mode 100644 index 1a45eee7..00000000 --- a/modules/tsffs/src/util/version-tools/fuzz/.gitignore +++ /dev/null @@ -1,4 +0,0 @@ -target -corpus -artifacts -coverage diff --git a/modules/tsffs/src/util/version-tools/fuzz/Cargo.lock b/modules/tsffs/src/util/version-tools/fuzz/Cargo.lock deleted file mode 100644 index d658c2f8..00000000 --- a/modules/tsffs/src/util/version-tools/fuzz/Cargo.lock +++ /dev/null @@ -1,119 +0,0 @@ -# This file is automatically @generated by Cargo. -# It is not intended for manual editing. -version = 3 - -[[package]] -name = "anyhow" -version = "1.0.74" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c6f84b74db2535ebae81eede2f39b947dcbf01d093ae5f791e5dd414a1bf289" - -[[package]] -name = "arbitrary" -version = "1.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2d098ff73c1ca148721f37baad5ea6a465a13f9573aba8641fbbbae8164a54e" - -[[package]] -name = "cc" -version = "1.0.79" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50d30906286121d95be3d479533b458f87493b30a4b5f79a607db8f5d11aa91f" -dependencies = [ - "jobserver", -] - -[[package]] -name = "either" -version = "1.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7fcaabb2fef8c910e7f4c7ce9f67a1283a1715879a7c230ca9d6d1ae31f16d91" - -[[package]] -name = "itertools" -version = "0.10.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473" -dependencies = [ - "either", -] - -[[package]] -name = "jobserver" -version = "0.1.26" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "936cfd212a0155903bcbc060e316fb6cc7cbf2e1907329391ebadc1fe0ce77c2" -dependencies = [ - "libc", -] - -[[package]] -name = "libc" -version = "0.2.147" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4668fb0ea861c1df094127ac5f1da3409a82116a4ba74fca2e58ef927159bb3" - -[[package]] -name = "libfuzzer-sys" -version = "0.4.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "beb09950ae85a0a94b27676cccf37da5ff13f27076aa1adbc6545dd0d0e1bd4e" -dependencies = [ - "arbitrary", - "cc", - "once_cell", -] - -[[package]] -name = "memchr" -version = "2.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d" - -[[package]] -name = "minimal-lexical" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" - -[[package]] -name = "nom" -version = "7.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a" -dependencies = [ - "memchr", - "minimal-lexical", -] - -[[package]] -name = "once_cell" -version = "1.18.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd8b5dd2ae5ed71462c540258bedcb51965123ad7e7ccf4b9a8cafaa4a63576d" - -[[package]] -name = "version-tools" -version = "0.1.0" -dependencies = [ - "anyhow", - "versions", -] - -[[package]] -name = "version-tools-fuzz" -version = "0.0.0" -dependencies = [ - "libfuzzer-sys", - "version-tools", -] - -[[package]] -name = "versions" -version = "5.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32feb3eb91e495efe5b6b2e3ca9d78db603043434a3a398a84b47de28abb2d02" -dependencies = [ - "itertools", - "nom", -] diff --git a/modules/tsffs/src/util/version-tools/fuzz/Cargo.toml b/modules/tsffs/src/util/version-tools/fuzz/Cargo.toml deleted file mode 100644 index 9c18263d..00000000 --- a/modules/tsffs/src/util/version-tools/fuzz/Cargo.toml +++ /dev/null @@ -1,32 +0,0 @@ -# Copyright (C) 2023 Intel Corporation -# SPDX-License-Identifier: Apache-2.0 - -[package] -name = "version-tools-fuzz" -description = "Fuzz test cases for version-tools" -edition = "2021" -publish = false -version = "0.0.0" - - -[package.metadata] -cargo-fuzz = true - -[dependencies] -libfuzzer-sys = "0.4" - -[dependencies.version-tools] -path = ".." - -# Prevent this from interfering with workspaces -[workspace] -members = ["."] - -[profile.release] -debug = 1 - -[[bin]] -name = "fuzz_version_constraint_parse" -path = "fuzz_targets/fuzz_version_constraint_parse.rs" -test = false -doc = false diff --git a/modules/tsffs/src/util/version-tools/fuzz/fuzz_targets/fuzz_version_constraint_parse.rs b/modules/tsffs/src/util/version-tools/fuzz/fuzz_targets/fuzz_version_constraint_parse.rs deleted file mode 100644 index c1987048..00000000 --- a/modules/tsffs/src/util/version-tools/fuzz/fuzz_targets/fuzz_version_constraint_parse.rs +++ /dev/null @@ -1,14 +0,0 @@ -// Copyright (C) 2023 Intel Corporation -// SPDX-License-Identifier: Apache-2.0 - -#![no_main] -#![forbid(unsafe_code)] - -use libfuzzer_sys::fuzz_target; -use std::str::FromStr; -use version_tools::VersionConstraint; - -fuzz_target!(|data: &[u8]| { - let input = String::from_utf8_lossy(data); - VersionConstraint::from_str(&input).ok(); -}); diff --git a/modules/tsffs/src/util/version-tools/src/lib.rs b/modules/tsffs/src/util/version-tools/src/lib.rs deleted file mode 100644 index a948a4e0..00000000 --- a/modules/tsffs/src/util/version-tools/src/lib.rs +++ /dev/null @@ -1,442 +0,0 @@ -// Copyright (C) 2023 Intel Corporation -// SPDX-License-Identifier: Apache-2.0 - -//! Extensions to [`Versioning`] to make sorting, comparing, and constraining versions easier -//! -//! # Examples -//! -//! ``` -//! use anyhow::anyhow; -//! use version_tools::VersionConstraint; -//! use versions::Versioning; -//! use std::str::FromStr; -//! -//! let constraint = VersionConstraint::from_str(">=1.0.0")?; -//! assert!(constraint.matches(&Versioning::new("1.0.0").ok_or_else(|| anyhow!("Invalid version"))?)); -//! assert!(constraint.matches(&Versioning::new("1.1.0").ok_or_else(|| anyhow!("Invalid version"))?)); -//! assert!(!constraint.matches(&Versioning::new("0.9.0").ok_or_else(|| anyhow!("Invalid version"))?)); -//! # Ok::<(), anyhow::Error>(()) -//! ``` - -#![deny(clippy::unwrap_used)] -#![forbid(unsafe_code)] - -use anyhow::{anyhow, bail, Result}; -use serde::{de::Error as _, Deserialize, Deserializer}; -use std::{fmt::Display, str::FromStr}; -pub use versions::*; - -#[non_exhaustive] -#[derive(Debug, Clone, Hash, Eq, PartialEq)] -/// Operation component of a version constraint. For example, in `==1.0.0`, the `==` is the -/// operation that constrains the version to *exactly* 1.0.0. You can find more detailed -/// documentation in [`semver::Op`](https://docs.rs/semver/latest/semver/enum.Op.html) -pub enum Op { - /// `==` operation, exactly equal to this version - Exact, - /// `>` operation, must be semantically greater than this version - Greater, - /// `>=` operation, must be semantically greater than or equal to this version - GreaterEq, - /// `<` operation, must be semantically less than this version - Less, - /// `<=` operation, must be semantically less than or equal to this version - LessEq, - /// *Not implemented yet*, must be at least this version, but not more than one minor version - /// greater (the patch version may increase) - Tilde, - /// *Not implemented yet*, any part to the right of the first non-zero part of the version - /// may increase - Caret, - /// Any version matches - Wildcard, -} - -impl Display for Op { - fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - write!( - f, - "{}", - match self { - Op::Exact => "==", - Op::Greater => ">", - Op::GreaterEq => ">=", - Op::Less => "<", - Op::LessEq => "<=", - Op::Tilde => "~", - Op::Caret => "^", - Op::Wildcard => "*", - } - ) - } -} - -#[derive(Debug, Clone, Hash, Eq, PartialEq)] -/// A version constraint with an operation and a version, unless the operation is a wildcard -/// in which case the version is omitted. -pub struct VersionConstraint { - op: Op, - version: Option, -} - -impl VersionConstraint { - pub fn op(&self) -> &Op { - &self.op - } - - pub fn version(&self) -> Option<&Versioning> { - self.version.as_ref() - } -} - -impl From<&str> for VersionConstraint { - fn from(value: &str) -> Self { - value - .parse() - .unwrap_or_else(|_| panic!("Invalid version constraint {}", value)) - } -} - -impl FromStr for VersionConstraint { - type Err = anyhow::Error; - - /// Convert from a string like `==1.0.0` or `*` to a [`VersionConstraint`] - /// - /// # Examples - fn from_str(s: &str) -> Result { - let comparator: String = s - .chars() - .take_while(|c| matches!(c, '=' | '>' | '<' | '~' | '^' | '*')) - .collect(); - let rest = &s[comparator.len()..]; - let comp = match comparator.as_ref() { - "==" => Op::Exact, - ">" => Op::Greater, - ">=" => Op::GreaterEq, - "<" => Op::Less, - "<=" => Op::LessEq, - "~" => Op::Tilde, - "^" => Op::Caret, - "*" => Op::Wildcard, - "" => Op::Exact, - _ => bail!("Invalid constraint {}", comparator), - }; - - Ok(Self { - op: comp, - version: if rest.is_empty() { - None - } else { - Some( - Versioning::new(rest) - .ok_or_else(|| anyhow!("Invalid constraint string: {}", rest))?, - ) - }, - }) - } -} - -impl Display for VersionConstraint { - fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - write!( - f, - "{}{}", - self.op, - self.version - .as_ref() - .map(|v| v.to_string()) - .unwrap_or_default() - ) - } -} - -/// Checks whether two versioning triples are "tilde-compatible", that is v2's patch version -/// may be greater than v1's, but its major and minor versions may not be. -/// For tilde matches, the v2 patch can be greater than the v1 patch -fn version_triples_match_tilde(v1: &Versioning, v2: &Versioning) -> bool { - match v1 { - Versioning::Ideal(v1) => { - if let Versioning::Ideal(v2) = v2 { - v1.major == v2.major && v1.minor == v2.minor && v2.patch >= v1.patch - } else { - false - } - } - Versioning::General(v1) => { - if let Versioning::General(v2) = v2 { - if v1.chunks.0.len() != v2.chunks.0.len() { - false - } else { - // Check all but the last - for (v1_chunk, v2_chunk) in v1 - .chunks - .0 - .iter() - .rev() - .skip(1) - .rev() - .zip(v2.chunks.0.iter().rev().skip(1).rev()) - { - if v1_chunk != v2_chunk { - return false; - } - } - match (v1.chunks.0.last(), v2.chunks.0.last()) { - // TODO: Do our best with strings. Right now, the alpha patch version can be "less" than the - // first one and this will still be true - (Some(Chunk::Alphanum(_a1)), Some(Chunk::Alphanum(_a2))) => true, - (Some(Chunk::Numeric(n1)), Some(Chunk::Numeric(n2))) => n2 >= n1, - _ => false, - } - } - } else { - false - } - } - // Complex can't be tilde-equal because they're not semantic - Versioning::Complex(_svc) => false, - } -} - -impl VersionConstraint { - fn matches_tilde(&self, v: &Versioning) -> bool { - if let Some(version) = self.version.as_ref() { - version_triples_match_tilde(version, v) - } else { - false - } - } - - fn matches_caret(&self, _v: &Versioning) -> bool { - panic!("Caret constraint not implemented."); - } - - /// Check if a version matches a version constraint. - /// - /// # Examples - /// - /// ```rust - /// use anyhow::anyhow; - /// use version_tools::VersionConstraint; - /// use versions::Versioning; - /// use std::str::FromStr; - /// - /// let constraint_gt = VersionConstraint::from_str(">=1.0.0")?; - /// assert!(constraint_gt.matches(&Versioning::new("1.0.0").ok_or_else(|| anyhow!("Invalid version"))?)); - /// assert!(constraint_gt.matches(&Versioning::new("1.1.0").ok_or_else(|| anyhow!("Invalid version"))?)); - /// assert!(!constraint_gt.matches(&Versioning::new("0.9.0").ok_or_else(|| anyhow!("Invalid version"))?)); - /// - /// let constraint_wild = VersionConstraint::from_str("*")?; - /// assert!(constraint_wild.matches(&Versioning::new("1.0.0").ok_or_else(|| anyhow!("Invalid version"))?)); - /// assert!(constraint_wild.matches(&Versioning::new("1.1.0").ok_or_else(|| anyhow!("Invalid version"))?)); - /// assert!(constraint_wild.matches(&Versioning::new("0.9.0").ok_or_else(|| anyhow!("Invalid version"))?)); - /// - /// let constraint_eq = VersionConstraint::from_str("==1.0.0")?; - /// assert!(constraint_eq.matches(&Versioning::new("1.0.0").ok_or_else(|| anyhow!("Invalid version"))?)); - /// assert!(!constraint_eq.matches(&Versioning::new("1.1.0").ok_or_else(|| anyhow!("Invalid version"))?)); - /// assert!(!constraint_eq.matches(&Versioning::new("0.9.0").ok_or_else(|| anyhow!("Invalid version"))?)); - /// - /// # Ok::<(), anyhow::Error>(()) - /// ``` - pub fn matches(&self, v: &Versioning) -> bool { - if let Some(sv) = &self.version { - match self.op { - Op::Exact => v == sv, - Op::Greater => v > sv, - Op::GreaterEq => v >= sv, - Op::Less => v < sv, - Op::LessEq => v <= sv, - Op::Tilde => self.matches_tilde(v), - Op::Caret => self.matches_caret(v), - Op::Wildcard => true, - } - } else { - matches!(self.op, Op::Wildcard) - } - } -} - -impl Default for VersionConstraint { - fn default() -> Self { - Self { - op: Op::Wildcard, - version: None, - } - } -} - -pub fn versioning_from_string<'de, D>(deserializer: D) -> Result -where - D: Deserializer<'de>, -{ - let s: String = Deserialize::deserialize(deserializer)?; - - Versioning::new(&s) - .ok_or_else(|| anyhow!("Unable to deserialize {} as versioning", s)) - .map_err(D::Error::custom) -} - -pub fn version_constraint_from_string<'de, D>( - deserializer: D, -) -> Result -where - D: Deserializer<'de>, -{ - let s: String = Deserialize::deserialize(deserializer)?; - - s.parse().map_err(D::Error::custom) -} - -#[cfg(test)] -mod tests { - use crate::VersionConstraint; - use anyhow::{anyhow, Result}; - use std::str::FromStr; - use versions::Versioning; - - #[test] - fn test_eq() -> Result<()> { - assert!(VersionConstraint::from_str("==1.0.0")? - .matches(&Versioning::new("1.0.0").ok_or_else(|| anyhow!("Invalid version"))?)); - assert!(VersionConstraint::from_str("==1.1.0")? - .matches(&Versioning::new("1.1.0").ok_or_else(|| anyhow!("Invalid version"))?)); - assert!(VersionConstraint::from_str("==0.9.0")? - .matches(&Versioning::new("0.9.0").ok_or_else(|| anyhow!("Invalid version"))?)); - assert!(VersionConstraint::from_str("==6.0.pre134")? - .matches(&Versioning::new("6.0.pre134").ok_or_else(|| anyhow!("Invalid version"))?)); - assert!(VersionConstraint::from_str("==6.0.166")? - .matches(&Versioning::new("6.0.166").ok_or_else(|| anyhow!("Invalid version"))?)); - - // The == can be left off as a shorthand - assert!(VersionConstraint::from_str("1.0.0")? - .matches(&Versioning::new("1.0.0").ok_or_else(|| anyhow!("Invalid version"))?)); - assert!(VersionConstraint::from_str("1.1.0")? - .matches(&Versioning::new("1.1.0").ok_or_else(|| anyhow!("Invalid version"))?)); - assert!(VersionConstraint::from_str("0.9.0")? - .matches(&Versioning::new("0.9.0").ok_or_else(|| anyhow!("Invalid version"))?)); - assert!(VersionConstraint::from_str("6.0.pre134")? - .matches(&Versioning::new("6.0.pre134").ok_or_else(|| anyhow!("Invalid version"))?)); - assert!(VersionConstraint::from_str("6.0.166")? - .matches(&Versioning::new("6.0.166").ok_or_else(|| anyhow!("Invalid version"))?)); - - Ok(()) - } - - #[test] - fn test_wild() -> Result<()> { - let constraint_wild = VersionConstraint::from_str("*")?; - assert!(constraint_wild - .matches(&Versioning::new("1.0.0").ok_or_else(|| anyhow!("Invalid version"))?)); - assert!(constraint_wild - .matches(&Versioning::new("1.1.0").ok_or_else(|| anyhow!("Invalid version"))?)); - assert!(constraint_wild - .matches(&Versioning::new("0.9.0").ok_or_else(|| anyhow!("Invalid version"))?)); - assert!(constraint_wild - .matches(&Versioning::new("6.0.pre134").ok_or_else(|| anyhow!("Invalid version"))?)); - assert!(constraint_wild - .matches(&Versioning::new("6.0.166").ok_or_else(|| anyhow!("Invalid version"))?)); - - Ok(()) - } - - #[test] - fn test_gt() -> Result<()> { - let constraint_gt = VersionConstraint::from_str(">1.1.1")?; - - assert!(!constraint_gt - .matches(&Versioning::new("1.1.1").ok_or_else(|| anyhow!("Invalid version"))?)); - assert!(constraint_gt - .matches(&Versioning::new("2.2.2").ok_or_else(|| anyhow!("Invalid version"))?)); - assert!(constraint_gt - .matches(&Versioning::new("2.0.0").ok_or_else(|| anyhow!("Invalid version"))?)); - assert!(constraint_gt - .matches(&Versioning::new("1.2.0").ok_or_else(|| anyhow!("Invalid version"))?)); - assert!(constraint_gt - .matches(&Versioning::new("1.1.2").ok_or_else(|| anyhow!("Invalid version"))?)); - assert!(!constraint_gt - .matches(&Versioning::new("0.9.9").ok_or_else(|| anyhow!("Invalid version"))?)); - assert!(!constraint_gt - .matches(&Versioning::new("0.1.1").ok_or_else(|| anyhow!("Invalid version"))?)); - assert!(!constraint_gt - .matches(&Versioning::new("1.0.0").ok_or_else(|| anyhow!("Invalid version"))?)); - assert!(!constraint_gt - .matches(&Versioning::new("1.1.0").ok_or_else(|| anyhow!("Invalid version"))?)); - - Ok(()) - } - - #[test] - fn test_lt() -> Result<()> { - let constraint_lt = VersionConstraint::from_str("<1.1.1")?; - assert!(!constraint_lt - .matches(&Versioning::new("1.1.1").ok_or_else(|| anyhow!("Invalid version"))?)); - assert!(!constraint_lt - .matches(&Versioning::new("2.2.2").ok_or_else(|| anyhow!("Invalid version"))?)); - assert!(!constraint_lt - .matches(&Versioning::new("2.0.0").ok_or_else(|| anyhow!("Invalid version"))?)); - assert!(!constraint_lt - .matches(&Versioning::new("1.2.0").ok_or_else(|| anyhow!("Invalid version"))?)); - assert!(!constraint_lt - .matches(&Versioning::new("1.1.2").ok_or_else(|| anyhow!("Invalid version"))?)); - assert!(constraint_lt - .matches(&Versioning::new("0.9.9").ok_or_else(|| anyhow!("Invalid version"))?)); - assert!(constraint_lt - .matches(&Versioning::new("0.1.1").ok_or_else(|| anyhow!("Invalid version"))?)); - assert!(constraint_lt - .matches(&Versioning::new("1.0.0").ok_or_else(|| anyhow!("Invalid version"))?)); - assert!(constraint_lt - .matches(&Versioning::new("1.1.0").ok_or_else(|| anyhow!("Invalid version"))?)); - - Ok(()) - } - - #[test] - fn test_gte() -> Result<()> { - let constraint_gte = VersionConstraint::from_str(">=1.1.1")?; - assert!(constraint_gte - .matches(&Versioning::new("1.1.1").ok_or_else(|| anyhow!("Invalid version"))?)); - assert!(constraint_gte - .matches(&Versioning::new("2.2.2").ok_or_else(|| anyhow!("Invalid version"))?)); - assert!(constraint_gte - .matches(&Versioning::new("2.0.0").ok_or_else(|| anyhow!("Invalid version"))?)); - assert!(constraint_gte - .matches(&Versioning::new("1.2.0").ok_or_else(|| anyhow!("Invalid version"))?)); - assert!(constraint_gte - .matches(&Versioning::new("1.1.2").ok_or_else(|| anyhow!("Invalid version"))?)); - assert!(!constraint_gte - .matches(&Versioning::new("0.9.9").ok_or_else(|| anyhow!("Invalid version"))?)); - assert!(!constraint_gte - .matches(&Versioning::new("0.1.1").ok_or_else(|| anyhow!("Invalid version"))?)); - assert!(!constraint_gte - .matches(&Versioning::new("1.0.0").ok_or_else(|| anyhow!("Invalid version"))?)); - assert!(!constraint_gte - .matches(&Versioning::new("1.1.0").ok_or_else(|| anyhow!("Invalid version"))?)); - - Ok(()) - } - - #[test] - fn test_lte() -> Result<()> { - let constraint_lte = VersionConstraint::from_str("<=1.1.1")?; - assert!(constraint_lte - .matches(&Versioning::new("1.1.1").ok_or_else(|| anyhow!("Invalid version"))?)); - assert!(!constraint_lte - .matches(&Versioning::new("2.2.2").ok_or_else(|| anyhow!("Invalid version"))?)); - assert!(!constraint_lte - .matches(&Versioning::new("2.0.0").ok_or_else(|| anyhow!("Invalid version"))?)); - assert!(!constraint_lte - .matches(&Versioning::new("1.2.0").ok_or_else(|| anyhow!("Invalid version"))?)); - assert!(!constraint_lte - .matches(&Versioning::new("1.1.2").ok_or_else(|| anyhow!("Invalid version"))?)); - assert!(constraint_lte - .matches(&Versioning::new("0.9.9").ok_or_else(|| anyhow!("Invalid version"))?)); - assert!(constraint_lte - .matches(&Versioning::new("0.1.1").ok_or_else(|| anyhow!("Invalid version"))?)); - assert!(constraint_lte - .matches(&Versioning::new("1.0.0").ok_or_else(|| anyhow!("Invalid version"))?)); - assert!(constraint_lte - .matches(&Versioning::new("1.1.0").ok_or_else(|| anyhow!("Invalid version"))?)); - - Ok(()) - } -} diff --git a/modules/tsffs/tests/Cargo.toml b/modules/tsffs/tests/Cargo.toml deleted file mode 100644 index 1fbcb272..00000000 --- a/modules/tsffs/tests/Cargo.toml +++ /dev/null @@ -1,33 +0,0 @@ -# Copyright (C) 2023 Intel Corporation -# SPDX-License-Identifier: Apache-2.0 - -[package] -name = "tests" -categories.workspace = true -description = "Tests for the TSFFS fuzzer" -edition.workspace = true -homepage.workspace = true -keywords.workspace = true -license.workspace = true -publish.workspace = true -readme.workspace = true -repository.workspace = true -version.workspace = true - -[dependencies] -anyhow = { workspace = true } -cargo_metadata = "0.18.1" -command-ext = "0.1.1" -getters2 = "0.1.2" -indoc = "2.0.4" -ispm-wrapper.workspace = true -typed-builder = "0.18.0" -walkdir = "2.4.0" - -[dev-dependencies] - -[build-dependencies] -anyhow.workspace = true -command-ext = "0.1.1" -simics-codegen.workspace = true -ispm-wrapper.workspace = true diff --git a/modules/tsffs/tests/SUITEINFO b/modules/tsffs/tests/SUITEINFO deleted file mode 100644 index f1d686bc..00000000 --- a/modules/tsffs/tests/SUITEINFO +++ /dev/null @@ -1,2 +0,0 @@ -timeout: 360 -tags: tsffs \ No newline at end of file diff --git a/modules/tsffs/tests/build.rs b/modules/tsffs/tests/build.rs deleted file mode 100644 index 781b044d..00000000 --- a/modules/tsffs/tests/build.rs +++ /dev/null @@ -1,57 +0,0 @@ -use anyhow::{anyhow, Result}; -use command_ext::CommandExtCheck; -use ispm_wrapper::ispm::{self, GlobalOptions}; -use simics_codegen::simics_tests; -use std::{env::var, fs::write, path::PathBuf, process::Command}; - -const CARGO_MANIFEST_DIR: &str = "CARGO_MANIFEST_DIR"; -const OUT_DIR_ENV: &str = "OUT_DIR"; -const TESTS_FILE: &str = "tests.rs"; - -fn main() -> Result<()> { - let packages = ispm::packages::list(&GlobalOptions::default())?; - let base = packages - .installed_packages_ref() - .as_ref() - .ok_or_else(|| anyhow!("No installed packages"))? - .iter() - .find(|p| p.package_number_deref() == 1000isize) - .ok_or_else(|| anyhow!("No base in installed packages"))?; - - let out_dir = PathBuf::from( - var(OUT_DIR_ENV) - .map_err(|e| anyhow!("No environment variable {OUT_DIR_ENV} found: {e}"))?, - ); - let tests_out_file = out_dir.join(TESTS_FILE); - - let tests_tokens = simics_tests("../../../"); - write(tests_out_file, tests_tokens.to_string())?; - - let manifest_dir = PathBuf::from( - var(CARGO_MANIFEST_DIR) - .map_err(|e| anyhow!("No environment variable {OUT_DIR_ENV} found: {e}"))?, - ); - let targets_dir = manifest_dir.join("../../../examples/tests/"); - - println!("cargo:rerun-if-changed={}", targets_dir.display()); - - if var("TSFFS_TESTS_SKIP_BUILD").is_ok() { - println!("Skipping test build"); - } else { - Command::new(targets_dir.join("build.sh")) - .current_dir(targets_dir) - .env( - "SIMICS_BASE", - base.paths_ref() - .first() - .ok_or_else(|| anyhow!("No path to base package"))? - .to_string_lossy() - .to_string(), - ) - .check() - .expect("failed to build"); - println!("cargo:rerun-if-changed=build.rs"); - } - - Ok(()) -} diff --git a/modules/tsffs/tests/s-load-tsffs.py b/modules/tsffs/tests/s-load-tsffs.py deleted file mode 100644 index f0f7e9f3..00000000 --- a/modules/tsffs/tests/s-load-tsffs.py +++ /dev/null @@ -1,6 +0,0 @@ -# Test that we can successfully load the TSFFS module and create the TSFFS object - -import simics - -simics.SIM_load_module("tsffs") -tsffs = SIM_create_object(SIM_get_class("tsffs"), "tsffs", []) diff --git a/modules/tsffs/tests/s-test-fail.py b/modules/tsffs/tests/s-test-fail.py deleted file mode 100644 index 34ad3e8b..00000000 --- a/modules/tsffs/tests/s-test-fail.py +++ /dev/null @@ -1,6 +0,0 @@ -# Simplest possible failure test case, test that a failure can be checked for (test cases whose -# names end in -fail) are expected to fail. - -from stest import fail - -fail("Expected failure to test Rust test suite generation") diff --git a/modules/tsffs/tests/s-test-success.py b/modules/tsffs/tests/s-test-success.py deleted file mode 100644 index bf5dc1fe..00000000 --- a/modules/tsffs/tests/s-test-success.py +++ /dev/null @@ -1,3 +0,0 @@ -# Simplest possible test case -- test that simics can be imported - -import simics diff --git a/modules/tsffs/tests/src/lib.rs b/modules/tsffs/tests/src/lib.rs deleted file mode 100644 index 2b93e31b..00000000 --- a/modules/tsffs/tests/src/lib.rs +++ /dev/null @@ -1,470 +0,0 @@ -// Copyright (C) 2023 Intel Corporation -// SPDX-License-Identifier: Apache-2.0 - -//! SIMICS test utilities for test environment setup and configuration - -use anyhow::{anyhow, bail, ensure, Result}; -use cargo_metadata::MetadataCommand; -use getters2::Getters; -use ispm_wrapper::{ - data::ProjectPackage, - ispm::{ - self, - packages::{InstallOptions, UninstallOptions}, - projects::CreateOptions, - GlobalOptions, - }, - Internal, -}; -use std::{ - collections::HashSet, - env::var, - fs::{copy, create_dir_all, read_dir, remove_dir_all, write}, - path::{Path, PathBuf}, -}; -use typed_builder::TypedBuilder; -use walkdir::WalkDir; - -include!(concat!(env!("OUT_DIR"), "/tests.rs")); - -/// Copy the contents of one directory to another, recursively, overwriting files if they exist but -/// without replacing directories or their contents if they already exist -pub fn copy_dir_contents

(src_dir: P, dst_dir: P) -> Result<()> -where - P: AsRef, -{ - let src_dir = src_dir.as_ref().to_path_buf(); - ensure!(src_dir.is_dir(), "Source must be a directory"); - let dst_dir = dst_dir.as_ref().to_path_buf(); - if !dst_dir.is_dir() { - create_dir_all(&dst_dir)?; - } - - for (src, dst) in WalkDir::new(&src_dir) - .into_iter() - .filter_map(|p| p.ok()) - .filter_map(|p| { - let src = p.path().to_path_buf(); - match src.strip_prefix(&src_dir) { - Ok(suffix) => Some((src.clone(), dst_dir.join(suffix))), - Err(_) => None, - } - }) - { - if src.is_dir() { - create_dir_all(&dst)?; - } else if src.is_file() { - if let Err(e) = copy(&src, &dst) { - eprintln!( - "Warning: failed to copy file from {} to {}: {}", - src.display(), - dst.display(), - e - ); - } - } - } - Ok(()) -} - -/// Abstract install procedure for public and internal ISPM -pub fn local_or_remote_pkg_install(mut options: InstallOptions) -> Result<()> { - if Internal::is_internal()? { - ispm::packages::install(&options)?; - } else { - let installed = ispm::packages::list(&GlobalOptions::default())?; - - for package in options.packages_ref() { - let Some(installed) = installed.installed_packages_ref() else { - bail!("Did not get any installed packages"); - }; - let Some(available) = installed.iter().find(|p| { - p.package_number_deref() == package.package_number_deref() - && p.version_ref() == package.version_ref() - }) else { - bail!("Did not find package {package:?} in {installed:?}"); - }; - let Some(path) = available.paths_ref().first() else { - bail!("No paths for available package {available:?}"); - }; - let Some(install_dir) = options.global_ref().install_dir_ref() else { - bail!("No install dir for global options {options:?}"); - }; - - let package_install_dir = install_dir - .components() - .last() - .ok_or_else(|| { - anyhow!( - "No final component in install dir {}", - install_dir.display() - ) - })? - .as_os_str() - .to_str() - .ok_or_else(|| anyhow!("Could not convert component to string"))? - .to_string(); - - create_dir_all(&install_dir.join(&package_install_dir))?; - copy_dir_contents(path, &install_dir.join(&package_install_dir))?; - } - - // Clear the remote packages to install, we can install local paths no problem - options.packages_mut().clear(); - - if !options.package_paths_ref().is_empty() { - ispm::packages::install(&options)?; - } - } - - Ok(()) -} - -#[derive(Debug)] -pub enum Architecture { - X86, - Riscv, -} - -impl Architecture { - fn packages(&self) -> Vec { - match self { - Architecture::X86 => vec![ - ProjectPackage::builder() - .package_number(1000) - .version("6.0.169") - .build(), - // QSP-x86 - ProjectPackage::builder() - .package_number(2096) - .version("6.0.70") - .build(), - // QSP-CPU - ProjectPackage::builder() - .package_number(8112) - .version("6.0.17") - .build(), - ], - Architecture::Riscv => vec![ - ProjectPackage::builder() - .package_number(1000) - .version("6.0.169") - .build(), - // RISC-V-CPU - ProjectPackage::builder() - .package_number(2050) - .version("6.0.57") - .build(), - // RISC-V-Simple - ProjectPackage::builder() - .package_number(2053) - .version("6.0.4") - .build(), - ], - } - } -} - -#[derive(TypedBuilder, Debug)] -pub struct TestEnvSpec { - #[builder(setter(into))] - cargo_manifest_dir: String, - #[builder(setter(into))] - cargo_target_tmpdir: String, - #[builder(setter(into))] - name: String, - - #[builder(default, setter(strip_option, into))] - arch: Option, - #[builder(default, setter(into))] - extra_packages: Vec, - #[builder(default, setter(into))] - extra_nonrepo_packages: Vec, - #[builder(default = true)] - tsffs: bool, - #[builder(default, setter(into))] - files: Vec<(String, Vec)>, - #[builder(default, setter(into))] - directories: Vec, - #[builder(default, setter(into, strip_option))] - simics_home: Option, - #[builder(default, setter(into, strip_option))] - package_repo: Option, - #[builder(default = false)] - install_all: bool, -} - -impl TestEnvSpec { - pub fn to_env(&self) -> Result { - TestEnv::build(self) - } -} - -#[derive(Getters)] -pub struct TestEnv { - /// The base of the test environment, e.g. the `CARGO_TARGET_TMPDIR` directory - test_base: PathBuf, - /// The subdirectory in the test environment for this test - test_dir: PathBuf, - /// The project subdirectory in the test environment for this test - project_dir: PathBuf, - /// The simics home subdirectory in the test environment for this test - simics_home_dir: PathBuf, -} - -impl TestEnv { - pub fn simics_base_dir(&self) -> Result { - read_dir(self.simics_home_dir_ref())? - .filter_map(|d| d.ok()) - .filter(|d| d.path().is_dir()) - .map(|d| d.path()) - .find(|d| { - d.file_name() - .is_some_and(|n| n.to_string_lossy().starts_with("simics-6.")) - }) - .ok_or_else(|| anyhow!("No simics base")) - } -} - -impl TestEnv { - fn current_tsffs_version() -> Result { - let metadata = MetadataCommand::new().exec()?; - metadata - .workspace_metadata - .get("version") - .and_then(|v| v.as_str()) - .map(|v| v.to_string()) - .ok_or_else(|| anyhow!("No 'version' in workspace metadata")) - } - fn install_tsffs(simics_home_dir: P, cargo_manifest_dir: S) -> Result<()> - where - P: AsRef, - S: AsRef, - { - // NOTE: Uninstall and reinstall the tsffs module (installs the latest build) - ispm::packages::uninstall( - &UninstallOptions::builder() - .packages([ProjectPackage::builder() - .package_number(31337) - .version("latest") - .build()]) - .global( - GlobalOptions::builder() - .install_dir(simics_home_dir.as_ref()) - .build(), - ) - .build(), - ) - .map_err(|e| eprintln!("Not uninstalling package: {}", e)) - .ok(); - - local_or_remote_pkg_install( - InstallOptions::builder() - .package_paths([PathBuf::from(cargo_manifest_dir.as_ref()) - .join("../../../") - .join("linux64") - .join("packages") - .join(format!( - "simics-pkg-31337-{}-linux64.ispm", - Self::current_tsffs_version()? - ))]) - .global( - GlobalOptions::builder() - .install_dir(simics_home_dir.as_ref()) - .trust_insecure_packages(true) - .build(), - ) - .build(), - )?; - - Ok(()) - } - - pub fn install_files

(project_dir: P, files: &Vec<(String, Vec)>) -> Result<()> - where - P: AsRef, - { - for (name, content) in files { - let target = project_dir.as_ref().join(name); - - if let Some(target_parent) = target.parent() { - if target_parent != project_dir.as_ref() { - create_dir_all(target_parent)?; - } - } - write(target, content)?; - } - - Ok(()) - } - - pub fn install_directories

(project_dir: P, directories: &Vec) -> Result<()> - where - P: AsRef, - { - for directory in directories { - copy_dir_contents(directory, &project_dir.as_ref().to_path_buf())?; - } - - Ok(()) - } - - fn build(spec: &TestEnvSpec) -> Result { - let test_base = PathBuf::from(&spec.cargo_target_tmpdir); - let test_dir = test_base.join(&spec.name); - - let project_dir = test_dir.join("project"); - - let simics_home_dir = if let Some(simics_home) = spec.simics_home.as_ref() { - simics_home.clone() - } else { - create_dir_all(test_dir.join("simics"))?; - - test_dir.join("simics") - }; - - // Install nonrepo packages which do not use a possibly-provided package repo - if !spec.extra_nonrepo_packages.is_empty() { - println!("installing extra nonrepo packages"); - local_or_remote_pkg_install( - InstallOptions::builder() - .global( - GlobalOptions::builder() - .install_dir(&simics_home_dir) - .trust_insecure_packages(true) - .build(), - ) - .packages(spec.extra_nonrepo_packages.clone()) - .build(), - )?; - } - - let mut installed_packages = spec - .extra_nonrepo_packages - .iter() - .cloned() - .collect::>(); - - let mut packages = spec.extra_packages.clone(); - - if let Some(arch) = spec.arch.as_ref() { - packages.extend(arch.packages().clone()); - } - - if let Some(package_repo) = &spec.package_repo { - if !packages.is_empty() { - println!("Installing extra and arch packages with package repo"); - local_or_remote_pkg_install( - InstallOptions::builder() - .packages(packages.clone()) - .global( - GlobalOptions::builder() - .install_dir(&simics_home_dir) - .trust_insecure_packages(true) - .package_repo([package_repo.to_string()]) - .build(), - ) - .build(), - )?; - } - } else if !packages.is_empty() { - println!("Installing extra and arch packages without package repo"); - local_or_remote_pkg_install( - InstallOptions::builder() - .packages(packages.clone()) - .global( - GlobalOptions::builder() - .install_dir(&simics_home_dir) - .trust_insecure_packages(true) - .build(), - ) - .build(), - )?; - } - - installed_packages.extend(packages); - - if spec.install_all { - if let Some(package_repo) = &spec.package_repo { - println!("Installing all packages without package repo"); - local_or_remote_pkg_install( - InstallOptions::builder() - .install_all(spec.install_all) - .global( - GlobalOptions::builder() - .install_dir(&simics_home_dir) - .trust_insecure_packages(true) - .package_repo([package_repo.to_string()]) - .build(), - ) - .build(), - )?; - - let installed = ispm::packages::list( - &GlobalOptions::builder() - .install_dir(&simics_home_dir) - .build(), - )?; - - if let Some(installed) = installed.installed_packages_ref() { - installed_packages.extend(installed.iter().map(|ip| { - ProjectPackage::builder() - .package_number(ip.package_number_deref()) - .version(ip.version_clone()) - .build() - })); - } - } - } - - // Install TSFFS separately from local package - if spec.tsffs { - Self::install_tsffs(&simics_home_dir, &spec.cargo_manifest_dir)?; - - installed_packages.insert( - ProjectPackage::builder() - .package_number(31337) - .version("latest") - .build(), - ); - } - - // Create the project using the installed packages - ispm::projects::create( - &CreateOptions::builder() - .packages(installed_packages) - .global( - GlobalOptions::builder() - .install_dir(&simics_home_dir) - .trust_insecure_packages(true) - .build(), - ) - .ignore_existing_files(true) - .build(), - &project_dir, - ) - .ok(); - - Self::install_files(&project_dir, &spec.files)?; - Self::install_directories(&project_dir, &spec.directories)?; - - Ok(Self { - test_base, - test_dir, - project_dir, - simics_home_dir, - }) - } - - pub fn cleanup(&mut self) -> Result<()> { - remove_dir_all(self.test_dir_ref()).map_err(|e| anyhow!("Error cleaning up: {e}")) - } - - pub fn cleanup_if_env(&mut self) -> Result<()> { - if let Ok(_cleanup) = var("TSFFS_TEST_CLEANUP_EACH") { - self.cleanup()?; - } - - Ok(()) - } -} diff --git a/modules/tsffs/tests/tests/riscv_64.rs b/modules/tsffs/tests/tests/riscv_64.rs deleted file mode 100644 index 9c30f148..00000000 --- a/modules/tsffs/tests/tests/riscv_64.rs +++ /dev/null @@ -1,115 +0,0 @@ -// Copyright (C) 2023 Intel Corporation -// SPDX-License-Identifier: Apache-2.0 - -//! Test for fuzzing a kernel module using a harnessed user-space application -//! RISC-V architecture - -use anyhow::Result; -use command_ext::CommandExtCheck; -use std::{path::PathBuf, process::Command}; -use tests::{Architecture, TestEnvSpec}; - -#[test] -#[cfg_attr(miri, ignore)] -fn test_riscv_64_kernel_from_userspace_magic() -> Result<()> { - let mut env = TestEnvSpec::builder() - .name("test_riscv_64_kernel_from_userspace_magic") - .cargo_manifest_dir(env!("CARGO_MANIFEST_DIR")) - .cargo_target_tmpdir(env!("CARGO_TARGET_TMPDIR")) - .directories([PathBuf::from(env!("CARGO_MANIFEST_DIR")) - .join("..") - .join("..") - .join("..") - .join("examples") - .join("tests") - .join("riscv-64")]) - .arch(Architecture::Riscv) - .build() - .to_env()?; - - let output = Command::new("./simics") - .current_dir(env.project_dir_ref()) - .arg("--batch-mode") - .arg("-no-gui") - .arg("--no-win") - .arg("test-kernel-from-userspace-magic.simics") - .check()?; - - let output_str = String::from_utf8_lossy(&output.stdout); - - println!("{output_str}"); - - env.cleanup_if_env()?; - - Ok(()) -} - -#[test] -#[cfg_attr(miri, ignore)] -fn test_riscv_64_kernel_magic() -> Result<()> { - let mut env = TestEnvSpec::builder() - .name("test_riscv_64_kernel_magic") - .cargo_manifest_dir(env!("CARGO_MANIFEST_DIR")) - .cargo_target_tmpdir(env!("CARGO_TARGET_TMPDIR")) - .directories([PathBuf::from(env!("CARGO_MANIFEST_DIR")) - .join("..") - .join("..") - .join("..") - .join("examples") - .join("tests") - .join("riscv-64")]) - .arch(Architecture::Riscv) - .build() - .to_env()?; - - let output = Command::new("./simics") - .current_dir(env.project_dir_ref()) - .arg("--batch-mode") - .arg("-no-gui") - .arg("--no-win") - .arg("test-kernel-magic.simics") - .check()?; - - let output_str = String::from_utf8_lossy(&output.stdout); - - println!("{output_str}"); - - env.cleanup_if_env()?; - - Ok(()) -} - -#[test] -#[cfg_attr(miri, ignore)] -fn test_riscv_64_userspace_magic() -> Result<()> { - let mut env = TestEnvSpec::builder() - .name("test_riscv_64_userspace_magic") - .cargo_manifest_dir(env!("CARGO_MANIFEST_DIR")) - .cargo_target_tmpdir(env!("CARGO_TARGET_TMPDIR")) - .directories([PathBuf::from(env!("CARGO_MANIFEST_DIR")) - .join("..") - .join("..") - .join("..") - .join("examples") - .join("tests") - .join("riscv-64")]) - .arch(Architecture::Riscv) - .build() - .to_env()?; - - let output = Command::new("./simics") - .current_dir(env.project_dir_ref()) - .arg("--batch-mode") - .arg("-no-gui") - .arg("--no-win") - .arg("test-userspace-magic.simics") - .check()?; - - let output_str = String::from_utf8_lossy(&output.stdout); - - println!("{output_str}"); - - env.cleanup_if_env()?; - - Ok(()) -} diff --git a/modules/tsffs/tests/tests/x86.rs b/modules/tsffs/tests/tests/x86.rs deleted file mode 100644 index fea131de..00000000 --- a/modules/tsffs/tests/tests/x86.rs +++ /dev/null @@ -1,57 +0,0 @@ -// Copyright (C) 2023 Intel Corporation -// SPDX-License-Identifier: Apache-2.0 - -//! Test fuzzing an x86 user space application in Linux -//! -//! X86-64 architecture, hinted to x86 - -use anyhow::Result; -use command_ext::CommandExtCheck; -use ispm_wrapper::data::ProjectPackage; -use std::{path::PathBuf, process::Command}; -use tests::{Architecture, TestEnvSpec}; - -#[test] -#[cfg_attr(miri, ignore)] -fn test_x86_user_magic() -> Result<()> { - let mut env = TestEnvSpec::builder() - .name("x86-user") - .cargo_manifest_dir(env!("CARGO_MANIFEST_DIR")) - .cargo_target_tmpdir(env!("CARGO_TARGET_TMPDIR")) - .directories([PathBuf::from(env!("CARGO_MANIFEST_DIR")) - .join("..") - .join("..") - .join("..") - .join("examples") - .join("tests") - .join("x86-user")]) - .arch(Architecture::X86) - .extra_packages([ - ProjectPackage::builder() - .package_number(1030) - .version("6.0.4") - .build(), - ProjectPackage::builder() - .package_number(4094) - .version("6.0.14") - .build(), - ]) - .build() - .to_env()?; - - let output = Command::new("./simics") - .current_dir(env.project_dir_ref()) - .arg("--batch-mode") - .arg("-no-gui") - .arg("--no-win") - .arg("test-user.py") - .check()?; - - let output_str = String::from_utf8_lossy(&output.stdout); - - println!("{output_str}"); - - env.cleanup_if_env()?; - - Ok(()) -} diff --git a/modules/tsffs/tests/tests/x86_64.rs b/modules/tsffs/tests/tests/x86_64.rs deleted file mode 100644 index b1ff9244..00000000 --- a/modules/tsffs/tests/tests/x86_64.rs +++ /dev/null @@ -1,258 +0,0 @@ -// Copyright (C) 2023 Intel Corporation -// SPDX-License-Identifier: Apache-2.0 - -//! Test fuzzing a UEFI firmware built with EDK2 -//! -//! X86-64 architecture - -use anyhow::Result; -use command_ext::CommandExtCheck; -use ispm_wrapper::data::ProjectPackage; -use std::{path::PathBuf, process::Command}; -use tests::{Architecture, TestEnvSpec}; - -#[test] -#[cfg_attr(miri, ignore)] -fn test_x86_64_edk2_magic() -> Result<()> { - let mut env = TestEnvSpec::builder() - .name("test_x86_64_edk2_magic") - .cargo_manifest_dir(env!("CARGO_MANIFEST_DIR")) - .cargo_target_tmpdir(env!("CARGO_TARGET_TMPDIR")) - .directories([PathBuf::from(env!("CARGO_MANIFEST_DIR")) - .join("..") - .join("..") - .join("..") - .join("examples") - .join("tests") - .join("x86_64-uefi-edk2")]) - .arch(Architecture::X86) - .build() - .to_env()?; - - let output = Command::new("./simics") - .current_dir(env.project_dir_ref()) - .arg("--batch-mode") - .arg("-no-gui") - .arg("--no-win") - .arg("test-uefi-magic.simics") - .check()?; - - let output_str = String::from_utf8_lossy(&output.stdout); - - println!("{output_str}"); - env.cleanup_if_env()?; - - Ok(()) -} -#[test] -#[cfg_attr(miri, ignore)] -fn test_x86_64_magic_crash() -> Result<()> { - let mut env = TestEnvSpec::builder() - .name("test_x86_64_magic_crash") - .cargo_manifest_dir(env!("CARGO_MANIFEST_DIR")) - .cargo_target_tmpdir(env!("CARGO_TARGET_TMPDIR")) - .directories([PathBuf::from(env!("CARGO_MANIFEST_DIR")) - .join("..") - .join("..") - .join("..") - .join("examples") - .join("tests") - .join("x86_64-crash-uefi")]) - .arch(Architecture::X86) - .build() - .to_env()?; - - let output = Command::new("./simics") - .current_dir(env.project_dir_ref()) - .arg("--batch-mode") - .arg("-no-gui") - .arg("--no-win") - .arg("test-magic.simics") - .check()?; - - let output_str = String::from_utf8_lossy(&output.stdout); - - println!("{output_str}"); - env.cleanup_if_env()?; - - Ok(()) -} - -#[test] -#[cfg_attr(miri, ignore)] -fn test_x86_64_timeout_edk2() -> Result<()> { - let mut env = TestEnvSpec::builder() - .name("test_x86_64_timeout_edk2") - .cargo_manifest_dir(env!("CARGO_MANIFEST_DIR")) - .cargo_target_tmpdir(env!("CARGO_TARGET_TMPDIR")) - .directories([PathBuf::from(env!("CARGO_MANIFEST_DIR")) - .join("..") - .join("..") - .join("..") - .join("examples") - .join("tests") - .join("x86_64-timeout-uefi-edk2")]) - .arch(Architecture::X86) - .build() - .to_env()?; - - let output = Command::new("./simics") - .current_dir(env.project_dir_ref()) - .arg("--batch-mode") - .arg("-no-gui") - .arg("--no-win") - .arg("test-magic.simics") - .check()?; - - let output_str = String::from_utf8_lossy(&output.stdout); - - println!("{output_str}"); - env.cleanup_if_env()?; - - Ok(()) -} - -#[test] -#[cfg_attr(miri, ignore)] -fn test_x86_64_magic() -> Result<()> { - let mut env = TestEnvSpec::builder() - .name("test_x86_64_magic") - .cargo_manifest_dir(env!("CARGO_MANIFEST_DIR")) - .cargo_target_tmpdir(env!("CARGO_TARGET_TMPDIR")) - .directories([PathBuf::from(env!("CARGO_MANIFEST_DIR")) - .join("..") - .join("..") - .join("..") - .join("examples") - .join("tests") - .join("x86_64-uefi")]) - .arch(Architecture::X86) - .build() - .to_env()?; - - let output = Command::new("./simics") - .current_dir(env.project_dir_ref()) - .arg("--batch-mode") - .arg("-no-gui") - .arg("--no-win") - .arg("test-magic.simics") - .check()?; - - let output_str = String::from_utf8_lossy(&output.stdout); - - println!("{output_str}"); - env.cleanup_if_env()?; - - Ok(()) -} - -#[test] -#[cfg_attr(miri, ignore)] -fn test_x86_64_manual() -> Result<()> { - let mut env = TestEnvSpec::builder() - .name("test_x86_64_manual") - .cargo_manifest_dir(env!("CARGO_MANIFEST_DIR")) - .cargo_target_tmpdir(env!("CARGO_TARGET_TMPDIR")) - .directories([PathBuf::from(env!("CARGO_MANIFEST_DIR")) - .join("..") - .join("..") - .join("..") - .join("examples") - .join("tests") - .join("x86_64-uefi")]) - .arch(Architecture::X86) - .extra_packages([ProjectPackage::builder() - .package_number(1030) - .version("6.0.4") - .build()]) - .build() - .to_env()?; - - let output = Command::new("./simics") - .current_dir(env.project_dir_ref()) - .arg("--batch-mode") - .arg("-no-gui") - .arg("--no-win") - .arg("test-manual.py") - .check()?; - - let output_str = String::from_utf8_lossy(&output.stdout); - - println!("{output_str}"); - env.cleanup_if_env()?; - - Ok(()) -} - -#[test] -#[cfg_attr(miri, ignore)] -fn test_x86_64_manual_max() -> Result<()> { - let mut env = TestEnvSpec::builder() - .name("test_x86_64_manual_max") - .cargo_manifest_dir(env!("CARGO_MANIFEST_DIR")) - .cargo_target_tmpdir(env!("CARGO_TARGET_TMPDIR")) - .directories([PathBuf::from(env!("CARGO_MANIFEST_DIR")) - .join("..") - .join("..") - .join("..") - .join("examples") - .join("tests") - .join("x86_64-uefi")]) - .arch(Architecture::X86) - .extra_packages([ProjectPackage::builder() - .package_number(1030) - .version("6.0.4") - .build()]) - .build() - .to_env()?; - - let output = Command::new("./simics") - .current_dir(env.project_dir_ref()) - .arg("--batch-mode") - .arg("-no-gui") - .arg("--no-win") - .arg("test-manual-max.py") - .check()?; - - let output_str = String::from_utf8_lossy(&output.stdout); - - println!("{output_str}"); - - env.cleanup_if_env()?; - - Ok(()) -} - -#[test] -#[cfg_attr(miri, ignore)] -fn test_x86_64_edk2_magic_call_all_apis() -> Result<()> { - let mut env = TestEnvSpec::builder() - .name("test_x86_64_edk2_magic_call_all_apis") - .cargo_manifest_dir(env!("CARGO_MANIFEST_DIR")) - .cargo_target_tmpdir(env!("CARGO_TARGET_TMPDIR")) - .directories([PathBuf::from(env!("CARGO_MANIFEST_DIR")) - .join("..") - .join("..") - .join("..") - .join("examples") - .join("tests") - .join("x86_64-uefi-edk2")]) - .arch(Architecture::X86) - .build() - .to_env()?; - - let output = Command::new("./simics") - .current_dir(env.project_dir_ref()) - .arg("--batch-mode") - .arg("-no-gui") - .arg("--no-win") - .arg("test-call-all-apis.simics") - .check()?; - - let output_str = String::from_utf8_lossy(&output.stdout); - - println!("{output_str}"); - env.cleanup_if_env()?; - - Ok(()) -} diff --git a/scripts/build.sh b/scripts/build.sh index 17df3a0f..d0be942d 100755 --- a/scripts/build.sh +++ b/scripts/build.sh @@ -1,7 +1,17 @@ #!/bin/bash -PUBLIC_SIMICS_PKGS_URL="https://registrationcenter-download.intel.com/akdlm/IRC_NAS/881ee76a-c24d-41c0-af13-5d89b2a857ff/simics-6-packages-2023-31-linux64.ispm" -PUBLIC_SIMICS_ISPM_URL="https://registrationcenter-download.intel.com/akdlm/IRC_NAS/881ee76a-c24d-41c0-af13-5d89b2a857ff/intel-simics-package-manager-1.7.5-linux64.tar.gz" +# Copyright (C) 2024 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + +CFE_URL="https://releases.llvm.org/5.0.2/cfe-5.0.2.src.tar.xz" +LLVM_SRC_URL="https://releases.llvm.org/5.0.2/llvm-5.0.2.src.tar.xz" +MAKE_SRC_URL="https://ftp.gnu.org/gnu/make/make-4.4.1.tar.gz" +RUSTUP_INIT_URL="https://static.rust-lang.org/rustup/dist/x86_64-unknown-linux-gnu/rustup-init" +CMAKE_URL="https://github.com/Kitware/CMake/releases/download/v3.28.0-rc5/cmake-3.28.0-rc5-linux-x86_64.tar.gz" +PATCHELF_URL="https://github.com/NixOS/patchelf/releases/download/0.18.0/patchelf-0.18.0-x86_64.tar.gz" +PUBLIC_SIMICS_PKGS_URL="https://registrationcenter-download.intel.com/akdlm/IRC_NAS/ead79ef5-28b5-48c7-8d1f-3cde7760798f/simics-6-packages-2024-05-linux64.ispm" +PUBLIC_SIMICS_ISPM_URL="https://registrationcenter-download.intel.com/akdlm/IRC_NAS/ead79ef5-28b5-48c7-8d1f-3cde7760798f/intel-simics-package-manager-1.8.3-linux64.tar.gz" +PUBLIC_SIMICS_PACKAGE_VERSION_1000="6.0.185" SCRIPT_DIR=$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" &>/dev/null && pwd) ROOT_DIR="${SCRIPT_DIR}/../" BUILDER_DIR="${ROOT_DIR}/.github/builder/" @@ -10,16 +20,54 @@ CONTAINER_UID=$(echo "${RANDOM}" | sha256sum | head -c 8) CONTAINER_NAME="${IMAGE_NAME}-tmp-${CONTAINER_UID}" mkdir -p "${BUILDER_DIR}/rsrc" + if [ ! -f "${BUILDER_DIR}/rsrc/ispm.tar.gz" ]; then - curl --noproxy '*.intel.com' -o "${BUILDER_DIR}/rsrc/ispm.tar.gz" \ + curl --noproxy '*.intel.com' -L -o "${BUILDER_DIR}/rsrc/ispm.tar.gz" \ "${PUBLIC_SIMICS_ISPM_URL}" fi + if [ ! -f "${BUILDER_DIR}/rsrc/simics.ispm" ]; then - curl --noproxy '*.intel.com' -o "${BUILDER_DIR}/rsrc/simics.ispm" \ + curl --noproxy '*.intel.com' -L -o "${BUILDER_DIR}/rsrc/simics.ispm" \ "${PUBLIC_SIMICS_PKGS_URL}" fi -docker build -t "${IMAGE_NAME}" -f "${BUILDER_DIR}/Dockerfile" "${ROOT_DIR}" +if [ ! -f "${BUILDER_DIR}/rsrc/cfe-5.0.2.src.tar.xz" ]; then + curl --noproxy '*.intel.com' -L -o "${BUILDER_DIR}/rsrc/cfe-5.0.2.src.tar.xz" \ + "${CFE_URL}" +fi + +if [ ! -f "${BUILDER_DIR}/rsrc/llvm-5.0.2.src.tar.xz" ]; then + curl --noproxy '*.intel.com' -L -o "${BUILDER_DIR}/rsrc/llvm-5.0.2.src.tar.xz" \ + "${LLVM_SRC_URL}" +fi + +if [ ! -f "${BUILDER_DIR}/rsrc/make-4.4.1.tar.gz" ]; then + curl --noproxy '*.intel.com' -L -o "${BUILDER_DIR}/rsrc/make-4.4.1.tar.gz" \ + "${MAKE_SRC_URL}" +fi + +if [ ! -f "${BUILDER_DIR}/rsrc/rustup-init" ]; then + curl --noproxy '*.intel.com' -L -o "${BUILDER_DIR}/rsrc/rustup-init" \ + "${RUSTUP_INIT_URL}" + chmod +x "${BUILDER_DIR}/rsrc/rustup-init" +fi + +if [ ! -f "${BUILDER_DIR}/rsrc/cmake-3.28.0-rc5-linux-x86_64.tar.gz" ]; then + curl --noproxy '*.intel.com' -L -o "${BUILDER_DIR}/rsrc/cmake-3.28.0-rc5-linux-x86_64.tar.gz" \ + "${CMAKE_URL}" +fi + +if [ ! -f "${BUILDER_DIR}/rsrc/patchelf-0.18.0-x86_64.tar.gz" ]; then + curl --noproxy '*.intel.com' -L -o "${BUILDER_DIR}/rsrc/patchelf-0.18.0-x86_64.tar.gz" \ + "${PATCHELF_URL}" +fi + +unset SIMICS_BASE +docker build \ + --build-arg \ + "PUBLIC_SIMICS_PACKAGE_VERSION_1000=${PUBLIC_SIMICS_PACKAGE_VERSION_1000}" \ + -t "${IMAGE_NAME}" -f "${BUILDER_DIR}/Dockerfile" "${ROOT_DIR}" docker create --name "${CONTAINER_NAME}" "${IMAGE_NAME}" bash -docker cp "${CONTAINER_NAME}:/tsffs/linux64/packages/" "${ROOT_DIR}" +mkdir -p "${ROOT_DIR}/packages" +docker cp "${CONTAINER_NAME}:/packages" "${ROOT_DIR}/" docker rm -f "${CONTAINER_NAME}" \ No newline at end of file diff --git a/scripts/check.sh b/scripts/check.sh index 0232d788..99b89a96 100755 --- a/scripts/check.sh +++ b/scripts/check.sh @@ -1,6 +1,6 @@ #!/bin/bash -# Copyright (C) 2023 Intel Corporation +# Copyright (C) 2024 Intel Corporation # SPDX-License-Identifier: Apache-2.0 SCRIPT_DIR=$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" &>/dev/null && pwd) @@ -90,7 +90,7 @@ echo "=================" echo "Running markdownlint..." echo "=================" -fd '.*\.md$' -x markdownlint -c "${SCRIPT_DIR}/../.github/linters/.markdown-lint.yml" {} +fd '.*\.md$' -x markdownlint -c "${SCRIPT_DIR}/../.github/linters/.markdown-lint.yml" echo "=================" echo "Running hadolint..." diff --git a/scripts/ci.sh b/scripts/ci.sh index 96de2b02..73cbab35 100755 --- a/scripts/ci.sh +++ b/scripts/ci.sh @@ -1,6 +1,6 @@ #!/bin/bash -# Copyright (C) 2023 Intel Corporation +# Copyright (C) 2024 Intel Corporation # SPDX-License-Identifier: Apache-2.0 #Run workflows locally using act @@ -79,6 +79,6 @@ ARTIFACT_DIR=$(mktemp -d) populate_env_file "${ENV_FILE}" mkdir -p "${SCRIPT_DIR}/../.github/logs/" unbuffer act -W "${WORKFLOW_FILE}" --env-file="${ENV_FILE}" --secret-file="${SECRETS_FILE}" \ - --artifact-server-path "${ARTIFACT_DIR}" \ + --artifact-server-path "${ARTIFACT_DIR}" --artifact-server-addr "0.0.0.0" \ "$@" | tee "${SCRIPT_DIR}/../.github/logs/$(date '+%F-%T').log" rm "${ENV_FILE}" diff --git a/scripts/cov.sh b/scripts/cov.sh index 2c6521c1..3f6ced8a 100755 --- a/scripts/cov.sh +++ b/scripts/cov.sh @@ -1,6 +1,6 @@ #!/bin/bash -# Copyright (C) 2023 Intel Corporation +# Copyright (C) 2024 Intel Corporation # SPDX-License-Identifier: Apache-2.0 SCRIPT_DIR=$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" &>/dev/null && pwd) diff --git a/scripts/dependabot.sh b/scripts/dependabot.sh index f064aeb4..729c0a9e 100755 --- a/scripts/dependabot.sh +++ b/scripts/dependabot.sh @@ -1,6 +1,6 @@ #!/bin/bash -# Copyright (C) 2023 Intel Corporation +# Copyright (C) 2024 Intel Corporation # SPDX-License-Identifier: Apache-2.0 if ! command -v jq &>/dev/null; then diff --git a/scripts/fmt.sh b/scripts/fmt.sh index 3dc6769a..9afce91f 100755 --- a/scripts/fmt.sh +++ b/scripts/fmt.sh @@ -1,6 +1,6 @@ #!/bin/bash -# Copyright (C) 2023 Intel Corporation +# Copyright (C) 2024 Intel Corporation # SPDX-License-Identifier: Apache-2.0 # Clang-Format diff --git a/scripts/license.sh b/scripts/license.sh index 0aed08fe..0f1f4d63 100755 --- a/scripts/license.sh +++ b/scripts/license.sh @@ -1,5 +1,8 @@ #!/bin/bash +# Copyright (C) 2024 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + SCRIPT_DIR=$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" &>/dev/null && pwd) if ! command -v fd &>/dev/null; then @@ -16,32 +19,28 @@ fd -t f -0 '.*\.rs$' "${SCRIPT_DIR}/../" | rargs -0 bash -c \ "if ! grep -q 'SPDX-License-Identifier: Apache-2.0' {}; then if grep -qzE '^#!/' {}; then echo 'Adding license to file with shebang' {} - sed -i '2s/^/\n\/\/ Copyright (C) 2023 Intel Corporation\n\/\/ SPDX-License-Identifier: Apache-2.0\n\n/' {} + sed -i '2s/^/\n\/\/ Copyright (C) 2024 Intel Corporation\n\/\/ SPDX-License-Identifier: Apache-2.0\n\n/' {} else echo 'Adding license to ' {} - sed -i '1s/^/\/\/ Copyright (C) 2023 Intel Corporation\n\/\/ SPDX-License-Identifier: Apache-2.0\n\n/' {} + sed -i '1s/^/\/\/ Copyright (C) 2024 Intel Corporation\n\/\/ SPDX-License-Identifier: Apache-2.0\n\n/' {} fi fi" fd -t f -0 '.*\.(c|h|cc|hh|hpp|cpp)$' "${SCRIPT_DIR}/../" | rargs -0 bash -c \ - "if ! grep -q 'SPDX-License-Identifier: Apache-2.0' {}; then - sed -i '1s/^/\/\/ Copyright (C) 2023 Intel Corporation\n\/\/ SPDX-License-Identifier: Apache-2.0\n\n/' {} - fi" - -fd -t f -0 '.*\.(c|h|cc|hh|hpp|cpp)$' "${SCRIPT_DIR}/../" | rargs -0 bash -c \ - "if ! grep -q 'SPDX-License-Identifier: Apache-2.0' {}; then - sed -i '1s/^/# Copyright (C) 2023 Intel Corporation\n\# SPDX-License-Identifier: Apache-2.0\n\n/' {} + "if ! grep -q 'SPDX-License-Identifier: Apache-2.0' {} && ! grep -q 'LICENSE: IGNORE' {}; then + echo 'Adding license to ' {} + sed -i '1s/^/\/\/ Copyright (C) 2024 Intel Corporation\n\/\/ SPDX-License-Identifier: Apache-2.0\n\n/' {} fi" MISSING_LICENSE_FILES=() while IFS= read -r -d $'\0' LICENSE_REQUIRED_FILE; do - if ! grep -q 'SPDX-License-Identifier: Apache-2.0' "${LICENSE_REQUIRED_FILE}"; then + if ! grep -q 'SPDX-License-Identifier: Apache-2.0' "${LICENSE_REQUIRED_FILE}" && ! grep -q 'LICENSE: IGNORE' "${LICENSE_REQUIRED_FILE}"; then MISSING_LICENSE_FILES+=("${LICENSE_REQUIRED_FILE}") fi done < <(fd -0 -t f -e 'c' -e 'dml' -e 'h' \ -e 'inf' -e 'ini' -e 'ninja' -e 'nsh' -e 'py' -e 'rs' -e 'sh' -e 'simics' \ - -e 'toml' -e 'yaml' -e 'yml' -e 'cpp' -e 'cc' -e 'hh' -e 'hpp' . "${SCRIPT_DIR}/../") + -e 'toml' -e 'yaml' -e 'yml' . "${SCRIPT_DIR}/../") if [ "${#MISSING_LICENSE_FILES[@]}" -eq 0 ]; then exit 0 diff --git a/scripts/update-simics-rs.sh b/scripts/update-simics-rs.sh new file mode 100755 index 00000000..070ce3d5 --- /dev/null +++ b/scripts/update-simics-rs.sh @@ -0,0 +1,23 @@ +#!/bin/bash + +# Copyright (C) 2024 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + +SIMICS_RS_SRC="$1" + +SCRIPT_DIR=$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" &>/dev/null && pwd) + +if [ ! -d "${SIMICS_RS_SRC}" ]; then + echo "Error: argument should be the path to the simics-rs repository" + exit 1 +fi + +if [ ! -f "${SIMICS_RS_SRC}/Cargo.toml" ]; then + echo "Error: argument should be the path to the simics-rs repository" + exit 1 +fi + +CURRENT_SIMICS_RS_SRC="${SCRIPT_DIR}/../simics-rs" + +rm -rf "${CURRENT_SIMICS_RS_SRC}" +cp -a "${SIMICS_RS_SRC}" "${CURRENT_SIMICS_RS_SRC}" \ No newline at end of file diff --git a/simics-rs/.dockerignore b/simics-rs/.dockerignore new file mode 100644 index 00000000..44709884 --- /dev/null +++ b/simics-rs/.dockerignore @@ -0,0 +1,2 @@ +target/ +Cargo.lock \ No newline at end of file diff --git a/simics-rs/.github/.gitignore b/simics-rs/.github/.gitignore new file mode 100644 index 00000000..cd3d2253 --- /dev/null +++ b/simics-rs/.github/.gitignore @@ -0,0 +1 @@ +logs \ No newline at end of file diff --git a/simics-rs/.github/linters/.flake8 b/simics-rs/.github/linters/.flake8 new file mode 100644 index 00000000..e0ea542f --- /dev/null +++ b/simics-rs/.github/linters/.flake8 @@ -0,0 +1,3 @@ +[flake8] +max-line-length = 88 +extend-ignore = E203 \ No newline at end of file diff --git a/simics-rs/.github/linters/.hadolint.yaml b/simics-rs/.github/linters/.hadolint.yaml new file mode 100644 index 00000000..88beca8a --- /dev/null +++ b/simics-rs/.github/linters/.hadolint.yaml @@ -0,0 +1,10 @@ +--- +########################## +## Hadolint config file ## +########################## + +failure-threshold: warning + +ignored: + - DL3022 # DL3022 raises a false positive when --build-context is used to provide multiple + # contexts \ No newline at end of file diff --git a/simics-rs/.github/linters/.isort.cfg b/simics-rs/.github/linters/.isort.cfg new file mode 100644 index 00000000..b9fb3f3e --- /dev/null +++ b/simics-rs/.github/linters/.isort.cfg @@ -0,0 +1,2 @@ +[settings] +profile=black diff --git a/simics-rs/.github/linters/.jscpd.json b/simics-rs/.github/linters/.jscpd.json new file mode 100644 index 00000000..be25c8e6 --- /dev/null +++ b/simics-rs/.github/linters/.jscpd.json @@ -0,0 +1,10 @@ +{ + "threshold": 0, + "reporters": [ + "consoleFull" + ], + "ignore": [ + "ci.yml" + ], + "absolute": true +} \ No newline at end of file diff --git a/simics-rs/.github/linters/.markdown-lint.yml b/simics-rs/.github/linters/.markdown-lint.yml new file mode 100644 index 00000000..b7f70180 --- /dev/null +++ b/simics-rs/.github/linters/.markdown-lint.yml @@ -0,0 +1,39 @@ +--- +########################### +########################### +## Markdown Linter rules ## +########################### +########################### + +# Linter rules doc: +# - https://github.com/DavidAnson/markdownlint +# +# Note: +# To comment out a single error: +# +# any violations you want +# +# + +############### +# Rules by id # +############### +MD004: false # Unordered list style +MD007: + indent: 2 # Unordered list indentation +MD013: + line_length: 88 # Line length 80 is far too short + ignore_code_blocks: true + tables: false + code_blocks: false +MD026: + punctuation: ".,;:!。,;:" # List of not allowed +MD029: false # Ordered list item prefix +MD033: false # Allow inline HTML +MD036: false # Emphasis used instead of a heading +MD041: false # HTML can be at the top of the file for the image and such + +################# +# Rules by tags # +################# +blank_lines: false # Error on blank lines diff --git a/simics-rs/.github/linters/.mypy.ini b/simics-rs/.github/linters/.mypy.ini new file mode 100644 index 00000000..1fa57020 --- /dev/null +++ b/simics-rs/.github/linters/.mypy.ini @@ -0,0 +1,4 @@ +# Global options: + +[mypy] +ignore_missing_imports = True \ No newline at end of file diff --git a/modules/.gitignore b/simics-rs/.github/linters/.python-black similarity index 100% rename from modules/.gitignore rename to simics-rs/.github/linters/.python-black diff --git a/simics-rs/.github/linters/.textlintrc b/simics-rs/.github/linters/.textlintrc new file mode 100644 index 00000000..503a415a --- /dev/null +++ b/simics-rs/.github/linters/.textlintrc @@ -0,0 +1,5 @@ +{ + "rules": { + "terminology": false + } +} \ No newline at end of file diff --git a/simics-rs/.github/linters/.yaml-lint.yml b/simics-rs/.github/linters/.yaml-lint.yml new file mode 100644 index 00000000..6da6e2fc --- /dev/null +++ b/simics-rs/.github/linters/.yaml-lint.yml @@ -0,0 +1,61 @@ +--- +########################################### +# These are the rules used for # +# linting all the yaml files in the stack # +# NOTE: # +# You can disable line with: # +# # yamllint disable-line # +########################################### +rules: + braces: + level: warning + min-spaces-inside: 0 + max-spaces-inside: 0 + min-spaces-inside-empty: 1 + max-spaces-inside-empty: 5 + brackets: + level: warning + min-spaces-inside: 0 + max-spaces-inside: 0 + min-spaces-inside-empty: 1 + max-spaces-inside-empty: 5 + colons: + level: warning + max-spaces-before: 0 + max-spaces-after: 1 + commas: + level: warning + max-spaces-before: 0 + min-spaces-after: 1 + max-spaces-after: 1 + comments: disable + comments-indentation: disable + document-end: disable + document-start: + level: warning + present: true + empty-lines: + level: warning + max: 2 + max-start: 0 + max-end: 0 + hyphens: + level: warning + max-spaces-after: 1 + indentation: + level: warning + spaces: consistent + indent-sequences: true + check-multi-line-strings: false + key-duplicates: enable + line-length: + level: warning + max: 120 + allow-non-breakable-words: true + allow-non-breakable-inline-mappings: true + ignore: | + ci.yml + new-line-at-end-of-file: disable + new-lines: + type: unix + trailing-spaces: disable diff --git a/simics-rs/.github/linters/actionlint.yml b/simics-rs/.github/linters/actionlint.yml new file mode 100644 index 00000000..5e3b7c90 --- /dev/null +++ b/simics-rs/.github/linters/actionlint.yml @@ -0,0 +1,5 @@ +--- +self-hosted-runner: + # Labels of self-hosted runner in array of string + labels: + - gasp diff --git a/simics-rs/.gitignore b/simics-rs/.gitignore new file mode 100644 index 00000000..bd166907 --- /dev/null +++ b/simics-rs/.gitignore @@ -0,0 +1,6 @@ +target/ +.cargo +.vscode +Cargo.lock +.env +.secrets diff --git a/simics-rs/CITATION.cff b/simics-rs/CITATION.cff new file mode 100644 index 00000000..4256ed15 --- /dev/null +++ b/simics-rs/CITATION.cff @@ -0,0 +1,12 @@ +cff-version: 1.2.0 +message: "SIMICS bindings and utilities for Rust" +authors: + - family-names: "Hart" + given-names: "Rowan" + orcid: "https://orcid.org/0000-0001-9932-3798" + +title: "simics-rs" +version: 0.1.0 +doi: "" +date-released: 2024-01-10 +url: "" diff --git a/simics-rs/CODE_OF_CONDUCT.md b/simics-rs/CODE_OF_CONDUCT.md new file mode 100644 index 00000000..5716bd89 --- /dev/null +++ b/simics-rs/CODE_OF_CONDUCT.md @@ -0,0 +1,127 @@ +# Contributor Covenant Code of Conduct + +## Our Pledge + +We as members, contributors, and leaders pledge to make participation in our +community a harassment-free experience for everyone, regardless of age, body +size, visible or invisible disability, ethnicity, sex characteristics, gender +identity and expression, level of experience, education, socio-economic status, +nationality, personal appearance, race, caste, color, religion, or sexual +identity and orientation. + +We pledge to act and interact in ways that contribute to an open, welcoming, +diverse, inclusive, and healthy community. + +## Our Standards + +Examples of behavior that contributes to a positive environment for our +community include: + +* Demonstrating empathy and kindness toward other people +* Being respectful of differing opinions, viewpoints, and experiences +* Giving and gracefully accepting constructive feedback +* Accepting responsibility and apologizing to those affected by our mistakes, + and learning from the experience +* Focusing on what is best not just for us as individuals, but for the overall + community + +Examples of unacceptable behavior include: + +* The use of sexualized language or imagery, and sexual attention or advances of + any kind +* Trolling, insulting or derogatory comments, and personal or political attacks +* Public or private harassment +* Publishing others' private information, such as a physical or email address, + without their explicit permission +* Other conduct which could reasonably be considered inappropriate in a + professional setting + +## Enforcement Responsibilities + +Community leaders are responsible for clarifying and enforcing our standards of +acceptable behavior and will take appropriate and fair corrective action in +response to any behavior that they deem inappropriate, threatening, offensive, +or harmful. + +Community leaders have the right and responsibility to remove, edit, or reject +comments, commits, code, wiki edits, issues, and other contributions that are +not aligned to this Code of Conduct, and will communicate reasons for moderation +decisions when appropriate. + +## Scope + +This Code of Conduct applies within all community spaces, and also applies when +an individual is officially representing the community in public spaces. +Examples of representing our community include using an official e-mail address, +posting via an official social media account, or acting as an appointed +representative at an online or offline event. + +## Enforcement + +Instances of abusive, harassing, or otherwise unacceptable behavior may be +reported to the community leaders responsible for enforcement at +CommunityCodeOfConduct AT intel DOT com. +All complaints will be reviewed and investigated promptly and fairly. + +All community leaders are obligated to respect the privacy and security of the +reporter of any incident. + +## Enforcement Guidelines + +Community leaders will follow these Community Impact Guidelines in determining +the consequences for any action they deem in violation of this Code of Conduct: + +### 1. Correction + +**Community Impact**: Use of inappropriate language or other behavior deemed +unprofessional or unwelcome in the community. + +**Consequence**: A private, written warning from community leaders, providing +clarity around the nature of the violation and an explanation of why the +behavior was inappropriate. A public apology may be requested. + +### 2. Warning + +**Community Impact**: A violation through a single incident or series of +actions. + +**Consequence**: A warning with consequences for continued behavior. No +interaction with the people involved, including unsolicited interaction with +those enforcing the Code of Conduct, for a specified period of time. This +includes avoiding interactions in community spaces as well as external channels +like social media. Violating these terms may lead to a temporary or permanent +ban. + +### 3. Temporary Ban + +**Community Impact**: A serious violation of community standards, including +sustained inappropriate behavior. + +**Consequence**: A temporary ban from any sort of interaction or public +communication with the community for a specified period of time. No public or +private interaction with the people involved, including unsolicited interaction +with those enforcing the Code of Conduct, is allowed during this period. +Violating these terms may lead to a permanent ban. + +### 4. Permanent Ban + +**Community Impact**: Demonstrating a pattern of violation of community +standards, including sustained inappropriate behavior, harassment of an +individual, or aggression toward or disparagement of classes of individuals. + +**Consequence**: A permanent ban from any sort of public interaction within the +community. + +## Attribution + +This Code of Conduct is adapted from the Contributor Covenant homepage, version 2.1, +available at +[https://www.contributor-covenant.org/version/2/1/code_of_conduct.html](https://www.contributor-covenant.org/version/2/1/code_of_conduct.html). + +Community Impact Guidelines were inspired by +Mozilla's code of conduct enforcement ladder Mozilla CoC. + +For answers to common questions about this code of conduct, see the FAQ at +[https://www.contributor-covenant.org/faq](https://www.contributor-covenant.org/faq). +Translations are available at +[https://www.contributor-covenant.org/translations](https://www.contributor-covenant.org/faq). diff --git a/simics-rs/CONTRIBUTING.md b/simics-rs/CONTRIBUTING.md new file mode 100644 index 00000000..19889899 --- /dev/null +++ b/simics-rs/CONTRIBUTING.md @@ -0,0 +1,63 @@ +# Contributing + +## License + +TSFFS is licensed under the terms in [LICENSE](LICENSE). By contributing to the project, +you agree to the license and copyright terms therein and release your contribution under +these terms. + +## Sign your work + +Please use the sign-off line at the end of the patch. Your signature certifies that you +wrote the patch or otherwise have the right to pass it on as an open-source patch. The +rules are pretty simple: if you can certify the below (from +[developercertificate.org](http://developercertificate.org/)): + +```text +Developer Certificate of Origin +Version 1.1 + +Copyright (C) 2004, 2006 The Linux Foundation and its contributors. +660 York Street, Suite 102, +San Francisco, CA 94110 USA + +Everyone is permitted to copy and distribute verbatim copies of this +license document, but changing it is not allowed. + +Developer's Certificate of Origin 1.1 + +By making a contribution to this project, I certify that: + +(a) The contribution was created in whole or in part by me and I + have the right to submit it under the open source license + indicated in the file; or + +(b) The contribution is based upon previous work that, to the best + of my knowledge, is covered under an appropriate open source + license and I have the right under that license to submit that + work with modifications, whether created in whole or in part + by me, under the same open source license (unless I am + permitted to submit under a different license), as indicated + in the file; or + +(c) The contribution was provided directly to me by some other + person who certified (a), (b) or (c) and I have not modified + it. + +(d) I understand and agree that this project and the contribution + are public and that a record of the contribution (including all + personal information I submit with it, including my sign-off) is + maintained indefinitely and may be redistributed consistent with + this project or the open source license(s) involved. +``` + +Then you just add a line to every git commit message: + +```text + Signed-off-by: Joe Smith +``` + +Use a known identity (sorry, no anonymous contributions.) + +If you set your `user.name` and `user.email` git configs, you can sign your +commit automatically with `git commit -s`. diff --git a/simics-rs/Cargo.toml b/simics-rs/Cargo.toml new file mode 100644 index 00000000..48fea1a0 --- /dev/null +++ b/simics-rs/Cargo.toml @@ -0,0 +1,74 @@ +# Copyright (C) 2024 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + +[workspace.package] +authors = ["Rowan Hart "] +# https://crates.io/category_slugs +categories = [ + "simulation", + "virtualization", + "hardware-support", + "api-bindings", + "emulators", +] +description = "SIMICS bindings and utilities for Rust" +documentation = "" +edition = "2021" +homepage = "" +keywords = ["simics", "simulator", "intel", "x86", "risc", "modeling"] +license = "Apache-2.0" +publish = false +readme = "README.md" +repository = "" + +[workspace] +resolver = "2" +members = [ + "cargo-simics-build", + "ispm-wrapper", + "simics", + "simics-api-sys", + "simics-macro", + "simics-package", + "simics-sign", + "simics-test", + "simics-build-utils", + "tests/packages/hello-world", + "tests/test-packages", +] +default-members = [ + "cargo-simics-build", + "ispm-wrapper", + "simics", + "simics-api-sys", + "simics-macro", + "simics-package", + "simics-sign", + "simics-test", + "simics-build-utils", +] +exclude = [] + +[workspace.dependencies] +ispm-wrapper = { path = "ispm-wrapper" } +simics-api-sys = { path = "simics-api-sys" } +simics-macro = { path = "simics-macro" } +simics = { path = "simics", features = ["link"] } +simics-sign = { path = "simics-sign" } +simics-package = { path = "simics-package" } +simics-test = { path = "simics-test" } +simics-build-utils = { path = "simics-build-utils" } + +[profile.dev] +# NOTE: rparth set to true to allow cargo test/cargo run to find libsimics-common, +# libvtutils, etc. +rpath = true + +[profile.release] +# NOTE: rparth set to true to allow cargo test/cargo run to find libsimics-common, +# libvtutils, etc. +rpath = true +lto = true +codegen-units = 1 +opt-level = 3 +debug = true diff --git a/simics-rs/LICENSE b/simics-rs/LICENSE new file mode 100644 index 00000000..ea5fec7a --- /dev/null +++ b/simics-rs/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2024 Intel Corporation + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/simics-rs/README.md b/simics-rs/README.md new file mode 100644 index 00000000..9181065e --- /dev/null +++ b/simics-rs/README.md @@ -0,0 +1,35 @@ +# Simics Rust API + +This repository contains Rust bindings and utilities for Simics and the Simics API. + +## Rust Simics Hello World + +To run the `hello-world` sample: + +```sh +cargo run -p cargo-simics-build -- -p hello-world +``` + +Then, in a `simics`/`simics.bat` shell: + +```simics +add-module-directory target/release +load-module HelloWorld +@hw = SIM_create_object(SIM_get_class("HelloWorld"), "hw", []) +@hw.message = "Hello, World!" +@hw.iface.HelloWorldInterface.say() +@hw.iface.HelloWorldInterface2.say2() +@hw2 = SIM_create_object(SIM_get_class("HelloWorld2"), "hw2", []) +@hw2.message = "Hello, World! (Again)" +@hw2.iface.HelloWorld2Interface.say() +@hw2.iface.HelloWorld2Interface2.say2() +``` + +You should see: + +```txt +Hello, World! +test: Hello, World! +Hello, World! (Again) +test: Hello, World! (Again) +``` diff --git a/simics-rs/SECURITY.md b/simics-rs/SECURITY.md new file mode 100644 index 00000000..eb76b53f --- /dev/null +++ b/simics-rs/SECURITY.md @@ -0,0 +1,9 @@ +# Security Policy + +Intel is committed to rapidly addressing security vulnerabilities affecting our +customers and providing clear guidance on the solution, impact, severity and mitigation. + +## Reporting a Vulnerability + +Please report any security vulnerabilities in this project [utilizing the guidelines +here](https://www.intel.com/content/www/us/en/security-center/vulnerability-handling-guidelines.html). diff --git a/simics-rs/cargo-simics-build/Cargo.toml b/simics-rs/cargo-simics-build/Cargo.toml new file mode 100644 index 00000000..3c7cd1f2 --- /dev/null +++ b/simics-rs/cargo-simics-build/Cargo.toml @@ -0,0 +1,35 @@ +# Copyright (C) 2024 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + +[package] +name = "cargo-simics-build" +version = "0.1.0" +authors = ["Rowan Hart "] +edition = "2021" +description = "Build utility for Simics modules" +documentation = "" +readme = "../README.md" +homepage = "" +repository = "" +license = "Apache-2.0" +keywords = ["simics", "simulator", "intel", "x86", "risc", "modeling"] +categories = [ + "simulation", + "virtualization", + "hardware-support", + "api-bindings", + "emulators", +] + +[dependencies] +simics-sign = { version = "0.1.0", path = "../simics-sign" } + +anyhow = "1.0.80" +artifact-dependency = "0.1.7" +clap = { version = "4.5.1", features = ["derive"] } +cargo-subcommand = { version = "0.12.0", features = ["clap"] } +command-ext = "0.1.2" +simics-package = { version = "0.1.0", path = "../simics-package" } +itertools = "0.12.1" +ispm-wrapper = { version = "0.1.0", path = "../ispm-wrapper" } +thiserror = "1.0.57" diff --git a/examples/tests/.gitignore b/simics-rs/cargo-simics-build/README.md similarity index 100% rename from examples/tests/.gitignore rename to simics-rs/cargo-simics-build/README.md diff --git a/simics-rs/cargo-simics-build/src/lib.rs b/simics-rs/cargo-simics-build/src/lib.rs new file mode 100644 index 00000000..bb670651 --- /dev/null +++ b/simics-rs/cargo-simics-build/src/lib.rs @@ -0,0 +1,378 @@ +// Copyright (C) 2024 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 + +// #![deny(missing_docs)] + +use artifact_dependency::ARTIFACT_NAMEPARTS; +use cargo_subcommand::{Args, Subcommand}; +use clap::Parser; +use command_ext::CommandExtCheck; +use ispm_wrapper::ispm::{self, GlobalOptions}; +use itertools::Itertools; +use simics_package::Package; +use simics_sign::Sign; +use std::{ + env::var, + fs::{copy, read_dir}, + io::BufRead, + path::PathBuf, + process::Command, + time::SystemTime, +}; + +#[derive(Debug, thiserror::Error)] +/// An error raised during build +pub enum Error { + #[error("env.SIMICS_BASE variable set in config.toml but could not be parsed from {output:?}")] + /// Raised when the SIMICS_BASE environment variable is set but could not be parsed + SimicsBaseParseError { output: Option }, + #[error("The SIMICS_BASE environment variable was not set or present in config.toml, and no packages were installed.")] + /// Raised when the SIMICS_BASE environment variable was not set or present in config.toml, and no base package was installed + NoInstalledPackages, + #[error("The SIMICS_BASE environment variable was not set or present in config.toml, and no base package was installed.")] + /// Raised when the SIMICS_BASE environment variable was not set or present in config.toml, and no base package was installed + NoBasePackage, + #[error("Base package found, but no paths registered for package number 1000")] + /// Raised when a base package is found, but no paths are registered for package number 1000 + NoPathsForBasePackage, + #[error("Base package directory {path:?} does not exist")] + /// Raised when the base package directory does not exist + BasePackageDirectoryDoesNotExist { path: PathBuf }, + #[error("No cdylib crate artifact found for package {package}. Ensure the build succeeded and there is a [lib] entry in Cargo.toml with crate-type 'cdylib'.")] + /// Raised when no cdylib crate artifact is found for a package + NoCdylibArtifact { package: String }, + #[error("No parent directory found for {path:?}")] + /// Raised when no parent directory is found for a path + NoParentDirectory { path: PathBuf }, + #[error("No filename found for {path:?}")] + /// Raised when no filename is found for a path + NoFilename { path: PathBuf }, + #[error("Failed to copy library from {from:?} to {to:?}: {source:?}")] + /// An error occurred while copying a library + CopyLibrary { + /// The source path + from: PathBuf, + /// The destination path + to: PathBuf, + /// The underlying error + source: std::io::Error, + }, + #[error("Failed to read directory {path:?}: {source}")] + /// An error occurred while reading a directory + ReadDirectory { + /// The path to the directory that could not be read + path: PathBuf, + /// The underlying error + source: std::io::Error, + }, + #[error(transparent)] + /// A wrapped std::io::Error + IoError(#[from] std::io::Error), + #[error(transparent)] + /// Any wrapped other error + Other(#[from] anyhow::Error), + #[error(transparent)] + /// A wrapped std::env::VarError + VarError(#[from] std::env::VarError), + #[error(transparent)] + /// A wrapped subcommand error + SubcommandError(#[from] cargo_subcommand::Error), + #[error(transparent)] + /// A wrapped CommandExt error + CommandExtError(#[from] command_ext::CommandExtError), + #[error(transparent)] + /// A wrapped signature error + SignatureError(#[from] simics_sign::Error), + #[error(transparent)] + /// A wrapped package error + PackageError(#[from] simics_package::Error), + #[error(transparent)] + /// A wrapped from utf8 error + FromUtf8Error(#[from] std::string::FromUtf8Error), +} + +#[derive(Parser, Debug, Clone)] +pub struct Cmd { + #[clap(subcommand)] + pub simics_build: SimicsBuildCmd, +} + +#[derive(clap::Subcommand, Debug, Clone)] +pub enum SimicsBuildCmd { + /// Helps cargo build apks for Android + SimicsBuild { + #[clap(flatten)] + args: Args, + #[clap(long)] + simics_base: Option, + #[clap(long)] + with_patchelf: bool, + }, +} + +pub struct App; + +type Result = std::result::Result; + +impl App { + pub fn run(cmd: Cmd) -> Result { + let SimicsBuildCmd::SimicsBuild { + args, + simics_base, + with_patchelf, + } = cmd.simics_build; + + let subcommand = Subcommand::new(args)?; + let cargo = var("CARGO")?; + + // First, check if `env.SIMICS_BASE` is set: + let simics_base = if let Some(simics_base) = simics_base { + simics_base.clone() + } else if let Ok(output) = Command::new(&cargo) + .arg("-Zunstable-options") + .arg("config") + .arg("get") + .arg("env.SIMICS_BASE") + .check() + { + let line = output.stdout.lines().next().transpose()?; + line.clone() + .map(|l| l.split('=').last().map(|s| s.trim().replace('"', ""))) + .flatten() + .map(PathBuf::from) + .ok_or_else(|| Error::SimicsBaseParseError { output: line })? + } else if let Ok(simics_base) = var("SIMICS_BASE") { + PathBuf::from(simics_base) + } else { + if !subcommand.quiet() { + println!("No SIMICS_BASE variable set, using the latest installed package with package number 1000") + } + + let mut packages = ispm::packages::list(&GlobalOptions::default())?; + packages.sort(); + let Some(installed) = packages.installed_packages.as_ref() else { + return Err(Error::NoInstalledPackages); + }; + let Some(base) = installed.iter().find(|p| p.package_number == 1000) else { + return Err(Error::NoBasePackage); + }; + base.paths + .first() + .ok_or_else(|| Error::NoPathsForBasePackage)? + .clone() + }; + + if !simics_base.exists() { + return Err(Error::BasePackageDirectoryDoesNotExist { path: simics_base }); + } + + // Clean the package's release profile + if !subcommand.quiet() { + println!("Building package {}", subcommand.package()); + } + + // Build the package + let mut build_cmd = Command::new(&cargo); + build_cmd.arg("rustc"); + build_cmd.env("SIMICS_BASE", simics_base); + subcommand.args().apply(&mut build_cmd); + #[cfg(unix)] + build_cmd.args(&["--", "-C", "link-args=-Wl,--gc-sections"]); + build_cmd.check()?; + + // Get the module cdylib + let module_cdylib = subcommand + .artifacts() + .map(|a| { + subcommand.build_dir(subcommand.target()).join(format!( + "{}{}{}", + ARTIFACT_NAMEPARTS.0, + a.name.replace('-', "_"), + ARTIFACT_NAMEPARTS.1 + )) + }) + .find(|p| p.exists()) + .ok_or_else(|| Error::NoCdylibArtifact { + package: subcommand.package().to_string(), + })?; + + // Sign the module cdylib + if !subcommand.quiet() { + println!("Signing module {module_cdylib:?}"); + } + + let mut signed = Sign::new(&module_cdylib)?; + + let mut signed_module_cdylib = module_cdylib + .parent() + .ok_or_else(|| Error::NoParentDirectory { + path: module_cdylib.to_path_buf(), + })? + .join({ + let file_name = module_cdylib + .file_name() + .ok_or_else(|| Error::NoFilename { + path: module_cdylib.to_path_buf(), + })? + .to_str() + .ok_or_else(|| Error::NoFilename { + path: module_cdylib.to_path_buf(), + })?; + let module_cdylib_dir = + module_cdylib + .parent() + .ok_or_else(|| Error::NoParentDirectory { + path: module_cdylib.to_path_buf(), + })?; + + module_cdylib_dir + .join(file_name.replace('_', "-")) + .to_str() + .ok_or_else(|| Error::NoFilename { + path: module_cdylib.to_path_buf(), + })? + }); + + signed.write(&signed_module_cdylib)?; + + signed_module_cdylib = signed_module_cdylib.canonicalize()?; + + if with_patchelf { + // We need to use patchelf to replace absolute paths to shared objects with + // just names + String::from_utf8( + Command::new("patchelf") + .arg("--print-needed") + .arg(&signed_module_cdylib) + .check()? + .stdout, + )? + .lines() + .filter(|l| l.starts_with('/')) + .try_for_each(|l| { + let path = PathBuf::from(l); + let file_name = path + .file_name() + .ok_or_else(|| Error::NoFilename { + path: PathBuf::from(l), + })? + .to_str() + .ok_or_else(|| Error::NoFilename { + path: PathBuf::from(l), + })?; + println!("Replacing needed library {} with {}", l, file_name); + Command::new("patchelf") + .arg("--remove-needed") + .arg(&l) + .arg(&signed_module_cdylib) + .check()?; + Command::new("patchelf") + .arg("--add-needed") + .arg(file_name) + .arg(&signed_module_cdylib) + .check()?; + Ok::<(), Error>(()) + })?; + } + + let target_profile_build_dir = subcommand.build_dir(subcommand.target()).join("build"); + + // Find interfaces + let target_profile_build_subdirs = read_dir(&target_profile_build_dir) + .map_err(|e| Error::ReadDirectory { + path: target_profile_build_dir, + source: e, + })? + .filter_map(|rd| rd.ok()) + .map(|de| de.path()) + .filter(|p| { + p.is_dir() + && p.file_name().is_some_and(|n| { + n.to_str() + .is_some_and(|ns| ns.starts_with(subcommand.package())) + }) + && !p + .join(format!("build-script-build{}", ARTIFACT_NAMEPARTS.4)) + .exists() + && p.join("out").is_dir() + }) + .collect::>(); + + // Source, Destination of interface libraries + let cdylib_out_artifacts = target_profile_build_subdirs + .iter() + .map(|bd| bd.join("out")) + .map(|od| { + read_dir(&od) + .map_err(|e| Error::ReadDirectory { + path: od.clone(), + source: e, + }) + .map(|rd| { + Ok(rd + .filter_map(|rd| rd.ok()) + .map(|de| de.path()) + .filter(|p| { + p.file_name().is_some_and(|n| { + n.to_str().is_some_and(|ns| { + ns.starts_with(ARTIFACT_NAMEPARTS.0) + && ns.ends_with(ARTIFACT_NAMEPARTS.1) + }) + }) + }) + .collect::>()) + })? + }) + .collect::>>()? + .into_iter() + .flatten() + .filter_map(|p| { + p.clone() + .file_name() + .map(|n| n.to_str().map(|n| (p, n.to_string()))) + .flatten() + }) + .sorted_by(|(_, a), (_, b)| a.cmp(b)) + .group_by(|(_, n)| n.clone()) + // Get the newest one + .into_iter() + .filter_map(|(_, g)| { + g.max_by_key(|(p, _)| { + p.metadata() + .map(|m| m.modified().unwrap_or_else(|_| SystemTime::UNIX_EPOCH)) + .unwrap_or_else(|_| SystemTime::UNIX_EPOCH) + }) + }) + .map(|(a, _)| { + a.file_name() + .and_then(|n| n.to_str()) + .ok_or_else(|| Error::NoFilename { path: a.clone() }) + .map(|t| (a.clone(), subcommand.build_dir(subcommand.target()).join(t))) + }) + .collect::>>()?; + + // Sign all the interfaces, re-signing if needed, and copy them to the build directory + cdylib_out_artifacts.iter().try_for_each(|(a, t)| { + if !subcommand.quiet() { + println!("Copying interface library {a:?}"); + } + + copy(a, t).map_err(|e| Error::CopyLibrary { + from: a.clone(), + to: t.clone(), + source: e, + })?; + + Ok::<(), anyhow::Error>(()) + })?; + + let package = Package::from_subcommand(&subcommand)? + .build(subcommand.build_dir(subcommand.target()))?; + + if !subcommand.quiet() { + println!("Built ISPM package {:?}", package); + } + + Ok(package) + } +} diff --git a/simics-rs/cargo-simics-build/src/main.rs b/simics-rs/cargo-simics-build/src/main.rs new file mode 100644 index 00000000..5f3788ce --- /dev/null +++ b/simics-rs/cargo-simics-build/src/main.rs @@ -0,0 +1,15 @@ +// Copyright (C) 2024 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 + +// #![deny(missing_docs)] + +use anyhow::Result; +use clap::Parser; + +fn main() -> Result<()> { + // Parse CLI arguments + let cmd = cargo_simics_build::Cmd::parse(); + cargo_simics_build::App::run(cmd)?; + + Ok(()) +} diff --git a/simics-rs/docs/.gitignore b/simics-rs/docs/.gitignore new file mode 100644 index 00000000..7585238e --- /dev/null +++ b/simics-rs/docs/.gitignore @@ -0,0 +1 @@ +book diff --git a/simics-rs/docs/book.toml b/simics-rs/docs/book.toml new file mode 100644 index 00000000..861708e0 --- /dev/null +++ b/simics-rs/docs/book.toml @@ -0,0 +1,9 @@ +# Copyright (C) 2024 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + +[book] +authors = ["novafacing"] +language = "en" +multilingual = false +src = "src" +title = "simics-rs" diff --git a/simics-rs/docs/src/SUMMARY.md b/simics-rs/docs/src/SUMMARY.md new file mode 100644 index 00000000..7390c828 --- /dev/null +++ b/simics-rs/docs/src/SUMMARY.md @@ -0,0 +1,3 @@ +# Summary + +- [Chapter 1](./chapter_1.md) diff --git a/simics-rs/docs/src/chapter_1.md b/simics-rs/docs/src/chapter_1.md new file mode 100644 index 00000000..b743fda3 --- /dev/null +++ b/simics-rs/docs/src/chapter_1.md @@ -0,0 +1 @@ +# Chapter 1 diff --git a/simics-rs/ispm-wrapper/Cargo.toml b/simics-rs/ispm-wrapper/Cargo.toml new file mode 100644 index 00000000..bd49041f --- /dev/null +++ b/simics-rs/ispm-wrapper/Cargo.toml @@ -0,0 +1,31 @@ +# Copyright (C) 2024 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + +[package] +name = "ispm-wrapper" +version = "0.1.0" +authors = ["Rowan Hart "] +edition = "2021" +description = "Wrappers for Intel Simics Package Manager commands" +documentation = "" +readme = "../README.md" +homepage = "" +repository = "" +license = "Apache-2.0" +keywords = ["simics", "simulator", "intel", "x86", "risc", "modeling"] +categories = [ + "simulation", + "virtualization", + "hardware-support", + "api-bindings", + "emulators", +] + + +[dependencies] +anyhow = "1.0.80" +command-ext = "0.1.2" +serde = { version = "1.0.197", features = ["derive"] } +serde_json = "1.0.114" +typed-builder = "0.18.1" +versions = { version = "6.1.0", features = ["serde"] } diff --git a/modules/tsffs/src/simics/ispm-wrapper/src/data/mod.rs b/simics-rs/ispm-wrapper/src/data/mod.rs similarity index 53% rename from modules/tsffs/src/simics/ispm-wrapper/src/data/mod.rs rename to simics-rs/ispm-wrapper/src/data/mod.rs index 3c76e835..bf44d2ef 100644 --- a/modules/tsffs/src/simics/ispm-wrapper/src/data/mod.rs +++ b/simics-rs/ispm-wrapper/src/data/mod.rs @@ -1,69 +1,87 @@ -// Copyright (C) 2023 Intel Corporation +// Copyright (C) 2024 Intel Corporation // SPDX-License-Identifier: Apache-2.0 //! Data deserializable from ISPM commands and configurations use anyhow::Result; -use getters2::Getters; use serde::Deserialize; use serde_json::from_slice; use std::{fmt::Display, fs::read, path::PathBuf}; use typed_builder::TypedBuilder; -use version_tools::{version_constraint_from_string, VersionConstraint}; +use versions::Versioning; use crate::Internal; -#[derive(TypedBuilder, Getters, Deserialize, Clone, Debug, PartialEq, Eq)] +#[derive(TypedBuilder, Deserialize, Clone, Debug, PartialEq, Eq)] /// A path object that is optionally an internet URI or local filesystem path pub struct IPathObject { - id: isize, - priority: isize, + /// The unique id of the path + pub id: isize, + /// The priority of the path + pub priority: isize, #[builder(setter(into))] - value: String, - enabled: bool, + /// The path + pub value: String, + /// whether this path is enabled + pub enabled: bool, #[serde(rename = "isWritable")] #[builder(default, setter(strip_option))] - writable: Option, + /// Whether this path is writable + pub writable: Option, } -#[derive(TypedBuilder, Getters, Deserialize, Clone, Debug, PartialEq, Eq)] +#[derive(TypedBuilder, Deserialize, Clone, Debug, PartialEq, Eq)] /// A path to a SIMICS repo. This is an artifactory repository. pub struct RepoPath { #[builder(setter(into))] - value: String, - enabled: bool, - priority: isize, - id: isize, + /// The path + pub value: String, + /// Whether this path is enabled + pub enabled: bool, + /// The priority of the path + pub priority: isize, + /// The unique id of the path + pub id: isize, } -#[derive(TypedBuilder, Getters, Deserialize, Clone, Debug, PartialEq, Eq)] +#[derive(TypedBuilder, Deserialize, Clone, Debug, PartialEq, Eq)] #[builder(field_defaults(setter(into)))] /// An electron rectangle definition pub struct Rectangle { - x: isize, - y: isize, - width: isize, - height: isize, + /// The x value of the rectangle's coordinate + pub x: isize, + /// The y value of the rectangle's coordinate + pub y: isize, + /// The width + pub width: isize, + /// The height + pub height: isize, } #[derive(Deserialize, Clone, Debug, PartialEq, Eq)] #[serde(rename_all = "lowercase")] /// Proxy settings pub enum ProxySettingTypes { + /// No proxy should be used None, + /// Use the proxy settings from environment variables Env, + /// Use the proxy settings from the manual configuration Manual, } #[derive(Deserialize, Clone, Debug, PartialEq, Eq)] /// Preference for which method should be used to install packages pub enum InstallationPreference { + /// Install in the order in the repository RepoOrder, + /// Install in legacy style LegacyStyle, + /// Install in the new style NewStyle, } -#[derive(TypedBuilder, Getters, Deserialize, Clone, Debug, PartialEq, Eq)] +#[derive(TypedBuilder, Deserialize, Clone, Debug, PartialEq, Eq)] #[builder(field_defaults(default, setter(strip_option)))] /// V3 ISPM configuration, all fields are optional so older configs that we support should also work /// without an issue @@ -71,81 +89,94 @@ pub struct Settings { #[builder(setter(into))] /// Package repositories that ISPM can install from. Managed by the `ispm config /// package-repos` command. - archives: Option>, + pub archives: Option>, #[serde(rename = "cacheTimeout")] - cache_timeout: Option, + /// The timeout of the cache + pub cache_timeout: Option, #[serde(rename = "installPath")] /// Installation path. Managed by the `ispm config install-dir` command. - install_path: Option, + pub install_path: Option, #[serde(rename = "readOnlyInstallationPaths")] #[builder(setter(into))] /// Installation paths that are set as read-only. Managed by the `ispm config /// ro-install-paths` command. - read_only_installation_paths: Option>, + pub read_only_installation_paths: Option>, #[serde(rename = "cfgVersion")] - cfg_version: Option, + /// The configuration version number + pub cfg_version: Option, #[serde(rename = "guiBounds")] - gui_bounds: Option, + /// Last saved bounds of the ISPM GUI + pub gui_bounds: Option, #[serde(rename = "guiMaximized")] - gui_maximized: Option, + /// Whether the GUI was maximized + pub gui_maximized: Option, #[serde(rename = "powershellPath")] - powershell_path: Option, + /// The path to the powershell executable + pub powershell_path: Option, #[serde(rename = "tempDirectory")] /// The temporary directory used by ISPM. Managed by the `ispm config temp-dir` command. - temp_directory: Option, + pub temp_directory: Option, #[serde(rename = "multiUser")] - multi_user: Option, + /// Whether this is a multi-user installation + pub multi_user: Option, #[serde(rename = "projectsDefault")] #[builder(setter(into))] - projects_default: Option, + /// The default projects + pub projects_default: Option, #[serde(rename = "enableRemoteManifests")] - enable_remote_manifests: Option, + /// Whether remtoe manifests are enabled + pub enable_remote_manifests: Option, #[serde(rename = "manifestRepos")] #[builder(setter(into))] /// Platform repositories that ISPM can install from. Managed by the `ispm config /// platform-repos` command. - manifest_repos: Option>, + pub manifest_repos: Option>, #[serde(rename = "projects")] #[builder(setter(into))] - projects: Option>, + /// A list of registered projects + pub projects: Option>, #[serde(rename = "manifests")] #[builder(setter(into))] - manifests: Option>, + /// A list of manifests + pub manifests: Option>, #[serde(rename = "keyStore")] #[builder(setter(into))] /// Files that store decryption keys for legacy package installation. Managed by the /// `ispm config decryption-key-files` command. - key_store: Option>, + pub key_store: Option>, #[serde(rename = "ignoreLegacyPlatformRepoDeprecation")] - ignore_legacy_platform_repo_deprecation: Option, + /// Whether to ignore deprecation warnings for legacy platforms + pub ignore_legacy_platform_repo_deprecation: Option, #[serde(rename = "proxySettingsToUse")] /// Proxy settings that should be used. Managed by the `ispm config proxy /// (--dont-use|--use-env)` command and flags. - proxy_settings_to_use: Option, + pub proxy_settings_to_use: Option, #[serde(rename = "httpsProxy")] #[builder(setter(into))] /// Proxy settings that should be used for HTTPS. Managed by the `ispm config proxy /// --https` command and flags. - https_proxy: Option, + pub https_proxy: Option, #[serde(rename = "httpProxy")] #[builder(setter(into))] /// Proxy settings that should be used for HTTPS. Managed by the `ispm config proxy` /// command. - http_proxy: Option, + pub http_proxy: Option, #[serde(rename = "noProxy")] #[builder(setter(into))] /// URL/IP list (comma-delimited) of resources that should not use a proxy for access. - no_proxy: Option, + pub no_proxy: Option, #[serde(rename = "AuthenticationConfig")] #[builder(setter(into))] /// The path to the SIMICS authentication file. Not used for public release. Managed by the /// `ispm config auth-file` command. - authentication_config: Option, + pub authentication_config: Option, #[serde(rename = "logfile")] #[builder(setter(into))] - logfile: Option, + /// The current logfile + pub logfile: Option, #[serde(rename = "preferPackageType")] - prefer_package_type: Option, + /// The package type that is favored + pub prefer_package_type: Option, } impl Settings { @@ -155,125 +186,140 @@ impl Settings { } } -#[derive(TypedBuilder, Getters, Deserialize, Clone, Debug, PartialEq, Eq)] +#[derive(TypedBuilder, Deserialize, Clone, Debug, PartialEq, Eq)] /// A package that is already installed pub struct InstalledPackage { #[serde(rename = "pkgNumber")] - #[getters(deref)] /// The package number - package_number: isize, - #[serde(deserialize_with = "version_constraint_from_string")] - #[getters(clone)] + pub package_number: isize, /// The package version - version: VersionConstraint, + pub version: String, #[builder(setter(into))] - #[getters(clone)] /// The package name - name: String, + pub name: String, #[builder(default, setter(into))] - #[getters(clone)] /// Paths to this installed package - paths: Vec, + pub paths: Vec, } -#[derive(TypedBuilder, Getters, Deserialize, Clone, Debug, PartialEq, Eq)] +impl InstalledPackage { + /// Get this package's version as a comparable version object + pub fn version(&self) -> Versioning { + Versioning::new(&self.version).expect("Failed to parse installed package version") + } +} + +#[derive(TypedBuilder, Deserialize, Clone, Debug, PartialEq, Eq)] /// A package that can be installed pub struct AvailablePackage { #[serde(rename = "pkgNumber")] /// The package number - package_number: isize, - #[serde(deserialize_with = "version_constraint_from_string")] + pub package_number: isize, /// The package version - version: VersionConstraint, + pub version: String, #[builder(setter(into))] /// The package name - name: String, + pub name: String, /// Whether this package is installed - installed: bool, + pub installed: bool, +} + +impl AvailablePackage { + /// Get this package's version as a comparable version object + pub fn version(&self) -> Versioning { + Versioning::new(&self.version).expect("Failed to parse available package version") + } } -#[derive(TypedBuilder, Getters, Deserialize, Clone, Debug, PartialEq, Eq)] +#[derive(TypedBuilder, Deserialize, Clone, Debug, PartialEq, Eq)] #[builder(field_defaults(default, setter(strip_option, into)))] /// Set of installed and available packages pub struct Packages { #[serde(rename = "installedPackages")] /// The list of packages which are installed - installed_packages: Option>, + pub installed_packages: Option>, #[serde(rename = "availablePackages")] /// The list of packages which are available to install - available_packages: Option>, + pub available_packages: Option>, } -#[derive(TypedBuilder, Getters, Deserialize, Clone, Debug, PartialEq, Eq, Hash)] +impl Packages { + /// Sort the installed and available packages by their version number (highest first) + pub fn sort(&mut self) { + if let Some(installed_packages) = self.installed_packages.as_mut() { + installed_packages.sort_by(|a, b| b.version().cmp(&a.version())) + } + } +} + +#[derive(TypedBuilder, Deserialize, Clone, Debug, PartialEq, Eq, Hash)] /// A package which is added to a project pub struct ProjectPackage { #[serde(rename = "pkgNumber")] - #[getters(deref)] /// The package number - package_number: isize, - #[serde(deserialize_with = "version_constraint_from_string")] + pub package_number: isize, #[builder(setter(into))] /// The package version - version: VersionConstraint, + pub version: String, } impl Display for ProjectPackage { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - write!( - f, - "{}-{}", - self.package_number, - self.version - .version() - .map(|v| v.to_string()) - .unwrap_or_default() - ) + write!(f, "{}-{}", self.package_number, self.version) + } +} + +impl ProjectPackage { + /// Get this package's version as a comparable version object + pub fn version(&self) -> Versioning { + Versioning::new(&self.version).expect("Failed to parse project package version") } } -#[derive(TypedBuilder, Getters, Deserialize, Clone, Debug, PartialEq, Eq)] +#[derive(TypedBuilder, Deserialize, Clone, Debug, PartialEq, Eq)] /// A SIMICS project pub struct Project { #[builder(setter(into))] /// The project name - name: String, + pub name: String, #[builder(setter(into))] /// The project description - description: String, + pub description: String, /// The path to the project - path: PathBuf, + pub path: PathBuf, #[builder(default, setter(into))] /// The set of packages this project was configured with - packages: Vec, + pub packages: Vec, } -#[derive(TypedBuilder, Getters, Deserialize, Clone, Debug, PartialEq, Eq)] +#[derive(TypedBuilder, Deserialize, Clone, Debug, PartialEq, Eq)] #[builder(field_defaults(default, setter(into)))] /// List of known projects associated with this ISPM installation pub struct Projects { - projects: Vec, + /// A list of known projects + pub projects: Vec, } -#[derive(TypedBuilder, Getters, Deserialize, Clone, Debug, PartialEq, Eq)] +#[derive(TypedBuilder, Deserialize, Clone, Debug, PartialEq, Eq)] /// A platform, which is a collection of packages pub struct Platform { #[builder(setter(into))] /// The name of the platform - name: String, + pub name: String, #[builder(setter(into))] /// The group of the platform - group: String, + pub group: String, #[builder(setter(into))] /// The path to the platform - path: String, + pub path: String, /// Whether this platform is remote - remote: bool, + pub remote: bool, } -#[derive(TypedBuilder, Getters, Deserialize, Clone, Debug, PartialEq, Eq)] +#[derive(TypedBuilder, Deserialize, Clone, Debug, PartialEq, Eq)] #[builder(field_defaults(default, setter(into)))] /// A list of platforms pub struct Platforms { /// The list of platforms - platforms: Vec, + pub platforms: Vec, } diff --git a/modules/tsffs/src/simics/ispm-wrapper/src/lib.rs b/simics-rs/ispm-wrapper/src/lib.rs similarity index 88% rename from modules/tsffs/src/simics/ispm-wrapper/src/lib.rs rename to simics-rs/ispm-wrapper/src/lib.rs index 011b39cb..d94bc330 100644 --- a/modules/tsffs/src/simics/ispm-wrapper/src/lib.rs +++ b/simics-rs/ispm-wrapper/src/lib.rs @@ -1,9 +1,11 @@ -// Copyright (C) 2023 Intel Corporation +// Copyright (C) 2024 Intel Corporation // SPDX-License-Identifier: Apache-2.0 //! Wrappers for the small subset of ISPM commands the fuzzer and its build processes need to //! function +#![deny(missing_docs)] + #[allow(deprecated)] use std::env::home_dir; // NOTE: Use of deprecated home_dir is ok because the "incorrect" windows behavior is actually @@ -14,11 +16,17 @@ use std::{path::PathBuf, process::Command}; pub mod data; +#[cfg(unix)] +/// The name of the ispm executable pub const ISPM_NAME: &str = "ispm"; +#[cfg(windows)] +/// The name of the ispm executable +pub const ISPM_NAME: &str = "ispm.exe"; +/// The flag to use to run ISPM in non-interactive mode pub const NON_INTERACTIVE_FLAG: &str = "--non-interactive"; /// Minimal implementation of internal ISPM functionality to use it externally -pub struct Internal {} +pub struct Internal; impl Internal { // NOTE: Can be found in package.json in extracted ispm application @@ -53,6 +61,7 @@ impl Internal { Ok(Self::app_data_path()?.join(Self::CFG_FILENAME)) } + /// Returns whether this is an internal release of ISPM pub fn is_internal() -> Result { const IS_INTERNAL_MSG: &str = "This is an Intel internal release"; @@ -63,7 +72,9 @@ impl Internal { } } +/// An implementor can convert itself into a list of command-line arguments pub trait ToArgs { + /// Convert this implementor into a list of command-line arguments fn to_args(&self) -> Vec; } @@ -71,45 +82,44 @@ pub trait ToArgs { pub mod ispm { use std::{iter::repeat, path::PathBuf}; - use getters2::Getters; use typed_builder::TypedBuilder; use crate::{ToArgs, NON_INTERACTIVE_FLAG}; - #[derive(TypedBuilder, Getters, Clone, Debug)] + #[derive(TypedBuilder, Clone, Debug)] /// Global ISPM options pub struct GlobalOptions { #[builder(default, setter(into))] /// A package repo to use when installing packages - package_repo: Vec, + pub package_repo: Vec, #[builder(default, setter(into, strip_option))] /// A directory to install packages into, overriding global configurations - install_dir: Option, + pub install_dir: Option, #[builder(default, setter(into, strip_option))] /// An HTTPS proxy URL to use - https_proxy: Option, + pub https_proxy: Option, #[builder(default, setter(into, strip_option))] /// A no-proxy string of addresses not to use the proxy for, e.g. "*.intel.com,127.0.0.1" - no_proxy: Option, + pub no_proxy: Option, #[builder(default = true)] /// Whether this command should be run in non-interactive mode. - non_interactive: bool, + pub non_interactive: bool, #[builder(default = false)] /// Whether insecure packages should be trusted. This should be set to true when /// installing an un-signed local package - trust_insecure_packages: bool, + pub trust_insecure_packages: bool, #[builder(default, setter(into, strip_option))] /// A path to an override configuration file - config_file: Option, + pub config_file: Option, #[builder(default = false)] /// Whether the configuration file should not be used for this command - no_config_file: bool, + pub no_config_file: bool, #[builder(default, setter(into, strip_option))] /// A different temporary directory to use - temp_dir: Option, + pub temp_dir: Option, #[builder(default, setter(into, strip_option))] /// An authentication file to use for this command - auth_file: Option, + pub auth_file: Option, } impl ToArgs for GlobalOptions { @@ -177,6 +187,7 @@ pub mod ispm { } } + /// ISPM commands for package management pub mod packages { use crate::{ data::{Packages, ProjectPackage}, @@ -184,9 +195,8 @@ pub mod ispm { }; use anyhow::Result; use command_ext::CommandExtCheck; - use getters2::Getters; use serde_json::from_slice; - use std::{iter::repeat, path::PathBuf, process::Command}; + use std::{collections::HashSet, iter::repeat, path::PathBuf, process::Command}; use typed_builder::TypedBuilder; use super::GlobalOptions; @@ -195,7 +205,7 @@ pub mod ispm { /// Get the currently installed and available packages pub fn list(options: &GlobalOptions) -> Result { - Ok(from_slice( + let mut packages: Packages = from_slice( &Command::new(ISPM_NAME) .arg(PACKAGES_SUBCOMMAND) .arg(NON_INTERACTIVE_FLAG) @@ -208,22 +218,28 @@ pub mod ispm { .args(options.to_args()) .check()? .stdout, - )?) + )?; + + packages.sort(); + + Ok(packages) } - #[derive(TypedBuilder, Getters, Clone, Debug)] - #[getters(mutable)] + #[derive(TypedBuilder, Clone, Debug)] + /// Options that can be set when installing one or more packages pub struct InstallOptions { #[builder(default, setter(into))] /// Packages to install by number/version - packages: Vec, + pub packages: HashSet, #[builder(default, setter(into))] /// Packages to install by local path - package_paths: Vec, + pub package_paths: Vec, #[builder(default)] - global: GlobalOptions, + /// Global ispm options + pub global: GlobalOptions, #[builder(default = false)] - install_all: bool, + /// Whether to install all packages + pub install_all: bool, } impl ToArgs for InstallOptions { @@ -243,6 +259,7 @@ pub mod ispm { } } + /// Install a package or set of packages, executing the ispm command pub fn install(install_options: &InstallOptions) -> Result<()> { Command::new(ISPM_NAME) .arg(PACKAGES_SUBCOMMAND) @@ -252,7 +269,8 @@ pub mod ispm { Ok(()) } - #[derive(TypedBuilder, Getters, Clone, Debug)] + #[derive(TypedBuilder, Clone, Debug)] + /// Options that can be set when uninstalling one or more packages pub struct UninstallOptions { #[builder(default, setter(into))] /// Packages to install by number/version @@ -271,6 +289,7 @@ pub mod ispm { } } + /// Uninstall a package or set of packages, executing the ispm command pub fn uninstall(uninstall_options: &UninstallOptions) -> Result<()> { Command::new(ISPM_NAME) .arg(PACKAGES_SUBCOMMAND) @@ -281,6 +300,7 @@ pub mod ispm { } } + /// ISPM commands for project management pub mod projects { use crate::{ data::{ProjectPackage, Projects}, @@ -288,7 +308,6 @@ pub mod ispm { }; use anyhow::{anyhow, Result}; use command_ext::CommandExtCheck; - use getters2::Getters; use serde_json::from_slice; use std::{collections::HashSet, iter::once, path::Path, process::Command}; use typed_builder::TypedBuilder; @@ -299,7 +318,8 @@ pub mod ispm { const CREATE_PROJECT_FLAG: &str = "--create"; const PROJECTS_SUBCOMMAND: &str = "projects"; - #[derive(TypedBuilder, Getters, Clone, Debug)] + #[derive(TypedBuilder, Clone, Debug)] + /// Options that can be set when creating a project pub struct CreateOptions { #[builder(default, setter(into))] packages: HashSet, @@ -311,7 +331,7 @@ pub mod ispm { impl ToArgs for CreateOptions { fn to_args(&self) -> Vec { - self.packages_ref() + self.packages .iter() .map(|p| Some(p.to_string())) .chain(once( @@ -339,7 +359,6 @@ pub mod ispm { CREATE_PROJECT_FLAG.to_string(), ]; args.extend(create_options.to_args()); - println!("{:?}", args); Command::new(ISPM_NAME).args(args).check()?; Ok(()) @@ -364,6 +383,7 @@ pub mod ispm { } } + /// ISPM commands for platform management pub mod platforms { use crate::{data::Platforms, ISPM_NAME, NON_INTERACTIVE_FLAG}; use anyhow::Result; @@ -391,6 +411,7 @@ pub mod ispm { } } + /// ISPM commands for settings management pub mod settings { use crate::{data::Settings, ISPM_NAME, NON_INTERACTIVE_FLAG}; use anyhow::Result; diff --git a/modules/tsffs/src/simics/ispm-wrapper/tests/config/simple-public/simics-package-manager.cfg b/simics-rs/ispm-wrapper/tests/config/simple-public/simics-package-manager.cfg similarity index 100% rename from modules/tsffs/src/simics/ispm-wrapper/tests/config/simple-public/simics-package-manager.cfg rename to simics-rs/ispm-wrapper/tests/config/simple-public/simics-package-manager.cfg diff --git a/simics-rs/scripts/check.sh b/simics-rs/scripts/check.sh new file mode 100755 index 00000000..80eacb28 --- /dev/null +++ b/simics-rs/scripts/check.sh @@ -0,0 +1,55 @@ +#!/bin/bash + +# Copyright (C) 2024 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + +SCRIPT_DIR=$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" &>/dev/null && pwd) + +if ! command -v fd &>/dev/null; then + echo "fd must be installed! Install with 'cargo install fd-find'" + exit 1 +fi + +if ! command -v cargo &>/dev/null; then + echo "cargo must be installed! Install from https://rustup.rs" + exit 1 +fi + +if ! command -v markdownlint &>/dev/null; then + echo "markdownlint must be installed! Install with 'npm i -g markdownlint-cli'" + exit 1 +fi + +if ! command -v docker &>/dev/null; then + echo "docker must be installed! Install from https://docs.docker.com/engine/install/" + exit 1 +fi + +if ! command -v gitleaks &>/dev/null; then + echo "gitleaks must be installed! Install from https://github.com/gitleaks/gitleaks" + exit 1 +fi + +echo "=================" +echo "Running clippy..." +echo "=================" + +cargo clippy + +echo "=================" +echo "Running markdownlint..." +echo "=================" + +fd '.*\.md$' -x markdownlint -c "${SCRIPT_DIR}/../.github/linters/.markdown-lint.yml" {} + +echo "=================" +echo "Running hadolint..." +echo "=================" + +fd 'Dockerfile.*$' -x bash -c "echo {}:; docker run --rm -v ${SCRIPT_DIR}/../.github/linters/.hadolint.yaml:/.config/hadolint.yaml -i hadolint/hadolint < {}" + +echo "=================" +echo "Running gitleaks..." +echo "=================" + +gitleaks detect \ No newline at end of file diff --git a/simics-rs/scripts/ci.sh b/simics-rs/scripts/ci.sh new file mode 100755 index 00000000..df2d6f8b --- /dev/null +++ b/simics-rs/scripts/ci.sh @@ -0,0 +1,84 @@ +#!/bin/bash + +# Copyright (C) 2024 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + +#Run workflows locally using act + +SCRIPT_DIR=$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" &>/dev/null && pwd) +WORKFLOW_FILE="${SCRIPT_DIR}/../.github/workflows/ci.yml" +SECRETS_FILE="${SCRIPT_DIR}/../.secrets" + +if [ ! -f "${SECRETS_FILE}" ]; then + echo "No file '${SECRETS_FILE}' found. Please create one. It must have the following keys: + GITHUB_TOKEN" \ + "You can find your GitHub token with 'gh auth token'" + exit 1 +fi + +if ! command -v act &>/dev/null; then + echo "act must be installed! Install at https://github.com/nektos/act" + exit 1 +fi + +if ! command -v unbuffer &>/dev/null; then + echo "unbuffer must be installed! Install 'expect' from your package manager" + exit 1 +fi + +populate_env_file() { + ENV_FILE="${1}" + echo "Attempting automatic configuration of proxy with ENV_FILE=${ENV_FILE}" + + if [ -z "${HTTP_PROXY}" ] && [ -f ~/.docker/config.json ]; then + HTTP_PROXY=$(grep httpProxy ~/.docker/config.json | awk -F'\"[:space:]*:[:space:]*' '{split($2,a,"\""); print a[2]}') + echo "Exported docker config HTTP_PROXY=${HTTP_PROXY}" + elif [ -n "${HTTP_PROXY}" ]; then + echo "Exported docker config HTTP_PROXY=${HTTP_PROXY}" + fi + echo "HTTP_PROXY=${HTTP_PROXY}" >>"${ENV_FILE}" + echo "proxy=${HTTP_PROXY}" >>"${ENV_FILE}" + + if [ -z "${HTTPS_PROXY}" ] && [ -f ~/.docker/config.json ]; then + HTTPS_PROXY=$(grep httpsProxy ~/.docker/config.json | awk -F'\"[:space:]*:[:space:]*' '{split($2,a,"\""); print a[2]}') + echo "Exported docker config HTTPS_PROXY=${HTTPS_PROXY}" + elif [ -n "${HTTPS_PROXY}" ]; then + echo "Exported docker config HTTPS_PROXY=${HTTPS_PROXY}" + fi + echo "HTTPS_PROXY=${HTTPS_PROXY}" >>"${ENV_FILE}" + + if [ -z "${http_proxy}" ] && [ -f ~/.docker/config.json ]; then + http_proxy=$(grep httpProxy ~/.docker/config.json | awk -F'\"[:space:]*:[:space:]*' '{split($2,a,"\""); print a[2]}') + echo "Exported docker config http_proxy=${http_proxy}" + elif [ -n "${http_proxy}" ]; then + echo "Exported docker config http_proxy=${http_proxy}" + fi + echo "http_proxy=${http_proxy}" >>"${ENV_FILE}" + + if [ -z "${https_proxy}" ] && [ -f ~/.docker/config.json ]; then + https_proxy=$(grep httpsProxy ~/.docker/config.json | awk -F'\"[:space:]*:[:space:]*' '{split($2,a,"\""); print a[2]}') + echo "Exported docker config https_proxy=${https_proxy}" + elif [ -n "${https_proxy}" ]; then + echo "Exported docker config https_proxy=${https_proxy}" + fi + echo "https_proxy=${https_proxy}" >>"${ENV_FILE}" + + if [ -z "${NO_PROXY}" ] && [ -f ~/.docker/config.json ]; then + NO_PROXY=$(grep noProxy ~/.docker/config.json | awk -F'\"[:space:]*:[:space:]*' '{split($2,a,"\""); print a[2]}') + echo "Exported docker config NO_PROXY=${NO_PROXY}" + elif [ -n "${NO_PROXY}" ]; then + echo "Exported docker config NO_PROXY=${NO_PROXY}" + fi + echo "NO_PROXY=${NO_PROXY}" >>"${ENV_FILE}" + + cat "${ENV_FILE}" +} + +ENV_FILE=$(mktemp) +ARTIFACT_DIR=$(mktemp -d) +populate_env_file "${ENV_FILE}" +mkdir -p "${SCRIPT_DIR}/../.github/logs/" +unbuffer act -W "${WORKFLOW_FILE}" --env-file="${ENV_FILE}" --secret-file="${SECRETS_FILE}" \ + --artifact-server-path "${ARTIFACT_DIR}" \ + "$@" | tee "${SCRIPT_DIR}/../.github/logs/$(date '+%F-%T').log" +rm "${ENV_FILE}" diff --git a/simics-rs/scripts/cov.sh b/simics-rs/scripts/cov.sh new file mode 100755 index 00000000..de315de3 --- /dev/null +++ b/simics-rs/scripts/cov.sh @@ -0,0 +1,15 @@ +#!/bin/bash + +# Copyright (C) 2024 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + +SCRIPT_DIR=$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" &>/dev/null && pwd) + +if ! command -v cargo-llvm-cov &>/dev/null; then + echo "cargo-llvm-cov must be installed! Run 'cargo install cargo-llvm-cov'" + exit 1 +fi + +pushd "${SCRIPT_DIR}" || exit 1 + +cargo llvm-cov diff --git a/simics-rs/scripts/fmt.sh b/simics-rs/scripts/fmt.sh new file mode 100755 index 00000000..43db2d93 --- /dev/null +++ b/simics-rs/scripts/fmt.sh @@ -0,0 +1,35 @@ +#!/bin/bash + +# Copyright (C) 2024 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + +# Clang-Format + +SCRIPT_DIR=$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" &>/dev/null && pwd) + +if ! command -v cargo &>/dev/null; then + echo "cargo must be installed! Install from https://rustup.rs" + exit 1 +fi + +if ! command -v fd &>/dev/null; then + echo "fd must be installed! Install with 'cargo install fd-find'" + exit 1 +fi + +if ! command -v markdownlint &>/dev/null; then + echo "markdownlint must be installed! Install with 'npm i -g markdownlint-cli'" + exit 1 +fi + +echo "=================" +echo "Formatting Rust" +echo "=================" + +cargo fmt --all + +echo "=================" +echo "Formatting Markdown" +echo "=================" + +fd '.*\.md$' -x markdownlint -f -c "${SCRIPT_DIR}/../.github/linters/.markdown-lint.yml" {} diff --git a/simics-rs/scripts/gen-simics-api-items.rs b/simics-rs/scripts/gen-simics-api-items.rs new file mode 100755 index 00000000..d0119170 --- /dev/null +++ b/simics-rs/scripts/gen-simics-api-items.rs @@ -0,0 +1,1046 @@ +#!/usr/bin/env -S cargo +nightly -Z script +## [dependencies] +## anyhow = "*" +## bindgen = "*" +## clap = { version = "*", features = ["derive"] } +## futures = "*" +## prettyplease = "*" +## quote = "*" +## scraper = "*" +## syn = { version = "*", features = ["full"] } +## tokio = { version = "*", features = ["full"] } +## typed-builder = "*" +## walkdir = "*" + +// Copyright (C) 2024 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 + +use anyhow::Result; +use clap::Parser; +use futures::{stream::iter, StreamExt}; +use prettyplease::unparse; +use common::SimicsBindings; +use std::{collections::HashSet, path::{Path, PathBuf}}; +use syn::{parse_file, Item, ForeignItem}; +use quote::quote; +use tokio::{process::Command, fs::write}; +use typed_builder::TypedBuilder; + +/// Common utilities for the simics-api-sys build and update. Copy this mod directly into +/// `scripts/gen-simics-api-items.rs` on update. +pub mod common { + use anyhow::{anyhow, bail, ensure, Result}; + use bindgen::{ + callbacks::{MacroParsingBehavior, ParseCallbacks}, + AliasVariation, Bindings, Builder, EnumVariation, FieldVisibilityKind, MacroTypeVariation, + NonCopyUnionStyle, + }; + use scraper::{Html, Selector}; + use std::{ + collections::HashSet, + env::var, + ffi::OsStr, + fmt::{self, Display, Formatter, Write}, + fs::{read, read_dir, write}, + iter::once, + path::{Path, PathBuf}, + }; + use walkdir::WalkDir; + + pub const AUTO_BINDINGS_FILENAME: &str = "bindings-auto.rs"; + pub const AUTO_BINDINGS_VERSION_FILENAME: &str = "version-auto.rs"; + pub const OUT_DIR_ENV: &str = "OUT_DIR"; + + // NOTE: The following environment variables are set under the SIMICS package make system + // + // PYTHON: The path to SIMICS's mini-python + // PYTHON3_LDFLAGS: The path to SIMICS's libpython3.so. Starting in 6.0.177, this variable can + // be empty, in which case we use a fallback. + // LIBS: `-lsimics-common -lvtutils` + // CXX_INCLUDE_PATHS: Path to SIMICS_BASE/linux64/api + // PYTHON3: The path to SIMICS's mini-python + // SIMICS_WORKSPACE: The path to the package root + // MOD_MAKEFILE: The makefile being invoked to build the module currently being built + // SIMICS_BASE: The path to the simics base version for the package/project + // DMLC: The path to dml python + // PYTHON3_INCLUDE: -I flag for the path to SIMICS's python3 include directory + // DML_INCLUDE_PATHS: The path to the dml api include directory + // SIMICS_MAJOR_VERSION: The simics major version + // SIMICS_PROJECT: The path to the simics project + // PYTHON_LDFLAGS: The path to SIMICS's libpython3.so + // MODULE_MAKEFILE: The path to the module.mk makefile in simics base + // SRC_BASE: The path to the modules directory for the package + // CCLDFLAGS_DYN: CC/LD flags for dynamic linking + // LDFLAGS: Linker flags to link to libsimics and friends + // SIMICS_PACKAGE_LIST: The path to the .package-list file for this package + // SIMICS_MODEL_BUILDER: The simics used to build models + // PYTHON_INCLUDE: -I flag for the path to SIMICS's python3 include directory + // DMLC_DIR: The path to the simics bin directory containing the dml compiler + // PY2TO3: Path to the py-2to3 tool + // LDFLAGS_PY3: -L flag to include simics base's bin directory + // INCLUDE_PATHS: The path to the SIMICS base include directory + + /// Name for the environment variable set by the SIMICS build system to the path to the + /// simics base package. We actually use SIMICS_MODEL_BUILDER here, because we are indeed + /// building a model. + pub const SIMICS_BASE_ENV: &str = "SIMICS_BASE"; + /// Name for the environment variable set by the SIMICS build system to the flag to + /// include e.g. -I SIMICS_BASE/linux64/include/python3.9/ + pub const PYTHON3_INCLUDE_ENV: &str = "PYTHON3_INCLUDE"; + /// Name for the ldflags environment variable, which will point to + /// Name for the environment variable by the SIMICS build system to the path to the + /// simics include directory e.g. SIMICS_BASE/src/include/ + pub const INCLUDE_PATHS_ENV: &str = "INCLUDE_PATHS"; + + /// Name for the environment variable set by the SIMICS build system to the libpython3.so library + pub const PYTHON3_LDFLAGS_ENV: &str = "PYTHON3_LDFLAGS"; + /// Name for the LDFLAGS environment variable set by the SIMICS build system containing + /// the link search path for the libsimics library, among other flags. e.g. -LPATH -z noexecstack + pub const LDFLAGS_ENV: &str = "LDFLAGS"; + /// Name for the environment variable containing shared library link flags for simics common and + /// vtutils + pub const LIBS_ENV: &str = "LIBS"; + + #[cfg(not(windows))] + /// The name of the binary/library/object subdirectory on linux systems + pub const HOST_DIRNAME: &str = "linux64"; + #[cfg(windows)] + /// The name of the binary/library/object subdirectory on windows systems + pub const HOST_DIRNAME: &str = "win64"; + + /// The path in SIMICS_BASE/HOST_TYPE/ of the HTML file containing HAP documentation required + /// for high level codegen of builtin HAPs + pub const HAP_DOC_PATH: &str = "doc/html/rm-base/rm-haps.html"; + + // https://github.com/rust-lang/rust-bindgen/issues/687#issuecomment-1312298570 + pub const IGNORE_MACROS: [&str; 20] = [ + "FE_DIVBYZERO", + "FE_DOWNWARD", + "FE_INEXACT", + "FE_INVALID", + "FE_OVERFLOW", + "FE_TONEAREST", + "FE_TOWARDZERO", + "FE_UNDERFLOW", + "FE_UPWARD", + "FP_INFINITE", + "FP_INT_DOWNWARD", + "FP_INT_TONEAREST", + "FP_INT_TONEARESTFROMZERO", + "FP_INT_TOWARDZERO", + "FP_INT_UPWARD", + "FP_NAN", + "FP_NORMAL", + "FP_SUBNORMAL", + "FP_ZERO", + "IPPORT_RESERVED", + ]; + + pub const HDR_BLOCKLIST: [&str; 4] = [ + // Not a SIMICS library include, and conflicts with simics/simulator/follower-time.h + "libfollower.h", + // Deprecated (see #pragma messages in files) + "data-structs.h", + "global.h", + "vtutils.h", + // Excluded (host configuration dependent) + // "host-info.h", + // "module-host-config.h", + // "base-types.h", + ]; + + #[derive(Debug)] + struct IgnoreMacros(HashSet); + + impl ParseCallbacks for IgnoreMacros { + fn will_parse_macro(&self, name: &str) -> MacroParsingBehavior { + if self.0.contains(name) { + MacroParsingBehavior::Ignore + } else { + MacroParsingBehavior::Default + } + } + } + + impl IgnoreMacros { + fn new() -> Self { + Self(IGNORE_MACROS.into_iter().map(|s| s.to_string()).collect()) + } + } + + pub struct IncludeWrapper { + include_path: PathBuf, + code: String, + } + + impl IncludeWrapper { + /// Generate include wrapper code from the include directory. This generates a top-level + /// file which includes all the headers in the include directory, which is passed to bindgen + /// which will expand all the includes. + pub fn include_code_from_includes

(include_path: P) -> Result + where + P: AsRef, + { + let mut include_paths = WalkDir::new(&include_path) + .into_iter() + .filter_map(|p| p.ok()) + .filter(|p| p.path().is_file()) + .filter_map(|p| match p.path().extension() { + Some(e) => { + if e == "h" { + match p.path().canonicalize() { + Ok(p) => p.strip_prefix(&include_path).map_or_else( + |e| { + eprintln!( + "cargo:warning=Failed to strip prefix {} from {}: {}", + include_path.as_ref().display(), + p.display(), + e + ); + None:: + }, + |p| Some(p.to_path_buf()), + ), + Err(e) => { + eprintln!( + "cargo:warning=Failed to canonicalize path {}: {}", + p.path().display(), + e + ); + None + } + } + } else { + eprintln!( + "cargo:warning=Ignoring path {}, no '.h' extension", + p.path().display() + ); + None + } + } + None => { + eprintln!( + "cargo:warning=Ignoring path {}, no extension", + p.path().display() + ); + None + } + }) + .collect::>(); + + let Some(python_hdr_pos) = include_paths + .iter() + .position(|p| p.file_name() == Some(OsStr::new("python-header.h"))) + else { + bail!("No python-header.h in include file list."); + }; + + include_paths.swap(0, python_hdr_pos); + + HDR_BLOCKLIST.iter().for_each(|le| { + if let Some(pos) = include_paths + .iter() + .position(|p| p.file_name() == Some(OsStr::new(le))) + { + include_paths.remove(pos); + } + }); + + let include_stmts = include_paths + .iter() + .map(|p| format!("#include <{}>", p.display())) + .collect::>(); + + let code = include_stmts.join("\n") + "\n"; + + Ok(code) + } + + /// Generate code for HAPs from the hap documentation file. HAPs are not included in + /// the include directory like interfaces (the other code-generated component) are, + /// so we must generate them separately. This is very much a best-effort approach, as it + /// relies on parsing the HTML documentation. + pub fn hap_code_from_doc

(hap_doc_path: P) -> Result + where + P: AsRef, + { + let hap_document = + Html::parse_document(&String::from_utf8(read(&hap_doc_path).map_err(|e| { + anyhow!( + "Error reading document path {} to extract HAP definitions: {e}", + hap_doc_path.as_ref().display() + ) + })?)?); + + let haps_selector = Selector::parse(r#"article"#).unwrap(); + let haps_id_selector = Selector::parse(r#"h2"#).unwrap(); + let section_selector = Selector::parse(r#"section"#).unwrap(); + let hap_code_selector = Selector::parse(r#"pre"#).unwrap(); + let hap_description_selector = Selector::parse(r#"h3"#).unwrap(); + let hap_index_selector = Selector::parse(r#"code"#).unwrap(); + + let haps_article = hap_document.select(&haps_selector).next().unwrap(); + let haps_names = haps_article + .select(&haps_id_selector) + .filter_map(|h| h.value().id()) + .collect::>(); + let haps_sections = haps_article.select(§ion_selector).collect::>(); + let haps_code_indices_descriptions = haps_sections + .iter() + .map(|s| { + let code = s + .select(&hap_code_selector) + .next() + .unwrap() + .inner_html() + .trim() + .to_string(); + let maybe_index = s + .select(&hap_index_selector) + .next() + .map(|i| i.inner_html().trim().to_string()); + let maybe_description = s + .select(&hap_description_selector) + .last() + .and_then(|i| i.next_sibling()) + .and_then(|n| n.value().as_text().map(|t| t.trim().to_string())); + (code, maybe_index, maybe_description) + }) + .collect::>(); + + let hap_code = haps_names + .iter() + .zip(haps_code_indices_descriptions.iter()) + .try_fold( + String::default(), + |mut s, (name, (code, maybe_index, maybe_description))| { + let mut hap_name_name = name.to_ascii_uppercase(); + hap_name_name += "_HAP_NAME"; + let mut hap_callback_name = name.to_ascii_lowercase(); + hap_callback_name += "_hap_callback"; + let code = code + .replace("(*)", &format!("(*{})", hap_callback_name)) + .replace(['/', '-'], "_"); + let comment = format!( + "/**\n * Index: {}\n * Description: {}\n */", + maybe_index + .as_ref() + .unwrap_or(&"Indices not supported".to_string()), + maybe_description + .as_ref() + .unwrap_or(&"No description".to_string()) + ); + + write!( + &mut s, + "#define {} \"{}\"\n{}\ntypedef {}\n", + hap_name_name, name, comment, code, + ) + .and_then(|_| Ok(s)) + }, + )?; + + Ok(hap_code) + } + + /// Generate a new include wrapper for the given SIMICS base directory + /// + pub fn new

(simics_base_directory: P) -> Result + where + P: AsRef, + { + let hap_doc_path = simics_base_directory + .as_ref() + .join(HOST_DIRNAME) + .join(HAP_DOC_PATH); + + let include_paths_env = var(INCLUDE_PATHS_ENV).or_else(|e| { + println!("cargo:warning=No environment variable {INCLUDE_PATHS_ENV} set. Using default include paths: {e}"); + simics_base_directory.as_ref() + .join("src") + .join("include") + .to_str() + .map(|s| s.to_string()) + .ok_or_else(|| anyhow!("Could not convert path to string")) + })?; + + let include_path = PathBuf::from(&include_paths_env).canonicalize()?; + + let include_code = Self::include_code_from_includes(&include_path)?; + let hap_code = Self::hap_code_from_doc(hap_doc_path)?; + Ok(Self { + code: include_code + &hap_code, + include_path, + }) + } + + /// Write the generated include wrapper to the given path + pub fn write

(&self, path: P) -> Result<()> + where + P: AsRef, + { + write(path, &self.code)?; + Ok(()) + } + } + + impl Display for IncludeWrapper { + fn fmt(&self, f: &mut Formatter<'_>) -> fmt::Result { + write!(f, "{}", self.code) + } + } + + pub struct VersionDeclaration(String); + + impl VersionDeclaration { + pub fn new

(simics_base_directory: P) -> Result + where + P: AsRef, + { + let simics_base_version = simics_base_directory + .as_ref() + .file_name() + .ok_or_else(|| anyhow!("No file name found in SIMICS base path"))? + .to_str() + .ok_or_else(|| anyhow!("Could not convert file name to string"))? + .split('-') + .last() + .ok_or_else(|| anyhow!("Could not split to obtain version: SIMICS base directory may not be in the format simics-X.X.XXX"))? + .to_string(); + + Ok(Self(format!( + r#"pub const SIMICS_VERSION: &str = "{}";"#, + simics_base_version + ))) + } + + pub fn write

(&self, path: P) -> Result<()> + where + P: AsRef, + { + write(path, &self.0)?; + Ok(()) + } + } + + pub struct SimicsBindings { + pub bindings: Bindings, + } + + impl SimicsBindings { + pub fn new

(base_dir_path: P, blocklist: &[&str], allowlist: &[&str]) -> Result + where + P: AsRef, + { + let wrapper = IncludeWrapper::new(&base_dir_path)?; + + #[cfg(unix)] + let wrapper_include_path = wrapper.include_path.display().to_string(); + + #[cfg(windows)] + let wrapper_include_path = { + let path = wrapper.include_path.display().to_string(); + if path.starts_with(r#"\\?\"#) { + path[4..].to_string() + } else { + path + } + }; + + let bindings = + Builder::default() + .clang_arg(var(PYTHON3_INCLUDE_ENV).or_else(|e| { + println!("cargo:warning=No environment variable {PYTHON3_INCLUDE_ENV} set. Using default include paths: {e}"); + subdir(base_dir_path + .as_ref() + .join(HOST_DIRNAME) + .join("include")) + .and_then(|p| { + p.to_str() + .map(|s| format!("-I{}", s)) + .ok_or_else(|| anyhow!("Could not convert path to string")) + }) + })?) + .clang_arg(format!("-I{}", &wrapper_include_path)) + .clang_arg("-fretain-comments-from-system-headers") + .clang_arg("-fparse-all-comments") + // We don't care at all what warnings simics has if they aren't errors :) + .clang_arg("-Wno-everything") + .default_visibility(FieldVisibilityKind::Public) + .default_alias_style(AliasVariation::TypeAlias) + .default_enum_style(EnumVariation::Rust { + non_exhaustive: false, + }) + .default_macro_constant_type(MacroTypeVariation::Unsigned) + .default_non_copy_union_style(NonCopyUnionStyle::BindgenWrapper) + .derive_default(true) + .derive_hash(true) + .derive_partialord(true) + .derive_ord(true) + .derive_eq(true) + .derive_partialeq(true) + .generate_comments(true) + .header_contents("wrapper.h", &wrapper.to_string()) + // NOTE: These callbacks are required to emit `cargo:rerun-if-changed` + // statements, so we do not need to use them in this script. If you want to + // repurpose this script to use in a `build.rs`, you should re-enable this + // line: + // .parse_callbacks(Box::new(CargoCallbacks)) + .parse_callbacks(Box::new(IgnoreMacros::new())) + // These functions are extraneous and only emitted due to the include wrappers + // eventually including system headers which provide a huge number of unused + // symbols. + // .blocklist_functions(FUNCS_BLOCKLIST) + .blocklist_items(blocklist) + .allowlist_items(allowlist) + // .blocklist_items(ITEMS_BLOCKLIST_128BIT) + // Blocklisted because packed and align reprs differ + .blocklist_type("__mingw_ldbl_type_t") + .bitfield_enum("event_class_flag_t") + .bitfield_enum("micro_checkpoint_flags_t") + .bitfield_enum("access_t") + .bitfield_enum("breakpoint_flag") + .bitfield_enum("save_flags_t") + // Blocklisted because use 128-bit types which are not FFI-safe + .blocklist_function("__acoshl") + .blocklist_function("acoshl") + .blocklist_function("__acosl") + .blocklist_function("acosl") + .blocklist_function("__asinhl") + .blocklist_function("asinhl") + .blocklist_function("__asinl") + .blocklist_function("asinl") + .blocklist_function("__atan2l") + .blocklist_function("atan2l") + .blocklist_function("__atanhl") + .blocklist_function("atanhl") + .blocklist_function("__atanl") + .blocklist_function("atanl") + .blocklist_function("__cbrtl") + .blocklist_function("cbrtl") + .blocklist_function("__ceill") + .blocklist_function("ceill") + .blocklist_function("__copysignl") + .blocklist_function("copysignl") + .blocklist_function("__coshl") + .blocklist_function("coshl") + .blocklist_function("__cosl") + .blocklist_function("cosl") + .blocklist_function("__dreml") + .blocklist_function("dreml") + .blocklist_function("__erfcl") + .blocklist_function("erfcl") + .blocklist_function("__erfl") + .blocklist_function("erfl") + .blocklist_function("__exp2l") + .blocklist_function("exp2l") + .blocklist_function("__expl") + .blocklist_function("expl") + .blocklist_function("__expm1l") + .blocklist_function("expm1l") + .blocklist_function("__fabsl") + .blocklist_function("fabsl") + .blocklist_function("__fdiml") + .blocklist_function("fdiml") + .blocklist_function("__finitel") + .blocklist_function("finitel") + .blocklist_function("__floorl") + .blocklist_function("floorl") + .blocklist_function("__fmal") + .blocklist_function("fmal") + .blocklist_function("__fmaxl") + .blocklist_function("fmaxl") + .blocklist_function("__fminl") + .blocklist_function("fminl") + .blocklist_function("__fmodl") + .blocklist_function("fmodl") + .blocklist_function("__fpclassifyl") + .blocklist_function("__frexpl") + .blocklist_function("frexpl") + .blocklist_function("__gammal") + .blocklist_function("gammal") + .blocklist_function("__hypotl") + .blocklist_function("hypotl") + .blocklist_function("__ilogbl") + .blocklist_function("ilogbl") + .blocklist_function("__iseqsigl") + .blocklist_function("__isinfl") + .blocklist_function("isinfl") + .blocklist_function("__isnanl") + .blocklist_function("isnanl") + .blocklist_function("__issignalingl") + .blocklist_function("__j0l") + .blocklist_function("j0l") + .blocklist_function("__j1l") + .blocklist_function("j1l") + .blocklist_function("__jnl") + .blocklist_function("jnl") + .blocklist_function("__ldexpl") + .blocklist_function("ldexpl") + .blocklist_function("__lgammal") + .blocklist_function("lgammal") + .blocklist_function("__lgammal_r") + .blocklist_function("lgammal_r") + .blocklist_function("__llrintl") + .blocklist_function("llrintl") + .blocklist_function("__llroundl") + .blocklist_function("llroundl") + .blocklist_function("__log10l") + .blocklist_function("log10l") + .blocklist_function("__log1pl") + .blocklist_function("log1pl") + .blocklist_function("__log2l") + .blocklist_function("log2l") + .blocklist_function("__logbl") + .blocklist_function("logbl") + .blocklist_function("__logl") + .blocklist_function("logl") + .blocklist_function("__lrintl") + .blocklist_function("lrintl") + .blocklist_function("__lroundl") + .blocklist_function("lroundl") + .blocklist_function("__modfl") + .blocklist_function("modfl") + .blocklist_function("__nanl") + .blocklist_function("nanl") + .blocklist_function("__nearbyintl") + .blocklist_function("nearbyintl") + .blocklist_function("__nextafterl") + .blocklist_function("nextafterl") + .blocklist_function("__nexttoward") + .blocklist_function("nexttoward") + .blocklist_function("__nexttowardf") + .blocklist_function("nexttowardf") + .blocklist_function("__nexttowardl") + .blocklist_function("nexttowardl") + .blocklist_function("__powl") + .blocklist_function("powl") + .blocklist_function("__remainderl") + .blocklist_function("remainderl") + .blocklist_function("__remquol") + .blocklist_function("remquol") + .blocklist_function("__rintl") + .blocklist_function("rintl") + .blocklist_function("__roundl") + .blocklist_function("roundl") + .blocklist_function("__scalbl") + .blocklist_function("scalbl") + .blocklist_function("__scalblnl") + .blocklist_function("scalblnl") + .blocklist_function("__scalbnl") + .blocklist_function("scalbnl") + .blocklist_function("__signbitl") + .blocklist_function("__significandl") + .blocklist_function("significandl") + .blocklist_function("__sinhl") + .blocklist_function("sinhl") + .blocklist_function("__sinl") + .blocklist_function("sinl") + .blocklist_function("__sqrtl") + .blocklist_function("sqrtl") + .blocklist_function("__tanhl") + .blocklist_function("tanhl") + .blocklist_function("__tanl") + .blocklist_function("tanl") + .blocklist_function("__tgammal") + .blocklist_function("tgammal") + .blocklist_function("__truncl") + .blocklist_function("truncl") + .blocklist_function("wcstold") + .blocklist_function("__y0l") + .blocklist_function("y0l") + .blocklist_function("__y1l") + .blocklist_function("y1l") + .blocklist_function("__ynl") + .blocklist_function("ynl") + .blocklist_function("strtold") + .blocklist_function("qecvt") + .blocklist_function("qfcvt") + .blocklist_function("qgcvt") + .blocklist_function("qecvt_r") + .blocklist_function("qfcvt_r") + // Blocklisted because use 128-bit types which are not FFI-safe + // (Windows) + .blocklist_function("__mingw_strtold") + .blocklist_function("__mingw_wcstold") + .blocklist_function("sincosl") + .blocklist_function("_chgsignl") + // Blocklisted because not used and adds confusion + .generate() + .map_err(|e| { + println!("cargo:warning=Failed to generate bindings: {e}"); + println!("cargo:warning=Include path: {}", &wrapper_include_path); + let wrapper_string = wrapper.to_string(); + for (i, line) in wrapper_string.lines().enumerate() { + println!("cargo:warning={:04}: {}", i, line); + } + e + })?; + + Ok(Self { bindings }) + } + + pub fn write

(&self, path: P) -> Result<()> + where + P: AsRef, + { + self.bindings.write_to_file(path)?; + Ok(()) + } + } + + impl Display for SimicsBindings { + fn fmt(&self, f: &mut Formatter<'_>) -> fmt::Result { + write!(f, "{}", &self.bindings.to_string()) + } + } + + /// Get the only subdirectory of a directory, if only one exists. If zero or more than one subdirectories + /// exist, returns an error + pub fn subdir

(dir: P) -> Result + where + P: AsRef, + { + let subdirs = read_dir(dir)? + .filter_map(|p| p.ok()) + .map(|p| p.path()) + .filter(|p| p.is_dir()) + .collect::>(); + ensure!( + subdirs.len() == 1, + "Expected exactly 1 sub-directory, found {}", + subdirs.len() + ); + + subdirs + .first() + .cloned() + .ok_or_else(|| anyhow!("No sub-directories found")) + } + + pub fn emit_link_info() -> Result<()> { + let base_dir_path = PathBuf::from( + var(SIMICS_BASE_ENV) + .map_err(|e| anyhow!("No environment variable {SIMICS_BASE_ENV} found: {e}"))?, + ); + + ensure!( + base_dir_path.is_dir(), + "{} is not a directory", + base_dir_path.display() + ); + + let libpython_path = + PathBuf::from(var(PYTHON3_LDFLAGS_ENV).map_err(|e| { + anyhow!("No environment variable {PYTHON3_LDFLAGS_ENV} found: {e}") + }).and_then(|v| if v.is_empty() { bail!("Environment variable {PYTHON3_LDFLAGS_ENV} is empty") } else { Ok(v) }).or_else(|e| { + println!("cargo:warning=No environment variable {INCLUDE_PATHS_ENV} set. Using default include paths: {e}"); + base_dir_path + .join(HOST_DIRNAME) + .join("sys") + .join("lib") + .join("libpython3.so") + .to_str() + .map(|s| s.to_string()) + .ok_or_else(|| anyhow!("Could not convert path to string")) + })?); + + let libpython_dir = libpython_path + .parent() + .ok_or_else(|| anyhow!("libpython path {} has no parent", libpython_path.display()))? + .to_path_buf(); + + let link_search_paths = var(LDFLAGS_ENV) + .or_else(|e| { + println!("cargo:warning=No environment variable {LDFLAGS_ENV} set. Using default include paths: {e}"); + base_dir_path + .join(HOST_DIRNAME) + .join("bin") + .to_str() + .map(|s| format!("-L{}", s)) + .ok_or_else(|| anyhow!("Could not convert path to string")) + })? + .split_whitespace() + .filter_map(|s| s.starts_with("-L").then_some(s.replace("-L", ""))) + .map(PathBuf::from) + .chain(once(libpython_dir)) + .collect::>(); + + #[cfg(not(windows))] + let libs = var(LIBS_ENV) + .unwrap_or_else(|e| { + println!("cargo:warning=No environment variable {LIBS_ENV} set. Using default include paths: {e}"); + "-lsimics-common -lvtutils".to_string() + }) + .split_whitespace() + .filter_map(|s| s.starts_with("-l").then_some(s.replace("-l", ""))) + .collect::>(); + + #[cfg(windows)] + let libs = "-lsimics-common -lvtutils" + .split_whitespace() + .filter_map(|s| s.starts_with("-l").then_some(s.replace("-l", ""))) + .collect::>(); + + link_search_paths.iter().for_each(|p| { + // NOTE: These are removed by cargo, which is why we use absolute paths. + // We emit them just for posterity + println!("cargo:rustc-link-search=native={}", p.display()); + // NOTE: This is needed for the recursive linking step against libpython from + // libsimics-common.so + println!("cargo:rustc-link-arg=-Wl,-rpath-link,{}", p.display()); + // NOTE: This is ostensibly needed so we can locate the shared libraries at + // runtime, because unlike the `simics` script in each project, we don't get to + // write an absolute path. Unfortunately, rpath is blocklisted. + // + // println!("cargo-rustc-link-arg=-Wl,-rpath,{}", p.display()); + // println!("cargo-rustc-cdylib-link-arg=-Wl,-rpath,{}", p.display()); + // println!("cargo-rustc-link-arg=-Wl,-rpath={}", p.display()); + // println!("cargo-rustc-cdylib-link-arg=-Wl,-rpath={}", p.display()); + }); + + libs.iter() + .for_each(|l| println!("cargo:rustc-link-lib=dylib={}", l)); + + #[cfg(unix)] + { + let library_search_paths = link_search_paths + .iter() + .map(|p| { + p.to_str() + .ok_or_else(|| anyhow!("Could not convert path {} to string", p.display())) + }) + .collect::>>()? + .join(":"); + + // NOTE: This enables running binaries linked with this one when running with `cargo run` + println!( + "cargo:warning=Setting LD_LIBRARY_PATH={}", + library_search_paths + ); + + println!("cargo:rustc-env=LD_LIBRARY_PATH={}", library_search_paths); + } + + // NOTE: EVEN with all of the above, a binary built using `cargo build` will not + // be able to find libsimics-common.so. Instead, when we build a binary that + // transitively depends on this -sys crate, we compile it with `cargo rustc`, + // passing the `-rpath` link argument like so. Note `--disable-new-dtags`, + // otherwise `libsimics-common.so` cannot find `libpython3.9.so.1.0` because it + // will be missing the recursive rpath lookup. + + // SIMICS_BASE=/home/rhart/simics-public/simics-6.0.174 + // PYTHON3_INCLUDE=-I/home/rhart/simics-public/simics-6.0.174/linux64/include/python3.9 + // INCLUDE_PATHS=/home/rhart/simics-public/simics-6.0.174/src/include + // PYTHON3_LDFLAGS=/home/rhart/simics-public/simics-6.0.174/linux64/sys/lib/libpython3.so + // LDFLAGS="-L/home/rhart/simics-public/simics-6.0.174/linux64/bin -z noexecstack -z relro -z now" LIBS="-lsimics-common -lvtutils" + // cargo --features=auto,link --example simple-simics -- -C link-args="-Wl,--disable-new-dtags -Wl,-rpath,/home/rhart/simics-public/simics-6.0.174/linux64/bin;/home/rhart/simics-public/simics-6.0.174/linux64/sys/lib/" + // + // This command (the environment variables can be left out) can be + // auto-generated in the SIMICS makefile build system. + + Ok(()) + } + + trait WithLists { + fn blocklist_functions(self, blocklist: &[&str]) -> Self; + fn blocklist_items(self, blocklist: &[&str]) -> Self; + fn blocklist_types(self, blocklist: &[&str]) -> Self; + fn allowlist_functions(self, allowlist: &[&str]) -> Self; + fn allowlist_items(self, allowlist: &[&str]) -> Self; + fn allowlist_types(self, allowlist: &[&str]) -> Self; + } + + impl WithLists for Builder { + fn blocklist_functions(self, blocklist: &[&str]) -> Self { + blocklist.iter().fold(self, |b, f| b.blocklist_function(f)) + } + + fn blocklist_items(self, blocklist: &[&str]) -> Self { + blocklist.iter().fold(self, |b, f| b.blocklist_item(f)) + } + + fn blocklist_types(self, blocklist: &[&str]) -> Self { + blocklist.iter().fold(self, |b, f| b.blocklist_type(f)) + } + + fn allowlist_functions(self, allowlist: &[&str]) -> Self { + allowlist.iter().fold(self, |b, f| b.allowlist_function(f)) + } + + fn allowlist_items(self, allowlist: &[&str]) -> Self { + allowlist.iter().fold(self, |b, f| b.allowlist_item(f)) + } + + fn allowlist_types(self, allowlist: &[&str]) -> Self { + allowlist.iter().fold(self, |b, f| b.allowlist_type(f)) + } + } +} + + +#[derive(Parser)] +struct Args { + #[clap(short, long)] + /// The path to a SIMICS base directory (e.g. /opt/simics/simics-6.0.169) + simics_base: Vec, + #[clap(short, long)] + /// The path to write the generated bindings to + output: PathBuf, +} + +#[derive(TypedBuilder, Debug, Clone, PartialEq, Eq, PartialOrd, Ord)] +struct ParseItem { + pub name: String, + #[builder(default)] + pub is_fn: bool, +} + +impl ParseItem { + /// Return a regex for searching for this item. For functions, the pattern is + /// searched with an open paren after the name to restrict the search to function + /// calls and declarations. + fn search_regex(&self) -> String { + if self.is_fn { + // NOTE: Some APIs are declared like `void *SIM_...` so we allow an optional + // asterisk after a space + format!(r#"(^{name}\(|\s+\*?{name}\()"#, name = self.name) + } else { + format!(r#"(^{name}|\s+{name})"#, name = self.name) + } + } + + pub async fn search

(&self, path: P) -> Option + where + P: AsRef, + { + let name = self.name.clone(); + + Command::new("rg") + .arg("-q") + .arg(&self.search_regex()) + .arg(path.as_ref()) + .status() + .await + .expect("Failed to execute rg. Install it with 'cargo install ripgrep'") + .success() + .then_some(name) + } +} + +/// Parse an item into a list of names +fn parse_item(item: &Item) -> Vec { + match item { + Item::Const(c) => vec![ + ParseItem::builder().name(c.ident.to_string()).build() + ], + Item::Enum(e) => vec![ + ParseItem::builder().name(e.ident.to_string()).build() + ], + // ExternCrate(ItemExternCrate), + Item::Fn(f) => vec![ + ParseItem::builder().name(f.sig.ident.to_string()).is_fn(true).build() + ], + Item::ForeignMod(m) => { + m.items.iter() + .filter_map(|item| match item { + ForeignItem::Fn(f) => Some( + ParseItem::builder() + .name(f.sig.ident.to_string()) + .is_fn(true) + .build() + ), + ForeignItem::Static(s) => Some( + ParseItem::builder() + .name(s.ident.to_string()) + .build() + ), + ForeignItem::Type(t) => Some( + ParseItem::builder() + .name(t.ident.to_string()) + .build() + ), + // ForeignItem::Macro(ItemMacro), + // ForeignItem::Verbatim(TokenStream), + _ => None, + }) + .collect() + }, + // Impl(ItemImpl), + // Macro(ItemMacro), + // Mod(ItemMod), + Item::Static(s) => vec![ + ParseItem::builder().name(s.ident.to_string()).build() + ], + Item::Struct(s) => vec![ + ParseItem::builder().name(s.ident.to_string()).build() + ], + // Trait(ItemTrait), + // TraitAlias(ItemTraitAlias), + Item::Type(t) => vec![ + ParseItem::builder().name(t.ident.to_string()).build() + ], + Item::Union(u) => vec![ + ParseItem::builder().name(u.ident.to_string()).build() + ], + // Use(ItemUse), + // Verbatim(TokenStream), + _ => vec![], + } +} + +#[tokio::main] +async fn main() -> Result<()> { + let args = Args::parse(); + + let parse_names = iter(args.simics_base) + .map(|simics_base| async move { + let bindings = SimicsBindings::new(&simics_base, &[], &[]) + .expect("Failed to generate bindings"); + + let parsed = parse_file(&bindings.to_string()) + .expect("Failed to parse bindings"); + + let parse_items = parsed.items.iter() + .map(parse_item) + .flatten() + .collect::>(); + + // Asynchronously check if the name actually occurs in the base directory + iter(parse_items) + .filter_map(|parse_item| { + let include_dir = simics_base + .join("src") + .join("include"); + async move { parse_item.search(&include_dir).await } + }) + .collect::>() + .await + }) + .buffer_unordered(32) + .collect::>() + .await; + + let mut parse_names = parse_names + .into_iter() + .flatten() + .collect::>() + .into_iter() + .collect::>(); + + parse_names.sort(); + + let parse_names_len = parse_names.len(); + + let simics_api_items = quote! { + const SIMICS_API_ITEMS: &[&str; #parse_names_len] = &[ + #(#parse_names),* + ]; + }; + + let formatted = unparse(&parse_file(&simics_api_items.to_string())?); + + write(&args.output, &formatted).await?; + + Ok(()) +} diff --git a/simics-rs/scripts/license.sh b/simics-rs/scripts/license.sh new file mode 100755 index 00000000..a3ac274b --- /dev/null +++ b/simics-rs/scripts/license.sh @@ -0,0 +1,57 @@ +#!/bin/bash + +# Copyright (C) 2024 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + +SCRIPT_DIR=$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" &>/dev/null && pwd) + +if ! command -v fd &>/dev/null; then + echo "fd must be installed! Install with 'cargo install fd-find'" + exit 1 +fi + +if ! command -v rargs &>/dev/null; then + echo "rargs must be installed! Install with 'cargo install rargs'" + exit 1 +fi + +fd -t f -0 '.*\.rs$' "${SCRIPT_DIR}/../" | rargs -0 bash -c \ + "if ! grep -q 'SPDX-License-Identifier: Apache-2.0' {}; then + if grep -qzE '^#!/' {}; then + echo 'Adding license to file with shebang' {} + sed -i '2s/^/\n\/\/ Copyright (C) 2024 Intel Corporation\n\/\/ SPDX-License-Identifier: Apache-2.0\n\n/' {} + else + echo 'Adding license to ' {} + sed -i '1s/^/\/\/ Copyright (C) 2024 Intel Corporation\n\/\/ SPDX-License-Identifier: Apache-2.0\n\n/' {} + fi + fi" + +fd -t f -0 '.*\.(c|h|cc|hh|hpp|cpp)$' "${SCRIPT_DIR}/../" | rargs -0 bash -c \ + "if ! grep -q 'SPDX-License-Identifier: Apache-2.0' {}; then + sed -i '1s/^/\/\/ Copyright (C) 2024 Intel Corporation\n\/\/ SPDX-License-Identifier: Apache-2.0\n\n/' {} + fi" + +fd -t f -0 '.*\.(c|h|cc|hh|hpp|cpp)$' "${SCRIPT_DIR}/../" | rargs -0 bash -c \ + "if ! grep -q 'SPDX-License-Identifier: Apache-2.0' {}; then + sed -i '1s/^/# Copyright (C) 2024 Intel Corporation\n\# SPDX-License-Identifier: Apache-2.0\n\n/' {} + fi" + +MISSING_LICENSE_FILES=() + +while IFS= read -r -d $'\0' LICENSE_REQUIRED_FILE; do + if ! grep -q 'SPDX-License-Identifier: Apache-2.0' "${LICENSE_REQUIRED_FILE}"; then + MISSING_LICENSE_FILES+=("${LICENSE_REQUIRED_FILE}") + fi +done < <(fd -0 -t f -e 'c' -e 'dml' -e 'h' \ + -e 'inf' -e 'ini' -e 'ninja' -e 'nsh' -e 'py' -e 'rs' -e 'sh' -e 'simics' \ + -e 'toml' -e 'yaml' -e 'yml' -e 'cpp' -e 'cc' -e 'hh' -e 'hpp' . "${SCRIPT_DIR}/../") + +if [ "${#MISSING_LICENSE_FILES[@]}" -eq 0 ]; then + exit 0 +else + echo "Files found missing license block:" + for MISSING_LICENSE_FILE in "${MISSING_LICENSE_FILES[@]}"; do + echo "${MISSING_LICENSE_FILE}" + done + exit 1 +fi diff --git a/modules/tsffs/src/simics/simics-api-sys/.gitignore b/simics-rs/simics-api-sys/.gitignore similarity index 100% rename from modules/tsffs/src/simics/simics-api-sys/.gitignore rename to simics-rs/simics-api-sys/.gitignore diff --git a/simics-rs/simics-api-sys/Cargo.toml b/simics-rs/simics-api-sys/Cargo.toml new file mode 100644 index 00000000..05768315 --- /dev/null +++ b/simics-rs/simics-api-sys/Cargo.toml @@ -0,0 +1,42 @@ +# Copyright (C) 2024 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + +[package] +name = "simics-api-sys" +version = "0.1.0" +authors = ["Rowan Hart "] +edition = "2021" +description = "Automatically generated Intel Simics Simulator FFI bindings" +documentation = "" +readme = "../README.md" +homepage = "" +repository = "" +license = "Apache-2.0" +keywords = ["simics", "simulator", "intel", "x86", "risc", "modeling"] +categories = [ + "simulation", + "virtualization", + "hardware-support", + "api-bindings", + "emulators", +] + + +# NOTE: This crate should never have any dependencies! + +[build-dependencies] +ispm-wrapper = { version = "0.1.0", path = "../ispm-wrapper" } +anyhow = "1.0.80" +bindgen = "0.69.4" +scraper = "0.19.0" +walkdir = "2.4.0" + +[features] +default = ["link"] +# Emit linking info for use with cargo. Can be disabled to avoid lock-in to incorrect link +# information +link = [] + +[dev-dependencies] +anyhow = "1.0.80" +raw-cstr = "0.1.4" diff --git a/simics-rs/simics-api-sys/build.rs b/simics-rs/simics-api-sys/build.rs new file mode 100644 index 00000000..ed251b2f --- /dev/null +++ b/simics-rs/simics-api-sys/build.rs @@ -0,0 +1,1010 @@ +// Copyright (C) 2024 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 + +use anyhow::{anyhow, bail, ensure, Result}; +use common::{ + emit_link_info, SimicsBindings, VersionDeclaration, AUTO_BINDINGS_FILENAME, + AUTO_BINDINGS_VERSION_FILENAME, OUT_DIR_ENV, SIMICS_BASE_ENV, +}; +use ispm_wrapper::ispm::{self, GlobalOptions}; +use std::{env::var, path::PathBuf}; + +/// Common utilities for the simics-api-sys build and update. Copy this mod directly into +/// `scripts/gen-simics-api-items.rs` on update. +pub mod common { + use anyhow::{anyhow, bail, ensure, Result}; + use bindgen::{ + callbacks::{MacroParsingBehavior, ParseCallbacks}, + AliasVariation, Bindings, Builder, EnumVariation, FieldVisibilityKind, MacroTypeVariation, + NonCopyUnionStyle, + }; + use ispm_wrapper::ispm::{self, GlobalOptions}; + use scraper::{Html, Selector}; + use std::{ + collections::HashSet, + env::var, + ffi::OsStr, + fmt::{self, Display, Formatter, Write}, + fs::{read, read_dir, write}, + path::{Path, PathBuf}, + }; + use walkdir::WalkDir; + + pub const AUTO_BINDINGS_FILENAME: &str = "bindings-auto.rs"; + pub const AUTO_BINDINGS_VERSION_FILENAME: &str = "version-auto.rs"; + pub const OUT_DIR_ENV: &str = "OUT_DIR"; + + // NOTE: The following environment variables are set under the SIMICS package make system + // + // PYTHON: The path to SIMICS's mini-python + // PYTHON3_LDFLAGS: The path to SIMICS's libpython3.so. Starting in 6.0.177, this variable can + // be empty, in which case we use a fallback. + // LIBS: `-lsimics-common -lvtutils` + // CXX_INCLUDE_PATHS: Path to SIMICS_BASE/linux64/api + // PYTHON3: The path to SIMICS's mini-python + // SIMICS_WORKSPACE: The path to the package root + // MOD_MAKEFILE: The makefile being invoked to build the module currently being built + // SIMICS_BASE: The path to the simics base version for the package/project + // DMLC: The path to dml python + // PYTHON3_INCLUDE: -I flag for the path to SIMICS's python3 include directory + // DML_INCLUDE_PATHS: The path to the dml api include directory + // SIMICS_MAJOR_VERSION: The simics major version + // SIMICS_PROJECT: The path to the simics project + // PYTHON_LDFLAGS: The path to SIMICS's libpython3.so + // MODULE_MAKEFILE: The path to the module.mk makefile in simics base + // SRC_BASE: The path to the modules directory for the package + // CCLDFLAGS_DYN: CC/LD flags for dynamic linking + // LDFLAGS: Linker flags to link to libsimics and friends + // SIMICS_PACKAGE_LIST: The path to the .package-list file for this package + // SIMICS_MODEL_BUILDER: The simics used to build models + // PYTHON_INCLUDE: -I flag for the path to SIMICS's python3 include directory + // DMLC_DIR: The path to the simics bin directory containing the dml compiler + // PY2TO3: Path to the py-2to3 tool + // LDFLAGS_PY3: -L flag to include simics base's bin directory + // INCLUDE_PATHS: The path to the SIMICS base include directory + + /// Name for the environment variable set by the SIMICS build system to the path to the + /// simics base package. We actually use SIMICS_MODEL_BUILDER here, because we are indeed + /// building a model. + pub const SIMICS_BASE_ENV: &str = "SIMICS_BASE"; + /// Name for the environment variable set by the SIMICS build system to the flag to + /// include e.g. -I SIMICS_BASE/linux64/include/python3.9/ + pub const PYTHON3_INCLUDE_ENV: &str = "PYTHON3_INCLUDE"; + /// Name for the ldflags environment variable, which will point to + /// Name for the environment variable by the SIMICS build system to the path to the + /// simics include directory e.g. SIMICS_BASE/src/include/ + pub const INCLUDE_PATHS_ENV: &str = "INCLUDE_PATHS"; + + /// Name for the environment variable set by the SIMICS build system to the libpython3.so library + pub const PYTHON3_LDFLAGS_ENV: &str = "PYTHON3_LDFLAGS"; + /// Name for the LDFLAGS environment variable set by the SIMICS build system containing + /// the link search path for the libsimics library, among other flags. e.g. -LPATH -z noexecstack + pub const LDFLAGS_ENV: &str = "LDFLAGS"; + /// Name for the environment variable containing shared library link flags for simics common and + /// vtutils + pub const LIBS_ENV: &str = "LIBS"; + + #[cfg(not(windows))] + /// The name of the binary/library/object subdirectory on linux systems + pub const HOST_DIRNAME: &str = "linux64"; + #[cfg(windows)] + /// The name of the binary/library/object subdirectory on windows systems + pub const HOST_DIRNAME: &str = "win64"; + + /// The path in SIMICS_BASE/HOST_TYPE/ of the HTML file containing HAP documentation required + /// for high level codegen of builtin HAPs + pub const HAP_DOC_PATH: &str = "doc/html/rm-base/rm-haps.html"; + + // https://github.com/rust-lang/rust-bindgen/issues/687#issuecomment-1312298570 + pub const IGNORE_MACROS: [&str; 20] = [ + "FE_DIVBYZERO", + "FE_DOWNWARD", + "FE_INEXACT", + "FE_INVALID", + "FE_OVERFLOW", + "FE_TONEAREST", + "FE_TOWARDZERO", + "FE_UNDERFLOW", + "FE_UPWARD", + "FP_INFINITE", + "FP_INT_DOWNWARD", + "FP_INT_TONEAREST", + "FP_INT_TONEARESTFROMZERO", + "FP_INT_TOWARDZERO", + "FP_INT_UPWARD", + "FP_NAN", + "FP_NORMAL", + "FP_SUBNORMAL", + "FP_ZERO", + "IPPORT_RESERVED", + ]; + + pub const HDR_BLOCKLIST: [&str; 4] = [ + // Not a SIMICS library include, and conflicts with simics/simulator/follower-time.h + "libfollower.h", + // Deprecated (see #pragma messages in files) + "data-structs.h", + "global.h", + "vtutils.h", + // Excluded (host configuration dependent) + // "host-info.h", + // "module-host-config.h", + // "base-types.h", + ]; + + #[derive(Debug)] + struct IgnoreMacros(HashSet); + + impl ParseCallbacks for IgnoreMacros { + fn will_parse_macro(&self, name: &str) -> MacroParsingBehavior { + if self.0.contains(name) { + MacroParsingBehavior::Ignore + } else { + MacroParsingBehavior::Default + } + } + } + + impl IgnoreMacros { + fn new() -> Self { + Self(IGNORE_MACROS.into_iter().map(|s| s.to_string()).collect()) + } + } + + pub struct IncludeWrapper { + include_path: PathBuf, + code: String, + } + + impl IncludeWrapper { + /// Generate include wrapper code from the include directory. This generates a top-level + /// file which includes all the headers in the include directory, which is passed to bindgen + /// which will expand all the includes. + pub fn include_code_from_includes

(include_path: P) -> Result + where + P: AsRef, + { + let mut include_paths = WalkDir::new(&include_path) + .into_iter() + .filter_map(|p| p.ok()) + .filter(|p| p.path().is_file()) + .filter_map(|p| match p.path().extension() { + Some(e) => { + if e == "h" { + match p.path().canonicalize() { + Ok(p) => p.strip_prefix(&include_path).map_or_else( + |e| { + eprintln!( + "cargo:warning=Failed to strip prefix {} from {}: {}", + include_path.as_ref().display(), + p.display(), + e + ); + None:: + }, + |p| Some(p.to_path_buf()), + ), + Err(e) => { + eprintln!( + "cargo:warning=Failed to canonicalize path {}: {}", + p.path().display(), + e + ); + None + } + } + } else { + eprintln!( + "cargo:warning=Ignoring path {}, no '.h' extension", + p.path().display() + ); + None + } + } + None => { + eprintln!( + "cargo:warning=Ignoring path {}, no extension", + p.path().display() + ); + None + } + }) + .collect::>(); + + let Some(python_hdr_pos) = include_paths + .iter() + .position(|p| p.file_name() == Some(OsStr::new("python-header.h"))) + else { + bail!("No python-header.h in include file list."); + }; + + include_paths.swap(0, python_hdr_pos); + + HDR_BLOCKLIST.iter().for_each(|le| { + if let Some(pos) = include_paths + .iter() + .position(|p| p.file_name() == Some(OsStr::new(le))) + { + include_paths.remove(pos); + } + }); + + let include_stmts = include_paths + .iter() + .map(|p| format!("#include <{}>", p.display())) + .collect::>(); + + let code = include_stmts.join("\n") + "\n"; + + Ok(code) + } + + /// Generate code for HAPs from the hap documentation file. HAPs are not included in + /// the include directory like interfaces (the other code-generated component) are, + /// so we must generate them separately. This is very much a best-effort approach, as it + /// relies on parsing the HTML documentation. + pub fn hap_code_from_doc

(hap_doc_path: P) -> Result + where + P: AsRef, + { + let hap_document = + Html::parse_document(&String::from_utf8(read(&hap_doc_path).map_err(|e| { + anyhow!( + "Error reading document path {} to extract HAP definitions: {e}", + hap_doc_path.as_ref().display() + ) + })?)?); + + let haps_selector = Selector::parse(r#"article"#).unwrap(); + let haps_id_selector = Selector::parse(r#"h2"#).unwrap(); + let section_selector = Selector::parse(r#"section"#).unwrap(); + let hap_code_selector = Selector::parse(r#"pre"#).unwrap(); + let hap_description_selector = Selector::parse(r#"h3"#).unwrap(); + let hap_index_selector = Selector::parse(r#"code"#).unwrap(); + + let haps_article = hap_document.select(&haps_selector).next().unwrap(); + let haps_names = haps_article + .select(&haps_id_selector) + .filter_map(|h| h.value().id()) + .collect::>(); + let haps_sections = haps_article.select(§ion_selector).collect::>(); + let haps_code_indices_descriptions = haps_sections + .iter() + .map(|s| { + let code = s + .select(&hap_code_selector) + .next() + .unwrap() + .inner_html() + .trim() + .to_string(); + let maybe_index = s + .select(&hap_index_selector) + .next() + .map(|i| i.inner_html().trim().to_string()); + let maybe_description = s + .select(&hap_description_selector) + .last() + .and_then(|i| i.next_sibling()) + .and_then(|n| n.value().as_text().map(|t| t.trim().to_string())); + (code, maybe_index, maybe_description) + }) + .collect::>(); + + let hap_code = haps_names + .iter() + .zip(haps_code_indices_descriptions.iter()) + .try_fold( + String::default(), + |mut s, (name, (code, maybe_index, maybe_description))| { + let mut hap_name_name = name.to_ascii_uppercase(); + hap_name_name += "_HAP_NAME"; + let mut hap_callback_name = name.to_ascii_lowercase(); + hap_callback_name += "_hap_callback"; + let code = code + .replace("(*)", &format!("(*{})", hap_callback_name)) + .replace(['/', '-'], "_"); + let comment = format!( + "/**\n * Index: {}\n * Description: {}\n */", + maybe_index + .as_ref() + .unwrap_or(&"Indices not supported".to_string()), + maybe_description + .as_ref() + .unwrap_or(&"No description".to_string()) + ); + + write!( + &mut s, + "#define {} \"{}\"\n{}\ntypedef {}\n", + hap_name_name, name, comment, code, + ) + .and_then(|_| Ok(s)) + }, + )?; + + Ok(hap_code) + } + + /// Generate a new include wrapper for the given SIMICS base directory + /// + pub fn new

(simics_base_directory: P) -> Result + where + P: AsRef, + { + let hap_doc_path = simics_base_directory + .as_ref() + .join(HOST_DIRNAME) + .join(HAP_DOC_PATH); + + let include_paths_env = simics_base_directory + .as_ref() + .join("src") + .join("include") + .to_str() + .map(|s| s.to_string()) + .ok_or_else(|| anyhow!("Could not convert path to string"))?; + + let include_path = PathBuf::from(&include_paths_env) + .canonicalize() + .map_err(|e| { + anyhow!( + "Include path from include path env {:?}: {}", + include_paths_env, + e + ) + })?; + + let include_code = Self::include_code_from_includes(&include_path)?; + let hap_code = Self::hap_code_from_doc(hap_doc_path)?; + Ok(Self { + code: include_code + &hap_code, + include_path, + }) + } + + /// Write the generated include wrapper to the given path + pub fn write

(&self, path: P) -> Result<()> + where + P: AsRef, + { + write(path.as_ref(), &self.code).map_err(|e| { + anyhow!( + "Failed to write include wrapper to path {:?}: {}", + path.as_ref(), + e + ) + })?; + Ok(()) + } + } + + impl Display for IncludeWrapper { + fn fmt(&self, f: &mut Formatter<'_>) -> fmt::Result { + write!(f, "{}", self.code) + } + } + + pub struct VersionDeclaration(String); + + impl VersionDeclaration { + pub fn new

(simics_base_directory: P) -> Result + where + P: AsRef, + { + let simics_base_version = simics_base_directory + .as_ref() + .file_name() + .ok_or_else(|| anyhow!("No file name found in SIMICS base path"))? + .to_str() + .ok_or_else(|| anyhow!("Could not convert file name to string"))? + .split('-') + .last() + .ok_or_else(|| anyhow!("Could not split to obtain version: SIMICS base directory may not be in the format simics-X.X.XXX"))? + .to_string(); + + Ok(Self(format!( + r#"pub const SIMICS_VERSION: &str = "{}";"#, + simics_base_version + ))) + } + + pub fn write

(&self, path: P) -> Result<()> + where + P: AsRef, + { + write(path.as_ref(), &self.0).map_err(|e| { + anyhow!( + "Failed to write version declaration to path {:?}: {}", + path.as_ref(), + e + ) + })?; + Ok(()) + } + } + + pub struct SimicsBindings { + pub bindings: Bindings, + } + + impl SimicsBindings { + pub fn new

(base_dir_path: P, blocklist: &[&str], allowlist: &[&str]) -> Result + where + P: AsRef, + { + let wrapper = IncludeWrapper::new(&base_dir_path)?; + + #[cfg(unix)] + let wrapper_include_path = wrapper.include_path.display().to_string(); + + #[cfg(windows)] + let wrapper_include_path = { + let path = wrapper.include_path.display().to_string(); + if path.starts_with(r#"\\?\"#) { + path[4..].to_string() + } else { + path + } + }; + + let bindings = Builder::default() + .clang_arg( + subdir(base_dir_path.as_ref().join(HOST_DIRNAME).join("include")).and_then( + |p| { + p.to_str() + .map(|s| format!("-I{}", s)) + .ok_or_else(|| anyhow!("Could not convert path to string")) + }, + )?, + ) + .clang_arg(format!("-I{}", &wrapper_include_path)) + .clang_arg("-fretain-comments-from-system-headers") + .clang_arg("-fparse-all-comments") + // We don't care at all what warnings simics has if they aren't errors :) + .clang_arg("-Wno-everything") + .default_visibility(FieldVisibilityKind::Public) + .default_alias_style(AliasVariation::TypeAlias) + .default_enum_style(EnumVariation::Rust { + non_exhaustive: false, + }) + .default_macro_constant_type(MacroTypeVariation::Unsigned) + .default_non_copy_union_style(NonCopyUnionStyle::BindgenWrapper) + .derive_default(true) + .derive_hash(true) + .derive_partialord(true) + .derive_ord(true) + .derive_eq(true) + .derive_partialeq(true) + .generate_comments(true) + .header_contents("wrapper.h", &wrapper.to_string()) + // NOTE: These callbacks are required to emit `cargo:rerun-if-changed` + // statements, so we do not need to use them in this script. If you want to + // repurpose this script to use in a `build.rs`, you should re-enable this + // line: + // .parse_callbacks(Box::new(CargoCallbacks)) + .parse_callbacks(Box::new(IgnoreMacros::new())) + // These functions are extraneous and only emitted due to the include wrappers + // eventually including system headers which provide a huge number of unused + // symbols. + // .blocklist_functions(FUNCS_BLOCKLIST) + .blocklist_items(blocklist) + .allowlist_items(allowlist) + // .blocklist_items(ITEMS_BLOCKLIST_128BIT) + // Blocklisted because packed and align reprs differ + .blocklist_type("__mingw_ldbl_type_t") + .bitfield_enum("event_class_flag_t") + .bitfield_enum("micro_checkpoint_flags_t") + .bitfield_enum("access_t") + .bitfield_enum("breakpoint_flag") + .bitfield_enum("save_flags_t") + // Blocklisted because use 128-bit types which are not FFI-safe + .blocklist_function("__acoshl") + .blocklist_function("acoshl") + .blocklist_function("__acosl") + .blocklist_function("acosl") + .blocklist_function("__asinhl") + .blocklist_function("asinhl") + .blocklist_function("__asinl") + .blocklist_function("asinl") + .blocklist_function("__atan2l") + .blocklist_function("atan2l") + .blocklist_function("__atanhl") + .blocklist_function("atanhl") + .blocklist_function("__atanl") + .blocklist_function("atanl") + .blocklist_function("__cbrtl") + .blocklist_function("cbrtl") + .blocklist_function("__ceill") + .blocklist_function("ceill") + .blocklist_function("__copysignl") + .blocklist_function("copysignl") + .blocklist_function("__coshl") + .blocklist_function("coshl") + .blocklist_function("__cosl") + .blocklist_function("cosl") + .blocklist_function("__dreml") + .blocklist_function("dreml") + .blocklist_function("__erfcl") + .blocklist_function("erfcl") + .blocklist_function("__erfl") + .blocklist_function("erfl") + .blocklist_function("__exp2l") + .blocklist_function("exp2l") + .blocklist_function("__expl") + .blocklist_function("expl") + .blocklist_function("__expm1l") + .blocklist_function("expm1l") + .blocklist_function("__fabsl") + .blocklist_function("fabsl") + .blocklist_function("__fdiml") + .blocklist_function("fdiml") + .blocklist_function("__finitel") + .blocklist_function("finitel") + .blocklist_function("__floorl") + .blocklist_function("floorl") + .blocklist_function("__fmal") + .blocklist_function("fmal") + .blocklist_function("__fmaxl") + .blocklist_function("fmaxl") + .blocklist_function("__fminl") + .blocklist_function("fminl") + .blocklist_function("__fmodl") + .blocklist_function("fmodl") + .blocklist_function("__fpclassifyl") + .blocklist_function("__frexpl") + .blocklist_function("frexpl") + .blocklist_function("__gammal") + .blocklist_function("gammal") + .blocklist_function("__hypotl") + .blocklist_function("hypotl") + .blocklist_function("__ilogbl") + .blocklist_function("ilogbl") + .blocklist_function("__iseqsigl") + .blocklist_function("__isinfl") + .blocklist_function("isinfl") + .blocklist_function("__isnanl") + .blocklist_function("isnanl") + .blocklist_function("__issignalingl") + .blocklist_function("__j0l") + .blocklist_function("j0l") + .blocklist_function("__j1l") + .blocklist_function("j1l") + .blocklist_function("__jnl") + .blocklist_function("jnl") + .blocklist_function("__ldexpl") + .blocklist_function("ldexpl") + .blocklist_function("__lgammal") + .blocklist_function("lgammal") + .blocklist_function("__lgammal_r") + .blocklist_function("lgammal_r") + .blocklist_function("__llrintl") + .blocklist_function("llrintl") + .blocklist_function("__llroundl") + .blocklist_function("llroundl") + .blocklist_function("__log10l") + .blocklist_function("log10l") + .blocklist_function("__log1pl") + .blocklist_function("log1pl") + .blocklist_function("__log2l") + .blocklist_function("log2l") + .blocklist_function("__logbl") + .blocklist_function("logbl") + .blocklist_function("__logl") + .blocklist_function("logl") + .blocklist_function("__lrintl") + .blocklist_function("lrintl") + .blocklist_function("__lroundl") + .blocklist_function("lroundl") + .blocklist_function("__modfl") + .blocklist_function("modfl") + .blocklist_function("__nanl") + .blocklist_function("nanl") + .blocklist_function("__nearbyintl") + .blocklist_function("nearbyintl") + .blocklist_function("__nextafterl") + .blocklist_function("nextafterl") + .blocklist_function("__nexttoward") + .blocklist_function("nexttoward") + .blocklist_function("__nexttowardf") + .blocklist_function("nexttowardf") + .blocklist_function("__nexttowardl") + .blocklist_function("nexttowardl") + .blocklist_function("__powl") + .blocklist_function("powl") + .blocklist_function("__remainderl") + .blocklist_function("remainderl") + .blocklist_function("__remquol") + .blocklist_function("remquol") + .blocklist_function("__rintl") + .blocklist_function("rintl") + .blocklist_function("__roundl") + .blocklist_function("roundl") + .blocklist_function("__scalbl") + .blocklist_function("scalbl") + .blocklist_function("__scalblnl") + .blocklist_function("scalblnl") + .blocklist_function("__scalbnl") + .blocklist_function("scalbnl") + .blocklist_function("__signbitl") + .blocklist_function("__significandl") + .blocklist_function("significandl") + .blocklist_function("__sinhl") + .blocklist_function("sinhl") + .blocklist_function("__sinl") + .blocklist_function("sinl") + .blocklist_function("__sqrtl") + .blocklist_function("sqrtl") + .blocklist_function("__tanhl") + .blocklist_function("tanhl") + .blocklist_function("__tanl") + .blocklist_function("tanl") + .blocklist_function("__tgammal") + .blocklist_function("tgammal") + .blocklist_function("__truncl") + .blocklist_function("truncl") + .blocklist_function("wcstold") + .blocklist_function("__y0l") + .blocklist_function("y0l") + .blocklist_function("__y1l") + .blocklist_function("y1l") + .blocklist_function("__ynl") + .blocklist_function("ynl") + .blocklist_function("strtold") + .blocklist_function("qecvt") + .blocklist_function("qfcvt") + .blocklist_function("qgcvt") + .blocklist_function("qecvt_r") + .blocklist_function("qfcvt_r") + // Blocklisted because use 128-bit types which are not FFI-safe + // (Windows) + .blocklist_function("__mingw_strtold") + .blocklist_function("__mingw_wcstold") + .blocklist_function("sincosl") + .blocklist_function("_chgsignl") + // Blocklisted because approximate values of mathematical constants trigger + // clippy + .blocklist_item("M_E") + .blocklist_item("M_LOG2E") + .blocklist_item("M_LOG10E") + .blocklist_item("M_LN2") + .blocklist_item("M_LN10") + .blocklist_item("M_PI") + .blocklist_item("M_PI_2") + .blocklist_item("M_PI_4") + .blocklist_item("M_1_PI") + .blocklist_item("M_2_PI") + .blocklist_item("M_2_SQRTPI") + .blocklist_item("M_SQRT2") + .blocklist_item("M_SQRT1_2") + .blocklist_item("Py_MATH_PIl") + .blocklist_item("Py_MATH_PI") + .blocklist_item("Py_MATH_El") + .blocklist_item("Py_MATH_E") + .blocklist_item("Py_MATH_TAU") + // Blocklisted because not used and adds confusion + .generate() + .map_err(|e| { + println!("cargo:warning=Failed to generate bindings: {e}"); + println!("cargo:warning=Include path: {}", &wrapper_include_path); + let wrapper_string = wrapper.to_string(); + for (i, line) in wrapper_string.lines().enumerate() { + println!("cargo:warning={:04}: {}", i, line); + } + e + })?; + + Ok(Self { bindings }) + } + + pub fn write

(&self, path: P) -> Result<()> + where + P: AsRef, + { + self.bindings.write_to_file(path)?; + Ok(()) + } + } + + impl Display for SimicsBindings { + fn fmt(&self, f: &mut Formatter<'_>) -> fmt::Result { + write!(f, "{}", &self.bindings.to_string()) + } + } + + /// Get the only subdirectory of a directory, if only one exists. If zero or more than one subdirectories + /// exist, returns an error + pub fn subdir

(dir: P) -> Result + where + P: AsRef, + { + let subdirs = read_dir(dir)? + .filter_map(|p| p.ok()) + .map(|p| p.path()) + .filter(|p| p.is_dir()) + .collect::>(); + ensure!( + subdirs.len() == 1, + "Expected exactly 1 sub-directory, found {}", + subdirs.len() + ); + + subdirs + .first() + .cloned() + .ok_or_else(|| anyhow!("No sub-directories found")) + } + + pub fn emit_link_info() -> Result<()> { + #[cfg(unix)] + const HOST_DIRNAME: &'static str = "linux64"; + + #[cfg(not(unix))] + const HOST_DIRNAME: &'static str = "win64"; + + let base_dir_path = if let Ok(simics_base) = var(SIMICS_BASE_ENV) { + PathBuf::from(simics_base) + } else { + println!("cargo:warning=No SIMICS_BASE environment variable found, using ispm to find installed packages and using latest base version"); + let mut packages = ispm::packages::list(&GlobalOptions::default())?; + packages.sort(); + let Some(installed) = packages.installed_packages.as_ref() else { + bail!("No SIMICS_BASE variable set and did not get any installed packages"); + }; + let Some(base) = installed.iter().find(|p| p.package_number == 1000) else { + bail!( + "No SIMICS_BASE variable set and did not find a package with package number 1000" + ); + }; + println!("cargo:warning=Using Simics base version {}", base.version); + base.paths + .first() + .ok_or_else(|| anyhow!("No paths found for package with package number 1000"))? + .clone() + }; + + #[cfg(unix)] + { + // Link `libsimics-common.so`, `libvtutils.so`, and `libpythonX.XX.so.X.X` if they exist + let bin_dir = base_dir_path + .join(HOST_DIRNAME) + .join("bin") + .canonicalize()?; + let libsimics_common = bin_dir.join("libsimics-common.so").canonicalize()?; + + let libvtutils = bin_dir.join("libvtutils.so").canonicalize()?; + + let sys_lib_dir = base_dir_path + .join(HOST_DIRNAME) + .join("sys") + .join("lib") + .canonicalize()?; + + let libpython = sys_lib_dir.join( + read_dir(&sys_lib_dir)? + .filter_map(|p| p.ok()) + .filter(|p| p.path().is_file()) + .filter(|p| { + let path = p.path(); + + let Some(file_name) = path.file_name() else { + return false; + }; + + let Some(file_name) = file_name.to_str() else { + return false; + }; + + file_name.starts_with("libpython") + && file_name.contains(".so") + && file_name != "libpython3.so" + }) + .map(|p| p.path()) + .next() + .ok_or_else(|| { + anyhow!("No libpythonX.XX.so.X.X found in {}", sys_lib_dir.display()) + })?, + ); + + println!( + "cargo:rustc-link-lib=dylib:+verbatim={}", + libsimics_common + .file_name() + .ok_or_else(|| anyhow!( + "No file name found for {}", + libsimics_common.display() + ))? + .to_str() + .ok_or_else(|| anyhow!("Could not convert path to string"))? + ); + println!( + "cargo:rustc-link-lib=dylib:+verbatim={}", + libvtutils + .file_name() + .ok_or_else(|| anyhow!("No file name found for {}", libvtutils.display()))? + .to_str() + .ok_or_else(|| anyhow!("Could not convert path to string"))? + ); + println!( + "cargo:rustc-link-lib=dylib:+verbatim={}", + libpython + .file_name() + .ok_or_else(|| anyhow!("No file name found for {}", libpython.display()))? + .to_str() + .ok_or_else(|| anyhow!("Could not convert path to string"))? + ); + println!( + "cargo:rustc-link-search=native={}", + bin_dir + .to_str() + .ok_or_else(|| anyhow!("Could not convert path to string"))? + ); + println!( + "cargo:rustc-link-search=native={}", + sys_lib_dir + .to_str() + .ok_or_else(|| anyhow!("Could not convert path to string"))? + ); + let ld_library_path = vec![ + bin_dir + .to_str() + .ok_or_else(|| anyhow!("Could not convert path to string"))?, + sys_lib_dir + .to_str() + .ok_or_else(|| anyhow!("Could not convert path to string"))?, + ] + .join(":"); + + println!("cargo:rustc-env=LD_LIBRARY_PATH={}", ld_library_path); + } + + // NOTE: EVEN with all of the above, a binary built using `cargo build` will not + // be able to find libsimics-common.so. Instead, when we build a binary that + // transitively depends on this -sys crate, we compile it with `cargo rustc`, + // passing the `-rpath` link argument like so. Note `--disable-new-dtags`, + // otherwise `libsimics-common.so` cannot find `libpython3.9.so.1.0` because it + // will be missing the recursive rpath lookup. + + // SIMICS_BASE=/home/rhart/simics-public/simics-6.0.174 + // PYTHON3_INCLUDE=-I/home/rhart/simics-public/simics-6.0.174/linux64/include/python3.9 + // INCLUDE_PATHS=/home/rhart/simics-public/simics-6.0.174/src/include + // PYTHON3_LDFLAGS=/home/rhart/simics-public/simics-6.0.174/linux64/sys/lib/libpython3.so + // LDFLAGS="-L/home/rhart/simics-public/simics-6.0.174/linux64/bin -z noexecstack -z relro -z now" LIBS="-lsimics-common -lvtutils" + // cargo --features=auto,link --example simple-simics -- -C link-args="-Wl,--disable-new-dtags -Wl,-rpath,/home/rhart/simics-public/simics-6.0.174/linux64/bin;/home/rhart/simics-public/simics-6.0.174/linux64/sys/lib/" + // + // This command (the environment variables can be left out) can be + // auto-generated in the SIMICS makefile build system. + + Ok(()) + } + + trait WithLists { + fn blocklist_items(self, blocklist: &[&str]) -> Self; + fn allowlist_items(self, allowlist: &[&str]) -> Self; + } + + impl WithLists for Builder { + fn blocklist_items(self, blocklist: &[&str]) -> Self { + blocklist.iter().fold(self, |b, f| b.blocklist_item(f)) + } + + fn allowlist_items(self, allowlist: &[&str]) -> Self { + allowlist.iter().fold(self, |b, f| b.allowlist_item(f)) + } + } +} + +fn main() -> Result<()> { + println!("cargo:rerun-if-changed=build.rs"); + println!("cargo:rerun-if-env-changed={SIMICS_BASE_ENV}"); + + let base_dir_path = if let Ok(simics_base) = var(SIMICS_BASE_ENV) { + PathBuf::from(simics_base) + } else { + println!("cargo:warning=No SIMICS_BASE environment variable found, using ispm to find installed packages and using latest base version"); + let mut packages = ispm::packages::list(&GlobalOptions::default())?; + packages.sort(); + let Some(installed) = packages.installed_packages.as_ref() else { + bail!("No SIMICS_BASE variable set and did not get any installed packages"); + }; + let Some(base) = installed.iter().find(|p| p.package_number == 1000) else { + bail!( + "No SIMICS_BASE variable set and did not find a package with package number 1000" + ); + }; + println!("cargo:warning=Using Simics base version {}", base.version); + base.paths + .first() + .ok_or_else(|| anyhow!("No paths found for package with package number 1000"))? + .clone() + }; + + ensure!( + base_dir_path.is_dir(), + "{} is not a directory", + base_dir_path.display() + ); + + let out_dir_path = PathBuf::from( + var(OUT_DIR_ENV) + .map_err(|e| anyhow!("No environment variable {OUT_DIR_ENV} found: {e}"))?, + ); + + let bindings_file_path = out_dir_path.join(AUTO_BINDINGS_FILENAME); + let version_file_path = out_dir_path.join(AUTO_BINDINGS_VERSION_FILENAME); + + let version_declaration = VersionDeclaration::new(&base_dir_path).map_err(|e| { + anyhow!( + "Failed to create version declaration from path {:?}: {}", + base_dir_path, + e + ) + })?; + let mut allowlist = SIMICS_API_ITEMS.to_vec(); + + // Explicitly allow hap definitions which we added ourselves + allowlist.push(".*_HAP_NAME"); + allowlist.push(".*_hap_callback"); + + let bindings = if var("SIMICS_BINDINGS_CLEAN").is_ok() { + // If SIMICS_BINDINGS_CLEAN is set, we use the allowlist. This is set when publishing + // so that documentation is tidy. + SimicsBindings::new(&base_dir_path, &[], &allowlist)? + } else { + // If SIMICS_BINDINGS_CLEAN is not set, we do not use the allowlist. This improves + // build times significantly. + SimicsBindings::new(&base_dir_path, &[], &[])? + }; + + version_declaration.write(&version_file_path).map_err(|e| { + anyhow!( + "Failed to write version declaration to file {:?}: {}", + version_file_path, + e + ) + })?; + bindings.write(&bindings_file_path).map_err(|e| { + anyhow!( + "Failed to write bindings to file {:?}: {}", + bindings_file_path, + e + ) + })?; + + if cfg!(feature = "link") { + emit_link_info()?; + } + + Ok(()) +} + +// NOTE: This constant is generated by running: +// ``` +// ./scripts/gen-simics-api-items.rs \ +// -s ~/simics/simics-6.0.163 \ +// -s ~/simics/simics-6.0.164 \ +// -s ~/simics/simics-6.0.165 \ +// -s ~/simics/simics-6.0.166 \ +// -s ~/simics/simics-6.0.167 \ +// -s ~/simics/simics-6.0.168 \ +// -s ~/simics/simics-6.0.169 \ +// -s ~/simics/simics-6.0.170 \ +// -s ~/simics/simics-6.0.171 \ +// -s ~/simics/simics-6.0.172 \ +// -s ~/simics/simics-6.0.173 \ +// -s ~/simics/simics-6.0.174 \ +// -s ~/simics/simics-6.0.175 \ +// -s ~/simics/simics-6.0.176 \ +// -s ~/simics/simics-6.0.177 \ +// -s ~/simics/simics-6.0.178 \ +// -s ~/simics/simics-6.0.179 \ +// -s ~/simics/simics-6.0.180 \ +// -s ~/simics/simics-6.0.181 \ +// -s ~/simics/simics-6.0.182 \ +// -s ~/simics/simics-6.0.183 \ +// -s ~/simics/simics-6.0.184 \ +// -o simics-api-sys/simics_api_items.rs +// ``` +// +// This list needs to be updated on each SIMICS Base version release +include!("simics_api_items.rs"); diff --git a/simics-rs/simics-api-sys/simics_api_items.rs b/simics-rs/simics-api-sys/simics_api_items.rs new file mode 100644 index 00000000..a17ff45d --- /dev/null +++ b/simics-rs/simics-api-sys/simics_api_items.rs @@ -0,0 +1,2369 @@ +// Copyright (C) 2024 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 + +const SIMICS_API_ITEMS: &[&str; 2364usize] = &[ + "A20_INTERFACE", + "ABS_POINTER_ACTIVATE_INTERFACE", + "ABS_POINTER_INTERFACE", + "ADDRESS_PROFILER_INTERFACE", + "APIC_BUS_INTERFACE", + "APIC_CPU_INTERFACE", + "ARINC429_BUS_INTERFACE", + "ARINC429_RECEIVER_INTERFACE", + "ARM_AVIC_INTERFACE", + "ARM_COPROCESSOR_INTERFACE", + "ARM_CPU_GROUP_EVENT_INTERFACE", + "ARM_CPU_GROUP_EXCLUSIVE_INTERFACE", + "ARM_CPU_GROUP_TLB_INTERFACE", + "ARM_EXTERNAL_DEBUG_INTERFACE", + "ARM_GIC_CPU_STATE_INTERFACE", + "ARM_GIC_INTERFACE", + "ARM_INTERFACE", + "ARM_INT_FIQ", + "ARM_INT_IRQ", + "ARM_INT_NMI", + "ARM_INT_REI", + "ARM_INT_SEI", + "ARM_INT_SYSTICK", + "ARM_INT_VFIQ", + "ARM_INT_VIRQ", + "ARM_INT_VSEI", + "ARM_TRUSTZONE_INTERFACE", + "ATTRIBUTE_MONITOR_INTERFACE", + "BANK_AFTER_READ_INTERFACE", + "BANK_AFTER_WRITE_INTERFACE", + "BANK_BEFORE_READ_INTERFACE", + "BANK_BEFORE_WRITE_INTERFACE", + "BANK_INSTRUMENTATION_SUBSCRIBE_INTERFACE", + "BIGTIME_ATTRTYPE", + "BIGTIME_STR_MAX_SIZE", + "BIG_ENDIAN", + "BRANCH_ARC_INTERFACE", + "BRANCH_RECORDER_HANDLER_INTERFACE", + "BREAKPOINT_CHANGE_INTERFACE", + "BREAKPOINT_HANDLE_INVALID", + "BREAKPOINT_INTERFACE", + "BREAKPOINT_MANAGER_INTERFACE", + "BREAKPOINT_PROP_DESCRIPTION", + "BREAKPOINT_PROP_ENABLED", + "BREAKPOINT_PROP_HIT_COUNT", + "BREAKPOINT_PROP_IGNORE_COUNT", + "BREAKPOINT_PROP_TEMPORARY", + "BREAKPOINT_QUERY_INTERFACE", + "BREAKPOINT_QUERY_V2_INTERFACE", + "BREAKPOINT_REGISTRATION_INTERFACE", + "BREAKPOINT_TRIGGER_INTERFACE", + "BREAKPOINT_TYPE_INTERFACE", + "BREAKPOINT_TYPE_PROVIDER_INTERFACE", + "BREAK_STRINGS_INTERFACE", + "BREAK_STRINGS_V2_INTERFACE", + "BRIDGE_INTERFACE", + "BUILD_ID_SIM_4_8", + "BUILD_ID_SIM_5", + "BUILD_ID_SIM_6", + "BUILD_ID_SIM_7", + "CACHE_CONTROL_INTERFACE", + "CALLBACK_INFO_INTERFACE", + "CDROM_MEDIA_INTERFACE", + "CELL_INSPECTION_INTERFACE", + "CHECKPOINT_INTERFACE", + "CMD_LINE_FRONTEND_INTERFACE", + "CMD_LINE_SELECTION_INTERFACE", + "COMPONENT_CONNECTOR_INTERFACE", + "COMPONENT_INTERFACE", + "CONCURRENCY_GROUP_INTERFACE", + "CONCURRENCY_MODE_INTERFACE", + "CONNECTOR_INTERFACE", + "CONTEXT_HANDLER_INTERFACE", + "CON_INPUT_CODE_INTERFACE", + "CON_INPUT_INTERFACE", + "COREINT_INTERFACE", + "CO_EXECUTE_INTERFACE", + "CPU_CACHED_INSTRUCTION_INTERFACE", + "CPU_CACHED_INSTRUCTION_ONCE_INTERFACE", + "CPU_CACHED_STREAM_INTERFACE", + "CPU_EXCEPTION_QUERY_INTERFACE", + "CPU_GROUP_INTERFACE", + "CPU_INSTRUCTION_DECODER_INTERFACE", + "CPU_INSTRUCTION_QUERY_INTERFACE", + "CPU_INSTRUMENTATION_STREAM_INTERFACE", + "CPU_INSTRUMENTATION_SUBSCRIBE_INTERFACE", + "CPU_MEMORY_QUERY_INTERFACE", + "CPU_STREAM_TAG_MASK", + "CPU_STREAM_TAG_WIDTH", + "CYCLE_CONTROL_INTERFACE", + "CYCLE_EVENT_INSTRUMENTATION_INTERFACE", + "CYCLE_EVENT_INTERFACE", + "CYCLE_INTERFACE", + "DATAGRAM_LINK_INTERFACE", + "DATA_PROFILER_INTERFACE", + "DBG_check_typing_system", + "DBG_get_pending_exception", + "DEBUG_NOTIFICATION_INTERFACE", + "DEBUG_QUERY_INTERFACE", + "DEBUG_SETUP_INTERFACE", + "DEBUG_STEP_INTERFACE", + "DEBUG_SYMBOL_FILE_INTERFACE", + "DEBUG_SYMBOL_INTERFACE", + "DECODER_INTERFACE", + "DESCRIBE_REGISTERS_INTERFACE", + "DEVICE_CONF_FUNC", + "DEVICE_IDENTIFICATION_INTERFACE", + "DEVICE_PCIE_CONF_FUNC", + "DIRECT_MEMORY_FLUSH_INTERFACE", + "DIRECT_MEMORY_INTERFACE", + "DIRECT_MEMORY_LOOKUP_INTERFACE", + "DIRECT_MEMORY_LOOKUP_V2_INTERFACE", + "DIRECT_MEMORY_TAGS_INTERFACE", + "DIRECT_MEMORY_UPDATE_INTERFACE", + "DIR_SEP", + "DIR_SEP_CHAR", + "DISASSEMBLE_INTERFACE", + "DISK_COMPONENT_INTERFACE", + "DUMMY_MEMORY_PAGE_INTERFACE", + "DURATION_SCALE", + "ETHERNET_CABLE_INTERFACE", + "ETHERNET_COMMON_INTERFACE", + "ETHERNET_PROBE_INTERFACE", + "ETHERNET_SNOOP_INTERFACE", + "ETHERNET_VLAN_SNOOP_INTERFACE", + "ETHERTYPE_ARP", + "ETHERTYPE_IP", + "ETHERTYPE_IPV6", + "ETHERTYPE_PUP", + "ETHERTYPE_REVARP", + "ETHER_ADDR_LEN", + "ETHER_CRC_LEN", + "ETHER_MAX_LEN", + "ETHER_MIN_LEN", + "ETH_ALEN", + "EVENT_DELTA_INTERFACE", + "EVENT_HANDLER_INTERFACE", + "EXCEPTION_INTERFACE", + "EXECUTE_CONTROL_INTERFACE", + "EXECUTE_INTERFACE", + "EXEC_TRACE_INTERFACE", + "EXTENDED_SERIAL_INTERFACE", + "EXTERNAL_CONNECTION_CTL_INTERFACE", + "EXTERNAL_CONNECTION_EVENTS_INTERFACE", + "FILE", + "FIREWIRE_BUS_INTERFACE", + "FIREWIRE_DEVICE_INTERFACE", + "FMN_STATION_CONTROL_INTERFACE", + "FMN_STATION_CONTROL_V2_INTERFACE", + "FOLLOWER_AGENT_INTERFACE", + "FREERUN_INTERFACE", + "FREQUENCY_INTERFACE", + "FREQUENCY_LISTENER_INTERFACE", + "FRONTEND_SERVER_INTERFACE", + "GBIC_TRANSCEIVER_INTERFACE", + "GBP_BYTES_OFFS", + "GBP_COMMENT_OFFS", + "GBP_FMT_V3_16", + "GBP_FMT_V3_24", + "GBP_FMT_V3_32", + "GBP_FMT_V3_8", + "GBP_FMT_VGA_4", + "GBP_FORMAT_OFFS", + "GBP_HEADER_SIZE", + "GBP_MAGIC", + "GBP_MAGIC_OFFS", + "GBP_MAXX_OFFS", + "GBP_MAXY_OFFS", + "GBP_MINX_OFFS", + "GBP_MINY_OFFS", + "GFX_BREAK_INTERFACE", + "GFX_CONSOLE_BACKEND_INTERFACE", + "GFX_CONSOLE_FRONTEND_INTERFACE", + "GFX_CON_INTERFACE", + "GUI_CONSOLE_BACKEND_INTERFACE", + "HAP_LISTEN_INTERFACE", + "HAVE_AF_UNIX", + "HAVE_ALLOCA_H", + "HAVE_ARPA_INET_H", + "HAVE_DIRENT_H", + "HAVE_DLFCN_H", + "HAVE_ELF_H", + "HAVE_FCNTL", + "HAVE_FCNTL_H", + "HAVE_GETLOADAVG", + "HAVE_GETRUSAGE", + "HAVE_GETTIMEOFDAY", + "HAVE_INET_ATON", + "HAVE_INET_NTOA", + "HAVE_INET_NTOP", + "HAVE_INT16", + "HAVE_INT32", + "HAVE_INT64", + "HAVE_INT8", + "HAVE_INTPTR_T", + "HAVE_ISINF", + "HAVE_LIBXPM", + "HAVE_MMAP", + "HAVE_NATIVE_INT128", + "HAVE_NETDB_H", + "HAVE_NETINET_ETHER_H", + "HAVE_NETINET_IF_ETHER_H", + "HAVE_NETINET_IN_H", + "HAVE_NETINET_IN_SYSTM_H", + "HAVE_NETINET_IP_H", + "HAVE_NETINET_IP_ICMP_H", + "HAVE_NETINET_TCP_H", + "HAVE_NETINET_UDP_H", + "HAVE_NET_ETHERNET_H", + "HAVE_NET_IF_H", + "HAVE_POLL", + "HAVE_PTHREAD_H", + "HAVE_PWD_H", + "HAVE_READLINK", + "HAVE_SEMAPHORE_H", + "HAVE_SIGACTION", + "HAVE_STDBOOL_H", + "HAVE_STRTOK_R", + "HAVE_SYSLOG_H", + "HAVE_SYSV_IPC_SUPPORT", + "HAVE_SYS_FCNTL_H", + "HAVE_SYS_FILE_H", + "HAVE_SYS_IOCTL_H", + "HAVE_SYS_IPC_H", + "HAVE_SYS_MMAN_H", + "HAVE_SYS_POLL_H", + "HAVE_SYS_RESOURCE_H", + "HAVE_SYS_SEM_H", + "HAVE_SYS_SHM_H", + "HAVE_SYS_SOCKET_H", + "HAVE_SYS_STATVFS_H", + "HAVE_SYS_TIMES_H", + "HAVE_SYS_TIME_H", + "HAVE_SYS_UN_H", + "HAVE_SYS_UTSNAME_H", + "HAVE_SYS_VFS_H", + "HAVE_SYS_WAIT_H", + "HAVE_TERMIOS_H", + "HAVE_THREAD_LOCAL_STORAGE", + "HAVE_UCONTEXT_H", + "HAVE_UINT16", + "HAVE_UINT32", + "HAVE_UINT64", + "HAVE_UINT8", + "HAVE_UINTPTR_T", + "HAVE_UNAME", + "HAVE_USLEEP", + "HAVE_UTIME_H", + "HAVE_VARARG_MACROS", + "HOST_ALLOWS_UNALIGNED_ACCESSES", + "HOST_CACHE_LINE_SIZE", + "HOST_SERIAL_INTERFACE", + "HPI_INTERFACE", + "I2C_BRIDGE_INTERFACE", + "I2C_BUS_INTERFACE", + "I2C_DEVICE_INTERFACE", + "I2C_LINK_INTERFACE", + "I2C_MASTER_INTERFACE", + "I2C_MASTER_V2_INTERFACE", + "I2C_SLAVE_INTERFACE", + "I2C_SLAVE_V2_INTERFACE", + "I3C_DAA_SNOOP_INTERFACE", + "I3C_MASTER_INTERFACE", + "I3C_SLAVE_INTERFACE", + "I8051_INTERRUPT_INTERFACE", + "I8051_TIMER_INTERFACE", + "IEEE_802_3_MAC_INTERFACE", + "IEEE_802_3_MAC_V3_INTERFACE", + "IEEE_802_3_PHY_INTERFACE", + "IEEE_802_3_PHY_V2_INTERFACE", + "IEEE_802_3_PHY_V3_INTERFACE", + "ILLEGAL_IP_ADDRESS", + "IMAGE_INTERFACE", + "IMAGE_SNOOP_INTERFACE", + "INSTRUCTION_FETCH_INTERFACE", + "INSTRUMENTATION_CONNECTION_INTERFACE", + "INSTRUMENTATION_FILTER_MASTER_INTERFACE", + "INSTRUMENTATION_FILTER_SLAVE_INTERFACE", + "INSTRUMENTATION_FILTER_STATUS_INTERFACE", + "INSTRUMENTATION_ORDER_INTERFACE", + "INSTRUMENTATION_TOOL_INTERFACE", + "INT128_STR_MAX_SIZE", + "INTERRUPT_ACK_INTERFACE", + "INTERRUPT_CPU_INTERFACE", + "INTERRUPT_QUERY_INTERFACE", + "INTERRUPT_SUBSCRIBER_INTERFACE", + "INT_REGISTER_INTERFACE", + "IO_MEMORY_INTERFACE", + "JIT_CONTROL_INTERFACE", + "KBD_CAPSLOCK_OFF", + "KBD_CAPSLOCK_ON", + "KBD_NUMLOCK_OFF", + "KBD_NUMLOCK_ON", + "KBD_SCROLLLOCK_OFF", + "KBD_SCROLLLOCK_ON", + "KEYBOARD_CONSOLE_INTERFACE", + "KEYBOARD_INTERFACE", + "LEADER_MESSAGE_INTERFACE", + "LINEAR_IMAGE_INTERFACE", + "LINK_ENDPOINT_INTERFACE", + "LINK_ENDPOINT_V2_INTERFACE", + "LOCAL_TIME_ATTRTYPE", + "LOCAL_TIME_STR_MAX_SIZE", + "LONG_BIT", + "MAP_DEMAP_INTERFACE", + "MAX_ETHER_ADDR_STRLEN", + "MAX_FRAGS_FRAGS", + "MAX_IPV4_ADDR_STRLEN", + "MAX_LOG_LEVEL", + "MDIO45_BUS_INTERFACE", + "MDIO45_PHY_INTERFACE", + "MEMORY_PROFILER_INTERFACE", + "MEMORY_SPACE_INTERFACE", + "MICROWIRE_INTERFACE", + "MII_INTERFACE", + "MII_MANAGEMENT_INTERFACE", + "MIN_LOG_LEVEL", + "MIPS_CACHE_INSTRUCTION_INTERFACE", + "MIPS_COPROCESSOR_INTERFACE", + "MIPS_EIC_INTERFACE", + "MIPS_EXCEPTION_QUERY_INTERFACE", + "MIPS_INTERFACE", + "MIPS_ITE_INTERFACE", + "MMC_INTERFACE", + "MOUSE_4_DOWN", + "MOUSE_5_DOWN", + "MOUSE_INTERFACE", + "MOUSE_LEFT_DOWN", + "MOUSE_MIDDLE_DOWN", + "MOUSE_RIGHT_DOWN", + "MS1553_LINK_INTERFACE", + "MS1553_TERMINAL_INTERFACE", + "MULTI_LEVEL_SIGNAL_INTERFACE", + "NAND_FLASH_INTERFACE", + "NIOS_CACHE_INTERFACE", + "NIOS_CUSTOM_INTERFACE", + "NIOS_EIC_INTERFACE", + "NIOS_INTERFACE", + "OLD_copyright", + "OPCODE_INFO_INTERFACE", + "OSA_COMPONENT_INTERFACE", + "OSA_CONTROL_INTERFACE", + "OSA_CONTROL_V2_INTERFACE", + "OSA_MACHINE_NOTIFICATION_INTERFACE", + "OSA_MACHINE_QUERY_INTERFACE", + "OSA_MAPPER_ADMIN_INTERFACE", + "OSA_MAPPER_CONTROL_INTERFACE", + "OSA_MAPPER_QUERY_INTERFACE", + "OSA_MICRO_CHECKPOINT_INTERFACE", + "OSA_NODE_PATH_INTERFACE", + "OSA_NODE_TREE_ADMIN_INTERFACE", + "OSA_NODE_TREE_NOTIFICATION_INTERFACE", + "OSA_NODE_TREE_QUERY_INTERFACE", + "OSA_PARAMETERS_INTERFACE", + "OSA_TRACKER_COMPONENT_INTERFACE", + "OSA_TRACKER_CONTROL_INTERFACE", + "OSA_TRACKER_STATE_ADMIN_INTERFACE", + "OSA_TRACKER_STATE_NOTIFICATION_INTERFACE", + "OSA_TRACKER_STATE_QUERY_INTERFACE", + "OS_DLOPEN_GLOBAL", + "OS_DLOPEN_LOCAL", + "OS_DLOPEN_LOCAL_SEARCHPATH", + "OS_DLOPEN_NOW", + "OS_INVALID_SOCKET", + "O_BINARY", + "PACKET_INTERFACE", + "PATH_SEP", + "PATH_SEP_CHAR", + "PCIE_ADAPTER_COMPAT_INTERFACE", + "PCIE_DEVICE_INTERFACE", + "PCIE_HOTPLUG_EVENTS_INTERFACE", + "PCIE_MAP_INTERFACE", + "PCIE_PORT_CONTROL_INTERFACE", + "PCI_BRIDGE_INTERFACE", + "PCI_BUS_INTERFACE", + "PCI_DEVICE_INTERFACE", + "PCI_DOWNSTREAM_INTERFACE", + "PCI_EXPRESS_HOTPLUG_INTERFACE", + "PCI_EXPRESS_INTERFACE", + "PCI_INTERRUPT_INTERFACE", + "PCI_MULTI_FUNCTION_DEVICE_INTERFACE", + "PCI_UPSTREAM_INTERFACE", + "PCI_UPSTREAM_OPERATION_INTERFACE", + "PMR_INTERFACE", + "POOL_PROTECT_INTERFACE", + "PORT_SPACE_INTERFACE", + "PPC_INTERFACE", + "PREFERENCE_INTERFACE", + "PRE_DECODER_INTERFACE", + "PROBE_ARRAY_INTERFACE", + "PROBE_CACHE_INTERFACE", + "PROBE_INDEX_INTERFACE", + "PROBE_INTERFACE", + "PROBE_NOTIFICATION_CONTEXT_INTERFACE", + "PROBE_SAMPLER_CACHE_INTERFACE", + "PROBE_SUBSCRIBE_INTERFACE", + "PROCESSOR_CLI_INTERFACE", + "PROCESSOR_ENDIAN_INTERFACE", + "PROCESSOR_GUI_INTERFACE", + "PROCESSOR_INFO_INTERFACE", + "PROCESSOR_INFO_V2_INTERFACE", + "PTRDIFF_MAX", + "PULSE_INTERFACE", + "PyDictObject", + "PyEval_RestoreThread", + "PyEval_SaveThread", + "PyMethodDef", + "PyObject", + "PyThreadState", + "PyTypeObject", + "PyType_Spec", + "Py_TPFLAGS_HAVE_CLASS", + "Py_TPFLAGS_HAVE_ITER", + "Py_TPFLAGS_HAVE_RICHCOMPARE", + "Py_ssize_t", + "RAM_ACCESS_SUBSCRIBE_INTERFACE", + "RAM_INTERFACE", + "RAPIDIO_V3_INTERFACE", + "RAPIDIO_V4_INTERFACE", + "RAPIDIO_V5_INTERFACE", + "RECORDED_INTERFACE", + "RECORDER_INTERFACE", + "RECORDER_V2_INTERFACE", + "REGISTER_BREAKPOINT_INTERFACE", + "REGISTER_VIEW_INTERFACE", + "REGISTER_VIEW_READ_ONLY_INTERFACE", + "RISCV_CLIC_INTERFACE", + "RISCV_CLIC_INTERRUPT_INTERFACE", + "RISCV_COPROCESSOR_INTERFACE", + "RISCV_IMSIC_INTERFACE", + "RISCV_SIGNAL_SGEIP_INTERFACE", + "ROM_INTERFACE", + "RS232_CONSOLE_INTERFACE", + "RS232_DEVICE_INTERFACE", + "RTLD_GLOBAL", + "RTLD_LOCAL", + "RTLD_NOW", + "SATA_INTERFACE", + "SAVE_STATE_INTERFACE", + "SCALAR_TIME_INTERFACE", + "SCALE_FACTOR_LISTENER_INTERFACE", + "SCREENSHOT_INTERFACE", + "SERIAL_CONSOLE_FRONTEND_INTERFACE", + "SERIAL_DEVICE_INTERFACE", + "SERIAL_PERIPHERAL_INTERFACE_MASTER_INTERFACE", + "SERIAL_PERIPHERAL_INTERFACE_SLAVE_INTERFACE", + "SH_INTERRUPT_INTERFACE", + "SIGNAL_INTERFACE", + "SIMICS_HOST_TYPE", + "SIMLINK_config_remove_value", + "SIMLINK_config_update_value", + "SIMLINK_endpoint_clock", + "SIMLINK_endpoint_dev_name", + "SIMLINK_endpoint_device", + "SIMLINK_endpoint_disconnect", + "SIMLINK_endpoint_finalize", + "SIMLINK_endpoint_id", + "SIMLINK_endpoint_init", + "SIMLINK_endpoint_is_device", + "SIMLINK_endpoint_link", + "SIMLINK_endpoint_port", + "SIMLINK_finalize", + "SIMLINK_find_endpoint_by_id", + "SIMLINK_init", + "SIMLINK_init_library", + "SIMLINK_init_message", + "SIMLINK_pre_delete", + "SIMLINK_register_class", + "SIMLINK_register_endpoint_class", + "SIMLINK_register_snoop_endpoint_class", + "SIMLINK_send_message", + "SIMLINK_send_message_multi", + "SIMLINK_snoop_endpoint_create", + "SIMPLE_DISPATCHER_INTERFACE", + "SIMPLE_INTERRUPT_INTERFACE", + "SIMULATOR_CACHE_INTERFACE", + "SIM_DI_PREFIX_66_BIT", + "SIM_DI_PREFIX_ADDRESS_SIZE_BIT", + "SIM_DI_PREFIX_CS_BIT", + "SIM_DI_PREFIX_DS_BIT", + "SIM_DI_PREFIX_ES_BIT", + "SIM_DI_PREFIX_F0_BIT", + "SIM_DI_PREFIX_F2_BIT", + "SIM_DI_PREFIX_F3_BIT", + "SIM_DI_PREFIX_FS_BIT", + "SIM_DI_PREFIX_GS_BIT", + "SIM_DI_PREFIX_OPERAND_SIZE_BIT", + "SIM_DI_PREFIX_REX_BIT", + "SIM_DI_PREFIX_REX_POS", + "SIM_DI_PREFIX_REX_POS_B", + "SIM_DI_PREFIX_REX_POS_R", + "SIM_DI_PREFIX_REX_POS_W", + "SIM_DI_PREFIX_REX_POS_X", + "SIM_DI_PREFIX_SSE_BIT", + "SIM_DI_PREFIX_SS_BIT", + "SIM_MAJOR_VERSION_DIFF", + "SIM_STC_flush_cache", + "SIM_VERSION", + "SIM_VERSION_4_8", + "SIM_VERSION_5", + "SIM_VERSION_6", + "SIM_VERSION_7", + "SIM_VERSION_COMPAT", + "SIM_acquire_cell", + "SIM_acquire_object", + "SIM_acquire_object_for_execution", + "SIM_acquire_target", + "SIM_add_configuration", + "SIM_add_directory", + "SIM_add_global_notifier", + "SIM_add_global_notifier_once", + "SIM_add_module_dir", + "SIM_add_notifier", + "SIM_add_output_handler", + "SIM_add_profiling_area", + "SIM_alloc_attr_dict", + "SIM_alloc_attr_list", + "SIM_arm_mem_trans_from_generic", + "SIM_ascanf", + "SIM_attr_copy", + "SIM_attr_dict_resize", + "SIM_attr_dict_set_item", + "SIM_attr_free", + "SIM_attr_list_resize", + "SIM_attr_list_set_item", + "SIM_attr_scanf", + "SIM_attribute_error", + "SIM_break_cycle", + "SIM_break_message", + "SIM_break_simulation", + "SIM_break_step", + "SIM_breakpoint", + "SIM_breakpoint_remove", + "SIM_c_attribute_error", + "SIM_c_get_class_interface", + "SIM_c_get_class_port_interface", + "SIM_c_get_interface", + "SIM_c_get_mem_op_value_buf", + "SIM_c_get_port_interface", + "SIM_c_hap_occurred", + "SIM_c_hap_occurred_always", + "SIM_c_hap_occurred_always_vararg", + "SIM_c_hap_occurred_vararg", + "SIM_c_set_mem_op_value_buf", + "SIM_call_python_function", + "SIM_cancel_realtime_event", + "SIM_class_has_attribute", + "SIM_class_has_notifier", + "SIM_class_port", + "SIM_clear_directories", + "SIM_clear_exception", + "SIM_complete_transaction", + "SIM_continue", + "SIM_copy_class", + "SIM_copyright", + "SIM_create_class", + "SIM_create_object", + "SIM_current_checkpoint_dir", + "SIM_current_clock", + "SIM_current_processor", + "SIM_cycle_count", + "SIM_defer_owned_transaction", + "SIM_defer_transaction", + "SIM_delete_breakpoint", + "SIM_delete_global_notifier", + "SIM_delete_notifier", + "SIM_delete_object", + "SIM_delete_objects", + "SIM_describe_notifier", + "SIM_describe_pseudo_exception", + "SIM_disable_breakpoint", + "SIM_disassemble_address", + "SIM_drop_thread_domains", + "SIM_enable_breakpoint", + "SIM_ensure_partial_attr_order", + "SIM_event_cancel_step", + "SIM_event_cancel_time", + "SIM_event_find_next_cycle", + "SIM_event_find_next_step", + "SIM_event_find_next_time", + "SIM_event_post_cycle", + "SIM_event_post_step", + "SIM_event_post_time", + "SIM_extend_class", + "SIM_extension_data", + "SIM_flush", + "SIM_flush_D_STC_logical", + "SIM_flush_D_STC_physical", + "SIM_flush_I_STC_logical", + "SIM_flush_I_STC_physical", + "SIM_flush_all_caches", + "SIM_flush_cell_caches", + "SIM_free_attribute", + "SIM_free_map_target", + "SIM_get_all_classes", + "SIM_get_all_failed_modules", + "SIM_get_all_hap_types", + "SIM_get_all_modules", + "SIM_get_all_objects", + "SIM_get_all_processors", + "SIM_get_api_function", + "SIM_get_attribute", + "SIM_get_attribute_attributes", + "SIM_get_attribute_idx", + "SIM_get_batch_mode", + "SIM_get_class", + "SIM_get_class_attribute", + "SIM_get_class_attribute_idx", + "SIM_get_class_data", + "SIM_get_class_interface", + "SIM_get_class_name", + "SIM_get_class_port_interface", + "SIM_get_debugger", + "SIM_get_directories", + "SIM_get_global_message", + "SIM_get_init_arg_boolean", + "SIM_get_init_arg_string", + "SIM_get_interface", + "SIM_get_mem_op_ignore", + "SIM_get_mem_op_type_name", + "SIM_get_mem_op_value_be", + "SIM_get_mem_op_value_buf", + "SIM_get_mem_op_value_cpu", + "SIM_get_mem_op_value_le", + "SIM_get_object", + "SIM_get_pending_exception", + "SIM_get_port_interface", + "SIM_get_processor", + "SIM_get_processor_number", + "SIM_get_python_interface_type", + "SIM_get_quiet", + "SIM_get_transaction_bytes", + "SIM_get_transaction_bytes_offs", + "SIM_get_transaction_id", + "SIM_get_transaction_value_be", + "SIM_get_transaction_value_le", + "SIM_get_verbose", + "SIM_hap_add_callback", + "SIM_hap_add_callback_index", + "SIM_hap_add_callback_obj", + "SIM_hap_add_callback_obj_index", + "SIM_hap_add_callback_obj_range", + "SIM_hap_add_callback_range", + "SIM_hap_add_type", + "SIM_hap_delete_callback", + "SIM_hap_delete_callback_id", + "SIM_hap_delete_callback_obj", + "SIM_hap_delete_callback_obj_id", + "SIM_hap_get_name", + "SIM_hap_get_number", + "SIM_hap_is_active", + "SIM_hap_is_active_obj", + "SIM_hap_is_active_obj_idx", + "SIM_hap_occurred", + "SIM_hap_occurred_always", + "SIM_hap_remove_type", + "SIM_has_notifier", + "SIM_init_command_line", + "SIM_init_environment", + "SIM_init_simulator2", + "SIM_inspect_address_routing", + "SIM_inspect_breakpoints", + "SIM_is_loading_micro_checkpoint", + "SIM_is_restoring_state", + "SIM_issue_transaction", + "SIM_last_error", + "SIM_license", + "SIM_license_file", + "SIM_load_binary", + "SIM_load_file", + "SIM_load_module", + "SIM_load_target", + "SIM_log_critical", + "SIM_log_error", + "SIM_log_info", + "SIM_log_level", + "SIM_log_message", + "SIM_log_register_groups", + "SIM_log_spec_violation", + "SIM_log_unimplemented", + "SIM_lookup_file", + "SIM_main_loop", + "SIM_make_attr_data", + "SIM_make_attr_list", + "SIM_make_attr_list_vararg", + "SIM_make_attr_string", + "SIM_make_mem_op_read", + "SIM_make_mem_op_write", + "SIM_map_target_flush", + "SIM_map_target_object", + "SIM_map_target_port", + "SIM_map_target_target", + "SIM_marked_for_deletion", + "SIM_mips_mem_trans_from_generic", + "SIM_module_list_refresh", + "SIM_monitor_chained_transaction", + "SIM_monitor_transaction", + "SIM_native_path", + "SIM_new_map_target", + "SIM_notifier_description", + "SIM_notifier_type", + "SIM_notify", + "SIM_notify_on_descriptor", + "SIM_notify_on_socket", + "SIM_number_processors", + "SIM_object_clock", + "SIM_object_data", + "SIM_object_descendant", + "SIM_object_id", + "SIM_object_is_configured", + "SIM_object_is_processor", + "SIM_object_iterator", + "SIM_object_iterator_next", + "SIM_object_name", + "SIM_object_parent", + "SIM_pci_mem_trans_from_generic", + "SIM_picosecond_clock", + "SIM_poll_transaction", + "SIM_port_object_parent", + "SIM_ppc_mem_trans_from_generic", + "SIM_printf", + "SIM_printf_vararg", + "SIM_process_pending_work", + "SIM_process_work", + "SIM_processor_privilege_level", + "SIM_putchar", + "SIM_puts", + "SIM_quit", + "SIM_reacquire_thread_domains", + "SIM_read_byte", + "SIM_read_configuration", + "SIM_read_phys_memory", + "SIM_read_phys_memory_tags", + "SIM_realtime_event", + "SIM_reconnect_transaction", + "SIM_register_attribute", + "SIM_register_attribute_with_user_data", + "SIM_register_class", + "SIM_register_class_alias", + "SIM_register_class_attribute", + "SIM_register_class_attribute_with_user_data", + "SIM_register_clock", + "SIM_register_compatible_interfaces", + "SIM_register_context_handler", + "SIM_register_copyright", + "SIM_register_event", + "SIM_register_interface", + "SIM_register_notifier", + "SIM_register_port", + "SIM_register_port_interface", + "SIM_register_python_atom_type", + "SIM_register_simple_port", + "SIM_register_tracked_notifier", + "SIM_register_typed_attribute", + "SIM_register_typed_class_attribute", + "SIM_register_work", + "SIM_release_cell", + "SIM_release_object", + "SIM_release_target", + "SIM_remove_output_handler", + "SIM_remove_profiling_area", + "SIM_replace_transaction", + "SIM_require_object", + "SIM_reset_processor", + "SIM_run_alone", + "SIM_run_async_work", + "SIM_run_command", + "SIM_run_command_file", + "SIM_run_command_file_params", + "SIM_run_in_thread", + "SIM_run_python", + "SIM_run_unrestricted", + "SIM_set_attribute", + "SIM_set_attribute_default", + "SIM_set_attribute_idx", + "SIM_set_class_attribute", + "SIM_set_class_attribute_idx", + "SIM_set_class_data", + "SIM_set_configuration", + "SIM_set_frontend_context", + "SIM_set_log_level", + "SIM_set_mem_op_ignore", + "SIM_set_mem_op_value_be", + "SIM_set_mem_op_value_buf", + "SIM_set_mem_op_value_cpu", + "SIM_set_mem_op_value_le", + "SIM_set_object_configured", + "SIM_set_quiet", + "SIM_set_transaction_bytes", + "SIM_set_transaction_bytes_constant", + "SIM_set_transaction_bytes_offs", + "SIM_set_transaction_value_be", + "SIM_set_transaction_value_le", + "SIM_set_verbose", + "SIM_shallow_object_iterator", + "SIM_shutdown", + "SIM_simics_is_running", + "SIM_source_python", + "SIM_source_python_in_module", + "SIM_stall", + "SIM_stall_count", + "SIM_stall_cycle", + "SIM_stalled_until", + "SIM_step_count", + "SIM_thread_safe_callback", + "SIM_time", + "SIM_transaction_flags", + "SIM_transaction_initiator", + "SIM_transaction_is_deferrable", + "SIM_transaction_is_fetch", + "SIM_transaction_is_inquiry", + "SIM_transaction_is_read", + "SIM_transaction_is_write", + "SIM_transaction_size", + "SIM_transaction_wait", + "SIM_translation_changed", + "SIM_trigger_global_message", + "SIM_version", + "SIM_version_base", + "SIM_version_major", + "SIM_vmxmon_version", + "SIM_write", + "SIM_write_byte", + "SIM_write_configuration_to_file", + "SIM_write_phys_memory", + "SIM_write_phys_memory_tags", + "SIM_x86_mem_trans_from_generic", + "SIM_yield_thread_domains", + "SLAVER_MESSAGE_INTERFACE", + "SLAVE_AGENT_INTERFACE", + "SMM_INSTRUMENTATION_SUBSCRIBE_INTERFACE", + "SNOOP_MEMORY_INTERFACE", + "SO_SFX", + "SPARC_V8_ECC_FAULT_INJECTION_INTERFACE", + "SPARC_V8_INTERFACE", + "SPR_INTERFACE", + "STALL_INTERFACE", + "STEP_CYCLE_RATIO_INTERFACE", + "STEP_EVENT_INSTRUMENTATION_INTERFACE", + "STEP_INFO_INTERFACE", + "STEP_INTERFACE", + "SYNCHRONOUS_MODE_INTERFACE", + "S_IRUSR", + "S_IWUSR", + "Sim_Trn_Control", + "Sim_Trn_Instr", + "Sim_Trn_Prefetch", + "Sim_Trn_Write", + "TABLE_INTERFACE", + "TAG_BYTE_PACKING", + "TAG_GRANULARITY", + "TCF_CHANNEL_INTERFACE", + "TCP_CONNECTION_INFO_INTERFACE", + "TELEMETRY_INTERFACE", + "TELEMETRY_MANAGER_INTERFACE", + "TELNET_CONNECTION_INTERFACE", + "TELNET_CONNECTION_V2_INTERFACE", + "TEMPORAL_STATE_INTERFACE", + "TERMINAL_CLIENT_INTERFACE", + "TERMINAL_SERVER_INTERFACE", + "TEXT_CONSOLE_BACKEND_INTERFACE", + "TEXT_CONSOLE_FRONTEND_INTERFACE", + "TIMING_MODEL_INTERFACE", + "TRANSACTION_INTERFACE", + "TRANSACTION_TRANSLATOR_INTERFACE", + "TRANSLATE_INTERFACE", + "TRANSLATION_FLUSH_INTERFACE", + "TRANSLATOR_INTERFACE", + "TTY_ABORT", + "TTY_NO_CHAR", + "UD_IT_CONTROL_FLOW", + "UD_IT_SEQUENTIAL", + "UINT64_STATE_INTERFACE", + "USB_DEVICE_INTERFACE", + "USB_INTERFACE", + "USE_BINFMT_ELF", + "VECTORED_INTERRUPT_INTERFACE", + "VECTORED_INTERRUPT_SOURCE_INTERFACE", + "VECT_COVERITY", + "VECT_DEBUG", + "VECT_INITIAL_SIZE", + "VGA_TEXT_INFO_INTERFACE", + "VGA_TEXT_INTERFACE", + "VGA_TEXT_UPDATE_INTERFACE", + "VGA_UPDATE_INTERFACE", + "VIDEO_INTERFACE", + "VIRTUAL_DATA_BREAKPOINT_INTERFACE", + "VIRTUAL_INSTRUCTION_BREAKPOINT_INTERFACE", + "VMP_INTERFACE", + "VMX_INSTRUMENTATION_SUBSCRIBE_INTERFACE", + "VNC_SERVER_INTERFACE", + "VNC_SERVER_V2_INTERFACE", + "VT_abort_error", + "VT_abort_execution_fiber", + "VT_abort_user", + "VT_acquire_cell", + "VT_acquire_object", + "VT_acquire_target", + "VT_activate_executor", + "VT_add_objects", + "VT_add_permanent_object", + "VT_add_telemetry_data", + "VT_add_telemetry_data_bool", + "VT_add_telemetry_data_int", + "VT_add_telemetry_data_str", + "VT_assert_cell_context", + "VT_assert_object_lock", + "VT_assert_outside_execution_context", + "VT_async_events_pending", + "VT_async_events_pending_in_cell", + "VT_async_stall_usecs", + "VT_attr_value_to_python_obj", + "VT_attr_values_equal", + "VT_bad_attr_type", + "VT_buffer_t_pyobject_invalidate", + "VT_buffer_t_to_pyobject", + "VT_byte_string_to_pyobject", + "VT_c_in_time_order", + "VT_call_python_module_function", + "VT_cbdata_python_type", + "VT_check_async_events", + "VT_check_async_events_from_cell", + "VT_check_package_updates", + "VT_clear_augmentation_bit", + "VT_clock_frequency_about_to_change", + "VT_clock_frequency_change", + "VT_command_line_create", + "VT_command_line_delete", + "VT_command_line_key", + "VT_command_line_new_position", + "VT_command_line_new_selection", + "VT_command_line_set_size", + "VT_command_line_to_clipboard", + "VT_create_execute_environ", + "VT_create_wait_handler", + "VT_critical_error", + "VT_cross_cell_call", + "VT_ctx_remove_from_context_handler", + "VT_ctx_set_on_context_handler", + "VT_cycles_to_quantum_end", + "VT_delete_micro_checkpoint", + "VT_delete_snapshot", + "VT_deprecate", + "VT_describe_pseudo_exception", + "VT_dispatch_async_events", + "VT_domain_event_at", + "VT_domain_event_soon", + "VT_dump_snapshot", + "VT_execute", + "VT_first_clock", + "VT_free_completion", + "VT_free_execute_environ", + "VT_free_wait_handler", + "VT_frontend_exception", + "VT_get_all_instances", + "VT_get_all_objects_impl", + "VT_get_atom_class_id", + "VT_get_attribute_type", + "VT_get_attributes", + "VT_get_augmentation_bit", + "VT_get_break_message", + "VT_get_c_py_wrap", + "VT_get_class_description", + "VT_get_class_extensions", + "VT_get_class_kind", + "VT_get_class_short_desc", + "VT_get_configuration", + "VT_get_current_processor", + "VT_get_current_processor_old", + "VT_get_event_class", + "VT_get_hide_consoles_flag", + "VT_get_interfaces", + "VT_get_map_generation", + "VT_get_object_by_name", + "VT_get_object_prop", + "VT_get_opaque_python_type", + "VT_get_pci_mem_op_requester_id", + "VT_get_pci_mem_op_tlp_prefix", + "VT_get_port_classes", + "VT_get_port_interfaces", + "VT_get_port_obj_desc", + "VT_get_py_c_wrap", + "VT_get_py_interface", + "VT_get_python_interface", + "VT_get_rewind_overhead", + "VT_get_saved_cwd", + "VT_get_snapshot_info", + "VT_get_stop_reasons", + "VT_get_stop_type", + "VT_get_transaction", + "VT_global_async_events_pending", + "VT_handle_python_exception", + "VT_hap_global_callback_ranges", + "VT_in_main_branch", + "VT_in_the_past", + "VT_in_time_order", + "VT_init_package_list", + "VT_init_python_wrappings", + "VT_inside_instruction", + "VT_interrupt_script", + "VT_io_memory_operation", + "VT_is_loading_snapshot", + "VT_is_oec_thread", + "VT_is_restoring_snapshot", + "VT_is_reversing", + "VT_is_saving_persistent_data", + "VT_list_snapshots", + "VT_load_target_preset_yml", + "VT_local_async_events_pending", + "VT_log_critical", + "VT_log_error", + "VT_log_info", + "VT_log_message", + "VT_log_message64", + "VT_log_spec_violation", + "VT_log_unimplemented", + "VT_logical_file_size", + "VT_lookup_atom_class_id", + "VT_lookup_python_opaque_type", + "VT_lookup_python_opaque_type_name", + "VT_lookup_transaction_atom", + "VT_make_attr", + "VT_make_cbdata_from_python", + "VT_make_python_cbdata", + "VT_map_target_access", + "VT_map_target_dm_lookup", + "VT_new_code_block", + "VT_new_completion", + "VT_object_cell", + "VT_object_checkpointable", + "VT_object_iterator", + "VT_object_ps_clock", + "VT_obtain_and_restore_python_lock", + "VT_obtain_python_lock", + "VT_outside_execution_context_violation", + "VT_pop_exc_ppg_entry", + "VT_post_local_work", + "VT_process_cross_cell_calls", + "VT_process_work", + "VT_prof_data_inc_pc", + "VT_profiler_add_flush", + "VT_profiler_remove_flush", + "VT_push_exc_ppg_entry", + "VT_pyobject_to_buffer_t", + "VT_pyobject_to_byte_string", + "VT_python_cbdata_type", + "VT_python_decref", + "VT_python_obj_to_attr_value_with_error", + "VT_python_unwrap_conf_object", + "VT_python_wrap_conf_object", + "VT_raise_python_exception", + "VT_real_network_warnings", + "VT_register_async_notifier", + "VT_register_atom_class", + "VT_register_new_code_block_listener", + "VT_register_oec_thread", + "VT_register_opaque_python_type", + "VT_register_opaque_type", + "VT_register_passive_clock", + "VT_register_port_array_interface", + "VT_register_py_interface", + "VT_register_python_interface", + "VT_register_thread", + "VT_release_cell", + "VT_release_object", + "VT_release_python_lock", + "VT_release_target", + "VT_remote_control", + "VT_rename_object", + "VT_report_bad_attr_type", + "VT_report_uncaught_exceptions", + "VT_restore_micro_checkpoint", + "VT_restore_snapshot", + "VT_reverse", + "VT_reverse_cpu", + "VT_revexec_active", + "VT_revexec_available", + "VT_revexec_barrier", + "VT_revexec_cycles", + "VT_revexec_divert_output", + "VT_revexec_ignore_class", + "VT_revexec_steps", + "VT_rewind", + "VT_run_outside_cell", + "VT_run_unrestricted_python", + "VT_save_and_release_python_lock", + "VT_save_micro_checkpoint", + "VT_save_snapshot", + "VT_send_startup_complete_message", + "VT_set_augmentation_bit", + "VT_set_completion", + "VT_set_constructor_data", + "VT_set_cpu_offset", + "VT_set_delete_protection", + "VT_set_execute_environ", + "VT_set_frontend_server", + "VT_set_object_checkpointable", + "VT_set_object_clock", + "VT_set_object_prop", + "VT_set_pci_mem_op_tlp_prefix", + "VT_set_wait_handler", + "VT_shallow_object_iterator", + "VT_simics_to_filename", + "VT_skipto_bookmark", + "VT_skipto_cycle", + "VT_skipto_step", + "VT_snapshot_size_used", + "VT_snapshots_ignore_class", + "VT_snapshots_skip_attr_restore", + "VT_snapshots_skip_class_restore", + "VT_stacked_post", + "VT_start_execution_fiber", + "VT_step_stamp", + "VT_stop_error", + "VT_stop_event_processing", + "VT_stop_execution", + "VT_stop_finished", + "VT_stop_message", + "VT_stop_user", + "VT_take_snapshot", + "VT_thread_cell_association_begin", + "VT_thread_cell_association_end", + "VT_transaction_atom", + "VT_unregister_async_notifier", + "VT_unregister_thread", + "VT_unrestricted_sync_point", + "VT_update_thread_domain_assignments", + "VT_use_ipv4", + "VT_user_interrupt", + "VT_wait_for_completion", + "VT_wait_for_simulator_init", + "VT_write_rev", + "WINSOME_CONSOLE_INTERFACE", + "X86_ACCESS_TYPE_INTERFACE", + "X86_ADDRESS_QUERY_INTERFACE", + "X86_CACHE_FLUSH_INTERFACE", + "X86_CPUID_INTERFACE", + "X86_CPUID_QUERY_INTERFACE", + "X86_CSTATE_CHANGE_NOTIFIER", + "X86_CSTATE_INTERFACE", + "X86_CSTATE_NOTIFICATION_INTERFACE", + "X86_EPT_INTERFACE", + "X86_EXCEPTION_INTERFACE", + "X86_EXCEPTION_QUERY_INTERFACE", + "X86_INSTRUCTION_QUERY_INTERFACE", + "X86_INSTRUMENTATION_SUBSCRIBE_INTERFACE", + "X86_INSTRUMENTATION_SUBSCRIBE_V2_INTERFACE", + "X86_INTERFACE", + "X86_MEMORY_ACCESS_INTERFACE", + "X86_MEMORY_OPERATION_INTERFACE", + "X86_MEMORY_QUERY_INTERFACE", + "X86_MSR_INTERFACE", + "X86_PKG_CSTATE_INTERFACE", + "X86_REG_ACCESS_INTERFACE", + "X86_SMM_INTERFACE", + "X86_SMM_STATE_INTERFACE", + "X86_TLB_INTERFACE", + "X86_TLB_PTE_DIRTY", + "X86_TLB_PTE_GLOBAL", + "X86_TLB_PTE_MASK", + "X86_TLB_PTE_PAGE_MASK", + "X86_TLB_PTE_SVISOR_EXECUTE", + "X86_TLB_PTE_SVISOR_MASK", + "X86_TLB_PTE_SVISOR_READ", + "X86_TLB_PTE_SVISOR_SHIFT", + "X86_TLB_PTE_SVISOR_WRITE", + "X86_TLB_PTE_USER", + "X86_TLB_PTE_USER_EXECUTE", + "X86_TLB_PTE_USER_MASK", + "X86_TLB_PTE_USER_READ", + "X86_TLB_PTE_USER_SHIFT", + "X86_TLB_PTE_USER_WRITE", + "X86_TLB_PTE_WRITE", + "X86_TLB_V2_INTERFACE", + "X86_TLB_V3_INTERFACE", + "X86_VMP_CONTROL_INTERFACE", + "XED_ACCESS_INTERFACE", + "XTENSA_EXPORT_STATE_INTERFACE", + "XTENSA_IMPORT_WIRE_INTERFACE", + "XTENSA_INPUT_QUEUE_INTERFACE", + "XTENSA_LOOKUP_INTERFACE", + "XTENSA_OUTPUT_QUEUE_INTERFACE", + "XTENSA_TIE_EXPORT_STATE_INTERFACE", + "XTENSA_TIE_IMPORT_WIRE_INTERFACE", + "XTENSA_TIE_INPUT_QUEUE_INTERFACE", + "XTENSA_TIE_LOOKUP_INTERFACE", + "XTENSA_TIE_OUTPUT_QUEUE_INTERFACE", + "_LARGEFILE64_SOURCE", + "_LARGEFILE_SOURCE", + "_POSIX_C_SOURCE", + "_XOPEN_SOURCE", + "__FILE", + "__bool_true_false_are_defined", + "_mod", + "_object", + "_typeobject", + "a20_interface", + "abort", + "abs_pointer_activate_interface", + "abs_pointer_buttons_t", + "abs_pointer_interface", + "abs_pointer_state_t", + "access_filter_cb_t", + "access_t", + "addr_prof_iter", + "addr_prof_iter_t", + "addr_space_t", + "addr_type_t", + "address_handle_t", + "address_profiler_interface", + "after_read_callback_t", + "after_write_callback_t", + "api_function_t", + "apic_bus_status_t", + "apic_cpu_interface", + "apic_delivery_mode_t", + "apic_delivery_status_t", + "apic_destination_mode_t", + "apic_rr_status_t", + "apic_trigger_mode_t", + "arinc429_bus_interface", + "arinc429_receiver_interface", + "arm_avic", + "arm_avic_interface", + "arm_avic_t", + "arm_coprocessor_interface", + "arm_cpu_state", + "arm_cpu_state_t", + "arm_device_type_t", + "arm_external_debug_interface", + "arm_gic_interface", + "arm_mem_attr_t", + "arm_mem_hint_t", + "arm_mem_instr_origin_t", + "arm_mem_transient_t", + "arm_mem_type_t", + "arm_memory_attributes_encoding_t", + "arm_memory_transaction", + "arm_memory_transaction_t", + "arm_smmu_attributes_t", + "arm_translation_regime_t", + "arm_trustzone_mode_t", + "assert_error", + "atom_id_t", + "atom_t", + "atomic_counter_t", + "attr_attr_t", + "attr_dict_pair", + "attr_dict_pair_t", + "attr_kind_t", + "attr_value", + "attr_value_t", + "attribute_id_t", + "bank_access", + "bank_access_t", + "bank_after_read_interface", + "bank_after_read_interface_t", + "bank_after_write_interface", + "bank_after_write_interface_t", + "bank_before_read_interface", + "bank_before_read_interface_t", + "bank_before_write_interface", + "bank_before_write_interface_t", + "bank_callback_handle_t", + "before_read_callback_t", + "before_write_callback_t", + "bigtime_as_string", + "bigtime_div_floor", + "bigtime_div_raw", + "bigtime_from_attr", + "bigtime_mul", + "bigtime_t", + "bigtime_to_attr", + "block_flag_t", + "branch_arc_interface", + "branch_arc_iter", + "branch_arc_iter_t", + "branch_arc_t", + "branch_arc_type_t", + "branch_recorder", + "branch_recorder_direction_t", + "branch_recorder_t", + "break_string_cb_t", + "break_strings_v2_interface", + "break_strings_v2_interface_t", + "breakpoint_change_interface", + "breakpoint_flag", + "breakpoint_handle_t", + "breakpoint_id_t", + "breakpoint_info_t", + "breakpoint_interface", + "breakpoint_kind_t", + "breakpoint_query_interface", + "breakpoint_query_v2_interface", + "breakpoint_set_t", + "breakpoint_trigger_interface", + "breakpoint_type_interface", + "breakpoint_type_interface_t", + "breakpoint_type_provider_interface", + "breakpoint_type_provider_interface_t", + "bridge_interface", + "buffer_t", + "byte_string_t", + "bytes_t", + "cache_control_interface", + "cache_control_interface_t", + "cache_control_operation_t", + "cached_instruction_data", + "cached_instruction_handle_t", + "calloc", + "cancel_id_error_t", + "cancel_id_t", + "cbdata", + "cbdata_call_t", + "cbdata_register_t", + "cbdata_t", + "cbdata_type_t", + "cdrom_media_interface", + "cell_inspection_interface", + "cell_inspection_interface_t", + "checkpoint_interface", + "class_data", + "class_data_t", + "class_info", + "class_info_t", + "class_interface_t", + "class_kind_t", + "clear_interval", + "clock_instrumentation", + "cmd_line_id_t", + "cmd_line_key_t", + "cmd_line_mod_t", + "co_execute_interface", + "co_execute_interface_t", + "column_key_t", + "completion", + "completion_t", + "component_connector_interface", + "component_interface", + "con_input_code_interface", + "con_input_code_interface_t", + "con_input_interface", + "con_input_interface_t", + "concurrency_group_interface", + "concurrency_group_interface_t", + "concurrency_mode_interface", + "concurrency_mode_interface_t", + "concurrency_mode_t", + "conf_class", + "conf_class_t", + "conf_object", + "conf_object_t", + "confdata", + "connector_direction_t", + "connector_interface", + "context_handler_interface", + "context_handler_interface_t", + "controllable_cache_t", + "coreint_interface", + "coreint_reply_t", + "cpu_access_scope_t", + "cpu_address_cb_t", + "cpu_address_info", + "cpu_bytes", + "cpu_bytes_t", + "cpu_cached_instruction_cb_t", + "cpu_callback_free_user_data_cb_t", + "cpu_cb_handle_t", + "cpu_control_register_read_cb_t", + "cpu_control_register_scope_t", + "cpu_control_register_write_cb_t", + "cpu_emulation_cb_t", + "cpu_emulation_t", + "cpu_endian_t", + "cpu_exception_cb_t", + "cpu_exception_info", + "cpu_exception_return_cb_t", + "cpu_exception_return_info", + "cpu_exception_scope_t", + "cpu_instruction_cb_t", + "cpu_instruction_decoder_cb_t", + "cpu_instruction_disassemble_cb_t", + "cpu_instrumentation_info", + "cpu_list_t", + "cpu_memory_cb_t", + "cpu_memory_info", + "cpu_mode_change_cb_t", + "cpu_replace_info", + "cpu_stream_bits_t", + "cpu_stream_data_t", + "cpu_stream_enum_t", + "cpu_stream_handle_t", + "cpu_variant_t", + "cpuid_ret_t", + "cpuid_value_t", + "craff_close", + "craff_compr_t", + "craff_creat", + "craff_errclass_t", + "craff_error", + "craff_error_t", + "craff_file", + "craff_file_error", + "craff_file_get_error", + "craff_file_t", + "craff_flush", + "craff_free_error", + "craff_get_error", + "craff_get_error_class", + "craff_get_info", + "craff_info_t", + "craff_interv_t", + "craff_interv_vec_t", + "craff_mode_t", + "craff_new_error", + "craff_next_data", + "craff_open", + "craff_params_t", + "craff_read", + "craff_recover", + "craff_write", + "cycle_control_interface", + "cycle_control_interface_t", + "cycle_event_cb_t", + "cycle_event_interface", + "cycle_event_interface_t", + "cycle_handle_t", + "cycle_interface", + "cycle_interface_t", + "cycles_t", + "data_or_instr_t", + "data_profiler_flush_t", + "data_profiler_interface", + "dbuffer", + "dbuffer_append", + "dbuffer_append_external_data", + "dbuffer_append_value", + "dbuffer_bytes", + "dbuffer_clear", + "dbuffer_clone", + "dbuffer_copy_append", + "dbuffer_copy_prepend", + "dbuffer_free", + "dbuffer_insert", + "dbuffer_len", + "dbuffer_prepend", + "dbuffer_prepend_external_data", + "dbuffer_prepend_value", + "dbuffer_read", + "dbuffer_read_all", + "dbuffer_read_some", + "dbuffer_remove", + "dbuffer_remove_head", + "dbuffer_remove_tail", + "dbuffer_replace", + "dbuffer_replace_all", + "dbuffer_replace_some", + "dbuffer_set", + "dbuffer_split", + "dbuffer_t", + "dbuffer_update", + "dbuffer_update_all", + "dbuffer_update_some", + "debug_cancel_id_t", + "debug_notification_interface", + "debug_query_interface", + "debug_setup_id_t", + "debug_setup_interface", + "debug_step_interface", + "debug_symbol_file_interface", + "debug_symbol_interface", + "debugger_error_t", + "decoder_handle_t", + "decoder_t", + "describe_registers_interface", + "describe_registers_interface_t", + "description_t", + "description_type_t", + "destructor", + "device_identification_interface", + "digit", + "direct_memory_ack_id_t", + "direct_memory_flush_interface", + "direct_memory_flush_interface_t", + "direct_memory_handle_t", + "direct_memory_interface", + "direct_memory_interface_t", + "direct_memory_lookup_interface", + "direct_memory_lookup_interface_t", + "direct_memory_lookup_t", + "direct_memory_lookup_v2_interface", + "direct_memory_lookup_v2_interface_t", + "direct_memory_t", + "direct_memory_tags_interface", + "direct_memory_tags_interface_t", + "direct_memory_tags_t", + "direct_memory_update_interface", + "direct_memory_update_interface_t", + "disasm_instr_t", + "disassemble_interface", + "disk_component_interface", + "disk_component_interface_t", + "domain_lock", + "domain_lock_t", + "double_hex_str", + "duration_t", + "endianness_t", + "entity_id_t", + "eth_frame_crc_status_t", + "eth_probe_side_t", + "ether_addr", + "ethernet_link_snoop_t", + "ethernet_probe_interface", + "ethernet_probe_interface_t", + "ethernet_probe_snoop_t", + "event_class", + "event_class_flag_t", + "event_class_t", + "event_delta_interface", + "event_delta_interface_t", + "event_handler_interface", + "event_handler_interface_t", + "event_queue_type", + "exception_handle_t", + "exception_interface", + "exception_return_handle_t", + "exception_type_t", + "exec_mode_t", + "exec_trace_interface", + "exec_trace_interface_t", + "execute_control_interface", + "execute_control_interface_t", + "execute_environ", + "execute_environ_t", + "execute_interface", + "execute_interface_t", + "extended_serial_interface", + "extension_data", + "extra_header_key_t", + "fatal_error", + "field_type_t", + "firewire_ack_code_t", + "firewire_async_lock_code_t", + "firewire_bus_interface", + "firewire_device_interface", + "firewire_iso_tag_t", + "firewire_port_status_t", + "firewire_response_code_t", + "firewire_transaction_code_t", + "floor", + "fmn_station_control_interface", + "fmn_station_control_v2_interface", + "follower_agent_interface", + "follower_time_t", + "for_all_intervals", + "for_some_intervals", + "fphex_strtod", + "fprintf", + "frags", + "frags_extract", + "frags_extract_alloc", + "frags_extract_slice", + "frags_extract_slice_alloc", + "frags_frag", + "frags_frag_t", + "frags_it", + "frags_it_t", + "frags_t", + "free", + "free_interval", + "freerun_interface", + "frequency_interface", + "frequency_interface_t", + "frequency_listener_interface", + "gbp_header_t", + "gen_spr_access_type_t", + "gen_spr_ret_t", + "gen_spr_user_getter_func_t", + "gen_spr_user_setter_func_t", + "generic_address_t", + "generic_transaction", + "generic_transaction_t", + "genrand_destroy", + "genrand_double", + "genrand_init", + "genrand_init_array", + "genrand_range", + "genrand_restore", + "genrand_serialization", + "genrand_uint32", + "genrand_uint64", + "get_attr_t", + "get_class_attr_t", + "get_higher_interval_ptr", + "get_interval_ptr", + "get_interval_vector", + "get_interval_vector_and_range", + "get_lower_interval_ptr", + "get_vtopterr", + "get_vtoptind", + "get_vtoptopt", + "getter", + "gfx_break_cb_t", + "gfx_break_interface", + "gfx_break_interface_t", + "gfx_breakpoint", + "gfx_breakpoint_t", + "gfx_con_interface", + "gfx_con_interface_t", + "gfx_con_pixel_fmt_t", + "gfx_console_backend_interface", + "gfx_console_led_t", + "gfx_console_mouse_button_t", + "gfx_console_screen_text_t", + "gic_reg_info", + "gic_reg_info_t", + "global_notifier_callback", + "global_notifier_callback_t", + "global_notifier_type_t", + "granted_mem", + "granted_mem_t", + "gui_mode_t", + "hap_flags_t", + "hap_handle_t", + "hap_listen_interface", + "hap_listen_interface_t", + "hap_type_t", + "host_serial_interface", + "host_serial_interface_t", + "ht_clear_int_table", + "ht_clear_str_table", + "ht_delete_int_table", + "ht_delete_str_table", + "ht_entry_common", + "ht_entry_common_t", + "ht_entry_lookup_int", + "ht_entry_lookup_str", + "ht_for_each_entry_int", + "ht_for_each_entry_str", + "ht_insert_int", + "ht_insert_str", + "ht_int_entry_t", + "ht_int_iter_t", + "ht_int_table_t", + "ht_iter_common_t", + "ht_key_t", + "ht_lookup_int", + "ht_lookup_str", + "ht_remove_int", + "ht_remove_str", + "ht_str_entry_t", + "ht_str_iter_t", + "ht_str_table_t", + "ht_table_common_t", + "ht_update_int", + "ht_update_str", + "i2c_ack_t", + "i2c_bridge_interface", + "i2c_bus_interface", + "i2c_device_flag_t", + "i2c_device_interface", + "i2c_device_state", + "i2c_link_interface", + "i2c_master_interface", + "i2c_master_v2_interface", + "i2c_slave_interface", + "i2c_slave_v2_interface", + "i2c_status_t", + "i3c_ack_t", + "i3c_daa_snoop_interface", + "i3c_master_interface", + "i3c_slave_interface", + "ieee_802_3_duplex_mode_t", + "ieee_802_3_link_status_t", + "ieee_802_3_mac_interface", + "ieee_802_3_mac_v3_interface", + "ieee_802_3_media_t", + "ieee_802_3_phy_interface", + "ieee_802_3_phy_v2_interface", + "ieee_802_3_phy_v3_interface", + "iface", + "image_interface", + "image_snoop_interface", + "image_spage", + "image_spage_t", + "ini_type_t", + "init_arg_t", + "init_interval", + "init_local", + "init_prefs_t", + "init_vtmem", + "init_vtutils", + "initialize_encoding", + "inquiry", + "insert_interval", + "instruction_fetch_interface", + "instruction_fetch_interface_t", + "instruction_fetch_mode_t", + "instruction_handle_t", + "instruction_info", + "instruction_info_t", + "instruction_trace_callback_t", + "instrumentation_connection_interface", + "instrumentation_entry", + "instrumentation_tool_interface", + "int128", + "int128_as_string", + "int128_div_int64", + "int128_from_double", + "int128_to_double", + "int16", + "int32", + "int64", + "int8", + "int_register_interface", + "interface_array_t", + "interface_t", + "interrupt_ack_fn_t", + "interrupt_ack_interface", + "interrupt_changed_state_callback_t", + "interrupt_cpu_interface", + "interrupt_source_t", + "interrupt_subscriber_interface", + "interval_bucket", + "interval_section", + "interval_set", + "interval_set_iter", + "interval_set_iter_next", + "interval_set_iter_t", + "interval_set_new_iter", + "interval_set_t", + "intervals_func_t", + "io_memory_interface", + "io_memory_interface_t", + "ireg_info_t", + "iter_func_t", + "keyboard_console_interface", + "keyboard_interface", + "lang_void", + "leader_message_interface", + "linear_address_t", + "linear_image_interface", + "link_message_t", + "link_type_t", + "local_apic_interrupt_t", + "local_time_as_string", + "local_time_from_attr", + "local_time_t", + "local_time_to_attr", + "log2", + "log_info", + "log_object", + "log_object_t", + "log_type_t", + "logical_address_t", + "malloc", + "map_demap_interface", + "map_info", + "map_info_t", + "map_list", + "map_list_t", + "map_target", + "map_target_t", + "map_type_t", + "maybe_node_id", + "maybe_node_id_t", + "mdio45_bus_interface", + "mdio45_bus_interface_t", + "mdio45_phy_interface", + "mdio45_phy_interface_t", + "mem_op_type_t", + "memcpy", + "memmove", + "memory_handle_t", + "memory_profiler_interface", + "memory_profiler_interface_t", + "memory_space_interface", + "memset", + "micro_checkpoint_flags_t", + "mii_interface", + "mii_interface_t", + "mii_management_interface", + "mii_management_interface_t", + "mips_coprocessor_interface", + "mips_eic_interface", + "mips_interface", + "mips_ite_interface", + "mips_memory_transaction", + "mips_memory_transaction_t", + "mm_free", + "mm_malloc", + "mm_malloc_low", + "mm_realloc", + "mm_strdup", + "mm_zalloc", + "mmc_interface", + "mod_def_t", + "monitored_attribute", + "mouse_interface", + "ms1553_error_t", + "ms1553_link_interface", + "ms1553_mode_code_t", + "ms1553_phase_t", + "ms1553_terminal_interface", + "ms1553_words_t", + "multi_level_signal_interface", + "named_value_t", + "nand_flash_interface", + "nano_secs_t", + "new_dbuffer", + "new_interval", + "nios_eic_interface", + "nios_interface", + "nios_memory_transaction", + "nios_memory_transaction_t", + "node_id_t", + "notifier_handle", + "notifier_handle_t", + "notifier_type_t", + "notify_mode_t", + "null_arg_error", + "obj_hap_func_t", + "object_iter_t", + "opaque_type", + "opaque_type_t", + "opcode_info_interface", + "opcode_info_interface_t", + "opcode_length_info_t", + "os_absolutify", + "os_access", + "os_basename", + "os_char_t", + "os_chdir", + "os_clean_path", + "os_close_descriptors", + "os_copy", + "os_create_unique_autoremoved_file", + "os_current_time", + "os_current_time_us", + "os_describe_last_dlerror", + "os_describe_last_error", + "os_describe_last_socket_error", + "os_dir_contains_path", + "os_dirname", + "os_dladdr", + "os_dlclose", + "os_dlhandle_t", + "os_dlinfo_t", + "os_dllookup", + "os_dlopen", + "os_dlsymbol_t", + "os_fclose", + "os_file_exists", + "os_fopen", + "os_ftruncate", + "os_get_file_size", + "os_get_last_error", + "os_get_library_path", + "os_get_process_binary_path", + "os_get_thread_name", + "os_get_user_name", + "os_getcwd", + "os_getcwd_nice", + "os_gethostname", + "os_getpid", + "os_gmtime", + "os_host_ncpus", + "os_host_phys_mem_size", + "os_host_virt_mem_size", + "os_initialize_sockets", + "os_is_same_file", + "os_isabs", + "os_isdir", + "os_isfile", + "os_last_error_was_error", + "os_last_socket_error", + "os_listdir", + "os_lseek", + "os_make_readable_path", + "os_make_sparse", + "os_millisleep", + "os_mkdir", + "os_mmap", + "os_mmap_flags_t", + "os_munmap", + "os_normalize_path", + "os_open", + "os_open_vararg", + "os_path_expand_user", + "os_path_join", + "os_pread", + "os_pwrite", + "os_quote_filename", + "os_realpath", + "os_remove", + "os_rename", + "os_rmdir", + "os_rmenv", + "os_set_socket_blocking", + "os_set_socket_nodelay", + "os_set_socket_non_blocking", + "os_set_socket_reuseaddr", + "os_set_thread_name", + "os_setenv", + "os_socket_close", + "os_socket_connect", + "os_socket_get_status", + "os_socket_read", + "os_socket_status_t", + "os_socket_write", + "os_socket_write_non_blocking", + "os_stat", + "os_stat_t", + "os_strptime", + "os_time_t", + "os_timegm", + "os_tm", + "os_tm_t", + "os_user_cpu_time_us", + "osa_component_interface", + "osa_control_interface", + "osa_control_v2_interface", + "osa_machine_notification_interface", + "osa_machine_query_interface", + "osa_mapper_admin_interface", + "osa_mapper_control_interface", + "osa_mapper_query_interface", + "osa_micro_checkpoint_interface", + "osa_node_path_interface", + "osa_node_tree_admin_interface", + "osa_node_tree_notification_interface", + "osa_node_tree_query_interface", + "osa_parameters_interface", + "osa_read_len_t", + "osa_tracker_component_interface", + "osa_tracker_control_interface", + "osa_tracker_state_admin_interface", + "osa_tracker_state_notification_interface", + "osa_tracker_state_query_interface", + "p2_memory_transaction_t", + "page", + "page_crossing_info_t", + "page_t", + "parity_mode_t", + "pc_step_t", + "pci_bridge_interface", + "pci_bus_interface", + "pci_device_interface", + "pci_downstream_interface", + "pci_express_hotplug_interface", + "pci_express_interface", + "pci_interrupt_interface", + "pci_interrupt_pin_t", + "pci_memory_transaction", + "pci_memory_transaction_t", + "pci_multi_function_device_interface", + "pci_upstream_interface", + "pci_upstream_operation_interface", + "pcie_adapter_compat_interface", + "pcie_at_t", + "pcie_byte_count_ret_t", + "pcie_device_interface", + "pcie_error_ret_t", + "pcie_error_t", + "pcie_hotplug_events_interface", + "pcie_hotplug_mrl_t", + "pcie_hotplug_pd_t", + "pcie_map_interface", + "pcie_message_type_t", + "pcie_msg_route_t", + "pcie_port_control_interface", + "pcie_type_t", + "physical_address_t", + "physical_block_t", + "pico_secs_t", + "pmr_interface", + "pool_protect_interface", + "pool_protect_interface_t", + "port_space_interface", + "ppc_decoration_t", + "ppc_decoration_type_t", + "ppc_interface", + "ppc_mc_exc_t", + "ppc_mem_instr_origin_t", + "ppc_memory_transaction", + "ppc_memory_transaction_t", + "ppc_sleep_state_t", + "ppc_spr_user_getter_func_t", + "ppc_spr_user_setter_func_t", + "pr", + "pr_err", + "pr_err_vararg", + "pr_rev", + "pre_conf_object_set_t", + "pre_decoder_cb_t", + "preference_interface", + "printf", + "probe_array_interface", + "probe_array_interface_t", + "probe_cache_interface", + "probe_cache_interface_t", + "probe_index_interface", + "probe_index_interface_t", + "probe_interface", + "probe_key_t", + "probe_notification_context_interface", + "probe_sampler_cache_interface", + "probe_sampler_cache_interface_t", + "probe_subscribe_interface", + "probe_subscribe_interface_t", + "processor_cli_interface", + "processor_cli_interface_t", + "processor_endian_interface", + "processor_endian_interface_t", + "processor_gui_interface", + "processor_gui_interface_t", + "processor_info_interface", + "processor_info_interface_t", + "processor_info_v2_interface", + "processor_info_v2_interface_t", + "processor_mode_t", + "prof_data", + "prof_data_add", + "prof_data_address_t", + "prof_data_clear", + "prof_data_counter_t", + "prof_data_create", + "prof_data_delete", + "prof_data_get", + "prof_data_granularity_log2", + "prof_data_iter_addr", + "prof_data_iter_next", + "prof_data_iter_t", + "prof_data_load", + "prof_data_new_iter", + "prof_data_save", + "prof_data_set", + "prof_data_t", + "profile_area", + "profile_area_t", + "prop_desc_t", + "prop_id_t", + "proplist", + "pseudo_exceptions_t", + "pulse_interface", + "py_method_t", + "py_opaque_type_t", + "py_wrap_c_func", + "py_wrap_c_func_t", + "python_cbdata_t", + "qsort", + "ram_access_cb_t", + "ram_access_subscribe_interface", + "ram_callback_entry", + "ram_cb_handle_t", + "ram_interface", + "ram_interface_t", + "ram_operation_flags_t", + "rand_state", + "rand_state_t", + "range_node_t", + "rapidio_operation_t", + "rapidio_v3_interface", + "rapidio_v4_interface", + "rapidio_v5_interface", + "read_or_write_t", + "realloc", + "recorded_interface", + "recorder", + "recorder_input_handler_t", + "recorder_interface", + "recorder_t", + "recorder_v2_interface", + "reg_bitorder_t", + "reg_role_t", + "register_breakpoint_interface", + "remove_interval", + "request_id_error_t", + "request_id_t", + "revexec_pos_t", + "riscv_clic_interface", + "riscv_clic_interrupt_interface", + "riscv_coprocessor_interface", + "riscv_cpu_mode_t", + "riscv_imsic_file_id_t", + "riscv_imsic_interface", + "riscv_imsic_interface_t", + "riscv_memory_transaction", + "riscv_memory_transaction_t", + "riscv_signal_sgeip_interface", + "riscv_vectoring_mode_t", + "rom_interface_t", + "rs232_console_interface", + "rs232_device_interface", + "sata_interface", + "save_flags_t", + "sb_addesc", + "sb_addfmt", + "sb_detach", + "sb_fmt", + "sb_free", + "sb_new", + "sb_newf", + "sb_readline", + "sb_realloc", + "sb_vaddfmt", + "sb_vfmt", + "sb_write", + "scalar_time_interface", + "scale_factor_listener_interface", + "sclass", + "sclass_t", + "screenshot_interface", + "screenshot_interface_t", + "serial_console_frontend_interface", + "serial_console_frontend_interface_t", + "serial_device_interface", + "serial_peripheral_interface_flags", + "serial_peripheral_interface_master_interface", + "serial_peripheral_interface_slave_interface", + "service_routine_t", + "set_attr_t", + "set_class_attr_t", + "set_error_t", + "setter", + "signal_interface", + "signed_divide_128_by_64", + "sim_bp_type_t", + "sim_exception", + "sim_key_t", + "sim_version_t", + "simple_dispatcher_interface", + "simple_interrupt_interface", + "simtime_t", + "simulator_cache_interface", + "simulator_cache_interface_t", + "slave_time_t", + "smm_reg_state_t", + "smm_switch_cb_t", + "snapshot_error_t", + "snoop_memory_interface", + "sobject", + "sobject_t", + "sockaddr", + "socket_t", + "sparc_v8_interface", + "spr_interface", + "stall_interface", + "stall_interface_t", + "stat", + "state_save_kind_t", + "step_cycle_ratio_interface", + "step_cycle_ratio_interface_t", + "step_cycle_ratio_t", + "step_event_cb_t", + "step_handle_t", + "step_info_interface", + "step_info_interface_t", + "step_instrumentation", + "step_interface", + "step_interface_t", + "stop_bits_t", + "stop_type_t", + "str_vec_add", + "str_vec_add_stealing", + "str_vec_find", + "str_vec_free", + "str_vec_remove", + "str_vec_sort", + "str_vec_t", + "strbuf_t", + "strdup", + "strlen", + "struct_member", + "struct_member_t", + "swap_mode", + "synchronous_mode_interface", + "synchronous_mode_interface_t", + "table_key_t", + "tagged_linear_address_t", + "tagged_physical_address_t", + "telemetry_class_id_t", + "telemetry_id_t", + "telemetry_interface", + "telnet_connection_interface", + "telnet_connection_interface_t", + "telnet_connection_v2_interface", + "telnet_connection_v2_interface_t", + "temporal_state_interface", + "text_console_attrib_t", + "text_console_colour_t", + "text_console_key_t", + "text_console_modifier_t", + "text_console_text_attrib_t", + "thread_domain", + "time_ordered_handler_t", + "timing_model_interface", + "tm", + "touch_interval", + "trampoline_data", + "trampoline_data_t", + "transaction", + "transaction_bytemap", + "transaction_bytemap_t", + "transaction_cache", + "transaction_completion_t", + "transaction_flags_t", + "transaction_id_t", + "transaction_interface", + "transaction_interface_t", + "transaction_t", + "translate_interface", + "translation_flags_t", + "translation_flush_interface", + "translation_t", + "tuple_int_string_t", + "uint", + "uint16", + "uint32", + "uint32_array_t", + "uint64", + "uint64_state_interface", + "uint8", + "unsigned_gcd", + "unsigned_multiply_rational", + "usb_device_interface", + "usb_device_request_t", + "usb_direction_t", + "usb_interface", + "usb_speed_t", + "usb_status_t", + "usb_transfer_completion_t", + "usb_transfer_t", + "usb_type_t", + "va_list", + "vectored_interrupt_interface", + "vectored_interrupt_source_interface", + "vga_text_info_interface", + "vga_text_info_interface_t", + "vga_text_update_interface", + "vga_text_update_interface_t", + "vga_update_interface", + "vga_update_interface_t", + "vhdx_close", + "vhdx_creat", + "vhdx_file", + "vhdx_file_error_message", + "vhdx_file_t", + "vhdx_get_info", + "vhdx_info_t", + "vhdx_muuid_t", + "vhdx_muuid_to_str", + "vhdx_open", + "vhdx_params", + "vhdx_params_t", + "vhdx_read", + "vhdx_virtual_disk_size", + "vhdx_write", + "virtual_breakpoint_flags_t", + "virtual_data_bp_handle", + "virtual_data_bp_handle_t", + "virtual_instr_bp_handle", + "virtual_instr_bp_handle_t", + "vmp_feature_t", + "vmp_info_t", + "vmp_interface", + "vmx_mode_switch_cb_t", + "vmx_mode_t", + "vnc_server_interface", + "vnc_server_interface_t", + "vnc_server_v2_interface", + "vnc_server_v2_interface_t", + "vtether_aton_r", + "vtether_ntoa_r", + "vtgetopt_long", + "vtgetopt_restart", + "vtinet_ntoa_r", + "vtinet_ntop", + "vtopt_arguments", + "vtoption", + "vtutils_set_assert_error_handler", + "vtutils_set_fatal_error_handler", + "vtutils_set_low_memory_handler", + "wait_handler", + "wait_handler_t", + "winsome_update_t", + "winsome_update_type_t", + "x86_access_type", + "x86_activity_t", + "x86_alignment_t", + "x86_cache_flush_interface", + "x86_cpuid_interface", + "x86_cpuid_query_interface", + "x86_cr_t", + "x86_cstate_interface", + "x86_cstate_notification_interface", + "x86_cstate_t", + "x86_detailed_exec_mode_t", + "x86_dr_t", + "x86_ept_interface", + "x86_ept_interface_t", + "x86_exception_interface", + "x86_exception_source_t", + "x86_exec_mode_t", + "x86_fpu_env_t", + "x86_fpu_reg_t", + "x86_interface", + "x86_intstate_t", + "x86_memory_access_interface", + "x86_memory_or_io_t", + "x86_memory_transaction", + "x86_memory_transaction_t", + "x86_memory_type_t", + "x86_mode_switch_cb_t", + "x86_monitor_info_t", + "x86_msr_access_type_t", + "x86_msr_getter_func_t", + "x86_msr_getter_ret_t", + "x86_msr_interface", + "x86_msr_ret_t", + "x86_msr_setter_func_t", + "x86_mwait_info_t", + "x86_pending_debug_exc_t", + "x86_pin_t", + "x86_pkg_cstate_interface", + "x86_processor_mode_t", + "x86_read_physical_ret_t", + "x86_reg_access_interface", + "x86_register_id_t", + "x86_seg_reg_t", + "x86_seg_t", + "x86_smm_interface", + "x86_smm_state_interface", + "x86_stream_enum_t", + "x86_sync_instruction_type_t", + "x86_system_seg_reg_t", + "x86_system_seg_t", + "x86_tlb_attrs_t", + "x86_tlb_attrs_v3_t", + "x86_tlb_entry_t", + "x86_tlb_entry_v3_t", + "x86_tlb_interface", + "x86_tlb_inv_t", + "x86_tlb_v2_interface", + "x86_tlb_v3_interface", + "x86_vmp_control_interface", + "x86_xcr_t", + "x86_xmode_info_t", + "xed_access_interface", + "xed_data_type_t", + "xmm_reg_t", + "xtensa_export_state_interface", + "xtensa_import_wire_interface", + "xtensa_input_queue_interface", + "xtensa_lookup_interface", + "xtensa_memory_transaction", + "xtensa_memory_transaction_t", + "xtensa_output_queue_interface", + "xtensa_tie_export_state_interface", + "xtensa_tie_import_wire_interface", + "xtensa_tie_input_queue_interface", + "xtensa_tie_lookup_interface", + "xtensa_tie_output_queue_interface", + "ymm_reg_t", +]; diff --git a/modules/tsffs/src/simics/simics-api-sys/src/bindings/mod.rs b/simics-rs/simics-api-sys/src/bindings/mod.rs similarity index 85% rename from modules/tsffs/src/simics/simics-api-sys/src/bindings/mod.rs rename to simics-rs/simics-api-sys/src/bindings/mod.rs index 0647dfb7..25a78d7e 100644 --- a/modules/tsffs/src/simics/simics-api-sys/src/bindings/mod.rs +++ b/simics-rs/simics-api-sys/src/bindings/mod.rs @@ -1,3 +1,6 @@ +// Copyright (C) 2024 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 + //! Raw bindings to the SIMICS API #![allow(non_upper_case_globals)] diff --git a/modules/tsffs/src/simics/simics-api-sys/src/lib.rs b/simics-rs/simics-api-sys/src/lib.rs similarity index 89% rename from modules/tsffs/src/simics/simics-api-sys/src/lib.rs rename to simics-rs/simics-api-sys/src/lib.rs index 881c0fea..ed576789 100644 --- a/modules/tsffs/src/simics/simics-api-sys/src/lib.rs +++ b/simics-rs/simics-api-sys/src/lib.rs @@ -1,4 +1,4 @@ -// Copyright (C) 2023 Intel Corporation +// Copyright (C) 2024 Intel Corporation // SPDX-License-Identifier: Apache-2.0 //! # SIMICS API SYS @@ -8,7 +8,9 @@ //! This crate provides raw bindings to the SIMICS api built directly from the header files of the //! SIMICS base package using `bindgen`. In general, you should prefer to use the `simics-api` //! crate over this one, as it provides higher level safe bindings to the SIMICS API. + #![deny(clippy::unwrap_used)] +#![deny(clippy::expect_used)] #![allow(rustdoc::broken_intra_doc_links, rustdoc::bare_urls)] mod bindings; diff --git a/simics-rs/simics-build-utils/Cargo.toml b/simics-rs/simics-build-utils/Cargo.toml new file mode 100644 index 00000000..bab3dac2 --- /dev/null +++ b/simics-rs/simics-build-utils/Cargo.toml @@ -0,0 +1,28 @@ +# Copyright (C) 2024 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + +[package] +name = "simics-build-utils" +version = "0.1.0" +authors = ["Rowan Hart "] +edition = "2021" +description = "Intel Simics Simulator build and linking utilities" +documentation = "" +readme = "../README.md" +homepage = "" +repository = "" +license = "Apache-2.0" +keywords = ["simics", "simulator", "intel", "x86", "risc", "modeling"] +categories = [ + "simulation", + "virtualization", + "hardware-support", + "api-bindings", + "emulators", +] + +[dependencies] +ispm-wrapper = { version = "0.1.0", path = "../ispm-wrapper" } +simics-api-sys = { version = "0.1.0", path = "../simics-api-sys" } +anyhow = "1.0.80" +versions = { version = "6.1.0", features = ["serde"] } diff --git a/simics-rs/simics-build-utils/src/lib.rs b/simics-rs/simics-build-utils/src/lib.rs new file mode 100644 index 00000000..3abc1523 --- /dev/null +++ b/simics-rs/simics-build-utils/src/lib.rs @@ -0,0 +1,411 @@ +// Copyright (C) 2024 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 + +use anyhow::{anyhow, ensure}; +use ispm_wrapper::ispm::{self, GlobalOptions}; +use std::{ + env::var, + fs::read_dir, + path::{Path, PathBuf}, +}; + +/// Configuration indicating that the experimental snapshots API is available (as of +/// 6.0.173) +pub const CFG_SIMICS_EXPERIMENTAL_API_SNAPSHOTS: &str = "simics_experimental_api_snapshots"; +/// Configuration indicating that the experimental snapshots API is available under the +/// new `VT_take_snapshot` API name instead of the original `VT_save_snapshot` API name +/// (as of 6.0.180)) +pub const CFG_SIMICS_EXPERIMENTAL_API_SNAPSHOTS_V2: &str = "simics_experimental_api_snapshots_v2"; +/// Configuration indicating that SIM_log_info is deprecated and should be replaced with +/// VT_log_info until an API update +pub const CFG_SIMICS_DEPRECATED_API_SIM_LOG: &str = "simics_deprecated_api_sim_log"; +/// Configuration indicating that `SIM_register_copyright` is deprecated (as of 7.0.0) +pub const CFG_SIMICS_DEPRECATED_API_SIM_REGISTER_COPYRIGHT: &str = + "simics_deprecated_api_sim_register_copyright"; +/// Configuration indicating that all rev-exec features are deprecated (as of 7.0.0) +pub const CFG_SIMICS_DEPRECATED_API_REV_EXEC: &str = "simics_deprecated_api_rev_exec"; +/// Configuration indicating that the snapshots API has been stabilized and is available under +/// the name `SIM_` instead of `VT_` (as of 7.0.0) +pub const CFG_SIMICS_STABLE_API_SNAPSHOTS: &str = "simics_stable_api_snapshots"; +/// Configuration indicating that the `cpu_variant_t` and `gui_mode_t` command-line options are +/// deprecated (as of 7.0.0) +pub const CFG_SIMICS_DEPRECATED_API_CPU_VARIANT_GUI_MODE: &str = + "simics_deprecated_api_cpu_variant_gui_mode"; + +/// Get the only subdirectory of a directory, if only one exists. If zero or more than one subdirectories +/// exist, returns an error +pub fn subdir

(dir: P) -> anyhow::Result +where + P: AsRef, +{ + let subdirs = read_dir(dir)? + .filter_map(|p| p.ok()) + .map(|p| p.path()) + .filter(|p| p.is_dir()) + .collect::>(); + ensure!( + subdirs.len() == 1, + "Expected exactly 1 sub-directory, found {}", + subdirs.len() + ); + + subdirs + .first() + .cloned() + .ok_or_else(|| anyhow!("No sub-directories found")) +} + +/// Emit configuration directives used in the build process to conditionally enable +/// features that aren't compatible with all supported SIMICS versions, based on the +/// SIMICS version of the low level bindings. This is not needed for all consumers of the +/// API, but is useful for consumers which need to remain compatible with a wide range of +/// SIMICS base versions. +pub fn emit_cfg_directives() -> anyhow::Result<()> { + // Set configurations to conditionally enable experimental features that aren't + // compatible with all supported SIMICS versions, based on the SIMICS version of the + // low level bindings. + + let simics_api_version = versions::Versioning::new(simics_api_sys::SIMICS_VERSION) + .ok_or_else(|| anyhow::anyhow!("Invalid version {}", simics_api_sys::SIMICS_VERSION))?; + + // Conditional configurations for API versions + + if ::from_str("<6.0.163")? + .matches(&simics_api_version) + { + // Bail out if we are targeting a version before 6.0.163. We don't test any earlier than + // this. + panic!("Target SIMICS API version is too old. The minimum version supported is 6.0.163."); + } + + if ::from_str(">=6.0.177")? + .matches(&simics_api_version) + { + // Deprecate (temporarily) the SIM_log APIs for versions over 6.0.177 (where the API + // was first deprecated) + // NOTE: This will be un-deprecated at an unspecified time in the future + println!("cargo:rustc-cfg={CFG_SIMICS_DEPRECATED_API_SIM_LOG}"); + } + + if ::from_str(">=6.0.173")? + .matches(&simics_api_version) + && ::from_str("<6.0.180")? + .matches(&simics_api_version) + { + // Enable the experimental snapshots api for versions over 6.0.173 (where the API first + // appears) + println!("cargo:rustc-cfg={CFG_SIMICS_EXPERIMENTAL_API_SNAPSHOTS}"); + } + + if ::from_str(">=6.0.180")? + .matches(&simics_api_version) + && ::from_str("<7.0.0")? + .matches(&simics_api_version) + { + // Enable the changed snapshot API (VT_save_snapshot has been renamed to + // VT_take_snapshot) as of 6.0.180 + println!("cargo:rustc-cfg={CFG_SIMICS_EXPERIMENTAL_API_SNAPSHOTS_V2}"); + } + + if ::from_str(">=7.0.0")? + .matches(&simics_api_version) + { + println!("cargo:rustc-cfg={CFG_SIMICS_DEPRECATED_API_SIM_REGISTER_COPYRIGHT}"); + println!("cargo:rustc-cfg={CFG_SIMICS_DEPRECATED_API_REV_EXEC}"); + println!("cargo:rustc-cfg={CFG_SIMICS_STABLE_API_SNAPSHOTS}"); + println!("cargo:rustc-cfg={CFG_SIMICS_DEPRECATED_API_CPU_VARIANT_GUI_MODE}"); + } + + Ok(()) +} + +pub fn emit_link_info() -> anyhow::Result<()> { + #[cfg(unix)] + const HOST_DIRNAME: &'static str = "linux64"; + + #[cfg(not(unix))] + const HOST_DIRNAME: &'static str = "win64"; + + let base_dir_path = if let Ok(simics_base) = var("SIMICS_BASE") { + PathBuf::from(simics_base) + } else { + println!("cargo:warning=No SIMICS_BASE environment variable found, using ispm to find installed packages and using latest base version"); + + let mut packages = ispm::packages::list(&GlobalOptions::default())?; + + println!( + "cargo:warning=Found {:?} installed packages", + packages.installed_packages + ); + + packages.sort(); + + let Some(installed) = packages.installed_packages.as_ref() else { + anyhow::bail!("No SIMICS_BASE variable set and did not get any installed packages"); + }; + let Some(base) = installed.iter().find(|p| p.package_number == 1000) else { + anyhow::bail!( + "No SIMICS_BASE variable set and did not find a package with package number 1000" + ); + }; + println!("cargo:warning=Using Simics base version {}", base.version); + base.paths + .first() + .ok_or_else(|| anyhow::anyhow!("No paths found for package with package number 1000"))? + .clone() + }; + + #[cfg(unix)] + { + // Link `libsimics-common.so`, `libvtutils.so`, and `libpythonX.XX.so.X.X` if they exist + let bin_dir = base_dir_path + .join(HOST_DIRNAME) + .join("bin") + .canonicalize()?; + let libsimics_common = bin_dir.join("libsimics-common.so").canonicalize()?; + + let libvtutils = bin_dir.join("libvtutils.so").canonicalize()?; + + let sys_lib_dir = base_dir_path + .join(HOST_DIRNAME) + .join("sys") + .join("lib") + .canonicalize()?; + + let libpython = sys_lib_dir.join( + read_dir(&sys_lib_dir)? + .filter_map(|p| p.ok()) + .filter(|p| p.path().is_file()) + .filter(|p| { + let path = p.path(); + + let Some(file_name) = path.file_name() else { + return false; + }; + + let Some(file_name) = file_name.to_str() else { + return false; + }; + + file_name.starts_with("libpython") + && file_name.contains(".so") + && file_name != "libpython3.so" + }) + .map(|p| p.path()) + .next() + .ok_or_else(|| { + anyhow::anyhow!("No libpythonX.XX.so.X.X found in {}", sys_lib_dir.display()) + })?, + ); + + println!( + "cargo:rustc-link-lib=dylib:+verbatim={}", + libsimics_common + .file_name() + .ok_or_else(|| anyhow::anyhow!( + "No file name found for {}", + libsimics_common.display() + ))? + .to_str() + .ok_or_else(|| anyhow::anyhow!("Could not convert path to string"))? + ); + println!( + "cargo:rustc-link-lib=dylib:+verbatim={}", + libvtutils + .file_name() + .ok_or_else(|| anyhow::anyhow!("No file name found for {}", libvtutils.display()))? + .to_str() + .ok_or_else(|| anyhow::anyhow!("Could not convert path to string"))? + ); + println!( + "cargo:rustc-link-lib=dylib:+verbatim={}", + libpython + .file_name() + .ok_or_else(|| anyhow::anyhow!("No file name found for {}", libpython.display()))? + .to_str() + .ok_or_else(|| anyhow::anyhow!("Could not convert path to string"))? + ); + println!( + "cargo:rustc-link-search=native={}", + bin_dir + .to_str() + .ok_or_else(|| anyhow::anyhow!("Could not convert path to string"))? + ); + println!( + "cargo:rustc-link-search=native={}", + sys_lib_dir + .to_str() + .ok_or_else(|| anyhow::anyhow!("Could not convert path to string"))? + ); + let ld_library_path = vec![ + bin_dir + .to_str() + .ok_or_else(|| anyhow::anyhow!("Could not convert path to string"))?, + sys_lib_dir + .to_str() + .ok_or_else(|| anyhow::anyhow!("Could not convert path to string"))?, + ] + .join(":"); + + println!("cargo:rustc-env=LD_LIBRARY_PATH={}", ld_library_path); + } + + #[cfg(windows)] + { + // Link `libsimics-common.so`, `libvtutils.so`, and `libpythonX.XX.so.X.X` if they exist + let bin_dir = base_dir_path + .join(HOST_DIRNAME) + .join("bin") + .canonicalize() + .map_err(|e| { + anyhow!( + "Could not find bin dir {:?}: {}", + base_dir_path.join(HOST_DIRNAME).join("bin"), + e + ) + })?; + + let libsimics_common = bin_dir + .join("libsimics-common.dll") + .canonicalize() + .map_err(|e| { + anyhow!( + "Could not find libsimics-common {:?}: {}", + bin_dir.join("libsimics-common.dll"), + e + ) + })?; + + let libvtutils = bin_dir.join("libvtutils.dll").canonicalize().map_err(|e| { + anyhow!( + "Could not find libvtutils {:?}: {}", + bin_dir.join("libvtutils.dll"), + e + ) + })?; + + let python_include_dir = subdir(base_dir_path.join(HOST_DIRNAME).join("include"))?; + // .ok_or_else(|| anyhow!("Did not get any subdirectory of {:?}", base_dir_path.join(HOST_DIRNAME).join("include")))?; + + let python_dir_name = python_include_dir + .components() + .last() + .ok_or_else(|| { + anyhow!( + "Did not get any last component of path {:?}", + python_include_dir + ) + })? + .as_os_str() + .to_str() + .ok_or_else(|| anyhow!("Could not convert python include dir name to string"))? + .to_string(); + + let sys_lib_dir = base_dir_path + .join(HOST_DIRNAME) + .join("lib") + .join(python_dir_name) + .canonicalize() + .map_err(|e| { + anyhow!( + "Could not find sys lib dir {:?}: {}", + base_dir_path.join(HOST_DIRNAME).join("sys").join("lib"), + e + ) + })?; + + let libpython = sys_lib_dir.join( + read_dir(&sys_lib_dir)? + .filter_map(|p| p.ok()) + .filter(|p| p.path().is_file()) + .filter(|p| { + let path = p.path(); + + let Some(file_name) = path.file_name() else { + return false; + }; + + let Some(file_name) = file_name.to_str() else { + return false; + }; + + file_name.starts_with("python") + && file_name.ends_with(".dll") + && file_name != "python3.dll" + }) + .map(|p| p.path()) + .next() + .ok_or_else(|| { + anyhow::anyhow!("No pythonX.XX.dll found in {}", sys_lib_dir.display()) + })?, + ); + + println!( + "cargo:rustc-link-lib=dylib:+verbatim={}", + libsimics_common + .file_name() + .ok_or_else(|| anyhow::anyhow!( + "No file name found for {}", + libsimics_common.display() + ))? + .to_str() + .ok_or_else(|| anyhow::anyhow!("Could not convert path to string"))? + ); + println!( + "cargo:rustc-link-lib=dylib:+verbatim={}", + libvtutils + .file_name() + .ok_or_else(|| anyhow::anyhow!("No file name found for {}", libvtutils.display()))? + .to_str() + .ok_or_else(|| anyhow::anyhow!("Could not convert path to string"))? + ); + println!( + "cargo:rustc-link-lib=dylib:+verbatim={}", + libpython + .file_name() + .ok_or_else(|| anyhow::anyhow!("No file name found for {}", libpython.display()))? + .to_str() + .ok_or_else(|| anyhow::anyhow!("Could not convert path to string"))? + ); + println!( + "cargo:rustc-link-search=native={}", + bin_dir + .to_str() + .ok_or_else(|| anyhow::anyhow!("Could not convert path to string"))? + ); + println!( + "cargo:rustc-link-search=native={}", + sys_lib_dir + .to_str() + .ok_or_else(|| anyhow::anyhow!("Could not convert path to string"))? + ); + let ld_library_path = vec![ + bin_dir + .to_str() + .ok_or_else(|| anyhow::anyhow!("Could not convert path to string"))?, + sys_lib_dir + .to_str() + .ok_or_else(|| anyhow::anyhow!("Could not convert path to string"))?, + ] + .join(":"); + } + + // NOTE: EVEN with all of the above, a binary built using `cargo build` will not + // be able to find libsimics-common.so. Instead, when we build a binary that + // transitively depends on this -sys crate, we compile it with `cargo rustc`, + // passing the `-rpath` link argument like so. Note `--disable-new-dtags`, + // otherwise `libsimics-common.so` cannot find `libpython3.9.so.1.0` because it + // will be missing the recursive rpath lookup. + + // SIMICS_BASE=/home/rhart/simics-public/simics-6.0.174 + // PYTHON3_INCLUDE=-I/home/rhart/simics-public/simics-6.0.174/linux64/include/python3.9 + // INCLUDE_PATHS=/home/rhart/simics-public/simics-6.0.174/src/include + // PYTHON3_LDFLAGS=/home/rhart/simics-public/simics-6.0.174/linux64/sys/lib/libpython3.so + // LDFLAGS="-L/home/rhart/simics-public/simics-6.0.174/linux64/bin -z noexecstack -z relro -z now" LIBS="-lsimics-common -lvtutils" + // cargo --features=auto,link --example simple-simics -- -C link-args="-Wl,--disable-new-dtags -Wl,-rpath,/home/rhart/simics-public/simics-6.0.174/linux64/bin;/home/rhart/simics-public/simics-6.0.174/linux64/sys/lib/" + // + // This command (the environment variables can be left out) can be + // auto-generated in the SIMICS makefile build system. + + Ok(()) +} diff --git a/simics-rs/simics-macro/Cargo.toml b/simics-rs/simics-macro/Cargo.toml new file mode 100644 index 00000000..1daacb4d --- /dev/null +++ b/simics-rs/simics-macro/Cargo.toml @@ -0,0 +1,37 @@ +# Copyright (C) 2024 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + +[package] +name = "simics-macro" +version = "0.1.0" +authors = ["Rowan Hart "] +edition = "2021" +description = "Proc macros for building Intel Simics Simulator modules" +documentation = "" +readme = "../README.md" +homepage = "" +repository = "" +license = "Apache-2.0" +keywords = ["simics", "simulator", "intel", "x86", "risc", "modeling"] +categories = [ + "simulation", + "virtualization", + "hardware-support", + "api-bindings", + "emulators", +] + +[lib] +proc-macro = true + +[dependencies] +simics-api-sys = { version = "0.1.0", path = "../simics-api-sys" } +simics-sign = { version = "0.1.0", path = "../simics-sign" } +ispm-wrapper = { version = "0.1.0", path = "../ispm-wrapper" } +quote = "1.0.35" +syn = { version = "2.0.50", features = ["full"] } +proc-macro2 = "1.0.78" +darling = "0.20.8" +indoc = "2.0.4" +command-ext = "0.1.2" +chrono = "0.4.34" diff --git a/simics-rs/simics-macro/src/attr_value/mod.rs b/simics-rs/simics-macro/src/attr_value/mod.rs new file mode 100644 index 00000000..5ac9a1fa --- /dev/null +++ b/simics-rs/simics-macro/src/attr_value/mod.rs @@ -0,0 +1,484 @@ +// Copyright (C) 2024 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 + +use darling::{ast::Data, util::Flag, Error, FromDeriveInput, FromField}; +use proc_macro::TokenStream; +use proc_macro2::TokenStream as TokenStream2; +use quote::{quote, ToTokens}; +use syn::{parse_macro_input, DeriveInput, Generics, Ident, Type}; + +#[derive(Debug, FromField)] +#[darling(attributes(attr_value))] +/// A field in a struct that can be converted into an `AttrValue` +struct IntoAttrValueField { + ident: Option, + #[allow(unused)] + ty: Type, + /// Whether this field should be skipped when converting this type into an + /// `AttrValue` + skip: Flag, + /// Whether this field should be fallibly converted using `try_into` instead + /// of `into`. This cannot be detected automatically by the proc-macro. + fallible: Flag, +} + +#[derive(Debug, FromDeriveInput)] +#[darling( + attributes(attr_value), + supports(struct_named), + // NOTE: https://doc.rust-lang.org/reference/attributes.html#built-in-attributes-index + forward_attrs( + cfg, + derive, + allow, + warn, + deny, + forbid, + deprecated, + must_use, + doc, + non_exhaustive + ) +)] +/// A structure that can be converted into an `AttrValue` list +struct IntoAttrValueListOpts { + ident: Ident, + generics: Generics, + data: Data<(), IntoAttrValueField>, +} + +impl ToTokens for IntoAttrValueListOpts { + fn to_tokens(&self, tokens: &mut TokenStream2) { + let ident = &self.ident; + let (impl_generics, ty_generics, where_clause) = self.generics.split_for_impl(); + + let Some(fields) = self.data.as_ref().take_struct() else { + tokens.extend(Error::custom("Only structs are supported").write_errors()); + return; + }; + + let value_initializers = fields + .iter() + .filter(|f| !f.skip.is_present()) + .filter_map(|f| { + f.ident.as_ref().map(|i| { + if f.fallible.is_present() { + quote!(let #i = AttrValue::try_from(value.#i)?;) + } else { + quote!(let #i = AttrValue::from(value.#i);) + } + }) + }) + .collect::>(); + + if fields.iter().any(|f| f.fallible.is_present()) { + let value_fields = fields + .iter() + .filter(|f| !f.skip.is_present()) + .map(|f| { + let ident = f.ident.as_ref().unwrap(); + quote!(#ident.into()) + }) + .collect::>(); + // If any conversion is fallible, we can only implement TryInto + tokens.extend(quote! { + impl #impl_generics TryFrom<#ident #ty_generics> for simics::AttrValue #where_clause { + type Error = simics::Error; + fn try_from(value: #ident #ty_generics) -> simics::Result { + #( #value_initializers )* + Ok(simics::AttrValueType::List( + [ + #( #value_fields ),* + ] + .iter() + .cloned() + .collect::>() + ).into()) + } + } + + impl #impl_generics TryFrom<&#ident #ty_generics> for simics::AttrValue #where_clause { + type Error = simics::Error; + fn try_from(value: &#ident #ty_generics) -> simics::Result { + value.clone().try_into() + } + } + }); + } else { + let value_fields = fields + .iter() + .filter(|f| !f.skip.is_present()) + .map(|f| { + let ident = f.ident.as_ref().unwrap(); + quote!(#ident.into()) + }) + .collect::>(); + // No conversions are fallible, so we can implement Into + tokens.extend(quote! { + impl #impl_generics From<#ident #ty_generics> for simics::AttrValue #where_clause { + fn from(value: #ident #ty_generics) -> Self { + #( #value_initializers )* + simics::AttrValueType::List( + [ + #( #value_fields ),* + ] + .iter() + .cloned() + .collect::>() + ).into() + } + } + + impl #impl_generics From<&#ident #ty_generics> for simics::AttrValue #where_clause { + fn from(value: &#ident #ty_generics) -> Self { + value.clone().into() + } + } + }); + } + } +} + +pub fn into_attr_value_list_impl(input: TokenStream) -> TokenStream { + let input = parse_macro_input!(input as DeriveInput); + + let args = match IntoAttrValueListOpts::from_derive_input(&input) { + Ok(opts) => opts, + Err(e) => return e.write_errors().into(), + }; + + quote!(#args).into() +} + +#[derive(Debug, FromDeriveInput)] +#[darling( + attributes(attr_value), + supports(struct_named), + // NOTE: https://doc.rust-lang.org/reference/attributes.html#built-in-attributes-index + forward_attrs( + cfg, + derive, + allow, + warn, + deny, + forbid, + deprecated, + must_use, + doc, + non_exhaustive + ) +)] +/// A structure that can be converted into an `AttrValue` dict +struct IntoAttrValueDictOpts { + ident: Ident, + generics: Generics, + data: Data<(), IntoAttrValueField>, +} + +impl ToTokens for IntoAttrValueDictOpts { + fn to_tokens(&self, tokens: &mut TokenStream2) { + let ident = &self.ident; + let (impl_generics, ty_generics, where_clause) = self.generics.split_for_impl(); + + let Some(fields) = self.data.as_ref().take_struct() else { + tokens.extend(Error::custom("Only structs are supported").write_errors()); + return; + }; + + let value_initializers= fields + .iter() + .filter(|f| !f.skip.is_present()) + .filter_map(|f| { + f.ident.as_ref().map(|i| { + let ident_name = i.to_string(); + + if f.fallible.is_present() { + quote!(let #i = (#ident_name.into(), simics::AttrValue::try_from(value.#i)?.into());) + } else { + quote!(let #i = (#ident_name.into(), simics::AttrValue::from(value.#i).into());) + } + }) + }) + .collect::>(); + + if fields.iter().any(|f| f.fallible.is_present()) { + let value_fields = fields + .iter() + .filter(|f| !f.skip.is_present()) + .map(|f| { + let ident = f.ident.as_ref().unwrap(); + quote!(#ident.into()) + }) + .collect::>(); + // If any conversion is fallible, we can only implement TryInto + tokens.extend(quote! { + impl #impl_generics TryFrom<#ident #ty_generics> for simics::AttrValue #where_clause { + type Error = simics::Error; + fn try_from(value: #ident #ty_generics) -> simics::Result { + #( #value_initializers )* + Ok(simics::AttrValueType::Dict( + std::collections::BTreeMap::from_iter([ + #(#value_fields),* + ]) + ).into()) + } + } + + impl #impl_generics TryFrom<&#ident #ty_generics> for simics::AttrValue #where_clause { + type Error = simics::Error; + fn try_from(value: &#ident #ty_generics) -> simics::Result { + value.clone().try_into() + } + } + }); + } else { + let value_fields = fields + .iter() + .filter(|f| !f.skip.is_present()) + .map(|f| { + let ident = f.ident.as_ref().unwrap(); + quote!(#ident.into()) + }) + .collect::>(); + // No conversions are fallible, so we can implement Into + tokens.extend(quote! { + impl #impl_generics From<#ident #ty_generics> for simics::AttrValue #where_clause { + fn from(value: #ident #ty_generics) -> Self { + #( #value_initializers )* + simics::AttrValueType::Dict( + std::collections::BTreeMap::from_iter([ + #(#value_fields),* + ]) + ).into() + } + } + + impl #impl_generics From<&#ident #ty_generics> for simics::AttrValue #where_clause { + fn from(value: &#ident #ty_generics) -> Self { + value.clone().into() + } + } + }); + } + } +} + +pub fn into_attr_value_dict_impl(input: TokenStream) -> TokenStream { + let input = parse_macro_input!(input as DeriveInput); + + let args = match IntoAttrValueDictOpts::from_derive_input(&input) { + Ok(opts) => opts, + Err(e) => return e.write_errors().into(), + }; + + quote!(#args).into() +} + +#[derive(Debug, FromField)] +#[darling(attributes(attr_value))] +/// A field in a struct that can be converted from an `AttrValue` +struct FromAttrValueField { + ident: Option, + #[allow(unused)] + ty: Type, + #[allow(unused)] + /// Skip this field when converting to an `AttrValue`. This flag is ignored when + /// converting from an `AttrValue`. + skip: Flag, + #[allow(unused)] + /// Whether this field should be fallibly converted + fallible: Flag, +} + +#[derive(Debug, FromDeriveInput)] +#[darling( + attributes(attr_value), + supports(struct_named), + // NOTE: https://doc.rust-lang.org/reference/attributes.html#built-in-attributes-index + forward_attrs( + cfg, + derive, + allow, + warn, + deny, + forbid, + deprecated, + must_use, + doc, + non_exhaustive + ) +)] +struct FromAttrValueListOpts { + ident: Ident, + generics: Generics, + data: Data<(), FromAttrValueField>, +} + +impl ToTokens for FromAttrValueListOpts { + fn to_tokens(&self, tokens: &mut TokenStream2) { + let ident = &self.ident; + let (impl_generics, ty_generics, where_clause) = self.generics.split_for_impl(); + + let Some(fields) = self.data.as_ref().take_struct() else { + tokens.extend(Error::custom("Only structs are supported").write_errors()); + return; + }; + + let value_fields = fields + .iter() + .enumerate() + .filter_map(|(index, f)| { + f.ident.clone().map(|ident| { + quote! { + #ident: value.get(#index) + .ok_or_else(|| simics::Error::AttrValueListIndexOutOfBounds { + index: #index, + length: value.len() + })? + .clone() + .try_into()? + } + }) + }) + .collect::>(); + + tokens.extend(quote! { + impl #impl_generics TryFrom for #ident #ty_generics #where_clause { + type Error = simics::Error; + + fn try_from(value: simics::AttrValue) -> simics::Result { + println!("{:?}", value); + let value: Vec = value.as_heterogeneous_list() + .ok_or_else(|| simics::Error::AttrValueType { + actual: value.kind(), + expected: simics::AttrKind::Sim_Val_List, + reason: "Expected a list of heterogeneous values".to_string(), + })?; + + Ok(Self { + #(#value_fields),* + }) + } + } + + impl #impl_generics TryFrom<&simics::AttrValue> for #ident #ty_generics #where_clause { + type Error = simics::Error; + + fn try_from(value: &simics::AttrValue) -> simics::Result { + value.clone().try_into() + } + } + }); + } +} + +pub fn from_attr_value_list_impl(input: TokenStream) -> TokenStream { + let input = parse_macro_input!(input as DeriveInput); + + let args = match FromAttrValueListOpts::from_derive_input(&input) { + Ok(opts) => opts, + Err(e) => return e.write_errors().into(), + }; + + quote!(#args).into() +} + +#[derive(Debug, FromDeriveInput)] +#[darling( + attributes(attr_value), + supports(struct_named), + // NOTE: https://doc.rust-lang.org/reference/attributes.html#built-in-attributes-index + forward_attrs( + cfg, + derive, + allow, + warn, + deny, + forbid, + deprecated, + must_use, + doc, + non_exhaustive + ) +)] +struct FromAttrValueDictOpts { + ident: Ident, + generics: Generics, + data: Data<(), FromAttrValueField>, +} + +impl ToTokens for FromAttrValueDictOpts { + fn to_tokens(&self, tokens: &mut TokenStream2) { + let ident = &self.ident; + let (impl_generics, ty_generics, where_clause) = self.generics.split_for_impl(); + let Some(fields) = self.data.as_ref().take_struct() else { + panic!("Fields must be struct fields"); + }; + + let value_fields = fields + .iter() + .filter_map(|f| { + f.ident.clone().map(|i| { + let ident_name = i.to_string(); + quote! { + #i: value.get(&#ident_name.into()) + .ok_or_else(|| simics::Error::AttrValueDictMissingKey { key: #ident_name.to_string()})? + .clone() + .try_into()? + + } + }) + }) + .collect::>(); + + tokens.extend(quote! { + impl #impl_generics TryFrom for #ident #ty_generics #where_clause { + type Error = simics::Error; + + fn try_from(value: simics::AttrValueType) -> simics::Result { + let simics::AttrValueType::Dict(value) = value else { + return Err(simics::Error::FromAttrValueTypeConversionError { + ty: std::any::type_name::<#ident #ty_generics>().to_string(), + reason: "Expected a dictionary".to_string(), + }); + }; + + Ok(Self { + #(#value_fields),* + }) + } + } + + impl #impl_generics TryFrom for #ident #ty_generics #where_clause { + type Error = simics::Error; + + fn try_from(value: simics::AttrValue) -> simics::Result { + // NOTE: We cannot use AttrValueType here, because we are most likely + // converting from a non-homogeneous list. + let value: std::collections::BTreeMap = value + .as_heterogeneous_dict()? + .ok_or_else(|| simics::Error::AttrValueType { + actual: value.kind(), + expected: simics::AttrKind::Sim_Val_Dict, + reason: "Expected a dictionary of heterogeneous values".to_string(), + })?; + + Ok(Self { + #(#value_fields),* + }) + } + } + }); + } +} + +pub fn from_attr_value_dict_impl(input: TokenStream) -> TokenStream { + let input = parse_macro_input!(input as DeriveInput); + + let args = match FromAttrValueDictOpts::from_derive_input(&input) { + Ok(opts) => opts, + Err(e) => return e.write_errors().into(), + }; + + quote!(#args).into() +} diff --git a/simics-rs/simics-macro/src/class/mod.rs b/simics-rs/simics-macro/src/class/mod.rs new file mode 100644 index 00000000..c10aa74f --- /dev/null +++ b/simics-rs/simics-macro/src/class/mod.rs @@ -0,0 +1,844 @@ +// Copyright (C) 2024 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 + +use darling::{ + ast::{Data, NestedMeta}, + util::Flag, + Error, FromDeriveInput, FromField, FromMeta, Result, +}; +use proc_macro::TokenStream; +use proc_macro2::{Literal, TokenStream as TokenStream2}; +use quote::{format_ident, quote, ToTokens}; +use syn::{ + parse, parse_macro_input, parse_quote, Attribute, DeriveInput, Expr, Fields, FieldsNamed, + GenericArgument, Generics, Ident, ItemStruct, Meta, PathArguments, Type, +}; + +#[derive(Debug, Clone, FromMeta)] +#[darling(and_then = "Self::validate")] +struct ClassAttribute { + required: Flag, + optional: Flag, + pseudo: Flag, + #[darling(default)] + default: Option, +} + +impl ClassAttribute { + fn validate(self) -> Result { + // Check that only one of required, optional, pseudo is set + if self.required.is_present() as u8 + + self.optional.is_present() as u8 + + self.pseudo.is_present() as u8 + > 1 + || self.required.is_present() as u8 + + self.optional.is_present() as u8 + + self.pseudo.is_present() as u8 + == 0 + { + return Err(Error::custom( + "Exactly one of `required`, `optional`, `pseudo` must be set", + )); + } + + // Make sure default is not set if required is set + if self.required.is_present() && self.default.is_some() { + return Err(Error::custom( + "`default` cannot be set if `required` is set", + )); + } + + Ok(self) + } + + fn attr_type(&self) -> TokenStream2 { + if self.required.is_present() { + quote!(simics::AttrAttr::Sim_Attr_Required) + } else if self.optional.is_present() { + quote!(simics::AttrAttr::Sim_Attr_Optional) + } else if self.pseudo.is_present() { + quote!(simics::AttrAttr::Sim_Attr_Pseudo) + } else { + unreachable!("Attribute is known to have exactly one type") + } + } +} + +#[derive(Debug, FromField)] +#[darling(attributes(class), forward_attrs(doc))] +struct ClassField { + attrs: Vec, + #[allow(unused)] + ident: Option, + #[allow(unused)] + ty: Type, + #[darling(default)] + attribute: Option, +} + +#[derive(Debug, FromDeriveInput)] +#[darling( + attributes(class), + supports(struct_named), + // NOTE: https://doc.rust-lang.org/reference/attributes.html#built-in-attributes-index + forward_attrs( + cfg, + derive, + allow, + warn, + deny, + forbid, + deprecated, + must_use, + doc, + non_exhaustive, + ) +)] +struct ClassDeriveOpts { + ident: Ident, + generics: Generics, + #[allow(unused)] + data: Data<(), ClassField>, + name: Option, + #[darling(default)] + description: Option, + #[darling(default)] + short_description: Option, + #[darling(default)] + kind: Option, + skip_alloc: Flag, + skip_init: Flag, + skip_finalize: Flag, + skip_objects_finalize: Flag, + skip_deinit: Flag, + skip_dealloc: Flag, + skip_create: Flag, + attr_value: Flag, +} + +impl ClassDeriveOpts { + fn impl_alloc(&self) -> TokenStream2 { + let ident = &self.ident; + let (impl_generics, ty_generics, where_clause) = self.generics.split_for_impl(); + quote!(impl #impl_generics simics::ClassAlloc for #ident #ty_generics #where_clause {}) + } + + fn impl_attribute_defaults(&self) -> Vec { + if let Some(data) = self.data.as_ref().take_struct() { + data.fields + .iter() + .filter_map(|f| { + f.attribute + .as_ref() + .map(|a| { + let Some(field_name) = f.ident.as_ref().map(|n| n.to_string()) else { + return None; + }; + + if let Some(default) = a.default.as_ref() { + Some(quote! { + simics::set_attribute_default( + instance, + #field_name, + #default.try_into()?, + )?; + }) + } else if a.optional.is_present() { + // We handle two kinds of f.ty: + // * `i64`, `u64`, `f64`, `String`, `bool` - simple types are + // directly used + // * `BTreeSet` - complex types are transformed into e.g. + // `BTreeSet::::default()` + let field_ty = &f.ty; + + let new_field_ty = if let Type::Path(mut p) = f.ty.clone() { + if let Some(segment) = p.path.segments.last() { + if segment.arguments.is_empty() { + quote!(#field_ty) + } else { + let args = p + .path + .segments + .last() + .expect("Known to exist here") + .arguments + .clone(); + p.path + .segments + .last_mut() + .expect("Known to exist here") + .arguments = PathArguments::None; + let ty = Type::Path(p); + quote!(#ty::#args) + } + } else { + quote!(#field_ty) + } + } else { + quote!(#field_ty) + }; + + Some(quote! { + simics::set_attribute_default( + instance, + #field_name, + #new_field_ty::default().try_into()?, + )?; + }) + } else { + None + } + }) + .flatten() + }) + .collect() + } else { + vec![] + } + } + + fn impl_init(&self) -> TokenStream2 { + let ident = &self.ident; + let (impl_generics, ty_generics, where_clause) = self.generics.split_for_impl(); + let maybe_defaults = self.impl_attribute_defaults(); + quote! { + impl #impl_generics simics::ClassInit for #ident #ty_generics #where_clause { + unsafe fn init(instance: *mut simics::ConfObject) -> simics::Result<*mut simics::ConfObject> { + let ptr: *mut #ident #ty_generics = instance as *mut #ident #ty_generics; + unsafe { std::ptr::addr_of_mut!(*ptr).write(Self { + conf_object: *instance, + ..Default::default() + }) }; + #(#maybe_defaults)* + Ok(ptr as *mut simics::ConfObject) + } + } + } + } + + fn impl_finalize(&self) -> TokenStream2 { + let ident = &self.ident; + let (impl_generics, ty_generics, where_clause) = self.generics.split_for_impl(); + quote!(impl #impl_generics simics::ClassFinalize for #ident #ty_generics #where_clause {}) + } + + fn impl_objects_finalize(&self) -> TokenStream2 { + let ident = &self.ident; + let (impl_generics, ty_generics, where_clause) = self.generics.split_for_impl(); + quote!(impl #impl_generics simics::ClassObjectsFinalize for #ident #ty_generics #where_clause {}) + } + + fn impl_deinit(&self) -> TokenStream2 { + let ident = &self.ident; + let (impl_generics, ty_generics, where_clause) = self.generics.split_for_impl(); + quote!(impl #impl_generics simics::ClassDeinit for #ident #ty_generics #where_clause {}) + } + + fn impl_dealloc(&self) -> TokenStream2 { + let ident = &self.ident; + let (impl_generics, ty_generics, where_clause) = self.generics.split_for_impl(); + quote!(impl #impl_generics simics::ClassDealloc for #ident #ty_generics #where_clause {}) + } + + fn impl_name(&self) -> TokenStream2 { + let name = &self.ident; + let class_name = self.name.as_ref().cloned().unwrap_or(name.to_string()); + let (impl_generics, ty_generics, where_clause) = self.generics.split_for_impl(); + quote! { + impl #impl_generics #name #ty_generics #where_clause { + /// The name of the class + pub const NAME: &'static str = #class_name; + } + + } + } + + /// The equivalent python type for simple rust types (integers, strings, etc.) including + /// most simple type aliases defined in the Simics API + fn attribute_to_typestring_simple(s: &str) -> TokenStream2 { + match s { + "u8" | "i8" | "u16" | "i16" | "u32" | "i32" | "u64" | "i64" | "usize" | "isize" + | "BreakpointId" | "PhysicalAddress" | "LogicalAddress" | "GenericAddress" + | "HapHandle" => { + quote!(simics::TypeStringType::Integer) + } + "f32" | "f64" => { + quote!(simics::TypeStringType::Float) + } + "String" | "PathBuf" => { + quote!(simics::TypeStringType::String) + } + "bool" => { + quote!(simics::TypeStringType::Boolean) + } + // NOTE: We use `Any` for all other types, including complex types. This can cause + // issues, because there is no type checking, but it ensures that we don't miss any + // types. + _ => quote!(simics::TypeStringType::Any), + } + } + + fn ty_to_typestring(ty: &Type) -> (TokenStream2, Option) { + match ty { + Type::Path(p) => { + let Some(segment) = &p.path.segments.last() else { + return ( + Error::custom(format!( + "Unsupported type for attribute (final path segment missing): {}", + ty.to_token_stream() + )) + .write_errors(), + None, + ); + }; + + if segment.arguments.is_empty() { + ( + Self::attribute_to_typestring_simple(segment.ident.to_string().as_str()), + None, + ) + } else { + match segment.ident.to_string().as_str() { + "Vec" | "BTreeSet" => { + let inner = match &segment.arguments { + PathArguments::AngleBracketed(args) => { + let Some(inner) = args.args.first() else { + return ( + Error::custom(format!( + "Unsupported type for attribute (missing inner argument): {}", + ty.to_token_stream() + )) + .write_errors(), + None, + ); + }; + match inner { + GenericArgument::Type(ty) => { + Self::attribute_to_typestring_simple( + ty.to_token_stream().to_string().as_str(), + ) + } + _ => Error::custom(format!( + "Unsupported type for attribute (invalid inner type): {}", + ty.to_token_stream() + )) + .write_errors(), + } + } + _ => Error::custom(format!( + "Unsupported type for attribute (unsupported inner segment argument type): {}", + ty.to_token_stream() + )) + .write_errors(), + }; + ( + quote!(simics::TypeStringType::List( + vec![simics::TypeStringListType::ZeroOrMore(Box::new(#inner))] + )), + Some(quote!(simics::TypeStringType::Integer)), + ) + } + "HashMap" | "BTreeMap" => { + let key_inner = match &segment.arguments { + PathArguments::AngleBracketed(args) => { + let Some(inner) = args.args.first() else { + return ( + Error::custom(format!( + "Unsupported type for attribute (missing inner angle bracketed arg): {}", + ty.to_token_stream() + )) + .write_errors(), + None, + ); + }; + match inner { + GenericArgument::Type(ty) => { + Self::attribute_to_typestring_simple( + ty.to_token_stream().to_string().as_str(), + ) + } + _ => Error::custom(format!( + "Unsupported type for attribute (invalid inner type): {}", + ty.to_token_stream() + )) + .write_errors(), + } + } + _ => Error::custom(format!( + "Unsupported type for attribute (unsupported inner segment argument type): {}", + ty.to_token_stream() + )) + .write_errors(), + }; + + (quote!(simics::TypeStringType::Dictionary), Some(key_inner)) + } + "Option" => { + let inner = match &segment.arguments { + PathArguments::AngleBracketed(args) => { + let Some(inner) = args.args.first() else { + return ( + Error::custom(format!( + "Unsupported type for attribute: {}", + ty.to_token_stream() + )) + .write_errors(), + None, + ); + }; + match inner { + GenericArgument::Type(ty) => { + Self::attribute_to_typestring_simple( + ty.to_token_stream().to_string().as_str(), + ) + } + _ => Error::custom(format!( + "Unsupported type for attribute: {}", + ty.to_token_stream() + )) + .write_errors(), + } + } + _ => Error::custom(format!( + "Unsupported type for attribute: {}", + ty.to_token_stream() + )) + .write_errors(), + }; + + ( + quote!(simics::TypeStringType::Or(Box::new(#inner), Box::new(simics::TypeStringType::Nil))), + None, + ) + } + _ => (quote!(simics::TypeStringType::Any), None), + } + } + } + _ => ( + Error::custom(format!( + "Unsupported type for attribute (type is not a path): {}", + ty.to_token_stream() + )) + .write_errors(), + None, + ), + } + } + + fn impl_attributes(&self) -> Vec { + let struct_ident = &self.ident; + let (_impl_generics, ty_generics, _where_clause) = self.generics.split_for_impl(); + if let Some(data) = self.data.as_ref().take_struct() { + data.fields.iter().filter_map(|f| { + f.attribute.as_ref().map(|a| { + if let Some(ref ident) = f.ident.as_ref() { + let ty = &f.ty; + // Check if type is an integer + let (tystr, indextystr) = Self::ty_to_typestring(ty); + + let indextystr = if let Some(indextystr) = indextystr { + quote!(Some(#indextystr)) + } else { + quote!(None) + }; + + let ident_string = ident.to_string(); + let mut doc_attrs = f.attrs.iter().filter(|a| a.path().is_ident("doc")).filter_map(|a| match &a.meta { + Meta::NameValue(m) => Some(m.value.to_token_stream().to_string().trim().to_string()), + _ => None + }).collect::>(); + + if doc_attrs.is_empty() { + doc_attrs.push(ident_string.clone()); + } + + let doc_attrs_string = doc_attrs.join(" "); + + let attr_type = a.attr_type(); + + Some(quote!{ + unsafe { + simics::register_typed_attribute( + cls, + #ident_string, + Some(|o: *mut simics::ConfObject, i: simics::AttrValue| -> simics::Result { + let slf = unsafe { <#struct_ident #ty_generics as simics::FromConfObject>::from_conf_object(o) }; + let res = slf.#ident.clone().try_into()?; + Ok(res) + }), + Some(|o: *mut simics::ConfObject, v: simics::AttrValue, i: simics::AttrValue| -> simics::Result { + let slf = unsafe { <#struct_ident #ty_generics as simics::FromConfObject>::from_conf_object_mut(o) }; + let v: #ty = match v.try_into() { + Ok(v) => v, + Err(e) => { + simics::error!(o, "Failed to convert attribute value {v:?} to type: {}", e); + return Ok(simics::SetErr::Sim_Set_Illegal_Type) + }, + }; + + slf.#ident = v; + + Ok(simics::SetErr::Sim_Set_Ok) + }), + #attr_type, + Some(#tystr), + #indextystr, + #doc_attrs_string + )?; + }; + }) + } else { + None + } + }).flatten() + }).collect() + } else { + vec![] + } + } + + fn impl_create(&self) -> TokenStream2 { + let name = &self.ident; + let alloc_fn_name = format_ident!("{}_alloc", &name); + let init_fn_name = format_ident!("{}_init", &name); + let finalize_fn_name = format_ident!("{}_finalize", &name); + let objects_finalized_fn_name = format_ident!("{}_objects_finalized", &name); + let deinit_fn_name = format_ident!("{}_deinit", &name); + let dealloc_fn_name = format_ident!("{}_dealloc", &name); + let class_name = self.name.as_ref().cloned().unwrap_or(name.to_string()); + let description = self + .description + .as_ref() + .cloned() + .unwrap_or(name.to_string()); + let short_description = self + .short_description + .as_ref() + .cloned() + .unwrap_or(name.to_string()); + let (impl_generics, ty_generics, where_clause) = self.generics.split_for_impl(); + + let kind = self + .kind + .as_ref() + .map(|k| quote!(#k)) + .unwrap_or(quote!(simics::ClassKind::Sim_Class_Kind_Vanilla)); + + let description = format!("c\"{}\"", description) + .parse::() + .unwrap_or_else(|_| unreachable!("Failed to parse C string literal")); + + let short_description = format!("c\"{}\"", short_description) + .parse::() + .unwrap_or_else(|_| unreachable!("Failed to parse C string literal")); + + let attributes_impl = self.impl_attributes(); + + quote! { + + impl #impl_generics #name #ty_generics #where_clause { + const CLASS: simics::ClassInfo = simics::ClassInfo { + alloc: Some(#alloc_fn_name), + init: Some(#init_fn_name), + finalize: Some(#finalize_fn_name), + objects_finalized: Some(#objects_finalized_fn_name), + deinit: Some(#deinit_fn_name), + dealloc: Some(#dealloc_fn_name), + description: #description.as_ptr(), + short_desc: #short_description.as_ptr(), + kind: #kind, + }; + } + + impl #impl_generics simics::ClassCreate for #name #ty_generics #where_clause { + fn create() -> simics::Result<*mut simics::ConfClass> { + let mut cls = simics::create_class(#class_name, #name::CLASS)?; + #( #attributes_impl )* + + Ok(cls) + } + } + } + } + + fn impl_new(&self) -> TokenStream2 { + let ident = &self.ident; + + let (impl_generics, ty_generics, where_clause) = self.generics.split_for_impl(); + + quote! { + impl #impl_generics #ident #ty_generics #where_clause { + #[allow(clippy::too_many_arguments)] + #[allow(clippy::not_unsafe_ptr_arg_deref)] + fn new( + obj: *mut simics::ConfObject, + value: #ident #ty_generics + ) -> *mut simics::ConfObject { + let ptr: *mut #ident #ty_generics = obj as *mut #ident #ty_generics; + unsafe { std::ptr::addr_of_mut!(*ptr).write(value) }; + ptr as *mut simics::ConfObject + } + + } + } + } + + fn impl_ffi(&self) -> TokenStream2 { + let name = &self.ident; + let alloc_fn_name = format_ident!("{}_alloc", &name); + let init_fn_name = format_ident!("{}_init", &name); + let finalize_fn_name = format_ident!("{}_finalize", &name); + let objects_finalized_fn_name = format_ident!("{}_objects_finalized", &name); + let deinit_fn_name = format_ident!("{}_deinit", &name); + let dealloc_fn_name = format_ident!("{}_dealloc", &name); + let name_string = self.ident.to_string(); + + quote! { + #[no_mangle] + #[allow(non_snake_case)] + /// FFI wrapper + /// + /// # Safety + /// + /// This function is unsafe because it may dereference a raw pointer. It is up to the + /// implementation of the class's `alloc` method to ensure that the pointer is valid. + pub unsafe extern "C" fn #alloc_fn_name(cls: *mut simics::ConfClass) -> *mut simics::ConfObject { + let cls: *mut simics::ConfClass = cls.into(); + let obj: *mut simics::ConfObject = unsafe { <#name as simics::ClassAlloc>::alloc::<#name>(cls) } + .unwrap_or_else(|e| panic!("{}::alloc failed: {}", #name_string, e)) + .into(); + obj + } + + #[no_mangle] + #[allow(non_snake_case)] + /// FFI wrapper + /// + /// # Safety + /// + /// This function is unsafe because it may dereference a raw pointer. It is up to the + /// implementation of the class's `init` method to ensure that the pointer is valid. + pub extern "C" fn #init_fn_name(obj: *mut simics::ConfObject) -> *mut std::ffi::c_void { + let ptr: *mut simics::ConfObject = unsafe { <#name as simics::ClassInit>::init(obj.into()) } + .unwrap_or_else(|e| panic!("{}::init failed: {}", #name_string, e)) + .into(); + ptr as *mut std::ffi::c_void + } + + #[no_mangle] + #[allow(non_snake_case)] + /// FFI wrapper + /// + /// # Safety + /// + /// This function is unsafe because it may dereference a raw pointer. It is up to the + /// implementation of the class's `finalize` method to ensure that the pointer is valid. + pub extern "C" fn #finalize_fn_name(obj: *mut simics::ConfObject) { + unsafe { <#name as simics::ClassFinalize>::finalize(obj.into()) } + .unwrap_or_else(|e| panic!("{}::finalize failed: {}", #name_string, e)); + } + + #[no_mangle] + #[allow(non_snake_case)] + /// FFI wrapper + /// + /// # Safety + /// + /// This function is unsafe because it may dereference a raw pointer. It is up to the + /// implementation of the class's `objects_finalized` method to ensure that the pointer is valid. + pub extern "C" fn #objects_finalized_fn_name(obj: *mut simics::ConfObject) { + unsafe { <#name as simics::ClassObjectsFinalize>::objects_finalized(obj.into()) } + .unwrap_or_else(|e| panic!("{}::objects_finalized failed: {}", #name_string, e)); + } + + #[no_mangle] + #[allow(non_snake_case)] + /// FFI wrapper + /// + /// # Safety + /// + /// This function is unsafe because it may dereference a raw pointer. It is up to the + /// implementation of the class's `deinit` method to ensure that the pointer is valid. + pub extern "C" fn #deinit_fn_name(obj: *mut simics::ConfObject) { + unsafe { <#name as simics::ClassDeinit>::deinit(obj.into()) } + .unwrap_or_else(|e| panic!("{}::deinit failed: {}", #name_string, e)); + } + + #[no_mangle] + #[allow(non_snake_case)] + /// FFI wrapper + /// + /// # Safety + /// + /// This function is unsafe because it may dereference a raw pointer. It is up to the + /// implementation of the class's `dealloc` method to ensure that the pointer is valid. + pub extern "C" fn #dealloc_fn_name(obj: *mut simics::ConfObject) { + unsafe { <#name as simics::ClassDealloc>::dealloc(obj.into()) } + .unwrap_or_else(|e| panic!("{}::dealloc failed: {}", #name_string, e)); + } + } + } +} + +impl ToTokens for ClassDeriveOpts { + fn to_tokens(&self, tokens: &mut TokenStream2) { + if !self.skip_alloc.is_present() { + let alloc_impl = self.impl_alloc(); + tokens.extend(quote! { + #alloc_impl + }); + } + + if !self.skip_init.is_present() { + let init_impl = self.impl_init(); + tokens.extend(quote! { + #init_impl + }); + } + + if !self.skip_finalize.is_present() { + let finalize_impl = self.impl_finalize(); + tokens.extend(quote! { + #finalize_impl + }); + } + + if !self.skip_objects_finalize.is_present() { + let objects_finalize_impl = self.impl_objects_finalize(); + tokens.extend(quote! { + #objects_finalize_impl + }); + } + + if !self.skip_deinit.is_present() { + let deinit_impl = self.impl_deinit(); + tokens.extend(quote! { + #deinit_impl + }); + } + + if !self.skip_dealloc.is_present() { + let dealloc_impl = self.impl_dealloc(); + tokens.extend(quote! { + #dealloc_impl + }); + } + + if !self.skip_create.is_present() { + let create_impl = self.impl_create(); + tokens.extend(quote! { + #create_impl + }); + } + + let name_impl = self.impl_name(); + let new_impl = self.impl_new(); + let ffi_impl = self.impl_ffi(); + let ident = &self.ident; + let (impl_generics, ty_generics, where_clause) = self.generics.split_for_impl(); + + tokens.extend(quote! { + #name_impl + #new_impl + #ffi_impl + impl #impl_generics simics::Class for #ident #ty_generics #where_clause {} + }); + } +} + +pub fn class_derive_impl(input: TokenStream) -> TokenStream { + let input = parse_macro_input!(input as DeriveInput); + + let args = match ClassDeriveOpts::from_derive_input(&input) { + Ok(args) => args, + Err(e) => return e.write_errors().into(), + }; + + quote!(#args).into() +} + +pub fn class_impl(args: TokenStream, input: TokenStream) -> TokenStream { + if parse::(input.clone()).is_ok() { + return quote!().into(); + } + + let args = match NestedMeta::parse_meta_list(args.into()) { + Ok(a) => a, + Err(e) => { + return Error::custom(format!("Error parsing class arguments as meta list: {e}")) + .write_errors() + .into(); + } + }; + + let derive_input: TokenStream = if args.is_empty() { + let input: TokenStream2 = input.clone().into(); + quote!(#[class] #input).into() + } else { + let args = args.clone(); + let input: TokenStream2 = input.clone().into(); + let class_attr = quote!(#[class(#(#args),*)]); + quote!(#class_attr #input).into() + }; + + let derive_input = parse_macro_input!(derive_input as DeriveInput); + + let derive_args = match ClassDeriveOpts::from_derive_input(&derive_input) { + Ok(args) => args, + Err(e) => return e.write_errors().into(), + }; + + let mut input = parse_macro_input!(input as ItemStruct); + + if let Fields::Named(ref mut fields) = input.fields { + if fields + .named + .first() + .is_some_and(|f| f.ty != parse_quote!(simics::ConfObject)) + { + if derive_args.attr_value.is_present() { + fields.named.insert( + 0, + parse_quote! { + #[attr_value(skip)] + conf_object: simics::ConfObject + }, + ); + } else { + fields.named.insert( + 0, + parse_quote! { + conf_object: simics::ConfObject + }, + ); + } + } + }; + + let derive: TokenStream2 = if args.is_empty() { + class_derive_impl(quote!(#[class] #input).into()).into() + } else { + class_derive_impl(quote!(#[class(#(#args),*)] #input).into()).into() + }; + + if let Fields::Named(ref mut fields) = input.fields { + // Remove `class` attributes from all fields + fields.named.iter_mut().for_each(|f| { + f.attrs.retain(|a| !a.path().is_ident("class")); + }); + } + + // println!("{}", derive); + + let input: TokenStream2 = quote!(#input); + + // println!("{}", input); + + quote!( + #derive + #[repr(C)] + #input + ) + .into() +} diff --git a/simics-rs/simics-macro/src/conf_object/mod.rs b/simics-rs/simics-macro/src/conf_object/mod.rs new file mode 100644 index 00000000..eb7be169 --- /dev/null +++ b/simics-rs/simics-macro/src/conf_object/mod.rs @@ -0,0 +1,124 @@ +// Copyright (C) 2024 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 + +use darling::{util::Flag, FromDeriveInput}; +use proc_macro::TokenStream; +use proc_macro2::TokenStream as TokenStream2; +use quote::{quote, ToTokens}; +use syn::{parse_macro_input, parse_quote, DeriveInput, Generics, Ident}; + +#[derive(Debug, FromDeriveInput)] +#[darling(attributes(conf_object), supports(struct_named))] +struct AsConfObjectOpts { + ident: Ident, + generics: Generics, +} + +impl ToTokens for AsConfObjectOpts { + fn to_tokens(&self, tokens: &mut TokenStream2) { + let ident = &self.ident; + let (impl_generics, ty_generics, where_clause) = self.generics.split_for_impl(); + + tokens.extend(quote! { + impl #impl_generics simics::AsConfObject for #ident #ty_generics #where_clause {} + }) + } +} + +/// Derive macro for the [`Class`] trait. +pub fn as_conf_object_impl(input: TokenStream) -> TokenStream { + let input = parse_macro_input!(input as DeriveInput); + let args = match AsConfObjectOpts::from_derive_input(&input) { + Ok(opts) => opts, + Err(e) => return e.write_errors().into(), + }; + + quote!(#args).into() +} + +#[derive(Debug, FromDeriveInput)] +#[darling(attributes(conf_object), supports(struct_named))] +struct FromConfObjectOpts { + ident: Ident, + generics: Generics, + /// Whether to skip also implementing `From<*_ ConfObject>` for this type + skip_from: Flag, +} + +impl ToTokens for FromConfObjectOpts { + fn to_tokens(&self, tokens: &mut TokenStream2) { + let ident = &self.ident; + let (impl_generics, ty_generics, where_clause) = self.generics.split_for_impl(); + + tokens.extend(quote! { + impl #impl_generics simics::FromConfObject for #ident #ty_generics #where_clause {} + }); + + if !self.skip_from.is_present() { + // Add the 'a lifetime to impl_generics list + let mut generics = self.generics.params.iter().cloned().collect::>(); + + generics.insert(0, parse_quote!('x)); + + let generics = Generics { + params: parse_quote!(#(#generics),*), + where_clause: self.generics.where_clause.clone(), + ..Default::default() + }; + + let (impl_generics, _ty_generics, _where_clause) = generics.split_for_impl(); + + tokens.extend(quote! { + impl #impl_generics From<*const simics::ConfObject> for &'x #ident #ty_generics #where_clause { + #[allow(clippy::not_unsafe_ptr_arg_deref)] + /// Convert a raw `ConfObject` pointer to a reference to this object + /// + /// # Safety + /// + /// This function dereferences a raw pointer. It must be called with a valid pointer which + /// has a sufficient lifetime. + fn from(obj: *const simics::ConfObject) -> &'x #ident #ty_generics #where_clause { + unsafe { <#ident as simics::FromConfObject>::from_conf_object(obj) } + } + } + + impl #impl_generics From<*mut simics::ConfObject> for &'x #ident #ty_generics #where_clause { + #[allow(clippy::not_unsafe_ptr_arg_deref)] + /// Convert a raw `ConfObject` pointer to a mutable reference to this object + /// + /// # Safety + /// + /// This function dereferences a raw pointer. It must be called with a valid pointer which + /// has a sufficient lifetime. + fn from(obj: *mut simics::ConfObject) -> &'x #ident #ty_generics #where_clause { + unsafe { <#ident as simics::FromConfObject>::from_conf_object(obj) } + } + } + + impl #impl_generics From<*mut simics::ConfObject> for &'x mut #ident #ty_generics #where_clause { + #[allow(clippy::not_unsafe_ptr_arg_deref)] + /// Convert a raw `ConfObject` pointer to a mutable reference to this object + /// + /// # Safety + /// + /// This function dereferences a raw pointer. It must be called with a valid pointer which + /// has a sufficient lifetime. + fn from(obj: *mut simics::ConfObject) -> &'x mut #ident #ty_generics #where_clause { + unsafe { <#ident as simics::FromConfObject>::from_conf_object_mut(obj) } + } + } + }) + } + } +} + +/// Derive macro for the [`Class`] trait. +pub fn from_conf_object_impl(input: TokenStream) -> TokenStream { + let input = parse_macro_input!(input as DeriveInput); + let args = match FromConfObjectOpts::from_derive_input(&input) { + Ok(opts) => opts, + Err(e) => return e.write_errors().into(), + }; + + quote!(#args).into() +} diff --git a/simics-rs/simics-macro/src/exception/mod.rs b/simics-rs/simics-macro/src/exception/mod.rs new file mode 100644 index 00000000..fdcb9fca --- /dev/null +++ b/simics-rs/simics-macro/src/exception/mod.rs @@ -0,0 +1,134 @@ +// Copyright (C) 2024 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 + +use darling::{ast::NestedMeta, Error, FromMeta}; +use proc_macro::TokenStream; +use quote::{format_ident, quote}; +use syn::{parse_macro_input, parse_quote, ItemFn, Meta, ReturnType, Type, Visibility}; + +#[derive(Debug, FromMeta)] +struct SimicsExceptionOpts {} + +pub trait IsResultType { + fn is_result_type(&self) -> bool; +} + +impl IsResultType for ReturnType { + fn is_result_type(&self) -> bool { + match self { + ReturnType::Default => false, + ReturnType::Type(_, ty) => match &**ty { + Type::Path(p) => p + .path + .segments + .last() + .map(|l| l.ident == "Result") + .unwrap_or(false), + _ => false, + }, + } + } +} + +pub fn simics_exception_impl(args: TokenStream, input: TokenStream) -> TokenStream { + let attr_args = match NestedMeta::parse_meta_list(args.into()) { + Ok(a) => a, + Err(e) => return TokenStream::from(Error::from(e).write_errors()), + }; + + let mut input = parse_macro_input!(input as ItemFn); + + let _args = match SimicsExceptionOpts::from_list(&attr_args) { + Ok(a) => a, + Err(e) => return TokenStream::from(e.write_errors()), + }; + + // Get the original ident and visibility before we change them + let vis = input.vis.clone(); + let mut sig = input.sig.clone(); + let attrs = &input.attrs; + let doc_attrs = attrs + .iter() + .filter(|a| { + if let Meta::NameValue(attr) = &a.meta { + if let Some(first) = attr.path.segments.first() { + first.ident == "doc" + } else { + false + } + } else { + false + } + }) + .collect::>(); + + let inner_ident = format_ident!("_{}", input.sig.ident); + input.sig.ident = inner_ident.clone(); + let input_name = input.sig.ident.to_string(); + input.vis = Visibility::Inherited; + + let ok_return = sig + .output + .is_result_type() + .then_some(quote!(result)) + .unwrap_or(quote!(Ok(result))); + + sig.output = match sig.output.is_result_type().then_some(&sig.output) { + Some(o) => o.clone(), + None => { + let output = match &sig.output { + ReturnType::Default => quote!(()), + ReturnType::Type(_, ty) => quote!(#ty), + }; + + parse_quote!(-> crate::error::Result<#output>) + } + }; + + let maybe_ty_generics = (!&sig.generics.params.is_empty()).then_some({ + let params = &sig.generics.params; + quote!(::<#params>) + }); + + let Some(args) = sig + .inputs + .iter() + .map(|i| match i { + syn::FnArg::Receiver(_) => None, + syn::FnArg::Typed(t) => { + let pat = &t.pat; + Some(quote!(#pat)) + } + }) + .collect::>>() + else { + return Error::custom("Methods with a receiver are not supported") + .write_errors() + .into(); + }; + + let wrapper = quote! { + #(#doc_attrs)* + #vis #sig { + #[allow(deprecated)] + let result = #inner_ident #maybe_ty_generics(#(#args),*); + match crate::api::get_pending_exception() { + crate::api::base::sim_exception::SimException::SimExc_No_Exception => #ok_return, + exception => { + crate::api::base::sim_exception::clear_exception(); + Err(crate::error::Error::SimicsException { + exception, + msg: crate::api::base::sim_exception::last_error() + "(" + #input_name + ")" + }) + } + } + } + + }; + + quote! { + #input + #wrapper + } + .into() +} diff --git a/simics-rs/simics-macro/src/init/mod.rs b/simics-rs/simics-macro/src/init/mod.rs new file mode 100644 index 00000000..3d84ba7a --- /dev/null +++ b/simics-rs/simics-macro/src/init/mod.rs @@ -0,0 +1,171 @@ +// Copyright (C) 2024 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 + +use std::time::{SystemTime, UNIX_EPOCH}; + +use chrono::Local; +use darling::{ast::NestedMeta, util::Flag, Error, FromMeta}; +use proc_macro::TokenStream; +use proc_macro2::TokenStream as TokenStream2; +use quote::quote; +use simics_api_sys::{SIM_VERSION, SIM_VERSION_COMPAT}; +use syn::{parse_macro_input, ItemFn, ReturnType, Type}; + +#[derive(Debug, FromMeta)] +pub struct SimicsInitOpts { + #[darling(default)] + /// The name of the module, used in the `MOD:NAME` expression + pub name: String, + #[darling(multiple)] + /// The list of classes to register. Classes not listed here will not be declared. + pub class: Vec, + no_panic_hook: Flag, +} + +pub trait IsResultType { + fn is_result_type(&self) -> bool; +} + +#[cfg(unix)] +const HOST_TYPE: &str = "linux64"; + +#[cfg(windows)] +const HOST_TYPE: &str = "win64"; + +impl IsResultType for ReturnType { + fn is_result_type(&self) -> bool { + match self { + ReturnType::Default => false, + ReturnType::Type(_, ty) => match &**ty { + Type::Path(p) => p + .path + .segments + .last() + .map(|l| l.ident == "Result") + .unwrap_or(false), + _ => false, + }, + } + } +} + +pub fn generate_exports(opts: &SimicsInitOpts) -> TokenStream2 { + let name = &opts.name; + let classes = &opts.class; + let epoch_time = SystemTime::now() + .duration_since(UNIX_EPOCH) + .expect("System time before epoch") + .as_secs(); + let api = SIM_VERSION.to_string().chars().take(1).collect::(); + let classes = classes + .iter() + .map(|c| format!("CLS:{}", c)) + .collect::>(); + let classes = classes.join(";"); + + let capabilities = vec![ + format!("VER:{SIM_VERSION_COMPAT}"), + format!("ABI:{SIM_VERSION}"), + format!("API:{api}"), + "BLD:0".to_string(), + "BLD_NS:__simics_project__".to_string(), + format!("BUILDDATE:{epoch_time}"), + format!("MOD:{name}"), + classes, + format!("HOSTTYPE:{HOST_TYPE}"), + "THREADSAFE".to_string(), + " ".repeat(43), + ]; + let module_capabilities_string = capabilities.join(";") + ";" + "\x00"; + let module_capabilities_bytes = module_capabilities_string.as_bytes().to_vec(); + let module_capabilities_len = module_capabilities_bytes.len(); + + // Get the date in the format like "Thu Jan 18 15:37:54 2024" + let module_date_string = Local::now().format("%a %b %d %T %Y\x00").to_string(); + let module_date_bytes = module_date_string.as_bytes().to_vec(); + let module_date_len = module_date_bytes.len(); + + quote! { + #[no_mangle] + /// The module capabilities list + pub static _module_capabilities_: [u8; #module_capabilities_len] = [#(#module_capabilities_bytes),*]; + #[no_mangle] + /// The module build date + pub static _module_date: [u8; #module_date_len] = [#(#module_date_bytes),*]; + } +} + +pub fn simics_init_impl(args: TokenStream, input: TokenStream) -> TokenStream { + let attr_args = match NestedMeta::parse_meta_list(args.into()) { + Ok(a) => a, + Err(e) => return TokenStream::from(Error::from(e).write_errors()), + }; + + let input = parse_macro_input!(input as ItemFn); + + let opts = match SimicsInitOpts::from_list(&attr_args) { + Ok(a) => a, + Err(e) => return TokenStream::from(e.write_errors()), + }; + + // Get the original ident and visibility before we change them + let inner_ident = &input.sig.ident; + + let maybe_expect = &input + .sig + .output + .is_result_type() + .then_some(quote!(.expect("Failed while executing init"))) + .unwrap_or(quote!()); + + let maybe_ty_generics = (!&input.sig.generics.params.is_empty()).then_some({ + let params = &input.sig.generics.params; + quote!(::<#params>) + }); + + let Some(args) = &input + .sig + .inputs + .iter() + .map(|i| match i { + syn::FnArg::Receiver(_) => None, + syn::FnArg::Typed(t) => { + let pat = &t.pat; + Some(quote!(#pat)) + } + }) + .collect::>>() + else { + return Error::custom("Methods with a receiver are not supported") + .write_errors() + .into(); + }; + + let exports = generate_exports(&opts); + + let maybe_set_panic_hook = if !opts.no_panic_hook.is_present() { + quote! { + std::panic::set_hook(Box::new(|panic_info| { + simics::panic_handler(panic_info) + })); + } + } else { + quote!() + }; + + let wrapper = quote! { + #[no_mangle] + /// Exported symbol called by simics when module is loaded + pub extern "C" fn _simics_module_init() { + #maybe_set_panic_hook + #inner_ident #maybe_ty_generics(#(#args),*) #maybe_expect; + } + }; + + quote! { + #input + #wrapper + #exports + } + .into() +} diff --git a/simics-rs/simics-macro/src/interface/mod.rs b/simics-rs/simics-macro/src/interface/mod.rs new file mode 100644 index 00000000..75e4511b --- /dev/null +++ b/simics-rs/simics-macro/src/interface/mod.rs @@ -0,0 +1,1428 @@ +use crate::exception::IsResultType; +use command_ext::{CommandExtCheck, CommandExtPrint}; +use darling::{ast::NestedMeta, Error, FromMeta, Result}; +use ispm_wrapper::ispm::{self, GlobalOptions}; +use proc_macro::TokenStream; +use proc_macro2::{Literal, TokenStream as TokenStream2}; +use quote::{format_ident, quote, ToTokens}; +use simics_sign::Sign; +use std::{ + collections::hash_map::DefaultHasher, + env::var, + fs::{create_dir_all, read_dir, write}, + hash::{Hash, Hasher}, + io::Write, + path::{Path, PathBuf}, + process::{Command, Stdio}, +}; +use syn::{ + parse_macro_input, Expr, FnArg, GenericArgument, Ident, ImplItem, ImplItemFn, ItemImpl, Lit, + Meta, Pat, PathArguments, ReturnType, Type, +}; + +#[cfg(not(windows))] +/// The name of the binary/library/object subdirectory on linux systems +pub const HOST_DIRNAME: &str = "linux64"; +#[cfg(windows)] +/// The name of the binary/library/object subdirectory on windows systems +pub const HOST_DIRNAME: &str = "win64"; +/// Name for the environment variable set by the SIMICS build system to the flag to +/// include e.g. -I SIMICS_BASE/linux64/include/python3.9/ +pub const PYTHON3_INCLUDE_ENV: &str = "PYTHON3_INCLUDE"; +/// Name for the environment variable set by the SIMICS build system to the libpython3.so library +pub const PYTHON3_LDFLAGS_ENV: &str = "PYTHON3_LDFLAGS"; + +#[derive(Debug, Clone, FromMeta)] +pub struct InterfaceAttr { + #[darling(default)] + name: Option, +} + +/// Get the only subdirectory of a directory, if only one exists. If zero or more than one subdirectories +/// exist, returns an error +pub fn subdir

(dir: P) -> Option +where + P: AsRef, +{ + let subdirs = read_dir(dir) + .ok()? + .filter_map(|p| p.ok()) + .map(|p| p.path()) + .filter(|p| p.is_dir()) + .collect::>(); + + if subdirs.len() != 1 { + return None; + } + + subdirs.first().cloned() +} + +pub trait SnakeToCamel { + fn snake_to_camel(&self) -> String; +} + +impl SnakeToCamel for String { + fn snake_to_camel(&self) -> String { + let mut s = String::new(); + let mut upper = false; + for c in self.chars() { + if upper || s.is_empty() { + s.push(c.to_ascii_uppercase()); + upper = false; + } else if c == '_' { + upper = true; + } else { + s.push(c.to_ascii_lowercase()); + } + } + s + } +} + +#[derive(Debug)] +pub struct Interface { + input: ItemImpl, + name: String, +} + +impl Interface { + pub fn ident(&self) -> Result { + if let Type::Path(ref p) = *self.input.self_ty { + let Some(last) = p.path.segments.last() else { + return Err(Error::custom("expected a type path")); + }; + + Ok(last.ident.clone()) + } else { + Err(Error::custom("expected a type path")) + } + } +} + +impl ToTokens for Interface { + fn to_tokens(&self, tokens: &mut TokenStream2) { + let input = &self.input; + let Ok(ident) = self.ident() else { + return tokens.extend(Error::custom("expected a type path").write_errors()); + }; + let (impl_generics, ty_generics, where_clause) = input.generics.split_for_impl(); + let name = self.name.clone(); + let interface_ident = format_ident!("{name}"); + let interface_internal_ident = format_ident!("{}InternalInterface", name.snake_to_camel()); + let Ok(interface_name_literal) = format!("c\"{}\"", name).parse::() else { + return tokens.extend(Error::custom("invalid interface name").write_errors()); + }; + let ffi_interface_mod_name = format!("{}_interface_ffi", name); + + let impl_fns = input + .items + .iter() + .filter_map(|i| { + if let ImplItem::Fn(ref f) = i { + let ffi_fn_name = format!("{}_{}", name, f.sig.ident); + Some(quote! { + #[ffi(arg(self), arg(rest), name = #ffi_fn_name)] + #f + }) + } else { + None + } + }) + .collect::>(); + + let Some(internal_interface_fields) = input + .items + .iter() + .filter_map(|i| { + if let ImplItem::Fn(ref f) = i { + Some(&f.sig) + } else { + None + } + }) + .map(|s| { + let ident = &s.ident; + let mut inputs = s + .inputs + .iter() + .skip(1) + .map(|i| quote!(#i)) + .collect::>(); + inputs.insert(0, quote!(obj: *mut simics::ConfObject)); + let output = match &s.output { + ReturnType::Default => quote!(()), + ReturnType::Type(_, t) => { + if s.output.is_result_type() { + let Type::Path(ref path) = &**t else { + return None; + }; + let last = path.path.segments.last()?; + let PathArguments::AngleBracketed(args) = &last.arguments else { + return None; + }; + let first = args.args.first()?; + quote!(#first) + } else { + quote!(#t) + } + } + }; + Some(quote! { + /// The internal interface field + pub #ident: Option #output> + }) + }) + .collect::>>() + else { + return tokens.extend( + Error::custom(format!( + "Invalid return type for interface function: {name}" + )) + .write_errors(), + ); + }; + + let internal_interface_default_args = input + .items + .iter() + .filter_map(|i| { + if let ImplItem::Fn(ref f) = i { + Some(&f.sig) + } else { + None + } + }) + .map(|s| { + #[allow(unused)] + // NOTE: False positive + let ffi_fn_name = format_ident!("{}_{}", name, s.ident.to_string()); + let name = &s.ident; + let ffi_interface_mod_name = format_ident!("{ffi_interface_mod_name}"); + quote! { + /// The name + #name: Some(#ffi_interface_mod_name::#ffi_fn_name) + } + }) + .collect::>(); + + tokens.extend(quote! { + /// The holder for the object the interface is implemented on and the pointer to + /// the CFFI interface of function pointers + pub struct #interface_ident { + obj: *mut simics::ConfObject, + interface: *mut #interface_internal_ident, + } + + impl #impl_generics simics::HasInterface<#interface_ident> for #ident #ty_generics #where_clause {} + + impl simics::Interface for #interface_ident { + type InternalInterface = #interface_internal_ident; + type Name = &'static std::ffi::CStr; + + const NAME: &'static std::ffi::CStr = #interface_name_literal; + + fn new(obj: *mut simics::ConfObject, interface: *mut Self::InternalInterface) -> Self { + Self { obj, interface } + } + } + + #[ffi::ffi(expect, mod_name = #ffi_interface_mod_name, self_ty = "*mut simics::ConfObject")] + impl #impl_generics #ident #ty_generics #where_clause { + #(#impl_fns)* + } + + #[derive(Debug)] + #[repr(C)] + /// The internal interface for the interface, which contains all the function pointers + /// called from the simulator + pub struct #interface_internal_ident { + #(#internal_interface_fields),* + } + + impl Default for #interface_internal_ident { + fn default() -> Self { + Self { + #(#internal_interface_default_args),* + } + } + } + }); + } +} + +pub struct CInterface; + +impl CInterface { + fn interface_function_type_to_ctype(ty: &Type) -> Result { + match &ty { + Type::Paren(i) => Self::interface_function_type_to_ctype(&i.elem), + Type::Tuple(t) => { + if t.elems.is_empty() { + Ok("void".to_string()) + } else { + Err(Error::custom("Non-empty tuple is not a valid C type")) + } + } + Type::Path(p) => { + // First, check if the outer is an option. If it is, we just discard it and take the + // inner type. + if let Some(last) = p.path.segments.last() { + let ty_ident = &last.ident; + match &last.arguments { + syn::PathArguments::None => { + // No angle arguments, we can break down the type now + let tystr = ty_ident.to_string(); + Ok(match tystr.as_str() { + "ConfObject" => "conf_object_t", + "AttrValue" => "attr_value_t", + "BreakpointId" => "breakpoint_id_t", + "GenericAddress" => "generic_address_t", + "u8" => "uint8", + "u16" => "uint16", + "u32" => "uint32", + "u64" => "uint64", + "i8" => "int8", + "i16" => "int16", + "i32" => "int32", + "i64" => "int64", + // NOTE: This is not exactly right, but we don't expect anyone to + // run simics on a 32-bit host. + "f32" => "float", + "f64" => "double", + "usize" => "size_t", + "isize" => "ssize_t", + "c_char" => "char", + // Attempt to use the type as-is. This is unlikely to work, but allows + // creative people to be creative + other => other, + } + .to_string()) + } + syn::PathArguments::AngleBracketed(a) => { + // Options and results can be extracted directly + if last.ident == "Option" || last.ident == "Result" { + if let Some(GenericArgument::Type(ty)) = a.args.first() { + Self::interface_function_type_to_ctype(ty) + } else { + Err(Error::custom("Unsupported generic arguments")) + } + } else { + Err(Error::custom(format!( + "Unsupported function type with arguments: {ty_ident}" + ))) + } + } + _ => Err(Error::custom( + "Unsupported interface function type argument", + )), + } + } else { + Err(Error::custom( + "Unexpected empty path in interface function type", + )) + } + } + Type::Ptr(p) => { + let ptr_ty = Self::interface_function_type_to_ctype(&p.elem)?; + let maybe_const = p + .const_token + .is_some() + .then_some("const ".to_string()) + .unwrap_or_default(); + Ok(format!("{maybe_const}{ptr_ty} *")) + } + _ => Err(Error::custom(format!( + "Unsupported type for C interface generation: {ty:?}" + ))), + } + } + + fn generate_interface_function_type(item: &ImplItemFn) -> Result { + // Parse InterfaceAttr from the function's attributes + let interface_attr = item.attrs.iter().find(|a| { + if let Meta::Path(ref p) = a.meta { + p.is_ident("interface") + } else { + false + } + }); + + let interface_attr_opts = if let Some(interface_attr) = interface_attr { + let meta_list = NestedMeta::parse_meta_list({ + let Meta::Path(ref p) = interface_attr.meta else { + return Err(Error::custom("Expected path meta for interface")); + }; + p.to_token_stream() + }) + .map_err(|e| Error::custom(format!("Failed to parse interface attribute: {e}")))?; + Some(InterfaceAttr::from_list(&meta_list)?) + } else { + None + }; + + let signature = &item.sig; + + let name = format_ident!( + "{}", + interface_attr_opts + .map(|o| o.name) + .flatten() + .unwrap_or(item.sig.ident.to_string()) + ); + + let ty = item + .sig + .inputs + .iter() + .map(|i| match i { + FnArg::Receiver(_) => Ok("conf_object_t * obj".to_string()), + FnArg::Typed(a) => { + let ty = Self::interface_function_type_to_ctype(&a.ty)?; + let name = match &*a.pat { + Pat::Ident(ref p) => Ok(p.ident.to_string()), + _ => Err(Error::custom("Expected ident pattern type")), + }?; + Ok(format!("{} {}", ty, name)) + } + }) + .collect::>>()?; + let ty_params = ty.join(", "); + + let output = match &signature.output { + ReturnType::Default => "void".to_string(), + ReturnType::Type(_, t) => Self::interface_function_type_to_ctype(t)?, + }; + + Ok(format!("{output} (*{name})({ty_params});")) + } + + fn generate_interface_header(input: &ItemImpl, interface_name: &String) -> Result { + let interface_struct_name = format!("{interface_name}_interface"); + let interface_struct_name_define = interface_struct_name.to_ascii_uppercase(); + let include_guard = format!("{}_INTERFACE_H", interface_name.to_ascii_uppercase()); + let interface_functions = input + .items + .iter() + .filter_map(|i| { + if let ImplItem::Fn(ref f) = i { + // If the function has a #[interface(rename = "name")] attribute, use that name + // instead of the function's name + Some(f) + } else { + None + } + }) + .map(Self::generate_interface_function_type) + .collect::>>()?; + + let interface_functions_code = interface_functions.join("\n "); + + Ok(format!( + r#" + // Copyright (C) 2024 Intel Corporation + // SPDX-License-Identifier: Apache-2.0 + + #ifndef {include_guard} + #define {include_guard} + + #include + #include + + #ifdef __cplusplus + extern "C" {{ + #endif + + SIM_INTERFACE({interface_name}) {{ + {interface_functions_code} + }}; + + #define {interface_struct_name_define} "{interface_name}" + + #ifdef __cplusplus + }} + #endif + + #endif // {include_guard} + + "# + )) + } + + fn generate_interface_dml( + input: &ItemImpl, + header_name: S, + interface_name: &String, + ) -> Result + where + S: AsRef, + { + let header_name = header_name.as_ref(); + let interface_struct_name = format!("{interface_name}_interface"); + let interface_struct_name_define = interface_struct_name.to_ascii_uppercase(); + let interface_struct_ty_name = format!("{interface_struct_name}_t"); + let interface_functions = input + .items + .iter() + .filter_map(|i| { + if let ImplItem::Fn(ref f) = i { + Some(f) + } else { + None + } + }) + .map(Self::generate_interface_function_type) + .collect::>>()?; + + let interface_functions_code = interface_functions.join("\n "); + + Ok(format!( + r#" + // Copyright (C) 2024 Intel Corporation + // SPDX-License-Identifier: Apache-2.0 + + dml 1.4; + + header %{{ + #include "{header_name}" + %}} + + extern typedef struct {{ + {interface_functions_code} + }} {interface_struct_ty_name}; + + extern const char *const {interface_struct_name_define}; + "# + )) + } + + fn generate_interface_makefile(header_name: S) -> String + where + S: AsRef, + { + let header_name = header_name.as_ref(); + + format!( + r#" + IFACE_FILES = {header_name} + THREAD_SAFE = yes + + ifeq ($(MODULE_MAKEFILE),) + $(error Make sure you compile your module from the project directory) + else + include $(MODULE_MAKEFILE) + endif + "# + ) + } + + fn generate(input: &ItemImpl, interface_name: &String) -> Result<()> { + let out_dir = PathBuf::from(var("OUT_DIR").map_err(|e| { + Error::custom(format!("Failed to get OUT_DIR environment variable: {e}. The OUT_DIR variable is only set for crates with a 'build.rs' build script. Ensure one exists for the crate.")) + })?); + + #[cfg(unix)] + const OBJ_SUFFIX: &str = "o"; + + #[cfg(windows)] + const OBJ_SUFFIX: &str = "obj"; + + #[cfg(unix)] + const CDYLIB_PREFIX: &str = "lib"; + + #[cfg(windows)] + const CDYLIB_PREFIX: &str = ""; + + #[cfg(unix)] + const CDYLIB_SUFFIX: &str = "so"; + + #[cfg(windows)] + const CDYLIB_SUFFIX: &str = "dll"; + + #[cfg(windows)] + const CSTATICLIB_SUFFIX: &str = "lib"; + + let header_name = format!("{interface_name}-interface.h"); + let dml_name = format!("{interface_name}-interface.dml"); + let makefile_name = "Makefile"; + let pyifaces_interface_c = format!("pyifaces-{interface_name}-interface.c"); + let pyifaces_interface_d = format!("pyifaces-{interface_name}-interface.d"); + let pyifaces_interface_i = format!("pyifaces-{interface_name}-interface.i"); + let pyifaces_interface_t = format!("pyifaces-{interface_name}-interface.t"); + let pyiface_interface = format!("pyiface-{interface_name}-interface"); + let pyiface_interface_trampolines_c = + format!("pyiface-{interface_name}-interface-trampolines.c"); + let pyiface_interface_trampolines_o = + format!("pyiface-{interface_name}-interface-trampolines.{OBJ_SUFFIX}"); + let pyiface_interface_trampoline_data_h = + format!("pyiface-{interface_name}-interface-trampoline-data.h"); + let pyiface_interface_wrappers_c = format!("pyiface-{interface_name}-interface-wrappers.c"); + let pyiface_interface_wrappers_d = format!("pyiface-{interface_name}-interface-wrappers.d"); + let pyiface_interface_wrappers_o = + format!("pyiface-{interface_name}-interface-wrappers.{OBJ_SUFFIX}"); + let pyiface_interface_interface_list = + format!("pyiface-{interface_name}-interface-interface-list"); + let module_id_c = format!("{interface_name}_module_id.c"); + let module_id_d = format!("{interface_name}_module_id.d"); + let module_id_o = format!("{interface_name}_module_id.{OBJ_SUFFIX}"); + let interface_so = format!("{CDYLIB_PREFIX}{interface_name}-interface.{CDYLIB_SUFFIX}"); + + let header = Self::generate_interface_header(input, interface_name)?; + let dml = Self::generate_interface_dml(input, &header_name, interface_name)?; + let makefile = Self::generate_interface_makefile(&header_name); + + // Hash together the header and dml to get a unique subdir name + #[cfg(debug_assertions)] + let profile = "dev"; + #[cfg(not(debug_assertions))] + let profile = "release"; + let mut hasher = DefaultHasher::new(); + header.hash(&mut hasher); + dml.hash(&mut hasher); + let subdir_name = format!("{}_{:x}_{}", interface_name, hasher.finish(), profile); + + let interface_subdir = out_dir.join(subdir_name); + create_dir_all(&interface_subdir).map_err(|e| { + Error::custom(format!( + "Failed to create interface subdir {}: {}", + interface_subdir.display(), + e + )) + })?; + write(interface_subdir.join(&header_name), header).map_err(|e| { + Error::custom(format!( + "Failed to write interface header {}: {}", + interface_subdir.join(&header_name).display(), + e + )) + })?; + write(interface_subdir.join(&dml_name), dml).map_err(|e| { + Error::custom(format!( + "Failed to write interface dml {}: {}", + interface_subdir.join(dml_name).display(), + e + )) + })?; + write(interface_subdir.join(makefile_name), makefile).map_err(|e| { + Error::custom(format!( + "Failed to write interface makefile {}: {}", + interface_subdir.join(makefile_name).display(), + e + )) + })?; + + let simics_base = if let Ok(simics_base) = var("SIMICS_BASE") { + PathBuf::from(simics_base) + } else { + println!("cargo:warning=No SIMICS_BASE environment variable found, using ispm to find installed packages and using latest base version"); + let mut packages = ispm::packages::list(&GlobalOptions::default()) + .map_err(|e| Error::custom(format!("Could not get installed packages: {e}")))?; + packages.sort(); + let Some(installed) = packages.installed_packages.as_ref() else { + return Err(Error::custom( + "No SIMICS_BASE variable set and did not get any installed packages", + )); + }; + let Some(base) = installed.iter().find(|p| p.package_number == 1000) else { + return Err(Error::custom ( + "No SIMICS_BASE variable set and did not find a package with package number 1000" + )); + }; + println!("cargo:warning=Using Simics base version {}", base.version); + base.paths + .first() + .ok_or_else(|| { + Error::custom("No paths found for package with package number 1000") + })? + .clone() + }; + + #[cfg(unix)] + let mini_python = simics_base + .join(HOST_DIRNAME) + .join("bin") + .join("mini-python"); + #[cfg(unix)] + let pywrapgen = simics_base.join(HOST_DIRNAME).join("bin").join("pywrapgen"); + + #[cfg(windows)] + let mini_python = simics_base + .join(HOST_DIRNAME) + .join("bin") + .join("mini-python.exe"); + #[cfg(windows)] + let pywrapgen = simics_base + .join(HOST_DIRNAME) + .join("bin") + .join("pywrapgen.exe"); + + let pywrap_dir = simics_base.join(HOST_DIRNAME).join("bin").join("pywrap"); + + let python_include = var(PYTHON3_INCLUDE_ENV).unwrap_or(format!( + "-I{}", + subdir(simics_base.join(HOST_DIRNAME).join("include")) + .ok_or_else(|| { + Error::custom(format!( + "Failed to get include directory subdirectory of {}", + simics_base.join(HOST_DIRNAME).join("include").display() + )) + })? + .display() + )); + + let python_include_path = subdir(simics_base.join(HOST_DIRNAME).join("include")) + .ok_or_else(|| { + Error::custom(format!( + "Failed to get include directory subdirectory of {}", + simics_base.join(HOST_DIRNAME).join("include").display() + )) + })?; + + // SPlit the include path filename like python3.9.3 into [3, 9, 3] + let python_include_path_filename = python_include_path + .file_name() + .ok_or_else(|| Error::custom("Failed to get include path filename"))? + .to_str() + .expect("Failed to convert include path filename to str") + .replace("python", ""); + + let python_version = python_include_path_filename + .split('.') + .map(|s| { + s.parse::().map_err(|e| { + Error::custom(format!("Failed to parse python version number part: {}", e)) + }) + }) + .collect::>>()?; + + #[cfg(unix)] + let libpython_path = var(PYTHON3_LDFLAGS_ENV).map(PathBuf::from).unwrap_or( + simics_base + .join(HOST_DIRNAME) + .join("sys") + .join("lib") + .join(format!("libpython3.{CDYLIB_SUFFIX}")), + ); + + #[cfg(windows)] + let libpython_path = var(PYTHON3_LDFLAGS_ENV).map(PathBuf::from).unwrap_or( + simics_base + .join(HOST_DIRNAME) + .join("lib") + .join( + subdir(simics_base.join(HOST_DIRNAME).join("include")) + .ok_or_else(|| Error::custom(format!("Failed to get include dir")))? + .file_name() + .ok_or_else(|| Error::custom("Failed to get include dir filename"))?, + ) + .join(format!("python3.{CDYLIB_SUFFIX}")), + ); + + #[cfg(windows)] + let libpython_path_static = var(PYTHON3_LDFLAGS_ENV).map(PathBuf::from).unwrap_or( + simics_base + .join(HOST_DIRNAME) + .join("bin") + .join(format!("python3.{CSTATICLIB_SUFFIX}")), + ); + + // GEN + // /home/rhart/simics/simics-6.0.169/bin/mini-python \ + // /home/rhart/simics/simics-6.0.169/scripts/build/gen_pyifaces_c.py \ + // pyifaces-tsffs-interface.c \ + // /home/rhart/simics/simics-6.0.169/linux64/bin/pywrap/py-typemaps.c \ + // /home/rhart/hub/tsffs/modules/tsffs-interface/tsffs-interface.h + // + // C:\Users\rhart\simics\simics-6.0.169\win64\bin\mini-python.exe \ + // C:\Users\rhart\simics\simics-6.0.169/scripts/build/gen_pyifaces_c.py \ + // pyifaces-tsffs-interface.c \ + // C:\Users\rhart\simics\simics-6.0.169/win64/bin/pywrap/py-typemaps.c \ + // C:\Users\rhart\hub\tsffs/modules/tsffs-interface/tsffs-interface.h + Command::new(&mini_python) + .arg( + simics_base + .join("scripts") + .join("build") + .join("gen_pyifaces_c.py"), + ) + .arg(interface_subdir.join(&pyifaces_interface_c)) + .arg( + simics_base + .join(HOST_DIRNAME) + .join("bin") + .join("pywrap") + .join("py-typemaps.c"), + ) + .arg(interface_subdir.join(&header_name)) + .print_args() + .check() + .map_err(|e| { + Error::custom(format!( + "Failed to generate pyifaces C with command {} {} {} {} {}: {}", + mini_python.display(), + simics_base + .join("scripts") + .join("build") + .join("gen_pyifaces_c.py") + .display(), + interface_subdir.join(&pyifaces_interface_c).display(), + simics_base + .join(HOST_DIRNAME) + .join("bin") + .join("pywrap") + .join("py-typemaps.c") + .display(), + interface_subdir.join(&header_name).display(), + e + )) + })?; + + // IFACE-DEP + // DEP_CC $< IFACE_CFLAGS -M -MP -std=gnu99 -MF $@ + // gcc pyifaces-tsffs-interface.c -gdwarf-2 -Wall -Wwrite-strings -std=gnu99 \ + // -fPIC -Wformat-security -O2 - D_FORTIFY_SOURCE=2 \ + // -I/home/rhart/simics/simics-6.0.169/linux64/include/python3.9 \ + // -DPy_LIMITED_API=0x030 90000 -Wno-write-strings -Wno-undef \ + // -DPY_MAJOR_VERSION=3 -DHAVE_MODULE_DATE -DSIMICS_6_API \ + // -I/home/rhart/simics/simics-6.0.169/src/include -I. \ + // -I/home/rhart/hub/tsffs/modules/tsffs-interface -M -MP -std=gnu 99 -MF \ + // pyifaces-tsffs-interface.d + // + // C:\MinGW\bin\gcc.exe pyifaces-tsffs-interface.c -O2 -g -gdwarf-2 -Wall \ + // -Wwrite-strings -std=gnu99 -D__USE_MINGW_ANSI_STDIO=1 -D_FORTIFY_SOURCE=2 \ + // -Wformat-security \ + // -IC:\Users\rhart\simics\simics-6.0.169/win64/include/python3.9 \ + // -DPy_LIMITED_API=0x03090000 -Wno-write-strings -Wno-undef \ + // -DPY_MAJOR_VERSION=3 -DHAVE_MODULE_DATE -DSIMICS_6_API \ + // -IC:\Users\rhart\simics\simics-6.0.169\src\include -I. \ + // -IC:\Users\rhart\hub\tsffs/modules/tsffs-interface -M -MP -std=gnu99 -MF \ + // pyifaces-tsffs-interface.d + Command::new("gcc") + .arg(interface_subdir.join(&pyifaces_interface_c)) + // Begin IFACE_CFLAGS + .arg("-gdwarf-2") + .arg("-Wall") + .arg("-Wwrite-strings") + .arg("-std=gnu99") + .args(FPIC) + .arg("-Wformat-security") + .arg("-O2") + .arg("-D_FORTIFY_SOURCE=2") + .arg(&python_include) + .arg("-Wno-write-strings") + .arg("-Wno-undef") + .arg("-DPY_MAJOR_VERSION=3") + .arg("-DHAVE_MODULE_DATE") + .arg("-DSIMICS_6_API") + .arg(format!( + "-I{}", + simics_base.join("src").join("include").display() + )) + .arg("-I.") + .arg(format!("-I{}", interface_subdir.display())) + // End IFACE_CFLAGS + .arg("-M") + .arg("-MP") + .arg("-std=gnu99") + .arg("-MF") + .arg(interface_subdir.join(pyifaces_interface_d)) + .check() + .map_err(|e| Error::custom(format!("Failed to generate pyifaces C dep: {e}")))?; + + // IFACE-CPP + // CPP IFACE_CFLAGS -DPYWRAP $< >$@ + // gcc -E -gdwarf-2 -Wall -Wwrite-strings -std=gnu99 -fPIC -Wformat-security -O2 \ + // -D_FORTIFY_SOURCE=2 \ + // -I/home/rhart/simics/simics-6.0.169/linux64/include/python3.9 \ + // -DPy_LIMITED_API=0x03090000 -Wno-write-strings -Wno-undef \ + // -DPY_MAJOR_VERSION=3 -DHAVE_MODULE_DATE -DSIMICS_6_API \ + // -I/home/rhart/simics/simics-6.0.169/src/include -I. \ + // -I/home/rhart/hub/tsffs/modules/tsffs-interface -DPYWRAP \ + // pyifaces-tsffs-interface.c >pyifaces-tsffs-interface.i + // + // C:\MinGW\bin\gcc.exe -E -O2 -g -gdwarf-2 -Wall -Wwrite-strings -std=gnu99 \ + // -D__USE_MINGW_ANSI_STDIO=1 -D_FORTIFY_SOURCE=2 -Wformat-security \ + // -IC:\Users\rhart\simics\simics-6.0.169/win64/include/python3.9 \ + // -DPy_LIMITED_API=0x03090000 -Wno-write-strings -Wno-undef \ + // -DPY_MAJOR_VERSION=3 -DHAVE_MODULE_DATE -DSIMICS_6_API \ + // -IC:\Users\rhart\simics\simics-6.0.169\src\include -I. \ + // -IC:\Users\rhart\hub\tsffs/modules/tsffs-interface -DPYWRAP \ + // pyifaces-tsffs-interface.c >pyifaces-tsffs-interface.i + let output = Command::new("gcc") + .arg("-E") + .arg("-gdwarf-2") + .arg("-Wall") + .arg("-Wwrite-strings") + .arg("-std=gnu99") + .args(FPIC) + .arg("-Wformat-security") + .arg("-O2") + .arg("-D_FORTIFY_SOURCE=2") + .arg(&python_include) + .arg("-Wno-write-strings") + .arg("-Wno-undef") + .arg("-DPY_MAJOR_VERSION=3") + .arg("-DHAVE_MODULE_DATE") + .arg("-DSIMICS_6_API") + .arg(format!( + "-I{}", + simics_base.join("src").join("include").display() + )) + .arg("-I.") + .arg(format!("-I{}", interface_subdir.display())) + .arg("-DPYWRAP") + .arg(interface_subdir.join(&pyifaces_interface_c)) + .stdout(Stdio::piped()) + .check() + .map_err(|e| { + Error::custom(format!( + "Failed to generate pyifaces C preprocessor output: {e}" + )) + })?; + + write(interface_subdir.join(&pyifaces_interface_i), output.stdout).map_err(|e| { + Error::custom(format!( + "Failed to write pyifaces C preprocessor output: {e}" + )) + })?; + + // GEN + // /home/rhart/simics/simics-6.0.169/bin/mini-python \ + // /home/rhart/simics/simics-6.0.169/scripts/build/gen_pyifaces_t.py \ + // pyifaces-tsffs-interface.t \ + // /home/rhart/simics/simics-6.0.169/linux64/bin/pywrap/py-typemaps.c \ + // /home/rhart/hub/tsffs/modules/tsffs-interface/tsffs-interface.h + // + // C:\Users\rhart\simics\simics-6.0.169\win64\bin\mini-python.exe \ + // C:\Users\rhart\simics\simics-6.0.169/scripts/build/gen_pyifaces_t.py \ + // pyifaces-tsffs-interface.t \ + // C:\Users\rhart\simics\simics-6.0.169/win64/bin/pywrap/py-typemaps.c \ + // C:\Users\rhart\hub\tsffs/modules/tsffs-interface/tsffs-interface.h + Command::new(&mini_python) + .arg( + simics_base + .join("scripts") + .join("build") + .join("gen_pyifaces_t.py"), + ) + .arg(interface_subdir.join(&pyifaces_interface_t)) + .arg( + simics_base + .join(HOST_DIRNAME) + .join("bin") + .join("pywrap") + .join("py-typemaps.c"), + ) + .arg(interface_subdir.join(&header_name)) + .check() + .map_err(|e| Error::custom(format!("Failed to generate pyifaces T: {e}")))?; + + // PYWRAP + // LD_LIBRARY_PATH=/home/rhart/simics/simics-6.0.169/linux64/bin:/home/rhart/simics/simics-6.0.169/linux64/sys/lib \ + // /home/rhart/simics/simics-6.0.169/linux64/bin/pywrapgen -W \ + // /home/rhart/simics/simics-6.0.169/linux64/bin/pywrap/ -W . -W \ + // /home/rhart/hub/tsffs/modules/tsffs-interface -n \ + // simmod.tsffs_interface.tsffs_interface -t pyifaces-tsffs-interface.t \ + // pyifaces-tsffs-interface.i -o pyiface-tsffs-interface + + // set PATH=C:\Users\rhart\simics\simics-6.0.169/win64/bin;%PATH% & C:\Users\rhart\simics\simics-6.0.169/win64/bin/pywrapgen.exe -W C:\Users\rhart\simics\simics-6.0.169/win64/bin/pywrap/ \ + // -W . -W C:\Users\rhart\hub\tsffs/modules/tsffs-interface \ + // -n simmod.tsffs_interface.tsffs_interface \ + // -t pyifaces-tsffs-interface.t pyifaces-tsffs-interface.i -o pyiface-tsffs-interface + Command::new(pywrapgen) + .arg("-W") + .arg(&pywrap_dir) + // .arg("-W") + // .arg(".") + .arg("-W") + .arg(&interface_subdir) + .arg("-n") + .arg(format!( + "simmod.{}_interface.{}_interface", + interface_name, interface_name, + )) + .arg("-t") + .arg(interface_subdir.join(&pyifaces_interface_t)) + .arg(interface_subdir.join(&pyifaces_interface_i)) + .arg("-o") + .arg(interface_subdir.join(pyiface_interface)) + .print_args() + .check() + .map_err(|e| Error::custom(format!("Failed to generate pyiface: {e}")))?; + + // CC + // gcc -gdwarf-2 -Wall -Wwrite-strings -std=gnu99 -fPIC -Wformat-security -O2 \ + // -D_FORTIFY_SOURCE=2 \ + // -I/home/rhart/simics/simics-6.0.169/linux64/include/python3.9 \ + // -DPy_LIMITED_API=0x03090000 -Wno-write-strings -Wno-undef \ + // -DPY_MAJOR_VERSION=3 -O2 -fdisable-ipa-icf -fno-stack-protector \ + // -DHAVE_MODULE_DATE -DSIMICS_6_API \ + // -I/home/rhart/simics/simics-6.0.169/src/include -I. \ + // -I/home/rhart/hub/tsffs/modules/tsffs-interface -c \ + // pyiface-tsffs-interface-trampolines.c -o \ + // pyiface-tsffs-interface-trampolines.o + // + // C:\MinGW\bin\gcc.exe -O2 -g -gdwarf-2 -Wall -Wwrite-strings -std=gnu99 \ + // -D__USE_MINGW_ANSI_STDIO=1 -D_FORTIFY_SOURCE=2 -Wformat-security \ + // -IC:\Users\rhart\simics\simics-6.0.169/win64/include/python3.9 \ + // -DPy_LIMITED_API=0x03090000 -Wno-write-strings -Wno-undef \ + // -DPY_MAJOR_VERSION=3 -O2 -fdisable-ipa-icf -fno-stack-protector \ + // -DHAVE_MODULE_DATE -DSIMICS_6_API \ + // -IC:\Users\rhart\simics\simics-6.0.169\src\include -I. \ + // -IC:\Users\rhart\hub\tsffs/modules/tsffs-interface -c \ + // pyiface-tsffs-interface-trampolines.c -o \ + // pyiface-tsffs-interface-trampolines.obj + Command::new("gcc") + .arg("-gdwarf-2") + .arg("-Wall") + .arg("-Wwrite-strings") + .arg("-std=gnu99") + .args(FPIC) + .arg("-Wformat-security") + .arg("-O2") + // .arg("-fdisable-ipa-icf") + .arg("-fno-stack-protector") + .arg("-D_FORTIFY_SOURCE=2") + .arg(&python_include) + .arg("-Wno-write-strings") + .arg("-Wno-undef") + .arg("-DPY_MAJOR_VERSION=3") + .arg("-DHAVE_MODULE_DATE") + .arg("-DSIMICS_6_API") + .arg(format!( + "-I{}", + simics_base.join("src").join("include").display() + )) + .arg("-I.") + .arg(format!("-I{}", interface_subdir.display())) + .arg("-c") + .arg(interface_subdir.join(pyiface_interface_trampolines_c)) + .arg("-o") + .arg(interface_subdir.join(&pyiface_interface_trampolines_o)) + .check() + .map_err(|e| Error::custom(format!("Failed to generate pyiface trampolines: {e}")))?; + + // DISAS + // objdump -dw pyiface-tsffs-interface-trampolines.o > \ + // pyiface-tsffs-interface-trampolines.od + // + // C:\MinGW\bin\\objdump -dw pyiface-tsffs-interface-trampolines.obj \ + // >pyiface-tsffs-interface-trampolines.od + let result = Command::new("objdump") + .arg("-dw") + .arg(interface_subdir.join(&pyiface_interface_trampolines_o)) + .check() + .map_err(|e| { + Error::custom(format!("Failed to disassemble pyiface trampolines: {e}")) + })?; + + let od_contents = result.stdout; + + // GEN + // /home/rhart/simics/simics-6.0.169/bin/mini-python \ + // /home/rhart/simics/simics-6.0.169/scripts/build/analyze-trampolines.py \ + // linux64 < pyiface-tsffs-interface-trampolines.od > \ + // pyiface-tsffs-interface-trampoline-data.h + // + // C:\Users\rhart\simics\simics-6.0.169\win64\bin\mini-python.exe \ + // C:\Users\rhart\simics\simics-6.0.169/scripts/build/analyze-trampolines.py \ + // win64 < pyiface-tsffs-interface-trampolines.od > \ + // pyiface-tsffs-interface-trampoline-data.h + let mut process = Command::new(&mini_python) + .arg( + simics_base + .join("scripts") + .join("build") + .join("analyze-trampolines.py"), + ) + .arg(HOST_DIRNAME) + .stdin(Stdio::piped()) + .stdout(Stdio::piped()) + .spawn() + .map_err(|e| { + Error::custom(format!( + "Failed to spawn analyze-tranpolines.py process: {e}" + )) + })?; + + process + .stdin + .take() + .ok_or_else(|| Error::custom("Failed to take analyze-tranpolines.py stdin"))? + .write_all(&od_contents) + .map_err(|e| { + Error::custom(format!( + "Failed to write pyiface trampolines to analyze-tranpolines.py stdin: {e}" + )) + })?; + + let output = process.wait_with_output().map_err(|e| { + Error::custom(format!("Failed to wait for analyze-tranpolines.py: {e}")) + })?; + + write( + interface_subdir.join(pyiface_interface_trampoline_data_h), + output.stdout, + ) + .map_err(|e| Error::custom(format!("Failed to write pyiface trampoline data: {e}")))?; + + #[cfg(unix)] + const FPIC: &[&str] = &["-fPIC"]; + + #[cfg(windows)] + const FPIC: &[&str] = &[]; + + // gcc pyiface-tsffs-interface-wrappers.c -gdwarf-2 -Wall -Wwrite-strings \ + // -std=gnu99 -fPIC -Wformat-security -O2 -D_FORTIFY_SOURCE=2 \ + // -I/home/rhart/simics/simics-6.0.169/linux64/include/python3.9 \ + // -DPy_LIMITED_API=0x03090000 -Wno-write-strings -Wno-undef \ + // -DPY_MAJOR_VERSION=3 -DHAVE_MODULE_DATE -DSIMICS_6_API \ + // -I/home/rhart/simics/simics-6.0.169/src/include -I. \ + // -I/home/rhart/hub/tsffs/modules/tsffs-interface -M -MP -std=gnu99 -MF \ + // pyiface-tsffs-interface-wrappers.d + // + // C:\MinGW\bin\gcc.exe pyiface-tsffs-interface-wrappers.c -O2 -g -gdwarf-2 \ + // -Wall -Wwrite-strings -std=gnu99 -D__USE_MINGW_ANSI_STDIO=1 \ + // -D_FORTIFY_SOURCE=2 -Wformat-security \ + // -IC:\Users\rhart\simics\simics-6.0.169/win64/include/python3.9 \ + // -DPy_LIMITED_API=0x03090000 -Wno-write-strings -Wno-undef \ + // -DPY_MAJOR_VERSION=3 -DHAVE_MODULE_DATE -DSIMICS_6_API \ + // -IC:\Users\rhart\simics\simics-6.0.169\src\include -I. \ + // -IC:\Users\rhart\hub\tsffs/modules/tsffs-interface -M -MP -std=gnu99 -MF \ + // pyiface-tsffs-interface-wrappers.d + Command::new("gcc") + .arg(interface_subdir.join(&pyiface_interface_wrappers_c)) + // Begin IFACE_CFLAGS + .arg("-gdwarf-2") + .arg("-Wall") + .arg("-Wwrite-strings") + .arg("-std=gnu99") + .args(FPIC) + .arg("-Wformat-security") + .arg("-O2") + .arg("-D_FORTIFY_SOURCE=2") + .arg(&python_include) + .arg("-Wno-write-strings") + .arg("-Wno-undef") + .arg("-DPY_MAJOR_VERSION=3") + .arg("-DHAVE_MODULE_DATE") + .arg("-DSIMICS_6_API") + .arg(format!( + "-I{}", + simics_base.join("src").join("include").display() + )) + .arg("-I.") + .arg(format!("-I{}", interface_subdir.display())) + // End IFACE_CFLAGS + .arg("-M") + .arg("-MP") + .arg("-std=gnu99") + .arg("-MF") + .arg(interface_subdir.join(pyiface_interface_wrappers_d)) + .check() + .map_err(|e| { + Error::custom(format!( + "Failed to generate pyiface interface wrappers dep: {e}" + )) + })?; + + // /home/rhart/simics/simics-6.0.169/bin/mini-python \ + // /home/rhart/simics/simics-6.0.169/scripts/build/module_id.py --c-module-id \ + // --output module_id.c --module-name tsffs-interface --classes --components \ + // --host-type linux64 --thread-safe yes --iface-py-module tsffs_interface \ + // --py-iface-list pyiface-tsffs-interface-interface-list --py-ver 3 \ + // --py-minor-ver 9 --user-build-id tsffs:1 + // + // C:\Users\rhart\simics\simics-6.0.169\win64\bin\mini-python.exe \ + // C:\Users\rhart\simics\simics-6.0.169/scripts/build/module_id.py --c-module-id \ + // --output module_id.c --module-name tsffs-interface --classes "" --components \ + // "" --host-type win64 --thread-safe yes --iface-py-module tsffs_interface \ + // --py-iface-list pyiface-tsffs-interface-interface-list --py-ver 3 \ + // --py-minor-ver 9 --user-build-id tsffs:1 + Command::new(&mini_python) + .arg( + simics_base + .join("scripts") + .join("build") + .join("module_id.py"), + ) + .arg("--c-module-id") + .arg("--output") + .arg(interface_subdir.join(&module_id_c)) + .arg("--module-name") + .arg(format!("{}_interface", interface_name.replace('_', "-"))) + .arg("--classes") + .arg("") + .arg("--components") + .arg("") + .arg("--host-type") + .arg(HOST_DIRNAME) + .arg("--thread-safe") + .arg("yes") + .arg("--iface-py-module") + .arg(format!("{interface_name}_interface",)) + .arg("--py-iface-list") + .arg(interface_subdir.join(pyiface_interface_interface_list)) + .arg("--py-ver") + .arg(&python_version[0].to_string()) + .arg("--py-minor-ver") + .arg(&python_version[1].to_string()) + .arg("--user-build-id") + .arg(format!("{}:1", &interface_name)) + .check() + .map_err(|e| Error::custom(format!("Failed to generate module ID: {e}")))?; + + // gcc module_id.c -M -MP -std=gnu99 -MT module_id.d -MT module_id.o \ + // -fvisibility=hidden -DHAVE_MODULE_DATE -DSIMICS_6_API \ + // -I/home/rhart/simics/simics-6.0.169/src/include -I. \ + // -I/home/rhart/hub/tsffs/modules/tsffs-interface \ + // -I/home/rhart/simics/simics-6.0.169/linux64/bin/dml/include -MF module_id.d + // + // C:\MinGW\bin\gcc.exe module_id.c -M -MP -MT module_id.obj -DHAVE_MODULE_DATE \ + // -DSIMICS_6_API -IC:\Users\rhart\simics\simics-6.0.169\src\include -I. \ + // -IC:\Users\rhart\hub\tsffs/modules/tsffs-interface \ + // -IC:\Users\rhart\simics\simics-6.0.169/win64/bin/dml/include -MF module_id.d + Command::new("gcc") + .arg(interface_subdir.join(&module_id_c)) + // Begin IFACE_CFLAGS + .arg("-M") + .arg("-MP") + .arg("-std=gnu99") + .arg("-MT") + .arg(interface_subdir.join(&module_id_d)) + .arg("-MT") + .arg(interface_subdir.join(&module_id_o)) + .arg("-fvisibility=hidden") + .arg("-DHAVE_MODULE_DATE") + .arg("-DSIMICS_6_API") + .arg(format!( + "-I{}", + simics_base.join("src").join("include").display() + )) + .arg("-I.") + .arg(format!("-I{}", interface_subdir.display())) + .arg(format!( + "-I{}", + simics_base + .join(HOST_DIRNAME) + .join("bin") + .join("dml") + .join("include") + .display() + )) + // End IFACE_CFLAGS + .arg("-MF") + .arg(interface_subdir.join(&module_id_d)) + .check() + .map_err(|e| Error::custom(format!("Failed to generate module ID dep: {e}")))?; + + // gcc -gdwarf-2 -Wall -Wwrite-strings -std=gnu99 -fPIC -Wformat-security -O2 \ + // -D_FORTIFY_SOURCE=2 \ + // -I/home/rhart/simics/simics-6.0.169/linux64/include/python3.9 \ + // -DPy_LIMITED_API=0x03090000 -Wno-write-strings -Wno-undef \ + // -DPY_MAJOR_VERSION=3 -DHAVE_MODULE_DATE -DSIMICS_6_API \ + // -I/home/rhart/simics/simics-6.0.169/src/include -I. \ + // -I/home/rhart/hub/tsffs/modules/tsffs-interface -c \ + // pyiface-tsffs-interface-wrappers.c -o pyiface-tsffs-interface-wrappers.o + // + // C:\MinGW\bin\gcc.exe -O2 -g -gdwarf-2 -Wall -Wwrite-strings -std=gnu99 \ + // -D__USE_MINGW_ANSI_STDIO=1 -D_FORTIFY_SOURCE=2 -Wformat-security \ + // -IC:\Users\rhart\simics\simics-6.0.169/win64/include/python3.9 \ + // -DPy_LIMITED_API=0x03090000 -Wno-write-strings -Wno-undef \ + // -DPY_MAJOR_VERSION=3 -DHAVE_MODULE_DATE -DSIMICS_6_API \ + // -IC:\Users\rhart\simics\simics-6.0.169\src\include -I. \ + // -IC:\Users\rhart\hub\tsffs/modules/tsffs-interface -c \ + // pyiface-tsffs-interface-wrappers.c -o pyiface-tsffs-interface-wrappers.obj + Command::new("gcc") + .arg("-gdwarf-2") + .arg("-Wall") + .arg("-Wwrite-strings") + .arg("-std=gnu99") + .args(FPIC) + .arg("-Wformat-security") + .arg("-O2") + .arg("-D_FORTIFY_SOURCE=2") + .arg(&python_include) + .arg("-Wno-write-strings") + .arg("-Wno-undef") + .arg("-DPY_MAJOR_VERSION=3") + .arg("-DHAVE_MODULE_DATE") + .arg("-DSIMICS_6_API") + .arg(format!( + "-I{}", + simics_base.join("src").join("include").display() + )) + .arg("-I.") + .arg(format!("-I{}", interface_subdir.display())) + .arg("-c") + .arg(interface_subdir.join(&pyiface_interface_wrappers_c)) + .arg("-o") + .arg(interface_subdir.join(&pyiface_interface_wrappers_o)) + .check() + .map_err(|e| { + Error::custom(format!( + "Failed to generate pyiface interface wrappers: {e}" + )) + })?; + + // gcc -DHAVE_MODULE_DATE -DSIMICS_6_API \ + // -I/home/rhart/simics/simics-6.0.169/src/include -I. \ + // -I/home/rhart/hub/tsffs/modules/tsffs-interface -gdwarf-2 -Wall \ + // -Wwrite-strings -std=gnu99 -fPIC -Wformat-security -O2 -D_FORTIFY_SOURCE=2 \ + // -c module_id.c -o module_id.o + // + // C:\MinGW\bin\gcc.exe -DHAVE_MODULE_DATE -DSIMICS_6_API \ + // -IC:\Users\rhart\simics\simics-6.0.169\src\include -I. \ + // -IC:\Users\rhart\hub\tsffs/modules/tsffs-interface -O2 -g -gdwarf-2 -Wall \ + // -Wwrite-strings -std=gnu99 -D__USE_MINGW_ANSI_STDIO=1 -D_FORTIFY_SOURCE=2 \ + // -Wformat-security -c module_id.c -o module_id.obj + Command::new("gcc") + .arg("-DHAVE_MODULE_DATE") + .arg("-DSIMICS_6_API") + .arg(format!( + "-I{}", + simics_base.join("src").join("include").display() + )) + .arg("-I.") + .arg(format!("-I{}", interface_subdir.display())) + .arg("-gdwarf-2") + .arg("-Wall") + .arg("-Wwrite-strings") + .arg("-std=gnu99") + .args(FPIC) + .arg("-Wformat-security") + .arg("-O2") + .arg("-D_FORTIFY_SOURCE=2") + .arg("-c") + .arg(interface_subdir.join(&module_id_c)) + .arg("-o") + .arg(interface_subdir.join(&module_id_o)) + .check() + .map_err(|e| Error::custom(format!("Failed to generate module ID: {e}")))?; + + // g++ -shared \ + // -Wl,--version-script,/home/rhart/simics/simics-6.0.169/config/project/exportmap.elf \ + // pyiface-tsffs-interface-wrappers.o pyiface-tsffs-interface-trampolines.o \ + // module_id.o -o tsffs-interface.so -Wl,--gc-sections \ + // -L/home/rhart/simics/simics-6.0.169/linux64/bin -z noexecstack -z relro -z \ + // now /home/rhart/simics/simics-6.0.169/linux64/sys/lib/libpython3.so \ + // -lsimics-common -lvtutils + // + // C:\MinGW\bin\g++.exe -shared \ + // C:\Users\rhart\simics\simics-6.0.169\config\project\exportmap.def \ + // pyiface-tsffs-interface-wrappers.obj pyiface-tsffs-interface-trampolines.obj \ + // module_id.obj -o tsffs-interface.dll \ + // -LC:/Users/rhart/hub\lib\gcc\x86_64-w64-mingw32\lib \ + // -LC:\Users\rhart\simics\simics-6.0.169\win64\bin \ + // C:\Users\rhart\simics\simics-6.0.169\win64\bin\python3.lib -lws2_32 \ + // -loleaut32 -lole32 -lbcrypt -luserenv -lntdll -lsimics-common -lvtutils + #[cfg(unix)] + let exportmap = simics_base + .join("config") + .join("project") + .join("exportmap.elf"); + #[cfg(unix)] + let exportmap_arg = format!("-Wl,--version-script,{}", exportmap.display()); + #[cfg(unix)] + let link_args = &["-z", "noexecstack", "-z", "relro", "-z", "now"]; + #[cfg(unix)] + let libs = &["-lsimics-common", "-lvtutils"]; + #[cfg(windows)] + let exportmap = simics_base + .join("config") + .join("project") + .join("exportmap.def"); + #[cfg(windows)] + let exportmap_arg = exportmap; + #[cfg(windows)] + let link_args: &[&str] = &[]; + #[cfg(windows)] + let libs = &[ + libpython_path_static.to_str().ok_or_else(|| { + Error::custom(format!( + "Failed to convert libpython path to string: {}", + libpython_path_static.display() + )) + })?, + "-lws2_32", + "-loleaut32", + "-lole32", + "-lbcrypt", + "-luserenv", + "-lntdll", + "-lsimics-common", + "-lvtutils", + ]; + Command::new("g++") + .arg("-shared") + .arg(&exportmap_arg) + .arg(interface_subdir.join(&pyiface_interface_wrappers_o)) + .arg(interface_subdir.join(&pyiface_interface_trampolines_o)) + .arg(interface_subdir.join(&module_id_o)) + .arg("-o") + .arg(interface_subdir.join(&interface_so)) + .arg("-Wl,--gc-sections") + .arg("-L") + .arg(simics_base.join(HOST_DIRNAME).join("bin")) + .args(link_args) + .arg(&libpython_path) + .args(libs) + .check() + .map_err(|e| Error::custom(format!("Failed to generate interface: {e}")))?; + + // /home/rhart/hub/tsffs/simics --batch-mode --quiet --no-copyright \ + // --no-module-cache --sign-module tsffs-interface.so + // + // C:\Users\rhart\hub\tsffs\simics.bat --batch-mode --quiet --no-copyright \ + // --no-module-cache --sign-module tsffs-interface.dll + Sign::new(interface_subdir.join(&interface_so)) + .map_err(|e| Error::custom(format!("Error signing interface: {e}")))? + .write(out_dir.join(&interface_so)) + .map_err(|e| Error::custom(format!("Error writing signed interface: {e}")))?; + + Ok(()) + } +} + +pub fn interface_impl(args: TokenStream, input: TokenStream) -> TokenStream { + let attr_args = match NestedMeta::parse_meta_list(args.into()) { + Ok(a) => a, + Err(e) => return TokenStream::from(Error::from(e).write_errors()), + }; + + let Some(name) = attr_args + .iter() + .find(|a| match a { + NestedMeta::Meta(Meta::NameValue(nv)) => nv.path.is_ident("name"), + _ => false, + }) + .and_then(|a| match a { + NestedMeta::Meta(Meta::NameValue(nv)) => match &nv.value { + Expr::Lit(l) => { + if let Lit::Str(s) = &l.lit { + Some(s.value()) + } else { + panic!("Invalid name value") + } + } + _ => panic!("Invalid name value"), + }, + _ => None, + }) + else { + return Error::custom(r#"'class' attribute should have a 'name = "class_name"' field"#) + .write_errors() + .into(); + }; + + // Get the `name = ""` attribute + let input = parse_macro_input!(input as syn::ItemImpl); + + if let Err(e) = CInterface::generate(&input, &name) { + return TokenStream::from(e.write_errors()); + } + + let interface = Interface { input, name }; + + quote!(#interface).into() +} diff --git a/simics-rs/simics-macro/src/lib.rs b/simics-rs/simics-macro/src/lib.rs new file mode 100644 index 00000000..a9546126 --- /dev/null +++ b/simics-rs/simics-macro/src/lib.rs @@ -0,0 +1,193 @@ +// Copyright (C) 2024 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 + +//! Derive/attribute macros for simics-api + +#![deny(clippy::unwrap_used)] +#![deny(missing_docs)] +#![forbid(unsafe_code)] + +use attr_value::{ + from_attr_value_dict_impl, from_attr_value_list_impl, into_attr_value_dict_impl, + into_attr_value_list_impl, +}; +use class::{class_derive_impl, class_impl}; +use conf_object::{as_conf_object_impl, from_conf_object_impl}; +use exception::simics_exception_impl; +use init::simics_init_impl; +use interface::interface_impl; +use proc_macro::TokenStream; + +mod attr_value; +mod class; +mod conf_object; +mod exception; +mod init; +mod interface; + +#[allow(non_snake_case)] +#[proc_macro_derive(IntoAttrValueList, attributes(attr_value))] +/// Derive Macro for implementing conversion into an `AttrValue` list, where each struct +/// field's value is an entry in the heterogeneous list. +/// +/// # Arguments +/// +/// At the field level (i.e. on each field of a struct deriving this attribute), the +/// following attributes are supported: +/// +/// * `#[attr_value(skip)]` - Do not include this field in the conversion. +/// * `#[attr_value(fallible)]` - If the field type does not implement `Into`, +/// use its implementation of `TryInto` instead. Whether this flag is necessary +/// cannot be automatically determined by this macro, so it must be specified manually. +pub fn IntoAttrValueList(input: TokenStream) -> TokenStream { + into_attr_value_list_impl(input) +} + +#[allow(non_snake_case)] +#[proc_macro_derive(IntoAttrValueDict, attributes(attr_value))] +/// Derive Macro for implementing conversion into an `AttrValue` dictionary, where each +/// struct field's key, value pair is an entry in the dictionary. +/// +/// # Arguments +/// +/// At the field level (i.e. on each field of a struct deriving this attribute), the +/// following attributes are supported: +/// +/// * `#[attr_value(skip)]` - Do not include this field in the conversion. +/// * `#[attr_value(fallible)]` - If the field type does not implement `Into`, +/// use its implementation of `TryInto` instead. Whether this flag is necessary +/// cannot be automatically determined by this macro, so it must be specified manually. +pub fn IntoAttrValueDict(input: TokenStream) -> TokenStream { + into_attr_value_dict_impl(input) +} + +#[allow(non_snake_case)] +#[proc_macro_derive(FromAttrValueList, attributes(attr_value))] +/// Derive Macro for implementing conversion from an `AttrValue` list into a struct, where +/// each entry in the list is a struct field's value. +/// +/// # Arguments +/// +/// At the field level (i.e. on each field of a struct deriving this attribute), the +/// following attributes are supported: +/// +/// * `#[attr_value(fallible)]` - If the field type does not implement `From`, +/// use its implementation of `TryFrom` instead. Whether this flag is necessary +/// cannot be automatically determined by this macro, so it must be specified manually. +pub fn FromAttrValueList(input: TokenStream) -> TokenStream { + from_attr_value_list_impl(input) +} + +#[allow(non_snake_case)] +#[proc_macro_derive(FromAttrValueDict, attributes(attr_value))] +/// Derive Macro for implementing conversion from an `AttrValue` dict into a struct, where +/// each key, value pair in the dict is a struct field's name, value pair. +/// +/// # Arguments +/// +/// At the field level (i.e. on each field of a struct deriving this attribute), the +/// following attributes are supported: +/// +/// * `#[attr_value(fallible)]` - If the field type does not implement `From`, +/// use its implementation of `TryFrom` instead. Whether this flag is necessary +/// cannot be automatically determined by this macro, so it must be specified manually. +pub fn FromAttrValueDict(input: TokenStream) -> TokenStream { + from_attr_value_dict_impl(input) +} + +#[allow(non_snake_case)] +#[proc_macro_derive(Class, attributes(class))] +/// Derive macro for implementing the `Class` trait for the annotated type +pub fn Class(input: TokenStream) -> TokenStream { + class_derive_impl(input) +} + +#[proc_macro_attribute] +/// Attribute macro for declaring a Simics class for a Rust struct type +pub fn class(args: TokenStream, input: TokenStream) -> TokenStream { + class_impl(args, input) +} + +#[allow(non_snake_case)] +#[proc_macro_derive(AsConfObject, attributes(conf_object))] +/// Derive macro for implementing conversion to raw `ConfObject` pointers. +/// This macro implements the `AsConfObject` trait for the annotated type. +pub fn AsConfObject(input: TokenStream) -> TokenStream { + as_conf_object_impl(input) +} + +#[allow(non_snake_case)] +#[proc_macro_derive(FromConfObject, attributes(conf_object))] +/// Derive macro for implementing conversion from raw `ConfObject` pointers. +/// This macro implements the `FromConfObject` trait for the annotated type. +/// +/// # Arguments +/// +/// At the item level (i.e. on the struct deriving this attribute), the following +/// attributes are supported: +/// +/// * `#[conf_object(skip_from)]` - Skip also implementing `From<*_ ConfObject>` which is the +/// default behavior. +pub fn FromConfObject(input: TokenStream) -> TokenStream { + from_conf_object_impl(input) +} + +#[proc_macro_attribute] +/// Marks a function as being a SIMICS API that can throw exceptions in called FFI APIs. +/// A SIMICS exception can be generated by most APIs. This macro makes the function +/// private, wraps it, and adds the requisite code to check for and report exceptions. +/// `clear_exception` should *not* be called inside the wrapped function. `last_error` +/// may be called, however, as any exceptions will be cleared after the wrapped function +/// returns. +/// +/// # Examples +/// +/// Add the `#[simics_exception]` attribute to a function which calls a SIMICS API that can throw +/// exceptions. The function will be wrapped and the requisite code to check for and report +/// exceptions will be added. +/// +/// ```rust,ignore +/// #[simics_exception] +/// pub fn write_byte(physical_memory: *mut ConfObject, physical_addr: u64, byte: u8) { +/// unsafe { SIM_write_byte(physical_memory, physical_addr, byte) }; +/// } +/// ``` +/// +/// This expands to: +/// +/// ```rust,ignore +/// fn _write_byte(physical_memory: *mut ConfObject, physical_addr: u64, byte: u8) { +/// unsafe { SIM_write_byte(physical_memory, physical_addr, byte) }; +/// } +/// +/// pub fn write_byte(physical_memory: *mut ConfObject, physical_addr: u64, byte: u8) -> Result<()> { +/// let res = _write_byte(physical_memory, physical_addr, byte); +/// +/// match simics::get_pending_exception() { +/// SimException::SimExc_No_Exception => Ok(()), +/// exception => { +/// clear_exception(); +/// Err(Error::from(exception)) +/// } +/// } +/// } +/// ``` +pub fn simics_exception(args: TokenStream, input: TokenStream) -> TokenStream { + simics_exception_impl(args, input) +} + +#[proc_macro_attribute] +/// Mark a function as being the initializer of a Simics module. This function will be called on +/// module load and should be used to initialize the module. This macro will add the requisite +/// code to call the function on module load. +pub fn simics_init(args: TokenStream, input: TokenStream) -> TokenStream { + simics_init_impl(args, input) +} + +#[proc_macro_attribute] +/// Declare a struct implementation as a SIMICS API interface. This macro will add the +/// requisite code to implement the interface which allows methods in the impl to be called +/// from Simics scripts in Python or the Simics language. +pub fn interface(args: TokenStream, input: TokenStream) -> TokenStream { + interface_impl(args, input) +} diff --git a/simics-rs/simics-package/Cargo.toml b/simics-rs/simics-package/Cargo.toml new file mode 100644 index 00000000..53029798 --- /dev/null +++ b/simics-rs/simics-package/Cargo.toml @@ -0,0 +1,39 @@ +# Copyright (C) 2024 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + +[package] +name = "simics-package" +version = "0.1.0" +authors = ["Rowan Hart "] +edition = "2021" +description = "Intel Simics Simulator module packaging tools" +documentation = "" +readme = "../README.md" +homepage = "" +repository = "" +license = "Apache-2.0" +keywords = ["simics", "simulator", "intel", "x86", "risc", "modeling"] +categories = [ + "simulation", + "virtualization", + "hardware-support", + "api-bindings", + "emulators", +] + +[dependencies] +artifact-dependency = "0.1.7" +cargo-subcommand = "0.12.0" +cargo_metadata = "0.18.1" +command-ext = "0.1.2" +flate2 = "1.0.28" +serde = { version = "1.0.197", features = ["derive"] } +serde_json = "1.0.114" +serde_yaml = "0.9.32" +tar = "0.4.40" +thiserror = "1.0.57" +typed-builder = "0.18.1" +walkdir = "2.4.0" + +[target.'cfg(unix)'.dependencies] +libc = "0.2.153" diff --git a/simics-rs/simics-package/src/artifacts/mod.rs b/simics-rs/simics-package/src/artifacts/mod.rs new file mode 100644 index 00000000..96cc2062 --- /dev/null +++ b/simics-rs/simics-package/src/artifacts/mod.rs @@ -0,0 +1,172 @@ +// Copyright (C) 2024 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 + +//! Artifacts for a package. Typically, these artifacts are the main library for the package and +//! any interfaces which are built as separate libraries by the interface declaration. + +use crate::{Error, Result, HOST_DIRNAME}; +use artifact_dependency::ARTIFACT_NAMEPARTS; +use cargo_subcommand::Subcommand; +use std::{fs::read_dir, path::PathBuf}; +use typed_builder::TypedBuilder; + +#[derive(TypedBuilder, Debug, Clone, Default)] +/// A set of artifacts that will be added into a Simics package +pub struct PackageArtifacts { + /// Source paths of signed libraries in the build directory. These will be copied into + /// $(HOST)/lib/ + pub libs: Vec, + /// Files mapping of in-package to on-disk files which will be used to generate the + /// package spec + pub files: Vec<(String, String)>, +} + +impl PackageArtifacts { + /// Create a new `PackageArtifacts` from a `Subcommand` by reading the crate state and + /// obtaining build results including macro-built interfaces. + pub fn from_subcommand(subcommand: &Subcommand) -> Result { + let module_cdylib = subcommand + .artifacts() + .map(|a| { + subcommand.build_dir(subcommand.target()).join(format!( + "{}{}{}", + ARTIFACT_NAMEPARTS.0, + a.name.replace('_', "-"), + ARTIFACT_NAMEPARTS.1 + )) + }) + .find(|p| p.exists()) + .ok_or_else(|| Error::CdylibArtifactNotFound { + package: subcommand.package().to_string(), + })?; + + let module_artifact = PathBuf::from({ + let file_name = module_cdylib + .file_name() + .ok_or_else(|| Error::FilenameNotFound { + path: module_cdylib.to_path_buf(), + })? + .to_str() + .ok_or_else(|| Error::FilenameNotFound { + path: module_cdylib.to_path_buf(), + })?; + let module_cdylib_dir = + module_cdylib + .parent() + .ok_or_else(|| Error::ParentNotFound { + path: module_cdylib.to_path_buf(), + })?; + + module_cdylib_dir + .join(file_name.replace('_', "-")) + .to_str() + .ok_or_else(|| Error::FilenameNotFound { + path: module_cdylib.to_path_buf(), + })? + }); + + let target_profile_build_dir = subcommand.build_dir(subcommand.target()).join("build"); + + // Find interfaces + let target_profile_build_subdirs = read_dir(target_profile_build_dir)? + .filter_map(|rd| rd.ok()) + .map(|de| de.path()) + .filter(|p| { + p.is_dir() + && p.file_name().is_some_and(|n| { + n.to_str() + .is_some_and(|ns| ns.starts_with(subcommand.package())) + }) + && !p + .join(format!("build-script-build{}", ARTIFACT_NAMEPARTS.4)) + .exists() + && p.join("out").is_dir() + }) + .collect::>(); + + // Source, Destination of interface libraries + let cdylib_out_artifacts = target_profile_build_subdirs + .iter() + .map(|bd| bd.join("out")) + .map(|od| { + read_dir(od).map(|rd| { + Ok(rd + .filter_map(|rd| rd.ok()) + .map(|de| de.path()) + .filter(|p| { + p.file_name().is_some_and(|n| { + n.to_str().is_some_and(|ns| { + ns.starts_with(ARTIFACT_NAMEPARTS.0) + && ns.ends_with(ARTIFACT_NAMEPARTS.1) + }) + }) + }) + .collect::>()) + })? + }) + .collect::>>()? + .into_iter() + .flatten() + .map(|a| { + a.file_name() + .and_then(|n| n.to_str()) + .ok_or_else(|| Error::FilenameNotFound { path: a.clone() }) + .map(|t| (a.clone(), subcommand.build_dir(subcommand.target()).join(t))) + }) + .collect::>>()?; + + let cdylib_out_artifacts = cdylib_out_artifacts + .iter() + .map(|a| a.1.clone()) + .collect::>(); + + let libs = vec![module_artifact] + .into_iter() + .chain(cdylib_out_artifacts) + .collect::>(); + + let host_dir = PathBuf::from(HOST_DIRNAME); + let lib_dir = host_dir.join("lib"); + + // Build the mapping from in-package relative path (which will be prefixed with the + // package directory name) to the on-disk path the file currently resides at. This is + // used later to generate the package tarball by appending all of these files at their + // correct locations + let files = libs + .iter() + .map(|file_path| { + file_path + .canonicalize() + .map_err(Error::from) + .and_then(|file_path| { + file_path + .file_name() + .ok_or_else(|| Error::FilenameNotFound { + path: file_path.clone(), + }) + .and_then(|file_name| { + lib_dir + .join(file_name) + .to_str() + .ok_or_else(|| Error::PathConversionError { + path: lib_dir.join(file_name), + }) + .and_then(|packaged_file_path| { + Ok(( + packaged_file_path.to_string(), + file_path + .to_str() + .ok_or_else(|| Error::PathConversionError { + path: file_path.clone(), + })? + .to_string(), + )) + }) + }) + }) + }) + .collect::>>()?; + + Ok(Self { libs, files }) + } +} diff --git a/simics-rs/simics-package/src/error/mod.rs b/simics-rs/simics-package/src/error/mod.rs new file mode 100644 index 00000000..fd9262c0 --- /dev/null +++ b/simics-rs/simics-package/src/error/mod.rs @@ -0,0 +1,138 @@ +// Copyright (C) 2024 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 + +//! Error types + +use cargo_metadata::Target; +use serde_json::Value; +use std::path::PathBuf; + +#[derive(Debug, thiserror::Error)] +/// An error raised during the packaging process +pub enum Error { + #[error("No package {name} found in metadata")] + /// No package found in metadata + PackageNotFound { + /// Package name + name: String, + }, + #[error("Invalid value build ID namespace {value:?} in 'package.metadata.simics.build-id-namespace = \"\"' field. Expected string.")] + /// Invalid value build ID namespace + InvalidBuildIdNamespace { + /// The invalid value + value: Value, + }, + #[error("No package-number field found in metadata for {manifest}. Missing 'package.metadata.simics.package-number = 99999' to Cargo.toml?")] + /// No package number found in metadata + PackageNumberNotFound { + /// Path to the manifest + manifest: PathBuf, + }, + #[error("Invalid package number {value} in 'package.metadata.simics.package-number = 99999' field. Expected integer.")] + /// Invalid package number + InvalidPackageNumber { + /// The invalid value + value: Value, + }, + #[error("Invalid confidentiality {value:?} in 'package.metadata.simics.confidentiality = \"\"' field. Expected string.")] + /// Invalid confidentiality + InvalidConfidentiality { + /// The invalid value + value: Value, + }, + #[error("Invalid access label {value:?} in 'package.metadata.simics.access-labels = [\"\", \"\"]' field. Expected string.")] + /// Invalid access label + InvalidAccessLabel { + /// The invalid value + value: Value, + }, + #[error("No cdylib target in {targets:?}")] + /// No cdylib target found + CdylibTargetNotFound { + /// The set of targets not containing a cdylib + targets: Vec, + }, + #[error("No parent found for path {path:?}")] + /// No parent found + ParentNotFound { + /// The path with missing parent + path: PathBuf, + }, + #[error("No cdylib artifact found for {package:?}. Ensure the build succeeded and there is a [lib] entry in Cargo.toml with 'crate-type = [\"cdylib\"]'.")] + /// No cdylib artifact found + CdylibArtifactNotFound { + /// The package with no cdylib artifact + package: String, + }, + #[error("Failed to convert path {path:?} to string")] + /// Failed to convert path to string + PathConversionError { + /// The path that could not be converted + path: PathBuf, + }, + #[error("{path:?} is not a directory")] + /// Not a directory + NotADirectory { + /// The path that is not a directory + path: PathBuf, + }, + #[error("Filename for {path:?} not found")] + /// Filename not found + FilenameNotFound { + /// The path with no filename + path: PathBuf, + }, + #[error("Simics package metadata not found in manifest at {manifest_path:?}. Ensure there is a [package.metadata.simics] entry in Cargo.toml.")] + /// Simics package metadata not found + PackageMetadataNotFound { + /// The path to the manifest with no package metadata + manifest_path: PathBuf, + }, + #[error("Package metadata field {field_name} missing")] + /// Package metadata field not found + PackageMetadataFieldNotFound { + /// The missing field name + field_name: String, + }, + #[error("Package specifications is empty")] + /// Package specifications is empty + PackageSpecNotFound, + #[error("Error writing package file to {path:?}: {source}")] + /// Error writing package file + WritePackageError { + /// The path to the package file + path: PathBuf, + /// The underlying error + source: std::io::Error, + }, + #[error("Non-addon type packages are not supported")] + /// Non-addon type packages are not supported + NonAddonPackage, + #[error(transparent)] + /// Cargo metadata error + CargoMetadataError(#[from] cargo_metadata::Error), + #[error(transparent)] + /// Parse integer error + ParseIntError(#[from] std::num::ParseIntError), + #[error(transparent)] + /// IO error + IoError(#[from] std::io::Error), + #[error(transparent)] + /// Strip prefix error + StripPrefixError(#[from] std::path::StripPrefixError), + #[error(transparent)] + /// Serde json error + SerdeJsonError(#[from] serde_json::Error), + #[error(transparent)] + /// Serde yaml error + SerdeYamlError(#[from] serde_yaml::Error), + #[error(transparent)] + /// Utf8 error + Utf8Error(#[from] std::str::Utf8Error), + #[error(transparent)] + /// System time error + SystemTimeError(#[from] std::time::SystemTimeError), +} + +/// Simics packaging result type +pub type Result = std::result::Result; diff --git a/simics-rs/simics-package/src/lib.rs b/simics-rs/simics-package/src/lib.rs new file mode 100644 index 00000000..6c869580 --- /dev/null +++ b/simics-rs/simics-package/src/lib.rs @@ -0,0 +1,18 @@ +// Copyright (C) 2024 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 + +//! Utilities for creating Simics ISPM Packages from Rust crates + +#![deny(missing_docs)] + +pub mod artifacts; +pub mod error; +pub mod package; +pub mod spec; +pub mod util; + +pub use artifacts::*; +pub use error::*; +pub use package::*; +pub use spec::*; +pub use util::*; diff --git a/simics-rs/simics-package/src/package/mod.rs b/simics-rs/simics-package/src/package/mod.rs new file mode 100644 index 00000000..a1abae8d --- /dev/null +++ b/simics-rs/simics-package/src/package/mod.rs @@ -0,0 +1,259 @@ +// Copyright (C) 2024 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 + +//! An ISPM package which can be built from a subcommand invocation and output to a directory +//! on disk. + +use crate::{Error, IspmMetadata, PackageArtifacts, PackageInfo, PackageSpec, Result}; +use cargo_subcommand::Subcommand; +use flate2::{write::GzEncoder, Compression}; +#[cfg(unix)] +use std::time::SystemTime; +use std::{ + fs::write, + path::{Path, PathBuf}, +}; +use tar::{Builder, Header}; +use typed_builder::TypedBuilder; + +#[cfg(unix)] +/// The directory name for the linux host +pub const HOST_DIRNAME: &str = "linux64"; + +#[cfg(windows)] +/// The directory name for the windows host +pub const HOST_DIRNAME: &str = "win64"; + +#[derive(TypedBuilder, Debug, Clone)] +/// A package, which is built from a specification written in a cargo manifest and a set of +/// artifacts pulled from the target profile directory +pub struct Package { + /// The specification, which is written in [package.metadata.simics] in the crate manifest + /// of the crate to package + pub spec: PackageSpec, + /// The target profile directory from which to pull artifacts and output the built package + pub target_profile_dir: PathBuf, +} + +impl Package { + /// The name of the inner package file which decompresses to the package directory + pub const INNER_PACKAGE_FILENAME: &'static str = "package.tar.gz"; + /// The name of the file containing metadata for ISPM to use when installing the package + pub const METADATA_FILENAME: &'static str = "ispm-metadata"; + /// The name of an addon package type + pub const ADDON_TYPE: &'static str = "addon"; + /// Default level used by simics + pub const COMPRESSION_LEVEL: u32 = 6; + + /// Instantiate a package from a cargo subcommand input, which is parsed from command line + /// arguments + pub fn from_subcommand(subcommand: &Subcommand) -> Result { + let target_profile_dir = subcommand.build_dir(subcommand.target()); + + let spec = PackageSpec::from_subcommand(subcommand)? + .with_artifacts(&PackageArtifacts::from_subcommand(subcommand)?); + + Ok(Self { + spec, + target_profile_dir, + }) + } + + /// Construct the directory name of the package after expansion. It is an error to build a + /// Rust crate package into any type other than an addon package (simics base is not a Rust + /// package) + pub fn package_dirname(&self) -> Result { + if self.spec.typ == Self::ADDON_TYPE { + Ok(format!( + "simics-{}-{}", + self.spec.package_name, self.spec.version + )) + } else { + Err(Error::NonAddonPackage) + } + } + + /// Construct the full package name, which includes the host directory name + pub fn full_package_name(&self) -> String { + format!("{}-{}", self.spec.package_name, self.spec.host) + } + + /// Construct the package name, which is the package number and version, without an + /// extension + pub fn package_name(&self) -> String { + format!( + "simics-pkg-{}-{}", + self.spec.package_number, self.spec.version + ) + } + + /// Construct the package name with the host directory name + pub fn package_name_with_host(&self) -> String { + format!("{}-{}", self.package_name(), self.spec.host) + } + + /// Construct the filename for the output of this ISPM package + pub fn package_filename(&self) -> String { + format!("{}.ispm", self.package_name_with_host()) + } + + #[cfg(unix)] + /// Set common options on a tar header. On Unix, the modified time is set to the current + /// time and the uid/gid are set to the current user. + pub fn set_header_common(header: &mut Header) -> Result<()> { + use libc::{getgid, getpwuid, getuid}; + use std::ffi::CStr; + + header.set_mtime( + SystemTime::now() + .duration_since(SystemTime::UNIX_EPOCH)? + .as_secs(), + ); + header.set_uid(unsafe { getuid() } as u64); + header.set_gid(unsafe { getgid() } as u64); + let username = unsafe { + CStr::from_ptr( + getpwuid(getuid()) + .as_ref() + .ok_or_else(|| Error::PackageMetadataFieldNotFound { + field_name: "username".to_string(), + })? + .pw_name, + ) + } + .to_str()? + .to_string(); + let groupname = unsafe { + CStr::from_ptr( + getpwuid(getuid()) + .as_ref() + .ok_or_else(|| Error::PackageMetadataFieldNotFound { + field_name: "groupname".to_string(), + })? + .pw_name, + ) + } + .to_str()? + .to_string(); + header.set_username(&username)?; + header.set_groupname(&groupname)?; + header.set_mode(0o755); + + Ok(()) + } + + #[cfg(windows)] + /// On windows, no additional options need to be set for headers and this method is a no-op + pub fn set_header_common(_header: &mut Header) -> Result<()> { + Ok(()) + } + + /// Create the inner package.tar.gz tarball which expands to the simics package. + pub fn create_inner_tarball(&self) -> Result<(Vec, usize)> { + let tar_gz = Vec::new(); + let encoder = GzEncoder::new(tar_gz, Compression::new(Self::COMPRESSION_LEVEL)); + let mut tar = Builder::new(encoder); + // The uncompressed size is used by simics, and must be calculated the way simics + // expects + let mut uncompressed_size = 0; + + // Add the packageinfo to the inner package tarball + let package_info = PackageInfo::from(&self.spec); + let package_info_string = serde_yaml::to_string(&package_info)? + &package_info.files(); + let package_info_data = package_info_string.as_bytes(); + uncompressed_size += package_info_data.len(); + let mut metadata_header = Header::new_gnu(); + metadata_header.set_size(package_info_data.len() as u64); + Self::set_header_common(&mut metadata_header)?; + tar.append_data( + &mut metadata_header, + PathBuf::from(self.package_dirname()?) + .join("packageinfo") + .join(self.full_package_name()), + package_info_data, + )?; + self.spec.files.iter().try_for_each(|(pkg_loc, src_loc)| { + let src_path = PathBuf::from(src_loc); + uncompressed_size += src_path.metadata()?.len() as usize; + tar.append_path_with_name(src_path, pkg_loc)?; + Ok::<(), Error>(()) + })?; + + tar.finish()?; + + Ok((tar.into_inner()?.finish()?, uncompressed_size)) + } + + /// Create the outer tarball (actually an ISPM package) containing the inner package and a + /// metadata file used by ISPM + pub fn create_tarball(&self) -> Result> { + let tar_gz = Vec::new(); + let encoder = GzEncoder::new(tar_gz, Compression::new(Self::COMPRESSION_LEVEL)); + let mut tar = Builder::new(encoder); + let (inner_tarball, uncompressed_size) = self.create_inner_tarball()?; + + let mut ispm_metadata = IspmMetadata::from(&self.spec); + // This size should be exactly equal to the total size of the files in the inner tarball + // (equal to the size given by du -sb ) and does not include the + // size of the ispm-metadata file itself + ispm_metadata.uncompressed_size = uncompressed_size; + + let ispm_metadata_string = serde_json::to_string(&ispm_metadata)?; + let ispm_metadata_data = ispm_metadata_string.as_bytes(); + let mut ispm_metadata_header = Header::new_gnu(); + ispm_metadata_header.set_size(ispm_metadata_data.len() as u64); + Self::set_header_common(&mut ispm_metadata_header)?; + tar.append_data( + &mut ispm_metadata_header, + Self::METADATA_FILENAME, + ispm_metadata_data, + )?; + + let mut inner_tarball_header = Header::new_gnu(); + inner_tarball_header.set_size(inner_tarball.len() as u64); + Self::set_header_common(&mut inner_tarball_header)?; + tar.append_data( + &mut inner_tarball_header, + Self::INNER_PACKAGE_FILENAME, + inner_tarball.as_slice(), + )?; + + tar.finish()?; + + Ok(tar.into_inner()?.finish()?) + } + + /// Build the package, writing it to the directory specified by `output` and returning + /// the path to the package + pub fn build

(&mut self, output: P) -> Result + where + P: AsRef, + { + let package_dirname = PathBuf::from(self.package_dirname()?); + + // Rewrite the in-package paths of the spec's files so they begin with the package + // directory name. This must be done *before* creating the inner tarball and before + // the package info structure is created because it needs these prefix paths to be + // present + self.spec.files.iter_mut().try_for_each(|pkg_src_loc| { + pkg_src_loc.0 = package_dirname + .join(&pkg_src_loc.0) + .to_str() + .ok_or_else(|| Error::PathConversionError { + path: package_dirname.join(&pkg_src_loc.0), + })? + .to_string(); + Ok::<(), Error>(()) + })?; + + let tarball = self.create_tarball()?; + let path = output.as_ref().join(self.package_filename()); + + write(&path, tarball).map_err(|e| Error::WritePackageError { + path: path.clone(), + source: e, + })?; + + Ok(path) + } +} diff --git a/simics-rs/simics-package/src/spec/mod.rs b/simics-rs/simics-package/src/spec/mod.rs new file mode 100644 index 00000000..4559b926 --- /dev/null +++ b/simics-rs/simics-package/src/spec/mod.rs @@ -0,0 +1,556 @@ +// Copyright (C) 2024 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 + +//! Specifications for internal file formats used in the Simics packaging process + +use std::{iter::once, path::PathBuf}; + +use crate::{Error, PackageArtifacts, Result, HOST_DIRNAME}; +use cargo_metadata::{MetadataCommand, Package}; +use cargo_subcommand::Subcommand; +use serde::{Deserialize, Serialize}; +use serde_json::from_value; + +#[derive(Debug, Clone, Serialize, Deserialize)] +/// Implements the Schema for package-specs.json +/// { +/// "$schema": "https://json-schema.org/draft/2020-12/schema", +/// "type": "array", +/// "title": "Simics Package Specification file", +/// "items": { +/// "type": "object", +/// "required": [ +/// "package-name", "package-number", "name", "description", +/// "host", "version", "build-id", "build-id-namespace", +/// "confidentiality", "files" +/// ], +/// "properties": { +/// "package-name": { +/// "type": "string" +/// }, +/// "package-number": { +/// "anyOf": [{"type": "integer"}, {"type": "null"}] +/// }, +/// "name": { +/// "type": "string" +/// }, +/// "description": { +/// "type": "string" +/// }, +/// "host": { +/// "type": "string" +/// }, +/// "version": { +/// "type": "string" +/// }, +/// "build-id": { +/// "type": "integer" +/// }, +/// "build-id-namespace": { +/// "type": "string" +/// }, +/// "confidentiality": { +/// "type": "string" +/// }, +/// "files": { +/// "type": "object", +/// "patternProperties": { +/// "^[^\\:]*/$": { +/// "type": "object", +/// "properties": { +/// "source-directory": { +/// "type": "string" +/// }, +/// "file-list": { +/// "type": "string" +/// }, +/// "suffixes": { +/// "type": "array", +/// "items": { +/// "type": "string" +/// } +/// } +/// } +/// }, +/// "^[^\\:]*[^/]$": { +/// "type": "string" +/// } +/// } +/// }, +/// "type": { +/// "enum": ["addon", "base"] +/// }, +/// "disabled": { +/// "type": "boolean" +/// }, +/// "doc-title": { +/// "anyOf": [{"type": "string"}, {"type": "null"}] +/// }, +/// "make-targets": { +/// "type": "array", +/// "items": { +/// "type": "string" +/// } +/// } +/// } +/// } +/// } +pub struct PackageSpec { + #[serde(rename = "package-name")] + /// The one-word alphanumeric package name, e.g. 'TSFFS-Fuzzer' in Camel-Kebab-Case + pub package_name: String, + #[serde(rename = "package-number")] + /// The package number. This is the only field that must be included in the + /// crate metadata. It must be *globally* unique. + pub package_number: isize, + /// The human-readable name of the package e.g. 'TSFFS Fuzzer', the package name with + /// dashes replaced with spaces. + pub name: String, + /// A description of the package, e.g. 'TSFFS: The Target Software Fuzzer for SIMICS' + pub description: String, + /// The host this package is built for, either 'win64' or 'linux64' + pub host: String, + /// The version number for this package, e.g. '6.0.2' or '6.0.pre6' + pub version: String, + #[serde(rename = "build-id")] + /// The build ID for this package, later versions should have later IDs. This number should + /// monotonically increase and only has meaning between two packages with the same + /// `build_id_namespace` + pub build_id: isize, + #[serde(rename = "build-id-namespace")] + /// An identifier for the build ID, e.g. 'tsffs' + pub build_id_namespace: String, + /// The confidentiality of the package, e.g. 'Public', but can be any string value based on + /// the authors confidentiality requirements. + pub confidentiality: String, + #[serde(default)] + /// A mapping from the path in the package to the full path on disk of the file. + pub files: Vec<(String, String)>, + #[serde(rename = "type")] + /// Either "addon" or "base", all packages should be 'addon' + pub typ: String, + /// Whether the package is disabled, default is not disabled + pub disabled: bool, + #[serde(rename = "doc-title")] + /// The title used in documentation for the package + pub doc_title: String, + #[serde(rename = "make-targets")] + /// The list of targets to build for this package + pub make_targets: Vec, + #[serde(rename = "include-release-notes")] + /// Whether release notes should be included in the package, not included by default + pub include_release_notes: bool, + #[serde(rename = "ip-plans")] + /// Plans for the IP of this package. Typically empty. + pub ip_plans: Vec, + #[serde(rename = "legacy-doc-make-targets")] + /// Legacy support for doc make targets. Typically empty. + pub legacy_doc_make_targets: Vec, + #[serde(rename = "release-notes")] + /// Release notes. Typically empty. + pub release_notes: Vec, + #[serde(rename = "access-labels")] + /// Labels for managing package access, e.g. 'external-intel' + pub access_labels: Vec, +} + +impl PackageSpec { + /// Create a package spec by reading the manifest specified by a subcommand + pub fn from_subcommand(subcommand: &Subcommand) -> Result { + let manifest_spec = ManifestPackageSpec::from_subcommand(subcommand)?; + Ok(Self { + package_name: manifest_spec.package_name.ok_or_else(|| { + Error::PackageMetadataFieldNotFound { + field_name: "package_name".to_string(), + } + })?, + package_number: manifest_spec.package_number.ok_or_else(|| { + Error::PackageMetadataFieldNotFound { + field_name: "package_number".to_string(), + } + })?, + name: manifest_spec + .name + .ok_or_else(|| Error::PackageMetadataFieldNotFound { + field_name: "name".to_string(), + })?, + description: manifest_spec.description.ok_or_else(|| { + Error::PackageMetadataFieldNotFound { + field_name: "description".to_string(), + } + })?, + host: manifest_spec + .host + .ok_or_else(|| Error::PackageMetadataFieldNotFound { + field_name: "host".to_string(), + })?, + version: manifest_spec + .version + .ok_or_else(|| Error::PackageMetadataFieldNotFound { + field_name: "version".to_string(), + })?, + build_id: manifest_spec.build_id.ok_or_else(|| { + Error::PackageMetadataFieldNotFound { + field_name: "build_id".to_string(), + } + })?, + build_id_namespace: manifest_spec.build_id_namespace.ok_or_else(|| { + Error::PackageMetadataFieldNotFound { + field_name: "build_id_namespace".to_string(), + } + })?, + confidentiality: manifest_spec.confidentiality.ok_or_else(|| { + Error::PackageMetadataFieldNotFound { + field_name: "confidentiality".to_string(), + } + })?, + files: manifest_spec.files.clone(), + typ: manifest_spec + .typ + .ok_or_else(|| Error::PackageMetadataFieldNotFound { + field_name: "type".to_string(), + })?, + disabled: manifest_spec.disabled, + doc_title: manifest_spec.doc_title.ok_or_else(|| { + Error::PackageMetadataFieldNotFound { + field_name: "doc_title".to_string(), + } + })?, + make_targets: manifest_spec.make_targets.clone(), + include_release_notes: manifest_spec.include_release_notes, + ip_plans: manifest_spec.ip_plans.clone(), + legacy_doc_make_targets: manifest_spec.legacy_doc_make_targets.clone(), + release_notes: manifest_spec.release_notes.clone(), + access_labels: manifest_spec.access_labels.clone(), + }) + } + + /// Add a set of artifacts (not specified in the manifest) to the specification + pub fn with_artifacts(mut self, artifacts: &PackageArtifacts) -> Self { + self.files = artifacts.files.clone(); + self + } +} + +#[derive(Debug, Clone, Serialize, Deserialize, Default)] +/// A package specification deserialized from the +/// +/// [package.metadata.simics] +/// +/// field in Cargo.toml. This specification is used to generate the real specification, and many +/// options left optional in the manifest are not optional to Simics. Sane defaults are provided +/// for all options. +pub struct ManifestPackageSpec { + #[serde(rename = "package-name", default)] + /// The one-word alphanumeric package name, e.g. 'TSFFS-Fuzzer' in Camel-Kebab-Case + package_name: Option, + #[serde(rename = "package-number", default)] + /// The package number. This is the only field that must be included in the + /// crate metadata. It must be *globally* unique. + package_number: Option, + #[serde(default)] + /// The human-readable name of the package e.g. 'TSFFS Fuzzer', the package name with + /// dashes replaced with spaces. + name: Option, + #[serde(default)] + /// A description of the package, e.g. 'TSFFS: The Target Software Fuzzer for SIMICS' + description: Option, + #[serde(default)] + /// The host this package is built for, either 'win64' or 'linux64' + host: Option, + #[serde(default)] + /// The version number for this package, e.g. '6.0.2' or '6.0.pre6' + version: Option, + #[serde(rename = "build-id", default)] + /// The build ID for this package, later versions should have later IDs. This number should + /// monotonically increase and only has meaning between two packages with the same + /// `build_id_namespace` + build_id: Option, + #[serde(rename = "build-id-namespace", default)] + /// An identifier for the build ID, e.g. 'tsffs' + build_id_namespace: Option, + #[serde(default)] + /// The confidentiality of the package, e.g. 'Public', but can be any string value based on + /// the authors confidentiality requirements. + confidentiality: Option, + #[serde(default)] + /// A mapping from the path in the package to the full path on disk of the file. + files: Vec<(String, String)>, + #[serde(rename = "type", default)] + // Either "addon" or "base", all packages should be 'addon' + typ: Option, + #[serde(default)] + /// Whether the package is disabled, default is not disabled + disabled: bool, + #[serde(rename = "doc-title", default)] + /// The title used in documentation for the package + doc_title: Option, + #[serde(rename = "make-targets", default)] + /// The list of targets to build for this package + make_targets: Vec, + #[serde(rename = "include-release-notes", default)] + /// Whether release notes should be included in the package, not included by default + include_release_notes: bool, + #[serde(rename = "ip-plans", default)] + ip_plans: Vec, + #[serde(rename = "legacy-doc-make-targets", default)] + legacy_doc_make_targets: Vec, + #[serde(rename = "release-notes", default)] + release_notes: Vec, + #[serde(rename = "access-labels", default)] + /// Labels for managing package access, e.g. 'external-intel' + access_labels: Vec, +} + +impl ManifestPackageSpec { + /// Return the default type when deserializing + pub fn default_type() -> String { + "addon".to_string() + } +} + +impl ManifestPackageSpec { + /// Create a specification from the package metadata returned from a cargo metadata + /// invocation + pub fn from_package(package: &Package) -> Result { + let mut spec: ManifestPackageSpec = if let Some(spec) = package.metadata.get("simics") { + from_value(spec.clone()).map_err(Error::from)? + } else { + ManifestPackageSpec::default() + }; + + if spec.package_number.is_none() { + // Zero is a safe default for package number, but it is not a valid package number + // so a real package must obtain a package number when it is published. + spec.package_number = Some(0); + } + + if spec.package_name.is_none() { + spec.package_name = Some(package.name.clone()); + } + + if spec.name.is_none() { + spec.name = Some(package.name.clone()); + } + + if spec.description.is_none() { + spec.description = package.description.clone(); + } + + if spec.host.is_none() { + spec.host = Some(HOST_DIRNAME.to_string()); + } + + if spec.version.is_none() { + spec.version = Some(package.version.to_string()); + } + + if spec.build_id.is_none() { + spec.build_id = Some( + package + .version + .to_string() + .chars() + .filter(|c| c.is_numeric()) + .collect::() + .parse() + .map_err(Error::from)?, + ) + } + + if spec.build_id_namespace.is_none() { + spec.build_id_namespace = Some(package.name.clone()); + } + + if spec.confidentiality.is_none() { + spec.confidentiality = Some("Public".to_string()); + } + + if spec.typ.is_none() { + spec.typ = Some("addon".to_string()); + } + + if spec.doc_title.is_none() { + spec.doc_title = Some(package.name.clone()); + } + + Ok(spec) + } + + /// Read the manifest specified by the subcommand and parse it into a package specification. + pub fn from_subcommand(subcommand: &Subcommand) -> Result { + Self::from_package( + MetadataCommand::new() + .manifest_path(subcommand.manifest()) + .no_deps() + .exec()? + .packages + .iter() + .find(|p| p.name == subcommand.package()) + .ok_or_else(|| Error::PackageNotFound { + name: subcommand.package().to_string(), + })?, + ) + } +} + +#[derive(Debug, Clone, Serialize, Deserialize)] +/// A list of package specifications. This data structure can be written to a package-specs.json +/// file and consumed by Simics packaging utilities. +pub struct PackageSpecs(pub Vec); + +impl PackageSpecs { + /// Generate the list of specifications from a subcommand input + pub fn from_subcommand(subcommand: &Subcommand) -> Result { + Ok(Self(vec![PackageSpec::from_subcommand(subcommand)?])) + } +} + +#[derive(Debug, Clone, Serialize, Deserialize)] +/// Output format for the ispm-metadata file at the top-level of the package. +/// It contains a subset of the package spec information +pub struct IspmMetadata { + /// The human-readable name of the package + pub name: String, + #[serde(rename = "packageNumber")] + /// The package number + pub package_number: isize, + /// The package version + pub version: String, + #[serde(rename = "packageName")] + /// The package name, which should be Camel-Kebab-Cased. + pub package_name: String, + /// The package kind, typically "addon" + pub kind: String, + /// The host supporting this package, either linux64 or win64 + pub host: String, + /// The confidentiality setting of this package + pub confidentiality: String, + #[serde(rename = "buildId")] + /// The build ID of this package + pub build_id: String, + #[serde(rename = "buildIdNamespace")] + /// The namespace for which the build ID of this package is valid + pub build_id_namespace: String, + /// The description of this package + pub description: String, + #[serde(rename = "uncompressedSize")] + /// The size of the inner package.tar.gz file as given by du -sb

+ pub uncompressed_size: usize, +} + +impl From<&PackageSpec> for IspmMetadata { + fn from(value: &PackageSpec) -> Self { + let value = value.clone(); + Self { + name: value.name, + package_number: value.package_number, + version: value.version, + package_name: value.package_name, + kind: value.typ, + host: value.host, + confidentiality: value.confidentiality, + build_id: value.build_id.to_string(), + build_id_namespace: value.build_id_namespace, + description: value.description, + uncompressed_size: 0, + } + } +} + +#[derive(Debug, Clone, Serialize, Deserialize, Default)] +/// The package info file, which is a subset of the package spec and is added into the +/// inner tarball at /package-dir-name/packageinfo/full_package_name +pub struct PackageInfo { + /// The human-readable name of the package + pub name: String, + /// The description of the package + pub description: String, + /// The version of the package + pub version: String, + /// The host supporting this package, either linux64 or win64 + pub host: String, + #[serde(rename = "package-name")] + /// The package name, which should be Camel-Kebab-Cased. + pub package_name: String, + #[serde(rename = "package-number")] + /// The package number + pub package_number: isize, + #[serde(rename = "build-id")] + /// The build ID of this package + pub build_id: isize, + #[serde(rename = "build-id-namespace")] + /// The namespace for which the build ID of this package is valid + pub build_id_namespace: String, + #[serde(rename = "type")] + /// The package kind, typically "addon" + pub typ: String, + #[serde(rename = "extra-version", default)] + /// An extra version string, usually empty + pub extra_version: String, + /// The confidentiality setting of this package + pub confidentiality: String, + #[serde(skip)] + // Files are skipped when serializing and must be serialized separately because the output + // format is not exactly YAML: it needs to output like: + // files: + // top-level/file1 + // top-level/file2 + // top-level/dir1/file3 + /// A list of files present in the package + pub files: Vec, +} + +impl From<&PackageSpec> for PackageInfo { + fn from(value: &PackageSpec) -> Self { + let dirname = format!("simics-{}-{}", value.package_name, value.version); + let self_file = PathBuf::from(dirname) + .join("packageinfo") + .join(format!("{}-{}", value.package_name, value.host)); + Self { + name: value.name.clone(), + description: value.description.clone(), + version: value.version.clone(), + host: value.host.clone(), + package_name: value.package_name.clone(), + package_number: value.package_number, + build_id: value.build_id, + build_id_namespace: value.build_id_namespace.clone(), + typ: value.typ.clone(), + confidentiality: value.confidentiality.clone(), + files: value + .files + .iter() + .map(|f| f.0.clone()) + .chain(once(self_file.to_str().unwrap_or_default().to_string())) + .collect(), + ..Default::default() + } + } +} + +impl PackageInfo { + /// Get the list of files for this package info file. Because the file is not exactly YAML, + /// deserializing the `files` list returns a list like: + /// files: + /// - file1 + /// - dir1/file2 + /// + /// But it must actually be formatted like: + // files: + // top-level/file1 + // top-level/file2 + // top-level/dir1/file3 + /// + /// This method returns in the second format. + pub fn files(&self) -> String { + "files:\n".to_string() + + &self + .files + .iter() + .map(|f| format!(" {}", f)) + .collect::>() + .join("\n") + + "\n" + } +} diff --git a/simics-rs/simics-package/src/util/mod.rs b/simics-rs/simics-package/src/util/mod.rs new file mode 100644 index 00000000..d74a0e74 --- /dev/null +++ b/simics-rs/simics-package/src/util/mod.rs @@ -0,0 +1,65 @@ +// Copyright (C) 2024 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 + +//! Utilities helpful for packaging modules + +use crate::{Error, Result}; +use std::{ + fs::{copy, create_dir_all}, + path::{Path, PathBuf}, +}; +use walkdir::WalkDir; + +/// Recursively list all files in a directory +pub fn recursive_directory_listing

(directory: P) -> Vec +where + P: AsRef, +{ + WalkDir::new(directory.as_ref()) + .into_iter() + .filter_map(|p| p.ok()) + .map(|p| p.path().to_path_buf()) + .filter(|p| p.is_file()) + .collect::>() +} + +/// Copy the contents of one directory to another, recursively, overwriting files if they exist but +/// without replacing directories or their contents if they already exist +pub fn copy_dir_contents

(src_dir: P, dst_dir: P) -> Result<()> +where + P: AsRef, +{ + let src_dir = src_dir.as_ref().to_path_buf(); + + if !src_dir.is_dir() { + return Err(Error::NotADirectory { + path: src_dir.clone(), + }); + } + + let dst_dir = dst_dir.as_ref().to_path_buf(); + + if !dst_dir.is_dir() { + create_dir_all(&dst_dir)?; + } + + for (src, dst) in WalkDir::new(&src_dir) + .into_iter() + .filter_map(|p| p.ok()) + .filter_map(|p| { + let src = p.path().to_path_buf(); + match src.strip_prefix(&src_dir) { + Ok(suffix) => Some((src.clone(), dst_dir.join(suffix))), + Err(_) => None, + } + }) + { + if src.is_dir() { + create_dir_all(&dst)?; + } else if src.is_file() { + copy(&src, &dst)?; + } + } + + Ok(()) +} diff --git a/simics-rs/simics-sign/Cargo.toml b/simics-rs/simics-sign/Cargo.toml new file mode 100644 index 00000000..96cabefc --- /dev/null +++ b/simics-rs/simics-sign/Cargo.toml @@ -0,0 +1,27 @@ +# Copyright (C) 2024 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + +[package] +name = "simics-sign" +version = "0.1.0" +authors = ["Rowan Hart "] +edition = "2021" +description = "Intel Simics Simulator module signing tools" +documentation = "" +readme = "../README.md" +homepage = "" +repository = "" +license = "Apache-2.0" +keywords = ["simics", "simulator", "intel", "x86", "risc", "modeling"] +categories = [ + "simulation", + "virtualization", + "hardware-support", + "api-bindings", + "emulators", +] + +[dependencies] +object = "0.34.0" +chrono = "0.4.34" +thiserror = "1.0.57" diff --git a/simics-rs/simics-sign/src/lib.rs b/simics-rs/simics-sign/src/lib.rs new file mode 100644 index 00000000..d2ed1cbc --- /dev/null +++ b/simics-rs/simics-sign/src/lib.rs @@ -0,0 +1,536 @@ +// Copyright (C) 2024 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 + +//! CdyLib signing tools for signing ELF and PE libraries to be loaded by Simics + +#![deny(missing_docs)] + +use chrono::Local; +use object::{ + elf::FileHeader64, + endian::LittleEndian, + read::{elf::ElfFile, pe::PeFile64}, + Object, ObjectSection, ObjectSymbol, +}; +use std::{ + fs::{read, OpenOptions}, + io::Write, + iter::once, + num::Wrapping, + path::{Path, PathBuf}, +}; + +/// The symbol name containing the capabilities and signature of a module +pub const MODULE_CAPABILITIES_SYMNAME: &str = "_module_capabilities_"; +/// The symbol name containing the date of the module +pub const MODULE_DATE_SYMNAME: &str = "_module_date"; +/// The name of the text section for both Linux and Windows Gnu toolchains +pub const TEXT_SECTION_NAME: &str = ".text"; +/// The name of the data section for both Linux and Windows Gnu toolchains +pub const DATA_SECTION_NAME: &str = ".data"; +/// The maximum amount of data in a given section (text or data) to checksum +pub const MAX_SECTION_CSUM_SIZE: usize = 256; +// NOTE: Simics does not handle a username longer than 20 characters in its signing check and +// may clobber the ELF if it sees a longer one. We won't allow that (20 chars + nul = +// 21) +/// The maximum length of a username used in a signature +pub const SIMICS_SIGNATURE_UNAME_MAX_LEN: usize = 20; +/// The minimum length of the signature field of the module capabilities symbol +pub const SIMICS_SIGNATURE_MIN_LENGTH: usize = 44; + +type Elf<'data> = ElfFile<'data, FileHeader64>; + +#[derive(Debug, thiserror::Error)] +/// An error type raised during singing +pub enum Error { + #[error("File type of {path:?} not recognized. Must be PE64 or ELF64.")] + /// The file type of the input is not recognized and does not correctly parse as either + /// PE64 or ELF64. + FileTypeNotRecognized { + /// The path to the file that is not recognized + path: PathBuf, + }, + #[error("_module_capabilities_ symbol missing")] + /// The _module_capabilities_ symbol could not be found in the file + ModuleCapabilitiesMissing, + #[error("Section not found for symbol {symbol} in {path:?}")] + /// A section containing a symbol with a given name could not be found in the file + SectionNotFound { + /// The symbol whose section could not be found + symbol: String, + /// The path which was missing the symbol + path: PathBuf, + }, + #[error("_module_capabilities_ split sequence missing from symbol value")] + /// The sequence that splits the _module_capabilities_ symbol (usually '; ') was not found + SplitSequenceNotFound, + #[error("Section {section} not found in {path:?}")] + /// A section with a given name was not found + SectionMissing { + /// The name of the section that could not be found + section: String, + /// The path which was missing the symbol + path: PathBuf, + }, + #[error("Signature unchanged after signing")] + /// The signature block was not modified by the signing process. This is a sanity check. + SignatureUnchanged, + #[error("Module unchanged after signing")] + /// The module was not modified by the signing process. This is a sanity check. + ModuleUnchanged, + #[error("File range for section {section} not found")] + /// No range of offsets in the file were found for a secion + SectionFileRangeMissing { + /// The name of the section whose offset range could not be determined + section: String, + }, + #[error("Original and signed module lengths differ")] + /// The length of the original and signed modules differ. This is a sanity check. + ModuleLengthMismatch, + #[error("Missing terminating null byte in module capabilities")] + /// A null byte was not found in the _module_capabilities_ symbol + NullByteMissing, + #[error("Missing parent directory for path {path:?}")] + /// No parent directory for a path + MissingParentDirectory { + /// The path whose parent directory was not found + path: PathBuf, + }, + #[error("Module is not signed.")] + /// The module was not signed + ModuleNotSigned, + #[error("Failed to open module output file {path:?}: {source}")] + /// An error occurred while opening the output file + OpenOutputFile { + /// The path to the output file that could not be opened + path: PathBuf, + /// The underlying error + source: std::io::Error, + }, + #[error("Failed to set permissions for output file {path:?}: {source}")] + /// An error occurred while setting the permissions of the output file + SetPermissions { + /// The path to the output file that could not have its permissions set + path: PathBuf, + /// The underlying error + source: std::io::Error, + }, + #[error("Failed to get metadata for output file {path:?}: {source}")] + /// An error occurred while getting the metadata of the output file + GetMetadata { + /// The path to the output file that could not have its metadata retrieved + path: PathBuf, + /// The underlying error + source: std::io::Error, + }, + #[error("Failed to read directory {path:?}: {source}")] + /// An error occurred while reading a directory + ReadDirectory { + /// The path to the directory that could not be read + path: PathBuf, + /// The underlying error + source: std::io::Error, + }, + #[error("Failed to write module output file to {path:?}: {source}")] + /// An error occurred while writing the output file + WriteOutputFile { + /// The path to the output file that could not be written + path: PathBuf, + /// The underlying error + source: std::io::Error, + }, + #[error(transparent)] + /// A wrapped std::io::Error + IoError(#[from] std::io::Error), + #[error(transparent)] + /// A wrapped object::Error + ObjectError(#[from] object::Error), +} + +type Result = std::result::Result; + +/// A module for signing +pub struct Sign { + module: PathBuf, + data: Vec, + signed: Vec, +} + +impl Sign { + /// Start a new sign operation on a module located at a path + pub fn new

(module: P) -> Result + where + P: AsRef, + { + let data = read(module.as_ref())?; + + let mut slf = Self { + module: module.as_ref().to_path_buf(), + data: data.clone(), + signed: Vec::new(), + }; + + let data = &data[..]; + + if let Ok(elf) = Elf::parse(data) { + slf.sign_elf(elf)?; + Ok(slf) + } else if let Ok(pe) = PeFile64::parse(data) { + slf.sign_pe(pe)?; + Ok(slf) + } else { + Err(Error::FileTypeNotRecognized { + path: slf.module.clone(), + }) + } + } + + fn sign_elf(&mut self, elf: Elf) -> Result<()> { + let module_capabilities = elf + .symbols() + .find(|s| s.name() == Ok(MODULE_CAPABILITIES_SYMNAME)) + .ok_or_else(|| Error::ModuleCapabilitiesMissing)?; + + let module_capabilities_data = &elf.data()[module_capabilities.address() as usize + ..module_capabilities.address() as usize + module_capabilities.size() as usize]; + + let signature = [b" ".repeat(43), b";\x00".to_vec()].concat(); + + let elf_data = elf.data().to_vec(); + + // Check if already signed -- ends with (" "*43);\x00 + if !module_capabilities_data.ends_with(&signature) { + println!( + "Already signed with signature {:?}", + &module_capabilities_data[module_capabilities_data.len() - signature.len()..] + ); + self.signed = elf_data; + // Already signed + return Ok(()); + } + + let split_seq = b"; "; + + let signature_position = module_capabilities_data + .windows(split_seq.len()) + .position(|w| w == split_seq) + .ok_or_else(|| Error::SplitSequenceNotFound)? + + split_seq.len(); + + let text_section = + elf.section_by_name(TEXT_SECTION_NAME) + .ok_or_else(|| Error::SectionMissing { + section: TEXT_SECTION_NAME.to_string(), + path: self.module.clone(), + })?; + + let data_section = + elf.section_by_name(DATA_SECTION_NAME) + .ok_or_else(|| Error::SectionMissing { + section: DATA_SECTION_NAME.to_string(), + path: self.module.clone(), + })?; + + // Checksum = 1 * (text_section.size * sum(text_section.data)) * (data_section.size * sum(data_section.data)) | 1 + let csum: Wrapping = (Wrapping(1u32) + * (Wrapping(text_section.size() as u32) + * text_section + .data()? + .iter() + .take(MAX_SECTION_CSUM_SIZE) + .fold(Wrapping(0u32), |a, e| a + Wrapping(*e as u32))) + * (Wrapping(data_section.size() as u32) + * data_section + .data()? + .iter() + .take(MAX_SECTION_CSUM_SIZE) + .fold(Wrapping(0u32), |a, e| a + Wrapping(*e as u32)))) + | Wrapping(1u32); + + let uname = "simics" + .chars() + .take(SIMICS_SIGNATURE_UNAME_MAX_LEN) + .collect::(); + + let datetime_string = Local::now().format("%Y-%M-%d %H:%M").to_string(); + + let mut signature = module_capabilities_data[..signature_position] + .iter() + .chain(once(&0u8)) + .chain(&csum.0.to_le_bytes()) + .chain(once(&0u8)) + .chain(datetime_string.as_bytes()) + .chain(once(&b';')) + .chain(uname.as_bytes()) + .cloned() + .collect::>(); + + signature.resize( + module_capabilities_data[..signature_position].len() + SIMICS_SIGNATURE_MIN_LENGTH, + 0u8, + ); + + if signature == module_capabilities_data { + return Err(Error::SignatureUnchanged); + } + + let pre_sig = elf_data[..module_capabilities.address() as usize].to_vec(); + + let post_sig = elf_data + [module_capabilities.address() as usize + module_capabilities.size() as usize..] + .to_vec(); + + self.signed = pre_sig + .iter() + .chain(signature.iter()) + .chain(post_sig.iter()) + .cloned() + .collect::>(); + + if self.data.len() != self.signed.len() { + return Err(Error::ModuleLengthMismatch); + } + + if self.data == self.signed { + return Err(Error::ModuleUnchanged); + } + + Ok(()) + } + + fn sign_pe(&mut self, pe: PeFile64) -> Result<()> { + let module_capabilities = pe + .symbols() + .find(|s| s.name() == Ok(MODULE_CAPABILITIES_SYMNAME)) + .ok_or_else(|| Error::ModuleCapabilitiesMissing)?; + + let module_capabilities_section = + pe.section_by_index(module_capabilities.section().index().ok_or_else(|| { + Error::SectionNotFound { + symbol: MODULE_CAPABILITIES_SYMNAME.to_string(), + path: self.module.clone(), + } + })?)?; + let module_capabilities_offset = ((module_capabilities.address() + - module_capabilities_section.address()) + + module_capabilities_section + .file_range() + .ok_or_else(|| Error::SectionFileRangeMissing { + section: module_capabilities_section + .name() + .map(|n| n.to_string()) + .unwrap_or_else(|_| "unknown".to_string()), + })? + .0) as usize; + + let module_capabilities_size = if module_capabilities.size() > 0 { + module_capabilities.size() as usize + } else { + &pe.data()[module_capabilities_offset..] + .iter() + .position(|b| *b == 0) + .ok_or_else(|| Error::NullByteMissing)? + + 1 + }; + + let module_capabilities_data = &pe.data() + [module_capabilities_offset..module_capabilities_offset + module_capabilities_size]; + + let split_seq = b"; "; + + let signature_position = module_capabilities_data + .windows(split_seq.len()) + .position(|w| w == split_seq) + .ok_or_else(|| Error::SplitSequenceNotFound)? + + split_seq.len(); + + let text_section = + pe.section_by_name(TEXT_SECTION_NAME) + .ok_or_else(|| Error::SectionMissing { + section: TEXT_SECTION_NAME.to_string(), + path: self.module.clone(), + })?; + + let data_section = + pe.section_by_name(DATA_SECTION_NAME) + .ok_or_else(|| Error::SectionMissing { + section: DATA_SECTION_NAME.to_string(), + path: self.module.clone(), + })?; + + // Checksum = 1 * (text_section.size * sum(text_section.data)) * (data_section.size * sum(data_section.data)) | 1 + let csum: Wrapping = (Wrapping(1u32) + * (Wrapping(text_section.size() as u32) + * text_section + .data()? + .iter() + .take(MAX_SECTION_CSUM_SIZE) + .fold(Wrapping(0u32), |a, e| a + Wrapping(*e as u32))) + * (Wrapping(data_section.size() as u32) + * data_section + .data()? + .iter() + .take(MAX_SECTION_CSUM_SIZE) + .fold(Wrapping(0u32), |a, e| a + Wrapping(*e as u32)))) + | Wrapping(1u32); + + let uname = "simics" + .chars() + .take(SIMICS_SIGNATURE_UNAME_MAX_LEN) + .collect::(); + + let datetime_string = Local::now().format("%Y-%M-%d %H:%M").to_string(); + + let mut signature = module_capabilities_data[..signature_position] + .iter() + .chain(once(&0u8)) + .chain(&csum.0.to_le_bytes()) + .chain(once(&0u8)) + .chain(datetime_string.as_bytes()) + .chain(once(&b';')) + .chain(uname.as_bytes()) + .cloned() + .collect::>(); + + signature.resize( + module_capabilities_data[..signature_position].len() + SIMICS_SIGNATURE_MIN_LENGTH, + 0u8, + ); + + if signature == module_capabilities_data { + return Err(Error::SignatureUnchanged); + } + + let pe_data = pe.data().to_vec(); + let pre_sig = pe_data[..module_capabilities_offset].to_vec(); + let post_sig = pe_data[module_capabilities_offset + module_capabilities_size..].to_vec(); + self.signed = pre_sig + .iter() + .chain(signature.iter()) + .chain(post_sig.iter()) + .cloned() + .collect::>(); + + if self.data.len() != self.signed.len() { + return Err(Error::ModuleLengthMismatch); + } + + if self.data == self.signed { + return Err(Error::ModuleUnchanged); + } + + Ok(()) + } + + /// Write the signed file to the same directory as the input module as a specific name + pub fn write_as(&mut self, name: S) -> Result<&mut Self> + where + S: AsRef, + { + let output = self + .module + .parent() + .ok_or_else(|| Error::MissingParentDirectory { + path: self.module.clone(), + })? + .join(name.as_ref()); + let mut file = OpenOptions::new() + .create(true) + .truncate(true) + .write(true) + .open(output)?; + + #[cfg(unix)] + { + use std::os::unix::fs::PermissionsExt; + let mut perms = file.metadata()?.permissions(); + perms.set_mode(0o755); + file.set_permissions(perms)?; + } + + file.write_all(&self.signed)?; + Ok(self) + } + + /// Write the signed file to an output path + pub fn write

(&mut self, output: P) -> Result<&mut Self> + where + P: AsRef, + { + let mut file = OpenOptions::new() + .create(true) + .truncate(true) + .write(true) + .open(output.as_ref()) + .map_err(|e| Error::OpenOutputFile { + path: output.as_ref().to_path_buf(), + source: e, + })?; + + #[cfg(unix)] + { + use std::os::unix::fs::PermissionsExt; + let mut perms = file + .metadata() + .map_err(|e| Error::GetMetadata { + path: output.as_ref().to_path_buf(), + source: e, + })? + .permissions(); + perms.set_mode(0o755); + file.set_permissions(perms) + .map_err(|e| Error::SetPermissions { + path: output.as_ref().to_path_buf(), + source: e, + })?; + } + + file.write_all(&self.signed) + .map_err(|e| Error::WriteOutputFile { + path: output.as_ref().to_path_buf(), + source: e, + })?; + + file.flush()?; + + if !output.as_ref().exists() { + return Err(Error::WriteOutputFile { + path: output.as_ref().to_path_buf(), + source: std::io::Error::from(std::io::ErrorKind::NotFound), + }); + } + + Ok(self) + } + + /// Get the raw signed data + pub fn data(&self) -> Result> { + if self.signed.is_empty() { + Err(Error::ModuleNotSigned) + } else { + Ok(self.data.clone()) + } + } +} + +#[cfg(test)] +mod test { + use super::Sign; + use std::{env::var, path::PathBuf}; + + #[test] + #[cfg(windows)] + fn test_windows() { + let manifest_dir = PathBuf::from(var("CARGO_MANIFEST_DIR").unwrap()); + let hello_world_dll = manifest_dir.join("hello_world.dll"); + let _signed = Sign::sign(hello_world).unwrap().data().unwrap(); + } + + #[test] + #[cfg(unix)] + fn test_linux() { + let manifest_dir = PathBuf::from(var("CARGO_MANIFEST_DIR").unwrap()); + let hello_world = manifest_dir.join("libhello_world.so"); + let _signed = Sign::new(hello_world).unwrap().data().unwrap(); + } +} diff --git a/simics-rs/simics-test/Cargo.toml b/simics-rs/simics-test/Cargo.toml new file mode 100644 index 00000000..1deff9d7 --- /dev/null +++ b/simics-rs/simics-test/Cargo.toml @@ -0,0 +1,35 @@ +# Copyright (C) 2024 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + +[package] +name = "simics-test" +version = "0.1.0" +authors = ["Rowan Hart "] +edition = "2021" +description = "Intel Simics Simulator module testing tools" +documentation = "" +readme = "../README.md" +homepage = "" +repository = "" +license = "Apache-2.0" +keywords = ["simics", "simulator", "intel", "x86", "risc", "modeling"] +categories = [ + "simulation", + "virtualization", + "hardware-support", + "api-bindings", + "emulators", +] + +[dependencies] +ispm-wrapper = { version = "0.1.0", path = "../ispm-wrapper" } +cargo-simics-build = { version = "0.1.0", path = "../cargo-simics-build" } +anyhow = "1.0.80" +cargo-subcommand = "0.12.0" +cargo_metadata = "0.18.1" +command-ext = "0.1.2" +getters2 = "0.1.4" +indoc = "2.0.4" +typed-builder = "0.18.1" +versions = { version = "6.1.0", features = ["serde"] } +walkdir = "2.4.0" diff --git a/simics-rs/simics-test/src/lib.rs b/simics-rs/simics-test/src/lib.rs new file mode 100644 index 00000000..b7f8e59a --- /dev/null +++ b/simics-rs/simics-test/src/lib.rs @@ -0,0 +1,571 @@ +// Copyright (C) 2024 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 + +#![deny(missing_docs)] + +//! SIMICS test utilities for test environment setup and configuration + +use anyhow::{anyhow, bail, ensure, Error, Result}; +use cargo_simics_build::{App, Cmd, SimicsBuildCmd}; +use cargo_subcommand::Args; +use command_ext::{CommandExtCheck, CommandExtError}; +use ispm_wrapper::{ + data::ProjectPackage, + ispm::{ + self, + packages::{InstallOptions, UninstallOptions}, + projects::CreateOptions, + GlobalOptions, + }, + Internal, +}; +use std::{ + collections::HashSet, + env::{current_dir, set_current_dir, var}, + fs::{copy, create_dir_all, read_dir, remove_dir_all, write}, + path::{Path, PathBuf}, + process::{Command, Output}, +}; +use typed_builder::TypedBuilder; +use versions::{Requirement, Versioning}; +use walkdir::WalkDir; + +/// An environment variable which, if set, causes the entire test workspace to be cleaned up +/// after the test +pub const SIMICS_TEST_CLEANUP_EACH_ENV: &str = "SIMICS_TEST_CLEANUP_EACH"; +/// An environment variable which, if set, causes package installation to default to local installation +/// only +pub const SIMICS_TEST_LOCAL_PACKAGES_ONLY_ENV: &str = "SIMICS_TEST_LOCAL_PACKAGES_ONLY"; + +/// Copy the contents of one directory to another, recursively, overwriting files if they exist but +/// without replacing directories or their contents if they already exist +pub fn copy_dir_contents

(src_dir: P, dst_dir: P) -> Result<()> +where + P: AsRef, +{ + let src_dir = src_dir.as_ref().to_path_buf(); + ensure!(src_dir.is_dir(), "Source must be a directory"); + let dst_dir = dst_dir.as_ref().to_path_buf(); + if !dst_dir.is_dir() { + create_dir_all(&dst_dir).map_err(|e| { + anyhow!( + "Failed to create destination directory for directory copy {:?}: {}", + dst_dir, + e + ) + })?; + } + + for (src, dst) in WalkDir::new(&src_dir) + .into_iter() + .filter_map(|p| p.ok()) + .filter_map(|p| { + let src = p.path().to_path_buf(); + match src.strip_prefix(&src_dir) { + Ok(suffix) => Some((src.clone(), dst_dir.join(suffix))), + Err(_) => None, + } + }) + { + if src.is_dir() { + create_dir_all(&dst).map_err(|e| { + anyhow!( + "Failed to create nested destination directory for copy {:?}: {}", + dst, + e + ) + })?; + } else if src.is_file() { + if let Err(e) = copy(&src, &dst) { + eprintln!( + "Warning: failed to copy file from {} to {}: {}", + src.display(), + dst.display(), + e + ); + } + } + } + Ok(()) +} + +/// Abstract install procedure for public and internal ISPM +pub fn local_or_remote_pkg_install(mut options: InstallOptions) -> Result<()> { + if Internal::is_internal()? && var(SIMICS_TEST_LOCAL_PACKAGES_ONLY_ENV).is_err() { + ispm::packages::install(&options)?; + } else { + let installed = ispm::packages::list(&GlobalOptions::default())?; + + for package in options.packages.iter() { + let Some(installed) = installed.installed_packages.as_ref() else { + bail!("Did not get any installed packages"); + }; + + let Some(available) = installed.iter().find(|p| { + p.package_number == package.package_number + && (Requirement::new(&package.version.to_string()).is_some_and(|r| { + Versioning::new(&p.version).is_some_and(|pv| r.matches(&pv)) + }) || package.version == "latest") + }) else { + bail!("Did not find package {package:?} in {installed:?}"); + }; + + let Some(path) = available.paths.first() else { + bail!("No paths for available package {available:?}"); + }; + + let Some(install_dir) = options.global.install_dir.as_ref() else { + bail!("No install dir for global options {options:?}"); + }; + + let package_install_dir = path + .components() + .last() + .ok_or_else(|| anyhow!("No final component in install dir {}", path.display()))? + .as_os_str() + .to_str() + .ok_or_else(|| anyhow!("Could not convert component to string"))? + .to_string(); + + create_dir_all(&install_dir.join(&package_install_dir)).map_err(|e| { + anyhow!( + "Could not create install dir {:?}: {}", + install_dir.join(&package_install_dir), + e + ) + })?; + + copy_dir_contents(&path, &&install_dir.join(&package_install_dir)).map_err(|e| { + anyhow!( + "Error copying installed directory from {:?} to {:?}: {}", + path, + install_dir.join(&package_install_dir), + e + ) + })?; + } + + // Clear the remote packages to install, we can install local paths no problem + options.packages.clear(); + + if !options.package_paths.is_empty() { + ispm::packages::install(&options)?; + } + } + + Ok(()) +} + +#[derive(TypedBuilder, Debug)] +/// A specification for a test environment +pub struct TestEnvSpec { + #[builder(setter(into))] + cargo_target_tmpdir: String, + #[builder(setter(into))] + name: String, + #[builder(default, setter(into))] + packages: HashSet, + #[builder(default, setter(into))] + nonrepo_packages: HashSet, + #[builder(default, setter(into))] + files: Vec<(String, Vec)>, + #[builder(default, setter(into))] + directories: Vec, + #[builder(default, setter(into, strip_option))] + simics_home: Option, + #[builder(default, setter(into, strip_option))] + package_repo: Option, + #[builder(default = false)] + install_all: bool, + #[builder(default, setter(into))] + package_crates: Vec, +} + +impl TestEnvSpec { + /// Convert the specification for a test environment to a built test environment + pub fn to_env(&self) -> Result { + TestEnv::build(self) + } +} + +/// A test environment, which is a directory that consists of a simics directory with a set of +/// installed packages and a project directory, where test scripts and resources can be placed. +pub struct TestEnv { + #[allow(unused)] + /// The base of the test environment, e.g. the `CARGO_TARGET_TMPDIR` directory + test_base: PathBuf, + /// The subdirectory in the test environment for this test + test_dir: PathBuf, + /// The project subdirectory in the test environment for this test + project_dir: PathBuf, + #[allow(unused)] + /// The simics home subdirectory in the test environment for this test + simics_home_dir: PathBuf, +} + +impl TestEnv { + /// Return a reference to the test base directory + pub fn simics_base_dir

(simics_home_dir: P) -> Result + where + P: AsRef, + { + read_dir(simics_home_dir.as_ref())? + .filter_map(|d| d.ok()) + .filter(|d| d.path().is_dir()) + .map(|d| d.path()) + .find(|d| { + d.file_name().is_some_and(|n| { + n.to_string_lossy().starts_with("simics-6.") + || n.to_string_lossy().starts_with("simics-7.") + }) + }) + .ok_or_else(|| { + anyhow!( + "No simics base in home directory {:?}", + simics_home_dir.as_ref() + ) + }) + } +} + +impl TestEnv { + /// Install a set of files into a project directory, with the files specified as relative + /// paths inside the project directory and their raw contents + pub fn install_files

(project_dir: P, files: &Vec<(String, Vec)>) -> Result<()> + where + P: AsRef, + { + for (name, content) in files { + let target = project_dir.as_ref().join(name); + + if let Some(target_parent) = target.parent() { + if target_parent != project_dir.as_ref() { + create_dir_all(target_parent)?; + } + } + write(target, content)?; + } + + Ok(()) + } + + /// Install a set of existing directories into a project, where each directory will be + /// copied recursively into the project + pub fn install_directories

(project_dir: P, directories: &Vec) -> Result<()> + where + P: AsRef, + { + for directory in directories { + copy_dir_contents(directory, &project_dir.as_ref().to_path_buf()).map_err(|e| { + anyhow!( + "Failed to copy directory contents from {:?} to {:?}: {}", + directory, + project_dir.as_ref(), + e + ) + })?; + } + + Ok(()) + } + + fn build(spec: &TestEnvSpec) -> Result { + let test_base = PathBuf::from(&spec.cargo_target_tmpdir); + let test_dir = test_base.join(&spec.name); + + let project_dir = test_dir.join("project"); + + let simics_home_dir = if let Some(simics_home) = spec.simics_home.as_ref() { + simics_home.clone() + } else { + create_dir_all(test_dir.join("simics")).map_err(|e| { + anyhow!( + "Could not create simics home directory: {:?}: {}", + test_dir.join("simics"), + e + ) + })?; + + test_dir.join("simics") + }; + + // Install nonrepo packages which do not use a possibly-provided package repo + if !spec.nonrepo_packages.is_empty() { + local_or_remote_pkg_install( + InstallOptions::builder() + .global( + GlobalOptions::builder() + .install_dir(&simics_home_dir) + .trust_insecure_packages(true) + .build(), + ) + .packages(spec.nonrepo_packages.clone()) + .build(), + )?; + } + + let mut installed_packages = spec + .nonrepo_packages + .iter() + .cloned() + .collect::>(); + + let packages = spec.packages.clone(); + + if let Some(package_repo) = &spec.package_repo { + if !packages.is_empty() { + local_or_remote_pkg_install( + InstallOptions::builder() + .packages(packages.clone()) + .global( + GlobalOptions::builder() + .install_dir(&simics_home_dir) + .trust_insecure_packages(true) + .package_repo([package_repo.to_string()]) + .build(), + ) + .build(), + )?; + } + } else if !packages.is_empty() { + local_or_remote_pkg_install( + InstallOptions::builder() + .packages(packages.clone()) + .global( + GlobalOptions::builder() + .install_dir(&simics_home_dir) + .trust_insecure_packages(true) + .build(), + ) + .build(), + )?; + } + + installed_packages.extend(packages); + + if spec.install_all { + if let Some(package_repo) = &spec.package_repo { + local_or_remote_pkg_install( + InstallOptions::builder() + .install_all(spec.install_all) + .global( + GlobalOptions::builder() + .install_dir(&simics_home_dir) + .trust_insecure_packages(true) + .package_repo([package_repo.to_string()]) + .build(), + ) + .build(), + )?; + + let installed = ispm::packages::list( + &GlobalOptions::builder() + .install_dir(&simics_home_dir) + .build(), + )?; + + if let Some(installed) = installed.installed_packages { + installed_packages.extend(installed.iter().map(|ip| { + ProjectPackage::builder() + .package_number(ip.package_number) + .version(ip.version.clone()) + .build() + })); + } + } + } + + let initial_dir = current_dir()?; + + spec.package_crates.iter().try_for_each(|c| { + // change directory to c + set_current_dir(&c) + .map_err(|e| anyhow!("Failed to set current directory to {c:?}: {e}"))?; + + #[cfg(debug_assertions)] + let release = true; + #[cfg(not(debug_assertions))] + let release = false; + + let install_args = Args { + quiet: false, + manifest_path: Some(c.join("Cargo.toml")), + package: vec![], + workspace: false, + exclude: vec![], + lib: false, + bin: vec![], + bins: false, + example: vec![], + examples: false, + release, + profile: None, + features: vec![], + all_features: false, + no_default_features: false, + target: None, + target_dir: None, + }; + + let cmd = Cmd { + simics_build: SimicsBuildCmd::SimicsBuild { + args: install_args, + simics_base: Some(Self::simics_base_dir(&simics_home_dir)?), + with_patchelf: false, + }, + }; + + let package = App::run(cmd).map_err(|e| anyhow!("Error running app: {e}"))?; + + let project_package = ProjectPackage::builder() + .package_number( + package + .file_name() + .ok_or_else(|| anyhow!("No file name"))? + .to_str() + .ok_or_else(|| anyhow!("Could not convert filename to string"))? + .split('-') + .nth(2) + .ok_or_else(|| anyhow!("No package number"))? + .parse::()?, + ) + .version( + package + .file_name() + .ok_or_else(|| anyhow!("No file name"))? + .to_str() + .ok_or_else(|| anyhow!("Could not convert filename to string"))? + .split('-') + .nth(3) + .ok_or_else(|| anyhow!("No version"))? + .to_string(), + ) + .build(); + + // Uninstall first, then install. Uninstall is allowed to fail if the output + // contains 'could not be found to uninstall' + ispm::packages::uninstall( + &UninstallOptions::builder() + .packages([ + // Package file names are always 'simics-pkg---.ispm' + project_package.clone(), + ]) + .global( + GlobalOptions::builder() + .install_dir(&simics_home_dir) + .build(), + ) + .build(), + ) + .or_else(|e| { + if e.to_string().contains("could not be found to uninstall") { + Ok(()) + } else { + Err(e) + } + })?; + + ispm::packages::install( + &InstallOptions::builder() + .package_paths([package]) + .global( + GlobalOptions::builder() + .install_dir(&simics_home_dir) + .trust_insecure_packages(true) + .build(), + ) + .build(), + )?; + + installed_packages.insert(project_package); + + Ok::<(), Error>(()) + })?; + + set_current_dir(&initial_dir) + .map_err(|e| anyhow!("Failed to set current directory to {initial_dir:?}: {e}"))?; + + remove_dir_all(&project_dir).or_else(|e| { + if e.to_string().contains("No such file or directory") { + Ok(()) + } else { + Err(e) + } + })?; + + // Create the project using the installed packages + ispm::projects::create( + &CreateOptions::builder() + .packages(installed_packages) + .global( + GlobalOptions::builder() + .install_dir(&simics_home_dir) + .trust_insecure_packages(true) + .build(), + ) + .ignore_existing_files(true) + .build(), + &project_dir, + )?; + + Self::install_files(&project_dir, &spec.files)?; + Self::install_directories(&project_dir, &spec.directories)?; + + Ok(Self { + test_base, + test_dir, + project_dir, + simics_home_dir, + }) + } + + /// Clean up the test environment + pub fn cleanup(&mut self) -> Result<(), CommandExtError> { + remove_dir_all(&self.test_dir).map_err(CommandExtError::from) + } + + /// Clean up the test environment if the SIMICS_TEST_CLEANUP_EACH environment variable is set + pub fn cleanup_if_env(&mut self) -> Result<(), CommandExtError> { + if let Ok(_cleanup) = var(SIMICS_TEST_CLEANUP_EACH_ENV) { + self.cleanup()?; + } + + Ok(()) + } + + /// Run a test in the environment in the form of a Simics script. To fail the test, either + /// exit Simics with an error or check the output result. + pub fn test(&mut self, script: S) -> Result + where + S: AsRef, + { + let test_script_path = self.project_dir.join("test.simics"); + write(test_script_path, script.as_ref())?; + let output = Command::new("./simics") + .current_dir(&self.project_dir) + .arg("--batch-mode") + .arg("--no-win") + .arg("./test.simics") + .check()?; + self.cleanup_if_env()?; + Ok(output) + } + + /// Run a test in the environment in the form of a Simics script. To fail the test, either + /// exit Simics with an error or check the output result. + pub fn test_python(&mut self, script: S) -> Result + where + S: AsRef, + { + let test_script_path = self.project_dir.join("test.py"); + write(test_script_path, script.as_ref())?; + let output = Command::new("./simics") + .current_dir(&self.project_dir) + .arg("--batch-mode") + .arg("--no-win") + .arg("./test.py") + .check()?; + self.cleanup_if_env()?; + Ok(output) + } +} diff --git a/simics-rs/simics/Cargo.toml b/simics-rs/simics/Cargo.toml new file mode 100644 index 00000000..60572c0c --- /dev/null +++ b/simics-rs/simics/Cargo.toml @@ -0,0 +1,55 @@ +# Copyright (C) 2024 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + +[package] +name = "simics" +version = "0.1.0" +authors = ["Rowan Hart "] +edition = "2021" +description = "Intel Simics Simulator bindings in high level, idiomatic Rust" +documentation = "" +readme = "../README.md" +homepage = "" +repository = "" +license = "Apache-2.0" +keywords = ["simics", "simulator", "intel", "x86", "risc", "modeling"] +categories = [ + "simulation", + "virtualization", + "hardware-support", + "api-bindings", + "emulators", +] + +[dependencies] +simics-api-sys = { version = "0.1.0", path = "../simics-api-sys" } +simics-macro = { version = "0.1.0", path = "../simics-macro" } +anyhow = "1.0.80" +raw-cstr = "0.1.4" +paste = "1.0.14" +regex = "1.10.3" +walkdir = "2.4.0" +thiserror = "1.0.57" +typed-builder = "0.18.1" +ordered-float = "4.2.0" +versions = { version = "6.1.0", features = ["serde"] } + +[features] +default = ["link", "global-allocator"] +# Emit linking information in simics-api-sys to enable testing and running with cargo test +# and cargo run +link = ["simics-api-sys/link"] +# Set SimicsAlloc as the global allocator. This should not be unset. +global-allocator = [] + +[build-dependencies] +simics-api-sys = { version = "0.1.0", path = "../simics-api-sys" } +simics-macro = { version = "0.1.0", path = "../simics-macro" } +simics-build-utils = { version = "0.1.0", path = "../simics-build-utils" } +anyhow = "1.0.80" +prettyplease = "0.2.16" +syn = "2.0.50" +versions = "6.1.0" +darling = "0.20.8" +proc-macro2 = "1.0.78" +quote = "1.0.35" diff --git a/simics-rs/simics/build.rs b/simics-rs/simics/build.rs new file mode 100644 index 00000000..9f8f86a9 --- /dev/null +++ b/simics-rs/simics/build.rs @@ -0,0 +1,823 @@ +// Copyright (C) 2024 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 + +use anyhow::{anyhow, Result}; +use prettyplease::unparse; +use proc_macro2::TokenStream as TokenStream2; +use quote::{format_ident, quote, ToTokens}; +use simics_build_utils::{emit_cfg_directives, emit_link_info}; +use std::{collections::HashMap, env::var, fs::write, path::PathBuf}; +use syn::{ + parse_file, parse_quote, punctuated::Punctuated, token::Plus, Attribute, BareFnArg, Expr, + Field, GenericArgument, Ident, Item, ItemConst, ItemStruct, ItemType, Lit, Meta, PathArguments, + ReturnType, Type, TypeParamBound, Visibility, +}; + +/// The name of the environment variable set by cargo containing the path to the out directory +/// for intermediate build results +const OUT_DIR_ENV: &str = "OUT_DIR"; +/// The name of the environment variable containing the path to the simics base directory e.g. +/// `/path/to/simics/simics-7.0.1` +const SIMICS_BASE_ENV: &str = "SIMICS_BASE"; + +use simics_api_sys::SIMICS_API_BINDINGS; + +const INTERFACES_FILE: &str = "interfaces.rs"; +const HAPS_FILE: &str = "haps.rs"; + +/// Extension trait to convert snake_case to CamelCase. +trait SnakeToCamel { + fn snake_to_camel(&self) -> String; +} + +impl SnakeToCamel for S +where + S: AsRef, +{ + fn snake_to_camel(&self) -> String { + let mut s = String::new(); + let mut upper = false; + for c in self.as_ref().chars() { + if upper || s.is_empty() { + s.push(c.to_ascii_uppercase()); + upper = false; + } else if c == '_' { + upper = true; + } else { + s.push(c.to_ascii_lowercase()); + } + } + s + } +} + +struct HapStruct { + name: Ident, + callback_ty: Vec, + handler_name: Ident, + supports_index_callbacks: Option, + callback_attrs: Vec, + struct_name: Ident, + closure_param_names: Vec, + inputs: Vec, + output: Type, + userdata_name: Ident, +} + +impl TryFrom<(&ItemConst, &ItemType)> for HapStruct { + type Error = darling::Error; + + fn try_from(name_ty: (&ItemConst, &ItemType)) -> darling::Result { + let name = name_ty.0.ident.clone(); + let callback_type = name_ty.1; + let callback_attrs = callback_type.attrs.to_vec(); + + let supports_index_callbacks = callback_attrs.iter().find_map(|a| { + let Meta::NameValue(ref meta) = a.meta else { + return None; + }; + + let Expr::Lit(ref lit) = meta.value else { + return None; + }; + + let Lit::Str(ref str_lit) = lit.lit else { + return None; + }; + + if !str_lit.value().contains("Index: Indices not supported") { + Some(str_lit.value()) + } else { + None + } + }); + + let struct_name = format_ident!( + "{}Hap", + callback_type + .ident + .to_string() + .trim_end_matches("_hap_callback") + .to_string() + .snake_to_camel() + ); + + let handler_name = format_ident!( + "{}", + "handle_".to_string() + + callback_type + .ident + .to_string() + .trim_end_matches("_hap_callback"), + ); + + let Type::Path(ref p) = &*callback_type.ty else { + return Err(Self::Error::custom(format!( + "Failed to parse callback type {:?} as path", + callback_type + ))); + }; + + let last = p.path.segments.last().ok_or_else(|| { + Self::Error::custom(format!( + "Failed to get final segment from path type {:?}", + callback_type + )) + })?; + + if last.ident != "Option" { + return Err(Self::Error::custom(format!( + "Callback type must be Option to support null-optimization, got {:?}", + callback_type + ))); + } + + let PathArguments::AngleBracketed(ref args) = last.arguments else { + return Err(Self::Error::custom(format!( + "Failed to get angle bracketed arguments from path type {:?}", + callback_type + ))); + }; + + let Some(GenericArgument::Type(Type::BareFn(proto))) = args.args.first() else { + return Err(Self::Error::custom(format!( + "Failed to get bare function type from path type {:?}", + callback_type + ))); + }; + + // NOTE: We `use crate::api::sys::*;` at the top of the module, otherwise + // we would need to rewrite all of the types on `inputs` here. + let inputs = proto.inputs.iter().cloned().collect::>(); + + let input_names = inputs + .iter() + .map(|a| { + a.name.clone().map(|n| n.0).ok_or_else(|| { + Self::Error::custom(format!("Failed to get name from input argument {:?}", a)) + }) + }) + .collect::>>()?; + + let userdata_name = input_names + .first() + .ok_or_else(|| { + Self::Error::custom(format!( + "Failed to get userdata name from input arguments {:?}", + inputs + )) + })? + .clone(); + + let output = match &proto.output { + ReturnType::Default => parse_quote!(()), + ReturnType::Type(_, t) => parse_quote!(#t), + }; + + let closure_params = inputs + .iter() + .skip(1) + .cloned() + .map(|a| a.ty) + .collect::>(); + let closure_param_names = input_names.iter().skip(1).cloned().collect::>(); + let callback_ty: Punctuated = + parse_quote!(FnMut(#(#closure_params),*) -> #output + 'static); + let callback_ty = callback_ty.iter().cloned().collect::>(); + + Ok(Self { + name, + callback_ty, + handler_name, + supports_index_callbacks, + callback_attrs, + struct_name, + closure_param_names, + inputs, + output, + userdata_name, + }) + } +} + +impl ToTokens for HapStruct { + fn to_tokens(&self, tokens: &mut TokenStream2) { + let callback_ty = &self.callback_ty; + let handler_name = &self.handler_name; + let add_callback_methods = quote! { + /// Add a callback to be called on each occurrence of this HAP. The callback may capture its environment. + /// + /// # Arguments + /// + /// * `callback` - The closure to fire as a callback. The closure will be doubly boxed. Any program state accessed inside + /// the closure must have the static lifetime. This is not enforced by the compiler, it is up to the programmer to ensure + /// the soundness of their callback code. + pub fn add_callback(callback: F) -> crate::Result + where + F: #(#callback_ty)+*, + { + let callback = Box::new(callback); + let callback_box = Box::new(callback); + let callback_raw = Box::into_raw(callback_box); + let handler: unsafe extern "C" fn() = unsafe { std::mem::transmute(#handler_name:: as usize) }; + Ok(unsafe { + crate::api::sys::SIM_hap_add_callback( + Self::NAME.as_raw_cstr()?, + Some(handler), + callback_raw as *mut std::ffi::c_void, + ) + }) + } + + /// Add a callback to be called on each occurrence of this HAP for a specific object. The callback may capture its environment. + /// + /// # Arguments + /// + /// * `callback` - The closure to fire as a callback. The closure will be doubly boxed. Any program state accessed inside + /// the closure must have the static lifetime. This is not enforced by the compiler, it is up to the programmer to ensure + /// the soundness of their callback code. + /// * `obj` - The object to fire this callback for. This HAP will not trigger the callback when firing on any object other than + /// this one. + pub fn add_callback_object(callback: F, obj: *mut crate::api::ConfObject) -> crate::Result + where + F: #(#callback_ty)+*, + { + let callback = Box::new(callback); + let callback_box = Box::new(callback); + let callback_raw = Box::into_raw(callback_box); + let handler: unsafe extern "C" fn() = unsafe { std::mem::transmute(#handler_name:: as usize) }; + Ok(unsafe { + crate::api::sys::SIM_hap_add_callback_obj( + Self::NAME.as_raw_cstr()?, + obj, + 0, + Some(handler), + callback_raw as *mut std::ffi::c_void, + ) + }) + } + }; + + let maybe_index_callback_methods = if let Some(ref index) = self.supports_index_callbacks { + let index_doc = format!("* `index` - The index value for this HAP: {}", index); + let range_start_doc = format!( + "* `start` - The start of the range of index values for this HAP: {}", + index + ); + let range_end_doc = format!( + "* `end` - The start of the range of index values for this HAP: {}", + index + ); + + quote! { + /// Add a callback to be called on each occurrence of this HAP for a specific index value. The callback may capture its environment. + /// + /// Only HAPs which support an index may add a callback in this manner, and the index varies for each HAP. For example, the + /// [`CoreMagicInstructionHap`] supports an index equal to the magic value. + /// + /// # Arguments + /// + /// * `callback` - The closure to fire as a callback. The closure will be doubly boxed. Any program state accessed inside + /// the closure must have the static lifetime. This is not enforced by the compiler, it is up to the programmer to ensure + /// the soundness of their callback code. + #[doc = #index_doc] + pub fn add_callback_index(callback: F, index: i64) -> crate::Result + where + F: #(#callback_ty)+*, + { + let callback = Box::new(callback); + let callback_box = Box::new(callback); + let callback_raw = Box::into_raw(callback_box); + let handler: unsafe extern "C" fn() = unsafe { std::mem::transmute(#handler_name:: as usize) }; + Ok(unsafe { + crate::api::sys::SIM_hap_add_callback_index( + Self::NAME.as_raw_cstr()?, + Some(handler), + callback_raw as *mut std::ffi::c_void, + index + ) + }) + } + + /// Add a callback to be called on each occurrence of this HAP for a specific index value range. The callback may capture its environment. + /// + /// Only HAPs which support an index may add a callback in this manner, and the index varies for each HAP. For example, the + /// [`CoreMagicInstructionHap`] supports an index equal to the magic value. + /// + /// # Arguments + /// + /// * `callback` - The closure to fire as a callback. The closure will be doubly boxed. Any program state accessed inside + /// the closure must have the static lifetime. This is not enforced by the compiler, it is up to the programmer to ensure + /// the soundness of their callback code. + #[doc = #range_start_doc] + #[doc = #range_end_doc] + pub fn add_callback_range(callback: F, start: i64, end: i64) -> crate::Result + where + F: #(#callback_ty)+*, + { + let callback = Box::new(callback); + let callback_box = Box::new(callback); + let callback_raw = Box::into_raw(callback_box); + let handler: unsafe extern "C" fn() = unsafe { std::mem::transmute(#handler_name:: as usize) }; + Ok(unsafe { + crate::api::sys::SIM_hap_add_callback_range( + Self::NAME.as_raw_cstr()?, + Some(handler), + callback_raw as *mut std::ffi::c_void, + start, + end, + ) + }) + } + + /// Add a callback to be called on each occurrence of this HAP on a specific object for a specific index value. The callback may capture its environment. + /// + /// Only HAPs which support an index may add a callback in this manner, and the index varies for each HAP. For example, the + /// [`CoreMagicInstructionHap`] supports an index equal to the magic value. + /// + /// # Arguments + /// + /// * `callback` - The closure to fire as a callback. The closure will be doubly boxed. Any program state accessed inside + /// the closure must have the static lifetime. This is not enforced by the compiler, it is up to the programmer to ensure + /// the soundness of their callback code. + /// * `obj` - The object to fire this callback for. This HAP will not trigger the callback when firing on any object other than + /// this one. + #[doc = #index_doc] + pub fn add_callback_object_index(callback: F, obj: *mut crate::api::ConfObject, index: i64) -> crate::Result + where + F: #(#callback_ty)+*, + { + let callback = Box::new(callback); + let callback_box = Box::new(callback); + let callback_raw = Box::into_raw(callback_box); + let handler: unsafe extern "C" fn() = unsafe { std::mem::transmute(#handler_name:: as usize) }; + Ok(unsafe { + crate::api::sys::SIM_hap_add_callback_obj_index( + Self::NAME.as_raw_cstr()?, + obj, + 0, + Some(handler), + callback_raw as *mut std::ffi::c_void, + index + ) + }) + } + + /// Add a callback to be called on each occurrence of this HAP on a specific object for a specific index value range. The callback may capture its environment. + /// + /// Only HAPs which support an index may add a callback in this manner, and the index varies for each HAP. For example, the + /// [`CoreMagicInstructionHap`] supports an index equal to the magic value. + /// + /// # Arguments + /// + /// * `callback` - The closure to fire as a callback. The closure will be doubly boxed. Any program state accessed inside + /// the closure must have the static lifetime. This is not enforced by the compiler, it is up to the programmer to ensure + /// the soundness of their callback code. + /// * `obj` - The object to fire this callback for. This HAP will not trigger the callback when firing on any object other than + /// this one. + #[doc = #range_start_doc] + #[doc = #range_end_doc] + pub fn add_callback_object_range(callback: F, obj: *mut crate::api::ConfObject, start: i64, end: i64) -> crate::Result + where + F: #(#callback_ty)+*, + { + let callback = Box::new(callback); + let callback_box = Box::new(callback); + let callback_raw = Box::into_raw(callback_box); + let handler: unsafe extern "C" fn() = unsafe { std::mem::transmute(#handler_name:: as usize) }; + Ok(unsafe { + crate::api::sys::SIM_hap_add_callback_obj_range( + Self::NAME.as_raw_cstr()?, + obj, + 0, + Some(handler), + callback_raw as *mut std::ffi::c_void, + start, + end, + ) + }) + } + } + } else { + quote! {} + }; + + let name = &self.name; + let callback_attrs = &self.callback_attrs; + let struct_name = &self.struct_name; + let closure_param_names = &self.closure_param_names; + let inputs = &self.inputs; + let output = &self.output; + let userdata_name = &self.userdata_name; + + tokens.extend(quote! { + #(#callback_attrs)* + /// Automatically generated struct for the HAP + pub struct #struct_name {} + + impl crate::api::traits::hap::Hap for #struct_name { + type Name = &'static [u8]; + const NAME: Self::Name = crate::api::sys::#name; + } + + impl #struct_name { + #add_callback_methods + #maybe_index_callback_methods + } + + /// The handler for HAPs of a specific type. Unboxes a boxed + /// closure and calls it with the correct HAP callback arguments + extern "C" fn #handler_name(#(#inputs),*) -> #output + where + F: #(#callback_ty)+*, + { + // NOTE: This box must be leaked, because we may call this closure again, we cannot drop it + let closure = Box::leak(unsafe { Box::from_raw(#userdata_name as *mut Box) }); + closure(#(#closure_param_names),*) + } + }); + } +} + +struct Haps { + hap_structs: Vec, +} + +impl Haps { + fn generate(bindings: S) -> darling::Result + where + S: AsRef, + { + let parsed = parse_file(bindings.as_ref())?; + let hap_name_items = parsed + .items + .iter() + .filter_map(|i| match i { + Item::Const(c) if c.ident.to_string().ends_with("_HAP_NAME") => { + Some((c.ident.to_string(), c)) + } + _ => None, + }) + .collect::>(); + let hap_callbacks = parsed + .items + .iter() + .filter_map(|i| match i { + Item::Type(ty) if ty.ident.to_string().ends_with("_hap_callback") => Some( + hap_name_items + .get( + &(ty.ident + .to_string() + .trim_end_matches("_hap_callback") + .to_ascii_uppercase() + + "_HAP_NAME"), + ) + .map(|hap_name_item| ((*hap_name_item).clone(), ty.clone())) + .ok_or_else(|| { + darling::Error::custom(format!("Failed to find HAP name for {:?}", ty)) + }), + ), + _ => None, + }) + .collect::>>()?; + let hap_structs = hap_callbacks + .iter() + .map(HapStruct::try_from) + .collect::>>()?; + + Ok(Self { hap_structs }) + } +} + +impl ToTokens for Haps { + fn to_tokens(&self, tokens: &mut TokenStream2) { + let hap_structs = &self.hap_structs; + tokens.extend(quote! { + #[allow(dead_code, non_snake_case)] + /// Automatically generated HAP implementations + pub mod haps { + use crate::api::sys::*; + use crate::api::traits::hap::Hap; + use raw_cstr::AsRawCstr; + + #(#hap_structs)* + } + }); + } +} + +pub struct InterfaceMethod { + vis: Visibility, + wrapper_inputs: Vec, + output: Type, + some_name: Ident, + name_ident: Ident, + ok_value: Expr, + name: Ident, +} + +impl TryFrom<&Field> for InterfaceMethod { + type Error = darling::Error; + + fn try_from(value: &Field) -> darling::Result { + let vis = value.vis.clone(); + + let Type::Path(ref p) = value.ty else { + return Err(darling::Error::custom(format!( + "Expected a path type for field, got {:?}", + value.ty + ))); + }; + + let last = p.path.segments.last().ok_or_else(|| { + darling::Error::custom(format!( + "Missing final segment for path type {:?}", + value.ty + )) + })?; + + if last.ident != "Option" { + return Err(darling::Error::custom(format!( + "Expected Option type for field, got {:?}", + value.ty + ))); + } + + let name = (value.ident.clone()) + .ok_or_else(|| darling::Error::custom("Missing field name".to_string()))?; + + let PathArguments::AngleBracketed(ref args) = last.arguments else { + return Err(darling::Error::custom(format!( + "Expected angle bracketed arguments for field, got {:?}", + last.arguments + ))); + }; + + let Some(GenericArgument::Type(Type::BareFn(proto))) = args.args.first() else { + return Err(darling::Error::custom(format!( + "Expected bare function type for field, got {:?}", + args.args.first() + ))); + }; + + let inputs = proto.inputs.iter().cloned().collect::>(); + + let has_obj = inputs + .first() + .is_some_and(|f| quote!(#f).to_string().ends_with("conf_object_t")); + + let input_names = inputs + .iter() + .skip(if has_obj { 1 } else { 0 }) + .map(|a| { + a.name.clone().map(|n| n.0).ok_or_else(|| { + darling::Error::custom(format!("Missing input name for {:?}", a)) + }) + }) + .collect::>>()?; + + let wrapper_inputs = inputs + .iter() + .skip(if has_obj { 1 } else { 0 }) + .cloned() + .collect::>(); + + let (is_attr_value, output) = match &proto.output { + ReturnType::Default => (false, parse_quote!(())), + ReturnType::Type(_, t) => { + if let Type::Path(p) = &**t { + p.path + .get_ident() + .map(|i| i.to_string()) + .filter(|i| i == "attr_value_t") + .map(|_| (true, parse_quote!(crate::api::AttrValue))) + .unwrap_or((false, parse_quote!(#t))) + } else { + (false, parse_quote!(#t)) + } + } + }; + + // NOTE: We need to make a new name because in some cases the fn ptr name is the same as one of the parameter + // names + let some_name = format_ident!("{}_fn", name); + let name_ident = format_ident!("{}", name); + let maybe_self_obj = has_obj.then_some(quote!(self.obj,)).unwrap_or_default(); + + let ok_value = if is_attr_value { + parse_quote!(Ok(unsafe { #some_name(#maybe_self_obj #(#input_names),*) }.into())) + } else { + parse_quote!(Ok(unsafe { #some_name(#maybe_self_obj #(#input_names),*) })) + }; + + Ok(Self { + vis, + wrapper_inputs, + output, + some_name, + name_ident, + ok_value, + name, + }) + } +} + +impl ToTokens for InterfaceMethod { + fn to_tokens(&self, tokens: &mut TokenStream2) { + let vis = &self.vis; + let wrapper_inputs = &self.wrapper_inputs; + let output = &self.output; + let some_name = &self.some_name; + let name_ident = &self.name_ident; + let ok_value = &self.ok_value; + let name = self.name.to_string(); + + tokens.extend(quote! { + /// Automatically generated method for the interface + #vis fn #name_ident(&mut self, #(#wrapper_inputs),*) -> crate::Result<#output> { + if let Some(#some_name) = unsafe { *self.interface}.#name_ident { + #ok_value + } else { + Err(crate::Error::NoInterfaceMethod { method: #name.to_string() }) + } + } + }); + } +} + +pub struct InterfaceStruct { + struct_name: Ident, + interface_ident: Ident, + interface_methods: Vec, + name_ident: Ident, +} + +impl TryFrom<(&ItemConst, &ItemStruct)> for InterfaceStruct { + type Error = darling::Error; + + fn try_from(value: (&ItemConst, &ItemStruct)) -> darling::Result { + let name = value.0; + let interface = value.1; + let interface_methods = interface + .fields + .iter() + .filter_map(|f| match InterfaceMethod::try_from(f) { + Ok(m) => Some(m), + Err(e) => { + eprintln!("cargo:warning=Failed to generate method for field {f:?}: {e}"); + None + } + }) + .collect::>(); + let camel_name = name.ident.to_string().snake_to_camel(); + let struct_name = format_ident!("{camel_name}"); + let interface_ident = interface.ident.clone(); + let name_ident = name.ident.clone(); + Ok(Self { + struct_name, + interface_ident, + interface_methods, + name_ident, + }) + } +} + +impl ToTokens for InterfaceStruct { + fn to_tokens(&self, tokens: &mut TokenStream2) { + let struct_name = &self.struct_name; + let interface_ident = &self.interface_ident; + let interface_methods = &self.interface_methods; + let name_ident = &self.name_ident; + + tokens.extend(quote! { + /// Automatically generated structure for the interface + pub struct #struct_name { + obj: *mut crate::api::ConfObject, + interface: *mut crate::api::sys::#interface_ident, + } + + impl #struct_name { + #(#interface_methods)* + } + + impl crate::api::traits::Interface for #struct_name { + type InternalInterface = crate::api::sys::#interface_ident; + type Name = &'static [u8]; + + const NAME: &'static [u8] = crate::api::sys::#name_ident; + + fn new(obj: *mut crate::api::ConfObject, interface: *mut Self::InternalInterface) -> Self { + Self { obj, interface } + } + } + }); + } +} + +pub struct Interfaces { + interface_structs: Vec, +} + +impl Interfaces { + pub fn generate(bindings: S) -> darling::Result + where + S: AsRef, + { + let parsed = parse_file(bindings.as_ref())?; + + let interface_name_items = parsed + .items + .iter() + .filter_map(|i| match i { + Item::Const(c) if c.ident.to_string().ends_with("_INTERFACE") => { + Some((c.ident.to_string(), c)) + } + _ => None, + }) + .collect::>(); + + let interfaces = parsed + .items + .iter() + .filter_map(|i| { + if let Item::Struct(s) = i { + interface_name_items + .get(&s.ident.to_string().to_ascii_uppercase()) + .map(|interface_name_item| ((*interface_name_item).clone(), s.clone())) + } else { + None + } + }) + .collect::>(); + + let interface_structs = interfaces + .iter() + .map(InterfaceStruct::try_from) + .collect::>>()?; + + Ok(Self { interface_structs }) + } +} + +impl ToTokens for Interfaces { + fn to_tokens(&self, tokens: &mut TokenStream2) { + let interface_structs = &self.interface_structs; + tokens.extend(quote! { + #[allow(dead_code, non_snake_case)] + /// Automatically generated interfaces from the base package + pub mod interfaces { + use crate::api::sys::*; + + #(#interface_structs)* + } + }) + } +} + +fn main() -> Result<()> { + println!("cargo:rerun-if-env-changed={SIMICS_BASE_ENV}"); + let out_dir = PathBuf::from( + var(OUT_DIR_ENV) + .map_err(|e| anyhow!("No environment variable {OUT_DIR_ENV} found: {e}"))?, + ); + + // Write intermediate auto-generated high level bindings for interfaces and haps + + let interfaces_out_file = out_dir.join(INTERFACES_FILE); + let haps_out_file = out_dir.join(HAPS_FILE); + + let interfaces_tokens = Interfaces::generate(SIMICS_API_BINDINGS) + .map(|i| i.to_token_stream()) + .unwrap_or_else(|e| e.write_errors()); + + let haps_tokens = Haps::generate(SIMICS_API_BINDINGS) + .map(|h| h.to_token_stream()) + .unwrap_or_else(|e| e.write_errors()); + + eprintln!("cargo:warning=Writing interfaces to {interfaces_out_file:?}"); + + write( + interfaces_out_file, + unparse(&parse_file(&interfaces_tokens.to_string()).map_err(|e| { + eprintln!("Failed to parse interfaces file: {e}\n{interfaces_tokens}"); + e + })?), + )?; + + eprintln!("cargo:warning=Writing haps to {haps_out_file:?}"); + + write( + haps_out_file, + unparse(&parse_file(&haps_tokens.to_string()).map_err(|e| { + eprintln!("Failed to parse interfaces file: {e}\n{haps_tokens}"); + e + })?), + )?; + + eprintln!("cargo:warning=Emitting cfg directives"); + emit_cfg_directives()?; + eprintln!("cargo:warning=Emitting link info"); + emit_link_info()?; + + Ok(()) +} diff --git a/modules/tsffs/src/simics/simics/src/api/base/attr_value.rs b/simics-rs/simics/src/api/base/attr_value.rs similarity index 51% rename from modules/tsffs/src/simics/simics/src/api/base/attr_value.rs rename to simics-rs/simics/src/api/base/attr_value.rs index 62f3912b..24e998f4 100644 --- a/modules/tsffs/src/simics/simics/src/api/base/attr_value.rs +++ b/simics-rs/simics/src/api/base/attr_value.rs @@ -1,27 +1,25 @@ -// Copyright (C) 2023 Intel Corporation +// Copyright (C) 2024 Intel Corporation // SPDX-License-Identifier: Apache-2.0 -//! Type-safe wrappers for operations on `AttrValue`s +//! Type-safe wrappers for operations on `AttrValue`s including conversion to and from Rust +//! types #![allow(clippy::not_unsafe_ptr_arg_deref)] use crate::{ - api::{ - sys::{ - attr_kind_t, attr_value__bindgen_ty_1, attr_value_t, SIM_alloc_attr_dict, - SIM_alloc_attr_list, SIM_attr_dict_resize, SIM_attr_dict_set_item, - SIM_attr_list_resize, SIM_attr_list_set_item, SIM_free_attribute, - }, - ConfObject, + simics_exception, + sys::{ + attr_kind_t, attr_value__bindgen_ty_1, attr_value_t, SIM_alloc_attr_dict, + SIM_alloc_attr_list, SIM_attr_dict_resize, SIM_attr_dict_set_item, SIM_attr_list_resize, + SIM_attr_list_set_item, SIM_free_attribute, }, - Error, Result, + ConfObject, Error, Result, }; use ordered_float::OrderedFloat; -use simics_macro::simics_exception; use std::{ any::type_name, collections::{BTreeMap, BTreeSet, HashMap, HashSet}, - ffi::{CStr, CString}, + ffi::{c_void, CStr, CString}, fmt::Debug, hash::Hash, mem::size_of, @@ -29,22 +27,62 @@ use std::{ ptr::null_mut, }; +/// Type alias for the kind of an `AttrValue` pub type AttrKind = attr_kind_t; #[derive(Copy, Clone)] #[repr(C)] +/// Owned attribute value pub struct AttrValue(attr_value_t); // NOTE: Safety for AttrValue types must be obeyed +// Safety: Owned types are safe to send and share between threads unsafe impl Send for AttrValue {} +// Safety: Owned types are safe to share between threads unsafe impl Sync for AttrValue {} impl Debug for AttrValue { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - f.debug_tuple("AttrValue") + let mut debug = f.debug_tuple("AttrValue"); + debug .field(&self.0.private_kind) - .field(&self.0.private_size) - .finish() + .field(&self.0.private_size); + + match self.0.private_kind { + AttrKind::Sim_Val_Integer => { + if self.0.private_size == 0 { + debug.field(&unsafe { self.0.private_u.integer }) + } else { + debug.field(&unsafe { self.0.private_u.integer.to_le_bytes() }) + } + } + AttrKind::Sim_Val_Boolean => debug.field(&unsafe { self.0.private_u.boolean }), + AttrKind::Sim_Val_String => { + let string = unsafe { CStr::from_ptr(self.0.private_u.string) } + .to_str() + .unwrap_or("Invalid UTF-8"); + debug.field(&string) + } + AttrKind::Sim_Val_Floating => debug.field(&unsafe { self.0.private_u.floating }), + AttrKind::Sim_Val_Object => debug.field(&unsafe { self.0.private_u.object }), + AttrKind::Sim_Val_Data => { + let data = unsafe { + std::slice::from_raw_parts( + self.0.private_u.data as *const u8, + self.0.private_size as usize, + ) + }; + debug.field(&data) + } + AttrKind::Sim_Val_List => debug.field(&"[...]"), + AttrKind::Sim_Val_Dict => debug.field(&"{..., ...}"), + AttrKind::Sim_Val_Nil => debug.field(&"Nil"), + AttrKind::Sim_Val_Invalid => debug.field(&"Invalid"), + AttrKind::Sim_Val_Py_Object => debug.field(&"PyObject"), + AttrKind::Sim_Val_Unresolved_Object => debug.field(&"UnresolvedObject"), + }; + + debug.finish() } } @@ -67,6 +105,96 @@ impl AttrValue { }) } + /// Construct a signed `AttrValue` + pub fn signed(s: i64) -> Self { + Self(attr_value_t { + private_kind: AttrKind::Sim_Val_Integer, + private_size: 1, + private_u: attr_value__bindgen_ty_1 { integer: s }, + }) + } + + /// Construct an unsigned `AttrValue` + pub fn unsigned(u: u64) -> Self { + Self(attr_value_t { + private_kind: AttrKind::Sim_Val_Integer, + private_size: 0, + private_u: attr_value__bindgen_ty_1 { + integer: i64::from_le_bytes(u.to_le_bytes()), + }, + }) + } + + /// Construct a boolean `AttrValue` + pub fn boolean(b: bool) -> Self { + Self(attr_value_t { + private_kind: AttrKind::Sim_Val_Boolean, + private_size: 0, + private_u: attr_value__bindgen_ty_1 { boolean: b }, + }) + } + + /// Construct a string `AttrValue` + pub fn string(s: &str) -> Result { + Ok(Self(attr_value_t { + private_kind: AttrKind::Sim_Val_String, + private_size: 0, + private_u: attr_value__bindgen_ty_1 { + string: CString::new(s).map_err(Error::from)?.into_raw(), + }, + })) + } + + /// Construct a string `AttrValue` without checking for null bytes in the input string. + /// This method *will* panic if `s` contains a null byte, but is used to simplify some + /// APIs to avoid requiring a `Result` type. + pub fn string_unchecked(s: &str) -> Self { + Self(attr_value_t { + private_kind: AttrKind::Sim_Val_String, + private_size: 0, + private_u: attr_value__bindgen_ty_1 { + string: CString::new(s) + .expect("Failed to allocate memory for string") + .into_raw(), + }, + }) + } + + /// Construct a floating `AttrValue` + pub fn floating(f: f64) -> Self { + Self(attr_value_t { + private_kind: AttrKind::Sim_Val_Floating, + private_size: 0, + private_u: attr_value__bindgen_ty_1 { floating: f }, + }) + } + + /// Construct an object `AttrValue` + pub fn object(o: *mut ConfObject) -> Self { + Self(attr_value_t { + private_kind: AttrKind::Sim_Val_Object, + private_size: 0, + private_u: attr_value__bindgen_ty_1 { object: o }, + }) + } + + /// Construct a data `AttrValue` + pub fn data(d: T) -> Self + where + T: Into>, + { + let data = d.into(); + let len = data.len(); + + Self(attr_value_t { + private_kind: AttrKind::Sim_Val_Data, + private_size: len as u32, + private_u: attr_value__bindgen_ty_1 { + data: Box::into_raw(data) as *mut _, + }, + }) + } + /// Construct an empty `AttrValue` list of a certain length. This should typically not be /// used, a `Vec where T: TryInto` can be converted to an `AttrValue` with /// `try_into`. @@ -83,6 +211,18 @@ impl AttrValue { } impl AttrValue { + #[doc(hidden)] + /// Convert a raw pointer to an `AttrValue` into an `AttrValue` + pub unsafe fn from_raw(raw: *mut attr_value_t) -> Self { + Self(unsafe { *raw }) + } + + #[doc(hidden)] + /// Consume the value and return the inner `attr_value_t` + pub fn into_raw(self) -> attr_value_t { + self.0 + } + /// Get a constant pointer to the inner attr value pub fn as_ptr(&self) -> *const attr_value_t { &self.0 as *const attr_value_t @@ -170,26 +310,26 @@ impl AttrValue { .then_some(unsafe { self.0.private_u.integer }) } - /// Get the value as an integer, if it is one, or `None` otherwise. + /// Get the value as an unsigned integer, if it is one, or `None` otherwise. pub fn as_unsigned(&self) -> Option { self.is_unsigned().then_some(u64::from_le_bytes(unsafe { self.0.private_u.integer.to_le_bytes() })) } - /// Get the value as an integer, if it is one, or `None` otherwise. + /// Get the value as a signed integer, if it is one, or `None` otherwise. pub fn as_signed(&self) -> Option { self.is_signed() .then_some(unsafe { self.0.private_u.integer }) } - /// Get the value as an integer, if it is one, or `None` otherwise. + /// Get the value as a boolean, if it is one, or `None` otherwise. pub fn as_boolean(&self) -> Option { self.is_boolean() .then_some(unsafe { self.0.private_u.boolean }) } - /// Get the value as an integer, if it is one, or `None` otherwise. + /// Get the value as a string, if it is one, or `None` otherwise. pub fn as_string(&self) -> Option { self.is_string() .then(|| { @@ -201,19 +341,19 @@ impl AttrValue { .flatten() } - /// Get the value as an integer, if it is one, or `None` otherwise. + /// Get the value as a float, if it is one, or `None` otherwise. pub fn as_floating(&self) -> Option { self.is_floating() .then_some(unsafe { self.0.private_u.floating }) } - /// Get the value as an integer, if it is one, or `None` otherwise. + /// Get the value as a `ConfObject`, if it is one, or `None` otherwise. pub fn as_object(&self) -> Option<*mut ConfObject> { self.is_object() .then_some(unsafe { self.0.private_u.object }) } - /// Get the value as an integer, if it is one, or `None` otherwise. Data is copied, the + /// Get the value as data, if it is one, or `None` otherwise. Data is copied, the /// `AttrValue` maintains ownership. pub fn as_data(&self) -> Option where @@ -232,8 +372,8 @@ impl AttrValue { } /// Get the value as a list, if it is one, or `None` otherwise. Data is copied, the - /// `AttrValue` maintains ownership. - pub fn as_list(&self) -> Result>> + /// `AttrValue` maintains ownership. Use `as_list` if you + pub fn as_list_checked(&self) -> Result>> where T: TryFrom + Clone, Error: From<>::Error>, @@ -261,7 +401,6 @@ impl AttrValue { let value = AttrValue(*i); value.try_into().map_err(|e| { Error::NestedFromAttrValueConversionError { - value, ty: type_name::().to_string(), source: Box::new(Error::from(e)), } @@ -278,8 +417,12 @@ impl AttrValue { } /// Get the value as a list, if it is one, or `None` otherwise. Data is copied, the - /// `AttrValue` maintains ownership. - pub fn as_heterogeneous_list(&self) -> Result>> { + /// `AttrValue` maintains ownership. Use `as_list` if you + pub fn as_list(&self) -> Option> + where + T: TryFrom + Clone, + Error: From<>::Error>, + { if self.is_list() { let size = self.size() as isize; @@ -292,29 +435,54 @@ impl AttrValue { .map(|i| Box::leak(unsafe { Box::from_raw(self.0.private_u.list.offset(i)) })) .collect::>(); - Ok(Some( + if items + .iter() + .all(|i| Some(i.private_kind) == items.first().map(|f| f.private_kind)) + { items .into_iter() .map(|i| { let value = AttrValue(*i); - value - .try_into() - .map_err(|e| Error::NestedFromAttrValueConversionError { - value, - ty: type_name::().to_string(), - source: Box::new(e), - }) + value.try_into().ok() }) - .collect::>>()?, - )) + .collect::>>() + } else { + None + } } else { - Ok(None) + None + } + } + + /// Get the value as a list, if it is one, or `None` otherwise. Data is copied, the + /// `AttrValue` maintains ownership. + pub fn as_heterogeneous_list(&self) -> Option> { + if self.is_list() { + let size = self.size() as isize; + + // Rust vectors cannot be heterogeneous + + let items = (0..size) + // NOTE: These are leaked because the semantics of data ownership are that + // returned data is owned by the attr and ownership is *not* returned to the + // caller. It must be freed elsewhere. + .map(|i| Box::leak(unsafe { Box::from_raw(self.0.private_u.list.offset(i)) })) + .collect::>(); + + Some( + items + .into_iter() + .map(|i| AttrValue(*i).into()) + .collect::>(), + ) + } else { + None } } /// Get the value as a dict, if it is one, or `None` otherwise. Data is copied, the /// `AttrValue` maintains ownership. - pub fn as_dict(&self) -> Result>> + pub fn as_dict_checked(&self) -> Result>> where T: TryFrom + Ord, U: TryFrom, @@ -347,7 +515,6 @@ impl AttrValue { let key = AttrValue(k); key.try_into() .map_err(|e| Error::NestedFromAttrValueConversionError { - value: key, ty: type_name::().to_string(), source: Box::new(Error::from(e)), }) @@ -356,7 +523,6 @@ impl AttrValue { value .try_into() .map_err(|e| Error::NestedFromAttrValueConversionError { - value, ty: type_name::().to_string(), source: Box::new(Error::from(e)), }) @@ -375,6 +541,56 @@ impl AttrValue { } } + /// Get the value as a dict, if it is one, or `None` otherwise. Data is copied, the + /// `AttrValue` maintains ownership. + pub fn as_dict(&self) -> Option> + where + T: TryFrom + Ord, + U: TryFrom, + Error: From<>::Error>, + Error: From<>::Error>, + { + if self.is_dict() { + let size = self.size() as isize; + + let items = (0..size) + .map(|i| { + // NOTE: These are leaked because the semantics of data ownership are that + // returned data is owned by the attr and ownership is *not* returned to the + // caller. It must be freed elsewhere. + ( + Box::leak(unsafe { Box::from_raw(self.0.private_u.dict.offset(i)) }).key, + Box::leak(unsafe { Box::from_raw(self.0.private_u.dict.offset(i)) }).value, + ) + }) + .collect::>(); + + if items.iter().all(|(k, v)| { + Some(k.private_kind) == items.first().map(|f| f.0.private_kind) + && Some(v.private_kind) == items.first().map(|f| f.1.private_kind) + }) { + Some( + items + .into_iter() + .map(|(k, v)| { + let key = AttrValue(k); + key.try_into().ok().and_then(|k| { + let value = AttrValue(v); + value.try_into().ok().map(|v| (k, v)) + }) + }) + .collect::>>()? + .into_iter() + .collect::>(), + ) + } else { + None + } + } else { + None + } + } + /// Get the value as a dict, if it is one, or `None` otherwise. Data is copied, the /// `AttrValue` maintains ownership. pub fn as_heterogeneous_dict(&self) -> Result>> { @@ -398,26 +614,9 @@ impl AttrValue { .into_iter() .map(|(k, v)| { let key = AttrValue(k); - key.try_into() - .map_err(|e| Error::NestedFromAttrValueConversionError { - value: key, - ty: type_name::().to_string(), - source: Box::new(e), - }) - .and_then(|k| { - let value = AttrValue(v); - value - .try_into() - .map_err(|e| Error::NestedFromAttrValueConversionError { - value, - ty: type_name::().to_string(), - source: Box::new(e), - }) - .map(|v| (k, v)) - }) + let value = AttrValue(v); + (key.into(), value.into()) }) - .collect::>>()? - .into_iter() .collect::>(), ) } else { @@ -933,19 +1132,35 @@ macro_rules! impl_try_into_unsigned { type Error = Error; fn try_from(value: AttrValue) -> Result { - value - .as_unsigned() - .ok_or_else(|| Error::AttrValueType { - actual: value.kind(), - expected: AttrKind::Sim_Val_Integer, - }) - .and_then(|i| { - i.try_into() + if let Some(unsigned) = value.as_unsigned() { + unsigned + .try_into() + .map_err(|_| Error::FromAttrValueConversionError { + ty: type_name::<$t>().to_string(), + }) + } else if let Some(signed) = value.as_signed() { + // For signed values, we can try to convert them into unsigned + // values if they are non-negative. + if signed >= 0 { + signed + .try_into() .map_err(|_| Error::FromAttrValueConversionError { - value, ty: type_name::<$t>().to_string(), }) + } else { + Err(Error::AttrValueType { + actual: value.kind(), + expected: AttrKind::Sim_Val_Integer, + reason: "negative value cannot be converted to unsigned".to_string(), + }) + } + } else { + Err(Error::AttrValueType { + actual: value.kind(), + expected: AttrKind::Sim_Val_Integer, + reason: "value is not an integer".to_string(), }) + } } } }; @@ -957,19 +1172,21 @@ macro_rules! impl_try_into_signed { type Error = Error; fn try_from(value: AttrValue) -> Result { - value - .as_signed() - .ok_or_else(|| Error::AttrValueType { + if let Some(signed) = value.as_signed() { + signed + .try_into() + .map_err(|_| Error::FromAttrValueConversionError { + ty: type_name::<$t>().to_string(), + }) + } else if let Some(unsigned) = value.as_unsigned() { + unsigned.try_into().map_err(Error::from) + } else { + Err(Error::AttrValueType { actual: value.kind(), expected: AttrKind::Sim_Val_Integer, + reason: "The value is not an integer".to_string(), }) - .and_then(|i| { - i.try_into() - .map_err(|_| Error::FromAttrValueConversionError { - value, - ty: type_name::<$t>().to_string(), - }) - }) + } } } }; @@ -986,11 +1203,11 @@ macro_rules! impl_try_into_float { .ok_or_else(|| Error::AttrValueType { actual: value.kind(), expected: AttrKind::Sim_Val_Floating, + reason: "The value is not a floating point number".to_string(), }) .and_then(|f| { f.try_into() .map_err(|_| Error::FromAttrValueConversionError { - value, ty: type_name::<$t>().to_string(), }) }) @@ -1011,6 +1228,18 @@ impl_try_into_signed! { i64 } impl_try_into_signed! { isize } impl_try_into_float! { f64 } +impl TryFrom for f32 { + type Error = Error; + + fn try_from(value: AttrValue) -> Result { + Ok(value.as_floating().ok_or_else(|| Error::AttrValueType { + actual: value.kind(), + expected: AttrKind::Sim_Val_Floating, + reason: "The value is not a floating point number".to_string(), + })? as f32) + } +} + impl TryFrom for bool { type Error = Error; @@ -1018,6 +1247,7 @@ impl TryFrom for bool { value.as_boolean().ok_or_else(|| Error::AttrValueType { actual: value.kind(), expected: AttrKind::Sim_Val_Boolean, + reason: "The value is not a boolean".to_string(), }) } } @@ -1028,6 +1258,7 @@ impl TryFrom for String { value.as_string().ok_or_else(|| Error::AttrValueType { actual: value.kind(), expected: AttrKind::Sim_Val_String, + reason: "The value is not a string".to_string(), }) } } @@ -1040,6 +1271,7 @@ impl TryFrom for PathBuf { .ok_or_else(|| Error::AttrValueType { actual: value.kind(), expected: AttrKind::Sim_Val_String, + reason: "The value is not a string".to_string(), }) .map(PathBuf::from) } @@ -1053,9 +1285,10 @@ where type Error = Error; fn try_from(value: AttrValue) -> Result { - value.as_list()?.ok_or_else(|| Error::AttrValueType { + value.as_list().ok_or_else(|| Error::AttrValueType { actual: value.kind(), expected: AttrKind::Sim_Val_List, + reason: "The value is not a homogeneous list".to_string(), }) } } @@ -1069,10 +1302,11 @@ where fn try_from(value: AttrValue) -> Result { value - .as_list()? + .as_list() .ok_or_else(|| Error::AttrValueType { actual: value.kind(), expected: AttrKind::Sim_Val_List, + reason: "The value is not a homogeneous list".to_string(), }) .map(|s| s.into_iter().collect::>()) } @@ -1087,10 +1321,11 @@ where fn try_from(value: AttrValue) -> Result { value - .as_list()? + .as_list() .ok_or_else(|| Error::AttrValueType { actual: value.kind(), expected: AttrKind::Sim_Val_List, + reason: "The value is not a homogeneous list".to_string(), }) .map(|s| s.into_iter().collect::>()) } @@ -1107,10 +1342,11 @@ where fn try_from(value: AttrValue) -> Result { value - .as_dict()? + .as_dict() .ok_or_else(|| Error::AttrValueType { actual: value.kind(), expected: AttrKind::Sim_Val_Dict, + reason: "The value is not a homogeneous dict".to_string(), }) .map(|d| d.into_iter().collect::>()) } @@ -1126,399 +1362,1339 @@ where type Error = Error; fn try_from(value: AttrValue) -> Result { - value.as_dict()?.ok_or_else(|| Error::AttrValueType { + value.as_dict().ok_or_else(|| Error::AttrValueType { actual: value.kind(), expected: AttrKind::Sim_Val_Dict, + reason: "The value is not a homogeneous dict".to_string(), }) } } -#[derive(Debug, Clone, Ord, PartialOrd, Eq, PartialEq, Hash)] -pub enum AttrValueType { - Nil, - Bool(bool), - Signed(i64), - Unsigned(u64), - Float(OrderedFloat), - String(String), - List(Vec), - Dict(BTreeMap), -} +impl TryFrom for Option { + type Error = Error; -impl AttrValueType { - pub fn is_nil(&self) -> bool { - matches!(self, Self::Nil) + fn try_from(value: AttrValue) -> Result { + if value.is_nil() { + Ok(None) + } else { + value.try_into().map(Some) + } } +} - pub fn is_boolean(&self) -> bool { - matches!(self, Self::Bool(_)) - } +impl TryFrom for Option { + type Error = Error; - pub fn is_integer(&self) -> bool { - matches!(self, Self::Signed(_) | Self::Unsigned(_)) + fn try_from(value: AttrValue) -> Result { + if value.is_nil() { + Ok(None) + } else { + value.try_into().map(Some) + } } +} - pub fn is_signed(&self) -> bool { - matches!(self, Self::Signed(_)) - } +impl TryFrom for Option { + type Error = Error; - pub fn is_unsigned(&self) -> bool { - matches!(self, Self::Unsigned(_)) + fn try_from(value: AttrValue) -> Result { + if value.is_nil() { + Ok(None) + } else { + value.try_into().map(Some) + } } +} - pub fn is_floating(&self) -> bool { - matches!(self, Self::Float(_)) - } +impl TryFrom for Option { + type Error = Error; - pub fn is_string(&self) -> bool { - matches!(self, Self::String(_)) + fn try_from(value: AttrValue) -> Result { + if value.is_nil() { + Ok(None) + } else { + value.try_into().map(Some) + } } +} - pub fn is_list(&self) -> bool { - matches!(self, Self::List(_)) - } +impl TryFrom for Option { + type Error = Error; - pub fn is_dict(&self) -> bool { - matches!(self, Self::Dict(_)) + fn try_from(value: AttrValue) -> Result { + if value.is_nil() { + Ok(None) + } else { + value.try_into().map(Some) + } } +} - pub fn as_nil(&self) -> Option<()> { - self.is_nil().then_some(()) - } +impl TryFrom for Option { + type Error = Error; - pub fn as_boolean(&self) -> Option { - match self { - Self::Bool(b) => Some(*b), - _ => None, + fn try_from(value: AttrValue) -> Result { + if value.is_nil() { + Ok(None) + } else { + value.try_into().map(Some) } } +} - pub fn as_unsigned(&self) -> Option { - match self { - Self::Unsigned(u) => Some(*u), - _ => None, - } - } +impl TryFrom for Option { + type Error = Error; - pub fn as_signed(&self) -> Option { - match self { - Self::Signed(i) => Some(*i), - _ => None, + fn try_from(value: AttrValue) -> Result { + if value.is_nil() { + Ok(None) + } else { + value.try_into().map(Some) } } +} - pub fn as_float(&self) -> Option { - match self { - Self::Float(f) => Some(f.0), - _ => None, - } - } +impl TryFrom for Option { + type Error = Error; - pub fn as_string(&self) -> Option { - match self { - Self::String(s) => Some(s.clone()), - _ => None, + fn try_from(value: AttrValue) -> Result { + if value.is_nil() { + Ok(None) + } else { + value.try_into().map(Some) } } +} - pub fn as_list(&self) -> Option> { - match self { - Self::List(l) => Some(l.clone()), - _ => None, +impl TryFrom for Option { + type Error = Error; + + fn try_from(value: AttrValue) -> Result { + if value.is_nil() { + Ok(None) + } else { + value.try_into().map(Some) } } +} - pub fn as_dict(&self) -> Option> { - match self { - Self::Dict(d) => Some(d.clone()), - _ => None, +impl TryFrom for Option { + type Error = Error; + + fn try_from(value: AttrValue) -> Result { + if value.is_nil() { + Ok(None) + } else { + value.try_into().map(Some) } } } -macro_rules! impl_attr_value_type_from { - ($t:ty, $($variant:tt)+) => { - impl From<$t> for AttrValueType { - fn from(value: $t) -> Self { - $($variant)+(value.into()) - } +impl TryFrom for Option { + type Error = Error; + + fn try_from(value: AttrValue) -> Result { + if value.is_nil() { + Ok(None) + } else { + value.try_into().map(Some) } - }; + } } -impl_attr_value_type_from! { u8, Self::Unsigned } -impl_attr_value_type_from! { u16, Self::Unsigned } -impl_attr_value_type_from! { u32, Self::Unsigned } -impl_attr_value_type_from! { u64, Self::Unsigned } -impl_attr_value_type_from! { i8, Self::Signed } -impl_attr_value_type_from! { i16, Self::Signed } -impl_attr_value_type_from! { i32, Self::Signed } -impl_attr_value_type_from! { i64, Self::Signed } -impl_attr_value_type_from! { f64, Self::Float } -impl_attr_value_type_from! { bool, Self::Bool} -impl_attr_value_type_from! { String, Self::String } +impl TryFrom for Option { + type Error = Error; -impl From for AttrValueType { - fn from(value: usize) -> Self { - // NOTE: This is ok, because SIMICS does not support 128-bit native address machines - Self::Unsigned(value as u64) + fn try_from(value: AttrValue) -> Result { + if value.is_nil() { + Ok(None) + } else { + value.try_into().map(Some) + } } } -impl From for AttrValueType { - fn from(value: isize) -> Self { - // NOTE: This is ok, because SIMICS does not support 128-bit native address machines - Self::Signed(value as i64) +impl TryFrom for Option { + type Error = Error; + + fn try_from(value: AttrValue) -> Result { + if value.is_nil() { + Ok(None) + } else { + value.try_into().map(Some) + } } } -impl From<&str> for AttrValueType { - fn from(value: &str) -> Self { - Self::String(value.to_string()) +impl TryFrom for Option { + type Error = Error; + + fn try_from(value: AttrValue) -> Result { + if value.is_nil() { + Ok(None) + } else { + value.try_into().map(Some) + } } } -impl From for AttrValueType { - fn from(value: PathBuf) -> Self { - value - .to_str() - .ok_or_else(|| Error::ToString) - .map(|s| s.to_string().into()) - // TODO: Do not panic here, update TryIntoAttrValueTypeDict to use try_into() - .expect("Failed to convert pathbuf to string") +impl TryFrom for Option> +where + T: TryFrom + Clone, + Error: From<>::Error>, +{ + type Error = Error; + + fn try_from(value: AttrValue) -> Result { + if value.is_nil() { + Ok(None) + } else { + value.try_into().map(Some) + } } } -impl From> for AttrValueType +impl TryFrom for Option> where - T: Into, + T: TryFrom + Eq + Hash + Clone, + Error: From<>::Error>, { - fn from(value: Vec) -> Self { - Self::List(value.into_iter().map(|i| i.into()).collect::>()) + type Error = Error; + + fn try_from(value: AttrValue) -> Result { + if value.is_nil() { + Ok(None) + } else { + value.try_into().map(Some) + } } } -impl From> for AttrValueType +impl TryFrom for Option> where - T: Into, + T: TryFrom + Ord + Clone, + Error: From<>::Error>, { - fn from(value: BTreeSet) -> Self { - Self::List(value.into_iter().map(|i| i.into()).collect::>()) + type Error = Error; + + fn try_from(value: AttrValue) -> Result { + if value.is_nil() { + Ok(None) + } else { + value.try_into().map(Some) + } } } -impl From> for AttrValueType +impl TryFrom for Option> where - T: Into, + T: TryFrom + Eq + Hash + Ord, + U: TryFrom, + Error: From<>::Error>, + Error: From<>::Error>, { - fn from(value: HashSet) -> Self { - Self::List(value.into_iter().map(|i| i.into()).collect::>()) + type Error = Error; + + fn try_from(value: AttrValue) -> Result { + if value.is_nil() { + Ok(None) + } else { + value.try_into().map(Some) + } } } -impl From> for AttrValueType +impl TryFrom for Option> where - T: Into, - U: Into, + T: TryFrom + Ord, + U: TryFrom, + Error: From<>::Error>, + Error: From<>::Error>, { - fn from(value: BTreeMap) -> Self { - Self::Dict( - value - .into_iter() - .map(|(k, v)| (k.into(), v.into())) - .collect::>(), - ) + type Error = Error; + + fn try_from(value: AttrValue) -> Result { + if value.is_nil() { + Ok(None) + } else { + value.try_into().map(Some) + } + } +} + +#[derive(Debug, Clone, Ord, PartialOrd, Eq, PartialEq, Hash)] +/// A value type that can be converted to and from `AttrValue` +pub enum AttrValueType { + /// An invalid value + Invalid, + /// A nil value, which is not invalid + Nil, + /// An unsigned integer value + Unsigned(u64), + /// A signed integer value + Signed(i64), + /// A boolean value + Bool(bool), + /// A string value + String(String), + /// A floating point value + Float(OrderedFloat), + /// A pointer to a `ConfObject` + Object(*mut ConfObject), + /// Some owned data + Data(Box<[u8]>), + /// A list of values + List(Vec), + /// A dictionary of values + Dict(BTreeMap), +} + +impl AttrValueType { + /// Returns whether the value is invalid + pub fn is_invalid(&self) -> bool { + matches!(self, Self::Invalid) + } + + /// Returns whether the value is nil + pub fn is_nil(&self) -> bool { + matches!(self, Self::Nil) + } + + /// Returns whether the value is an integer + pub fn is_integer(&self) -> bool { + matches!(self, Self::Signed(_) | Self::Unsigned(_)) + } + + /// Returns whether the value is a signed integer + pub fn is_signed(&self) -> bool { + matches!(self, Self::Signed(_)) + } + + /// Returns whether the value is an unsigned integer + pub fn is_unsigned(&self) -> bool { + matches!(self, Self::Unsigned(_)) + } + + /// Returns whether the value is a boolean + pub fn is_boolean(&self) -> bool { + matches!(self, Self::Bool(_)) + } + + /// Returns whether the value is a string + pub fn is_string(&self) -> bool { + matches!(self, Self::String(_)) + } + + /// Returns whether the value is floating-point + pub fn is_floating(&self) -> bool { + matches!(self, Self::Float(_)) + } + + /// Returns whether the value is an object + pub fn is_object(&self) -> bool { + matches!(self, Self::Object(_)) + } + + /// Returns whether the value is data + pub fn is_data(&self) -> bool { + matches!(self, Self::Data(_)) + } + + /// Returns whether the value is a list + pub fn is_list(&self) -> bool { + matches!(self, Self::List(_)) + } + + /// Returns whether the value is a dictionary + pub fn is_dict(&self) -> bool { + matches!(self, Self::Dict(_)) + } + + /// Returns the kind of the attr value type + pub fn kind(&self) -> AttrKind { + match self { + Self::Invalid => AttrKind::Sim_Val_Invalid, + Self::Nil => AttrKind::Sim_Val_Nil, + Self::Unsigned(_) => AttrKind::Sim_Val_Integer, + Self::Signed(_) => AttrKind::Sim_Val_Integer, + Self::Bool(_) => AttrKind::Sim_Val_Boolean, + Self::String(_) => AttrKind::Sim_Val_String, + Self::Float(_) => AttrKind::Sim_Val_Floating, + Self::Object(_) => AttrKind::Sim_Val_Object, + Self::Data(_) => AttrKind::Sim_Val_Data, + Self::List(_) => AttrKind::Sim_Val_List, + Self::Dict(_) => AttrKind::Sim_Val_Dict, + } + } + + /// Return the value as an invalid value, if it is one, or `None` otherwise. An invalid + /// value is represented as a unit tuple + pub fn as_invalid(&self) -> Option<()> { + self.is_invalid().then_some(()) + } + + /// Return the value as a nil value, if it is one, or `None` otherwise. A nil value is + /// represented as a unit tuple + pub fn as_nil(&self) -> Option<()> { + self.is_nil().then_some(()) + } + + /// Return the value as an unsigned integer, if it is one, or `None` otherwise. + pub fn as_unsigned(&self) -> Option { + match self { + Self::Unsigned(u) => Some(*u), + _ => None, + } + } + + /// Return the value as a signed integer, if it is one, or `None` otherwise. + pub fn as_signed(&self) -> Option { + match self { + Self::Signed(i) => Some(*i), + _ => None, + } + } + + /// Return the value as a boolean, if it is one, or `None` otherwise. + pub fn as_boolean(&self) -> Option { + match self { + Self::Bool(b) => Some(*b), + _ => None, + } + } + + /// Return the value as a string, if it is one, or `None` otherwise. + pub fn as_string(&self) -> Option { + match self { + Self::String(s) => Some(s.clone()), + _ => None, + } + } + + /// Return the value as a floating-point value, if it is one, or `None` otherwise. Unwraps + /// the float from being `OrderedFloat`. + pub fn as_float(&self) -> Option { + match self { + Self::Float(f) => Some(f.0), + _ => None, + } + } + + /// Return the value as an object, if it is one, or `None` otherwise. + pub fn as_object(&self) -> Option<*mut ConfObject> { + match self { + Self::Object(o) => Some(*o), + _ => None, + } + } + + /// Return the value as data, if it is one, or `None` otherwise. The data is returned as a + /// raw pointer to the data, and the containing box is *not* leaked by this method, so + /// ownership transfers must be made explicitly in addition to calling this method. + pub fn as_data(&self) -> Option<*mut c_void> { + match self { + Self::Data(d) => Some(d.as_ptr() as *mut c_void), + _ => None, + } + } + + /// Return the value as a list, if it is one, or `None` otherwise. + pub fn as_list(&self) -> Option> { + match self { + Self::List(l) => Some(l.clone()), + _ => None, + } + } + + /// Return the value as a dictionary, if it is one, or `None` otherwise. + pub fn as_dict(&self) -> Option> { + match self { + Self::Dict(d) => Some(d.clone()), + _ => None, + } + } +} + +macro_rules! impl_attr_value_type_from { + ($t:ty, $($variant:tt)+) => { + impl From<$t> for AttrValueType { + fn from(value: $t) -> Self { + $($variant)+(value.into()) + } + } + }; +} + +impl_attr_value_type_from! { u8, Self::Unsigned } +impl_attr_value_type_from! { u16, Self::Unsigned } +impl_attr_value_type_from! { u32, Self::Unsigned } +impl_attr_value_type_from! { u64, Self::Unsigned } +impl_attr_value_type_from! { i8, Self::Signed } +impl_attr_value_type_from! { i16, Self::Signed } +impl_attr_value_type_from! { i32, Self::Signed } +impl_attr_value_type_from! { i64, Self::Signed } +impl_attr_value_type_from! { f64, Self::Float } +impl_attr_value_type_from! { bool, Self::Bool} +impl_attr_value_type_from! { String, Self::String } + +impl From for AttrValueType { + fn from(value: usize) -> Self { + // NOTE: This is ok, because SIMICS does not support 128-bit native address machines + Self::Unsigned(value as u64) + } +} + +impl From for AttrValueType { + fn from(value: isize) -> Self { + // NOTE: This is ok, because SIMICS does not support 128-bit native address machines + Self::Signed(value as i64) + } +} + +impl From<&str> for AttrValueType { + fn from(value: &str) -> Self { + Self::String(value.to_string()) + } +} + +impl From for AttrValueType { + fn from(value: PathBuf) -> Self { + value + .to_str() + .ok_or_else(|| Error::ToString) + .map(|s| s.to_string().into()) + // TODO: Do not panic here, update TryIntoAttrValueTypeDict to use try_into() + .expect("Failed to convert pathbuf to string") + } +} + +impl From> for AttrValueType +where + T: Into, +{ + fn from(value: Vec) -> Self { + Self::List(value.into_iter().map(|i| i.into()).collect::>()) + } +} + +impl From> for AttrValueType +where + T: Into, +{ + fn from(value: BTreeSet) -> Self { + Self::List(value.into_iter().map(|i| i.into()).collect::>()) + } +} + +impl From> for AttrValueType +where + T: Into, +{ + fn from(value: HashSet) -> Self { + Self::List(value.into_iter().map(|i| i.into()).collect::>()) + } +} + +impl From> for AttrValueType +where + T: Into, + U: Into, +{ + fn from(value: BTreeMap) -> Self { + Self::Dict( + value + .into_iter() + .map(|(k, v)| (k.into(), v.into())) + .collect::>(), + ) + } +} + +impl From> for AttrValueType +where + T: Into, + U: Into, +{ + fn from(value: HashMap) -> Self { + Self::Dict( + value + .into_iter() + .map(|(k, v)| (k.into(), v.into())) + .collect::>(), + ) + } +} + +impl From> for AttrValueType +where + T: Into, +{ + fn from(value: Option) -> Self { + if let Some(value) = value { + value.into() + } else { + Self::Nil + } + } +} + +impl From for AttrValueType { + fn from(value: AttrValue) -> Self { + if value.is_nil() { + Self::Nil + } else if let Some(i) = value.as_signed() { + Self::Signed(i) + } else if let Some(i) = value.as_unsigned() { + Self::Unsigned(i) + } else if let Some(b) = value.as_boolean() { + Self::Bool(b) + } else if let Some(s) = value.as_string() { + Self::String(s) + } else if let Some(f) = value.as_floating() { + Self::Float(OrderedFloat(f)) + } else if let Some(o) = value.as_object() { + Self::Object(o) + } else if let Some(d) = value.as_data() { + Self::Data(d) + } else if let Some(l) = value.as_list() { + Self::List(l) + } else if let Some(d) = value.as_dict() { + Self::Dict(d) + } else { + Self::Invalid + } + } +} + +impl From for AttrValue { + fn from(value: AttrValueType) -> Self { + match value { + AttrValueType::Invalid => AttrValue::invalid(), + AttrValueType::Nil => AttrValue::nil(), + AttrValueType::Unsigned(u) => AttrValue::unsigned(u), + AttrValueType::Signed(s) => AttrValue::signed(s), + AttrValueType::Bool(b) => AttrValue::boolean(b), + // NOTE: Uses `AttrValue::string_unchecked` to avoid requiring `try_from` for just + // one data type, but this requires the string not contain any NULL bytes. + AttrValueType::String(s) => AttrValue::string_unchecked(&s), + AttrValueType::Float(f) => AttrValue::floating(f.0), + AttrValueType::Object(o) => AttrValue::object(o), + AttrValueType::Data(d) => AttrValue::data(d), + AttrValueType::List(l) => l + .try_into() + .map_err(|_| unreachable!("Conversion from Vec is infallible")) + .expect("Conversion from Vec is infallible"), + AttrValueType::Dict(d) => d + .try_into() + .map_err(|_| { + unreachable!( + "Conversion from BTreeMap is infallible" + ) + }) + .expect("Conversion from BTreeMap is infallible"), + } + } +} + +// implementations for u8, u16, u32, u64, usize, i8, i16, i32, i64, isize, f32, f64, bool, String, PathBuf + +impl TryFrom for u8 { + type Error = Error; + + fn try_from(value: AttrValueType) -> Result { + if let Some(unsigned) = value.as_unsigned() { + unsigned.try_into().map_err(Error::from) + } else if let Some(signed) = value.as_signed() { + // For signed values, we can try to convert them into unsigned + // values if they are non-negative. + if signed >= 0 { + signed.try_into().map_err(Error::from) + } else { + Err(Error::FromAttrValueTypeConversionError { + ty: type_name::().to_string(), + reason: "Negative value cannot be converted to unsigned".to_string(), + }) + } + } else { + Err(Error::FromAttrValueTypeConversionError { + ty: type_name::().to_string(), + reason: "Value is not an integer".to_string(), + }) + } + } +} + +impl TryFrom for u16 { + type Error = Error; + + fn try_from(value: AttrValueType) -> Result { + if let Some(unsigned) = value.as_unsigned() { + unsigned.try_into().map_err(Error::from) + } else if let Some(signed) = value.as_signed() { + // For signed values, we can try to convert them into unsigned + // values if they are non-negative. + if signed >= 0 { + signed.try_into().map_err(Error::from) + } else { + Err(Error::FromAttrValueTypeConversionError { + ty: type_name::().to_string(), + reason: "Negative value cannot be converted to unsigned".to_string(), + }) + } + } else { + Err(Error::FromAttrValueTypeConversionError { + ty: type_name::().to_string(), + reason: "Value is not an integer".to_string(), + }) + } + } +} + +impl TryFrom for u32 { + type Error = Error; + + fn try_from(value: AttrValueType) -> Result { + if let Some(unsigned) = value.as_unsigned() { + unsigned.try_into().map_err(Error::from) + } else if let Some(signed) = value.as_signed() { + // For signed values, we can try to convert them into unsigned + // values if they are non-negative. + if signed >= 0 { + signed.try_into().map_err(Error::from) + } else { + Err(Error::FromAttrValueTypeConversionError { + ty: type_name::().to_string(), + reason: "Negative value cannot be converted to unsigned".to_string(), + }) + } + } else { + Err(Error::FromAttrValueTypeConversionError { + ty: type_name::().to_string(), + reason: "Value is not an integer".to_string(), + }) + } + } +} + +impl TryFrom for u64 { + type Error = Error; + + fn try_from(value: AttrValueType) -> Result { + if let Some(unsigned) = value.as_unsigned() { + unsigned.try_into().map_err(Error::from) + } else if let Some(signed) = value.as_signed() { + // For signed values, we can try to convert them into unsigned + // values if they are non-negative. + if signed >= 0 { + signed.try_into().map_err(Error::from) + } else { + Err(Error::FromAttrValueTypeConversionError { + ty: type_name::().to_string(), + reason: "Negative value cannot be converted to unsigned".to_string(), + }) + } + } else { + Err(Error::FromAttrValueTypeConversionError { + ty: type_name::().to_string(), + reason: "Value is not an integer".to_string(), + }) + } + } +} + +impl TryFrom for usize { + type Error = Error; + + fn try_from(value: AttrValueType) -> Result { + if let Some(unsigned) = value.as_unsigned() { + unsigned.try_into().map_err(Error::from) + } else if let Some(signed) = value.as_signed() { + // For signed values, we can try to convert them into unsigned + // values if they are non-negative. + if signed >= 0 { + signed.try_into().map_err(Error::from) + } else { + Err(Error::FromAttrValueTypeConversionError { + ty: type_name::().to_string(), + reason: "Negative value cannot be converted to unsigned".to_string(), + }) + } + } else { + Err(Error::FromAttrValueTypeConversionError { + ty: type_name::().to_string(), + reason: "Value is not an integer".to_string(), + }) + } + } +} + +impl TryFrom for i8 { + type Error = Error; + + fn try_from(value: AttrValueType) -> Result { + if let Some(signed) = value.as_signed() { + signed.try_into().map_err(Error::from) + } else if let Some(unsigned) = value.as_unsigned() { + // For unsigned values, we can try to convert them into signed + // values if they are within the range of the signed type. + if unsigned <= i8::MAX as u64 { + unsigned.try_into().map_err(Error::from) + } else { + Err(Error::FromAttrValueTypeConversionError { + ty: type_name::().to_string(), + reason: "Value is too large to be converted to signed".to_string(), + }) + } + } else { + Err(Error::FromAttrValueTypeConversionError { + ty: type_name::().to_string(), + reason: "Value is not an integer".to_string(), + }) + } + } +} + +impl TryFrom for i16 { + type Error = Error; + + fn try_from(value: AttrValueType) -> Result { + if let Some(signed) = value.as_signed() { + signed.try_into().map_err(Error::from) + } else if let Some(unsigned) = value.as_unsigned() { + // For unsigned values, we can try to convert them into signed + // values if they are within the range of the signed type. + if unsigned <= i16::MAX as u64 { + unsigned.try_into().map_err(Error::from) + } else { + Err(Error::FromAttrValueTypeConversionError { + ty: type_name::().to_string(), + reason: "Value is too large to be converted to signed".to_string(), + }) + } + } else { + Err(Error::FromAttrValueTypeConversionError { + ty: type_name::().to_string(), + reason: "Value is not an integer".to_string(), + }) + } + } +} + +impl TryFrom for i32 { + type Error = Error; + + fn try_from(value: AttrValueType) -> Result { + if let Some(signed) = value.as_signed() { + signed.try_into().map_err(Error::from) + } else if let Some(unsigned) = value.as_unsigned() { + // For unsigned values, we can try to convert them into signed + // values if they are within the range of the signed type. + if unsigned <= i32::MAX as u64 { + unsigned.try_into().map_err(Error::from) + } else { + Err(Error::FromAttrValueTypeConversionError { + ty: type_name::().to_string(), + reason: "Value is too large to be converted to signed".to_string(), + }) + } + } else { + Err(Error::FromAttrValueTypeConversionError { + ty: type_name::().to_string(), + reason: "Value is not an integer".to_string(), + }) + } + } +} + +impl TryFrom for i64 { + type Error = Error; + + fn try_from(value: AttrValueType) -> Result { + if let Some(signed) = value.as_signed() { + signed.try_into().map_err(Error::from) + } else if let Some(unsigned) = value.as_unsigned() { + // For unsigned values, we can try to convert them into signed + // values if they are within the range of the signed type. + if unsigned <= i64::MAX as u64 { + unsigned.try_into().map_err(Error::from) + } else { + Err(Error::FromAttrValueTypeConversionError { + ty: type_name::().to_string(), + reason: "Value is too large to be converted to signed".to_string(), + }) + } + } else { + Err(Error::FromAttrValueTypeConversionError { + ty: type_name::().to_string(), + reason: "Value is not an integer".to_string(), + }) + } + } +} + +impl TryFrom for isize { + type Error = Error; + + fn try_from(value: AttrValueType) -> Result { + if let Some(signed) = value.as_signed() { + signed.try_into().map_err(Error::from) + } else if let Some(unsigned) = value.as_unsigned() { + // For unsigned values, we can try to convert them into signed + // values if they are within the range of the signed type. + if unsigned <= isize::MAX as u64 { + unsigned.try_into().map_err(Error::from) + } else { + Err(Error::FromAttrValueTypeConversionError { + ty: type_name::().to_string(), + reason: "Value is too large to be converted to signed".to_string(), + }) + } + } else { + Err(Error::FromAttrValueTypeConversionError { + ty: type_name::().to_string(), + reason: "Value is not an integer".to_string(), + }) + } + } +} + +impl TryFrom for f32 { + type Error = Error; + + fn try_from(value: AttrValueType) -> Result { + if let Some(f) = value.as_float() { + Ok(f as f32) + } else { + Err(Error::FromAttrValueTypeConversionError { + ty: type_name::().to_string(), + reason: "Value is not a floating-point number".to_string(), + }) + } + } +} + +impl TryFrom for f64 { + type Error = Error; + + fn try_from(value: AttrValueType) -> Result { + if let Some(f) = value.as_float() { + f.try_into().map_err(Error::from) + } else { + Err(Error::FromAttrValueTypeConversionError { + ty: type_name::().to_string(), + reason: "Value is not a floating-point number".to_string(), + }) + } + } +} + +impl TryFrom for bool { + type Error = Error; + + fn try_from(value: AttrValueType) -> Result { + if let Some(b) = value.as_boolean() { + Ok(b) + } else { + Err(Error::FromAttrValueTypeConversionError { + ty: type_name::().to_string(), + reason: "Value is not a boolean".to_string(), + }) + } + } +} + +impl TryFrom for String { + type Error = Error; + + fn try_from(value: AttrValueType) -> Result { + if let Some(s) = value.as_string() { + Ok(s) + } else { + Err(Error::FromAttrValueTypeConversionError { + ty: type_name::().to_string(), + reason: "Value is not a string".to_string(), + }) + } + } +} + +impl TryFrom for Vec +where + T: TryFrom, + Error: From<>::Error>, +{ + type Error = Error; + + fn try_from(value: AttrValueType) -> Result { + value + .as_list() + .ok_or_else(|| Error::FromAttrValueTypeConversionError { + ty: type_name::>().to_string(), + reason: "Value is not a list".to_string(), + })? + .into_iter() + .map(|a| { + a.try_into() + .map_err(|e| Error::NestedFromAttrValueTypeConversionError { + ty: type_name::().to_string(), + source: Box::new(Error::from(e)), + }) + }) + .collect::>>() + } +} + +impl TryFrom for HashSet +where + T: TryFrom + Eq + Hash, + Error: From<>::Error>, +{ + type Error = Error; + + fn try_from(value: AttrValueType) -> Result { + Ok(value + .as_list() + .ok_or_else(|| Error::FromAttrValueTypeConversionError { + ty: type_name::>().to_string(), + reason: "Value is not a list".to_string(), + })? + .into_iter() + .map(|e| { + e.try_into() + .map_err(|e| Error::NestedFromAttrValueTypeConversionError { + ty: type_name::().to_string(), + source: Box::new(Error::from(e)), + }) + }) + .collect::>>()? + .into_iter() + .collect::>()) + } +} + +impl TryFrom for BTreeSet +where + T: TryFrom + Ord, + Error: From<>::Error>, +{ + type Error = Error; + + fn try_from(value: AttrValueType) -> Result { + Ok(value + .as_list() + .ok_or_else(|| Error::FromAttrValueTypeConversionError { + ty: type_name::>().to_string(), + reason: "Value is not a list".to_string(), + })? + .into_iter() + .map(|e| { + e.try_into() + .map_err(|e| Error::NestedFromAttrValueTypeConversionError { + ty: type_name::().to_string(), + source: Box::new(Error::from(e)), + }) + }) + .collect::>>()? + .into_iter() + .collect::>()) + } +} + +impl TryFrom for HashMap +where + T: TryFrom + Eq + Hash, + U: TryFrom, + Error: From<>::Error>, + Error: From<>::Error>, +{ + type Error = Error; + + fn try_from(value: AttrValueType) -> Result { + Ok(value + .as_dict() + .ok_or_else(|| Error::FromAttrValueTypeConversionError { + ty: type_name::>().to_string(), + reason: "Value is not a dict".to_string(), + })? + .into_iter() + .map(|(k, v)| { + k.try_into() + .map_err(|e| Error::NestedFromAttrValueTypeConversionError { + ty: type_name::().to_string(), + source: Box::new(Error::from(e)), + }) + .and_then(|k| { + v.try_into() + .map_err(|e| Error::NestedFromAttrValueTypeConversionError { + ty: type_name::().to_string(), + source: Box::new(Error::from(e)), + }) + .map(|v| (k, v)) + }) + }) + .collect::>>()? + .into_iter() + .collect::>()) + } +} + +impl TryFrom for BTreeMap +where + T: TryFrom + Ord, + U: TryFrom, + Error: From<>::Error>, + Error: From<>::Error>, +{ + type Error = Error; + + fn try_from(value: AttrValueType) -> Result { + Ok(value + .as_dict() + .ok_or_else(|| Error::FromAttrValueTypeConversionError { + ty: type_name::>().to_string(), + reason: "Value is not a dict".to_string(), + })? + .into_iter() + .map(|(k, v)| { + k.try_into() + .map_err(|e| Error::NestedFromAttrValueTypeConversionError { + ty: type_name::().to_string(), + source: Box::new(Error::from(e)), + }) + .and_then(|k| { + v.try_into() + .map_err(|e| Error::NestedFromAttrValueTypeConversionError { + ty: type_name::().to_string(), + source: Box::new(Error::from(e)), + }) + .map(|v| (k, v)) + }) + }) + .collect::>>()? + .into_iter() + .collect::>()) + } +} + +impl TryFrom for Option { + type Error = Error; + + fn try_from(value: AttrValueType) -> Result { + if value.is_nil() { + Ok(None) + } else { + value.try_into().map(Some) + } + } +} + +impl TryFrom for Option { + type Error = Error; + + fn try_from(value: AttrValueType) -> Result { + if value.is_nil() { + Ok(None) + } else { + value.try_into().map(Some) + } + } +} + +impl TryFrom for Option { + type Error = Error; + + fn try_from(value: AttrValueType) -> Result { + if value.is_nil() { + Ok(None) + } else { + value.try_into().map(Some) + } + } +} + +impl TryFrom for Option { + type Error = Error; + + fn try_from(value: AttrValueType) -> Result { + if value.is_nil() { + Ok(None) + } else { + value.try_into().map(Some) + } + } +} + +impl TryFrom for Option { + type Error = Error; + + fn try_from(value: AttrValueType) -> Result { + if value.is_nil() { + Ok(None) + } else { + value.try_into().map(Some) + } + } +} + +impl TryFrom for Option { + type Error = Error; + + fn try_from(value: AttrValueType) -> Result { + if value.is_nil() { + Ok(None) + } else { + value.try_into().map(Some) + } + } +} + +impl TryFrom for Option { + type Error = Error; + + fn try_from(value: AttrValueType) -> Result { + if value.is_nil() { + Ok(None) + } else { + value.try_into().map(Some) + } + } +} + +impl TryFrom for Option { + type Error = Error; + + fn try_from(value: AttrValueType) -> Result { + if value.is_nil() { + Ok(None) + } else { + value.try_into().map(Some) + } } } -impl From> for AttrValueType -where - T: Into, - U: Into, -{ - fn from(value: HashMap) -> Self { - Self::Dict( - value - .into_iter() - .map(|(k, v)| (k.into(), v.into())) - .collect::>(), - ) +impl TryFrom for Option { + type Error = Error; + + fn try_from(value: AttrValueType) -> Result { + if value.is_nil() { + Ok(None) + } else { + value.try_into().map(Some) + } } } -impl From> for AttrValueType -where - T: Into, -{ - fn from(value: Option) -> Self { - if let Some(value) = value { - value.into() +impl TryFrom for Option { + type Error = Error; + + fn try_from(value: AttrValueType) -> Result { + if value.is_nil() { + Ok(None) } else { - Self::Nil + value.try_into().map(Some) } } } -impl TryFrom for AttrValueType { +impl TryFrom for Option { type Error = Error; - fn try_from(value: AttrValue) -> Result { + fn try_from(value: AttrValueType) -> Result { if value.is_nil() { - Ok(Self::Nil) - } else if let Some(b) = value.as_boolean() { - Ok(Self::Bool(b)) - } else if let Some(i) = value.as_signed() { - Ok(Self::Signed(i)) - } else if let Some(i) = value.as_unsigned() { - Ok(Self::Unsigned(i)) - } else if let Some(f) = value.as_floating() { - Ok(Self::Float(OrderedFloat(f))) - } else if let Some(s) = value.as_string() { - Ok(Self::String(s)) - } else if let Some(l) = value.as_list()? { - Ok(Self::List(l)) - } else if let Some(d) = value.as_dict()? { - Ok(Self::Dict(d)) + Ok(None) } else { - Err(Error::FromAttrValueConversionError { - value, - ty: type_name::().to_string(), - }) + value.try_into().map(Some) } } } -impl TryFrom for AttrValue { +impl TryFrom for Option { type Error = Error; fn try_from(value: AttrValueType) -> Result { - match value { - AttrValueType::Nil => Ok(AttrValue::nil()), - AttrValueType::Bool(v) => Ok(v.into()), - AttrValueType::Signed(v) => Ok(v.into()), - AttrValueType::Unsigned(v) => Ok(v.into()), - AttrValueType::Float(v) => Ok(v.into()), - AttrValueType::String(v) => Ok(v.into()), - AttrValueType::List(v) => v.try_into(), - AttrValueType::Dict(v) => v.try_into(), + if value.is_nil() { + Ok(None) + } else { + value.try_into().map(Some) } } } -macro_rules! impl_from_attr_value_type { - ($t:ty, $($variant:tt)+) => { - impl TryFrom for $t { - type Error = Error; +impl TryFrom for Option { + type Error = Error; - fn try_from(value: AttrValueType) -> Result { - if let $($variant)+(value) = value { - value.try_into() - .map_err(|e| Error::NestedFromAttrValueTypeConversionError { - ty: type_name::<$t>().to_string(), - source: Box::new(Error::from(e)) - }) - } else { - Err(Error::AttrValueTypeUnknown) - } - } + fn try_from(value: AttrValueType) -> Result { + if value.is_nil() { + Ok(None) + } else { + value.try_into().map(Some) } - }; + } } -impl_from_attr_value_type! { u8, AttrValueType::Unsigned } -impl_from_attr_value_type! { u16, AttrValueType::Unsigned } -impl_from_attr_value_type! { u32, AttrValueType::Unsigned } -impl_from_attr_value_type! { u64, AttrValueType::Unsigned } -impl_from_attr_value_type! { i8, AttrValueType::Signed } -impl_from_attr_value_type! { i16, AttrValueType::Signed } -impl_from_attr_value_type! { i32, AttrValueType::Signed } -impl_from_attr_value_type! { i64, AttrValueType::Signed } -impl_from_attr_value_type! { f64, AttrValueType::Float } -impl_from_attr_value_type! { bool, AttrValueType::Bool} -impl_from_attr_value_type! { String, AttrValueType::String } +impl TryFrom for Option { + type Error = Error; -impl TryFrom for Vec + fn try_from(value: AttrValueType) -> Result { + if value.is_nil() { + Ok(None) + } else { + value.try_into().map(Some) + } + } +} + +impl TryFrom for Option> where - T: TryFrom, + T: TryFrom + Clone, Error: From<>::Error>, { type Error = Error; fn try_from(value: AttrValueType) -> Result { - value - .as_list() - .ok_or_else(|| Error::FromAttrValueTypeConversionError { - ty: type_name::>().to_string(), - })? - .into_iter() - .map(|a| { - a.try_into() - .map_err(|e| Error::NestedFromAttrValueTypeConversionError { - ty: type_name::().to_string(), - source: Box::new(Error::from(e)), - }) - }) - .collect::>>() + if value.is_nil() { + Ok(None) + } else { + value.try_into().map(Some) + } } } -impl TryFrom for HashSet +impl TryFrom for Option> where - T: TryFrom + Eq + Hash, + T: TryFrom + Eq + Hash + Clone, Error: From<>::Error>, { type Error = Error; fn try_from(value: AttrValueType) -> Result { - Ok(value - .as_list() - .ok_or_else(|| Error::FromAttrValueTypeConversionError { - ty: type_name::>().to_string(), - })? - .into_iter() - .map(|e| { - e.try_into() - .map_err(|e| Error::NestedFromAttrValueTypeConversionError { - ty: type_name::().to_string(), - source: Box::new(Error::from(e)), - }) - }) - .collect::>>()? - .into_iter() - .collect::>()) + if value.is_nil() { + Ok(None) + } else { + value.try_into().map(Some) + } } } -impl TryFrom for BTreeSet +impl TryFrom for Option> where - T: TryFrom + Ord, + T: TryFrom + Ord + Clone, Error: From<>::Error>, { type Error = Error; fn try_from(value: AttrValueType) -> Result { - Ok(value - .as_list() - .ok_or_else(|| Error::FromAttrValueTypeConversionError { - ty: type_name::>().to_string(), - })? - .into_iter() - .map(|e| { - e.try_into() - .map_err(|e| Error::NestedFromAttrValueTypeConversionError { - ty: type_name::().to_string(), - source: Box::new(Error::from(e)), - }) - }) - .collect::>>()? - .into_iter() - .collect::>()) + if value.is_nil() { + Ok(None) + } else { + value.try_into().map(Some) + } } } -impl TryFrom for HashMap +impl TryFrom for Option> where - T: TryFrom + Eq + Hash, + T: TryFrom + Eq + Hash + Ord, U: TryFrom, Error: From<>::Error>, Error: From<>::Error>, @@ -1526,34 +2702,15 @@ where type Error = Error; fn try_from(value: AttrValueType) -> Result { - Ok(value - .as_dict() - .ok_or_else(|| Error::FromAttrValueTypeConversionError { - ty: type_name::>().to_string(), - })? - .into_iter() - .map(|(k, v)| { - k.try_into() - .map_err(|e| Error::NestedFromAttrValueTypeConversionError { - ty: type_name::().to_string(), - source: Box::new(Error::from(e)), - }) - .and_then(|k| { - v.try_into() - .map_err(|e| Error::NestedFromAttrValueTypeConversionError { - ty: type_name::().to_string(), - source: Box::new(Error::from(e)), - }) - .map(|v| (k, v)) - }) - }) - .collect::>>()? - .into_iter() - .collect::>()) + if value.is_nil() { + Ok(None) + } else { + value.try_into().map(Some) + } } } -impl TryFrom for BTreeMap +impl TryFrom for Option> where T: TryFrom + Ord, U: TryFrom, @@ -1563,30 +2720,11 @@ where type Error = Error; fn try_from(value: AttrValueType) -> Result { - Ok(value - .as_dict() - .ok_or_else(|| Error::FromAttrValueTypeConversionError { - ty: type_name::>().to_string(), - })? - .into_iter() - .map(|(k, v)| { - k.try_into() - .map_err(|e| Error::NestedFromAttrValueTypeConversionError { - ty: type_name::().to_string(), - source: Box::new(Error::from(e)), - }) - .and_then(|k| { - v.try_into() - .map_err(|e| Error::NestedFromAttrValueTypeConversionError { - ty: type_name::().to_string(), - source: Box::new(Error::from(e)), - }) - .map(|v| (k, v)) - }) - }) - .collect::>>()? - .into_iter() - .collect::>()) + if value.is_nil() { + Ok(None) + } else { + value.try_into().map(Some) + } } } @@ -1907,8 +3045,11 @@ pub fn alloc_attr_dict(length: u32) -> AttrValue { /// # Context /// /// Cell Context -pub fn attr_list_set_item(attr: &mut AttrValue, index: u32, elem: AttrValue) { - unsafe { SIM_attr_list_set_item(attr.as_mut_ptr(), index, elem.into()) } +pub fn attr_list_set_item(attr: &mut AttrValue, index: u32, elem: E) +where + E: Into, +{ + unsafe { SIM_attr_list_set_item(attr.as_mut_ptr(), index, elem.into().into()) } } #[simics_exception] @@ -1945,8 +3086,18 @@ pub fn attr_list_resize(attr: &mut AttrValue, newsize: u32) { /// # Context /// /// Cell Context -pub fn attr_dict_set_item(attr: &mut AttrValue, index: u32, key: AttrValue, value: AttrValue) { - unsafe { SIM_attr_dict_set_item(attr.as_mut_ptr(), index, key.into(), value.into()) }; +pub fn attr_dict_set_item(attr: &mut AttrValue, index: u32, key: E, value: E) +where + E: Into, +{ + unsafe { + SIM_attr_dict_set_item( + attr.as_mut_ptr(), + index, + key.into().into(), + value.into().into(), + ) + }; } #[simics_exception] @@ -1977,7 +3128,7 @@ pub fn attr_dict_resize(attr: &mut AttrValue, newsize: u32) { /// # Context /// /// All Contexts -pub fn attr_is_nil(attr: AttrValue) -> bool { +pub fn attr_is_nil(attr: &AttrValue) -> bool { attr.kind() == AttrKind::Sim_Val_Nil } @@ -1994,7 +3145,7 @@ pub fn attr_is_nil(attr: AttrValue) -> bool { /// # Context /// /// All Contexts -pub fn attr_is_int64(attr: AttrValue) -> bool { +pub fn attr_is_int64(attr: &AttrValue) -> bool { attr.is_integer() && (attr.size() == 0 || attr.as_integer().is_some_and(|i| i < 0)) } @@ -2011,7 +3162,7 @@ pub fn attr_is_int64(attr: AttrValue) -> bool { /// # Context /// /// All Contexts -pub fn attr_is_uint64(attr: AttrValue) -> bool { +pub fn attr_is_uint64(attr: &AttrValue) -> bool { attr.is_integer() && (attr.size() != 0 || attr.as_integer().is_some_and(|i| i >= 0)) } @@ -2028,7 +3179,7 @@ pub fn attr_is_uint64(attr: AttrValue) -> bool { /// # Context /// /// All Contexts -pub fn attr_is_integer(attr: AttrValue) -> bool { +pub fn attr_is_integer(attr: &AttrValue) -> bool { attr.is_integer() } @@ -2045,7 +3196,7 @@ pub fn attr_is_integer(attr: AttrValue) -> bool { /// # Context /// /// All Contexts -pub fn attr_is_boolean(attr: AttrValue) -> bool { +pub fn attr_is_boolean(attr: &AttrValue) -> bool { attr.is_boolean() } @@ -2062,7 +3213,7 @@ pub fn attr_is_boolean(attr: AttrValue) -> bool { /// # Context /// /// All Contexts -pub fn attr_is_string(attr: AttrValue) -> bool { +pub fn attr_is_string(attr: &AttrValue) -> bool { attr.is_string() } @@ -2079,7 +3230,7 @@ pub fn attr_is_string(attr: AttrValue) -> bool { /// # Context /// /// All Contexts -pub fn attr_is_object(attr: AttrValue) -> bool { +pub fn attr_is_object(attr: &AttrValue) -> bool { attr.is_object() } @@ -2096,7 +3247,7 @@ pub fn attr_is_object(attr: AttrValue) -> bool { /// # Context /// /// All Contexts -pub fn attr_is_invalid(attr: AttrValue) -> bool { +pub fn attr_is_invalid(attr: &AttrValue) -> bool { attr.is_invalid() } @@ -2113,7 +3264,7 @@ pub fn attr_is_invalid(attr: AttrValue) -> bool { /// # Context /// /// All Contexts -pub fn attr_is_data(attr: AttrValue) -> bool { +pub fn attr_is_data(attr: &AttrValue) -> bool { attr.is_data() } @@ -2130,7 +3281,7 @@ pub fn attr_is_data(attr: AttrValue) -> bool { /// # Context /// /// All Contexts -pub fn attr_is_floating(attr: AttrValue) -> bool { +pub fn attr_is_floating(attr: &AttrValue) -> bool { attr.is_floating() } @@ -2147,7 +3298,7 @@ pub fn attr_is_floating(attr: AttrValue) -> bool { /// # Context /// /// All Contexts -pub fn attr_is_dict(attr: AttrValue) -> bool { +pub fn attr_is_dict(attr: &AttrValue) -> bool { attr.is_dict() } @@ -2164,7 +3315,7 @@ pub fn attr_is_dict(attr: AttrValue) -> bool { /// # Context /// /// All Contexts -pub fn attr_is_list(attr: AttrValue) -> bool { +pub fn attr_is_list(attr: &AttrValue) -> bool { attr.is_list() } @@ -2190,10 +3341,11 @@ pub fn attr_is_list(attr: AttrValue) -> bool { /// # Context /// /// All Contexts -pub fn attr_integer(attr: AttrValue) -> Result { +pub fn attr_integer(attr: &AttrValue) -> Result { attr.as_integer().ok_or_else(|| Error::AttrValueType { actual: attr.kind(), expected: AttrKind::Sim_Val_Integer, + reason: "The value is not an integer".to_string(), }) } @@ -2219,14 +3371,18 @@ pub fn attr_integer(attr: AttrValue) -> Result { /// # Context /// /// All Contexts -pub fn attr_boolean(attr: AttrValue) -> Result { +pub fn attr_boolean(attr: &AttrValue) -> Result { attr.as_boolean().ok_or_else(|| Error::AttrValueType { actual: attr.kind(), expected: AttrKind::Sim_Val_Boolean, + reason: "The value is not a boolean".to_string(), }) } -/// Get an [`AttrValue`] as a String +/// Get an [`AttrValue`] as a String. Unlike the C API function, which transfers +/// ownership of the string to the caller and replaces the value in the `AttrValue` +/// with a nil value, this function copies the string and takes ownership of the new +/// string. The old string's ownership is not changed, and it is not freed. /// /// # Arguments /// @@ -2248,10 +3404,11 @@ pub fn attr_boolean(attr: AttrValue) -> Result { /// # Context /// /// All Contexts -pub fn attr_string(attr: AttrValue) -> Result { +pub fn attr_string(attr: &AttrValue) -> Result { attr.as_string().ok_or_else(|| Error::AttrValueType { actual: attr.kind(), expected: AttrKind::Sim_Val_String, + reason: "The value is not a string".to_string(), }) } @@ -2277,10 +3434,11 @@ pub fn attr_string(attr: AttrValue) -> Result { /// # Context /// /// All Contexts -pub fn attr_floating(attr: AttrValue) -> Result { +pub fn attr_floating(attr: &AttrValue) -> Result { attr.as_floating().ok_or_else(|| Error::AttrValueType { actual: attr.kind(), expected: AttrKind::Sim_Val_Floating, + reason: "The value is not a floating point number".to_string(), }) } @@ -2306,10 +3464,11 @@ pub fn attr_floating(attr: AttrValue) -> Result { /// # Context /// /// All Contexts -pub fn attr_object(attr: AttrValue) -> Result<*mut ConfObject> { +pub fn attr_object(attr: &AttrValue) -> Result<*mut ConfObject> { attr.as_object().ok_or_else(|| Error::AttrValueType { actual: attr.kind(), expected: AttrKind::Sim_Val_Object, + reason: "The value is not a ConfObject pointer".to_string(), }) } @@ -2337,7 +3496,7 @@ pub fn attr_object(attr: AttrValue) -> Result<*mut ConfObject> { /// # Context /// /// All Contexts -pub fn attr_object_or_nil(attr: AttrValue) -> *mut ConfObject { +pub fn attr_object_or_nil(attr: &AttrValue) -> *mut ConfObject { attr.as_object().unwrap_or(null_mut()) } @@ -2364,17 +3523,21 @@ pub fn attr_object_or_nil(attr: AttrValue) -> *mut ConfObject { /// # Context /// /// All Contexts -pub fn attr_data_size(attr: AttrValue) -> Result { +pub fn attr_data_size(attr: &AttrValue) -> Result { attr.is_data() .then(|| attr.size()) .ok_or_else(|| Error::AttrValueType { actual: attr.kind(), expected: AttrKind::Sim_Val_Data, + reason: "The value is not data".to_string(), }) } /// Get the contained data from an [`AttrValue`] if it is a data value, -/// or return an error if it is not. +/// or return an error if it is not. Unlike the C API function, which does +/// not transfer ownership of the data to the caller, this function copies +/// the data and takes ownership of the new data. The old data's ownership +/// is not changed, and it is not freed. /// /// # Arguments /// @@ -2388,13 +3551,14 @@ pub fn attr_data_size(attr: AttrValue) -> Result { /// # Context /// /// All Contexts -pub fn attr_data(attr: AttrValue) -> Result +pub fn attr_data(attr: &AttrValue) -> Result where T: Clone, { attr.as_data().ok_or_else(|| Error::AttrValueType { actual: attr.kind(), expected: AttrKind::Sim_Val_Data, + reason: "The value is not data".to_string(), }) } @@ -2412,17 +3576,20 @@ where /// # Context /// /// All Contexts -pub fn attr_list_size(attr: AttrValue) -> Result { +pub fn attr_list_size(attr: &AttrValue) -> Result { attr.is_list() .then(|| attr.size()) .ok_or_else(|| Error::AttrValueType { actual: attr.kind(), expected: AttrKind::Sim_Val_List, + reason: "The value is not a list".to_string(), }) } /// Retrieve a list item from an attr list without converting the item to a specific -/// type +/// type. Unlike a simple access in the C API, the item is cloned and the caller +/// takes ownership of the new item. The old item's ownership is not changed, and it +/// is not freed. /// /// # Arguments /// @@ -2434,10 +3601,11 @@ pub fn attr_list_size(attr: AttrValue) -> Result { /// # Context /// /// All Contexts -pub fn attr_list_item(attr: AttrValue, index: usize) -> Result { - let list: Vec = attr.as_list()?.ok_or_else(|| Error::AttrValueType { +pub fn attr_list_item(attr: &AttrValue, index: usize) -> Result { + let list: Vec = attr.as_list().ok_or_else(|| Error::AttrValueType { actual: attr.kind(), expected: AttrKind::Sim_Val_List, + reason: "The value is not a list".to_string(), })?; list.get(index) @@ -2462,16 +3630,20 @@ pub fn attr_list_item(attr: AttrValue, index: usize) -> Result { /// # Context /// /// All Contexts -pub fn attr_dict_size(attr: AttrValue) -> Result { +pub fn attr_dict_size(attr: &AttrValue) -> Result { attr.is_dict() .then(|| attr.size()) .ok_or(Error::AttrValueType { actual: attr.kind(), expected: AttrKind::Sim_Val_Data, + reason: "The value is not a dict".to_string(), }) } -/// Get a key from an [`AttrValue`] dict if it is one, or an error otherwise. +/// Get a key from an [`AttrValue`] dict if it is one, or an error otherwise. Unlike +/// the C API function, which does not transfer ownership of the key to the caller, +/// this function copies the key and takes ownership of the new key. The old key's +/// ownership is not changed, and it is not freed. /// /// # Arguments /// @@ -2486,7 +3658,7 @@ pub fn attr_dict_size(attr: AttrValue) -> Result { /// # Context /// /// All Contexts -pub fn attr_dict_key(attr: AttrValue, index: u32) -> Result { +pub fn attr_dict_key(attr: &AttrValue, index: u32) -> Result { if index < attr.size() { attr.is_dict() .then(|| { @@ -2503,6 +3675,7 @@ pub fn attr_dict_key(attr: AttrValue, index: u32) -> Result { .ok_or_else(|| Error::AttrValueType { actual: attr.kind(), expected: AttrKind::Sim_Val_Dict, + reason: "The value is not a dict".to_string(), }) } else { Err(Error::AttrValueDictIndexOutOfBounds { @@ -2512,7 +3685,10 @@ pub fn attr_dict_key(attr: AttrValue, index: u32) -> Result { } } -/// Get a value for an [`AttrValue`] dictionary +/// Get a value for an [`AttrValue`] dictionary. Unlike the C API function, which does +/// not transfer ownership of the value to the caller, this function copies the value +/// and takes ownership of the new value. The old value's ownership is not changed, and +/// it is not freed. /// /// # Arguments /// @@ -2527,7 +3703,7 @@ pub fn attr_dict_key(attr: AttrValue, index: u32) -> Result { /// # Context /// /// All Contexts -pub fn attr_dict_value(attr: AttrValue, index: u32) -> Result { +pub fn attr_dict_value(attr: &AttrValue, index: u32) -> Result { if index < attr.size() { attr.is_dict() .then(|| { @@ -2544,6 +3720,7 @@ pub fn attr_dict_value(attr: AttrValue, index: u32) -> Result { .ok_or_else(|| Error::AttrValueType { actual: attr.kind(), expected: AttrKind::Sim_Val_Dict, + reason: "The value is not a dict".to_string(), }) } else { Err(Error::AttrValueDictIndexOutOfBounds { @@ -2562,3 +3739,565 @@ pub fn attr_dict_value(attr: AttrValue, index: u32) -> Result { pub fn free_attribute(attr: AttrValue) { unsafe { SIM_free_attribute(attr.0) } } + +#[cfg(test)] +pub mod test { + use crate as simics; + use crate::{attr_list_set_item, AttrValue}; + use simics_api_sys::attr_value; + use simics_macro::{ + FromAttrValueDict, FromAttrValueList, IntoAttrValueDict, IntoAttrValueList, + }; + use std::{ + collections::{BTreeMap, BTreeSet, HashMap, HashSet}, + ptr::null_mut, + }; + + #[test] + fn test_u8() { + assert_eq!( + u8::try_from(AttrValue::unsigned(0)).unwrap(), + 0, + "Signed integer conversion failed" + ); + assert_eq!( + u8::try_from(AttrValue::unsigned(1)).unwrap(), + 1, + "Signed integer conversion failed" + ); + assert!( + u8::try_from(AttrValue::signed(-1)).is_err(), + "Signed to unsigned conversion should fail" + ); + assert_eq!( + u8::try_from(AttrValue::signed(0)).unwrap(), + 0, + "Signed integer conversion failed" + ); + assert_eq!( + u8::try_from(AttrValue::signed(1)).unwrap(), + 1, + "Signed integer conversion failed" + ); + } + + #[test] + fn test_i8() { + assert_eq!( + i8::try_from(AttrValue::signed(-1)).unwrap(), + -1, + "Signed integer conversion failed" + ); + assert_eq!( + i8::try_from(AttrValue::signed(0)).unwrap(), + 0, + "Signed integer conversion failed" + ); + assert_eq!( + i8::try_from(AttrValue::signed(1)).unwrap(), + 1, + "Signed integer conversion failed" + ); + assert_eq!( + i8::try_from(AttrValue::unsigned(0)).unwrap(), + 0, + "Unsigned integer conversion failed" + ); + assert_eq!( + i8::try_from(AttrValue::unsigned(1)).unwrap(), + 1, + "Unsigned integer conversion failed" + ); + } + + #[test] + fn test_u16() { + assert_eq!( + u16::try_from(AttrValue::unsigned(0)).unwrap(), + 0, + "Signed integer conversion failed" + ); + assert_eq!( + u16::try_from(AttrValue::unsigned(1)).unwrap(), + 1, + "Signed integer conversion failed" + ); + assert!( + u16::try_from(AttrValue::signed(-1)).is_err(), + "Signed to unsigned conversion should fail" + ); + assert_eq!( + u16::try_from(AttrValue::signed(0)).unwrap(), + 0, + "Signed integer conversion failed" + ); + assert_eq!( + u16::try_from(AttrValue::signed(1)).unwrap(), + 1, + "Signed integer conversion failed" + ); + } + + #[test] + fn test_i16() { + assert_eq!( + i16::try_from(AttrValue::signed(-1)).unwrap(), + -1, + "Signed integer conversion failed" + ); + assert_eq!( + i16::try_from(AttrValue::signed(0)).unwrap(), + 0, + "Signed integer conversion failed" + ); + assert_eq!( + i16::try_from(AttrValue::signed(1)).unwrap(), + 1, + "Signed integer conversion failed" + ); + assert_eq!( + i16::try_from(AttrValue::unsigned(0)).unwrap(), + 0, + "Unsigned integer conversion failed" + ); + assert_eq!( + i16::try_from(AttrValue::unsigned(1)).unwrap(), + 1, + "Unsigned integer conversion failed" + ); + } + + #[test] + fn test_u32() { + assert_eq!( + u32::try_from(AttrValue::unsigned(0)).unwrap(), + 0, + "Signed integer conversion failed" + ); + assert_eq!( + u32::try_from(AttrValue::unsigned(1)).unwrap(), + 1, + "Signed integer conversion failed" + ); + assert!( + u32::try_from(AttrValue::signed(-1)).is_err(), + "Signed to unsigned conversion should fail" + ); + assert_eq!( + u32::try_from(AttrValue::signed(0)).unwrap(), + 0, + "Signed integer conversion failed" + ); + assert_eq!( + u32::try_from(AttrValue::signed(1)).unwrap(), + 1, + "Signed integer conversion failed" + ); + } + + #[test] + fn test_i32() { + assert_eq!( + i32::try_from(AttrValue::signed(-1)).unwrap(), + -1, + "Signed integer conversion failed" + ); + assert_eq!( + i32::try_from(AttrValue::signed(0)).unwrap(), + 0, + "Signed integer conversion failed" + ); + assert_eq!( + i32::try_from(AttrValue::signed(1)).unwrap(), + 1, + "Signed integer conversion failed" + ); + assert_eq!( + i32::try_from(AttrValue::unsigned(0)).unwrap(), + 0, + "Unsigned integer conversion failed" + ); + assert_eq!( + i32::try_from(AttrValue::unsigned(1)).unwrap(), + 1, + "Unsigned integer conversion failed" + ); + } + + #[test] + fn test_u64() { + assert_eq!( + u64::try_from(AttrValue::unsigned(0)).unwrap(), + 0, + "Signed integer conversion failed" + ); + assert_eq!( + u64::try_from(AttrValue::unsigned(1)).unwrap(), + 1, + "Signed integer conversion failed" + ); + assert!( + u64::try_from(AttrValue::signed(-1)).is_err(), + "Signed to unsigned conversion should fail" + ); + assert_eq!( + u64::try_from(AttrValue::signed(0)).unwrap(), + 0, + "Signed integer conversion failed" + ); + assert_eq!( + u64::try_from(AttrValue::signed(1)).unwrap(), + 1, + "Signed integer conversion failed" + ); + } + + #[test] + fn test_i64() { + assert_eq!( + i64::try_from(AttrValue::signed(-1)).unwrap(), + -1, + "Signed integer conversion failed" + ); + assert_eq!( + i64::try_from(AttrValue::signed(0)).unwrap(), + 0, + "Signed integer conversion failed" + ); + assert_eq!( + i64::try_from(AttrValue::signed(1)).unwrap(), + 1, + "Signed integer conversion failed" + ); + assert_eq!( + i64::try_from(AttrValue::unsigned(0)).unwrap(), + 0, + "Unsigned integer conversion failed" + ); + assert_eq!( + i64::try_from(AttrValue::unsigned(1)).unwrap(), + 1, + "Unsigned integer conversion failed" + ); + } + + #[test] + fn test_usize() { + assert_eq!( + usize::try_from(AttrValue::unsigned(0)).unwrap(), + 0, + "Signed integer conversion failed" + ); + assert_eq!( + usize::try_from(AttrValue::unsigned(1)).unwrap(), + 1, + "Signed integer conversion failed" + ); + assert!( + usize::try_from(AttrValue::signed(-1)).is_err(), + "Signed to unsigned conversion should fail" + ); + assert_eq!( + usize::try_from(AttrValue::signed(0)).unwrap(), + 0, + "Signed integer conversion failed" + ); + assert_eq!( + usize::try_from(AttrValue::signed(1)).unwrap(), + 1, + "Signed integer conversion failed" + ); + } + + #[test] + fn test_isize() { + assert_eq!( + isize::try_from(AttrValue::signed(-1)).unwrap(), + -1, + "Signed integer conversion failed" + ); + assert_eq!( + isize::try_from(AttrValue::signed(0)).unwrap(), + 0, + "Signed integer conversion failed" + ); + assert_eq!( + isize::try_from(AttrValue::signed(1)).unwrap(), + 1, + "Signed integer conversion failed" + ); + assert_eq!( + isize::try_from(AttrValue::unsigned(0)).unwrap(), + 0, + "Unsigned integer conversion failed" + ); + assert_eq!( + isize::try_from(AttrValue::unsigned(1)).unwrap(), + 1, + "Unsigned integer conversion failed" + ); + } + + #[test] + fn test_f32() { + assert_eq!( + f32::try_from(AttrValue::floating(0.0)).unwrap(), + 0.0, + "Floating point conversion failed" + ); + assert_eq!( + f32::try_from(AttrValue::floating(1.0)).unwrap(), + 1.0, + "Floating point conversion failed" + ); + assert_eq!( + f32::try_from(AttrValue::floating(-1.0)).unwrap(), + -1.0, + "Floating point conversion failed" + ); + } + + #[test] + fn test_f64() { + assert_eq!( + f64::try_from(AttrValue::floating(0.0)).unwrap(), + 0.0, + "Floating point conversion failed" + ); + assert_eq!( + f64::try_from(AttrValue::floating(1.0)).unwrap(), + 1.0, + "Floating point conversion failed" + ); + assert_eq!( + f64::try_from(AttrValue::floating(-1.0)).unwrap(), + -1.0, + "Floating point conversion failed" + ); + } + + #[test] + fn test_bool() { + assert_eq!( + bool::try_from(AttrValue::boolean(false)).unwrap(), + false, + "Boolean conversion failed" + ); + assert_eq!( + bool::try_from(AttrValue::boolean(true)).unwrap(), + true, + "Boolean conversion failed" + ); + } + + #[test] + fn test_string() { + assert_eq!( + String::try_from(AttrValue::string("").unwrap()).unwrap(), + "", + "String conversion failed" + ); + assert_eq!( + String::try_from(AttrValue::string("test").unwrap()).unwrap(), + "test", + "String conversion failed" + ); + } + + #[test] + fn test_object() { + AttrValue::object(null_mut()); + } + + #[test] + fn test_data() { + let data: Vec = vec![1, 2, 3, 4, 5]; + let attr = AttrValue::data(data.clone().into_boxed_slice()); + let data2: [u8; 5] = attr.as_data().unwrap(); + assert_eq!(data, data2, "Data conversion failed"); + } + + #[test] + fn test_list() { + let list = vec![1, 2, 3, 4, 5]; + let mut attr = AttrValue::list(list.len()).unwrap(); + for (i, item) in list.iter().enumerate() { + attr_list_set_item(&mut attr, i as u32, *item).unwrap(); + } + let list2: Vec = attr.try_into().unwrap(); + assert_eq!(list, list2, "List conversion failed"); + } + + #[test] + fn test_roundtrip_structs() { + let option = Some(1); + let vec = vec![1, 2, 3, 4, 5]; + let btree_set: BTreeSet = [1, 2, 3, 4, 5].iter().cloned().collect(); + let btree_map: BTreeMap = [(1, 2), (3, 4), (5, 6)].iter().cloned().collect(); + let hash_set: HashSet = [1, 2, 3, 4, 5].iter().cloned().collect(); + let hash_map: HashMap = [(1, 2), (3, 4), (5, 6)].iter().cloned().collect(); + assert_eq!( + Option::::try_from(AttrValue::try_from(option.clone()).unwrap()).unwrap(), + option + ); + assert_eq!( + Vec::::try_from(AttrValue::try_from(vec.clone()).unwrap()).unwrap(), + vec + ); + assert_eq!( + BTreeSet::::try_from(AttrValue::try_from(btree_set.clone()).unwrap()).unwrap(), + btree_set + ); + assert_eq!( + BTreeMap::::try_from(AttrValue::try_from(btree_map.clone()).unwrap()) + .unwrap(), + btree_map + ); + assert_eq!( + HashSet::::try_from(AttrValue::try_from(hash_set.clone()).unwrap()).unwrap(), + hash_set + ); + assert_eq!( + HashMap::::try_from(AttrValue::try_from(btree_map.clone()).unwrap()).unwrap(), + hash_map + ); + } + + #[derive(Debug, Clone, PartialEq, FromAttrValueList, IntoAttrValueList)] + pub struct TestList { + pub _u8: u8, + pub _i8: i8, + pub _u16: u16, + pub _i16: i16, + pub _u32: u32, + pub _i32: i32, + pub _u64: u64, + pub _i64: i64, + pub _usize: usize, + pub _isize: isize, + pub _f32: f32, + pub _f64: f64, + pub _bool: bool, + pub _string: String, + // #[attr_value(fallible)] + // pub _data: Vec, + // #[attr_value(fallible)] + // pub _list: Vec, + // #[attr_value(fallible)] + // pub _dict: HashMap, + // #[attr_value(fallible)] + // pub _option: Option, + // #[attr_value(fallible)] + // pub _vec: Vec, + // #[attr_value(fallible)] + // pub _btree_set: BTreeSet, + // #[attr_value(fallible)] + // pub _btree_map: BTreeMap, + // #[attr_value(fallible)] + // pub _hash_set: HashSet, + // #[attr_value(fallible)] + // pub _hash_map: HashMap, + } + + #[test] + fn test_derive_list() { + let instance = TestList { + _u8: 0, + _i8: 0, + _u16: 0, + _i16: 0, + _u32: 0, + _i32: 0, + _u64: 0, + _i64: 0, + _usize: 0, + _isize: 0, + _f32: 0.0, + _f64: 0.0, + _bool: false, + _string: "test".to_string(), + // _data: vec![0, 0, 0, 0], + // _list: vec![0, 1, 2, 3], + // _dict: HashMap::new(), + // _option: Some(1), + // _vec: vec![0, 1, 2, 3], + // _btree_set: [0, 1, 2, 3].iter().cloned().collect(), + // _btree_map: [(0, 1), (2, 3)].iter().cloned().collect(), + // _hash_set: [0, 1, 2, 3].iter().cloned().collect(), + // _hash_map: [(0, 1), (2, 3)].iter().cloned().collect(), + }; + + let attr = AttrValue::try_from(instance.clone()).unwrap(); + let instance_re = TestList::try_from(attr).unwrap(); + assert_eq!(instance, instance_re); + } + + #[derive(Debug, Clone, PartialEq, FromAttrValueDict, IntoAttrValueDict)] + pub struct TestDict { + pub _u8: u8, + pub _i8: i8, + pub _u16: u16, + pub _i16: i16, + pub _u32: u32, + pub _i32: i32, + pub _u64: u64, + pub _i64: i64, + pub _usize: usize, + pub _isize: isize, + pub _f32: f32, + pub _f64: f64, + pub _bool: bool, + pub _string: String, + // #[attr_value(fallible)] + // pub _data: Vec, + // #[attr_value(fallible)] + // pub _list: Vec, + // #[attr_value(fallible)] + // pub _dict: HashMap, + // #[attr_value(fallible)] + // pub _option: Option, + // #[attr_value(fallible)] + // pub _vec: Vec, + // #[attr_value(fallible)] + // pub _btree_set: BTreeSet, + // #[attr_value(fallible)] + // pub _btree_map: BTreeMap, + // #[attr_value(fallible)] + // pub _hash_set: HashSet, + // #[attr_value(fallible)] + // pub _hash_map: HashMap, + } + + #[test] + fn test_derive_dict() { + let instance = TestDict { + _u8: 0, + _i8: 0, + _u16: 0, + _i16: 0, + _u32: 0, + _i32: 0, + _u64: 0, + _i64: 0, + _usize: 0, + _isize: 0, + _f32: 0.0, + _f64: 0.0, + _bool: false, + _string: "test".to_string(), + // _data: vec![0, 0, 0, 0], + // _list: vec![0, 1, 2, 3], + // _dict: HashMap::new(), + // _option: Some(1), + // _vec: vec![0, 1, 2, 3], + // _btree_set: [0, 1, 2, 3].iter().cloned().collect(), + // _btree_map: [(0, 1), (2, 3)].iter().cloned().collect(), + // _hash_set: [0, 1, 2, 3].iter().cloned().collect(), + // _hash_map: [(0, 1), (2, 3)].iter().cloned().collect(), + }; + + let attr = AttrValue::try_from(instance.clone()).unwrap(); + let instance_re = TestDict::try_from(attr).unwrap(); + assert_eq!(instance, instance_re); + } +} diff --git a/modules/tsffs/src/simics/simics/src/api/base/conf_object.rs b/simics-rs/simics/src/api/base/conf_object.rs similarity index 88% rename from modules/tsffs/src/simics/simics/src/api/base/conf_object.rs rename to simics-rs/simics/src/api/base/conf_object.rs index d19894f9..831e6d02 100644 --- a/modules/tsffs/src/simics/simics/src/api/base/conf_object.rs +++ b/simics-rs/simics/src/api/base/conf_object.rs @@ -1,4 +1,4 @@ -// Copyright (C) 2023 Intel Corporation +// Copyright (C) 2024 Intel Corporation // SPDX-License-Identifier: Apache-2.0 #![allow(clippy::not_unsafe_ptr_arg_deref, clippy::too_many_arguments)] @@ -6,53 +6,66 @@ //! Bindings for configuration objects use crate::{ - api::{ - last_error, - sys::{ - attr_attr_t, attr_value_t, class_data_t, class_info_t, class_kind_t, conf_class_t, - conf_object_t, get_attr_t, get_class_attr_t, object_iter_t, set_attr_t, - set_class_attr_t, set_error_t, SIM_attribute_error, SIM_copy_class, SIM_create_class, - SIM_extend_class, SIM_extension_data, SIM_get_class_data, SIM_get_class_interface, - SIM_get_class_name, SIM_get_interface, SIM_marked_for_deletion, SIM_object_data, - SIM_object_descendant, SIM_object_id, SIM_object_is_configured, SIM_object_iterator, - SIM_object_iterator_next, SIM_object_name, SIM_object_parent, - SIM_register_attribute_with_user_data, SIM_register_class_alias, - SIM_register_class_attribute_with_user_data, SIM_register_interface, - SIM_register_typed_attribute, SIM_register_typed_class_attribute, SIM_require_object, - SIM_set_class_data, SIM_set_object_configured, SIM_shallow_object_iterator, - }, - Interface, + last_error, simics_exception, + sys::{ + attr_attr_t, attr_value_t, class_data_t, class_info_t, class_kind_t, conf_class_t, + conf_object_t, get_attr_t, get_class_attr_t, object_iter_t, set_attr_t, set_class_attr_t, + set_error_t, SIM_attribute_error, SIM_copy_class, SIM_create_class, SIM_extend_class, + SIM_extension_data, SIM_get_class_data, SIM_get_class_interface, SIM_get_class_name, + SIM_get_interface, SIM_marked_for_deletion, SIM_object_data, SIM_object_descendant, + SIM_object_id, SIM_object_is_configured, SIM_object_iterator, SIM_object_iterator_next, + SIM_object_name, SIM_object_parent, SIM_register_attribute_with_user_data, + SIM_register_class_alias, SIM_register_class_attribute_with_user_data, + SIM_register_interface, SIM_register_typed_attribute, SIM_register_typed_class_attribute, + SIM_require_object, SIM_set_class_data, SIM_set_object_configured, + SIM_shallow_object_iterator, }, - Error, Result, + AttrValue, Error, Interface, Result, }; use raw_cstr::{raw_cstr, AsRawCstr}; -use simics_macro::simics_exception; use std::{ ffi::{c_void, CStr}, ops::Range, ptr::null_mut, }; +/// Alias for `conf_object_t` pub type ConfObject = conf_object_t; +/// Alias for `conf_class_t` pub type ConfClass = conf_class_t; +/// Alias for `class_data_t` pub type ClassData = class_data_t; +/// Alias for `class_info_t` pub type ClassInfo = class_info_t; +/// Alias for `class_kind_t` pub type ClassKind = class_kind_t; +/// Alias for `attr_attr_t` pub type AttrAttr = attr_attr_t; +/// Alias for `object_iter_t` pub type ObjectIter = object_iter_t; +/// Alias for `get_attr_t` pub type GetAttr = get_attr_t; +/// Alias for `set_attr_t` pub type SetAttr = set_attr_t; +/// Alias for `get_class_attr_t` pub type GetClassAttr = get_class_attr_t; +/// Alias for `set_class_attr_t` pub type SetClassAttr = set_class_attr_t; +/// Alias for `set_error_t` pub type SetErr = set_error_t; /// A type in a [`TypeStringType::List`]. See [`TypeStringType`] for a description of these /// variants. pub enum TypeStringListType { + /// A single type Type(Box), + /// A sequence of types with a range of possible lengths Range(Range, Box), + /// A sequence of types with an exact length Exact(usize, Box), + /// A sequence of zero or more occurrences of a type ZeroOrMore(Box), + /// A sequence of one or more occurrences of a type OneOrMore(Box), } @@ -112,16 +125,27 @@ impl ToString for TypeStringListType { /// [i|so|n] defines a list of two elements, the first being an integer or a string and /// the second an object or NIL. pub enum TypeStringType { + /// An integer type Integer, + /// A floating point type Float, + /// A string type String, + /// A boolean type Boolean, + /// An object type, i.e. a pointer to a confobject Object, + /// A data type, i.e. a void pointer Data, + /// nil (i.e. None) type Nil, + /// A dictionary or mapping type Dictionary, + /// Any type Any, + /// A list of types List(Vec), + /// An alternation, either the left or right type is permitted Or(Box, Box), } @@ -630,11 +654,14 @@ extern "C" fn get_typed_attr_handler( idx: *mut attr_value_t, ) -> attr_value_t where - F: FnOnce(*mut ConfObject, *mut attr_value_t) -> attr_value_t + 'static, + F: FnMut(*mut ConfObject, AttrValue) -> Result + 'static, { - let closure: Box> = unsafe { Box::from_raw(cb as *mut Box) }; + let closure = Box::leak(unsafe { Box::from_raw(cb as *mut Box) }); + let idx = unsafe { AttrValue::from_raw(idx) }; closure(obj, idx) + .expect("Error calling get_typed_attr_handler callback") + .into_raw() } extern "C" fn set_typed_attr_handler( @@ -644,11 +671,13 @@ extern "C" fn set_typed_attr_handler( idx: *mut attr_value_t, ) -> SetErr where - F: FnOnce(*mut ConfObject, *mut attr_value_t, *mut attr_value_t) -> SetErr + 'static, + F: FnMut(*mut ConfObject, AttrValue, AttrValue) -> Result + 'static, { - let closure: Box> = unsafe { Box::from_raw(cb as *mut Box) }; + let closure = Box::leak(unsafe { Box::from_raw(cb as *mut Box) }); + let val = unsafe { AttrValue::from_raw(val) }; + let idx = unsafe { AttrValue::from_raw(idx) }; - closure(obj, val, idx) + closure(obj, val, idx).expect("Error calling set_typed_attr_handler callback") } extern "C" fn get_typed_class_attr_handler( @@ -657,11 +686,14 @@ extern "C" fn get_typed_class_attr_handler( idx: *mut attr_value_t, ) -> attr_value_t where - F: FnOnce(*mut ConfClass, *mut attr_value_t) -> attr_value_t + 'static, + F: FnMut(*mut ConfClass, AttrValue) -> Result + 'static, { - let closure: Box> = unsafe { Box::from_raw(cb as *mut Box) }; + let closure = Box::leak(unsafe { Box::from_raw(cb as *mut Box) }); + let idx = unsafe { AttrValue::from_raw(idx) }; closure(cls, idx) + .expect("Error calling get_typed_class_attr_handler callback") + .into_raw() } extern "C" fn set_typed_class_attr_handler( @@ -671,20 +703,24 @@ extern "C" fn set_typed_class_attr_handler( idx: *mut attr_value_t, ) -> SetErr where - F: FnOnce(*mut ConfClass, *mut attr_value_t, *mut attr_value_t) -> SetErr + 'static, + F: FnMut(*mut ConfClass, AttrValue, AttrValue) -> Result + 'static, { - let closure: Box> = unsafe { Box::from_raw(cb as *mut Box) }; + let closure = Box::leak(unsafe { Box::from_raw(cb as *mut Box) }); + let val = unsafe { AttrValue::from_raw(val) }; + let idx = unsafe { AttrValue::from_raw(idx) }; - closure(cls, val, idx) + closure(cls, val, idx).expect("Error calling set_typed_class_attr_handler callback") } extern "C" fn get_attr_handler(obj: *mut ConfObject, cb: *mut c_void) -> attr_value_t where - F: FnOnce(*mut ConfObject) -> attr_value_t + 'static, + F: FnMut(*mut ConfObject) -> Result + 'static, { - let closure: Box> = unsafe { Box::from_raw(cb as *mut Box) }; + let closure = Box::leak(unsafe { Box::from_raw(cb as *mut Box) }); closure(obj) + .expect("Error calling get_attr_handler callback") + .into_raw() } extern "C" fn set_attr_handler( @@ -693,20 +729,23 @@ extern "C" fn set_attr_handler( cb: *mut c_void, ) -> SetErr where - F: FnOnce(*mut ConfObject, *mut attr_value_t) -> SetErr + 'static, + F: FnMut(*mut ConfObject, AttrValue) -> Result + 'static, { - let closure: Box> = unsafe { Box::from_raw(cb as *mut Box) }; + let closure = Box::leak(unsafe { Box::from_raw(cb as *mut Box) }); + let val = unsafe { AttrValue::from_raw(val) }; - closure(obj, val) + closure(obj, val).expect("Error calling set_attr_handler callback") } extern "C" fn get_class_attr_handler(cls: *mut ConfClass, cb: *mut c_void) -> attr_value_t where - F: FnOnce(*mut ConfClass) -> attr_value_t + 'static, + F: FnMut(*mut ConfClass) -> Result + 'static, { - let closure: Box> = unsafe { Box::from_raw(cb as *mut Box) }; + let closure = Box::leak(unsafe { Box::from_raw(cb as *mut Box) }); closure(cls) + .expect("Error calling get_class_attr_handler callback") + .into_raw() } extern "C" fn set_class_attr_handler( @@ -715,11 +754,12 @@ extern "C" fn set_class_attr_handler( cb: *mut c_void, ) -> SetErr where - F: FnOnce(*mut ConfClass, *mut attr_value_t) -> SetErr + 'static, + F: FnMut(*mut ConfClass, AttrValue) -> Result + 'static, { - let closure: Box> = unsafe { Box::from_raw(cb as *mut Box) }; + let closure = Box::leak(unsafe { Box::from_raw(cb as *mut Box) }); + let val = unsafe { AttrValue::from_raw(val) }; - closure(cls, val) + closure(cls, val).expect("Error calling set_class_attr_handler callback") } #[simics_exception] @@ -782,8 +822,8 @@ pub fn register_typed_attribute( ) -> Result<()> where S: AsRef, - GF: FnOnce(*mut ConfObject, *mut attr_value_t) -> attr_value_t + 'static, - SF: FnOnce(*mut ConfObject, *mut attr_value_t, *mut attr_value_t) -> SetErr + 'static, + GF: FnMut(*mut ConfObject, AttrValue) -> Result + 'static, + SF: FnMut(*mut ConfObject, AttrValue, AttrValue) -> Result + 'static, { let attr_type = if let Some(attr_type) = attr_type { raw_cstr(attr_type.to_string())? @@ -838,7 +878,8 @@ where } #[simics_exception] -/// Register a typed attribute of a class. This attribute will appear on the class object itself. +/// Register a typed attribute of a class. This attribute will appear on the class object itself +/// and is the same for all instances of the class. /// /// Add the attribute name to the set of attributes of the class cls. /// @@ -898,8 +939,8 @@ pub fn register_typed_class_attribute( ) -> Result<()> where S: AsRef, - GF: FnOnce(*mut ConfClass, *mut attr_value_t) -> attr_value_t + 'static, - SF: FnOnce(*mut ConfClass, *mut attr_value_t, *mut attr_value_t) -> SetErr + 'static, + GF: FnMut(*mut ConfClass, AttrValue) -> Result + 'static, + SF: FnMut(*mut ConfClass, AttrValue, AttrValue) -> Result + 'static, { let attr_type = if let Some(attr_type) = attr_type { raw_cstr(attr_type.to_string())? @@ -1012,8 +1053,8 @@ pub fn register_attribute( ) -> Result<()> where S: AsRef, - GF: FnOnce(*mut ConfObject) -> attr_value_t + 'static, - SF: FnOnce(*mut ConfObject, *mut attr_value_t) -> SetErr + 'static, + GF: FnMut(*mut ConfObject) -> Result + 'static, + SF: FnMut(*mut ConfObject, AttrValue) -> Result + 'static, { let attr_type = if let Some(attr_type) = attr_type { raw_cstr(attr_type.to_string())? @@ -1119,8 +1160,8 @@ pub fn register_class_attribute( ) -> Result<()> where S: AsRef, - GF: FnOnce(*mut ConfClass) -> attr_value_t + 'static, - SF: FnOnce(*mut ConfClass, *mut attr_value_t) -> SetErr + 'static, + GF: FnMut(*mut ConfClass) -> Result + 'static, + SF: FnMut(*mut ConfClass, AttrValue) -> Result + 'static, { let attr_type = if let Some(attr_type) = attr_type { raw_cstr(attr_type.to_string())? diff --git a/modules/tsffs/src/simics/simics/src/api/base/event.rs b/simics-rs/simics/src/api/base/event.rs similarity index 98% rename from modules/tsffs/src/simics/simics/src/api/base/event.rs rename to simics-rs/simics/src/api/base/event.rs index 9dddc354..08416333 100644 --- a/modules/tsffs/src/simics/simics/src/api/base/event.rs +++ b/simics-rs/simics/src/api/base/event.rs @@ -1,4 +1,4 @@ -// Copyright (C) 2023 Intel Corporation +// Copyright (C) 2024 Intel Corporation // SPDX-License-Identifier: Apache-2.0 //! SIMICS APIs for event management @@ -6,27 +6,29 @@ #![allow(clippy::not_unsafe_ptr_arg_deref)] use crate::{ - api::{ - sys::{ - cycles_t, event_class_t, SIM_event_cancel_step, SIM_event_cancel_time, - SIM_event_find_next_cycle, SIM_event_find_next_step, SIM_event_find_next_time, - SIM_event_post_cycle, SIM_event_post_step, SIM_event_post_time, SIM_register_event, - }, - ConfClass, ConfObject, PcStep, + simics_exception, + sys::{ + cycles_t, event_class_t, SIM_event_cancel_step, SIM_event_cancel_time, + SIM_event_find_next_cycle, SIM_event_find_next_step, SIM_event_find_next_time, + SIM_event_post_cycle, SIM_event_post_step, SIM_event_post_time, SIM_register_event, }, - Error, Result, + ConfClass, ConfObject, Error, PcStep, Result, }; use raw_cstr::raw_cstr; -use simics_macro::simics_exception; use std::{ffi::c_void, ptr::null_mut}; use typed_builder::TypedBuilder; /// Flags for an event pub use crate::api::sys::event_class_flag_t as EventClassFlag; +/// Alias for `event_class_t` pub type EventClass = event_class_t; +/// Alias for `cycles_t` pub type Cycles = cycles_t; +/// A callable closure which receives a pointer to the triggering object when an event +/// occurs pub type EventCallbackClosure = Box; +/// A callback which is called to determine whether action should be taken on an event pub type EventFilterClosure = Box i32>; extern "C" fn event_callback_handler(obj: *mut ConfObject, cb: *mut c_void) { @@ -68,10 +70,12 @@ pub struct Event { } impl Event { + /// Return the class an event is posted for pub fn cls(&self) -> *mut ConfClass { self.cls } + /// Return the class of this event pub fn event_class(&self) -> *mut EventClass { self.event_class } diff --git a/simics-rs/simics/src/api/base/memory_transaction.rs b/simics-rs/simics/src/api/base/memory_transaction.rs new file mode 100644 index 00000000..03a06ac3 --- /dev/null +++ b/simics-rs/simics/src/api/base/memory_transaction.rs @@ -0,0 +1,9 @@ +// Copyright (C) 2024 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 + +//! Memory transactions + +use crate::sys::generic_transaction_t; + +/// Alias for `generic_transaction_t` +pub type GenericTransaction = generic_transaction_t; diff --git a/modules/tsffs/src/simics/simics/src/api/base/mod.rs b/simics-rs/simics/src/api/base/mod.rs similarity index 62% rename from modules/tsffs/src/simics/simics/src/api/base/mod.rs rename to simics-rs/simics/src/api/base/mod.rs index c8389b68..b5574e65 100644 --- a/modules/tsffs/src/simics/simics/src/api/base/mod.rs +++ b/simics-rs/simics/src/api/base/mod.rs @@ -1,8 +1,7 @@ -// Copyright (C) 2023 Intel Corporation +// Copyright (C) 2024 Intel Corporation // SPDX-License-Identifier: Apache-2.0 -//! The high level SIMICS API bindings. This module provides high-level bindings to almost all -//! SIMICS APIs, including attributes, objects, simulator APIs, interfaces, and HAPs. +//! Base API pub mod attr_value; pub mod conf_object; diff --git a/modules/tsffs/src/simics/simics/src/api/base/sim_exception.rs b/simics-rs/simics/src/api/base/sim_exception.rs similarity index 90% rename from modules/tsffs/src/simics/simics/src/api/base/sim_exception.rs rename to simics-rs/simics/src/api/base/sim_exception.rs index 6124900f..0e1a58ca 100644 --- a/modules/tsffs/src/simics/simics/src/api/base/sim_exception.rs +++ b/simics-rs/simics/src/api/base/sim_exception.rs @@ -1,4 +1,4 @@ -// Copyright (C) 2023 Intel Corporation +// Copyright (C) 2024 Intel Corporation // SPDX-License-Identifier: Apache-2.0 //! SIMICS exception handling APIs. These should typically not be used directly, most SIMICS @@ -6,11 +6,10 @@ //! convert thrown exceptions into a [`Result`]. This allows more idiomatic error handling //! via `Result`s. -use crate::api::sys::{ - sim_exception, SIM_clear_exception, SIM_get_pending_exception, SIM_last_error, -}; +use crate::sys::{sim_exception, SIM_clear_exception, SIM_get_pending_exception, SIM_last_error}; use std::ffi::CStr; +/// Alias for `sim_exception` pub type SimException = sim_exception; /// Returns the error message associated with the most recently raised frontend diff --git a/simics-rs/simics/src/api/base/sobject.rs b/simics-rs/simics/src/api/base/sobject.rs new file mode 100644 index 00000000..084bea83 --- /dev/null +++ b/simics-rs/simics/src/api/base/sobject.rs @@ -0,0 +1,11 @@ +// Copyright (C) 2024 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 + +//! S-Object handling + +use crate::sys::{sclass_t, sobject_t}; + +/// Alias for `sobject_t` +pub type SObject = sobject_t; +/// Alias for `sclass_t` +pub type SClass = sclass_t; diff --git a/modules/tsffs/src/simics/simics/src/api/base/time.rs b/simics-rs/simics/src/api/base/time.rs similarity index 97% rename from modules/tsffs/src/simics/simics/src/api/base/time.rs rename to simics-rs/simics/src/api/base/time.rs index 2cb5ef48..6f2e9cff 100644 --- a/modules/tsffs/src/simics/simics/src/api/base/time.rs +++ b/simics-rs/simics/src/api/base/time.rs @@ -1,16 +1,16 @@ -// Copyright (C) 2023 Intel Corporation +// Copyright (C) 2024 Intel Corporation // SPDX-License-Identifier: Apache-2.0 //! Time management APIs -use crate::api::{ +use crate::{ + simics_exception, sys::{ SIM_cycle_count, SIM_object_clock, SIM_picosecond_clock, SIM_stall, SIM_stall_count, SIM_stall_cycle, SIM_stalled_until, SIM_time, }, ConfObject, Cycles, }; -use simics_macro::simics_exception; #[simics_exception] /// [`cycle_count`] returns the current simulated clock cycle count at obj. diff --git a/modules/tsffs/src/simics/simics/src/api/base/version.rs b/simics-rs/simics/src/api/base/version.rs similarity index 80% rename from modules/tsffs/src/simics/simics/src/api/base/version.rs rename to simics-rs/simics/src/api/base/version.rs index b8bc631f..dc5e405c 100644 --- a/modules/tsffs/src/simics/simics/src/api/base/version.rs +++ b/simics-rs/simics/src/api/base/version.rs @@ -1,15 +1,15 @@ -// Copyright (C) 2023 Intel Corporation +// Copyright (C) 2024 Intel Corporation // SPDX-License-Identifier: Apache-2.0 //! SIMICS version access and management APIs +#[cfg(not(simics_deprecated_api_sim_register_copyright))] +use crate::sys::SIM_register_copyright; use crate::{ - api::sys::{ - SIM_copyright, SIM_register_copyright, SIM_version, SIM_version_base, SIM_version_major, - SIM_vmxmon_version, - }, + sys::{SIM_copyright, SIM_version, SIM_version_base, SIM_version_major, SIM_vmxmon_version}, Result, }; +#[cfg(not(simics_deprecated_api_sim_register_copyright))] use raw_cstr::raw_cstr; use std::ffi::CStr; @@ -68,6 +68,7 @@ pub fn copyright() -> Result { .to_string()) } +#[cfg(not(simics_deprecated_api_sim_register_copyright))] /// Set the current copyright string /// /// # Contex diff --git a/modules/tsffs/src/simics/simics/src/api/interface/mod.rs b/simics-rs/simics/src/api/interface/mod.rs similarity index 72% rename from modules/tsffs/src/simics/simics/src/api/interface/mod.rs rename to simics-rs/simics/src/api/interface/mod.rs index 684a814a..e622b1eb 100644 --- a/modules/tsffs/src/simics/simics/src/api/interface/mod.rs +++ b/simics-rs/simics/src/api/interface/mod.rs @@ -1,6 +1,8 @@ -// Copyright (C) 2023 Intel Corporation +// Copyright (C) 2024 Intel Corporation // SPDX-License-Identifier: Apache-2.0 +//! Interfaces defined by the base package + #![allow( clippy::not_unsafe_ptr_arg_deref, clippy::too_many_arguments, @@ -8,8 +10,6 @@ clippy::should_implement_trait )] -//! High level bindings for API-provided SIMICS interfaces - pub use self::interfaces::*; include!(concat!(env!("OUT_DIR"), "/interfaces.rs")); diff --git a/modules/tsffs/src/simics/simics/src/api/internal/core.rs b/simics-rs/simics/src/api/internal/core.rs similarity index 84% rename from modules/tsffs/src/simics/simics/src/api/internal/core.rs rename to simics-rs/simics/src/api/internal/core.rs index 122e5827..5810ee2a 100644 --- a/modules/tsffs/src/simics/simics/src/api/internal/core.rs +++ b/simics-rs/simics/src/api/internal/core.rs @@ -1,9 +1,9 @@ -// Copyright (C) 2023 Intel Corporation +// Copyright (C) 2024 Intel Corporation // SPDX-License-Identifier: Apache-2.0 //! Not officially exported CORE APIs -use simics_macro::simics_exception; +use crate::simics_exception; extern "C" { /// Discard recorded future events and forget them diff --git a/simics-rs/simics/src/api/internal/mod.rs b/simics-rs/simics/src/api/internal/mod.rs new file mode 100644 index 00000000..269e6fda --- /dev/null +++ b/simics-rs/simics/src/api/internal/mod.rs @@ -0,0 +1,7 @@ +// Copyright (C) 2024 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 + +//! Internal non-exported APIs + +pub mod core; +pub use self::core::*; diff --git a/modules/tsffs/src/simics/simics/src/api/logging/mod.rs b/simics-rs/simics/src/api/logging/mod.rs similarity index 60% rename from modules/tsffs/src/simics/simics/src/api/logging/mod.rs rename to simics-rs/simics/src/api/logging/mod.rs index 6dd76147..a987b6a3 100644 --- a/modules/tsffs/src/simics/simics/src/api/logging/mod.rs +++ b/simics-rs/simics/src/api/logging/mod.rs @@ -1,39 +1,40 @@ -// Copyright (C) 2023 Intel Corporation +// Copyright (C) 2024 Intel Corporation // SPDX-License-Identifier: Apache-2.0 -//! SIMICS logging APIs +//! Logging APIs #![allow(clippy::not_unsafe_ptr_arg_deref)] #[cfg(not(simics_deprecated_api_sim_log))] -use crate::api::sys::{ +use crate::sys::{ SIM_log_critical, SIM_log_error, SIM_log_info, SIM_log_spec_violation, SIM_log_unimplemented, }; #[cfg(simics_deprecated_api_sim_log)] -use crate::api::sys::{ +use crate::sys::{ VT_log_critical, VT_log_error, VT_log_info, VT_log_spec_violation, VT_log_unimplemented, }; use crate::{ - api::{ - sys::{SIM_log_level, SIM_log_register_groups, SIM_set_log_level}, - ConfObject, - }, - Error, Result, + simics_exception, + sys::{SIM_log_level, SIM_log_register_groups, SIM_set_log_level}, + ConfClass, ConfObject, Error, Result, }; -use simics_macro::simics_exception; use std::{ffi::CString, ptr::null}; -use super::ConfClass; - -const LOG_GROUP: i32 = 0; +/// The default log group +pub const LOG_GROUP: i32 = 0; #[repr(i32)] -/// A SIMICS logging level +/// A log level as defined by SIMICS pub enum LogLevel { + /// Error log level Error = 0, + /// Warning log level Warn = 1, + /// Informational log level Info = 2, + /// Debug log level Debug = 3, + /// Trace log level Trace = 4, } @@ -45,6 +46,7 @@ where s.as_ref().replace('%', "%%") } +#[cfg(not(simics_deprecated_api_sim_log))] #[simics_exception] /// Log an info-level message through the SIMICS logging functions /// @@ -68,12 +70,37 @@ where { let msg_cstring = CString::new(msg.as_ref())?; - #[cfg(not(simics_deprecated_api_sim_log))] unsafe { SIM_log_info(level as i32, device, LOG_GROUP, msg_cstring.as_ptr()); }; - #[cfg(simics_deprecated_api_sim_log)] + Ok(()) +} + +#[cfg(simics_deprecated_api_sim_log)] +#[simics_exception] +/// Log an info-level message through the SIMICS logging functions +/// +/// # Arguments +/// +/// * `level` - The level to emit this log message at +/// * `device` - The device to emit this log message through +/// * `msg` - The message to log +/// +/// # Notes +/// +/// The macros [`simics::error`], [`simics::warn`], [`simics::info`], [`simics::debug`], +/// and [`simics::trace`] are more flexible and user friendly. They should be used instead. +/// +/// # Context +/// +/// All Contexts +pub fn log_info(level: LogLevel, device: *mut ConfObject, msg: S) -> Result<()> +where + S: AsRef, +{ + let msg_cstring = CString::new(msg.as_ref())?; + unsafe { VT_log_info(level as i32, device, LOG_GROUP as u64, msg_cstring.as_ptr()); } @@ -81,6 +108,7 @@ where Ok(()) } +#[cfg(not(simics_deprecated_api_sim_log))] #[simics_exception] /// Log an info-level message through the SIMICS logging functions /// @@ -103,12 +131,36 @@ where { let msg_cstring = CString::new(sanitize(msg.as_ref()))?; - #[cfg(not(simics_deprecated_api_sim_log))] unsafe { SIM_log_error(device, LOG_GROUP, msg_cstring.as_ptr()); }; - #[cfg(simics_deprecated_api_sim_log)] + Ok(()) +} + +#[cfg(simics_deprecated_api_sim_log)] +#[simics_exception] +/// Log an info-level message through the SIMICS logging functions +/// +/// # Arguments +/// +/// * `device` - The device to emit this log message through +/// * `msg` - The message to log +/// +/// # Notes +/// +/// The macros [`simics::error`], [`simics::warn`], [`simics::info`], [`simics::debug`], +/// and [`simics::trace`] are more flexible and user friendly. They should be used instead. +/// +/// # Context +/// +/// All Contexts +pub fn log_error(device: *mut ConfObject, msg: S) -> Result<()> +where + S: AsRef, +{ + let msg_cstring = CString::new(sanitize(msg.as_ref()))?; + unsafe { VT_log_error(device, LOG_GROUP as u64, msg_cstring.as_ptr()); }; @@ -116,6 +168,7 @@ where Ok(()) } +#[cfg(not(simics_deprecated_api_sim_log))] #[simics_exception] /// Log an info-level message through the SIMICS logging functions /// @@ -137,7 +190,6 @@ where { let msg_cstring = CString::new(sanitize(msg.as_ref()))?; - #[cfg(not(simics_deprecated_api_sim_log))] unsafe { SIM_log_critical(device, LOG_GROUP, msg_cstring.as_ptr()); }; @@ -150,6 +202,36 @@ where Ok(()) } +#[cfg(simics_deprecated_api_sim_log)] +#[simics_exception] +/// Log an info-level message through the SIMICS logging functions +/// +/// # Arguments +/// +/// * `device` - The device to emit this log message through +/// * `msg` - The message to log +/// +/// # Notes +/// +/// This function causes a frontend exception. Only use it if the error is truly critical. +/// +/// # Context +/// +/// All Contexts +pub fn log_critical(device: *mut ConfObject, msg: S) -> Result<()> +where + S: AsRef, +{ + let msg_cstring = CString::new(sanitize(msg.as_ref()))?; + + unsafe { + VT_log_critical(device, LOG_GROUP as u64, msg_cstring.as_ptr()); + }; + + Ok(()) +} + +#[cfg(not(simics_deprecated_api_sim_log))] #[simics_exception] /// Log an error-level message through the SIMICS logging functions /// @@ -159,7 +241,6 @@ where pub fn log_spec_violation(level: LogLevel, device: *mut ConfObject, msg: String) -> Result<()> { let msg_cstring = CString::new(sanitize(msg))?; - #[cfg(not(simics_deprecated_api_sim_log))] unsafe { SIM_log_spec_violation(level as i32, device, LOG_GROUP, msg_cstring.as_ptr()); }; @@ -172,6 +253,24 @@ pub fn log_spec_violation(level: LogLevel, device: *mut ConfObject, msg: String) Ok(()) } +#[cfg(simics_deprecated_api_sim_log)] +#[simics_exception] +/// Log an error-level message through the SIMICS logging functions +/// +/// # Context +/// +/// All Contexts +pub fn log_spec_violation(level: LogLevel, device: *mut ConfObject, msg: String) -> Result<()> { + let msg_cstring = CString::new(sanitize(msg))?; + + unsafe { + VT_log_spec_violation(level as i32, device, LOG_GROUP as u64, msg_cstring.as_ptr()); + }; + + Ok(()) +} + +#[cfg(not(simics_deprecated_api_sim_log))] #[simics_exception] /// Log an error-level message through the SIMICS logging functions /// @@ -181,12 +280,23 @@ pub fn log_spec_violation(level: LogLevel, device: *mut ConfObject, msg: String) pub fn log_unimplemented(level: LogLevel, device: *mut ConfObject, msg: String) -> Result<()> { let msg_cstring = CString::new(sanitize(msg))?; - #[cfg(not(simics_deprecated_api_sim_log))] unsafe { SIM_log_unimplemented(level as i32, device, LOG_GROUP, msg_cstring.as_ptr()); }; - #[cfg(simics_deprecated_api_sim_log)] + Ok(()) +} + +#[cfg(simics_deprecated_api_sim_log)] +#[simics_exception] +/// Log an error-level message through the SIMICS logging functions +/// +/// # Context +/// +/// All Contexts +pub fn log_unimplemented(level: LogLevel, device: *mut ConfObject, msg: String) -> Result<()> { + let msg_cstring = CString::new(sanitize(msg))?; + unsafe { VT_log_unimplemented(level as i32, device, LOG_GROUP as u64, msg_cstring.as_ptr()); }; diff --git a/modules/tsffs/src/simics/simics/src/api/mod.rs b/simics-rs/simics/src/api/mod.rs similarity index 60% rename from modules/tsffs/src/simics/simics/src/api/mod.rs rename to simics-rs/simics/src/api/mod.rs index 306f1a3a..99416532 100644 --- a/modules/tsffs/src/simics/simics/src/api/mod.rs +++ b/simics-rs/simics/src/api/mod.rs @@ -1,10 +1,7 @@ -// Copyright (C) 2023 Intel Corporation +// Copyright (C) 2024 Intel Corporation // SPDX-License-Identifier: Apache-2.0 -//! Safe bindings to the SIMICS API -//! -//! In most cases, the SIMICS API is wrapped lightly to provide an experience familiar to SIMICS -//! model developers. +//! The SIMICS API pub mod base; pub mod interface; @@ -15,11 +12,10 @@ pub mod simulator; pub mod traits; pub mod util; -pub use self::logging::*; - pub use base::*; pub use interface::*; pub use internal::*; +pub use logging::*; pub use processor::*; pub use simulator::*; pub use traits::*; diff --git a/modules/tsffs/src/simics/simics/src/api/processor/context.rs b/simics-rs/simics/src/api/processor/context.rs similarity index 65% rename from modules/tsffs/src/simics/simics/src/api/processor/context.rs rename to simics-rs/simics/src/api/processor/context.rs index f0cf6657..d053b8c3 100644 --- a/modules/tsffs/src/simics/simics/src/api/processor/context.rs +++ b/simics-rs/simics/src/api/processor/context.rs @@ -1,9 +1,11 @@ -// Copyright (C) 2023 Intel Corporation +// Copyright (C) 2024 Intel Corporation // SPDX-License-Identifier: Apache-2.0 -use simics_macro::simics_exception; +//! Context handling -use crate::api::{sys::SIM_register_context_handler, ConfClass, ContextHandlerInterface}; +use crate::{ + simics_exception, sys::SIM_register_context_handler, ConfClass, ContextHandlerInterface, +}; #[simics_exception] /// Register `cls` as a class for context handler objects diff --git a/modules/tsffs/src/simics/simics/src/api/processor/mod.rs b/simics-rs/simics/src/api/processor/mod.rs similarity index 68% rename from modules/tsffs/src/simics/simics/src/api/processor/mod.rs rename to simics-rs/simics/src/api/processor/mod.rs index 3f47d991..27de227c 100644 --- a/modules/tsffs/src/simics/simics/src/api/processor/mod.rs +++ b/simics-rs/simics/src/api/processor/mod.rs @@ -1,7 +1,7 @@ -// Copyright (C) 2023 Intel Corporation +// Copyright (C) 2024 Intel Corporation // SPDX-License-Identifier: Apache-2.0 -//! SIMICS processor APIs +//! Processor APIs pub mod context; pub mod stc; diff --git a/modules/tsffs/src/simics/simics/src/api/processor/stc.rs b/simics-rs/simics/src/api/processor/stc.rs similarity index 83% rename from modules/tsffs/src/simics/simics/src/api/processor/stc.rs rename to simics-rs/simics/src/api/processor/stc.rs index 80f7d9d9..b278c084 100644 --- a/modules/tsffs/src/simics/simics/src/api/processor/stc.rs +++ b/simics-rs/simics/src/api/processor/stc.rs @@ -1,31 +1,37 @@ -// Copyright (C) 2023 Intel Corporation +// Copyright (C) 2024 Intel Corporation // SPDX-License-Identifier: Apache-2.0 -use crate::api::{ +//! Cache handling + +use crate::{ + simics_exception, sys::{ SIM_STC_flush_cache, SIM_flush_D_STC_logical, SIM_flush_D_STC_physical, SIM_flush_I_STC_logical, }, ConfObject, LogicalAddress, PhysicalAddress, ReadOrWrite, }; -use simics_macro::simics_exception; #[simics_exception] +/// Flush instruction logical pub fn flush_i_stc_logical(cpu: *mut ConfObject, vaddr: LogicalAddress, length: LogicalAddress) { unsafe { SIM_flush_I_STC_logical(cpu, vaddr, length) }; } #[simics_exception] +/// Flush data logical pub fn flush_d_stc_logical(cpu: *mut ConfObject, vaddr: LogicalAddress, length: LogicalAddress) { unsafe { SIM_flush_D_STC_logical(cpu, vaddr, length) }; } #[simics_exception] +/// Flush instruction physical pub fn flush_i_stc_physical(cpu: *mut ConfObject, paddr: PhysicalAddress, length: PhysicalAddress) { unsafe { SIM_flush_I_STC_logical(cpu, paddr, length) }; } #[simics_exception] +/// Flush data physical pub fn flush_d_stc_physical( cpu: *mut ConfObject, paddr: PhysicalAddress, @@ -36,6 +42,7 @@ pub fn flush_d_stc_physical( } #[simics_exception] +/// Full flush pub fn stc_flush_cache(cpu: *mut ConfObject) { unsafe { SIM_STC_flush_cache(cpu) }; } diff --git a/modules/tsffs/src/simics/simics/src/api/processor/types.rs b/simics-rs/simics/src/api/processor/types.rs similarity index 59% rename from modules/tsffs/src/simics/simics/src/api/processor/types.rs rename to simics-rs/simics/src/api/processor/types.rs index f575eea4..75739463 100644 --- a/modules/tsffs/src/simics/simics/src/api/processor/types.rs +++ b/simics-rs/simics/src/api/processor/types.rs @@ -1,14 +1,22 @@ -// Copyright (C) 2023 Intel Corporation +// Copyright (C) 2024 Intel Corporation // SPDX-License-Identifier: Apache-2.0 -use crate::api::sys::{ +//! Common processor types + +use crate::sys::{ generic_address_t, logical_address_t, physical_address_t, physical_block_t, read_or_write_t, x86_access_type, }; +/// Alias for `physical_block_t` pub type PhysicalBlock = physical_block_t; +/// Alias for `physical_address_t` pub type PhysicalAddress = physical_address_t; +/// Alias for `x86_access_type` pub type X86AccessType = x86_access_type; +/// Alias for `logical_address_t` pub type LogicalAddress = logical_address_t; +/// Alias for `read_or_write_t` pub type ReadOrWrite = read_or_write_t; +/// Alias for `generic_address_t` pub type GenericAddress = generic_address_t; diff --git a/modules/tsffs/src/simics/simics/src/api/simulator/breakpoints.rs b/simics-rs/simics/src/api/simulator/breakpoints.rs similarity index 96% rename from modules/tsffs/src/simics/simics/src/api/simulator/breakpoints.rs rename to simics-rs/simics/src/api/simulator/breakpoints.rs index 9613663b..7fb4a648 100644 --- a/modules/tsffs/src/simics/simics/src/api/simulator/breakpoints.rs +++ b/simics-rs/simics/src/api/simulator/breakpoints.rs @@ -1,9 +1,10 @@ -// Copyright (C) 2023 Intel Corporation +// Copyright (C) 2024 Intel Corporation // SPDX-License-Identifier: Apache-2.0 //! Breakpoint APIs -use crate::api::{ +use crate::{ + simics_exception, sys::{ access_t, breakpoint_flag, breakpoint_id_t, breakpoint_kind_t, SIM_breakpoint, SIM_breakpoint_remove, SIM_delete_breakpoint, SIM_disable_breakpoint, @@ -11,11 +12,14 @@ use crate::api::{ }, ConfObject, GenericAddress, }; -use simics_macro::simics_exception; +/// Alias for `breakpoint_kind_t` pub type BreakpointKind = breakpoint_kind_t; +/// Alias for `access_t` pub type Access = access_t; +/// Alias for `breakpoint_flag` pub type BreakpointFlag = breakpoint_flag; +/// Alias for `breakpoint_id_t` pub type BreakpointId = breakpoint_id_t; #[simics_exception] diff --git a/modules/tsffs/src/simics/simics/src/api/simulator/callbacks.rs b/simics-rs/simics/src/api/simulator/callbacks.rs similarity index 98% rename from modules/tsffs/src/simics/simics/src/api/simulator/callbacks.rs rename to simics-rs/simics/src/api/simulator/callbacks.rs index 46beb09c..5f1f3ebf 100644 --- a/modules/tsffs/src/simics/simics/src/api/simulator/callbacks.rs +++ b/simics-rs/simics/src/api/simulator/callbacks.rs @@ -1,12 +1,13 @@ -// Copyright (C) 2023 Intel Corporation +// Copyright (C) 2024 Intel Corporation // SPDX-License-Identifier: Apache-2.0 //! Callbacks from the simulator to user code #[cfg(not(windows))] -use crate::api::sys::SIM_notify_on_descriptor; +use crate::sys::SIM_notify_on_descriptor; use crate::{ - api::sys::{ + simics_exception, + sys::{ notify_mode_t, socket_t, SIM_cancel_realtime_event, SIM_notify_on_socket, SIM_process_pending_work, SIM_process_work, SIM_realtime_event, SIM_register_work, SIM_run_alone, SIM_run_in_thread, SIM_thread_safe_callback, @@ -14,10 +15,11 @@ use crate::{ Result, }; use raw_cstr::raw_cstr; -use simics_macro::simics_exception; use std::{ffi::c_void, ptr::null_mut}; +/// Alias for `notify_mode_t` pub type NotifyMode = notify_mode_t; +/// Alias for `socket_t` pub type Socket = socket_t; extern "C" fn handle_notify_on_descriptor_callback(cb: *mut c_void) diff --git a/modules/tsffs/src/simics/simics/src/api/simulator/configuration.rs b/simics-rs/simics/src/api/simulator/configuration.rs similarity index 93% rename from modules/tsffs/src/simics/simics/src/api/simulator/configuration.rs rename to simics-rs/simics/src/api/simulator/configuration.rs index ddf97ea0..ad626baa 100644 --- a/modules/tsffs/src/simics/simics/src/api/simulator/configuration.rs +++ b/simics-rs/simics/src/api/simulator/configuration.rs @@ -1,27 +1,25 @@ -// Copyright (C) 2023 Intel Corporation +// Copyright (C) 2024 Intel Corporation // SPDX-License-Identifier: Apache-2.0 //! Configuration APIs use crate::{ - api::{ - last_error, - sys::{ - pre_conf_object_set_t, save_flags_t, SIM_add_configuration, SIM_current_checkpoint_dir, - SIM_read_configuration, SIM_set_configuration, SIM_write_configuration_to_file, - }, - AttrValue, + last_error, simics_exception, + sys::{ + pre_conf_object_set_t, save_flags_t, SIM_add_configuration, SIM_current_checkpoint_dir, + SIM_read_configuration, SIM_set_configuration, SIM_write_configuration_to_file, }, - Error, Result, + AttrValue, Error, Result, }; use raw_cstr::raw_cstr; -use simics_macro::simics_exception; use std::{ ffi::CStr, path::{Path, PathBuf}, }; +/// Alias for `pre_conf_object_set_t` pub type PreConfObjectSet = pre_conf_object_set_t; +/// Alias for `save_flags_t` pub type SaveFlags = save_flags_t; #[simics_exception] diff --git a/modules/tsffs/src/simics/simics/src/api/simulator/control.rs b/simics-rs/simics/src/api/simulator/control.rs similarity index 93% rename from modules/tsffs/src/simics/simics/src/api/simulator/control.rs rename to simics-rs/simics/src/api/simulator/control.rs index a35e42ec..e43a0b86 100644 --- a/modules/tsffs/src/simics/simics/src/api/simulator/control.rs +++ b/simics-rs/simics/src/api/simulator/control.rs @@ -1,21 +1,19 @@ -// Copyright (C) 2023 Intel Corporation +// Copyright (C) 2024 Intel Corporation // SPDX-License-Identifier: Apache-2.0 //! Control of the base simulator use crate::{ - api::{ - sys::{ - pc_step_t, SIM_break_cycle, SIM_break_message, SIM_break_simulation, SIM_break_step, - SIM_continue, SIM_quit, SIM_shutdown, SIM_simics_is_running, - }, - ConfObject, + simics_exception, + sys::{ + pc_step_t, SIM_break_cycle, SIM_break_message, SIM_break_simulation, SIM_break_step, + SIM_continue, SIM_quit, SIM_shutdown, SIM_simics_is_running, }, - Result, + ConfObject, Result, }; use raw_cstr::raw_cstr; -use simics_macro::simics_exception; +/// Alias for `pc_step_t` pub type PcStep = pc_step_t; #[simics_exception] diff --git a/simics-rs/simics/src/api/simulator/debugger.rs b/simics-rs/simics/src/api/simulator/debugger.rs new file mode 100644 index 00000000..c208c25d --- /dev/null +++ b/simics-rs/simics/src/api/simulator/debugger.rs @@ -0,0 +1,12 @@ +// Copyright (C) 2024 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 + +//! Debugger control + +use crate::{simics_exception, sys::SIM_get_debugger, ConfObject}; + +#[simics_exception] +/// Return the current debugger if one is active +pub fn get_debugger() -> *mut ConfObject { + unsafe { SIM_get_debugger() } +} diff --git a/modules/tsffs/src/simics/simics/src/api/simulator/embed.rs b/simics-rs/simics/src/api/simulator/embed.rs similarity index 80% rename from modules/tsffs/src/simics/simics/src/api/simulator/embed.rs rename to simics-rs/simics/src/api/simulator/embed.rs index 6178f353..22129fc5 100644 --- a/modules/tsffs/src/simics/simics/src/api/simulator/embed.rs +++ b/simics-rs/simics/src/api/simulator/embed.rs @@ -1,28 +1,33 @@ -// Copyright (C) 2023 Intel Corporation +// Copyright (C) 2024 Intel Corporation // SPDX-License-Identifier: Apache-2.0 //! Functionality for embedding SIMICS into a program or library. These functions are useful for //! creating alternate SIMICS frontends +#[cfg(not(simics_deprecated_api_cpu_variant_gui_mode))] +use crate::sys::{cpu_variant_t, gui_mode_t}; use crate::{ - api::sys::{ - cpu_variant_t, gui_mode_t, init_arg_t, init_arg_t__bindgen_ty_1, SIM_init_command_line, - SIM_init_environment, SIM_init_simulator2, SIM_main_loop, + simics_exception, + sys::{ + init_arg_t, init_arg_t__bindgen_ty_1, SIM_init_command_line, SIM_init_environment, + SIM_init_simulator2, SIM_main_loop, }, Result, }; -use clap::ValueEnum; use paste::paste; use raw_cstr::raw_cstr; -use simics_macro::simics_exception; use std::{mem::forget, ptr::null}; -#[derive(Debug, Clone)] -pub struct GuiMode(gui_mode_t); +#[cfg(not(simics_deprecated_api_cpu_variant_gui_mode))] +/// Alias for `cpu_variant_t` +pub type CpuVariant = cpu_variant_t; +#[cfg(not(simics_deprecated_api_cpu_variant_gui_mode))] #[derive(Debug, Clone)] -pub struct CpuVariant(cpu_variant_t); +/// Wrapper for `gui_mode_t` which can be converted to a string +pub struct GuiMode(gui_mode_t); +#[cfg(not(simics_deprecated_api_cpu_variant_gui_mode))] impl ToString for GuiMode { fn to_string(&self) -> String { match self.0 { @@ -35,12 +40,15 @@ impl ToString for GuiMode { } } -#[derive(Copy, Clone, Debug, ValueEnum)] +#[derive(Copy, Clone, Debug)] #[repr(u32)] /// Level of warning that will be printed when deprecated APIs are used pub enum DeprecationLevel { + /// No warnings will be prented NoWarnings = 0, + /// Functionality deprecated in a major release will be warned MajorReleaseDeprecated = 1, + /// Any deprecated API use will be warned NewAndFutureDeprecated = 2, } @@ -51,9 +59,8 @@ impl ToString for DeprecationLevel { } } -/// Initialization arguments. See: -/// https://simics-download.pdx.intel.com/simics-6/docs/html/rm-base/simics.html #[derive(Clone)] +/// Initialization argument pub struct InitArg(init_arg_t); impl From for init_arg_t { @@ -66,6 +73,7 @@ macro_rules! impl_bool_arg { ($struct_name:ident, $name:expr) => { paste! { impl $struct_name { + /// Implementation for an argument which takes a boolean value pub fn [< $name:snake:lower >](value: bool) -> Result { Self::boolean($name, value) } @@ -78,6 +86,7 @@ macro_rules! impl_string_arg { ($struct_name:ident, $name:expr) => { paste! { impl $struct_name { + /// Implementation for an argument which takes a string value pub fn [< $name:snake:lower >](value: T) -> Result where T: ToString { let value = value.to_string(); Self::string($name, &value.to_string()) @@ -89,6 +98,7 @@ macro_rules! impl_string_arg { } impl InitArg { + /// Construct a named argument which takes a boolean value pub fn boolean(name: S, enabled: bool) -> Result where S: AsRef, @@ -100,6 +110,7 @@ impl InitArg { })) } + /// Construct a named argumet which takes a string value pub fn string(name: S, value: S) -> Result where S: AsRef, @@ -113,6 +124,7 @@ impl InitArg { })) } + /// Construct a terminating argument, which must be last in the init arg list pub fn last() -> Self { InitArg(init_arg_t { name: null(), @@ -159,6 +171,7 @@ impl_bool_arg!(InitArg, "py-import-all"); impl_bool_arg!(InitArg, "use-module-cache"); #[derive(Clone)] +/// A list of init arguments pub struct InitArgs { args: Vec, } @@ -172,11 +185,13 @@ impl Default for InitArgs { } impl InitArgs { + /// Retrieve an argument at an index pub fn arg(mut self, arg: InitArg) -> Self { self.args.insert(0, arg.into()); self } + /// Return the list of arguments as a raw pointer to be passed to Simics pub fn as_mut_ptr(&mut self) -> *mut init_arg_t { self.args.as_mut_ptr() } @@ -211,7 +226,7 @@ pub fn init_simulator(args: &mut InitArgs) { } #[simics_exception] -/// Initialize the SIMICS command line. [`main_loop`] needs to be called next otherwise the +/// Initialize the SIMICS command line. [`main_loop`] needs to be called as well otherwise the /// command line will exit immediately. pub fn init_command_line() { unsafe { SIM_init_command_line() }; diff --git a/modules/tsffs/src/simics/simics/src/api/simulator/hap_consumer.rs b/simics-rs/simics/src/api/simulator/hap_consumer.rs similarity index 85% rename from modules/tsffs/src/simics/simics/src/api/simulator/hap_consumer.rs rename to simics-rs/simics/src/api/simulator/hap_consumer.rs index 5d14e508..6c78b878 100644 --- a/modules/tsffs/src/simics/simics/src/api/simulator/hap_consumer.rs +++ b/simics-rs/simics/src/api/simulator/hap_consumer.rs @@ -1,4 +1,4 @@ -// Copyright (C) 2023 Intel Corporation +// Copyright (C) 2024 Intel Corporation // SPDX-License-Identifier: Apache-2.0 //! HAP APIs and HAP definitions @@ -7,23 +7,20 @@ #![allow(clippy::not_unsafe_ptr_arg_deref)] use crate::{ - api::{ - sys::{ - hap_handle_t, hap_type_t, SIM_get_all_hap_types, SIM_hap_add_type, SIM_hap_get_name, - SIM_hap_get_number, SIM_hap_is_active, SIM_hap_is_active_obj, - SIM_hap_is_active_obj_idx, SIM_hap_occurred_always, SIM_hap_remove_type, - }, - AttrValue, ConfObject, + simics_exception, + sys::{ + hap_handle_t, hap_type_t, SIM_get_all_hap_types, SIM_hap_add_type, SIM_hap_get_name, + SIM_hap_get_number, SIM_hap_is_active, SIM_hap_is_active_obj, SIM_hap_is_active_obj_idx, + SIM_hap_occurred_always, SIM_hap_remove_type, }, - Result, + AttrValue, ConfObject, Result, }; use raw_cstr::raw_cstr; -use simics_macro::simics_exception; use std::{ffi::CStr, ptr::null_mut}; -pub use self::haps::*; - +/// Alias for `hap_handle_t` pub type HapHandle = hap_handle_t; +/// Alias for `hap_type_t` pub type HapType = hap_type_t; #[simics_exception] @@ -109,3 +106,5 @@ where // NOTE: recommended to only use the always version include!(concat!(env!("OUT_DIR"), "/haps.rs")); +// Re-export all HAPs +pub use self::haps::*; diff --git a/modules/tsffs/src/simics/simics/src/api/simulator/host_profiling.rs b/simics-rs/simics/src/api/simulator/host_profiling.rs similarity index 77% rename from modules/tsffs/src/simics/simics/src/api/simulator/host_profiling.rs rename to simics-rs/simics/src/api/simulator/host_profiling.rs index 82b92a29..ffed982e 100644 --- a/modules/tsffs/src/simics/simics/src/api/simulator/host_profiling.rs +++ b/simics-rs/simics/src/api/simulator/host_profiling.rs @@ -1,15 +1,16 @@ -// Copyright (C) 2023 Intel Corporation +// Copyright (C) 2024 Intel Corporation // SPDX-License-Identifier: Apache-2.0 //! Host machine profiling APIs use crate::{ - api::sys::{profile_area_t, SIM_add_profiling_area, SIM_remove_profiling_area}, + simics_exception, + sys::{profile_area_t, SIM_add_profiling_area, SIM_remove_profiling_area}, Result, }; use raw_cstr::raw_cstr; -use simics_macro::simics_exception; +/// Alias for `profile_area_t` pub type ProfileArea = profile_area_t; #[simics_exception] diff --git a/modules/tsffs/src/simics/simics/src/api/simulator/memory.rs b/simics-rs/simics/src/api/simulator/memory.rs similarity index 95% rename from modules/tsffs/src/simics/simics/src/api/simulator/memory.rs rename to simics-rs/simics/src/api/simulator/memory.rs index b0993062..c3a57817 100644 --- a/modules/tsffs/src/simics/simics/src/api/simulator/memory.rs +++ b/simics-rs/simics/src/api/simulator/memory.rs @@ -1,21 +1,20 @@ -// Copyright (C) 2023 Intel Corporation +// Copyright (C) 2024 Intel Corporation // SPDX-License-Identifier: Apache-2.0 //! Memory access APIs #![allow(clippy::not_unsafe_ptr_arg_deref)] -use crate::api::{ConfObject, PhysicalAddress}; use crate::{ - api::sys::{ + simics_exception, + sys::{ SIM_load_binary, SIM_load_file, SIM_read_byte, SIM_read_phys_memory, SIM_read_phys_memory_tags, SIM_write_byte, SIM_write_phys_memory, SIM_write_phys_memory_tags, }, - Error, Result, + ConfObject, Error, PhysicalAddress, Result, }; use raw_cstr::raw_cstr; -use simics_macro::simics_exception; use std::path::Path; #[simics_exception] diff --git a/modules/tsffs/src/simics/simics/src/api/simulator/mod.rs b/simics-rs/simics/src/api/simulator/mod.rs similarity index 66% rename from modules/tsffs/src/simics/simics/src/api/simulator/mod.rs rename to simics-rs/simics/src/api/simulator/mod.rs index d90c2c7c..03251bb4 100644 --- a/modules/tsffs/src/simics/simics/src/api/simulator/mod.rs +++ b/simics-rs/simics/src/api/simulator/mod.rs @@ -1,7 +1,7 @@ -// Copyright (C) 2023 Intel Corporation +// Copyright (C) 2024 Intel Corporation // SPDX-License-Identifier: Apache-2.0 -//! SIMICS simulator APIs for programming the simulator from a module or frontend +//! Simulator control APIs pub mod breakpoints; pub mod callbacks; @@ -16,12 +16,17 @@ pub mod modules; pub mod paths; pub mod processor; pub mod python; +#[cfg(not(simics_deprecated_api_rev_exec))] pub mod rev_exec; pub mod script; pub mod sim_caches; pub mod sim_conf_object; pub mod sim_get_class; -#[cfg(simics_experimental_api_snapshots)] +#[cfg(any( + simics_experimental_api_snapshots, + simics_experimental_api_snapshots_v2, + simics_stable_api_snapshots +))] pub mod snapshots; pub use breakpoints::*; @@ -37,11 +42,15 @@ pub use modules::*; pub use paths::*; pub use processor::*; pub use python::*; +#[cfg(not(simics_deprecated_api_rev_exec))] pub use rev_exec::*; pub use script::*; pub use sim_caches::*; pub use sim_conf_object::*; pub use sim_get_class::*; - -#[cfg(simics_experimental_api_snapshots)] +#[cfg(any( + simics_experimental_api_snapshots, + simics_experimental_api_snapshots_v2, + simics_stable_api_snapshots +))] pub use snapshots::*; diff --git a/modules/tsffs/src/simics/simics/src/api/simulator/modules.rs b/simics-rs/simics/src/api/simulator/modules.rs similarity index 87% rename from modules/tsffs/src/simics/simics/src/api/simulator/modules.rs rename to simics-rs/simics/src/api/simulator/modules.rs index 4f034a1e..e69366dd 100644 --- a/modules/tsffs/src/simics/simics/src/api/simulator/modules.rs +++ b/simics-rs/simics/src/api/simulator/modules.rs @@ -1,18 +1,17 @@ -// Copyright (C) 2023 Intel Corporation +// Copyright (C) 2024 Intel Corporation // SPDX-License-Identifier: Apache-2.0 +//! Module handling + use crate::{ - api::{ - sys::{ - SIM_add_module_dir, SIM_get_all_failed_modules, SIM_get_all_modules, SIM_load_module, - SIM_module_list_refresh, - }, - AttrValue, + simics_exception, + sys::{ + SIM_add_module_dir, SIM_get_all_failed_modules, SIM_get_all_modules, SIM_load_module, + SIM_module_list_refresh, }, - Result, + AttrValue, Result, }; use raw_cstr::raw_cstr; -use simics_macro::simics_exception; use std::path::Path; #[simics_exception] diff --git a/modules/tsffs/src/simics/simics/src/api/simulator/paths.rs b/simics-rs/simics/src/api/simulator/paths.rs similarity index 90% rename from modules/tsffs/src/simics/simics/src/api/simulator/paths.rs rename to simics-rs/simics/src/api/simulator/paths.rs index eec47928..5a7c1f62 100644 --- a/modules/tsffs/src/simics/simics/src/api/simulator/paths.rs +++ b/simics-rs/simics/src/api/simulator/paths.rs @@ -1,15 +1,14 @@ -// Copyright (C) 2023 Intel Corporation +// Copyright (C) 2024 Intel Corporation // SPDX-License-Identifier: Apache-2.0 +//! Path handling + use crate::{ - api::{ - sys::{SIM_add_directory, SIM_clear_directories, SIM_get_directories, SIM_lookup_file}, - AttrValue, - }, - Error, Result, + simics_exception, + sys::{SIM_add_directory, SIM_clear_directories, SIM_get_directories, SIM_lookup_file}, + AttrValue, Error, Result, }; use raw_cstr::raw_cstr; -use simics_macro::simics_exception; use std::{ ffi::CStr, path::{Path, PathBuf}, diff --git a/modules/tsffs/src/simics/simics/src/api/simulator/processor.rs b/simics-rs/simics/src/api/simulator/processor.rs similarity index 93% rename from modules/tsffs/src/simics/simics/src/api/simulator/processor.rs rename to simics-rs/simics/src/api/simulator/processor.rs index dc799090..50134d35 100644 --- a/modules/tsffs/src/simics/simics/src/api/simulator/processor.rs +++ b/simics-rs/simics/src/api/simulator/processor.rs @@ -1,9 +1,10 @@ -// Copyright (C) 2023 Intel Corporation +// Copyright (C) 2024 Intel Corporation // SPDX-License-Identifier: Apache-2.0 -use simics_macro::simics_exception; +//! Processor control -use crate::api::{ +use crate::{ + simics_exception, sys::{ tuple_int_string_t, SIM_current_clock, SIM_disassemble_address, SIM_get_all_processors, SIM_get_processor, SIM_get_processor_number, SIM_number_processors, @@ -12,6 +13,7 @@ use crate::api::{ AttrValue, ConfObject, GenericAddress, }; +/// Alias for `tuple_int_string_t` pub type TupleIntString = tuple_int_string_t; #[simics_exception] diff --git a/modules/tsffs/src/simics/simics/src/api/simulator/python.rs b/simics-rs/simics/src/api/simulator/python.rs similarity index 92% rename from modules/tsffs/src/simics/simics/src/api/simulator/python.rs rename to simics-rs/simics/src/api/simulator/python.rs index c7646dbd..b1796071 100644 --- a/modules/tsffs/src/simics/simics/src/api/simulator/python.rs +++ b/simics-rs/simics/src/api/simulator/python.rs @@ -1,4 +1,4 @@ -// Copyright (C) 2023 Intel Corporation +// Copyright (C) 2024 Intel Corporation // SPDX-License-Identifier: Apache-2.0 //! Direct Python interface @@ -6,17 +6,13 @@ #![allow(clippy::not_unsafe_ptr_arg_deref)] use crate::{ - api::{ - sys::{ - SIM_call_python_function, SIM_run_python, SIM_source_python, - VT_call_python_module_function, - }, - AttrValue, + simics_exception, + sys::{ + SIM_call_python_function, SIM_run_python, SIM_source_python, VT_call_python_module_function, }, - Error, Result, + AttrValue, Error, Result, }; use raw_cstr::raw_cstr; -use simics_macro::simics_exception; use std::{any::type_name, path::Path}; #[simics_exception] diff --git a/modules/tsffs/src/simics/simics/src/api/simulator/rev_exec.rs b/simics-rs/simics/src/api/simulator/rev_exec.rs similarity index 83% rename from modules/tsffs/src/simics/simics/src/api/simulator/rev_exec.rs rename to simics-rs/simics/src/api/simulator/rev_exec.rs index e8e86d7c..b8bc5d4f 100644 --- a/modules/tsffs/src/simics/simics/src/api/simulator/rev_exec.rs +++ b/simics-rs/simics/src/api/simulator/rev_exec.rs @@ -1,26 +1,25 @@ -// Copyright (C) 2023 Intel Corporation +// Copyright (C) 2024 Intel Corporation // SPDX-License-Identifier: Apache-2.0 -//! Implements simulator reverse execution and micro checkpointing functions +//! Implements simulator reverse execution and micro checkpointing functions. This functionality +//! is deprecated in Simics 7 use crate::{ - api::{ - control::PcStep, - sys::{ - micro_checkpoint_flags_t, revexec_pos_t, VT_delete_micro_checkpoint, - VT_get_rewind_overhead, VT_in_the_past, VT_restore_micro_checkpoint, VT_reverse, - VT_reverse_cpu, VT_revexec_active, VT_revexec_available, VT_revexec_barrier, - VT_revexec_cycles, VT_revexec_ignore_class, VT_revexec_steps, VT_rewind, - VT_save_micro_checkpoint, VT_skipto_bookmark, VT_skipto_cycle, VT_skipto_step, - }, - ConfObject, Cycles, + simics_exception, + sys::{ + micro_checkpoint_flags_t, revexec_pos_t, VT_delete_micro_checkpoint, + VT_get_rewind_overhead, VT_in_the_past, VT_restore_micro_checkpoint, VT_reverse, + VT_reverse_cpu, VT_revexec_active, VT_revexec_available, VT_revexec_barrier, + VT_revexec_cycles, VT_revexec_ignore_class, VT_revexec_steps, VT_rewind, + VT_save_micro_checkpoint, VT_skipto_bookmark, VT_skipto_cycle, VT_skipto_step, }, - Result, + ConfObject, Cycles, PcStep, Result, }; use raw_cstr::raw_cstr; -use simics_macro::simics_exception; +/// Alias for `micro_checkpoint_flags_t` pub type MicroCheckpointFlags = micro_checkpoint_flags_t; +/// Alias for `revexec_pos_t` pub type RevExecPos = revexec_pos_t; #[simics_exception] diff --git a/modules/tsffs/src/simics/simics/src/api/simulator/script.rs b/simics-rs/simics/src/api/simulator/script.rs similarity index 88% rename from modules/tsffs/src/simics/simics/src/api/simulator/script.rs rename to simics-rs/simics/src/api/simulator/script.rs index 367e45fa..a6220c7a 100644 --- a/modules/tsffs/src/simics/simics/src/api/simulator/script.rs +++ b/simics-rs/simics/src/api/simulator/script.rs @@ -1,18 +1,17 @@ -// Copyright (C) 2023 Intel Corporation +// Copyright (C) 2024 Intel Corporation // SPDX-License-Identifier: Apache-2.0 +//! Script running and management + use crate::{ - api::{ - sys::{ - SIM_get_batch_mode, SIM_load_target, SIM_run_command, SIM_run_command_file, - SIM_run_command_file_params, - }, - AttrValue, + simics_exception, + sys::{ + SIM_get_batch_mode, SIM_load_target, SIM_run_command, SIM_run_command_file, + SIM_run_command_file_params, }, - Error, Result, + AttrValue, Error, Result, }; use raw_cstr::raw_cstr; -use simics_macro::simics_exception; use std::any::type_name; #[simics_exception] diff --git a/modules/tsffs/src/simics/simics/src/api/simulator/sim_caches.rs b/simics-rs/simics/src/api/simulator/sim_caches.rs similarity index 79% rename from modules/tsffs/src/simics/simics/src/api/simulator/sim_caches.rs rename to simics-rs/simics/src/api/simulator/sim_caches.rs index 8169aae4..757c7158 100644 --- a/modules/tsffs/src/simics/simics/src/api/simulator/sim_caches.rs +++ b/simics-rs/simics/src/api/simulator/sim_caches.rs @@ -1,9 +1,10 @@ -// Copyright (C) 2023 Intel Corporation +// Copyright (C) 2024 Intel Corporation // SPDX-License-Identifier: Apache-2.0 -use simics_macro::simics_exception; +//! Simulator cache control -use crate::api::{ +use crate::{ + simics_exception, sys::{SIM_flush_all_caches, SIM_flush_cell_caches}, ConfObject, }; diff --git a/modules/tsffs/src/simics/simics/src/api/simulator/sim_conf_object.rs b/simics-rs/simics/src/api/simulator/sim_conf_object.rs similarity index 87% rename from modules/tsffs/src/simics/simics/src/api/simulator/sim_conf_object.rs rename to simics-rs/simics/src/api/simulator/sim_conf_object.rs index 4bf3cf04..88df1c4e 100644 --- a/modules/tsffs/src/simics/simics/src/api/simulator/sim_conf_object.rs +++ b/simics-rs/simics/src/api/simulator/sim_conf_object.rs @@ -1,23 +1,20 @@ -// Copyright (C) 2023 Intel Corporation +// Copyright (C) 2024 Intel Corporation // SPDX-License-Identifier: Apache-2.0 +//! Simulator configuration object handling + use crate::{ - api::{ - last_error, - sys::{ - SIM_class_has_attribute, SIM_class_port, SIM_create_object, SIM_delete_object, - SIM_delete_objects, SIM_get_all_classes, SIM_get_all_objects, SIM_get_attribute, - SIM_get_attribute_attributes, SIM_get_attribute_idx, SIM_get_class_attribute, - SIM_get_class_attribute_idx, SIM_get_object, SIM_set_attribute, - SIM_set_attribute_default, SIM_set_attribute_idx, SIM_set_class_attribute, - SIM_set_class_attribute_idx, - }, - AttrAttr, AttrValue, ConfClass, ConfObject, SetErr, + last_error, simics_exception, + sys::{ + SIM_class_has_attribute, SIM_class_port, SIM_create_object, SIM_delete_object, + SIM_delete_objects, SIM_get_all_classes, SIM_get_all_objects, SIM_get_attribute, + SIM_get_attribute_attributes, SIM_get_attribute_idx, SIM_get_class_attribute, + SIM_get_class_attribute_idx, SIM_get_object, SIM_set_attribute, SIM_set_attribute_default, + SIM_set_attribute_idx, SIM_set_class_attribute, SIM_set_class_attribute_idx, }, - Error, Result, + AttrAttr, AttrValue, ConfClass, ConfObject, Error, Result, SetErr, }; use raw_cstr::raw_cstr; -use simics_macro::simics_exception; #[simics_exception] /// Get the flags of an attribute in a class diff --git a/modules/tsffs/src/simics/simics/src/api/simulator/sim_get_class.rs b/simics-rs/simics/src/api/simulator/sim_get_class.rs similarity index 76% rename from modules/tsffs/src/simics/simics/src/api/simulator/sim_get_class.rs rename to simics-rs/simics/src/api/simulator/sim_get_class.rs index ba52b7a2..6ffec04e 100644 --- a/modules/tsffs/src/simics/simics/src/api/simulator/sim_get_class.rs +++ b/simics-rs/simics/src/api/simulator/sim_get_class.rs @@ -1,12 +1,10 @@ -// Copyright (C) 2023 Intel Corporation +// Copyright (C) 2024 Intel Corporation // SPDX-License-Identifier: Apache-2.0 -use crate::{ - api::{sys::SIM_get_class, ConfClass}, - Result, -}; +//! Simulator class control + +use crate::{simics_exception, sys::SIM_get_class, ConfClass, Result}; use raw_cstr::raw_cstr; -use simics_macro::simics_exception; #[simics_exception] /// Get a class by name diff --git a/simics-rs/simics/src/api/simulator/snapshots.rs b/simics-rs/simics/src/api/simulator/snapshots.rs new file mode 100644 index 00000000..eb685d03 --- /dev/null +++ b/simics-rs/simics/src/api/simulator/snapshots.rs @@ -0,0 +1,208 @@ +// Copyright (C) 2024 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 + +//! Experimental snapshot APIs + +#[cfg(all( + simics_experimental_api_snapshots, + not(simics_experimental_api_snapshots_v2), + not(simics_stable_api_snapshots) +))] +// NOTE: This API changes to VT_take_snapshot in simics 6.0.180 +use crate::sys::VT_save_snapshot; + +#[cfg(all(simics_experimental_api_snapshots_v2, not(simics_stable_api_snapshots)))] +// NOTE: This API changed to VT_take_snapshot in simics 6.0.180 and to SIM_take_snapshot in simics 6.0.180 +use crate::sys::{snapshot_error_t, VT_take_snapshot}; + +#[cfg(simics_stable_api_snapshots)] +use crate::sys::{ + SIM_delete_snapshot, SIM_list_snapshots, SIM_restore_snapshot, SIM_take_snapshot, +}; + +#[cfg(any( + simics_experimental_api_snapshots, + simics_experimental_api_snapshots_v2 +))] +use crate::sys::{VT_delete_snapshot, VT_list_snapshots, VT_restore_snapshot}; + +#[cfg(any( + simics_experimental_api_snapshots, + simics_experimental_api_snapshots_v2, + simics_stable_api_snapshots, +))] +use crate::sys::{VT_snapshot_size_used, VT_snapshots_ignore_class}; + +#[cfg(simics_stable_api_snapshots)] +use crate::sys::snapshot_error_t; +use crate::{simics_exception, AttrValue, Result}; +use raw_cstr::raw_cstr; + +#[cfg(any(simics_experimental_api_snapshots_v2, simics_stable_api_snapshots))] +type SnapshotError = snapshot_error_t; + +#[cfg(all( + simics_experimental_api_snapshots, + not(simics_experimental_api_snapshots_v2) +))] +#[simics_exception] +/// Save a snapshot with a name +pub fn save_snapshot(name: S) -> Result +where + S: AsRef, +{ + Ok(unsafe { VT_save_snapshot(raw_cstr(name)?) }) +} + +#[cfg(simics_experimental_api_snapshots_v2)] +#[cfg_attr( + any(simics_experimental_api_snapshots, simics_stable_api_snapshots), + deprecated = "Use `take_snapshot` instead" +)] +/// Save a snapshot with a name. API deprecated as of SIMICS 6.0.180 +pub fn save_snapshot(name: S) -> Result +where + S: AsRef, +{ + Ok(unsafe { VT_take_snapshot(raw_cstr(name)?) }) +} + +#[cfg(simics_experimental_api_snapshots_v2)] +#[simics_exception] +/// Take a snapshot with a name +pub fn take_snapshot(name: S) -> Result +where + S: AsRef, +{ + Ok(unsafe { VT_take_snapshot(raw_cstr(name)?) }) +} + +#[cfg(all( + simics_experimental_api_snapshots, + not(simics_experimental_api_snapshots_v2) +))] +#[simics_exception] +/// Restore a snapshot with a name +pub fn restore_snapshot(name: S) -> Result +where + S: AsRef, +{ + Ok(unsafe { VT_restore_snapshot(raw_cstr(name)?) }) +} + +#[cfg(simics_experimental_api_snapshots_v2)] +#[simics_exception] +/// Restore a snapshot with a name +pub fn restore_snapshot(name: S) -> Result +where + S: AsRef, +{ + Ok(unsafe { VT_restore_snapshot(raw_cstr(name)?) }) +} + +#[cfg(all( + simics_experimental_api_snapshots, + not(simics_experimental_api_snapshots_v2) +))] +#[simics_exception] +/// Delete a snapshot with a name +pub fn delete_snapshot(name: S) -> Result +where + S: AsRef, +{ + Ok(unsafe { VT_delete_snapshot(raw_cstr(name)?) }) +} + +#[cfg(simics_experimental_api_snapshots_v2)] +#[simics_exception] +/// Delete a snapshot with a name +pub fn delete_snapshot(name: S) -> Result +where + S: AsRef, +{ + Ok(unsafe { VT_delete_snapshot(raw_cstr(name)?) }) +} + +#[cfg(any( + simics_experimental_api_snapshots, + simics_experimental_api_snapshots_v2, + simics_stable_api_snapshots +))] +#[simics_exception] +/// Get the total size used by all snapshots +pub fn snapshot_size_used() -> AttrValue { + unsafe { VT_snapshot_size_used() }.into() +} + +#[cfg(any( + simics_experimental_api_snapshots, + simics_experimental_api_snapshots_v2 +))] +#[simics_exception] +/// Get the list of all snapshots +pub fn list_snapshots() -> AttrValue { + unsafe { VT_list_snapshots() }.into() +} + +#[cfg(any( + simics_experimental_api_snapshots, + simics_experimental_api_snapshots_v2, + simics_stable_api_snapshots +))] +#[simics_exception] +/// Set snapshots to ignore a given class by name +pub fn snapshots_ignore_class(class_name: S) -> Result<()> +where + S: AsRef, +{ + unsafe { VT_snapshots_ignore_class(raw_cstr(class_name)?) }; + Ok(()) +} + +#[deprecated = "Use `take_snapshot` instead`"] +#[cfg(simics_stable_api_snapshots)] +#[simics_exception] +/// Take a snapshot with a name +pub fn save_snapshot(name: S) -> Result +where + S: AsRef, +{ + Ok(unsafe { SIM_take_snapshot(raw_cstr(name)?) }) +} + +#[cfg(simics_stable_api_snapshots)] +#[simics_exception] +/// Take a snapshot with a name +pub fn take_snapshot(name: S) -> Result +where + S: AsRef, +{ + Ok(unsafe { SIM_take_snapshot(raw_cstr(name)?) }) +} + +#[cfg(simics_stable_api_snapshots)] +#[simics_exception] +/// Restore a snapshot with a name +pub fn restore_snapshot(name: S) -> Result +where + S: AsRef, +{ + Ok(unsafe { SIM_restore_snapshot(raw_cstr(name)?) }) +} + +#[cfg(simics_stable_api_snapshots)] +#[simics_exception] +/// Delete a snapshot with a name +pub fn delete_snapshot(name: S) -> Result +where + S: AsRef, +{ + Ok(unsafe { SIM_delete_snapshot(raw_cstr(name)?) }) +} + +#[cfg(simics_stable_api_snapshots)] +#[simics_exception] +/// Get the list of all snapshots +pub fn list_snapshots() -> AttrValue { + unsafe { SIM_list_snapshots() }.into() +} diff --git a/simics-rs/simics/src/api/traits/class.rs b/simics-rs/simics/src/api/traits/class.rs new file mode 100644 index 00000000..9814a79a --- /dev/null +++ b/simics-rs/simics/src/api/traits/class.rs @@ -0,0 +1,118 @@ +// Copyright (C) 2024 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 + +//! Traits for classes + +use crate::{ConfClass, ConfObject, Result}; + +/// A class instance can allocated +pub trait ClassAlloc { + /// Allocates an instance of the object using mm_zalloc and returns a pointer to the + /// allocated object, whose first entry is the `ConfObject` instance associated with it + /// + /// # Safety + /// + /// This method is unsafe because it may dereference a raw pointer. It is up to the + /// implementation of this method to ensure that the pointer is valid. + unsafe fn alloc(_cls: *mut ConfClass) -> Result<*mut ConfObject> { + let size = std::mem::size_of::(); + let ptr = crate::simics_alloc!(crate::api::ConfObject, size)?; + Ok(Into::into(ptr)) + } +} + +/// A class can be initialized +pub trait ClassInit { + /// Perform class specific instantiation, set default values for attributes. May allocate + /// additional memory if co-allocation is not used. Attribute setters are called *after* this + /// function returns. The default implementation returns the object without modification. + /// Returning NULL from this function indicates an error + /// + /// # Safety + /// + /// This method is unsafe because it may dereference a raw pointer. It is up to the + /// implementation of this method to ensure that the pointer is valid. + unsafe fn init(instance: *mut ConfObject) -> Result<*mut ConfObject> { + Ok(instance) + } +} + +/// A class can be finalized +pub trait ClassFinalize { + /// Object can do final initialization that requires attribute values, but should avoid calling + /// interface methods on *other* objects. The default implementation of this method does + /// nothing + /// + /// # Safety + /// + /// This method is unsafe because it may dereference a raw pointer. It is up to the + /// implementation of this method to ensure that the pointer is valid. + unsafe fn finalize(_instance: *mut ConfObject) -> Result<()> { + Ok(()) + } +} + +/// A class instance can be finalized +pub trait ClassObjectsFinalize { + /// Called after object is fully constructed and can participate in simulation and reverse + /// execution. May call interface methods on other objects here as part of initialization. + /// The default implementation of this method does nothing + /// + /// # Safety + /// + /// This method is unsafe because it may dereference a raw pointer. It is up to the + /// implementation of this method to ensure that the pointer is valid. + unsafe fn objects_finalized(_instance: *mut ConfObject) -> Result<()> { + Ok(()) + } +} + +/// A class can be deinitialized +pub trait ClassDeinit { + /// Called first on all objects being deleted, should do the opposite of `init` and + /// deinitialize any additionally-allocated memory, destroy file descriptors, etc. + /// The default implementation of this method does nothing + /// + /// # Safety + /// + /// This method is unsafe because it may dereference a raw pointer. It is up to the + /// implementation of this method to ensure that the pointer is valid. + unsafe fn deinit(_instance: *mut ConfObject) -> Result<()> { + Ok(()) + } +} + +/// A class instance can be deallocated +pub trait ClassDealloc { + /// Called after all objects are deinitialized, this should free the allocated object using + /// mm_free + /// + /// # Safety + /// + /// This method is unsafe because it may dereference a raw pointer. It is up to the + /// implementation of this method to ensure that the pointer is valid. + unsafe fn dealloc(instance: *mut ConfObject) -> Result<()> { + crate::api::free(instance); + Ok(()) + } +} + +/// A class can be created, which usually entails calling `create_class` +pub trait ClassCreate { + /// Create a class and register it in SIMICS. This does not instantiate the class by creating + /// any objects, it only creates the (python) class that is used as a blueprint to instantiate + /// the class + fn create() -> Result<*mut ConfClass>; +} + +/// Trait for simics module objects to implement to create a threadsafe module implementation +pub trait Class: + ClassAlloc + + ClassInit + + ClassFinalize + + ClassObjectsFinalize + + ClassDeinit + + ClassDealloc + + ClassCreate +{ +} diff --git a/simics-rs/simics/src/api/traits/conf_object_traits.rs b/simics-rs/simics/src/api/traits/conf_object_traits.rs new file mode 100644 index 00000000..19c0acf1 --- /dev/null +++ b/simics-rs/simics/src/api/traits/conf_object_traits.rs @@ -0,0 +1,45 @@ +// Copyright (C) 2024 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 + +//! Conversions to and from `ConfObject` pointers + +use crate::ConfObject; + +/// Convert from a reference to a raw pointer +pub trait AsConfObject { + /// Convert a reference to this object to a raw `ConfObject` pointer + fn as_conf_object(&self) -> *const ConfObject { + self as *const _ as *const ConfObject + } + + /// Convert a mutable reference to this object to a raw `ConfObject` pointer + fn as_conf_object_mut(&mut self) -> *mut ConfObject { + self as *mut _ as *mut ConfObject + } +} + +/// Convert from a raw pointer to a reference +pub trait FromConfObject +where + Self: Sized, +{ + /// Get a reference to this object from a raw `ConfObject` pointer + /// + /// # Safety + /// + /// This function dereferences a raw pointer. It must be called with a valid pointer which + /// has a sufficient lifetime. + unsafe fn from_conf_object<'a>(obj: *const ConfObject) -> &'a Self { + &*(obj as *const Self) + } + + /// Get a mutable reference to this object from a raw `ConfObject` pointer + /// + /// # Safety + /// + /// This function dereferences a raw pointer. It must be called with a valid pointer which + /// has a sufficient lifetime. + unsafe fn from_conf_object_mut<'a>(obj: *mut ConfObject) -> &'a mut Self { + &mut *(obj as *mut Self) + } +} diff --git a/modules/tsffs/src/simics/simics/src/api/traits/hap.rs b/simics-rs/simics/src/api/traits/hap.rs similarity index 58% rename from modules/tsffs/src/simics/simics/src/api/traits/hap.rs rename to simics-rs/simics/src/api/traits/hap.rs index 076652d9..cd8b8b8e 100644 --- a/modules/tsffs/src/simics/simics/src/api/traits/hap.rs +++ b/simics-rs/simics/src/api/traits/hap.rs @@ -1,28 +1,32 @@ -// Copyright (C) 2023 Intel Corporation +// Copyright (C) 2024 Intel Corporation // SPDX-License-Identifier: Apache-2.0 +//! Traits for classes + #![allow(clippy::not_unsafe_ptr_arg_deref)] use raw_cstr::AsRawCstr; use crate::{ - api::{ - sys::{SIM_hap_delete_callback_id, SIM_hap_delete_callback_obj_id}, - ConfObject, HapHandle, - }, - Result, + sys::{SIM_hap_delete_callback_id, SIM_hap_delete_callback_obj_id}, + ConfObject, HapHandle, Result, }; /// A SIMICS Hap and the type of callbacks associated with it pub trait Hap { + /// The type of the name of the HAP, must be convertible to raw C string to pass to + /// the simulator type Name: AsRawCstr; + /// The name of the HAP. const NAME: Self::Name; + /// A callback for a hap can be deleted by its handle fn delete_callback_id(handle: HapHandle) -> Result<()> { unsafe { SIM_hap_delete_callback_id(Self::NAME.as_raw_cstr()?, handle) }; Ok(()) } + /// A callback for a hap can be deleted by the object it is associated with fn delete_callback_obj_id(obj: *mut ConfObject, handle: HapHandle) -> Result<()> { unsafe { SIM_hap_delete_callback_obj_id(Self::NAME.as_raw_cstr()?, obj, handle) }; Ok(()) diff --git a/simics-rs/simics/src/api/traits/interface.rs b/simics-rs/simics/src/api/traits/interface.rs new file mode 100644 index 00000000..4edec2de --- /dev/null +++ b/simics-rs/simics/src/api/traits/interface.rs @@ -0,0 +1,48 @@ +// Copyright (C) 2024 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 + +//! Traits for interfaces + +use crate::{get_interface, register_interface, ConfClass, ConfObject, Result}; +use raw_cstr::AsRawCstr; + +/// A SIMICS interface containing a number of methods that can be called on an +/// object +pub trait Interface { + /// The inner interface type, which is a struct of nullable extern "C" function pointers + /// and must be default constructable as all NULL pointers (i.e. None values) + type InternalInterface: Default; + /// The type of the name of the interface, must be convertible to raw C string to pass to + /// the simulator + type Name: AsRawCstr; + + /// The name of the interface + const NAME: Self::Name; + + /// Create a new instance of this interface + fn new(obj: *mut ConfObject, interface: *mut Self::InternalInterface) -> Self; + + /// Register this interface for a type + fn register(cls: *mut ConfClass) -> Result<()> + where + Self: Sized, + { + register_interface::(cls)?; + Ok(()) + } + + /// Get this interface for an object that implements it + fn get(obj: *mut ConfObject) -> Result + where + Self: Sized, + { + get_interface::(obj) + } +} + +/// An object which has a SIMICS interface I +pub trait HasInterface +where + I: Interface, +{ +} diff --git a/simics-rs/simics/src/api/traits/mod.rs b/simics-rs/simics/src/api/traits/mod.rs new file mode 100644 index 00000000..a2c20e18 --- /dev/null +++ b/simics-rs/simics/src/api/traits/mod.rs @@ -0,0 +1,14 @@ +// Copyright (C) 2024 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 + +//! Useful traits implementable by API consumers + +pub mod class; +pub mod conf_object_traits; +pub mod hap; +pub mod interface; + +pub use class::*; +pub use conf_object_traits::*; +pub use hap::*; +pub use interface::*; diff --git a/modules/tsffs/src/simics/simics/src/api/util/alloc.rs b/simics-rs/simics/src/api/util/alloc.rs similarity index 91% rename from modules/tsffs/src/simics/simics/src/api/util/alloc.rs rename to simics-rs/simics/src/api/util/alloc.rs index 97c7893d..73d0808a 100644 --- a/modules/tsffs/src/simics/simics/src/api/util/alloc.rs +++ b/simics-rs/simics/src/api/util/alloc.rs @@ -1,10 +1,14 @@ -// Copyright (C) 2023 Intel Corporation +// Copyright (C) 2024 Intel Corporation // SPDX-License-Identifier: Apache-2.0 -use crate::api::sys::{mm_free, mm_zalloc}; -use crate::error::Result; +//! Allocator functionality used by Simics and which should be used by modules importing Simics +//! functionality to ensure no conflicts + +use crate::{ + sys::{mm_free, mm_realloc, mm_zalloc}, + Result, +}; use raw_cstr::raw_cstr; -use simics_api_sys::mm_realloc; use std::{alloc::GlobalAlloc, ffi::c_void, mem::transmute}; #[macro_export] diff --git a/modules/tsffs/src/simics/simics/src/api/util/mod.rs b/simics-rs/simics/src/api/util/mod.rs similarity index 74% rename from modules/tsffs/src/simics/simics/src/api/util/mod.rs rename to simics-rs/simics/src/api/util/mod.rs index 3a133c11..ab2e0844 100644 --- a/modules/tsffs/src/simics/simics/src/api/util/mod.rs +++ b/simics-rs/simics/src/api/util/mod.rs @@ -1,8 +1,7 @@ -// Copyright (C) 2023 Intel Corporation +// Copyright (C) 2024 Intel Corporation // SPDX-License-Identifier: Apache-2.0 //! Utility functionality provided by SIMICS pub mod alloc; - pub use alloc::*; diff --git a/simics-rs/simics/src/error/mod.rs b/simics-rs/simics/src/error/mod.rs new file mode 100644 index 00000000..5a245b95 --- /dev/null +++ b/simics-rs/simics/src/error/mod.rs @@ -0,0 +1,263 @@ +// Copyright (C) 2024 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 + +//! Error types that can be returned by the Simics crate + +use std::path::PathBuf; + +/// Result type for fallible functions in the SIMICS API +pub type Result = std::result::Result; + +#[allow(unused)] +#[derive(thiserror::Error, Debug)] +/// SIMICS errors, including internal and APIs used +pub enum Error { + #[error("AttrValue is {actual:?}, expected {expected:?} ({reason})")] + /// Attribute value type mismatch + AttrValueType { + /// The value that could not be converted + // value: crate::AttrValue, + /// The actual kind of the Attrvalue + actual: crate::AttrKind, + /// The expected kind of the AttrValue + expected: crate::AttrKind, + /// The reason the conversion failed + reason: String, + }, + #[error("Index {index} out of bounds of list length {length}")] + /// An attribute value list was indexed out of bounds + AttrValueListIndexOutOfBounds { + /// The requested index + index: usize, + /// The length of the list + length: usize, + }, + #[error("List of length {length} is too large")] + /// A list was too large, this is rare as the list size limit is extremely large. + AttrValueListTooLarge { + /// The actual length of the list + length: usize, + }, + #[error("Index {index} out of bounds of dictionary size {size}")] + /// An attribute value dictionary was indexed out of bounds + AttrValueDictIndexOutOfBounds { + /// The requested index + index: usize, + /// The size of the dictionary + size: usize, + }, + #[error("Dictionary of size {size} is too large")] + /// An attribute value dictionary was too large. This is rare as teh size limit is extremely + /// large. + AttrValueDictTooLarge { + /// The size of the dictionary + size: usize, + }, + #[error("Null data requires zero size")] + /// Null attribute value data construction attempted without a zero size + InvalidNullDataSize, + #[error("Error converting to from {ty} to AttrValue")] + /// Could not convert a type to an AttrValue + ToAttrValueConversionError { + /// The name of the type that could not be converted + ty: String, + }, + #[error("Error converting from to {ty}")] + /// Could not convert from an attribute value to a type + FromAttrValueConversionError { + /// The attribute value that could not be converted from + // value: crate::AttrValue, + /// The type the value could not be converted into + ty: String, + }, + #[error("Error converting to from {ty} to AttrValueType")] + /// Could not convert to an attribute value type from a type + ToAttrValueTypeConversionError { + /// The type that could not be converted to an attribute value type + ty: String, + }, + #[error("Error converting to from AttrValueType to {ty} ({reason})")] + /// Could not convert from an attribute value type to a type + FromAttrValueTypeConversionError { + /// The value that could not be converted from an attribute value type + // value: crate::AttrValueType, + /// The type that could not be converted from an attribute value type + ty: String, + /// The reason the conversion failed + reason: String, + }, + #[error("Error converting to from {ty} to AttrValue: {source}")] + /// Could not convert to an attribute value from a type, because of a nested error + NestedToAttrValueConversionError { + /// The type that could not be converted to an attribute value + ty: String, + /// The nested error that caused this conversion to fail + source: Box, + }, + #[error("Error converting AttrValue to {ty}: {source}")] + /// Could not convert from an attribute value to a type, because of a nested error + NestedFromAttrValueConversionError { + /// The value that could not be converted + // value: crate::AttrValue, + /// The type that the value could not be converted into + ty: String, + /// The nested error that caused this conversion to fail + source: Box, + }, + #[error("Error converting to from {ty} to AttrValueType: {source}")] + /// Could not convert to an attribute value type from a type, because of a nested error + NestedToAttrValueTypeConversionError { + /// The type that could not be converted to an attribute value type + ty: String, + /// The nested error that caused this conversion to fail + source: Box, + }, + #[error("Error converting to from AttrValueType to {ty}: {source}")] + /// could not convert from an attribute value type to a type, because of a nested error + NestedFromAttrValueTypeConversionError { + /// The type that could not be converted from an attribute value type + ty: String, + /// The nested error that caused this conversion to fail + source: Box, + }, + #[error("Key {key} not found")] + /// A key was not found in an attribute value dictionary + AttrValueDictMissingKey { + /// The key that was not found + key: String, + }, + #[error("AttrValue list is non-homogeneous")] + /// An attribute value list was non-homogeneous during an operation that required a + /// homogeneous list + NonHomogeneousList, + #[error("AttrValue dictionary is non-homogeneous")] + /// An attribute value dictionary was non-homogeneous during an operation that required a + /// homogeneous dictionary + NonHomogeneousDict, + #[error("Could not convert to string")] + /// Error converting a value to a string + ToString, + #[error("File {file} was not found in lookup")] + /// A file was not found + FileLookup { + /// The file that was not found + file: String, + }, + #[error("Failed to create class {name}: {message}")] + /// A class creation operation failed + CreateClass { + /// The name of the class to be created + name: String, + /// The error message + message: String, + }, + #[error("Failed to register {name}: {message}")] + /// Registration of an interface failed + RegisterInterface { + /// The name of the interface that failed to register + name: String, + /// The error message + message: String, + }, + #[error("Could not find class with name {name}")] + /// A class could not be found + ClassNotFound { + /// The name of the class that could not be found + name: String, + }, + #[error("Could not find object with name {name}")] + /// An object could not be found + ObjectNotFound { + /// The name of the object that could not be found + name: String, + }, + #[error("Could not create object: {message}")] + /// Object creation failed + CreateObject { + /// The reason object creation failed + message: String, + }, + #[error("No current checkpoint directory: {message}")] + /// A checkpoint directory was missing when it was required + CurrentCheckpointDir { + /// The source error message + message: String, + }, + #[error("No matching event found")] + /// An event matching a query was not found + NoEventFound, + #[error("No method {method} found on interface")] + /// An interface did not have a given method + NoInterfaceMethod { + /// The name of the missing method + method: String, + }, + #[error("{exception:?}: {msg}")] + /// An internal error that comes from the sys API. These exceptions are wrapped in a message + /// and reported as Rust errors + SimicsException { + /// The inner exception + exception: crate::SimException, + /// The string describing the exception + msg: String, + }, + #[error("This registration type is not supported for this hap")] + /// An error attempting to register a hap with an unsupported type + HapRegistrationType, + #[error("This deletion type is not supported for this hap")] + /// An error attempting to delete a hap with an unsupported type + HapDeleteType, + #[error("Value size {actual} is too large (expected <= {expected})")] + /// A value was too large + ValueTooLarge { + /// The expected size + expected: usize, + /// The actual size + actual: usize, + }, + #[error("{path:?} is not a directory")] + /// A path that should have been a directory was not + NotADirectory { + /// The path + path: PathBuf, + }, + #[error("Unrecognized extension for library type for file {library_type}")] + /// An extension of a library file was not recognized + UnrecognizedLibraryTypeExtension { + /// The file + library_type: String, + }, + #[error("File matching pattern {pattern} not found in directory {directory:?}")] + /// A file could not be found matching a given pattern + FileNotFoundInDirectory { + /// The directory that was searched + directory: PathBuf, + /// The pattern that was searched for + pattern: String, + }, + + // Transparently wrapped errors from std + #[error(transparent)] + /// A wrapped std::num::TryFromIntError + TryFromIntError(#[from] std::num::TryFromIntError), + #[error(transparent)] + /// A wrapped std::str::Utf8Error + Utf8Error(#[from] std::str::Utf8Error), + #[error(transparent)] + /// A wrapped std::ffi::NulError + NulError(#[from] std::ffi::NulError), + #[error(transparent)] + /// A wrapped std::io::Error + IoError(#[from] std::io::Error), + #[error(transparent)] + /// A wrapped std::path::StripPrefixError + RegexError(#[from] regex::Error), + // Anyhow error type to allow wrapping any other errors (e.g. from other crates in the + // workspace) + #[error(transparent)] + /// A wrapped anyhow::Error + Other(#[from] anyhow::Error), + #[error(transparent)] + /// A wrapped std::convert::Infallible + Infallible(#[from] std::convert::Infallible), +} diff --git a/simics-rs/simics/src/lib.rs b/simics-rs/simics/src/lib.rs new file mode 100644 index 00000000..e101bf54 --- /dev/null +++ b/simics-rs/simics/src/lib.rs @@ -0,0 +1,102 @@ +// Copyright (C) 2024 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 + +//! High level bindings to the SIMICS API in idiomatic Rust + +#![deny(clippy::unwrap_used)] +#![deny(missing_docs)] + +// NOTE: Unsafe code is allowed in the API, as it is wrapping a C API +pub mod api; +#[forbid(unsafe_code)] +pub mod error; +#[forbid(unsafe_code)] +pub mod log; +#[forbid(unsafe_code)] +pub mod util; + +use std::{any::Any, panic::PanicInfo}; + +// Glob re-export the api and utilities +pub use api::*; +pub use error::*; +// NOTE: the log module only contains macros, so we don't need to re-export it +pub use util::*; + +// Re-export simics_macro +pub use simics_macro::*; + +#[cfg(feature = "global-allocator")] +#[global_allocator] +/// All crates using the SIMICS API must also use the SIMICS allocator as their +/// global allocator, hence we set it here +static GLOBAL: SimicsAlloc = SimicsAlloc; + +/// Attempt to produce a `&str` message (with a default) +/// from a [`std::panic::catch_unwind`] payload. +/// See [module docs][crate] for usage. +pub fn panic_message(payload: &Box) -> &str { + imp::get_panic_message(payload.as_ref()).unwrap_or({ + // Copy what rustc does in the default panic handler + "Box" + }) +} + +/// Attempt to produce a `&str` message +/// from a [`std::panic::catch_unwind`] payload. +/// See [module docs][crate] for usage. +pub fn get_panic_message(payload: &Box) -> Option<&str> { + imp::get_panic_message(payload.as_ref()) +} + +/// Attempt to produce a `&str` message (with a default) +/// from a [`std::panic::PanicInfo`]. +/// See [module docs][crate] for usage. +pub fn panic_info_message<'pi>(panic_info: &'pi PanicInfo<'_>) -> &'pi str { + imp::get_panic_message(panic_info.payload()).unwrap_or({ + // Copy what rustc does in the default panic handler + "Box" + }) +} + +/// Attempt to produce a `&str` message (with a default) +/// from a [`std::panic::PanicInfo`]. +/// See [module docs][crate] for usage. +pub fn get_panic_info_message<'pi>(panic_info: &'pi PanicInfo<'_>) -> Option<&'pi str> { + imp::get_panic_message(panic_info.payload()) +} + +mod imp { + use std::any::Any; + + /// Attempt to produce a message from a borrowed `dyn Any`. Note that care must be taken + /// when calling this to avoid a `Box` being coerced to a `dyn Any` itself. + pub(super) fn get_panic_message(payload: &(dyn Any + Send)) -> Option<&str> { + // taken from: https://github.com/rust-lang/rust/blob/4b9f4b221b92193c7e95b1beb502c6eb32c3b613/library/std/src/panicking.rs#L194-L200 + match payload.downcast_ref::<&'static str>() { + Some(msg) => Some(*msg), + None => match payload.downcast_ref::() { + Some(msg) => Some(msg.as_str()), + // Copy what rustc does in the default panic handler + None => None, + }, + } + } +} + +/// Panic handler for Simics modules. This will log the panic message and then +/// call `SIM_quit` to exit the simulator (backtraces are not available in the +/// simulator, so we don't bother trying to print one). It is usually automatically +/// installed by any #[simics_init] attribute macro, but can be manually installed +/// using `std::panic::set_hook`. +pub fn panic_handler(info: &PanicInfo<'_>) -> ! { + let message = panic_info_message(info); + + if let Some(location) = info.location() { + eprintln!("{message}: {location}"); + } else { + eprintln!("{message}"); + } + + unsafe { crate::sys::SIM_quit(1) } +} diff --git a/modules/tsffs/src/simics/simics/src/log/mod.rs b/simics-rs/simics/src/log/mod.rs similarity index 85% rename from modules/tsffs/src/simics/simics/src/log/mod.rs rename to simics-rs/simics/src/log/mod.rs index 8b65bd73..48cf5abf 100644 --- a/modules/tsffs/src/simics/simics/src/log/mod.rs +++ b/simics-rs/simics/src/log/mod.rs @@ -1,7 +1,7 @@ -// Copyright (C) 2023 Intel Corporation +// Copyright (C) 2024 Intel Corporation // SPDX-License-Identifier: Apache-2.0 -//! Logging macros wrapping the underlying SIMICS logging functionality +//! Logging utilities for the Simics crate for use with the Simics logging API #[macro_export] /// Log an error message via the SIMICS logging API. If an object is provided, the @@ -12,7 +12,7 @@ /// # Examples /// /// ```rust,ignore -/// use simics::log::error; +/// use simics::error; /// /// let module_instance = get_object("object_name")?; /// let parameter = 0; @@ -31,11 +31,11 @@ /// the simulator is run with `-werror`. macro_rules! error { ($obj:expr, $fmt:literal $($args:tt)*) => { - simics::log!(simics::api::logging::LogLevel::Error, $obj, $fmt $($args)*) + simics::log!(simics::LogLevel::Error, $obj, $fmt $($args)*) }; ($fmt:literal $($args:tt)*) => { simics::log!( - simics::api::logging::LogLevel::Warn, + simics::LogLevel::Warn, $fmt $($args)* ) @@ -50,7 +50,7 @@ macro_rules! error { /// # Examples /// /// ```rust,ignore -/// use simics::log::warn; +/// use simics::warn; /// /// let module_instance = get_object("object_name")?; /// let parameter = 0; @@ -66,11 +66,11 @@ macro_rules! error { /// objects without static lifetimes, you should use the internal [`log_info`] API instead. macro_rules! warn { ($obj:expr, $fmt:literal $($args:tt)*) => { - simics::log!(simics::api::logging::LogLevel::Warn, $obj, $fmt $($args)*) + simics::log!(simics::LogLevel::Warn, $obj, $fmt $($args)*) }; ($fmt:literal $($args:tt)*) => { simics::log!( - simics::api::logging::LogLevel::Warn, + simics::LogLevel::Warn, $fmt $($args)* ) @@ -85,7 +85,7 @@ macro_rules! warn { /// # Examples /// /// ```rust,ignore -/// use simics::log::info; +/// use simics::info; /// /// let module_instance = get_object("object_name")?; /// let parameter = 0; @@ -101,11 +101,11 @@ macro_rules! warn { /// objects without static lifetimes, you should use the internal [`log_info`] API instead. macro_rules! info { ($obj:expr, $fmt:literal $($args:tt)*) => { - simics::log!(simics::api::logging::LogLevel::Info, $obj, $fmt $($args)*) + simics::log!(simics::LogLevel::Info, $obj, $fmt $($args)*) }; ($fmt:literal $($args:tt)*) => { simics::log!( - simics::api::logging::LogLevel::Info, + simics::LogLevel::Info, $fmt $($args)* ) @@ -120,7 +120,7 @@ macro_rules! info { /// # Examples /// /// ```rust,ignore -/// use simics::log::debug; +/// use simics::debug; /// /// let module_instance = get_object("object_name")?; /// let parameter = 0; @@ -136,11 +136,11 @@ macro_rules! info { /// objects without static lifetimes, you should use the internal [`log_info`] API instead. macro_rules! debug { ($obj:expr, $fmt:literal $($args:tt)*) => { - simics::log!(simics::api::logging::LogLevel::Debug, $obj, $fmt $($args)*) + simics::log!(simics::LogLevel::Debug, $obj, $fmt $($args)*) }; ($fmt:literal $($args:tt)*) => { simics::log!( - simics::api::logging::LogLevel::Debug, + simics::LogLevel::Debug, $fmt $($args)* ) @@ -155,7 +155,7 @@ macro_rules! debug { /// # Examples /// /// ```rust,ignore -/// use simics::log::trace; +/// use simics::trace; /// /// let module_instance = get_object("object_name")?; /// let parameter = 0; @@ -171,11 +171,11 @@ macro_rules! debug { /// objects without static lifetimes, you should use the internal [`log_info`] API instead. macro_rules! trace { ($obj:expr, $fmt:literal $($args:tt)*) => { - simics::log!(simics::api::logging::LogLevel::Trace, $obj, $fmt $($args)*) + simics::log!(simics::LogLevel::Trace, $obj, $fmt $($args)*) }; ($fmt:literal $($args:tt)*) => { simics::log!( - simics::api::logging::LogLevel::Trace, + simics::LogLevel::Trace, $fmt $($args)* ) @@ -191,7 +191,7 @@ macro_rules! trace { /// # Examples /// /// ```rust,ignore -/// use simics::log::log; +/// use simics::log; /// /// let module_instance = get_object("object_name")?; /// let parameter = 0; @@ -208,10 +208,10 @@ macro_rules! trace { macro_rules! log { ($level:expr, $obj:expr, $fmt:literal $($args:tt)*) => { match $level { - simics::api::logging::LogLevel::Error => { + simics::LogLevel::Error => { #[allow(unnecessary_cast)] - simics::api::logging::log_error( - $obj as *mut simics::api::ConfObject, + simics::log_error( + $obj as *mut simics::ConfObject, format!($fmt $($args)*), ).unwrap_or_else(|e| { panic!( @@ -223,9 +223,9 @@ macro_rules! log { } _ => { #[allow(unnecessary_cast)] - simics::api::logging::log_info( + simics::log_info( $level, - $obj as *mut simics::api::ConfObject, + $obj as *mut simics::ConfObject, format!($fmt $($args)*), ).unwrap_or_else(|e| { panic!( @@ -240,7 +240,7 @@ macro_rules! log { ($level:expr, $fmt:literal $($args:tt)*) => { simics::log!( $level, - simics::api::simulator::sim_conf_object::get_object("sim") + simics::get_object("sim") .unwrap_or_else(|e| panic!("Unable to get base sim object: {e}")), $fmt $($args)* diff --git a/modules/tsffs/src/simics/simics/src/util/mod.rs b/simics-rs/simics/src/util/mod.rs similarity index 65% rename from modules/tsffs/src/simics/simics/src/util/mod.rs rename to simics-rs/simics/src/util/mod.rs index 26dd9c55..261ecc47 100644 --- a/modules/tsffs/src/simics/simics/src/util/mod.rs +++ b/simics-rs/simics/src/util/mod.rs @@ -1,16 +1,15 @@ -// Copyright (C) 2023 Intel Corporation +// Copyright (C) 2024 Intel Corporation // SPDX-License-Identifier: Apache-2.0 //! Utility functionality to assist managing SIMICS projects -use anyhow::{anyhow, bail, ensure, Error, Result}; +use crate::{Error, Result}; use regex::Regex; use std::{ fs::{copy, create_dir_all}, path::{Path, PathBuf}, str::FromStr, }; -use tracing::debug; use walkdir::WalkDir; /// Copy the contents of one directory to another, recursively, overwriting files if they exist but @@ -20,18 +19,19 @@ where P: AsRef, { let src_dir = src_dir.as_ref().to_path_buf(); - ensure!(src_dir.is_dir(), "Source must be a directory"); + + if !src_dir.is_dir() { + return Err(Error::NotADirectory { + path: src_dir.clone(), + }); + } + let dst_dir = dst_dir.as_ref().to_path_buf(); + if !dst_dir.is_dir() { create_dir_all(&dst_dir)?; } - debug!( - "Copying directory contents from {} to {}", - src_dir.display(), - dst_dir.display() - ); - for (src, dst) in WalkDir::new(&src_dir) .into_iter() .filter_map(|p| p.ok()) @@ -49,11 +49,15 @@ where copy(&src, &dst)?; } } + Ok(()) } +/// A library file type pub enum LibraryType { + /// A static archive library Static, + /// A dynamic library Dynamic, } @@ -65,12 +69,15 @@ impl FromStr for LibraryType { } else if s.ends_with(".so") { Ok(Self::Dynamic) } else { - bail!("Unrecognized extension for library type from {}", s); + Err(Error::UnrecognizedLibraryTypeExtension { + library_type: s.to_string(), + }) } } } impl LibraryType { + /// The suffix of a library pub fn suffix(&self) -> String { match self { Self::Static => ".a".to_string(), @@ -79,15 +86,15 @@ impl LibraryType { } } -/// Locate a file recursively using a regex pattern in the simics base directory. If there are -/// multiple occurrences of a filename, it is undefined which will be returned. -pub fn find_file_in_dir(simics_base_dir: P, file_name_pattern: S) -> Result +/// Locate a file recursively using a regex pattern in directory. If there are multiple +/// occurrences of a filename, it is undefined which will be returned. +pub fn find_file_in_dir(directory: P, pattern: S) -> Result where P: AsRef, S: AsRef, { - let file_name_regex = Regex::new(file_name_pattern.as_ref())?; - let found_file = WalkDir::new(&simics_base_dir) + let file_name_regex = Regex::new(pattern.as_ref())?; + let found_file = WalkDir::new(&directory) .into_iter() .filter_map(|de| de.ok()) // is_ok_and is unstable ;_; @@ -105,22 +112,19 @@ where false } }) - .ok_or_else(|| { - anyhow!( - "Could not find {} in {}", - file_name_pattern.as_ref(), - simics_base_dir.as_ref().display() - ) + .ok_or_else(|| Error::FileNotFoundInDirectory { + directory: directory.as_ref().to_path_buf(), + pattern: pattern.as_ref().to_string(), })? .path() .to_path_buf(); - ensure!( - found_file.is_file(), - "No file {} found in {}", - file_name_pattern.as_ref(), - simics_base_dir.as_ref().display() - ); - - Ok(found_file) + if !found_file.is_file() { + Err(Error::FileNotFoundInDirectory { + directory: directory.as_ref().to_path_buf(), + pattern: pattern.as_ref().to_string(), + }) + } else { + Ok(found_file) + } } diff --git a/simics-rs/tests/packages/hello-world/Cargo.toml b/simics-rs/tests/packages/hello-world/Cargo.toml new file mode 100644 index 00000000..cbcbc9d6 --- /dev/null +++ b/simics-rs/tests/packages/hello-world/Cargo.toml @@ -0,0 +1,29 @@ +# Copyright (C) 2023 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + +[package] +name = "hello-world" +version = "0.1.0" +authors = ["Rowan Hart "] +edition = "2021" +description = "A simple module demonstrating the Intel Simics Simulator API" +documentation = "" +readme = "../README.md" +homepage = "" +repository = "" +license = "Apache-2.0" +keywords = ["simics", "simulator", "intel", "x86", "risc", "modeling"] +categories = [ + "simulation", + "virtualization", + "hardware-support", + "api-bindings", + "emulators", +] + +[lib] +crate-type = ["cdylib"] + +[dependencies] +simics = { version = "0.1.0", path = "../../../simics" } +ffi = "0.1.1" diff --git a/modules/tsffs/src/simics/simics/src/ispm/mod.rs b/simics-rs/tests/packages/hello-world/build.rs similarity index 58% rename from modules/tsffs/src/simics/simics/src/ispm/mod.rs rename to simics-rs/tests/packages/hello-world/build.rs index 0d1d6582..9d0c9a3f 100644 --- a/modules/tsffs/src/simics/simics/src/ispm/mod.rs +++ b/simics-rs/tests/packages/hello-world/build.rs @@ -1,6 +1,4 @@ // Copyright (C) 2023 Intel Corporation // SPDX-License-Identifier: Apache-2.0 -//! Re-export of ispm wrappers - -pub use ispm_wrapper::*; +fn main() {} diff --git a/simics-rs/tests/packages/hello-world/src/lib.rs b/simics-rs/tests/packages/hello-world/src/lib.rs new file mode 100644 index 00000000..2d65696a --- /dev/null +++ b/simics-rs/tests/packages/hello-world/src/lib.rs @@ -0,0 +1,65 @@ +// Copyright (C) 2023 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 + +//! A simple crate which has a class with multiple interfaces. This crate is a test case for: +//! +//! - Registering, signing, and loading a module +//! - Declaring and instantiating multiple classes +//! - Declaring and calling functions from multiple interfaces + +use simics::{ + api::{ClassCreate, Interface}, + class, interface, simics_init, FromConfObject, +}; + +#[class(name = "HelloWorld")] +#[derive(FromConfObject, Default)] +struct HelloWorld { + #[class(attribute)] + pub message: String, +} + +#[interface(name = "HelloWorldInterface")] +impl HelloWorld { + fn say(&self) { + println!("{}", self.message); + } +} + +#[interface(name = "HelloWorldInterface2")] +impl HelloWorld { + fn say2(&self) { + println!("test: {}", self.message); + } +} + +#[class(name = "HelloWorld2")] +#[derive(FromConfObject, Default)] +struct HelloWorld2 { + #[class(attribute)] + pub message: String, +} + +#[interface(name = "HelloWorld2Interface")] +impl HelloWorld2 { + fn say(&self) { + println!("{}", self.message); + } +} + +#[interface(name = "HelloWorld2Interface2")] +impl HelloWorld2 { + fn say2(&self) { + println!("test: {}", self.message); + } +} + +#[simics_init(name = "HelloWorld", class = "HelloWorld", class = "HelloWorld2")] +fn init() { + let hw = HelloWorld::create().expect("Failed to create class"); + HelloWorldInterface::register(hw).expect("Failed to register class interface"); + HelloWorldInterface2::register(hw).expect("Failed to register class interface"); + let hw = HelloWorld2::create().expect("Failed to create class"); + HelloWorld2Interface::register(hw).expect("Failed to register class interface"); + HelloWorld2Interface2::register(hw).expect("Failed to register class interface"); +} diff --git a/simics-rs/tests/test-packages/Cargo.toml b/simics-rs/tests/test-packages/Cargo.toml new file mode 100644 index 00000000..4bdb4de2 --- /dev/null +++ b/simics-rs/tests/test-packages/Cargo.toml @@ -0,0 +1,30 @@ +# Copyright (C) 2024 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + +[package] +name = "test-packages" +version = "0.1.0" +authors = ["Rowan Hart "] +edition = "2021" +description = "Intel Simics Simulator package tests" +documentation = "" +readme = "../README.md" +homepage = "" +repository = "" +license = "Apache-2.0" +keywords = ["simics", "simulator", "intel", "x86", "risc", "modeling"] +categories = [ + "simulation", + "virtualization", + "hardware-support", + "api-bindings", + "emulators", +] + +[dependencies] +ispm-wrapper = { version = "0.1.0", path = "../../ispm-wrapper" } +simics-test = { version = "0.1.0", path = "../../simics-test" } +anyhow = "1.0.80" +command-ext = "0.1.2" +indoc = "2.0.4" +versions = { version = "6.1.0", features = ["serde"] } diff --git a/simics-rs/tests/test-packages/build.rs b/simics-rs/tests/test-packages/build.rs new file mode 100644 index 00000000..82c48f6c --- /dev/null +++ b/simics-rs/tests/test-packages/build.rs @@ -0,0 +1,4 @@ +// Copyright (C) 2024 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 + +fn main() {} diff --git a/simics-rs/tests/test-packages/src/lib.rs b/simics-rs/tests/test-packages/src/lib.rs new file mode 100644 index 00000000..ba8cfada --- /dev/null +++ b/simics-rs/tests/test-packages/src/lib.rs @@ -0,0 +1,7 @@ +// Copyright (C) 2024 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 + +pub const CARGO_MANIFEST_DIR: &str = env!("CARGO_MANIFEST_DIR"); + +#[test] +fn test_sanity() {} diff --git a/simics-rs/tests/test-packages/tests/hello_world.rs b/simics-rs/tests/test-packages/tests/hello_world.rs new file mode 100644 index 00000000..d2c69294 --- /dev/null +++ b/simics-rs/tests/test-packages/tests/hello_world.rs @@ -0,0 +1,37 @@ +// Copyright (C) 2024 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 + +use anyhow::{anyhow, Result}; +use indoc::indoc; +use ispm_wrapper::data::ProjectPackage; +use simics_test::TestEnvSpec; +use std::path::PathBuf; +use test_packages::CARGO_MANIFEST_DIR; +use versions::Versioning; + +#[test] +fn test_hello_world() -> Result<()> { + TestEnvSpec::builder() + .package_crates([PathBuf::from(CARGO_MANIFEST_DIR).join("../packages/hello-world")]) + .extra_packages([ProjectPackage::builder() + .package_number(1000) + .version(Versioning::new("latest").ok_or_else(|| anyhow!("Invalid version"))?) + .build()]) + .name("hello-world") + .cargo_target_tmpdir(env!("CARGO_TARGET_TMPDIR")) + .build() + .to_env()? + .test(indoc! {r#" + load-module HelloWorld + @hw = SIM_create_object(SIM_get_class("HelloWorld"), "hw", []) + @hw.message = "Hello, World!" + @hw.iface.HelloWorldInterface.say() + @hw.iface.HelloWorldInterface2.say2() + @hw2 = SIM_create_object(SIM_get_class("HelloWorld2"), "hw2", []) + @hw2.message = "Hello, World! (Again)" + @hw2.iface.HelloWorld2Interface.say() + @hw2.iface.HelloWorld2Interface2.say2() + "#})?; + + Ok(()) +} diff --git a/modules/tsffs/src/tsffs/src/arch/mod.rs b/src/arch/mod.rs similarity index 84% rename from modules/tsffs/src/tsffs/src/arch/mod.rs rename to src/arch/mod.rs index 849c7ebb..606abe2d 100644 --- a/modules/tsffs/src/tsffs/src/arch/mod.rs +++ b/src/arch/mod.rs @@ -1,4 +1,4 @@ -// Copyright (C) 2023 Intel Corporation +// Copyright (C) 2024 Intel Corporation // SPDX-License-Identifier: Apache-2.0 //! Architecture specific data and definitions @@ -20,19 +20,19 @@ use simics::{ }; use std::{fmt::Debug, str::FromStr}; -pub mod arc; -pub mod arm; -pub mod arm_thumb2; -pub mod armv8; pub mod risc_v; pub mod x86; pub mod x86_64; #[derive(Debug, Clone)] -pub enum ArchitectureHint { +/// An architecture hint that can be parsed from a string +pub(crate) enum ArchitectureHint { + /// The architecture is x86_64 X86_64, + /// The architecture is i386 I386, - RISCV, + /// The architecture is RISCV + Riscv, } impl FromStr for ArchitectureHint { @@ -42,7 +42,7 @@ impl FromStr for ArchitectureHint { Ok(match s { "x86-64" => Self::X86_64, "i386" | "i486" | "i586" | "i686" | "ia-32" | "x86" => Self::I386, - "riscv" | "risc-v" | "riscv32" | "riscv64" => Self::RISCV, + "riscv" | "risc-v" | "riscv32" | "riscv64" => Self::Riscv, _ => bail!("Unknown hint: {}", s), }) } @@ -53,13 +53,14 @@ impl From for AttrValueType { match val { ArchitectureHint::X86_64 => "x86-64", ArchitectureHint::I386 => "i386", - ArchitectureHint::RISCV => "risc-v", + ArchitectureHint::Riscv => "risc-v", } .into() } } impl ArchitectureHint { + /// Return the architecture for the given CPU object pub fn architecture(&self, cpu: *mut ConfObject) -> Result { Ok(match self { ArchitectureHint::X86_64 => { @@ -68,17 +69,20 @@ impl ArchitectureHint { ArchitectureHint::I386 => { Architecture::I386(X86ArchitectureOperations::new_unchecked(cpu)?) } - ArchitectureHint::RISCV => { - Architecture::RISCV(RISCVArchitectureOperations::new_unchecked(cpu)?) + ArchitectureHint::Riscv => { + Architecture::Riscv(RISCVArchitectureOperations::new_unchecked(cpu)?) } }) } } -pub enum Architecture { +pub(crate) enum Architecture { + /// The x86_64 architecture X86_64(X86_64ArchitectureOperations), + /// The i386 architecture I386(X86ArchitectureOperations), - RISCV(RISCVArchitectureOperations), + /// The RISC-V architecture + Riscv(RISCVArchitectureOperations), } impl Debug for Architecture { @@ -89,31 +93,52 @@ impl Debug for Architecture { match self { Architecture::X86_64(_) => "x86-64", Architecture::I386(_) => "i386", - Architecture::RISCV(_) => "risc-v", + Architecture::Riscv(_) => "risc-v", } ) } } /// Each architecture must provide a struct that performs architecture-specific operations pub trait ArchitectureOperations { + /// The register for this architecture which contains the address of the testcase buffer + /// when using the magic start functionality const DEFAULT_TESTCASE_AREA_REGISTER_NAME: &'static str; + /// The register for this architecture which contains the pointer to the size of the + /// testcase buffer when using the magic start functionality const DEFAULT_TESTCASE_SIZE_REGISTER_NAME: &'static str; + /// Create a new instance of the architecture operations fn new(cpu: *mut ConfObject) -> Result where Self: Sized; + + /// Create a new instance of the architecture operations without checking the CPU fn new_unchecked(_: *mut ConfObject) -> Result where Self: Sized, { bail!("Invalid CPU"); } + + /// Return the saved CPU object for this archtiecture fn cpu(&self) -> *mut ConfObject; + + /// Return a mutable reference to the disassembler for this architecture fn disassembler(&mut self) -> &mut dyn TracerDisassembler; + + /// Return a mutable reference to the interface for reading and writing registers fn int_register(&mut self) -> &mut IntRegisterInterface; + + /// Return a mutable reference to the interface for reading processor information fn processor_info_v2(&mut self) -> &mut ProcessorInfoV2Interface; + + /// Return a mutable reference to the interface for querying CPU instructions fn cpu_instruction_query(&mut self) -> &mut CpuInstructionQueryInterface; + + /// Return a mutable reference to the interface for subscribing to CPU instrumentation events fn cpu_instrumentation_subscribe(&mut self) -> &mut CpuInstrumentationSubscribeInterface; + + /// Return a mutable reference to the interface for querying CPU cycles and timing fn cycle(&mut self) -> &mut CycleInterface; /// Returns the address and whether the address is virtual for the testcase buffer used by @@ -186,6 +211,8 @@ pub trait ArchitectureOperations { .build()) } + /// Returns the address and whether the address is virtual for the testcase buffer used by + /// the manual start functionality fn get_manual_start_buffer( &mut self, buffer_address: GenericAddress, @@ -258,7 +285,7 @@ pub trait ArchitectureOperations { let addr_size = self.processor_info_v2().get_logical_address_width()? as usize / u8::BITS as usize; let initial_size = - size.initial_size_ref() + size.initial_size .ok_or_else(|| anyhow!("Expected initial size for start"))? as usize; let physical_memory = self.processor_info_v2().get_physical_memory()?; @@ -314,7 +341,7 @@ impl ArchitectureOperations for Architecture { } else if let Ok(x86) = X86ArchitectureOperations::new(cpu) { Ok(Self::I386(x86)) } else if let Ok(riscv) = RISCVArchitectureOperations::new(cpu) { - Ok(Self::RISCV(riscv)) + Ok(Self::Riscv(riscv)) } else { bail!("Unsupported architecture"); } @@ -324,7 +351,7 @@ impl ArchitectureOperations for Architecture { match self { Architecture::X86_64(x86_64) => x86_64.cpu(), Architecture::I386(i386) => i386.cpu(), - Architecture::RISCV(riscv) => riscv.cpu(), + Architecture::Riscv(riscv) => riscv.cpu(), } } @@ -332,7 +359,7 @@ impl ArchitectureOperations for Architecture { match self { Architecture::X86_64(x86_64) => x86_64.disassembler(), Architecture::I386(i386) => i386.disassembler(), - Architecture::RISCV(riscv) => riscv.disassembler(), + Architecture::Riscv(riscv) => riscv.disassembler(), } } @@ -340,7 +367,7 @@ impl ArchitectureOperations for Architecture { match self { Architecture::X86_64(x86_64) => x86_64.int_register(), Architecture::I386(i386) => i386.int_register(), - Architecture::RISCV(riscv) => riscv.int_register(), + Architecture::Riscv(riscv) => riscv.int_register(), } } @@ -348,7 +375,7 @@ impl ArchitectureOperations for Architecture { match self { Architecture::X86_64(x86_64) => x86_64.processor_info_v2(), Architecture::I386(i386) => i386.processor_info_v2(), - Architecture::RISCV(riscv) => riscv.processor_info_v2(), + Architecture::Riscv(riscv) => riscv.processor_info_v2(), } } @@ -356,7 +383,7 @@ impl ArchitectureOperations for Architecture { match self { Architecture::X86_64(x86_64) => x86_64.cpu_instruction_query(), Architecture::I386(i386) => i386.cpu_instruction_query(), - Architecture::RISCV(riscv) => riscv.cpu_instruction_query(), + Architecture::Riscv(riscv) => riscv.cpu_instruction_query(), } } @@ -364,7 +391,7 @@ impl ArchitectureOperations for Architecture { match self { Architecture::X86_64(x86_64) => x86_64.cpu_instrumentation_subscribe(), Architecture::I386(i386) => i386.cpu_instrumentation_subscribe(), - Architecture::RISCV(riscv) => riscv.cpu_instrumentation_subscribe(), + Architecture::Riscv(riscv) => riscv.cpu_instrumentation_subscribe(), } } @@ -372,7 +399,7 @@ impl ArchitectureOperations for Architecture { match self { Architecture::X86_64(x86_64) => x86_64.cycle(), Architecture::I386(i386) => i386.cycle(), - Architecture::RISCV(riscv) => riscv.cycle(), + Architecture::Riscv(riscv) => riscv.cycle(), } } @@ -380,7 +407,7 @@ impl ArchitectureOperations for Architecture { match self { Architecture::X86_64(x86_64) => x86_64.get_magic_start_buffer(), Architecture::I386(i386) => i386.get_magic_start_buffer(), - Architecture::RISCV(riscv) => riscv.get_magic_start_buffer(), + Architecture::Riscv(riscv) => riscv.get_magic_start_buffer(), } } @@ -388,7 +415,7 @@ impl ArchitectureOperations for Architecture { match self { Architecture::X86_64(x86_64) => x86_64.get_magic_start_size(), Architecture::I386(i386) => i386.get_magic_start_size(), - Architecture::RISCV(riscv) => riscv.get_magic_start_size(), + Architecture::Riscv(riscv) => riscv.get_magic_start_size(), } } @@ -400,7 +427,7 @@ impl ArchitectureOperations for Architecture { match self { Architecture::X86_64(x86_64) => x86_64.get_manual_start_buffer(buffer_address, virt), Architecture::I386(i386) => i386.get_manual_start_buffer(buffer_address, virt), - Architecture::RISCV(riscv) => riscv.get_manual_start_buffer(buffer_address, virt), + Architecture::Riscv(riscv) => riscv.get_manual_start_buffer(buffer_address, virt), } } @@ -412,7 +439,7 @@ impl ArchitectureOperations for Architecture { match self { Architecture::X86_64(x86_64) => x86_64.get_manual_start_size(size_address, virt), Architecture::I386(i386) => i386.get_manual_start_size(size_address, virt), - Architecture::RISCV(riscv) => riscv.get_manual_start_size(size_address, virt), + Architecture::Riscv(riscv) => riscv.get_manual_start_size(size_address, virt), } } @@ -425,7 +452,7 @@ impl ArchitectureOperations for Architecture { match self { Architecture::X86_64(x86_64) => x86_64.write_start(testcase, buffer, size), Architecture::I386(i386) => i386.write_start(testcase, buffer, size), - Architecture::RISCV(riscv) => riscv.write_start(testcase, buffer, size), + Architecture::Riscv(riscv) => riscv.write_start(testcase, buffer, size), } } @@ -433,7 +460,7 @@ impl ArchitectureOperations for Architecture { match self { Architecture::X86_64(x86_64) => x86_64.trace_pc(instruction_query), Architecture::I386(i386) => i386.trace_pc(instruction_query), - Architecture::RISCV(riscv) => riscv.trace_pc(instruction_query), + Architecture::Riscv(riscv) => riscv.trace_pc(instruction_query), } } @@ -441,7 +468,7 @@ impl ArchitectureOperations for Architecture { match self { Architecture::X86_64(x86_64) => x86_64.trace_cmp(instruction_query), Architecture::I386(i386) => i386.trace_cmp(instruction_query), - Architecture::RISCV(riscv) => riscv.trace_cmp(instruction_query), + Architecture::Riscv(riscv) => riscv.trace_cmp(instruction_query), } } } diff --git a/modules/tsffs/src/tsffs/src/arch/risc_v.rs b/src/arch/risc_v.rs similarity index 99% rename from modules/tsffs/src/tsffs/src/arch/risc_v.rs rename to src/arch/risc_v.rs index 127d68c4..8a64ae35 100644 --- a/modules/tsffs/src/tsffs/src/arch/risc_v.rs +++ b/src/arch/risc_v.rs @@ -1,6 +1,8 @@ -// Copyright (C) 2023 Intel Corporation +// Copyright (C) 2024 Intel Corporation // SPDX-License-Identifier: Apache-2.0 +//! Architecture-specific implementation for RISCV architecture + use anyhow::{anyhow, bail, Result}; use libafl::prelude::CmpValues; use raw_cstr::AsRawCstr; @@ -31,7 +33,7 @@ pub const DEFAULT_TESTCASE_AREA_REGISTER_NAME: &str = "x10"; /// canonical name pub const DEFAULT_TESTCASE_SIZE_REGISTER_NAME: &str = "x11"; -pub struct RISCVArchitectureOperations { +pub(crate) struct RISCVArchitectureOperations { cpu: *mut ConfObject, disassembler: Disassembler, int_register: IntRegisterInterface, @@ -430,7 +432,7 @@ impl RISCVArchitectureOperations { } } -pub struct Disassembler { +pub(crate) struct Disassembler { decoder: RiscVDecoder, last: Option, } diff --git a/modules/tsffs/src/tsffs/src/arch/x86.rs b/src/arch/x86.rs similarity index 94% rename from modules/tsffs/src/tsffs/src/arch/x86.rs rename to src/arch/x86.rs index 104124cd..5cba75c2 100644 --- a/modules/tsffs/src/tsffs/src/arch/x86.rs +++ b/src/arch/x86.rs @@ -1,6 +1,8 @@ -// Copyright (C) 2023 Intel Corporation +// Copyright (C) 2024 Intel Corporation // SPDX-License-Identifier: Apache-2.0 +//! Architecture-specific implementation for x86 architecture + use std::{ffi::CStr, mem::size_of, slice::from_raw_parts}; use super::ArchitectureOperations; @@ -31,91 +33,7 @@ pub const DEFAULT_TESTCASE_AREA_REGISTER_NAME: &str = "edi"; /// to contain the actual size of the current testcase. pub const DEFAULT_TESTCASE_SIZE_REGISTER_NAME: &str = "esi"; -pub mod exceptions { - /// Division errors generated by DIV and IDIV instructions - pub const DIVIDE_ERROR: i64 = 0; - pub const DEBUG: i64 = 1; - pub const NMI_INTERRUPT: i64 = 2; - /// INT3 instructions - pub const BREAKPOINT: i64 = 3; - /// INT0 instructions - pub const OVERFLOW: i64 = 4; - /// BOUND instruction - pub const BOUND: i64 = 5; - /// UD instruction or reserved opcode - pub const INVALID_OPCODE: i64 = 6; - /// Floating point or WAIT/FWAIT instruction (no math coprocessor) - pub const DEVICE_NOT_AVAILABLE: i64 = 7; - /// Any instruction that can generate an exception, NMI, or INTR can cause a double fault, - /// i.e. on page miss twice. - pub const DOUBLE_FAULT: i64 = 8; - /// Floating point instruction overrun coprocessor segment - pub const COPROCESSOR_SEGMENT_OVERRUN: i64 = 9; - /// Invalid task switch or TSS access - pub const INVALID_TSS: i64 = 10; - /// Error loading segment registers or accessing system segments - pub const SEGMENT_NOT_PRESENT: i64 = 11; - /// Stack operations and SS register loads in segmented operation mode - pub const STACK_SEGMENT_FAULT: i64 = 12; - /// Error during memory reference or other protection check - pub const GENERAL_PROTECTION: i64 = 13; - /// Page fault - pub const PAGE_FAULT: i64 = 14; - // NOTE: 15 reserved - /// Error in floating point math or WAIT/FWAIT instruction - pub const FLOATING_POINT_ERROR: i64 = 16; - /// Error in data alignment - pub const ALIGNMENT_CHECK: i64 = 17; - /// Error code and source are model dependent - pub const MACHINE_CHECK: i64 = 18; - /// Exception in SIMD floating point math - pub const SIMD_FLOATING_POINT_EXCEPTION: i64 = 19; - /// Extended page table/VT exception - pub const VIRTUALIZATION_EXCEPTION: i64 = 20; - /// Missing ENDBRANCH instruction at the target of an indirect call or jump. Generated by - /// RET, IRET, RSTORSSP, and SETSSBSY instruction when CET is enabled. - pub const CONTROL_PROTECTION_EXCEPTION: i64 = 21; - // NOTE: 22-31 reserved - // NOTE: 32-255 are maskable interrupts. - - #[repr(i64)] - pub enum Exception { - DivideError = 1, - Debug, - NmiInterrupt, - Breakpoint, - Overflow, - Bound, - InvalidOpcode, - DeviceNotAvailable, - DoubleFault, - CoprocessorSegmentOverrun, - InvalidTss, - SegmentNotPresent, - StackSegmentFault, - GeneralProtection, - PageFault, - Reserved0, - FloatingPointError, - AlignmentCheck, - MachineCheck, - SimdFloatingPointException, - VirtualizationException, - ControlProtectionException, - Other(i64), - } - - impl From for i64 { - fn from(value: Exception) -> Self { - match value { - Exception::Other(i) => i, - _ => i64::from(value), - } - } - } -} - -pub struct X86ArchitectureOperations { +pub(crate) struct X86ArchitectureOperations { cpu: *mut ConfObject, disassembler: Disassembler, int_register: IntRegisterInterface, @@ -428,7 +346,7 @@ impl ArchitectureOperations for X86ArchitectureOperations { let physical_memory = self.processor_info_v2().get_physical_memory()?; let initial_size = - size.initial_size_ref() + size.initial_size .ok_or_else(|| anyhow!("Expected initial size for start"))? as usize; trace!( @@ -1039,7 +957,7 @@ impl X86ArchitectureOperations { } } -pub struct Disassembler { +pub(crate) struct Disassembler { decoder: InstDecoder, last: Option, } diff --git a/modules/tsffs/src/tsffs/src/arch/x86_64.rs b/src/arch/x86_64.rs similarity index 93% rename from modules/tsffs/src/tsffs/src/arch/x86_64.rs rename to src/arch/x86_64.rs index 021039f7..74fa47cd 100644 --- a/modules/tsffs/src/tsffs/src/arch/x86_64.rs +++ b/src/arch/x86_64.rs @@ -1,6 +1,8 @@ -// Copyright (C) 2023 Intel Corporation +// Copyright (C) 2024 Intel Corporation // SPDX-License-Identifier: Apache-2.0 +//! Architecture-specific implementation for x86-64 architecture + use std::{ffi::CStr, mem::size_of, slice::from_raw_parts}; use crate::{ @@ -28,91 +30,7 @@ pub const DEFAULT_TESTCASE_AREA_REGISTER_NAME: &str = "rdi"; /// to contain the actual size of the current testcase. pub const DEFAULT_TESTCASE_SIZE_REGISTER_NAME: &str = "rsi"; -pub mod exceptions { - /// Division errors generated by DIV and IDIV instructions - pub const DIVIDE_ERROR: i64 = 0; - pub const DEBUG: i64 = 1; - pub const NMI_INTERRUPT: i64 = 2; - /// INT3 instructions - pub const BREAKPOINT: i64 = 3; - /// INT0 instructions - pub const OVERFLOW: i64 = 4; - /// BOUND instruction - pub const BOUND: i64 = 5; - /// UD instruction or reserved opcode - pub const INVALID_OPCODE: i64 = 6; - /// Floating point or WAIT/FWAIT instruction (no math coprocessor) - pub const DEVICE_NOT_AVAILABLE: i64 = 7; - /// Any instruction that can generate an exception, NMI, or INTR can cause a double fault, - /// i.e. on page miss twice. - pub const DOUBLE_FAULT: i64 = 8; - /// Floating point instruction overrun coprocessor segment - pub const COPROCESSOR_SEGMENT_OVERRUN: i64 = 9; - /// Invalid task switch or TSS access - pub const INVALID_TSS: i64 = 10; - /// Error loading segment registers or accessing system segments - pub const SEGMENT_NOT_PRESENT: i64 = 11; - /// Stack operations and SS register loads in segmented operation mode - pub const STACK_SEGMENT_FAULT: i64 = 12; - /// Error during memory reference or other protection check - pub const GENERAL_PROTECTION: i64 = 13; - /// Page fault - pub const PAGE_FAULT: i64 = 14; - // NOTE: 15 reserved - /// Error in floating point math or WAIT/FWAIT instruction - pub const FLOATING_POINT_ERROR: i64 = 16; - /// Error in data alignment - pub const ALIGNMENT_CHECK: i64 = 17; - /// Error code and source are model dependent - pub const MACHINE_CHECK: i64 = 18; - /// Exception in SIMD floating point math - pub const SIMD_FLOATING_POINT_EXCEPTION: i64 = 19; - /// Extended page table/VT exception - pub const VIRTUALIZATION_EXCEPTION: i64 = 20; - /// Missing ENDBRANCH instruction at the target of an indirect call or jump. Generated by - /// RET, IRET, RSTORSSP, and SETSSBSY instruction when CET is enabled. - pub const CONTROL_PROTECTION_EXCEPTION: i64 = 21; - // NOTE: 22-31 reserved - // NOTE: 32-255 are maskable interrupts. - - #[repr(i64)] - pub enum Exception { - DivideError = 1, - Debug, - NmiInterrupt, - Breakpoint, - Overflow, - Bound, - InvalidOpcode, - DeviceNotAvailable, - DoubleFault, - CoprocessorSegmentOverrun, - InvalidTss, - SegmentNotPresent, - StackSegmentFault, - GeneralProtection, - PageFault, - Reserved0, - FloatingPointError, - AlignmentCheck, - MachineCheck, - SimdFloatingPointException, - VirtualizationException, - ControlProtectionException, - Other(i64), - } - - impl From for i64 { - fn from(value: Exception) -> Self { - match value { - Exception::Other(i) => i, - _ => i64::from(value), - } - } - } -} - -pub struct X86_64ArchitectureOperations { +pub(crate) struct X86_64ArchitectureOperations { cpu: *mut ConfObject, disassembler: Disassembler, int_register: IntRegisterInterface, @@ -797,7 +715,7 @@ impl X86_64ArchitectureOperations { } } -pub struct Disassembler { +pub(crate) struct Disassembler { decoder: InstDecoder, last: Option, } diff --git a/src/fuzzer/feedbacks/mod.rs b/src/fuzzer/feedbacks/mod.rs new file mode 100644 index 00000000..3f7b197d --- /dev/null +++ b/src/fuzzer/feedbacks/mod.rs @@ -0,0 +1,174 @@ +// Copyright (C) 2024 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 + +use libafl::{ + events::EventFirer, + feedbacks::{Feedback, HasObserverName, IsNovel, MapFeedback, MapFeedbackMetadata, Reducer}, + inputs::HasTargetBytes, + observers::UsesObserver, + prelude::{ExitKind, MapObserver, Observer, ObserversTuple, UsesInput}, + state::{HasCorpus, HasNamedMetadata, State}, +}; +use libafl_bolts::{AsIter, AsSlice, Named}; +use serde::{de::DeserializeOwned, Deserialize, Serialize}; +use std::{ + fmt::Debug, + sync::{mpsc::Sender, OnceLock}, +}; + +use super::messages::FuzzerMessage; + +#[derive(Clone, Debug)] +pub(crate) struct ReportingMapFeedback { + /// The base map + base: MapFeedback, + /// A sender to send textual reports to + sender: OnceLock>, +} + +impl UsesObserver for ReportingMapFeedback +where + S: UsesInput, + O: Observer, +{ + type Observer = O; +} + +impl Feedback for ReportingMapFeedback +where + N: IsNovel, + O: MapObserver + for<'it> AsIter<'it, Item = T>, + R: Reducer, + S: State + HasNamedMetadata + HasCorpus, + S::Input: HasTargetBytes, + T: Default + Copy + Serialize + for<'de> Deserialize<'de> + PartialEq + Debug + 'static, +{ + fn is_interesting( + &mut self, + state: &mut S, + manager: &mut EM, + input: &::Input, + observers: &OT, + exit_kind: &ExitKind, + ) -> Result + where + EM: EventFirer, + OT: ObserversTuple, + { + let is_interesting = self + .base + .is_interesting(state, manager, input, observers, exit_kind)?; + + if is_interesting { + let observer = observers + .match_name::(self.observer_name()) + .ok_or_else(|| { + libafl::Error::unknown("Failed to get observer from observers tuple") + })?; + let map_state = state + .named_metadata_map_mut() + .get_mut::>(self.name()) + .ok_or_else(|| libafl::Error::unknown("Failed to get metadata"))?; + let len = observer.len(); + if map_state.history_map.len() < len { + map_state.history_map.resize(len, observer.initial()); + } + + let history_map = map_state.history_map.as_slice(); + + let initial = observer.initial(); + + let mut interesting_indices = vec![]; + + for (i, item) in observer + .as_iter() + .copied() + .enumerate() + .filter(|(_, item)| *item != initial) + { + let existing = unsafe { *history_map.get_unchecked(i) }; + let reduced = R::reduce(existing, item); + if N::is_novel(existing, reduced) { + interesting_indices.push(i); + } + } + + self.sender + .get_mut() + .and_then(|sender| { + sender + .send(FuzzerMessage::Interesting { + indices: interesting_indices, + input: input.target_bytes().as_slice().to_vec(), + }) + .ok() + }) + .ok_or_else(|| libafl::Error::unknown("Failed to send report"))?; + } + + Ok(is_interesting) + } + + fn init_state(&mut self, state: &mut S) -> Result<(), libafl::Error> { + self.base.init_state(state) + } + + fn append_metadata( + &mut self, + state: &mut S, + observers: &OT, + testcase: &mut libafl::prelude::Testcase<::Input>, + ) -> Result<(), libafl::Error> + where + OT: ObserversTuple, + { + self.base.append_metadata(state, observers, testcase) + } + + fn discard_metadata(&mut self, state: &mut S, input: &::Input) -> Result<(), libafl::Error> { + self.base.discard_metadata(state, input) + } +} + +impl Named for ReportingMapFeedback { + #[inline] + fn name(&self) -> &str { + self.base.name() + } +} + +impl HasObserverName for ReportingMapFeedback +where + T: PartialEq + Default + Copy + 'static + Serialize + DeserializeOwned + Debug, + R: Reducer, + N: IsNovel, + O: MapObserver, + for<'it> O: AsIter<'it, Item = T>, + S: HasNamedMetadata, +{ + #[inline] + fn observer_name(&self) -> &str { + self.base.observer_name() + } +} + +impl ReportingMapFeedback +where + T: PartialEq + Default + Copy + 'static + Serialize + DeserializeOwned + Debug, + R: Reducer, + O: MapObserver, + for<'it> O: AsIter<'it, Item = T>, + N: IsNovel, + S: UsesInput + HasNamedMetadata, +{ + #[must_use] + pub fn new(base: MapFeedback, sender: Sender) -> Self { + let sender = { + let lock = OnceLock::new(); + // NOTE: This is ok because initializing a just-created lock is infallible + lock.set(sender).expect("Failed to set sender"); + lock + }; + Self { base, sender } + } +} diff --git a/src/fuzzer/messages/mod.rs b/src/fuzzer/messages/mod.rs new file mode 100644 index 00000000..c8586e90 --- /dev/null +++ b/src/fuzzer/messages/mod.rs @@ -0,0 +1,10 @@ +// Copyright (C) 2024 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 + +use serde::Serialize; + +#[derive(Serialize, Debug, Clone)] +pub(crate) enum FuzzerMessage { + String(String), + Interesting { indices: Vec, input: Vec }, +} diff --git a/src/fuzzer/mod.rs b/src/fuzzer/mod.rs new file mode 100644 index 00000000..b5fe9e37 --- /dev/null +++ b/src/fuzzer/mod.rs @@ -0,0 +1,480 @@ +// Copyright (C) 2024 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 + +//! Fuzzing engine implementation, configure and run LibAFL on a separate thread + +use crate::{ + fuzzer::{feedbacks::ReportingMapFeedback, messages::FuzzerMessage}, + Tsffs, +}; +use anyhow::{anyhow, Result}; +use libafl::{ + feedback_or, feedback_or_fast, + inputs::HasBytesVec, + prelude::{ + havoc_mutations, ondisk::OnDiskMetadataFormat, tokens_mutations, AFLppRedQueen, BytesInput, + CachedOnDiskCorpus, Corpus, CrashFeedback, ExitKind, HasCurrentCorpusIdx, HasTargetBytes, + HitcountsMapObserver, I2SRandReplace, InProcessExecutor, MaxMapFeedback, OnDiskCorpus, + RandBytesGenerator, SimpleEventManager, SimpleMonitor, StdCmpValuesObserver, + StdMOptMutator, StdMapObserver, StdScheduledMutator, TimeFeedback, TimeObserver, Tokens, + }, + schedulers::{ + powersched::PowerSchedule, IndexesLenTimeMinimizerScheduler, StdWeightedScheduler, + }, + stages::{ + mutational::MultiMutationalStage, CalibrationStage, ColorizationStage, DumpToDiskStage, + GeneralizationStage, IfStage, StdMutationalStage, StdPowerMutationalStage, + SyncFromDiskStage, TracingStage, + }, + state::{HasCorpus, HasMetadata, StdState}, + Fuzzer, StdFuzzer, +}; +use libafl_bolts::{ + current_nanos, + prelude::{OwnedMutSlice, OwnedRefMut}, + rands::StdRand, + tuples::{tuple_list, Merge}, + AsMutSlice, AsSlice, +}; +use libafl_targets::{AFLppCmpLogObserver, AFLppCmplogTracingStage}; +use simics::{api::AsConfObject, debug, warn}; +use std::{ + cell::RefCell, fmt::Debug, slice::from_raw_parts_mut, sync::mpsc::channel, thread::spawn, + time::Duration, +}; +use tokenize::{tokenize_executable_file, tokenize_src_file}; + +pub mod feedbacks; +pub mod messages; +pub mod tokenize; + +#[derive(Clone, PartialEq, Eq)] +pub(crate) struct Testcase { + pub testcase: BytesInput, + pub cmplog: bool, +} + +impl Debug for Testcase { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + f.debug_struct("Testcase") + .field( + "testcase", + &format!( + "{:?}{} ({} bytes)", + &self.testcase.bytes()[..(if self.testcase.bytes().len() < 32 { + self.testcase.bytes().len() + } else { + 32 + })], + if self.testcase.bytes().len() >= 32 { + "..." + } else { + "" + }, + self.testcase.bytes().len() + ), + ) + .field("cmplog", &self.cmplog) + .finish() + } +} + +#[derive(Debug, Clone, Default, PartialEq, Eq)] +pub(crate) struct ShutdownMessage {} + +impl Tsffs { + const EDGES_OBSERVER_NAME: &'static str = "coverage"; + const AFLPP_CMP_OBSERVER_NAME: &'static str = "aflpp_cmplog"; + const CMPLOG_OBSERVER_NAME: &'static str = "cmplog"; + const TIME_OBSERVER_NAME: &'static str = "time"; + const TIMEOUT_FEEDBACK_NAME: &'static str = "time"; + const CORPUS_CACHE_SIZE: usize = 4096; + + /// Start the fuzzing thread. + pub fn start_fuzzer_thread(&mut self) -> Result<()> { + if self.fuzz_thread.get().is_some() { + warn!(self.as_conf_object(), "Fuzz thread already started but start_fuzzer_thread called. Returning without error."); + // We can only start the thread once + return Ok(()); + } + + debug!(self.as_conf_object_mut(), "Starting fuzzer thread"); + + let (tx, orx) = channel::(); + let (otx, rx) = channel::(); + let (stx, srx) = channel::(); + let (mtx, mrx) = channel::(); + + self.fuzzer_tx + .set(tx) + .map_err(|_| anyhow!("Fuzzer sender already set"))?; + self.fuzzer_rx + .set(rx) + .map_err(|_| anyhow!("Fuzzer receiver already set"))?; + self.fuzzer_shutdown + .set(stx) + .map_err(|_| anyhow!("Fuzzer shutdown sender already set"))?; + self.fuzzer_messages + .set(mrx) + .map_err(|_| anyhow!("Fuzzer messages receiver already set"))?; + + let client = RefCell::new((otx, orx)); + + let coverage_map = unsafe { + from_raw_parts_mut( + self.coverage_map + .get_mut() + .ok_or_else(|| anyhow!("Coverage map not set"))? + .as_mut_slice() + .as_mut_ptr(), + Self::COVERAGE_MAP_SIZE, + ) + }; + + let aflpp_cmp_map = Box::leak(unsafe { + Box::from_raw( + *self + .aflpp_cmp_map_ptr + .get() + .ok_or_else(|| anyhow!("Comparison map pointer not set"))?, + ) + }); + + let aflpp_cmp_map_dup = Box::leak(unsafe { + Box::from_raw( + *self + .aflpp_cmp_map_ptr + .get() + .ok_or_else(|| anyhow!("Comparison map pointer not set"))?, + ) + }); + + let cmplog_enabled = self.cmplog; + let corpus_directory = self.corpus_directory.clone(); + let solutions_directory = self.solutions_directory.clone(); + let executable_tokens = self + .token_executables + .iter() + .map(tokenize_executable_file) + .collect::>>()? + .into_iter() + .flatten() + .collect::>(); + let src_file_tokens = self + .token_src_files + .iter() + .map(|f| { + tokenize_src_file(f) + .map(|t| t.iter().map(|s| s.as_bytes().to_vec()).collect::>()) + }) + .collect::>>()? + .into_iter() + .flatten() + .collect::>(); + let token_files = self.token_files.clone(); + let input_tokens = self.tokens.clone(); + let generate_random_corpus = self.generate_random_corpus; + let initial_random_corpus_size = self.initial_random_corpus_size; + let executor_timeout = self.executor_timeout; + + // NOTE: We do *not* use `run_in_thread` because it causes the fuzzer to block when HAPs arrive + // which prevents forward progress. + self.fuzz_thread + .set(spawn(move || -> Result<()> { + let mut harness = |input: &BytesInput| { + let testcase = BytesInput::new(input.target_bytes().as_slice().to_vec()); + // println!("Sending testcase {:?}", testcase); + client + .borrow_mut() + .0 + .send(Testcase { + testcase, + cmplog: false, + }) + .expect("Failed to send testcase message"); + // println!("Sent testcase, waiting for status"); + let status = match client.borrow_mut().1.recv() { + Err(e) => panic!("Error receiving status: {e}"), + Ok(m) => m, + }; + // println!("Got status: {:?}", status); + + status + }; + + let mut aflpp_cmp_harness = |input: &BytesInput| { + let testcase = BytesInput::new(input.target_bytes().as_slice().to_vec()); + // println!("Sending testcase {:?}", testcase); + client + .borrow_mut() + .0 + .send(Testcase { + testcase, + cmplog: true, + }) + .expect("Failed to send testcase message"); + // println!("Sent testcase, waiting for status"); + + let status = match client.borrow_mut().1.recv() { + Err(e) => panic!("Error receiving status: {e}"), + Ok(m) => m, + }; + // println!("Got status: {:?}", status); + + status + }; + + let mut tracing_harness = aflpp_cmp_harness; + + let edges_observer = HitcountsMapObserver::new(StdMapObserver::from_mut_slice( + Self::EDGES_OBSERVER_NAME, + OwnedMutSlice::from(coverage_map), + )); + + let aflpp_cmp_observer = AFLppCmpLogObserver::new( + Self::AFLPP_CMP_OBSERVER_NAME, + OwnedRefMut::Ref(aflpp_cmp_map), + true, + ); + + let cmplog_observer = StdCmpValuesObserver::new( + Self::CMPLOG_OBSERVER_NAME, + OwnedRefMut::Ref(aflpp_cmp_map_dup), + true, + ); + let time_observer = TimeObserver::new(Self::TIME_OBSERVER_NAME); + + let map_feedback = ReportingMapFeedback::new( + MaxMapFeedback::tracking(&edges_observer, true, true), + mtx.clone(), + ); + let time_feedback = TimeFeedback::with_observer(&time_observer); + + let crash_feedback = CrashFeedback::new(); + let timeout_feedback = TimeFeedback::new(Self::TIMEOUT_FEEDBACK_NAME); + + let solutions = OnDiskCorpus::with_meta_format( + solutions_directory.clone(), + OnDiskMetadataFormat::JsonPretty, + )?; + + let corpus = CachedOnDiskCorpus::with_meta_format( + corpus_directory.clone(), + Self::CORPUS_CACHE_SIZE, + Some(OnDiskMetadataFormat::Json), + )?; + + // NOTE: Initialize these here before we move the feedbacks + let calibration_stage = CalibrationStage::new(&map_feedback); + let colorization_stage = ColorizationStage::new(&edges_observer); + let generalization_stage = GeneralizationStage::new(&edges_observer); + + let mut feedback = feedback_or!(map_feedback, time_feedback); + let mut objective = feedback_or_fast!(crash_feedback, timeout_feedback); + + let mut state = StdState::new( + StdRand::with_seed(current_nanos()), + corpus, + solutions, + &mut feedback, + &mut objective, + ) + .map_err(|e| anyhow!("Couldn't initialize state: {e}"))?; + + let mut tokens = Tokens::default().add_from_files(token_files)?; + + tokens.add_tokens(executable_tokens); + tokens.add_tokens(src_file_tokens); + tokens.add_tokens(input_tokens); + + state.add_metadata(tokens); + + let scheduler = + IndexesLenTimeMinimizerScheduler::new(StdWeightedScheduler::with_schedule( + &mut state, + &edges_observer, + Some(PowerSchedule::EXPLORE), + )); + + let mut fuzzer = StdFuzzer::new(scheduler, feedback, objective); + + let monitor = { + let mtx = mtx.clone(); + SimpleMonitor::new(move |s| { + mtx.send(FuzzerMessage::String(s.to_string())) + .expect("Failed to send monitor message"); + }) + }; + + let mut manager = SimpleEventManager::new(monitor); + + let mut executor = InProcessExecutor::with_timeout( + &mut harness, + tuple_list!(edges_observer, time_observer), + &mut fuzzer, + &mut state, + &mut manager, + Duration::from_secs(executor_timeout), + )?; + + let aflpp_cmp_executor = InProcessExecutor::with_timeout( + &mut aflpp_cmp_harness, + tuple_list!(aflpp_cmp_observer), + &mut fuzzer, + &mut state, + &mut manager, + Duration::from_secs(executor_timeout), + )?; + + let tracing_executor = InProcessExecutor::with_timeout( + &mut tracing_harness, + tuple_list!(cmplog_observer), + &mut fuzzer, + &mut state, + &mut manager, + Duration::from_secs(executor_timeout), + )?; + + let input_to_state_stage = StdMutationalStage::new(StdScheduledMutator::new( + tuple_list!(I2SRandReplace::new()), + )); + let havoc_mutational_stage = StdPowerMutationalStage::new( + StdScheduledMutator::new(havoc_mutations().merge(tokens_mutations())), + ); + let mopt_mutational_stage = StdPowerMutationalStage::new(StdMOptMutator::new( + &mut state, + havoc_mutations().merge(tokens_mutations()), + 7, + 5, + )?); + let redqueen_mutational_stage = + MultiMutationalStage::new(AFLppRedQueen::with_cmplog_options(true, true)); + let aflpp_tracing_stage = AFLppCmplogTracingStage::with_cmplog_observer_name( + aflpp_cmp_executor, + Self::AFLPP_CMP_OBSERVER_NAME, + ); + let tracing_stage = TracingStage::new(tracing_executor); + let synchronize_corpus_stage = + SyncFromDiskStage::with_from_file(corpus_directory.clone()); + let dump_corpus_stage = DumpToDiskStage::new( + |input: &BytesInput, _state: &_| input.target_bytes().as_slice().to_vec(), + corpus_directory.clone(), + solutions_directory.clone(), + )?; + + if state.must_load_initial_inputs() { + state.load_initial_inputs( + &mut fuzzer, + &mut executor, + &mut manager, + &[corpus_directory.clone()], + )?; + + if state.corpus().count() < 1 && generate_random_corpus { + let mut generator = RandBytesGenerator::new(64); + state.generate_initial_inputs( + &mut fuzzer, + &mut executor, + &mut generator, + &mut manager, + initial_random_corpus_size, + )?; + } + } + + if state.corpus().count() < 1 { + panic!( + "No interesting cases found from inputs! This may mean \ + your harness is incorrect (check your arguments), your inputs \ + are not triggering new code paths, or all inputs are causing \ + crashes.", + ); + } + + let mut stages = tuple_list!( + calibration_stage, + generalization_stage, + IfStage::new( + |_fuzzer: &mut _, + _executor: &mut _, + state: &mut StdState<_, CachedOnDiskCorpus<_>, _, _>, + _event_manager: &mut _| + -> Result { + Ok(cmplog_enabled + && state + .corpus() + .get(state.current_corpus_idx()?.ok_or_else(|| { + libafl::Error::unknown("No current corpus index") + })?)? + .borrow() + .scheduled_count() + == 1) + }, + tuple_list!( + colorization_stage, + aflpp_tracing_stage, + redqueen_mutational_stage + ) + ), + IfStage::new( + |_fuzzer: &mut _, + _executor: &mut _, + _state: &mut StdState<_, CachedOnDiskCorpus<_>, _, _>, + _event_manager: &mut _| + -> Result { + Ok(cmplog_enabled) + }, + tuple_list!(tracing_stage, input_to_state_stage) + ), + havoc_mutational_stage, + mopt_mutational_stage, + dump_corpus_stage, + synchronize_corpus_stage, + ); + + loop { + // Check if we have a message to shut down, and if so, exit. + if let Ok(_msg) = srx.try_recv() { + break; + } + + fuzzer.fuzz_one(&mut stages, &mut executor, &mut state, &mut manager)?; + } + + println!("Fuzzing loop exited."); + + Ok(()) + })) + .map_err(|_| anyhow!("Fuzzer thread already set"))?; + + Ok(()) + } + + pub fn send_shutdown(&mut self) -> Result<()> { + if let Some(stx) = self.fuzzer_shutdown.get_mut() { + stx.send(ShutdownMessage::default())?; + } + + Ok(()) + } + + pub fn get_testcase(&mut self) -> Result { + let testcase = if let Some(testcase) = self.repro_testcase.as_ref() { + debug!(self.as_conf_object(), "Using repro testcase"); + Testcase { + testcase: BytesInput::new(testcase.clone()), + cmplog: false, + } + } else { + self.fuzzer_rx + .get_mut() + .ok_or_else(|| anyhow!("Fuzzer receiver not set"))? + .recv() + .map_err(|e| anyhow!("Error receiving from fuzzer: {e}"))? + }; + + debug!(self.as_conf_object(), "Testcase: {testcase:?}"); + + Ok(testcase) + } +} diff --git a/modules/tsffs/src/tsffs/src/fuzzer/tokenize/mod.rs b/src/fuzzer/tokenize/mod.rs similarity index 98% rename from modules/tsffs/src/tsffs/src/fuzzer/tokenize/mod.rs rename to src/fuzzer/tokenize/mod.rs index 5a5f3af4..0df22d22 100644 --- a/modules/tsffs/src/tsffs/src/fuzzer/tokenize/mod.rs +++ b/src/fuzzer/tokenize/mod.rs @@ -1,3 +1,6 @@ +// Copyright (C) 2024 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 + //! Tokenization of executables use anyhow::Result; diff --git a/modules/tsffs/src/tsffs/src/haps/mod.rs b/src/haps/mod.rs similarity index 63% rename from modules/tsffs/src/tsffs/src/haps/mod.rs rename to src/haps/mod.rs index 8a39d82d..94c8f4e7 100644 --- a/modules/tsffs/src/tsffs/src/haps/mod.rs +++ b/src/haps/mod.rs @@ -1,6 +1,8 @@ -// Copyright (C) 2023 Intel Corporation +// Copyright (C) 2024 Intel Corporation // SPDX-License-Identifier: Apache-2.0 +//! Handlers for HAPs in the simulator + use std::time::SystemTime; use crate::{ @@ -21,31 +23,21 @@ use simics::{ impl Tsffs { /// Called on core simulation stopped HAP pub fn on_simulation_stopped(&mut self) -> Result<()> { - if self.stopped_for_repro_deref() { + if self.stopped_for_repro { // If we are stopped for repro, we do nothing on this HAP! return Ok(()); } - let mut messages = Vec::new(); - - if let Some(fuzzer_messages) = self.fuzzer_messages_mut() { - while let Ok(message) = fuzzer_messages.try_recv() { - messages.push(message); - } - } - - messages - .iter() - .for_each(|m| info!(self.as_conf_object(), "{m}")); + self.log_messages()?; - if let Some(reason) = self.stop_reason_mut().take() { + if let Some(reason) = self.stop_reason.take() { debug!(self.as_conf_object(), "on_simulation_stopped({reason:?})"); match reason { StopReason::MagicStart(magic_start) => { if !self.have_initial_snapshot() { self.start_fuzzer_thread()?; - self.add_processor(magic_start.processor_deref(), true)?; + self.add_processor(magic_start.processor, true)?; let (start_buffer, start_size) = { let start_processor = self @@ -62,53 +54,48 @@ impl Tsffs { "Start buffer: {start_buffer:?} Start size: {start_size:?}" ); - *self.start_buffer_mut() = Some(start_buffer); - *self.start_size_mut() = Some(start_size); - *self.start_time_mut() = SystemTime::now(); - *self.coverage_enabled_mut() = true; + self.start_buffer + .set(start_buffer) + .map_err(|_| anyhow!("Failed to set start buffer"))?; + self.start_size + .set(start_size) + .map_err(|_| anyhow!("Failed to set start size"))?; + self.start_time + .set(SystemTime::now()) + .map_err(|_| anyhow!("Failed to set start time"))?; + self.coverage_enabled = true; self.save_initial_snapshot()?; self.get_and_write_testcase()?; self.post_timeout_event()?; } self.save_repro_bookmark_if_needed()?; - trace!( - self.as_conf_object(), - "Coverage hash (before): {:#x}", - self.cmplog_hash() - ); - trace!( - self.as_conf_object(), - "Cmplog hash (before): {:#x}", - self.cmplog_hash() - ); } StopReason::ManualStart(start) => { if !self.have_initial_snapshot() { self.start_fuzzer_thread()?; - self.add_processor(start.processor_deref(), true)?; + self.add_processor(start.processor, true)?; - let (start_buffer, start_size) = { + let (mut start_buffer, mut start_size) = { let start_processor = self .start_processor() .ok_or_else(|| anyhow!("No start processor"))?; ( - if let Some(buffer) = start.buffer_ref() { + if let Some(buffer) = start.buffer.as_ref() { Some( start_processor - .get_manual_start_buffer(*buffer, start.virt_deref())?, + .get_manual_start_buffer(*buffer, start.virt)?, ) } else { None }, - match start.size_ref() { + match start.size { ManualStartSize::MaximumSize(s) => { - Some(StartSize::builder().initial_size(*s).build()) + Some(StartSize::builder().initial_size(s).build()) + } + ManualStartSize::SizeAddress(a) => { + Some(start_processor.get_manual_start_size(a, start.virt)?) } - ManualStartSize::SizeAddress(a) => Some( - start_processor - .get_manual_start_size(*a, start.virt_deref())?, - ), ManualStartSize::NoSize => None, }, ) @@ -119,13 +106,23 @@ impl Tsffs { "Start buffer: {start_buffer:?} Start size: {start_size:?}" ); - *self.start_buffer_mut() = start_buffer; - *self.start_size_mut() = start_size; - *self.start_time_mut() = SystemTime::now(); - *self.coverage_enabled_mut() = true; + if let Some(start_buffer) = start_buffer.take() { + self.start_buffer + .set(start_buffer) + .map_err(|_| anyhow!("Failed to set start buffer"))?; + } + if let Some(start_size) = start_size.take() { + self.start_size + .set(start_size) + .map_err(|_| anyhow!("Failed to set start size"))?; + } + self.start_time + .set(SystemTime::now()) + .map_err(|_| anyhow!("Failed to set start time"))?; + self.coverage_enabled = true; self.save_initial_snapshot()?; - if self.start_buffer_ref().is_some() && self.start_size_ref().is_some() { + if self.start_buffer.get().is_some() && self.start_size.get().is_some() { self.get_and_write_testcase()?; } @@ -133,32 +130,12 @@ impl Tsffs { } self.save_repro_bookmark_if_needed()?; - trace!( - self.as_conf_object(), - "Coverage hash (before): {:#x}", - self.cmplog_hash() - ); - trace!( - self.as_conf_object(), - "Cmplog hash (before): {:#x}", - self.cmplog_hash() - ); } StopReason::MagicStop(_) | StopReason::ManualStop(_) => { self.cancel_timeout_event()?; - trace!( - self.as_conf_object(), - "Coverage hash (after): {:#x}", - self.cmplog_hash() - ); - trace!( - self.as_conf_object(), - "Cmplog hash (after): {:#x}", - self.cmplog_hash() - ); - - if self.repro_bookmark_set_deref() { - *self.stopped_for_repro_mut() = true; + + if self.repro_bookmark_set { + self.stopped_for_repro = true; let current_log_level = log_level(self.as_conf_object_mut())?; if current_log_level < LogLevel::Info as u32 { @@ -174,27 +151,25 @@ impl Tsffs { return Ok(()); } - *self.iterations_mut() += 1; + self.iterations += 1; - if self - .configuration_ref() - .iterations_deref() - .is_some_and(|i| self.iterations_deref() >= i) - { - let duration = SystemTime::now().duration_since(self.start_time_deref())?; + if self.iteration_limit != 0 && self.iterations >= self.iteration_limit { + let duration = SystemTime::now().duration_since( + *self + .start_time + .get() + .ok_or_else(|| anyhow!("Start time was not set"))?, + )?; - let current_log_level = log_level(self.as_conf_object_mut())?; // Set the log level so this message always prints - if current_log_level < LogLevel::Info as u32 { - set_log_level(self.as_conf_object_mut(), LogLevel::Info)?; - } + set_log_level(self.as_conf_object_mut(), LogLevel::Info)?; info!( self.as_conf_object(), "Configured iteration count {} reached. Stopping after {} seconds ({} exec/s).", - self.iterations_ref(), + self.iterations, duration.as_secs_f32(), - *self.iterations_ref() as f32 / duration.as_secs_f32() + self.iterations as f32 / duration.as_secs_f32() ); self.send_shutdown()?; @@ -203,15 +178,16 @@ impl Tsffs { } let fuzzer_tx = self - .fuzzer_tx_mut() - .as_ref() + .fuzzer_tx + .get() .ok_or_else(|| anyhow!("No fuzzer tx channel"))?; fuzzer_tx.send(ExitKind::Ok)?; self.restore_initial_snapshot()?; + self.coverage_prev_loc = 0; - if self.start_buffer_ref().is_some() && self.start_size_ref().is_some() { + if self.start_buffer.get().is_some() && self.start_size.get().is_some() { self.get_and_write_testcase()?; } else { debug!( @@ -224,19 +200,9 @@ impl Tsffs { } StopReason::Solution(solution) => { self.cancel_timeout_event()?; - trace!( - self.as_conf_object(), - "Coverage hash (after): {:#x}", - self.cmplog_hash() - ); - trace!( - self.as_conf_object(), - "Cmplog hash (after): {:#x}", - self.cmplog_hash() - ); - - if self.repro_bookmark_set_deref() { - *self.stopped_for_repro_mut() = true; + + if self.repro_bookmark_set { + self.stopped_for_repro = true; let current_log_level = log_level(self.as_conf_object_mut())?; if current_log_level < LogLevel::Info as u32 { @@ -252,14 +218,15 @@ impl Tsffs { return Ok(()); } - *self.iterations_mut() += 1; + self.iterations += 1; - if self - .configuration_ref() - .iterations_deref() - .is_some_and(|i| self.iterations_deref() >= i) - { - let duration = SystemTime::now().duration_since(self.start_time_deref())?; + if self.iteration_limit != 0 && self.iterations >= self.iteration_limit { + let duration = SystemTime::now().duration_since( + *self + .start_time + .get() + .ok_or_else(|| anyhow!("Start time was not set"))?, + )?; // Set the log level so this message always prints set_log_level(self.as_conf_object_mut(), LogLevel::Info)?; @@ -267,9 +234,9 @@ impl Tsffs { info!( self.as_conf_object(), "Configured iteration count {} reached. Stopping after {} seconds ({} exec/s).", - self.iterations_ref(), + self.iterations, duration.as_secs_f32(), - *self.iterations_ref() as f32 / duration.as_secs_f32() + self.iterations as f32 / duration.as_secs_f32() ); self.send_shutdown()?; @@ -278,11 +245,11 @@ impl Tsffs { } let fuzzer_tx = self - .fuzzer_tx_mut() - .as_ref() + .fuzzer_tx + .get() .ok_or_else(|| anyhow!("No fuzzer tx channel"))?; - match solution.kind_ref() { + match solution.kind { SolutionKind::Timeout => fuzzer_tx.send(ExitKind::Timeout)?, SolutionKind::Exception | SolutionKind::Breakpoint @@ -290,8 +257,9 @@ impl Tsffs { } self.restore_initial_snapshot()?; + self.coverage_prev_loc = 0; - if self.start_buffer_ref().is_some() && self.start_size_ref().is_some() { + if self.start_buffer.get().is_some() && self.start_size.get().is_some() { self.get_and_write_testcase()?; } else { debug!( @@ -314,8 +282,8 @@ impl Tsffs { self.cancel_timeout_event()?; let fuzzer_tx = self - .fuzzer_tx_mut() - .as_ref() + .fuzzer_tx + .get() .ok_or_else(|| anyhow!("No fuzzer tx channel"))?; fuzzer_tx.send(ExitKind::Ok)?; @@ -325,7 +293,12 @@ impl Tsffs { "Simulation stopped without reason, not resuming." ); - let duration = SystemTime::now().duration_since(self.start_time_deref())?; + let duration = SystemTime::now().duration_since( + *self + .start_time + .get() + .ok_or_else(|| anyhow!("Start time was not set"))?, + )?; // Set the log level so this message always prints set_log_level(self.as_conf_object_mut(), LogLevel::Info)?; @@ -333,9 +306,9 @@ impl Tsffs { info!( self.as_conf_object(), "Stopped after {} iterations in {} seconds ({} exec/s).", - self.iterations_ref(), + self.iterations, duration.as_secs_f32(), - *self.iterations_ref() as f32 / duration.as_secs_f32() + self.iterations as f32 / duration.as_secs_f32() ); } @@ -345,14 +318,7 @@ impl Tsffs { /// Called on core exception HAP. Check to see if this exception is configured as a solution /// or all exceptions are solutions and trigger a stop if so pub fn on_exception(&mut self, _obj: *mut ConfObject, exception: i64) -> Result<()> { - if self - .configuration_ref() - .all_exceptions_are_solutions_deref() - || self - .configuration_ref() - .exceptions_ref() - .contains(&exception) - { + if self.all_exceptions_are_solutions || self.exceptions.contains(&exception) { self.stop_simulation(StopReason::Solution( Solution::builder().kind(SolutionKind::Exception).build(), ))?; @@ -368,14 +334,7 @@ impl Tsffs { breakpoint: i64, transaction: *mut GenericTransaction, ) -> Result<()> { - if self - .configuration_ref() - .all_breakpoints_are_solutions_deref() - || self - .configuration_ref() - .breakpoints_ref() - .contains(&(breakpoint as i32)) - { + if self.all_breakpoints_are_solutions || self.breakpoints.contains(&(breakpoint as i32)) { info!( self.as_conf_object(), "on_breakpoint_memop({:#x}, {}, {:#x})", @@ -404,19 +363,13 @@ impl Tsffs { ); if object_is_processor(trigger_obj)? { - if self.configuration_ref().start_on_harness_deref() - && magic_number == self.configuration_ref().magic_start_deref() - { + if self.start_on_harness && magic_number == self.magic_start { self.stop_simulation(StopReason::MagicStart( MagicStart::builder().processor(trigger_obj).build(), ))?; - } else if self.configuration_ref().stop_on_harness_deref() - && magic_number == self.configuration_ref().magic_stop_deref() - { + } else if self.stop_on_harness && magic_number == self.magic_stop { self.stop_simulation(StopReason::MagicStop(Stop::default()))?; - } else if self.configuration_ref().stop_on_harness_deref() - && magic_number == self.configuration_ref().magic_assert_deref() - { + } else if self.stop_on_harness && magic_number == self.magic_assert { self.stop_simulation(StopReason::Solution( Solution::builder().kind(SolutionKind::Manual).build(), ))?; diff --git a/src/interfaces/config.rs b/src/interfaces/config.rs new file mode 100644 index 00000000..f89d6446 --- /dev/null +++ b/src/interfaces/config.rs @@ -0,0 +1,42 @@ +// Copyright (C) 2024 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 + +use crate::{arch::ArchitectureHint, Tsffs}; +use simics::{debug, get_processor_number, interface, AsConfObject, ConfObject, Result}; +use std::{ + ffi::{c_char, CStr}, + str::FromStr, +}; + +#[interface(name = "config")] +impl Tsffs { + /// Add a processor to be traced. By default, only the processor the start event occurs on + /// is used for tracing. + pub fn add_trace_processor(&mut self, cpu: *mut ConfObject) -> Result<()> { + debug!( + self.as_conf_object(), + "add_trace_processor({:#x})", cpu as usize + ); + + self.add_processor(cpu, false)?; + + Ok(()) + } + + /// Set an architecture hint to be used for a particular processor. This allows overriding + /// the detected or reported architecture for the processor object. This is particularly + /// useful for x86 processors which report as x86-64 processors, or when fuzzing x86 code + /// running on an x86-64 processor in a backward compatibility mode. + pub fn add_architecture_hint(&mut self, cpu: *mut ConfObject, hint: *mut c_char) -> Result<()> { + let hint = unsafe { CStr::from_ptr(hint) }.to_str()?; + let processor_number = get_processor_number(cpu)?; + debug!( + self.as_conf_object(), + "add_architecture_hint({processor_number}, {hint})" + ); + self.architecture_hints + .insert(processor_number, ArchitectureHint::from_str(hint)?); + + Ok(()) + } +} diff --git a/src/interfaces/fuzz.rs b/src/interfaces/fuzz.rs new file mode 100644 index 00000000..6c9046dc --- /dev/null +++ b/src/interfaces/fuzz.rs @@ -0,0 +1,191 @@ +// Copyright (C) 2024 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 + +use crate::{ + state::{ManualStart, ManualStartSize, Solution, SolutionKind, Stop, StopReason}, + Tsffs, +}; +use anyhow::{anyhow, Result}; +use libafl::inputs::HasBytesVec; +use simics::{ + continue_simulation, debug, interface, lookup_file, run_alone, AsConfObject, AttrValue, + ConfObject, GenericAddress, +}; +use std::{ + ffi::{c_char, CStr}, + fs::read, +}; + +#[interface(name = "fuzz")] +impl Tsffs { + /// Reproduce a test case execution. This will set the fuzzer's next input through + /// one execution using the provided file as input instead of taking input from the + /// fuzzer. It will stop execution at the first stop, timeout, or other solution + /// instead of continuing the fuzzing loop. + /// + /// This can be called during configuration *or* after stopping the fuzzer once a solution + /// has been found. + pub fn repro(&mut self, testcase_file: *mut c_char) -> Result<()> { + let simics_path = unsafe { CStr::from_ptr(testcase_file) }.to_str()?; + + let testcase_file = lookup_file(simics_path)?; + + debug!(self.as_conf_object(), "repro({})", testcase_file.display()); + + let contents = read(&testcase_file).map_err(|e| { + anyhow!( + "Failed to read repro testcase file {}: {}", + testcase_file.display(), + e + ) + })?; + + self.repro_testcase = Some(contents); + + if self.iterations > 0 { + // We've done an iteration already, so we need to reset and run + self.restore_initial_snapshot()?; + self.get_and_write_testcase()?; + self.post_timeout_event()?; + + run_alone(|| { + continue_simulation(0)?; + Ok(()) + })?; + } + + Ok(()) + } + + /// Interface method to manually start the fuzzing loop by taking a snapshot, saving the + /// testcase and size address and resuming execution of the simulation. This method does + /// not need to be called if `set_start_on_harness` is enabled. + /// + /// # Arguments + /// + /// * `cpu` - The CPU whose memory space should be written + /// * `testcase_address` - The address to write test cases to + /// * `size_address` - The address to write the size of each test case to (optional, + /// `max_size` must be given if not provided). + /// + /// If your target cannot take advantage of the written-back size pointer, use + /// `start_with_max_size` instead. + pub fn start( + &mut self, + cpu: *mut ConfObject, + testcase_address: GenericAddress, + size_address: GenericAddress, + virt: bool, + ) -> Result<()> { + debug!( + self.as_conf_object(), + "start({testcase_address:#x}, {size_address:#x})" + ); + + self.stop_simulation(StopReason::ManualStart( + ManualStart::builder() + .processor(cpu) + .buffer(testcase_address) + .size(ManualStartSize::SizeAddress(size_address)) + .virt(virt) + .build(), + ))?; + + Ok(()) + } + + /// Interface method to manually start the fuzzing loop by taking a snapshot, saving + /// the testcase and maximum testcase size and resuming execution of the simulation. + /// This method does not need to be called if `set_start_on_harness` is enabled. + /// + /// # Arguments + /// + /// * `cpu` - The CPU whose memory space should be written + /// * `testcase_address` - The address to write test cases to + /// * `maximum_size` - The maximum size of the test case. The actual size of each test case will + /// not be written back to the target software + /// + /// If your target does not have a buffer readily available to receive testcase data or + /// you simply want to use it directly in some other way (e.g. by sending it to a network + /// port), use `start_without_buffer` + pub fn start_with_maximum_size( + &mut self, + cpu: *mut ConfObject, + testcase_address: GenericAddress, + maximum_size: u32, + virt: bool, + ) -> Result<()> { + debug!( + self.as_conf_object(), + "start_with_maximum_size({testcase_address:#x}, {maximum_size:#x})" + ); + + self.stop_simulation(StopReason::ManualStart( + ManualStart::builder() + .processor(cpu) + .buffer(testcase_address) + .size(ManualStartSize::MaximumSize(maximum_size as u64)) + .virt(virt) + .build(), + ))?; + + Ok(()) + } + + /// Interface method to manually start the fuzzing loop by taking a snapshot, saving + /// the testcase and maximum testcase size and resuming execution of the simulation. + /// This method does not need to be called if `set_start_on_harness` is enabled. + /// + /// # Arguments + /// + /// * `cpu` - The CPU to initially trace and post timeout events on. This should typically be + /// the CPU that is running the code receiving the input this function returns. + /// + /// # Return Value + /// + /// Returns an [`AttrValue`] list of integers. Integers are `u8` sized, in the range 0-255. + pub fn start_without_buffer(&mut self, cpu: *mut ConfObject) -> Result { + if !self.have_initial_snapshot() { + // Start the fuzzer thread early so we can get a testcase + self.start_fuzzer_thread()?; + } + let testcase = self.get_testcase()?; + self.cmplog_enabled = testcase.cmplog; + + self.stop_simulation(StopReason::ManualStart( + ManualStart::builder().processor(cpu).build(), + ))?; + + Ok(testcase.testcase.bytes().to_vec().try_into()?) + } + + /// Interface method to manually signal to stop a testcase execution. When this + /// method is called, the current testcase execution will be stopped as if it had + /// finished executing normally, and the state will be restored to the state at the + /// initial snapshot. This method is particularly useful in callbacks triggered on + /// breakpoints or other complex conditions. This method does + /// not need to be called if `set_stop_on_harness` is enabled. + pub fn stop(&mut self) -> Result<()> { + debug!(self.as_conf_object(), "stop"); + + self.stop_simulation(StopReason::ManualStop(Stop::default()))?; + + Ok(()) + } + + /// Interface method to manually signal to stop execution with a solution condition. + /// When this method is called, the current testcase execution will be stopped as if + /// it had finished executing with an exception or timeout, and the state will be + /// restored to the state at the initial snapshot. + pub fn solution(&mut self, id: u64, message: *mut c_char) -> Result<()> { + let message = unsafe { CStr::from_ptr(message) }.to_str()?; + + debug!(self.as_conf_object(), "solution({id:#x}, {message})"); + + self.stop_simulation(StopReason::Solution( + Solution::builder().kind(SolutionKind::Manual).build(), + ))?; + + Ok(()) + } +} diff --git a/src/interfaces/mod.rs b/src/interfaces/mod.rs new file mode 100644 index 00000000..3158fc35 --- /dev/null +++ b/src/interfaces/mod.rs @@ -0,0 +1,8 @@ +// Copyright (C) 2024 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 + +//! Interfaces accessible from Simics script and Python + +pub(crate) mod config; +pub(crate) mod fuzz; +pub(crate) mod tsffs; diff --git a/modules/tsffs/src/tsffs/src/interface/mod.rs b/src/interfaces/tsffs.rs similarity index 84% rename from modules/tsffs/src/tsffs/src/interface/mod.rs rename to src/interfaces/tsffs.rs index 76e89edc..26a5d734 100644 --- a/modules/tsffs/src/tsffs/src/interface/mod.rs +++ b/src/interfaces/tsffs.rs @@ -1,31 +1,27 @@ -// Copyright (C) 2023 Intel Corporation +// Copyright (C) 2024 Intel Corporation // SPDX-License-Identifier: Apache-2.0 +//! Backward-compatibility interface + use crate::{ arch::ArchitectureHint, - fuzzer::tokenize::{tokenize_executable_file, tokenize_src_file}, - state::{ManualStart, ManualStartSize, Solution, SolutionKind, Stop, StopReason}, - Tsffs, + state::Stop, + state::{ManualStart, ManualStartSize, StopReason}, + Solution, SolutionKind, Tsffs, }; use anyhow::anyhow; -use ffi_macro::ffi; +use libafl::inputs::HasBytesVec; use simics::{ - api::{ - continue_simulation, get_processor_number, lookup_file, run_alone, sys::attr_value_t, - version, AsConfObject, AttrValue, AttrValueType, BreakpointId, ConfObject, GenericAddress, - }, - debug, error, trace, Result, + continue_simulation, debug, error, get_processor_number, interface, lookup_file, run_alone, + version, AsConfObject, AttrValue, BreakpointId, ConfObject, GenericAddress, Result, }; -use simics_macro::interface_impl; use std::{ ffi::{c_char, CStr}, fs::read, str::FromStr, }; -// Emit the interface header/dml files in the "modules" directory in the module subdirectory -// of the package -#[interface_impl(modules_path = "../../../")] +#[interface(name = "tsffs")] impl Tsffs { /// Interface method to enable or disable the fuzzer to start automatically when it /// reaches the default start condition for the architecture of the processor that @@ -89,8 +85,7 @@ impl Tsffs { "set_start_on_harness({start_on_harness})" ); - // self.set_start_on_harness(start_on_harness)?; - *self.configuration_mut().start_on_harness_mut() = start_on_harness; + self.start_on_harness = start_on_harness; Ok(()) } @@ -104,7 +99,7 @@ impl Tsffs { "set_start_magic_number({magic_number})" ); - *self.configuration_mut().magic_start_mut() = magic_number; + self.magic_start = magic_number; } /// Interface method to enable or disable the fuzzer to stop automatically when it @@ -118,8 +113,7 @@ impl Tsffs { "set_stop_on_harness({stop_on_harness})" ); - // self.set_stop_on_harness(stop_on_harness)?; - *self.configuration_mut().stop_on_harness_mut() = stop_on_harness; + self.stop_on_harness = stop_on_harness; Ok(()) } @@ -133,9 +127,10 @@ impl Tsffs { "set_stop_magic_number({magic_number})" ); - *self.configuration_mut().magic_stop_mut() = magic_number; + self.magic_stop = magic_number; } + #[interface(name = "start")] /// Interface method to manually start the fuzzing loop by taking a snapshot, saving the /// testcase and size address and resuming execution of the simulation. This method does /// not need to be called if `set_start_on_harness` is enabled. @@ -149,7 +144,7 @@ impl Tsffs { /// /// If your target cannot take advantage of the written-back size pointer, use /// `start_with_max_size` instead. - pub fn start( + pub fn start_legacy( &mut self, cpu: *mut ConfObject, testcase_address: GenericAddress, @@ -173,6 +168,7 @@ impl Tsffs { Ok(()) } + #[interface(name = "start_with_maximum_size")] /// Interface method to manually start the fuzzing loop by taking a snapshot, saving /// the testcase and maximum testcase size and resuming execution of the simulation. /// This method does not need to be called if `set_start_on_harness` is enabled. @@ -187,7 +183,7 @@ impl Tsffs { /// If your target does not have a buffer readily available to receive testcase data or /// you simply want to use it directly in some other way (e.g. by sending it to a network /// port), use `start_without_buffer` - pub fn start_with_maximum_size( + pub fn start_with_maximum_size_legacy( &mut self, cpu: *mut ConfObject, testcase_address: GenericAddress, @@ -211,6 +207,7 @@ impl Tsffs { Ok(()) } + #[interface(name = "start_without_buffer")] /// Interface method to manually start the fuzzing loop by taking a snapshot, saving /// the testcase and maximum testcase size and resuming execution of the simulation. /// This method does not need to be called if `set_start_on_harness` is enabled. @@ -223,38 +220,29 @@ impl Tsffs { /// # Return Value /// /// Returns an [`AttrValue`] list of integers. Integers are `u8` sized, in the range 0-255. - pub fn start_without_buffer(&mut self, cpu: *mut ConfObject) -> Result { + pub fn start_without_buffer_legacy(&mut self, cpu: *mut ConfObject) -> Result { if !self.have_initial_snapshot() { // Start the fuzzer thread early so we can get a testcase self.start_fuzzer_thread()?; } let testcase = self.get_testcase()?; - *self.cmplog_enabled_mut() = testcase.cmplog_deref(); - trace!( - self.as_conf_object(), - "Coverage hash (before): {:#x}", - self.cmplog_hash() - ); - trace!( - self.as_conf_object(), - "Cmplog hash (before): {:#x}", - self.cmplog_hash() - ); + self.cmplog_enabled = testcase.cmplog; self.stop_simulation(StopReason::ManualStart( ManualStart::builder().processor(cpu).build(), ))?; - testcase.testcase_clone().try_into() + testcase.testcase.bytes().to_vec().try_into() } + #[interface(name = "stop")] /// Interface method to manually signal to stop a testcase execution. When this /// method is called, the current testcase execution will be stopped as if it had /// finished executing normally, and the state will be restored to the state at the /// initial snapshot. This method is particularly useful in callbacks triggered on /// breakpoints or other complex conditions. This method does /// not need to be called if `set_stop_on_harness` is enabled. - pub fn stop(&mut self) -> Result<()> { + pub fn stop_legacy(&mut self) -> Result<()> { debug!(self.as_conf_object(), "stop"); self.stop_simulation(StopReason::ManualStop(Stop::default()))?; @@ -262,11 +250,12 @@ impl Tsffs { Ok(()) } + #[interface(name = "solution")] /// Interface method to manually signal to stop execution with a solution condition. /// When this method is called, the current testcase execution will be stopped as if /// it had finished executing with an exception or timeout, and the state will be /// restored to the state at the initial snapshot. - pub fn solution(&mut self, id: u64, message: *mut c_char) -> Result<()> { + pub fn solution_legacy(&mut self, id: u64, message: *mut c_char) -> Result<()> { let message = unsafe { CStr::from_ptr(message) }.to_str()?; debug!(self.as_conf_object(), "solution({id:#x}, {message})"); @@ -278,17 +267,57 @@ impl Tsffs { Ok(()) } + #[interface(name = "repro_legacy")] + /// Reproduce a test case execution. This will set the fuzzer's next input through + /// one execution using the provided file as input instead of taking input from the + /// fuzzer. It will stop execution at the first stop, timeout, or other solution + /// instead of continuing the fuzzing loop. + /// + /// This can be called during configuration *or* after stopping the fuzzer once a solution + /// has been found. + pub fn repro_legacy(&mut self, testcase_file: *mut c_char) -> Result<()> { + let simics_path = unsafe { CStr::from_ptr(testcase_file) }.to_str()?; + + let testcase_file = lookup_file(simics_path)?; + + debug!(self.as_conf_object(), "repro({})", testcase_file.display()); + + let contents = read(&testcase_file).map_err(|e| { + anyhow!( + "Failed to read repro testcase file {}: {}", + testcase_file.display(), + e + ) + })?; + + self.repro_testcase = Some(contents); + + if self.iterations > 0 { + // We've done an iteration already, so we need to reset and run + self.restore_initial_snapshot()?; + self.get_and_write_testcase()?; + self.post_timeout_event()?; + + run_alone(|| { + continue_simulation(0)?; + Ok(()) + })?; + } + + Ok(()) + } + /// Interface method to set the fuzzer to use the experimental snapshots interface /// instead of the micro checkpoints interface for snapshot save and restore operations pub fn set_use_snapshots(&mut self, use_snapshots: bool) -> Result<()> { debug!(self.as_conf_object(), "use_snapshots({use_snapshots})"); - #[cfg(not(simics_experimental_api_snapshots))] - {} - - if cfg!(simics_experimental_api_snapshots) { - *self.configuration_mut().use_snapshots_mut() = use_snapshots; - } else if !cfg!(simics_experimental_api_snapshots) && use_snapshots { + if cfg!(simics_experimental_api_snapshots) + || cfg!(simics_experimental_api_snapshots_v2) + || cfg!(simics_stable_api_snapshots) + { + self.use_snapshots = use_snapshots; + } else if use_snapshots { let version = version()?; error!( @@ -306,7 +335,7 @@ impl Tsffs { pub fn set_timeout(&mut self, timeout: f64) { debug!(self.as_conf_object(), "set_timeout({timeout})"); - *self.configuration_mut().timeout_mut() = timeout; + self.timeout = timeout; } /// Interface method to add an exception-type solution number to the set of @@ -319,7 +348,7 @@ impl Tsffs { pub fn add_exception_solution(&mut self, exception: i64) { debug!(self.as_conf_object(), "add_exception_solution({exception})"); - self.configuration_mut().exceptions_mut().insert(exception); + self.exceptions.insert(exception); } /// Interface method to remove an exception-type solution number from the set of @@ -332,7 +361,7 @@ impl Tsffs { "remove_exception_solution({exception})" ); - self.configuration_mut().exceptions_mut().remove(&exception); + self.exceptions.remove(&exception); } /// Set whether all CPU exceptions are considered solutions. If set to true, any @@ -344,7 +373,7 @@ impl Tsffs { "set_all_exceptions_are_solutions({all_exceptions_are_solutions})" ); - *self.configuration_mut().all_exceptions_are_solutions_mut() = all_exceptions_are_solutions; + self.all_exceptions_are_solutions = all_exceptions_are_solutions; } /// Set a specific breakpoint number to be considered a solution. If a breakpoint with @@ -355,9 +384,7 @@ impl Tsffs { "add_breakpoint_solution({breakpoint})" ); - self.configuration_mut() - .breakpoints_mut() - .insert(breakpoint); + self.breakpoints.insert(breakpoint); } /// Remove a specific breakpoint from consideration as a solution. If a breakpoint with @@ -367,9 +394,7 @@ impl Tsffs { self.as_conf_object(), "remove_breakpoint_solution({breakpoint})" ); - self.configuration_mut() - .breakpoints_mut() - .remove(&breakpoint); + self.breakpoints.remove(&breakpoint); } /// Set whether all SIMICS breakpoints are considered solutions. If set to true, any @@ -381,8 +406,7 @@ impl Tsffs { "set_all_breakpoints_are_solutions({all_breakpoints_are_solutions})" ); - *self.configuration_mut().all_breakpoints_are_solutions_mut() = - all_breakpoints_are_solutions; + self.all_breakpoints_are_solutions = all_breakpoints_are_solutions; } /// Set whether cmplog is enabled or disabled. Cmplog adds stages to trace and @@ -395,7 +419,7 @@ impl Tsffs { pub fn set_cmplog_enabled(&mut self, enabled: bool) { debug!(self.as_conf_object(), "set_cmplog_enabled({enabled})"); - *self.configuration_mut().cmplog_mut() = enabled; + self.cmplog = enabled; } /// Set the directory path where the input corpus should be taken from when the @@ -415,7 +439,7 @@ impl Tsffs { corpus_directory.display(), ); - *self.configuration_mut().corpus_directory_mut() = corpus_directory; + self.corpus_directory = corpus_directory; } else { error!(self.as_conf_object(), "Corpus directory cannot be set. The requested directory {corpus_directory_path} does not exist."); } @@ -438,7 +462,7 @@ impl Tsffs { solutions_directory.display(), ); - *self.configuration_mut().solutions_directory_mut() = solutions_directory; + self.solutions_directory = solutions_directory; } else { error!(self.as_conf_object(), "Solutions directory cannot be set. The requested directory {solutions_directory_path} does not exist."); } @@ -457,7 +481,8 @@ impl Tsffs { self.as_conf_object(), "set_generate_random_corpus({generate_random_corpus})" ); - *self.configuration_mut().generate_random_corpus_mut() = generate_random_corpus; + + self.generate_random_corpus = generate_random_corpus; Ok(()) } @@ -467,14 +492,10 @@ impl Tsffs { /// to limit the time of a fuzzing campaign, and is only useful for demonstration purposes. pub fn set_iterations(&mut self, iterations: usize) -> Result<()> { debug!(self.as_conf_object(), "set_iterations({iterations})"); - *self.configuration_mut().iterations_mut() = Some(iterations); - Ok(()) - } + self.iteration_limit = iterations; - pub fn get_configuration(&mut self) -> Result { - let value: AttrValueType = self.configuration_clone().try_into()?; - Ok(AttrValue::try_from(value)?.into()) + Ok(()) } /// Tokenize an executable file and add extracted tokens to token mutations for the fuzzer @@ -489,9 +510,7 @@ impl Tsffs { executable_path.display() ); - self.configuration_mut() - .tokens_mut() - .extend(tokenize_executable_file(executable_path)?); + self.token_executables.push(executable_path); Ok(()) } @@ -508,12 +527,7 @@ impl Tsffs { source_path.display() ); - self.configuration_mut().tokens_mut().extend( - tokenize_src_file([source_path])? - .iter() - .map(|e| e.as_bytes().to_vec()) - .collect::>(), - ); + self.token_src_files.push(source_path); Ok(()) } @@ -536,15 +550,16 @@ impl Tsffs { ); if token_file.is_file() { - self.configuration_mut().token_files_mut().push(token_file); + self.token_files.push(token_file); } Ok(()) } + #[interface(name = "add_trace_processor")] /// Add a processor to be traced. By default, only the processor the start event occurs on /// is used for tracing. - pub fn add_trace_processor(&mut self, cpu: *mut ConfObject) -> Result<()> { + pub fn add_trace_processor_legacy(&mut self, cpu: *mut ConfObject) -> Result<()> { debug!( self.as_conf_object(), "add_trace_processor({:#x})", cpu as usize @@ -555,59 +570,26 @@ impl Tsffs { Ok(()) } + #[interface(name = "add_architecture_hint")] /// Set an architecture hint to be used for a particular processor. This allows overriding /// the detected or reported architecture for the processor object. This is particularly /// useful for x86 processors which report as x86-64 processors, or when fuzzing x86 code /// running on an x86-64 processor in a backward compatibility mode. - pub fn add_architecture_hint(&mut self, cpu: *mut ConfObject, hint: *mut c_char) -> Result<()> { + pub fn add_architecture_hint_legacy( + &mut self, + cpu: *mut ConfObject, + hint: *mut c_char, + ) -> Result<()> { let hint = unsafe { CStr::from_ptr(hint) }.to_str()?; let processor_number = get_processor_number(cpu)?; + debug!( self.as_conf_object(), "add_architecture_hint({processor_number}, {hint})" ); - self.configuration_mut() - .architecture_hints_mut() - .insert(processor_number, ArchitectureHint::from_str(hint)?); - - Ok(()) - } - - /// Reproduce a test case execution. This will set the fuzzer's next input through - /// one execution using the provided file as input instead of taking input from the - /// fuzzer. It will stop execution at the first stop, timeout, or other solution - /// instead of continuing the fuzzing loop. - /// - /// This can be called during configuration *or* after stopping the fuzzer once a solution - /// has been found. - pub fn repro(&mut self, testcase_file: *mut c_char) -> Result<()> { - let simics_path = unsafe { CStr::from_ptr(testcase_file) }.to_str()?; - - let testcase_file = lookup_file(simics_path)?; - debug!(self.as_conf_object(), "repro({})", testcase_file.display()); - - let contents = read(&testcase_file).map_err(|e| { - anyhow!( - "Failed to read repro testcase file {}: {}", - testcase_file.display(), - e - ) - })?; - - *self.repro_testcase_mut() = Some(contents); - - if self.iterations_deref() > 0 { - // We've done an iteration already, so we need to reset and run - self.restore_initial_snapshot()?; - self.get_and_write_testcase()?; - self.post_timeout_event()?; - - run_alone(|| { - continue_simulation(0)?; - Ok(()) - })?; - } + self.architecture_hints + .insert(processor_number, ArchitectureHint::from_str(hint)?); Ok(()) } diff --git a/src/lib.rs b/src/lib.rs new file mode 100644 index 00000000..1435b658 --- /dev/null +++ b/src/lib.rs @@ -0,0 +1,835 @@ +// Copyright (C) 2024 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 + +//! TFFS Module for SIMICS +//! +//! # Overview +//! +//! This crate provides a client and module loadable by SIMICS to enable fuzzing on the SIMICS +//! platform. The client is intended to be used by the `simics-fuzz` crate, but it can be used +//! manually to enable additional use cases. +//! +//! # Capabilities +//! +//! The Module can: +//! +//! - Trace branch hits during an execution of a target on an x86_64 processor. These branches +//! are traced into shared memory in the format understood by the AFL family of tools. +//! - Catch exception/fault events registered in an initial configuration or dynamically using +//! a SIMICS Python script +//! - Catch timeout events registered in an initial configuration or dynamically using a SIMICS +//! Python script +//! - Manage the state of a target under test by taking and restoring a snapshot of its state for +//! deterministic snapshot fuzzing + +#![deny(clippy::all)] +// NOTE: We have to do this a lot, and it sucks to have all these functions be unsafe +#![allow(clippy::not_unsafe_ptr_arg_deref)] +#![deny(clippy::unwrap_used)] +#![warn(missing_docs)] + +use crate::interfaces::{config::config, fuzz::fuzz}; +use crate::state::{Solution, SolutionKind}; +#[cfg(not(simics_deprecated_api_rev_exec))] +use crate::util::Utils; +use anyhow::{anyhow, Result}; +use arch::{Architecture, ArchitectureHint, ArchitectureOperations}; +use fuzzer::{messages::FuzzerMessage, ShutdownMessage, Testcase}; +use indoc::indoc; +use libafl::{ + inputs::{HasBytesVec, Input}, + prelude::ExitKind, +}; +use libafl_bolts::prelude::OwnedMutSlice; +use libafl_targets::AFLppCmpLogMap; +use serde::{Deserialize, Serialize}; +use simics::{ + break_simulation, class, error, free_attribute, get_class, get_interface, get_processor_number, + info, lookup_file, object_clock, run_command, run_python, simics_init, trace, AsConfObject, + BreakpointId, ClassCreate, ClassObjectsFinalize, ConfObject, CoreBreakpointMemopHap, + CoreExceptionHap, CoreMagicInstructionHap, CoreSimulationStoppedHap, + CpuInstrumentationSubscribeInterface, Event, EventClassFlag, FromConfObject, HapHandle, + Interface, IntoAttrValueDict, +}; +#[cfg(any( + simics_experimental_api_snapshots, + simics_experimental_api_snapshots_v2, + simics_stable_api_snapshots +))] +// NOTE: save_snapshot used because it is a stable alias for both save_snapshot and take_snapshot +// which is necessary because this module is compatible with base versions which cross the +// deprecation boundary +use simics::{ + debug, restore_snapshot, save_snapshot, sys::save_flags_t, write_configuration_to_file, +}; +#[cfg(not(simics_deprecated_api_rev_exec))] +use simics::{ + discard_future, restore_micro_checkpoint, save_micro_checkpoint, MicroCheckpointFlags, +}; +use state::StopReason; +#[cfg(any( + simics_experimental_api_snapshots, + simics_experimental_api_snapshots_v2, + simics_stable_api_snapshots +))] +use std::fs::remove_dir_all; +use std::{ + alloc::{alloc_zeroed, Layout}, + cell::OnceCell, + collections::{hash_map::Entry, BTreeSet, HashMap, HashSet}, + fs::{write, File}, + path::PathBuf, + ptr::null_mut, + sync::mpsc::{Receiver, Sender}, + thread::JoinHandle, + time::SystemTime, +}; +use tracer::tsffs::{on_instruction_after, on_instruction_before}; +use typed_builder::TypedBuilder; + +pub(crate) mod arch; +pub(crate) mod fuzzer; +pub(crate) mod haps; +pub(crate) mod interfaces; +pub(crate) mod log; +pub(crate) mod state; +pub(crate) mod tracer; +pub(crate) mod traits; +pub(crate) mod util; + +/// The class name used for all operations interfacing with SIMICS + +pub const CLASS_NAME: &str = env!("CARGO_PKG_NAME"); + +#[derive(TypedBuilder, Serialize, Deserialize, Clone, Debug)] +pub(crate) struct StartBuffer { + /// The physical address of the buffer. Must be physical, if the input address was + /// virtual, it should be pre-translated + pub physical_address: u64, + /// Whether the address that translated to this physical address was virtual + /// this should not be used or checked, it's simply informational + pub virt: bool, +} + +#[derive(TypedBuilder, Serialize, Deserialize, Clone, Debug)] +pub(crate) struct StartSize { + #[builder(default, setter(into, strip_option))] + /// The address of the magic start size value, and whether the address that translated + /// to this physical address was virtual. The address must be physical. + pub physical_address: Option<(u64, bool)>, + #[builder(default, setter(into, strip_option))] + // NOTE: There is no need to save the size fo the size, it must be pointer-sized. + /// The initial size of the magic start size + pub initial_size: Option, +} + +#[class(name = "tsffs", skip_objects_finalize, attr_value)] +#[derive(AsConfObject, FromConfObject, Default, IntoAttrValueDict)] +/// The main module class for the TSFFS fuzzer, stores state and configuration information +pub(crate) struct Tsffs { + #[class(attribute(optional, default = false))] + /// Whether all breakpoints are treated as solutions. When set to `True`, any breakpoint + /// which triggers a `Core_Breakpoint_Memop` HAP will be treated as a solution. This allows + /// setting memory breakpoints on specific memory locations to trigger a solution when the + /// memory is read, written, or executed. Not all breakpoints cause this HAP to occur. + /// + /// For example, to set an execution breakpoint on the address $addr: + /// + /// $addr = 0x100000 + /// $bp = (bp.memory.break -x $addr) + /// @tsffs.all_breakpoints_are_solutions = True + /// + /// Tsffs will treat the breakpoint as a solution (along with all other + /// breakpoints), and the fuzzer will stop when the breakpoint is hit. + pub all_breakpoints_are_solutions: bool, + #[class(attribute(optional, default = false))] + /// Whether all exceptions are treated as solutions. When set to `True`, any CPU exception + /// or interrupt which triggers a `Core_Exception` HAP will be treated as a solution. This + /// can be useful when enabled in a callback after which any exception is considered a + /// solution and is typically not useful when enabled during the start-up process because + /// most processors will generate exceptions during start-up and during normal operation. + pub all_exceptions_are_solutions: bool, + #[class(attribute(optional))] + #[attr_value(fallible)] + /// The set of exceptions which are treated as solutions. For example on x86_64, setting: + /// + /// @tsffs.exceptions = [14] + /// + /// would treat any page fault as a solution. + pub exceptions: BTreeSet, + #[class(attribute(optional))] + #[attr_value(fallible)] + /// The set of breakpoints which are treated as solutions. For example, to set a solution + /// breakpoint on the address $addr (note the breakpoint set from the Simics command is + /// accessed through the simenv namespace): + /// + /// $addr = 0x100000 + /// $bp = (bp.memory.break -x $addr) + /// @tsffs.breakpoints = [simenv.bp] + pub breakpoints: BTreeSet, + #[class(attribute(optional, default = 5.0))] + /// The timeout in seconds of virtual time for each iteration of the fuzzer. If the virtual + /// time timeout is exceeded for a single iteration, the iteration is stopped and the testcase + /// is saved as a solution. + pub timeout: f64, + #[class(attribute(optional, default = 60))] + /// The timeout in seconds of virtual time for each iteration of the fuzzer. If the virtual + /// time timeout is exceeded for a single iteration, the iteration is stopped and the testcase + /// is saved as a solution. + pub executor_timeout: u64, + #[class(attribute(optional, default = true))] + /// Whether the fuzzer should start on compiled-in harnesses. If set to `True`, the fuzzer + /// will start fuzzing when a harness macro is executed. + pub start_on_harness: bool, + #[class(attribute(optional, default = true))] + /// Whether the fuzzer should stop on compiled-in harnesses. If set to `True`, the fuzzer + /// will start fuzzing when a harness macro is executed. + pub stop_on_harness: bool, + #[class(attribute(optional, default = true))] + /// Whether snapshots should be used. Snapshots are introduced as of Simics 6.0.173 and + /// replace rev-exec micro checkpoints as the only method of taking full simulation + /// snapshots as of Simics 7.0.0. If set to `True`, the fuzzer will use snapshots to + /// restore the state of the simulation to a known state before each iteration. If set to + /// `False` the fuzzer will use rev-exec micro checkpoints to restore the state of the + /// simulation to a known state before each iteration. If snapshots are not supported by + /// the version of SIMICS being used, the fuzzer will quit with an error message when this + /// option is set. + pub use_snapshots: bool, + #[class(attribute(optional, default = 1))] + /// The magic number `n` which is passed to the platform-specific magic instruction HAP + /// by a compiled-in harness to signal that the fuzzer should start the fuzzing loop. + /// + /// This option is useful when fuzzing a target which has multiple start harnesses compiled + /// into it, and the fuzzer should start on a specific harness. + pub magic_start: i64, + #[class(attribute(optional, default = 2))] + /// The magic number `n` which is passed to the platform-specific magic instruction HAP + /// by a compiled-in harness to signal that the fuzzer should stop execution of the current + /// iteration. + /// + /// This option is useful when fuzzing a target which has multiple stop harnesses compiled + /// into it, and the fuzzer should stop on a specific harness. + pub magic_stop: i64, + #[class(attribute(optional, default = 3))] + /// The magic number `n` which is passed to the platform-specific magic instruction HAP + /// by a compiled-in harness to signal that the fuzzer should stop execution of the current + /// iteration and save the testcase as a solution. + pub magic_assert: i64, + #[class(attribute(optional))] + /// The limit on the number of fuzzing iterations to execute. If set to 0, the fuzzer will + /// run indefinitely. If set to a positive integer, the fuzzer will run until the limit is + /// reached. + pub iteration_limit: usize, + #[class(attribute(optional, default = 8))] + /// The size of the corpus to generate randomly. If `generate_random_corpus` is set to + /// `True`, the fuzzer will generate a random corpus of this size before starting the + /// fuzzing loop. + pub initial_random_corpus_size: usize, + #[class(attribute(optional, default = lookup_file("%simics%")?.join("corpus")))] + #[attr_value(fallible)] + /// The directory to load the corpus from and save new corpus items to. This directory + /// may be a SIMICS relative path prefixed with "%simics%". It is an error to provide no + /// corpus directory when `set_generate_random_corpus(True)` has not been called prior to + /// fuzzer startup. It is also an error to provide an *empty* corpus directory without + /// calling `set_generate_random_corpus(True)`. If not provided, "%simics%/corpus" will + /// be used by default. + pub corpus_directory: PathBuf, + #[class(attribute(optional, default = lookup_file("%simics%")?.join("solutions")))] + #[attr_value(fallible)] + /// The directory to save solutions to. This directory may be a SIMICS relative path + /// prefixed with "%simics%". If not provided, "%simics%/solutions" will be used by + /// default. + pub solutions_directory: PathBuf, + #[class(attribute(optional, default = false))] + /// Whether to generate a random corpus before starting the fuzzing loop. If set to `True`, + /// the fuzzer will generate a random corpus of size `initial_random_corpus_size` before + /// starting the fuzzing loop. This should generally be used only for debugging and testing + /// purposes, and is not recommended for use in production. A real corpus representative of + /// both valid and invalid inputs should be used in production. + pub generate_random_corpus: bool, + #[class(attribute(optional, default = true))] + /// Whether comparison logging should be used during fuzzing to enable value-driven + /// mutations. If set to `True`, the fuzzer will use comparison logging to enable + /// value-driven mutations. This should always be enabled unless the target is known to + /// not benefit from value-driven mutations or run too slowly when solving for comparison + /// values. + pub cmplog: bool, + #[class(attribute(optional, default = true))] + /// Whether coverage reporting should be enabled. When enabled, new edge addresses will + /// be logged. + pub coverage_reporting: bool, + #[class(attribute(optional))] + #[attr_value(fallible)] + /// A set of executable files to tokenize. Tokens will be extracted from these files and + /// used to drive token mutations of testcases. + pub token_executables: Vec, + #[class(attribute(optional))] + #[attr_value(fallible)] + /// A set of source files to tokenize. Tokens will be extracted from these files and used + /// to drive token mutations of testcases. C source files are expected, and strings and + /// tokens will be extracted from strings in the source files. + pub token_src_files: Vec, + #[class(attribute(optional))] + #[attr_value(fallible)] + /// Files in the format of: + /// + /// x = "hello" + /// y = "foo\x41bar" + /// + /// which will be used to drive token mutations of testcases. + pub token_files: Vec, + #[class(attribute(optional))] + #[attr_value(fallible)] + /// Sets of tokens to use to drive token mutations of testcases. Each token set is a + /// bytes which will be randomically inserted into testcases. + pub tokens: Vec>, + #[attr_value(skip)] + /// A mapping of architecture hints from CPU index to architecture hint. This architecture + /// hint overrides the detected architecture of the CPU core. This is useful when the + /// architecture of the CPU core is not detected correctly, or when the architecture of the + /// CPU core is not known at the time the fuzzer is started. Specifically, x86 cores which + /// report their architecture as x86_64 can be overridden to x86. + pub architecture_hints: HashMap, + #[class(attribute(optional, default = lookup_file("%simics%")?.join("checkpoint.ckpt")))] + #[attr_value(fallible)] + /// The path to the checkpoint saved prior to fuzzing when using snapshots + pub checkpoint_path: PathBuf, + #[class(attribute(optional, default = true))] + pub pre_snapshot_checkpoint: bool, + #[class(attribute(optional, default = lookup_file("%simics%")?.join("log.json")))] + #[attr_value(fallible)] + /// The path to the log file which will be used to log the fuzzer's output statistics + pub log_path: PathBuf, + #[class(attribute(optional, default = true))] + pub log_to_file: bool, + #[class(attribute(optional, default = false))] + pub keep_all_corpus: bool, + + #[attr_value(skip)] + /// Handle for the core simulation stopped hap + stop_hap_handle: HapHandle, + #[attr_value(skip)] + /// Handle for the core breakpoint memop hap + breakpoint_memop_hap_handle: HapHandle, + #[attr_value(skip)] + /// Handle for exception HAP + exception_hap_handle: HapHandle, + #[attr_value(skip)] + /// The handle for the registered magic HAP, used to + /// listen for magic start and stop if `start_on_harness` + /// or `stop_on_harness` are set. + magic_hap_handle: HapHandle, + + // Threads and message channels + #[attr_value(skip)] + /// Fuzzer thread + fuzz_thread: OnceCell>>, + #[attr_value(skip)] + /// Message sender to the fuzzer thread. TSFFS sends exit kinds to the fuzzer thread to + /// report whether testcases resulted in normal exit, timeout, or solutions. + fuzzer_tx: OnceCell>, + #[attr_value(skip)] + /// Message receiver from the fuzzer thread. TSFFS receives new testcases and run configuration + /// from the fuzzer thread. + fuzzer_rx: OnceCell>, + #[attr_value(skip)] + /// A message sender to inform the fuzzer thread that it should exit. + fuzzer_shutdown: OnceCell>, + #[attr_value(skip)] + /// Reciever from the fuzzer thread to receive messages from the fuzzer thread + /// including status messages and structured introspection data like new edge findings. + fuzzer_messages: OnceCell>, + + // Fuzzer coverage maps + #[attr_value(skip)] + /// The coverage map + coverage_map: OnceCell>, + #[attr_value(skip)] + /// A pointer to the AFL++ comparison map + aflpp_cmp_map_ptr: OnceCell<*mut AFLppCmpLogMap>, + #[attr_value(skip)] + /// The owned AFL++ comparison map + aflpp_cmp_map: OnceCell<&'static mut AFLppCmpLogMap>, + #[attr_value(skip)] + /// The previous location for coverage for calculating the hash of edges. + coverage_prev_loc: u64, + #[attr_value(skip)] + /// The registered timeout event which is registered and used to detect timeouts in + /// virtual time + timeout_event: OnceCell, + #[attr_value(skip)] + /// The set of edges which have been seen at least once. + edges_seen: HashSet, + #[attr_value(skip)] + /// A map of the new edges to their AFL indices seen since the last time the fuzzer + /// provided an update + edges_seen_since_last: HashMap, + + #[attr_value(skip)] + /// The name of the fuzz snapshot, if saved + snapshot_name: OnceCell, + #[attr_value(skip)] + /// The index of the micro checkpoint saved for the fuzzer. Only present if not using + /// snapshots. + micro_checkpoint_index: OnceCell, + + #[attr_value(skip)] + /// The reason the current stop occurred + stop_reason: Option, + #[attr_value(skip)] + /// The buffer and size information, if saved + start_buffer: OnceCell, + #[attr_value(skip)] + start_size: OnceCell, + + #[attr_value(skip)] + // #[builder(default = SystemTime::now())] + /// The time the fuzzer was started at + start_time: OnceCell, + + #[attr_value(skip)] + log: OnceCell, + + #[attr_value(skip)] + /// Whether cmplog is currently enabled + coverage_enabled: bool, + #[attr_value(skip)] + /// Whether cmplog is currently enabled + cmplog_enabled: bool, + #[attr_value(skip)] + /// The number of the processor which starts the fuzzing loop (via magic or manual methods) + start_processor_number: OnceCell, + #[attr_value(skip)] + /// Tracked processors. This always includes the start processor, and may include + /// additional processors that are manually added by the user + processors: HashMap, + #[attr_value(skip)] + /// A testcase to use for repro + repro_testcase: Option>, + #[attr_value(skip)] + /// Whether a bookmark has been set for repro mode + repro_bookmark_set: bool, + #[attr_value(skip)] + /// Whether the fuzzer is currently stopped in repro mode + stopped_for_repro: bool, + #[attr_value(skip)] + /// The number of iterations which have been executed so far + iterations: usize, +} + +impl ClassObjectsFinalize for Tsffs { + unsafe fn objects_finalized(instance: *mut ConfObject) -> simics::Result<()> { + let tsffs: &'static mut Tsffs = instance.into(); + tsffs.stop_hap_handle = CoreSimulationStoppedHap::add_callback( + // NOTE: Core_Simulation_Stopped is called with an object, exception and + // error string, but the exception is always + // SimException::SimExc_No_Exception and the error string is always + // null_mut. + move |_, _, _| { + // On stops, call the module's stop callback method, which will in turn call the + // stop callback methods on each of the module's components. The stop reason will + // be retrieved from the module, if one is set. It is an error for the module to + // stop itself without setting a reason + let tsffs: &'static mut Tsffs = instance.into(); + tsffs + .on_simulation_stopped() + .expect("Error calling simulation stopped callback"); + }, + )?; + tsffs.breakpoint_memop_hap_handle = + CoreBreakpointMemopHap::add_callback(move |trigger_obj, breakpoint_number, memop| { + let tsffs: &'static mut Tsffs = instance.into(); + tsffs + .on_breakpoint_memop(trigger_obj, breakpoint_number, memop) + .expect("Error calling breakpoint memop callback"); + })?; + tsffs.exception_hap_handle = + CoreExceptionHap::add_callback(move |trigger_obj, exception_number| { + let tsffs: &'static mut Tsffs = instance.into(); + tsffs + .on_exception(trigger_obj, exception_number) + .expect("Error calling breakpoint memop callback"); + })?; + tsffs.magic_hap_handle = + CoreMagicInstructionHap::add_callback(move |trigger_obj, magic_number| { + let tsffs: &'static mut Tsffs = instance.into(); + + tsffs + .on_magic_instruction(trigger_obj, magic_number) + .expect("Error calling magic instruction callback"); + })?; + tsffs + .coverage_map + .set(OwnedMutSlice::from(vec![0; Tsffs::COVERAGE_MAP_SIZE])) + .map_err(|_e| anyhow!("Value already set"))?; + + tsffs + .aflpp_cmp_map_ptr + .set(unsafe { alloc_zeroed(Layout::new::()) as *mut _ }) + .map_err(|_e| anyhow!("Value already set"))?; + + tsffs + .aflpp_cmp_map + .set(unsafe { + &mut **tsffs + .aflpp_cmp_map_ptr + .get() + .expect("Value just set and known to be valid") + }) + .map_err(|_e| anyhow!("Value already set"))?; + + tsffs + .timeout_event + .set( + Event::builder() + .name(Tsffs::TIMEOUT_EVENT_NAME) + .cls(get_class(CLASS_NAME).expect("Error getting class")) + .flags(EventClassFlag::Sim_EC_No_Flags) + .build(), + ) + .map_err(|_e| anyhow!("Value already set"))?; + + Ok(()) + } +} + +impl Tsffs { + /// The size of the coverage map in bytes + pub const COVERAGE_MAP_SIZE: usize = 128 * 1024; + /// The name of the registered timeout event + pub const TIMEOUT_EVENT_NAME: &'static str = "detector_timeout_event"; + /// The name of the initial snapshot + pub const SNAPSHOT_NAME: &'static str = "tsffs-origin-snapshot"; +} + +/// Implementations for controlling the simulation +impl Tsffs { + /// Stop the simulation with a reason + pub fn stop_simulation(&mut self, reason: StopReason) -> Result<()> { + let break_string = reason.to_string(); + self.stop_reason = Some(reason); + break_simulation(break_string)?; + + Ok(()) + } +} + +/// Implementations for common functionality +impl Tsffs { + /// Add a monitored processor to the simulation and whether the processor is the + /// "start processor" which is the processor running when the fuzzing loop begins + pub fn add_processor(&mut self, cpu: *mut ConfObject, is_start: bool) -> Result<()> { + let cpu_number = get_processor_number(cpu)?; + + if let Entry::Vacant(e) = self.processors.entry(cpu_number) { + let architecture = if let Some(hint) = self.architecture_hints.get(&cpu_number) { + hint.architecture(cpu)? + } else { + Architecture::new(cpu)? + }; + e.insert(architecture); + let mut cpu_interface: CpuInstrumentationSubscribeInterface = get_interface(cpu)?; + cpu_interface.register_instruction_after_cb( + null_mut(), + Some(on_instruction_after), + self as *mut Self as *mut _, + )?; + cpu_interface.register_instruction_before_cb( + null_mut(), + Some(on_instruction_before), + self as *mut Self as *mut _, + )?; + } + + if is_start { + self.start_processor_number + .set(cpu_number) + .map_err(|_| anyhow!("Start processor number already set"))?; + } + + Ok(()) + } + + /// Return a reference to the saved "start processor" if there is one. There will be no + /// "start processor" before a start harness (manual or magic) is executed. + pub fn start_processor(&mut self) -> Option<&mut Architecture> { + self.start_processor_number + .get() + .and_then(|n| self.processors.get_mut(n)) + } +} + +impl Tsffs { + /// Save the initial snapshot using the configured method (either rev-exec micro checkpoints + /// or snapshots) + pub fn save_initial_snapshot(&mut self) -> Result<()> { + if self.use_snapshots && self.snapshot_name.get().is_none() { + #[cfg(any( + simics_experimental_api_snapshots, + simics_experimental_api_snapshots_v2, + simics_stable_api_snapshots + ))] + { + if self.checkpoint_path.exists() { + remove_dir_all(&self.checkpoint_path)?; + } + + debug!( + self.as_conf_object(), + "Saving checkpoint to {}", + self.checkpoint_path.display() + ); + + if self.pre_snapshot_checkpoint { + write_configuration_to_file(&self.checkpoint_path, save_flags_t(0))?; + } + + save_snapshot(Self::SNAPSHOT_NAME)?; + self.snapshot_name + .set(Self::SNAPSHOT_NAME.to_string()) + .map_err(|_| anyhow!("Snapshot name already set"))?; + } + #[cfg(not(any( + simics_experimental_api_snapshots, + simics_experimental_api_snapshots_v2, + simics_stable_api_snapshots + )))] + panic!("Snapshots cannot be used without SIMICS support from recent SIMICS versions."); + } else if !self.use_snapshots + && self.snapshot_name.get().is_none() + && self.micro_checkpoint_index.get().is_none() + { + #[cfg(not(simics_deprecated_api_rev_exec))] + { + save_micro_checkpoint( + Self::SNAPSHOT_NAME, + MicroCheckpointFlags::Sim_MC_ID_User | MicroCheckpointFlags::Sim_MC_Persistent, + )?; + + self.snapshot_name + .set(Self::SNAPSHOT_NAME.to_string()) + .map_err(|_| anyhow!("Snapshot name already set"))?; + + self.micro_checkpoint_index + .set( + Utils::get_micro_checkpoints()? + .iter() + .enumerate() + .find_map(|(i, c)| (c.name == Self::SNAPSHOT_NAME).then_some(i as i32)) + .ok_or_else(|| { + anyhow!("No micro checkpoint with just-registered name found") + })?, + ) + .map_err(|_| anyhow!("Micro checkpoint index already set"))?; + } + #[cfg(simics_deprecated_api_rev_exec)] + panic!("Micro checkpoints are deprecated in SIMICS >=7.0.0 and cannot be used. Set `use_snapshots` to `true` to use snapshots instead."); + } + + Ok(()) + } + + /// Restore the initial snapshot using the configured method (either rev-exec micro checkpoints + /// or snapshots) + pub fn restore_initial_snapshot(&mut self) -> Result<()> { + if self.use_snapshots { + #[cfg(any( + simics_experimental_api_snapshots, + simics_experimental_api_snapshots_v2, + simics_stable_api_snapshots + ))] + restore_snapshot(Self::SNAPSHOT_NAME)?; + #[cfg(not(any( + simics_experimental_api_snapshots, + simics_experimental_api_snapshots_v2, + simics_stable_api_snapshots + )))] + panic!("Snapshots cannot be used without SIMICS support from recent SIMICS versions."); + } else { + #[cfg(not(simics_deprecated_api_rev_exec))] + { + restore_micro_checkpoint(*self.micro_checkpoint_index.get().ok_or_else(|| { + anyhow!("Not using snapshots and no micro checkpoint index present") + })?)?; + discard_future()?; + } + + #[cfg(simics_deprecated_api_rev_exec)] + panic!("Micro checkpoints are deprecated in SIMICS >=7.0.0 and cannot be used. Set `use_snapshots` to `true` to use snapshots instead."); + } + + Ok(()) + } + + /// Whether an initial snapshot has been saved + pub fn have_initial_snapshot(&self) -> bool { + (self.snapshot_name.get().is_some() && self.use_snapshots) + || (self.snapshot_name.get().is_some() + && self.micro_checkpoint_index.get().is_some() + && !self.use_snapshots) + } + + /// Save a repro bookmark if one is needed + pub fn save_repro_bookmark_if_needed(&mut self) -> Result<()> { + if self.repro_testcase.is_some() && !self.repro_bookmark_set { + free_attribute(run_command("set-bookmark start")?)?; + self.repro_bookmark_set = true; + } + + Ok(()) + } +} + +impl Tsffs { + /// Get a testcase from the fuzzer and write it to memory along with, optionally, a size + pub fn get_and_write_testcase(&mut self) -> Result<()> { + let testcase = self.get_testcase()?; + + if self.keep_all_corpus { + let testcase_name = testcase.testcase.generate_name(0); + trace!( + self.as_conf_object(), + "Writing testcase {}.testcase to corpus directory: {}", + &testcase_name, + self.corpus_directory.display() + ); + + write( + self.corpus_directory + .join(format!("{}.testcase", &testcase_name)), + testcase.testcase.bytes(), + )?; + } + + self.cmplog_enabled = testcase.cmplog; + + // TODO: Fix cloning - refcell? + let start_buffer = self + .start_buffer + .get() + .ok_or_else(|| anyhow!("No start buffer"))? + .clone(); + + let start_size = self + .start_size + .get() + .ok_or_else(|| anyhow!("No start size"))? + .clone(); + + let start_processor = self + .start_processor() + .ok_or_else(|| anyhow!("No start processor"))?; + + start_processor.write_start(testcase.testcase.bytes(), &start_buffer, &start_size)?; + + Ok(()) + } + + /// Post a new timeout event on the start processor with the configured timeout in + /// seconds + pub fn post_timeout_event(&mut self) -> Result<()> { + let tsffs_ptr = self.as_conf_object_mut(); + let start_processor = self + .start_processor() + .ok_or_else(|| anyhow!("No start processor"))?; + let start_processor_time = start_processor.cycle().get_time()?; + let start_processor_cpu = start_processor.cpu(); + let start_processor_clock = object_clock(start_processor_cpu)?; + let timeout_time = self.timeout + start_processor_time; + trace!( + self.as_conf_object(), + "Posting event on processor at time {} for {}s (time {})", + start_processor_time, + self.timeout, + timeout_time + ); + self.timeout_event + .get_mut() + .ok_or_else(|| anyhow!("No timeout event set"))? + .post_time( + start_processor_cpu, + start_processor_clock, + self.timeout, + move |obj| { + let tsffs: &'static mut Tsffs = tsffs_ptr.into(); + info!(tsffs.as_conf_object_mut(), "timeout({:#x})", obj as usize); + tsffs + .stop_simulation(StopReason::Solution( + Solution::builder().kind(SolutionKind::Timeout).build(), + )) + .expect("Error calling timeout callback"); + }, + )?; + + Ok(()) + } + + /// Cancel a pending timeout event, if there is one. Used when execution reaches a + /// solution or normal stop condition before a timeout occurs. + pub fn cancel_timeout_event(&mut self) -> Result<()> { + if let Some(start_processor) = self.start_processor() { + let start_processor_time = start_processor.cycle().get_time()?; + let start_processor_cpu = start_processor.cpu(); + let start_processor_clock = object_clock(start_processor_cpu)?; + match self + .timeout_event + .get() + .ok_or_else(|| anyhow!("No timeout event set"))? + .find_next_time(start_processor_clock, start_processor_cpu) + { + Ok(next_time) => trace!( + self.as_conf_object(), + "Cancelling event with next time {} (current time {})", + next_time, + start_processor_time + ), + // NOTE: This is not an error, it almost always means we did not find a next + // time, which always happens if the timeout goes off. + Err(e) => trace!( + self.as_conf_object(), + "Not cancelling event with next time due to error: {e}" + ), + } + self.timeout_event + .get() + .ok_or_else(|| anyhow!("No timeout event set"))? + .cancel_time(start_processor_cpu, start_processor_clock)?; + } + Ok(()) + } +} + +#[simics_init(name = "tsffs", class = "tsffs")] +/// Initialize TSFFS +fn init() { + let tsffs = Tsffs::create().expect("Failed to create class tsffs"); + config::register(tsffs).expect("Failed to register config interface for tsffs"); + fuzz::register(tsffs).expect("Failed to register config interface for tsffs"); + run_python(indoc! {r#" + def init_tsffs_cmd(): + try: + global tsffs + tsffs = SIM_create_object(SIM_get_class("tsffs"), "tsffs", []) + except Exception as e: + raise CliError(f"Failed to create tsffs: {e}") + + print("TSFFS initialized. Configure and use it as @tsffs.") + "#}) + .expect("Failed to run python"); + run_python(indoc! {r#" + new_command( + "init-tsffs", + init_tsffs_cmd, + [], + type = ["Fuzzing"], + see_also = [], + short = "Initialize the TSFFS fuzzer", + doc = "Initialize the TSFFS fuzzer" + ) + "#}) + .map_err(|e| { + error!("{e}"); + e + }) + .expect("Failed to run python"); +} diff --git a/src/log/mod.rs b/src/log/mod.rs new file mode 100644 index 00000000..0bacb689 --- /dev/null +++ b/src/log/mod.rs @@ -0,0 +1,114 @@ +// Copyright (C) 2024 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 + +//! Logging + +use crate::{fuzzer::messages::FuzzerMessage, Tsffs}; +use anyhow::{anyhow, Result}; +use serde::Serialize; +use simics::{info, AsConfObject}; +use std::{fs::OpenOptions, io::Write}; + +#[derive(Clone, Debug, Serialize)] +pub(crate) struct LogMessageEdge { + pub pc: u64, + pub afl_idx: u64, +} + +#[derive(Clone, Debug, Serialize)] +pub(crate) struct LogMessageInteresting { + pub indices: Vec, + pub input: Vec, + pub edges: Vec, +} + +#[derive(Clone, Debug, Serialize)] +pub(crate) enum LogMessage { + Message(String), + Interesting(LogMessageInteresting), +} + +impl Tsffs { + pub fn log_messages(&mut self) -> Result<()> { + let messages = self + .fuzzer_messages + .get() + .map(|m| m.try_iter().collect::>()) + .unwrap_or_default(); + + messages.iter().try_for_each(|m| { + match m { + FuzzerMessage::String(s) => { + info!(self.as_conf_object(), "Fuzzer message: {s}"); + self.log(LogMessage::Message(s.clone()))?; + } + FuzzerMessage::Interesting { indices, input } => { + info!( + self.as_conf_object(), + "Interesting input for AFL indices {indices:?} with input {input:?}" + ); + + if !self.edges_seen_since_last.is_empty() { + let mut edges = self + .edges_seen_since_last + .iter() + .map(|(p, a)| LogMessageEdge { + pc: *p, + afl_idx: *a, + }) + .collect::>(); + edges.sort_by(|e1, e2| e1.pc.cmp(&e2.pc)); + + info!( + self.as_conf_object(), + "{} Interesting edges seen since last report ({} edges total)", + self.edges_seen_since_last.len(), + self.edges_seen.len(), + ); + + self.log(LogMessage::Interesting(LogMessageInteresting { + indices: indices.clone(), + input: input.clone(), + edges, + }))?; + + self.edges_seen_since_last.clear(); + } + } + } + + Ok::<(), anyhow::Error>(()) + })?; + + Ok(()) + } + + pub fn log(&mut self, item: I) -> Result<()> + where + I: Serialize, + { + if !self.log_to_file { + return Ok(()); + } + + let item = serde_json::to_string(&item).expect("Failed to serialize item") + "\n"; + + let log = if let Some(log) = self.log.get_mut() { + log + } else { + self.log + .set( + OpenOptions::new() + .create(true) + .append(true) + .open(&self.log_path)?, + ) + .map_err(|_| anyhow!("Log already set"))?; + self.log.get_mut().ok_or_else(|| anyhow!("Log not set"))? + }; + + log.write_all(item.as_bytes())?; + + Ok(()) + } +} diff --git a/modules/tsffs/src/tsffs/src/state/mod.rs b/src/state/mod.rs similarity index 58% rename from modules/tsffs/src/tsffs/src/state/mod.rs rename to src/state/mod.rs index 07438ee6..af51a794 100644 --- a/modules/tsffs/src/tsffs/src/state/mod.rs +++ b/src/state/mod.rs @@ -1,71 +1,67 @@ -// Copyright (C) 2023 Intel Corporation +// Copyright (C) 2024 Intel Corporation // SPDX-License-Identifier: Apache-2.0 //! Definitions for tracking the state of the fuzzer use anyhow::{anyhow, Error, Result}; -use getters2::Getters; use serde::{Deserialize, Serialize}; use serde_json::{from_str, to_string}; use simics::api::ConfObject; -use std::{ptr::null_mut, str::FromStr}; +use std::{ + fmt::{Display, Formatter}, + ptr::null_mut, + str::FromStr, +}; use typed_builder::TypedBuilder; #[derive(Serialize, Deserialize, Debug, Clone)] -pub enum ManualStartSize { +pub(crate) enum ManualStartSize { MaximumSize(u64), SizeAddress(u64), NoSize, } -#[derive(TypedBuilder, Getters, Serialize, Deserialize, Debug, Clone)] -#[getters(mutable)] -pub struct ManualStart { +#[derive(TypedBuilder, Serialize, Deserialize, Debug, Clone)] +pub(crate) struct ManualStart { #[builder(default = null_mut())] #[serde(skip, default = "null_mut")] - #[getters(deref)] - processor: *mut ConfObject, + pub processor: *mut ConfObject, #[builder(default, setter(into, strip_option))] - buffer: Option, + pub buffer: Option, #[builder(default = ManualStartSize::NoSize)] - size: ManualStartSize, + pub size: ManualStartSize, #[builder(default)] - #[getters(deref)] - virt: bool, + pub virt: bool, } -#[derive(TypedBuilder, Getters, Serialize, Deserialize, Debug, Clone)] -#[getters(mutable)] -pub struct MagicStart { +#[derive(TypedBuilder, Serialize, Deserialize, Debug, Clone)] +pub(crate) struct MagicStart { #[builder(default = null_mut())] #[serde(skip, default = "null_mut")] - #[getters(deref)] - processor: *mut ConfObject, + pub processor: *mut ConfObject, } -#[derive(TypedBuilder, Getters, Serialize, Deserialize, Debug, Clone, Default)] -#[getters(mutable)] -pub struct Stop {} +#[derive(TypedBuilder, Serialize, Deserialize, Debug, Clone, Default)] +pub(crate) struct Stop {} #[derive(Serialize, Deserialize, Debug, Clone)] -pub enum SolutionKind { +pub(crate) enum SolutionKind { Timeout, Exception, Breakpoint, Manual, } -#[derive(TypedBuilder, Getters, Serialize, Deserialize, Debug, Clone)] -#[getters(mutable)] -pub struct Solution { - kind: SolutionKind, +#[derive(TypedBuilder, Serialize, Deserialize, Debug, Clone)] +pub(crate) struct Solution { + pub kind: SolutionKind, } #[derive(Debug, Clone, Serialize, Deserialize)] /// Definition of all the reasons the simulator could be stopped by the fuzzer. In general, /// callbacks in the fuzzer, for example [`Driver::on_magic_instruction`] may be called /// asynchronously and stop the simulation. -pub enum StopReason { +pub(crate) enum StopReason { MagicStart(MagicStart), MagicStop(Stop), ManualStart(ManualStart), @@ -73,9 +69,9 @@ pub enum StopReason { Solution(Solution), } -impl ToString for StopReason { - fn to_string(&self) -> String { - to_string(self).expect("Failed to serialize to string") +impl Display for StopReason { + fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result { + write!(f, "{}", to_string(self).unwrap_or_default()) } } diff --git a/modules/tsffs/src/tsffs/src/tracer/mod.rs b/src/tracer/mod.rs similarity index 72% rename from modules/tsffs/src/tsffs/src/tracer/mod.rs rename to src/tracer/mod.rs index 02ba074f..4126775f 100644 --- a/modules/tsffs/src/tsffs/src/tracer/mod.rs +++ b/src/tracer/mod.rs @@ -1,12 +1,11 @@ -// Copyright (C) 2023 Intel Corporation +// Copyright (C) 2024 Intel Corporation // SPDX-License-Identifier: Apache-2.0 use anyhow::{anyhow, bail, Error, Result}; -use ffi_macro::ffi; -use getters2::Getters; +use ffi::ffi; use libafl::prelude::CmpValues; use libafl_bolts::{AsMutSlice, AsSlice}; -use libafl_targets::{AFLppCmpLogOperands, AFLPP_CMPLOG_MAP_H, AFL_CMP_TYPE_INS}; +use libafl_targets::{AFLppCmpLogOperands, AFL_CMP_TYPE_INS, CMPLOG_MAP_H}; use simics::{ api::{ get_processor_number, sys::instruction_handle_t, AsConfObject, AttrValue, AttrValueType, @@ -20,7 +19,7 @@ use typed_builder::TypedBuilder; use crate::{arch::ArchitectureOperations, Tsffs}; #[derive(Debug, PartialEq, Eq, PartialOrd, Ord, Hash)] -pub enum CmpExpr { +pub(crate) enum CmpExpr { Deref((Box, Option)), Reg((String, u8)), Mul((Box, Box)), @@ -36,9 +35,10 @@ pub enum CmpExpr { Addr(u64), } +#[allow(unused)] #[derive(Clone, Copy, Debug, PartialEq, Eq, PartialOrd, Ord, Hash)] #[repr(u8)] -pub enum CmpType { +pub(crate) enum CmpType { Equal = 1, Greater = 2, Lesser = 4, @@ -48,8 +48,9 @@ pub enum CmpType { Transform = 64, } +#[allow(unused)] #[derive(Debug, PartialEq, Eq, PartialOrd, Ord, Hash)] -pub enum CmpValue { +pub(crate) enum CmpValue { U8(u8), I8(i8), U16(u16), @@ -123,10 +124,9 @@ fn hash_index(value: u64, len: u64) -> u64 { u64::from_le_bytes(buffer) } -#[derive(TypedBuilder, Debug, Clone, Getters, PartialEq, Eq)] -pub struct TraceEntry { +#[derive(TypedBuilder, Debug, Clone, PartialEq, Eq)] +pub(crate) struct TraceEntry { #[builder(default, setter(into, strip_option))] - #[getters(deref)] /// The target of an edge in the trace edge: Option, #[builder(default, setter(into, strip_option))] @@ -140,7 +140,7 @@ impl Default for TraceEntry { } #[derive(Debug, Clone, Copy, PartialEq, Eq, Ord, PartialOrd, Hash)] -pub enum CoverageMode { +pub(crate) enum CoverageMode { HitCount, Once, } @@ -206,49 +206,52 @@ impl From for AttrValueType { impl Tsffs { fn log_pc(&mut self, pc: u64) -> Result<()> { - let afl_idx = - (pc ^ self.coverage_prev_loc) % self.coverage_map_ref().as_slice().len() as u64; - let mut cur_byte: Wrapping = - Wrapping(self.coverage_map_ref().as_slice()[afl_idx as usize]); + let coverage_map = self.coverage_map.get_mut().ok_or_else(|| { + anyhow!("Coverage map not initialized. This is a bug in the fuzzer or the target") + })?; + let afl_idx = (pc ^ self.coverage_prev_loc) % coverage_map.as_slice().len() as u64; + let mut cur_byte: Wrapping = Wrapping(coverage_map.as_slice()[afl_idx as usize]); cur_byte += 1; - self.coverage_map_mut().as_mut_slice()[afl_idx as usize] = cur_byte.0; - self.coverage_prev_loc = (pc >> 1) % self.coverage_map_ref().as_slice().len() as u64; + coverage_map.as_mut_slice()[afl_idx as usize] = cur_byte.0; + self.coverage_prev_loc = (pc >> 1) % coverage_map.as_slice().len() as u64; Ok(()) } fn log_cmp(&mut self, pc: u64, types: Vec, cmp: CmpValues) -> Result<()> { // Consistently hash pc to the same header index + let aflpp_cmp_map = self.aflpp_cmp_map.get_mut().ok_or_else(|| { + anyhow!("AFL++ cmp map not initialized. This is a bug in the fuzzer or the target") + })?; let shape = cmp_shape(&cmp)?; let operands = cmp .to_u64_tuple() .ok_or_else(|| anyhow!("Conversion to tuple of non-integral operands not supported"))?; - let pc_index = hash_index(pc, self.aflpp_cmp_map_ref().headers().len() as u64); + let pc_index = hash_index(pc, aflpp_cmp_map.headers().len() as u64); - let hits = self.aflpp_cmp_map_mut().headers_mut()[pc_index as usize].hits(); + let hits = aflpp_cmp_map.headers_mut()[pc_index as usize].hits(); - if hits == 0 { - trace!( - self.as_conf_object(), - "Logging first hit of comparison with types {types:?} and values {cmp:?} (assume == if no types)" - ); - } - - self.aflpp_cmp_map_mut().headers_mut()[pc_index as usize].set_hits(hits + 1); - self.aflpp_cmp_map_mut().headers_mut()[pc_index as usize].set_shape(shape); - self.aflpp_cmp_map_mut().headers_mut()[pc_index as usize].set__type(AFL_CMP_TYPE_INS); + aflpp_cmp_map.headers_mut()[pc_index as usize].set_hits(hits + 1); + aflpp_cmp_map.headers_mut()[pc_index as usize].set_shape(shape); + aflpp_cmp_map.headers_mut()[pc_index as usize].set__type(AFL_CMP_TYPE_INS); if let Some(attribute) = types.iter().map(|t| *t as u32).reduce(|acc, t| acc | t) { - self.aflpp_cmp_map_mut().headers_mut()[pc_index as usize].set_attribute(attribute); + aflpp_cmp_map.headers_mut()[pc_index as usize].set_attribute(attribute); // NOTE: overflow isn't used by aflppredqueen } else { // Naively use EQ if we don't have a value - self.aflpp_cmp_map_mut().headers_mut()[pc_index as usize] - .set_attribute(CmpType::Equal as u32); + aflpp_cmp_map.headers_mut()[pc_index as usize].set_attribute(CmpType::Equal as u32); } - self.aflpp_cmp_map_mut().values_mut().operands_mut()[pc_index as usize] - [hits as usize % AFLPP_CMPLOG_MAP_H] = AFLppCmpLogOperands::new(operands.0, operands.1); + aflpp_cmp_map.values_mut().operands_mut()[pc_index as usize] + [hits as usize % CMPLOG_MAP_H] = AFLppCmpLogOperands::new(operands.0, operands.1); + + if hits == 0 { + trace!( + self.as_conf_object(), + "Logged first hit of comparison with types {types:?} and values {cmp:?} (assume == if no types)" + ); + } Ok(()) } @@ -272,11 +275,19 @@ impl Tsffs { ) -> Result<()> { let processor_number = get_processor_number(cpu)?; - if self.coverage_enabled_deref() { - if let Some(arch) = self.processors_mut().get_mut(&processor_number) { + if self.coverage_enabled { + if let Some(arch) = self.processors.get_mut(&processor_number) { match arch.trace_pc(handle) { Ok(r) => { - if let Some(pc) = r.edge_deref() { + if let Some(pc) = r.edge { + if self.coverage_reporting && self.edges_seen.insert(pc) { + let coverage_map = self.coverage_map.get_mut().ok_or_else(|| { + anyhow!("Coverage map not initialized. This is a bug in the fuzzer or the target") + })?; + let afl_idx = (pc ^ self.coverage_prev_loc) + % coverage_map.as_slice().len() as u64; + self.edges_seen_since_last.insert(pc, afl_idx); + } self.log_pc(pc)?; } } @@ -308,12 +319,12 @@ impl Tsffs { ) -> Result<()> { let processor_number = get_processor_number(cpu)?; - if self.configuration_ref().cmplog_deref() && self.cmplog_enabled_deref() { - if let Some(arch) = self.processors_mut().get_mut(&processor_number) { + if self.cmplog && self.cmplog_enabled { + if let Some(arch) = self.processors.get_mut(&processor_number) { match arch.trace_cmp(handle) { Ok(r) => { - if let Some((pc, types, cmp)) = r.cmp_ref() { - self.log_cmp(*pc, types.clone(), cmp.clone())?; + if let Some((pc, types, cmp)) = r.cmp { + self.log_cmp(pc, types.clone(), cmp.clone())?; } } Err(_) => { diff --git a/modules/tsffs/src/tsffs/src/traits/mod.rs b/src/traits/mod.rs similarity index 92% rename from modules/tsffs/src/tsffs/src/traits/mod.rs rename to src/traits/mod.rs index 2d42329a..3f6d438e 100644 --- a/modules/tsffs/src/tsffs/src/traits/mod.rs +++ b/src/traits/mod.rs @@ -1,4 +1,4 @@ -// Copyright (C) 2023 Intel Corporation +// Copyright (C) 2024 Intel Corporation // SPDX-License-Identifier: Apache-2.0 use crate::tracer::{CmpExpr, CmpType}; diff --git a/src/util/mod.rs b/src/util/mod.rs new file mode 100644 index 00000000..8a00be9c --- /dev/null +++ b/src/util/mod.rs @@ -0,0 +1,33 @@ +// Copyright (C) 2024 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 + +use anyhow::Result; +use simics::api::{get_attribute, get_object}; +use simics::{run_python, FromAttrValueList}; + +#[derive(Debug, Clone, FromAttrValueList)] +pub(crate) struct MicroCheckpointInfo { + #[allow(unused)] + pub name: String, + #[allow(unused)] + pub pages: i64, + #[allow(unused)] + pub zero: i64, +} + +#[allow(unused)] +pub(crate) struct Utils; + +#[allow(unused)] +impl Utils { + /// Get the list of saved micro checkpoints + pub fn get_micro_checkpoints() -> Result> { + run_python( + r#"print(simics.SIM_get_attribute(simics.SIM_get_object("sim.rexec"), "state_info"))"#, + )?; + let checkpoints: Vec = + get_attribute(get_object("sim.rexec")?, "state_info")?.try_into()?; + println!("{:?}", checkpoints); + Ok(checkpoints) + } +} diff --git a/tests/riscv_64_kernel_from_userspace_magic.rs b/tests/riscv_64_kernel_from_userspace_magic.rs new file mode 100644 index 00000000..9e37434d --- /dev/null +++ b/tests/riscv_64_kernel_from_userspace_magic.rs @@ -0,0 +1,78 @@ +// Copyright (C) 2024 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 + +use anyhow::Result; +use indoc::indoc; +use ispm_wrapper::data::ProjectPackage; +use simics_test::TestEnvSpec; +use std::path::PathBuf; + +#[test] +#[cfg_attr(miri, ignore)] +fn test_riscv_64_kernel_from_userspace_magic() -> Result<()> { + let output = TestEnvSpec::builder() + .name("test_riscv_64_kernel_from_userspace_magic") + .package_crates([PathBuf::from(env!("CARGO_MANIFEST_DIR"))]) + .packages([ + ProjectPackage::builder() + .package_number(1000) + .version("latest") + .build(), + ProjectPackage::builder() + .package_number(2050) + .version("latest") + .build(), + ProjectPackage::builder() + .package_number(2053) + .version("latest") + .build(), + ]) + .cargo_target_tmpdir(env!("CARGO_TARGET_TMPDIR")) + .directories([PathBuf::from(env!("CARGO_MANIFEST_DIR")) + .join("tests") + .join("rsrc") + .join("riscv-64")]) + .build() + .to_env()? + .test(indoc! {r#" + load-module tsffs + init-tsffs + + @tsffs.log_level = 2 + @tsffs.start_on_harness = True + @tsffs.stop_on_harness = True + @tsffs.magic_start = 4 + @tsffs.magic_stop = 5 + @tsffs.timeout = 3.0 + @tsffs.exceptions = [14] + @tsffs.generate_random_corpus = True + @tsffs.iteration_limit = 1000 + @tsffs.use_snapshots = True + + load-target "risc-v-simple/linux" namespace = riscv machine:hardware:storage:disk1:image = "test.fs.craff" + + script-branch { + bp.time.wait-for seconds = 15 + board.console.con.input "mkdir /mnt/disk0\r\n" + bp.time.wait-for seconds = 1.0 + board.console.con.input "mount /dev/vdb /mnt/disk0\r\n" + bp.time.wait-for seconds = 1.0 + board.console.con.input "insmod /mnt/disk0/test-mod.ko\r\n" + bp.time.wait-for seconds = 1.0 + board.console.con.input "/mnt/disk0/test-mod-userspace\r\n" + } + + script-branch { + bp.time.wait-for seconds = 240 + quit 1 + } + + run + "#})?; + + let output_str = String::from_utf8_lossy(&output.stdout); + + println!("{output_str}"); + + Ok(()) +} diff --git a/tests/riscv_64_kernel_magic.rs b/tests/riscv_64_kernel_magic.rs new file mode 100644 index 00000000..82f209ab --- /dev/null +++ b/tests/riscv_64_kernel_magic.rs @@ -0,0 +1,76 @@ +// Copyright (C) 2024 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 + +use anyhow::Result; +use indoc::indoc; +use ispm_wrapper::data::ProjectPackage; +use simics_test::TestEnvSpec; +use std::path::PathBuf; + +#[test] +#[cfg_attr(miri, ignore)] +fn test_riscv_64_kernel_magic() -> Result<()> { + let output = TestEnvSpec::builder() + .name("test_riscv_64_kernel_magic") + .package_crates([PathBuf::from(env!("CARGO_MANIFEST_DIR"))]) + .packages([ + ProjectPackage::builder() + .package_number(1000) + .version("latest") + .build(), + ProjectPackage::builder() + .package_number(2050) + .version("latest") + .build(), + ProjectPackage::builder() + .package_number(2053) + .version("latest") + .build(), + ]) + .cargo_target_tmpdir(env!("CARGO_TARGET_TMPDIR")) + .directories([PathBuf::from(env!("CARGO_MANIFEST_DIR")) + .join("tests") + .join("rsrc") + .join("riscv-64")]) + .build() + .to_env()? + .test(indoc! {r#" + load-module tsffs + init-tsffs + + @tsffs.log_level = 2 + @tsffs.start_on_harness = True + @tsffs.stop_on_harness = True + @tsffs.timeout = 3.0 + @tsffs.exceptions = [14] + @tsffs.generate_random_corpus = True + @tsffs.iteration_limit = 1000 + @tsffs.use_snapshots = True + + load-target "risc-v-simple/linux" namespace = riscv machine:hardware:storage:disk1:image = "test.fs.craff" + + script-branch { + bp.time.wait-for seconds = 15 + board.console.con.input "mkdir /mnt/disk0\r\n" + bp.time.wait-for seconds = 1.0 + board.console.con.input "mount /dev/vdb /mnt/disk0\r\n" + bp.time.wait-for seconds = 1.0 + board.console.con.input "insmod /mnt/disk0/test-mod.ko\r\n" + bp.time.wait-for seconds = 1.0 + board.console.con.input "/mnt/disk0/test-mod-userspace\r\n" + } + + script-branch { + bp.time.wait-for seconds = 240 + quit 1 + } + + run + "#})?; + + let output_str = String::from_utf8_lossy(&output.stdout); + + println!("{output_str}"); + + Ok(()) +} diff --git a/tests/riscv_64_userspace_magic.rs b/tests/riscv_64_userspace_magic.rs new file mode 100644 index 00000000..8436e1b0 --- /dev/null +++ b/tests/riscv_64_userspace_magic.rs @@ -0,0 +1,75 @@ +// Copyright (C) 2024 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 + +use anyhow::Result; +use indoc::indoc; +use ispm_wrapper::data::ProjectPackage; +use simics_test::TestEnvSpec; +use std::path::PathBuf; + +#[test] +#[cfg_attr(miri, ignore)] +fn test_riscv_64_userspace_magic() -> Result<()> { + let output = TestEnvSpec::builder() + .name("test_riscv_64_userspace_magic") + .package_crates([PathBuf::from(env!("CARGO_MANIFEST_DIR"))]) + .packages([ + ProjectPackage::builder() + .package_number(1000) + .version("latest") + .build(), + ProjectPackage::builder() + .package_number(2050) + .version("latest") + .build(), + ProjectPackage::builder() + .package_number(2053) + .version("latest") + .build(), + ]) + .cargo_target_tmpdir(env!("CARGO_TARGET_TMPDIR")) + .directories([PathBuf::from(env!("CARGO_MANIFEST_DIR")) + .join("tests") + .join("rsrc") + .join("riscv-64")]) + .build() + .to_env()? + .test(indoc! {r#" + load-module tsffs + init-tsffs + + @tsffs.log_level = 2 + @tsffs.start_on_harness = True + @tsffs.stop_on_harness = True + @tsffs.timeout = 3.0 + @tsffs.exceptions = [14] + @tsffs.generate_random_corpus = True + @tsffs.iteration_limit = 1000 + @tsffs.use_snapshots = True + + load-target "risc-v-simple/linux" namespace = riscv machine:hardware:storage:disk1:image = "test.fs.craff" + + script-branch { + bp.time.wait-for seconds = 15 + board.console.con.input "mkdir /mnt/disk0\r\n" + bp.time.wait-for seconds = 1.0 + board.console.con.input "mount /dev/vdb /mnt/disk0\r\n" + bp.time.wait-for seconds = 1.0 + board.console.con.capture-start out.txt + board.console.con.input "/mnt/disk0/test\r\n" + } + + script-branch { + bp.time.wait-for seconds = 240 + quit 1 + } + + run + "#})?; + + let output_str = String::from_utf8_lossy(&output.stdout); + + println!("{output_str}"); + + Ok(()) +} diff --git a/examples/tests/README.md b/tests/rsrc/README.md similarity index 100% rename from examples/tests/README.md rename to tests/rsrc/README.md diff --git a/examples/tests/build.sh b/tests/rsrc/build.sh similarity index 84% rename from examples/tests/build.sh rename to tests/rsrc/build.sh index b030456f..06751653 100755 --- a/examples/tests/build.sh +++ b/tests/rsrc/build.sh @@ -1,5 +1,8 @@ #!/bin/bash +# Copyright (C) 2024 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + if [ -z "${SIMICS_BASE}" ]; then echo "SIMICS_BASE is not set, defaulting to latest." SIMICS_BASE="$(ispm packages --list-installed --json | jq -r '[ .installedPackages[] | select(.pkgNumber == 1000) ] | ([ .[].version ] | max_by(split(".") | map(tonumber))) as $m | first(first(.[]|select(.version == $m)).paths[0])')" @@ -14,6 +17,7 @@ fi for TARGET in *; do if [ -d "${TARGET}" ]; then pushd "${TARGET}" || exit 1 + echo "Building ${TARGET}" ./build.sh popd || exit 1 fi diff --git a/tests/rsrc/minimal_boot_disk.craff b/tests/rsrc/minimal_boot_disk.craff new file mode 100644 index 00000000..2488b728 --- /dev/null +++ b/tests/rsrc/minimal_boot_disk.craff @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8ffab484ad42b567214be5a6a7245e2385a30964dd5438035a963ebc19126e36 +size 11505650 diff --git a/tests/rsrc/riscv-64/.config b/tests/rsrc/riscv-64/.config new file mode 100644 index 00000000..d3863f91 --- /dev/null +++ b/tests/rsrc/riscv-64/.config @@ -0,0 +1,4503 @@ +:/buildroot# cat .config +# +# Automatically generated file; DO NOT EDIT. +# Buildroot 2023.11-535-g1e12b7dd49 Configuration +# +BR2_HAVE_DOT_CONFIG=y +BR2_EXTERNAL_NAMES="TEST_KERNEL_MODULES" +BR2_EXTERNAL_TEST_KERNEL_MODULES_PATH="/test/test-kernel-modules" +BR2_EXTERNAL_TEST_KERNEL_MODULES_VERSION="" +BR2_HOST_GCC_AT_LEAST_4_9=y +BR2_HOST_GCC_AT_LEAST_5=y +BR2_HOST_GCC_AT_LEAST_6=y +BR2_HOST_GCC_AT_LEAST_7=y +BR2_HOST_GCC_AT_LEAST_8=y +BR2_HOST_GCC_AT_LEAST_9=y +BR2_HOST_GCC_AT_LEAST_10=y +BR2_HOST_GCC_AT_LEAST_11=y + +# +# Target options +# +BR2_ARCH_IS_64=y +BR2_USE_MMU=y +# BR2_arcle is not set +# BR2_arceb is not set +# BR2_arm is not set +# BR2_armeb is not set +# BR2_aarch64 is not set +# BR2_aarch64_be is not set +# BR2_i386 is not set +# BR2_m68k is not set +# BR2_microblazeel is not set +# BR2_microblazebe is not set +# BR2_mips is not set +# BR2_mipsel is not set +# BR2_mips64 is not set +# BR2_mips64el is not set +# BR2_nios2 is not set +# BR2_or1k is not set +# BR2_powerpc is not set +# BR2_powerpc64 is not set +# BR2_powerpc64le is not set +BR2_riscv=y +# BR2_s390x is not set +# BR2_sh is not set +# BR2_sparc is not set +# BR2_sparc64 is not set +# BR2_x86_64 is not set +# BR2_xtensa is not set +BR2_ARCH_HAS_TOOLCHAIN_BUILDROOT=y +BR2_ARCH_NEEDS_GCC_AT_LEAST_4_8=y +BR2_ARCH_NEEDS_GCC_AT_LEAST_4_9=y +BR2_ARCH_NEEDS_GCC_AT_LEAST_5=y +BR2_ARCH_NEEDS_GCC_AT_LEAST_6=y +BR2_ARCH_NEEDS_GCC_AT_LEAST_7=y +BR2_ARCH="riscv64" +BR2_NORMALIZED_ARCH="riscv" +BR2_ENDIAN="LITTLE" +BR2_GCC_TARGET_ABI="lp64d" +BR2_BINFMT_SUPPORTS_SHARED=y +BR2_READELF_ARCH_NAME="RISC-V" +BR2_riscv_g=y +# BR2_riscv_custom is not set + +# +# Instruction Set Extensions +# +BR2_RISCV_ISA_RVI=y +BR2_RISCV_ISA_RVM=y +BR2_RISCV_ISA_RVA=y +BR2_RISCV_ISA_RVF=y +BR2_RISCV_ISA_RVD=y +# BR2_RISCV_ISA_RVC is not set +# BR2_RISCV_ISA_RVV is not set +# BR2_RISCV_32 is not set +BR2_RISCV_64=y +BR2_RISCV_USE_MMU=y +# BR2_RISCV_ABI_LP64 is not set +# BR2_RISCV_ABI_LP64F is not set +BR2_RISCV_ABI_LP64D=y +BR2_BINFMT_ELF=y + +# +# Toolchain +# +BR2_TOOLCHAIN=y +BR2_TOOLCHAIN_USES_GLIBC=y +BR2_TOOLCHAIN_BUILDROOT=y +# BR2_TOOLCHAIN_EXTERNAL is not set + +# +# Toolchain Buildroot Options +# +BR2_TOOLCHAIN_BUILDROOT_VENDOR="buildroot" +# BR2_TOOLCHAIN_BUILDROOT_UCLIBC is not set +BR2_TOOLCHAIN_BUILDROOT_GLIBC=y +# BR2_TOOLCHAIN_BUILDROOT_MUSL is not set +BR2_TOOLCHAIN_BUILDROOT_LIBC="glibc" + +# +# Kernel Header Options +# +BR2_KERNEL_HEADERS_AS_KERNEL=y +# BR2_KERNEL_HEADERS_4_19 is not set +# BR2_KERNEL_HEADERS_5_4 is not set +# BR2_KERNEL_HEADERS_5_10 is not set +# BR2_KERNEL_HEADERS_5_15 is not set +# BR2_KERNEL_HEADERS_6_1 is not set +# BR2_KERNEL_HEADERS_6_6 is not set +# BR2_KERNEL_HEADERS_VERSION is not set +# BR2_KERNEL_HEADERS_CUSTOM_TARBALL is not set +# BR2_KERNEL_HEADERS_CUSTOM_GIT is not set +BR2_KERNEL_HEADERS_LATEST=y +BR2_PACKAGE_LINUX_HEADERS=y +BR2_PACKAGE_MUSL_ARCH_SUPPORTS=y +BR2_PACKAGE_MUSL_SUPPORTS=y +BR2_PACKAGE_UCLIBC_ARCH_SUPPORTS=y +BR2_PACKAGE_UCLIBC_SUPPORTS=y +BR2_PACKAGE_GLIBC_ARCH_SUPPORTS=y +BR2_PACKAGE_GLIBC_SUPPORTS=y + +# +# Glibc Options +# +BR2_PACKAGE_GLIBC=y +# BR2_PACKAGE_GLIBC_KERNEL_COMPAT is not set +# BR2_PACKAGE_GLIBC_UTILS is not set + +# +# Binutils Options +# +BR2_PACKAGE_HOST_BINUTILS_SUPPORTS_CFI=y +# BR2_BINUTILS_VERSION_2_39_X is not set +# BR2_BINUTILS_VERSION_2_40_X is not set +BR2_BINUTILS_VERSION_2_41_X=y +BR2_BINUTILS_VERSION="2.41" +# BR2_BINUTILS_GPROFNG is not set +BR2_BINUTILS_EXTRA_CONFIG_OPTIONS="" + +# +# GCC Options +# +# BR2_GCC_VERSION_11_X is not set +# BR2_GCC_VERSION_12_X is not set +BR2_GCC_VERSION_13_X=y +BR2_GCC_VERSION="13.2.0" +BR2_EXTRA_GCC_CONFIG_OPTIONS="" +# BR2_TOOLCHAIN_BUILDROOT_CXX is not set +# BR2_TOOLCHAIN_BUILDROOT_FORTRAN is not set +# BR2_GCC_ENABLE_OPENMP is not set +# BR2_GCC_ENABLE_GRAPHITE is not set +BR2_PACKAGE_GCC_FINAL=y +BR2_PACKAGE_HOST_GDB_ARCH_SUPPORTS=y + +# +# Host GDB Options +# +# BR2_PACKAGE_HOST_GDB is not set + +# +# Toolchain Generic Options +# +BR2_TOOLCHAIN_SUPPORTS_ALWAYS_LOCKFREE_ATOMIC_INTS=y +BR2_TOOLCHAIN_SUPPORTS_VARIADIC_MI_THUNK=y +BR2_USE_WCHAR=y +BR2_ENABLE_LOCALE=y +BR2_TOOLCHAIN_HAS_THREADS=y +BR2_TOOLCHAIN_HAS_THREADS_DEBUG=y +BR2_TOOLCHAIN_HAS_THREADS_NPTL=y +BR2_TOOLCHAIN_HAS_SSP=y +BR2_TOOLCHAIN_HAS_SSP_STRONG=y +BR2_TOOLCHAIN_HAS_UCONTEXT=y +BR2_TOOLCHAIN_SUPPORTS_PIE=y +# BR2_TOOLCHAIN_GLIBC_GCONV_LIBS_COPY is not set +BR2_TOOLCHAIN_EXTRA_LIBS="" +BR2_TOOLCHAIN_HAS_FULL_GETTEXT=y +BR2_TARGET_OPTIMIZATION="" +BR2_TARGET_LDFLAGS="" +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_0=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_1=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_2=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_3=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_4=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_5=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_6=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_7=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_8=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_9=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_10=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_11=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_12=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_13=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_14=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_15=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_16=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_17=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_18=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_19=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_0=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_1=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_2=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_3=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_4=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_5=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_6=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_7=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_8=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_9=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_10=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_11=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_12=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_13=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_14=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_15=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_16=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_17=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_18=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_19=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_4_20=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_0=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_1=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_2=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_3=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_4=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_5=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_6=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_7=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_8=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_9=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_10=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_11=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_12=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_13=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_14=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_15=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_16=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_17=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_18=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_5_19=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_6_0=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_6_1=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_6_2=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_6_3=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_6_4=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_6_5=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST_6_6=y +BR2_TOOLCHAIN_HEADERS_LATEST=y +BR2_TOOLCHAIN_HEADERS_AT_LEAST="6.6" +BR2_TOOLCHAIN_GCC_AT_LEAST_4_3=y +BR2_TOOLCHAIN_GCC_AT_LEAST_4_4=y +BR2_TOOLCHAIN_GCC_AT_LEAST_4_5=y +BR2_TOOLCHAIN_GCC_AT_LEAST_4_6=y +BR2_TOOLCHAIN_GCC_AT_LEAST_4_7=y +BR2_TOOLCHAIN_GCC_AT_LEAST_4_8=y +BR2_TOOLCHAIN_GCC_AT_LEAST_4_9=y +BR2_TOOLCHAIN_GCC_AT_LEAST_5=y +BR2_TOOLCHAIN_GCC_AT_LEAST_6=y +BR2_TOOLCHAIN_GCC_AT_LEAST_7=y +BR2_TOOLCHAIN_GCC_AT_LEAST_8=y +BR2_TOOLCHAIN_GCC_AT_LEAST_9=y +BR2_TOOLCHAIN_GCC_AT_LEAST_10=y +BR2_TOOLCHAIN_GCC_AT_LEAST_11=y +BR2_TOOLCHAIN_GCC_AT_LEAST_12=y +BR2_TOOLCHAIN_GCC_AT_LEAST_13=y +BR2_TOOLCHAIN_GCC_AT_LEAST="13" +BR2_TOOLCHAIN_HAS_MNAN_OPTION=y +BR2_TOOLCHAIN_HAS_SYNC_1=y +BR2_TOOLCHAIN_HAS_SYNC_2=y +BR2_TOOLCHAIN_HAS_SYNC_4=y +BR2_TOOLCHAIN_HAS_SYNC_8=y +BR2_TOOLCHAIN_HAS_LIBATOMIC=y +BR2_TOOLCHAIN_HAS_ATOMIC=y + +# +# Build options +# + +# +# Commands +# +BR2_WGET="wget --passive-ftp -nd -t 3" +BR2_SVN="svn --non-interactive" +BR2_BZR="bzr" +BR2_GIT="git" +BR2_CVS="cvs" +BR2_LOCALFILES="cp" +BR2_SCP="scp" +BR2_SFTP="sftp" +BR2_HG="hg" +BR2_ZCAT="gzip -d -c" +BR2_BZCAT="bzcat" +BR2_XZCAT="xzcat" +BR2_LZCAT="lzip -d -c" +BR2_TAR_OPTIONS="" +BR2_DEFCONFIG="$(CONFIG_DIR)/defconfig" +BR2_DL_DIR="$(TOPDIR)/dl" +BR2_HOST_DIR="$(BASE_DIR)/host" + +# +# Mirrors and Download locations +# +BR2_PRIMARY_SITE="" +BR2_BACKUP_SITE="https://sources.buildroot.net" +BR2_KERNEL_MIRROR="https://cdn.kernel.org/pub" +BR2_GNU_MIRROR="http://ftpmirror.gnu.org" +BR2_LUAROCKS_MIRROR="http://rocks.moonscript.org" +BR2_CPAN_MIRROR="https://cpan.metacpan.org" +BR2_JLEVEL=0 +# BR2_CCACHE is not set +# BR2_ENABLE_DEBUG is not set +# BR2_ENABLE_RUNTIME_DEBUG is not set +# BR2_STRIP_strip is not set +# BR2_OPTIMIZE_0 is not set +# BR2_OPTIMIZE_1 is not set +# BR2_OPTIMIZE_2 is not set +# BR2_OPTIMIZE_3 is not set +# BR2_OPTIMIZE_G is not set +BR2_OPTIMIZE_S=y +# BR2_OPTIMIZE_FAST is not set +# BR2_ENABLE_LTO is not set + +# +# static only needs a toolchain w/ uclibc or musl +# +BR2_SHARED_LIBS=y +# BR2_SHARED_STATIC_LIBS is not set +BR2_PACKAGE_OVERRIDE_FILE="$(CONFIG_DIR)/local.mk" +BR2_GLOBAL_PATCH_DIR="" + +# +# Advanced +# +# BR2_FORCE_HOST_BUILD is not set +# BR2_DOWNLOAD_FORCE_CHECK_HASHES is not set +# BR2_REPRODUCIBLE is not set +# BR2_PER_PACKAGE_DIRECTORIES is not set + +# +# Security Hardening Options +# +BR2_PIC_PIE_ARCH_SUPPORTS=y +BR2_PIC_PIE=y +# BR2_SSP_NONE is not set +# BR2_SSP_REGULAR is not set +BR2_SSP_STRONG=y +# BR2_SSP_ALL is not set +BR2_SSP_OPTION="-fstack-protector-strong" +# BR2_RELRO_NONE is not set +# BR2_RELRO_PARTIAL is not set +BR2_RELRO_FULL=y +BR2_FORTIFY_SOURCE_ARCH_SUPPORTS=y +# BR2_FORTIFY_SOURCE_NONE is not set +BR2_FORTIFY_SOURCE_1=y +# BR2_FORTIFY_SOURCE_2 is not set +# BR2_FORTIFY_SOURCE_3 is not set + +# +# System configuration +# +BR2_ROOTFS_SKELETON_DEFAULT=y +# BR2_ROOTFS_SKELETON_CUSTOM is not set +BR2_TARGET_GENERIC_HOSTNAME="buildroot" +BR2_TARGET_GENERIC_ISSUE="Welcome to Buildroot" +BR2_TARGET_GENERIC_PASSWD_SHA256=y +# BR2_TARGET_GENERIC_PASSWD_SHA512 is not set +BR2_TARGET_GENERIC_PASSWD_METHOD="sha-256" +BR2_INIT_BUSYBOX=y +# BR2_INIT_SYSV is not set +# BR2_INIT_OPENRC is not set +# BR2_INIT_SYSTEMD is not set +# BR2_INIT_NONE is not set +# BR2_ROOTFS_DEVICE_CREATION_STATIC is not set +BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_DEVTMPFS=y +# BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_MDEV is not set +# BR2_ROOTFS_DEVICE_CREATION_DYNAMIC_EUDEV is not set +BR2_ROOTFS_DEVICE_TABLE="system/device_table.txt" +# BR2_ROOTFS_DEVICE_TABLE_SUPPORTS_EXTENDED_ATTRIBUTES is not set +# BR2_ROOTFS_MERGED_USR is not set +BR2_TARGET_ENABLE_ROOT_LOGIN=y +BR2_TARGET_GENERIC_ROOT_PASSWD="" +BR2_SYSTEM_BIN_SH_BUSYBOX=y + +# +# bash, dash, mksh, zsh need BR2_PACKAGE_BUSYBOX_SHOW_OTHERS +# +# BR2_SYSTEM_BIN_SH_NONE is not set +BR2_TARGET_GENERIC_GETTY=y +BR2_TARGET_GENERIC_GETTY_PORT="ttyS0" +BR2_TARGET_GENERIC_GETTY_BAUDRATE_KEEP=y +# BR2_TARGET_GENERIC_GETTY_BAUDRATE_9600 is not set +# BR2_TARGET_GENERIC_GETTY_BAUDRATE_19200 is not set +# BR2_TARGET_GENERIC_GETTY_BAUDRATE_38400 is not set +# BR2_TARGET_GENERIC_GETTY_BAUDRATE_57600 is not set +# BR2_TARGET_GENERIC_GETTY_BAUDRATE_115200 is not set +BR2_TARGET_GENERIC_GETTY_BAUDRATE="0" +BR2_TARGET_GENERIC_GETTY_TERM="vt100" +BR2_TARGET_GENERIC_GETTY_OPTIONS="" +BR2_TARGET_GENERIC_REMOUNT_ROOTFS_RW=y +BR2_SYSTEM_DHCP="eth0" +BR2_SYSTEM_DEFAULT_PATH="/bin:/sbin:/usr/bin:/usr/sbin" +BR2_ENABLE_LOCALE_PURGE=y +BR2_ENABLE_LOCALE_WHITELIST="C en_US" +BR2_GENERATE_LOCALE="" +# BR2_SYSTEM_ENABLE_NLS is not set +# BR2_TARGET_TZ_INFO is not set +BR2_ROOTFS_USERS_TABLES="" +BR2_ROOTFS_OVERLAY="" +BR2_ROOTFS_PRE_BUILD_SCRIPT="" +BR2_ROOTFS_POST_BUILD_SCRIPT="" +BR2_ROOTFS_POST_FAKEROOT_SCRIPT="" +BR2_ROOTFS_POST_IMAGE_SCRIPT="" + +# +# Kernel +# +BR2_LINUX_KERNEL=y +BR2_LINUX_KERNEL_LATEST_VERSION=y +# BR2_LINUX_KERNEL_LATEST_CIP_VERSION is not set +# BR2_LINUX_KERNEL_LATEST_CIP_RT_VERSION is not set +# BR2_LINUX_KERNEL_CUSTOM_VERSION is not set +# BR2_LINUX_KERNEL_CUSTOM_TARBALL is not set +# BR2_LINUX_KERNEL_CUSTOM_GIT is not set +# BR2_LINUX_KERNEL_CUSTOM_HG is not set +# BR2_LINUX_KERNEL_CUSTOM_SVN is not set +BR2_LINUX_KERNEL_VERSION="6.6.10" +BR2_LINUX_KERNEL_PATCH="" +# BR2_LINUX_KERNEL_USE_DEFCONFIG is not set +BR2_LINUX_KERNEL_USE_ARCH_DEFAULT_CONFIG=y +# BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG is not set +BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="" +BR2_LINUX_KERNEL_CUSTOM_LOGO_PATH="" +BR2_LINUX_KERNEL_IMAGE=y +# BR2_LINUX_KERNEL_IMAGEGZ is not set +# BR2_LINUX_KERNEL_VMLINUX is not set +# BR2_LINUX_KERNEL_IMAGE_TARGET_CUSTOM is not set +BR2_LINUX_KERNEL_GZIP=y +# BR2_LINUX_KERNEL_LZ4 is not set +# BR2_LINUX_KERNEL_LZMA is not set +# BR2_LINUX_KERNEL_LZO is not set +# BR2_LINUX_KERNEL_XZ is not set +# BR2_LINUX_KERNEL_ZSTD is not set +# BR2_LINUX_KERNEL_DTS_SUPPORT is not set +BR2_LINUX_KERNEL_INSTALL_TARGET=y +# BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL is not set +# BR2_LINUX_KERNEL_NEEDS_HOST_LIBELF is not set +# BR2_LINUX_KERNEL_NEEDS_HOST_PAHOLE is not set + +# +# Linux Kernel Extensions +# +# BR2_LINUX_KERNEL_EXT_EV3DEV_LINUX_DRIVERS is not set +# BR2_LINUX_KERNEL_EXT_FBTFT is not set +# BR2_LINUX_KERNEL_EXT_AUFS is not set + +# +# Linux Kernel Tools +# +# BR2_PACKAGE_LINUX_TOOLS_CPUPOWER is not set +# BR2_PACKAGE_LINUX_TOOLS_GPIO is not set +# BR2_PACKAGE_LINUX_TOOLS_IIO is not set +# BR2_PACKAGE_LINUX_TOOLS_PCI is not set +# BR2_PACKAGE_LINUX_TOOLS_PERF is not set +# BR2_PACKAGE_LINUX_TOOLS_RTLA is not set + +# +# selftests needs BR2_PACKAGE_BUSYBOX_SHOW_OTHERS and a toolchain w/ dynamic library and headers >= 3.14 +# +# BR2_PACKAGE_LINUX_TOOLS_USBTOOLS is not set +# BR2_PACKAGE_LINUX_TOOLS_TMON is not set + +# +# Target packages +# +BR2_PACKAGE_BUSYBOX=y +BR2_PACKAGE_BUSYBOX_CONFIG="package/busybox/busybox.config" +BR2_PACKAGE_BUSYBOX_CONFIG_FRAGMENT_FILES="" +# BR2_PACKAGE_BUSYBOX_SHOW_OTHERS is not set +# BR2_PACKAGE_BUSYBOX_INDIVIDUAL_BINARIES is not set +# BR2_PACKAGE_BUSYBOX_WATCHDOG is not set +BR2_PACKAGE_SKELETON=y +BR2_PACKAGE_HAS_SKELETON=y +BR2_PACKAGE_PROVIDES_SKELETON="skeleton-init-sysv" +BR2_PACKAGE_SKELETON_INIT_COMMON=y +BR2_PACKAGE_SKELETON_INIT_SYSV=y + +# +# Audio and video applications +# +# BR2_PACKAGE_ALSA_UTILS is not set +# BR2_PACKAGE_ATEST is not set +# BR2_PACKAGE_AUMIX is not set +# BR2_PACKAGE_BLUEZ_ALSA is not set +# BR2_PACKAGE_DVBLAST is not set +# BR2_PACKAGE_DVDAUTHOR is not set + +# +# dvdrw-tools needs a toolchain w/ threads, C++, wchar +# + +# +# espeak needs a toolchain w/ C++, wchar, threads, dynamic library +# +# BR2_PACKAGE_FAAD2 is not set +# BR2_PACKAGE_FFMPEG_ARCH_SUPPORTS is not set +# BR2_PACKAGE_FFMPEG is not set +# BR2_PACKAGE_FLAC is not set +# BR2_PACKAGE_FLITE is not set +# BR2_PACKAGE_FLUID_SOUNDFONT is not set + +# +# fluidsynth needs a toolchain w/ threads, wchar, dynamic library, C++ +# +# BR2_PACKAGE_GMRENDER_RESURRECT is not set +# BR2_PACKAGE_GSTREAMER1 is not set +# BR2_PACKAGE_JACK1 is not set + +# +# jack2 needs a toolchain w/ threads, C++, dynamic library +# +# BR2_PACKAGE_KODI_ARCH_SUPPORTS is not set + +# +# kodi needs python3 w/ .py modules, a uClibc or glibc toolchain w/ C++, threads, wchar, dynamic library, gcc >= 9.x +# + +# +# kodi needs udev support for gbm +# + +# +# kodi needs an OpenGL EGL backend with OpenGL or GLES support +# +# BR2_PACKAGE_LAME is not set +# BR2_PACKAGE_MADPLAY is not set +# BR2_PACKAGE_MIMIC is not set +# BR2_PACKAGE_MINIMODEM is not set + +# +# miraclecast needs systemd and a glibc toolchain w/ threads and wchar +# + +# +# mjpegtools needs a toolchain w/ C++, threads +# + +# +# modplugtools needs a toolchain w/ C++ +# +# BR2_PACKAGE_MOTION is not set + +# +# mpd needs a toolchain w/ C++, threads, wchar, gcc >= 8, host gcc >= 8 +# +# BR2_PACKAGE_MPD_MPC is not set +# BR2_PACKAGE_MPG123 is not set + +# +# mpv needs a toolchain w/ C++, NPTL, gcc >= 4.9 +# +# BR2_PACKAGE_MULTICAT is not set +# BR2_PACKAGE_MUSEPACK is not set + +# +# ncmpc needs a toolchain w/ C++, wchar, threads, gcc >= 10 +# +# BR2_PACKAGE_OPUS_TOOLS is not set +# BR2_PACKAGE_PIPEWIRE is not set +BR2_PACKAGE_PULSEAUDIO_HAS_ATOMIC=y +# BR2_PACKAGE_PULSEAUDIO is not set +# BR2_PACKAGE_SOX is not set +# BR2_PACKAGE_SPEECHD is not set +# BR2_PACKAGE_SQUEEZELITE is not set +# BR2_PACKAGE_TINYCOMPRESS is not set +# BR2_PACKAGE_TSTOOLS is not set +# BR2_PACKAGE_TWOLAME is not set +# BR2_PACKAGE_UDPXY is not set + +# +# upmpdcli needs a toolchain w/ C++, NPTL, gcc >= 4.9 +# + +# +# v4l2grab needs a toolchain w/ threads, dynamic library, C++ and headers >= 3.0 +# +# BR2_PACKAGE_V4L2LOOPBACK is not set + +# +# vlc needs a toolchain w/ C++, dynamic library, wchar, threads, gcc >= 4.9, headers >= 3.7 +# +# BR2_PACKAGE_VORBIS_TOOLS is not set +# BR2_PACKAGE_WAVPACK is not set +# BR2_PACKAGE_YAVTA is not set +# BR2_PACKAGE_YMPD is not set + +# +# zynaddsubfx needs a toolchain w/ C++11 and threads +# + +# +# Compressors and decompressors +# +# BR2_PACKAGE_BROTLI is not set +# BR2_PACKAGE_BZIP2 is not set + +# +# lrzip needs a toolchain w/ wchar, threads, C++ +# + +# +# lzip needs a toolchain w/ C++ +# +# BR2_PACKAGE_LZOP is not set + +# +# p7zip needs a toolchain w/ threads, wchar, C++ +# +# BR2_PACKAGE_PIGZ is not set +# BR2_PACKAGE_PIXZ is not set + +# +# unrar needs a toolchain w/ C++, wchar, threads, gcc >= 4.8 +# +# BR2_PACKAGE_XZ is not set +# BR2_PACKAGE_ZIP is not set +# BR2_PACKAGE_ZSTD is not set + +# +# Debugging, profiling and benchmark +# +# BR2_PACKAGE_BABELTRACE2 is not set +# BR2_PACKAGE_BLKTRACE is not set + +# +# bonnie++ needs a toolchain w/ C++ +# +# BR2_PACKAGE_CACHE_CALIBRATOR is not set + +# +# clinfo needs an OpenCL provider +# + +# +# clpeak needs an OpenCL provider, a toolchain w/ C++, gcc >= 4.8 +# +# BR2_PACKAGE_COREMARK is not set +# BR2_PACKAGE_COREMARK_PRO is not set + +# +# dacapo needs OpenJDK +# +# BR2_PACKAGE_DHRYSTONE is not set +# BR2_PACKAGE_DIEHARDER is not set +# BR2_PACKAGE_DMALLOC is not set +# BR2_PACKAGE_DROPWATCH is not set +# BR2_PACKAGE_DSTAT is not set +# BR2_PACKAGE_DT is not set + +# +# duma needs a toolchain w/ C++, threads, dynamic library +# +# BR2_PACKAGE_FIO is not set +BR2_PACKAGE_GDB_ARCH_SUPPORTS=y + +# +# gdb/gdbserver >= 8.x needs a toolchain w/ C++, gcc >= 4.8 +# +# BR2_PACKAGE_IOZONE is not set +# BR2_PACKAGE_KMEMD is not set +# BR2_PACKAGE_LATENCYTOP is not set +# BR2_PACKAGE_LIBBPF is not set +# BR2_PACKAGE_LIBTRACEEVENT is not set +# BR2_PACKAGE_LIBTRACEFS is not set +# BR2_PACKAGE_LMBENCH is not set +BR2_PACKAGE_LTP_TESTSUITE_ARCH_SUPPORTS=y +# BR2_PACKAGE_LTP_TESTSUITE is not set +# BR2_PACKAGE_LTTNG_BABELTRACE is not set +# BR2_PACKAGE_LTTNG_MODULES is not set + +# +# lttng-tools needs a toolchain w/ threads, dynamic library, C++ +# +# BR2_PACKAGE_MBPOLL is not set +# BR2_PACKAGE_MBW is not set +# BR2_PACKAGE_MEMSTAT is not set +# BR2_PACKAGE_NETPERF is not set + +# +# netsniff-ng needs a toolchain w/ NPTL, C++, headers >= 3.0 +# +# BR2_PACKAGE_NMON is not set +# BR2_PACKAGE_PAX_UTILS is not set +BR2_PACKAGE_PERFTEST_ARCH_SUPPORTS=y +# BR2_PACKAGE_PERFTEST is not set + +# +# piglit needs a glibc or musl toolchain w/ C++, gcc >= 9, host gcc >= 9 +# +# BR2_PACKAGE_POKE is not set +# BR2_PACKAGE_PV is not set +# BR2_PACKAGE_RAMSMP is not set +# BR2_PACKAGE_RAMSPEED is not set +# BR2_PACKAGE_RT_TESTS is not set + +# +# rwmem needs a toolchain w/ C++, wchar, gcc >= 10 +# + +# +# signal-estimator needs a toochain w/ C++, threads, gcc >= 7 +# +# BR2_PACKAGE_SPIDEV_TEST is not set +# BR2_PACKAGE_STRACE is not set +# BR2_PACKAGE_STRESS is not set +# BR2_PACKAGE_STRESS_NG is not set + +# +# sysdig needs a glibc toolchain w/ C++, threads, gcc >= 8, dynamic library, a Linux kernel, and luajit or lua 5.1 to be built +# +# BR2_PACKAGE_TINYMEMBENCH is not set +# BR2_PACKAGE_TRACE_CMD is not set +# BR2_PACKAGE_UCLIBC_NG_TEST is not set +# BR2_PACKAGE_VMTOUCH is not set +# BR2_PACKAGE_WHETSTONE is not set + +# +# Development tools +# +# BR2_PACKAGE_AVOCADO is not set +# BR2_PACKAGE_BINUTILS is not set +# BR2_PACKAGE_BITWISE is not set +# BR2_PACKAGE_BSDIFF is not set +# BR2_PACKAGE_CHECK is not set +BR2_PACKAGE_CMAKE_ARCH_SUPPORTS=y + +# +# ctest needs a toolchain w/ C++, wchar, dynamic library, gcc >= 4.9, NPTL +# + +# +# cppunit needs a toolchain w/ C++, dynamic library +# +# BR2_PACKAGE_CUKINIA is not set +# BR2_PACKAGE_CUNIT is not set +# BR2_PACKAGE_CVS is not set + +# +# cxxtest needs a toolchain w/ C++ support +# +# BR2_PACKAGE_FLEX is not set +# BR2_PACKAGE_GETTEXT is not set +BR2_PACKAGE_PROVIDES_HOST_GETTEXT="host-gettext-tiny" +# BR2_PACKAGE_GIT is not set + +# +# git-crypt needs a toolchain w/ C++, gcc >= 4.9 +# + +# +# gperf needs a toolchain w/ C++ +# +# BR2_PACKAGE_JO is not set +# BR2_PACKAGE_JQ is not set +# BR2_PACKAGE_LIBTOOL is not set +# BR2_PACKAGE_MAKE is not set +# BR2_PACKAGE_MAWK is not set +# BR2_PACKAGE_PKGCONF is not set +# BR2_PACKAGE_SUBVERSION is not set +# BR2_PACKAGE_TREE is not set +# BR2_PACKAGE_UNIFDEF is not set + +# +# Filesystem and flash utilities +# +# BR2_PACKAGE_ABOOTIMG is not set +# BR2_PACKAGE_AUFS_UTIL is not set +# BR2_PACKAGE_AUTOFS is not set +# BR2_PACKAGE_BTRFS_PROGS is not set +# BR2_PACKAGE_CIFS_UTILS is not set +# BR2_PACKAGE_CPIO is not set +# BR2_PACKAGE_CRAMFS is not set +# BR2_PACKAGE_CURLFTPFS is not set +# BR2_PACKAGE_DAVFS2 is not set +# BR2_PACKAGE_DOSFSTOOLS is not set +# BR2_PACKAGE_E2FSPROGS is not set +# BR2_PACKAGE_E2TOOLS is not set +# BR2_PACKAGE_ECRYPTFS_UTILS is not set +# BR2_PACKAGE_EROFS_UTILS is not set +# BR2_PACKAGE_EXFAT is not set +# BR2_PACKAGE_EXFAT_UTILS is not set +# BR2_PACKAGE_EXFATPROGS is not set +# BR2_PACKAGE_F2FS_TOOLS is not set +# BR2_PACKAGE_FIRMWARE_UTILS is not set +# BR2_PACKAGE_FLASHBENCH is not set +# BR2_PACKAGE_FSCRYPTCTL is not set +# BR2_PACKAGE_FUSE_OVERLAYFS is not set +# BR2_PACKAGE_FWUP is not set +# BR2_PACKAGE_GENEXT2FS is not set +# BR2_PACKAGE_GENPART is not set +# BR2_PACKAGE_GENROMFS is not set +# BR2_PACKAGE_GOCRYPTFS is not set +# BR2_PACKAGE_IMX_USB_LOADER is not set +# BR2_PACKAGE_MMC_UTILS is not set +# BR2_PACKAGE_MTD is not set +# BR2_PACKAGE_MTOOLS is not set +# BR2_PACKAGE_NFS_UTILS is not set +# BR2_PACKAGE_NILFS_UTILS is not set +# BR2_PACKAGE_NTFS_3G is not set +# BR2_PACKAGE_SP_OOPS_EXTRACT is not set +# BR2_PACKAGE_SQUASHFS is not set +# BR2_PACKAGE_SSHFS is not set +# BR2_PACKAGE_UDFTOOLS is not set +# BR2_PACKAGE_UNIONFS is not set + +# +# xfsprogs needs a toolchain w/ threads, C++ +# +# BR2_PACKAGE_ZEROFREE is not set + +# +# zfs needs udev /dev management +# + +# +# Fonts, cursors, icons, sounds and themes +# + +# +# Cursors +# +# BR2_PACKAGE_COMIX_CURSORS is not set +# BR2_PACKAGE_OBSIDIAN_CURSORS is not set + +# +# Fonts +# +# BR2_PACKAGE_BITSTREAM_VERA is not set +# BR2_PACKAGE_CANTARELL is not set +# BR2_PACKAGE_DEJAVU is not set +# BR2_PACKAGE_FONT_AWESOME is not set +# BR2_PACKAGE_GHOSTSCRIPT_FONTS is not set +# BR2_PACKAGE_INCONSOLATA is not set +# BR2_PACKAGE_LIBERATION is not set +# BR2_PACKAGE_WQY_ZENHEI is not set + +# +# Icons +# +# BR2_PACKAGE_HICOLOR_ICON_THEME is not set + +# +# Sounds +# +# BR2_PACKAGE_SOUND_THEME_BOREALIS is not set +# BR2_PACKAGE_SOUND_THEME_FREEDESKTOP is not set + +# +# Themes +# + +# +# Games +# +# BR2_PACKAGE_ASCII_INVADERS is not set +# BR2_PACKAGE_CHOCOLATE_DOOM is not set + +# +# flare-engine needs a toolchain w/ C++, dynamic library +# +# BR2_PACKAGE_FROTZ is not set + +# +# gnuchess needs a toolchain w/ C++, threads +# +# BR2_PACKAGE_LBREAKOUT2 is not set +# BR2_PACKAGE_LTRIS is not set +# BR2_PACKAGE_OPENTYRIAN is not set +# BR2_PACKAGE_PRBOOM is not set +# BR2_PACKAGE_SL is not set + +# +# solarus needs OpenGL and a toolchain w/ C++, gcc >= 4.9, NPTL, dynamic library, and luajit or lua 5.1 +# + +# +# stella needs a toolchain w/ dynamic library, C++, threads, gcc >= 7 +# +# BR2_PACKAGE_XORCURSES is not set + +# +# Graphic libraries and applications (graphic/text) +# + +# +# Graphic applications +# + +# +# cage needs udev, EGL w/ Wayland backend and OpenGL ES support +# + +# +# cog needs wpewebkit and a toolchain w/ threads +# + +# +# dmenu-wayland needs a toolchain w/ wchar, threads, C++, dynamic library, gcc >= 4.9 +# +# BR2_PACKAGE_FOOT is not set +# BR2_PACKAGE_FSWEBCAM is not set +# BR2_PACKAGE_GHOSTSCRIPT is not set + +# +# glmark2 needs a toolchain w/ C++, gcc >= 4.9 +# + +# +# glslsandbox-player needs openGL ES and EGL driver +# +# BR2_PACKAGE_GNUPLOT is not set +# BR2_PACKAGE_JHEAD is not set + +# +# kmscube needs EGL, GBM and OpenGL ES, and a toolchain w/ thread support +# + +# +# libva-utils needs a toolchain w/ C++, threads, dynamic library +# +BR2_PACKAGE_MIDORI_ARCH_SUPPORTS=y + +# +# midori needs a glibc toolchain w/ C++, wchar, threads, dynamic library, gcc >= 7, host gcc >= 8 +# + +# +# midori needs libgtk3 w/ X11 or wayland backend +# +BR2_PACKAGE_NETSURF_ARCH_SUPPORTS=y +# BR2_PACKAGE_NETSURF is not set +# BR2_PACKAGE_PNGQUANT is not set +# BR2_PACKAGE_RRDTOOL is not set + +# +# spirv-tools needs a toolchain w/ C++, gcc >= 7 +# + +# +# stellarium needs Qt5 and an OpenGL provider +# + +# +# sway needs systemd, udev, EGL w/ Wayland backend and OpenGL ES support +# + +# +# sway needs a toolchain w/ wchar, threads, C++, dynamic library, gcc >= 4.9 +# +# BR2_PACKAGE_SWAYBG is not set + +# +# tesseract-ocr needs a toolchain w/ threads, C++, gcc >= 7, dynamic library, wchar +# +# BR2_PACKAGE_TINIFIER is not set + +# +# Graphic libraries +# + +# +# cegui needs a toolchain w/ C++, threads, dynamic library, wchar, gcc >= 5 +# + +# +# directfb needs a glibc or uClibc toolchain w/ C++, NPTL, gcc >= 4.5, dynamic library +# + +# +# efl needs a toolchain w/ C++, dynamic library, gcc >= 4.9, host gcc >= 4.9, threads, wchar +# +# BR2_PACKAGE_FB_TEST_APP is not set +# BR2_PACKAGE_FBDUMP is not set +# BR2_PACKAGE_FBGRAB is not set + +# +# fbterm needs a toolchain w/ C++, wchar, locale +# +# BR2_PACKAGE_FBV is not set + +# +# flutter-gallery needs flutter-engine +# + +# +# flutter-pi needs flutter-engine +# + +# +# flutter-pi needs GBM, systemd, and udev +# + +# +# freerdp needs a toolchain w/ wchar, dynamic library, threads, C++ +# +# BR2_PACKAGE_GRAPHICSMAGICK is not set +# BR2_PACKAGE_IMAGEMAGICK is not set +# BR2_PACKAGE_LIBGLVND is not set +# BR2_PACKAGE_LINUX_FUSION is not set + +# +# mesa3d needs a toolchain w/ gcc >=8, C++, NPTL, dynamic library +# + +# +# ocrad needs a toolchain w/ C++ +# + +# +# ogre needs a toolchain w/ C++, dynamic library, gcc >= 4.8, threads, wchar +# +# BR2_PACKAGE_PSPLASH is not set +# BR2_PACKAGE_SDL is not set +# BR2_PACKAGE_SDL2 is not set + +# +# spirv-headers needs a toolchain w/ C++ +# +# BR2_PACKAGE_VULKAN_HEADERS is not set + +# +# vulkan-loader needs a toolchain w/ C++, dynamic library, threads +# + +# +# vulkan-tools needs a toolchain w/ C++, dynamic library, threads, gcc >= 4.9 +# + +# +# Other GUIs +# + +# +# Qt5 needs host g++ >= 5.0, and a toolchain w/ gcc >= 5.0, wchar, NPTL, C++, dynamic library +# + +# +# tekui needs a Lua interpreter and a toolchain w/ threads, dynamic library +# + +# +# weston needs udev and a toolchain w/ locale, threads, dynamic library, headers >= 3.0 +# +# BR2_PACKAGE_XORG7 is not set + +# +# apitrace needs a toolchain w/ C++, wchar, dynamic library, threads, gcc >= 7 +# + +# +# mupdf needs a toolchain w/ C++, gcc >= 4.9 +# + +# +# vte needs a uClibc or glibc toolchain w/ wchar, threads, C++, gcc >= 10 +# + +# +# vte needs an OpenGL or an OpenGL-EGL/wayland backend +# +# BR2_PACKAGE_XKEYBOARD_CONFIG is not set + +# +# Hardware handling +# + +# +# Firmware +# +# BR2_PACKAGE_ARMBIAN_FIRMWARE is not set +# BR2_PACKAGE_B43_FIRMWARE is not set +# BR2_PACKAGE_BRCMFMAC_SDIO_FIRMWARE_RPI is not set +# BR2_PACKAGE_LINUX_FIRMWARE is not set +# BR2_PACKAGE_MURATA_CYW_FW is not set +# BR2_PACKAGE_ODROIDC2_FIRMWARE is not set +# BR2_PACKAGE_QCOM_DB410C_FIRMWARE is not set +# BR2_PACKAGE_QORIQ_FM_UCODE is not set +# BR2_PACKAGE_RCW_SMARC_SAL28 is not set +# BR2_PACKAGE_UX500_FIRMWARE is not set +# BR2_PACKAGE_WILC1000_FIRMWARE is not set +# BR2_PACKAGE_WILC3000_FIRMWARE is not set +# BR2_PACKAGE_WILINK_BT_FIRMWARE is not set +# BR2_PACKAGE_ZD1211_FIRMWARE is not set +# BR2_PACKAGE_18XX_TI_UTILS is not set +# BR2_PACKAGE_ACPICA is not set +# BR2_PACKAGE_ACPID is not set + +# +# acpitool needs a toolchain w/ threads, C++, dynamic library +# +# BR2_PACKAGE_AER_INJECT is not set +# BR2_PACKAGE_ALTERA_STAPL is not set + +# +# apcupsd needs a toolchain w/ C++, threads +# +# BR2_PACKAGE_AVRDUDE is not set + +# +# bcache-tools needs udev /dev management +# + +# +# brickd needs udev /dev management, a toolchain w/ threads, wchar +# +# BR2_PACKAGE_BRLTTY is not set + +# +# cc-tool needs a toolchain w/ C++, threads, wchar, gcc >= 4.9 +# +# BR2_PACKAGE_CDRKIT is not set +# BR2_PACKAGE_CRUCIBLE is not set +# BR2_PACKAGE_CRYPTSETUP is not set +# BR2_PACKAGE_CWIID is not set +# BR2_PACKAGE_DAHDI_LINUX is not set +# BR2_PACKAGE_DAHDI_TOOLS is not set +# BR2_PACKAGE_DBUS is not set + +# +# dbusbroker needs systemd and a toolchain w/ threads +# + +# +# dbus-cxx needs a toolchain w/ C++, threads, gcc >= 7 and dynamic library support +# +# BR2_PACKAGE_DFU_PROGRAMMER is not set +# BR2_PACKAGE_DFU_UTIL is not set +# BR2_PACKAGE_DMRAID is not set + +# +# dt-utils needs udev /dev management +# +# BR2_PACKAGE_DTBOCFG is not set +# BR2_PACKAGE_DTV_SCAN_TABLES is not set +# BR2_PACKAGE_DUMP1090 is not set +# BR2_PACKAGE_DVB_APPS is not set +# BR2_PACKAGE_DVBSNOOP is not set + +# +# edid-decode needs a toolchain w/ C++, gcc >= 4.7 +# +# BR2_PACKAGE_ESP_HOSTED is not set + +# +# eudev needs eudev /dev management +# +# BR2_PACKAGE_EVEMU is not set +# BR2_PACKAGE_EVTEST is not set +# BR2_PACKAGE_FAN_CTRL is not set +# BR2_PACKAGE_FCONFIG is not set +BR2_PACKAGE_FLASHROM_ARCH_SUPPORTS=y +# BR2_PACKAGE_FLASHROM is not set +# BR2_PACKAGE_FMTOOLS is not set +# BR2_PACKAGE_FREEIPMI is not set +# BR2_PACKAGE_FXLOAD is not set +# BR2_PACKAGE_GPM is not set +# BR2_PACKAGE_GPSD is not set + +# +# gptfdisk needs a toolchain w/ C++ +# +# BR2_PACKAGE_GVFS is not set +# BR2_PACKAGE_HDDTEMP is not set +# BR2_PACKAGE_HWDATA is not set +# BR2_PACKAGE_HWLOC is not set +# BR2_PACKAGE_INPUT_EVENT_DAEMON is not set +# BR2_PACKAGE_IPMITOOL is not set +# BR2_PACKAGE_IRDA_UTILS is not set +# BR2_PACKAGE_KBD is not set +# BR2_PACKAGE_LCDPROC is not set + +# +# ledmon needs udev and a toolchain w/ threads +# + +# +# libiec61850 needs a toolchain w/ C++, threads, dynamic library +# +# BR2_PACKAGE_LIBMANETTE is not set +# BR2_PACKAGE_LIBUBOOTENV is not set +# BR2_PACKAGE_LIBUIO is not set +# BR2_PACKAGE_LINUX_BACKPORTS is not set +# BR2_PACKAGE_LINUX_SERIAL_TEST is not set +# BR2_PACKAGE_LINUXCONSOLETOOLS is not set + +# +# lirc-tools needs a toolchain w/ threads, dynamic library, C++ +# +# BR2_PACKAGE_LM_SENSORS is not set + +# +# lshw needs a toolchain w/ C++, wchar +# +# BR2_PACKAGE_LSSCSI is not set +# BR2_PACKAGE_LSUIO is not set +# BR2_PACKAGE_LUKSMETA is not set +# BR2_PACKAGE_LVM2 is not set +# BR2_PACKAGE_MBPFAN is not set +# BR2_PACKAGE_MDADM is not set +# BR2_PACKAGE_MDEVD is not set +# BR2_PACKAGE_MDIO_TOOLS is not set +# BR2_PACKAGE_MEMTESTER is not set +# BR2_PACKAGE_MEMTOOL is not set +# BR2_PACKAGE_MHZ is not set +# BR2_PACKAGE_MINICOM is not set +# BR2_PACKAGE_NANOCOM is not set +# BR2_PACKAGE_NEARD is not set +# BR2_PACKAGE_NVIDIA_MODPROBE is not set +# BR2_PACKAGE_NVIDIA_PERSISTENCED is not set +# BR2_PACKAGE_NVME is not set +# BR2_PACKAGE_OFONO is not set + +# +# ola needs a toolchain w/ C++, threads, dynamic library, gcc >= 4.8 +# +# BR2_PACKAGE_OPEN2300 is not set + +# +# openfpgaloader needs a toolchain w/ threads, C++, gcc >= 4.9 +# +# BR2_PACKAGE_OPENIPMI is not set +# BR2_PACKAGE_OPENOCD is not set +# BR2_PACKAGE_PARTED is not set +# BR2_PACKAGE_PCIUTILS is not set +# BR2_PACKAGE_PDBG is not set +# BR2_PACKAGE_PICOCOM is not set + +# +# powertop needs a toolchain w/ C++, threads, wchar +# +# BR2_PACKAGE_PPS_TOOLS is not set +# BR2_PACKAGE_QORIQ_CADENCE_DP_FIRMWARE is not set +# BR2_PACKAGE_RASPI_GPIO is not set +# BR2_PACKAGE_RDMA_CORE is not set +# BR2_PACKAGE_READ_EDID is not set +# BR2_PACKAGE_RNG_TOOLS is not set +# BR2_PACKAGE_RS485CONF is not set +# BR2_PACKAGE_RTC_TOOLS is not set +# BR2_PACKAGE_RTL8188EU is not set +# BR2_PACKAGE_RTL8189ES is not set +# BR2_PACKAGE_RTL8189FS is not set +# BR2_PACKAGE_RTL8192EU is not set +# BR2_PACKAGE_RTL8723BU is not set +# BR2_PACKAGE_RTL8723DS is not set +# BR2_PACKAGE_RTL8723DS_BT is not set +# BR2_PACKAGE_RTL8812AU_AIRCRACK_NG is not set +# BR2_PACKAGE_RTL8821AU is not set +# BR2_PACKAGE_RTL8821CU is not set +# BR2_PACKAGE_RTL8822CS is not set +# BR2_PACKAGE_SANE_BACKENDS is not set +# BR2_PACKAGE_SDPARM is not set +# BR2_PACKAGE_SETSERIAL is not set +# BR2_PACKAGE_SG3_UTILS is not set +# BR2_PACKAGE_SIGROK_CLI is not set +# BR2_PACKAGE_SISPMCTL is not set + +# +# smartmontools needs a toolchain w/ C++ +# +# BR2_PACKAGE_SMSTOOLS3 is not set +# BR2_PACKAGE_SPI_TOOLS is not set +# BR2_PACKAGE_SREDIRD is not set +# BR2_PACKAGE_STATSERIAL is not set +# BR2_PACKAGE_STM32FLASH is not set +# BR2_PACKAGE_SYSSTAT is not set + +# +# targetcli-fb depends on Python +# +# BR2_PACKAGE_TI_UIM is not set +# BR2_PACKAGE_TI_UTILS is not set +# BR2_PACKAGE_TIO is not set +# BR2_PACKAGE_TRIGGERHAPPY is not set +# BR2_PACKAGE_UBOOT_TOOLS is not set +# BR2_PACKAGE_UBUS is not set + +# +# udisks needs udev /dev management +# +# BR2_PACKAGE_UHUBCTL is not set +# BR2_PACKAGE_UMTPRD is not set + +# +# upower needs udev /dev management +# +# BR2_PACKAGE_USB_MODESWITCH is not set +# BR2_PACKAGE_USB_MODESWITCH_DATA is not set + +# +# usbguard needs a toolchain w/ C++, threads, dynamic library, gcc >= 8 +# + +# +# usbmount requires udev to be enabled +# + +# +# usbutils needs udev /dev management and toolchain w/ threads, gcc >= 4.9 +# +# BR2_PACKAGE_W_SCAN is not set +# BR2_PACKAGE_WILC_DRIVER is not set +# BR2_PACKAGE_WIPE is not set +# BR2_PACKAGE_XORRISO is not set +# BR2_PACKAGE_XR819_XRADIO is not set + +# +# Interpreter languages and scripting +# +# BR2_PACKAGE_4TH is not set +# BR2_PACKAGE_ENSCRIPT is not set +BR2_PACKAGE_HOST_ERLANG_ARCH_SUPPORTS=y +BR2_PACKAGE_ERLANG_ARCH_SUPPORTS=y +# BR2_PACKAGE_ERLANG is not set +# BR2_PACKAGE_EXECLINE is not set +# BR2_PACKAGE_FICL is not set +# BR2_PACKAGE_GUILE is not set +# BR2_PACKAGE_HASERL is not set +# BR2_PACKAGE_JANET is not set +# BR2_PACKAGE_JIMTCL is not set +# BR2_PACKAGE_LUA is not set +BR2_PACKAGE_PROVIDES_HOST_LUAINTERPRETER="host-lua" +# BR2_PACKAGE_MICROPYTHON is not set +# BR2_PACKAGE_MOARVM is not set +BR2_PACKAGE_HOST_MONO_ARCH_SUPPORTS=y + +# +# octave needs a toolchain w/ C++ and fortran, gcc >= 4.8 +# +BR2_PACKAGE_HOST_OPENJDK_BIN_ARCH_SUPPORTS=y +# BR2_PACKAGE_PERL is not set +BR2_PACKAGE_PHP_ARCH_SUPPORTS=y +# BR2_PACKAGE_PHP is not set +# BR2_PACKAGE_PYTHON3 is not set +# BR2_PACKAGE_QUICKJS is not set +# BR2_PACKAGE_RUBY is not set +# BR2_PACKAGE_TCL is not set + +# +# Libraries +# + +# +# Audio/Sound +# +# BR2_PACKAGE_ALSA_LIB is not set + +# +# alure needs a toolchain w/ C++, gcc >= 4.9, NPTL, wchar +# +# BR2_PACKAGE_AUBIO is not set +# BR2_PACKAGE_BCG729 is not set + +# +# caps needs a toolchain w/ C++, dynamic library +# +# BR2_PACKAGE_LIBAO is not set +# BR2_PACKAGE_LIBBROADVOICE is not set +# BR2_PACKAGE_LIBCANBERRA is not set +# BR2_PACKAGE_LIBCDAUDIO is not set +# BR2_PACKAGE_LIBCDDB is not set +# BR2_PACKAGE_LIBCDIO is not set +# BR2_PACKAGE_LIBCDIO_PARANOIA is not set +# BR2_PACKAGE_LIBCODEC2 is not set +# BR2_PACKAGE_LIBCUE is not set +# BR2_PACKAGE_LIBCUEFILE is not set +# BR2_PACKAGE_LIBEBUR128 is not set +# BR2_PACKAGE_LIBG7221 is not set +# BR2_PACKAGE_LIBGSM is not set +# BR2_PACKAGE_LIBID3TAG is not set +# BR2_PACKAGE_LIBILBC is not set +# BR2_PACKAGE_LIBLO is not set +# BR2_PACKAGE_LIBMAD is not set + +# +# libmodplug needs a toolchain w/ C++ +# +# BR2_PACKAGE_LIBMPDCLIENT is not set +# BR2_PACKAGE_LIBREPLAYGAIN is not set +# BR2_PACKAGE_LIBSAMPLERATE is not set + +# +# libsidplay2 needs a toolchain w/ C++ +# +# BR2_PACKAGE_LIBSILK is not set +# BR2_PACKAGE_LIBSNDFILE is not set + +# +# libsoundtouch needs a toolchain w/ C++ +# +# BR2_PACKAGE_LIBSOXR is not set +# BR2_PACKAGE_LIBVORBIS is not set +# BR2_PACKAGE_LILV is not set +# BR2_PACKAGE_LV2 is not set + +# +# mp4v2 needs a toolchain w/ C++ +# +BR2_PACKAGE_OPENAL_ARCH_SUPPORTS=y + +# +# openal needs a toolchain w/ NPTL, C++, gcc >= 4.9 +# + +# +# opencore-amr needs a toolchain w/ C++ +# +# BR2_PACKAGE_OPUS is not set +# BR2_PACKAGE_OPUSFILE is not set +# BR2_PACKAGE_PORTAUDIO is not set +# BR2_PACKAGE_SBC is not set +# BR2_PACKAGE_SPANDSP is not set +# BR2_PACKAGE_SPEEX is not set +# BR2_PACKAGE_SPEEXDSP is not set +# BR2_PACKAGE_SRATOM is not set + +# +# taglib needs a toolchain w/ C++, wchar +# +# BR2_PACKAGE_TINYALSA is not set +# BR2_PACKAGE_TREMOR is not set +# BR2_PACKAGE_VO_AACENC is not set + +# +# Compression and decompression +# +# BR2_PACKAGE_LIBARCHIVE is not set +# BR2_PACKAGE_LIBDEFLATE is not set +# BR2_PACKAGE_LIBMSPACK is not set + +# +# libsquish needs a toolchain w/ C++ +# +# BR2_PACKAGE_LIBZIP is not set +# BR2_PACKAGE_LZ4 is not set +# BR2_PACKAGE_LZO is not set +# BR2_PACKAGE_MINIZIP is not set +# BR2_PACKAGE_MINIZIP_ZLIB is not set + +# +# snappy needs a toolchain w/ C++ +# +# BR2_PACKAGE_SZIP is not set +# BR2_PACKAGE_ZCHUNK is not set +BR2_PACKAGE_ZLIB_NG_ARCH_SUPPORTS=y +# BR2_PACKAGE_ZLIB is not set +BR2_PACKAGE_PROVIDES_HOST_ZLIB="host-libzlib" +# BR2_PACKAGE_ZZIPLIB is not set + +# +# Crypto +# +# BR2_PACKAGE_BEARSSL is not set +# BR2_PACKAGE_BEECRYPT is not set +BR2_PACKAGE_BOTAN_ARCH_SUPPORTS=y + +# +# botan needs a toolchain w/ C++, threads, gcc >= 4.8 +# +# BR2_PACKAGE_CA_CERTIFICATES is not set +# BR2_PACKAGE_CRYPTODEV_LINUX is not set + +# +# cryptopp needs a toolchain w/ C++, dynamic library, wchar +# +# BR2_PACKAGE_GCR is not set +# BR2_PACKAGE_GNUTLS is not set +# BR2_PACKAGE_LIBARGON2 is not set +# BR2_PACKAGE_LIBASSUAN is not set +# BR2_PACKAGE_LIBB2 is not set +# BR2_PACKAGE_LIBGCRYPT is not set +BR2_PACKAGE_LIBGPG_ERROR_ARCH_SUPPORTS=y +# BR2_PACKAGE_LIBGPG_ERROR is not set +BR2_PACKAGE_LIBGPG_ERROR_SYSCFG="riscv64-unknown-linux-gnu" +# BR2_PACKAGE_LIBGPGME is not set +# BR2_PACKAGE_LIBKCAPI is not set +# BR2_PACKAGE_LIBKSBA is not set +# BR2_PACKAGE_LIBMD is not set +# BR2_PACKAGE_LIBMHASH is not set +# BR2_PACKAGE_LIBNSS is not set + +# +# libolm needs a toolchain w/ C++, gcc >= 4.8 +# +# BR2_PACKAGE_LIBP11 is not set +# BR2_PACKAGE_LIBSCRYPT is not set +# BR2_PACKAGE_LIBSECRET is not set +# BR2_PACKAGE_LIBSHA1 is not set +# BR2_PACKAGE_LIBSODIUM is not set +# BR2_PACKAGE_LIBSSH is not set +# BR2_PACKAGE_LIBSSH2 is not set +# BR2_PACKAGE_LIBTOMCRYPT is not set +# BR2_PACKAGE_LIBUECC is not set +# BR2_PACKAGE_LIBXCRYPT is not set +# BR2_PACKAGE_MBEDTLS is not set +# BR2_PACKAGE_NETTLE is not set +# BR2_PACKAGE_OPENSSL is not set +BR2_PACKAGE_PROVIDES_HOST_OPENSSL="host-libopenssl" +# BR2_PACKAGE_PKCS11_HELPER is not set +# BR2_PACKAGE_RHASH is not set +# BR2_PACKAGE_TINYDTLS is not set +# BR2_PACKAGE_TPM2_PKCS11 is not set +# BR2_PACKAGE_TPM2_TSS is not set +# BR2_PACKAGE_TROUSERS is not set +# BR2_PACKAGE_USTREAM_SSL is not set +BR2_PACKAGE_WOLFSSL_ASM_SUPPORTS=y +# BR2_PACKAGE_WOLFSSL is not set +# BR2_PACKAGE_WOLFTPM is not set + +# +# Database +# +# BR2_PACKAGE_BERKELEYDB is not set +# BR2_PACKAGE_GDBM is not set +# BR2_PACKAGE_HIREDIS is not set + +# +# kompexsqlite needs a toolchain w/ C++, wchar, threads, dynamic library +# + +# +# leveldb needs a toolchain w/ C++, threads, gcc >= 4.8 +# +# BR2_PACKAGE_LIBDBI is not set +# BR2_PACKAGE_LIBDBI_DRIVERS is not set +# BR2_PACKAGE_LIBGIT2 is not set +# BR2_PACKAGE_LIBMDBX is not set + +# +# libodb needs a toolchain w/ C++, threads +# + +# +# mysql needs a toolchain w/ C++, threads +# +# BR2_PACKAGE_POSTGRESQL is not set +# BR2_PACKAGE_REDIS is not set + +# +# redis-plus-plus needs a toolchain w/ C++ +# +# BR2_PACKAGE_SQLCIPHER is not set +# BR2_PACKAGE_SQLITE is not set +# BR2_PACKAGE_UNIXODBC is not set + +# +# Filesystem +# +# BR2_PACKAGE_GAMIN is not set +# BR2_PACKAGE_LIBCONFIG is not set +# BR2_PACKAGE_LIBCONFUSE is not set +# BR2_PACKAGE_LIBFUSE is not set +# BR2_PACKAGE_LIBFUSE3 is not set +# BR2_PACKAGE_LIBLOCKFILE is not set +# BR2_PACKAGE_LIBNFS is not set +# BR2_PACKAGE_LIBSYSFS is not set +# BR2_PACKAGE_LOCKDEV is not set + +# +# physfs needs a toolchain w/ C++, threads +# + +# +# Graphics +# + +# +# assimp needs a toolchain w/ C++, wchar, gcc >= 7 +# +# BR2_PACKAGE_AT_SPI2_CORE is not set + +# +# atkmm needs a toolchain w/ C++, wchar, threads, gcc >= 7 +# + +# +# atkmm (2.28.x) needs a toolchain w/ C++, wchar, threads, gcc >= 4.9 +# + +# +# bullet needs a toolchain w/ C++, dynamic library, threads, wchar +# +# BR2_PACKAGE_CAIRO is not set + +# +# cairomm needs a toolchain w/ C++, wchar, threads, gcc >= 7 +# + +# +# cairomm (1.14.x) needs a toolchain w/ C++, wchar, threads, gcc >= 4.9 +# + +# +# chipmunk needs an OpenGL backend +# + +# +# exempi needs a toolchain w/ C++, dynamic library, threads, wchar +# + +# +# exiv2 needs a uClibc or glibc toolchain w/ C++, wchar, dynamic library, threads +# +# BR2_PACKAGE_FONTCONFIG is not set +# BR2_PACKAGE_FREETYPE is not set +# BR2_PACKAGE_GD is not set +# BR2_PACKAGE_GDK_PIXBUF is not set +# BR2_PACKAGE_GIFLIB is not set + +# +# granite needs libgtk3 and a toolchain w/ wchar, threads, gcc >= 4.9 +# + +# +# graphite2 needs a toolchain w/ C++ +# + +# +# gtkmm3 needs libgtk3 and a toolchain w/ C++, wchar, threads, gcc >= 4.9 +# + +# +# harfbuzz needs a toolchain w/ C++, gcc >= 4.9 +# +# BR2_PACKAGE_IJS is not set +# BR2_PACKAGE_IMLIB2 is not set + +# +# intel-gmmlib needs a toolchain w/ dynamic library, C++, threads +# + +# +# irrlicht needs a toolchain w/ C++ +# +# BR2_PACKAGE_JASPER is not set +# BR2_PACKAGE_JBIG2DEC is not set +# BR2_PACKAGE_JPEG is not set + +# +# kms++ needs a toolchain w/ threads, C++, gcc >= 4.8, headers >= 4.11, wchar +# +# BR2_PACKAGE_LCMS2 is not set + +# +# lensfun needs a toolchain w/ C++, threads, wchar +# +# BR2_PACKAGE_LEPTONICA is not set +# BR2_PACKAGE_LIBART is not set + +# +# libdecor needs a toolchain w/ wchar, threads, C++, gcc >= 4.9 +# +# BR2_PACKAGE_LIBDMTX is not set +# BR2_PACKAGE_LIBDRM is not set + +# +# libepoxy needs an OpenGL and/or OpenGL EGL backend +# +# BR2_PACKAGE_LIBEXIF is not set + +# +# libfm needs X.org and a toolchain w/ wchar, threads, C++, gcc >= 4.9 +# +# BR2_PACKAGE_LIBFM_EXTRA is not set + +# +# libfreeglut depends on X.org and needs an OpenGL backend +# + +# +# libfreeimage needs a toolchain w/ C++, dynamic library, wchar +# + +# +# libgeotiff needs a toolchain w/ C++, gcc >= 4.7, threads, wchar +# + +# +# libglew depends on X.org and needs an OpenGL backend +# + +# +# libglfw depends on X.org or Wayland and an OpenGL or GLES backend +# + +# +# libglu needs an OpenGL backend +# +# BR2_PACKAGE_LIBGTA is not set + +# +# libgtk3 needs a toolchain w/ wchar, threads, C++, gcc >= 4.9 +# + +# +# libgtk3 needs an OpenGL or an OpenGL-EGL/wayland backend +# + +# +# libjxl needs a toolchain with C++, threads, gcc >= 7, dynamic library +# +# BR2_PACKAGE_LIBMEDIAART is not set +# BR2_PACKAGE_LIBMNG is not set +# BR2_PACKAGE_LIBPNG is not set +# BR2_PACKAGE_LIBQRENCODE is not set + +# +# libraw needs a toolchain w/ C++ +# +# BR2_PACKAGE_LIBSVG is not set +# BR2_PACKAGE_LIBSVG_CAIRO is not set +# BR2_PACKAGE_LIBSVGTINY is not set +# BR2_PACKAGE_LIBVA is not set + +# +# libvips needs a toolchain w/ wchar, threads, C++ +# +BR2_PACKAGE_LIBVPL_ARCH_SUPPORTS=y + +# +# libvpl needs a toolchain w/ dynamic library, gcc >= 7, C++, threads +# + +# +# libwpe needs a toolchain w/ C++, dynamic library and an OpenEGL-capable backend +# +# BR2_PACKAGE_MENU_CACHE is not set + +# +# opencv3 needs a toolchain w/ C++, NPTL, wchar, dynamic library +# + +# +# opencv4 needs a toolchain w/ C++, NPTL, wchar, dynamic library, gcc >= 4.8 +# +# BR2_PACKAGE_OPENJPEG is not set + +# +# pango needs a toolchain w/ wchar, threads, C++, gcc >= 4.9 +# + +# +# pangomm needs a toolchain w/ C++, wchar, threads, gcc >= 7 +# + +# +# pangomm (2.46.x) needs a toolchain w/ C++, wchar, threads, gcc >= 4.9 +# +# BR2_PACKAGE_PIXMAN is not set + +# +# poppler needs a toolchain w/ wchar, C++, threads, dynamic library, gcc >= 7 +# +# BR2_PACKAGE_STB is not set +# BR2_PACKAGE_TIFF is not set +# BR2_PACKAGE_WAYLAND is not set +BR2_PACKAGE_WEBKITGTK_ARCH_SUPPORTS=y + +# +# webkitgtk needs libgtk3 and a toolchain w/ C++, wchar, threads, dynamic library, gcc >= 9, host gcc >= 4.9 +# +# BR2_PACKAGE_WEBP is not set + +# +# wlroots needs udev, EGL w/ Wayland backend and OpenGL ES support +# + +# +# woff2 needs a toolchain w/ C++ +# + +# +# wpebackend-fdo needs a toolchain w/ C++, wchar, threads, dynamic library and an OpenEGL-capable Wayland backend +# +BR2_PACKAGE_WPEWEBKIT_ARCH_SUPPORTS=y + +# +# wpewebkit needs a toolchain w/ C++, wchar, threads, dynamic library, gcc >= 9, host gcc >= 4.9 +# + +# +# wpewebkit needs an OpenGL ES w/ EGL-capable Wayland backend +# + +# +# zbar needs a toolchain w/ threads, C++ and headers >= 3.0 +# + +# +# zxing-cpp needs a toolchain w/ C++, wchar, dynamic library +# + +# +# Hardware handling +# +# BR2_PACKAGE_ACSCCID is not set +# BR2_PACKAGE_C_PERIPHERY is not set +# BR2_PACKAGE_CCID is not set +# BR2_PACKAGE_DTC is not set +# BR2_PACKAGE_HACKRF is not set + +# +# hidapi needs udev /dev management and a toolchain w/ NPTL, threads, gcc >= 4.9 +# +# BR2_PACKAGE_JITTERENTROPY_LIBRARY is not set + +# +# lcdapi needs a toolchain w/ C++, threads +# + +# +# let-me-create needs a toolchain w/ C++, threads, dynamic library +# +# BR2_PACKAGE_LIBAIO is not set + +# +# libatasmart requires udev to be enabled +# + +# +# libblockdev needs udev /dev management and a toolchain w/ wchar, threads, dynamic library, locale +# + +# +# libcec needs a toolchain w/ C++, wchar, threads, dynamic library, gcc >= 4.7 +# +# BR2_PACKAGE_LIBDISPLAY_INFO is not set +# BR2_PACKAGE_LIBFREEFARE is not set +# BR2_PACKAGE_LIBFTDI is not set +# BR2_PACKAGE_LIBFTDI1 is not set +# BR2_PACKAGE_LIBGPHOTO2 is not set +# BR2_PACKAGE_LIBGPIOD is not set + +# +# libgudev needs udev /dev handling and a toolchain w/ wchar, threads +# +# BR2_PACKAGE_LIBHID is not set +# BR2_PACKAGE_LIBIIO is not set + +# +# libinput needs udev /dev management +# +# BR2_PACKAGE_LIBIQRF is not set +# BR2_PACKAGE_LIBLLCP is not set +# BR2_PACKAGE_LIBMBIM is not set +# BR2_PACKAGE_LIBNFC is not set +# BR2_PACKAGE_LIBNVME is not set +# BR2_PACKAGE_LIBPCIACCESS is not set +# BR2_PACKAGE_LIBPHIDGET is not set +# BR2_PACKAGE_LIBPRI is not set +# BR2_PACKAGE_LIBQMI is not set +# BR2_PACKAGE_LIBQRTR_GLIB is not set +# BR2_PACKAGE_LIBRAW1394 is not set +# BR2_PACKAGE_LIBRTLSDR is not set + +# +# libserial needs a toolchain w/ C++, gcc >= 5, threads, wchar +# +# BR2_PACKAGE_LIBSERIALPORT is not set +# BR2_PACKAGE_LIBSIGROK is not set +# BR2_PACKAGE_LIBSIGROKDECODE is not set +# BR2_PACKAGE_LIBSOC is not set +# BR2_PACKAGE_LIBSS7 is not set +# BR2_PACKAGE_LIBUSB is not set +# BR2_PACKAGE_LIBUSBGX is not set + +# +# libv4l needs a toolchain w/ threads, C++ and headers >= 3.0 +# +# BR2_PACKAGE_LIBXKBCOMMON is not set +# BR2_PACKAGE_MTDEV is not set +# BR2_PACKAGE_NEARDAL is not set +# BR2_PACKAGE_OPENSC is not set +# BR2_PACKAGE_OWFS is not set +# BR2_PACKAGE_PCSC_LITE is not set +# BR2_PACKAGE_TSLIB is not set + +# +# uhd needs a toolchain w/ C++, NPTL, wchar, dynamic library, gcc >= 5 +# + +# +# urg needs a toolchain w/ C++ +# + +# +# Javascript +# +# BR2_PACKAGE_ANGULARJS is not set +# BR2_PACKAGE_BOOTSTRAP is not set +# BR2_PACKAGE_CHARTJS is not set +# BR2_PACKAGE_DATATABLES is not set +# BR2_PACKAGE_DUKTAPE is not set +# BR2_PACKAGE_EXPLORERCANVAS is not set +# BR2_PACKAGE_FLOT is not set +# BR2_PACKAGE_FORGE is not set +# BR2_PACKAGE_JQUERY is not set +# BR2_PACKAGE_JSMIN is not set +# BR2_PACKAGE_JSON_JAVASCRIPT is not set +# BR2_PACKAGE_JSZIP is not set +# BR2_PACKAGE_OPENLAYERS is not set +# BR2_PACKAGE_POPPERJS is not set +# BR2_PACKAGE_VIS_NETWORK is not set +# BR2_PACKAGE_VUEJS is not set + +# +# JSON/XML +# + +# +# benejson needs a toolchain w/ C++ +# +# BR2_PACKAGE_CJSON is not set +# BR2_PACKAGE_EXPAT is not set +# BR2_PACKAGE_JANSSON is not set +# BR2_PACKAGE_JOSE is not set +# BR2_PACKAGE_JSMN is not set +# BR2_PACKAGE_JSON_C is not set + +# +# json-for-modern-cpp needs a toolchain w/ C++, gcc >= 4.9 +# +# BR2_PACKAGE_JSON_GLIB is not set + +# +# jsoncpp needs a toolchain w/ C++, gcc >= 4.7 +# +# BR2_PACKAGE_LIBBSON is not set +# BR2_PACKAGE_LIBFASTJSON is not set + +# +# libjson needs a toolchain w/ C++ +# +# BR2_PACKAGE_LIBROXML is not set +# BR2_PACKAGE_LIBUCL is not set +# BR2_PACKAGE_LIBXML2 is not set + +# +# libxml++ needs a toolchain w/ C++, wchar, threads, gcc >= 7 +# +# BR2_PACKAGE_LIBXMLRPC is not set +# BR2_PACKAGE_LIBXSLT is not set +# BR2_PACKAGE_LIBYAML is not set +# BR2_PACKAGE_MXML is not set + +# +# pugixml needs a toolchain w/ C++ +# + +# +# rapidjson needs a toolchain w/ C++ +# +# BR2_PACKAGE_RAPIDXML is not set +# BR2_PACKAGE_RAPTOR is not set +# BR2_PACKAGE_SERD is not set +# BR2_PACKAGE_SORD is not set + +# +# tinyxml needs a toolchain w/ C++ +# + +# +# tinyxml2 needs a toolchain w/ C++ +# + +# +# valijson needs a toolchain w/ C++ +# + +# +# xerces-c++ needs a toolchain w/ C++, dynamic library, wchar +# + +# +# xml-security-c needs a toolchain w/ C++, wchar, dynamic library, threads, gcc >= 4.7 +# +# BR2_PACKAGE_YAJL is not set + +# +# yaml-cpp needs a toolchain w/ C++, gcc >= 4.7 +# + +# +# Logging +# + +# +# glog needs a toolchain w/ C++ +# + +# +# hawktracer needs a toolchain w/ C++, gcc >= 4.8 +# +# BR2_PACKAGE_LIBLOG4C_LOCALTIME is not set +# BR2_PACKAGE_LIBLOGGING is not set + +# +# log4cplus needs a toolchain w/ C++, wchar, threads, gcc >= 4.8 +# + +# +# log4cpp needs a toolchain w/ C++, threads +# + +# +# log4cxx needs a toolchain w/ C++, threads, dynamic library +# + +# +# log4qt needs qt5 +# + +# +# opentracing-cpp needs a toolchain w/ C++, threads, dynamic library, gcc >= 4.8 +# + +# +# spdlog needs a toolchain w/ C++, threads, wchar +# + +# +# ulog needs a toolchain w/ C++, threads +# +# BR2_PACKAGE_ZLOG is not set + +# +# Multimedia +# + +# +# bento4 support needs a toolchain with C++ +# +# BR2_PACKAGE_BITSTREAM is not set +# BR2_PACKAGE_DAV1D is not set + +# +# kvazaar needs a toolchain w/ C++, threads +# +# BR2_PACKAGE_LIBAACS is not set + +# +# libass needs a toolchain w/ C++, gcc >= 4.9 +# +# BR2_PACKAGE_LIBBDPLUS is not set +# BR2_PACKAGE_LIBBLURAY is not set +BR2_PACKAGE_LIBCAMERA_ARCH_SUPPORTS=y + +# +# libcamera needs a toolchain w/ C++, threads, wchar, dynamic library, gcc >= 8 +# + +# +# libcamera-apps needs a toolchain w/ C++, threads, wchar, dynamic library, gcc >= 8 +# + +# +# libde265 needs a toolchain w/ threads, C++ +# +# BR2_PACKAGE_LIBDVBCSA is not set +# BR2_PACKAGE_LIBDVBPSI is not set + +# +# libdvbsi++ needs a toolchain w/ C++, wchar, threads +# +# BR2_PACKAGE_LIBDVDCSS is not set +# BR2_PACKAGE_LIBDVDNAV is not set +# BR2_PACKAGE_LIBDVDREAD is not set + +# +# libebml needs a toolchain w/ C++, wchar, gcc >= 4.9 +# +# BR2_PACKAGE_LIBHDHOMERUN is not set + +# +# libheif needs a toolchain w/ C++, gcc >= 4.8 +# + +# +# libmatroska needs a toolchain w/ C++, wchar, gcc >= 4.9 +# +# BR2_PACKAGE_LIBMMS is not set +# BR2_PACKAGE_LIBMPEG2 is not set +# BR2_PACKAGE_LIBOGG is not set +# BR2_PACKAGE_LIBOPENAPTX is not set +# BR2_PACKAGE_LIBOPUSENC is not set +# BR2_PACKAGE_LIBTHEORA is not set +# BR2_PACKAGE_LIBUDFREAD is not set +# BR2_PACKAGE_LIBVPX is not set + +# +# libyuv needs a toolchain w/ C++, dynamic library +# + +# +# live555 needs a toolchain w/ C++ +# + +# +# mediastreamer needs a toolchain w/ threads, C++, dynamic library, gcc >= 5 +# +# BR2_PACKAGE_X264 is not set + +# +# x265 needs a toolchain w/ C++, threads, dynamic library +# + +# +# Networking +# + +# +# agent++ needs a toolchain w/ threads, C++, dynamic library +# + +# +# azmq needs a toolchain w/ C++11, wchar and threads +# + +# +# azure-iot-sdk-c needs a toolchain w/ C++, NPTL and wchar +# +# BR2_PACKAGE_BATMAN_ADV is not set + +# +# belle-sip needs a toolchain w/ threads, C++, dynamic library, wchar +# +# BR2_PACKAGE_C_ARES is not set +# BR2_PACKAGE_CGIC is not set +# BR2_PACKAGE_CNI_PLUGINS is not set + +# +# cppzmq needs a toolchain w/ C++, threads +# + +# +# curlpp needs a toolchain w/ C++, dynamic library +# + +# +# czmq needs a toolchain w/ C++, threads +# +# BR2_PACKAGE_DAQ is not set +# BR2_PACKAGE_DAQ3 is not set +# BR2_PACKAGE_DAVICI is not set +# BR2_PACKAGE_DHT is not set +# BR2_PACKAGE_ENET is not set + +# +# filemq needs a toolchain w/ C++, threads +# +# BR2_PACKAGE_FREERADIUS_CLIENT is not set +# BR2_PACKAGE_GENSIO is not set +# BR2_PACKAGE_GEOIP is not set +# BR2_PACKAGE_GLIB_NETWORKING is not set + +# +# grpc needs a toolchain w/ C++, threads, dynamic library, gcc >= 8 +# +# BR2_PACKAGE_GSSDP is not set +# BR2_PACKAGE_GUPNP is not set +# BR2_PACKAGE_GUPNP_AV is not set +# BR2_PACKAGE_GUPNP_DLNA is not set + +# +# ibrcommon needs a toolchain w/ C++, threads +# + +# +# ibrdtn needs a toolchain w/ C++, threads +# +# BR2_PACKAGE_LIBCGI is not set + +# +# libcgicc needs a toolchain w/ C++ +# +# BR2_PACKAGE_LIBCOAP is not set + +# +# libcpprestsdk needs a toolchain w/ NPTL, C++, wchar, locale +# +# BR2_PACKAGE_LIBCURL is not set +# BR2_PACKAGE_LIBDNET is not set +# BR2_PACKAGE_LIBEXOSIP2 is not set +# BR2_PACKAGE_LIBEST is not set +# BR2_PACKAGE_LIBFCGI is not set +# BR2_PACKAGE_LIBGSASL is not set +# BR2_PACKAGE_LIBHTP is not set +# BR2_PACKAGE_LIBHTTPPARSER is not set + +# +# libhttpserver needs a toolchain w/ C++, threads, gcc >= 7 +# +# BR2_PACKAGE_LIBIDN is not set +# BR2_PACKAGE_LIBIDN2 is not set +# BR2_PACKAGE_LIBISCSI is not set +# BR2_PACKAGE_LIBKRB5 is not set +# BR2_PACKAGE_LIBLDNS is not set +# BR2_PACKAGE_LIBMAXMINDDB is not set +# BR2_PACKAGE_LIBMBUS is not set + +# +# libmemcached needs a toolchain w/ C++, threads +# +# BR2_PACKAGE_LIBMICROHTTPD is not set +# BR2_PACKAGE_LIBMINIUPNPC is not set +# BR2_PACKAGE_LIBMNL is not set +# BR2_PACKAGE_LIBMODBUS is not set + +# +# libmodsecurity needs a toolchain w/ C++, threads, dynamic library +# +# BR2_PACKAGE_LIBNATPMP is not set +# BR2_PACKAGE_LIBNDP is not set +# BR2_PACKAGE_LIBNET is not set +# BR2_PACKAGE_LIBNETCONF2 is not set +# BR2_PACKAGE_LIBNETFILTER_ACCT is not set +# BR2_PACKAGE_LIBNETFILTER_CONNTRACK is not set +# BR2_PACKAGE_LIBNETFILTER_CTHELPER is not set +# BR2_PACKAGE_LIBNETFILTER_CTTIMEOUT is not set +# BR2_PACKAGE_LIBNETFILTER_LOG is not set +# BR2_PACKAGE_LIBNETFILTER_QUEUE is not set +# BR2_PACKAGE_LIBNFNETLINK is not set +# BR2_PACKAGE_LIBNFTNL is not set +# BR2_PACKAGE_LIBNICE is not set +# BR2_PACKAGE_LIBNIDS is not set +# BR2_PACKAGE_LIBNL is not set + +# +# libnpupnp needs a toolchain w/ C++, threads, gcc >= 4.9 +# +# BR2_PACKAGE_LIBOAUTH is not set +# BR2_PACKAGE_LIBOPING is not set +# BR2_PACKAGE_LIBOSIP2 is not set +# BR2_PACKAGE_LIBPAGEKITE is not set +# BR2_PACKAGE_LIBPCAP is not set + +# +# libpjsip needs a toolchain w/ C++, threads +# +# BR2_PACKAGE_LIBPSL is not set +# BR2_PACKAGE_LIBRELP is not set +# BR2_PACKAGE_LIBRSYNC is not set +# BR2_PACKAGE_LIBSHAIRPLAY is not set +# BR2_PACKAGE_LIBSHOUT is not set +# BR2_PACKAGE_LIBSOCKETCAN is not set +# BR2_PACKAGE_LIBSOUP is not set +# BR2_PACKAGE_LIBSOUP3 is not set +# BR2_PACKAGE_LIBSRTP is not set +# BR2_PACKAGE_LIBSTROPHE is not set +# BR2_PACKAGE_LIBTEAM is not set +# BR2_PACKAGE_LIBTELNET is not set +# BR2_PACKAGE_LIBTIRPC is not set + +# +# libtorrent needs a toolchain w/ C++, threads +# + +# +# libtorrent-rasterbar needs a toolchain w/ C++, threads, wchar, gcc >= 4.9 +# +# BR2_PACKAGE_LIBUEV is not set +# BR2_PACKAGE_LIBUHTTPD is not set +# BR2_PACKAGE_LIBUPNP is not set + +# +# libupnpp needs a toolchain w/ C++, threads, gcc >= 4.9 +# +# BR2_PACKAGE_LIBURIPARSER is not set + +# +# libutp support needs a toolchain with C++ +# +# BR2_PACKAGE_LIBUWSC is not set +# BR2_PACKAGE_LIBVNCSERVER is not set +# BR2_PACKAGE_LIBWEBSOCK is not set +# BR2_PACKAGE_LIBWEBSOCKETS is not set +# BR2_PACKAGE_LIBYANG is not set +# BR2_PACKAGE_LIBZENOH_PICO is not set +# BR2_PACKAGE_LKSCTP_TOOLS is not set +# BR2_PACKAGE_MBUFFER is not set +# BR2_PACKAGE_MDNSD is not set +# BR2_PACKAGE_MONGOOSE is not set +# BR2_PACKAGE_NANOMSG is not set +# BR2_PACKAGE_NEON is not set + +# +# netopeer2 needs a toolchain w/ gcc >= 4.8, C++, threads, dynamic library +# +# BR2_PACKAGE_NGHTTP2 is not set + +# +# norm needs a toolchain w/ C++, threads, dynamic library +# +# BR2_PACKAGE_NSS_MYHOSTNAME is not set +# BR2_PACKAGE_NSS_PAM_LDAPD is not set + +# +# oatpp needs a toolchain w/ C++, threads +# + +# +# omniORB needs a toolchain w/ C++, threads +# +# BR2_PACKAGE_OPEN_ISNS is not set +# BR2_PACKAGE_OPEN62541 is not set +# BR2_PACKAGE_OPENLDAP is not set + +# +# openmpi needs a toolchain w/ dynamic library, NPTL, wchar, C++ +# +# BR2_PACKAGE_OPENPGM is not set + +# +# openzwave needs a toolchain w/ C++, dynamic library, NPTL, wchar +# + +# +# ortp needs a toolchain w/ C++, threads +# +# BR2_PACKAGE_PAHO_MQTT_C is not set + +# +# paho-mqtt-cpp needs a toolchain w/ threads, C++ +# + +# +# pistache needs a toolchain w/ C++, gcc >= 7, threads, wchar, not binutils bug 27597 +# +# BR2_PACKAGE_QDECODER is not set + +# +# qpid-proton needs a toolchain w/ C++, dynamic library, threads +# +# BR2_PACKAGE_RABBITMQ_C is not set + +# +# resiprocate needs a toolchain w/ C++, threads, wchar +# + +# +# restclient-cpp needs a toolchain w/ C++, gcc >= 4.8 +# +# BR2_PACKAGE_RTMPDUMP is not set +# BR2_PACKAGE_SIPROXD is not set +# BR2_PACKAGE_SLIRP is not set +# BR2_PACKAGE_SLIRP4NETNS is not set + +# +# snmp++ needs a toolchain w/ threads, C++, dynamic library +# +# BR2_PACKAGE_SOFIA_SIP is not set +# BR2_PACKAGE_SSCEP is not set + +# +# sysrepo needs a toolchain w/ C++, NPTL, dynamic library, gcc >= 4.8 +# + +# +# thrift needs a toolchain w/ C++, wchar, threads +# +# BR2_PACKAGE_USBREDIR is not set + +# +# wampcc needs a toolchain w/ C++, NPTL, dynamic library, gcc >= 4.9 +# + +# +# websocketpp needs a toolchain w/ C++ and gcc >= 4.8 +# + +# +# zeromq needs a toolchain w/ C++, threads +# + +# +# zmqpp needs a toolchain w/ C++, threads, gcc >= 4.7 +# + +# +# zyre needs a toolchain w/ C++, threads +# + +# +# Other +# + +# +# ACE needs a glibc toolchain, dynamic library, C++, gcc >= 4.9 +# +# BR2_PACKAGE_APR is not set +# BR2_PACKAGE_APR_UTIL is not set + +# +# armadillo needs a toolchain w/ C++ +# + +# +# atf needs a toolchain w/ C++ +# +# BR2_PACKAGE_AVRO_C is not set + +# +# bctoolbox needs a toolchain w/ C++, threads +# +# BR2_PACKAGE_BDWGC is not set + +# +# belr needs a toolchain w/ threads, C++ +# + +# +# boost needs a toolchain w/ C++, threads, wchar +# + +# +# c-capnproto needs host and target gcc >= 5 w/ C++14, threads, atomic, ucontext and not gcc bug 64735 +# + +# +# capnproto needs host and target gcc >= 5 w/ C++14, threads, atomic, ucontext and not gcc bug 64735 +# + +# +# catch2 needs a toolchain w/ C++, wchar, threads, gcc >= 5 +# + +# +# cctz needs a toolchain w/ C++, threads, gcc >= 4.8 +# + +# +# cereal needs a toolchain w/ C++, gcc >= 4.7, threads, wchar +# + +# +# clang needs a toolchain w/ wchar, threads, C++, gcc >= 7, dynamic library, host gcc >= 7 +# +# BR2_PACKAGE_CMOCKA is not set + +# +# cppcms needs a toolchain w/ C++, NPTL, wchar, dynamic library +# +# BR2_PACKAGE_CRACKLIB is not set + +# +# dawgdic needs a toolchain w/ C++, gcc >= 4.6 +# +# BR2_PACKAGE_DING_LIBS is not set +# BR2_PACKAGE_DOTCONF is not set + +# +# double-conversion needs a toolchain w/ C++ +# + +# +# eigen needs a toolchain w/ C++ +# +# BR2_PACKAGE_ELFUTILS is not set +# BR2_PACKAGE_ELL is not set +# BR2_PACKAGE_FFTW is not set + +# +# flann needs a toolchain w/ C++, dynamic library, gcc >= 4.7 +# + +# +# flatbuffers needs a toolchain w/ C++, gcc >= 4.7 +# +# BR2_PACKAGE_FLATCC is not set +# BR2_PACKAGE_FXDIV is not set +# BR2_PACKAGE_GCONF is not set + +# +# gdal needs a toolchain w/ C++, dynamic library, gcc >= 4.7, not binutils bug 27597, threads, wchar +# + +# +# gflags needs a toolchain w/ C++ +# + +# +# gli needs a toolchain w/ C++ +# + +# +# glibmm needs a toolchain w/ C++, wchar, threads, gcc >= 7 +# + +# +# glibmm (2.66.x) needs a toolchain w/ C++, wchar, threads, gcc >= 4.9 +# + +# +# glm needs a toolchain w/ C++ +# +# BR2_PACKAGE_GMP is not set +BR2_PACKAGE_GOBJECT_INTROSPECTION_ARCH_SUPPORTS=y + +# +# gobject-introspection needs python3 +# +# BR2_PACKAGE_GSL is not set + +# +# gtest needs a toolchain w/ C++, wchar, threads, gcc >= 5 +# +# BR2_PACKAGE_GUMBO_PARSER is not set + +# +# highway needs a toolchain w/ C++, gcc >= 7 +# +BR2_PACKAGE_JEMALLOC_ARCH_SUPPORTS=y +# BR2_PACKAGE_JEMALLOC is not set +BR2_PACKAGE_LAPACK_ARCH_SUPPORTS=y + +# +# lapack/blas needs a toolchain w/ fortran +# +BR2_PACKAGE_LIBABSEIL_CPP_ARCH_SUPPORTS=y + +# +# libabseil-cpp needs a toolchain w/ gcc >= 8, C++, threads, dynamic library +# +# BR2_PACKAGE_LIBARGTABLE2 is not set +BR2_PACKAGE_LIBATOMIC_OPS_ARCH_SUPPORTS=y +# BR2_PACKAGE_LIBATOMIC_OPS is not set +# BR2_PACKAGE_LIBAVL is not set +# BR2_PACKAGE_LIBB64 is not set +# BR2_PACKAGE_LIBBACKTRACE is not set +BR2_PACKAGE_LIBBSD_ARCH_SUPPORTS=y +# BR2_PACKAGE_LIBBSD is not set +# BR2_PACKAGE_LIBBYTESIZE is not set +# BR2_PACKAGE_LIBCAP is not set +# BR2_PACKAGE_LIBCAP_NG is not set + +# +# libcgroup needs a toolchain w/ C++, threads +# +# BR2_PACKAGE_LIBCLC is not set +# BR2_PACKAGE_LIBCORRECT is not set + +# +# libcrossguid needs a toolchain w/ C++, gcc >= 4.7 +# +# BR2_PACKAGE_LIBCSV is not set +# BR2_PACKAGE_LIBDAEMON is not set +# BR2_PACKAGE_LIBDILL is not set +# BR2_PACKAGE_LIBEE is not set +# BR2_PACKAGE_LIBEV is not set +# BR2_PACKAGE_LIBEVDEV is not set +# BR2_PACKAGE_LIBEVENT is not set + +# +# libexecinfo needs a musl or uclibc toolchain w/ dynamic library +# +# BR2_PACKAGE_LIBFFI is not set + +# +# libfutils needs a toolchain w/ C++, threads +# +# BR2_PACKAGE_LIBGEE is not set + +# +# libgeos needs a toolchain w/ C++, wchar, gcc >= 4.9, threads not binutils bug 27597 +# +# BR2_PACKAGE_LIBGLIB2 is not set +# BR2_PACKAGE_LIBGLOB is not set + +# +# libical needs a toolchain w/ C++, dynamic library, wchar +# +# BR2_PACKAGE_LIBITE is not set + +# +# libks needs a toolchain w/ C++, NPTL, dynamic library +# + +# +# liblinear needs a toolchain w/ C++ +# + +# +# libloki needs a toolchain w/ C++, threads +# +# BR2_PACKAGE_LIBNPTH is not set +BR2_PACKAGE_LIBNSPR_ARCH_SUPPORT=y +# BR2_PACKAGE_LIBNSPR is not set + +# +# libosmium needs a toolchain w/ C++, wchar, threads, gcc >= 4.7 +# + +# +# libpeas needs python3 +# +# BR2_PACKAGE_LIBPFM4 is not set + +# +# libplist needs a toolchain w/ C++, threads +# +# BR2_PACKAGE_LIBPTHREAD_STUBS is not set +# BR2_PACKAGE_LIBPTHSEM is not set +# BR2_PACKAGE_LIBPWQUALITY is not set +# BR2_PACKAGE_LIBQB is not set +BR2_PACKAGE_LIBSECCOMP_ARCH_SUPPORTS=y +# BR2_PACKAGE_LIBSECCOMP is not set + +# +# libshdata needs a toolchain w/ C++, threads +# + +# +# libsigc++ needs a toolchain w/ C++, gcc >= 7 +# + +# +# libsigc++ (2.x.x) needs a toolchain w/ C++, gcc >= 4.9 +# +BR2_PACKAGE_LIBSIGSEGV_ARCH_SUPPORTS=y +# BR2_PACKAGE_LIBSIGSEGV is not set +# BR2_PACKAGE_LIBSOLV is not set + +# +# libspatialindex needs a toolchain w/ C++, gcc >= 4.7 +# +# BR2_PACKAGE_LIBTALLOC is not set +# BR2_PACKAGE_LIBTASN1 is not set +# BR2_PACKAGE_LIBTOMMATH is not set +# BR2_PACKAGE_LIBTPL is not set +# BR2_PACKAGE_LIBUBOX is not set +# BR2_PACKAGE_LIBUCI is not set +BR2_PACKAGE_LIBURCU_ARCH_SUPPORTS=y + +# +# liburcu needs a toolchain w/ threads, C++ +# +# BR2_PACKAGE_LIBURING is not set +# BR2_PACKAGE_LIBUTEMPTER is not set +# BR2_PACKAGE_LIBUV is not set +# BR2_PACKAGE_LIGHTNING is not set +# BR2_PACKAGE_LINUX_PAM is not set +# BR2_PACKAGE_LIQUID_DSP is not set +BR2_PACKAGE_LLVM_ARCH_SUPPORTS=y +BR2_PACKAGE_LLVM_TARGET_ARCH="riscv64" + +# +# llvm needs a toolchain w/ wchar, threads, C++, gcc >= 7, dynamic library, host gcc >= 7 +# + +# +# lttng-libust needs a toolchain w/ dynamic library, wchar, threads, C++ +# +# BR2_PACKAGE_MATIO is not set +# BR2_PACKAGE_MPC is not set +# BR2_PACKAGE_MPDECIMAL is not set +# BR2_PACKAGE_MPFR is not set +# BR2_PACKAGE_MPIR is not set + +# +# msgpack needs a toolchain w/ C++ +# +# BR2_PACKAGE_NEON_2_SSE is not set +BR2_PACKAGE_OPENBLAS_DEFAULT_TARGET="RISCV64_GENERIC" +BR2_PACKAGE_OPENBLAS_ARCH_SUPPORTS=y +# BR2_PACKAGE_OPENBLAS is not set +# BR2_PACKAGE_ORC is not set +# BR2_PACKAGE_P11_KIT is not set +BR2_PACKAGE_POCO_ARCH_SUPPORTS=y + +# +# poco needs a toolchain w/ wchar, NPTL, C++, dynamic library, gcc >= 5 w/ C++14 +# +BR2_PACKAGE_HOST_PROTOBUF_ARCH_SUPPORTS=y +BR2_PACKAGE_PROTOBUF_ARCH_SUPPORTS=y + +# +# protobuf needs a toolchain w/ C++, threads, dynamic library, gcc >= 4.8 +# + +# +# protobuf-c needs a toolchain w/ C++, threads +# + +# +# protozero needs a toolchain w/ C++, gcc >= 4.7 +# + +# +# qhull needs a toolchain w/ C++, gcc >= 4.4 +# +# BR2_PACKAGE_QLIBC is not set +# BR2_PACKAGE_REPROC is not set + +# +# riemann-c-client needs a toolchain w/ C++, threads +# + +# +# shapelib needs a toolchain w/ C++, threads +# +# BR2_PACKAGE_SKALIBS is not set +# BR2_PACKAGE_SPHINXBASE is not set + +# +# tbb needs a glibc or musl toolchain w/ dynamic library, threads, C++ +# +# BR2_PACKAGE_TINYCBOR is not set + +# +# tl-expected needs a toolchain w/ C++, gcc >= 4.8 +# +# BR2_PACKAGE_TLLIST is not set + +# +# uvw needs a toolchain w/ NPTL, dynamic library, C++, gcc >= 7 +# + +# +# volk needs a toolchain w/ C++, NPTL, wchar, dynamic library +# + +# +# xapian needs a toolchain w/ C++ +# + +# +# Security +# +# BR2_PACKAGE_LIBAPPARMOR is not set +# BR2_PACKAGE_LIBSELINUX is not set +# BR2_PACKAGE_LIBSEPOL is not set +# BR2_PACKAGE_SAFECLIB is not set + +# +# softhsm2 needs a toolchain w/ C++, threads, gcc >= 4.8 and dynamic library support +# + +# +# Text and terminal handling +# +# BR2_PACKAGE_AUGEAS is not set + +# +# cli11 needs a toolchain w/ C++, gcc >= 4.8 +# + +# +# docopt-cpp needs a toolchain w/ C++, gcc >= 4.7 +# + +# +# enchant needs a toolchain w/ C++, threads, wchar +# +# BR2_PACKAGE_FCFT is not set + +# +# fmt needs a toolchain w/ C++, wchar +# +# BR2_PACKAGE_FSTRCMP is not set + +# +# icu needs a toolchain w/ C++, wchar, threads, gcc >= 4.9, host gcc >= 4.9 +# +# BR2_PACKAGE_INIH is not set +# BR2_PACKAGE_LIBCLI is not set +# BR2_PACKAGE_LIBEDIT is not set +# BR2_PACKAGE_LIBENCA is not set +# BR2_PACKAGE_LIBESTR is not set +# BR2_PACKAGE_LIBFRIBIDI is not set +# BR2_PACKAGE_LIBUNIBREAK is not set +# BR2_PACKAGE_LIBUNISTRING is not set +# BR2_PACKAGE_LINENOISE is not set +# BR2_PACKAGE_NCURSES is not set +# BR2_PACKAGE_NEWT is not set +# BR2_PACKAGE_ONIGURUMA is not set +# BR2_PACKAGE_PCRE is not set +# BR2_PACKAGE_PCRE2 is not set +# BR2_PACKAGE_POPT is not set + +# +# re2 needs a toolchain w/ C++, threads, gcc >= 8 +# +# BR2_PACKAGE_READLINE is not set +# BR2_PACKAGE_SLANG is not set + +# +# tclap needs a toolchain w/ C++ +# + +# +# termcolor needs a toolchain w/ C++, gcc >= 4.8 +# +# BR2_PACKAGE_UTF8PROC is not set + +# +# Mail +# +# BR2_PACKAGE_DOVECOT is not set +# BR2_PACKAGE_EXIM is not set +# BR2_PACKAGE_FETCHMAIL is not set +# BR2_PACKAGE_HEIRLOOM_MAILX is not set +# BR2_PACKAGE_LIBESMTP is not set +# BR2_PACKAGE_MSMTP is not set +# BR2_PACKAGE_MUTT is not set + +# +# Miscellaneous +# +# BR2_PACKAGE_AESPIPE is not set +# BR2_PACKAGE_BC is not set +BR2_PACKAGE_BITCOIN_ARCH_SUPPORTS=y + +# +# bitcoin needs a toolchain w/ C++, threads, wchar +# +# BR2_PACKAGE_COLLECTD is not set +# BR2_PACKAGE_COLLECTL is not set + +# +# domoticz needs lua 5.3 and a toolchain w/ C++, gcc >= 6, NPTL, wchar, dynamic library +# +# BR2_PACKAGE_EMPTY is not set +# BR2_PACKAGE_FFT_EVAL is not set +# BR2_PACKAGE_GITLAB_RUNNER is not set + +# +# gnuradio needs a toolchain w/ C++, NPTL, wchar, dynamic library, gcc >= 8 +# +# BR2_PACKAGE_GOOGLEFONTDIRECTORY is not set + +# +# gqrx needs a toolchain w/ C++, threads, wchar, dynamic library, gcc >= 8 +# + +# +# gqrx needs qt5 +# +# BR2_PACKAGE_GSETTINGS_DESKTOP_SCHEMAS is not set +# BR2_PACKAGE_HAVEGED is not set +# BR2_PACKAGE_LINUX_SYSCALL_SUPPORT is not set +# BR2_PACKAGE_MOBILE_BROADBAND_PROVIDER_INFO is not set +# BR2_PACKAGE_NETDATA is not set + +# +# proj needs a toolchain w/ C++, gcc >= 4.7, threads, wchar +# +BR2_PACKAGE_QEMU_ARCH_SUPPORTS_TARGET=y +# BR2_PACKAGE_QEMU is not set + +# +# qpdf needs a toolchain w/ C++, gcc >= 5 +# +# BR2_PACKAGE_RTL_433 is not set +# BR2_PACKAGE_SHARED_MIME_INFO is not set + +# +# sunwait needs a toolchain w/ C++ +# + +# +# taskd needs a toolchain w/ C++, wchar, dynamic library +# +# BR2_PACKAGE_XUTIL_UTIL_MACROS is not set +BR2_PACKAGE_Z3_ARCH_SUPPORTS=y + +# +# Networking applications +# + +# +# aircrack-ng needs a toolchain w/ dynamic library, threads, C++ +# +# BR2_PACKAGE_ALFRED is not set +# BR2_PACKAGE_AOETOOLS is not set +# BR2_PACKAGE_APACHE is not set +# BR2_PACKAGE_ARGUS is not set +# BR2_PACKAGE_ARP_SCAN is not set +# BR2_PACKAGE_ARPTABLES is not set + +# +# asterisk needs a glibc or uClibc toolchain w/ C++, dynamic library, threads, wchar +# +# BR2_PACKAGE_ATFTP is not set +# BR2_PACKAGE_AVAHI is not set +# BR2_PACKAGE_AXEL is not set +# BR2_PACKAGE_BABELD is not set +# BR2_PACKAGE_BANDWIDTHD is not set +# BR2_PACKAGE_BATCTL is not set + +# +# bcusdk needs a toolchain w/ C++ +# +# BR2_PACKAGE_BIND is not set +# BR2_PACKAGE_BIRD is not set +# BR2_PACKAGE_BLUEZ5_UTILS is not set +# BR2_PACKAGE_BMON is not set +# BR2_PACKAGE_BMX7 is not set + +# +# boinc needs a toolchain w/ dynamic library, C++, threads, gcc >= 4.8 +# +# BR2_PACKAGE_BRCM_PATCHRAM_PLUS is not set +# BR2_PACKAGE_BRIDGE_UTILS is not set +# BR2_PACKAGE_BWM_NG is not set +# BR2_PACKAGE_C_ICAP is not set +# BR2_PACKAGE_CAN_UTILS is not set + +# +# cannelloni needs a toolchain w/ C++, threads, dynamic library, gcc >= 4.8 +# +# BR2_PACKAGE_CASYNC is not set +# BR2_PACKAGE_CFM is not set +# BR2_PACKAGE_CHRONY is not set +# BR2_PACKAGE_CIVETWEB is not set +# BR2_PACKAGE_CONNMAN is not set + +# +# connman-gtk needs libgtk3 and a glibc or uClibc toolchain w/ wchar, threads, resolver, dynamic library +# +# BR2_PACKAGE_CONNTRACK_TOOLS is not set +# BR2_PACKAGE_CORKSCREW is not set +# BR2_PACKAGE_CRDA is not set + +# +# ctorrent needs a toolchain w/ C++ +# + +# +# cups needs a toolchain w/ C++, threads +# + +# +# cups-filters needs a toolchain w/ wchar, C++, threads and dynamic library, gcc >= 5 +# +# BR2_PACKAGE_DANTE is not set +# BR2_PACKAGE_DARKHTTPD is not set +# BR2_PACKAGE_DEHYDRATED is not set +# BR2_PACKAGE_DHCPCD is not set +# BR2_PACKAGE_DHCPDUMP is not set +# BR2_PACKAGE_DNSMASQ is not set +# BR2_PACKAGE_DRBD_UTILS is not set +# BR2_PACKAGE_DROPBEAR is not set +# BR2_PACKAGE_EASYFRAMES is not set +# BR2_PACKAGE_EBTABLES is not set + +# +# ejabberd needs erlang, toolchain w/ C++ +# +# BR2_PACKAGE_ETHTOOL is not set +# BR2_PACKAGE_FAIFA is not set +# BR2_PACKAGE_FASTD is not set +# BR2_PACKAGE_FCGIWRAP is not set +# BR2_PACKAGE_FIREWALLD is not set +# BR2_PACKAGE_FLANNEL is not set +# BR2_PACKAGE_FPING is not set +# BR2_PACKAGE_FREERADIUS_SERVER is not set + +# +# freeswitch needs a toolchain w/ C++, dynamic library, threads, wchar +# +# BR2_PACKAGE_FRR is not set + +# +# gerbera needs a toolchain w/ C++, dynamic library, threads, wchar, gcc >= 8 +# +# BR2_PACKAGE_GESFTPSERVER is not set + +# +# gloox needs a toolchain w/ C++ +# +# BR2_PACKAGE_GLORYTUN is not set + +# +# gupnp-tools needs libgtk3 +# + +# +# hans needs a toolchain w/ C++ +# +BR2_PACKAGE_HAPROXY_ARCH_SUPPORTS=y +# BR2_PACKAGE_HAPROXY is not set +# BR2_PACKAGE_HIAWATHA is not set +# BR2_PACKAGE_HOSTAPD is not set +# BR2_PACKAGE_HTPDATE is not set +# BR2_PACKAGE_HTTPING is not set + +# +# i2pd needs a toolchain w/ C++, NPTL, wchar +# + +# +# ibrdtn-tools needs a toolchain w/ C++, threads +# + +# +# ibrdtnd needs a toolchain w/ C++, threads +# +# BR2_PACKAGE_IFMETRIC is not set +# BR2_PACKAGE_IFTOP is not set +BR2_PACKAGE_IFUPDOWN_SCRIPTS=y +# BR2_PACKAGE_IGD2_FOR_LINUX is not set +# BR2_PACKAGE_IGH_ETHERCAT is not set +# BR2_PACKAGE_IGMPPROXY is not set +# BR2_PACKAGE_INADYN is not set +# BR2_PACKAGE_IODINE is not set + +# +# iperf needs a toolchain w/ C++ +# +# BR2_PACKAGE_IPERF3 is not set +# BR2_PACKAGE_IPROUTE2 is not set +# BR2_PACKAGE_IPSET is not set +# BR2_PACKAGE_IPTABLES is not set +# BR2_PACKAGE_IPTRAF_NG is not set +# BR2_PACKAGE_IPUTILS is not set +# BR2_PACKAGE_IRSSI is not set +# BR2_PACKAGE_IW is not set +# BR2_PACKAGE_IWD is not set +# BR2_PACKAGE_JANUS_GATEWAY is not set +# BR2_PACKAGE_KEEPALIVED is not set + +# +# kismet needs a toolchain w/ threads, C++, gcc >= 5 +# +# BR2_PACKAGE_KNOCK is not set +# BR2_PACKAGE_KSMBD_TOOLS is not set +# BR2_PACKAGE_LEAFNODE2 is not set +# BR2_PACKAGE_LFT is not set + +# +# lftp requires a toolchain w/ C++, wchar +# +# BR2_PACKAGE_LIGHTTPD is not set + +# +# linknx needs a toolchain w/ C++ +# +# BR2_PACKAGE_LINKS is not set + +# +# linphone needs a toolchain w/ threads, C++, dynamic library, wchar, gcc >= 5 +# +# BR2_PACKAGE_LINUX_ZIGBEE is not set +# BR2_PACKAGE_LINUXPTP is not set +# BR2_PACKAGE_LLDPD is not set +# BR2_PACKAGE_LRZSZ is not set +# BR2_PACKAGE_LYNX is not set +# BR2_PACKAGE_MACCHANGER is not set +# BR2_PACKAGE_MEMCACHED is not set +# BR2_PACKAGE_MII_DIAG is not set +# BR2_PACKAGE_MINI_SNMPD is not set +# BR2_PACKAGE_MINIDLNA is not set +# BR2_PACKAGE_MINISSDPD is not set +# BR2_PACKAGE_MJPG_STREAMER is not set +# BR2_PACKAGE_MODEM_MANAGER is not set +BR2_PACKAGE_MONGREL2_LIBC_SUPPORTS=y + +# +# mongrel2 needs a uClibc or glibc toolchain w/ C++, threads, dynamic library +# + +# +# mosh needs a toolchain w/ C++, threads, dynamic library, wchar, gcc >= 4.8 +# +# BR2_PACKAGE_MOSQUITTO is not set +# BR2_PACKAGE_MROUTED is not set +# BR2_PACKAGE_MRP is not set +# BR2_PACKAGE_MSTPD is not set +# BR2_PACKAGE_MTR is not set +# BR2_PACKAGE_NBD is not set +# BR2_PACKAGE_NCFTP is not set +# BR2_PACKAGE_NDISC6 is not set +# BR2_PACKAGE_NETATALK is not set +# BR2_PACKAGE_NETCALC is not set +# BR2_PACKAGE_NETPLUG is not set +# BR2_PACKAGE_NETSNMP is not set +# BR2_PACKAGE_NETSTAT_NAT is not set + +# +# NetworkManager needs udev /dev management and a glibc toolchain w/ headers >= 4.6, dynamic library, wchar, threads, gcc >= 4.9 +# +# BR2_PACKAGE_NFACCT is not set +# BR2_PACKAGE_NFTABLES is not set +# BR2_PACKAGE_NGINX is not set +# BR2_PACKAGE_NGIRCD is not set +# BR2_PACKAGE_NGREP is not set + +# +# nload needs a toolchain w/ C++ +# + +# +# nmap-nmap needs a toolchain w/ C++, threads +# +# BR2_PACKAGE_NOIP is not set +# BR2_PACKAGE_NTP is not set +# BR2_PACKAGE_NTPSEC is not set +# BR2_PACKAGE_NUTTCP is not set +# BR2_PACKAGE_ODHCP6C is not set +# BR2_PACKAGE_ODHCPLOC is not set +# BR2_PACKAGE_OLSR is not set +# BR2_PACKAGE_OPEN_ISCSI is not set +# BR2_PACKAGE_OPEN_LLDP is not set +# BR2_PACKAGE_OPEN_PLC_UTILS is not set +# BR2_PACKAGE_OPENNTPD is not set +# BR2_PACKAGE_OPENOBEX is not set +# BR2_PACKAGE_OPENRESOLV is not set +# BR2_PACKAGE_OPENSSH is not set +# BR2_PACKAGE_OPENSWAN is not set +# BR2_PACKAGE_OPENVPN is not set +# BR2_PACKAGE_P910ND is not set +# BR2_PACKAGE_PARPROUTED is not set +# BR2_PACKAGE_PHIDGETWEBSERVICE is not set +# BR2_PACKAGE_PHYTOOL is not set +# BR2_PACKAGE_PIMD is not set +# BR2_PACKAGE_PIXIEWPS is not set +# BR2_PACKAGE_POUND is not set +# BR2_PACKAGE_PPPD is not set +# BR2_PACKAGE_PPTP_LINUX is not set +# BR2_PACKAGE_PRIVOXY is not set +# BR2_PACKAGE_PROFTPD is not set + +# +# prosody needs the lua interpreter, dynamic library +# +# BR2_PACKAGE_PROXYCHAINS_NG is not set +# BR2_PACKAGE_PTPD is not set +# BR2_PACKAGE_PTPD2 is not set +# BR2_PACKAGE_PURE_FTPD is not set +# BR2_PACKAGE_PUTTY is not set +# BR2_PACKAGE_QUAGGA is not set +# BR2_PACKAGE_RADVD is not set +# BR2_PACKAGE_REAVER is not set +# BR2_PACKAGE_REDIR is not set +# BR2_PACKAGE_RP_PPPOE is not set +# BR2_PACKAGE_RPCBIND is not set +# BR2_PACKAGE_RSH_REDONE is not set +# BR2_PACKAGE_RSYNC is not set + +# +# rtorrent needs a toolchain w/ C++, threads, wchar, gcc >= 4.9 +# +# BR2_PACKAGE_RTPTOOLS is not set + +# +# rygel needs python3 and a glibc toolchain w/ wchar, threads, gcc >= 4.9, host gcc >= 8 +# +# BR2_PACKAGE_S6_DNS is not set +# BR2_PACKAGE_S6_NETWORKING is not set +# BR2_PACKAGE_SAMBA4 is not set + +# +# sconeserver needs a toolchain with dynamic library, C++, NPTL +# +# BR2_PACKAGE_SER2NET is not set +# BR2_PACKAGE_SHADOWSOCKS_LIBEV is not set + +# +# shairport-sync needs a toolchain w/ C++, NPTL +# +# BR2_PACKAGE_SHELLINABOX is not set +# BR2_PACKAGE_SMCROUTE is not set +# BR2_PACKAGE_SNGREP is not set +# BR2_PACKAGE_SNORT is not set +# BR2_PACKAGE_SOCAT is not set +# BR2_PACKAGE_SOCKETCAND is not set +# BR2_PACKAGE_SOFTETHER is not set +# BR2_PACKAGE_SPAWN_FCGI is not set +# BR2_PACKAGE_SPICE_PROTOCOL is not set + +# +# squid needs a toolchain w/ C++, threads, gcc >= 4.8 not affected by bug 64735 +# +# BR2_PACKAGE_SSDP_RESPONDER is not set +# BR2_PACKAGE_SSHGUARD is not set +# BR2_PACKAGE_SSHPASS is not set +# BR2_PACKAGE_SSLH is not set +# BR2_PACKAGE_STRONGSWAN is not set +# BR2_PACKAGE_STUNNEL is not set +# BR2_PACKAGE_TCPDUMP is not set +# BR2_PACKAGE_TCPING is not set +# BR2_PACKAGE_TCPREPLAY is not set +# BR2_PACKAGE_THTTPD is not set +# BR2_PACKAGE_TINC is not set +# BR2_PACKAGE_TINYPROXY is not set +# BR2_PACKAGE_TINYSSH is not set +# BR2_PACKAGE_TOR is not set +# BR2_PACKAGE_TRACEROUTE is not set + +# +# transmission needs a toolchain w/ dynamic library, threads, C++, gcc >= 7 +# +# BR2_PACKAGE_TUNCTL is not set +# BR2_PACKAGE_TVHEADEND is not set +# BR2_PACKAGE_UACME is not set +# BR2_PACKAGE_UDPCAST is not set +# BR2_PACKAGE_UFTP is not set +# BR2_PACKAGE_UHTTPD is not set +# BR2_PACKAGE_ULOGD is not set +# BR2_PACKAGE_UNBOUND is not set +# BR2_PACKAGE_UQMI is not set +# BR2_PACKAGE_UREDIR is not set +# BR2_PACKAGE_USHARE is not set +# BR2_PACKAGE_USSP_PUSH is not set +# BR2_PACKAGE_VDE2 is not set + +# +# vdr needs a toolchain w/ C++, dynamic library, NPTL, wchar, headers >= 3.9 +# +# BR2_PACKAGE_VNSTAT is not set +# BR2_PACKAGE_VPNC is not set +# BR2_PACKAGE_VSFTPD is not set +# BR2_PACKAGE_VTUN is not set +# BR2_PACKAGE_WAVEMON is not set +# BR2_PACKAGE_WIREGUARD_TOOLS is not set +# BR2_PACKAGE_WIRELESS_REGDB is not set +# BR2_PACKAGE_WIRELESS_TOOLS is not set + +# +# wireshark needs a toolchain w/ wchar, threads, dynamic library, C++ +# +# BR2_PACKAGE_WPA_SUPPLICANT is not set +# BR2_PACKAGE_WPAN_TOOLS is not set +# BR2_PACKAGE_XINETD is not set +# BR2_PACKAGE_XL2TP is not set +# BR2_PACKAGE_XTABLES_ADDONS is not set +# BR2_PACKAGE_ZABBIX is not set + +# +# zeek needs a toolchain w/ C++, wchar, threads, dynamic library, gcc >= 7, host gcc >= 7 +# + +# +# znc needs a toolchain w/ C++, dynamic library, gcc >= 4.8, threads +# + +# +# Package managers +# + +# +# ------------------------------------------------------- +# + +# +# Please note: +# + +# +# - Buildroot does *not* generate binary packages, +# + +# +# - Buildroot does *not* install any package database. +# + +# +# * +# + +# +# It is up to you to provide those by yourself if you +# + +# +# want to use any of those package managers. +# + +# +# * +# + +# +# See the manual: +# + +# +# http://buildroot.org/manual.html#faq-no-binary-packages +# + +# +# ------------------------------------------------------- +# +# BR2_PACKAGE_OPKG is not set +# BR2_PACKAGE_OPKG_UTILS is not set + +# +# Real-Time +# +# BR2_PACKAGE_XENOMAI is not set + +# +# Security +# + +# +# apparmor needs a toolchain w/ headers >= 3.16, threads, C++ +# +# BR2_PACKAGE_CHECKPOLICY is not set +# BR2_PACKAGE_IMA_EVM_UTILS is not set +# BR2_PACKAGE_OPTEE_CLIENT is not set +# BR2_PACKAGE_PAXTEST is not set +# BR2_PACKAGE_REFPOLICY is not set +# BR2_PACKAGE_RESTORECOND is not set +# BR2_PACKAGE_SELINUX_PYTHON is not set +# BR2_PACKAGE_SEMODULE_UTILS is not set + +# +# setools needs python3 +# +BR2_PACKAGE_URANDOM_SCRIPTS=y + +# +# Shell and utilities +# + +# +# Shells +# +# BR2_PACKAGE_MKSH is not set +# BR2_PACKAGE_ZSH is not set + +# +# Utilities +# +# BR2_PACKAGE_APG is not set +# BR2_PACKAGE_AT is not set +# BR2_PACKAGE_CATATONIT is not set +# BR2_PACKAGE_CCRYPT is not set +# BR2_PACKAGE_DIALOG is not set +# BR2_PACKAGE_DTACH is not set +# BR2_PACKAGE_EASY_RSA is not set +# BR2_PACKAGE_FILE is not set +# BR2_PACKAGE_GNUPG is not set +BR2_PACKAGE_GNUPG2_DEPENDS=y +# BR2_PACKAGE_GNUPG2 is not set +# BR2_PACKAGE_INOTIFY_TOOLS is not set +# BR2_PACKAGE_LOCKFILE_PROGS is not set +# BR2_PACKAGE_LOGROTATE is not set +# BR2_PACKAGE_LOGSURFER is not set +# BR2_PACKAGE_PDMENU is not set +# BR2_PACKAGE_PINENTRY is not set +# BR2_PACKAGE_QPRINT is not set +# BR2_PACKAGE_RANGER is not set +# BR2_PACKAGE_RTTY is not set +# BR2_PACKAGE_SCREEN is not set +# BR2_PACKAGE_SEXPECT is not set +# BR2_PACKAGE_SUDO is not set +# BR2_PACKAGE_TINI is not set +# BR2_PACKAGE_TMUX is not set +# BR2_PACKAGE_TTYD is not set +# BR2_PACKAGE_WTFUTIL is not set +# BR2_PACKAGE_XMLSTARLET is not set +# BR2_PACKAGE_XXHASH is not set +# BR2_PACKAGE_YTREE is not set + +# +# System tools +# +# BR2_PACKAGE_ACL is not set +# BR2_PACKAGE_ANDROID_TOOLS is not set +# BR2_PACKAGE_ATOP is not set +# BR2_PACKAGE_ATTR is not set +# BR2_PACKAGE_BALENA_ENGINE is not set +# BR2_PACKAGE_BUBBLEWRAP is not set +# BR2_PACKAGE_CGROUPFS_MOUNT is not set + +# +# circus needs Python 3 and a toolchain w/ C++, threads +# +# BR2_PACKAGE_CONMON is not set +# BR2_PACKAGE_CONTAINERD is not set +# BR2_PACKAGE_CPULIMIT is not set +# BR2_PACKAGE_CPULOAD is not set +# BR2_PACKAGE_CRUN is not set +# BR2_PACKAGE_DAEMON is not set +# BR2_PACKAGE_DC3DD is not set + +# +# ddrescue needs a toolchain w/ C++ +# +# BR2_PACKAGE_DOCKER_CLI is not set + +# +# docker-compose needs docker-cli and a toolchain w/ threads +# +# BR2_PACKAGE_DOCKER_ENGINE is not set +# BR2_PACKAGE_EARLYOOM is not set +# BR2_PACKAGE_EFIBOOTMGR is not set +BR2_PACKAGE_EFIVAR_ARCH_SUPPORTS=y +# BR2_PACKAGE_EFIVAR is not set +# BR2_PACKAGE_EMBIGGEN_DISK is not set +# BR2_PACKAGE_EMLOG is not set +# BR2_PACKAGE_FLUENT_BIT is not set +# BR2_PACKAGE_FTOP is not set +# BR2_PACKAGE_GETENT is not set +# BR2_PACKAGE_GKRELLM is not set +# BR2_PACKAGE_HTOP is not set +# BR2_PACKAGE_IBM_SW_TPM2 is not set +BR2_PACKAGE_INITSCRIPTS=y + +# +# iotop depends on python3 +# +# BR2_PACKAGE_IPRUTILS is not set +# BR2_PACKAGE_IRQBALANCE is not set +# BR2_PACKAGE_KEYUTILS is not set +# BR2_PACKAGE_KMOD is not set +# BR2_PACKAGE_LIBOSTREE is not set +# BR2_PACKAGE_LXC is not set +# BR2_PACKAGE_MENDER is not set +# BR2_PACKAGE_MENDER_CONNECT is not set +# BR2_PACKAGE_MFOC is not set +# BR2_PACKAGE_MOBY_BUILDKIT is not set +# BR2_PACKAGE_MONIT is not set + +# +# multipath-tools needs udev and a toolchain w/ threads, dynamic library, C++ +# +# BR2_PACKAGE_NCDU is not set +# BR2_PACKAGE_NERDCTL is not set + +# +# netifrc needs openrc as init system +# +# BR2_PACKAGE_NUMACTL is not set + +# +# nut needs a toolchain w/ C++ +# + +# +# pamtester depends on linux-pam +# +# BR2_PACKAGE_POLKIT is not set +# BR2_PACKAGE_PROCRANK_LINUX is not set +# BR2_PACKAGE_PWGEN is not set +# BR2_PACKAGE_QUOTA is not set +# BR2_PACKAGE_QUOTATOOL is not set +# BR2_PACKAGE_RAUC is not set +# BR2_PACKAGE_RAUC_HAWKBIT_UPDATER is not set +# BR2_PACKAGE_RUNC is not set +# BR2_PACKAGE_S6 is not set +# BR2_PACKAGE_S6_LINUX_INIT is not set +# BR2_PACKAGE_S6_LINUX_UTILS is not set +# BR2_PACKAGE_S6_PORTABLE_UTILS is not set +# BR2_PACKAGE_S6_RC is not set +# BR2_PACKAGE_SCRUB is not set +# BR2_PACKAGE_SCRYPT is not set + +# +# sdbus-c++ needs systemd and a toolchain w/ C++, gcc >= 7 +# + +# +# sdbusplus needs systemd and a toolchain w/ C++, gcc >= 7 +# +# BR2_PACKAGE_SEATD is not set +# BR2_PACKAGE_SHADOW is not set +# BR2_PACKAGE_SMACK is not set + +# +# supervisor needs a python interpreter +# +# BR2_PACKAGE_SWUPDATE is not set +BR2_PACKAGE_SYSTEMD_ARCH_SUPPORTS=y +# BR2_PACKAGE_TPM_TOOLS is not set +# BR2_PACKAGE_TPM2_ABRMD is not set +# BR2_PACKAGE_TPM2_TOOLS is not set +# BR2_PACKAGE_TPM2_TOTP is not set +# BR2_PACKAGE_UNSCD is not set +# BR2_PACKAGE_UTIL_LINUX is not set +# BR2_PACKAGE_WATCHDOG is not set +# BR2_PACKAGE_WATCHDOGD is not set +# BR2_PACKAGE_XDG_DBUS_PROXY is not set +BR2_PACKAGE_XVISOR_ARCH_SUPPORTS=y +# BR2_PACKAGE_XVISOR is not set + +# +# Text editors and viewers +# +# BR2_PACKAGE_ED is not set +# BR2_PACKAGE_JOE is not set +# BR2_PACKAGE_MC is not set +# BR2_PACKAGE_MG is not set +# BR2_PACKAGE_MOST is not set +# BR2_PACKAGE_NANO is not set +# BR2_PACKAGE_UEMACS is not set + +# +# Filesystem images +# +# BR2_TARGET_ROOTFS_AXFS is not set +# BR2_TARGET_ROOTFS_BTRFS is not set +# BR2_TARGET_ROOTFS_CLOOP is not set +# BR2_TARGET_ROOTFS_CPIO is not set +# BR2_TARGET_ROOTFS_CRAMFS is not set +# BR2_TARGET_ROOTFS_EROFS is not set +BR2_TARGET_ROOTFS_EXT2=y +BR2_TARGET_ROOTFS_EXT2_2=y +# BR2_TARGET_ROOTFS_EXT2_2r0 is not set +BR2_TARGET_ROOTFS_EXT2_2r1=y +# BR2_TARGET_ROOTFS_EXT2_3 is not set +# BR2_TARGET_ROOTFS_EXT2_4 is not set +BR2_TARGET_ROOTFS_EXT2_GEN=2 +BR2_TARGET_ROOTFS_EXT2_REV=1 +BR2_TARGET_ROOTFS_EXT2_LABEL="rootfs" +BR2_TARGET_ROOTFS_EXT2_SIZE="60M" +BR2_TARGET_ROOTFS_EXT2_INODES=0 +BR2_TARGET_ROOTFS_EXT2_INODE_SIZE=256 +BR2_TARGET_ROOTFS_EXT2_RESBLKS=5 +BR2_TARGET_ROOTFS_EXT2_MKFS_OPTIONS="-O ^64bit" +BR2_TARGET_ROOTFS_EXT2_NONE=y +# BR2_TARGET_ROOTFS_EXT2_GZIP is not set +# BR2_TARGET_ROOTFS_EXT2_BZIP2 is not set +# BR2_TARGET_ROOTFS_EXT2_LZ4 is not set +# BR2_TARGET_ROOTFS_EXT2_LZMA is not set +# BR2_TARGET_ROOTFS_EXT2_LZO is not set +# BR2_TARGET_ROOTFS_EXT2_XZ is not set +# BR2_TARGET_ROOTFS_EXT2_ZSTD is not set +# BR2_TARGET_ROOTFS_F2FS is not set +# BR2_TARGET_ROOTFS_INITRAMFS is not set +# BR2_TARGET_ROOTFS_JFFS2 is not set +# BR2_TARGET_ROOTFS_OCI is not set +# BR2_TARGET_ROOTFS_ROMFS is not set +# BR2_TARGET_ROOTFS_SQUASHFS is not set +BR2_TARGET_ROOTFS_TAR=y +BR2_TARGET_ROOTFS_TAR_NONE=y +# BR2_TARGET_ROOTFS_TAR_GZIP is not set +# BR2_TARGET_ROOTFS_TAR_BZIP2 is not set +# BR2_TARGET_ROOTFS_TAR_LZ4 is not set +# BR2_TARGET_ROOTFS_TAR_LZMA is not set +# BR2_TARGET_ROOTFS_TAR_LZO is not set +# BR2_TARGET_ROOTFS_TAR_XZ is not set +# BR2_TARGET_ROOTFS_TAR_ZSTD is not set +BR2_TARGET_ROOTFS_TAR_OPTIONS="" +# BR2_TARGET_ROOTFS_UBI is not set +# BR2_TARGET_ROOTFS_UBIFS is not set +# BR2_TARGET_ROOTFS_YAFFS2 is not set + +# +# Bootloaders +# +# BR2_TARGET_BAREBOX is not set +# BR2_TARGET_BEAGLEV_DDRINIT is not set +# BR2_TARGET_BEAGLEV_SECONDBOOT is not set +BR2_TARGET_EDK2_ARCH_SUPPORTS=y +# BR2_TARGET_EDK2 is not set +BR2_TARGET_GRUB2_ARCH_SUPPORTS=y +# BR2_TARGET_GRUB2 is not set +BR2_TARGET_OPENSBI=y +BR2_TARGET_OPENSBI_LATEST_VERSION=y +# BR2_TARGET_OPENSBI_CUSTOM_VERSION is not set +# BR2_TARGET_OPENSBI_CUSTOM_TARBALL is not set +# BR2_TARGET_OPENSBI_CUSTOM_GIT is not set +BR2_TARGET_OPENSBI_VERSION="1.3" +BR2_TARGET_OPENSBI_PLAT="generic" +BR2_TARGET_OPENSBI_INSTALL_DYNAMIC_IMG=y +BR2_TARGET_OPENSBI_INSTALL_JUMP_IMG=y +# BR2_TARGET_OPENSBI_INSTALL_PAYLOAD_IMG is not set +# BR2_TARGET_OPENSBI_LINUX_PAYLOAD is not set +BR2_TARGET_OPENSBI_ADDITIONAL_VARIABLES="" +# BR2_TARGET_UBOOT is not set + +# +# Host utilities +# +# BR2_PACKAGE_HOST_ABOOTIMG is not set +# BR2_PACKAGE_HOST_AESPIPE is not set +# BR2_PACKAGE_HOST_AGENT_PROXY is not set +# BR2_PACKAGE_HOST_AMLOGIC_BOOT_FIP is not set +# BR2_PACKAGE_HOST_ANDROID_TOOLS is not set +# BR2_PACKAGE_HOST_ASN1C is not set +# BR2_PACKAGE_HOST_BABELTRACE2 is not set +# BR2_PACKAGE_HOST_BMAP_TOOLS is not set +# BR2_PACKAGE_HOST_BOOTGEN is not set +# BR2_PACKAGE_HOST_BTRFS_PROGS is not set +# BR2_PACKAGE_HOST_CHECKPOLICY is not set +# BR2_PACKAGE_HOST_CHECKSEC is not set +# BR2_PACKAGE_HOST_CMAKE is not set +BR2_HOST_CMAKE_AT_LEAST="3.18" +# BR2_PACKAGE_HOST_COMPOSER is not set +# BR2_PACKAGE_HOST_CRAMFS is not set +# BR2_PACKAGE_HOST_CRUDINI is not set +# BR2_PACKAGE_HOST_CRYPTSETUP is not set +# BR2_PACKAGE_HOST_DBUS_PYTHON is not set +# BR2_PACKAGE_HOST_DELVE is not set +# BR2_PACKAGE_HOST_DEPOT_TOOLS is not set +# BR2_PACKAGE_HOST_DFU_UTIL is not set +# BR2_PACKAGE_HOST_DOS2UNIX is not set +# BR2_PACKAGE_HOST_DOSFSTOOLS is not set +# BR2_PACKAGE_HOST_DOXYGEN is not set +BR2_PACKAGE_HOST_DTC=y +BR2_PACKAGE_HOST_E2FSPROGS=y +# BR2_PACKAGE_HOST_E2TOOLS is not set +# BR2_PACKAGE_HOST_ENVIRONMENT_SETUP is not set +# BR2_PACKAGE_HOST_EROFS_UTILS is not set +# BR2_PACKAGE_HOST_EXFATPROGS is not set +# BR2_PACKAGE_HOST_F2FS_TOOLS is not set +# BR2_PACKAGE_HOST_FAKETIME is not set +# BR2_PACKAGE_HOST_FATCAT is not set +# BR2_PACKAGE_HOST_FIRMWARE_UTILS is not set +BR2_PACKAGE_HOST_FLUTTER_SDK_BIN_ARCH_SUPPORTS=y +# BR2_PACKAGE_HOST_FLUTTER_SDK_BIN is not set +# BR2_PACKAGE_HOST_FWUP is not set +# BR2_PACKAGE_HOST_GENEXT2FS is not set +# BR2_PACKAGE_HOST_GENIMAGE is not set +# BR2_PACKAGE_HOST_GENPART is not set +# BR2_PACKAGE_HOST_GNUPG is not set +BR2_PACKAGE_HOST_GO_TARGET_ARCH_SUPPORTS=y +BR2_PACKAGE_HOST_GO_TARGET_CGO_LINKING_SUPPORTS=y +BR2_PACKAGE_HOST_GO_HOST_ARCH_SUPPORTS=y +BR2_PACKAGE_HOST_GO_BOOTSTRAP_STAGE1_ARCH_SUPPORTS=y +BR2_PACKAGE_HOST_GO_BOOTSTRAP_STAGE2_ARCH_SUPPORTS=y +BR2_PACKAGE_HOST_GOOGLE_BREAKPAD_ARCH_SUPPORTS=y +# BR2_PACKAGE_HOST_GPTFDISK is not set +# BR2_PACKAGE_HOST_IMAGEMAGICK is not set +# BR2_PACKAGE_HOST_IMX_MKIMAGE is not set +# BR2_PACKAGE_HOST_JH71XX_TOOLS is not set +# BR2_PACKAGE_HOST_JQ is not set +# BR2_PACKAGE_HOST_JSMIN is not set +BR2_PACKAGE_HOST_KMOD=y +# BR2_PACKAGE_HOST_KMOD_GZ is not set +# BR2_PACKAGE_HOST_KMOD_ZSTD is not set +# BR2_PACKAGE_HOST_KMOD_XZ is not set +# BR2_PACKAGE_HOST_LIBP11 is not set +# BR2_PACKAGE_HOST_LLD is not set +# BR2_PACKAGE_HOST_LPC3250LOADER is not set +# BR2_PACKAGE_HOST_LTTNG_BABELTRACE is not set +# BR2_PACKAGE_HOST_LZMA_ALONE is not set +# BR2_PACKAGE_HOST_MENDER_ARTIFACT is not set +# BR2_PACKAGE_HOST_MESON_TOOLS is not set +# BR2_PACKAGE_HOST_MICROCHIP_HSS_PAYLOAD_GENERATOR is not set +# BR2_PACKAGE_HOST_MKPASSWD is not set +# BR2_PACKAGE_HOST_MOBY_BUILDKIT is not set +# BR2_PACKAGE_HOST_MOSQUITTO is not set +# BR2_PACKAGE_HOST_MTD is not set +# BR2_PACKAGE_HOST_MTOOLS is not set +BR2_PACKAGE_HOST_NODEJS_BIN_ARCH_SUPPORTS=y +# BR2_PACKAGE_HOST_NODEJS is not set +BR2_PACKAGE_PROVIDES_HOST_NODEJS="host-nodejs-bin" +# BR2_PACKAGE_HOST_ODB is not set +# BR2_PACKAGE_HOST_OPENOCD is not set +# BR2_PACKAGE_HOST_OPKG_UTILS is not set +# BR2_PACKAGE_HOST_PAHOLE is not set +# BR2_PACKAGE_HOST_PARTED is not set +BR2_PACKAGE_HOST_PATCHELF=y +# BR2_PACKAGE_HOST_PIGZ is not set +# BR2_PACKAGE_HOST_PKGCONF is not set +# BR2_PACKAGE_HOST_PWGEN is not set +# BR2_PACKAGE_HOST_PYTHON_CYTHON is not set +# BR2_PACKAGE_HOST_PYTHON_GREENLET is not set +# BR2_PACKAGE_HOST_PYTHON_INIPARSE is not set +# BR2_PACKAGE_HOST_PYTHON_LXML is not set +# BR2_PACKAGE_HOST_PYTHON_PYYAML is not set +# BR2_PACKAGE_HOST_PYTHON_SIX is not set +# BR2_PACKAGE_HOST_PYTHON_XLRD is not set +# BR2_PACKAGE_HOST_PYTHON3 is not set +BR2_PACKAGE_HOST_QEMU_ARCH_SUPPORTS=y +BR2_PACKAGE_HOST_QEMU_SYSTEM_ARCH_SUPPORTS=y +BR2_PACKAGE_HOST_QEMU_USER_ARCH_SUPPORTS=y +# BR2_PACKAGE_HOST_QEMU is not set +# BR2_PACKAGE_HOST_QORIQ_RCW is not set +# BR2_PACKAGE_HOST_RAUC is not set +# BR2_PACKAGE_HOST_RISCV_ISA_SIM is not set +# BR2_PACKAGE_HOST_RUNC is not set +BR2_PACKAGE_HOST_RUSTC_ARCH_SUPPORTS=y +BR2_PACKAGE_HOST_RUSTC_ARCH="riscv64gc" +# BR2_PACKAGE_HOST_RUSTC is not set +BR2_PACKAGE_PROVIDES_HOST_RUSTC="host-rust-bin" +# BR2_PACKAGE_HOST_SAM_BA is not set +# BR2_PACKAGE_HOST_SDBUS_CPP is not set +# BR2_PACKAGE_HOST_SDBUSPLUS is not set +# BR2_PACKAGE_HOST_SENTRY_CLI is not set +# BR2_PACKAGE_HOST_SLOCI_IMAGE is not set +# BR2_PACKAGE_HOST_SQUASHFS is not set +# BR2_PACKAGE_HOST_SWIG is not set +# BR2_PACKAGE_HOST_SWUGENERATOR is not set +# BR2_PACKAGE_HOST_UBOOT_TOOLS is not set +BR2_PACKAGE_HOST_UTIL_LINUX=y +# BR2_PACKAGE_HOST_UTP_COM is not set +# BR2_PACKAGE_HOST_UUU is not set +# BR2_PACKAGE_HOST_VBOOT_UTILS is not set +# BR2_PACKAGE_HOST_XORRISO is not set +# BR2_PACKAGE_HOST_ZIP is not set +# BR2_PACKAGE_HOST_ZSTD is not set + +# +# Legacy config options +# + +# +# Legacy options removed in 2024.02 +# +# BR2_GDB_VERSION_11 is not set +# BR2_PACKAGE_LIBMPD is not set +# BR2_PACKAGE_GMPC is not set +# BR2_PACKAGE_FLICKCURL is not set +# BR2_PACKAGE_ONEVPL is not set +# BR2_KERNEL_HEADERS_6_5 is not set + +# +# Legacy options removed in 2023.11 +# +# BR2_PACKAGE_PYTHON_PYXB is not set +# BR2_PACKAGE_OPENJDK_VERSION_11 is not set +# BR2_KERNEL_HEADERS_6_4 is not set +# BR2_PACKAGE_GOOGLE_MATERIAL_DESIGN_ICONS is not set +# BR2_GDB_VERSION_10 is not set + +# +# Legacy options removed in 2023.08 +# +# BR2_TARGET_LPC32XXCDL is not set +# BR2_BINUTILS_VERSION_2_38_X is not set +# BR2_GCC_VERSION_10_X is not set +# BR2_KERNEL_HEADERS_6_3 is not set +# BR2_PACKAGE_TOVID is not set +# BR2_PACKAGE_LIBASPLIB is not set +# BR2_PACKAGE_OCF_LINUX is not set +# BR2_BINUTILS_VERSION_2_37_X is not set + +# +# Legacy options removed in 2023.05 +# +# BR2_KERNEL_HEADERS_6_2 is not set +# BR2_PACKAGE_ATK is not set +# BR2_PACKAGE_AT_SPI2_ATK is not set +# BR2_PACKAGE_OPTEE_BENCHMARK is not set +# BR2_PACAKGE_OPENFPGALOADER_CMSIS is not set + +# +# Legacy options removed in 2023.02 +# +# BR2_PACKAGE_PUGIXML_HEADER_ONLY is not set +# BR2_PACKAGE_UCCP420WLAN is not set +# BR2_PACKAGE_IMX_GPU_G2D_EXAMPLES is not set +# BR2_KERNEL_HEADERS_6_0 is not set +# BR2_KERNEL_HEADERS_4_9 is not set +# BR2_PACKAGE_DOCKER_PROXY is not set +# BR2_PACKAGE_PYTHON_BUNCH is not set +# BR2_TARGET_GUMMIBOOT is not set +# BR2_PACKAGE_IPUTILS_NINFOD is not set +# BR2_PACKAGE_IPUTILS_RARPD is not set +# BR2_PACKAGE_IPUTILS_RDISC is not set +# BR2_PACKAGE_IPUTILS_RDISC_SERVER is not set +# BR2_PACKAGE_GST1_PLUGINS_UGLY_PLUGIN_XINGMUX is not set +# BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_VIDEOSCALE is not set +# BR2_PACKAGE_GST1_PLUGINS_BASE_PLUGIN_VIDEOCONVERT is not set +# BR2_PACKAGE_IMX_GPU_VIV_OUTPUT_X11 is not set +# BR2_PACKAGE_XDRIVER_XF86_VIDEO_IMX_VIV is not set +BR2_PACKAGE_QEMU_CUSTOM_TARGETS="" +# BR2_PACKAGE_XDRIVER_XF86_INPUT_KEYBOARD is not set +# BR2_TARGET_SUN20I_D1_SPL is not set +# BR2_PACKAGE_PYTHON_M2R is not set +# BR2_PACKAGE_MESA3D_XVMC is not set +# BR2_KERNEL_HEADERS_5_19 is not set +# BR2_PACKAGE_XDRIVER_XF86_VIDEO_TGA is not set +# BR2_PACKAGE_XDRIVER_XF86_VIDEO_GLINT is not set +# BR2_PACKAGE_USBREDIR_SERVER is not set + +# +# Legacy options removed in 2022.11 +# +# BR2_BINUTILS_VERSION_2_36_X is not set +# BR2_PACKAGE_RABBITMQ_SERVER is not set +# BR2_PACKAGE_LIBOPENSSL_ENABLE_RC5 is not set +# BR2_PACKAGE_LIBDCADEC is not set +# BR2_KERNEL_HEADERS_5_17 is not set +# BR2_iwmmxt is not set +# BR2_PACKAGE_UHD_N230 is not set +# BR2_PACKAGE_UHD_RFNOC is not set +# BR2_PACKAGE_GPSD_OLDSTYLE is not set +# BR2_GDB_VERSION_9_2 is not set + +# +# Legacy options removed in 2022.08 +# +# BR2_ECLIPSE_REGISTER is not set +# BR2_csky is not set +# BR2_PACKAGE_MESA3D_DRI_DRIVER_I915 is not set +# BR2_PACKAGE_MESA3D_DRI_DRIVER_I965 is not set +# BR2_PACKAGE_MESA3D_DRI_DRIVER_NOUVEAU is not set +# BR2_PACKAGE_MESA3D_DRI_DRIVER_RADEON is not set +# BR2_GCC_VERSION_9_X is not set +# BR2_PACKAGE_PHP_EXT_WDDX is not set +# BR2_nds32 is not set +# BR2_PACKAGE_RTL8723BS is not set + +# +# Legacy options removed in 2022.05 +# +# BR2_PACKAGE_KTAP is not set +# BR2_KERNEL_HEADERS_5_16 is not set +# BR2_KERNEL_HEADERS_4_4 is not set +# BR2_BINUTILS_VERSION_2_32_X is not set +# BR2_sh2a is not set +# BR2_BINUTILS_VERSION_2_35_X is not set +# BR2_PACKAGE_BOOST_LAYOUT_TAGGED is not set +# BR2_PACKAGE_BOOST_LAYOUT_VERSIONED is not set + +# +# Legacy options removed in 2022.02 +# +BR2_TARGET_ROOTFS_OCI_ENTRYPOINT_ARGS="" +# BR2_PACKAGE_LIBCURL_LIBNSS is not set +# BR2_PACKAGE_WESTON_DEFAULT_FBDEV is not set +# BR2_PACKAGE_WESTON_FBDEV is not set +# BR2_PACKAGE_PYTHON_PYCLI is not set +# BR2_PACKAGE_LINUX_TOOLS_BPFTOOL is not set +# BR2_TARGET_UBOOT_NEEDS_PYTHON2 is not set +# BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_LIBMMS is not set +# BR2_PACKAGE_PYTHON_FUNCTOOLS32 is not set +# BR2_PACKAGE_PYTHON_ENUM34 is not set +# BR2_PACKAGE_PYTHON_ENUM is not set +# BR2_PACKAGE_PYTHON_DIALOG is not set +# BR2_PACKAGE_PYTHON_CONFIGOBJ is not set +# BR2_PACKAGE_PYTHON_YIELDFROM is not set +# BR2_PACKAGE_PYTHON_TYPING is not set +# BR2_PACKAGE_PYTHON_SUBPROCESS32 is not set +# BR2_PACKAGE_PYTHON_SINGLEDISPATCH is not set +# BR2_PACKAGE_PYTHON_PYRO is not set +# BR2_PACKAGE_PYTHON_PYPCAP is not set +# BR2_PACKAGE_PYTHON_PATHLIB2 is not set +# BR2_PACKAGE_PYTHON_PAM is not set +# BR2_PACKAGE_PYTHON_NFC is not set +# BR2_PACKAGE_PYTHON_MAD is not set +# BR2_PACKAGE_PYTHON_IPADDRESS is not set +# BR2_PACKAGE_PYTHON_IPADDR is not set +# BR2_PACKAGE_PYTHON_ID3 is not set +# BR2_PACKAGE_PYTHON_FUTURES is not set +# BR2_PACKAGE_PYTHON_BACKPORTS_SSL_MATCH_HOSTNAME is not set +# BR2_PACKAGE_PYTHON_BACKPORTS_SHUTIL_GET_TERMINAL_SIZE is not set +# BR2_PACKAGE_PYTHON_BACKPORTS_ABC is not set +# BR2_PACKAGE_PYTHON is not set +# BR2_TARGET_UBOOT_ZYNQ_IMAGE is not set +# BR2_PACKAGE_HOST_GDB_PYTHON is not set +# BR2_PACKAGE_GSTREAMER1_MM is not set +# BR2_KERNEL_HEADERS_5_14 is not set +# BR2_PACKAGE_PYTHON_BACKPORTS_FUNCTOOLS_LRU_CACHE is not set +# BR2_PACKAGE_CIVETWEB_WITH_LUA is not set +# BR2_PACKAGE_SUNXI_MALI_MAINLINE_DRIVER is not set +# BR2_PACKAGE_SUNXI_MALI_MAINLINE is not set +# BR2_PACKAGE_SUNXI_MALI_MAINLINE_R6P2 is not set +# BR2_PACKAGE_SUNXI_MALI_MAINLINE_R8P1 is not set +# BR2_PACKAGE_QT5WEBKIT_EXAMPLES is not set +# BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_RISCV64_GLIBC_BLEEDING_EDGE is not set +# BR2_TOOLCHAIN_EXTERNAL_BOOTLIN_RISCV64_MUSL_BLEEDING_EDGE is not set +# BR2_PACKAGE_IPUTILS_TFTPD is not set +# BR2_PACKAGE_IPUTILS_TRACEROUTE6 is not set +# BR2_PACKAGE_LIBMEDIAART_BACKEND_NONE is not set +# BR2_PACKAGE_MPD_UPNP is not set + +# +# Legacy options removed in 2021.11 +# +# BR2_OPENJDK_VERSION_LTS is not set +# BR2_OPENJDK_VERSION_LATEST is not set +# BR2_PACKAGE_MPD_TIDAL is not set +# BR2_PACKAGE_MROUTED_RSRR is not set +# BR2_BINUTILS_VERSION_CSKY is not set +# BR2_GCC_VERSION_CSKY is not set +# BR2_PACKAGE_CANFESTIVAL is not set +# BR2_PACKAGE_NMAP_NDIFF is not set +# BR2_GDB_VERSION_8_3 is not set +# BR2_PACKAGE_PYTHON_MELD3 is not set +# BR2_PACKAGE_STRONGSWAN_EAP is not set +# BR2_PACKAGE_GNURADIO_PAGER is not set +# BR2_KERNEL_HEADERS_5_11 is not set +# BR2_KERNEL_HEADERS_5_12 is not set +# BR2_KERNEL_HEADERS_5_13 is not set + +# +# Legacy options removed in 2021.08 +# +BR2_TARGET_GRUB2_BUILTIN_MODULES="" +BR2_TARGET_GRUB2_BUILTIN_CONFIG="" +# BR2_PACKAGE_LIBMCRYPT is not set +# BR2_PACKAGE_MCRYPT is not set +# BR2_PACKAGE_PHP_EXT_MCRYPT is not set +# BR2_BINUTILS_VERSION_2_34_X is not set +# BR2_PACKAGE_LIBSOIL is not set +# BR2_PACKAGE_CLAPACK is not set +# BR2_PACKAGE_SPIDERMONKEY is not set +# BR2_PACKAGE_KODI_LIBVA is not set +# BR2_PACKAGE_PYTHON_COHERENCE is not set +# BR2_PACKAGE_PHP_EXT_XMLRPC is not set +# BR2_GCC_VERSION_8_X is not set + +# +# Legacy options removed in 2021.05 +# +# BR2_PACKAGE_UDISKS_LVM2 is not set +# BR2_PACKAGE_LVM2_APP_LIBRARY is not set +# BR2_PACKAGE_LVM2_LVMETAD is not set +# BR2_PACKAGE_MONKEY is not set +# BR2_PACKAGE_DOCKER_CONTAINERD is not set +# BR2_PACKAGE_IOSTAT is not set +# BR2_PACKAGE_SCONESERVER_HTTP_SCONESITE_IMAGE is not set +# BR2_PACKAGE_XSERVER_XORG_SERVER_KDRIVE_EVDEV is not set +# BR2_PACKAGE_XSERVER_XORG_SERVER_KDRIVE_KBD is not set +# BR2_PACKAGE_XSERVER_XORG_SERVER_KDRIVE_MOUSE is not set +# BR2_PACKAGE_MESA3D_OSMESA_CLASSIC is not set +# BR2_PACKAGE_MESA3D_DRI_DRIVER_SWRAST is not set +# BR2_PACKAGE_KODI_SCREENSAVER_CRYSTALMORPH is not set + +# +# Legacy options removed in 2021.02 +# +# BR2_PACKAGE_MPD_AUDIOFILE is not set +# BR2_PACKAGE_AUDIOFILE is not set +# BR2_BINUTILS_VERSION_2_33_X is not set +# BR2_PACKAGE_LIBUPNP18 is not set +# BR2_PACKAGE_BOA is not set +# BR2_PACKAGE_LINUX_FIRMWARE_IMX_SDMA is not set +# BR2_GDB_VERSION_8_2 is not set +# BR2_PACKAGE_HOST_RCW is not set +# BR2_KERNEL_HEADERS_5_9 is not set +# BR2_KERNEL_HEADERS_5_8 is not set +# BR2_powerpc_601 is not set +# BR2_PACKAGE_TI_SGX_LIBGBM is not set +# BR2_PACKAGE_IPSEC_TOOLS is not set + +# +# Legacy options removed in 2020.11 +# +# BR2_PACKAGE_GPSD_FIXED_PORT_SPEED is not set +# BR2_PACKAGE_GPSD_RECONFIGURE is not set +# BR2_PACKAGE_GPSD_CONTROLSEND is not set +# BR2_PACKAGE_OPENCV is not set +# BR2_PACKAGE_LIBCROCO is not set +# BR2_PACKAGE_BELLAGIO is not set +# BR2_PACKAGE_SYSTEMD_JOURNAL_GATEWAY is not set +# BR2_TARGET_UBOOT_BOOT_SCRIPT is not set +# BR2_TARGET_UBOOT_ENVIMAGE is not set +# BR2_PACKAGE_KISMET_CLIENT is not set +# BR2_PACKAGE_KISMET_DRONE is not set +# BR2_GCC_VERSION_7_X is not set +# BR2_PACKAGE_GST1_VALIDATE is not set +# BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_YADIF is not set +# BR2_PACKAGE_GQVIEW is not set +# BR2_PACKAGE_WESTON_IMX is not set +# BR2_KERNEL_HEADERS_5_7 is not set +# BR2_PACKAGE_TINYHTTPD is not set +# BR2_PACKAGE_XSERVER_XORG_SERVER_AIGLX is not set +# BR2_PACKAGE_AMD_CATALYST is not set +# BR2_PACKAGE_NVIDIA_TEGRA23 is not set +# BR2_GDB_VERSION_8_1 is not set + +# +# Legacy options removed in 2020.08 +# +# BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_AMD64 is not set +# BR2_KERNEL_HEADERS_5_6 is not set +# BR2_KERNEL_HEADERS_5_5 is not set +# BR2_BINUTILS_VERSION_2_31_X is not set +# BR2_PACKAGE_KODI_PERIPHERAL_STEAMCONTROLLER is not set + +# +# Legacy options removed in 2020.05 +# +# BR2_PACKAGE_WIRINGPI is not set +# BR2_PACKAGE_PYTHON_PYCRYPTO is not set +# BR2_PACKAGE_MTDEV2TUIO is not set +# BR2_PACKAGE_EZXML is not set +# BR2_PACKAGE_COLLECTD_LVM is not set +# BR2_PACKAGE_PYTHON_PYASN is not set +# BR2_PACKAGE_PYTHON_PYASN_MODULES is not set +# BR2_PACKAGE_LINUX_FIRMWARE_ATHEROS_10K_QCA6174 is not set +# BR2_PACKAGE_QT5CANVAS3D is not set +# BR2_PACKAGE_KODI_LIBTHEORA is not set +# BR2_PACKAGE_CEGUI06 is not set +# BR2_GCC_VERSION_5_X is not set + +# +# Legacy options removed in 2020.02 +# +# BR2_PACKAGE_JAMVM is not set +# BR2_PACKAGE_CLASSPATH is not set +# BR2_PACKAGE_QT5_VERSION_5_6 is not set +# BR2_PACKAGE_CURL is not set +# BR2_PACKAGE_GSTREAMER is not set +# BR2_PACKAGE_NVIDIA_TEGRA23_BINARIES_GSTREAMER_PLUGINS is not set +# BR2_PACKAGE_NVIDIA_TEGRA23_BINARIES_NV_SAMPLE_APPS is not set +# BR2_PACKAGE_FREERDP_GSTREAMER is not set +# BR2_PACKAGE_OPENCV3_WITH_GSTREAMER is not set +# BR2_PACKAGE_OPENCV_WITH_GSTREAMER is not set +# BR2_PACKAGE_LIBPLAYER is not set +# BR2_GCC_VERSION_OR1K is not set +# BR2_PACKAGE_BLUEZ_UTILS is not set +# BR2_PACKAGE_GADGETFS_TEST is not set +# BR2_PACKAGE_FIS is not set +BR2_PACKAGE_REFPOLICY_POLICY_VERSION="" +# BR2_PACKAGE_CELT051 is not set +# BR2_PACKAGE_WIREGUARD is not set +# BR2_PACKAGE_PERL_NET_PING is not set +# BR2_PACKAGE_PERL_MIME_BASE64 is not set +# BR2_PACKAGE_PERL_DIGEST_MD5 is not set +# BR2_PACKAGE_ERLANG_P1_ICONV is not set +# BR2_KERNEL_HEADERS_5_3 is not set +# BR2_PACKAGE_PYTHON_SCAPY3K is not set +# BR2_BINUTILS_VERSION_2_30_X is not set +# BR2_PACKAGE_RPI_USERLAND_START_VCFILED is not set +# BR2_PACKAGE_TI_SGX_KM_AM335X is not set +# BR2_PACKAGE_TI_SGX_KM_AM437X is not set +# BR2_PACKAGE_TI_SGX_KM_AM4430 is not set +# BR2_PACKAGE_TI_SGX_KM_AM5430 is not set + +# +# Legacy options removed in 2019.11 +# +# BR2_PACKAGE_OPENVMTOOLS_PROCPS is not set +# BR2_PACKAGE_ALLJOYN is not set +# BR2_PACKAGE_ALLJOYN_BASE is not set +# BR2_PACKAGE_ALLJOYN_BASE_CONTROLPANEL is not set +# BR2_PACKAGE_ALLJOYN_BASE_NOTIFICATION is not set +# BR2_PACKAGE_ALLJOYN_BASE_ONBOARDING is not set +# BR2_PACKAGE_ALLJOYN_TCL_BASE is not set +# BR2_PACKAGE_ALLJOYN_TCL is not set +BR2_TOOLCHAIN_EXTRA_EXTERNAL_LIBS="" +# BR2_PACKAGE_PYTHON_PYSNMP_APPS is not set +# BR2_KERNEL_HEADERS_5_2 is not set +# BR2_TARGET_RISCV_PK is not set +# BR2_PACKAGE_SQLITE_STAT3 is not set +# BR2_KERNEL_HEADERS_5_1 is not set +# BR2_PACKAGE_DEVMEM2 is not set +# BR2_PACKAGE_USTR is not set +# BR2_PACKAGE_KODI_SCREENSAVER_PLANESTATE is not set +# BR2_PACKAGE_KODI_VISUALISATION_WAVEFORHUE is not set +# BR2_PACKAGE_KODI_AUDIODECODER_OPUS is not set +# BR2_PACKAGE_MESA3D_OSMESA is not set +# BR2_PACKAGE_HOSTAPD_DRIVER_RTW is not set +# BR2_PACKAGE_WPA_SUPPLICANT_DBUS_NEW is not set +# BR2_PACKAGE_WPA_SUPPLICANT_DBUS_OLD is not set + +# +# Legacy options removed in 2019.08 +# +# BR2_TARGET_TS4800_MBRBOOT is not set +# BR2_PACKAGE_LIBAMCODEC is not set +# BR2_PACKAGE_ODROID_SCRIPTS is not set +# BR2_PACKAGE_ODROID_MALI is not set +# BR2_PACKAGE_KODI_PLATFORM_AML is not set +# BR2_GCC_VERSION_6_X is not set +# BR2_GCC_VERSION_4_9_X is not set +# BR2_GDB_VERSION_7_12 is not set +# BR2_PACKAGE_XAPP_MKFONTDIR is not set +# BR2_GDB_VERSION_8_0 is not set +# BR2_KERNEL_HEADERS_4_20 is not set +# BR2_KERNEL_HEADERS_5_0 is not set + +# +# Legacy options removed in 2019.05 +# +# BR2_CSKY_DSP is not set +# BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_COMPOSITOR is not set +# BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_IQA is not set +# BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_OPENCV is not set +# BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_STEREO is not set +# BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_VCD is not set +# BR2_PACKAGE_LUNIT is not set +# BR2_PACKAGE_FFMPEG_FFSERVER is not set +# BR2_PACKAGE_LIBUMP is not set +# BR2_PACKAGE_SUNXI_MALI is not set +# BR2_BINUTILS_VERSION_2_29_X is not set +# BR2_BINUTILS_VERSION_2_28_X is not set +# BR2_PACKAGE_GST_PLUGINS_BAD_PLUGIN_APEXSINK is not set + +# +# Legacy options removed in 2019.02 +# +# BR2_PACKAGE_QT is not set +# BR2_PACKAGE_QTUIO is not set +# BR2_PACKAGE_PINENTRY_QT4 is not set +# BR2_PACKAGE_POPPLER_QT is not set +# BR2_PACKAGE_OPENCV3_WITH_QT is not set +# BR2_PACKAGE_OPENCV_WITH_QT is not set +# BR2_PACKAGE_AMD_CATALYST_CCCLE is not set +# BR2_PACKAGE_SDL_QTOPIA is not set +# BR2_PACKAGE_PYTHON_PYQT is not set +# BR2_PACKAGE_LUACRYPTO is not set +# BR2_PACKAGE_TN5250 is not set +# BR2_PACKAGE_BOOST_SIGNALS is not set +# BR2_PACKAGE_FFTW_PRECISION_SINGLE is not set +# BR2_PACKAGE_FFTW_PRECISION_DOUBLE is not set +# BR2_PACKAGE_FFTW_PRECISION_LONG_DOUBLE is not set +# BR2_PACKAGE_LUA_5_2 is not set +# BR2_TARGET_GENERIC_PASSWD_MD5 is not set + +# +# Legacy options removed in 2018.11 +# +# BR2_TARGET_XLOADER is not set +# BR2_PACKAGE_TIDSP_BINARIES is not set +# BR2_PACKAGE_DSP_TOOLS is not set +# BR2_PACKAGE_GST_DSP is not set +# BR2_PACKAGE_BOOTUTILS is not set +# BR2_PACKAGE_EXPEDITE is not set +# BR2_PACKAGE_MESA3D_OPENGL_TEXTURE_FLOAT is not set +# BR2_KERNEL_HEADERS_4_10 is not set +# BR2_KERNEL_HEADERS_4_11 is not set +# BR2_KERNEL_HEADERS_4_12 is not set +# BR2_KERNEL_HEADERS_4_13 is not set +# BR2_KERNEL_HEADERS_4_15 is not set +# BR2_KERNEL_HEADERS_4_17 is not set +# BR2_PACKAGE_LIBNFTNL_XML is not set +# BR2_KERNEL_HEADERS_3_2 is not set +# BR2_KERNEL_HEADERS_4_1 is not set +# BR2_KERNEL_HEADERS_4_16 is not set +# BR2_KERNEL_HEADERS_4_18 is not set + +# +# Legacy options removed in 2018.08 +# +# BR2_PACKAGE_DOCKER_ENGINE_STATIC_CLIENT is not set +# BR2_PACKAGE_XPROTO_APPLEWMPROTO is not set +# BR2_PACKAGE_XPROTO_BIGREQSPROTO is not set +# BR2_PACKAGE_XPROTO_COMPOSITEPROTO is not set +# BR2_PACKAGE_XPROTO_DAMAGEPROTO is not set +# BR2_PACKAGE_XPROTO_DMXPROTO is not set +# BR2_PACKAGE_XPROTO_DRI2PROTO is not set +# BR2_PACKAGE_XPROTO_DRI3PROTO is not set +# BR2_PACKAGE_XPROTO_FIXESPROTO is not set +# BR2_PACKAGE_XPROTO_FONTCACHEPROTO is not set +# BR2_PACKAGE_XPROTO_FONTSPROTO is not set +# BR2_PACKAGE_XPROTO_GLPROTO is not set +# BR2_PACKAGE_XPROTO_INPUTPROTO is not set +# BR2_PACKAGE_XPROTO_KBPROTO is not set +# BR2_PACKAGE_XPROTO_PRESENTPROTO is not set +# BR2_PACKAGE_XPROTO_RANDRPROTO is not set +# BR2_PACKAGE_XPROTO_RECORDPROTO is not set +# BR2_PACKAGE_XPROTO_RENDERPROTO is not set +# BR2_PACKAGE_XPROTO_RESOURCEPROTO is not set +# BR2_PACKAGE_XPROTO_SCRNSAVERPROTO is not set +# BR2_PACKAGE_XPROTO_VIDEOPROTO is not set +# BR2_PACKAGE_XPROTO_WINDOWSWMPROTO is not set +# BR2_PACKAGE_XPROTO_XCMISCPROTO is not set +# BR2_PACKAGE_XPROTO_XEXTPROTO is not set +# BR2_PACKAGE_XPROTO_XF86BIGFONTPROTO is not set +# BR2_PACKAGE_XPROTO_XF86DGAPROTO is not set +# BR2_PACKAGE_XPROTO_XF86DRIPROTO is not set +# BR2_PACKAGE_XPROTO_XF86VIDMODEPROTO is not set +# BR2_PACKAGE_XPROTO_XINERAMAPROTO is not set +# BR2_PACKAGE_XPROTO_XPROTO is not set +# BR2_PACKAGE_XPROTO_XPROXYMANAGEMENTPROTOCOL is not set +# BR2_PACKAGE_GST1_PLUGINS_BAD_LIB_OPENGL_OPENGL is not set +# BR2_PACKAGE_GST1_PLUGINS_BAD_LIB_OPENGL_GLES2 is not set +# BR2_PACKAGE_GST1_PLUGINS_BAD_LIB_OPENGL_GLX is not set +# BR2_PACKAGE_GST1_PLUGINS_BAD_LIB_OPENGL_EGL is not set +# BR2_PACKAGE_GST1_PLUGINS_BAD_LIB_OPENGL_X11 is not set +# BR2_PACKAGE_GST1_PLUGINS_BAD_LIB_OPENGL_WAYLAND is not set +# BR2_PACKAGE_GST1_PLUGINS_BAD_LIB_OPENGL_DISPMANX is not set +# BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_AUDIOMIXER is not set +# BR2_PACKAGE_GST1_PLUGINS_UGLY_PLUGIN_LAME is not set +# BR2_PACKAGE_GST1_PLUGINS_UGLY_PLUGIN_MPG123 is not set +# BR2_GDB_VERSION_7_11 is not set +# BR2_GDB_VERSION_7_10 is not set + +# +# Legacy options removed in 2018.05 +# +# BR2_PACKAGE_MEDIAART_BACKEND_NONE is not set +# BR2_PACKAGE_MEDIAART_BACKEND_GDK_PIXBUF is not set +# BR2_PACKAGE_MEDIAART_BACKEND_QT is not set +# BR2_PACKAGE_TI_SGX_AM335X is not set +# BR2_PACKAGE_TI_SGX_AM437X is not set +# BR2_PACKAGE_TI_SGX_AM4430 is not set +# BR2_PACKAGE_TI_SGX_AM5430 is not set +# BR2_PACKAGE_JANUS_AUDIO_BRIDGE is not set +# BR2_PACKAGE_JANUS_ECHO_TEST is not set +# BR2_PACKAGE_JANUS_RECORDPLAY is not set +# BR2_PACKAGE_JANUS_SIP_GATEWAY is not set +# BR2_PACKAGE_JANUS_STREAMING is not set +# BR2_PACKAGE_JANUS_TEXT_ROOM is not set +# BR2_PACKAGE_JANUS_VIDEO_CALL is not set +# BR2_PACKAGE_JANUS_VIDEO_ROOM is not set +# BR2_PACKAGE_JANUS_MQTT is not set +# BR2_PACKAGE_JANUS_RABBITMQ is not set +# BR2_PACKAGE_JANUS_REST is not set +# BR2_PACKAGE_JANUS_UNIX_SOCKETS is not set +# BR2_PACKAGE_JANUS_WEBSOCKETS is not set +# BR2_PACKAGE_IPSEC_SECCTX_DISABLE is not set +# BR2_PACKAGE_IPSEC_SECCTX_ENABLE is not set +# BR2_PACKAGE_IPSEC_SECCTX_KERNEL is not set +# BR2_PACKAGE_LIBTFDI_CPP is not set +# BR2_PACKAGE_JQUERY_UI_THEME_BLACK_TIE is not set +# BR2_PACKAGE_JQUERY_UI_THEME_BLITZER is not set +# BR2_PACKAGE_JQUERY_UI_THEME_CUPERTINO is not set +# BR2_PACKAGE_JQUERY_UI_THEME_DARK_HIVE is not set +# BR2_PACKAGE_JQUERY_UI_THEME_DOT_LUV is not set +# BR2_PACKAGE_JQUERY_UI_THEME_EGGPLANT is not set +# BR2_PACKAGE_JQUERY_UI_THEME_EXCITE_BIKE is not set +# BR2_PACKAGE_JQUERY_UI_THEME_FLICK is not set +# BR2_PACKAGE_JQUERY_UI_THEME_HOT_SNEAKS is not set +# BR2_PACKAGE_JQUERY_UI_THEME_HUMANITY is not set +# BR2_PACKAGE_JQUERY_UI_THEME_LE_FROG is not set +# BR2_PACKAGE_JQUERY_UI_THEME_MINT_CHOC is not set +# BR2_PACKAGE_JQUERY_UI_THEME_OVERCAST is not set +# BR2_PACKAGE_JQUERY_UI_THEME_PEPPER_GRINDER is not set +# BR2_PACKAGE_JQUERY_UI_THEME_REDMOND is not set +# BR2_PACKAGE_JQUERY_UI_THEME_SMOOTHNESS is not set +# BR2_PACKAGE_JQUERY_UI_THEME_SOUTH_STREET is not set +# BR2_PACKAGE_JQUERY_UI_THEME_START is not set +# BR2_PACKAGE_JQUERY_UI_THEME_SUNNY is not set +# BR2_PACKAGE_JQUERY_UI_THEME_SWANKY_PURSE is not set +# BR2_PACKAGE_JQUERY_UI_THEME_TRONTASTIC is not set +# BR2_PACKAGE_JQUERY_UI_THEME_UI_DARKNESS is not set +# BR2_PACKAGE_JQUERY_UI_THEME_UI_LIGHTNESS is not set +# BR2_PACKAGE_JQUERY_UI_THEME_VADER is not set +# BR2_PACKAGE_BLUEZ5_PLUGINS_HEALTH is not set +# BR2_PACKAGE_BLUEZ5_PLUGINS_MIDI is not set +# BR2_PACKAGE_BLUEZ5_PLUGINS_NFC is not set +# BR2_PACKAGE_BLUEZ5_PLUGINS_SAP is not set +# BR2_PACKAGE_BLUEZ5_PLUGINS_SIXAXIS is not set +# BR2_PACKAGE_TRANSMISSION_REMOTE is not set +# BR2_PACKAGE_LIBKCAPI_APPS is not set +# BR2_PACKAGE_MPLAYER is not set +# BR2_PACKAGE_MPLAYER_MPLAYER is not set +# BR2_PACKAGE_MPLAYER_MENCODER is not set +# BR2_PACKAGE_LIBPLAYER_MPLAYER is not set +# BR2_PACKAGE_IQVLINUX is not set +# BR2_BINFMT_FLAT_SEP_DATA is not set +# BR2_bfin is not set +# BR2_PACKAGE_KODI_ADSP_BASIC is not set +# BR2_PACKAGE_KODI_ADSP_FREESURROUND is not set + +# +# Legacy options removed in 2018.02 +# +# BR2_KERNEL_HEADERS_3_4 is not set +# BR2_KERNEL_HEADERS_3_10 is not set +# BR2_KERNEL_HEADERS_3_12 is not set +# BR2_BINUTILS_VERSION_2_27_X is not set +# BR2_PACKAGE_EEPROG is not set +# BR2_PACKAGE_GNUPG2_GPGV2 is not set +# BR2_PACKAGE_IMX_GPU_VIV_APITRACE is not set +# BR2_PACKAGE_IMX_GPU_VIV_G2D is not set + +# +# Legacy options removed in 2017.11 +# +# BR2_PACKAGE_RFKILL is not set +# BR2_PACKAGE_UTIL_LINUX_RESET is not set +# BR2_PACKAGE_POLICYCOREUTILS_AUDIT2ALLOW is not set +# BR2_PACKAGE_POLICYCOREUTILS_RESTORECOND is not set +# BR2_PACKAGE_SEPOLGEN is not set +# BR2_PACKAGE_OPENOBEX_BLUEZ is not set +# BR2_PACKAGE_OPENOBEX_LIBUSB is not set +# BR2_PACKAGE_OPENOBEX_APPS is not set +# BR2_PACKAGE_OPENOBEX_SYSLOG is not set +# BR2_PACKAGE_OPENOBEX_DUMP is not set +# BR2_PACKAGE_AICCU is not set +# BR2_PACKAGE_UTIL_LINUX_LOGIN_UTILS is not set + +# +# Legacy options removed in 2017.08 +# +# BR2_TARGET_GRUB is not set +# BR2_PACKAGE_SIMICSFS is not set +# BR2_BINUTILS_VERSION_2_26_X is not set +BR2_XTENSA_OVERLAY_DIR="" +BR2_XTENSA_CUSTOM_NAME="" +# BR2_PACKAGE_HOST_MKE2IMG is not set +BR2_TARGET_ROOTFS_EXT2_BLOCKS=0 +BR2_TARGET_ROOTFS_EXT2_EXTRA_INODES=0 +# BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_CDXAPARSE is not set +# BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_DATAURISRC is not set +# BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_DCCP is not set +# BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_HDVPARSE is not set +# BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_MVE is not set +# BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_NUVDEMUX is not set +# BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_PATCHDETECT is not set +# BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_SDI is not set +# BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_TTA is not set +# BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_VIDEOMEASURE is not set +# BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_APEXSINK is not set +# BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_SDL is not set +# BR2_PACKAGE_GST1_PLUGINS_UGLY_PLUGIN_MAD is not set +# BR2_STRIP_none is not set +# BR2_PACKAGE_BEECRYPT_CPP is not set +# BR2_PACKAGE_SPICE_CLIENT is not set +# BR2_PACKAGE_SPICE_GUI is not set +# BR2_PACKAGE_SPICE_TUNNEL is not set +# BR2_PACKAGE_INPUT_TOOLS is not set +# BR2_PACKAGE_INPUT_TOOLS_INPUTATTACH is not set +# BR2_PACKAGE_INPUT_TOOLS_JSCAL is not set +# BR2_PACKAGE_INPUT_TOOLS_JSTEST is not set +# BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_SH is not set +# BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_X86 is not set +# BR2_GCC_VERSION_4_8_X is not set + +# +# Legacy options removed in 2017.05 +# +# BR2_PACKAGE_SUNXI_MALI_R2P4 is not set +# BR2_PACKAGE_NODEJS_MODULES_COFFEESCRIPT is not set +# BR2_PACKAGE_NODEJS_MODULES_EXPRESS is not set +# BR2_PACKAGE_BLUEZ5_UTILS_GATTTOOL is not set +# BR2_PACKAGE_OPENOCD_FT2XXX is not set +# BR2_PACKAGE_KODI_RTMPDUMP is not set +# BR2_PACKAGE_KODI_VISUALISATION_FOUNTAIN is not set +# BR2_PACKAGE_PORTMAP is not set +# BR2_BINUTILS_VERSION_2_25_X is not set +# BR2_TOOLCHAIN_BUILDROOT_INET_RPC is not set +BR2_TARGET_ROOTFS_EXT2_EXTRA_BLOCKS=0 +# BR2_PACKAGE_SYSTEMD_KDBUS is not set +# BR2_PACKAGE_POLARSSL is not set +# BR2_NBD_CLIENT is not set +# BR2_NBD_SERVER is not set +# BR2_PACKAGE_GMOCK is not set +# BR2_KERNEL_HEADERS_4_8 is not set +# BR2_KERNEL_HEADERS_3_18 is not set +# BR2_GLIBC_VERSION_2_22 is not set + +# +# Legacy options removed in 2017.02 +# +# BR2_PACKAGE_PERL_DB_FILE is not set +# BR2_KERNEL_HEADERS_4_7 is not set +# BR2_KERNEL_HEADERS_4_6 is not set +# BR2_KERNEL_HEADERS_4_5 is not set +# BR2_KERNEL_HEADERS_3_14 is not set +# BR2_TOOLCHAIN_EXTERNAL_MUSL_CROSS is not set +# BR2_UCLIBC_INSTALL_TEST_SUITE is not set +# BR2_TOOLCHAIN_EXTERNAL_BLACKFIN_UCLINUX is not set +# BR2_PACKAGE_MAKEDEVS is not set +# BR2_TOOLCHAIN_EXTERNAL_ARAGO_ARMV7A is not set +# BR2_TOOLCHAIN_EXTERNAL_ARAGO_ARMV5TE is not set +# BR2_PACKAGE_SNOWBALL_HDMISERVICE is not set +# BR2_PACKAGE_SNOWBALL_INIT is not set +# BR2_GDB_VERSION_7_9 is not set + +# +# Legacy options removed in 2016.11 +# +# BR2_PACKAGE_PHP_SAPI_CLI_CGI is not set +# BR2_PACKAGE_PHP_SAPI_CLI_FPM is not set +# BR2_PACKAGE_WVSTREAMS is not set +# BR2_PACKAGE_WVDIAL is not set +# BR2_PACKAGE_WEBKITGTK24 is not set +# BR2_PACKAGE_TORSMO is not set +# BR2_PACKAGE_SSTRIP is not set +# BR2_KERNEL_HEADERS_4_3 is not set +# BR2_KERNEL_HEADERS_4_2 is not set +# BR2_PACKAGE_KODI_ADDON_XVDR is not set +# BR2_PACKAGE_IPKG is not set +# BR2_GCC_VERSION_4_7_X is not set +# BR2_BINUTILS_VERSION_2_24_X is not set +# BR2_PACKAGE_WESTON_RPI is not set +# BR2_LINUX_KERNEL_TOOL_CPUPOWER is not set +# BR2_LINUX_KERNEL_TOOL_PERF is not set +# BR2_LINUX_KERNEL_TOOL_SELFTESTS is not set +# BR2_GCC_VERSION_4_8_ARC is not set +# BR2_KERNEL_HEADERS_4_0 is not set +# BR2_KERNEL_HEADERS_3_19 is not set +# BR2_PACKAGE_LIBEVAS_GENERIC_LOADERS is not set +# BR2_PACKAGE_ELEMENTARY is not set +# BR2_LINUX_KERNEL_CUSTOM_LOCAL is not set + +# +# Legacy options removed in 2016.08 +# +# BR2_PACKAGE_EFL_JP2K is not set +# BR2_PACKAGE_SYSTEMD_COMPAT is not set +# BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_LIVEADDER is not set +# BR2_PACKAGE_LIBFSLVPUWRAP is not set +# BR2_PACKAGE_LIBFSLPARSER is not set +# BR2_PACKAGE_LIBFSLCODEC is not set +# BR2_PACKAGE_UBOOT_TOOLS_MKIMAGE_FIT_SIGNATURE_SUPPORT is not set +# BR2_PTHREADS_OLD is not set +# BR2_BINUTILS_VERSION_2_23_X is not set +# BR2_TOOLCHAIN_BUILDROOT_EGLIBC is not set +# BR2_GDB_VERSION_7_8 is not set + +# +# Legacy options removed in 2016.05 +# +# BR2_PACKAGE_OPENVPN_CRYPTO_POLARSSL is not set +# BR2_PACKAGE_NGINX_HTTP_SPDY_MODULE is not set +# BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_RTP is not set +# BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_MPG123 is not set +# BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_POWERPC is not set +# BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_POWERPC_E500V2 is not set +# BR2_x86_i386 is not set +# BR2_PACKAGE_QT5QUICK1 is not set +BR2_TARGET_UBOOT_CUSTOM_PATCH_DIR="" +# BR2_PACKAGE_XDRIVER_XF86_INPUT_VOID is not set +# BR2_KERNEL_HEADERS_3_17 is not set +# BR2_GDB_VERSION_7_7 is not set +# BR2_PACKAGE_FOOMATIC_FILTERS is not set +# BR2_PACKAGE_SAMBA is not set +# BR2_PACKAGE_KODI_WAVPACK is not set +# BR2_PACKAGE_KODI_RSXS is not set +# BR2_PACKAGE_KODI_GOOM is not set +# BR2_PACKAGE_SYSTEMD_ALL_EXTRAS is not set +# BR2_GCC_VERSION_4_5_X is not set +# BR2_PACKAGE_SQLITE_READLINE is not set + +# +# Legacy options removed in 2016.02 +# +# BR2_PACKAGE_DOVECOT_BZIP2 is not set +# BR2_PACKAGE_DOVECOT_ZLIB is not set +# BR2_PACKAGE_E2FSPROGS_FINDFS is not set +# BR2_PACKAGE_OPENPOWERLINK_DEBUG_LEVEL is not set +# BR2_PACKAGE_OPENPOWERLINK_KERNEL_MODULE is not set +# BR2_PACKAGE_OPENPOWERLINK_LIBPCAP is not set +# BR2_LINUX_KERNEL_SAME_AS_HEADERS is not set +# BR2_PACKAGE_CUPS_PDFTOPS is not set +# BR2_KERNEL_HEADERS_3_16 is not set +# BR2_PACKAGE_PYTHON_PYXML is not set +# BR2_ENABLE_SSP is not set +# BR2_PACKAGE_DIRECTFB_CLE266 is not set +# BR2_PACKAGE_DIRECTFB_UNICHROME is not set +# BR2_PACKAGE_LIBELEMENTARY is not set +# BR2_PACKAGE_LIBEINA is not set +# BR2_PACKAGE_LIBEET is not set +# BR2_PACKAGE_LIBEVAS is not set +# BR2_PACKAGE_LIBECORE is not set +# BR2_PACKAGE_LIBEDBUS is not set +# BR2_PACKAGE_LIBEFREET is not set +# BR2_PACKAGE_LIBEIO is not set +# BR2_PACKAGE_LIBEMBRYO is not set +# BR2_PACKAGE_LIBEDJE is not set +# BR2_PACKAGE_LIBETHUMB is not set +# BR2_PACKAGE_INFOZIP is not set +# BR2_BR2_PACKAGE_NODEJS_0_10_X is not set +# BR2_BR2_PACKAGE_NODEJS_0_12_X is not set +# BR2_BR2_PACKAGE_NODEJS_4_X is not set + +# +# Legacy options removed in 2015.11 +# +# BR2_PACKAGE_GST1_PLUGINS_BAD_PLUGIN_REAL is not set +# BR2_PACKAGE_MEDIA_CTL is not set +# BR2_PACKAGE_SCHIFRA is not set +# BR2_PACKAGE_ZXING is not set +# BR2_PACKAGE_BLACKBOX is not set +# BR2_KERNEL_HEADERS_3_0 is not set +# BR2_KERNEL_HEADERS_3_11 is not set +# BR2_KERNEL_HEADERS_3_13 is not set +# BR2_KERNEL_HEADERS_3_15 is not set +# BR2_PACKAGE_DIRECTFB_EXAMPLES_ANDI is not set +# BR2_PACKAGE_DIRECTFB_EXAMPLES_BLTLOAD is not set +# BR2_PACKAGE_DIRECTFB_EXAMPLES_CPULOAD is not set +# BR2_PACKAGE_DIRECTFB_EXAMPLES_DATABUFFER is not set +# BR2_PACKAGE_DIRECTFB_EXAMPLES_DIOLOAD is not set +# BR2_PACKAGE_DIRECTFB_EXAMPLES_DOK is not set +# BR2_PACKAGE_DIRECTFB_EXAMPLES_DRIVERTEST is not set +# BR2_PACKAGE_DIRECTFB_EXAMPLES_FIRE is not set +# BR2_PACKAGE_DIRECTFB_EXAMPLES_FLIP is not set +# BR2_PACKAGE_DIRECTFB_EXAMPLES_FONTS is not set +# BR2_PACKAGE_DIRECTFB_EXAMPLES_INPUT is not set +# BR2_PACKAGE_DIRECTFB_EXAMPLES_JOYSTICK is not set +# BR2_PACKAGE_DIRECTFB_EXAMPLES_KNUCKLES is not set +# BR2_PACKAGE_DIRECTFB_EXAMPLES_LAYER is not set +# BR2_PACKAGE_DIRECTFB_EXAMPLES_MATRIX is not set +# BR2_PACKAGE_DIRECTFB_EXAMPLES_MATRIX_WATER is not set +# BR2_PACKAGE_DIRECTFB_EXAMPLES_NEO is not set +# BR2_PACKAGE_DIRECTFB_EXAMPLES_NETLOAD is not set +# BR2_PACKAGE_DIRECTFB_EXAMPLES_PALETTE is not set +# BR2_PACKAGE_DIRECTFB_EXAMPLES_PARTICLE is not set +# BR2_PACKAGE_DIRECTFB_EXAMPLES_PORTER is not set +# BR2_PACKAGE_DIRECTFB_EXAMPLES_STRESS is not set +# BR2_PACKAGE_DIRECTFB_EXAMPLES_TEXTURE is not set +# BR2_PACKAGE_DIRECTFB_EXAMPLES_VIDEO is not set +# BR2_PACKAGE_DIRECTFB_EXAMPLES_VIDEO_PARTICLE is not set +# BR2_PACKAGE_DIRECTFB_EXAMPLES_WINDOW is not set +# BR2_PACKAGE_KOBS_NG is not set +# BR2_PACKAGE_SAWMAN is not set +# BR2_PACKAGE_DIVINE is not set + +# +# Legacy options removed in 2015.08 +# +# BR2_PACKAGE_KODI_PVR_ADDONS is not set +# BR2_BINUTILS_VERSION_2_23_2 is not set +# BR2_BINUTILS_VERSION_2_24 is not set +# BR2_BINUTILS_VERSION_2_25 is not set +# BR2_PACKAGE_PERF is not set +# BR2_BINUTILS_VERSION_2_22 is not set +# BR2_PACKAGE_GPU_VIV_BIN_MX6Q is not set +# BR2_TARGET_UBOOT_NETWORK is not set + +# +# External options +# + +# +# TEST_KERNEL_MODULES (in /test/test-kernel-modules) +# + +# +# Kernel Modules +# +BR2_PACKAGE_TEST_MOD=y \ No newline at end of file diff --git a/examples/tests/riscv-64/.gitignore b/tests/rsrc/riscv-64/.gitignore similarity index 100% rename from examples/tests/riscv-64/.gitignore rename to tests/rsrc/riscv-64/.gitignore diff --git a/examples/tests/riscv-64/Dockerfile b/tests/rsrc/riscv-64/Dockerfile similarity index 72% rename from examples/tests/riscv-64/Dockerfile rename to tests/rsrc/riscv-64/Dockerfile index f560b58e..6fd70598 100644 --- a/examples/tests/riscv-64/Dockerfile +++ b/tests/rsrc/riscv-64/Dockerfile @@ -7,17 +7,17 @@ ENV DEBIAN_FRONTEND=noninteractive RUN apt-get -y update && \ apt-get -y install \ - bash \ - bc \ - build-essential \ - cpio \ - file \ - git \ - gcc \ - g++ \ - rsync \ - unzip \ - wget + bash \ + bc \ + build-essential \ + cpio \ + file \ + git \ + gcc \ + g++ \ + rsync \ + unzip \ + wget RUN git clone \ https://github.com/buildroot/buildroot.git @@ -34,13 +34,20 @@ COPY test-mod-userspace.c /test/usr/test-mod-userspace.c COPY tsffs-gcc-riscv64.h /test/usr/tsffs-gcc-riscv64.h # Build Linux, Linux Kernel Modules & RootFS +# Build size: 7.9G RUN make BR2_EXTERNAL=/test/test-kernel-modules/ simics_simple_riscv_defconfig && \ make && \ + echo "Compressing images" && \ tar -C output/images -czvf images.tar.gz Image fw_jump.elf rootfs.ext2 && \ + echo "Copying images" && \ cp images.tar.gz /test/ && \ + echo "Building test" && \ /buildroot/output/host/bin/riscv64-buildroot-linux-gnu-gcc -o /test/usr/test /test/usr/test.c && \ + echo "Building test-mod" && \ /buildroot/output/host/bin/riscv64-buildroot-linux-gnu-gcc -o /test/usr/test-mod /test/usr/test-mod.c && \ + echo "Building test-mod-userspace" && \ /buildroot/output/host/bin/riscv64-buildroot-linux-gnu-gcc -o /test/usr/test-mod-userspace /test/usr/test-mod-userspace.c && \ - cp -a /buildroot/output/build/ /test/output/ && \ - make clean + echo "Copying test mod" && \ + cp /buildroot/output/build/test-mod*/test-mod.ko /test/usr/test-mod.ko && \ + echo "Copied all build artifacts" diff --git a/tests/rsrc/riscv-64/build.sh b/tests/rsrc/riscv-64/build.sh new file mode 100755 index 00000000..fbf59765 --- /dev/null +++ b/tests/rsrc/riscv-64/build.sh @@ -0,0 +1,60 @@ +#!/bin/bash + +# Copyright (C) 2024 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + +# Build the HelloWorld.efi module and copy it into the resource directory for the example +# this only needs to be run if you want to modify the source code for the HelloWorld.efi module, +# otherwise, the EFI is included in the source tree for ease of use + + +SCRIPT_DIR=$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" &>/dev/null && pwd) +IMAGE_NAME="buildroot-build-tsffs-gcc-riscv64-test" +CONTAINER_UID=$(echo "${RANDOM}" | sha256sum | head -c 8) +CONTAINER_NAME="${IMAGE_NAME}-tmp-${CONTAINER_UID}" +CRAFF="${SCRIPT_DIR}/../../../bin/craff" +CRAFF_FS="${SCRIPT_DIR}/../../../bin/craff-fs" + +if [ -n "${SIMICS_BASE}" ]; then + mkdir -p "${SCRIPT_DIR}/../../../bin" + cp "${SIMICS_BASE}/linux64/bin/craff" "${CRAFF}" + cp "${SIMICS_BASE}/linux64/bin/craff-fs" "${CRAFF_FS}" +fi + +pushd "${SCRIPT_DIR}" || exit 1 + +cp "${SCRIPT_DIR}/../../../harness/tsffs-gcc-riscv64.h" "${SCRIPT_DIR}/tsffs-gcc-riscv64.h" +cp "${SCRIPT_DIR}/../../../harness/tsffs-gcc-riscv64.h" "${SCRIPT_DIR}/test-kernel-modules/package/kernel-modules/test-mod/tsffs-gcc-riscv64.h" +mkdir -p "${SCRIPT_DIR}/targets/risc-v-simple/images/linux/" + +echo "Building container" +docker buildx build -t "${IMAGE_NAME}" -f "Dockerfile" . > "${SCRIPT_DIR}/build.log" 2>&1 || { tail -n 1000 "${SCRIPT_DIR}/build.log"; exit 1; } +echo "Container build finished" +docker create --name "${CONTAINER_NAME}" "${IMAGE_NAME}" +docker cp \ + "${CONTAINER_NAME}:/buildroot/images.tar.gz" \ + "${SCRIPT_DIR}/images.tar.gz" +docker cp \ + "${CONTAINER_NAME}:/test/usr/test" \ + "${SCRIPT_DIR}/test" +docker cp \ + "${CONTAINER_NAME}:/test/usr/test-mod" \ + "${SCRIPT_DIR}/test-mod" +docker cp \ + "${CONTAINER_NAME}:/test/usr/test-mod-userspace" \ + "${SCRIPT_DIR}/test-mod-userspace" +docker cp \ + "${CONTAINER_NAME}:/test/usr/test-mod.ko"\ + "${SCRIPT_DIR}/test-mod.ko" +docker rm -f "${CONTAINER_NAME}" + +tar -C "${SCRIPT_DIR}/targets/risc-v-simple/images/linux/" -xf images.tar.gz +rm images.tar.gz + +dd if=/dev/zero of=test.fs bs=1024 count=131072 +mkfs.fat test.fs +mcopy -i test.fs test-mod-userspace ::test-mod-userspace +mcopy -i test.fs test-mod ::test-mod +mcopy -i test.fs test ::test +mcopy -i test.fs test-mod.ko ::test-mod.ko +"${CRAFF}" -o test.fs.craff test.fs diff --git a/examples/tests/riscv-64/simics_simple_riscv_defconfig b/tests/rsrc/riscv-64/simics_simple_riscv_defconfig similarity index 100% rename from examples/tests/riscv-64/simics_simple_riscv_defconfig rename to tests/rsrc/riscv-64/simics_simple_riscv_defconfig diff --git a/examples/tests/riscv-64/test-kernel-modules/Config.in b/tests/rsrc/riscv-64/test-kernel-modules/Config.in similarity index 100% rename from examples/tests/riscv-64/test-kernel-modules/Config.in rename to tests/rsrc/riscv-64/test-kernel-modules/Config.in diff --git a/examples/tests/riscv-64/test-kernel-modules/external.desc b/tests/rsrc/riscv-64/test-kernel-modules/external.desc similarity index 100% rename from examples/tests/riscv-64/test-kernel-modules/external.desc rename to tests/rsrc/riscv-64/test-kernel-modules/external.desc diff --git a/examples/tests/riscv-64/test-kernel-modules/external.mk b/tests/rsrc/riscv-64/test-kernel-modules/external.mk similarity index 100% rename from examples/tests/riscv-64/test-kernel-modules/external.mk rename to tests/rsrc/riscv-64/test-kernel-modules/external.mk diff --git a/examples/tests/riscv-64/test-kernel-modules/package/kernel-modules/Config.in b/tests/rsrc/riscv-64/test-kernel-modules/package/kernel-modules/Config.in similarity index 100% rename from examples/tests/riscv-64/test-kernel-modules/package/kernel-modules/Config.in rename to tests/rsrc/riscv-64/test-kernel-modules/package/kernel-modules/Config.in diff --git a/examples/tests/riscv-64/test-kernel-modules/package/kernel-modules/kernel-modules.mk b/tests/rsrc/riscv-64/test-kernel-modules/package/kernel-modules/kernel-modules.mk similarity index 100% rename from examples/tests/riscv-64/test-kernel-modules/package/kernel-modules/kernel-modules.mk rename to tests/rsrc/riscv-64/test-kernel-modules/package/kernel-modules/kernel-modules.mk diff --git a/examples/tests/riscv-64/test-kernel-modules/package/kernel-modules/test-mod/Config.in b/tests/rsrc/riscv-64/test-kernel-modules/package/kernel-modules/test-mod/Config.in similarity index 100% rename from examples/tests/riscv-64/test-kernel-modules/package/kernel-modules/test-mod/Config.in rename to tests/rsrc/riscv-64/test-kernel-modules/package/kernel-modules/test-mod/Config.in diff --git a/examples/tests/riscv-64/test-kernel-modules/package/kernel-modules/test-mod/Makefile b/tests/rsrc/riscv-64/test-kernel-modules/package/kernel-modules/test-mod/Makefile similarity index 100% rename from examples/tests/riscv-64/test-kernel-modules/package/kernel-modules/test-mod/Makefile rename to tests/rsrc/riscv-64/test-kernel-modules/package/kernel-modules/test-mod/Makefile diff --git a/examples/tests/riscv-64/test-kernel-modules/package/kernel-modules/test-mod/test-mod.c b/tests/rsrc/riscv-64/test-kernel-modules/package/kernel-modules/test-mod/test-mod.c similarity index 97% rename from examples/tests/riscv-64/test-kernel-modules/package/kernel-modules/test-mod/test-mod.c rename to tests/rsrc/riscv-64/test-kernel-modules/package/kernel-modules/test-mod/test-mod.c index 263cb714..81a3bb8d 100644 --- a/examples/tests/riscv-64/test-kernel-modules/package/kernel-modules/test-mod/test-mod.c +++ b/tests/rsrc/riscv-64/test-kernel-modules/package/kernel-modules/test-mod/test-mod.c @@ -1,3 +1,7 @@ +// Copyright (C) 2024 Intel Corporation +// SPDX-License-Identifier: GPL +// LICENSE: IGNORE + #include #include #include diff --git a/examples/tests/riscv-64/test-kernel-modules/package/kernel-modules/test-mod/test-mod.mk b/tests/rsrc/riscv-64/test-kernel-modules/package/kernel-modules/test-mod/test-mod.mk similarity index 100% rename from examples/tests/riscv-64/test-kernel-modules/package/kernel-modules/test-mod/test-mod.mk rename to tests/rsrc/riscv-64/test-kernel-modules/package/kernel-modules/test-mod/test-mod.mk diff --git a/tests/rsrc/riscv-64/test-kernel-modules/package/kernel-modules/test-mod/tsffs-gcc-riscv64.h b/tests/rsrc/riscv-64/test-kernel-modules/package/kernel-modules/test-mod/tsffs-gcc-riscv64.h new file mode 100644 index 00000000..d680ba0d --- /dev/null +++ b/tests/rsrc/riscv-64/test-kernel-modules/package/kernel-modules/test-mod/tsffs-gcc-riscv64.h @@ -0,0 +1,124 @@ +// Copyright (C) 2023 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 + +/// Definitions and macros for compiled-in harnessing of C and C++ target +/// software for the RISC-V (64-bit) architecture +/// +/// Example: +/// ```c +/// #include "tsffs-gcc-riscv64.h" +/// +/// int main() { +/// char buf[0x10]; +/// size_t size = 0x10; +/// size_t *size_ptr = &size; +/// HARNESS_START((char *)buf, size_ptr); +/// int retval = YourSpecialDecoder(buf, *size_ptr); +/// if (!retval) { +/// HARNESS_ASSERT(); +/// } else { +/// HARNESS_STOP(); +/// } +/// } +/// ``` + +#ifndef TSFFS_H +#define TSFFS_H + +/// Define common with LibFuzzer and other fuzzers to allow code that is +/// fuzzing-specific to be left in the codebase. See +/// https://llvm.org/docs/LibFuzzer.html#id35 for more information +#ifndef FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION +#define FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION (1) +#endif // FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION + +/// Default magic instruction `n` value to signal the TSFFS fuzzer to start the +/// fuzzing loop +#define MAGIC_START (0x0001U) +/// Default magic instruction `n` value to signal the TSFFS fuzzer to stop and +/// reset the fuzzing loop +#define MAGIC_STOP (0x0002U) +/// Default magic instruction `n` value to signal the TSFFS fuzzer that an error +/// has occurred and the testcase input should be saved as a solution +#define MAGIC_ASSERT (0x0003U) + +/// Alternative magic numbers that can be used for start and stop events in +/// conjunction with setting the magic number for each event via the SIMICS or +/// SIMICS Python script interface +#define MAGIC_ALT_0 (0x0004U) +#define MAGIC_ALT_1 (0x0005U) +#define MAGIC_ALT_2 (0x0006U) +#define MAGIC_ALT_3 (0x0007U) +#define MAGIC_ALT_4 (0x0008U) +#define MAGIC_ALT_5 (0x0009U) +#define MAGIC_ALT_6 (0x000aU) +#define MAGIC_ALT_7 (0x000bU) + +/// Invoke the magic instruction defined by SIMICS for the RISC-V architecture +/// (`srai zero, zero, n`) with a specific value of `n`, after setting register +/// `a0` to the value of the pointer to the testcase and register `a1` to the +/// value of the pointer to the testcase size. These registers are accessed by +/// the fuzzer and are defined per-architecture. +#define __srai_extended(value, testcase_ptr, size_ptr) \ + __asm__ __volatile__("mv a0, %0; mv a1, %1; srai zero, zero, %2" \ + : \ + : "r"(testcase_ptr), "r"(size_ptr), "I"(value) \ + : "a0", "a1"); + +/// Invoke the magic instruction defined by SIMICS for the RISC-V architecture +/// (`srai zero, zero, n`) with a specific value of `n` +#define __srai(value) \ + __asm__ __volatile__("srai zero, zero, %0" : : "I"(value) :) + +/// Signal the fuzzer using a specific magic value `start` to start the fuzzing +/// loop at the point this macro is called. A snapshot will be taken when the +/// macro is called, and the maximum testcase size `*size_ptr` will be saved as +/// `max_testcase_size`. Each iteration of the fuzzing loop, the fuzzer input +/// (the "testcase") will be written to `*testcase_ptr` as if running +/// `memcpy(testcase_ptr, current_testcase, max_testcase_size)`, and the actual +/// size of the current testcase will be written to +/// `*size_ptr` as if running `*size_ptr = current_testcase_size`. +#define __arch_harness_start(start, testcase_ptr, size_ptr) \ + do { \ + __srai_extended(start, testcase_ptr, size_ptr); \ + } while (0) + +/// Signal the fuzzer using the a specific magic value (`stop`) to stop and +/// reset to the beginning of the fuzzing loop with a "normal" stop status, +/// indicating no solution has occurred. +#define __arch_harness_stop(stop) \ + do { \ + __srai(stop); \ + } while (0) + +/// Signal the fuzzer using the default magic value to start the fuzzing loop at +/// the point this macro is called. A snapshot will be taken when the macro is +/// called, and the maximum testcase size `*size_ptr` will be saved as +/// `max_testcase_size`. Each iteration of the fuzzing loop, the fuzzer input +/// (the "testcase") will be written to +/// `*testcase_ptr` as if running `memcpy(testcase_ptr, current_testcase, +/// max_testcase_size)`, and the actual size of the current testcase will be +/// written to +/// `*size_ptr` as if running `*size_ptr = current_testcase_size`. +#define HARNESS_START(testcase_ptr, size_ptr) \ + do { \ + __arch_harness_start(MAGIC_START, testcase_ptr, size_ptr); \ + } while (0) + +/// Signal the fuzzer using the default magic value to stop and reset to the +/// beginning of the fuzzing loop with a "normal" stop status, indicating no +/// solution has occurred. +#define HARNESS_STOP() \ + do { \ + __arch_harness_stop(MAGIC_STOP); \ + } while (0) + +/// Signal the fuzzer using the default magic value to stop and reset to the +/// beginning of the fuzzing loop with a "solution" stop status, indicating some +/// custom error has occurred. +#define HARNESS_ASSERT() \ + do { \ + __arch_harness_stop(MAGIC_ASSERT); \ + } while (0) + +#endif // TSFFS_H \ No newline at end of file diff --git a/examples/tests/riscv-64/test-mod-userspace.c b/tests/rsrc/riscv-64/test-mod-userspace.c similarity index 95% rename from examples/tests/riscv-64/test-mod-userspace.c rename to tests/rsrc/riscv-64/test-mod-userspace.c index 2b29efa2..c7db73a1 100644 --- a/examples/tests/riscv-64/test-mod-userspace.c +++ b/tests/rsrc/riscv-64/test-mod-userspace.c @@ -1,3 +1,6 @@ +// Copyright (C) 2024 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 + #include #include #include diff --git a/examples/tests/riscv-64/test-mod.c b/tests/rsrc/riscv-64/test-mod.c similarity index 95% rename from examples/tests/riscv-64/test-mod.c rename to tests/rsrc/riscv-64/test-mod.c index a6bd9c57..2570ce54 100644 --- a/examples/tests/riscv-64/test-mod.c +++ b/tests/rsrc/riscv-64/test-mod.c @@ -1,3 +1,6 @@ +// Copyright (C) 2024 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 + #include #include #include diff --git a/examples/tests/riscv-64/test.c b/tests/rsrc/riscv-64/test.c similarity index 97% rename from examples/tests/riscv-64/test.c rename to tests/rsrc/riscv-64/test.c index 0596f6e4..7bb2926c 100644 --- a/examples/tests/riscv-64/test.c +++ b/tests/rsrc/riscv-64/test.c @@ -1,4 +1,4 @@ -// Copyright (C) 2023 Intel Corporation +// Copyright (C) 2024 Intel Corporation // SPDX-License-Identifier: Apache-2.0 #include diff --git a/tests/rsrc/riscv-64/tsffs-gcc-riscv64.h b/tests/rsrc/riscv-64/tsffs-gcc-riscv64.h new file mode 100644 index 00000000..d680ba0d --- /dev/null +++ b/tests/rsrc/riscv-64/tsffs-gcc-riscv64.h @@ -0,0 +1,124 @@ +// Copyright (C) 2023 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 + +/// Definitions and macros for compiled-in harnessing of C and C++ target +/// software for the RISC-V (64-bit) architecture +/// +/// Example: +/// ```c +/// #include "tsffs-gcc-riscv64.h" +/// +/// int main() { +/// char buf[0x10]; +/// size_t size = 0x10; +/// size_t *size_ptr = &size; +/// HARNESS_START((char *)buf, size_ptr); +/// int retval = YourSpecialDecoder(buf, *size_ptr); +/// if (!retval) { +/// HARNESS_ASSERT(); +/// } else { +/// HARNESS_STOP(); +/// } +/// } +/// ``` + +#ifndef TSFFS_H +#define TSFFS_H + +/// Define common with LibFuzzer and other fuzzers to allow code that is +/// fuzzing-specific to be left in the codebase. See +/// https://llvm.org/docs/LibFuzzer.html#id35 for more information +#ifndef FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION +#define FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION (1) +#endif // FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION + +/// Default magic instruction `n` value to signal the TSFFS fuzzer to start the +/// fuzzing loop +#define MAGIC_START (0x0001U) +/// Default magic instruction `n` value to signal the TSFFS fuzzer to stop and +/// reset the fuzzing loop +#define MAGIC_STOP (0x0002U) +/// Default magic instruction `n` value to signal the TSFFS fuzzer that an error +/// has occurred and the testcase input should be saved as a solution +#define MAGIC_ASSERT (0x0003U) + +/// Alternative magic numbers that can be used for start and stop events in +/// conjunction with setting the magic number for each event via the SIMICS or +/// SIMICS Python script interface +#define MAGIC_ALT_0 (0x0004U) +#define MAGIC_ALT_1 (0x0005U) +#define MAGIC_ALT_2 (0x0006U) +#define MAGIC_ALT_3 (0x0007U) +#define MAGIC_ALT_4 (0x0008U) +#define MAGIC_ALT_5 (0x0009U) +#define MAGIC_ALT_6 (0x000aU) +#define MAGIC_ALT_7 (0x000bU) + +/// Invoke the magic instruction defined by SIMICS for the RISC-V architecture +/// (`srai zero, zero, n`) with a specific value of `n`, after setting register +/// `a0` to the value of the pointer to the testcase and register `a1` to the +/// value of the pointer to the testcase size. These registers are accessed by +/// the fuzzer and are defined per-architecture. +#define __srai_extended(value, testcase_ptr, size_ptr) \ + __asm__ __volatile__("mv a0, %0; mv a1, %1; srai zero, zero, %2" \ + : \ + : "r"(testcase_ptr), "r"(size_ptr), "I"(value) \ + : "a0", "a1"); + +/// Invoke the magic instruction defined by SIMICS for the RISC-V architecture +/// (`srai zero, zero, n`) with a specific value of `n` +#define __srai(value) \ + __asm__ __volatile__("srai zero, zero, %0" : : "I"(value) :) + +/// Signal the fuzzer using a specific magic value `start` to start the fuzzing +/// loop at the point this macro is called. A snapshot will be taken when the +/// macro is called, and the maximum testcase size `*size_ptr` will be saved as +/// `max_testcase_size`. Each iteration of the fuzzing loop, the fuzzer input +/// (the "testcase") will be written to `*testcase_ptr` as if running +/// `memcpy(testcase_ptr, current_testcase, max_testcase_size)`, and the actual +/// size of the current testcase will be written to +/// `*size_ptr` as if running `*size_ptr = current_testcase_size`. +#define __arch_harness_start(start, testcase_ptr, size_ptr) \ + do { \ + __srai_extended(start, testcase_ptr, size_ptr); \ + } while (0) + +/// Signal the fuzzer using the a specific magic value (`stop`) to stop and +/// reset to the beginning of the fuzzing loop with a "normal" stop status, +/// indicating no solution has occurred. +#define __arch_harness_stop(stop) \ + do { \ + __srai(stop); \ + } while (0) + +/// Signal the fuzzer using the default magic value to start the fuzzing loop at +/// the point this macro is called. A snapshot will be taken when the macro is +/// called, and the maximum testcase size `*size_ptr` will be saved as +/// `max_testcase_size`. Each iteration of the fuzzing loop, the fuzzer input +/// (the "testcase") will be written to +/// `*testcase_ptr` as if running `memcpy(testcase_ptr, current_testcase, +/// max_testcase_size)`, and the actual size of the current testcase will be +/// written to +/// `*size_ptr` as if running `*size_ptr = current_testcase_size`. +#define HARNESS_START(testcase_ptr, size_ptr) \ + do { \ + __arch_harness_start(MAGIC_START, testcase_ptr, size_ptr); \ + } while (0) + +/// Signal the fuzzer using the default magic value to stop and reset to the +/// beginning of the fuzzing loop with a "normal" stop status, indicating no +/// solution has occurred. +#define HARNESS_STOP() \ + do { \ + __arch_harness_stop(MAGIC_STOP); \ + } while (0) + +/// Signal the fuzzer using the default magic value to stop and reset to the +/// beginning of the fuzzing loop with a "solution" stop status, indicating some +/// custom error has occurred. +#define HARNESS_ASSERT() \ + do { \ + __arch_harness_stop(MAGIC_ASSERT); \ + } while (0) + +#endif // TSFFS_H \ No newline at end of file diff --git a/examples/tests/x86-user/.gitignore b/tests/rsrc/x86-user/.gitignore similarity index 100% rename from examples/tests/x86-user/.gitignore rename to tests/rsrc/x86-user/.gitignore diff --git a/examples/tests/x86-user/build.ninja b/tests/rsrc/x86-user/build.ninja similarity index 78% rename from examples/tests/x86-user/build.ninja rename to tests/rsrc/x86-user/build.ninja index a4908aeb..be034810 100644 --- a/examples/tests/x86-user/build.ninja +++ b/tests/rsrc/x86-user/build.ninja @@ -1,4 +1,4 @@ -# Copyright (C) 2023 Intel Corporation +# Copyright (C) 2024 Intel Corporation # SPDX-License-Identifier: Apache-2.0 rule cc diff --git a/tests/rsrc/x86-user/build.sh b/tests/rsrc/x86-user/build.sh new file mode 100755 index 00000000..58532e4d --- /dev/null +++ b/tests/rsrc/x86-user/build.sh @@ -0,0 +1,25 @@ +#!/bin/bash + +# Copyright (C) 2024 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + +SCRIPT_DIR=$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" &>/dev/null && pwd) +CRAFF="${SCRIPT_DIR}/../../../bin/craff" +CRAFF_FS="${SCRIPT_DIR}/../../../bin/craff-fs" + +if [ -n "${SIMICS_BASE}" ]; then + mkdir -p "${SCRIPT_DIR}/../../../bin" + cp "${SIMICS_BASE}/linux64/bin/craff" "${CRAFF}" + cp "${SIMICS_BASE}/linux64/bin/craff-fs" "${CRAFF_FS}" +fi + + +cp "${SCRIPT_DIR}/../../../harness/tsffs-gcc-x86.h" "${SCRIPT_DIR}/tsffs-gcc-x86.h" +cp "${SCRIPT_DIR}/../../rsrc/minimal_boot_disk.craff" "${SCRIPT_DIR}/minimal_boot_disk.craff" + +ninja + +dd if=/dev/zero of=test.fs bs=1024 count=131072 +mkfs.fat test.fs +mcopy -i test.fs test ::test +"${CRAFF}" -o test.fs.craff test.fs \ No newline at end of file diff --git a/tests/rsrc/x86-user/minimal_boot_disk.craff b/tests/rsrc/x86-user/minimal_boot_disk.craff new file mode 100644 index 00000000..2488b728 --- /dev/null +++ b/tests/rsrc/x86-user/minimal_boot_disk.craff @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8ffab484ad42b567214be5a6a7245e2385a30964dd5438035a963ebc19126e36 +size 11505650 diff --git a/examples/tests/x86-user/test.c b/tests/rsrc/x86-user/test.c similarity index 97% rename from examples/tests/x86-user/test.c rename to tests/rsrc/x86-user/test.c index 704cb6e2..6a0e37a9 100644 --- a/examples/tests/x86-user/test.c +++ b/tests/rsrc/x86-user/test.c @@ -1,4 +1,4 @@ -// Copyright (C) 2023 Intel Corporation +// Copyright (C) 2024 Intel Corporation // SPDX-License-Identifier: Apache-2.0 #include diff --git a/tests/rsrc/x86-user/tsffs-gcc-riscv64.h b/tests/rsrc/x86-user/tsffs-gcc-riscv64.h new file mode 100644 index 00000000..24243dcc --- /dev/null +++ b/tests/rsrc/x86-user/tsffs-gcc-riscv64.h @@ -0,0 +1,42 @@ +#ifndef TSFFS_H +#define TSFFS_H + +/// TSFFS Magic Include + +// GCC EASM notes: +// - The stack pointer is required to be the same on exit to an asm block as it +// was on entry + +#define MAGIC_START (0x0001U) +#define MAGIC_STOP (0x0002U) + +#define __srai_extended(value, testcase_ptr, size_ptr) \ + __asm__ __volatile__("mv a0, %0; mv a1, %1; srai zero, zero, %2" \ + : \ + : "r"(testcase_ptr), "r"(size_ptr), "I"(value) \ + : "a0", "a1"); + +#define __srai(value) \ + __asm__ __volatile__("srai zero, zero, %0" : : "I"(value) :) + +#define __arch_harness_start(start, testcase_ptr, size_ptr) \ + do { \ + __srai_extended(start, testcase_ptr, size_ptr); \ + } while (0) + +#define __arch_harness_stop(stop) \ + do { \ + __srai(stop); \ + } while (0) + +#define HARNESS_START(testcase_ptr, size_ptr) \ + do { \ + __arch_harness_start(MAGIC_START, testcase_ptr, size_ptr); \ + } while (0) + +#define HARNESS_STOP() \ + do { \ + __arch_harness_stop(MAGIC_STOP); \ + } while (0) + +#endif // TSFFS_H \ No newline at end of file diff --git a/tests/rsrc/x86-user/tsffs-gcc-x86.h b/tests/rsrc/x86-user/tsffs-gcc-x86.h new file mode 100644 index 00000000..ba6a8053 --- /dev/null +++ b/tests/rsrc/x86-user/tsffs-gcc-x86.h @@ -0,0 +1,134 @@ +// Copyright (C) 2023 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 + +/// Definitions and macros for compiled-in harnessing of C and C++ target +/// software for the RISC-V (64-bit) architecture +/// +/// Example: +/// ```c +/// #include "tsffs-gcc-x86.h" +/// +/// int main() { +/// char buf[0x10]; +/// size_t size = 0x10; +/// size_t *size_ptr = &size; +/// HARNESS_START((char *)buf, size_ptr); +/// int retval = YourSpecialDecoder(buf, *size_ptr); +/// if (!retval) { +/// HARNESS_ASSERT(); +/// } else { +/// HARNESS_STOP(); +/// } +/// } +/// ``` + +#ifndef TSFFS_H +#define TSFFS_H + +/// Define common with LibFuzzer and other fuzzers to allow code that is +/// fuzzing-specific to be left in the codebase. See +/// https://llvm.org/docs/LibFuzzer.html#id35 for more information +#ifndef FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION +#define FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION (1) +#endif // FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION + +/// Magic value defined by SIMICS as the "leaf" value of a CPUID instruction +/// that is treated as a magic instruction. +#define MAGIC (0x4711U) +/// Default magic instruction `n` value to signal the TSFFS fuzzer to start the +/// fuzzing loop +#define MAGIC_START (0x0001U) +/// Default magic instruction `n` value to signal the TSFFS fuzzer to stop and +/// reset the fuzzing loop +#define MAGIC_STOP (0x0002U) +/// Default magic instruction `n` value to signal the TSFFS fuzzer that an error +/// has occurred and the testcase input should be saved as a solution +#define MAGIC_ASSERT (0x0003U) + +/// Alternative magic numbers that can be used for start and stop events in +/// conjunction with setting the magic number for each event via the SIMICS or +/// SIMICS Python script interface +#define MAGIC_ALT_0 (0x0004U) +#define MAGIC_ALT_1 (0x0005U) +#define MAGIC_ALT_2 (0x0006U) +#define MAGIC_ALT_3 (0x0007U) +#define MAGIC_ALT_4 (0x0008U) +#define MAGIC_ALT_5 (0x0009U) +#define MAGIC_ALT_6 (0x000aU) +#define MAGIC_ALT_7 (0x000bU) + +/// Invoke the magic instruction defined by SIMICS for the x86 architecture +/// (`cpuid`) with a specific value of `n`, after setting register `edi` to the +/// value of the pointer to the testcase and register `esi` to the value of the +/// pointer to the testcase size. These registers are accessed by the fuzzer and +/// are defined per-architecture. +#define __cpuid_extended2(value, inout_ptr_0, inout_ptr_1) \ + unsigned int _a __attribute__((unused)) = 0; \ + __asm__ __volatile__("cpuid" \ + : "=a"(_a) \ + : "a"(value), "D"(inout_ptr_0), "S"(inout_ptr_1) \ + : "ebx", "ecx", "edx"); + +/// Invoke the magic instruction defined by SIMICS for the x86 architecture +/// (`cpuid`) with a specific value of `n` +#define __cpuid(value) \ + unsigned int _a __attribute__((unused)) = 0; \ + __asm__ __volatile__("cpuid\n\t" \ + : "=a"(_a) \ + : "a"(value) \ + : "ebx", "ecx", "edx") + +/// Signal the fuzzer using a specific magic value `start` to start the fuzzing +/// loop at the point this macro is called. A snapshot will be taken when the +/// macro is called, and the maximum testcase size `*size_ptr` will be saved as +/// `max_testcase_size`. Each iteration of the fuzzing loop, the fuzzer input +/// (the "testcase") will be written to `*testcase_ptr` as if running +/// `memcpy(testcase_ptr, current_testcase, max_testcase_size)`, and the actual +/// size of the current testcase will be written to +/// `*size_ptr` as if running `*size_ptr = current_testcase_size`. +#define __arch_harness_start(start, testcase_ptr, size_ptr) \ + do { \ + unsigned int magic = (start << 0x10U) | MAGIC; \ + __cpuid_extended2(magic, testcase_ptr, size_ptr); \ + } while (0) + +/// Signal the fuzzer using the a specific magic value (`stop`) to stop and +/// reset to the beginning of the fuzzing loop with a "normal" stop status, +/// indicating no solution has occurred. +#define __arch_harness_stop(stop) \ + do { \ + unsigned int magic = (stop << 0x10U) | MAGIC; \ + __cpuid(magic); \ + } while (0) + +/// Signal the fuzzer using the default magic value to start the fuzzing loop at +/// the point this macro is called. A snapshot will be taken when the macro is +/// called, and the maximum testcase size `*size_ptr` will be saved as +/// `max_testcase_size`. Each iteration of the fuzzing loop, the fuzzer input +/// (the "testcase") will be written to +/// `*testcase_ptr` as if running `memcpy(testcase_ptr, current_testcase, +/// max_testcase_size)`, and the actual size of the current testcase will be +/// written to +/// `*size_ptr` as if running `*size_ptr = current_testcase_size`. +#define HARNESS_START(testcase_ptr, size_ptr) \ + do { \ + __arch_harness_start(MAGIC_START, testcase_ptr, size_ptr); \ + } while (0) + +/// Signal the fuzzer using the default magic value to stop and reset to the +/// beginning of the fuzzing loop with a "normal" stop status, indicating no +/// solution has occurred. +#define HARNESS_STOP() \ + do { \ + __arch_harness_stop(MAGIC_STOP); \ + } while (0) + +/// Signal the fuzzer using the default magic value to stop and reset to the +/// beginning of the fuzzing loop with a "solution" stop status, indicating some +/// custom error has occurred. +#define HARNESS_ASSERT() \ + do { \ + __arch_harness_stop(MAGIC_ASSERT); \ + } while (0) + +#endif // TSFFS_H \ No newline at end of file diff --git a/examples/tests/x86_64-breakpoint-uefi-edk2/.gitignore b/tests/rsrc/x86_64-breakpoint-uefi-edk2/.gitignore similarity index 100% rename from examples/tests/x86_64-breakpoint-uefi-edk2/.gitignore rename to tests/rsrc/x86_64-breakpoint-uefi-edk2/.gitignore diff --git a/examples/tests/x86_64-uefi-edk2/Dockerfile b/tests/rsrc/x86_64-breakpoint-uefi-edk2/Dockerfile similarity index 100% rename from examples/tests/x86_64-uefi-edk2/Dockerfile rename to tests/rsrc/x86_64-breakpoint-uefi-edk2/Dockerfile diff --git a/examples/tests/x86_64-breakpoint-uefi-edk2/build.ninja b/tests/rsrc/x86_64-breakpoint-uefi-edk2/build.ninja similarity index 74% rename from examples/tests/x86_64-breakpoint-uefi-edk2/build.ninja rename to tests/rsrc/x86_64-breakpoint-uefi-edk2/build.ninja index 5a8fd3e7..2be6d7e9 100644 --- a/examples/tests/x86_64-breakpoint-uefi-edk2/build.ninja +++ b/tests/rsrc/x86_64-breakpoint-uefi-edk2/build.ninja @@ -1,4 +1,4 @@ -# Copyright (C) 2023 Intel Corporation +# Copyright (C) 2024 Intel Corporation # SPDX-License-Identifier: Apache-2.0 rule runbuild diff --git a/examples/tests/x86_64-breakpoint-uefi-edk2/build.sh b/tests/rsrc/x86_64-breakpoint-uefi-edk2/build.sh similarity index 66% rename from examples/tests/x86_64-breakpoint-uefi-edk2/build.sh rename to tests/rsrc/x86_64-breakpoint-uefi-edk2/build.sh index e3bd18cc..e49d87f9 100755 --- a/examples/tests/x86_64-breakpoint-uefi-edk2/build.sh +++ b/tests/rsrc/x86_64-breakpoint-uefi-edk2/build.sh @@ -1,6 +1,6 @@ #!/bin/bash -# Copyright (C) 2023 Intel Corporation +# Copyright (C) 2024 Intel Corporation # SPDX-License-Identifier: Apache-2.0 # Build the HelloWorld.efi module and copy it into the resource directory for the example @@ -17,11 +17,9 @@ pushd "${SCRIPT_DIR}" || exit 1 cp "${SCRIPT_DIR}/../../../harness/tsffs-gcc-x86_64.h" "${SCRIPT_DIR}/src/tsffs-gcc-x86_64.h" cp "${SCRIPT_DIR}/../rsrc/minimal_boot_disk.craff" "${SCRIPT_DIR}/minimal_boot_disk.craff" -if [ ! -e "${SCRIPT_DIR}/test.efi" ]; then - docker build -t "${IMAGE_NAME}" -f "Dockerfile" . - docker create --name "${CONTAINER_NAME}" "${IMAGE_NAME}" - docker cp \ - "${CONTAINER_NAME}:/edk2/HelloWorld/Build/HelloWorld/DEBUG_GCC5/X64/HelloWorld.efi" \ - "${SCRIPT_DIR}/test.efi" - docker rm -f "${CONTAINER_NAME}" -fi +docker buildx build -t "${IMAGE_NAME}" -f "Dockerfile" . +docker create --name "${CONTAINER_NAME}" "${IMAGE_NAME}" +docker cp \ + "${CONTAINER_NAME}:/edk2/HelloWorld/Build/HelloWorld/DEBUG_GCC5/X64/HelloWorld.efi" \ + "${SCRIPT_DIR}/test.efi" +docker rm -f "${CONTAINER_NAME}" diff --git a/examples/tests/x86_64-uefi-edk2/src/.gitignore b/tests/rsrc/x86_64-breakpoint-uefi-edk2/src/.gitignore similarity index 100% rename from examples/tests/x86_64-uefi-edk2/src/.gitignore rename to tests/rsrc/x86_64-breakpoint-uefi-edk2/src/.gitignore diff --git a/examples/tests/x86_64-breakpoint-uefi-edk2/src/HelloWorld.c b/tests/rsrc/x86_64-breakpoint-uefi-edk2/src/HelloWorld.c similarity index 97% rename from examples/tests/x86_64-breakpoint-uefi-edk2/src/HelloWorld.c rename to tests/rsrc/x86_64-breakpoint-uefi-edk2/src/HelloWorld.c index 9cd24a61..8cb5b92b 100644 --- a/examples/tests/x86_64-breakpoint-uefi-edk2/src/HelloWorld.c +++ b/tests/rsrc/x86_64-breakpoint-uefi-edk2/src/HelloWorld.c @@ -1,4 +1,4 @@ -// Copyright (C) 2023 Intel Corporation +// Copyright (C) 2024 Intel Corporation // SPDX-License-Identifier: Apache-2.0 /** @file diff --git a/examples/tests/x86_64-uefi-edk2/src/HelloWorld.dsc b/tests/rsrc/x86_64-breakpoint-uefi-edk2/src/HelloWorld.dsc similarity index 100% rename from examples/tests/x86_64-uefi-edk2/src/HelloWorld.dsc rename to tests/rsrc/x86_64-breakpoint-uefi-edk2/src/HelloWorld.dsc diff --git a/examples/tests/x86_64-breakpoint-uefi-edk2/src/HelloWorld.inf b/tests/rsrc/x86_64-breakpoint-uefi-edk2/src/HelloWorld.inf similarity index 96% rename from examples/tests/x86_64-breakpoint-uefi-edk2/src/HelloWorld.inf rename to tests/rsrc/x86_64-breakpoint-uefi-edk2/src/HelloWorld.inf index d6148ebb..21c2c6c5 100755 --- a/examples/tests/x86_64-breakpoint-uefi-edk2/src/HelloWorld.inf +++ b/tests/rsrc/x86_64-breakpoint-uefi-edk2/src/HelloWorld.inf @@ -1,4 +1,4 @@ -# Copyright (C) 2023 Intel Corporation +# Copyright (C) 2024 Intel Corporation # SPDX-License-Identifier: Apache-2.0 [Defines] diff --git a/examples/tests/x86_64-uefi-edk2/src/HelloWorldExtra.uni b/tests/rsrc/x86_64-breakpoint-uefi-edk2/src/HelloWorldExtra.uni similarity index 100% rename from examples/tests/x86_64-uefi-edk2/src/HelloWorldExtra.uni rename to tests/rsrc/x86_64-breakpoint-uefi-edk2/src/HelloWorldExtra.uni diff --git a/examples/tests/x86_64-uefi-edk2/src/HelloWorldStr.uni b/tests/rsrc/x86_64-breakpoint-uefi-edk2/src/HelloWorldStr.uni similarity index 100% rename from examples/tests/x86_64-uefi-edk2/src/HelloWorldStr.uni rename to tests/rsrc/x86_64-breakpoint-uefi-edk2/src/HelloWorldStr.uni diff --git a/examples/tests/x86_64-uefi-edk2/src/PlatformBuild.py b/tests/rsrc/x86_64-breakpoint-uefi-edk2/src/PlatformBuild.py similarity index 98% rename from examples/tests/x86_64-uefi-edk2/src/PlatformBuild.py rename to tests/rsrc/x86_64-breakpoint-uefi-edk2/src/PlatformBuild.py index 6951f00a..8aff7ea4 100755 --- a/examples/tests/x86_64-uefi-edk2/src/PlatformBuild.py +++ b/tests/rsrc/x86_64-breakpoint-uefi-edk2/src/PlatformBuild.py @@ -1,4 +1,4 @@ -# Copyright (C) 2023 Intel Corporation +# Copyright (C) 2024 Intel Corporation # SPDX-License-Identifier: Apache-2.0 """ diff --git a/examples/tests/x86_64-uefi-edk2/src/tsffs-gcc-x86_64.h b/tests/rsrc/x86_64-breakpoint-uefi-edk2/src/tsffs-gcc-x86_64.h similarity index 98% rename from examples/tests/x86_64-uefi-edk2/src/tsffs-gcc-x86_64.h rename to tests/rsrc/x86_64-breakpoint-uefi-edk2/src/tsffs-gcc-x86_64.h index c2afe7ac..706f9946 100644 --- a/examples/tests/x86_64-uefi-edk2/src/tsffs-gcc-x86_64.h +++ b/tests/rsrc/x86_64-breakpoint-uefi-edk2/src/tsffs-gcc-x86_64.h @@ -1,3 +1,6 @@ +// Copyright (C) 2023 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 + /// Definitions and macros for compiled-in harnessing of C and C++ target /// software for the RISC-V (64-bit) architecture /// diff --git a/examples/tests/x86_64-crash-uefi/.gitignore b/tests/rsrc/x86_64-crash-uefi/.gitignore similarity index 100% rename from examples/tests/x86_64-crash-uefi/.gitignore rename to tests/rsrc/x86_64-crash-uefi/.gitignore diff --git a/examples/tests/x86_64-crash-uefi/build.ninja b/tests/rsrc/x86_64-crash-uefi/build.ninja similarity index 71% rename from examples/tests/x86_64-crash-uefi/build.ninja rename to tests/rsrc/x86_64-crash-uefi/build.ninja index 737be7ca..e649466d 100644 --- a/examples/tests/x86_64-crash-uefi/build.ninja +++ b/tests/rsrc/x86_64-crash-uefi/build.ninja @@ -1,4 +1,4 @@ -# Copyright (C) 2023 Intel Corporation +# Copyright (C) 2024 Intel Corporation # SPDX-License-Identifier: Apache-2.0 rule cc @@ -6,7 +6,7 @@ rule cc -mno-red-zone $cflags -c $in -o $out rule link - command = lld-link -filealign:16 -subsystem:efi_application -nodefaultlib -dll $ + command = lld -flavor link -filealign:16 -subsystem:efi_application -nodefaultlib -dll $ -entry:UefiMain $in -out:$out rule copy diff --git a/examples/tests/x86_64-uefi/build.sh b/tests/rsrc/x86_64-crash-uefi/build.sh similarity index 78% rename from examples/tests/x86_64-uefi/build.sh rename to tests/rsrc/x86_64-crash-uefi/build.sh index 16ae7ec0..bf1f8940 100755 --- a/examples/tests/x86_64-uefi/build.sh +++ b/tests/rsrc/x86_64-crash-uefi/build.sh @@ -1,5 +1,8 @@ #!/bin/bash +# Copyright (C) 2024 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + SCRIPT_DIR=$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" &>/dev/null && pwd) cp "${SCRIPT_DIR}/../../../harness/tsffs-gcc-x86_64.h" "${SCRIPT_DIR}/tsffs-gcc-x86_64.h" diff --git a/tests/rsrc/x86_64-crash-uefi/minimal_boot_disk.craff b/tests/rsrc/x86_64-crash-uefi/minimal_boot_disk.craff new file mode 100644 index 00000000..2488b728 --- /dev/null +++ b/tests/rsrc/x86_64-crash-uefi/minimal_boot_disk.craff @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8ffab484ad42b567214be5a6a7245e2385a30964dd5438035a963ebc19126e36 +size 11505650 diff --git a/examples/tests/x86_64-crash-uefi/test.c b/tests/rsrc/x86_64-crash-uefi/test.c similarity index 98% rename from examples/tests/x86_64-crash-uefi/test.c rename to tests/rsrc/x86_64-crash-uefi/test.c index 896abed7..d33221a8 100644 --- a/examples/tests/x86_64-crash-uefi/test.c +++ b/tests/rsrc/x86_64-crash-uefi/test.c @@ -1,4 +1,4 @@ -// Copyright (C) 2023 Intel Corporation +// Copyright (C) 2024 Intel Corporation // SPDX-License-Identifier: Apache-2.0 #include diff --git a/examples/tests/x86_64-breakpoint-uefi-edk2/src/tsffs-gcc-x86_64.h b/tests/rsrc/x86_64-crash-uefi/tsffs-gcc-x86_64.h similarity index 98% rename from examples/tests/x86_64-breakpoint-uefi-edk2/src/tsffs-gcc-x86_64.h rename to tests/rsrc/x86_64-crash-uefi/tsffs-gcc-x86_64.h index c2afe7ac..706f9946 100644 --- a/examples/tests/x86_64-breakpoint-uefi-edk2/src/tsffs-gcc-x86_64.h +++ b/tests/rsrc/x86_64-crash-uefi/tsffs-gcc-x86_64.h @@ -1,3 +1,6 @@ +// Copyright (C) 2023 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 + /// Definitions and macros for compiled-in harnessing of C and C++ target /// software for the RISC-V (64-bit) architecture /// diff --git a/examples/tests/x86_64-uefi-edk2/.gitignore b/tests/rsrc/x86_64-timeout-uefi-edk2/.gitignore similarity index 100% rename from examples/tests/x86_64-uefi-edk2/.gitignore rename to tests/rsrc/x86_64-timeout-uefi-edk2/.gitignore diff --git a/examples/tests/x86_64-timeout-uefi-edk2/Dockerfile b/tests/rsrc/x86_64-timeout-uefi-edk2/Dockerfile similarity index 100% rename from examples/tests/x86_64-timeout-uefi-edk2/Dockerfile rename to tests/rsrc/x86_64-timeout-uefi-edk2/Dockerfile diff --git a/examples/tests/x86_64-timeout-uefi-edk2/build.ninja b/tests/rsrc/x86_64-timeout-uefi-edk2/build.ninja similarity index 74% rename from examples/tests/x86_64-timeout-uefi-edk2/build.ninja rename to tests/rsrc/x86_64-timeout-uefi-edk2/build.ninja index 5a8fd3e7..2be6d7e9 100644 --- a/examples/tests/x86_64-timeout-uefi-edk2/build.ninja +++ b/tests/rsrc/x86_64-timeout-uefi-edk2/build.ninja @@ -1,4 +1,4 @@ -# Copyright (C) 2023 Intel Corporation +# Copyright (C) 2024 Intel Corporation # SPDX-License-Identifier: Apache-2.0 rule runbuild diff --git a/examples/tests/x86_64-uefi-edk2/build.sh b/tests/rsrc/x86_64-timeout-uefi-edk2/build.sh similarity index 66% rename from examples/tests/x86_64-uefi-edk2/build.sh rename to tests/rsrc/x86_64-timeout-uefi-edk2/build.sh index 51ad8f0b..64a2aed1 100755 --- a/examples/tests/x86_64-uefi-edk2/build.sh +++ b/tests/rsrc/x86_64-timeout-uefi-edk2/build.sh @@ -1,6 +1,6 @@ #!/bin/bash -# Copyright (C) 2023 Intel Corporation +# Copyright (C) 2024 Intel Corporation # SPDX-License-Identifier: Apache-2.0 # Build the HelloWorld.efi module and copy it into the resource directory for the example @@ -17,11 +17,9 @@ pushd "${SCRIPT_DIR}" || exit 1 cp "${SCRIPT_DIR}/../../../harness/tsffs-gcc-x86_64.h" "${SCRIPT_DIR}/src/tsffs-gcc-x86_64.h" cp "${SCRIPT_DIR}/../../rsrc/minimal_boot_disk.craff" "${SCRIPT_DIR}/minimal_boot_disk.craff" -if [ ! -e "${SCRIPT_DIR}/test.efi" ]; then - docker build -t "${IMAGE_NAME}" -f "Dockerfile" . - docker create --name "${CONTAINER_NAME}" "${IMAGE_NAME}" - docker cp \ - "${CONTAINER_NAME}:/edk2/HelloWorld/Build/HelloWorld/DEBUG_GCC5/X64/HelloWorld.efi" \ - "${SCRIPT_DIR}/test.efi" - docker rm -f "${CONTAINER_NAME}" -fi \ No newline at end of file +docker buildx build -t "${IMAGE_NAME}" -f "Dockerfile" . +docker create --name "${CONTAINER_NAME}" "${IMAGE_NAME}" +docker cp \ + "${CONTAINER_NAME}:/edk2/HelloWorld/Build/HelloWorld/DEBUG_GCC5/X64/HelloWorld.efi" \ + "${SCRIPT_DIR}/test.efi" +docker rm -f "${CONTAINER_NAME}" \ No newline at end of file diff --git a/tests/rsrc/x86_64-timeout-uefi-edk2/minimal_boot_disk.craff b/tests/rsrc/x86_64-timeout-uefi-edk2/minimal_boot_disk.craff new file mode 100644 index 00000000..2488b728 --- /dev/null +++ b/tests/rsrc/x86_64-timeout-uefi-edk2/minimal_boot_disk.craff @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8ffab484ad42b567214be5a6a7245e2385a30964dd5438035a963ebc19126e36 +size 11505650 diff --git a/examples/tests/x86_64-timeout-uefi-edk2/src/.gitignore b/tests/rsrc/x86_64-timeout-uefi-edk2/src/.gitignore similarity index 100% rename from examples/tests/x86_64-timeout-uefi-edk2/src/.gitignore rename to tests/rsrc/x86_64-timeout-uefi-edk2/src/.gitignore diff --git a/examples/tests/x86_64-timeout-uefi-edk2/src/HelloWorld.c b/tests/rsrc/x86_64-timeout-uefi-edk2/src/HelloWorld.c similarity index 97% rename from examples/tests/x86_64-timeout-uefi-edk2/src/HelloWorld.c rename to tests/rsrc/x86_64-timeout-uefi-edk2/src/HelloWorld.c index b7060b81..fe409b25 100644 --- a/examples/tests/x86_64-timeout-uefi-edk2/src/HelloWorld.c +++ b/tests/rsrc/x86_64-timeout-uefi-edk2/src/HelloWorld.c @@ -1,4 +1,4 @@ -// Copyright (C) 2023 Intel Corporation +// Copyright (C) 2024 Intel Corporation // SPDX-License-Identifier: Apache-2.0 /** @file diff --git a/examples/tests/x86_64-timeout-uefi-edk2/src/HelloWorld.dsc b/tests/rsrc/x86_64-timeout-uefi-edk2/src/HelloWorld.dsc similarity index 100% rename from examples/tests/x86_64-timeout-uefi-edk2/src/HelloWorld.dsc rename to tests/rsrc/x86_64-timeout-uefi-edk2/src/HelloWorld.dsc diff --git a/examples/tests/x86_64-timeout-uefi-edk2/src/HelloWorld.inf b/tests/rsrc/x86_64-timeout-uefi-edk2/src/HelloWorld.inf similarity index 96% rename from examples/tests/x86_64-timeout-uefi-edk2/src/HelloWorld.inf rename to tests/rsrc/x86_64-timeout-uefi-edk2/src/HelloWorld.inf index d6148ebb..21c2c6c5 100755 --- a/examples/tests/x86_64-timeout-uefi-edk2/src/HelloWorld.inf +++ b/tests/rsrc/x86_64-timeout-uefi-edk2/src/HelloWorld.inf @@ -1,4 +1,4 @@ -# Copyright (C) 2023 Intel Corporation +# Copyright (C) 2024 Intel Corporation # SPDX-License-Identifier: Apache-2.0 [Defines] diff --git a/examples/tests/x86_64-timeout-uefi-edk2/src/HelloWorldExtra.uni b/tests/rsrc/x86_64-timeout-uefi-edk2/src/HelloWorldExtra.uni similarity index 100% rename from examples/tests/x86_64-timeout-uefi-edk2/src/HelloWorldExtra.uni rename to tests/rsrc/x86_64-timeout-uefi-edk2/src/HelloWorldExtra.uni diff --git a/examples/tests/x86_64-timeout-uefi-edk2/src/HelloWorldStr.uni b/tests/rsrc/x86_64-timeout-uefi-edk2/src/HelloWorldStr.uni similarity index 100% rename from examples/tests/x86_64-timeout-uefi-edk2/src/HelloWorldStr.uni rename to tests/rsrc/x86_64-timeout-uefi-edk2/src/HelloWorldStr.uni diff --git a/examples/tests/x86_64-timeout-uefi-edk2/src/PlatformBuild.py b/tests/rsrc/x86_64-timeout-uefi-edk2/src/PlatformBuild.py similarity index 98% rename from examples/tests/x86_64-timeout-uefi-edk2/src/PlatformBuild.py rename to tests/rsrc/x86_64-timeout-uefi-edk2/src/PlatformBuild.py index 6951f00a..8aff7ea4 100755 --- a/examples/tests/x86_64-timeout-uefi-edk2/src/PlatformBuild.py +++ b/tests/rsrc/x86_64-timeout-uefi-edk2/src/PlatformBuild.py @@ -1,4 +1,4 @@ -# Copyright (C) 2023 Intel Corporation +# Copyright (C) 2024 Intel Corporation # SPDX-License-Identifier: Apache-2.0 """ diff --git a/tests/rsrc/x86_64-timeout-uefi-edk2/src/tsffs-gcc-x86_64.h b/tests/rsrc/x86_64-timeout-uefi-edk2/src/tsffs-gcc-x86_64.h new file mode 100644 index 00000000..706f9946 --- /dev/null +++ b/tests/rsrc/x86_64-timeout-uefi-edk2/src/tsffs-gcc-x86_64.h @@ -0,0 +1,134 @@ +// Copyright (C) 2023 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 + +/// Definitions and macros for compiled-in harnessing of C and C++ target +/// software for the RISC-V (64-bit) architecture +/// +/// Example: +/// ```c +/// #include "tsffs-gcc-x86_64.h" +/// +/// int main() { +/// char buf[0x10]; +/// size_t size = 0x10; +/// size_t *size_ptr = &size; +/// HARNESS_START((char *)buf, size_ptr); +/// int retval = YourSpecialDecoder(buf, *size_ptr); +/// if (!retval) { +/// HARNESS_ASSERT(); +/// } else { +/// HARNESS_STOP(); +/// } +/// } +/// ``` + +#ifndef TSFFS_H +#define TSFFS_H + +/// Define common with LibFuzzer and other fuzzers to allow code that is +/// fuzzing-specific to be left in the codebase. See +/// https://llvm.org/docs/LibFuzzer.html#id35 for more information +#ifndef FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION +#define FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION (1) +#endif // FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION + +/// Magic value defined by SIMICS as the "leaf" value of a CPUID instruction +/// that is treated as a magic instruction. +#define MAGIC (0x4711U) +/// Default magic instruction `n` value to signal the TSFFS fuzzer to start the +/// fuzzing loop +#define MAGIC_START (0x0001U) +/// Default magic instruction `n` value to signal the TSFFS fuzzer to stop and +/// reset the fuzzing loop +#define MAGIC_STOP (0x0002U) +/// Default magic instruction `n` value to signal the TSFFS fuzzer that an error +/// has occurred and the testcase input should be saved as a solution +#define MAGIC_ASSERT (0x0003U) + +/// Alternative magic numbers that can be used for start and stop events in +/// conjunction with setting the magic number for each event via the SIMICS or +/// SIMICS Python script interface +#define MAGIC_ALT_0 (0x0004U) +#define MAGIC_ALT_1 (0x0005U) +#define MAGIC_ALT_2 (0x0006U) +#define MAGIC_ALT_3 (0x0007U) +#define MAGIC_ALT_4 (0x0008U) +#define MAGIC_ALT_5 (0x0009U) +#define MAGIC_ALT_6 (0x000aU) +#define MAGIC_ALT_7 (0x000bU) + +/// Invoke the magic instruction defined by SIMICS for the x86-64 architecture +/// (`cpuid`) with a specific value of `n`, after setting register `rdi` to the +/// value of the pointer to the testcase and register `rsi` to the value of the +/// pointer to the testcase size. These registers are accessed by the fuzzer and +/// are defined per-architecture. +#define __cpuid_extended2(value, inout_ptr_0, inout_ptr_1) \ + unsigned int _a __attribute__((unused)) = 0; \ + __asm__ __volatile__("cpuid" \ + : "=a"(_a) \ + : "a"(value), "D"(inout_ptr_0), "S"(inout_ptr_1) \ + : "rbx", "rcx", "rdx"); + +/// Invoke the magic instruction defined by SIMICS for the x86-64 architecture +/// (`cpuid`) with a specific value of `n` +#define __cpuid(value) \ + unsigned int _a __attribute__((unused)) = 0; \ + __asm__ __volatile__("cpuid\n\t" \ + : "=a"(_a) \ + : "a"(value) \ + : "rbx", "rcx", "rdx") + +/// Signal the fuzzer using a specific magic value `start` to start the fuzzing +/// loop at the point this macro is called. A snapshot will be taken when the +/// macro is called, and the maximum testcase size `*size_ptr` will be saved as +/// `max_testcase_size`. Each iteration of the fuzzing loop, the fuzzer input +/// (the "testcase") will be written to `*testcase_ptr` as if running +/// `memcpy(testcase_ptr, current_testcase, max_testcase_size)`, and the actual +/// size of the current testcase will be written to +/// `*size_ptr` as if running `*size_ptr = current_testcase_size`. +#define __arch_harness_start(start, testcase_ptr, size_ptr) \ + do { \ + unsigned int magic = (start << 0x10U) | MAGIC; \ + __cpuid_extended2(magic, testcase_ptr, size_ptr); \ + } while (0) + +/// Signal the fuzzer using the a specific magic value (`stop`) to stop and +/// reset to the beginning of the fuzzing loop with a "normal" stop status, +/// indicating no solution has occurred. +#define __arch_harness_stop(stop) \ + do { \ + unsigned int magic = (stop << 0x10U) | MAGIC; \ + __cpuid(magic); \ + } while (0) + +/// Signal the fuzzer using the default magic value to start the fuzzing loop at +/// the point this macro is called. A snapshot will be taken when the macro is +/// called, and the maximum testcase size `*size_ptr` will be saved as +/// `max_testcase_size`. Each iteration of the fuzzing loop, the fuzzer input +/// (the "testcase") will be written to +/// `*testcase_ptr` as if running `memcpy(testcase_ptr, current_testcase, +/// max_testcase_size)`, and the actual size of the current testcase will be +/// written to +/// `*size_ptr` as if running `*size_ptr = current_testcase_size`. +#define HARNESS_START(testcase_ptr, size_ptr) \ + do { \ + __arch_harness_start(MAGIC_START, testcase_ptr, size_ptr); \ + } while (0) + +/// Signal the fuzzer using the default magic value to stop and reset to the +/// beginning of the fuzzing loop with a "normal" stop status, indicating no +/// solution has occurred. +#define HARNESS_STOP() \ + do { \ + __arch_harness_stop(MAGIC_STOP); \ + } while (0) + +/// Signal the fuzzer using the default magic value to stop and reset to the +/// beginning of the fuzzing loop with a "solution" stop status, indicating some +/// custom error has occurred. +#define HARNESS_ASSERT() \ + do { \ + __arch_harness_stop(MAGIC_ASSERT); \ + } while (0) + +#endif // TSFFS_H \ No newline at end of file diff --git a/examples/tests/x86_64-timeout-uefi-edk2/.gitignore b/tests/rsrc/x86_64-uefi-edk2/.gitignore similarity index 100% rename from examples/tests/x86_64-timeout-uefi-edk2/.gitignore rename to tests/rsrc/x86_64-uefi-edk2/.gitignore diff --git a/examples/tests/x86_64-breakpoint-uefi-edk2/Dockerfile b/tests/rsrc/x86_64-uefi-edk2/Dockerfile similarity index 100% rename from examples/tests/x86_64-breakpoint-uefi-edk2/Dockerfile rename to tests/rsrc/x86_64-uefi-edk2/Dockerfile diff --git a/examples/tests/x86_64-uefi-edk2/build.ninja b/tests/rsrc/x86_64-uefi-edk2/build.ninja similarity index 74% rename from examples/tests/x86_64-uefi-edk2/build.ninja rename to tests/rsrc/x86_64-uefi-edk2/build.ninja index 5a8fd3e7..2be6d7e9 100644 --- a/examples/tests/x86_64-uefi-edk2/build.ninja +++ b/tests/rsrc/x86_64-uefi-edk2/build.ninja @@ -1,4 +1,4 @@ -# Copyright (C) 2023 Intel Corporation +# Copyright (C) 2024 Intel Corporation # SPDX-License-Identifier: Apache-2.0 rule runbuild diff --git a/examples/tests/x86_64-timeout-uefi-edk2/build.sh b/tests/rsrc/x86_64-uefi-edk2/build.sh similarity index 66% rename from examples/tests/x86_64-timeout-uefi-edk2/build.sh rename to tests/rsrc/x86_64-uefi-edk2/build.sh index 51ad8f0b..64a2aed1 100755 --- a/examples/tests/x86_64-timeout-uefi-edk2/build.sh +++ b/tests/rsrc/x86_64-uefi-edk2/build.sh @@ -1,6 +1,6 @@ #!/bin/bash -# Copyright (C) 2023 Intel Corporation +# Copyright (C) 2024 Intel Corporation # SPDX-License-Identifier: Apache-2.0 # Build the HelloWorld.efi module and copy it into the resource directory for the example @@ -17,11 +17,9 @@ pushd "${SCRIPT_DIR}" || exit 1 cp "${SCRIPT_DIR}/../../../harness/tsffs-gcc-x86_64.h" "${SCRIPT_DIR}/src/tsffs-gcc-x86_64.h" cp "${SCRIPT_DIR}/../../rsrc/minimal_boot_disk.craff" "${SCRIPT_DIR}/minimal_boot_disk.craff" -if [ ! -e "${SCRIPT_DIR}/test.efi" ]; then - docker build -t "${IMAGE_NAME}" -f "Dockerfile" . - docker create --name "${CONTAINER_NAME}" "${IMAGE_NAME}" - docker cp \ - "${CONTAINER_NAME}:/edk2/HelloWorld/Build/HelloWorld/DEBUG_GCC5/X64/HelloWorld.efi" \ - "${SCRIPT_DIR}/test.efi" - docker rm -f "${CONTAINER_NAME}" -fi \ No newline at end of file +docker buildx build -t "${IMAGE_NAME}" -f "Dockerfile" . +docker create --name "${CONTAINER_NAME}" "${IMAGE_NAME}" +docker cp \ + "${CONTAINER_NAME}:/edk2/HelloWorld/Build/HelloWorld/DEBUG_GCC5/X64/HelloWorld.efi" \ + "${SCRIPT_DIR}/test.efi" +docker rm -f "${CONTAINER_NAME}" \ No newline at end of file diff --git a/tests/rsrc/x86_64-uefi-edk2/minimal_boot_disk.craff b/tests/rsrc/x86_64-uefi-edk2/minimal_boot_disk.craff new file mode 100644 index 00000000..2488b728 --- /dev/null +++ b/tests/rsrc/x86_64-uefi-edk2/minimal_boot_disk.craff @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8ffab484ad42b567214be5a6a7245e2385a30964dd5438035a963ebc19126e36 +size 11505650 diff --git a/examples/tests/x86_64-breakpoint-uefi-edk2/src/.gitignore b/tests/rsrc/x86_64-uefi-edk2/src/.gitignore similarity index 100% rename from examples/tests/x86_64-breakpoint-uefi-edk2/src/.gitignore rename to tests/rsrc/x86_64-uefi-edk2/src/.gitignore diff --git a/examples/tests/x86_64-uefi-edk2/src/HelloWorld.c b/tests/rsrc/x86_64-uefi-edk2/src/HelloWorld.c similarity index 97% rename from examples/tests/x86_64-uefi-edk2/src/HelloWorld.c rename to tests/rsrc/x86_64-uefi-edk2/src/HelloWorld.c index c15b959b..a6cdda78 100644 --- a/examples/tests/x86_64-uefi-edk2/src/HelloWorld.c +++ b/tests/rsrc/x86_64-uefi-edk2/src/HelloWorld.c @@ -1,4 +1,4 @@ -// Copyright (C) 2023 Intel Corporation +// Copyright (C) 2024 Intel Corporation // SPDX-License-Identifier: Apache-2.0 /** @file diff --git a/examples/tests/x86_64-breakpoint-uefi-edk2/src/HelloWorld.dsc b/tests/rsrc/x86_64-uefi-edk2/src/HelloWorld.dsc similarity index 100% rename from examples/tests/x86_64-breakpoint-uefi-edk2/src/HelloWorld.dsc rename to tests/rsrc/x86_64-uefi-edk2/src/HelloWorld.dsc diff --git a/examples/tests/x86_64-uefi-edk2/src/HelloWorld.inf b/tests/rsrc/x86_64-uefi-edk2/src/HelloWorld.inf similarity index 96% rename from examples/tests/x86_64-uefi-edk2/src/HelloWorld.inf rename to tests/rsrc/x86_64-uefi-edk2/src/HelloWorld.inf index d6148ebb..21c2c6c5 100755 --- a/examples/tests/x86_64-uefi-edk2/src/HelloWorld.inf +++ b/tests/rsrc/x86_64-uefi-edk2/src/HelloWorld.inf @@ -1,4 +1,4 @@ -# Copyright (C) 2023 Intel Corporation +# Copyright (C) 2024 Intel Corporation # SPDX-License-Identifier: Apache-2.0 [Defines] diff --git a/examples/tests/x86_64-breakpoint-uefi-edk2/src/HelloWorldExtra.uni b/tests/rsrc/x86_64-uefi-edk2/src/HelloWorldExtra.uni similarity index 100% rename from examples/tests/x86_64-breakpoint-uefi-edk2/src/HelloWorldExtra.uni rename to tests/rsrc/x86_64-uefi-edk2/src/HelloWorldExtra.uni diff --git a/examples/tests/x86_64-breakpoint-uefi-edk2/src/HelloWorldStr.uni b/tests/rsrc/x86_64-uefi-edk2/src/HelloWorldStr.uni similarity index 100% rename from examples/tests/x86_64-breakpoint-uefi-edk2/src/HelloWorldStr.uni rename to tests/rsrc/x86_64-uefi-edk2/src/HelloWorldStr.uni diff --git a/examples/tests/x86_64-breakpoint-uefi-edk2/src/PlatformBuild.py b/tests/rsrc/x86_64-uefi-edk2/src/PlatformBuild.py similarity index 98% rename from examples/tests/x86_64-breakpoint-uefi-edk2/src/PlatformBuild.py rename to tests/rsrc/x86_64-uefi-edk2/src/PlatformBuild.py index 6951f00a..8aff7ea4 100755 --- a/examples/tests/x86_64-breakpoint-uefi-edk2/src/PlatformBuild.py +++ b/tests/rsrc/x86_64-uefi-edk2/src/PlatformBuild.py @@ -1,4 +1,4 @@ -# Copyright (C) 2023 Intel Corporation +# Copyright (C) 2024 Intel Corporation # SPDX-License-Identifier: Apache-2.0 """ diff --git a/tests/rsrc/x86_64-uefi-edk2/src/tsffs-gcc-x86_64.h b/tests/rsrc/x86_64-uefi-edk2/src/tsffs-gcc-x86_64.h new file mode 100644 index 00000000..706f9946 --- /dev/null +++ b/tests/rsrc/x86_64-uefi-edk2/src/tsffs-gcc-x86_64.h @@ -0,0 +1,134 @@ +// Copyright (C) 2023 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 + +/// Definitions and macros for compiled-in harnessing of C and C++ target +/// software for the RISC-V (64-bit) architecture +/// +/// Example: +/// ```c +/// #include "tsffs-gcc-x86_64.h" +/// +/// int main() { +/// char buf[0x10]; +/// size_t size = 0x10; +/// size_t *size_ptr = &size; +/// HARNESS_START((char *)buf, size_ptr); +/// int retval = YourSpecialDecoder(buf, *size_ptr); +/// if (!retval) { +/// HARNESS_ASSERT(); +/// } else { +/// HARNESS_STOP(); +/// } +/// } +/// ``` + +#ifndef TSFFS_H +#define TSFFS_H + +/// Define common with LibFuzzer and other fuzzers to allow code that is +/// fuzzing-specific to be left in the codebase. See +/// https://llvm.org/docs/LibFuzzer.html#id35 for more information +#ifndef FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION +#define FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION (1) +#endif // FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION + +/// Magic value defined by SIMICS as the "leaf" value of a CPUID instruction +/// that is treated as a magic instruction. +#define MAGIC (0x4711U) +/// Default magic instruction `n` value to signal the TSFFS fuzzer to start the +/// fuzzing loop +#define MAGIC_START (0x0001U) +/// Default magic instruction `n` value to signal the TSFFS fuzzer to stop and +/// reset the fuzzing loop +#define MAGIC_STOP (0x0002U) +/// Default magic instruction `n` value to signal the TSFFS fuzzer that an error +/// has occurred and the testcase input should be saved as a solution +#define MAGIC_ASSERT (0x0003U) + +/// Alternative magic numbers that can be used for start and stop events in +/// conjunction with setting the magic number for each event via the SIMICS or +/// SIMICS Python script interface +#define MAGIC_ALT_0 (0x0004U) +#define MAGIC_ALT_1 (0x0005U) +#define MAGIC_ALT_2 (0x0006U) +#define MAGIC_ALT_3 (0x0007U) +#define MAGIC_ALT_4 (0x0008U) +#define MAGIC_ALT_5 (0x0009U) +#define MAGIC_ALT_6 (0x000aU) +#define MAGIC_ALT_7 (0x000bU) + +/// Invoke the magic instruction defined by SIMICS for the x86-64 architecture +/// (`cpuid`) with a specific value of `n`, after setting register `rdi` to the +/// value of the pointer to the testcase and register `rsi` to the value of the +/// pointer to the testcase size. These registers are accessed by the fuzzer and +/// are defined per-architecture. +#define __cpuid_extended2(value, inout_ptr_0, inout_ptr_1) \ + unsigned int _a __attribute__((unused)) = 0; \ + __asm__ __volatile__("cpuid" \ + : "=a"(_a) \ + : "a"(value), "D"(inout_ptr_0), "S"(inout_ptr_1) \ + : "rbx", "rcx", "rdx"); + +/// Invoke the magic instruction defined by SIMICS for the x86-64 architecture +/// (`cpuid`) with a specific value of `n` +#define __cpuid(value) \ + unsigned int _a __attribute__((unused)) = 0; \ + __asm__ __volatile__("cpuid\n\t" \ + : "=a"(_a) \ + : "a"(value) \ + : "rbx", "rcx", "rdx") + +/// Signal the fuzzer using a specific magic value `start` to start the fuzzing +/// loop at the point this macro is called. A snapshot will be taken when the +/// macro is called, and the maximum testcase size `*size_ptr` will be saved as +/// `max_testcase_size`. Each iteration of the fuzzing loop, the fuzzer input +/// (the "testcase") will be written to `*testcase_ptr` as if running +/// `memcpy(testcase_ptr, current_testcase, max_testcase_size)`, and the actual +/// size of the current testcase will be written to +/// `*size_ptr` as if running `*size_ptr = current_testcase_size`. +#define __arch_harness_start(start, testcase_ptr, size_ptr) \ + do { \ + unsigned int magic = (start << 0x10U) | MAGIC; \ + __cpuid_extended2(magic, testcase_ptr, size_ptr); \ + } while (0) + +/// Signal the fuzzer using the a specific magic value (`stop`) to stop and +/// reset to the beginning of the fuzzing loop with a "normal" stop status, +/// indicating no solution has occurred. +#define __arch_harness_stop(stop) \ + do { \ + unsigned int magic = (stop << 0x10U) | MAGIC; \ + __cpuid(magic); \ + } while (0) + +/// Signal the fuzzer using the default magic value to start the fuzzing loop at +/// the point this macro is called. A snapshot will be taken when the macro is +/// called, and the maximum testcase size `*size_ptr` will be saved as +/// `max_testcase_size`. Each iteration of the fuzzing loop, the fuzzer input +/// (the "testcase") will be written to +/// `*testcase_ptr` as if running `memcpy(testcase_ptr, current_testcase, +/// max_testcase_size)`, and the actual size of the current testcase will be +/// written to +/// `*size_ptr` as if running `*size_ptr = current_testcase_size`. +#define HARNESS_START(testcase_ptr, size_ptr) \ + do { \ + __arch_harness_start(MAGIC_START, testcase_ptr, size_ptr); \ + } while (0) + +/// Signal the fuzzer using the default magic value to stop and reset to the +/// beginning of the fuzzing loop with a "normal" stop status, indicating no +/// solution has occurred. +#define HARNESS_STOP() \ + do { \ + __arch_harness_stop(MAGIC_STOP); \ + } while (0) + +/// Signal the fuzzer using the default magic value to stop and reset to the +/// beginning of the fuzzing loop with a "solution" stop status, indicating some +/// custom error has occurred. +#define HARNESS_ASSERT() \ + do { \ + __arch_harness_stop(MAGIC_ASSERT); \ + } while (0) + +#endif // TSFFS_H \ No newline at end of file diff --git a/tests/rsrc/x86_64-uefi/.gitignore b/tests/rsrc/x86_64-uefi/.gitignore new file mode 100644 index 00000000..8a436a26 --- /dev/null +++ b/tests/rsrc/x86_64-uefi/.gitignore @@ -0,0 +1,6 @@ +.ninja_log +*.efi +*.lib +*.o +*.h +*.craff \ No newline at end of file diff --git a/examples/tests/x86_64-uefi/build.ninja b/tests/rsrc/x86_64-uefi/build.ninja similarity index 52% rename from examples/tests/x86_64-uefi/build.ninja rename to tests/rsrc/x86_64-uefi/build.ninja index 7ee83ebf..83053ce9 100644 --- a/examples/tests/x86_64-uefi/build.ninja +++ b/tests/rsrc/x86_64-uefi/build.ninja @@ -1,4 +1,4 @@ -# Copyright (C) 2023 Intel Corporation +# Copyright (C) 2024 Intel Corporation # SPDX-License-Identifier: Apache-2.0 rule cc @@ -6,7 +6,7 @@ rule cc -mno-red-zone $cflags -c $in -o $out rule link - command = lld-link -filealign:16 -subsystem:efi_application -nodefaultlib -dll $ + command = lld -flavor link -filealign:16 -subsystem:efi_application -nodefaultlib -dll $ -entry:UefiMain $in -out:$out rule copy @@ -15,3 +15,9 @@ rule copy build test.o: cc test.c cflags = -O0 build test.efi: link test.o +build test-fast.o: cc test-fast.c + cflags = -O0 +build test-fast.efi: link test-fast.o +build test-cov.o: cc test-cov.c + cflags = -O0 +build test-cov.efi: link test-cov.o diff --git a/examples/tests/x86_64-crash-uefi/build.sh b/tests/rsrc/x86_64-uefi/build.sh similarity index 78% rename from examples/tests/x86_64-crash-uefi/build.sh rename to tests/rsrc/x86_64-uefi/build.sh index 16ae7ec0..bf1f8940 100755 --- a/examples/tests/x86_64-crash-uefi/build.sh +++ b/tests/rsrc/x86_64-uefi/build.sh @@ -1,5 +1,8 @@ #!/bin/bash +# Copyright (C) 2024 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + SCRIPT_DIR=$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" &>/dev/null && pwd) cp "${SCRIPT_DIR}/../../../harness/tsffs-gcc-x86_64.h" "${SCRIPT_DIR}/tsffs-gcc-x86_64.h" diff --git a/tests/rsrc/x86_64-uefi/minimal_boot_disk.craff b/tests/rsrc/x86_64-uefi/minimal_boot_disk.craff new file mode 100644 index 00000000..2488b728 --- /dev/null +++ b/tests/rsrc/x86_64-uefi/minimal_boot_disk.craff @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8ffab484ad42b567214be5a6a7245e2385a30964dd5438035a963ebc19126e36 +size 11505650 diff --git a/tests/rsrc/x86_64-uefi/test-cov.c b/tests/rsrc/x86_64-uefi/test-cov.c new file mode 100644 index 00000000..b8a52e3f --- /dev/null +++ b/tests/rsrc/x86_64-uefi/test-cov.c @@ -0,0 +1,114 @@ +// Copyright (C) 2024 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 + +#include +#include + +#include "tsffs-gcc-x86_64.h" + +typedef struct EfiTableHeader { + uint64_t signature; + uint32_t revision; + uint32_t headerSize; + uint32_t crc32; + uint32_t reserved; +} EfiTableHeader; + +struct EfiSimpleTextOutputProtocol; + +typedef uint64_t (*EfiTextString)(struct EfiSimpleTextOutputProtocol *this, + int16_t *string); + +typedef struct EfiSimpleTextOutputProtocol { + uint64_t reset; + EfiTextString output_string; + uint64_t test_string; + uint64_t query_mode; + uint64_t set_mode; + uint64_t set_attribute; + uint64_t clear_screen; + uint64_t set_cursor_position; + uint64_t enable_cursor; + uint64_t mode; +} EfiSimpleTextOutputProtocol; + +typedef struct EfiSystemTable { + EfiTableHeader hdr; + int16_t *firmwareVendor; + uint32_t firmwareRevision; + void *consoleInHandle; + uint64_t conIn; + void *consoleOutHandle; + EfiSimpleTextOutputProtocol *conOut; + void *standardErrorHandle; + uint64_t stdErr; + uint64_t runtimeServices; + uint64_t bootServices; + uint64_t numberOfTableEntries; + uint64_t configurationTable; +} EfiSystemTable; + +const char hex[] = {'0', '1', '2', '3', '4', '5', '6', '7', + '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'}; +const char *password = "fuzzing!"; +const char *password2 = "!gnizzuf"; + +int Check(char *buffer, EfiSystemTable *SystemTable) { + if ((((char *)buffer)[0]) == password[0]) { + if ((((char *)buffer)[1]) == password[1]) { + if ((((char *)buffer)[2]) == password[2]) { + if ((((char *)buffer)[3]) == password[3]) { + if ((((char *)buffer)[4]) == password[4]) { + if ((((char *)buffer)[5]) == password[5]) { + if ((((char *)buffer)[6]) == password[6]) { + if ((((char *)buffer)[7]) == password[7]) { + SystemTable->conOut->output_string( + SystemTable->conOut, + (int16_t *)L"All characters were correct!\r\n"); + uint8_t *ptr = (uint8_t *)0xffffffffffffffff; + *ptr = 0; + } + } + } + } + } + } + } + } + + return 0; +} + +int Check2(char *buffer, EfiSystemTable *SystemTable) { + for (int i = 0; i < 8; i++) { + if (buffer[i] != password2[i]) { + return 1; + } + } + SystemTable->conOut->output_string( + SystemTable->conOut, (int16_t *)L"All characters were correct!!\r\n"); + uint8_t *ptr = (uint8_t *)0xffffffffffffffff; + *ptr = 0; + + return 0; +} + +// The entrypoint of our EFI application +int UefiMain(void *imageHandle, EfiSystemTable *SystemTable) { + // We have a size and a buffer of that size. The address of the buffer and the + // address of the size variable will be passed to the fuzzer. On the first + // start harness, the fuzzer will save the initial value of the size and the + // addresses of both variables. On each iteration of the fuzzer, up to the + // initial size bytes of fuzzer input data will be written to the buffer, and + // the current testcase size in bytes will be written to the size variable. + char buffer[8] = {'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A'}; + size_t size = sizeof(buffer); + HARNESS_START(buffer, &size); + + Check(buffer, SystemTable); + Check2(buffer, SystemTable); + + HARNESS_STOP(); + + return 0; +} \ No newline at end of file diff --git a/tests/rsrc/x86_64-uefi/test-fast.c b/tests/rsrc/x86_64-uefi/test-fast.c new file mode 100644 index 00000000..709a6b1c --- /dev/null +++ b/tests/rsrc/x86_64-uefi/test-fast.c @@ -0,0 +1,98 @@ +// Copyright (C) 2024 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 + +#include +#include + +#include "tsffs-gcc-x86_64.h" + +typedef struct EfiTableHeader { + uint64_t signature; + uint32_t revision; + uint32_t headerSize; + uint32_t crc32; + uint32_t reserved; +} EfiTableHeader; + +struct EfiSimpleTextOutputProtocol; + +typedef uint64_t (*EfiTextString)(struct EfiSimpleTextOutputProtocol *this, + int16_t *string); + +typedef struct EfiSimpleTextOutputProtocol { + uint64_t reset; + EfiTextString output_string; + uint64_t test_string; + uint64_t query_mode; + uint64_t set_mode; + uint64_t set_attribute; + uint64_t clear_screen; + uint64_t set_cursor_position; + uint64_t enable_cursor; + uint64_t mode; +} EfiSimpleTextOutputProtocol; + +typedef struct EfiSystemTable { + EfiTableHeader hdr; + int16_t *firmwareVendor; + uint32_t firmwareRevision; + void *consoleInHandle; + uint64_t conIn; + void *consoleOutHandle; + EfiSimpleTextOutputProtocol *conOut; + void *standardErrorHandle; + uint64_t stdErr; + uint64_t runtimeServices; + uint64_t bootServices; + uint64_t numberOfTableEntries; + uint64_t configurationTable; +} EfiSystemTable; + +const char hex[] = {'0', '1', '2', '3', '4', '5', '6', '7', + '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'}; +const char *password = "fuzzing!"; + +int Check(char *buffer, EfiSystemTable *SystemTable) { + if ((((char *)buffer)[0]) == password[0]) { + if ((((char *)buffer)[1]) == password[1]) { + if ((((char *)buffer)[2]) == password[2]) { + if ((((char *)buffer)[3]) == password[3]) { + if ((((char *)buffer)[4]) == password[4]) { + if ((((char *)buffer)[5]) == password[5]) { + if ((((char *)buffer)[6]) == password[6]) { + if ((((char *)buffer)[7]) == password[7]) { + SystemTable->conOut->output_string( + SystemTable->conOut, + (int16_t *)L"All characters were correct!\r\n"); + uint8_t *ptr = (uint8_t *)0xffffffffffffffff; + *ptr = 0; + } + } + } + } + } + } + } + } + + return 0; +} + +// The entrypoint of our EFI application +int UefiMain(void *imageHandle, EfiSystemTable *SystemTable) { + // We have a size and a buffer of that size. The address of the buffer and the + // address of the size variable will be passed to the fuzzer. On the first + // start harness, the fuzzer will save the initial value of the size and the + // addresses of both variables. On each iteration of the fuzzer, up to the + // initial size bytes of fuzzer input data will be written to the buffer, and + // the current testcase size in bytes will be written to the size variable. + char buffer[8] = {'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A'}; + size_t size = sizeof(buffer); + HARNESS_START(buffer, &size); + + Check(buffer, SystemTable); + + HARNESS_STOP(); + + return 0; +} \ No newline at end of file diff --git a/examples/tests/x86_64-uefi/test.c b/tests/rsrc/x86_64-uefi/test.c similarity index 98% rename from examples/tests/x86_64-uefi/test.c rename to tests/rsrc/x86_64-uefi/test.c index 215fcaaf..b6f9d442 100644 --- a/examples/tests/x86_64-uefi/test.c +++ b/tests/rsrc/x86_64-uefi/test.c @@ -1,4 +1,4 @@ -// Copyright (C) 2023 Intel Corporation +// Copyright (C) 2024 Intel Corporation // SPDX-License-Identifier: Apache-2.0 #include diff --git a/tests/rsrc/x86_64-uefi/tsffs-gcc-x86_64.h b/tests/rsrc/x86_64-uefi/tsffs-gcc-x86_64.h new file mode 100644 index 00000000..706f9946 --- /dev/null +++ b/tests/rsrc/x86_64-uefi/tsffs-gcc-x86_64.h @@ -0,0 +1,134 @@ +// Copyright (C) 2023 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 + +/// Definitions and macros for compiled-in harnessing of C and C++ target +/// software for the RISC-V (64-bit) architecture +/// +/// Example: +/// ```c +/// #include "tsffs-gcc-x86_64.h" +/// +/// int main() { +/// char buf[0x10]; +/// size_t size = 0x10; +/// size_t *size_ptr = &size; +/// HARNESS_START((char *)buf, size_ptr); +/// int retval = YourSpecialDecoder(buf, *size_ptr); +/// if (!retval) { +/// HARNESS_ASSERT(); +/// } else { +/// HARNESS_STOP(); +/// } +/// } +/// ``` + +#ifndef TSFFS_H +#define TSFFS_H + +/// Define common with LibFuzzer and other fuzzers to allow code that is +/// fuzzing-specific to be left in the codebase. See +/// https://llvm.org/docs/LibFuzzer.html#id35 for more information +#ifndef FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION +#define FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION (1) +#endif // FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION + +/// Magic value defined by SIMICS as the "leaf" value of a CPUID instruction +/// that is treated as a magic instruction. +#define MAGIC (0x4711U) +/// Default magic instruction `n` value to signal the TSFFS fuzzer to start the +/// fuzzing loop +#define MAGIC_START (0x0001U) +/// Default magic instruction `n` value to signal the TSFFS fuzzer to stop and +/// reset the fuzzing loop +#define MAGIC_STOP (0x0002U) +/// Default magic instruction `n` value to signal the TSFFS fuzzer that an error +/// has occurred and the testcase input should be saved as a solution +#define MAGIC_ASSERT (0x0003U) + +/// Alternative magic numbers that can be used for start and stop events in +/// conjunction with setting the magic number for each event via the SIMICS or +/// SIMICS Python script interface +#define MAGIC_ALT_0 (0x0004U) +#define MAGIC_ALT_1 (0x0005U) +#define MAGIC_ALT_2 (0x0006U) +#define MAGIC_ALT_3 (0x0007U) +#define MAGIC_ALT_4 (0x0008U) +#define MAGIC_ALT_5 (0x0009U) +#define MAGIC_ALT_6 (0x000aU) +#define MAGIC_ALT_7 (0x000bU) + +/// Invoke the magic instruction defined by SIMICS for the x86-64 architecture +/// (`cpuid`) with a specific value of `n`, after setting register `rdi` to the +/// value of the pointer to the testcase and register `rsi` to the value of the +/// pointer to the testcase size. These registers are accessed by the fuzzer and +/// are defined per-architecture. +#define __cpuid_extended2(value, inout_ptr_0, inout_ptr_1) \ + unsigned int _a __attribute__((unused)) = 0; \ + __asm__ __volatile__("cpuid" \ + : "=a"(_a) \ + : "a"(value), "D"(inout_ptr_0), "S"(inout_ptr_1) \ + : "rbx", "rcx", "rdx"); + +/// Invoke the magic instruction defined by SIMICS for the x86-64 architecture +/// (`cpuid`) with a specific value of `n` +#define __cpuid(value) \ + unsigned int _a __attribute__((unused)) = 0; \ + __asm__ __volatile__("cpuid\n\t" \ + : "=a"(_a) \ + : "a"(value) \ + : "rbx", "rcx", "rdx") + +/// Signal the fuzzer using a specific magic value `start` to start the fuzzing +/// loop at the point this macro is called. A snapshot will be taken when the +/// macro is called, and the maximum testcase size `*size_ptr` will be saved as +/// `max_testcase_size`. Each iteration of the fuzzing loop, the fuzzer input +/// (the "testcase") will be written to `*testcase_ptr` as if running +/// `memcpy(testcase_ptr, current_testcase, max_testcase_size)`, and the actual +/// size of the current testcase will be written to +/// `*size_ptr` as if running `*size_ptr = current_testcase_size`. +#define __arch_harness_start(start, testcase_ptr, size_ptr) \ + do { \ + unsigned int magic = (start << 0x10U) | MAGIC; \ + __cpuid_extended2(magic, testcase_ptr, size_ptr); \ + } while (0) + +/// Signal the fuzzer using the a specific magic value (`stop`) to stop and +/// reset to the beginning of the fuzzing loop with a "normal" stop status, +/// indicating no solution has occurred. +#define __arch_harness_stop(stop) \ + do { \ + unsigned int magic = (stop << 0x10U) | MAGIC; \ + __cpuid(magic); \ + } while (0) + +/// Signal the fuzzer using the default magic value to start the fuzzing loop at +/// the point this macro is called. A snapshot will be taken when the macro is +/// called, and the maximum testcase size `*size_ptr` will be saved as +/// `max_testcase_size`. Each iteration of the fuzzing loop, the fuzzer input +/// (the "testcase") will be written to +/// `*testcase_ptr` as if running `memcpy(testcase_ptr, current_testcase, +/// max_testcase_size)`, and the actual size of the current testcase will be +/// written to +/// `*size_ptr` as if running `*size_ptr = current_testcase_size`. +#define HARNESS_START(testcase_ptr, size_ptr) \ + do { \ + __arch_harness_start(MAGIC_START, testcase_ptr, size_ptr); \ + } while (0) + +/// Signal the fuzzer using the default magic value to stop and reset to the +/// beginning of the fuzzing loop with a "normal" stop status, indicating no +/// solution has occurred. +#define HARNESS_STOP() \ + do { \ + __arch_harness_stop(MAGIC_STOP); \ + } while (0) + +/// Signal the fuzzer using the default magic value to stop and reset to the +/// beginning of the fuzzing loop with a "solution" stop status, indicating some +/// custom error has occurred. +#define HARNESS_ASSERT() \ + do { \ + __arch_harness_stop(MAGIC_ASSERT); \ + } while (0) + +#endif // TSFFS_H \ No newline at end of file diff --git a/tests/x86_64_edk2_magic.rs b/tests/x86_64_edk2_magic.rs new file mode 100644 index 00000000..25fd0131 --- /dev/null +++ b/tests/x86_64_edk2_magic.rs @@ -0,0 +1,77 @@ +// Copyright (C) 2024 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 + +use anyhow::Result; +use indoc::indoc; +use ispm_wrapper::data::ProjectPackage; +use simics_test::TestEnvSpec; +use std::path::PathBuf; + +#[test] +#[cfg_attr(miri, ignore)] +fn test_x86_64_edk2_magic() -> Result<()> { + let output = TestEnvSpec::builder() + .name("test_x86_64_edk2_magic") + .package_crates([PathBuf::from(env!("CARGO_MANIFEST_DIR"))]) + .packages([ + ProjectPackage::builder() + .package_number(1000) + .version("latest") + .build(), + ProjectPackage::builder() + .package_number(2096) + .version("latest") + .build(), + ProjectPackage::builder() + .package_number(8112) + .version("latest") + .build(), + ]) + .cargo_target_tmpdir(env!("CARGO_TARGET_TMPDIR")) + .directories([PathBuf::from(env!("CARGO_MANIFEST_DIR")) + .join("tests") + .join("rsrc") + .join("x86_64-uefi-edk2")]) + .build() + .to_env()? + .test(indoc! {r#" + load-module tsffs + init-tsffs + + @tsffs.log_level = 2 + @tsffs.start_on_harness = True + @tsffs.stop_on_harness = True + @tsffs.timeout = 3.0 + @tsffs.exceptions = [14, 6] + @tsffs.generate_random_corpus = True + @tsffs.iteration_limit = 1000 + @tsffs.use_snapshots = True + + load-target "qsp-x86/uefi-shell" namespace = qsp machine:hardware:storage:disk0:image = "minimal_boot_disk.craff" + + script-branch { + bp.time.wait-for seconds = 15 + qsp.serconsole.con.input "\n" + bp.time.wait-for seconds = .5 + qsp.serconsole.con.input "FS0:\n" + bp.time.wait-for seconds = .5 + local $manager = (start-agent-manager) + qsp.serconsole.con.input ("SimicsAgent.efi --download " + (lookup-file "%simics%/test.efi") + "\n") + bp.time.wait-for seconds = .5 + qsp.serconsole.con.input "test.efi\n" + } + + script-branch { + bp.time.wait-for seconds = 240 + quit 1 + } + + run + "#})?; + + let output_str = String::from_utf8_lossy(&output.stdout); + + println!("{output_str}"); + + Ok(()) +} diff --git a/tests/x86_64_edk2_timeout.rs b/tests/x86_64_edk2_timeout.rs new file mode 100644 index 00000000..b2306d26 --- /dev/null +++ b/tests/x86_64_edk2_timeout.rs @@ -0,0 +1,77 @@ +// Copyright (C) 2024 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 + +use anyhow::Result; +use indoc::indoc; +use ispm_wrapper::data::ProjectPackage; +use simics_test::TestEnvSpec; +use std::path::PathBuf; + +#[test] +#[cfg_attr(miri, ignore)] +fn test_x86_64_edk2_timeout() -> Result<()> { + let output = TestEnvSpec::builder() + .name("test_x86_64_edk2_timeout") + .package_crates([PathBuf::from(env!("CARGO_MANIFEST_DIR"))]) + .packages([ + ProjectPackage::builder() + .package_number(1000) + .version("latest") + .build(), + ProjectPackage::builder() + .package_number(2096) + .version("latest") + .build(), + ProjectPackage::builder() + .package_number(8112) + .version("latest") + .build(), + ]) + .cargo_target_tmpdir(env!("CARGO_TARGET_TMPDIR")) + .directories([PathBuf::from(env!("CARGO_MANIFEST_DIR")) + .join("tests") + .join("rsrc") + .join("x86_64-timeout-uefi-edk2")]) + .build() + .to_env()? + .test(indoc! {r#" + load-module tsffs + init-tsffs + + @tsffs.log_level = 2 + @tsffs.start_on_harness = True + @tsffs.stop_on_harness = True + @tsffs.timeout = 3.0 + @tsffs.exceptions = [14] + @tsffs.generate_random_corpus = True + @tsffs.iteration_limit = 30 + @tsffs.use_snapshots = True + + load-target "qsp-x86/uefi-shell" namespace = qsp machine:hardware:storage:disk0:image = "minimal_boot_disk.craff" + + script-branch { + bp.time.wait-for seconds = 15 + qsp.serconsole.con.input "\n" + bp.time.wait-for seconds = .5 + qsp.serconsole.con.input "FS0:\n" + bp.time.wait-for seconds = .5 + local $manager = (start-agent-manager) + qsp.serconsole.con.input ("SimicsAgent.efi --download " + (lookup-file "%simics%/test.efi") + "\n") + bp.time.wait-for seconds = .5 + qsp.serconsole.con.input "test.efi\n" + } + + script-branch { + bp.time.wait-for seconds = 240 + quit 1 + } + + run + "#})?; + + let output_str = String::from_utf8_lossy(&output.stdout); + + println!("{output_str}"); + + Ok(()) +} diff --git a/tests/x86_64_magic.rs b/tests/x86_64_magic.rs new file mode 100644 index 00000000..48726ec3 --- /dev/null +++ b/tests/x86_64_magic.rs @@ -0,0 +1,77 @@ +// Copyright (C) 2024 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 + +use anyhow::Result; +use indoc::indoc; +use ispm_wrapper::data::ProjectPackage; +use simics_test::TestEnvSpec; +use std::path::PathBuf; + +#[test] +#[cfg_attr(miri, ignore)] +fn test_x86_64_magic() -> Result<()> { + let output = TestEnvSpec::builder() + .name("test_x86_64_magic") + .package_crates([PathBuf::from(env!("CARGO_MANIFEST_DIR"))]) + .packages([ + ProjectPackage::builder() + .package_number(1000) + .version("latest") + .build(), + ProjectPackage::builder() + .package_number(2096) + .version("latest") + .build(), + ProjectPackage::builder() + .package_number(8112) + .version("latest") + .build(), + ]) + .cargo_target_tmpdir(env!("CARGO_TARGET_TMPDIR")) + .directories([PathBuf::from(env!("CARGO_MANIFEST_DIR")) + .join("tests") + .join("rsrc") + .join("x86_64-uefi")]) + .build() + .to_env()? + .test(indoc! {r#" + load-module tsffs + init-tsffs + + @tsffs.log_level = 2 + @tsffs.start_on_harness = True + @tsffs.stop_on_harness = True + @tsffs.timeout = 3.0 + @tsffs.exceptions = [14] + @tsffs.generate_random_corpus = True + @tsffs.iteration_limit = 1000 + @tsffs.use_snapshots = True + + load-target "qsp-x86/uefi-shell" namespace = qsp machine:hardware:storage:disk0:image = "minimal_boot_disk.craff" + + script-branch { + bp.time.wait-for seconds = 15 + qsp.serconsole.con.input "\n" + bp.time.wait-for seconds = .5 + qsp.serconsole.con.input "FS0:\n" + bp.time.wait-for seconds = .5 + local $manager = (start-agent-manager) + qsp.serconsole.con.input ("SimicsAgent.efi --download " + (lookup-file "%simics%/test.efi") + "\n") + bp.time.wait-for seconds = .5 + qsp.serconsole.con.input "test.efi\n" + } + + script-branch { + bp.time.wait-for seconds = 240 + quit 1 + } + + run + "#})?; + + let output_str = String::from_utf8_lossy(&output.stdout); + + println!("{output_str}"); + + Ok(()) +} diff --git a/tests/x86_64_magic_apitest.rs b/tests/x86_64_magic_apitest.rs new file mode 100644 index 00000000..f1b1cfb3 --- /dev/null +++ b/tests/x86_64_magic_apitest.rs @@ -0,0 +1,96 @@ +// Copyright (C) 2024 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 + +use anyhow::Result; +use indoc::indoc; +use ispm_wrapper::data::ProjectPackage; +use simics_test::TestEnvSpec; +use std::path::PathBuf; + +#[test] +#[cfg_attr(miri, ignore)] +fn test_x86_64_magic_apitest() -> Result<()> { + let output = TestEnvSpec::builder() + .name("test_x86_64_magic_apitest") + .package_crates([PathBuf::from(env!("CARGO_MANIFEST_DIR"))]) + .packages([ + ProjectPackage::builder() + .package_number(1000) + .version("latest") + .build(), + ProjectPackage::builder() + .package_number(2096) + .version("latest") + .build(), + ProjectPackage::builder() + .package_number(8112) + .version("latest") + .build(), + ]) + .cargo_target_tmpdir(env!("CARGO_TARGET_TMPDIR")) + .directories([PathBuf::from(env!("CARGO_MANIFEST_DIR")) + .join("tests") + .join("rsrc") + .join("x86_64-uefi")]) + .build() + .to_env()? + .test(indoc! {r#" + load-module tsffs + init-tsffs + + @tsffs.log_level = 2 + + @tsffs.all_breakpoints_are_solutions = True + @tsffs.all_breakpoints_are_solutions = False + @tsffs.all_exceptions_are_solutions = True + @tsffs.all_exceptions_are_solutions = False + @tsffs.exceptions = [14] + @tsffs.exceptions.remove(14) + @tsffs.exceptions = [14] + @tsffs.breakpoints = [1] + @tsffs.breakpoints.remove(1) + @tsffs.timeout = 3.0 + @tsffs.start_on_harness = True + @tsffs.stop_on_harness = True + @tsffs.use_snapshots = True + @tsffs.magic_start = 1 + @tsffs.magic_stop = 2 + @tsffs.magic_assert = 3 + @tsffs.iteration_limit = 100 + @tsffs.initial_random_corpus_size = 32 + @tsffs.corpus_directory = SIM_lookup_file("%simics%") + "/corpus" + @tsffs.solutions_directory = SIM_lookup_file("%simics%") + "/solutions" + @tsffs.generate_random_corpus = True + @tsffs.cmplog = True + @tsffs.coverage_reporting = True + @tsffs.token_executables += [SIM_lookup_file("%simics%/test.efi")] + @tsffs.pre_snapshot_checkpoint = False + + load-target "qsp-x86/uefi-shell" namespace = qsp machine:hardware:storage:disk0:image = "minimal_boot_disk.craff" + + script-branch { + bp.time.wait-for seconds = 15 + qsp.serconsole.con.input "\n" + bp.time.wait-for seconds = .5 + qsp.serconsole.con.input "FS0:\n" + bp.time.wait-for seconds = .5 + local $manager = (start-agent-manager) + qsp.serconsole.con.input ("SimicsAgent.efi --download " + (lookup-file "%simics%/test.efi") + "\n") + bp.time.wait-for seconds = .5 + qsp.serconsole.con.input "test.efi\n" + } + + script-branch { + bp.time.wait-for seconds = 240 + quit 1 + } + + run + "#})?; + + let output_str = String::from_utf8_lossy(&output.stdout); + + println!("{output_str}"); + + Ok(()) +} diff --git a/tests/x86_64_magic_crash.rs b/tests/x86_64_magic_crash.rs new file mode 100644 index 00000000..800111a0 --- /dev/null +++ b/tests/x86_64_magic_crash.rs @@ -0,0 +1,77 @@ +// Copyright (C) 2024 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 + +use anyhow::Result; +use indoc::indoc; +use ispm_wrapper::data::ProjectPackage; +use simics_test::TestEnvSpec; +use std::path::PathBuf; + +#[test] +#[cfg_attr(miri, ignore)] +fn test_x86_64_magic_crash() -> Result<()> { + let output = TestEnvSpec::builder() + .name("test_x86_64_magic_crash") + .package_crates([PathBuf::from(env!("CARGO_MANIFEST_DIR"))]) + .packages([ + ProjectPackage::builder() + .package_number(1000) + .version("latest") + .build(), + ProjectPackage::builder() + .package_number(2096) + .version("latest") + .build(), + ProjectPackage::builder() + .package_number(8112) + .version("latest") + .build(), + ]) + .cargo_target_tmpdir(env!("CARGO_TARGET_TMPDIR")) + .directories([PathBuf::from(env!("CARGO_MANIFEST_DIR")) + .join("tests") + .join("rsrc") + .join("x86_64-crash-uefi")]) + .build() + .to_env()? + .test(indoc! {r#" + load-module tsffs + init-tsffs + + @tsffs.log_level = 2 + @tsffs.start_on_harness = True + @tsffs.stop_on_harness = True + @tsffs.timeout = 3.0 + @tsffs.exceptions = [14] + @tsffs.generate_random_corpus = True + @tsffs.iteration_limit = 100 + @tsffs.use_snapshots = True + + load-target "qsp-x86/uefi-shell" namespace = qsp machine:hardware:storage:disk0:image = "minimal_boot_disk.craff" + + script-branch { + bp.time.wait-for seconds = 15 + qsp.serconsole.con.input "\n" + bp.time.wait-for seconds = .5 + qsp.serconsole.con.input "FS0:\n" + bp.time.wait-for seconds = .5 + local $manager = (start-agent-manager) + qsp.serconsole.con.input ("SimicsAgent.efi --download " + (lookup-file "%simics%/test.efi") + "\n") + bp.time.wait-for seconds = .5 + qsp.serconsole.con.input "test.efi\n" + } + + script-branch { + bp.time.wait-for seconds = 240 + quit 1 + } + + run + "#})?; + + let output_str = String::from_utf8_lossy(&output.stdout); + + println!("{output_str}"); + + Ok(()) +} diff --git a/tests/x86_64_magic_reporting.rs b/tests/x86_64_magic_reporting.rs new file mode 100644 index 00000000..f6fb4e70 --- /dev/null +++ b/tests/x86_64_magic_reporting.rs @@ -0,0 +1,79 @@ +// Copyright (C) 2024 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 + +use anyhow::Result; +use indoc::indoc; +use ispm_wrapper::data::ProjectPackage; +use simics_test::TestEnvSpec; +use std::path::PathBuf; + +#[test] +#[cfg_attr(miri, ignore)] +fn test_x86_64_magic_reporting() -> Result<()> { + let output = TestEnvSpec::builder() + .name("test_x86_64_magic_reporting") + .package_crates([PathBuf::from(env!("CARGO_MANIFEST_DIR"))]) + .packages([ + ProjectPackage::builder() + .package_number(1000) + .version("latest") + .build(), + ProjectPackage::builder() + .package_number(2096) + .version("latest") + .build(), + ProjectPackage::builder() + .package_number(8112) + .version("latest") + .build(), + ]) + .cargo_target_tmpdir(env!("CARGO_TARGET_TMPDIR")) + .directories([PathBuf::from(env!("CARGO_MANIFEST_DIR")) + .join("tests") + .join("rsrc") + .join("x86_64-uefi")]) + .build() + .to_env()? + .test(indoc! {r#" + load-module tsffs + init-tsffs + + @tsffs.log_level = 2 + @tsffs.start_on_harness = True + @tsffs.stop_on_harness = True + @tsffs.timeout = 3.0 + @tsffs.exceptions = [14] + @tsffs.generate_random_corpus = True + @tsffs.iteration_limit = 100 + @tsffs.use_snapshots = True + @tsffs.coverage_reporting = True + @tsffs.corpus_directory = "%simics%/corpus2" + + load-target "qsp-x86/uefi-shell" namespace = qsp machine:hardware:storage:disk0:image = "minimal_boot_disk.craff" + + script-branch { + bp.time.wait-for seconds = 15 + qsp.serconsole.con.input "\n" + bp.time.wait-for seconds = .5 + qsp.serconsole.con.input "FS0:\n" + bp.time.wait-for seconds = .5 + local $manager = (start-agent-manager) + qsp.serconsole.con.input ("SimicsAgent.efi --download " + (lookup-file "%simics%/test-cov.efi") + "\n") + bp.time.wait-for seconds = .5 + qsp.serconsole.con.input "test-cov.efi\n" + } + + script-branch { + bp.time.wait-for seconds = 240 + quit 1 + } + + run + "#})?; + + let output_str = String::from_utf8_lossy(&output.stdout); + + println!("{output_str}"); + + Ok(()) +} diff --git a/tests/x86_64_magic_speedtest.rs b/tests/x86_64_magic_speedtest.rs new file mode 100644 index 00000000..6cc175ee --- /dev/null +++ b/tests/x86_64_magic_speedtest.rs @@ -0,0 +1,77 @@ +// Copyright (C) 2024 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 + +use anyhow::Result; +use indoc::indoc; +use ispm_wrapper::data::ProjectPackage; +use simics_test::TestEnvSpec; +use std::path::PathBuf; + +#[test] +#[cfg_attr(miri, ignore)] +fn test_x86_64_magic_speedtest() -> Result<()> { + let output = TestEnvSpec::builder() + .name("test_x86_64_magic_speedtest") + .package_crates([PathBuf::from(env!("CARGO_MANIFEST_DIR"))]) + .packages([ + ProjectPackage::builder() + .package_number(1000) + .version("latest") + .build(), + ProjectPackage::builder() + .package_number(2096) + .version("latest") + .build(), + ProjectPackage::builder() + .package_number(8112) + .version("latest") + .build(), + ]) + .cargo_target_tmpdir(env!("CARGO_TARGET_TMPDIR")) + .directories([PathBuf::from(env!("CARGO_MANIFEST_DIR")) + .join("tests") + .join("rsrc") + .join("x86_64-uefi")]) + .build() + .to_env()? + .test(indoc! {r#" + load-module tsffs + init-tsffs + + @tsffs.log_level = 2 + @tsffs.start_on_harness = True + @tsffs.stop_on_harness = True + @tsffs.timeout = 3.0 + @tsffs.exceptions = [14] + @tsffs.generate_random_corpus = True + @tsffs.iteration_limit = 1000 + @tsffs.use_snapshots = True + + load-target "qsp-x86/uefi-shell" namespace = qsp machine:hardware:storage:disk0:image = "minimal_boot_disk.craff" + + script-branch { + bp.time.wait-for seconds = 15 + qsp.serconsole.con.input "\n" + bp.time.wait-for seconds = .5 + qsp.serconsole.con.input "FS0:\n" + bp.time.wait-for seconds = .5 + local $manager = (start-agent-manager) + qsp.serconsole.con.input ("SimicsAgent.efi --download " + (lookup-file "%simics%/test-fast.efi") + "\n") + bp.time.wait-for seconds = .5 + qsp.serconsole.con.input "test-fast.efi\n" + } + + script-branch { + bp.time.wait-for seconds = 240 + quit 1 + } + + run + "#})?; + + let output_str = String::from_utf8_lossy(&output.stdout); + + println!("{output_str}"); + + Ok(()) +} diff --git a/tests/x86_64_magic_speedtest_tokenize.rs b/tests/x86_64_magic_speedtest_tokenize.rs new file mode 100644 index 00000000..714bf429 --- /dev/null +++ b/tests/x86_64_magic_speedtest_tokenize.rs @@ -0,0 +1,78 @@ +// Copyright (C) 2024 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 + +use anyhow::Result; +use indoc::indoc; +use ispm_wrapper::data::ProjectPackage; +use simics_test::TestEnvSpec; +use std::path::PathBuf; + +#[test] +#[cfg_attr(miri, ignore)] +fn test_x86_64_magic_speedtest_tokenize() -> Result<()> { + let output = TestEnvSpec::builder() + .name("test_x86_64_magic_speedtest_tokenize") + .package_crates([PathBuf::from(env!("CARGO_MANIFEST_DIR"))]) + .packages([ + ProjectPackage::builder() + .package_number(1000) + .version("latest") + .build(), + ProjectPackage::builder() + .package_number(2096) + .version("latest") + .build(), + ProjectPackage::builder() + .package_number(8112) + .version("latest") + .build(), + ]) + .cargo_target_tmpdir(env!("CARGO_TARGET_TMPDIR")) + .directories([PathBuf::from(env!("CARGO_MANIFEST_DIR")) + .join("tests") + .join("rsrc") + .join("x86_64-uefi")]) + .build() + .to_env()? + .test(indoc! {r#" + load-module tsffs + init-tsffs + + @tsffs.log_level = 2 + @tsffs.start_on_harness = True + @tsffs.stop_on_harness = True + @tsffs.timeout = 3.0 + @tsffs.exceptions = [14] + @tsffs.generate_random_corpus = True + @tsffs.iteration_limit = 1000 + @tsffs.use_snapshots = True + @tsffs.token_executables += [SIM_lookup_file("%simics%/test-fast.efi")] + + load-target "qsp-x86/uefi-shell" namespace = qsp machine:hardware:storage:disk0:image = "minimal_boot_disk.craff" + + script-branch { + bp.time.wait-for seconds = 15 + qsp.serconsole.con.input "\n" + bp.time.wait-for seconds = .5 + qsp.serconsole.con.input "FS0:\n" + bp.time.wait-for seconds = .5 + local $manager = (start-agent-manager) + qsp.serconsole.con.input ("SimicsAgent.efi --download " + (lookup-file "%simics%/test-fast.efi") + "\n") + bp.time.wait-for seconds = .5 + qsp.serconsole.con.input "test-fast.efi\n" + } + + script-branch { + bp.time.wait-for seconds = 240 + quit 1 + } + + run + "#})?; + + let output_str = String::from_utf8_lossy(&output.stdout); + + println!("{output_str}"); + + Ok(()) +} diff --git a/tests/x86_64_manual.rs b/tests/x86_64_manual.rs new file mode 100644 index 00000000..93f6010d --- /dev/null +++ b/tests/x86_64_manual.rs @@ -0,0 +1,155 @@ +// Copyright (C) 2024 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 + +use anyhow::Result; +use indoc::indoc; +use ispm_wrapper::data::ProjectPackage; +use simics_test::TestEnvSpec; +use std::path::PathBuf; + +#[test] +#[cfg_attr(miri, ignore)] +fn test_x86_64_manual() -> Result<()> { + let output = TestEnvSpec::builder() + .name("test_x86_64_manual") + .package_crates([PathBuf::from(env!("CARGO_MANIFEST_DIR"))]) + .packages([ + ProjectPackage::builder() + .package_number(1000) + .version("latest") + .build(), + ProjectPackage::builder() + .package_number(1030) + .version("latest") + .build(), + ProjectPackage::builder() + .package_number(2096) + .version("latest") + .build(), + ProjectPackage::builder() + .package_number(8112) + .version("latest") + .build(), + ]) + .cargo_target_tmpdir(env!("CARGO_TARGET_TMPDIR")) + .directories([PathBuf::from(env!("CARGO_MANIFEST_DIR")) + .join("tests") + .join("rsrc") + .join("x86_64-uefi")]) + .build() + .to_env()? + .test_python(indoc! {r#" + import cli + import simics + + simics.SIM_load_module("tsffs") + + tsffs = simics.SIM_create_object(simics.SIM_get_class("tsffs"), "tsffs", []) + simics.SIM_set_log_level(tsffs, 2) + tsffs.start_on_harness = False + tsffs.stop_on_harness = False + tsffs.timeout = 3.0 + tsffs.exceptions = [14] + tsffs.generate_random_corpus = True + tsffs.iteration_limit = 100 + tsffs.use_snapshots = True + + simics.SIM_load_target( + "qsp-x86/uefi-shell", # Target + "qsp", # Namespace + [], # Presets + [ # Cmdline args + ["machine:hardware:storage:disk0:image", "minimal_boot_disk.craff"], + ["machine:hardware:processor:class", "x86-goldencove-server"], + ], + ) + + qsp = simics.SIM_get_object("qsp") + + + def on_magic(o, e, r): + if r == 2: + print("Got magic stop...") + tsffs.iface.fuzz.stop() + + + def start_script_branch(): + # Wait for magic start -- in reality this could wait for any + # start condition, but we make it easy on ourselves for testing purposes + print("Waiting for magic start...") + conf.bp.magic.cli_cmds.wait_for(number=1) + print("Got magic start...") + + # In reality, you probably have a known buffer in mind to fuzz + testcase_address_regno = conf.qsp.mb.cpu0.core[0][0].iface.int_register.get_number( + "rdi" + ) + print("testcase address regno: ", testcase_address_regno) + testcase_address = conf.qsp.mb.cpu0.core[0][0].iface.int_register.read( + testcase_address_regno + ) + print("testcase address: ", testcase_address) + size_regno = conf.qsp.mb.cpu0.core[0][0].iface.int_register.get_number("rsi") + print("size regno: ", size_regno) + size_address = conf.qsp.mb.cpu0.core[0][0].iface.int_register.read(size_regno) + print("size address: ", size_address) + virt = False + + print( + "Starting with testcase address", + hex(testcase_address), + "size address", + hex(size_address), + "virt", + virt, + ) + + tsffs.iface.fuzz.start( + conf.qsp.mb.cpu0.core[0][0], + testcase_address, + size_address, + True, + ) + + + def startup_script_branch(): + cli.global_cmds.wait_for_global_time(seconds=15.0, _relative=True) + qsp.serconsole.con.iface.con_input.input_str("\n") + cli.global_cmds.wait_for_global_time(seconds=1.0, _relative=True) + qsp.serconsole.con.iface.con_input.input_str("FS0:\n") + cli.global_cmds.wait_for_global_time(seconds=1.0, _relative=True) + cli.global_cmds.start_agent_manager() + qsp.serconsole.con.iface.con_input.input_str( + "SimicsAgent.efi --download " + + simics.SIM_lookup_file("%simics%/test.efi") + + "\n" + ) + cli.global_cmds.wait_for_global_time(seconds=3.0, _relative=True) + qsp.serconsole.con.iface.con_input.input_str("test.efi\n") + + + def exit_script_branch(): + cli.global_cmds.wait_for_global_time(seconds=240.0, _relative=True) + simics.SIM_quit(1) + + def on_magic(o, e, r): + if r == 2: + print("Got magic stop...") + tsffs.iface.fuzz.stop() + + simics.SIM_hap_add_callback("Core_Magic_Instruction", on_magic, None) + cli.sb_create(start_script_branch) + cli.sb_create(startup_script_branch) + cli.sb_create(exit_script_branch) + + simics.SIM_continue(0) + # NOTE: If running from CLI, omit this! + simics.SIM_main_loop() + "#})?; + + let output_str = String::from_utf8_lossy(&output.stdout); + + println!("{output_str}"); + + Ok(()) +} diff --git a/tests/x86_64_manual_max.rs b/tests/x86_64_manual_max.rs new file mode 100644 index 00000000..1eaf0520 --- /dev/null +++ b/tests/x86_64_manual_max.rs @@ -0,0 +1,152 @@ +// Copyright (C) 2024 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 + +use anyhow::Result; +use indoc::indoc; +use ispm_wrapper::data::ProjectPackage; +use simics_test::TestEnvSpec; +use std::path::PathBuf; + +#[test] +#[cfg_attr(miri, ignore)] +fn test_x86_64_manual_max() -> Result<()> { + let output = TestEnvSpec::builder() + .name("test_x86_64_manual_max") + .package_crates([PathBuf::from(env!("CARGO_MANIFEST_DIR"))]) + .packages([ + ProjectPackage::builder() + .package_number(1000) + .version("latest") + .build(), + ProjectPackage::builder() + .package_number(1030) + .version("latest") + .build(), + ProjectPackage::builder() + .package_number(2096) + .version("latest") + .build(), + ProjectPackage::builder() + .package_number(8112) + .version("latest") + .build(), + ]) + .cargo_target_tmpdir(env!("CARGO_TARGET_TMPDIR")) + .directories([PathBuf::from(env!("CARGO_MANIFEST_DIR")) + .join("tests") + .join("rsrc") + .join("x86_64-uefi")]) + .build() + .to_env()? + .test_python(indoc! {r#" + import cli + import simics + + simics.SIM_load_module("tsffs") + + tsffs = simics.SIM_create_object(simics.SIM_get_class("tsffs"), "tsffs", []) + simics.SIM_set_log_level(tsffs, 2) + tsffs.start_on_harness = False + tsffs.stop_on_harness = False + tsffs.timeout = 3.0 + tsffs.exceptions = [14] + tsffs.generate_random_corpus = True + tsffs.iteration_limit = 100 + tsffs.use_snapshots = True + + simics.SIM_load_target( + "qsp-x86/uefi-shell", # Target + "qsp", # Namespace + [], # Presets + [ # Cmdline args + ["machine:hardware:storage:disk0:image", "minimal_boot_disk.craff"], + ["machine:hardware:processor:class", "x86-goldencove-server"], + ], + ) + + qsp = simics.SIM_get_object("qsp") + + + def on_magic(o, e, r): + if r == 2: + print("Got magic stop...") + tsffs.iface.fuzz.stop() + + + def start_script_branch(): + # Wait for magic start -- in reality this could wait for any + # start condition, but we make it easy on ourselves for testing purposes + print("Waiting for magic start...") + conf.bp.magic.cli_cmds.wait_for(number=1) + print("Got magic start...") + + # In reality, you probably have a known buffer in mind to fuzz + testcase_address_regno = conf.qsp.mb.cpu0.core[0][0].iface.int_register.get_number( + "rdi" + ) + print("testcase address regno: ", testcase_address_regno) + testcase_address = conf.qsp.mb.cpu0.core[0][0].iface.int_register.read( + testcase_address_regno + ) + print("testcase address: ", testcase_address) + maximum_size = 8 + virt = True + + print( + "Starting with testcase address", + hex(testcase_address), + "maximum_size", + hex(maximum_size), + "virt", + virt, + ) + + tsffs.iface.fuzz.start_with_maximum_size( + conf.qsp.mb.cpu0.core[0][0], + testcase_address, + maximum_size, + virt, + ) + + + def startup_script_branch(): + cli.global_cmds.wait_for_global_time(seconds=15.0, _relative=True) + qsp.serconsole.con.iface.con_input.input_str("\n") + cli.global_cmds.wait_for_global_time(seconds=1.0, _relative=True) + qsp.serconsole.con.iface.con_input.input_str("FS0:\n") + cli.global_cmds.wait_for_global_time(seconds=1.0, _relative=True) + cli.global_cmds.start_agent_manager() + qsp.serconsole.con.iface.con_input.input_str( + "SimicsAgent.efi --download " + + simics.SIM_lookup_file("%simics%/test.efi") + + "\n" + ) + cli.global_cmds.wait_for_global_time(seconds=3.0, _relative=True) + qsp.serconsole.con.iface.con_input.input_str("test.efi\n") + + + def exit_script_branch(): + cli.global_cmds.wait_for_global_time(seconds=240.0, _relative=True) + simics.SIM_quit(1) + + def on_magic(o, e, r): + if r == 2: + print("Got magic stop...") + tsffs.iface.fuzz.stop() + + simics.SIM_hap_add_callback("Core_Magic_Instruction", on_magic, None) + cli.sb_create(start_script_branch) + cli.sb_create(startup_script_branch) + cli.sb_create(exit_script_branch) + + simics.SIM_continue(0) + # NOTE: If running from CLI, omit this! + simics.SIM_main_loop() + "#})?; + + let output_str = String::from_utf8_lossy(&output.stdout); + + println!("{output_str}"); + + Ok(()) +} diff --git a/tests/x86_userspace_magic.rs b/tests/x86_userspace_magic.rs new file mode 100644 index 00000000..41f37864 --- /dev/null +++ b/tests/x86_userspace_magic.rs @@ -0,0 +1,113 @@ +// Copyright (C) 2024 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 + +use anyhow::Result; +use indoc::indoc; +use ispm_wrapper::data::ProjectPackage; +use simics_test::TestEnvSpec; +use std::path::PathBuf; + +#[test] +#[cfg_attr(miri, ignore)] +fn test_x86_userspace() -> Result<()> { + let output = TestEnvSpec::builder() + .name("test_x86_userspace") + .package_crates([PathBuf::from(env!("CARGO_MANIFEST_DIR"))]) + .packages([ + ProjectPackage::builder() + .package_number(1000) + .version("latest") + .build(), + ProjectPackage::builder() + .package_number(2096) + .version("latest") + .build(), + ProjectPackage::builder() + .package_number(8112) + .version("latest") + .build(), + ProjectPackage::builder() + .package_number(1030) + .version("latest") + .build(), + ProjectPackage::builder() + .package_number(4094) + .version("latest") + .build(), + ]) + .cargo_target_tmpdir(env!("CARGO_TARGET_TMPDIR")) + .directories([PathBuf::from(env!("CARGO_MANIFEST_DIR")) + .join("tests") + .join("rsrc") + .join("x86-user")]) + .build() + .to_env()? + .test_python(indoc! {r#" + import cli + import simics + + simics.SIM_load_module("tsffs") + + tsffs = simics.SIM_create_object(simics.SIM_get_class("tsffs"), "tsffs", []) + simics.SIM_set_log_level(tsffs, 2) + tsffs.start_on_harness = True + tsffs.stop_on_harness = True + tsffs.timeout = 3.0 + tsffs.generate_random_corpus = True + tsffs.iteration_limit = 100 + tsffs.use_snapshots = True + + simics.SIM_load_target( + "qsp-x86/clear-linux", # target + "qsp", # namespace + [], # presets + [["machine:hardware:storage:disk1:image", "test.fs.craff"]], + ) + + qsp = simics.SIM_get_object("qsp") + + tsffs.iface.config.add_architecture_hint(qsp.mb.cpu0.core[0][0], "i386") + + + # when we're running userspace code, we don't want to catch exeptions until + # we actually start fuzzing, including gpfs on other code. we can wait to + # enable the exception until later (we could even toggle it on and off per + # iteration) + def on_magic(o, e, r): + # wait for magic stop -- in reality this could wait for any stop + # condition, but we make it easy on ourselves for testing purposes + if r == 1: + tsffs.exceptions = [13] + + + def startup_script_branch(): + cli.global_cmds.wait_for_global_time(seconds=20.0, _relative=True) + qsp.serconsole.con.iface.con_input.input_str("sudo mkdir /disk0/\n") + cli.global_cmds.wait_for_global_time(seconds=1.0, _relative=True) + qsp.serconsole.con.iface.con_input.input_str("sudo mount /dev/sdb /disk0/\n") + cli.global_cmds.wait_for_global_time(seconds=1.0, _relative=True) + qsp.serconsole.con.iface.con_input.input_str("ls /disk0\n") + cli.global_cmds.wait_for_global_time(seconds=1.0, _relative=True) + qsp.serconsole.con.iface.con_input.input_str("/disk0/test\n") + + + def exit_script_branch(): + cli.global_cmds.wait_for_global_time(seconds=240.0, _relative=True) + simics.SIM_quit(1) + + + simics.SIM_hap_add_callback("Core_Magic_Instruction", on_magic, None) + cli.sb_create(startup_script_branch) + cli.sb_create(exit_script_branch) + + simics.SIM_continue(0) + # note: if running from cli, omit this! + simics.SIM_main_loop() + "#})?; + + let output_str = String::from_utf8_lossy(&output.stdout); + + println!("{output_str}"); + + Ok(()) +} From b4e02eec3deedf7ce4e8db4122edfee906bf9752 Mon Sep 17 00:00:00 2001 From: Rowan Hart Date: Mon, 18 Mar 2024 15:00:28 -0700 Subject: [PATCH 09/19] Stop before start (#67) --- Cargo.toml | 13 +-- src/fuzzer/feedbacks/mod.rs | 7 +- src/haps/mod.rs | 190 +++++++++++++++++++----------------- 3 files changed, 111 insertions(+), 99 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index 6690f2c7..ccea6e0d 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -22,7 +22,7 @@ version = "0.2.1" [package.metadata.simics] package-number = 31337 # version = "6.0.pre4" -version = "6.0.4" +version = "6.0.5" [lib] crate-type = ["cdylib", "rlib"] @@ -30,12 +30,7 @@ test = false [dependencies] anyhow = { version = "1.0.80" } -# libafl = { version = "0.11.2" } -# libafl_bolts = { version = "0.11.2" } -# libafl_targets = { version = "0.11.2", default-features = false, features = [ -# "std", -# ] } -libafl = { git = "https://github.com/AFLplusplus/LibAFL", default-features = false, features = [ +libafl = { git = "https://github.com/AFLplusplus/LibAFL", rev = "0f26f6ea32aa74ee526636558842ec06bbfb49bb", default-features = false, features = [ "std", "derive", "llmp_compression", @@ -48,10 +43,10 @@ libafl = { git = "https://github.com/AFLplusplus/LibAFL", default-features = fal "regex", "serdeany_autoreg", ] } -libafl_bolts = { git = "https://github.com/AFLplusplus/LibAFL", features = [ +libafl_bolts = { git = "https://github.com/AFLplusplus/LibAFL", rev = "0f26f6ea32aa74ee526636558842ec06bbfb49bb", features = [ "xxh3", ] } -libafl_targets = { git = "https://github.com/AFLplusplus/LibAFL", default-features = false, features = [ +libafl_targets = { git = "https://github.com/AFLplusplus/LibAFL", rev = "0f26f6ea32aa74ee526636558842ec06bbfb49bb", default-features = false, features = [ "std", ] } yaxpeax-arch = { version = "0.2.7", default-features = false, features = [ diff --git a/src/fuzzer/feedbacks/mod.rs b/src/fuzzer/feedbacks/mod.rs index 3f7b197d..a3a5146f 100644 --- a/src/fuzzer/feedbacks/mod.rs +++ b/src/fuzzer/feedbacks/mod.rs @@ -113,16 +113,19 @@ where self.base.init_state(state) } - fn append_metadata( + fn append_metadata( &mut self, state: &mut S, + manager: &mut EM, observers: &OT, testcase: &mut libafl::prelude::Testcase<::Input>, ) -> Result<(), libafl::Error> where OT: ObserversTuple, + EM: EventFirer, { - self.base.append_metadata(state, observers, testcase) + self.base + .append_metadata(state, manager, observers, testcase) } fn discard_metadata(&mut self, state: &mut S, input: &::Input) -> Result<(), libafl::Error> { diff --git a/src/haps/mod.rs b/src/haps/mod.rs index 94c8f4e7..95e08225 100644 --- a/src/haps/mod.rs +++ b/src/haps/mod.rs @@ -17,7 +17,7 @@ use simics::{ continue_simulation, log_level, object_is_processor, quit, run_alone, set_log_level, AsConfObject, ConfObject, GenericTransaction, LogLevel, }, - debug, info, trace, + debug, info, trace, warn, }; impl Tsffs { @@ -132,39 +132,45 @@ impl Tsffs { self.save_repro_bookmark_if_needed()?; } StopReason::MagicStop(_) | StopReason::ManualStop(_) => { - self.cancel_timeout_event()?; + if !self.have_initial_snapshot() { + warn!( + self.as_conf_object(), + "Stopped with {reason:?} before start was reached (no snapshot). Resuming without restoring non-existent snapshot." + ); + } else { + self.cancel_timeout_event()?; - if self.repro_bookmark_set { - self.stopped_for_repro = true; - let current_log_level = log_level(self.as_conf_object_mut())?; + if self.repro_bookmark_set { + self.stopped_for_repro = true; + let current_log_level = log_level(self.as_conf_object_mut())?; - if current_log_level < LogLevel::Info as u32 { - set_log_level(self.as_conf_object_mut(), LogLevel::Info)?; - } + if current_log_level < LogLevel::Info as u32 { + set_log_level(self.as_conf_object_mut(), LogLevel::Info)?; + } - info!( + info!( self.as_conf_object(), "Stopped for repro. Restore to start bookmark with 'reverse-to start'" ); - // Skip the shutdown and continue, we are finished here - return Ok(()); - } + // Skip the shutdown and continue, we are finished here + return Ok(()); + } - self.iterations += 1; + self.iterations += 1; - if self.iteration_limit != 0 && self.iterations >= self.iteration_limit { - let duration = SystemTime::now().duration_since( - *self - .start_time - .get() - .ok_or_else(|| anyhow!("Start time was not set"))?, - )?; + if self.iteration_limit != 0 && self.iterations >= self.iteration_limit { + let duration = SystemTime::now().duration_since( + *self + .start_time + .get() + .ok_or_else(|| anyhow!("Start time was not set"))?, + )?; - // Set the log level so this message always prints - set_log_level(self.as_conf_object_mut(), LogLevel::Info)?; + // Set the log level so this message always prints + set_log_level(self.as_conf_object_mut(), LogLevel::Info)?; - info!( + info!( self.as_conf_object(), "Configured iteration count {} reached. Stopping after {} seconds ({} exec/s).", self.iterations, @@ -172,66 +178,73 @@ impl Tsffs { self.iterations as f32 / duration.as_secs_f32() ); - self.send_shutdown()?; + self.send_shutdown()?; - quit(0)?; - } + quit(0)?; + } - let fuzzer_tx = self - .fuzzer_tx - .get() - .ok_or_else(|| anyhow!("No fuzzer tx channel"))?; + let fuzzer_tx = self + .fuzzer_tx + .get() + .ok_or_else(|| anyhow!("No fuzzer tx channel"))?; - fuzzer_tx.send(ExitKind::Ok)?; + fuzzer_tx.send(ExitKind::Ok)?; - self.restore_initial_snapshot()?; - self.coverage_prev_loc = 0; + self.restore_initial_snapshot()?; + self.coverage_prev_loc = 0; - if self.start_buffer.get().is_some() && self.start_size.get().is_some() { - self.get_and_write_testcase()?; - } else { - debug!( - self.as_conf_object(), - "Missing start buffer or size, not writing testcase." - ); - } + if self.start_buffer.get().is_some() && self.start_size.get().is_some() { + self.get_and_write_testcase()?; + } else { + debug!( + self.as_conf_object(), + "Missing start buffer or size, not writing testcase." + ); + } - self.post_timeout_event()?; + self.post_timeout_event()?; + } } StopReason::Solution(solution) => { - self.cancel_timeout_event()?; + if !self.have_initial_snapshot() { + warn!( + self.as_conf_object(), + "Solution {solution:?} before start was reached (no snapshot). Resuming without restoring non-existent snapshot." + ); + } else { + self.cancel_timeout_event()?; - if self.repro_bookmark_set { - self.stopped_for_repro = true; - let current_log_level = log_level(self.as_conf_object_mut())?; + if self.repro_bookmark_set { + self.stopped_for_repro = true; + let current_log_level = log_level(self.as_conf_object_mut())?; - if current_log_level < LogLevel::Info as u32 { - set_log_level(self.as_conf_object_mut(), LogLevel::Info)?; - } + if current_log_level < LogLevel::Info as u32 { + set_log_level(self.as_conf_object_mut(), LogLevel::Info)?; + } - info!( + info!( self.as_conf_object(), "Stopped for repro. Restore to start bookmark with 'reverse-to start'" ); - // Skip the shutdown and continue, we are finished here - return Ok(()); - } + // Skip the shutdown and continue, we are finished here + return Ok(()); + } - self.iterations += 1; + self.iterations += 1; - if self.iteration_limit != 0 && self.iterations >= self.iteration_limit { - let duration = SystemTime::now().duration_since( - *self - .start_time - .get() - .ok_or_else(|| anyhow!("Start time was not set"))?, - )?; + if self.iteration_limit != 0 && self.iterations >= self.iteration_limit { + let duration = SystemTime::now().duration_since( + *self + .start_time + .get() + .ok_or_else(|| anyhow!("Start time was not set"))?, + )?; - // Set the log level so this message always prints - set_log_level(self.as_conf_object_mut(), LogLevel::Info)?; + // Set the log level so this message always prints + set_log_level(self.as_conf_object_mut(), LogLevel::Info)?; - info!( + info!( self.as_conf_object(), "Configured iteration count {} reached. Stopping after {} seconds ({} exec/s).", self.iterations, @@ -239,36 +252,37 @@ impl Tsffs { self.iterations as f32 / duration.as_secs_f32() ); - self.send_shutdown()?; + self.send_shutdown()?; - quit(0)?; - } + quit(0)?; + } - let fuzzer_tx = self - .fuzzer_tx - .get() - .ok_or_else(|| anyhow!("No fuzzer tx channel"))?; + let fuzzer_tx = self + .fuzzer_tx + .get() + .ok_or_else(|| anyhow!("No fuzzer tx channel"))?; - match solution.kind { - SolutionKind::Timeout => fuzzer_tx.send(ExitKind::Timeout)?, - SolutionKind::Exception - | SolutionKind::Breakpoint - | SolutionKind::Manual => fuzzer_tx.send(ExitKind::Crash)?, - } + match solution.kind { + SolutionKind::Timeout => fuzzer_tx.send(ExitKind::Timeout)?, + SolutionKind::Exception + | SolutionKind::Breakpoint + | SolutionKind::Manual => fuzzer_tx.send(ExitKind::Crash)?, + } - self.restore_initial_snapshot()?; - self.coverage_prev_loc = 0; + self.restore_initial_snapshot()?; + self.coverage_prev_loc = 0; - if self.start_buffer.get().is_some() && self.start_size.get().is_some() { - self.get_and_write_testcase()?; - } else { - debug!( - self.as_conf_object(), - "Missing start buffer or size, not writing testcase." - ); - } + if self.start_buffer.get().is_some() && self.start_size.get().is_some() { + self.get_and_write_testcase()?; + } else { + debug!( + self.as_conf_object(), + "Missing start buffer or size, not writing testcase." + ); + } - self.post_timeout_event()?; + self.post_timeout_event()?; + } } } From ac494cf78b33899ebaa1a76b44d3359bc7259a09 Mon Sep 17 00:00:00 2001 From: Rowan Hart Date: Wed, 20 Mar 2024 14:58:08 -0700 Subject: [PATCH 10/19] Add additional logging and debug logging consumer for libafl code (#68) --- .github/workflows/ci.yml | 7 +- Cargo.toml | 2 + src/fuzzer/mod.rs | 168 ++++++++++++++++++++++++++++++--------- src/lib.rs | 2 + 4 files changed, 140 insertions(+), 39 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 152bf656..bb983519 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -23,6 +23,11 @@ env: PUBLIC_SIMICS_ISPM_URL: "https://registrationcenter-download.intel.com/akdlm/IRC_NAS/ead79ef5-28b5-48c7-8d1f-3cde7760798f/intel-simics-package-manager-1.8.3-linux64.tar.gz" PUBLIC_SIMICS_PACKAGE_VERSION_1000: "6.0.185" PUBLIC_SIMICS_ISPM_VERSION: "1.8.3" + BUILDER_CFE_VERSION: "5.0.2" + BUILDER_LLVM_VERSION: "5.0.2" + BUILDER_MAKE_VERSION: "4.4.1" + BUILDER_CMAKE_VERSION: "3.28.0-rc5" + BUILDER_PATCHELF_VERSION: "0.18.0" MINGW_URL: "https://github.com/brechtsanders/winlibs_mingw/releases/download/13.2.0-16.0.6-11.0.0-ucrt-r1/winlibs-x86_64-posix-seh-gcc-13.2.0-llvm-16.0.6-mingw-w64ucrt-11.0.0-r1.7z" MINGW_VERSION: "13.2.0-16.0.6-11.0.0-ucrt-r1" @@ -588,7 +593,7 @@ jobs: uses: actions/cache@v4 with: path: .github/builder/rsrc - key: "cache-builder-dependencies-${{ env.PUBLIC_SIMICS_ISPM_URL}}-${{env.PUBLIC_SIMICS_PKGS_URL }}-${{ env.CFE_URL }}-${{ env.LLVM_SRC_URL }}-${{ env.MAKE_SRC_URL }}-${{ env.RUSTUP_INIT_URL }}-${{ env.CMAKE_URL }}" + key: "cache-builder-dependencies-${{ env.PUBLIC_SIMICS_ISPM_VERSION }}-${{ env.BUILDER_CFE_VERSION }}-${{ env.BUILDER_LLVM_VERSION }}-${{ env.BUILDER_MAKE_VERSION }}-${{ env.BUILDER_CMAKE_VERSION }}" - name: Download Builder Dependencies if: ${{ steps.cache-builder-dependencies.outputs.cache-hit != 'true' }} diff --git a/Cargo.toml b/Cargo.toml index ccea6e0d..56964ecf 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -71,6 +71,8 @@ serde = { version = "1.0.197", features = ["derive"] } serde_json = "1.0.114" versions = { version = "6.1.0", features = ["serde"] } ffi = "0.1.1" +tracing-subscriber = "0.3.18" +tracing = { version = "0.1.40", features = ["log"] } [dev-dependencies] simics-test = { path = "simics-rs/simics-test" } diff --git a/src/fuzzer/mod.rs b/src/fuzzer/mod.rs index b5fe9e37..5374b825 100644 --- a/src/fuzzer/mod.rs +++ b/src/fuzzer/mod.rs @@ -39,10 +39,14 @@ use libafl_bolts::{ use libafl_targets::{AFLppCmpLogObserver, AFLppCmplogTracingStage}; use simics::{api::AsConfObject, debug, warn}; use std::{ - cell::RefCell, fmt::Debug, slice::from_raw_parts_mut, sync::mpsc::channel, thread::spawn, - time::Duration, + cell::RefCell, fmt::Debug, io::stderr, slice::from_raw_parts_mut, sync::mpsc::channel, + thread::spawn, time::Duration, }; use tokenize::{tokenize_executable_file, tokenize_src_file}; +use tracing::{level_filters::LevelFilter, Level}; +use tracing_subscriber::{ + filter::filter_fn, fmt, layer::SubscriberExt, registry, util::SubscriberInitExt, Layer, +}; pub mod feedbacks; pub mod messages; @@ -176,14 +180,37 @@ impl Tsffs { let generate_random_corpus = self.generate_random_corpus; let initial_random_corpus_size = self.initial_random_corpus_size; let executor_timeout = self.executor_timeout; + let debug_log_libafl = self.debug_log_libafl; // NOTE: We do *not* use `run_in_thread` because it causes the fuzzer to block when HAPs arrive // which prevents forward progress. self.fuzz_thread .set(spawn(move || -> Result<()> { + if debug_log_libafl { + let reg = registry().with({ + fmt::layer() + .compact() + .with_thread_ids(true) + .with_thread_names(true) + .with_writer(stderr) + .with_filter(LevelFilter::TRACE) + .with_filter(filter_fn(|metadata| { + // LLMP absolutely spams the log when tracing + !(metadata.target() == "libafl_bolts::llmp" + && matches!(metadata.level(), &Level::TRACE)) + })) + }); + + reg.try_init() + .map_err(|e| { + eprintln!("Could not install tracing subscriber: {}", e); + e + }) + .ok(); + } + let mut harness = |input: &BytesInput| { let testcase = BytesInput::new(input.target_bytes().as_slice().to_vec()); - // println!("Sending testcase {:?}", testcase); client .borrow_mut() .0 @@ -192,19 +219,17 @@ impl Tsffs { cmplog: false, }) .expect("Failed to send testcase message"); - // println!("Sent testcase, waiting for status"); + let status = match client.borrow_mut().1.recv() { Err(e) => panic!("Error receiving status: {e}"), Ok(m) => m, }; - // println!("Got status: {:?}", status); status }; let mut aflpp_cmp_harness = |input: &BytesInput| { let testcase = BytesInput::new(input.target_bytes().as_slice().to_vec()); - // println!("Sending testcase {:?}", testcase); client .borrow_mut() .0 @@ -213,13 +238,11 @@ impl Tsffs { cmplog: true, }) .expect("Failed to send testcase message"); - // println!("Sent testcase, waiting for status"); let status = match client.borrow_mut().1.recv() { Err(e) => panic!("Error receiving status: {e}"), Ok(m) => m, }; - // println!("Got status: {:?}", status); status }; @@ -256,13 +279,21 @@ impl Tsffs { let solutions = OnDiskCorpus::with_meta_format( solutions_directory.clone(), OnDiskMetadataFormat::JsonPretty, - )?; + ) + .map_err(|e| { + eprintln!("Failed to initialize solutions corpus: {e}"); + anyhow!("Failed to initialize solutions corpus: {e}") + })?; let corpus = CachedOnDiskCorpus::with_meta_format( corpus_directory.clone(), Self::CORPUS_CACHE_SIZE, Some(OnDiskMetadataFormat::Json), - )?; + ) + .map_err(|e| { + eprintln!("Failed to initialize corpus: {e}"); + anyhow!("Failed to initialize corpus: {e}") + })?; // NOTE: Initialize these here before we move the feedbacks let calibration_stage = CalibrationStage::new(&map_feedback); @@ -279,7 +310,10 @@ impl Tsffs { &mut feedback, &mut objective, ) - .map_err(|e| anyhow!("Couldn't initialize state: {e}"))?; + .map_err(|e| { + eprintln!("Couldn't initialize fuzzer state: {e}"); + anyhow!("Couldn't initialize state: {e}") + })?; let mut tokens = Tokens::default().add_from_files(token_files)?; @@ -315,7 +349,11 @@ impl Tsffs { &mut state, &mut manager, Duration::from_secs(executor_timeout), - )?; + ) + .map_err(|e| { + eprintln!("Couldn't initialize fuzzer executor: {e}"); + anyhow!("Couldn't initialize fuzzer executor: {e}") + })?; let aflpp_cmp_executor = InProcessExecutor::with_timeout( &mut aflpp_cmp_harness, @@ -324,7 +362,11 @@ impl Tsffs { &mut state, &mut manager, Duration::from_secs(executor_timeout), - )?; + ) + .map_err(|e| { + eprintln!("Couldn't initialize fuzzer AFL++ cmplog executor: {e}"); + anyhow!("Couldn't initialize fuzzer AFL++ cmplog executor: {e}") + })?; let tracing_executor = InProcessExecutor::with_timeout( &mut tracing_harness, @@ -333,7 +375,11 @@ impl Tsffs { &mut state, &mut manager, Duration::from_secs(executor_timeout), - )?; + ) + .map_err(|e| { + eprintln!("Couldn't initialize fuzzer AFL++ cmplog executor: {e}"); + anyhow!("Couldn't initialize fuzzer AFL++ cmplog executor: {e}") + })?; let input_to_state_stage = StdMutationalStage::new(StdScheduledMutator::new( tuple_list!(I2SRandReplace::new()), @@ -341,12 +387,18 @@ impl Tsffs { let havoc_mutational_stage = StdPowerMutationalStage::new( StdScheduledMutator::new(havoc_mutations().merge(tokens_mutations())), ); - let mopt_mutational_stage = StdPowerMutationalStage::new(StdMOptMutator::new( - &mut state, - havoc_mutations().merge(tokens_mutations()), - 7, - 5, - )?); + let mopt_mutational_stage = StdPowerMutationalStage::new( + StdMOptMutator::new( + &mut state, + havoc_mutations().merge(tokens_mutations()), + 7, + 5, + ) + .map_err(|e| { + eprintln!("Couldn't initialize fuzzer MOpt mutator: {e}"); + anyhow!("Couldn't initialize fuzzer MOpt mutator: {e}") + })?, + ); let redqueen_mutational_stage = MultiMutationalStage::new(AFLppRedQueen::with_cmplog_options(true, true)); let aflpp_tracing_stage = AFLppCmplogTracingStage::with_cmplog_observer_name( @@ -360,25 +412,41 @@ impl Tsffs { |input: &BytesInput, _state: &_| input.target_bytes().as_slice().to_vec(), corpus_directory.clone(), solutions_directory.clone(), - )?; + ) + .map_err(|e| { + eprintln!("Couldn't initialize fuzzer dump to disk stage: {e}"); + anyhow!("Couldn't initialize fuzzer dump to disk stage: {e}") + })?; if state.must_load_initial_inputs() { - state.load_initial_inputs( - &mut fuzzer, - &mut executor, - &mut manager, - &[corpus_directory.clone()], - )?; - - if state.corpus().count() < 1 && generate_random_corpus { - let mut generator = RandBytesGenerator::new(64); - state.generate_initial_inputs( + state + .load_initial_inputs( &mut fuzzer, &mut executor, - &mut generator, &mut manager, - initial_random_corpus_size, - )?; + &[corpus_directory.clone()], + ) + .map_err(|e| { + eprintln!( + "Error loading initial inputs from {corpus_directory:?}: {e}" + ); + anyhow!("Error loading initial inputs from {corpus_directory:?}: {e}") + })?; + + if state.corpus().count() < 1 && generate_random_corpus { + let mut generator = RandBytesGenerator::new(64); + state + .generate_initial_inputs( + &mut fuzzer, + &mut executor, + &mut generator, + &mut manager, + initial_random_corpus_size, + ) + .map_err(|e| { + eprintln!("Error generating random inputs: {e}"); + anyhow!("Error generating random inputs: {e}") + })?; } } @@ -403,9 +471,28 @@ impl Tsffs { Ok(cmplog_enabled && state .corpus() - .get(state.current_corpus_idx()?.ok_or_else(|| { - libafl::Error::unknown("No current corpus index") - })?)? + .get( + state + .current_corpus_idx() + .map_err(|e| { + eprintln!( + "Error getting current corpus index: {e}" + ); + // libafl::Error::unkown(format!( + // "Error getting current corpus index: {e}" + // )) + e + })? + .ok_or_else(|| { + eprintln!("No current corpus index"); + + libafl::Error::unknown("No current corpus index") + })?, + ) + .map_err(|e| { + eprintln!("Error getting current corpus entry: {e}"); + e + })? .borrow() .scheduled_count() == 1) @@ -438,7 +525,12 @@ impl Tsffs { break; } - fuzzer.fuzz_one(&mut stages, &mut executor, &mut state, &mut manager)?; + fuzzer + .fuzz_one(&mut stages, &mut executor, &mut state, &mut manager) + .map_err(|e| { + eprintln!("Error running iteration of fuzzing loop: {e}"); + anyhow!("Error running iteration of fuzzing loop: {e}") + })?; } println!("Fuzzing loop exited."); diff --git a/src/lib.rs b/src/lib.rs index 1435b658..9f5893c8 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -304,6 +304,8 @@ pub(crate) struct Tsffs { pub log_to_file: bool, #[class(attribute(optional, default = false))] pub keep_all_corpus: bool, + #[class(attribute(optional, default = false))] + pub debug_log_libafl: bool, #[attr_value(skip)] /// Handle for the core simulation stopped hap From 07a2b352c5d4978f81378c3dab656aec0b65c16c Mon Sep 17 00:00:00 2001 From: Rowan Hart Date: Mon, 25 Mar 2024 15:06:38 -0700 Subject: [PATCH 11/19] New harness (#69) --- .github/builder/Dockerfile | 2 +- .github/workflows/scans.yml | 70 +- Cargo.toml | 6 +- Dockerfile | 2 +- docs/src/config/common-options.md | 99 +- docs/src/developer/debugging.md | 5 +- docs/src/harnessing/closed-box.md | 2 +- docs/src/harnessing/compiled-in.md | 74 +- docs/src/setup/windows.md | 2 +- .../edk2-simics-platform-bios/harnessing.md | 6 +- .../tutorials/edk2-uefi/reproducing-runs.md | 2 +- .../edk2-uefi/writing-the-application.md | 6 +- .../kernel-module/kernel-module-code.md | 6 +- .../kernel-module/kernel-module-harnessing.md | 6 +- examples/docker-example/fuzz.simics | 17 +- .../tutorials/edk2-simics-platform/.gitignore | 2 +- .../tutorials/edk2-simics-platform/Dockerfile | 4 +- .../edk2-simics-platform/build-custom.sh | 2 +- .../tutorials/edk2-simics-platform/build.sh | 2 +- .../edk2-simics-platform/edk2-platforms.patch | 30 +- examples/tutorials/edk2-uefi/src/Tutorial.c | 2 +- .../edk2-uefi/src/tsffs-gcc-x86_64.h | 122 - examples/tutorials/edk2-uefi/src/tsffs.h | 2876 +++++++++++++++++ .../risc-v-kernel/src/tsffs-gcc-riscv64.h | 124 - examples/tutorials/risc-v-kernel/src/tsffs.h | 2876 +++++++++++++++++ .../tutorial-mod/tsffs-gcc-riscv64.h | 124 - .../kernel-modules/tutorial-mod/tsffs.h | 2876 +++++++++++++++++ .../tutorial-mod/tutorial-mod.c | 2 +- .../risc-v-kernel/src/tutorial-mod-driver.c | 2 +- harness/.gitignore | 1 + harness/build.sh | 30 + harness/test.c | 92 + harness/test.sh | 62 + harness/tsffs-gcc-aarch64.h | 447 +++ harness/tsffs-gcc-arm32.h | 288 ++ harness/tsffs-gcc-riscv32.h | 521 ++- harness/tsffs-gcc-riscv64.h | 515 ++- harness/tsffs-gcc-x86.h | 571 +++- harness/tsffs-gcc-x86_64.h | 571 +++- harness/tsffs-msvc-x86_64.asm | 187 ++ harness/tsffs-msvc-x86_64.h | 290 ++ harness/tsffs.h | 2876 +++++++++++++++++ src/arch/mod.rs | 500 ++- src/arch/risc_v.rs | 20 +- src/arch/x86.rs | 241 +- src/arch/x86_64.rs | 15 +- src/fuzzer/mod.rs | 41 +- src/haps/mod.rs | 765 +++-- src/interfaces/fuzz.rs | 119 +- src/interfaces/mod.rs | 1 - src/interfaces/tsffs.rs | 596 ---- src/lib.rs | 235 +- src/magic/mod.rs | 24 + src/state/mod.rs | 57 +- tests/riscv_64_kernel_from_userspace_magic.rs | 4 +- tests/riscv_64_kernel_magic.rs | 1 + tests/rsrc/build.sh | 2 + tests/rsrc/riscv-64/Dockerfile | 7 +- tests/rsrc/riscv-64/build.sh | 6 +- .../kernel-modules/test-mod/test-mod.c | 2 +- .../test-mod/tsffs-gcc-riscv64.h | 124 - tests/rsrc/riscv-64/test-mod-userspace.c | 8 +- tests/rsrc/riscv-64/test.c | 2 +- tests/rsrc/riscv-64/tsffs-gcc-riscv64.h | 124 - tests/rsrc/x86-user/build.sh | 2 +- tests/rsrc/x86-user/minimal_boot_disk.craff | 3 - tests/rsrc/x86-user/test.c | 2 +- tests/rsrc/x86-user/tsffs-gcc-riscv64.h | 42 - tests/rsrc/x86-user/tsffs-gcc-x86.h | 134 - .../x86_64-breakpoint-uefi-edk2/.gitignore | 3 +- .../rsrc/x86_64-breakpoint-uefi-edk2/build.sh | 6 +- .../src/HelloWorld.c | 2 +- .../src/tsffs-gcc-x86_64.h | 134 - tests/rsrc/x86_64-crash-uefi/build.sh | 4 +- .../x86_64-crash-uefi/minimal_boot_disk.craff | 3 - tests/rsrc/x86_64-crash-uefi/test.c | 2 +- .../rsrc/x86_64-crash-uefi/tsffs-gcc-x86_64.h | 134 - tests/rsrc/x86_64-timeout-uefi-edk2/build.sh | 4 +- .../minimal_boot_disk.craff | 3 - .../x86_64-timeout-uefi-edk2/src/HelloWorld.c | 2 +- .../src/tsffs-gcc-x86_64.h | 134 - tests/rsrc/x86_64-uefi-edk2/build.sh | 2 +- .../x86_64-uefi-edk2/minimal_boot_disk.craff | 3 - tests/rsrc/x86_64-uefi-edk2/src/HelloWorld.c | 2 +- .../x86_64-uefi-edk2/src/tsffs-gcc-x86_64.h | 134 - tests/rsrc/x86_64-uefi/build.sh | 4 +- .../rsrc/x86_64-uefi/minimal_boot_disk.craff | 3 - tests/rsrc/x86_64-uefi/test-cov.c | 2 +- tests/rsrc/x86_64-uefi/test-fast.c | 2 +- tests/rsrc/x86_64-uefi/test.c | 2 +- tests/rsrc/x86_64-uefi/tsffs-gcc-x86_64.h | 134 - tests/x86_64_magic_apitest.rs | 3 - tests/x86_64_manual.rs | 8 +- tests/x86_64_manual_max.rs | 4 +- 94 files changed, 16093 insertions(+), 3518 deletions(-) delete mode 100644 examples/tutorials/edk2-uefi/src/tsffs-gcc-x86_64.h create mode 100644 examples/tutorials/edk2-uefi/src/tsffs.h delete mode 100644 examples/tutorials/risc-v-kernel/src/tsffs-gcc-riscv64.h create mode 100644 examples/tutorials/risc-v-kernel/src/tsffs.h delete mode 100644 examples/tutorials/risc-v-kernel/src/tutorial-kernel-modules/package/kernel-modules/tutorial-mod/tsffs-gcc-riscv64.h create mode 100644 examples/tutorials/risc-v-kernel/src/tutorial-kernel-modules/package/kernel-modules/tutorial-mod/tsffs.h create mode 100644 harness/.gitignore create mode 100755 harness/build.sh create mode 100644 harness/test.c create mode 100755 harness/test.sh create mode 100644 harness/tsffs-gcc-aarch64.h create mode 100644 harness/tsffs-gcc-arm32.h create mode 100644 harness/tsffs-msvc-x86_64.asm create mode 100644 harness/tsffs-msvc-x86_64.h create mode 100644 harness/tsffs.h delete mode 100644 src/interfaces/tsffs.rs create mode 100644 src/magic/mod.rs delete mode 100644 tests/rsrc/riscv-64/test-kernel-modules/package/kernel-modules/test-mod/tsffs-gcc-riscv64.h delete mode 100644 tests/rsrc/riscv-64/tsffs-gcc-riscv64.h delete mode 100644 tests/rsrc/x86-user/minimal_boot_disk.craff delete mode 100644 tests/rsrc/x86-user/tsffs-gcc-riscv64.h delete mode 100644 tests/rsrc/x86-user/tsffs-gcc-x86.h delete mode 100644 tests/rsrc/x86_64-breakpoint-uefi-edk2/src/tsffs-gcc-x86_64.h delete mode 100644 tests/rsrc/x86_64-crash-uefi/minimal_boot_disk.craff delete mode 100644 tests/rsrc/x86_64-crash-uefi/tsffs-gcc-x86_64.h delete mode 100644 tests/rsrc/x86_64-timeout-uefi-edk2/minimal_boot_disk.craff delete mode 100644 tests/rsrc/x86_64-timeout-uefi-edk2/src/tsffs-gcc-x86_64.h delete mode 100644 tests/rsrc/x86_64-uefi-edk2/minimal_boot_disk.craff delete mode 100644 tests/rsrc/x86_64-uefi-edk2/src/tsffs-gcc-x86_64.h delete mode 100644 tests/rsrc/x86_64-uefi/minimal_boot_disk.craff delete mode 100644 tests/rsrc/x86_64-uefi/tsffs-gcc-x86_64.h diff --git a/.github/builder/Dockerfile b/.github/builder/Dockerfile index fd6a3e9a..bbdef3cd 100644 --- a/.github/builder/Dockerfile +++ b/.github/builder/Dockerfile @@ -8,7 +8,7 @@ RUN yum -y update && \ coreutils \ gcc \ gcc-c++ \ - make \ + make && \ yum clean all COPY .github/builder/rsrc/rustup-init /install/rustup-init diff --git a/.github/workflows/scans.yml b/.github/workflows/scans.yml index b33c867f..4676dbaf 100644 --- a/.github/workflows/scans.yml +++ b/.github/workflows/scans.yml @@ -44,36 +44,46 @@ jobs: /action/lib/linter.sh || ( echo "❗ [CT222] Super linter found an issue (possibly Hadolint)" && exit 1 ) echo "✅ [CT222] Hadolint Dockerfile check passed" - scan_containers: + scan_x86_64_breakpoint_uefi_edk2_container: runs-on: ubuntu-latest - strategy: - matrix: - dockerfile: - # NOTE: These containers exceed the GitHub size limit and must be scanned manually - # - Dockerfile - # - examples/manual-example/Dockerfile - # - modules/tsffs/tests/targets/minimal-riscv-64/Dockerfile - # - modules/tsffs/tests/targets/minimal-riscv-64-edk2/Dockerfile - - tests/rsrc/x86_64-breakpoint-uefi-edk2/Dockerfile - - tests/rsrc/x86_64-timeout-uefi-edk2/Dockerfile - - tests/rsrc/x86_64-uefi-edk2/Dockerfile - include: - # NOTE: These containers exceed the GitHub size limit and must be scanned manually - # - dockerfile: Dockerfile - # context: . - # - dockerfile: examples/manual-example/Dockerfile - # context: . - # - dockerfile: modules/tsffs/tests/targets/minimal-riscv-64/Dockerfile - # context: modules/tsffs/tests/targets/minimal-riscv-64/ - # - dockerfile: modules/tsffs/tests/targets/minimal-riscv-64-edk2/Dockerfile - # context: modules/tsffs/tests/targets/minimal-riscv-64-edk2/ - - dockerfile: tests/rsrc/x86_64-breakpoint-uefi-edk2/Dockerfile - context: tests/rsrc/x86_64-breakpoint-uefi-edk2/ - - dockerfile: tests/rsrc/x86_64-timeout-uefi-edk2/Dockerfile - context: tests/rsrc/x86_64-timeout-uefi-edk2/ - - dockerfile: tests/rsrc/x86_64-uefi-edk2/Dockerfile - context: tests/rsrc/x86_64-uefi-edk2/ + steps: + - uses: actions/checkout@v4 + with: + fetch-depth: 0 + lfs: false + + - name: Build Image + run: | + cd tests/rsrc/x86_64-breakpoint-uefi-edk2/ + cp "../../../harness/tsffs.h" "src/tsffs.h" + docker buildx build -t container -f Dockerfile . > build.log 2>&1 || { tail -n 1000 build.log; exit 1; } + - name: Run Trivy vulnerability scanner + uses: aquasecurity/trivy-action@master + with: + image-ref: container + + scan_x86_64_timeout_uefi_edk2_container: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + with: + fetch-depth: 0 + lfs: false + + - name: Build Image + run: | + cd tests/rsrc/x86_64-timeout-uefi-edk2/ + cp "../../../harness/tsffs.h" "src/tsffs.h" + docker buildx build -t container -f Dockerfile . > build.log 2>&1 || { tail -n 1000 build.log; exit 1; } + + - name: Run Trivy vulnerability scanner + uses: aquasecurity/trivy-action@master + with: + image-ref: container + + scan_x86_64_uefi_edk2_container: + runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 with: @@ -82,7 +92,9 @@ jobs: - name: Build Image run: | - docker build -t container -f ${{ matrix.dockerfile }} ${{ matrix.context }} + cd tests/rsrc/x86_64-uefi-edk2/ + cp "../../../harness/tsffs.h" "src/tsffs.h" + docker buildx build -t container -f Dockerfile . > build.log 2>&1 || { tail -n 1000 build.log; exit 1; } - name: Run Trivy vulnerability scanner uses: aquasecurity/trivy-action@master diff --git a/Cargo.toml b/Cargo.toml index 56964ecf..8d17d5f8 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -21,8 +21,8 @@ version = "0.2.1" [package.metadata.simics] package-number = 31337 -# version = "6.0.pre4" -version = "6.0.5" + +version = "6.0.6" [lib] crate-type = ["cdylib", "rlib"] @@ -71,6 +71,8 @@ serde = { version = "1.0.197", features = ["derive"] } serde_json = "1.0.114" versions = { version = "6.1.0", features = ["serde"] } ffi = "0.1.1" +num-traits = "0.2.18" +num-derive = "0.4.2" tracing-subscriber = "0.3.18" tracing = { version = "0.1.40", features = ["log"] } diff --git a/Dockerfile b/Dockerfile index 972685de..496647e7 100644 --- a/Dockerfile +++ b/Dockerfile @@ -119,7 +119,7 @@ RUN ispm projects /workspace/projects/example/ --create \ cp /workspace/tsffs/examples/docker-example/fuzz.simics /workspace/projects/example/ && \ cp /workspace/tsffs/tests/rsrc/minimal_boot_disk.craff /workspace/projects/example/ && \ cp /workspace/tsffs/tests/rsrc/x86_64-uefi/* /workspace/projects/example/ && \ - cp /workspace/tsffs/harness/tsffs-gcc-x86_64.h /workspace/projects/example/ && \ + cp /workspace/tsffs/harness/tsffs.h /workspace/projects/example/ && \ ninja RUN echo 'echo "To run the demo, run ./simics -no-gui --no-win fuzz.simics"' >> /root/.bashrc diff --git a/docs/src/config/common-options.md b/docs/src/config/common-options.md index 9ae2fd7f..7e68074b 100644 --- a/docs/src/config/common-options.md +++ b/docs/src/config/common-options.md @@ -12,11 +12,16 @@ is desired. - [Using Snapshots](#using-snapshots) - [Using CMPLog](#using-cmplog) - [Set Corpus and Solutions Directory](#set-corpus-and-solutions-directory) + - [Enable and Set the Checkpoint Path](#enable-and-set-the-checkpoint-path) - [Enable Random Corpus Generation](#enable-random-corpus-generation) - [Set an Iteration Limit](#set-an-iteration-limit) - [Adding Tokens From Target Software](#adding-tokens-from-target-software) - [Setting an Architecture Hint](#setting-an-architecture-hint) - [Adding a Trace Processor](#adding-a-trace-processor) + - [Disabling Coverage Reporting](#disabling-coverage-reporting) + - [Enable Logging and Set Log path](#enable-logging-and-set-log-path) + - [Keep All Corpus Entries](#keep-all-corpus-entries) + - [Use Initial Buffer Contents As Corpus](#use-initial-buffer-contents-as-corpus) ## Solution Configuration @@ -36,6 +41,18 @@ Note that this timeout is in virtual time, not real time. This means that whethe simulation runs faster or slower than real time, the timeout will be accurate to the target software's execution speed. +The fuzzing executor also has a timeout, which runs in real time. This timeout +is intended to detect situations where the fuzzer reaches a broken state where +it is no longer able to iterate (e.g. the virtual time timeout is not working) +and stop. By default, this timeout is set to 60 seconds and resets each +iteration. Only iterations which take more than 60 seconds will trigger the +timeout, but some very large fuzzing cases could exceed this time. To increase +it, for example to set the timeout to 10 minutes: + +```python +@tsffs.executor_timeout = 600 +``` + ### Setting Exception Solutions The primary way TSFFS detects bugs is via CPU exceptions that are raised, but should not @@ -163,7 +180,25 @@ changed with: ```python -tsffs.solutions_directory = SIM_lookup_file("%simics%/other_solutions_directory") +@tsffs.solutions_directory = SIM_lookup_file("%simics%/other_solutions_directory") +``` + +### Enable and Set the Checkpoint Path + +The fuzzer captures an on-disk checkpoint before starting fuzzing by default. On Simics +7 and higher, this increases the snapshot restore speed very significantly, so it should +only be disabled if required. + +To disable this behavior, you can set: + +```python +@tsffs.pre_snapshot_checkpoint = False +``` + +To set the path for the checkpoint, you can set: + +```python +@tsffs.checkpoint_path = SIM_lookup_file("%simics%") + "/checkpoint.ckpt" ``` ### Enable Random Corpus Generation @@ -182,6 +217,14 @@ This can be enabled with: @tsffs.generate_random_corpus = True ``` +The size of the initial random corpus can be set via (note, larger random corpuses are +generally not useful and a real corpus matching the expected data format should be used +instead!): + +```python +@tsffs.initial_random_corpus_size = 64 +``` + ### Set an Iteration Limit The fuzzer can be set to execute only a specific number of iterations before exiting. @@ -249,7 +292,7 @@ running `i386` code in backward-compatibility mode. An architecture hint can be set with: ```python -@tsffs.iface.tsffs.add_architecture_hint(qsp.mb.cpu0.core[0][0], "i386") +@tsffs.iface.config.add_architecture_hint(qsp.mb.cpu0.core[0][0], "i386") ``` ### Adding a Trace Processor @@ -259,5 +302,53 @@ to the [manual start API](../harnessing/closed-box.md) is traced during executio code running on multiple cores, the additional cores can be added with: ```python -@tsffs.iface.tsffs.add_trace_processor(qsp.mb.cpu0.core[0][1]) -``` \ No newline at end of file +@tsffs.iface.config.add_trace_processor(qsp.mb.cpu0.core[0][1]) +``` + +### Disabling Coverage Reporting + +By default, the fuzzer will report new interesting control flow edges. This is +normally useful to check the fuzzer's progress and ensure it is finding new +paths. However in some cases, output may not be needed, so coverage reporting +can be disabled with: + +```python +@tsffs.coverage_reporting = False +``` + +### Enable Logging and Set Log path + +By default, the fuzzer will log useful informational messages in JSON format to +a log in the project directory (`log.json`). + +The path for this log can be set by setting: + +```python +@tsffs.log_path = SIM_lookup_file("%simics%) + "/log.json" +``` + +You can also disable the logging completely with: + +```python +@tsffs.log_to_file = False +``` + +### Keep All Corpus Entries + +For debugging purposes, TSFFS can be set to keep *all* corpus entries, not just +corpus entries which cause interesting results. This generates a large number +of corpus files. + +```python +@tsffs.keep_all_corpus = True +``` + +### Use Initial Buffer Contents As Corpus + +When using compiled-in or manual harnessing, the initial contents of the +testcase +buffer can be used as a seed corpus entry. This can be enabled with: + +```python +@tsffs.use_initial_as_corpus = True +``` diff --git a/docs/src/developer/debugging.md b/docs/src/developer/debugging.md index e04316ec..e7009490 100644 --- a/docs/src/developer/debugging.md +++ b/docs/src/developer/debugging.md @@ -6,9 +6,6 @@ The easiest way to do this is by loading and using it in a script that does what want. For example, early in development there was a bug when calling the interface API. -```txt -@tsffs.iface.tsffs.set_corpus_directory("%simics%/corpus") -``` So this script was used to help debug: @@ -19,7 +16,7 @@ tsffs.log-level 4 @import time @print("Sleeping") @time.sleep(30) -@tsffs.iface.tsffs.set_corpus_directory("%simics%/corpus") +# Call your API here ``` ALl this script does is sleep for 30 seconds, then call the API we care about. The 30 diff --git a/docs/src/harnessing/closed-box.md b/docs/src/harnessing/closed-box.md index 72bfabca..63f5c054 100644 --- a/docs/src/harnessing/closed-box.md +++ b/docs/src/harnessing/closed-box.md @@ -14,7 +14,7 @@ The same code as before, with no harness: ```c -#include "tsffs-gcc-x86_64.h" +#include "tsffs.h" int main() { char buf[20]; diff --git a/docs/src/harnessing/compiled-in.md b/docs/src/harnessing/compiled-in.md index 42d3faf4..8582c2ce 100644 --- a/docs/src/harnessing/compiled-in.md +++ b/docs/src/harnessing/compiled-in.md @@ -3,6 +3,7 @@ - [Compiled-In Harnessing](#compiled-in-harnessing) - [Using Provided Headers](#using-provided-headers) - [Multiple Harnesses in One Binary](#multiple-harnesses-in-one-binary) + - [Alternative Start Harnesses](#alternative-start-harnesses) - [Troubleshooting](#troubleshooting) - [Compile Errors About Temporaries](#compile-errors-about-temporaries) @@ -10,11 +11,12 @@ The TSFFS project provides harnessing headers for each supported combination of architecture and build toolchain. These headers can be found in the `harness` directory -in the repository. +in the repository. There is also a monolithic header `tsffs.h` which conditionally +compiles to whichever architecture is in use and can be used on any supported +architecture and platform. Each header provides the macros `HARNESS_START` and `HARNESS_STOP`. - `HARNESS_START(testcase_ptr, size_ptr)` takes two arguments, a buffer for the fuzzer to write testcases into each fuzzing iteration and a pointer to a pointer-sized variable, which the fuzzer will write the size of each testcase to each fuzzing iteration. The @@ -26,7 +28,7 @@ testcase, typically the size of the buffer passed as the first argument. For example, the following code will invoke the start and stop harnesses correctly: ```c -#include "tsffs-gcc-x86_64.h" +#include "tsffs.h" int main() { char buffer[20]; @@ -63,45 +65,41 @@ necessary. However, the defaults are equivalent to the configuration: ```python @tsffs.start_on_harness = True @tsffs.stop_on_harness = True -@tsffs.magic_start = 1 -@tsffs.magic_stop = 2 -@tsffs.magic_assert = 3 +@tsffs.magic_start_index = 0 +@tsffs.magic_stop_indices = [0] +@tsffs.magic_assert_indices = [0] ``` -This sets TSFFS to start the fuzzing loop on a *magic* harness with magic number `1` -(used by `HARNESS_START`) and stop execution and restore to the initial snapshot on -*magic* harnesses with magic number `2` (used by `HARNESS_STOP`). +This sets TSFFS to start the fuzzing loop on a *magic* +harness with magic number `1` (used by `HARNESS_START`) +and index `0` (the default) and stop execution and +restore to the initial snapshot on *magic* harnesses +with magic number `2` (used by `HARNESS_STOP`) and +index `0` (the default). ## Multiple Harnesses in One Binary -If multiple fuzzing campaigns will be run on the same target software, it is sometimes -advantageous to compile multiple harnesses into the same target software ahead of time, -and choose which to enable at runtime.Each provided header also provides two lower-level -macros for this purpose. - -* `__arch_harness_start(start, testcase_ptr, size_ptr)` -* `__arch_harness_stop(stop)` +If multiple fuzzing campaigns will be run on the same target software, it is +sometimes advantageous to compile multiple harnesses into the same target +software ahead of time, and choose which to enable at runtime.Each provided +header also provides two lower-level macros for this purpose. -These macros are used in the same way as `HARNESS_START` and `HARNESS_STOP`, with the -additional first argument. The default value of `start` is 1, and the default value of -`stop` is 2, but TSFFS can be configured to treat a different value as the trigger to -start or stop the fuzzing loop. Note that `start` and `stop` must be at least 1 and at -most 11, so it is possible to create a target software with up to 10 different harnesses -(by using magic values `1`, `3-11` as start values and `2` as the stop value). This is a -limitation of the instructions SIMICS understands as *magic*, some of which only support -an immediate `0<=n<=12` (with magic numbers 0 and 12 *being reserved by SIMICS). +* `HARNESS_START_INDEX(index, testcase_ptr, size_ptr)` +* `HARNESS_STOP(index)` -For convenience, definitions are provided for all the alternative magic numbers -available, through the definitions `MAGIC_ALT_0` through `MAGIC_ALT_7`. +These macros are used in the same way as `HARNESS_START` and `HARNESS_STOP`, +with the additional first argument. The default value of `index` is 0, but +TSFFS can be configured to treat a different index as the trigger to start or +stop the fuzzing loop. ```c -#include "tsffs-gcc-x86_64.h" +#include "tsffs.h" int main() { char buf[20]; size_t size = sizeof(buf); - __arch_harness_start(MAGIC_START, buf, &size); + HARNESS_START(buf, &size); if (size < 3) { // Stop early if there is not enough data @@ -113,7 +111,7 @@ int main() { // Stop normally on success HARNESS_STOP(); - __arch_harness_start(MAGIC_ALT_0, result, &size); + HARNESS_START_INDEX(1, result, &size); second_function_under_test(result); @@ -129,12 +127,26 @@ And configuration settings like: ```python @tsffs.start_on_harness = True @tsffs.stop_on_harness = True -@tsffs.start_magic_number = 4 +@tsffs.magic_start_index = 1 ``` With this runtime configuration, the first harness will be ignored, and only the second set of harness calls will be used. +## Alternative Start Harnesses + +Several additional variants of the start harness are provided to allow +different target software to be used with as little modification as possible. + +* `HARNESS_START_WITH_MAXIMUM_SIZE(void *buffer, size_t max_size)` takes a + pointer to a buffer like `HARNESS_START` but takes a size instead of a + pointer to a size as the second argument. Use this harness when the target + software does not need to read the actual buffer size. +* `HARNESS_START_WITH_MAXIMUM_SIZE_AND_PTR(void *buffer, void *size_ptr, size_t max_size)` + takes a pointer to both a buffer and size like `HARNESS_START`, and takes a + size as the third argument. Use this harness when the target software does + not initially have `*size_ptr` set to the maximum size, but still needs to + read the actual buffer size. ## Troubleshooting @@ -149,4 +161,4 @@ char buffer[100]; size_t size = sizeof(buffer); size_t size_ptr = &size; HARNESS_START(buffer, size_ptr); -``` \ No newline at end of file +``` diff --git a/docs/src/setup/windows.md b/docs/src/setup/windows.md index d2834eec..608ad073 100644 --- a/docs/src/setup/windows.md +++ b/docs/src/setup/windows.md @@ -265,7 +265,7 @@ ispm.exe projects $env:TEMP\TSFFS-Windows\ --create cp examples\docker-example\fuzz.simics $env:TEMP\TSFFS-Windows\ cp tests\rsrc\x86_64-uefi\* $env:TEMP\TSFFS-Windows\ cp tests\rsrc\minimal_boot_disk.craff $env:TEMP\TSFFS-Windows\ -cp harness\tsffs-gcc-x86_64.h $env:TEMP\TSFFS-Windows\ +cp harness\tsffs.h $env:TEMP\TSFFS-Windows\ cd $env:TEMP\TSFFS-Windows ./simics --no-win ./fuzz.simics ``` diff --git a/docs/src/tutorials/edk2-simics-platform-bios/harnessing.md b/docs/src/tutorials/edk2-simics-platform-bios/harnessing.md index 6eb4b40c..0b3c3a60 100644 --- a/docs/src/tutorials/edk2-simics-platform-bios/harnessing.md +++ b/docs/src/tutorials/edk2-simics-platform-bios/harnessing.md @@ -130,7 +130,7 @@ We'll add our harness in the form of a patch to `edk2-platforms`. Our `Dockerfile` from [previously](building-bios.md) just needs a couple modifications. First, we need to copy -[tsffs-gcc-x86_64.h](https://github.com/intel/tsffs/blob/main/harness/tsffs-gcc-x86_64.h) +[tsffs.h](https://github.com/intel/tsffs/blob/main/harness/tsffs.h) from the `harness` directory of the [repository](https://github.com/intel/tsffs/) and put it next to our `Dockerfile`. Then, just before the last `RUN` step (where we run `build_bios.py`), we'll add the following to create and apply our patch and copy the @@ -154,7 +154,7 @@ index 9cea5f4665..00815adba2 100644 #include #include -+#include "tsffs-gcc-x86_64.h" ++#include "tsffs.h" /** Convert a *.BMP graphics image to a GOP blt buffer. If a NULL Blt buffer is passed in a GopBlt buffer will be allocated by this routine. If a GopBlt @@ -232,7 +232,7 @@ index 9cea5f4665..00815adba2 100644 EOF -COPY tsffs-gcc-x86_64.h /workspace/edk2-platforms/Platform/Intel/SimicsOpenBoardPkg/Library/DxeLogoLib/tsffs-gcc-x86_64.h +COPY tsffs.h /workspace/edk2-platforms/Platform/Intel/SimicsOpenBoardPkg/Library/DxeLogoLib/tsffs.h RUN git -C /workspace/edk2-platforms apply /tmp/edk2-platforms.patch ``` diff --git a/docs/src/tutorials/edk2-uefi/reproducing-runs.md b/docs/src/tutorials/edk2-uefi/reproducing-runs.md index 5e83b38a..a1eb6a78 100644 --- a/docs/src/tutorials/edk2-uefi/reproducing-runs.md +++ b/docs/src/tutorials/edk2-uefi/reproducing-runs.md @@ -42,5 +42,5 @@ and more! Check out the SIMICS documentation and explore all the deep debugging capabilities that SIMICS offers. When you're done exploring, run `c` to continue. You can change the testcase you are examining by choosing a different one with -`tsffs.iface.tsffs.repro`, but you cannot resume fuzzing after entering repro mode due +`tsffs.iface.fuzz.repro`, but you cannot resume fuzzing after entering repro mode due to inconsistencies with the simulated system clock. diff --git a/docs/src/tutorials/edk2-uefi/writing-the-application.md b/docs/src/tutorials/edk2-uefi/writing-the-application.md index 150c3783..b7a35786 100644 --- a/docs/src/tutorials/edk2-uefi/writing-the-application.md +++ b/docs/src/tutorials/edk2-uefi/writing-the-application.md @@ -12,7 +12,7 @@ First, we will create a `src` directory with the following files: * `Tutorial.dsc` - The EDK2 description file for building our target software * `Tutorial.inf` - The EDK2 info file for building our target software * `Tutorial.c` - Our C source file -* `tsffs-gcc-x86_64.h` - The header file from the `harness` directory in the repository +* `tsffs.h` - The header file from the `harness` directory in the repository for our target architecture We'll cover the auxiliary and build files first, then we'll cover the source code. @@ -149,7 +149,7 @@ whole platform including our application and requisite additional libraries. Tutorial/Tutorial.inf ``` -## tsffs-gcc-x86_64.h +## tsffs.h Copy this file from the TSFFS repository's `harness` directory. It provides macros for compiling in the harness so the target software can communicate with and receive @@ -168,7 +168,7 @@ which tries to verify a certificate was issued by a given certificate authority. #include #include -#include "tsffs-gcc-x86_64.h" +#include "tsffs.h" void hexdump(UINT8 *buf, UINTN size) { for (UINTN i = 0; i < size; i++) { diff --git a/docs/src/tutorials/kernel-module/kernel-module-code.md b/docs/src/tutorials/kernel-module/kernel-module-code.md index 3664eb70..126dd49e 100644 --- a/docs/src/tutorials/kernel-module/kernel-module-code.md +++ b/docs/src/tutorials/kernel-module/kernel-module-code.md @@ -19,8 +19,8 @@ clean: This in turn invokes the standard KBuild process, specifying our current directory as an out of tree modules directory. -Then, copy `tsffs-gcc-riscv64.h` from the `harness` directory of the repository into -`src/tutorial-kernel-modules/package/kernel-modules/tutorial-mod/tsffs-gcc-riscv64.h`. +Then, copy `tsffs.h` from the `harness` directory of the repository into +`src/tutorial-kernel-modules/package/kernel-modules/tutorial-mod/tsffs.h`. Finally, we can write our Kernel module. Doing so is well beyond the scope of this tutorial, so copy the code below into @@ -41,7 +41,7 @@ tutorial, so copy the code below into #include #include -#include "tsffs-gcc-riscv64.h" +#include "tsffs.h" #define MAJOR_NUM 100 #define IOCTL_SET_MSG _IOW(MAJOR_NUM, 0, char *) diff --git a/docs/src/tutorials/kernel-module/kernel-module-harnessing.md b/docs/src/tutorials/kernel-module/kernel-module-harnessing.md index 73c185da..f6b99023 100644 --- a/docs/src/tutorials/kernel-module/kernel-module-harnessing.md +++ b/docs/src/tutorials/kernel-module/kernel-module-harnessing.md @@ -45,8 +45,8 @@ take over and start the fuzzing loop. ## Userspace Driver Code -First, copy `tsffs-gcc-riscv64.h` from the `harness` directory in the repository into -`src/tsffs-gcc-riscv64.h`. +First, copy `tsffs.h` from the `harness` directory in the repository into +`src/tsffs.h`. We'll also create `src/tutorial-mod-driver.c`, a user-space application which we will use to drive the kernel module code via IOCTL. @@ -59,7 +59,7 @@ use to drive the kernel module code via IOCTL. #include #include -#include "tsffs-gcc-riscv64.h" +#include "tsffs.h" #define MAJOR_NUM 100 #define IOCTL_SET_MSG _IOW(MAJOR_NUM, 0, char *) diff --git a/examples/docker-example/fuzz.simics b/examples/docker-example/fuzz.simics index f0614f57..fe0acb3f 100644 --- a/examples/docker-example/fuzz.simics +++ b/examples/docker-example/fuzz.simics @@ -6,35 +6,32 @@ load-module tsffs # Create the TSFFS fuzzer object -@tsffs = SIM_create_object(SIM_get_class("tsffs"), "tsffs", []) +init-tsffs # Set the log level for TSFFS to 3 (debug). Set to 4 (trace) or 1 (error) for additional # debug information or brevity, respectively tsffs.log-level 3 # Set to start on magic harness. This is the "default" behavior for harnessing. -@tsffs.iface.tsffs.set_start_on_harness(True) +@tsffs.start_on_harness = True # Set to stop on magic harness. This is the "default" behavior for harnessing. -@tsffs.iface.tsffs.set_stop_on_harness(True) +@tsffs.stop_on_harness = True # Set a virtual-time timeout of 3 seconds. If the target runs for this amount of time # without encountering a normal stop or another solution condition, it will be # considered a timeout. -@tsffs.iface.tsffs.set_timeout(3.0) +@tsffs.timeout = 3.0 # Set page faults as an exception-type solution. When the CPU raises exception #14, the # input that caused it will be saved as a solution. -@tsffs.iface.tsffs.add_exception_solution(14) +@tsffs.exceptions = [14] # Set to generate a random corpus. This is only used for demonstration purposes. -@tsffs.iface.tsffs.set_generate_random_corpus(True) - -# Public SIMICS uses SIMICS base version 6.0.169, so snapshots are not yet available -@tsffs.iface.tsffs.set_use_snapshots(False) +@tsffs.generate_random_corpus = True # Tokenize our UEFI executable to greatly enhance mutation efficacy -@tsffs.iface.tsffs.tokenize_executable("%simics%/test.efi") +@tsffs.token_executables += [SIM_lookup_file("%simics%/test.efi")] # Load the UEFI shell target for the QSP-x86 board, using an x86-64 Golden Cove (Sapphire Rapids) processor class # We set disk0 to the minimal_boot_disk.craff provided, which includes the SimicsAgent.efi app we can use to download diff --git a/examples/tutorials/edk2-simics-platform/.gitignore b/examples/tutorials/edk2-simics-platform/.gitignore index c0bbc4c1..1e5ef342 100644 --- a/examples/tutorials/edk2-simics-platform/.gitignore +++ b/examples/tutorials/edk2-simics-platform/.gitignore @@ -1,2 +1,2 @@ workspace -tsffs-gcc-x86_64.h \ No newline at end of file +tsffs*.h \ No newline at end of file diff --git a/examples/tutorials/edk2-simics-platform/Dockerfile b/examples/tutorials/edk2-simics-platform/Dockerfile index 65d98b6d..b6d08241 100644 --- a/examples/tutorials/edk2-simics-platform/Dockerfile +++ b/examples/tutorials/edk2-simics-platform/Dockerfile @@ -51,7 +51,7 @@ index 9cea5f4665..00815adba2 100644 #include #include -+#include "tsffs-gcc-x86_64.h" ++#include "tsffs.h" /** Convert a *.BMP graphics image to a GOP blt buffer. If a NULL Blt buffer is passed in a GopBlt buffer will be allocated by this routine. If a GopBlt @@ -129,7 +129,7 @@ index 9cea5f4665..00815adba2 100644 EOF -COPY tsffs-gcc-x86_64.h "${PROJECT}/edk2-platforms/Platform/Intel/SimicsOpenBoardPkg/Library/DxeLogoLib/tsffs-gcc-x86_64.h" +COPY tsffs.h "${PROJECT}/edk2-platforms/Platform/Intel/SimicsOpenBoardPkg/Library/DxeLogoLib/tsffs.h" RUN git -C "${PROJECT}/edk2-platforms" apply --whitespace fix /tmp/edk2-platforms.patch diff --git a/examples/tutorials/edk2-simics-platform/build-custom.sh b/examples/tutorials/edk2-simics-platform/build-custom.sh index 8740fc1a..71644220 100755 --- a/examples/tutorials/edk2-simics-platform/build-custom.sh +++ b/examples/tutorials/edk2-simics-platform/build-custom.sh @@ -21,7 +21,7 @@ if [ ! -d "${SCRIPT_DIR}/workspace" ]; then git clone https://github.com/tianocore/edk2-platforms.git "${SCRIPT_DIR}/workspace/edk2-platforms" git -C "${SCRIPT_DIR}/workspace/edk2-platforms" checkout "${EDK2_PLATFORMS_HASH}" git -C "${SCRIPT_DIR}/workspace/edk2-platforms" submodule update --init - cp "${SCRIPT_DIR}/../../../harness/tsffs-gcc-x86_64.h" "${SCRIPT_DIR}/workspace/edk2-platforms/Platform/Intel/SimicsOpenBoardPkg/Library/DxeLogoLib/tsffs-gcc-x86_64.h" + cp "${SCRIPT_DIR}/../../../harness/tsffs.h" "${SCRIPT_DIR}/workspace/edk2-platforms/Platform/Intel/SimicsOpenBoardPkg/Library/DxeLogoLib/tsffs.h" git clone https://github.com/tianocore/edk2-non-osi.git "${SCRIPT_DIR}/workspace/edk2-non-osi" git -C "${SCRIPT_DIR}/workspace/edk2-non-osi" checkout "${EDK2_NON_OSI_HASH}" git -C "${SCRIPT_DIR}/workspace/edk2-non-osi" submodule update --init diff --git a/examples/tutorials/edk2-simics-platform/build.sh b/examples/tutorials/edk2-simics-platform/build.sh index 998e3539..84e5f13d 100755 --- a/examples/tutorials/edk2-simics-platform/build.sh +++ b/examples/tutorials/edk2-simics-platform/build.sh @@ -9,7 +9,7 @@ DOCKERFILE="${SCRIPT_DIR}/Dockerfile" CONTAINER_UID=$(echo "${RANDOM}" | sha256sum | head -c 8) CONTAINER_NAME="${IMAGE_NAME}-tmp-${CONTAINER_UID}" -cp "${SCRIPT_DIR}/../../../harness/tsffs-gcc-x86_64.h" "${SCRIPT_DIR}/tsffs-gcc-x86_64.h" +cp "${SCRIPT_DIR}/../../../harness/tsffs.h" "${SCRIPT_DIR}/tsffs.h" mkdir -p "${SCRIPT_DIR}/project/" docker build -t "${IMAGE_NAME}" -f "${DOCKERFILE}" --build-arg "PROJECT=${SCRIPT_DIR}/project/workspace/" "${SCRIPT_DIR}" docker create --name "${CONTAINER_NAME}" "${IMAGE_NAME}" bash diff --git a/examples/tutorials/edk2-simics-platform/edk2-platforms.patch b/examples/tutorials/edk2-simics-platform/edk2-platforms.patch index d384ac2f..5f2ca173 100644 --- a/examples/tutorials/edk2-simics-platform/edk2-platforms.patch +++ b/examples/tutorials/edk2-simics-platform/edk2-platforms.patch @@ -1,8 +1,8 @@ -diff --git a/Platform/Intel/SimicsOpenBoardPkg/Library/DxeLogoLib/Logo.c b/Platform/Intel/SimicsOpenBoardPkg/Library/DxeLogoLib/Logo.c -index 9cea5f4665..00815adba2 100644 ---- a/Platform/Intel/SimicsOpenBoardPkg/Library/DxeLogoLib/Logo.c -+++ b/Platform/Intel/SimicsOpenBoardPkg/Library/DxeLogoLib/Logo.c -@@ -11,6 +11,7 @@ +diff --git a/Platform/Intel/SimicsOpenBoardPkg/Library/DxeLogoLib/Logo.c b/Platform/Intel/SimicsOpenBoardPkg/Library/DxeLogoLib/Logo.c +index 9cea5f4665..00815adba2 100644 +--- a/Platform/Intel/SimicsOpenBoardPkg/Library/DxeLogoLib/Logo.c ++++ b/Platform/Intel/SimicsOpenBoardPkg/Library/DxeLogoLib/Logo.c +@@ -11,6 +11,7 @@ #include #include #include @@ -10,15 +10,15 @@ index 9cea5f4665..00815adba2 100644 #include #include #include -@@ -22,6 +23,7 @@ +@@ -22,6 +23,7 @@ #include #include -+#include "tsffs-gcc-x86_64.h" ++#include "tsffs.h" /** Convert a *.BMP graphics image to a GOP blt buffer. If a NULL Blt buffer is passed in a GopBlt buffer will be allocated by this routine. If a GopBlt -@@ -164,9 +166,6 @@ ConvertBmpToGopBlt ( +@@ -164,9 +166,6 @@ ConvertBmpToGopBlt ( *GopBltSize = (UINTN) BltBufferSize; *GopBlt = AllocatePool (*GopBltSize); IsAllocated = TRUE; @@ -28,7 +28,7 @@ index 9cea5f4665..00815adba2 100644 } else { // // GopBlt has been allocated by caller. -@@ -184,6 +183,7 @@ ConvertBmpToGopBlt ( +@@ -184,6 +183,7 @@ ConvertBmpToGopBlt ( // Convert image from BMP to Blt buffer format // BltBuffer = *GopBlt; @@ -36,7 +36,7 @@ index 9cea5f4665..00815adba2 100644 for (Height = 0; Height < BmpHeader->PixelHeight; Height++) { Blt = &BltBuffer[(BmpHeader->PixelHeight - Height - 1) * BmpHeader->PixelWidth]; for (Width = 0; Width < BmpHeader->PixelWidth; Width++, Image++, Blt++) { -@@ -398,6 +398,7 @@ EnableBootLogo ( +@@ -398,6 +398,7 @@ EnableBootLogo ( // Try BMP decoder // Blt = NULL; @@ -44,7 +44,7 @@ index 9cea5f4665..00815adba2 100644 Status = ConvertBmpToGopBlt ( ImageData, ImageSize, -@@ -411,6 +412,7 @@ EnableBootLogo ( +@@ -411,6 +412,7 @@ EnableBootLogo ( FreePool (ImageData); if (Badging == NULL) { @@ -52,7 +52,7 @@ index 9cea5f4665..00815adba2 100644 return Status; } else { continue; -@@ -537,6 +539,7 @@ Done: +@@ -537,6 +539,7 @@ Done: FreePool (Blt); } @@ -60,7 +60,7 @@ index 9cea5f4665..00815adba2 100644 return Status; } -@@ -561,6 +564,7 @@ Done: +@@ -561,6 +564,7 @@ Done: // Ensure the LogoHeight * LogoWidth doesn't overflow // if (LogoHeight > DivU64x64Remainder ((UINTN) ~0, LogoWidth, NULL)) { @@ -68,7 +68,7 @@ index 9cea5f4665..00815adba2 100644 return EFI_UNSUPPORTED; } BufferSize = MultU64x64 (LogoWidth, LogoHeight); -@@ -569,11 +573,13 @@ Done: +@@ -569,11 +573,13 @@ Done: // Ensure the BufferSize * sizeof (EFI_GRAPHICS_OUTPUT_BLT_PIXEL) doesn't overflow // if (BufferSize > DivU64x32 ((UINTN) ~0, sizeof (EFI_GRAPHICS_OUTPUT_BLT_PIXEL))) { @@ -82,7 +82,7 @@ index 9cea5f4665..00815adba2 100644 return EFI_OUT_OF_RESOURCES; } -@@ -600,5 +606,6 @@ Done: +@@ -600,5 +606,6 @@ Done: } FreePool (LogoBlt); diff --git a/examples/tutorials/edk2-uefi/src/Tutorial.c b/examples/tutorials/edk2-uefi/src/Tutorial.c index 48f50675..a7fa529a 100644 --- a/examples/tutorials/edk2-uefi/src/Tutorial.c +++ b/examples/tutorials/edk2-uefi/src/Tutorial.c @@ -8,7 +8,7 @@ #include #include -#include "tsffs-gcc-x86_64.h" +#include "tsffs.h" void hexdump(UINT8 *buf, UINTN size) { for (UINTN i = 0; i < size; i++) { diff --git a/examples/tutorials/edk2-uefi/src/tsffs-gcc-x86_64.h b/examples/tutorials/edk2-uefi/src/tsffs-gcc-x86_64.h deleted file mode 100644 index 7925dae7..00000000 --- a/examples/tutorials/edk2-uefi/src/tsffs-gcc-x86_64.h +++ /dev/null @@ -1,122 +0,0 @@ -// Copyright (C) 2024 Intel Corporation -// SPDX-License-Identifier: Apache-2.0 - -/// Definitions and macros for compiled-in harnessing of C and C++ target -/// software for the RISC-V (64-bit) architecture -/// -/// Example: -/// ```c -/// #include "tsffs-gcc-x86_64.h" -/// -/// int main() { -/// char buf[0x10]; -/// size_t size = 0x10; -/// size_t *size_ptr = &size; -/// HARNESS_START((char *)buf, size_ptr); -/// int retval = YourSpecialDecoder(buf, *size_ptr); -/// if (!retval) { -/// HARNESS_ASSERT(); -/// } else { -/// HARNESS_STOP(); -/// } -/// } -/// ``` - -#ifndef TSFFS_H -#define TSFFS_H - -/// Define common with LibFuzzer and other fuzzers to allow code that is -/// fuzzing-specific to be left in the codebase. See -/// https://llvm.org/docs/LibFuzzer.html#id35 for more information -#ifndef FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION -#define FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION (1) -#endif // FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION - -/// Magic value defined by SIMICS as the "leaf" value of a CPUID instruction -/// that is treated as a magic instruction. -#define MAGIC (0x4711U) -/// Default magic instruction `n` value to signal the TSFFS fuzzer to start the -/// fuzzing loop -#define MAGIC_START (0x0001U) -/// Default magic instruction `n` value to signal the TSFFS fuzzer to stop and -/// reset the fuzzing loop -#define MAGIC_STOP (0x0002U) -/// Default magic instruction `n` value to signal the TSFFS fuzzer that an error -/// has occurred and the testcase input should be saved as a solution -#define MAGIC_ASSERT (0x0003U) - -/// Invoke the magic instruction defined by SIMICS for the x86-64 architecture -/// (`cpuid`) with a specific value of `n`, after setting register `rdi` to the -/// value of the pointer to the testcase and register `rsi` to the value of the -/// pointer to the testcase size. These registers are accessed by the fuzzer and -/// are defined per-architecture. -#define __cpuid_extended2(value, inout_ptr_0, inout_ptr_1) \ - unsigned int _a __attribute__((unused)) = 0; \ - __asm__ __volatile__("cpuid" \ - : "=a"(_a) \ - : "a"(value), "D"(inout_ptr_0), "S"(inout_ptr_1) \ - : "rbx", "rcx", "rdx"); - -/// Invoke the magic instruction defined by SIMICS for the x86-64 architecture -/// (`cpuid`) with a specific value of `n` -#define __cpuid(value) \ - unsigned int _a __attribute__((unused)) = 0; \ - __asm__ __volatile__("cpuid\n\t" \ - : "=a"(_a) \ - : "a"(value) \ - : "rbx", "rcx", "rdx") - -/// Signal the fuzzer using a specific magic value `start` to start the fuzzing -/// loop at the point this macro is called. A snapshot will be taken when the -/// macro is called, and the maximum testcase size `*size_ptr` will be saved as -/// `max_testcase_size`. Each iteration of the fuzzing loop, the fuzzer input -/// (the "testcase") will be written to `*testcase_ptr` as if running -/// `memcpy(testcase_ptr, current_testcase, max_testcase_size)`, and the actual -/// size of the current testcase will be written to -/// `*size_ptr` as if running `*size_ptr = current_testcase_size`. -#define __arch_harness_start(start, testcase_ptr, size_ptr) \ - do { \ - unsigned int magic = (start << 0x10U) | MAGIC; \ - __cpuid_extended2(magic, testcase_ptr, size_ptr); \ - } while (0) - -/// Signal the fuzzer using the a specific magic value (`stop`) to stop and -/// reset to the beginning of the fuzzing loop with a "normal" stop status, -/// indicating no solution has occurred. -#define __arch_harness_stop(stop) \ - do { \ - unsigned int magic = (stop << 0x10U) | MAGIC; \ - __cpuid(magic); \ - } while (0) - -/// Signal the fuzzer using the default magic value to start the fuzzing loop at -/// the point this macro is called. A snapshot will be taken when the macro is -/// called, and the maximum testcase size `*size_ptr` will be saved as -/// `max_testcase_size`. Each iteration of the fuzzing loop, the fuzzer input -/// (the "testcase") will be written to -/// `*testcase_ptr` as if running `memcpy(testcase_ptr, current_testcase, -/// max_testcase_size)`, and the actual size of the current testcase will be -/// written to -/// `*size_ptr` as if running `*size_ptr = current_testcase_size`. -#define HARNESS_START(testcase_ptr, size_ptr) \ - do { \ - __arch_harness_start(MAGIC_START, testcase_ptr, size_ptr); \ - } while (0) - -/// Signal the fuzzer using the default magic value to stop and reset to the -/// beginning of the fuzzing loop with a "normal" stop status, indicating no -/// solution has occurred. -#define HARNESS_STOP() \ - do { \ - __arch_harness_stop(MAGIC_STOP); \ - } while (0) - -/// Signal the fuzzer using the default magic value to stop and reset to the -/// beginning of the fuzzing loop with a "solution" stop status, indicating some -/// custom error has occurred. -#define HARNESS_ASSERT() \ - do { \ - __arch_harness_stop(MAGIC_ASSERT); \ - } while (0) - -#endif // TSFFS_H \ No newline at end of file diff --git a/examples/tutorials/edk2-uefi/src/tsffs.h b/examples/tutorials/edk2-uefi/src/tsffs.h new file mode 100644 index 00000000..95b604fd --- /dev/null +++ b/examples/tutorials/edk2-uefi/src/tsffs.h @@ -0,0 +1,2876 @@ +// Copyright (C) 2024 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 + +#ifdef __GNUC__ +#ifdef __i386__ +// Copyright (C) 2024 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 + +/// Definitions and macros for compiled-in harnessing of C and C++ target +/// software for the X86 architecture. + +#ifndef TSFFS_H +#define TSFFS_H + +/// Define common with LibFuzzer and other fuzzers to allow code that is +/// fuzzing-specific to be left in the codebase. See +/// https://llvm.org/docs/LibFuzzer.html#id35 for more information +#ifndef FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION +#define FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION (1) +#endif // FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION + +/// __cpuid +/// +/// Invoke the CPUID instruction with a specific value `value` in register +/// `rax`. +/// +/// # Arguments +/// +/// - `value`: The value to load into the `rax` register before invoking the +/// CPUID instruction +#define __cpuid(value) \ + unsigned int _a __attribute__((unused)) = 0; \ + unsigned int _b __attribute__((unused)) = 0; \ + unsigned int _c __attribute__((unused)) = 0; \ + unsigned int _d __attribute__((unused)) = 0; \ + __asm__ __volatile__("cpuid\n\t" \ + : "=a"(_a), "=b"(_b), "=c"(_c), "=d"(_d) \ + : "a"(value)); + +/// __cpuid_extended1 +/// +/// Invoke the CPUID instruction with a specific value `value` in register +/// `rax` and a pseudo-argument in register `rdi`. +/// +/// # Arguments +/// +/// - `value`: The value to load into the `rax` register before invoking the +/// CPUID instruction +/// - `arg0`: The value to load into the `rdi` register before invoking the +/// CPUID instruction +#define __cpuid_extended1(value, arg0) \ + unsigned int _a __attribute__((unused)) = 0; \ + unsigned int _b __attribute__((unused)) = 0; \ + unsigned int _c __attribute__((unused)) = 0; \ + unsigned int _d __attribute__((unused)) = 0; \ + __asm__ __volatile__("cpuid\n\t" \ + : "=a"(_a), "=b"(_b), "=c"(_c), "=d"(_d) \ + : "a"(value), "D"(arg0)); + +/// __cpuid_extended2 +/// +/// Invoke the CPUID instruction with a specific value `value` in register +/// `rax` and a pseudo-arguments in registers `rdi` and `rsi`. +/// +/// # Arguments +/// +/// - `value`: The value to load into the `rax` register before invoking the +/// CPUID instruction +/// - `arg0`: The value to load into the `rdi` register before invoking the +/// CPUID instruction +/// - `arg1`: The value to load into the `rsi` register before invoking the +/// CPUID instruction +#define __cpuid_extended2(value, arg0, arg1) \ + unsigned int _a __attribute__((unused)) = 0; \ + unsigned int _b __attribute__((unused)) = 0; \ + unsigned int _c __attribute__((unused)) = 0; \ + unsigned int _d __attribute__((unused)) = 0; \ + __asm__ __volatile__("cpuid\n\t" \ + : "=a"(_a), "=b"(_b), "=c"(_c), "=d"(_d) \ + : "a"(value), "D"(arg0), "S"(arg1)); + +/// __cpuid_extended3 +/// +/// Invoke the CPUID instruction with a specific value `value` in register +/// `rax` and a pseudo-arguments in registers `rdi`, `rsi`, and `rdx`. +/// +/// # Arguments +/// +/// - `value`: The value to load into the `rax` register before invoking the +/// CPUID instruction +/// - `arg0`: The value to load into the `rdi` register before invoking the +/// CPUID instruction +/// - `arg1`: The value to load into the `rsi` register before invoking the +/// CPUID instruction +/// - `arg2`: The value to load into the `rdx` register before invoking the +/// CPUID instruction +#define __cpuid_extended3(value, arg0, arg1, arg2) \ + unsigned int _a __attribute__((unused)) = 0; \ + unsigned int _b __attribute__((unused)) = 0; \ + unsigned int _c __attribute__((unused)) = 0; \ + unsigned int _d __attribute__((unused)) = 0; \ + __asm__ __volatile__("cpuid\n\t" \ + : "=a"(_a), "=b"(_b), "=c"(_c), "=d"(_d) \ + : "a"(value), "D"(arg0), "S"(arg1), "d"(arg2)); + +/// __cpuid_extended4 +/// +/// Invoke the CPUID instruction with a specific value `value` in register +/// `rax` and a pseudo-arguments in registers `rdi`, `rsi`, `rdx`, and `rcx`. +/// +/// # Arguments +/// +/// - `value`: The value to load into the `rax` register before invoking the +/// CPUID instruction +/// - `arg0`: The value to load into the `rdi` register before invoking the +/// CPUID instruction +/// - `arg1`: The value to load into the `rsi` register before invoking the +/// CPUID instruction +/// - `arg2`: The value to load into the `rdx` register before invoking the +/// CPUID instruction +/// - `arg3`: The value to load into the `rcx` register before invoking the +/// CPUID instruction +#define __cpuid_extended4(value, arg0, arg1, arg2, arg3) \ + unsigned int _a __attribute__((unused)) = 0; \ + unsigned int _b __attribute__((unused)) = 0; \ + unsigned int _c __attribute__((unused)) = 0; \ + unsigned int _d __attribute__((unused)) = 0; \ + __asm__ __volatile__("cpuid\n\t" \ + : "=a"(_a), "=b"(_b), "=c"(_c), "=d"(_d) \ + : "a"(value), "D"(arg0), "S"(arg1), "d"(arg2), \ + "c"(arg3)); + +/// Magic value defined by SIMICS as the "leaf" value of a CPUID instruction +/// that is treated as a magic instruction. +#define MAGIC (0x4711U) + +/// The default index number used for magic instructions. All magic instructions +/// support multiple start and stop indices, which defaults to 0 if not +/// specified. +#define DEFAULT_INDEX (0x0000U) + +/// Pseudo-hypercall number to signal the fuzzer to use the first argument to +/// the magic instruction as the pointer to the testcase buffer and the second +/// argument as a pointer to the size of the testcase buffer. +#define N_START_BUFFER_PTR_SIZE_PTR (0x0001U) + +/// HARNESS_START +/// +/// Signal the fuzzer to start the fuzzing loop at the point this macro is +/// called. The default "index" of 0 will be used. If you need multiple start +/// harnesses compiled into the same binary, you can use the +/// `HARNESS_START_INDEX` macro to specify different indices, then enable them +/// at runtime by configuring the fuzzer. +/// +/// When this macro is called: +/// +/// - A snapshot will be taken and saved +/// - The buffer pointed to by `buffer` will be saved and used as the testcase +/// buffer. Each +/// fuzzing iteration, a new test case will be written to this buffer. +/// - The size of the buffer pointed to by `size_ptr` will be saved as the +/// maximum testcase size. Each fuzzing iteration, the actual size of the +/// current testcase will be written to `*size_ptr`. +/// +/// # Arguments +/// +/// - `buffer`: The pointer to the testcase buffer +/// - `size_ptr`: The pointer to the size of the testcase buffer +/// +/// # Example +/// +/// ``` +/// unsigned char buffer[1024]; +/// size_t size; +/// HARNESS_START(buffer, &size); +/// ``` +#define HARNESS_START(buffer, size_ptr) \ + do { \ + unsigned int value = (N_START_BUFFER_PTR_SIZE_PTR << 0x10U) | MAGIC; \ + __cpuid_extended3(value, DEFAULT_INDEX, buffer, size_ptr); \ + } while (0); + +/// HARNESS_START_INDEX +/// +/// Signal the fuzzer to start the fuzzing loop at the point this macro is +/// called. The index specified by `start_index` will be used. If you need +/// multiple start harnesses compiled into the same binary, you can use this +/// macro to specify different indices, then enable them at runtime by +/// configuring the fuzzer. +/// +/// When this macro is called: +/// +/// - A snapshot will be taken and saved +/// - The buffer pointed to by `buffer` will be saved and used as the testcase +/// buffer. Each +/// fuzzing iteration, a new test case will be written to this buffer. +/// - The size of the buffer pointed to by `size_ptr` will be saved as the +/// maximum testcase size. Each fuzzing iteration, the actual size of the +/// current testcase will be written to `*size_ptr`. +/// +/// # Arguments +/// +/// - `start_index`: The index to use for this start harness +/// - `buffer`: The pointer to the testcase buffer +/// - `size_ptr`: The pointer to the size of the testcase buffer +/// +/// # Example +/// +/// ``` +/// unsigned char buffer[1024]; +/// size_t size; +/// HARNESS_START_INDEX(0x0001U, buffer, &size); +/// ``` +#define HARNESS_START_INDEX(start_index, buffer, size_ptr) \ + do { \ + unsigned int value = (N_START_BUFFER_PTR_SIZE_PTR << 0x10U) | MAGIC; \ + __cpuid_extended3(value, start_index, buffer, size_ptr); \ + } while (0); + +/// Pseudo-hypercall number to signal the fuzzer to use the first argument to +/// the magic instruction as the pointer to the testcase buffer and the second +/// argument as the maximum size of the testcase buffer. +#define N_START_BUFFER_PTR_SIZE_VAL (0x0002U) + +/// HARNESS_START_WITH_MAXIMUM_SIZE +/// +/// Signal the fuzzer to start the fuzzing loop at the point this macro is +/// called. The default "index" of 0 will be used. If you need multiple start +/// harnesses compiled into the same binary, you can use the +/// `HARNESS_START_WITH_MAXIMUM_SIZE_INDEX` macro to specify different indices, +/// then enable them at runtime by configuring the fuzzer. +/// +/// When this macro is called: +/// +/// - A snapshot will be taken and saved +/// - The buffer pointed to by `buffer` will be saved and used as the testcase +/// buffer. Each +/// fuzzing iteration, a new test case will be written to this buffer. +/// - The `max_size` value will be saved as the maximum testcase size. Fuzzing +/// test cases will be truncated to this size before being written to the +/// buffer. +/// +/// # Arguments +/// +/// - `buffer`: The pointer to the testcase buffer +/// - `max_size`: The maximum size of the testcase buffer +/// +/// # Example +/// +/// ``` +/// unsigned char buffer[1024]; +/// HARNESS_START_WITH_MAXIMUM_SIZE(buffer, 1024); +/// ``` +#define HARNESS_START_WITH_MAXIMUM_SIZE(buffer, max_size) \ + do { \ + unsigned int value = (N_START_BUFFER_PTR_SIZE_VAL << 0x10U) | MAGIC; \ + __cpuid_extended3(value, DEFAULT_INDEX, buffer, max_size); \ + } while (0); + +/// HARNESS_START_WITH_MAXIMUM_SIZE_INDEX +/// +/// Signal the fuzzer to start the fuzzing loop at the point this macro is +/// called. The index specified by `start_index` will be used. If you need +/// multiple start harnesses compiled into the same binary, you can use this +/// macro to specify different indices, then enable them at runtime by +/// configuring the fuzzer. +/// +/// When this macro is called: +/// +/// - A snapshot will be taken and saved +/// - The buffer pointed to by `buffer` will be saved and used as the testcase +/// buffer. Each +/// fuzzing iteration, a new test case will be written to this buffer. +/// - The `max_size` value will be saved as the maximum testcase size. Fuzzing +/// test cases will be truncated to this size before being written to the +/// buffer. +/// +/// # Arguments +/// +/// - `start_index`: The index to use for this start harness +/// - `buffer`: The pointer to the testcase buffer +/// - `max_size`: The maximum size of the testcase buffer +/// +/// # Example +/// +/// ``` +/// unsigned char buffer[1024]; +/// HARNESS_START_WITH_MAXIMUM_SIZE_INDEX(0x0001U, buffer, 1024); +/// ``` +#define HARNESS_START_WITH_MAXIMUM_SIZE_INDEX(start_index, buffer, max_size) \ + do { \ + unsigned int value = (N_START_BUFFER_PTR_SIZE_VAL << 0x10U) | MAGIC; \ + __cpuid_extended3(value, start_index, buffer, max_size); \ + } while (0); + +/// Pseudo-hypercall number to signal the fuzzer to use the first argument to +/// the magic instruction as the pointer to the testcase buffer, the second +/// argument as a pointer to the size of the testcase buffer, and the third +/// argument as the maximum size of the testcase buffer. +#define N_START_BUFFER_PTR_SIZE_PTR_VAL (0x0003U) + +/// HARNESS_START_WITH_MAXIMUM_SIZE_AND_PTR +/// +/// Signal the fuzzer to start the fuzzing loop at the point this macro is +/// called. The default "index" of 0 will be used. If you need multiple start +/// harnesses compiled into the same binary, you can use the +/// `HARNESS_START_WITH_MAXIMUM_SIZE_AND_PTR_INDEX` macro to specify different +/// indices, then enable them at runtime by configuring the fuzzer. +/// +/// When this macro is called: +/// +/// - A snapshot will be taken and saved +/// - The buffer pointed to by `buffer` will be saved and used as the testcase +/// buffer. Each +/// fuzzing iteration, a new test case will be written to this buffer. +/// - The address `size_ptr` will be saved. Each fuzzing iteration, the actual +/// size of the current testcase will be written to `*size_ptr`. +/// - The `max_size` value will be saved as the maximum testcase size. Fuzzing +/// test cases will be truncated to this size before being written to the +/// buffer. +/// +/// # Arguments +/// +/// - `buffer`: The pointer to the testcase buffer +/// - `size_ptr`: The pointer to the size of the testcase buffer +/// - `max_size`: The maximum size of the testcase buffer +/// +/// # Example +/// +/// ``` +/// unsigned char buffer[1024]; +/// size_t size; +/// HARNESS_START_WITH_MAXIMUM_SIZE_AND_PTR(buffer, &size, 1024); +/// ``` +#define HARNESS_START_WITH_MAXIMUM_SIZE_AND_PTR(buffer, size_ptr, max_size) \ + do { \ + unsigned int value = (N_START_BUFFER_PTR_SIZE_PTR_VAL << 0x10U) | MAGIC; \ + __cpuid_extended4(value, DEFAULT_INDEX, buffer, size_ptr, max_size); \ + } while (0); + +/// HARNESS_START_WITH_MAXIMUM_SIZE_AND_PTR_INDEX +/// +/// Signal the fuzzer to start the fuzzing loop at the point this macro is +/// called. The index specified by `start_index` will be used. If you need +/// multiple start harnesses compiled into the same binary, you can use this +/// macro to specify different indices, then enable them at runtime by +/// configuring the fuzzer. +/// +/// When this macro is called: +/// +/// - A snapshot will be taken and saved +/// - The buffer pointed to by `buffer` will be saved and used as the testcase +/// buffer. Each +/// fuzzing iteration, a new test case will be written to this buffer. +/// - The address `size_ptr` will be saved. Each fuzzing iteration, the actual +/// size of the current testcase will be written to `*size_ptr`. +/// - The `max_size` value will be saved as the maximum testcase size. Fuzzing +/// test cases will be truncated to this size before being written to the +/// buffer. +/// +/// # Arguments +/// +/// - `start_index`: The index to use for this start harness +/// - `buffer`: The pointer to the testcase buffer +/// - `size_ptr`: The pointer to the size of the testcase buffer +/// - `max_size`: The maximum size of the testcase buffer +/// +/// # Example +/// +/// ``` +/// unsigned char buffer[1024]; +/// size_t size; +/// HARNESS_START_WITH_MAXIMUM_SIZE_AND_PTR_INDEX(0x0001U, buffer, &size, 1024); +/// ``` +#define HARNESS_START_WITH_MAXIMUM_SIZE_AND_PTR_INDEX(start_index, buffer, \ + size_ptr, max_size) \ + do { \ + unsigned int value = (N_START_BUFFER_PTR_SIZE_PTR_VAL << 0x10U) | MAGIC; \ + __cpuid_extended4(value, start_index, buffer, size_ptr, max_size); \ + } while (0); + +/// Pseudo-hypercall number to signal the fuzzer to stop the current fuzzing +/// iteration and reset to the beginning of the fuzzing loop with a "normal" +/// stop status, indicating no solution has occurred. +#define N_STOP_NORMAL (0x0004U) + +/// HARNESS_STOP +/// +/// Signal the fuzzer to stop and reset to the beginning of the fuzzing loop +/// with a "normal" stop status, indicating no solution has occurred. The +/// default index of 0 will be used. If you need to differentiate between +/// multiple stop harnesses compiled into the same binary, you can use the +/// `HARNESS_STOP_INDEX` macro to specify different indices, then enable them at +/// runtime by configuring the fuzzer. +/// +/// # Example +/// +/// ``` +/// HARNESS_STOP(); +/// ``` +#define HARNESS_STOP() \ + do { \ + unsigned int value = (N_STOP_NORMAL << 0x10U) | MAGIC; \ + __cpuid_extended1(value, DEFAULT_INDEX); \ + } while (0); + +/// HARNESS_STOP_INDEX +/// +/// Signal the fuzzer to stop and reset to the beginning of the fuzzing loop +/// with a "normal" stop status, indicating no solution has occurred. The index +/// specified by `stop_index` will be used. If you need to differentiate between +/// multiple stop harnesses compiled into the same binary, you can use this +/// macro to specify different indices, then enable them at runtime by +/// configuring the fuzzer. +/// +/// # Arguments +/// +/// - `stop_index`: The index to use for this stop harness +/// +/// # Example +/// +/// ``` +/// HARNESS_STOP_INDEX(0x0001U); +/// ``` +#define HARNESS_STOP_INDEX(stop_index) \ + do { \ + unsigned int value = (N_STOP_NORMAL << 0x10U) | MAGIC; \ + __cpuid_extended1(value, stop_index); \ + } while (0); + +/// Pseudo-hypercall number to signal the fuzzer that a custom assertion has +/// occurred, and the fuzzer should stop the current fuzzing iteration and reset +/// to the beginning of the fuzzing loop with a "solution" stop status. +#define N_STOP_ASSERT (0x0005U) + +/// HARNESS_ASSERT +/// +/// Signal the fuzzer that a custom assertion has occurred, and the fuzzer +/// should stop the current fuzzing iteration and reset to the beginning of the +/// fuzzing loop with a "solution" stop status. The default index of 0 will be +/// used. If you need to differentiate between multiple assertion harnesses +/// compiled into the same binary, you can use the `HARNESS_ASSERT_INDEX` macro +/// to specify different indices, then enable them at runtime by configuring the +/// fuzzer. +/// +/// # Example +/// +/// ``` +/// HARNESS_ASSERT(); +/// ``` +#define HARNESS_ASSERT() \ + do { \ + unsigned int value = (N_STOP_ASSERT << 0x10U) | MAGIC; \ + __cpuid_extended1(value, DEFAULT_INDEX); \ + } while (0); + +/// HARNESS_ASSERT_INDEX +/// +/// Signal the fuzzer that a custom assertion has occurred, and the fuzzer +/// should stop the current fuzzing iteration and reset to the beginning of the +/// fuzzing loop with a "solution" stop status. The index specified by +/// `assert_index` will be used. If you need to differentiate between multiple +/// assertion harnesses compiled into the same binary, you can use this macro to +/// specify different indices, then enable them at runtime by configuring the +/// fuzzer. +/// +/// # Arguments +/// +/// - `assert_index`: The index to use for this assertion harness +/// +/// # Example +/// +/// ``` +/// HARNESS_ASSERT_INDEX(0x0001U); +/// ``` +#define HARNESS_ASSERT_INDEX(assert_index) \ + do { \ + unsigned int value = (N_STOP_ASSERT << 0x10U) | MAGIC; \ + __cpuid_extended1(value, assert_index); \ + } while (0); + +#endif // TSFFS_H +#elif __x86_64__ +// Copyright (C) 2024 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 + +/// Definitions and macros for compiled-in harnessing of C and C++ target +/// software for the x86_64 architecture. + +#ifndef TSFFS_H +#define TSFFS_H + +/// Define common with LibFuzzer and other fuzzers to allow code that is +/// fuzzing-specific to be left in the codebase. See +/// https://llvm.org/docs/LibFuzzer.html#id35 for more information +#ifndef FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION +#define FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION (1) +#endif // FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION + +/// __cpuid +/// +/// Invoke the CPUID instruction with a specific value `value` in register +/// `rax`. +/// +/// # Arguments +/// +/// - `value`: The value to load into the `rax` register before invoking the +/// CPUID instruction +#define __cpuid(value) \ + unsigned int _a __attribute__((unused)) = 0; \ + unsigned int _b __attribute__((unused)) = 0; \ + unsigned int _c __attribute__((unused)) = 0; \ + unsigned int _d __attribute__((unused)) = 0; \ + __asm__ __volatile__("cpuid\n\t" \ + : "=a"(_a), "=b"(_b), "=c"(_c), "=d"(_d) \ + : "a"(value)); + +/// __cpuid_extended1 +/// +/// Invoke the CPUID instruction with a specific value `value` in register +/// `rax` and a pseudo-argument in register `rdi`. +/// +/// # Arguments +/// +/// - `value`: The value to load into the `rax` register before invoking the +/// CPUID instruction +/// - `arg0`: The value to load into the `rdi` register before invoking the +/// CPUID instruction +#define __cpuid_extended1(value, arg0) \ + unsigned int _a __attribute__((unused)) = 0; \ + unsigned int _b __attribute__((unused)) = 0; \ + unsigned int _c __attribute__((unused)) = 0; \ + unsigned int _d __attribute__((unused)) = 0; \ + __asm__ __volatile__("cpuid\n\t" \ + : "=a"(_a), "=b"(_b), "=c"(_c), "=d"(_d) \ + : "a"(value), "D"(arg0)); + +/// __cpuid_extended2 +/// +/// Invoke the CPUID instruction with a specific value `value` in register +/// `rax` and a pseudo-arguments in registers `rdi` and `rsi`. +/// +/// # Arguments +/// +/// - `value`: The value to load into the `rax` register before invoking the +/// CPUID instruction +/// - `arg0`: The value to load into the `rdi` register before invoking the +/// CPUID instruction +/// - `arg1`: The value to load into the `rsi` register before invoking the +/// CPUID instruction +#define __cpuid_extended2(value, arg0, arg1) \ + unsigned int _a __attribute__((unused)) = 0; \ + unsigned int _b __attribute__((unused)) = 0; \ + unsigned int _c __attribute__((unused)) = 0; \ + unsigned int _d __attribute__((unused)) = 0; \ + __asm__ __volatile__("cpuid\n\t" \ + : "=a"(_a), "=b"(_b), "=c"(_c), "=d"(_d) \ + : "a"(value), "D"(arg0), "S"(arg1)); + +/// __cpuid_extended3 +/// +/// Invoke the CPUID instruction with a specific value `value` in register +/// `rax` and a pseudo-arguments in registers `rdi`, `rsi`, and `rdx`. +/// +/// # Arguments +/// +/// - `value`: The value to load into the `rax` register before invoking the +/// CPUID instruction +/// - `arg0`: The value to load into the `rdi` register before invoking the +/// CPUID instruction +/// - `arg1`: The value to load into the `rsi` register before invoking the +/// CPUID instruction +/// - `arg2`: The value to load into the `rdx` register before invoking the +/// CPUID instruction +#define __cpuid_extended3(value, arg0, arg1, arg2) \ + unsigned int _a __attribute__((unused)) = 0; \ + unsigned int _b __attribute__((unused)) = 0; \ + unsigned int _c __attribute__((unused)) = 0; \ + unsigned int _d __attribute__((unused)) = 0; \ + __asm__ __volatile__("cpuid\n\t" \ + : "=a"(_a), "=b"(_b), "=c"(_c), "=d"(_d) \ + : "a"(value), "D"(arg0), "S"(arg1), "d"(arg2)); + +/// __cpuid_extended4 +/// +/// Invoke the CPUID instruction with a specific value `value` in register +/// `rax` and a pseudo-arguments in registers `rdi`, `rsi`, `rdx`, and `rcx`. +/// +/// # Arguments +/// +/// - `value`: The value to load into the `rax` register before invoking the +/// CPUID instruction +/// - `arg0`: The value to load into the `rdi` register before invoking the +/// CPUID instruction +/// - `arg1`: The value to load into the `rsi` register before invoking the +/// CPUID instruction +/// - `arg2`: The value to load into the `rdx` register before invoking the +/// CPUID instruction +/// - `arg3`: The value to load into the `rcx` register before invoking the +/// CPUID instruction +#define __cpuid_extended4(value, arg0, arg1, arg2, arg3) \ + unsigned int _a __attribute__((unused)) = 0; \ + unsigned int _b __attribute__((unused)) = 0; \ + unsigned int _c __attribute__((unused)) = 0; \ + unsigned int _d __attribute__((unused)) = 0; \ + __asm__ __volatile__("cpuid\n\t" \ + : "=a"(_a), "=b"(_b), "=c"(_c), "=d"(_d) \ + : "a"(value), "D"(arg0), "S"(arg1), "d"(arg2), \ + "c"(arg3)); + +/// Magic value defined by SIMICS as the "leaf" value of a CPUID instruction +/// that is treated as a magic instruction. +#define MAGIC (0x4711U) + +/// The default index number used for magic instructions. All magic instructions +/// support multiple start and stop indices, which defaults to 0 if not +/// specified. +#define DEFAULT_INDEX (0x0000U) + +/// Pseudo-hypercall number to signal the fuzzer to use the first argument to +/// the magic instruction as the pointer to the testcase buffer and the second +/// argument as a pointer to the size of the testcase buffer. +#define N_START_BUFFER_PTR_SIZE_PTR (0x0001U) + +/// HARNESS_START +/// +/// Signal the fuzzer to start the fuzzing loop at the point this macro is +/// called. The default "index" of 0 will be used. If you need multiple start +/// harnesses compiled into the same binary, you can use the +/// `HARNESS_START_INDEX` macro to specify different indices, then enable them +/// at runtime by configuring the fuzzer. +/// +/// When this macro is called: +/// +/// - A snapshot will be taken and saved +/// - The buffer pointed to by `buffer` will be saved and used as the testcase +/// buffer. Each +/// fuzzing iteration, a new test case will be written to this buffer. +/// - The size of the buffer pointed to by `size_ptr` will be saved as the +/// maximum testcase size. Each fuzzing iteration, the actual size of the +/// current testcase will be written to `*size_ptr`. +/// +/// # Arguments +/// +/// - `buffer`: The pointer to the testcase buffer +/// - `size_ptr`: The pointer to the size of the testcase buffer +/// +/// # Example +/// +/// ``` +/// unsigned char buffer[1024]; +/// size_t size; +/// HARNESS_START(buffer, &size); +/// ``` +#define HARNESS_START(buffer, size_ptr) \ + do { \ + unsigned int value = (N_START_BUFFER_PTR_SIZE_PTR << 0x10U) | MAGIC; \ + __cpuid_extended3(value, DEFAULT_INDEX, buffer, size_ptr); \ + } while (0); + +/// HARNESS_START_INDEX +/// +/// Signal the fuzzer to start the fuzzing loop at the point this macro is +/// called. The index specified by `start_index` will be used. If you need +/// multiple start harnesses compiled into the same binary, you can use this +/// macro to specify different indices, then enable them at runtime by +/// configuring the fuzzer. +/// +/// When this macro is called: +/// +/// - A snapshot will be taken and saved +/// - The buffer pointed to by `buffer` will be saved and used as the testcase +/// buffer. Each +/// fuzzing iteration, a new test case will be written to this buffer. +/// - The size of the buffer pointed to by `size_ptr` will be saved as the +/// maximum testcase size. Each fuzzing iteration, the actual size of the +/// current testcase will be written to `*size_ptr`. +/// +/// # Arguments +/// +/// - `start_index`: The index to use for this start harness +/// - `buffer`: The pointer to the testcase buffer +/// - `size_ptr`: The pointer to the size of the testcase buffer +/// +/// # Example +/// +/// ``` +/// unsigned char buffer[1024]; +/// size_t size; +/// HARNESS_START_INDEX(0x0001U, buffer, &size); +/// ``` +#define HARNESS_START_INDEX(start_index, buffer, size_ptr) \ + do { \ + unsigned int value = (N_START_BUFFER_PTR_SIZE_PTR << 0x10U) | MAGIC; \ + __cpuid_extended3(value, start_index, buffer, size_ptr); \ + } while (0); + +/// Pseudo-hypercall number to signal the fuzzer to use the first argument to +/// the magic instruction as the pointer to the testcase buffer and the second +/// argument as the maximum size of the testcase buffer. +#define N_START_BUFFER_PTR_SIZE_VAL (0x0002U) + +/// HARNESS_START_WITH_MAXIMUM_SIZE +/// +/// Signal the fuzzer to start the fuzzing loop at the point this macro is +/// called. The default "index" of 0 will be used. If you need multiple start +/// harnesses compiled into the same binary, you can use the +/// `HARNESS_START_WITH_MAXIMUM_SIZE_INDEX` macro to specify different indices, +/// then enable them at runtime by configuring the fuzzer. +/// +/// When this macro is called: +/// +/// - A snapshot will be taken and saved +/// - The buffer pointed to by `buffer` will be saved and used as the testcase +/// buffer. Each +/// fuzzing iteration, a new test case will be written to this buffer. +/// - The `max_size` value will be saved as the maximum testcase size. Fuzzing +/// test cases will be truncated to this size before being written to the +/// buffer. +/// +/// # Arguments +/// +/// - `buffer`: The pointer to the testcase buffer +/// - `max_size`: The maximum size of the testcase buffer +/// +/// # Example +/// +/// ``` +/// unsigned char buffer[1024]; +/// HARNESS_START_WITH_MAXIMUM_SIZE(buffer, 1024); +/// ``` +#define HARNESS_START_WITH_MAXIMUM_SIZE(buffer, max_size) \ + do { \ + unsigned int value = (N_START_BUFFER_PTR_SIZE_VAL << 0x10U) | MAGIC; \ + __cpuid_extended3(value, DEFAULT_INDEX, buffer, max_size); \ + } while (0); + +/// HARNESS_START_WITH_MAXIMUM_SIZE_INDEX +/// +/// Signal the fuzzer to start the fuzzing loop at the point this macro is +/// called. The index specified by `start_index` will be used. If you need +/// multiple start harnesses compiled into the same binary, you can use this +/// macro to specify different indices, then enable them at runtime by +/// configuring the fuzzer. +/// +/// When this macro is called: +/// +/// - A snapshot will be taken and saved +/// - The buffer pointed to by `buffer` will be saved and used as the testcase +/// buffer. Each +/// fuzzing iteration, a new test case will be written to this buffer. +/// - The `max_size` value will be saved as the maximum testcase size. Fuzzing +/// test cases will be truncated to this size before being written to the +/// buffer. +/// +/// # Arguments +/// +/// - `start_index`: The index to use for this start harness +/// - `buffer`: The pointer to the testcase buffer +/// - `max_size`: The maximum size of the testcase buffer +/// +/// # Example +/// +/// ``` +/// unsigned char buffer[1024]; +/// HARNESS_START_WITH_MAXIMUM_SIZE_INDEX(0x0001U, buffer, 1024); +/// ``` +#define HARNESS_START_WITH_MAXIMUM_SIZE_INDEX(start_index, buffer, max_size) \ + do { \ + unsigned int value = (N_START_BUFFER_PTR_SIZE_VAL << 0x10U) | MAGIC; \ + __cpuid_extended3(value, start_index, buffer, max_size); \ + } while (0); + +/// Pseudo-hypercall number to signal the fuzzer to use the first argument to +/// the magic instruction as the pointer to the testcase buffer, the second +/// argument as a pointer to the size of the testcase buffer, and the third +/// argument as the maximum size of the testcase buffer. +#define N_START_BUFFER_PTR_SIZE_PTR_VAL (0x0003U) + +/// HARNESS_START_WITH_MAXIMUM_SIZE_AND_PTR +/// +/// Signal the fuzzer to start the fuzzing loop at the point this macro is +/// called. The default "index" of 0 will be used. If you need multiple start +/// harnesses compiled into the same binary, you can use the +/// `HARNESS_START_WITH_MAXIMUM_SIZE_AND_PTR_INDEX` macro to specify different +/// indices, then enable them at runtime by configuring the fuzzer. +/// +/// When this macro is called: +/// +/// - A snapshot will be taken and saved +/// - The buffer pointed to by `buffer` will be saved and used as the testcase +/// buffer. Each +/// fuzzing iteration, a new test case will be written to this buffer. +/// - The address `size_ptr` will be saved. Each fuzzing iteration, the actual +/// size of the current testcase will be written to `*size_ptr`. +/// - The `max_size` value will be saved as the maximum testcase size. Fuzzing +/// test cases will be truncated to this size before being written to the +/// buffer. +/// +/// # Arguments +/// +/// - `buffer`: The pointer to the testcase buffer +/// - `size_ptr`: The pointer to the size of the testcase buffer +/// - `max_size`: The maximum size of the testcase buffer +/// +/// # Example +/// +/// ``` +/// unsigned char buffer[1024]; +/// size_t size; +/// HARNESS_START_WITH_MAXIMUM_SIZE_AND_PTR(buffer, &size, 1024); +/// ``` +#define HARNESS_START_WITH_MAXIMUM_SIZE_AND_PTR(buffer, size_ptr, max_size) \ + do { \ + unsigned int value = (N_START_BUFFER_PTR_SIZE_PTR_VAL << 0x10U) | MAGIC; \ + __cpuid_extended4(value, DEFAULT_INDEX, buffer, size_ptr, max_size); \ + } while (0); + +/// HARNESS_START_WITH_MAXIMUM_SIZE_AND_PTR_INDEX +/// +/// Signal the fuzzer to start the fuzzing loop at the point this macro is +/// called. The index specified by `start_index` will be used. If you need +/// multiple start harnesses compiled into the same binary, you can use this +/// macro to specify different indices, then enable them at runtime by +/// configuring the fuzzer. +/// +/// When this macro is called: +/// +/// - A snapshot will be taken and saved +/// - The buffer pointed to by `buffer` will be saved and used as the testcase +/// buffer. Each +/// fuzzing iteration, a new test case will be written to this buffer. +/// - The address `size_ptr` will be saved. Each fuzzing iteration, the actual +/// size of the current testcase will be written to `*size_ptr`. +/// - The `max_size` value will be saved as the maximum testcase size. Fuzzing +/// test cases will be truncated to this size before being written to the +/// buffer. +/// +/// # Arguments +/// +/// - `start_index`: The index to use for this start harness +/// - `buffer`: The pointer to the testcase buffer +/// - `size_ptr`: The pointer to the size of the testcase buffer +/// - `max_size`: The maximum size of the testcase buffer +/// +/// # Example +/// +/// ``` +/// unsigned char buffer[1024]; +/// size_t size; +/// HARNESS_START_WITH_MAXIMUM_SIZE_AND_PTR_INDEX(0x0001U, buffer, &size, 1024); +/// ``` +#define HARNESS_START_WITH_MAXIMUM_SIZE_AND_PTR_INDEX(start_index, buffer, \ + size_ptr, max_size) \ + do { \ + unsigned int value = (N_START_BUFFER_PTR_SIZE_PTR_VAL << 0x10U) | MAGIC; \ + __cpuid_extended4(value, start_index, buffer, size_ptr, max_size); \ + } while (0); + +/// Pseudo-hypercall number to signal the fuzzer to stop the current fuzzing +/// iteration and reset to the beginning of the fuzzing loop with a "normal" +/// stop status, indicating no solution has occurred. +#define N_STOP_NORMAL (0x0004U) + +/// HARNESS_STOP +/// +/// Signal the fuzzer to stop and reset to the beginning of the fuzzing loop +/// with a "normal" stop status, indicating no solution has occurred. The +/// default index of 0 will be used. If you need to differentiate between +/// multiple stop harnesses compiled into the same binary, you can use the +/// `HARNESS_STOP_INDEX` macro to specify different indices, then enable them at +/// runtime by configuring the fuzzer. +/// +/// # Example +/// +/// ``` +/// HARNESS_STOP(); +/// ``` +#define HARNESS_STOP() \ + do { \ + unsigned int value = (N_STOP_NORMAL << 0x10U) | MAGIC; \ + __cpuid_extended1(value, DEFAULT_INDEX); \ + } while (0); + +/// HARNESS_STOP_INDEX +/// +/// Signal the fuzzer to stop and reset to the beginning of the fuzzing loop +/// with a "normal" stop status, indicating no solution has occurred. The index +/// specified by `stop_index` will be used. If you need to differentiate between +/// multiple stop harnesses compiled into the same binary, you can use this +/// macro to specify different indices, then enable them at runtime by +/// configuring the fuzzer. +/// +/// # Arguments +/// +/// - `stop_index`: The index to use for this stop harness +/// +/// # Example +/// +/// ``` +/// HARNESS_STOP_INDEX(0x0001U); +/// ``` +#define HARNESS_STOP_INDEX(stop_index) \ + do { \ + unsigned int value = (N_STOP_NORMAL << 0x10U) | MAGIC; \ + __cpuid_extended1(value, stop_index); \ + } while (0); + +/// Pseudo-hypercall number to signal the fuzzer that a custom assertion has +/// occurred, and the fuzzer should stop the current fuzzing iteration and reset +/// to the beginning of the fuzzing loop with a "solution" stop status. +#define N_STOP_ASSERT (0x0005U) + +/// HARNESS_ASSERT +/// +/// Signal the fuzzer that a custom assertion has occurred, and the fuzzer +/// should stop the current fuzzing iteration and reset to the beginning of the +/// fuzzing loop with a "solution" stop status. The default index of 0 will be +/// used. If you need to differentiate between multiple assertion harnesses +/// compiled into the same binary, you can use the `HARNESS_ASSERT_INDEX` macro +/// to specify different indices, then enable them at runtime by configuring the +/// fuzzer. +/// +/// # Example +/// +/// ``` +/// HARNESS_ASSERT(); +/// ``` +#define HARNESS_ASSERT() \ + do { \ + unsigned int value = (N_STOP_ASSERT << 0x10U) | MAGIC; \ + __cpuid_extended1(value, DEFAULT_INDEX); \ + } while (0); + +/// HARNESS_ASSERT_INDEX +/// +/// Signal the fuzzer that a custom assertion has occurred, and the fuzzer +/// should stop the current fuzzing iteration and reset to the beginning of the +/// fuzzing loop with a "solution" stop status. The index specified by +/// `assert_index` will be used. If you need to differentiate between multiple +/// assertion harnesses compiled into the same binary, you can use this macro to +/// specify different indices, then enable them at runtime by configuring the +/// fuzzer. +/// +/// # Arguments +/// +/// - `assert_index`: The index to use for this assertion harness +/// +/// # Example +/// +/// ``` +/// HARNESS_ASSERT_INDEX(0x0001U); +/// ``` +#define HARNESS_ASSERT_INDEX(assert_index) \ + do { \ + unsigned int value = (N_STOP_ASSERT << 0x10U) | MAGIC; \ + __cpuid_extended1(value, assert_index); \ + } while (0); + +#endif // TSFFS_H +#elif __riscv && !__LP64__ +// Copyright (C) 2024 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 + +/// Definitions and macros for compiled-in harnessing of C and C++ target +/// software for the RISC-V (32-bit) architecture + +#ifndef TSFFS_H +#define TSFFS_H + +/// Define common with LibFuzzer and other fuzzers to allow code that is +/// fuzzing-specific to be left in the codebase. See +/// https://llvm.org/docs/LibFuzzer.html#id35 for more information +#ifndef FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION +#define FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION (1) +#endif // FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION + +/// __srai +/// +/// Invoke the magic instruction defined by SIMICS for the RISC-V architecture +/// with a specific value of `n` +/// +/// # Arguments +/// +/// * `value` - The value of `n` to use in the magic instruction +#define __srai(value) \ + __asm__ __volatile__("srai zero, zero, %0" : : "I"(value) :) + +/// __srai_extended1 +/// +/// Invoke the magic instruction defined by SIMICS for the RISC-V architecture +/// with a specific value of `n` and a pseudo-argument in register `a0`. +/// +/// # Arguments +/// +/// * `value` - The value of `n` to use in the magic instruction +/// * `arg0` - The value to place in register `a0` +#define __srai_extended1(value, arg0) \ + __asm__ __volatile__("mv a0, %0; srai zero, zero, %1" \ + : \ + : "r"(arg0), "I"(value) \ + : "a0"); + +/// __srai_extended2 +/// +/// Invoke the magic instruction defined by SIMICS for the RISC-V architecture +/// with a specific value of `n` and pseudo-arguments in registers `a0` and +/// `a1`. +/// +/// # Arguments +/// +/// * `value` - The value of `n` to use in the magic instruction +/// * `arg0` - The value to place in register `a0` +/// * `arg1` - The value to place in register `a1` +#define __srai_extended2(value, arg0, arg1) \ + __asm__ __volatile__("mv a0, %0; mv a1, %1; srai zero, zero, %2" \ + : \ + : "r"(arg0), "r"(arg1), "I"(value) \ + : "a0", "a1"); + +/// __srai_extended3 +/// +/// Invoke the magic instruction defined by SIMICS for the RISC-V architecture +/// with a specific value of `n` and pseudo-arguments in registers `a0`, `a1`, +/// and `a2`. +/// +/// # Arguments +/// +/// * `value` - The value of `n` to use in the magic instruction +/// * `arg0` - The value to place in register `a0` +/// * `arg1` - The value to place in register `a1` +/// * `arg2` - The value to place in register `a2` +#define __srai_extended3(value, arg0, arg1, arg2) \ + __asm__ __volatile__("mv a0, %0; mv a1, %1; mv a2, %2; srai zero, zero, %3" \ + : \ + : "r"(arg0), "r"(arg1), "r"(arg2), "I"(value) \ + : "a0", "a1", "a2"); + +/// __srai_extended4 +/// +/// Invoke the magic instruction defined by SIMICS for the RISC-V architecture +/// with a specific value of `n` and pseudo-arguments in registers `a0`, `a1`, +/// `a2`, and `a3`. +/// +/// # Arguments +/// +/// * `value` - The value of `n` to use in the magic instruction +/// * `arg0` - The value to place in register `a0` +/// * `arg1` - The value to place in register `a1` +/// * `arg2` - The value to place in register `a2` +/// * `arg3` - The value to place in register `a3` +#define __srai_extended4(value, arg0, arg1, arg2, arg3) \ + __asm__ __volatile__( \ + "mv a0, %0; mv a1, %1; mv a2, %2; mv a3, %3; srai zero, zero, %4" \ + : \ + : "r"(arg0), "r"(arg1), "r"(arg2), "r"(arg3), "I"(value) \ + : "a0", "a1", "a2", "a3"); + +/// Magic value defined by SIMICS as the "leaf" value of a CPUID instruction +/// that is treated as a magic instruction. +#define MAGIC (0x4711U) + +/// The default index number used for magic instructions. All magic instructions +/// support multiple start and stop indices, which defaults to 0 if not +/// specified. +#define DEFAULT_INDEX (0x0000U) + +/// Pseudo-hypercall number to signal the fuzzer to use the first argument to +/// the magic instruction as the pointer to the testcase buffer and the second +/// argument as a pointer to the size of the testcase buffer. +#define N_START_BUFFER_PTR_SIZE_PTR (0x0001U) + +/// HARNESS_START +/// +/// Signal the fuzzer to start the fuzzing loop at the point this macro is +/// called. The default "index" of 0 will be used. If you need multiple start +/// harnesses compiled into the same binary, you can use the +/// `HARNESS_START_INDEX` macro to specify different indices, then enable them +/// at runtime by configuring the fuzzer. +/// +/// When this macro is called: +/// +/// - A snapshot will be taken and saved +/// - The buffer pointed to by `buffer` will be saved and used as the testcase +/// buffer. Each +/// fuzzing iteration, a new test case will be written to this buffer. +/// - The size of the buffer pointed to by `size_ptr` will be saved as the +/// maximum testcase size. Each fuzzing iteration, the actual size of the +/// current testcase will be written to `*size_ptr`. +/// +/// # Arguments +/// +/// - `buffer`: The pointer to the testcase buffer +/// - `size_ptr`: The pointer to the size of the testcase buffer +/// +/// # Example +/// +/// ``` +/// unsigned char buffer[1024]; +/// size_t size; +/// HARNESS_START(buffer, &size); +/// ``` +#define HARNESS_START(buffer, size_ptr) \ + do { \ + __srai_extended3(N_START_BUFFER_PTR_SIZE_PTR, DEFAULT_INDEX, buffer, \ + size_ptr); \ + } while (0); + +/// HARNESS_START_INDEX +/// +/// Signal the fuzzer to start the fuzzing loop at the point this macro is +/// called. The index specified by `start_index` will be used. If you need +/// multiple start harnesses compiled into the same binary, you can use this +/// macro to specify different indices, then enable them at runtime by +/// configuring the fuzzer. +/// +/// When this macro is called: +/// +/// - A snapshot will be taken and saved +/// - The buffer pointed to by `buffer` will be saved and used as the testcase +/// buffer. Each +/// fuzzing iteration, a new test case will be written to this buffer. +/// - The size of the buffer pointed to by `size_ptr` will be saved as the +/// maximum testcase size. Each fuzzing iteration, the actual size of the +/// current testcase will be written to `*size_ptr`. +/// +/// # Arguments +/// +/// - `start_index`: The index to use for this start harness +/// - `buffer`: The pointer to the testcase buffer +/// - `size_ptr`: The pointer to the size of the testcase buffer +/// +/// # Example +/// +/// ``` +/// unsigned char buffer[1024]; +/// size_t size; +/// HARNESS_START_INDEX(0x0001U, buffer, &size); +/// ``` +#define HARNESS_START_INDEX(start_index, buffer, size_ptr) \ + do { \ + __srai_extended3(N_START_BUFFER_PTR_SIZE_PTR, start_index, buffer, \ + size_ptr); \ + } while (0); + +/// Pseudo-hypercall number to signal the fuzzer to use the first argument to +/// the magic instruction as the pointer to the testcase buffer and the second +/// argument as the maximum size of the testcase buffer. +#define N_START_BUFFER_PTR_SIZE_VAL (0x0002U) + +/// HARNESS_START_WITH_MAXIMUM_SIZE +/// +/// Signal the fuzzer to start the fuzzing loop at the point this macro is +/// called. The default "index" of 0 will be used. If you need multiple start +/// harnesses compiled into the same binary, you can use the +/// `HARNESS_START_WITH_MAXIMUM_SIZE_INDEX` macro to specify different indices, +/// then enable them at runtime by configuring the fuzzer. +/// +/// When this macro is called: +/// +/// - A snapshot will be taken and saved +/// - The buffer pointed to by `buffer` will be saved and used as the testcase +/// buffer. Each +/// fuzzing iteration, a new test case will be written to this buffer. +/// - The `max_size` value will be saved as the maximum testcase size. Fuzzing +/// test cases will be truncated to this size before being written to the +/// buffer. +/// +/// # Arguments +/// +/// - `buffer`: The pointer to the testcase buffer +/// - `max_size`: The maximum size of the testcase buffer +/// +/// # Example +/// +/// ``` +/// unsigned char buffer[1024]; +/// HARNESS_START_WITH_MAXIMUM_SIZE(buffer, 1024); +/// ``` +#define HARNESS_START_WITH_MAXIMUM_SIZE(buffer, max_size) \ + do { \ + __srai_extended3(N_START_BUFFER_PTR_SIZE_VAL, DEFAULT_INDEX, buffer, \ + max_size); \ + } while (0); + +/// HARNESS_START_WITH_MAXIMUM_SIZE_INDEX +/// +/// Signal the fuzzer to start the fuzzing loop at the point this macro is +/// called. The index specified by `start_index` will be used. If you need +/// multiple start harnesses compiled into the same binary, you can use this +/// macro to specify different indices, then enable them at runtime by +/// configuring the fuzzer. +/// +/// When this macro is called: +/// +/// - A snapshot will be taken and saved +/// - The buffer pointed to by `buffer` will be saved and used as the testcase +/// buffer. Each +/// fuzzing iteration, a new test case will be written to this buffer. +/// - The `max_size` value will be saved as the maximum testcase size. Fuzzing +/// test cases will be truncated to this size before being written to the +/// buffer. +/// +/// # Arguments +/// +/// - `start_index`: The index to use for this start harness +/// - `buffer`: The pointer to the testcase buffer +/// - `max_size`: The maximum size of the testcase buffer +/// +/// # Example +/// +/// ``` +/// unsigned char buffer[1024]; +/// HARNESS_START_WITH_MAXIMUM_SIZE_INDEX(0x0001U, buffer, 1024); +/// ``` +#define HARNESS_START_WITH_MAXIMUM_SIZE_INDEX(start_index, buffer, max_size) \ + do { \ + __srai_extended3(N_START_BUFFER_PTR_SIZE_VAL, start_index, buffer, \ + max_size); \ + } while (0); + +/// Pseudo-hypercall number to signal the fuzzer to use the first argument to +/// the magic instruction as the pointer to the testcase buffer, the second +/// argument as a pointer to the size of the testcase buffer, and the third +/// argument as the maximum size of the testcase buffer. +#define N_START_BUFFER_PTR_SIZE_PTR_VAL (0x0003U) + +/// HARNESS_START_WITH_MAXIMUM_SIZE_AND_PTR +/// +/// Signal the fuzzer to start the fuzzing loop at the point this macro is +/// called. The default "index" of 0 will be used. If you need multiple start +/// harnesses compiled into the same binary, you can use the +/// `HARNESS_START_WITH_MAXIMUM_SIZE_AND_PTR_INDEX` macro to specify different +/// indices, then enable them at runtime by configuring the fuzzer. +/// +/// When this macro is called: +/// +/// - A snapshot will be taken and saved +/// - The buffer pointed to by `buffer` will be saved and used as the testcase +/// buffer. Each +/// fuzzing iteration, a new test case will be written to this buffer. +/// - The address `size_ptr` will be saved. Each fuzzing iteration, the actual +/// size of the current testcase will be written to `*size_ptr`. +/// - The `max_size` value will be saved as the maximum testcase size. Fuzzing +/// test cases will be truncated to this size before being written to the +/// buffer. +/// +/// # Arguments +/// +/// - `buffer`: The pointer to the testcase buffer +/// - `size_ptr`: The pointer to the size of the testcase buffer +/// - `max_size`: The maximum size of the testcase buffer +/// +/// # Example +/// +/// ``` +/// unsigned char buffer[1024]; +/// size_t size; +/// HARNESS_START_WITH_MAXIMUM_SIZE_AND_PTR(buffer, &size, 1024); +/// ``` +#define HARNESS_START_WITH_MAXIMUM_SIZE_AND_PTR(buffer, size_ptr, max_size) \ + do { \ + __srai_extended4(N_START_BUFFER_PTR_SIZE_PTR_VAL, DEFAULT_INDEX, buffer, \ + size_ptr, max_size); \ + } while (0); + +/// HARNESS_START_WITH_MAXIMUM_SIZE_AND_PTR_INDEX +/// +/// Signal the fuzzer to start the fuzzing loop at the point this macro is +/// called. The index specified by `start_index` will be used. If you need +/// multiple start harnesses compiled into the same binary, you can use this +/// macro to specify different indices, then enable them at runtime by +/// configuring the fuzzer. +/// +/// When this macro is called: +/// +/// - A snapshot will be taken and saved +/// - The buffer pointed to by `buffer` will be saved and used as the testcase +/// buffer. Each +/// fuzzing iteration, a new test case will be written to this buffer. +/// - The address `size_ptr` will be saved. Each fuzzing iteration, the actual +/// size of the current testcase will be written to `*size_ptr`. +/// - The `max_size` value will be saved as the maximum testcase size. Fuzzing +/// test cases will be truncated to this size before being written to the +/// buffer. +/// +/// # Arguments +/// +/// - `start_index`: The index to use for this start harness +/// - `buffer`: The pointer to the testcase buffer +/// - `size_ptr`: The pointer to the size of the testcase buffer +/// - `max_size`: The maximum size of the testcase buffer +/// +/// # Example +/// +/// ``` +/// unsigned char buffer[1024]; +/// size_t size; +/// HARNESS_START_WITH_MAXIMUM_SIZE_AND_PTR_INDEX(0x0001U, buffer, &size, 1024); +/// ``` +#define HARNESS_START_WITH_MAXIMUM_SIZE_AND_PTR_INDEX(start_index, buffer, \ + size_ptr, max_size) \ + do { \ + __srai_extended4(N_START_BUFFER_PTR_SIZE_PTR_VAL, start_index, buffer, \ + size_ptr, max_size); \ + } while (0); + +/// Pseudo-hypercall number to signal the fuzzer to stop the current fuzzing +/// iteration and reset to the beginning of the fuzzing loop with a "normal" +/// stop status, indicating no solution has occurred. +#define N_STOP_NORMAL (0x0004U) + +/// HARNESS_STOP +/// +/// Signal the fuzzer to stop and reset to the beginning of the fuzzing loop +/// with a "normal" stop status, indicating no solution has occurred. The +/// default index of 0 will be used. If you need to differentiate between +/// multiple stop harnesses compiled into the same binary, you can use the +/// `HARNESS_STOP_INDEX` macro to specify different indices, then enable them at +/// runtime by configuring the fuzzer. +/// +/// # Example +/// +/// ``` +/// HARNESS_STOP(); +/// ``` +#define HARNESS_STOP() \ + do { \ + __srai_extended1(N_STOP_NORMAL, DEFAULT_INDEX); \ + } while (0); + +/// HARNESS_STOP_INDEX +/// +/// Signal the fuzzer to stop and reset to the beginning of the fuzzing loop +/// with a "normal" stop status, indicating no solution has occurred. The index +/// specified by `stop_index` will be used. If you need to differentiate between +/// multiple stop harnesses compiled into the same binary, you can use this +/// macro to specify different indices, then enable them at runtime by +/// configuring the fuzzer. +/// +/// # Arguments +/// +/// - `stop_index`: The index to use for this stop harness +/// +/// # Example +/// +/// ``` +/// HARNESS_STOP_INDEX(0x0001U); +/// ``` +#define HARNESS_STOP_INDEX(stop_index) \ + do { \ + __srai_extended1(N_STOP_NORMAL, stop_index); \ + } while (0); + +/// Pseudo-hypercall number to signal the fuzzer that a custom assertion has +/// occurred, and the fuzzer should stop the current fuzzing iteration and reset +/// to the beginning of the fuzzing loop with a "solution" stop status. +#define N_STOP_ASSERT (0x0005U) + +/// HARNESS_ASSERT +/// +/// Signal the fuzzer that a custom assertion has occurred, and the fuzzer +/// should stop the current fuzzing iteration and reset to the beginning of the +/// fuzzing loop with a "solution" stop status. The default index of 0 will be +/// used. If you need to differentiate between multiple assertion harnesses +/// compiled into the same binary, you can use the `HARNESS_ASSERT_INDEX` macro +/// to specify different indices, then enable them at runtime by configuring the +/// fuzzer. +/// +/// # Example +/// +/// ``` +/// HARNESS_ASSERT(); +/// ``` +#define HARNESS_ASSERT() \ + do { \ + __srai_extended1(N_STOP_ASSERT, DEFAULT_INDEX); \ + } while (0); + +/// HARNESS_ASSERT_INDEX +/// +/// Signal the fuzzer that a custom assertion has occurred, and the fuzzer +/// should stop the current fuzzing iteration and reset to the beginning of the +/// fuzzing loop with a "solution" stop status. The index specified by +/// `assert_index` will be used. If you need to differentiate between multiple +/// assertion harnesses compiled into the same binary, you can use this macro to +/// specify different indices, then enable them at runtime by configuring the +/// fuzzer. +/// +/// # Arguments +/// +/// - `assert_index`: The index to use for this assertion harness +/// +/// # Example +/// +/// ``` +/// HARNESS_ASSERT_INDEX(0x0001U); +/// ``` +#define HARNESS_ASSERT_INDEX(assert_index) \ + do { \ + __srai_extended1(N_STOP_ASSERT, assert_index); \ + } while (0); + +#endif // TSFFS_H +#elif __riscv && __LP64__ +// Copyright (C) 2024 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 + +/// Definitions and macros for compiled-in harnessing of C and C++ target +/// software for the RISC-V (32-bit) architecture + +#ifndef TSFFS_H +#define TSFFS_H + +/// Define common with LibFuzzer and other fuzzers to allow code that is +/// fuzzing-specific to be left in the codebase. See +/// https://llvm.org/docs/LibFuzzer.html#id35 for more information +#ifndef FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION +#define FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION (1) +#endif // FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION + +/// __srai +/// +/// Invoke the magic instruction defined by SIMICS for the RISC-V architecture +/// with a specific value of `n` +/// +/// # Arguments +/// +/// * `value` - The value of `n` to use in the magic instruction +#define __srai(value) \ + __asm__ __volatile__("srai zero, zero, %0" : : "I"(value) :) + +/// __srai_extended1 +/// +/// Invoke the magic instruction defined by SIMICS for the RISC-V architecture +/// with a specific value of `n` and a pseudo-argument in register `a0`. +/// +/// # Arguments +/// +/// * `value` - The value of `n` to use in the magic instruction +/// * `arg0` - The value to place in register `a0` +#define __srai_extended1(value, arg0) \ + __asm__ __volatile__("mv a0, %0; srai zero, zero, %1" \ + : \ + : "r"(arg0), "I"(value) \ + : "a0"); + +/// __srai_extended2 +/// +/// Invoke the magic instruction defined by SIMICS for the RISC-V architecture +/// with a specific value of `n` and pseudo-arguments in registers `a0` and +/// `a1`. +/// +/// # Arguments +/// +/// * `value` - The value of `n` to use in the magic instruction +/// * `arg0` - The value to place in register `a0` +/// * `arg1` - The value to place in register `a1` +#define __srai_extended2(value, arg0, arg1) \ + __asm__ __volatile__("mv a0, %0; mv a1, %1; srai zero, zero, %2" \ + : \ + : "r"(arg0), "r"(arg1), "I"(value) \ + : "a0", "a1"); + +/// __srai_extended3 +/// +/// Invoke the magic instruction defined by SIMICS for the RISC-V architecture +/// with a specific value of `n` and pseudo-arguments in registers `a0`, `a1`, +/// and `a2`. +/// +/// # Arguments +/// +/// * `value` - The value of `n` to use in the magic instruction +/// * `arg0` - The value to place in register `a0` +/// * `arg1` - The value to place in register `a1` +/// * `arg2` - The value to place in register `a2` +#define __srai_extended3(value, arg0, arg1, arg2) \ + __asm__ __volatile__("mv a0, %0; mv a1, %1; mv a2, %2; srai zero, zero, %3" \ + : \ + : "r"(arg0), "r"(arg1), "r"(arg2), "I"(value) \ + : "a0", "a1", "a2"); + +/// __srai_extended4 +/// +/// Invoke the magic instruction defined by SIMICS for the RISC-V architecture +/// with a specific value of `n` and pseudo-arguments in registers `a0`, `a1`, +/// `a2`, and `a3`. +/// +/// # Arguments +/// +/// * `value` - The value of `n` to use in the magic instruction +/// * `arg0` - The value to place in register `a0` +/// * `arg1` - The value to place in register `a1` +/// * `arg2` - The value to place in register `a2` +/// * `arg3` - The value to place in register `a3` +#define __srai_extended4(value, arg0, arg1, arg2, arg3) \ + __asm__ __volatile__( \ + "mv a0, %0; mv a1, %1; mv a2, %2; mv a3, %3; srai zero, zero, %4" \ + : \ + : "r"(arg0), "r"(arg1), "r"(arg2), "r"(arg3), "I"(value) \ + : "a0", "a1", "a2", "a3"); + +/// Magic value defined by SIMICS as the "leaf" value of a CPUID instruction +/// that is treated as a magic instruction. +#define MAGIC (0x4711U) + +/// The default index number used for magic instructions. All magic instructions +/// support multiple start and stop indices, which defaults to 0 if not +/// specified. +#define DEFAULT_INDEX (0x0000U) + +/// Pseudo-hypercall number to signal the fuzzer to use the first argument to +/// the magic instruction as the pointer to the testcase buffer and the second +/// argument as a pointer to the size of the testcase buffer. +#define N_START_BUFFER_PTR_SIZE_PTR (0x0001U) + +/// HARNESS_START +/// +/// Signal the fuzzer to start the fuzzing loop at the point this macro is +/// called. The default "index" of 0 will be used. If you need multiple start +/// harnesses compiled into the same binary, you can use the +/// `HARNESS_START_INDEX` macro to specify different indices, then enable them +/// at runtime by configuring the fuzzer. +/// +/// When this macro is called: +/// +/// - A snapshot will be taken and saved +/// - The buffer pointed to by `buffer` will be saved and used as the testcase +/// buffer. Each +/// fuzzing iteration, a new test case will be written to this buffer. +/// - The size of the buffer pointed to by `size_ptr` will be saved as the +/// maximum testcase size. Each fuzzing iteration, the actual size of the +/// current testcase will be written to `*size_ptr`. +/// +/// # Arguments +/// +/// - `buffer`: The pointer to the testcase buffer +/// - `size_ptr`: The pointer to the size of the testcase buffer +/// +/// # Example +/// +/// ``` +/// unsigned char buffer[1024]; +/// size_t size; +/// HARNESS_START(buffer, &size); +/// ``` +#define HARNESS_START(buffer, size_ptr) \ + do { \ + __srai_extended3(N_START_BUFFER_PTR_SIZE_PTR, DEFAULT_INDEX, buffer, size_ptr); \ + } while (0); + +/// HARNESS_START_INDEX +/// +/// Signal the fuzzer to start the fuzzing loop at the point this macro is +/// called. The index specified by `start_index` will be used. If you need +/// multiple start harnesses compiled into the same binary, you can use this +/// macro to specify different indices, then enable them at runtime by +/// configuring the fuzzer. +/// +/// When this macro is called: +/// +/// - A snapshot will be taken and saved +/// - The buffer pointed to by `buffer` will be saved and used as the testcase +/// buffer. Each +/// fuzzing iteration, a new test case will be written to this buffer. +/// - The size of the buffer pointed to by `size_ptr` will be saved as the +/// maximum testcase size. Each fuzzing iteration, the actual size of the +/// current testcase will be written to `*size_ptr`. +/// +/// # Arguments +/// +/// - `start_index`: The index to use for this start harness +/// - `buffer`: The pointer to the testcase buffer +/// - `size_ptr`: The pointer to the size of the testcase buffer +/// +/// # Example +/// +/// ``` +/// unsigned char buffer[1024]; +/// size_t size; +/// HARNESS_START_INDEX(0x0001U, buffer, &size); +/// ``` +#define HARNESS_START_INDEX(start_index, buffer, size_ptr) \ + do { \ + __srai_extended3(N_START_BUFFER_PTR_SIZE_PTR, start_index, buffer, size_ptr); \ + } while (0); + +/// Pseudo-hypercall number to signal the fuzzer to use the first argument to +/// the magic instruction as the pointer to the testcase buffer and the second +/// argument as the maximum size of the testcase buffer. +#define N_START_BUFFER_PTR_SIZE_VAL (0x0002U) + +/// HARNESS_START_WITH_MAXIMUM_SIZE +/// +/// Signal the fuzzer to start the fuzzing loop at the point this macro is +/// called. The default "index" of 0 will be used. If you need multiple start +/// harnesses compiled into the same binary, you can use the +/// `HARNESS_START_WITH_MAXIMUM_SIZE_INDEX` macro to specify different indices, +/// then enable them at runtime by configuring the fuzzer. +/// +/// When this macro is called: +/// +/// - A snapshot will be taken and saved +/// - The buffer pointed to by `buffer` will be saved and used as the testcase +/// buffer. Each +/// fuzzing iteration, a new test case will be written to this buffer. +/// - The `max_size` value will be saved as the maximum testcase size. Fuzzing +/// test cases will be truncated to this size before being written to the +/// buffer. +/// +/// # Arguments +/// +/// - `buffer`: The pointer to the testcase buffer +/// - `max_size`: The maximum size of the testcase buffer +/// +/// # Example +/// +/// ``` +/// unsigned char buffer[1024]; +/// HARNESS_START_WITH_MAXIMUM_SIZE(buffer, 1024); +/// ``` +#define HARNESS_START_WITH_MAXIMUM_SIZE(buffer, max_size) \ + do { \ + __srai_extended3(N_START_BUFFER_PTR_SIZE_VAL, DEFAULT_INDEX, buffer, max_size); \ + } while (0); + +/// HARNESS_START_WITH_MAXIMUM_SIZE_INDEX +/// +/// Signal the fuzzer to start the fuzzing loop at the point this macro is +/// called. The index specified by `start_index` will be used. If you need +/// multiple start harnesses compiled into the same binary, you can use this +/// macro to specify different indices, then enable them at runtime by +/// configuring the fuzzer. +/// +/// When this macro is called: +/// +/// - A snapshot will be taken and saved +/// - The buffer pointed to by `buffer` will be saved and used as the testcase +/// buffer. Each +/// fuzzing iteration, a new test case will be written to this buffer. +/// - The `max_size` value will be saved as the maximum testcase size. Fuzzing +/// test cases will be truncated to this size before being written to the +/// buffer. +/// +/// # Arguments +/// +/// - `start_index`: The index to use for this start harness +/// - `buffer`: The pointer to the testcase buffer +/// - `max_size`: The maximum size of the testcase buffer +/// +/// # Example +/// +/// ``` +/// unsigned char buffer[1024]; +/// HARNESS_START_WITH_MAXIMUM_SIZE_INDEX(0x0001U, buffer, 1024); +/// ``` +#define HARNESS_START_WITH_MAXIMUM_SIZE_INDEX(start_index, buffer, max_size) \ + do { \ + __srai_extended3(N_START_BUFFER_PTR_SIZE_VAL, start_index, buffer, max_size); \ + } while (0); + +/// Pseudo-hypercall number to signal the fuzzer to use the first argument to +/// the magic instruction as the pointer to the testcase buffer, the second +/// argument as a pointer to the size of the testcase buffer, and the third +/// argument as the maximum size of the testcase buffer. +#define N_START_BUFFER_PTR_SIZE_PTR_VAL (0x0003U) + +/// HARNESS_START_WITH_MAXIMUM_SIZE_AND_PTR +/// +/// Signal the fuzzer to start the fuzzing loop at the point this macro is +/// called. The default "index" of 0 will be used. If you need multiple start +/// harnesses compiled into the same binary, you can use the +/// `HARNESS_START_WITH_MAXIMUM_SIZE_AND_PTR_INDEX` macro to specify different +/// indices, then enable them at runtime by configuring the fuzzer. +/// +/// When this macro is called: +/// +/// - A snapshot will be taken and saved +/// - The buffer pointed to by `buffer` will be saved and used as the testcase +/// buffer. Each +/// fuzzing iteration, a new test case will be written to this buffer. +/// - The address `size_ptr` will be saved. Each fuzzing iteration, the actual +/// size of the current testcase will be written to `*size_ptr`. +/// - The `max_size` value will be saved as the maximum testcase size. Fuzzing +/// test cases will be truncated to this size before being written to the +/// buffer. +/// +/// # Arguments +/// +/// - `buffer`: The pointer to the testcase buffer +/// - `size_ptr`: The pointer to the size of the testcase buffer +/// - `max_size`: The maximum size of the testcase buffer +/// +/// # Example +/// +/// ``` +/// unsigned char buffer[1024]; +/// size_t size; +/// HARNESS_START_WITH_MAXIMUM_SIZE_AND_PTR(buffer, &size, 1024); +/// ``` +#define HARNESS_START_WITH_MAXIMUM_SIZE_AND_PTR(buffer, size_ptr, max_size) \ + do { \ + __srai_extended4(N_START_BUFFER_PTR_SIZE_PTR_VAL, DEFAULT_INDEX, buffer, size_ptr, max_size); \ + } while (0); + +/// HARNESS_START_WITH_MAXIMUM_SIZE_AND_PTR_INDEX +/// +/// Signal the fuzzer to start the fuzzing loop at the point this macro is +/// called. The index specified by `start_index` will be used. If you need +/// multiple start harnesses compiled into the same binary, you can use this +/// macro to specify different indices, then enable them at runtime by +/// configuring the fuzzer. +/// +/// When this macro is called: +/// +/// - A snapshot will be taken and saved +/// - The buffer pointed to by `buffer` will be saved and used as the testcase +/// buffer. Each +/// fuzzing iteration, a new test case will be written to this buffer. +/// - The address `size_ptr` will be saved. Each fuzzing iteration, the actual +/// size of the current testcase will be written to `*size_ptr`. +/// - The `max_size` value will be saved as the maximum testcase size. Fuzzing +/// test cases will be truncated to this size before being written to the +/// buffer. +/// +/// # Arguments +/// +/// - `start_index`: The index to use for this start harness +/// - `buffer`: The pointer to the testcase buffer +/// - `size_ptr`: The pointer to the size of the testcase buffer +/// - `max_size`: The maximum size of the testcase buffer +/// +/// # Example +/// +/// ``` +/// unsigned char buffer[1024]; +/// size_t size; +/// HARNESS_START_WITH_MAXIMUM_SIZE_AND_PTR_INDEX(0x0001U, buffer, &size, 1024); +/// ``` +#define HARNESS_START_WITH_MAXIMUM_SIZE_AND_PTR_INDEX(start_index, buffer, \ + size_ptr, max_size) \ + do { \ + __srai_extended4(N_START_BUFFER_PTR_SIZE_PTR_VAL, start_index, buffer, size_ptr, max_size); \ + } while (0); + +/// Pseudo-hypercall number to signal the fuzzer to stop the current fuzzing +/// iteration and reset to the beginning of the fuzzing loop with a "normal" +/// stop status, indicating no solution has occurred. +#define N_STOP_NORMAL (0x0004U) + +/// HARNESS_STOP +/// +/// Signal the fuzzer to stop and reset to the beginning of the fuzzing loop +/// with a "normal" stop status, indicating no solution has occurred. The +/// default index of 0 will be used. If you need to differentiate between +/// multiple stop harnesses compiled into the same binary, you can use the +/// `HARNESS_STOP_INDEX` macro to specify different indices, then enable them at +/// runtime by configuring the fuzzer. +/// +/// # Example +/// +/// ``` +/// HARNESS_STOP(); +/// ``` +#define HARNESS_STOP() \ + do { \ + __srai_extended1(N_STOP_NORMAL, DEFAULT_INDEX); \ + } while (0); + +/// HARNESS_STOP_INDEX +/// +/// Signal the fuzzer to stop and reset to the beginning of the fuzzing loop +/// with a "normal" stop status, indicating no solution has occurred. The index +/// specified by `stop_index` will be used. If you need to differentiate between +/// multiple stop harnesses compiled into the same binary, you can use this +/// macro to specify different indices, then enable them at runtime by +/// configuring the fuzzer. +/// +/// # Arguments +/// +/// - `stop_index`: The index to use for this stop harness +/// +/// # Example +/// +/// ``` +/// HARNESS_STOP_INDEX(0x0001U); +/// ``` +#define HARNESS_STOP_INDEX(stop_index) \ + do { \ + __srai_extended1(N_STOP_NORMAL, stop_index); \ + } while (0); + +/// Pseudo-hypercall number to signal the fuzzer that a custom assertion has +/// occurred, and the fuzzer should stop the current fuzzing iteration and reset +/// to the beginning of the fuzzing loop with a "solution" stop status. +#define N_STOP_ASSERT (0x0005U) + +/// HARNESS_ASSERT +/// +/// Signal the fuzzer that a custom assertion has occurred, and the fuzzer +/// should stop the current fuzzing iteration and reset to the beginning of the +/// fuzzing loop with a "solution" stop status. The default index of 0 will be +/// used. If you need to differentiate between multiple assertion harnesses +/// compiled into the same binary, you can use the `HARNESS_ASSERT_INDEX` macro +/// to specify different indices, then enable them at runtime by configuring the +/// fuzzer. +/// +/// # Example +/// +/// ``` +/// HARNESS_ASSERT(); +/// ``` +#define HARNESS_ASSERT() \ + do { \ + __srai_extended1(N_STOP_ASSERT, DEFAULT_INDEX); \ + } while (0); + +/// HARNESS_ASSERT_INDEX +/// +/// Signal the fuzzer that a custom assertion has occurred, and the fuzzer +/// should stop the current fuzzing iteration and reset to the beginning of the +/// fuzzing loop with a "solution" stop status. The index specified by +/// `assert_index` will be used. If you need to differentiate between multiple +/// assertion harnesses compiled into the same binary, you can use this macro to +/// specify different indices, then enable them at runtime by configuring the +/// fuzzer. +/// +/// # Arguments +/// +/// - `assert_index`: The index to use for this assertion harness +/// +/// # Example +/// +/// ``` +/// HARNESS_ASSERT_INDEX(0x0001U); +/// ``` +#define HARNESS_ASSERT_INDEX(assert_index) \ + do { \ + __srai_extended1(N_STOP_ASSERT, assert_index); \ + } while (0); + +#endif // TSFFS_H +#elif __aarch64__ +// Copyright (C) 2024 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 + +/// Definitions and macros for compiled-in harnessing of C and C++ target +/// software for the RISC-V (32-bit) architecture + +#ifndef TSFFS_H +#define TSFFS_H + +/// Define common with LibFuzzer and other fuzzers to allow code that is +/// fuzzing-specific to be left in the codebase. See +/// https://llvm.org/docs/LibFuzzer.html#id35 for more information +#ifndef FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION +#define FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION (1) +#endif // FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION + +#define __stringify(x) #x +#define __tostring(x) __stringify(x) + +/// __orr +/// +/// Invoke the magic instruction defined by SIMICS for the RISC-V architecture +/// with a specific value of `n` +/// +/// # Arguments +/// +/// * `value` - The value of `n` to use in the magic instruction +#define __orr(value) \ + __asm__ __volatile__("orr x" __tostring(value) ", x" __tostring( \ + value) ", x" __tostring(value)); + +/// __orr_extended1 +/// +/// Invoke the magic instruction defined by SIMICS for the RISC-V architecture +/// with a specific value of `n` and a pseudo-argument in register `r10`. +/// +/// # Arguments +/// +/// * `value` - The value of `n` to use in the magic instruction +/// * `arg0` - The value to place in register `r10` +#define __orr_extended1(value, arg0) \ + __asm__ __volatile__( \ + "mov x28, %0; orr x" __tostring(value) ", x" __tostring( \ + value) ", x" __tostring(value) \ + : \ + : "g"(arg0)); + +/// __orr_extended2 +/// +/// Invoke the magic instruction defined by SIMICS for the RISC-V architecture +/// with a specific value of `n` and two pseudo-arguments in registers `r10` and +/// `r9`. +/// +/// # Arguments +/// +/// * `value` - The value of `n` to use in the magic instruction +/// * `arg0` - The value to place in register `r10` +/// * `arg1` - The value to place in register `r9` +#define __orr_extended2(value, arg0, arg1) \ + __asm__ __volatile__( \ + "mov x28, %0; mov x27, %1; orr x" __tostring(value) ", x" __tostring( \ + value) ", x" __tostring(value) \ + : \ + : "r"(arg0), "r"(arg1)); + +/// __orr_extended3 +/// +/// Invoke the magic instruction defined by SIMICS for the RISC-V architecture +/// with a specific value of `n` and three pseudo-arguments in registers `r10`, +/// `r9`, and `r8`. +/// +/// # Arguments +/// +/// * `value` - The value of `n` to use in the magic instruction +/// * `arg0` - The value to place in register `r10` +/// * `arg1` - The value to place in register `r9` +/// * `arg2` - The value to place in register `r8` +#define __orr_extended3(value, arg0, arg1, arg2) \ + __asm__ __volatile__( \ + "mov x28, %0; mov x27, %1; mov x26, %2; orr x" __tostring( \ + value) ", x" __tostring(value) ", x" __tostring(value) \ + : \ + : "r"(arg0), "r"(arg1), "r"(arg2)); + +/// __orr_extended4 +/// +/// Invoke the magic instruction defined by SIMICS for the RISC-V architecture +/// with a specific value of `n` and four pseudo-arguments in registers `r10`, +/// `r9`, `r8`, and `r7`. +/// +/// # Arguments +/// +/// * `value` - The value of `n` to use in the magic instruction +/// * `arg0` - The value to place in register `r10` +/// * `arg1` - The value to place in register `r9` +/// * `arg2` - The value to place in register `r8` +/// * `arg3` - The value to place in register `r7` +#define __orr_extended4(value, arg0, arg1, arg2, arg3) \ + __asm__ __volatile__( \ + "mov x28, %0; mov x27, %1; mov x26, %2; mov x25, %3; " \ + "orr x" __tostring(value) ", x" __tostring(value) ", x" __tostring( \ + value) \ + : \ + : "r"(arg0), "r"(arg1), "r"(arg2), "r"(arg3)); + +/// The default index number used for magic instructions. All magic instructions +/// support multiple start and stop indices, which defaults to 0 if not +/// specified. +#define DEFAULT_INDEX (0x0000U) + +/// Pseudo-hypercall number to signal the fuzzer to use the first argument to +/// the magic instruction as the pointer to the testcase buffer and the second +/// argument as a pointer to the size of the testcase buffer. +#define N_START_BUFFER_PTR_SIZE_PTR 1 + +/// HARNESS_START +/// +/// Signal the fuzzer to start the fuzzing loop at the point this macro is +/// called. The default "index" of 0 will be used. If you need multiple start +/// harnesses compiled into the same binary, you can use the +/// `HARNESS_START_INDEX` macro to specify different indices, then enable them +/// at runtime by configuring the fuzzer. +/// +/// When this macro is called: +/// +/// - A snapshot will be taken and saved +/// - The buffer pointed to by `buffer` will be saved and used as the testcase +/// buffer. Each +/// fuzzing iteration, a new test case will be written to this buffer. +/// - The size of the buffer pointed to by `size_ptr` will be saved as the +/// maximum testcase size. Each fuzzing iteration, the actual size of the +/// current testcase will be written to `*size_ptr`. +/// +/// # Arguments +/// +/// - `buffer`: The pointer to the testcase buffer +/// - `size_ptr`: The pointer to the size of the testcase buffer +/// +/// # Example +/// +/// ``` +/// unsigned char buffer[1024]; +/// size_t size; +/// HARNESS_START(buffer, &size); +/// ``` +#define HARNESS_START(buffer, size_ptr) \ + do { \ + __orr_extended3(N_START_BUFFER_PTR_SIZE_PTR, DEFAULT_INDEX, buffer, \ + size_ptr); \ + } while (0); + +/// HARNESS_START_INDEX +/// +/// Signal the fuzzer to start the fuzzing loop at the point this macro is +/// called. The index specified by `start_index` will be used. If you need +/// multiple start harnesses compiled into the same binary, you can use this +/// macro to specify different indices, then enable them at runtime by +/// configuring the fuzzer. +/// +/// When this macro is called: +/// +/// - A snapshot will be taken and saved +/// - The buffer pointed to by `buffer` will be saved and used as the testcase +/// buffer. Each +/// fuzzing iteration, a new test case will be written to this buffer. +/// - The size of the buffer pointed to by `size_ptr` will be saved as the +/// maximum testcase size. Each fuzzing iteration, the actual size of the +/// current testcase will be written to `*size_ptr`. +/// +/// # Arguments +/// +/// - `start_index`: The index to use for this start harness +/// - `buffer`: The pointer to the testcase buffer +/// - `size_ptr`: The pointer to the size of the testcase buffer +/// +/// # Example +/// +/// ``` +/// unsigned char buffer[1024]; +/// size_t size; +/// HARNESS_START_INDEX(0x0001U, buffer, &size); +/// ``` +#define HARNESS_START_INDEX(start_index, buffer, size_ptr) \ + do { \ + __orr_extended3(N_START_BUFFER_PTR_SIZE_PTR, start_index, buffer, \ + size_ptr); \ + } while (0); + +/// Pseudo-hypercall number to signal the fuzzer to use the first argument to +/// the magic instruction as the pointer to the testcase buffer and the second +/// argument as the maximum size of the testcase buffer. +#define N_START_BUFFER_PTR_SIZE_VAL 2 + +/// HARNESS_START_WITH_MAXIMUM_SIZE +/// +/// Signal the fuzzer to start the fuzzing loop at the point this macro is +/// called. The default "index" of 0 will be used. If you need multiple start +/// harnesses compiled into the same binary, you can use the +/// `HARNESS_START_WITH_MAXIMUM_SIZE_INDEX` macro to specify different indices, +/// then enable them at runtime by configuring the fuzzer. +/// +/// When this macro is called: +/// +/// - A snapshot will be taken and saved +/// - The buffer pointed to by `buffer` will be saved and used as the testcase +/// buffer. Each +/// fuzzing iteration, a new test case will be written to this buffer. +/// - The `max_size` value will be saved as the maximum testcase size. Fuzzing +/// test cases will be truncated to this size before being written to the +/// buffer. +/// +/// # Arguments +/// +/// - `buffer`: The pointer to the testcase buffer +/// - `max_size`: The maximum size of the testcase buffer +/// +/// # Example +/// +/// ``` +/// unsigned char buffer[1024]; +/// HARNESS_START_WITH_MAXIMUM_SIZE(buffer, 1024); +/// ``` +#define HARNESS_START_WITH_MAXIMUM_SIZE(buffer, max_size) \ + do { \ + __orr_extended3(N_START_BUFFER_PTR_SIZE_VAL, DEFAULT_INDEX, buffer, \ + max_size); \ + } while (0); + +/// HARNESS_START_WITH_MAXIMUM_SIZE_INDEX +/// +/// Signal the fuzzer to start the fuzzing loop at the point this macro is +/// called. The index specified by `start_index` will be used. If you need +/// multiple start harnesses compiled into the same binary, you can use this +/// macro to specify different indices, then enable them at runtime by +/// configuring the fuzzer. +/// +/// When this macro is called: +/// +/// - A snapshot will be taken and saved +/// - The buffer pointed to by `buffer` will be saved and used as the testcase +/// buffer. Each +/// fuzzing iteration, a new test case will be written to this buffer. +/// - The `max_size` value will be saved as the maximum testcase size. Fuzzing +/// test cases will be truncated to this size before being written to the +/// buffer. +/// +/// # Arguments +/// +/// - `start_index`: The index to use for this start harness +/// - `buffer`: The pointer to the testcase buffer +/// - `max_size`: The maximum size of the testcase buffer +/// +/// # Example +/// +/// ``` +/// unsigned char buffer[1024]; +/// HARNESS_START_WITH_MAXIMUM_SIZE_INDEX(0x0001U, buffer, 1024); +/// ``` +#define HARNESS_START_WITH_MAXIMUM_SIZE_INDEX(start_index, buffer, max_size) \ + do { \ + __orr_extended3(N_START_BUFFER_PTR_SIZE_VAL, start_index, buffer, \ + max_size); \ + } while (0); + +/// Pseudo-hypercall number to signal the fuzzer to use the first argument to +/// the magic instruction as the pointer to the testcase buffer, the second +/// argument as a pointer to the size of the testcase buffer, and the third +/// argument as the maximum size of the testcase buffer. +#define N_START_BUFFER_PTR_SIZE_PTR_VAL 3 + +/// HARNESS_START_WITH_MAXIMUM_SIZE_AND_PTR +/// +/// Signal the fuzzer to start the fuzzing loop at the point this macro is +/// called. The default "index" of 0 will be used. If you need multiple start +/// harnesses compiled into the same binary, you can use the +/// `HARNESS_START_WITH_MAXIMUM_SIZE_AND_PTR_INDEX` macro to specify different +/// indices, then enable them at runtime by configuring the fuzzer. +/// +/// When this macro is called: +/// +/// - A snapshot will be taken and saved +/// - The buffer pointed to by `buffer` will be saved and used as the testcase +/// buffer. Each +/// fuzzing iteration, a new test case will be written to this buffer. +/// - The address `size_ptr` will be saved. Each fuzzing iteration, the actual +/// size of the current testcase will be written to `*size_ptr`. +/// - The `max_size` value will be saved as the maximum testcase size. Fuzzing +/// test cases will be truncated to this size before being written to the +/// buffer. +/// +/// # Arguments +/// +/// - `buffer`: The pointer to the testcase buffer +/// - `size_ptr`: The pointer to the size of the testcase buffer +/// - `max_size`: The maximum size of the testcase buffer +/// +/// # Example +/// +/// ``` +/// unsigned char buffer[1024]; +/// size_t size; +/// HARNESS_START_WITH_MAXIMUM_SIZE_AND_PTR(buffer, &size, 1024); +/// ``` +#define HARNESS_START_WITH_MAXIMUM_SIZE_AND_PTR(buffer, size_ptr, max_size) \ + do { \ + __orr_extended4(N_START_BUFFER_PTR_SIZE_PTR_VAL, DEFAULT_INDEX, buffer, \ + size_ptr, max_size); \ + } while (0); + +/// HARNESS_START_WITH_MAXIMUM_SIZE_AND_PTR_INDEX +/// +/// Signal the fuzzer to start the fuzzing loop at the point this macro is +/// called. The index specified by `start_index` will be used. If you need +/// multiple start harnesses compiled into the same binary, you can use this +/// macro to specify different indices, then enable them at runtime by +/// configuring the fuzzer. +/// +/// When this macro is called: +/// +/// - A snapshot will be taken and saved +/// - The buffer pointed to by `buffer` will be saved and used as the testcase +/// buffer. Each +/// fuzzing iteration, a new test case will be written to this buffer. +/// - The address `size_ptr` will be saved. Each fuzzing iteration, the actual +/// size of the current testcase will be written to `*size_ptr`. +/// - The `max_size` value will be saved as the maximum testcase size. Fuzzing +/// test cases will be truncated to this size before being written to the +/// buffer. +/// +/// # Arguments +/// +/// - `start_index`: The index to use for this start harness +/// - `buffer`: The pointer to the testcase buffer +/// - `size_ptr`: The pointer to the size of the testcase buffer +/// - `max_size`: The maximum size of the testcase buffer +/// +/// # Example +/// +/// ``` +/// unsigned char buffer[1024]; +/// size_t size; +/// HARNESS_START_WITH_MAXIMUM_SIZE_AND_PTR_INDEX(0x0001U, buffer, &size, 1024); +/// ``` +#define HARNESS_START_WITH_MAXIMUM_SIZE_AND_PTR_INDEX(start_index, buffer, \ + size_ptr, max_size) \ + do { \ + __orr_extended4(N_START_BUFFER_PTR_SIZE_PTR_VAL, start_index, buffer, \ + size_ptr, max_size); \ + } while (0); + +/// Pseudo-hypercall number to signal the fuzzer to stop the current fuzzing +/// iteration and reset to the beginning of the fuzzing loop with a "normal" +/// stop status, indicating no solution has occurred. +#define N_STOP_NORMAL 4 + +/// HARNESS_STOP +/// +/// Signal the fuzzer to stop and reset to the beginning of the fuzzing loop +/// with a "normal" stop status, indicating no solution has occurred. The +/// default index of 0 will be used. If you need to differentiate between +/// multiple stop harnesses compiled into the same binary, you can use the +/// `HARNESS_STOP_INDEX` macro to specify different indices, then enable them at +/// runtime by configuring the fuzzer. +/// +/// # Example +/// +/// ``` +/// HARNESS_STOP(); +/// ``` +#define HARNESS_STOP() \ + do { \ + __orr_extended1(N_STOP_NORMAL, DEFAULT_INDEX); \ + } while (0); + +/// HARNESS_STOP_INDEX +/// +/// Signal the fuzzer to stop and reset to the beginning of the fuzzing loop +/// with a "normal" stop status, indicating no solution has occurred. The index +/// specified by `stop_index` will be used. If you need to differentiate between +/// multiple stop harnesses compiled into the same binary, you can use this +/// macro to specify different indices, then enable them at runtime by +/// configuring the fuzzer. +/// +/// # Arguments +/// +/// - `stop_index`: The index to use for this stop harness +/// +/// # Example +/// +/// ``` +/// HARNESS_STOP_INDEX(0x0001U); +/// ``` +#define HARNESS_STOP_INDEX(stop_index) \ + do { \ + __orr_extended1(N_STOP_NORMAL, stop_index); \ + } while (0); + +/// Pseudo-hypercall number to signal the fuzzer that a custom assertion has +/// occurred, and the fuzzer should stop the current fuzzing iteration and reset +/// to the beginning of the fuzzing loop with a "solution" stop status. +#define N_STOP_ASSERT 5 + +/// HARNESS_ASSERT +/// +/// Signal the fuzzer that a custom assertion has occurred, and the fuzzer +/// should stop the current fuzzing iteration and reset to the beginning of the +/// fuzzing loop with a "solution" stop status. The default index of 0 will be +/// used. If you need to differentiate between multiple assertion harnesses +/// compiled into the same binary, you can use the `HARNESS_ASSERT_INDEX` macro +/// to specify different indices, then enable them at runtime by configuring the +/// fuzzer. +/// +/// # Example +/// +/// ``` +/// HARNESS_ASSERT(); +/// ``` +#define HARNESS_ASSERT() \ + do { \ + __orr_extended1(N_STOP_ASSERT, DEFAULT_INDEX); \ + } while (0); + +/// HARNESS_ASSERT_INDEX +/// +/// Signal the fuzzer that a custom assertion has occurred, and the fuzzer +/// should stop the current fuzzing iteration and reset to the beginning of the +/// fuzzing loop with a "solution" stop status. The index specified by +/// `assert_index` will be used. If you need to differentiate between multiple +/// assertion harnesses compiled into the same binary, you can use this macro to +/// specify different indices, then enable them at runtime by configuring the +/// fuzzer. +/// +/// # Arguments +/// +/// - `assert_index`: The index to use for this assertion harness +/// +/// # Example +/// +/// ``` +/// HARNESS_ASSERT_INDEX(0x0001U); +/// ``` +#define HARNESS_ASSERT_INDEX(assert_index) \ + do { \ + __orr_extended1(N_STOP_ASSERT, assert_index); \ + } while (0); + +#endif // TSFFS_H +#elif __arm__ +// Copyright (C) 2024 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 + +/// Definitions and macros for compiled-in harnessing of C and C++ target +/// software for the RISC-V (32-bit) architecture + +#ifndef TSFFS_H +#define TSFFS_H + +/// Define common with LibFuzzer and other fuzzers to allow code that is +/// fuzzing-specific to be left in the codebase. See +/// https://llvm.org/docs/LibFuzzer.html#id35 for more information +#ifndef FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION +#define FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION (1) +#endif // FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION + +#define __stringify(x) #x +#define __tostring(x) __stringify(x) + +/// __orr +/// +/// Invoke the magic instruction defined by SIMICS for the RISC-V architecture +/// with a specific value of `n` +/// +/// # Arguments +/// +/// * `value` - The value of `n` to use in the magic instruction +#define __orr(value) \ + __asm__ __volatile__("orr r" __tostring(value) ", r" __tostring( \ + value) ", r" __tostring(value)); + +/// __orr_extended1 +/// +/// Invoke the magic instruction defined by SIMICS for the RISC-V architecture +/// with a specific value of `n` and a pseudo-argument in register `r10`. +/// +/// # Arguments +/// +/// * `value` - The value of `n` to use in the magic instruction +/// * `arg0` - The value to place in register `r10` +#define __orr_extended1(value, arg0) \ + __asm__ __volatile__( \ + "mov r10, %0; orr r" __tostring(value) ", r" __tostring( \ + value) ", r" __tostring(value) \ + : \ + : "r"(arg0)); + +/// __orr_extended2 +/// +/// Invoke the magic instruction defined by SIMICS for the RISC-V architecture +/// with a specific value of `n` and two pseudo-arguments in registers `r10` and +/// `r9`. +/// +/// # Arguments +/// +/// * `value` - The value of `n` to use in the magic instruction +/// * `arg0` - The value to place in register `r10` +/// * `arg1` - The value to place in register `r9` +#define __orr_extended2(value, arg0, arg1) \ + __asm__ __volatile__( \ + "mov r10, %0; mov r9, %1; orr r" __tostring(value) ", r" __tostring( \ + value) ", r" __tostring(value) \ + : \ + : "r"(arg0), "r"(arg1)); + +/// __orr_extended3 +/// +/// Invoke the magic instruction defined by SIMICS for the RISC-V architecture +/// with a specific value of `n` and three pseudo-arguments in registers `r10`, +/// `r9`, and `r8`. +/// +/// # Arguments +/// +/// * `value` - The value of `n` to use in the magic instruction +/// * `arg0` - The value to place in register `r10` +/// * `arg1` - The value to place in register `r9` +/// * `arg2` - The value to place in register `r8` +#define __orr_extended3(value, arg0, arg1, arg2) \ + __asm__ __volatile__( \ + "mov r10, %0; mov r9, %1; mov r8, %2; orr r" __tostring( \ + value) ", r" __tostring(value) ", r" __tostring(value) \ + : \ + : "r"(arg0), "r"(arg1), "r"(arg2)); + +/// __orr_extended4 +/// +/// Invoke the magic instruction defined by SIMICS for the RISC-V architecture +/// with a specific value of `n` and four pseudo-arguments in registers `r10`, +/// `r9`, `r8`, and `r7`. +/// +/// # Arguments +/// +/// * `value` - The value of `n` to use in the magic instruction +/// * `arg0` - The value to place in register `r10` +/// * `arg1` - The value to place in register `r9` +/// * `arg2` - The value to place in register `r8` +/// * `arg3` - The value to place in register `r7` +#define __orr_extended4(value, arg0, arg1, arg2, arg3) \ + __asm__ __volatile__( \ + "mov r10, %0; mov r9, %1; mov r8, %2; mov r7, %3; " \ + "orr r" __tostring(value) ", r" __tostring(value) ", r" __tostring( \ + value) \ + : \ + : "r"(arg0), "r"(arg1), "r"(arg2), "r"(arg3)); + +/// Magic value defined by SIMICS as the "leaf" value of a CPUID instruction +/// that is treated as a magic instruction. +#define MAGIC (0x4711U) + +/// The default index number used for magic instructions. All magic instructions +/// support multiple start and stop indices, which defaults to 0 if not +/// specified. +#define DEFAULT_INDEX (0x0000U) + +/// Pseudo-hypercall number to signal the fuzzer to use the first argument to +/// the magic instruction as the pointer to the testcase buffer and the second +/// argument as a pointer to the size of the testcase buffer. +#define N_START_BUFFER_PTR_SIZE_PTR 1 + +/// HARNESS_START +/// +/// Signal the fuzzer to start the fuzzing loop at the point this macro is +/// called. The default "index" of 0 will be used. If you need multiple start +/// harnesses compiled into the same binary, you can use the +/// `HARNESS_START_INDEX` macro to specify different indices, then enable them +/// at runtime by configuring the fuzzer. +/// +/// When this macro is called: +/// +/// - A snapshot will be taken and saved +/// - The buffer pointed to by `buffer` will be saved and used as the testcase +/// buffer. Each +/// fuzzing iteration, a new test case will be written to this buffer. +/// - The size of the buffer pointed to by `size_ptr` will be saved as the +/// maximum testcase size. Each fuzzing iteration, the actual size of the +/// current testcase will be written to `*size_ptr`. +/// +/// # Arguments +/// +/// - `buffer`: The pointer to the testcase buffer +/// - `size_ptr`: The pointer to the size of the testcase buffer +/// +/// # Example +/// +/// ``` +/// unsigned char buffer[1024]; +/// size_t size; +/// HARNESS_START(buffer, &size); +/// ``` +#define HARNESS_START(buffer, size_ptr) \ + do { \ + __orr_extended2(N_START_BUFFER_PTR_SIZE_PTR, buffer, size_ptr); \ + } while (0); + +/// Pseudo-hypercall number to signal the fuzzer to use the first argument to +/// the magic instruction as the pointer to the testcase buffer and the second +/// argument as the maximum size of the testcase buffer. +#define N_START_BUFFER_PTR_SIZE_VAL 2 + +/// HARNESS_START_WITH_MAXIMUM_SIZE +/// +/// Signal the fuzzer to start the fuzzing loop at the point this macro is +/// called. The default "index" of 0 will be used. If you need multiple start +/// harnesses compiled into the same binary, you can use the +/// `HARNESS_START_WITH_MAXIMUM_SIZE_INDEX` macro to specify different indices, +/// then enable them at runtime by configuring the fuzzer. +/// +/// When this macro is called: +/// +/// - A snapshot will be taken and saved +/// - The buffer pointed to by `buffer` will be saved and used as the testcase +/// buffer. Each +/// fuzzing iteration, a new test case will be written to this buffer. +/// - The `max_size` value will be saved as the maximum testcase size. Fuzzing +/// test cases will be truncated to this size before being written to the +/// buffer. +/// +/// # Arguments +/// +/// - `buffer`: The pointer to the testcase buffer +/// - `max_size`: The maximum size of the testcase buffer +/// +/// # Example +/// +/// ``` +/// unsigned char buffer[1024]; +/// HARNESS_START_WITH_MAXIMUM_SIZE(buffer, 1024); +/// ``` +#define HARNESS_START_WITH_MAXIMUM_SIZE(buffer, max_size) \ + do { \ + __orr_extended2(N_START_BUFFER_PTR_SIZE_VAL, buffer, max_size); \ + } while (0); + +/// Pseudo-hypercall number to signal the fuzzer to use the first argument to +/// the magic instruction as the pointer to the testcase buffer, the second +/// argument as a pointer to the size of the testcase buffer, and the third +/// argument as the maximum size of the testcase buffer. +#define N_START_BUFFER_PTR_SIZE_PTR_VAL 3 + +/// HARNESS_START_WITH_MAXIMUM_SIZE_AND_PTR +/// +/// Signal the fuzzer to start the fuzzing loop at the point this macro is +/// called. The default "index" of 0 will be used. If you need multiple start +/// harnesses compiled into the same binary, you can use the +/// `HARNESS_START_WITH_MAXIMUM_SIZE_AND_PTR_INDEX` macro to specify different +/// indices, then enable them at runtime by configuring the fuzzer. +/// +/// When this macro is called: +/// +/// - A snapshot will be taken and saved +/// - The buffer pointed to by `buffer` will be saved and used as the testcase +/// buffer. Each +/// fuzzing iteration, a new test case will be written to this buffer. +/// - The address `size_ptr` will be saved. Each fuzzing iteration, the actual +/// size of the current testcase will be written to `*size_ptr`. +/// - The `max_size` value will be saved as the maximum testcase size. Fuzzing +/// test cases will be truncated to this size before being written to the +/// buffer. +/// +/// # Arguments +/// +/// - `buffer`: The pointer to the testcase buffer +/// - `size_ptr`: The pointer to the size of the testcase buffer +/// - `max_size`: The maximum size of the testcase buffer +/// +/// # Example +/// +/// ``` +/// unsigned char buffer[1024]; +/// size_t size; +/// HARNESS_START_WITH_MAXIMUM_SIZE_AND_PTR(buffer, &size, 1024); +/// ``` +#define HARNESS_START_WITH_MAXIMUM_SIZE_AND_PTR(buffer, size_ptr, max_size) \ + do { \ + __orr_extended3(N_START_BUFFER_PTR_SIZE_PTR_VAL, buffer, size_ptr, \ + max_size); \ + } while (0); + +/// Pseudo-hypercall number to signal the fuzzer to stop the current fuzzing +/// iteration and reset to the beginning of the fuzzing loop with a "normal" +/// stop status, indicating no solution has occurred. +#define N_STOP_NORMAL 4 + +/// HARNESS_STOP +/// +/// Signal the fuzzer to stop and reset to the beginning of the fuzzing loop +/// with a "normal" stop status, indicating no solution has occurred. The +/// default index of 0 will be used. If you need to differentiate between +/// multiple stop harnesses compiled into the same binary, you can use the +/// `HARNESS_STOP_INDEX` macro to specify different indices, then enable them at +/// runtime by configuring the fuzzer. +/// +/// # Example +/// +/// ``` +/// HARNESS_STOP(); +/// ``` +#define HARNESS_STOP() \ + do { \ + __orr(N_STOP_NORMAL); \ + } while (0); + +/// Pseudo-hypercall number to signal the fuzzer that a custom assertion has +/// occurred, and the fuzzer should stop the current fuzzing iteration and reset +/// to the beginning of the fuzzing loop with a "solution" stop status. +#define N_STOP_ASSERT 5 + +/// HARNESS_ASSERT +/// +/// Signal the fuzzer that a custom assertion has occurred, and the fuzzer +/// should stop the current fuzzing iteration and reset to the beginning of the +/// fuzzing loop with a "solution" stop status. The default index of 0 will be +/// used. If you need to differentiate between multiple assertion harnesses +/// compiled into the same binary, you can use the `HARNESS_ASSERT_INDEX` macro +/// to specify different indices, then enable them at runtime by configuring the +/// fuzzer. +/// +/// # Example +/// +/// ``` +/// HARNESS_ASSERT(); +/// ``` +#define HARNESS_ASSERT() \ + do { \ + __orr_extended1(N_STOP_ASSERT, DEFAULT_INDEX); \ + } while (0); + +#endif // TSFFS_H +#else +#error "Unsupported platform!" +#endif +#elif _MSC_VER +#ifndef TSFFS_H +#define TSFFS_H + +/// Define common with LibFuzzer and other fuzzers to allow code that is +/// fuzzing-specific to be left in the codebase. See +/// https://llvm.org/docs/LibFuzzer.html#id35 for more information +#ifndef FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION +#define FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION (1) +#endif // FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION + +#include + +/// HARNESS_START +/// +/// Signal the fuzzer to start the fuzzing loop at the point this macro is +/// called. The default "index" of 0 will be used. If you need multiple start +/// harnesses compiled into the same binary, you can use the +/// `HARNESS_START_INDEX` macro to specify different indices, then enable them +/// at runtime by configuring the fuzzer. +/// +/// When this macro is called: +/// +/// - A snapshot will be taken and saved +/// - The buffer pointed to by `buffer` will be saved and used as the testcase +/// buffer. Each +/// fuzzing iteration, a new test case will be written to this buffer. +/// - The size of the buffer pointed to by `size_ptr` will be saved as the +/// maximum testcase size. Each fuzzing iteration, the actual size of the +/// current testcase will be written to `*size_ptr`. +/// +/// # Arguments +/// +/// - `buffer`: The pointer to the testcase buffer +/// - `size_ptr`: The pointer to the size of the testcase buffer +/// +/// # Example +/// +/// ``` +/// unsigned char buffer[1024]; +/// size_t size; +/// HARNESS_START(buffer, &size); +/// ``` +void HARNESS_START(void *buffer, void *size_ptr); + +/// HARNESS_START_INDEX +/// +/// Signal the fuzzer to start the fuzzing loop at the point this macro is +/// called. The index specified by `start_index` will be used. If you need +/// multiple start harnesses compiled into the same binary, you can use this +/// macro to specify different indices, then enable them at runtime by +/// configuring the fuzzer. +/// +/// When this macro is called: +/// +/// - A snapshot will be taken and saved +/// - The buffer pointed to by `buffer` will be saved and used as the testcase +/// buffer. Each +/// fuzzing iteration, a new test case will be written to this buffer. +/// - The size of the buffer pointed to by `size_ptr` will be saved as the +/// maximum testcase size. Each fuzzing iteration, the actual size of the +/// current testcase will be written to `*size_ptr`. +/// +/// # Arguments +/// +/// - `start_index`: The index to use for this start harness +/// - `buffer`: The pointer to the testcase buffer +/// - `size_ptr`: The pointer to the size of the testcase buffer +/// +/// # Example +/// +/// ``` +/// unsigned char buffer[1024]; +/// size_t size; +/// HARNESS_START_INDEX(0x0001U, buffer, &size); +/// ``` +void HARNESS_START_INDEX(size_t start_index, void *buffer, void *size_ptr); + +/// HARNESS_START_WITH_MAXIMUM_SIZE +/// +/// Signal the fuzzer to start the fuzzing loop at the point this macro is +/// called. The default "index" of 0 will be used. If you need multiple start +/// harnesses compiled into the same binary, you can use the +/// `HARNESS_START_WITH_MAXIMUM_SIZE_INDEX` macro to specify different indices, +/// then enable them at runtime by configuring the fuzzer. +/// +/// When this macro is called: +/// +/// - A snapshot will be taken and saved +/// - The buffer pointed to by `buffer` will be saved and used as the testcase +/// buffer. Each +/// fuzzing iteration, a new test case will be written to this buffer. +/// - The `max_size` value will be saved as the maximum testcase size. Fuzzing +/// test cases will be truncated to this size before being written to the +/// buffer. +/// +/// # Arguments +/// +/// - `buffer`: The pointer to the testcase buffer +/// - `max_size`: The maximum size of the testcase buffer +/// +/// # Example +/// +/// ``` +/// unsigned char buffer[1024]; +/// HARNESS_START_WITH_MAXIMUM_SIZE(buffer, 1024); +/// ``` +void HARNESS_START_WITH_MAXIMUM_SIZE(void *buffer, size_t max_size); + +/// HARNESS_START_WITH_MAXIMUM_SIZE_INDEX +/// +/// Signal the fuzzer to start the fuzzing loop at the point this macro is +/// called. The index specified by `start_index` will be used. If you need +/// multiple start harnesses compiled into the same binary, you can use this +/// macro to specify different indices, then enable them at runtime by +/// configuring the fuzzer. +/// +/// When this macro is called: +/// +/// - A snapshot will be taken and saved +/// - The buffer pointed to by `buffer` will be saved and used as the testcase +/// buffer. Each +/// fuzzing iteration, a new test case will be written to this buffer. +/// - The `max_size` value will be saved as the maximum testcase size. Fuzzing +/// test cases will be truncated to this size before being written to the +/// buffer. +/// +/// # Arguments +/// +/// - `start_index`: The index to use for this start harness +/// - `buffer`: The pointer to the testcase buffer +/// - `max_size`: The maximum size of the testcase buffer +/// +/// # Example +/// +/// ``` +/// unsigned char buffer[1024]; +/// HARNESS_START_WITH_MAXIMUM_SIZE_INDEX(0x0001U, buffer, 1024); +/// ``` +void HARNESS_START_WITH_MAXIMUM_SIZE_INDEX(size_t start_index, void *buffer, + size_t max_size); + +/// HARNESS_START_WITH_MAXIMUM_SIZE_AND_PTR +/// +/// Signal the fuzzer to start the fuzzing loop at the point this macro is +/// called. The default "index" of 0 will be used. If you need multiple start +/// harnesses compiled into the same binary, you can use the +/// `HARNESS_START_WITH_MAXIMUM_SIZE_AND_PTR_INDEX` macro to specify different +/// indices, then enable them at runtime by configuring the fuzzer. +/// +/// When this macro is called: +/// +/// - A snapshot will be taken and saved +/// - The buffer pointed to by `buffer` will be saved and used as the testcase +/// buffer. Each +/// fuzzing iteration, a new test case will be written to this buffer. +/// - The address `size_ptr` will be saved. Each fuzzing iteration, the actual +/// size of the current testcase will be written to `*size_ptr`. +/// - The `max_size` value will be saved as the maximum testcase size. Fuzzing +/// test cases will be truncated to this size before being written to the +/// buffer. +/// +/// # Arguments +/// +/// - `buffer`: The pointer to the testcase buffer +/// - `size_ptr`: The pointer to the size of the testcase buffer +/// - `max_size`: The maximum size of the testcase buffer +/// +/// # Example +/// +/// ``` +/// unsigned char buffer[1024]; +/// size_t size; +/// HARNESS_START_WITH_MAXIMUM_SIZE_AND_PTR(buffer, &size, 1024); +/// ``` +void HARNESS_START_WITH_MAXIMUM_SIZE_AND_PTR(void *buffer, void *size_ptr, + size_t max_size); + +/// HARNESS_START_WITH_MAXIMUM_SIZE_AND_PTR_INDEX +/// +/// Signal the fuzzer to start the fuzzing loop at the point this macro is +/// called. The index specified by `start_index` will be used. If you need +/// multiple start harnesses compiled into the same binary, you can use this +/// macro to specify different indices, then enable them at runtime by +/// configuring the fuzzer. +/// +/// When this macro is called: +/// +/// - A snapshot will be taken and saved +/// - The buffer pointed to by `buffer` will be saved and used as the testcase +/// buffer. Each +/// fuzzing iteration, a new test case will be written to this buffer. +/// - The address `size_ptr` will be saved. Each fuzzing iteration, the actual +/// size of the current testcase will be written to `*size_ptr`. +/// - The `max_size` value will be saved as the maximum testcase size. Fuzzing +/// test cases will be truncated to this size before being written to the +/// buffer. +/// +/// # Arguments +/// +/// - `start_index`: The index to use for this start harness +/// - `buffer`: The pointer to the testcase buffer +/// - `size_ptr`: The pointer to the size of the testcase buffer +/// - `max_size`: The maximum size of the testcase buffer +/// +/// # Example +/// +/// ``` +/// unsigned char buffer[1024]; +/// size_t size; +/// HARNESS_START_WITH_MAXIMUM_SIZE_AND_PTR_INDEX(0x0001U, buffer, &size, 1024); +/// ``` +void HARNESS_START_WITH_MAXIMUM_SIZE_AND_PTR_INDEX(size_t start_index, + void *buffer, void *size_ptr, + size_t max_size); + +/// HARNESS_STOP +/// +/// Signal the fuzzer to stop and reset to the beginning of the fuzzing loop +/// with a "normal" stop status, indicating no solution has occurred. The +/// default index of 0 will be used. If you need to differentiate between +/// multiple stop harnesses compiled into the same binary, you can use the +/// `HARNESS_STOP_INDEX` macro to specify different indices, then enable them at +/// runtime by configuring the fuzzer. +/// +/// # Example +/// +/// ``` +/// HARNESS_STOP(); +/// ``` +void HARNESS_STOP(void); + +/// HARNESS_STOP_INDEX +/// +/// Signal the fuzzer to stop and reset to the beginning of the fuzzing loop +/// with a "normal" stop status, indicating no solution has occurred. The index +/// specified by `stop_index` will be used. If you need to differentiate between +/// multiple stop harnesses compiled into the same binary, you can use this +/// macro to specify different indices, then enable them at runtime by +/// configuring the fuzzer. +/// +/// # Arguments +/// +/// - `stop_index`: The index to use for this stop harness +/// +/// # Example +/// +/// ``` +/// HARNESS_STOP_INDEX(0x0001U); +/// ``` +void HARNESS_STOP_INDEX(size_t stop_index); + +/// HARNESS_ASSERT +/// +/// Signal the fuzzer that a custom assertion has occurred, and the fuzzer +/// should stop the current fuzzing iteration and reset to the beginning of the +/// fuzzing loop with a "solution" stop status. The default index of 0 will be +/// used. If you need to differentiate between multiple assertion harnesses +/// compiled into the same binary, you can use the `HARNESS_ASSERT_INDEX` macro +/// to specify different indices, then enable them at runtime by configuring the +/// fuzzer. +/// +/// # Example +/// +/// ``` +/// HARNESS_ASSERT(); +/// ``` +void HARNESS_ASSERT(void); + +/// HARNESS_ASSERT_INDEX +/// +/// Signal the fuzzer that a custom assertion has occurred, and the fuzzer +/// should stop the current fuzzing iteration and reset to the beginning of the +/// fuzzing loop with a "solution" stop status. The index specified by +/// `assert_index` will be used. If you need to differentiate between multiple +/// assertion harnesses compiled into the same binary, you can use this macro to +/// specify different indices, then enable them at runtime by configuring the +/// fuzzer. +/// +/// # Arguments +/// +/// - `assert_index`: The index to use for this assertion harness +/// +/// # Example +/// +/// ``` +/// HARNESS_ASSERT_INDEX(0x0001U); +/// ``` +void HARNESS_ASSERT_INDEX(size_t assert_index); + +#endif // TSFFS_H +#else +#error "Unsupported compiler!" +#endif diff --git a/examples/tutorials/risc-v-kernel/src/tsffs-gcc-riscv64.h b/examples/tutorials/risc-v-kernel/src/tsffs-gcc-riscv64.h deleted file mode 100644 index f6acf1ea..00000000 --- a/examples/tutorials/risc-v-kernel/src/tsffs-gcc-riscv64.h +++ /dev/null @@ -1,124 +0,0 @@ -// Copyright (C) 2024 Intel Corporation -// SPDX-License-Identifier: Apache-2.0 - -/// Definitions and macros for compiled-in harnessing of C and C++ target -/// software for the RISC-V (64-bit) architecture -/// -/// Example: -/// ```c -/// #include "tsffs-gcc-riscv64.h" -/// -/// int main() { -/// char buf[0x10]; -/// size_t size = 0x10; -/// size_t *size_ptr = &size; -/// HARNESS_START((char *)buf, size_ptr); -/// int retval = YourSpecialDecoder(buf, *size_ptr); -/// if (!retval) { -/// HARNESS_ASSERT(); -/// } else { -/// HARNESS_STOP(); -/// } -/// } -/// ``` - -#ifndef TSFFS_H -#define TSFFS_H - -/// Define common with LibFuzzer and other fuzzers to allow code that is -/// fuzzing-specific to be left in the codebase. See -/// https://llvm.org/docs/LibFuzzer.html#id35 for more information -#ifndef FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION -#define FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION (1) -#endif // FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION - -/// Default magic instruction `n` value to signal the TSFFS fuzzer to start the -/// fuzzing loop -#define MAGIC_START (0x0001U) -/// Default magic instruction `n` value to signal the TSFFS fuzzer to stop and -/// reset the fuzzing loop -#define MAGIC_STOP (0x0002U) -/// Default magic instruction `n` value to signal the TSFFS fuzzer that an error -/// has occurred and the testcase input should be saved as a solution -#define MAGIC_ASSERT (0x0003U) - -/// Alternative magic numbers that can be used for start and stop events in -/// conjunction with setting the magic number for each event via the SIMICS or -/// SIMICS Python script interface -#define MAGIC_ALT_0 (0x0004U) -#define MAGIC_ALT_1 (0x0005U) -#define MAGIC_ALT_2 (0x0006U) -#define MAGIC_ALT_3 (0x0007U) -#define MAGIC_ALT_4 (0x0008U) -#define MAGIC_ALT_5 (0x0009U) -#define MAGIC_ALT_6 (0x000aU) -#define MAGIC_ALT_7 (0x000bU) - -/// Invoke the magic instruction defined by SIMICS for the RISC-V architecture -/// (`srai zero, zero, n`) with a specific value of `n`, after setting register -/// `a0` to the value of the pointer to the testcase and register `a1` to the -/// value of the pointer to the testcase size. These registers are accessed by -/// the fuzzer and are defined per-architecture. -#define __srai_extended(value, testcase_ptr, size_ptr) \ - __asm__ __volatile__("mv a0, %0; mv a1, %1; srai zero, zero, %2" \ - : \ - : "r"(testcase_ptr), "r"(size_ptr), "I"(value) \ - : "a0", "a1"); - -/// Invoke the magic instruction defined by SIMICS for the RISC-V architecture -/// (`srai zero, zero, n`) with a specific value of `n` -#define __srai(value) \ - __asm__ __volatile__("srai zero, zero, %0" : : "I"(value) :) - -/// Signal the fuzzer using a specific magic value `start` to start the fuzzing -/// loop at the point this macro is called. A snapshot will be taken when the -/// macro is called, and the maximum testcase size `*size_ptr` will be saved as -/// `max_testcase_size`. Each iteration of the fuzzing loop, the fuzzer input -/// (the "testcase") will be written to `*testcase_ptr` as if running -/// `memcpy(testcase_ptr, current_testcase, max_testcase_size)`, and the actual -/// size of the current testcase will be written to -/// `*size_ptr` as if running `*size_ptr = current_testcase_size`. -#define __arch_harness_start(start, testcase_ptr, size_ptr) \ - do { \ - __srai_extended(start, testcase_ptr, size_ptr); \ - } while (0) - -/// Signal the fuzzer using the a specific magic value (`stop`) to stop and -/// reset to the beginning of the fuzzing loop with a "normal" stop status, -/// indicating no solution has occurred. -#define __arch_harness_stop(stop) \ - do { \ - __srai(stop); \ - } while (0) - -/// Signal the fuzzer using the default magic value to start the fuzzing loop at -/// the point this macro is called. A snapshot will be taken when the macro is -/// called, and the maximum testcase size `*size_ptr` will be saved as -/// `max_testcase_size`. Each iteration of the fuzzing loop, the fuzzer input -/// (the "testcase") will be written to -/// `*testcase_ptr` as if running `memcpy(testcase_ptr, current_testcase, -/// max_testcase_size)`, and the actual size of the current testcase will be -/// written to -/// `*size_ptr` as if running `*size_ptr = current_testcase_size`. -#define HARNESS_START(testcase_ptr, size_ptr) \ - do { \ - __arch_harness_start(MAGIC_START, testcase_ptr, size_ptr); \ - } while (0) - -/// Signal the fuzzer using the default magic value to stop and reset to the -/// beginning of the fuzzing loop with a "normal" stop status, indicating no -/// solution has occurred. -#define HARNESS_STOP() \ - do { \ - __arch_harness_stop(MAGIC_STOP); \ - } while (0) - -/// Signal the fuzzer using the default magic value to stop and reset to the -/// beginning of the fuzzing loop with a "solution" stop status, indicating some -/// custom error has occurred. -#define HARNESS_ASSERT() \ - do { \ - __arch_harness_stop(MAGIC_ASSERT); \ - } while (0) - -#endif // TSFFS_H \ No newline at end of file diff --git a/examples/tutorials/risc-v-kernel/src/tsffs.h b/examples/tutorials/risc-v-kernel/src/tsffs.h new file mode 100644 index 00000000..95b604fd --- /dev/null +++ b/examples/tutorials/risc-v-kernel/src/tsffs.h @@ -0,0 +1,2876 @@ +// Copyright (C) 2024 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 + +#ifdef __GNUC__ +#ifdef __i386__ +// Copyright (C) 2024 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 + +/// Definitions and macros for compiled-in harnessing of C and C++ target +/// software for the X86 architecture. + +#ifndef TSFFS_H +#define TSFFS_H + +/// Define common with LibFuzzer and other fuzzers to allow code that is +/// fuzzing-specific to be left in the codebase. See +/// https://llvm.org/docs/LibFuzzer.html#id35 for more information +#ifndef FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION +#define FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION (1) +#endif // FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION + +/// __cpuid +/// +/// Invoke the CPUID instruction with a specific value `value` in register +/// `rax`. +/// +/// # Arguments +/// +/// - `value`: The value to load into the `rax` register before invoking the +/// CPUID instruction +#define __cpuid(value) \ + unsigned int _a __attribute__((unused)) = 0; \ + unsigned int _b __attribute__((unused)) = 0; \ + unsigned int _c __attribute__((unused)) = 0; \ + unsigned int _d __attribute__((unused)) = 0; \ + __asm__ __volatile__("cpuid\n\t" \ + : "=a"(_a), "=b"(_b), "=c"(_c), "=d"(_d) \ + : "a"(value)); + +/// __cpuid_extended1 +/// +/// Invoke the CPUID instruction with a specific value `value` in register +/// `rax` and a pseudo-argument in register `rdi`. +/// +/// # Arguments +/// +/// - `value`: The value to load into the `rax` register before invoking the +/// CPUID instruction +/// - `arg0`: The value to load into the `rdi` register before invoking the +/// CPUID instruction +#define __cpuid_extended1(value, arg0) \ + unsigned int _a __attribute__((unused)) = 0; \ + unsigned int _b __attribute__((unused)) = 0; \ + unsigned int _c __attribute__((unused)) = 0; \ + unsigned int _d __attribute__((unused)) = 0; \ + __asm__ __volatile__("cpuid\n\t" \ + : "=a"(_a), "=b"(_b), "=c"(_c), "=d"(_d) \ + : "a"(value), "D"(arg0)); + +/// __cpuid_extended2 +/// +/// Invoke the CPUID instruction with a specific value `value` in register +/// `rax` and a pseudo-arguments in registers `rdi` and `rsi`. +/// +/// # Arguments +/// +/// - `value`: The value to load into the `rax` register before invoking the +/// CPUID instruction +/// - `arg0`: The value to load into the `rdi` register before invoking the +/// CPUID instruction +/// - `arg1`: The value to load into the `rsi` register before invoking the +/// CPUID instruction +#define __cpuid_extended2(value, arg0, arg1) \ + unsigned int _a __attribute__((unused)) = 0; \ + unsigned int _b __attribute__((unused)) = 0; \ + unsigned int _c __attribute__((unused)) = 0; \ + unsigned int _d __attribute__((unused)) = 0; \ + __asm__ __volatile__("cpuid\n\t" \ + : "=a"(_a), "=b"(_b), "=c"(_c), "=d"(_d) \ + : "a"(value), "D"(arg0), "S"(arg1)); + +/// __cpuid_extended3 +/// +/// Invoke the CPUID instruction with a specific value `value` in register +/// `rax` and a pseudo-arguments in registers `rdi`, `rsi`, and `rdx`. +/// +/// # Arguments +/// +/// - `value`: The value to load into the `rax` register before invoking the +/// CPUID instruction +/// - `arg0`: The value to load into the `rdi` register before invoking the +/// CPUID instruction +/// - `arg1`: The value to load into the `rsi` register before invoking the +/// CPUID instruction +/// - `arg2`: The value to load into the `rdx` register before invoking the +/// CPUID instruction +#define __cpuid_extended3(value, arg0, arg1, arg2) \ + unsigned int _a __attribute__((unused)) = 0; \ + unsigned int _b __attribute__((unused)) = 0; \ + unsigned int _c __attribute__((unused)) = 0; \ + unsigned int _d __attribute__((unused)) = 0; \ + __asm__ __volatile__("cpuid\n\t" \ + : "=a"(_a), "=b"(_b), "=c"(_c), "=d"(_d) \ + : "a"(value), "D"(arg0), "S"(arg1), "d"(arg2)); + +/// __cpuid_extended4 +/// +/// Invoke the CPUID instruction with a specific value `value` in register +/// `rax` and a pseudo-arguments in registers `rdi`, `rsi`, `rdx`, and `rcx`. +/// +/// # Arguments +/// +/// - `value`: The value to load into the `rax` register before invoking the +/// CPUID instruction +/// - `arg0`: The value to load into the `rdi` register before invoking the +/// CPUID instruction +/// - `arg1`: The value to load into the `rsi` register before invoking the +/// CPUID instruction +/// - `arg2`: The value to load into the `rdx` register before invoking the +/// CPUID instruction +/// - `arg3`: The value to load into the `rcx` register before invoking the +/// CPUID instruction +#define __cpuid_extended4(value, arg0, arg1, arg2, arg3) \ + unsigned int _a __attribute__((unused)) = 0; \ + unsigned int _b __attribute__((unused)) = 0; \ + unsigned int _c __attribute__((unused)) = 0; \ + unsigned int _d __attribute__((unused)) = 0; \ + __asm__ __volatile__("cpuid\n\t" \ + : "=a"(_a), "=b"(_b), "=c"(_c), "=d"(_d) \ + : "a"(value), "D"(arg0), "S"(arg1), "d"(arg2), \ + "c"(arg3)); + +/// Magic value defined by SIMICS as the "leaf" value of a CPUID instruction +/// that is treated as a magic instruction. +#define MAGIC (0x4711U) + +/// The default index number used for magic instructions. All magic instructions +/// support multiple start and stop indices, which defaults to 0 if not +/// specified. +#define DEFAULT_INDEX (0x0000U) + +/// Pseudo-hypercall number to signal the fuzzer to use the first argument to +/// the magic instruction as the pointer to the testcase buffer and the second +/// argument as a pointer to the size of the testcase buffer. +#define N_START_BUFFER_PTR_SIZE_PTR (0x0001U) + +/// HARNESS_START +/// +/// Signal the fuzzer to start the fuzzing loop at the point this macro is +/// called. The default "index" of 0 will be used. If you need multiple start +/// harnesses compiled into the same binary, you can use the +/// `HARNESS_START_INDEX` macro to specify different indices, then enable them +/// at runtime by configuring the fuzzer. +/// +/// When this macro is called: +/// +/// - A snapshot will be taken and saved +/// - The buffer pointed to by `buffer` will be saved and used as the testcase +/// buffer. Each +/// fuzzing iteration, a new test case will be written to this buffer. +/// - The size of the buffer pointed to by `size_ptr` will be saved as the +/// maximum testcase size. Each fuzzing iteration, the actual size of the +/// current testcase will be written to `*size_ptr`. +/// +/// # Arguments +/// +/// - `buffer`: The pointer to the testcase buffer +/// - `size_ptr`: The pointer to the size of the testcase buffer +/// +/// # Example +/// +/// ``` +/// unsigned char buffer[1024]; +/// size_t size; +/// HARNESS_START(buffer, &size); +/// ``` +#define HARNESS_START(buffer, size_ptr) \ + do { \ + unsigned int value = (N_START_BUFFER_PTR_SIZE_PTR << 0x10U) | MAGIC; \ + __cpuid_extended3(value, DEFAULT_INDEX, buffer, size_ptr); \ + } while (0); + +/// HARNESS_START_INDEX +/// +/// Signal the fuzzer to start the fuzzing loop at the point this macro is +/// called. The index specified by `start_index` will be used. If you need +/// multiple start harnesses compiled into the same binary, you can use this +/// macro to specify different indices, then enable them at runtime by +/// configuring the fuzzer. +/// +/// When this macro is called: +/// +/// - A snapshot will be taken and saved +/// - The buffer pointed to by `buffer` will be saved and used as the testcase +/// buffer. Each +/// fuzzing iteration, a new test case will be written to this buffer. +/// - The size of the buffer pointed to by `size_ptr` will be saved as the +/// maximum testcase size. Each fuzzing iteration, the actual size of the +/// current testcase will be written to `*size_ptr`. +/// +/// # Arguments +/// +/// - `start_index`: The index to use for this start harness +/// - `buffer`: The pointer to the testcase buffer +/// - `size_ptr`: The pointer to the size of the testcase buffer +/// +/// # Example +/// +/// ``` +/// unsigned char buffer[1024]; +/// size_t size; +/// HARNESS_START_INDEX(0x0001U, buffer, &size); +/// ``` +#define HARNESS_START_INDEX(start_index, buffer, size_ptr) \ + do { \ + unsigned int value = (N_START_BUFFER_PTR_SIZE_PTR << 0x10U) | MAGIC; \ + __cpuid_extended3(value, start_index, buffer, size_ptr); \ + } while (0); + +/// Pseudo-hypercall number to signal the fuzzer to use the first argument to +/// the magic instruction as the pointer to the testcase buffer and the second +/// argument as the maximum size of the testcase buffer. +#define N_START_BUFFER_PTR_SIZE_VAL (0x0002U) + +/// HARNESS_START_WITH_MAXIMUM_SIZE +/// +/// Signal the fuzzer to start the fuzzing loop at the point this macro is +/// called. The default "index" of 0 will be used. If you need multiple start +/// harnesses compiled into the same binary, you can use the +/// `HARNESS_START_WITH_MAXIMUM_SIZE_INDEX` macro to specify different indices, +/// then enable them at runtime by configuring the fuzzer. +/// +/// When this macro is called: +/// +/// - A snapshot will be taken and saved +/// - The buffer pointed to by `buffer` will be saved and used as the testcase +/// buffer. Each +/// fuzzing iteration, a new test case will be written to this buffer. +/// - The `max_size` value will be saved as the maximum testcase size. Fuzzing +/// test cases will be truncated to this size before being written to the +/// buffer. +/// +/// # Arguments +/// +/// - `buffer`: The pointer to the testcase buffer +/// - `max_size`: The maximum size of the testcase buffer +/// +/// # Example +/// +/// ``` +/// unsigned char buffer[1024]; +/// HARNESS_START_WITH_MAXIMUM_SIZE(buffer, 1024); +/// ``` +#define HARNESS_START_WITH_MAXIMUM_SIZE(buffer, max_size) \ + do { \ + unsigned int value = (N_START_BUFFER_PTR_SIZE_VAL << 0x10U) | MAGIC; \ + __cpuid_extended3(value, DEFAULT_INDEX, buffer, max_size); \ + } while (0); + +/// HARNESS_START_WITH_MAXIMUM_SIZE_INDEX +/// +/// Signal the fuzzer to start the fuzzing loop at the point this macro is +/// called. The index specified by `start_index` will be used. If you need +/// multiple start harnesses compiled into the same binary, you can use this +/// macro to specify different indices, then enable them at runtime by +/// configuring the fuzzer. +/// +/// When this macro is called: +/// +/// - A snapshot will be taken and saved +/// - The buffer pointed to by `buffer` will be saved and used as the testcase +/// buffer. Each +/// fuzzing iteration, a new test case will be written to this buffer. +/// - The `max_size` value will be saved as the maximum testcase size. Fuzzing +/// test cases will be truncated to this size before being written to the +/// buffer. +/// +/// # Arguments +/// +/// - `start_index`: The index to use for this start harness +/// - `buffer`: The pointer to the testcase buffer +/// - `max_size`: The maximum size of the testcase buffer +/// +/// # Example +/// +/// ``` +/// unsigned char buffer[1024]; +/// HARNESS_START_WITH_MAXIMUM_SIZE_INDEX(0x0001U, buffer, 1024); +/// ``` +#define HARNESS_START_WITH_MAXIMUM_SIZE_INDEX(start_index, buffer, max_size) \ + do { \ + unsigned int value = (N_START_BUFFER_PTR_SIZE_VAL << 0x10U) | MAGIC; \ + __cpuid_extended3(value, start_index, buffer, max_size); \ + } while (0); + +/// Pseudo-hypercall number to signal the fuzzer to use the first argument to +/// the magic instruction as the pointer to the testcase buffer, the second +/// argument as a pointer to the size of the testcase buffer, and the third +/// argument as the maximum size of the testcase buffer. +#define N_START_BUFFER_PTR_SIZE_PTR_VAL (0x0003U) + +/// HARNESS_START_WITH_MAXIMUM_SIZE_AND_PTR +/// +/// Signal the fuzzer to start the fuzzing loop at the point this macro is +/// called. The default "index" of 0 will be used. If you need multiple start +/// harnesses compiled into the same binary, you can use the +/// `HARNESS_START_WITH_MAXIMUM_SIZE_AND_PTR_INDEX` macro to specify different +/// indices, then enable them at runtime by configuring the fuzzer. +/// +/// When this macro is called: +/// +/// - A snapshot will be taken and saved +/// - The buffer pointed to by `buffer` will be saved and used as the testcase +/// buffer. Each +/// fuzzing iteration, a new test case will be written to this buffer. +/// - The address `size_ptr` will be saved. Each fuzzing iteration, the actual +/// size of the current testcase will be written to `*size_ptr`. +/// - The `max_size` value will be saved as the maximum testcase size. Fuzzing +/// test cases will be truncated to this size before being written to the +/// buffer. +/// +/// # Arguments +/// +/// - `buffer`: The pointer to the testcase buffer +/// - `size_ptr`: The pointer to the size of the testcase buffer +/// - `max_size`: The maximum size of the testcase buffer +/// +/// # Example +/// +/// ``` +/// unsigned char buffer[1024]; +/// size_t size; +/// HARNESS_START_WITH_MAXIMUM_SIZE_AND_PTR(buffer, &size, 1024); +/// ``` +#define HARNESS_START_WITH_MAXIMUM_SIZE_AND_PTR(buffer, size_ptr, max_size) \ + do { \ + unsigned int value = (N_START_BUFFER_PTR_SIZE_PTR_VAL << 0x10U) | MAGIC; \ + __cpuid_extended4(value, DEFAULT_INDEX, buffer, size_ptr, max_size); \ + } while (0); + +/// HARNESS_START_WITH_MAXIMUM_SIZE_AND_PTR_INDEX +/// +/// Signal the fuzzer to start the fuzzing loop at the point this macro is +/// called. The index specified by `start_index` will be used. If you need +/// multiple start harnesses compiled into the same binary, you can use this +/// macro to specify different indices, then enable them at runtime by +/// configuring the fuzzer. +/// +/// When this macro is called: +/// +/// - A snapshot will be taken and saved +/// - The buffer pointed to by `buffer` will be saved and used as the testcase +/// buffer. Each +/// fuzzing iteration, a new test case will be written to this buffer. +/// - The address `size_ptr` will be saved. Each fuzzing iteration, the actual +/// size of the current testcase will be written to `*size_ptr`. +/// - The `max_size` value will be saved as the maximum testcase size. Fuzzing +/// test cases will be truncated to this size before being written to the +/// buffer. +/// +/// # Arguments +/// +/// - `start_index`: The index to use for this start harness +/// - `buffer`: The pointer to the testcase buffer +/// - `size_ptr`: The pointer to the size of the testcase buffer +/// - `max_size`: The maximum size of the testcase buffer +/// +/// # Example +/// +/// ``` +/// unsigned char buffer[1024]; +/// size_t size; +/// HARNESS_START_WITH_MAXIMUM_SIZE_AND_PTR_INDEX(0x0001U, buffer, &size, 1024); +/// ``` +#define HARNESS_START_WITH_MAXIMUM_SIZE_AND_PTR_INDEX(start_index, buffer, \ + size_ptr, max_size) \ + do { \ + unsigned int value = (N_START_BUFFER_PTR_SIZE_PTR_VAL << 0x10U) | MAGIC; \ + __cpuid_extended4(value, start_index, buffer, size_ptr, max_size); \ + } while (0); + +/// Pseudo-hypercall number to signal the fuzzer to stop the current fuzzing +/// iteration and reset to the beginning of the fuzzing loop with a "normal" +/// stop status, indicating no solution has occurred. +#define N_STOP_NORMAL (0x0004U) + +/// HARNESS_STOP +/// +/// Signal the fuzzer to stop and reset to the beginning of the fuzzing loop +/// with a "normal" stop status, indicating no solution has occurred. The +/// default index of 0 will be used. If you need to differentiate between +/// multiple stop harnesses compiled into the same binary, you can use the +/// `HARNESS_STOP_INDEX` macro to specify different indices, then enable them at +/// runtime by configuring the fuzzer. +/// +/// # Example +/// +/// ``` +/// HARNESS_STOP(); +/// ``` +#define HARNESS_STOP() \ + do { \ + unsigned int value = (N_STOP_NORMAL << 0x10U) | MAGIC; \ + __cpuid_extended1(value, DEFAULT_INDEX); \ + } while (0); + +/// HARNESS_STOP_INDEX +/// +/// Signal the fuzzer to stop and reset to the beginning of the fuzzing loop +/// with a "normal" stop status, indicating no solution has occurred. The index +/// specified by `stop_index` will be used. If you need to differentiate between +/// multiple stop harnesses compiled into the same binary, you can use this +/// macro to specify different indices, then enable them at runtime by +/// configuring the fuzzer. +/// +/// # Arguments +/// +/// - `stop_index`: The index to use for this stop harness +/// +/// # Example +/// +/// ``` +/// HARNESS_STOP_INDEX(0x0001U); +/// ``` +#define HARNESS_STOP_INDEX(stop_index) \ + do { \ + unsigned int value = (N_STOP_NORMAL << 0x10U) | MAGIC; \ + __cpuid_extended1(value, stop_index); \ + } while (0); + +/// Pseudo-hypercall number to signal the fuzzer that a custom assertion has +/// occurred, and the fuzzer should stop the current fuzzing iteration and reset +/// to the beginning of the fuzzing loop with a "solution" stop status. +#define N_STOP_ASSERT (0x0005U) + +/// HARNESS_ASSERT +/// +/// Signal the fuzzer that a custom assertion has occurred, and the fuzzer +/// should stop the current fuzzing iteration and reset to the beginning of the +/// fuzzing loop with a "solution" stop status. The default index of 0 will be +/// used. If you need to differentiate between multiple assertion harnesses +/// compiled into the same binary, you can use the `HARNESS_ASSERT_INDEX` macro +/// to specify different indices, then enable them at runtime by configuring the +/// fuzzer. +/// +/// # Example +/// +/// ``` +/// HARNESS_ASSERT(); +/// ``` +#define HARNESS_ASSERT() \ + do { \ + unsigned int value = (N_STOP_ASSERT << 0x10U) | MAGIC; \ + __cpuid_extended1(value, DEFAULT_INDEX); \ + } while (0); + +/// HARNESS_ASSERT_INDEX +/// +/// Signal the fuzzer that a custom assertion has occurred, and the fuzzer +/// should stop the current fuzzing iteration and reset to the beginning of the +/// fuzzing loop with a "solution" stop status. The index specified by +/// `assert_index` will be used. If you need to differentiate between multiple +/// assertion harnesses compiled into the same binary, you can use this macro to +/// specify different indices, then enable them at runtime by configuring the +/// fuzzer. +/// +/// # Arguments +/// +/// - `assert_index`: The index to use for this assertion harness +/// +/// # Example +/// +/// ``` +/// HARNESS_ASSERT_INDEX(0x0001U); +/// ``` +#define HARNESS_ASSERT_INDEX(assert_index) \ + do { \ + unsigned int value = (N_STOP_ASSERT << 0x10U) | MAGIC; \ + __cpuid_extended1(value, assert_index); \ + } while (0); + +#endif // TSFFS_H +#elif __x86_64__ +// Copyright (C) 2024 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 + +/// Definitions and macros for compiled-in harnessing of C and C++ target +/// software for the x86_64 architecture. + +#ifndef TSFFS_H +#define TSFFS_H + +/// Define common with LibFuzzer and other fuzzers to allow code that is +/// fuzzing-specific to be left in the codebase. See +/// https://llvm.org/docs/LibFuzzer.html#id35 for more information +#ifndef FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION +#define FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION (1) +#endif // FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION + +/// __cpuid +/// +/// Invoke the CPUID instruction with a specific value `value` in register +/// `rax`. +/// +/// # Arguments +/// +/// - `value`: The value to load into the `rax` register before invoking the +/// CPUID instruction +#define __cpuid(value) \ + unsigned int _a __attribute__((unused)) = 0; \ + unsigned int _b __attribute__((unused)) = 0; \ + unsigned int _c __attribute__((unused)) = 0; \ + unsigned int _d __attribute__((unused)) = 0; \ + __asm__ __volatile__("cpuid\n\t" \ + : "=a"(_a), "=b"(_b), "=c"(_c), "=d"(_d) \ + : "a"(value)); + +/// __cpuid_extended1 +/// +/// Invoke the CPUID instruction with a specific value `value` in register +/// `rax` and a pseudo-argument in register `rdi`. +/// +/// # Arguments +/// +/// - `value`: The value to load into the `rax` register before invoking the +/// CPUID instruction +/// - `arg0`: The value to load into the `rdi` register before invoking the +/// CPUID instruction +#define __cpuid_extended1(value, arg0) \ + unsigned int _a __attribute__((unused)) = 0; \ + unsigned int _b __attribute__((unused)) = 0; \ + unsigned int _c __attribute__((unused)) = 0; \ + unsigned int _d __attribute__((unused)) = 0; \ + __asm__ __volatile__("cpuid\n\t" \ + : "=a"(_a), "=b"(_b), "=c"(_c), "=d"(_d) \ + : "a"(value), "D"(arg0)); + +/// __cpuid_extended2 +/// +/// Invoke the CPUID instruction with a specific value `value` in register +/// `rax` and a pseudo-arguments in registers `rdi` and `rsi`. +/// +/// # Arguments +/// +/// - `value`: The value to load into the `rax` register before invoking the +/// CPUID instruction +/// - `arg0`: The value to load into the `rdi` register before invoking the +/// CPUID instruction +/// - `arg1`: The value to load into the `rsi` register before invoking the +/// CPUID instruction +#define __cpuid_extended2(value, arg0, arg1) \ + unsigned int _a __attribute__((unused)) = 0; \ + unsigned int _b __attribute__((unused)) = 0; \ + unsigned int _c __attribute__((unused)) = 0; \ + unsigned int _d __attribute__((unused)) = 0; \ + __asm__ __volatile__("cpuid\n\t" \ + : "=a"(_a), "=b"(_b), "=c"(_c), "=d"(_d) \ + : "a"(value), "D"(arg0), "S"(arg1)); + +/// __cpuid_extended3 +/// +/// Invoke the CPUID instruction with a specific value `value` in register +/// `rax` and a pseudo-arguments in registers `rdi`, `rsi`, and `rdx`. +/// +/// # Arguments +/// +/// - `value`: The value to load into the `rax` register before invoking the +/// CPUID instruction +/// - `arg0`: The value to load into the `rdi` register before invoking the +/// CPUID instruction +/// - `arg1`: The value to load into the `rsi` register before invoking the +/// CPUID instruction +/// - `arg2`: The value to load into the `rdx` register before invoking the +/// CPUID instruction +#define __cpuid_extended3(value, arg0, arg1, arg2) \ + unsigned int _a __attribute__((unused)) = 0; \ + unsigned int _b __attribute__((unused)) = 0; \ + unsigned int _c __attribute__((unused)) = 0; \ + unsigned int _d __attribute__((unused)) = 0; \ + __asm__ __volatile__("cpuid\n\t" \ + : "=a"(_a), "=b"(_b), "=c"(_c), "=d"(_d) \ + : "a"(value), "D"(arg0), "S"(arg1), "d"(arg2)); + +/// __cpuid_extended4 +/// +/// Invoke the CPUID instruction with a specific value `value` in register +/// `rax` and a pseudo-arguments in registers `rdi`, `rsi`, `rdx`, and `rcx`. +/// +/// # Arguments +/// +/// - `value`: The value to load into the `rax` register before invoking the +/// CPUID instruction +/// - `arg0`: The value to load into the `rdi` register before invoking the +/// CPUID instruction +/// - `arg1`: The value to load into the `rsi` register before invoking the +/// CPUID instruction +/// - `arg2`: The value to load into the `rdx` register before invoking the +/// CPUID instruction +/// - `arg3`: The value to load into the `rcx` register before invoking the +/// CPUID instruction +#define __cpuid_extended4(value, arg0, arg1, arg2, arg3) \ + unsigned int _a __attribute__((unused)) = 0; \ + unsigned int _b __attribute__((unused)) = 0; \ + unsigned int _c __attribute__((unused)) = 0; \ + unsigned int _d __attribute__((unused)) = 0; \ + __asm__ __volatile__("cpuid\n\t" \ + : "=a"(_a), "=b"(_b), "=c"(_c), "=d"(_d) \ + : "a"(value), "D"(arg0), "S"(arg1), "d"(arg2), \ + "c"(arg3)); + +/// Magic value defined by SIMICS as the "leaf" value of a CPUID instruction +/// that is treated as a magic instruction. +#define MAGIC (0x4711U) + +/// The default index number used for magic instructions. All magic instructions +/// support multiple start and stop indices, which defaults to 0 if not +/// specified. +#define DEFAULT_INDEX (0x0000U) + +/// Pseudo-hypercall number to signal the fuzzer to use the first argument to +/// the magic instruction as the pointer to the testcase buffer and the second +/// argument as a pointer to the size of the testcase buffer. +#define N_START_BUFFER_PTR_SIZE_PTR (0x0001U) + +/// HARNESS_START +/// +/// Signal the fuzzer to start the fuzzing loop at the point this macro is +/// called. The default "index" of 0 will be used. If you need multiple start +/// harnesses compiled into the same binary, you can use the +/// `HARNESS_START_INDEX` macro to specify different indices, then enable them +/// at runtime by configuring the fuzzer. +/// +/// When this macro is called: +/// +/// - A snapshot will be taken and saved +/// - The buffer pointed to by `buffer` will be saved and used as the testcase +/// buffer. Each +/// fuzzing iteration, a new test case will be written to this buffer. +/// - The size of the buffer pointed to by `size_ptr` will be saved as the +/// maximum testcase size. Each fuzzing iteration, the actual size of the +/// current testcase will be written to `*size_ptr`. +/// +/// # Arguments +/// +/// - `buffer`: The pointer to the testcase buffer +/// - `size_ptr`: The pointer to the size of the testcase buffer +/// +/// # Example +/// +/// ``` +/// unsigned char buffer[1024]; +/// size_t size; +/// HARNESS_START(buffer, &size); +/// ``` +#define HARNESS_START(buffer, size_ptr) \ + do { \ + unsigned int value = (N_START_BUFFER_PTR_SIZE_PTR << 0x10U) | MAGIC; \ + __cpuid_extended3(value, DEFAULT_INDEX, buffer, size_ptr); \ + } while (0); + +/// HARNESS_START_INDEX +/// +/// Signal the fuzzer to start the fuzzing loop at the point this macro is +/// called. The index specified by `start_index` will be used. If you need +/// multiple start harnesses compiled into the same binary, you can use this +/// macro to specify different indices, then enable them at runtime by +/// configuring the fuzzer. +/// +/// When this macro is called: +/// +/// - A snapshot will be taken and saved +/// - The buffer pointed to by `buffer` will be saved and used as the testcase +/// buffer. Each +/// fuzzing iteration, a new test case will be written to this buffer. +/// - The size of the buffer pointed to by `size_ptr` will be saved as the +/// maximum testcase size. Each fuzzing iteration, the actual size of the +/// current testcase will be written to `*size_ptr`. +/// +/// # Arguments +/// +/// - `start_index`: The index to use for this start harness +/// - `buffer`: The pointer to the testcase buffer +/// - `size_ptr`: The pointer to the size of the testcase buffer +/// +/// # Example +/// +/// ``` +/// unsigned char buffer[1024]; +/// size_t size; +/// HARNESS_START_INDEX(0x0001U, buffer, &size); +/// ``` +#define HARNESS_START_INDEX(start_index, buffer, size_ptr) \ + do { \ + unsigned int value = (N_START_BUFFER_PTR_SIZE_PTR << 0x10U) | MAGIC; \ + __cpuid_extended3(value, start_index, buffer, size_ptr); \ + } while (0); + +/// Pseudo-hypercall number to signal the fuzzer to use the first argument to +/// the magic instruction as the pointer to the testcase buffer and the second +/// argument as the maximum size of the testcase buffer. +#define N_START_BUFFER_PTR_SIZE_VAL (0x0002U) + +/// HARNESS_START_WITH_MAXIMUM_SIZE +/// +/// Signal the fuzzer to start the fuzzing loop at the point this macro is +/// called. The default "index" of 0 will be used. If you need multiple start +/// harnesses compiled into the same binary, you can use the +/// `HARNESS_START_WITH_MAXIMUM_SIZE_INDEX` macro to specify different indices, +/// then enable them at runtime by configuring the fuzzer. +/// +/// When this macro is called: +/// +/// - A snapshot will be taken and saved +/// - The buffer pointed to by `buffer` will be saved and used as the testcase +/// buffer. Each +/// fuzzing iteration, a new test case will be written to this buffer. +/// - The `max_size` value will be saved as the maximum testcase size. Fuzzing +/// test cases will be truncated to this size before being written to the +/// buffer. +/// +/// # Arguments +/// +/// - `buffer`: The pointer to the testcase buffer +/// - `max_size`: The maximum size of the testcase buffer +/// +/// # Example +/// +/// ``` +/// unsigned char buffer[1024]; +/// HARNESS_START_WITH_MAXIMUM_SIZE(buffer, 1024); +/// ``` +#define HARNESS_START_WITH_MAXIMUM_SIZE(buffer, max_size) \ + do { \ + unsigned int value = (N_START_BUFFER_PTR_SIZE_VAL << 0x10U) | MAGIC; \ + __cpuid_extended3(value, DEFAULT_INDEX, buffer, max_size); \ + } while (0); + +/// HARNESS_START_WITH_MAXIMUM_SIZE_INDEX +/// +/// Signal the fuzzer to start the fuzzing loop at the point this macro is +/// called. The index specified by `start_index` will be used. If you need +/// multiple start harnesses compiled into the same binary, you can use this +/// macro to specify different indices, then enable them at runtime by +/// configuring the fuzzer. +/// +/// When this macro is called: +/// +/// - A snapshot will be taken and saved +/// - The buffer pointed to by `buffer` will be saved and used as the testcase +/// buffer. Each +/// fuzzing iteration, a new test case will be written to this buffer. +/// - The `max_size` value will be saved as the maximum testcase size. Fuzzing +/// test cases will be truncated to this size before being written to the +/// buffer. +/// +/// # Arguments +/// +/// - `start_index`: The index to use for this start harness +/// - `buffer`: The pointer to the testcase buffer +/// - `max_size`: The maximum size of the testcase buffer +/// +/// # Example +/// +/// ``` +/// unsigned char buffer[1024]; +/// HARNESS_START_WITH_MAXIMUM_SIZE_INDEX(0x0001U, buffer, 1024); +/// ``` +#define HARNESS_START_WITH_MAXIMUM_SIZE_INDEX(start_index, buffer, max_size) \ + do { \ + unsigned int value = (N_START_BUFFER_PTR_SIZE_VAL << 0x10U) | MAGIC; \ + __cpuid_extended3(value, start_index, buffer, max_size); \ + } while (0); + +/// Pseudo-hypercall number to signal the fuzzer to use the first argument to +/// the magic instruction as the pointer to the testcase buffer, the second +/// argument as a pointer to the size of the testcase buffer, and the third +/// argument as the maximum size of the testcase buffer. +#define N_START_BUFFER_PTR_SIZE_PTR_VAL (0x0003U) + +/// HARNESS_START_WITH_MAXIMUM_SIZE_AND_PTR +/// +/// Signal the fuzzer to start the fuzzing loop at the point this macro is +/// called. The default "index" of 0 will be used. If you need multiple start +/// harnesses compiled into the same binary, you can use the +/// `HARNESS_START_WITH_MAXIMUM_SIZE_AND_PTR_INDEX` macro to specify different +/// indices, then enable them at runtime by configuring the fuzzer. +/// +/// When this macro is called: +/// +/// - A snapshot will be taken and saved +/// - The buffer pointed to by `buffer` will be saved and used as the testcase +/// buffer. Each +/// fuzzing iteration, a new test case will be written to this buffer. +/// - The address `size_ptr` will be saved. Each fuzzing iteration, the actual +/// size of the current testcase will be written to `*size_ptr`. +/// - The `max_size` value will be saved as the maximum testcase size. Fuzzing +/// test cases will be truncated to this size before being written to the +/// buffer. +/// +/// # Arguments +/// +/// - `buffer`: The pointer to the testcase buffer +/// - `size_ptr`: The pointer to the size of the testcase buffer +/// - `max_size`: The maximum size of the testcase buffer +/// +/// # Example +/// +/// ``` +/// unsigned char buffer[1024]; +/// size_t size; +/// HARNESS_START_WITH_MAXIMUM_SIZE_AND_PTR(buffer, &size, 1024); +/// ``` +#define HARNESS_START_WITH_MAXIMUM_SIZE_AND_PTR(buffer, size_ptr, max_size) \ + do { \ + unsigned int value = (N_START_BUFFER_PTR_SIZE_PTR_VAL << 0x10U) | MAGIC; \ + __cpuid_extended4(value, DEFAULT_INDEX, buffer, size_ptr, max_size); \ + } while (0); + +/// HARNESS_START_WITH_MAXIMUM_SIZE_AND_PTR_INDEX +/// +/// Signal the fuzzer to start the fuzzing loop at the point this macro is +/// called. The index specified by `start_index` will be used. If you need +/// multiple start harnesses compiled into the same binary, you can use this +/// macro to specify different indices, then enable them at runtime by +/// configuring the fuzzer. +/// +/// When this macro is called: +/// +/// - A snapshot will be taken and saved +/// - The buffer pointed to by `buffer` will be saved and used as the testcase +/// buffer. Each +/// fuzzing iteration, a new test case will be written to this buffer. +/// - The address `size_ptr` will be saved. Each fuzzing iteration, the actual +/// size of the current testcase will be written to `*size_ptr`. +/// - The `max_size` value will be saved as the maximum testcase size. Fuzzing +/// test cases will be truncated to this size before being written to the +/// buffer. +/// +/// # Arguments +/// +/// - `start_index`: The index to use for this start harness +/// - `buffer`: The pointer to the testcase buffer +/// - `size_ptr`: The pointer to the size of the testcase buffer +/// - `max_size`: The maximum size of the testcase buffer +/// +/// # Example +/// +/// ``` +/// unsigned char buffer[1024]; +/// size_t size; +/// HARNESS_START_WITH_MAXIMUM_SIZE_AND_PTR_INDEX(0x0001U, buffer, &size, 1024); +/// ``` +#define HARNESS_START_WITH_MAXIMUM_SIZE_AND_PTR_INDEX(start_index, buffer, \ + size_ptr, max_size) \ + do { \ + unsigned int value = (N_START_BUFFER_PTR_SIZE_PTR_VAL << 0x10U) | MAGIC; \ + __cpuid_extended4(value, start_index, buffer, size_ptr, max_size); \ + } while (0); + +/// Pseudo-hypercall number to signal the fuzzer to stop the current fuzzing +/// iteration and reset to the beginning of the fuzzing loop with a "normal" +/// stop status, indicating no solution has occurred. +#define N_STOP_NORMAL (0x0004U) + +/// HARNESS_STOP +/// +/// Signal the fuzzer to stop and reset to the beginning of the fuzzing loop +/// with a "normal" stop status, indicating no solution has occurred. The +/// default index of 0 will be used. If you need to differentiate between +/// multiple stop harnesses compiled into the same binary, you can use the +/// `HARNESS_STOP_INDEX` macro to specify different indices, then enable them at +/// runtime by configuring the fuzzer. +/// +/// # Example +/// +/// ``` +/// HARNESS_STOP(); +/// ``` +#define HARNESS_STOP() \ + do { \ + unsigned int value = (N_STOP_NORMAL << 0x10U) | MAGIC; \ + __cpuid_extended1(value, DEFAULT_INDEX); \ + } while (0); + +/// HARNESS_STOP_INDEX +/// +/// Signal the fuzzer to stop and reset to the beginning of the fuzzing loop +/// with a "normal" stop status, indicating no solution has occurred. The index +/// specified by `stop_index` will be used. If you need to differentiate between +/// multiple stop harnesses compiled into the same binary, you can use this +/// macro to specify different indices, then enable them at runtime by +/// configuring the fuzzer. +/// +/// # Arguments +/// +/// - `stop_index`: The index to use for this stop harness +/// +/// # Example +/// +/// ``` +/// HARNESS_STOP_INDEX(0x0001U); +/// ``` +#define HARNESS_STOP_INDEX(stop_index) \ + do { \ + unsigned int value = (N_STOP_NORMAL << 0x10U) | MAGIC; \ + __cpuid_extended1(value, stop_index); \ + } while (0); + +/// Pseudo-hypercall number to signal the fuzzer that a custom assertion has +/// occurred, and the fuzzer should stop the current fuzzing iteration and reset +/// to the beginning of the fuzzing loop with a "solution" stop status. +#define N_STOP_ASSERT (0x0005U) + +/// HARNESS_ASSERT +/// +/// Signal the fuzzer that a custom assertion has occurred, and the fuzzer +/// should stop the current fuzzing iteration and reset to the beginning of the +/// fuzzing loop with a "solution" stop status. The default index of 0 will be +/// used. If you need to differentiate between multiple assertion harnesses +/// compiled into the same binary, you can use the `HARNESS_ASSERT_INDEX` macro +/// to specify different indices, then enable them at runtime by configuring the +/// fuzzer. +/// +/// # Example +/// +/// ``` +/// HARNESS_ASSERT(); +/// ``` +#define HARNESS_ASSERT() \ + do { \ + unsigned int value = (N_STOP_ASSERT << 0x10U) | MAGIC; \ + __cpuid_extended1(value, DEFAULT_INDEX); \ + } while (0); + +/// HARNESS_ASSERT_INDEX +/// +/// Signal the fuzzer that a custom assertion has occurred, and the fuzzer +/// should stop the current fuzzing iteration and reset to the beginning of the +/// fuzzing loop with a "solution" stop status. The index specified by +/// `assert_index` will be used. If you need to differentiate between multiple +/// assertion harnesses compiled into the same binary, you can use this macro to +/// specify different indices, then enable them at runtime by configuring the +/// fuzzer. +/// +/// # Arguments +/// +/// - `assert_index`: The index to use for this assertion harness +/// +/// # Example +/// +/// ``` +/// HARNESS_ASSERT_INDEX(0x0001U); +/// ``` +#define HARNESS_ASSERT_INDEX(assert_index) \ + do { \ + unsigned int value = (N_STOP_ASSERT << 0x10U) | MAGIC; \ + __cpuid_extended1(value, assert_index); \ + } while (0); + +#endif // TSFFS_H +#elif __riscv && !__LP64__ +// Copyright (C) 2024 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 + +/// Definitions and macros for compiled-in harnessing of C and C++ target +/// software for the RISC-V (32-bit) architecture + +#ifndef TSFFS_H +#define TSFFS_H + +/// Define common with LibFuzzer and other fuzzers to allow code that is +/// fuzzing-specific to be left in the codebase. See +/// https://llvm.org/docs/LibFuzzer.html#id35 for more information +#ifndef FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION +#define FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION (1) +#endif // FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION + +/// __srai +/// +/// Invoke the magic instruction defined by SIMICS for the RISC-V architecture +/// with a specific value of `n` +/// +/// # Arguments +/// +/// * `value` - The value of `n` to use in the magic instruction +#define __srai(value) \ + __asm__ __volatile__("srai zero, zero, %0" : : "I"(value) :) + +/// __srai_extended1 +/// +/// Invoke the magic instruction defined by SIMICS for the RISC-V architecture +/// with a specific value of `n` and a pseudo-argument in register `a0`. +/// +/// # Arguments +/// +/// * `value` - The value of `n` to use in the magic instruction +/// * `arg0` - The value to place in register `a0` +#define __srai_extended1(value, arg0) \ + __asm__ __volatile__("mv a0, %0; srai zero, zero, %1" \ + : \ + : "r"(arg0), "I"(value) \ + : "a0"); + +/// __srai_extended2 +/// +/// Invoke the magic instruction defined by SIMICS for the RISC-V architecture +/// with a specific value of `n` and pseudo-arguments in registers `a0` and +/// `a1`. +/// +/// # Arguments +/// +/// * `value` - The value of `n` to use in the magic instruction +/// * `arg0` - The value to place in register `a0` +/// * `arg1` - The value to place in register `a1` +#define __srai_extended2(value, arg0, arg1) \ + __asm__ __volatile__("mv a0, %0; mv a1, %1; srai zero, zero, %2" \ + : \ + : "r"(arg0), "r"(arg1), "I"(value) \ + : "a0", "a1"); + +/// __srai_extended3 +/// +/// Invoke the magic instruction defined by SIMICS for the RISC-V architecture +/// with a specific value of `n` and pseudo-arguments in registers `a0`, `a1`, +/// and `a2`. +/// +/// # Arguments +/// +/// * `value` - The value of `n` to use in the magic instruction +/// * `arg0` - The value to place in register `a0` +/// * `arg1` - The value to place in register `a1` +/// * `arg2` - The value to place in register `a2` +#define __srai_extended3(value, arg0, arg1, arg2) \ + __asm__ __volatile__("mv a0, %0; mv a1, %1; mv a2, %2; srai zero, zero, %3" \ + : \ + : "r"(arg0), "r"(arg1), "r"(arg2), "I"(value) \ + : "a0", "a1", "a2"); + +/// __srai_extended4 +/// +/// Invoke the magic instruction defined by SIMICS for the RISC-V architecture +/// with a specific value of `n` and pseudo-arguments in registers `a0`, `a1`, +/// `a2`, and `a3`. +/// +/// # Arguments +/// +/// * `value` - The value of `n` to use in the magic instruction +/// * `arg0` - The value to place in register `a0` +/// * `arg1` - The value to place in register `a1` +/// * `arg2` - The value to place in register `a2` +/// * `arg3` - The value to place in register `a3` +#define __srai_extended4(value, arg0, arg1, arg2, arg3) \ + __asm__ __volatile__( \ + "mv a0, %0; mv a1, %1; mv a2, %2; mv a3, %3; srai zero, zero, %4" \ + : \ + : "r"(arg0), "r"(arg1), "r"(arg2), "r"(arg3), "I"(value) \ + : "a0", "a1", "a2", "a3"); + +/// Magic value defined by SIMICS as the "leaf" value of a CPUID instruction +/// that is treated as a magic instruction. +#define MAGIC (0x4711U) + +/// The default index number used for magic instructions. All magic instructions +/// support multiple start and stop indices, which defaults to 0 if not +/// specified. +#define DEFAULT_INDEX (0x0000U) + +/// Pseudo-hypercall number to signal the fuzzer to use the first argument to +/// the magic instruction as the pointer to the testcase buffer and the second +/// argument as a pointer to the size of the testcase buffer. +#define N_START_BUFFER_PTR_SIZE_PTR (0x0001U) + +/// HARNESS_START +/// +/// Signal the fuzzer to start the fuzzing loop at the point this macro is +/// called. The default "index" of 0 will be used. If you need multiple start +/// harnesses compiled into the same binary, you can use the +/// `HARNESS_START_INDEX` macro to specify different indices, then enable them +/// at runtime by configuring the fuzzer. +/// +/// When this macro is called: +/// +/// - A snapshot will be taken and saved +/// - The buffer pointed to by `buffer` will be saved and used as the testcase +/// buffer. Each +/// fuzzing iteration, a new test case will be written to this buffer. +/// - The size of the buffer pointed to by `size_ptr` will be saved as the +/// maximum testcase size. Each fuzzing iteration, the actual size of the +/// current testcase will be written to `*size_ptr`. +/// +/// # Arguments +/// +/// - `buffer`: The pointer to the testcase buffer +/// - `size_ptr`: The pointer to the size of the testcase buffer +/// +/// # Example +/// +/// ``` +/// unsigned char buffer[1024]; +/// size_t size; +/// HARNESS_START(buffer, &size); +/// ``` +#define HARNESS_START(buffer, size_ptr) \ + do { \ + __srai_extended3(N_START_BUFFER_PTR_SIZE_PTR, DEFAULT_INDEX, buffer, \ + size_ptr); \ + } while (0); + +/// HARNESS_START_INDEX +/// +/// Signal the fuzzer to start the fuzzing loop at the point this macro is +/// called. The index specified by `start_index` will be used. If you need +/// multiple start harnesses compiled into the same binary, you can use this +/// macro to specify different indices, then enable them at runtime by +/// configuring the fuzzer. +/// +/// When this macro is called: +/// +/// - A snapshot will be taken and saved +/// - The buffer pointed to by `buffer` will be saved and used as the testcase +/// buffer. Each +/// fuzzing iteration, a new test case will be written to this buffer. +/// - The size of the buffer pointed to by `size_ptr` will be saved as the +/// maximum testcase size. Each fuzzing iteration, the actual size of the +/// current testcase will be written to `*size_ptr`. +/// +/// # Arguments +/// +/// - `start_index`: The index to use for this start harness +/// - `buffer`: The pointer to the testcase buffer +/// - `size_ptr`: The pointer to the size of the testcase buffer +/// +/// # Example +/// +/// ``` +/// unsigned char buffer[1024]; +/// size_t size; +/// HARNESS_START_INDEX(0x0001U, buffer, &size); +/// ``` +#define HARNESS_START_INDEX(start_index, buffer, size_ptr) \ + do { \ + __srai_extended3(N_START_BUFFER_PTR_SIZE_PTR, start_index, buffer, \ + size_ptr); \ + } while (0); + +/// Pseudo-hypercall number to signal the fuzzer to use the first argument to +/// the magic instruction as the pointer to the testcase buffer and the second +/// argument as the maximum size of the testcase buffer. +#define N_START_BUFFER_PTR_SIZE_VAL (0x0002U) + +/// HARNESS_START_WITH_MAXIMUM_SIZE +/// +/// Signal the fuzzer to start the fuzzing loop at the point this macro is +/// called. The default "index" of 0 will be used. If you need multiple start +/// harnesses compiled into the same binary, you can use the +/// `HARNESS_START_WITH_MAXIMUM_SIZE_INDEX` macro to specify different indices, +/// then enable them at runtime by configuring the fuzzer. +/// +/// When this macro is called: +/// +/// - A snapshot will be taken and saved +/// - The buffer pointed to by `buffer` will be saved and used as the testcase +/// buffer. Each +/// fuzzing iteration, a new test case will be written to this buffer. +/// - The `max_size` value will be saved as the maximum testcase size. Fuzzing +/// test cases will be truncated to this size before being written to the +/// buffer. +/// +/// # Arguments +/// +/// - `buffer`: The pointer to the testcase buffer +/// - `max_size`: The maximum size of the testcase buffer +/// +/// # Example +/// +/// ``` +/// unsigned char buffer[1024]; +/// HARNESS_START_WITH_MAXIMUM_SIZE(buffer, 1024); +/// ``` +#define HARNESS_START_WITH_MAXIMUM_SIZE(buffer, max_size) \ + do { \ + __srai_extended3(N_START_BUFFER_PTR_SIZE_VAL, DEFAULT_INDEX, buffer, \ + max_size); \ + } while (0); + +/// HARNESS_START_WITH_MAXIMUM_SIZE_INDEX +/// +/// Signal the fuzzer to start the fuzzing loop at the point this macro is +/// called. The index specified by `start_index` will be used. If you need +/// multiple start harnesses compiled into the same binary, you can use this +/// macro to specify different indices, then enable them at runtime by +/// configuring the fuzzer. +/// +/// When this macro is called: +/// +/// - A snapshot will be taken and saved +/// - The buffer pointed to by `buffer` will be saved and used as the testcase +/// buffer. Each +/// fuzzing iteration, a new test case will be written to this buffer. +/// - The `max_size` value will be saved as the maximum testcase size. Fuzzing +/// test cases will be truncated to this size before being written to the +/// buffer. +/// +/// # Arguments +/// +/// - `start_index`: The index to use for this start harness +/// - `buffer`: The pointer to the testcase buffer +/// - `max_size`: The maximum size of the testcase buffer +/// +/// # Example +/// +/// ``` +/// unsigned char buffer[1024]; +/// HARNESS_START_WITH_MAXIMUM_SIZE_INDEX(0x0001U, buffer, 1024); +/// ``` +#define HARNESS_START_WITH_MAXIMUM_SIZE_INDEX(start_index, buffer, max_size) \ + do { \ + __srai_extended3(N_START_BUFFER_PTR_SIZE_VAL, start_index, buffer, \ + max_size); \ + } while (0); + +/// Pseudo-hypercall number to signal the fuzzer to use the first argument to +/// the magic instruction as the pointer to the testcase buffer, the second +/// argument as a pointer to the size of the testcase buffer, and the third +/// argument as the maximum size of the testcase buffer. +#define N_START_BUFFER_PTR_SIZE_PTR_VAL (0x0003U) + +/// HARNESS_START_WITH_MAXIMUM_SIZE_AND_PTR +/// +/// Signal the fuzzer to start the fuzzing loop at the point this macro is +/// called. The default "index" of 0 will be used. If you need multiple start +/// harnesses compiled into the same binary, you can use the +/// `HARNESS_START_WITH_MAXIMUM_SIZE_AND_PTR_INDEX` macro to specify different +/// indices, then enable them at runtime by configuring the fuzzer. +/// +/// When this macro is called: +/// +/// - A snapshot will be taken and saved +/// - The buffer pointed to by `buffer` will be saved and used as the testcase +/// buffer. Each +/// fuzzing iteration, a new test case will be written to this buffer. +/// - The address `size_ptr` will be saved. Each fuzzing iteration, the actual +/// size of the current testcase will be written to `*size_ptr`. +/// - The `max_size` value will be saved as the maximum testcase size. Fuzzing +/// test cases will be truncated to this size before being written to the +/// buffer. +/// +/// # Arguments +/// +/// - `buffer`: The pointer to the testcase buffer +/// - `size_ptr`: The pointer to the size of the testcase buffer +/// - `max_size`: The maximum size of the testcase buffer +/// +/// # Example +/// +/// ``` +/// unsigned char buffer[1024]; +/// size_t size; +/// HARNESS_START_WITH_MAXIMUM_SIZE_AND_PTR(buffer, &size, 1024); +/// ``` +#define HARNESS_START_WITH_MAXIMUM_SIZE_AND_PTR(buffer, size_ptr, max_size) \ + do { \ + __srai_extended4(N_START_BUFFER_PTR_SIZE_PTR_VAL, DEFAULT_INDEX, buffer, \ + size_ptr, max_size); \ + } while (0); + +/// HARNESS_START_WITH_MAXIMUM_SIZE_AND_PTR_INDEX +/// +/// Signal the fuzzer to start the fuzzing loop at the point this macro is +/// called. The index specified by `start_index` will be used. If you need +/// multiple start harnesses compiled into the same binary, you can use this +/// macro to specify different indices, then enable them at runtime by +/// configuring the fuzzer. +/// +/// When this macro is called: +/// +/// - A snapshot will be taken and saved +/// - The buffer pointed to by `buffer` will be saved and used as the testcase +/// buffer. Each +/// fuzzing iteration, a new test case will be written to this buffer. +/// - The address `size_ptr` will be saved. Each fuzzing iteration, the actual +/// size of the current testcase will be written to `*size_ptr`. +/// - The `max_size` value will be saved as the maximum testcase size. Fuzzing +/// test cases will be truncated to this size before being written to the +/// buffer. +/// +/// # Arguments +/// +/// - `start_index`: The index to use for this start harness +/// - `buffer`: The pointer to the testcase buffer +/// - `size_ptr`: The pointer to the size of the testcase buffer +/// - `max_size`: The maximum size of the testcase buffer +/// +/// # Example +/// +/// ``` +/// unsigned char buffer[1024]; +/// size_t size; +/// HARNESS_START_WITH_MAXIMUM_SIZE_AND_PTR_INDEX(0x0001U, buffer, &size, 1024); +/// ``` +#define HARNESS_START_WITH_MAXIMUM_SIZE_AND_PTR_INDEX(start_index, buffer, \ + size_ptr, max_size) \ + do { \ + __srai_extended4(N_START_BUFFER_PTR_SIZE_PTR_VAL, start_index, buffer, \ + size_ptr, max_size); \ + } while (0); + +/// Pseudo-hypercall number to signal the fuzzer to stop the current fuzzing +/// iteration and reset to the beginning of the fuzzing loop with a "normal" +/// stop status, indicating no solution has occurred. +#define N_STOP_NORMAL (0x0004U) + +/// HARNESS_STOP +/// +/// Signal the fuzzer to stop and reset to the beginning of the fuzzing loop +/// with a "normal" stop status, indicating no solution has occurred. The +/// default index of 0 will be used. If you need to differentiate between +/// multiple stop harnesses compiled into the same binary, you can use the +/// `HARNESS_STOP_INDEX` macro to specify different indices, then enable them at +/// runtime by configuring the fuzzer. +/// +/// # Example +/// +/// ``` +/// HARNESS_STOP(); +/// ``` +#define HARNESS_STOP() \ + do { \ + __srai_extended1(N_STOP_NORMAL, DEFAULT_INDEX); \ + } while (0); + +/// HARNESS_STOP_INDEX +/// +/// Signal the fuzzer to stop and reset to the beginning of the fuzzing loop +/// with a "normal" stop status, indicating no solution has occurred. The index +/// specified by `stop_index` will be used. If you need to differentiate between +/// multiple stop harnesses compiled into the same binary, you can use this +/// macro to specify different indices, then enable them at runtime by +/// configuring the fuzzer. +/// +/// # Arguments +/// +/// - `stop_index`: The index to use for this stop harness +/// +/// # Example +/// +/// ``` +/// HARNESS_STOP_INDEX(0x0001U); +/// ``` +#define HARNESS_STOP_INDEX(stop_index) \ + do { \ + __srai_extended1(N_STOP_NORMAL, stop_index); \ + } while (0); + +/// Pseudo-hypercall number to signal the fuzzer that a custom assertion has +/// occurred, and the fuzzer should stop the current fuzzing iteration and reset +/// to the beginning of the fuzzing loop with a "solution" stop status. +#define N_STOP_ASSERT (0x0005U) + +/// HARNESS_ASSERT +/// +/// Signal the fuzzer that a custom assertion has occurred, and the fuzzer +/// should stop the current fuzzing iteration and reset to the beginning of the +/// fuzzing loop with a "solution" stop status. The default index of 0 will be +/// used. If you need to differentiate between multiple assertion harnesses +/// compiled into the same binary, you can use the `HARNESS_ASSERT_INDEX` macro +/// to specify different indices, then enable them at runtime by configuring the +/// fuzzer. +/// +/// # Example +/// +/// ``` +/// HARNESS_ASSERT(); +/// ``` +#define HARNESS_ASSERT() \ + do { \ + __srai_extended1(N_STOP_ASSERT, DEFAULT_INDEX); \ + } while (0); + +/// HARNESS_ASSERT_INDEX +/// +/// Signal the fuzzer that a custom assertion has occurred, and the fuzzer +/// should stop the current fuzzing iteration and reset to the beginning of the +/// fuzzing loop with a "solution" stop status. The index specified by +/// `assert_index` will be used. If you need to differentiate between multiple +/// assertion harnesses compiled into the same binary, you can use this macro to +/// specify different indices, then enable them at runtime by configuring the +/// fuzzer. +/// +/// # Arguments +/// +/// - `assert_index`: The index to use for this assertion harness +/// +/// # Example +/// +/// ``` +/// HARNESS_ASSERT_INDEX(0x0001U); +/// ``` +#define HARNESS_ASSERT_INDEX(assert_index) \ + do { \ + __srai_extended1(N_STOP_ASSERT, assert_index); \ + } while (0); + +#endif // TSFFS_H +#elif __riscv && __LP64__ +// Copyright (C) 2024 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 + +/// Definitions and macros for compiled-in harnessing of C and C++ target +/// software for the RISC-V (32-bit) architecture + +#ifndef TSFFS_H +#define TSFFS_H + +/// Define common with LibFuzzer and other fuzzers to allow code that is +/// fuzzing-specific to be left in the codebase. See +/// https://llvm.org/docs/LibFuzzer.html#id35 for more information +#ifndef FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION +#define FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION (1) +#endif // FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION + +/// __srai +/// +/// Invoke the magic instruction defined by SIMICS for the RISC-V architecture +/// with a specific value of `n` +/// +/// # Arguments +/// +/// * `value` - The value of `n` to use in the magic instruction +#define __srai(value) \ + __asm__ __volatile__("srai zero, zero, %0" : : "I"(value) :) + +/// __srai_extended1 +/// +/// Invoke the magic instruction defined by SIMICS for the RISC-V architecture +/// with a specific value of `n` and a pseudo-argument in register `a0`. +/// +/// # Arguments +/// +/// * `value` - The value of `n` to use in the magic instruction +/// * `arg0` - The value to place in register `a0` +#define __srai_extended1(value, arg0) \ + __asm__ __volatile__("mv a0, %0; srai zero, zero, %1" \ + : \ + : "r"(arg0), "I"(value) \ + : "a0"); + +/// __srai_extended2 +/// +/// Invoke the magic instruction defined by SIMICS for the RISC-V architecture +/// with a specific value of `n` and pseudo-arguments in registers `a0` and +/// `a1`. +/// +/// # Arguments +/// +/// * `value` - The value of `n` to use in the magic instruction +/// * `arg0` - The value to place in register `a0` +/// * `arg1` - The value to place in register `a1` +#define __srai_extended2(value, arg0, arg1) \ + __asm__ __volatile__("mv a0, %0; mv a1, %1; srai zero, zero, %2" \ + : \ + : "r"(arg0), "r"(arg1), "I"(value) \ + : "a0", "a1"); + +/// __srai_extended3 +/// +/// Invoke the magic instruction defined by SIMICS for the RISC-V architecture +/// with a specific value of `n` and pseudo-arguments in registers `a0`, `a1`, +/// and `a2`. +/// +/// # Arguments +/// +/// * `value` - The value of `n` to use in the magic instruction +/// * `arg0` - The value to place in register `a0` +/// * `arg1` - The value to place in register `a1` +/// * `arg2` - The value to place in register `a2` +#define __srai_extended3(value, arg0, arg1, arg2) \ + __asm__ __volatile__("mv a0, %0; mv a1, %1; mv a2, %2; srai zero, zero, %3" \ + : \ + : "r"(arg0), "r"(arg1), "r"(arg2), "I"(value) \ + : "a0", "a1", "a2"); + +/// __srai_extended4 +/// +/// Invoke the magic instruction defined by SIMICS for the RISC-V architecture +/// with a specific value of `n` and pseudo-arguments in registers `a0`, `a1`, +/// `a2`, and `a3`. +/// +/// # Arguments +/// +/// * `value` - The value of `n` to use in the magic instruction +/// * `arg0` - The value to place in register `a0` +/// * `arg1` - The value to place in register `a1` +/// * `arg2` - The value to place in register `a2` +/// * `arg3` - The value to place in register `a3` +#define __srai_extended4(value, arg0, arg1, arg2, arg3) \ + __asm__ __volatile__( \ + "mv a0, %0; mv a1, %1; mv a2, %2; mv a3, %3; srai zero, zero, %4" \ + : \ + : "r"(arg0), "r"(arg1), "r"(arg2), "r"(arg3), "I"(value) \ + : "a0", "a1", "a2", "a3"); + +/// Magic value defined by SIMICS as the "leaf" value of a CPUID instruction +/// that is treated as a magic instruction. +#define MAGIC (0x4711U) + +/// The default index number used for magic instructions. All magic instructions +/// support multiple start and stop indices, which defaults to 0 if not +/// specified. +#define DEFAULT_INDEX (0x0000U) + +/// Pseudo-hypercall number to signal the fuzzer to use the first argument to +/// the magic instruction as the pointer to the testcase buffer and the second +/// argument as a pointer to the size of the testcase buffer. +#define N_START_BUFFER_PTR_SIZE_PTR (0x0001U) + +/// HARNESS_START +/// +/// Signal the fuzzer to start the fuzzing loop at the point this macro is +/// called. The default "index" of 0 will be used. If you need multiple start +/// harnesses compiled into the same binary, you can use the +/// `HARNESS_START_INDEX` macro to specify different indices, then enable them +/// at runtime by configuring the fuzzer. +/// +/// When this macro is called: +/// +/// - A snapshot will be taken and saved +/// - The buffer pointed to by `buffer` will be saved and used as the testcase +/// buffer. Each +/// fuzzing iteration, a new test case will be written to this buffer. +/// - The size of the buffer pointed to by `size_ptr` will be saved as the +/// maximum testcase size. Each fuzzing iteration, the actual size of the +/// current testcase will be written to `*size_ptr`. +/// +/// # Arguments +/// +/// - `buffer`: The pointer to the testcase buffer +/// - `size_ptr`: The pointer to the size of the testcase buffer +/// +/// # Example +/// +/// ``` +/// unsigned char buffer[1024]; +/// size_t size; +/// HARNESS_START(buffer, &size); +/// ``` +#define HARNESS_START(buffer, size_ptr) \ + do { \ + __srai_extended3(N_START_BUFFER_PTR_SIZE_PTR, DEFAULT_INDEX, buffer, size_ptr); \ + } while (0); + +/// HARNESS_START_INDEX +/// +/// Signal the fuzzer to start the fuzzing loop at the point this macro is +/// called. The index specified by `start_index` will be used. If you need +/// multiple start harnesses compiled into the same binary, you can use this +/// macro to specify different indices, then enable them at runtime by +/// configuring the fuzzer. +/// +/// When this macro is called: +/// +/// - A snapshot will be taken and saved +/// - The buffer pointed to by `buffer` will be saved and used as the testcase +/// buffer. Each +/// fuzzing iteration, a new test case will be written to this buffer. +/// - The size of the buffer pointed to by `size_ptr` will be saved as the +/// maximum testcase size. Each fuzzing iteration, the actual size of the +/// current testcase will be written to `*size_ptr`. +/// +/// # Arguments +/// +/// - `start_index`: The index to use for this start harness +/// - `buffer`: The pointer to the testcase buffer +/// - `size_ptr`: The pointer to the size of the testcase buffer +/// +/// # Example +/// +/// ``` +/// unsigned char buffer[1024]; +/// size_t size; +/// HARNESS_START_INDEX(0x0001U, buffer, &size); +/// ``` +#define HARNESS_START_INDEX(start_index, buffer, size_ptr) \ + do { \ + __srai_extended3(N_START_BUFFER_PTR_SIZE_PTR, start_index, buffer, size_ptr); \ + } while (0); + +/// Pseudo-hypercall number to signal the fuzzer to use the first argument to +/// the magic instruction as the pointer to the testcase buffer and the second +/// argument as the maximum size of the testcase buffer. +#define N_START_BUFFER_PTR_SIZE_VAL (0x0002U) + +/// HARNESS_START_WITH_MAXIMUM_SIZE +/// +/// Signal the fuzzer to start the fuzzing loop at the point this macro is +/// called. The default "index" of 0 will be used. If you need multiple start +/// harnesses compiled into the same binary, you can use the +/// `HARNESS_START_WITH_MAXIMUM_SIZE_INDEX` macro to specify different indices, +/// then enable them at runtime by configuring the fuzzer. +/// +/// When this macro is called: +/// +/// - A snapshot will be taken and saved +/// - The buffer pointed to by `buffer` will be saved and used as the testcase +/// buffer. Each +/// fuzzing iteration, a new test case will be written to this buffer. +/// - The `max_size` value will be saved as the maximum testcase size. Fuzzing +/// test cases will be truncated to this size before being written to the +/// buffer. +/// +/// # Arguments +/// +/// - `buffer`: The pointer to the testcase buffer +/// - `max_size`: The maximum size of the testcase buffer +/// +/// # Example +/// +/// ``` +/// unsigned char buffer[1024]; +/// HARNESS_START_WITH_MAXIMUM_SIZE(buffer, 1024); +/// ``` +#define HARNESS_START_WITH_MAXIMUM_SIZE(buffer, max_size) \ + do { \ + __srai_extended3(N_START_BUFFER_PTR_SIZE_VAL, DEFAULT_INDEX, buffer, max_size); \ + } while (0); + +/// HARNESS_START_WITH_MAXIMUM_SIZE_INDEX +/// +/// Signal the fuzzer to start the fuzzing loop at the point this macro is +/// called. The index specified by `start_index` will be used. If you need +/// multiple start harnesses compiled into the same binary, you can use this +/// macro to specify different indices, then enable them at runtime by +/// configuring the fuzzer. +/// +/// When this macro is called: +/// +/// - A snapshot will be taken and saved +/// - The buffer pointed to by `buffer` will be saved and used as the testcase +/// buffer. Each +/// fuzzing iteration, a new test case will be written to this buffer. +/// - The `max_size` value will be saved as the maximum testcase size. Fuzzing +/// test cases will be truncated to this size before being written to the +/// buffer. +/// +/// # Arguments +/// +/// - `start_index`: The index to use for this start harness +/// - `buffer`: The pointer to the testcase buffer +/// - `max_size`: The maximum size of the testcase buffer +/// +/// # Example +/// +/// ``` +/// unsigned char buffer[1024]; +/// HARNESS_START_WITH_MAXIMUM_SIZE_INDEX(0x0001U, buffer, 1024); +/// ``` +#define HARNESS_START_WITH_MAXIMUM_SIZE_INDEX(start_index, buffer, max_size) \ + do { \ + __srai_extended3(N_START_BUFFER_PTR_SIZE_VAL, start_index, buffer, max_size); \ + } while (0); + +/// Pseudo-hypercall number to signal the fuzzer to use the first argument to +/// the magic instruction as the pointer to the testcase buffer, the second +/// argument as a pointer to the size of the testcase buffer, and the third +/// argument as the maximum size of the testcase buffer. +#define N_START_BUFFER_PTR_SIZE_PTR_VAL (0x0003U) + +/// HARNESS_START_WITH_MAXIMUM_SIZE_AND_PTR +/// +/// Signal the fuzzer to start the fuzzing loop at the point this macro is +/// called. The default "index" of 0 will be used. If you need multiple start +/// harnesses compiled into the same binary, you can use the +/// `HARNESS_START_WITH_MAXIMUM_SIZE_AND_PTR_INDEX` macro to specify different +/// indices, then enable them at runtime by configuring the fuzzer. +/// +/// When this macro is called: +/// +/// - A snapshot will be taken and saved +/// - The buffer pointed to by `buffer` will be saved and used as the testcase +/// buffer. Each +/// fuzzing iteration, a new test case will be written to this buffer. +/// - The address `size_ptr` will be saved. Each fuzzing iteration, the actual +/// size of the current testcase will be written to `*size_ptr`. +/// - The `max_size` value will be saved as the maximum testcase size. Fuzzing +/// test cases will be truncated to this size before being written to the +/// buffer. +/// +/// # Arguments +/// +/// - `buffer`: The pointer to the testcase buffer +/// - `size_ptr`: The pointer to the size of the testcase buffer +/// - `max_size`: The maximum size of the testcase buffer +/// +/// # Example +/// +/// ``` +/// unsigned char buffer[1024]; +/// size_t size; +/// HARNESS_START_WITH_MAXIMUM_SIZE_AND_PTR(buffer, &size, 1024); +/// ``` +#define HARNESS_START_WITH_MAXIMUM_SIZE_AND_PTR(buffer, size_ptr, max_size) \ + do { \ + __srai_extended4(N_START_BUFFER_PTR_SIZE_PTR_VAL, DEFAULT_INDEX, buffer, size_ptr, max_size); \ + } while (0); + +/// HARNESS_START_WITH_MAXIMUM_SIZE_AND_PTR_INDEX +/// +/// Signal the fuzzer to start the fuzzing loop at the point this macro is +/// called. The index specified by `start_index` will be used. If you need +/// multiple start harnesses compiled into the same binary, you can use this +/// macro to specify different indices, then enable them at runtime by +/// configuring the fuzzer. +/// +/// When this macro is called: +/// +/// - A snapshot will be taken and saved +/// - The buffer pointed to by `buffer` will be saved and used as the testcase +/// buffer. Each +/// fuzzing iteration, a new test case will be written to this buffer. +/// - The address `size_ptr` will be saved. Each fuzzing iteration, the actual +/// size of the current testcase will be written to `*size_ptr`. +/// - The `max_size` value will be saved as the maximum testcase size. Fuzzing +/// test cases will be truncated to this size before being written to the +/// buffer. +/// +/// # Arguments +/// +/// - `start_index`: The index to use for this start harness +/// - `buffer`: The pointer to the testcase buffer +/// - `size_ptr`: The pointer to the size of the testcase buffer +/// - `max_size`: The maximum size of the testcase buffer +/// +/// # Example +/// +/// ``` +/// unsigned char buffer[1024]; +/// size_t size; +/// HARNESS_START_WITH_MAXIMUM_SIZE_AND_PTR_INDEX(0x0001U, buffer, &size, 1024); +/// ``` +#define HARNESS_START_WITH_MAXIMUM_SIZE_AND_PTR_INDEX(start_index, buffer, \ + size_ptr, max_size) \ + do { \ + __srai_extended4(N_START_BUFFER_PTR_SIZE_PTR_VAL, start_index, buffer, size_ptr, max_size); \ + } while (0); + +/// Pseudo-hypercall number to signal the fuzzer to stop the current fuzzing +/// iteration and reset to the beginning of the fuzzing loop with a "normal" +/// stop status, indicating no solution has occurred. +#define N_STOP_NORMAL (0x0004U) + +/// HARNESS_STOP +/// +/// Signal the fuzzer to stop and reset to the beginning of the fuzzing loop +/// with a "normal" stop status, indicating no solution has occurred. The +/// default index of 0 will be used. If you need to differentiate between +/// multiple stop harnesses compiled into the same binary, you can use the +/// `HARNESS_STOP_INDEX` macro to specify different indices, then enable them at +/// runtime by configuring the fuzzer. +/// +/// # Example +/// +/// ``` +/// HARNESS_STOP(); +/// ``` +#define HARNESS_STOP() \ + do { \ + __srai_extended1(N_STOP_NORMAL, DEFAULT_INDEX); \ + } while (0); + +/// HARNESS_STOP_INDEX +/// +/// Signal the fuzzer to stop and reset to the beginning of the fuzzing loop +/// with a "normal" stop status, indicating no solution has occurred. The index +/// specified by `stop_index` will be used. If you need to differentiate between +/// multiple stop harnesses compiled into the same binary, you can use this +/// macro to specify different indices, then enable them at runtime by +/// configuring the fuzzer. +/// +/// # Arguments +/// +/// - `stop_index`: The index to use for this stop harness +/// +/// # Example +/// +/// ``` +/// HARNESS_STOP_INDEX(0x0001U); +/// ``` +#define HARNESS_STOP_INDEX(stop_index) \ + do { \ + __srai_extended1(N_STOP_NORMAL, stop_index); \ + } while (0); + +/// Pseudo-hypercall number to signal the fuzzer that a custom assertion has +/// occurred, and the fuzzer should stop the current fuzzing iteration and reset +/// to the beginning of the fuzzing loop with a "solution" stop status. +#define N_STOP_ASSERT (0x0005U) + +/// HARNESS_ASSERT +/// +/// Signal the fuzzer that a custom assertion has occurred, and the fuzzer +/// should stop the current fuzzing iteration and reset to the beginning of the +/// fuzzing loop with a "solution" stop status. The default index of 0 will be +/// used. If you need to differentiate between multiple assertion harnesses +/// compiled into the same binary, you can use the `HARNESS_ASSERT_INDEX` macro +/// to specify different indices, then enable them at runtime by configuring the +/// fuzzer. +/// +/// # Example +/// +/// ``` +/// HARNESS_ASSERT(); +/// ``` +#define HARNESS_ASSERT() \ + do { \ + __srai_extended1(N_STOP_ASSERT, DEFAULT_INDEX); \ + } while (0); + +/// HARNESS_ASSERT_INDEX +/// +/// Signal the fuzzer that a custom assertion has occurred, and the fuzzer +/// should stop the current fuzzing iteration and reset to the beginning of the +/// fuzzing loop with a "solution" stop status. The index specified by +/// `assert_index` will be used. If you need to differentiate between multiple +/// assertion harnesses compiled into the same binary, you can use this macro to +/// specify different indices, then enable them at runtime by configuring the +/// fuzzer. +/// +/// # Arguments +/// +/// - `assert_index`: The index to use for this assertion harness +/// +/// # Example +/// +/// ``` +/// HARNESS_ASSERT_INDEX(0x0001U); +/// ``` +#define HARNESS_ASSERT_INDEX(assert_index) \ + do { \ + __srai_extended1(N_STOP_ASSERT, assert_index); \ + } while (0); + +#endif // TSFFS_H +#elif __aarch64__ +// Copyright (C) 2024 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 + +/// Definitions and macros for compiled-in harnessing of C and C++ target +/// software for the RISC-V (32-bit) architecture + +#ifndef TSFFS_H +#define TSFFS_H + +/// Define common with LibFuzzer and other fuzzers to allow code that is +/// fuzzing-specific to be left in the codebase. See +/// https://llvm.org/docs/LibFuzzer.html#id35 for more information +#ifndef FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION +#define FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION (1) +#endif // FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION + +#define __stringify(x) #x +#define __tostring(x) __stringify(x) + +/// __orr +/// +/// Invoke the magic instruction defined by SIMICS for the RISC-V architecture +/// with a specific value of `n` +/// +/// # Arguments +/// +/// * `value` - The value of `n` to use in the magic instruction +#define __orr(value) \ + __asm__ __volatile__("orr x" __tostring(value) ", x" __tostring( \ + value) ", x" __tostring(value)); + +/// __orr_extended1 +/// +/// Invoke the magic instruction defined by SIMICS for the RISC-V architecture +/// with a specific value of `n` and a pseudo-argument in register `r10`. +/// +/// # Arguments +/// +/// * `value` - The value of `n` to use in the magic instruction +/// * `arg0` - The value to place in register `r10` +#define __orr_extended1(value, arg0) \ + __asm__ __volatile__( \ + "mov x28, %0; orr x" __tostring(value) ", x" __tostring( \ + value) ", x" __tostring(value) \ + : \ + : "g"(arg0)); + +/// __orr_extended2 +/// +/// Invoke the magic instruction defined by SIMICS for the RISC-V architecture +/// with a specific value of `n` and two pseudo-arguments in registers `r10` and +/// `r9`. +/// +/// # Arguments +/// +/// * `value` - The value of `n` to use in the magic instruction +/// * `arg0` - The value to place in register `r10` +/// * `arg1` - The value to place in register `r9` +#define __orr_extended2(value, arg0, arg1) \ + __asm__ __volatile__( \ + "mov x28, %0; mov x27, %1; orr x" __tostring(value) ", x" __tostring( \ + value) ", x" __tostring(value) \ + : \ + : "r"(arg0), "r"(arg1)); + +/// __orr_extended3 +/// +/// Invoke the magic instruction defined by SIMICS for the RISC-V architecture +/// with a specific value of `n` and three pseudo-arguments in registers `r10`, +/// `r9`, and `r8`. +/// +/// # Arguments +/// +/// * `value` - The value of `n` to use in the magic instruction +/// * `arg0` - The value to place in register `r10` +/// * `arg1` - The value to place in register `r9` +/// * `arg2` - The value to place in register `r8` +#define __orr_extended3(value, arg0, arg1, arg2) \ + __asm__ __volatile__( \ + "mov x28, %0; mov x27, %1; mov x26, %2; orr x" __tostring( \ + value) ", x" __tostring(value) ", x" __tostring(value) \ + : \ + : "r"(arg0), "r"(arg1), "r"(arg2)); + +/// __orr_extended4 +/// +/// Invoke the magic instruction defined by SIMICS for the RISC-V architecture +/// with a specific value of `n` and four pseudo-arguments in registers `r10`, +/// `r9`, `r8`, and `r7`. +/// +/// # Arguments +/// +/// * `value` - The value of `n` to use in the magic instruction +/// * `arg0` - The value to place in register `r10` +/// * `arg1` - The value to place in register `r9` +/// * `arg2` - The value to place in register `r8` +/// * `arg3` - The value to place in register `r7` +#define __orr_extended4(value, arg0, arg1, arg2, arg3) \ + __asm__ __volatile__( \ + "mov x28, %0; mov x27, %1; mov x26, %2; mov x25, %3; " \ + "orr x" __tostring(value) ", x" __tostring(value) ", x" __tostring( \ + value) \ + : \ + : "r"(arg0), "r"(arg1), "r"(arg2), "r"(arg3)); + +/// The default index number used for magic instructions. All magic instructions +/// support multiple start and stop indices, which defaults to 0 if not +/// specified. +#define DEFAULT_INDEX (0x0000U) + +/// Pseudo-hypercall number to signal the fuzzer to use the first argument to +/// the magic instruction as the pointer to the testcase buffer and the second +/// argument as a pointer to the size of the testcase buffer. +#define N_START_BUFFER_PTR_SIZE_PTR 1 + +/// HARNESS_START +/// +/// Signal the fuzzer to start the fuzzing loop at the point this macro is +/// called. The default "index" of 0 will be used. If you need multiple start +/// harnesses compiled into the same binary, you can use the +/// `HARNESS_START_INDEX` macro to specify different indices, then enable them +/// at runtime by configuring the fuzzer. +/// +/// When this macro is called: +/// +/// - A snapshot will be taken and saved +/// - The buffer pointed to by `buffer` will be saved and used as the testcase +/// buffer. Each +/// fuzzing iteration, a new test case will be written to this buffer. +/// - The size of the buffer pointed to by `size_ptr` will be saved as the +/// maximum testcase size. Each fuzzing iteration, the actual size of the +/// current testcase will be written to `*size_ptr`. +/// +/// # Arguments +/// +/// - `buffer`: The pointer to the testcase buffer +/// - `size_ptr`: The pointer to the size of the testcase buffer +/// +/// # Example +/// +/// ``` +/// unsigned char buffer[1024]; +/// size_t size; +/// HARNESS_START(buffer, &size); +/// ``` +#define HARNESS_START(buffer, size_ptr) \ + do { \ + __orr_extended3(N_START_BUFFER_PTR_SIZE_PTR, DEFAULT_INDEX, buffer, \ + size_ptr); \ + } while (0); + +/// HARNESS_START_INDEX +/// +/// Signal the fuzzer to start the fuzzing loop at the point this macro is +/// called. The index specified by `start_index` will be used. If you need +/// multiple start harnesses compiled into the same binary, you can use this +/// macro to specify different indices, then enable them at runtime by +/// configuring the fuzzer. +/// +/// When this macro is called: +/// +/// - A snapshot will be taken and saved +/// - The buffer pointed to by `buffer` will be saved and used as the testcase +/// buffer. Each +/// fuzzing iteration, a new test case will be written to this buffer. +/// - The size of the buffer pointed to by `size_ptr` will be saved as the +/// maximum testcase size. Each fuzzing iteration, the actual size of the +/// current testcase will be written to `*size_ptr`. +/// +/// # Arguments +/// +/// - `start_index`: The index to use for this start harness +/// - `buffer`: The pointer to the testcase buffer +/// - `size_ptr`: The pointer to the size of the testcase buffer +/// +/// # Example +/// +/// ``` +/// unsigned char buffer[1024]; +/// size_t size; +/// HARNESS_START_INDEX(0x0001U, buffer, &size); +/// ``` +#define HARNESS_START_INDEX(start_index, buffer, size_ptr) \ + do { \ + __orr_extended3(N_START_BUFFER_PTR_SIZE_PTR, start_index, buffer, \ + size_ptr); \ + } while (0); + +/// Pseudo-hypercall number to signal the fuzzer to use the first argument to +/// the magic instruction as the pointer to the testcase buffer and the second +/// argument as the maximum size of the testcase buffer. +#define N_START_BUFFER_PTR_SIZE_VAL 2 + +/// HARNESS_START_WITH_MAXIMUM_SIZE +/// +/// Signal the fuzzer to start the fuzzing loop at the point this macro is +/// called. The default "index" of 0 will be used. If you need multiple start +/// harnesses compiled into the same binary, you can use the +/// `HARNESS_START_WITH_MAXIMUM_SIZE_INDEX` macro to specify different indices, +/// then enable them at runtime by configuring the fuzzer. +/// +/// When this macro is called: +/// +/// - A snapshot will be taken and saved +/// - The buffer pointed to by `buffer` will be saved and used as the testcase +/// buffer. Each +/// fuzzing iteration, a new test case will be written to this buffer. +/// - The `max_size` value will be saved as the maximum testcase size. Fuzzing +/// test cases will be truncated to this size before being written to the +/// buffer. +/// +/// # Arguments +/// +/// - `buffer`: The pointer to the testcase buffer +/// - `max_size`: The maximum size of the testcase buffer +/// +/// # Example +/// +/// ``` +/// unsigned char buffer[1024]; +/// HARNESS_START_WITH_MAXIMUM_SIZE(buffer, 1024); +/// ``` +#define HARNESS_START_WITH_MAXIMUM_SIZE(buffer, max_size) \ + do { \ + __orr_extended3(N_START_BUFFER_PTR_SIZE_VAL, DEFAULT_INDEX, buffer, \ + max_size); \ + } while (0); + +/// HARNESS_START_WITH_MAXIMUM_SIZE_INDEX +/// +/// Signal the fuzzer to start the fuzzing loop at the point this macro is +/// called. The index specified by `start_index` will be used. If you need +/// multiple start harnesses compiled into the same binary, you can use this +/// macro to specify different indices, then enable them at runtime by +/// configuring the fuzzer. +/// +/// When this macro is called: +/// +/// - A snapshot will be taken and saved +/// - The buffer pointed to by `buffer` will be saved and used as the testcase +/// buffer. Each +/// fuzzing iteration, a new test case will be written to this buffer. +/// - The `max_size` value will be saved as the maximum testcase size. Fuzzing +/// test cases will be truncated to this size before being written to the +/// buffer. +/// +/// # Arguments +/// +/// - `start_index`: The index to use for this start harness +/// - `buffer`: The pointer to the testcase buffer +/// - `max_size`: The maximum size of the testcase buffer +/// +/// # Example +/// +/// ``` +/// unsigned char buffer[1024]; +/// HARNESS_START_WITH_MAXIMUM_SIZE_INDEX(0x0001U, buffer, 1024); +/// ``` +#define HARNESS_START_WITH_MAXIMUM_SIZE_INDEX(start_index, buffer, max_size) \ + do { \ + __orr_extended3(N_START_BUFFER_PTR_SIZE_VAL, start_index, buffer, \ + max_size); \ + } while (0); + +/// Pseudo-hypercall number to signal the fuzzer to use the first argument to +/// the magic instruction as the pointer to the testcase buffer, the second +/// argument as a pointer to the size of the testcase buffer, and the third +/// argument as the maximum size of the testcase buffer. +#define N_START_BUFFER_PTR_SIZE_PTR_VAL 3 + +/// HARNESS_START_WITH_MAXIMUM_SIZE_AND_PTR +/// +/// Signal the fuzzer to start the fuzzing loop at the point this macro is +/// called. The default "index" of 0 will be used. If you need multiple start +/// harnesses compiled into the same binary, you can use the +/// `HARNESS_START_WITH_MAXIMUM_SIZE_AND_PTR_INDEX` macro to specify different +/// indices, then enable them at runtime by configuring the fuzzer. +/// +/// When this macro is called: +/// +/// - A snapshot will be taken and saved +/// - The buffer pointed to by `buffer` will be saved and used as the testcase +/// buffer. Each +/// fuzzing iteration, a new test case will be written to this buffer. +/// - The address `size_ptr` will be saved. Each fuzzing iteration, the actual +/// size of the current testcase will be written to `*size_ptr`. +/// - The `max_size` value will be saved as the maximum testcase size. Fuzzing +/// test cases will be truncated to this size before being written to the +/// buffer. +/// +/// # Arguments +/// +/// - `buffer`: The pointer to the testcase buffer +/// - `size_ptr`: The pointer to the size of the testcase buffer +/// - `max_size`: The maximum size of the testcase buffer +/// +/// # Example +/// +/// ``` +/// unsigned char buffer[1024]; +/// size_t size; +/// HARNESS_START_WITH_MAXIMUM_SIZE_AND_PTR(buffer, &size, 1024); +/// ``` +#define HARNESS_START_WITH_MAXIMUM_SIZE_AND_PTR(buffer, size_ptr, max_size) \ + do { \ + __orr_extended4(N_START_BUFFER_PTR_SIZE_PTR_VAL, DEFAULT_INDEX, buffer, \ + size_ptr, max_size); \ + } while (0); + +/// HARNESS_START_WITH_MAXIMUM_SIZE_AND_PTR_INDEX +/// +/// Signal the fuzzer to start the fuzzing loop at the point this macro is +/// called. The index specified by `start_index` will be used. If you need +/// multiple start harnesses compiled into the same binary, you can use this +/// macro to specify different indices, then enable them at runtime by +/// configuring the fuzzer. +/// +/// When this macro is called: +/// +/// - A snapshot will be taken and saved +/// - The buffer pointed to by `buffer` will be saved and used as the testcase +/// buffer. Each +/// fuzzing iteration, a new test case will be written to this buffer. +/// - The address `size_ptr` will be saved. Each fuzzing iteration, the actual +/// size of the current testcase will be written to `*size_ptr`. +/// - The `max_size` value will be saved as the maximum testcase size. Fuzzing +/// test cases will be truncated to this size before being written to the +/// buffer. +/// +/// # Arguments +/// +/// - `start_index`: The index to use for this start harness +/// - `buffer`: The pointer to the testcase buffer +/// - `size_ptr`: The pointer to the size of the testcase buffer +/// - `max_size`: The maximum size of the testcase buffer +/// +/// # Example +/// +/// ``` +/// unsigned char buffer[1024]; +/// size_t size; +/// HARNESS_START_WITH_MAXIMUM_SIZE_AND_PTR_INDEX(0x0001U, buffer, &size, 1024); +/// ``` +#define HARNESS_START_WITH_MAXIMUM_SIZE_AND_PTR_INDEX(start_index, buffer, \ + size_ptr, max_size) \ + do { \ + __orr_extended4(N_START_BUFFER_PTR_SIZE_PTR_VAL, start_index, buffer, \ + size_ptr, max_size); \ + } while (0); + +/// Pseudo-hypercall number to signal the fuzzer to stop the current fuzzing +/// iteration and reset to the beginning of the fuzzing loop with a "normal" +/// stop status, indicating no solution has occurred. +#define N_STOP_NORMAL 4 + +/// HARNESS_STOP +/// +/// Signal the fuzzer to stop and reset to the beginning of the fuzzing loop +/// with a "normal" stop status, indicating no solution has occurred. The +/// default index of 0 will be used. If you need to differentiate between +/// multiple stop harnesses compiled into the same binary, you can use the +/// `HARNESS_STOP_INDEX` macro to specify different indices, then enable them at +/// runtime by configuring the fuzzer. +/// +/// # Example +/// +/// ``` +/// HARNESS_STOP(); +/// ``` +#define HARNESS_STOP() \ + do { \ + __orr_extended1(N_STOP_NORMAL, DEFAULT_INDEX); \ + } while (0); + +/// HARNESS_STOP_INDEX +/// +/// Signal the fuzzer to stop and reset to the beginning of the fuzzing loop +/// with a "normal" stop status, indicating no solution has occurred. The index +/// specified by `stop_index` will be used. If you need to differentiate between +/// multiple stop harnesses compiled into the same binary, you can use this +/// macro to specify different indices, then enable them at runtime by +/// configuring the fuzzer. +/// +/// # Arguments +/// +/// - `stop_index`: The index to use for this stop harness +/// +/// # Example +/// +/// ``` +/// HARNESS_STOP_INDEX(0x0001U); +/// ``` +#define HARNESS_STOP_INDEX(stop_index) \ + do { \ + __orr_extended1(N_STOP_NORMAL, stop_index); \ + } while (0); + +/// Pseudo-hypercall number to signal the fuzzer that a custom assertion has +/// occurred, and the fuzzer should stop the current fuzzing iteration and reset +/// to the beginning of the fuzzing loop with a "solution" stop status. +#define N_STOP_ASSERT 5 + +/// HARNESS_ASSERT +/// +/// Signal the fuzzer that a custom assertion has occurred, and the fuzzer +/// should stop the current fuzzing iteration and reset to the beginning of the +/// fuzzing loop with a "solution" stop status. The default index of 0 will be +/// used. If you need to differentiate between multiple assertion harnesses +/// compiled into the same binary, you can use the `HARNESS_ASSERT_INDEX` macro +/// to specify different indices, then enable them at runtime by configuring the +/// fuzzer. +/// +/// # Example +/// +/// ``` +/// HARNESS_ASSERT(); +/// ``` +#define HARNESS_ASSERT() \ + do { \ + __orr_extended1(N_STOP_ASSERT, DEFAULT_INDEX); \ + } while (0); + +/// HARNESS_ASSERT_INDEX +/// +/// Signal the fuzzer that a custom assertion has occurred, and the fuzzer +/// should stop the current fuzzing iteration and reset to the beginning of the +/// fuzzing loop with a "solution" stop status. The index specified by +/// `assert_index` will be used. If you need to differentiate between multiple +/// assertion harnesses compiled into the same binary, you can use this macro to +/// specify different indices, then enable them at runtime by configuring the +/// fuzzer. +/// +/// # Arguments +/// +/// - `assert_index`: The index to use for this assertion harness +/// +/// # Example +/// +/// ``` +/// HARNESS_ASSERT_INDEX(0x0001U); +/// ``` +#define HARNESS_ASSERT_INDEX(assert_index) \ + do { \ + __orr_extended1(N_STOP_ASSERT, assert_index); \ + } while (0); + +#endif // TSFFS_H +#elif __arm__ +// Copyright (C) 2024 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 + +/// Definitions and macros for compiled-in harnessing of C and C++ target +/// software for the RISC-V (32-bit) architecture + +#ifndef TSFFS_H +#define TSFFS_H + +/// Define common with LibFuzzer and other fuzzers to allow code that is +/// fuzzing-specific to be left in the codebase. See +/// https://llvm.org/docs/LibFuzzer.html#id35 for more information +#ifndef FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION +#define FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION (1) +#endif // FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION + +#define __stringify(x) #x +#define __tostring(x) __stringify(x) + +/// __orr +/// +/// Invoke the magic instruction defined by SIMICS for the RISC-V architecture +/// with a specific value of `n` +/// +/// # Arguments +/// +/// * `value` - The value of `n` to use in the magic instruction +#define __orr(value) \ + __asm__ __volatile__("orr r" __tostring(value) ", r" __tostring( \ + value) ", r" __tostring(value)); + +/// __orr_extended1 +/// +/// Invoke the magic instruction defined by SIMICS for the RISC-V architecture +/// with a specific value of `n` and a pseudo-argument in register `r10`. +/// +/// # Arguments +/// +/// * `value` - The value of `n` to use in the magic instruction +/// * `arg0` - The value to place in register `r10` +#define __orr_extended1(value, arg0) \ + __asm__ __volatile__( \ + "mov r10, %0; orr r" __tostring(value) ", r" __tostring( \ + value) ", r" __tostring(value) \ + : \ + : "r"(arg0)); + +/// __orr_extended2 +/// +/// Invoke the magic instruction defined by SIMICS for the RISC-V architecture +/// with a specific value of `n` and two pseudo-arguments in registers `r10` and +/// `r9`. +/// +/// # Arguments +/// +/// * `value` - The value of `n` to use in the magic instruction +/// * `arg0` - The value to place in register `r10` +/// * `arg1` - The value to place in register `r9` +#define __orr_extended2(value, arg0, arg1) \ + __asm__ __volatile__( \ + "mov r10, %0; mov r9, %1; orr r" __tostring(value) ", r" __tostring( \ + value) ", r" __tostring(value) \ + : \ + : "r"(arg0), "r"(arg1)); + +/// __orr_extended3 +/// +/// Invoke the magic instruction defined by SIMICS for the RISC-V architecture +/// with a specific value of `n` and three pseudo-arguments in registers `r10`, +/// `r9`, and `r8`. +/// +/// # Arguments +/// +/// * `value` - The value of `n` to use in the magic instruction +/// * `arg0` - The value to place in register `r10` +/// * `arg1` - The value to place in register `r9` +/// * `arg2` - The value to place in register `r8` +#define __orr_extended3(value, arg0, arg1, arg2) \ + __asm__ __volatile__( \ + "mov r10, %0; mov r9, %1; mov r8, %2; orr r" __tostring( \ + value) ", r" __tostring(value) ", r" __tostring(value) \ + : \ + : "r"(arg0), "r"(arg1), "r"(arg2)); + +/// __orr_extended4 +/// +/// Invoke the magic instruction defined by SIMICS for the RISC-V architecture +/// with a specific value of `n` and four pseudo-arguments in registers `r10`, +/// `r9`, `r8`, and `r7`. +/// +/// # Arguments +/// +/// * `value` - The value of `n` to use in the magic instruction +/// * `arg0` - The value to place in register `r10` +/// * `arg1` - The value to place in register `r9` +/// * `arg2` - The value to place in register `r8` +/// * `arg3` - The value to place in register `r7` +#define __orr_extended4(value, arg0, arg1, arg2, arg3) \ + __asm__ __volatile__( \ + "mov r10, %0; mov r9, %1; mov r8, %2; mov r7, %3; " \ + "orr r" __tostring(value) ", r" __tostring(value) ", r" __tostring( \ + value) \ + : \ + : "r"(arg0), "r"(arg1), "r"(arg2), "r"(arg3)); + +/// Magic value defined by SIMICS as the "leaf" value of a CPUID instruction +/// that is treated as a magic instruction. +#define MAGIC (0x4711U) + +/// The default index number used for magic instructions. All magic instructions +/// support multiple start and stop indices, which defaults to 0 if not +/// specified. +#define DEFAULT_INDEX (0x0000U) + +/// Pseudo-hypercall number to signal the fuzzer to use the first argument to +/// the magic instruction as the pointer to the testcase buffer and the second +/// argument as a pointer to the size of the testcase buffer. +#define N_START_BUFFER_PTR_SIZE_PTR 1 + +/// HARNESS_START +/// +/// Signal the fuzzer to start the fuzzing loop at the point this macro is +/// called. The default "index" of 0 will be used. If you need multiple start +/// harnesses compiled into the same binary, you can use the +/// `HARNESS_START_INDEX` macro to specify different indices, then enable them +/// at runtime by configuring the fuzzer. +/// +/// When this macro is called: +/// +/// - A snapshot will be taken and saved +/// - The buffer pointed to by `buffer` will be saved and used as the testcase +/// buffer. Each +/// fuzzing iteration, a new test case will be written to this buffer. +/// - The size of the buffer pointed to by `size_ptr` will be saved as the +/// maximum testcase size. Each fuzzing iteration, the actual size of the +/// current testcase will be written to `*size_ptr`. +/// +/// # Arguments +/// +/// - `buffer`: The pointer to the testcase buffer +/// - `size_ptr`: The pointer to the size of the testcase buffer +/// +/// # Example +/// +/// ``` +/// unsigned char buffer[1024]; +/// size_t size; +/// HARNESS_START(buffer, &size); +/// ``` +#define HARNESS_START(buffer, size_ptr) \ + do { \ + __orr_extended2(N_START_BUFFER_PTR_SIZE_PTR, buffer, size_ptr); \ + } while (0); + +/// Pseudo-hypercall number to signal the fuzzer to use the first argument to +/// the magic instruction as the pointer to the testcase buffer and the second +/// argument as the maximum size of the testcase buffer. +#define N_START_BUFFER_PTR_SIZE_VAL 2 + +/// HARNESS_START_WITH_MAXIMUM_SIZE +/// +/// Signal the fuzzer to start the fuzzing loop at the point this macro is +/// called. The default "index" of 0 will be used. If you need multiple start +/// harnesses compiled into the same binary, you can use the +/// `HARNESS_START_WITH_MAXIMUM_SIZE_INDEX` macro to specify different indices, +/// then enable them at runtime by configuring the fuzzer. +/// +/// When this macro is called: +/// +/// - A snapshot will be taken and saved +/// - The buffer pointed to by `buffer` will be saved and used as the testcase +/// buffer. Each +/// fuzzing iteration, a new test case will be written to this buffer. +/// - The `max_size` value will be saved as the maximum testcase size. Fuzzing +/// test cases will be truncated to this size before being written to the +/// buffer. +/// +/// # Arguments +/// +/// - `buffer`: The pointer to the testcase buffer +/// - `max_size`: The maximum size of the testcase buffer +/// +/// # Example +/// +/// ``` +/// unsigned char buffer[1024]; +/// HARNESS_START_WITH_MAXIMUM_SIZE(buffer, 1024); +/// ``` +#define HARNESS_START_WITH_MAXIMUM_SIZE(buffer, max_size) \ + do { \ + __orr_extended2(N_START_BUFFER_PTR_SIZE_VAL, buffer, max_size); \ + } while (0); + +/// Pseudo-hypercall number to signal the fuzzer to use the first argument to +/// the magic instruction as the pointer to the testcase buffer, the second +/// argument as a pointer to the size of the testcase buffer, and the third +/// argument as the maximum size of the testcase buffer. +#define N_START_BUFFER_PTR_SIZE_PTR_VAL 3 + +/// HARNESS_START_WITH_MAXIMUM_SIZE_AND_PTR +/// +/// Signal the fuzzer to start the fuzzing loop at the point this macro is +/// called. The default "index" of 0 will be used. If you need multiple start +/// harnesses compiled into the same binary, you can use the +/// `HARNESS_START_WITH_MAXIMUM_SIZE_AND_PTR_INDEX` macro to specify different +/// indices, then enable them at runtime by configuring the fuzzer. +/// +/// When this macro is called: +/// +/// - A snapshot will be taken and saved +/// - The buffer pointed to by `buffer` will be saved and used as the testcase +/// buffer. Each +/// fuzzing iteration, a new test case will be written to this buffer. +/// - The address `size_ptr` will be saved. Each fuzzing iteration, the actual +/// size of the current testcase will be written to `*size_ptr`. +/// - The `max_size` value will be saved as the maximum testcase size. Fuzzing +/// test cases will be truncated to this size before being written to the +/// buffer. +/// +/// # Arguments +/// +/// - `buffer`: The pointer to the testcase buffer +/// - `size_ptr`: The pointer to the size of the testcase buffer +/// - `max_size`: The maximum size of the testcase buffer +/// +/// # Example +/// +/// ``` +/// unsigned char buffer[1024]; +/// size_t size; +/// HARNESS_START_WITH_MAXIMUM_SIZE_AND_PTR(buffer, &size, 1024); +/// ``` +#define HARNESS_START_WITH_MAXIMUM_SIZE_AND_PTR(buffer, size_ptr, max_size) \ + do { \ + __orr_extended3(N_START_BUFFER_PTR_SIZE_PTR_VAL, buffer, size_ptr, \ + max_size); \ + } while (0); + +/// Pseudo-hypercall number to signal the fuzzer to stop the current fuzzing +/// iteration and reset to the beginning of the fuzzing loop with a "normal" +/// stop status, indicating no solution has occurred. +#define N_STOP_NORMAL 4 + +/// HARNESS_STOP +/// +/// Signal the fuzzer to stop and reset to the beginning of the fuzzing loop +/// with a "normal" stop status, indicating no solution has occurred. The +/// default index of 0 will be used. If you need to differentiate between +/// multiple stop harnesses compiled into the same binary, you can use the +/// `HARNESS_STOP_INDEX` macro to specify different indices, then enable them at +/// runtime by configuring the fuzzer. +/// +/// # Example +/// +/// ``` +/// HARNESS_STOP(); +/// ``` +#define HARNESS_STOP() \ + do { \ + __orr(N_STOP_NORMAL); \ + } while (0); + +/// Pseudo-hypercall number to signal the fuzzer that a custom assertion has +/// occurred, and the fuzzer should stop the current fuzzing iteration and reset +/// to the beginning of the fuzzing loop with a "solution" stop status. +#define N_STOP_ASSERT 5 + +/// HARNESS_ASSERT +/// +/// Signal the fuzzer that a custom assertion has occurred, and the fuzzer +/// should stop the current fuzzing iteration and reset to the beginning of the +/// fuzzing loop with a "solution" stop status. The default index of 0 will be +/// used. If you need to differentiate between multiple assertion harnesses +/// compiled into the same binary, you can use the `HARNESS_ASSERT_INDEX` macro +/// to specify different indices, then enable them at runtime by configuring the +/// fuzzer. +/// +/// # Example +/// +/// ``` +/// HARNESS_ASSERT(); +/// ``` +#define HARNESS_ASSERT() \ + do { \ + __orr_extended1(N_STOP_ASSERT, DEFAULT_INDEX); \ + } while (0); + +#endif // TSFFS_H +#else +#error "Unsupported platform!" +#endif +#elif _MSC_VER +#ifndef TSFFS_H +#define TSFFS_H + +/// Define common with LibFuzzer and other fuzzers to allow code that is +/// fuzzing-specific to be left in the codebase. See +/// https://llvm.org/docs/LibFuzzer.html#id35 for more information +#ifndef FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION +#define FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION (1) +#endif // FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION + +#include + +/// HARNESS_START +/// +/// Signal the fuzzer to start the fuzzing loop at the point this macro is +/// called. The default "index" of 0 will be used. If you need multiple start +/// harnesses compiled into the same binary, you can use the +/// `HARNESS_START_INDEX` macro to specify different indices, then enable them +/// at runtime by configuring the fuzzer. +/// +/// When this macro is called: +/// +/// - A snapshot will be taken and saved +/// - The buffer pointed to by `buffer` will be saved and used as the testcase +/// buffer. Each +/// fuzzing iteration, a new test case will be written to this buffer. +/// - The size of the buffer pointed to by `size_ptr` will be saved as the +/// maximum testcase size. Each fuzzing iteration, the actual size of the +/// current testcase will be written to `*size_ptr`. +/// +/// # Arguments +/// +/// - `buffer`: The pointer to the testcase buffer +/// - `size_ptr`: The pointer to the size of the testcase buffer +/// +/// # Example +/// +/// ``` +/// unsigned char buffer[1024]; +/// size_t size; +/// HARNESS_START(buffer, &size); +/// ``` +void HARNESS_START(void *buffer, void *size_ptr); + +/// HARNESS_START_INDEX +/// +/// Signal the fuzzer to start the fuzzing loop at the point this macro is +/// called. The index specified by `start_index` will be used. If you need +/// multiple start harnesses compiled into the same binary, you can use this +/// macro to specify different indices, then enable them at runtime by +/// configuring the fuzzer. +/// +/// When this macro is called: +/// +/// - A snapshot will be taken and saved +/// - The buffer pointed to by `buffer` will be saved and used as the testcase +/// buffer. Each +/// fuzzing iteration, a new test case will be written to this buffer. +/// - The size of the buffer pointed to by `size_ptr` will be saved as the +/// maximum testcase size. Each fuzzing iteration, the actual size of the +/// current testcase will be written to `*size_ptr`. +/// +/// # Arguments +/// +/// - `start_index`: The index to use for this start harness +/// - `buffer`: The pointer to the testcase buffer +/// - `size_ptr`: The pointer to the size of the testcase buffer +/// +/// # Example +/// +/// ``` +/// unsigned char buffer[1024]; +/// size_t size; +/// HARNESS_START_INDEX(0x0001U, buffer, &size); +/// ``` +void HARNESS_START_INDEX(size_t start_index, void *buffer, void *size_ptr); + +/// HARNESS_START_WITH_MAXIMUM_SIZE +/// +/// Signal the fuzzer to start the fuzzing loop at the point this macro is +/// called. The default "index" of 0 will be used. If you need multiple start +/// harnesses compiled into the same binary, you can use the +/// `HARNESS_START_WITH_MAXIMUM_SIZE_INDEX` macro to specify different indices, +/// then enable them at runtime by configuring the fuzzer. +/// +/// When this macro is called: +/// +/// - A snapshot will be taken and saved +/// - The buffer pointed to by `buffer` will be saved and used as the testcase +/// buffer. Each +/// fuzzing iteration, a new test case will be written to this buffer. +/// - The `max_size` value will be saved as the maximum testcase size. Fuzzing +/// test cases will be truncated to this size before being written to the +/// buffer. +/// +/// # Arguments +/// +/// - `buffer`: The pointer to the testcase buffer +/// - `max_size`: The maximum size of the testcase buffer +/// +/// # Example +/// +/// ``` +/// unsigned char buffer[1024]; +/// HARNESS_START_WITH_MAXIMUM_SIZE(buffer, 1024); +/// ``` +void HARNESS_START_WITH_MAXIMUM_SIZE(void *buffer, size_t max_size); + +/// HARNESS_START_WITH_MAXIMUM_SIZE_INDEX +/// +/// Signal the fuzzer to start the fuzzing loop at the point this macro is +/// called. The index specified by `start_index` will be used. If you need +/// multiple start harnesses compiled into the same binary, you can use this +/// macro to specify different indices, then enable them at runtime by +/// configuring the fuzzer. +/// +/// When this macro is called: +/// +/// - A snapshot will be taken and saved +/// - The buffer pointed to by `buffer` will be saved and used as the testcase +/// buffer. Each +/// fuzzing iteration, a new test case will be written to this buffer. +/// - The `max_size` value will be saved as the maximum testcase size. Fuzzing +/// test cases will be truncated to this size before being written to the +/// buffer. +/// +/// # Arguments +/// +/// - `start_index`: The index to use for this start harness +/// - `buffer`: The pointer to the testcase buffer +/// - `max_size`: The maximum size of the testcase buffer +/// +/// # Example +/// +/// ``` +/// unsigned char buffer[1024]; +/// HARNESS_START_WITH_MAXIMUM_SIZE_INDEX(0x0001U, buffer, 1024); +/// ``` +void HARNESS_START_WITH_MAXIMUM_SIZE_INDEX(size_t start_index, void *buffer, + size_t max_size); + +/// HARNESS_START_WITH_MAXIMUM_SIZE_AND_PTR +/// +/// Signal the fuzzer to start the fuzzing loop at the point this macro is +/// called. The default "index" of 0 will be used. If you need multiple start +/// harnesses compiled into the same binary, you can use the +/// `HARNESS_START_WITH_MAXIMUM_SIZE_AND_PTR_INDEX` macro to specify different +/// indices, then enable them at runtime by configuring the fuzzer. +/// +/// When this macro is called: +/// +/// - A snapshot will be taken and saved +/// - The buffer pointed to by `buffer` will be saved and used as the testcase +/// buffer. Each +/// fuzzing iteration, a new test case will be written to this buffer. +/// - The address `size_ptr` will be saved. Each fuzzing iteration, the actual +/// size of the current testcase will be written to `*size_ptr`. +/// - The `max_size` value will be saved as the maximum testcase size. Fuzzing +/// test cases will be truncated to this size before being written to the +/// buffer. +/// +/// # Arguments +/// +/// - `buffer`: The pointer to the testcase buffer +/// - `size_ptr`: The pointer to the size of the testcase buffer +/// - `max_size`: The maximum size of the testcase buffer +/// +/// # Example +/// +/// ``` +/// unsigned char buffer[1024]; +/// size_t size; +/// HARNESS_START_WITH_MAXIMUM_SIZE_AND_PTR(buffer, &size, 1024); +/// ``` +void HARNESS_START_WITH_MAXIMUM_SIZE_AND_PTR(void *buffer, void *size_ptr, + size_t max_size); + +/// HARNESS_START_WITH_MAXIMUM_SIZE_AND_PTR_INDEX +/// +/// Signal the fuzzer to start the fuzzing loop at the point this macro is +/// called. The index specified by `start_index` will be used. If you need +/// multiple start harnesses compiled into the same binary, you can use this +/// macro to specify different indices, then enable them at runtime by +/// configuring the fuzzer. +/// +/// When this macro is called: +/// +/// - A snapshot will be taken and saved +/// - The buffer pointed to by `buffer` will be saved and used as the testcase +/// buffer. Each +/// fuzzing iteration, a new test case will be written to this buffer. +/// - The address `size_ptr` will be saved. Each fuzzing iteration, the actual +/// size of the current testcase will be written to `*size_ptr`. +/// - The `max_size` value will be saved as the maximum testcase size. Fuzzing +/// test cases will be truncated to this size before being written to the +/// buffer. +/// +/// # Arguments +/// +/// - `start_index`: The index to use for this start harness +/// - `buffer`: The pointer to the testcase buffer +/// - `size_ptr`: The pointer to the size of the testcase buffer +/// - `max_size`: The maximum size of the testcase buffer +/// +/// # Example +/// +/// ``` +/// unsigned char buffer[1024]; +/// size_t size; +/// HARNESS_START_WITH_MAXIMUM_SIZE_AND_PTR_INDEX(0x0001U, buffer, &size, 1024); +/// ``` +void HARNESS_START_WITH_MAXIMUM_SIZE_AND_PTR_INDEX(size_t start_index, + void *buffer, void *size_ptr, + size_t max_size); + +/// HARNESS_STOP +/// +/// Signal the fuzzer to stop and reset to the beginning of the fuzzing loop +/// with a "normal" stop status, indicating no solution has occurred. The +/// default index of 0 will be used. If you need to differentiate between +/// multiple stop harnesses compiled into the same binary, you can use the +/// `HARNESS_STOP_INDEX` macro to specify different indices, then enable them at +/// runtime by configuring the fuzzer. +/// +/// # Example +/// +/// ``` +/// HARNESS_STOP(); +/// ``` +void HARNESS_STOP(void); + +/// HARNESS_STOP_INDEX +/// +/// Signal the fuzzer to stop and reset to the beginning of the fuzzing loop +/// with a "normal" stop status, indicating no solution has occurred. The index +/// specified by `stop_index` will be used. If you need to differentiate between +/// multiple stop harnesses compiled into the same binary, you can use this +/// macro to specify different indices, then enable them at runtime by +/// configuring the fuzzer. +/// +/// # Arguments +/// +/// - `stop_index`: The index to use for this stop harness +/// +/// # Example +/// +/// ``` +/// HARNESS_STOP_INDEX(0x0001U); +/// ``` +void HARNESS_STOP_INDEX(size_t stop_index); + +/// HARNESS_ASSERT +/// +/// Signal the fuzzer that a custom assertion has occurred, and the fuzzer +/// should stop the current fuzzing iteration and reset to the beginning of the +/// fuzzing loop with a "solution" stop status. The default index of 0 will be +/// used. If you need to differentiate between multiple assertion harnesses +/// compiled into the same binary, you can use the `HARNESS_ASSERT_INDEX` macro +/// to specify different indices, then enable them at runtime by configuring the +/// fuzzer. +/// +/// # Example +/// +/// ``` +/// HARNESS_ASSERT(); +/// ``` +void HARNESS_ASSERT(void); + +/// HARNESS_ASSERT_INDEX +/// +/// Signal the fuzzer that a custom assertion has occurred, and the fuzzer +/// should stop the current fuzzing iteration and reset to the beginning of the +/// fuzzing loop with a "solution" stop status. The index specified by +/// `assert_index` will be used. If you need to differentiate between multiple +/// assertion harnesses compiled into the same binary, you can use this macro to +/// specify different indices, then enable them at runtime by configuring the +/// fuzzer. +/// +/// # Arguments +/// +/// - `assert_index`: The index to use for this assertion harness +/// +/// # Example +/// +/// ``` +/// HARNESS_ASSERT_INDEX(0x0001U); +/// ``` +void HARNESS_ASSERT_INDEX(size_t assert_index); + +#endif // TSFFS_H +#else +#error "Unsupported compiler!" +#endif diff --git a/examples/tutorials/risc-v-kernel/src/tutorial-kernel-modules/package/kernel-modules/tutorial-mod/tsffs-gcc-riscv64.h b/examples/tutorials/risc-v-kernel/src/tutorial-kernel-modules/package/kernel-modules/tutorial-mod/tsffs-gcc-riscv64.h deleted file mode 100644 index f6acf1ea..00000000 --- a/examples/tutorials/risc-v-kernel/src/tutorial-kernel-modules/package/kernel-modules/tutorial-mod/tsffs-gcc-riscv64.h +++ /dev/null @@ -1,124 +0,0 @@ -// Copyright (C) 2024 Intel Corporation -// SPDX-License-Identifier: Apache-2.0 - -/// Definitions and macros for compiled-in harnessing of C and C++ target -/// software for the RISC-V (64-bit) architecture -/// -/// Example: -/// ```c -/// #include "tsffs-gcc-riscv64.h" -/// -/// int main() { -/// char buf[0x10]; -/// size_t size = 0x10; -/// size_t *size_ptr = &size; -/// HARNESS_START((char *)buf, size_ptr); -/// int retval = YourSpecialDecoder(buf, *size_ptr); -/// if (!retval) { -/// HARNESS_ASSERT(); -/// } else { -/// HARNESS_STOP(); -/// } -/// } -/// ``` - -#ifndef TSFFS_H -#define TSFFS_H - -/// Define common with LibFuzzer and other fuzzers to allow code that is -/// fuzzing-specific to be left in the codebase. See -/// https://llvm.org/docs/LibFuzzer.html#id35 for more information -#ifndef FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION -#define FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION (1) -#endif // FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION - -/// Default magic instruction `n` value to signal the TSFFS fuzzer to start the -/// fuzzing loop -#define MAGIC_START (0x0001U) -/// Default magic instruction `n` value to signal the TSFFS fuzzer to stop and -/// reset the fuzzing loop -#define MAGIC_STOP (0x0002U) -/// Default magic instruction `n` value to signal the TSFFS fuzzer that an error -/// has occurred and the testcase input should be saved as a solution -#define MAGIC_ASSERT (0x0003U) - -/// Alternative magic numbers that can be used for start and stop events in -/// conjunction with setting the magic number for each event via the SIMICS or -/// SIMICS Python script interface -#define MAGIC_ALT_0 (0x0004U) -#define MAGIC_ALT_1 (0x0005U) -#define MAGIC_ALT_2 (0x0006U) -#define MAGIC_ALT_3 (0x0007U) -#define MAGIC_ALT_4 (0x0008U) -#define MAGIC_ALT_5 (0x0009U) -#define MAGIC_ALT_6 (0x000aU) -#define MAGIC_ALT_7 (0x000bU) - -/// Invoke the magic instruction defined by SIMICS for the RISC-V architecture -/// (`srai zero, zero, n`) with a specific value of `n`, after setting register -/// `a0` to the value of the pointer to the testcase and register `a1` to the -/// value of the pointer to the testcase size. These registers are accessed by -/// the fuzzer and are defined per-architecture. -#define __srai_extended(value, testcase_ptr, size_ptr) \ - __asm__ __volatile__("mv a0, %0; mv a1, %1; srai zero, zero, %2" \ - : \ - : "r"(testcase_ptr), "r"(size_ptr), "I"(value) \ - : "a0", "a1"); - -/// Invoke the magic instruction defined by SIMICS for the RISC-V architecture -/// (`srai zero, zero, n`) with a specific value of `n` -#define __srai(value) \ - __asm__ __volatile__("srai zero, zero, %0" : : "I"(value) :) - -/// Signal the fuzzer using a specific magic value `start` to start the fuzzing -/// loop at the point this macro is called. A snapshot will be taken when the -/// macro is called, and the maximum testcase size `*size_ptr` will be saved as -/// `max_testcase_size`. Each iteration of the fuzzing loop, the fuzzer input -/// (the "testcase") will be written to `*testcase_ptr` as if running -/// `memcpy(testcase_ptr, current_testcase, max_testcase_size)`, and the actual -/// size of the current testcase will be written to -/// `*size_ptr` as if running `*size_ptr = current_testcase_size`. -#define __arch_harness_start(start, testcase_ptr, size_ptr) \ - do { \ - __srai_extended(start, testcase_ptr, size_ptr); \ - } while (0) - -/// Signal the fuzzer using the a specific magic value (`stop`) to stop and -/// reset to the beginning of the fuzzing loop with a "normal" stop status, -/// indicating no solution has occurred. -#define __arch_harness_stop(stop) \ - do { \ - __srai(stop); \ - } while (0) - -/// Signal the fuzzer using the default magic value to start the fuzzing loop at -/// the point this macro is called. A snapshot will be taken when the macro is -/// called, and the maximum testcase size `*size_ptr` will be saved as -/// `max_testcase_size`. Each iteration of the fuzzing loop, the fuzzer input -/// (the "testcase") will be written to -/// `*testcase_ptr` as if running `memcpy(testcase_ptr, current_testcase, -/// max_testcase_size)`, and the actual size of the current testcase will be -/// written to -/// `*size_ptr` as if running `*size_ptr = current_testcase_size`. -#define HARNESS_START(testcase_ptr, size_ptr) \ - do { \ - __arch_harness_start(MAGIC_START, testcase_ptr, size_ptr); \ - } while (0) - -/// Signal the fuzzer using the default magic value to stop and reset to the -/// beginning of the fuzzing loop with a "normal" stop status, indicating no -/// solution has occurred. -#define HARNESS_STOP() \ - do { \ - __arch_harness_stop(MAGIC_STOP); \ - } while (0) - -/// Signal the fuzzer using the default magic value to stop and reset to the -/// beginning of the fuzzing loop with a "solution" stop status, indicating some -/// custom error has occurred. -#define HARNESS_ASSERT() \ - do { \ - __arch_harness_stop(MAGIC_ASSERT); \ - } while (0) - -#endif // TSFFS_H \ No newline at end of file diff --git a/examples/tutorials/risc-v-kernel/src/tutorial-kernel-modules/package/kernel-modules/tutorial-mod/tsffs.h b/examples/tutorials/risc-v-kernel/src/tutorial-kernel-modules/package/kernel-modules/tutorial-mod/tsffs.h new file mode 100644 index 00000000..95b604fd --- /dev/null +++ b/examples/tutorials/risc-v-kernel/src/tutorial-kernel-modules/package/kernel-modules/tutorial-mod/tsffs.h @@ -0,0 +1,2876 @@ +// Copyright (C) 2024 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 + +#ifdef __GNUC__ +#ifdef __i386__ +// Copyright (C) 2024 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 + +/// Definitions and macros for compiled-in harnessing of C and C++ target +/// software for the X86 architecture. + +#ifndef TSFFS_H +#define TSFFS_H + +/// Define common with LibFuzzer and other fuzzers to allow code that is +/// fuzzing-specific to be left in the codebase. See +/// https://llvm.org/docs/LibFuzzer.html#id35 for more information +#ifndef FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION +#define FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION (1) +#endif // FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION + +/// __cpuid +/// +/// Invoke the CPUID instruction with a specific value `value` in register +/// `rax`. +/// +/// # Arguments +/// +/// - `value`: The value to load into the `rax` register before invoking the +/// CPUID instruction +#define __cpuid(value) \ + unsigned int _a __attribute__((unused)) = 0; \ + unsigned int _b __attribute__((unused)) = 0; \ + unsigned int _c __attribute__((unused)) = 0; \ + unsigned int _d __attribute__((unused)) = 0; \ + __asm__ __volatile__("cpuid\n\t" \ + : "=a"(_a), "=b"(_b), "=c"(_c), "=d"(_d) \ + : "a"(value)); + +/// __cpuid_extended1 +/// +/// Invoke the CPUID instruction with a specific value `value` in register +/// `rax` and a pseudo-argument in register `rdi`. +/// +/// # Arguments +/// +/// - `value`: The value to load into the `rax` register before invoking the +/// CPUID instruction +/// - `arg0`: The value to load into the `rdi` register before invoking the +/// CPUID instruction +#define __cpuid_extended1(value, arg0) \ + unsigned int _a __attribute__((unused)) = 0; \ + unsigned int _b __attribute__((unused)) = 0; \ + unsigned int _c __attribute__((unused)) = 0; \ + unsigned int _d __attribute__((unused)) = 0; \ + __asm__ __volatile__("cpuid\n\t" \ + : "=a"(_a), "=b"(_b), "=c"(_c), "=d"(_d) \ + : "a"(value), "D"(arg0)); + +/// __cpuid_extended2 +/// +/// Invoke the CPUID instruction with a specific value `value` in register +/// `rax` and a pseudo-arguments in registers `rdi` and `rsi`. +/// +/// # Arguments +/// +/// - `value`: The value to load into the `rax` register before invoking the +/// CPUID instruction +/// - `arg0`: The value to load into the `rdi` register before invoking the +/// CPUID instruction +/// - `arg1`: The value to load into the `rsi` register before invoking the +/// CPUID instruction +#define __cpuid_extended2(value, arg0, arg1) \ + unsigned int _a __attribute__((unused)) = 0; \ + unsigned int _b __attribute__((unused)) = 0; \ + unsigned int _c __attribute__((unused)) = 0; \ + unsigned int _d __attribute__((unused)) = 0; \ + __asm__ __volatile__("cpuid\n\t" \ + : "=a"(_a), "=b"(_b), "=c"(_c), "=d"(_d) \ + : "a"(value), "D"(arg0), "S"(arg1)); + +/// __cpuid_extended3 +/// +/// Invoke the CPUID instruction with a specific value `value` in register +/// `rax` and a pseudo-arguments in registers `rdi`, `rsi`, and `rdx`. +/// +/// # Arguments +/// +/// - `value`: The value to load into the `rax` register before invoking the +/// CPUID instruction +/// - `arg0`: The value to load into the `rdi` register before invoking the +/// CPUID instruction +/// - `arg1`: The value to load into the `rsi` register before invoking the +/// CPUID instruction +/// - `arg2`: The value to load into the `rdx` register before invoking the +/// CPUID instruction +#define __cpuid_extended3(value, arg0, arg1, arg2) \ + unsigned int _a __attribute__((unused)) = 0; \ + unsigned int _b __attribute__((unused)) = 0; \ + unsigned int _c __attribute__((unused)) = 0; \ + unsigned int _d __attribute__((unused)) = 0; \ + __asm__ __volatile__("cpuid\n\t" \ + : "=a"(_a), "=b"(_b), "=c"(_c), "=d"(_d) \ + : "a"(value), "D"(arg0), "S"(arg1), "d"(arg2)); + +/// __cpuid_extended4 +/// +/// Invoke the CPUID instruction with a specific value `value` in register +/// `rax` and a pseudo-arguments in registers `rdi`, `rsi`, `rdx`, and `rcx`. +/// +/// # Arguments +/// +/// - `value`: The value to load into the `rax` register before invoking the +/// CPUID instruction +/// - `arg0`: The value to load into the `rdi` register before invoking the +/// CPUID instruction +/// - `arg1`: The value to load into the `rsi` register before invoking the +/// CPUID instruction +/// - `arg2`: The value to load into the `rdx` register before invoking the +/// CPUID instruction +/// - `arg3`: The value to load into the `rcx` register before invoking the +/// CPUID instruction +#define __cpuid_extended4(value, arg0, arg1, arg2, arg3) \ + unsigned int _a __attribute__((unused)) = 0; \ + unsigned int _b __attribute__((unused)) = 0; \ + unsigned int _c __attribute__((unused)) = 0; \ + unsigned int _d __attribute__((unused)) = 0; \ + __asm__ __volatile__("cpuid\n\t" \ + : "=a"(_a), "=b"(_b), "=c"(_c), "=d"(_d) \ + : "a"(value), "D"(arg0), "S"(arg1), "d"(arg2), \ + "c"(arg3)); + +/// Magic value defined by SIMICS as the "leaf" value of a CPUID instruction +/// that is treated as a magic instruction. +#define MAGIC (0x4711U) + +/// The default index number used for magic instructions. All magic instructions +/// support multiple start and stop indices, which defaults to 0 if not +/// specified. +#define DEFAULT_INDEX (0x0000U) + +/// Pseudo-hypercall number to signal the fuzzer to use the first argument to +/// the magic instruction as the pointer to the testcase buffer and the second +/// argument as a pointer to the size of the testcase buffer. +#define N_START_BUFFER_PTR_SIZE_PTR (0x0001U) + +/// HARNESS_START +/// +/// Signal the fuzzer to start the fuzzing loop at the point this macro is +/// called. The default "index" of 0 will be used. If you need multiple start +/// harnesses compiled into the same binary, you can use the +/// `HARNESS_START_INDEX` macro to specify different indices, then enable them +/// at runtime by configuring the fuzzer. +/// +/// When this macro is called: +/// +/// - A snapshot will be taken and saved +/// - The buffer pointed to by `buffer` will be saved and used as the testcase +/// buffer. Each +/// fuzzing iteration, a new test case will be written to this buffer. +/// - The size of the buffer pointed to by `size_ptr` will be saved as the +/// maximum testcase size. Each fuzzing iteration, the actual size of the +/// current testcase will be written to `*size_ptr`. +/// +/// # Arguments +/// +/// - `buffer`: The pointer to the testcase buffer +/// - `size_ptr`: The pointer to the size of the testcase buffer +/// +/// # Example +/// +/// ``` +/// unsigned char buffer[1024]; +/// size_t size; +/// HARNESS_START(buffer, &size); +/// ``` +#define HARNESS_START(buffer, size_ptr) \ + do { \ + unsigned int value = (N_START_BUFFER_PTR_SIZE_PTR << 0x10U) | MAGIC; \ + __cpuid_extended3(value, DEFAULT_INDEX, buffer, size_ptr); \ + } while (0); + +/// HARNESS_START_INDEX +/// +/// Signal the fuzzer to start the fuzzing loop at the point this macro is +/// called. The index specified by `start_index` will be used. If you need +/// multiple start harnesses compiled into the same binary, you can use this +/// macro to specify different indices, then enable them at runtime by +/// configuring the fuzzer. +/// +/// When this macro is called: +/// +/// - A snapshot will be taken and saved +/// - The buffer pointed to by `buffer` will be saved and used as the testcase +/// buffer. Each +/// fuzzing iteration, a new test case will be written to this buffer. +/// - The size of the buffer pointed to by `size_ptr` will be saved as the +/// maximum testcase size. Each fuzzing iteration, the actual size of the +/// current testcase will be written to `*size_ptr`. +/// +/// # Arguments +/// +/// - `start_index`: The index to use for this start harness +/// - `buffer`: The pointer to the testcase buffer +/// - `size_ptr`: The pointer to the size of the testcase buffer +/// +/// # Example +/// +/// ``` +/// unsigned char buffer[1024]; +/// size_t size; +/// HARNESS_START_INDEX(0x0001U, buffer, &size); +/// ``` +#define HARNESS_START_INDEX(start_index, buffer, size_ptr) \ + do { \ + unsigned int value = (N_START_BUFFER_PTR_SIZE_PTR << 0x10U) | MAGIC; \ + __cpuid_extended3(value, start_index, buffer, size_ptr); \ + } while (0); + +/// Pseudo-hypercall number to signal the fuzzer to use the first argument to +/// the magic instruction as the pointer to the testcase buffer and the second +/// argument as the maximum size of the testcase buffer. +#define N_START_BUFFER_PTR_SIZE_VAL (0x0002U) + +/// HARNESS_START_WITH_MAXIMUM_SIZE +/// +/// Signal the fuzzer to start the fuzzing loop at the point this macro is +/// called. The default "index" of 0 will be used. If you need multiple start +/// harnesses compiled into the same binary, you can use the +/// `HARNESS_START_WITH_MAXIMUM_SIZE_INDEX` macro to specify different indices, +/// then enable them at runtime by configuring the fuzzer. +/// +/// When this macro is called: +/// +/// - A snapshot will be taken and saved +/// - The buffer pointed to by `buffer` will be saved and used as the testcase +/// buffer. Each +/// fuzzing iteration, a new test case will be written to this buffer. +/// - The `max_size` value will be saved as the maximum testcase size. Fuzzing +/// test cases will be truncated to this size before being written to the +/// buffer. +/// +/// # Arguments +/// +/// - `buffer`: The pointer to the testcase buffer +/// - `max_size`: The maximum size of the testcase buffer +/// +/// # Example +/// +/// ``` +/// unsigned char buffer[1024]; +/// HARNESS_START_WITH_MAXIMUM_SIZE(buffer, 1024); +/// ``` +#define HARNESS_START_WITH_MAXIMUM_SIZE(buffer, max_size) \ + do { \ + unsigned int value = (N_START_BUFFER_PTR_SIZE_VAL << 0x10U) | MAGIC; \ + __cpuid_extended3(value, DEFAULT_INDEX, buffer, max_size); \ + } while (0); + +/// HARNESS_START_WITH_MAXIMUM_SIZE_INDEX +/// +/// Signal the fuzzer to start the fuzzing loop at the point this macro is +/// called. The index specified by `start_index` will be used. If you need +/// multiple start harnesses compiled into the same binary, you can use this +/// macro to specify different indices, then enable them at runtime by +/// configuring the fuzzer. +/// +/// When this macro is called: +/// +/// - A snapshot will be taken and saved +/// - The buffer pointed to by `buffer` will be saved and used as the testcase +/// buffer. Each +/// fuzzing iteration, a new test case will be written to this buffer. +/// - The `max_size` value will be saved as the maximum testcase size. Fuzzing +/// test cases will be truncated to this size before being written to the +/// buffer. +/// +/// # Arguments +/// +/// - `start_index`: The index to use for this start harness +/// - `buffer`: The pointer to the testcase buffer +/// - `max_size`: The maximum size of the testcase buffer +/// +/// # Example +/// +/// ``` +/// unsigned char buffer[1024]; +/// HARNESS_START_WITH_MAXIMUM_SIZE_INDEX(0x0001U, buffer, 1024); +/// ``` +#define HARNESS_START_WITH_MAXIMUM_SIZE_INDEX(start_index, buffer, max_size) \ + do { \ + unsigned int value = (N_START_BUFFER_PTR_SIZE_VAL << 0x10U) | MAGIC; \ + __cpuid_extended3(value, start_index, buffer, max_size); \ + } while (0); + +/// Pseudo-hypercall number to signal the fuzzer to use the first argument to +/// the magic instruction as the pointer to the testcase buffer, the second +/// argument as a pointer to the size of the testcase buffer, and the third +/// argument as the maximum size of the testcase buffer. +#define N_START_BUFFER_PTR_SIZE_PTR_VAL (0x0003U) + +/// HARNESS_START_WITH_MAXIMUM_SIZE_AND_PTR +/// +/// Signal the fuzzer to start the fuzzing loop at the point this macro is +/// called. The default "index" of 0 will be used. If you need multiple start +/// harnesses compiled into the same binary, you can use the +/// `HARNESS_START_WITH_MAXIMUM_SIZE_AND_PTR_INDEX` macro to specify different +/// indices, then enable them at runtime by configuring the fuzzer. +/// +/// When this macro is called: +/// +/// - A snapshot will be taken and saved +/// - The buffer pointed to by `buffer` will be saved and used as the testcase +/// buffer. Each +/// fuzzing iteration, a new test case will be written to this buffer. +/// - The address `size_ptr` will be saved. Each fuzzing iteration, the actual +/// size of the current testcase will be written to `*size_ptr`. +/// - The `max_size` value will be saved as the maximum testcase size. Fuzzing +/// test cases will be truncated to this size before being written to the +/// buffer. +/// +/// # Arguments +/// +/// - `buffer`: The pointer to the testcase buffer +/// - `size_ptr`: The pointer to the size of the testcase buffer +/// - `max_size`: The maximum size of the testcase buffer +/// +/// # Example +/// +/// ``` +/// unsigned char buffer[1024]; +/// size_t size; +/// HARNESS_START_WITH_MAXIMUM_SIZE_AND_PTR(buffer, &size, 1024); +/// ``` +#define HARNESS_START_WITH_MAXIMUM_SIZE_AND_PTR(buffer, size_ptr, max_size) \ + do { \ + unsigned int value = (N_START_BUFFER_PTR_SIZE_PTR_VAL << 0x10U) | MAGIC; \ + __cpuid_extended4(value, DEFAULT_INDEX, buffer, size_ptr, max_size); \ + } while (0); + +/// HARNESS_START_WITH_MAXIMUM_SIZE_AND_PTR_INDEX +/// +/// Signal the fuzzer to start the fuzzing loop at the point this macro is +/// called. The index specified by `start_index` will be used. If you need +/// multiple start harnesses compiled into the same binary, you can use this +/// macro to specify different indices, then enable them at runtime by +/// configuring the fuzzer. +/// +/// When this macro is called: +/// +/// - A snapshot will be taken and saved +/// - The buffer pointed to by `buffer` will be saved and used as the testcase +/// buffer. Each +/// fuzzing iteration, a new test case will be written to this buffer. +/// - The address `size_ptr` will be saved. Each fuzzing iteration, the actual +/// size of the current testcase will be written to `*size_ptr`. +/// - The `max_size` value will be saved as the maximum testcase size. Fuzzing +/// test cases will be truncated to this size before being written to the +/// buffer. +/// +/// # Arguments +/// +/// - `start_index`: The index to use for this start harness +/// - `buffer`: The pointer to the testcase buffer +/// - `size_ptr`: The pointer to the size of the testcase buffer +/// - `max_size`: The maximum size of the testcase buffer +/// +/// # Example +/// +/// ``` +/// unsigned char buffer[1024]; +/// size_t size; +/// HARNESS_START_WITH_MAXIMUM_SIZE_AND_PTR_INDEX(0x0001U, buffer, &size, 1024); +/// ``` +#define HARNESS_START_WITH_MAXIMUM_SIZE_AND_PTR_INDEX(start_index, buffer, \ + size_ptr, max_size) \ + do { \ + unsigned int value = (N_START_BUFFER_PTR_SIZE_PTR_VAL << 0x10U) | MAGIC; \ + __cpuid_extended4(value, start_index, buffer, size_ptr, max_size); \ + } while (0); + +/// Pseudo-hypercall number to signal the fuzzer to stop the current fuzzing +/// iteration and reset to the beginning of the fuzzing loop with a "normal" +/// stop status, indicating no solution has occurred. +#define N_STOP_NORMAL (0x0004U) + +/// HARNESS_STOP +/// +/// Signal the fuzzer to stop and reset to the beginning of the fuzzing loop +/// with a "normal" stop status, indicating no solution has occurred. The +/// default index of 0 will be used. If you need to differentiate between +/// multiple stop harnesses compiled into the same binary, you can use the +/// `HARNESS_STOP_INDEX` macro to specify different indices, then enable them at +/// runtime by configuring the fuzzer. +/// +/// # Example +/// +/// ``` +/// HARNESS_STOP(); +/// ``` +#define HARNESS_STOP() \ + do { \ + unsigned int value = (N_STOP_NORMAL << 0x10U) | MAGIC; \ + __cpuid_extended1(value, DEFAULT_INDEX); \ + } while (0); + +/// HARNESS_STOP_INDEX +/// +/// Signal the fuzzer to stop and reset to the beginning of the fuzzing loop +/// with a "normal" stop status, indicating no solution has occurred. The index +/// specified by `stop_index` will be used. If you need to differentiate between +/// multiple stop harnesses compiled into the same binary, you can use this +/// macro to specify different indices, then enable them at runtime by +/// configuring the fuzzer. +/// +/// # Arguments +/// +/// - `stop_index`: The index to use for this stop harness +/// +/// # Example +/// +/// ``` +/// HARNESS_STOP_INDEX(0x0001U); +/// ``` +#define HARNESS_STOP_INDEX(stop_index) \ + do { \ + unsigned int value = (N_STOP_NORMAL << 0x10U) | MAGIC; \ + __cpuid_extended1(value, stop_index); \ + } while (0); + +/// Pseudo-hypercall number to signal the fuzzer that a custom assertion has +/// occurred, and the fuzzer should stop the current fuzzing iteration and reset +/// to the beginning of the fuzzing loop with a "solution" stop status. +#define N_STOP_ASSERT (0x0005U) + +/// HARNESS_ASSERT +/// +/// Signal the fuzzer that a custom assertion has occurred, and the fuzzer +/// should stop the current fuzzing iteration and reset to the beginning of the +/// fuzzing loop with a "solution" stop status. The default index of 0 will be +/// used. If you need to differentiate between multiple assertion harnesses +/// compiled into the same binary, you can use the `HARNESS_ASSERT_INDEX` macro +/// to specify different indices, then enable them at runtime by configuring the +/// fuzzer. +/// +/// # Example +/// +/// ``` +/// HARNESS_ASSERT(); +/// ``` +#define HARNESS_ASSERT() \ + do { \ + unsigned int value = (N_STOP_ASSERT << 0x10U) | MAGIC; \ + __cpuid_extended1(value, DEFAULT_INDEX); \ + } while (0); + +/// HARNESS_ASSERT_INDEX +/// +/// Signal the fuzzer that a custom assertion has occurred, and the fuzzer +/// should stop the current fuzzing iteration and reset to the beginning of the +/// fuzzing loop with a "solution" stop status. The index specified by +/// `assert_index` will be used. If you need to differentiate between multiple +/// assertion harnesses compiled into the same binary, you can use this macro to +/// specify different indices, then enable them at runtime by configuring the +/// fuzzer. +/// +/// # Arguments +/// +/// - `assert_index`: The index to use for this assertion harness +/// +/// # Example +/// +/// ``` +/// HARNESS_ASSERT_INDEX(0x0001U); +/// ``` +#define HARNESS_ASSERT_INDEX(assert_index) \ + do { \ + unsigned int value = (N_STOP_ASSERT << 0x10U) | MAGIC; \ + __cpuid_extended1(value, assert_index); \ + } while (0); + +#endif // TSFFS_H +#elif __x86_64__ +// Copyright (C) 2024 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 + +/// Definitions and macros for compiled-in harnessing of C and C++ target +/// software for the x86_64 architecture. + +#ifndef TSFFS_H +#define TSFFS_H + +/// Define common with LibFuzzer and other fuzzers to allow code that is +/// fuzzing-specific to be left in the codebase. See +/// https://llvm.org/docs/LibFuzzer.html#id35 for more information +#ifndef FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION +#define FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION (1) +#endif // FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION + +/// __cpuid +/// +/// Invoke the CPUID instruction with a specific value `value` in register +/// `rax`. +/// +/// # Arguments +/// +/// - `value`: The value to load into the `rax` register before invoking the +/// CPUID instruction +#define __cpuid(value) \ + unsigned int _a __attribute__((unused)) = 0; \ + unsigned int _b __attribute__((unused)) = 0; \ + unsigned int _c __attribute__((unused)) = 0; \ + unsigned int _d __attribute__((unused)) = 0; \ + __asm__ __volatile__("cpuid\n\t" \ + : "=a"(_a), "=b"(_b), "=c"(_c), "=d"(_d) \ + : "a"(value)); + +/// __cpuid_extended1 +/// +/// Invoke the CPUID instruction with a specific value `value` in register +/// `rax` and a pseudo-argument in register `rdi`. +/// +/// # Arguments +/// +/// - `value`: The value to load into the `rax` register before invoking the +/// CPUID instruction +/// - `arg0`: The value to load into the `rdi` register before invoking the +/// CPUID instruction +#define __cpuid_extended1(value, arg0) \ + unsigned int _a __attribute__((unused)) = 0; \ + unsigned int _b __attribute__((unused)) = 0; \ + unsigned int _c __attribute__((unused)) = 0; \ + unsigned int _d __attribute__((unused)) = 0; \ + __asm__ __volatile__("cpuid\n\t" \ + : "=a"(_a), "=b"(_b), "=c"(_c), "=d"(_d) \ + : "a"(value), "D"(arg0)); + +/// __cpuid_extended2 +/// +/// Invoke the CPUID instruction with a specific value `value` in register +/// `rax` and a pseudo-arguments in registers `rdi` and `rsi`. +/// +/// # Arguments +/// +/// - `value`: The value to load into the `rax` register before invoking the +/// CPUID instruction +/// - `arg0`: The value to load into the `rdi` register before invoking the +/// CPUID instruction +/// - `arg1`: The value to load into the `rsi` register before invoking the +/// CPUID instruction +#define __cpuid_extended2(value, arg0, arg1) \ + unsigned int _a __attribute__((unused)) = 0; \ + unsigned int _b __attribute__((unused)) = 0; \ + unsigned int _c __attribute__((unused)) = 0; \ + unsigned int _d __attribute__((unused)) = 0; \ + __asm__ __volatile__("cpuid\n\t" \ + : "=a"(_a), "=b"(_b), "=c"(_c), "=d"(_d) \ + : "a"(value), "D"(arg0), "S"(arg1)); + +/// __cpuid_extended3 +/// +/// Invoke the CPUID instruction with a specific value `value` in register +/// `rax` and a pseudo-arguments in registers `rdi`, `rsi`, and `rdx`. +/// +/// # Arguments +/// +/// - `value`: The value to load into the `rax` register before invoking the +/// CPUID instruction +/// - `arg0`: The value to load into the `rdi` register before invoking the +/// CPUID instruction +/// - `arg1`: The value to load into the `rsi` register before invoking the +/// CPUID instruction +/// - `arg2`: The value to load into the `rdx` register before invoking the +/// CPUID instruction +#define __cpuid_extended3(value, arg0, arg1, arg2) \ + unsigned int _a __attribute__((unused)) = 0; \ + unsigned int _b __attribute__((unused)) = 0; \ + unsigned int _c __attribute__((unused)) = 0; \ + unsigned int _d __attribute__((unused)) = 0; \ + __asm__ __volatile__("cpuid\n\t" \ + : "=a"(_a), "=b"(_b), "=c"(_c), "=d"(_d) \ + : "a"(value), "D"(arg0), "S"(arg1), "d"(arg2)); + +/// __cpuid_extended4 +/// +/// Invoke the CPUID instruction with a specific value `value` in register +/// `rax` and a pseudo-arguments in registers `rdi`, `rsi`, `rdx`, and `rcx`. +/// +/// # Arguments +/// +/// - `value`: The value to load into the `rax` register before invoking the +/// CPUID instruction +/// - `arg0`: The value to load into the `rdi` register before invoking the +/// CPUID instruction +/// - `arg1`: The value to load into the `rsi` register before invoking the +/// CPUID instruction +/// - `arg2`: The value to load into the `rdx` register before invoking the +/// CPUID instruction +/// - `arg3`: The value to load into the `rcx` register before invoking the +/// CPUID instruction +#define __cpuid_extended4(value, arg0, arg1, arg2, arg3) \ + unsigned int _a __attribute__((unused)) = 0; \ + unsigned int _b __attribute__((unused)) = 0; \ + unsigned int _c __attribute__((unused)) = 0; \ + unsigned int _d __attribute__((unused)) = 0; \ + __asm__ __volatile__("cpuid\n\t" \ + : "=a"(_a), "=b"(_b), "=c"(_c), "=d"(_d) \ + : "a"(value), "D"(arg0), "S"(arg1), "d"(arg2), \ + "c"(arg3)); + +/// Magic value defined by SIMICS as the "leaf" value of a CPUID instruction +/// that is treated as a magic instruction. +#define MAGIC (0x4711U) + +/// The default index number used for magic instructions. All magic instructions +/// support multiple start and stop indices, which defaults to 0 if not +/// specified. +#define DEFAULT_INDEX (0x0000U) + +/// Pseudo-hypercall number to signal the fuzzer to use the first argument to +/// the magic instruction as the pointer to the testcase buffer and the second +/// argument as a pointer to the size of the testcase buffer. +#define N_START_BUFFER_PTR_SIZE_PTR (0x0001U) + +/// HARNESS_START +/// +/// Signal the fuzzer to start the fuzzing loop at the point this macro is +/// called. The default "index" of 0 will be used. If you need multiple start +/// harnesses compiled into the same binary, you can use the +/// `HARNESS_START_INDEX` macro to specify different indices, then enable them +/// at runtime by configuring the fuzzer. +/// +/// When this macro is called: +/// +/// - A snapshot will be taken and saved +/// - The buffer pointed to by `buffer` will be saved and used as the testcase +/// buffer. Each +/// fuzzing iteration, a new test case will be written to this buffer. +/// - The size of the buffer pointed to by `size_ptr` will be saved as the +/// maximum testcase size. Each fuzzing iteration, the actual size of the +/// current testcase will be written to `*size_ptr`. +/// +/// # Arguments +/// +/// - `buffer`: The pointer to the testcase buffer +/// - `size_ptr`: The pointer to the size of the testcase buffer +/// +/// # Example +/// +/// ``` +/// unsigned char buffer[1024]; +/// size_t size; +/// HARNESS_START(buffer, &size); +/// ``` +#define HARNESS_START(buffer, size_ptr) \ + do { \ + unsigned int value = (N_START_BUFFER_PTR_SIZE_PTR << 0x10U) | MAGIC; \ + __cpuid_extended3(value, DEFAULT_INDEX, buffer, size_ptr); \ + } while (0); + +/// HARNESS_START_INDEX +/// +/// Signal the fuzzer to start the fuzzing loop at the point this macro is +/// called. The index specified by `start_index` will be used. If you need +/// multiple start harnesses compiled into the same binary, you can use this +/// macro to specify different indices, then enable them at runtime by +/// configuring the fuzzer. +/// +/// When this macro is called: +/// +/// - A snapshot will be taken and saved +/// - The buffer pointed to by `buffer` will be saved and used as the testcase +/// buffer. Each +/// fuzzing iteration, a new test case will be written to this buffer. +/// - The size of the buffer pointed to by `size_ptr` will be saved as the +/// maximum testcase size. Each fuzzing iteration, the actual size of the +/// current testcase will be written to `*size_ptr`. +/// +/// # Arguments +/// +/// - `start_index`: The index to use for this start harness +/// - `buffer`: The pointer to the testcase buffer +/// - `size_ptr`: The pointer to the size of the testcase buffer +/// +/// # Example +/// +/// ``` +/// unsigned char buffer[1024]; +/// size_t size; +/// HARNESS_START_INDEX(0x0001U, buffer, &size); +/// ``` +#define HARNESS_START_INDEX(start_index, buffer, size_ptr) \ + do { \ + unsigned int value = (N_START_BUFFER_PTR_SIZE_PTR << 0x10U) | MAGIC; \ + __cpuid_extended3(value, start_index, buffer, size_ptr); \ + } while (0); + +/// Pseudo-hypercall number to signal the fuzzer to use the first argument to +/// the magic instruction as the pointer to the testcase buffer and the second +/// argument as the maximum size of the testcase buffer. +#define N_START_BUFFER_PTR_SIZE_VAL (0x0002U) + +/// HARNESS_START_WITH_MAXIMUM_SIZE +/// +/// Signal the fuzzer to start the fuzzing loop at the point this macro is +/// called. The default "index" of 0 will be used. If you need multiple start +/// harnesses compiled into the same binary, you can use the +/// `HARNESS_START_WITH_MAXIMUM_SIZE_INDEX` macro to specify different indices, +/// then enable them at runtime by configuring the fuzzer. +/// +/// When this macro is called: +/// +/// - A snapshot will be taken and saved +/// - The buffer pointed to by `buffer` will be saved and used as the testcase +/// buffer. Each +/// fuzzing iteration, a new test case will be written to this buffer. +/// - The `max_size` value will be saved as the maximum testcase size. Fuzzing +/// test cases will be truncated to this size before being written to the +/// buffer. +/// +/// # Arguments +/// +/// - `buffer`: The pointer to the testcase buffer +/// - `max_size`: The maximum size of the testcase buffer +/// +/// # Example +/// +/// ``` +/// unsigned char buffer[1024]; +/// HARNESS_START_WITH_MAXIMUM_SIZE(buffer, 1024); +/// ``` +#define HARNESS_START_WITH_MAXIMUM_SIZE(buffer, max_size) \ + do { \ + unsigned int value = (N_START_BUFFER_PTR_SIZE_VAL << 0x10U) | MAGIC; \ + __cpuid_extended3(value, DEFAULT_INDEX, buffer, max_size); \ + } while (0); + +/// HARNESS_START_WITH_MAXIMUM_SIZE_INDEX +/// +/// Signal the fuzzer to start the fuzzing loop at the point this macro is +/// called. The index specified by `start_index` will be used. If you need +/// multiple start harnesses compiled into the same binary, you can use this +/// macro to specify different indices, then enable them at runtime by +/// configuring the fuzzer. +/// +/// When this macro is called: +/// +/// - A snapshot will be taken and saved +/// - The buffer pointed to by `buffer` will be saved and used as the testcase +/// buffer. Each +/// fuzzing iteration, a new test case will be written to this buffer. +/// - The `max_size` value will be saved as the maximum testcase size. Fuzzing +/// test cases will be truncated to this size before being written to the +/// buffer. +/// +/// # Arguments +/// +/// - `start_index`: The index to use for this start harness +/// - `buffer`: The pointer to the testcase buffer +/// - `max_size`: The maximum size of the testcase buffer +/// +/// # Example +/// +/// ``` +/// unsigned char buffer[1024]; +/// HARNESS_START_WITH_MAXIMUM_SIZE_INDEX(0x0001U, buffer, 1024); +/// ``` +#define HARNESS_START_WITH_MAXIMUM_SIZE_INDEX(start_index, buffer, max_size) \ + do { \ + unsigned int value = (N_START_BUFFER_PTR_SIZE_VAL << 0x10U) | MAGIC; \ + __cpuid_extended3(value, start_index, buffer, max_size); \ + } while (0); + +/// Pseudo-hypercall number to signal the fuzzer to use the first argument to +/// the magic instruction as the pointer to the testcase buffer, the second +/// argument as a pointer to the size of the testcase buffer, and the third +/// argument as the maximum size of the testcase buffer. +#define N_START_BUFFER_PTR_SIZE_PTR_VAL (0x0003U) + +/// HARNESS_START_WITH_MAXIMUM_SIZE_AND_PTR +/// +/// Signal the fuzzer to start the fuzzing loop at the point this macro is +/// called. The default "index" of 0 will be used. If you need multiple start +/// harnesses compiled into the same binary, you can use the +/// `HARNESS_START_WITH_MAXIMUM_SIZE_AND_PTR_INDEX` macro to specify different +/// indices, then enable them at runtime by configuring the fuzzer. +/// +/// When this macro is called: +/// +/// - A snapshot will be taken and saved +/// - The buffer pointed to by `buffer` will be saved and used as the testcase +/// buffer. Each +/// fuzzing iteration, a new test case will be written to this buffer. +/// - The address `size_ptr` will be saved. Each fuzzing iteration, the actual +/// size of the current testcase will be written to `*size_ptr`. +/// - The `max_size` value will be saved as the maximum testcase size. Fuzzing +/// test cases will be truncated to this size before being written to the +/// buffer. +/// +/// # Arguments +/// +/// - `buffer`: The pointer to the testcase buffer +/// - `size_ptr`: The pointer to the size of the testcase buffer +/// - `max_size`: The maximum size of the testcase buffer +/// +/// # Example +/// +/// ``` +/// unsigned char buffer[1024]; +/// size_t size; +/// HARNESS_START_WITH_MAXIMUM_SIZE_AND_PTR(buffer, &size, 1024); +/// ``` +#define HARNESS_START_WITH_MAXIMUM_SIZE_AND_PTR(buffer, size_ptr, max_size) \ + do { \ + unsigned int value = (N_START_BUFFER_PTR_SIZE_PTR_VAL << 0x10U) | MAGIC; \ + __cpuid_extended4(value, DEFAULT_INDEX, buffer, size_ptr, max_size); \ + } while (0); + +/// HARNESS_START_WITH_MAXIMUM_SIZE_AND_PTR_INDEX +/// +/// Signal the fuzzer to start the fuzzing loop at the point this macro is +/// called. The index specified by `start_index` will be used. If you need +/// multiple start harnesses compiled into the same binary, you can use this +/// macro to specify different indices, then enable them at runtime by +/// configuring the fuzzer. +/// +/// When this macro is called: +/// +/// - A snapshot will be taken and saved +/// - The buffer pointed to by `buffer` will be saved and used as the testcase +/// buffer. Each +/// fuzzing iteration, a new test case will be written to this buffer. +/// - The address `size_ptr` will be saved. Each fuzzing iteration, the actual +/// size of the current testcase will be written to `*size_ptr`. +/// - The `max_size` value will be saved as the maximum testcase size. Fuzzing +/// test cases will be truncated to this size before being written to the +/// buffer. +/// +/// # Arguments +/// +/// - `start_index`: The index to use for this start harness +/// - `buffer`: The pointer to the testcase buffer +/// - `size_ptr`: The pointer to the size of the testcase buffer +/// - `max_size`: The maximum size of the testcase buffer +/// +/// # Example +/// +/// ``` +/// unsigned char buffer[1024]; +/// size_t size; +/// HARNESS_START_WITH_MAXIMUM_SIZE_AND_PTR_INDEX(0x0001U, buffer, &size, 1024); +/// ``` +#define HARNESS_START_WITH_MAXIMUM_SIZE_AND_PTR_INDEX(start_index, buffer, \ + size_ptr, max_size) \ + do { \ + unsigned int value = (N_START_BUFFER_PTR_SIZE_PTR_VAL << 0x10U) | MAGIC; \ + __cpuid_extended4(value, start_index, buffer, size_ptr, max_size); \ + } while (0); + +/// Pseudo-hypercall number to signal the fuzzer to stop the current fuzzing +/// iteration and reset to the beginning of the fuzzing loop with a "normal" +/// stop status, indicating no solution has occurred. +#define N_STOP_NORMAL (0x0004U) + +/// HARNESS_STOP +/// +/// Signal the fuzzer to stop and reset to the beginning of the fuzzing loop +/// with a "normal" stop status, indicating no solution has occurred. The +/// default index of 0 will be used. If you need to differentiate between +/// multiple stop harnesses compiled into the same binary, you can use the +/// `HARNESS_STOP_INDEX` macro to specify different indices, then enable them at +/// runtime by configuring the fuzzer. +/// +/// # Example +/// +/// ``` +/// HARNESS_STOP(); +/// ``` +#define HARNESS_STOP() \ + do { \ + unsigned int value = (N_STOP_NORMAL << 0x10U) | MAGIC; \ + __cpuid_extended1(value, DEFAULT_INDEX); \ + } while (0); + +/// HARNESS_STOP_INDEX +/// +/// Signal the fuzzer to stop and reset to the beginning of the fuzzing loop +/// with a "normal" stop status, indicating no solution has occurred. The index +/// specified by `stop_index` will be used. If you need to differentiate between +/// multiple stop harnesses compiled into the same binary, you can use this +/// macro to specify different indices, then enable them at runtime by +/// configuring the fuzzer. +/// +/// # Arguments +/// +/// - `stop_index`: The index to use for this stop harness +/// +/// # Example +/// +/// ``` +/// HARNESS_STOP_INDEX(0x0001U); +/// ``` +#define HARNESS_STOP_INDEX(stop_index) \ + do { \ + unsigned int value = (N_STOP_NORMAL << 0x10U) | MAGIC; \ + __cpuid_extended1(value, stop_index); \ + } while (0); + +/// Pseudo-hypercall number to signal the fuzzer that a custom assertion has +/// occurred, and the fuzzer should stop the current fuzzing iteration and reset +/// to the beginning of the fuzzing loop with a "solution" stop status. +#define N_STOP_ASSERT (0x0005U) + +/// HARNESS_ASSERT +/// +/// Signal the fuzzer that a custom assertion has occurred, and the fuzzer +/// should stop the current fuzzing iteration and reset to the beginning of the +/// fuzzing loop with a "solution" stop status. The default index of 0 will be +/// used. If you need to differentiate between multiple assertion harnesses +/// compiled into the same binary, you can use the `HARNESS_ASSERT_INDEX` macro +/// to specify different indices, then enable them at runtime by configuring the +/// fuzzer. +/// +/// # Example +/// +/// ``` +/// HARNESS_ASSERT(); +/// ``` +#define HARNESS_ASSERT() \ + do { \ + unsigned int value = (N_STOP_ASSERT << 0x10U) | MAGIC; \ + __cpuid_extended1(value, DEFAULT_INDEX); \ + } while (0); + +/// HARNESS_ASSERT_INDEX +/// +/// Signal the fuzzer that a custom assertion has occurred, and the fuzzer +/// should stop the current fuzzing iteration and reset to the beginning of the +/// fuzzing loop with a "solution" stop status. The index specified by +/// `assert_index` will be used. If you need to differentiate between multiple +/// assertion harnesses compiled into the same binary, you can use this macro to +/// specify different indices, then enable them at runtime by configuring the +/// fuzzer. +/// +/// # Arguments +/// +/// - `assert_index`: The index to use for this assertion harness +/// +/// # Example +/// +/// ``` +/// HARNESS_ASSERT_INDEX(0x0001U); +/// ``` +#define HARNESS_ASSERT_INDEX(assert_index) \ + do { \ + unsigned int value = (N_STOP_ASSERT << 0x10U) | MAGIC; \ + __cpuid_extended1(value, assert_index); \ + } while (0); + +#endif // TSFFS_H +#elif __riscv && !__LP64__ +// Copyright (C) 2024 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 + +/// Definitions and macros for compiled-in harnessing of C and C++ target +/// software for the RISC-V (32-bit) architecture + +#ifndef TSFFS_H +#define TSFFS_H + +/// Define common with LibFuzzer and other fuzzers to allow code that is +/// fuzzing-specific to be left in the codebase. See +/// https://llvm.org/docs/LibFuzzer.html#id35 for more information +#ifndef FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION +#define FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION (1) +#endif // FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION + +/// __srai +/// +/// Invoke the magic instruction defined by SIMICS for the RISC-V architecture +/// with a specific value of `n` +/// +/// # Arguments +/// +/// * `value` - The value of `n` to use in the magic instruction +#define __srai(value) \ + __asm__ __volatile__("srai zero, zero, %0" : : "I"(value) :) + +/// __srai_extended1 +/// +/// Invoke the magic instruction defined by SIMICS for the RISC-V architecture +/// with a specific value of `n` and a pseudo-argument in register `a0`. +/// +/// # Arguments +/// +/// * `value` - The value of `n` to use in the magic instruction +/// * `arg0` - The value to place in register `a0` +#define __srai_extended1(value, arg0) \ + __asm__ __volatile__("mv a0, %0; srai zero, zero, %1" \ + : \ + : "r"(arg0), "I"(value) \ + : "a0"); + +/// __srai_extended2 +/// +/// Invoke the magic instruction defined by SIMICS for the RISC-V architecture +/// with a specific value of `n` and pseudo-arguments in registers `a0` and +/// `a1`. +/// +/// # Arguments +/// +/// * `value` - The value of `n` to use in the magic instruction +/// * `arg0` - The value to place in register `a0` +/// * `arg1` - The value to place in register `a1` +#define __srai_extended2(value, arg0, arg1) \ + __asm__ __volatile__("mv a0, %0; mv a1, %1; srai zero, zero, %2" \ + : \ + : "r"(arg0), "r"(arg1), "I"(value) \ + : "a0", "a1"); + +/// __srai_extended3 +/// +/// Invoke the magic instruction defined by SIMICS for the RISC-V architecture +/// with a specific value of `n` and pseudo-arguments in registers `a0`, `a1`, +/// and `a2`. +/// +/// # Arguments +/// +/// * `value` - The value of `n` to use in the magic instruction +/// * `arg0` - The value to place in register `a0` +/// * `arg1` - The value to place in register `a1` +/// * `arg2` - The value to place in register `a2` +#define __srai_extended3(value, arg0, arg1, arg2) \ + __asm__ __volatile__("mv a0, %0; mv a1, %1; mv a2, %2; srai zero, zero, %3" \ + : \ + : "r"(arg0), "r"(arg1), "r"(arg2), "I"(value) \ + : "a0", "a1", "a2"); + +/// __srai_extended4 +/// +/// Invoke the magic instruction defined by SIMICS for the RISC-V architecture +/// with a specific value of `n` and pseudo-arguments in registers `a0`, `a1`, +/// `a2`, and `a3`. +/// +/// # Arguments +/// +/// * `value` - The value of `n` to use in the magic instruction +/// * `arg0` - The value to place in register `a0` +/// * `arg1` - The value to place in register `a1` +/// * `arg2` - The value to place in register `a2` +/// * `arg3` - The value to place in register `a3` +#define __srai_extended4(value, arg0, arg1, arg2, arg3) \ + __asm__ __volatile__( \ + "mv a0, %0; mv a1, %1; mv a2, %2; mv a3, %3; srai zero, zero, %4" \ + : \ + : "r"(arg0), "r"(arg1), "r"(arg2), "r"(arg3), "I"(value) \ + : "a0", "a1", "a2", "a3"); + +/// Magic value defined by SIMICS as the "leaf" value of a CPUID instruction +/// that is treated as a magic instruction. +#define MAGIC (0x4711U) + +/// The default index number used for magic instructions. All magic instructions +/// support multiple start and stop indices, which defaults to 0 if not +/// specified. +#define DEFAULT_INDEX (0x0000U) + +/// Pseudo-hypercall number to signal the fuzzer to use the first argument to +/// the magic instruction as the pointer to the testcase buffer and the second +/// argument as a pointer to the size of the testcase buffer. +#define N_START_BUFFER_PTR_SIZE_PTR (0x0001U) + +/// HARNESS_START +/// +/// Signal the fuzzer to start the fuzzing loop at the point this macro is +/// called. The default "index" of 0 will be used. If you need multiple start +/// harnesses compiled into the same binary, you can use the +/// `HARNESS_START_INDEX` macro to specify different indices, then enable them +/// at runtime by configuring the fuzzer. +/// +/// When this macro is called: +/// +/// - A snapshot will be taken and saved +/// - The buffer pointed to by `buffer` will be saved and used as the testcase +/// buffer. Each +/// fuzzing iteration, a new test case will be written to this buffer. +/// - The size of the buffer pointed to by `size_ptr` will be saved as the +/// maximum testcase size. Each fuzzing iteration, the actual size of the +/// current testcase will be written to `*size_ptr`. +/// +/// # Arguments +/// +/// - `buffer`: The pointer to the testcase buffer +/// - `size_ptr`: The pointer to the size of the testcase buffer +/// +/// # Example +/// +/// ``` +/// unsigned char buffer[1024]; +/// size_t size; +/// HARNESS_START(buffer, &size); +/// ``` +#define HARNESS_START(buffer, size_ptr) \ + do { \ + __srai_extended3(N_START_BUFFER_PTR_SIZE_PTR, DEFAULT_INDEX, buffer, \ + size_ptr); \ + } while (0); + +/// HARNESS_START_INDEX +/// +/// Signal the fuzzer to start the fuzzing loop at the point this macro is +/// called. The index specified by `start_index` will be used. If you need +/// multiple start harnesses compiled into the same binary, you can use this +/// macro to specify different indices, then enable them at runtime by +/// configuring the fuzzer. +/// +/// When this macro is called: +/// +/// - A snapshot will be taken and saved +/// - The buffer pointed to by `buffer` will be saved and used as the testcase +/// buffer. Each +/// fuzzing iteration, a new test case will be written to this buffer. +/// - The size of the buffer pointed to by `size_ptr` will be saved as the +/// maximum testcase size. Each fuzzing iteration, the actual size of the +/// current testcase will be written to `*size_ptr`. +/// +/// # Arguments +/// +/// - `start_index`: The index to use for this start harness +/// - `buffer`: The pointer to the testcase buffer +/// - `size_ptr`: The pointer to the size of the testcase buffer +/// +/// # Example +/// +/// ``` +/// unsigned char buffer[1024]; +/// size_t size; +/// HARNESS_START_INDEX(0x0001U, buffer, &size); +/// ``` +#define HARNESS_START_INDEX(start_index, buffer, size_ptr) \ + do { \ + __srai_extended3(N_START_BUFFER_PTR_SIZE_PTR, start_index, buffer, \ + size_ptr); \ + } while (0); + +/// Pseudo-hypercall number to signal the fuzzer to use the first argument to +/// the magic instruction as the pointer to the testcase buffer and the second +/// argument as the maximum size of the testcase buffer. +#define N_START_BUFFER_PTR_SIZE_VAL (0x0002U) + +/// HARNESS_START_WITH_MAXIMUM_SIZE +/// +/// Signal the fuzzer to start the fuzzing loop at the point this macro is +/// called. The default "index" of 0 will be used. If you need multiple start +/// harnesses compiled into the same binary, you can use the +/// `HARNESS_START_WITH_MAXIMUM_SIZE_INDEX` macro to specify different indices, +/// then enable them at runtime by configuring the fuzzer. +/// +/// When this macro is called: +/// +/// - A snapshot will be taken and saved +/// - The buffer pointed to by `buffer` will be saved and used as the testcase +/// buffer. Each +/// fuzzing iteration, a new test case will be written to this buffer. +/// - The `max_size` value will be saved as the maximum testcase size. Fuzzing +/// test cases will be truncated to this size before being written to the +/// buffer. +/// +/// # Arguments +/// +/// - `buffer`: The pointer to the testcase buffer +/// - `max_size`: The maximum size of the testcase buffer +/// +/// # Example +/// +/// ``` +/// unsigned char buffer[1024]; +/// HARNESS_START_WITH_MAXIMUM_SIZE(buffer, 1024); +/// ``` +#define HARNESS_START_WITH_MAXIMUM_SIZE(buffer, max_size) \ + do { \ + __srai_extended3(N_START_BUFFER_PTR_SIZE_VAL, DEFAULT_INDEX, buffer, \ + max_size); \ + } while (0); + +/// HARNESS_START_WITH_MAXIMUM_SIZE_INDEX +/// +/// Signal the fuzzer to start the fuzzing loop at the point this macro is +/// called. The index specified by `start_index` will be used. If you need +/// multiple start harnesses compiled into the same binary, you can use this +/// macro to specify different indices, then enable them at runtime by +/// configuring the fuzzer. +/// +/// When this macro is called: +/// +/// - A snapshot will be taken and saved +/// - The buffer pointed to by `buffer` will be saved and used as the testcase +/// buffer. Each +/// fuzzing iteration, a new test case will be written to this buffer. +/// - The `max_size` value will be saved as the maximum testcase size. Fuzzing +/// test cases will be truncated to this size before being written to the +/// buffer. +/// +/// # Arguments +/// +/// - `start_index`: The index to use for this start harness +/// - `buffer`: The pointer to the testcase buffer +/// - `max_size`: The maximum size of the testcase buffer +/// +/// # Example +/// +/// ``` +/// unsigned char buffer[1024]; +/// HARNESS_START_WITH_MAXIMUM_SIZE_INDEX(0x0001U, buffer, 1024); +/// ``` +#define HARNESS_START_WITH_MAXIMUM_SIZE_INDEX(start_index, buffer, max_size) \ + do { \ + __srai_extended3(N_START_BUFFER_PTR_SIZE_VAL, start_index, buffer, \ + max_size); \ + } while (0); + +/// Pseudo-hypercall number to signal the fuzzer to use the first argument to +/// the magic instruction as the pointer to the testcase buffer, the second +/// argument as a pointer to the size of the testcase buffer, and the third +/// argument as the maximum size of the testcase buffer. +#define N_START_BUFFER_PTR_SIZE_PTR_VAL (0x0003U) + +/// HARNESS_START_WITH_MAXIMUM_SIZE_AND_PTR +/// +/// Signal the fuzzer to start the fuzzing loop at the point this macro is +/// called. The default "index" of 0 will be used. If you need multiple start +/// harnesses compiled into the same binary, you can use the +/// `HARNESS_START_WITH_MAXIMUM_SIZE_AND_PTR_INDEX` macro to specify different +/// indices, then enable them at runtime by configuring the fuzzer. +/// +/// When this macro is called: +/// +/// - A snapshot will be taken and saved +/// - The buffer pointed to by `buffer` will be saved and used as the testcase +/// buffer. Each +/// fuzzing iteration, a new test case will be written to this buffer. +/// - The address `size_ptr` will be saved. Each fuzzing iteration, the actual +/// size of the current testcase will be written to `*size_ptr`. +/// - The `max_size` value will be saved as the maximum testcase size. Fuzzing +/// test cases will be truncated to this size before being written to the +/// buffer. +/// +/// # Arguments +/// +/// - `buffer`: The pointer to the testcase buffer +/// - `size_ptr`: The pointer to the size of the testcase buffer +/// - `max_size`: The maximum size of the testcase buffer +/// +/// # Example +/// +/// ``` +/// unsigned char buffer[1024]; +/// size_t size; +/// HARNESS_START_WITH_MAXIMUM_SIZE_AND_PTR(buffer, &size, 1024); +/// ``` +#define HARNESS_START_WITH_MAXIMUM_SIZE_AND_PTR(buffer, size_ptr, max_size) \ + do { \ + __srai_extended4(N_START_BUFFER_PTR_SIZE_PTR_VAL, DEFAULT_INDEX, buffer, \ + size_ptr, max_size); \ + } while (0); + +/// HARNESS_START_WITH_MAXIMUM_SIZE_AND_PTR_INDEX +/// +/// Signal the fuzzer to start the fuzzing loop at the point this macro is +/// called. The index specified by `start_index` will be used. If you need +/// multiple start harnesses compiled into the same binary, you can use this +/// macro to specify different indices, then enable them at runtime by +/// configuring the fuzzer. +/// +/// When this macro is called: +/// +/// - A snapshot will be taken and saved +/// - The buffer pointed to by `buffer` will be saved and used as the testcase +/// buffer. Each +/// fuzzing iteration, a new test case will be written to this buffer. +/// - The address `size_ptr` will be saved. Each fuzzing iteration, the actual +/// size of the current testcase will be written to `*size_ptr`. +/// - The `max_size` value will be saved as the maximum testcase size. Fuzzing +/// test cases will be truncated to this size before being written to the +/// buffer. +/// +/// # Arguments +/// +/// - `start_index`: The index to use for this start harness +/// - `buffer`: The pointer to the testcase buffer +/// - `size_ptr`: The pointer to the size of the testcase buffer +/// - `max_size`: The maximum size of the testcase buffer +/// +/// # Example +/// +/// ``` +/// unsigned char buffer[1024]; +/// size_t size; +/// HARNESS_START_WITH_MAXIMUM_SIZE_AND_PTR_INDEX(0x0001U, buffer, &size, 1024); +/// ``` +#define HARNESS_START_WITH_MAXIMUM_SIZE_AND_PTR_INDEX(start_index, buffer, \ + size_ptr, max_size) \ + do { \ + __srai_extended4(N_START_BUFFER_PTR_SIZE_PTR_VAL, start_index, buffer, \ + size_ptr, max_size); \ + } while (0); + +/// Pseudo-hypercall number to signal the fuzzer to stop the current fuzzing +/// iteration and reset to the beginning of the fuzzing loop with a "normal" +/// stop status, indicating no solution has occurred. +#define N_STOP_NORMAL (0x0004U) + +/// HARNESS_STOP +/// +/// Signal the fuzzer to stop and reset to the beginning of the fuzzing loop +/// with a "normal" stop status, indicating no solution has occurred. The +/// default index of 0 will be used. If you need to differentiate between +/// multiple stop harnesses compiled into the same binary, you can use the +/// `HARNESS_STOP_INDEX` macro to specify different indices, then enable them at +/// runtime by configuring the fuzzer. +/// +/// # Example +/// +/// ``` +/// HARNESS_STOP(); +/// ``` +#define HARNESS_STOP() \ + do { \ + __srai_extended1(N_STOP_NORMAL, DEFAULT_INDEX); \ + } while (0); + +/// HARNESS_STOP_INDEX +/// +/// Signal the fuzzer to stop and reset to the beginning of the fuzzing loop +/// with a "normal" stop status, indicating no solution has occurred. The index +/// specified by `stop_index` will be used. If you need to differentiate between +/// multiple stop harnesses compiled into the same binary, you can use this +/// macro to specify different indices, then enable them at runtime by +/// configuring the fuzzer. +/// +/// # Arguments +/// +/// - `stop_index`: The index to use for this stop harness +/// +/// # Example +/// +/// ``` +/// HARNESS_STOP_INDEX(0x0001U); +/// ``` +#define HARNESS_STOP_INDEX(stop_index) \ + do { \ + __srai_extended1(N_STOP_NORMAL, stop_index); \ + } while (0); + +/// Pseudo-hypercall number to signal the fuzzer that a custom assertion has +/// occurred, and the fuzzer should stop the current fuzzing iteration and reset +/// to the beginning of the fuzzing loop with a "solution" stop status. +#define N_STOP_ASSERT (0x0005U) + +/// HARNESS_ASSERT +/// +/// Signal the fuzzer that a custom assertion has occurred, and the fuzzer +/// should stop the current fuzzing iteration and reset to the beginning of the +/// fuzzing loop with a "solution" stop status. The default index of 0 will be +/// used. If you need to differentiate between multiple assertion harnesses +/// compiled into the same binary, you can use the `HARNESS_ASSERT_INDEX` macro +/// to specify different indices, then enable them at runtime by configuring the +/// fuzzer. +/// +/// # Example +/// +/// ``` +/// HARNESS_ASSERT(); +/// ``` +#define HARNESS_ASSERT() \ + do { \ + __srai_extended1(N_STOP_ASSERT, DEFAULT_INDEX); \ + } while (0); + +/// HARNESS_ASSERT_INDEX +/// +/// Signal the fuzzer that a custom assertion has occurred, and the fuzzer +/// should stop the current fuzzing iteration and reset to the beginning of the +/// fuzzing loop with a "solution" stop status. The index specified by +/// `assert_index` will be used. If you need to differentiate between multiple +/// assertion harnesses compiled into the same binary, you can use this macro to +/// specify different indices, then enable them at runtime by configuring the +/// fuzzer. +/// +/// # Arguments +/// +/// - `assert_index`: The index to use for this assertion harness +/// +/// # Example +/// +/// ``` +/// HARNESS_ASSERT_INDEX(0x0001U); +/// ``` +#define HARNESS_ASSERT_INDEX(assert_index) \ + do { \ + __srai_extended1(N_STOP_ASSERT, assert_index); \ + } while (0); + +#endif // TSFFS_H +#elif __riscv && __LP64__ +// Copyright (C) 2024 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 + +/// Definitions and macros for compiled-in harnessing of C and C++ target +/// software for the RISC-V (32-bit) architecture + +#ifndef TSFFS_H +#define TSFFS_H + +/// Define common with LibFuzzer and other fuzzers to allow code that is +/// fuzzing-specific to be left in the codebase. See +/// https://llvm.org/docs/LibFuzzer.html#id35 for more information +#ifndef FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION +#define FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION (1) +#endif // FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION + +/// __srai +/// +/// Invoke the magic instruction defined by SIMICS for the RISC-V architecture +/// with a specific value of `n` +/// +/// # Arguments +/// +/// * `value` - The value of `n` to use in the magic instruction +#define __srai(value) \ + __asm__ __volatile__("srai zero, zero, %0" : : "I"(value) :) + +/// __srai_extended1 +/// +/// Invoke the magic instruction defined by SIMICS for the RISC-V architecture +/// with a specific value of `n` and a pseudo-argument in register `a0`. +/// +/// # Arguments +/// +/// * `value` - The value of `n` to use in the magic instruction +/// * `arg0` - The value to place in register `a0` +#define __srai_extended1(value, arg0) \ + __asm__ __volatile__("mv a0, %0; srai zero, zero, %1" \ + : \ + : "r"(arg0), "I"(value) \ + : "a0"); + +/// __srai_extended2 +/// +/// Invoke the magic instruction defined by SIMICS for the RISC-V architecture +/// with a specific value of `n` and pseudo-arguments in registers `a0` and +/// `a1`. +/// +/// # Arguments +/// +/// * `value` - The value of `n` to use in the magic instruction +/// * `arg0` - The value to place in register `a0` +/// * `arg1` - The value to place in register `a1` +#define __srai_extended2(value, arg0, arg1) \ + __asm__ __volatile__("mv a0, %0; mv a1, %1; srai zero, zero, %2" \ + : \ + : "r"(arg0), "r"(arg1), "I"(value) \ + : "a0", "a1"); + +/// __srai_extended3 +/// +/// Invoke the magic instruction defined by SIMICS for the RISC-V architecture +/// with a specific value of `n` and pseudo-arguments in registers `a0`, `a1`, +/// and `a2`. +/// +/// # Arguments +/// +/// * `value` - The value of `n` to use in the magic instruction +/// * `arg0` - The value to place in register `a0` +/// * `arg1` - The value to place in register `a1` +/// * `arg2` - The value to place in register `a2` +#define __srai_extended3(value, arg0, arg1, arg2) \ + __asm__ __volatile__("mv a0, %0; mv a1, %1; mv a2, %2; srai zero, zero, %3" \ + : \ + : "r"(arg0), "r"(arg1), "r"(arg2), "I"(value) \ + : "a0", "a1", "a2"); + +/// __srai_extended4 +/// +/// Invoke the magic instruction defined by SIMICS for the RISC-V architecture +/// with a specific value of `n` and pseudo-arguments in registers `a0`, `a1`, +/// `a2`, and `a3`. +/// +/// # Arguments +/// +/// * `value` - The value of `n` to use in the magic instruction +/// * `arg0` - The value to place in register `a0` +/// * `arg1` - The value to place in register `a1` +/// * `arg2` - The value to place in register `a2` +/// * `arg3` - The value to place in register `a3` +#define __srai_extended4(value, arg0, arg1, arg2, arg3) \ + __asm__ __volatile__( \ + "mv a0, %0; mv a1, %1; mv a2, %2; mv a3, %3; srai zero, zero, %4" \ + : \ + : "r"(arg0), "r"(arg1), "r"(arg2), "r"(arg3), "I"(value) \ + : "a0", "a1", "a2", "a3"); + +/// Magic value defined by SIMICS as the "leaf" value of a CPUID instruction +/// that is treated as a magic instruction. +#define MAGIC (0x4711U) + +/// The default index number used for magic instructions. All magic instructions +/// support multiple start and stop indices, which defaults to 0 if not +/// specified. +#define DEFAULT_INDEX (0x0000U) + +/// Pseudo-hypercall number to signal the fuzzer to use the first argument to +/// the magic instruction as the pointer to the testcase buffer and the second +/// argument as a pointer to the size of the testcase buffer. +#define N_START_BUFFER_PTR_SIZE_PTR (0x0001U) + +/// HARNESS_START +/// +/// Signal the fuzzer to start the fuzzing loop at the point this macro is +/// called. The default "index" of 0 will be used. If you need multiple start +/// harnesses compiled into the same binary, you can use the +/// `HARNESS_START_INDEX` macro to specify different indices, then enable them +/// at runtime by configuring the fuzzer. +/// +/// When this macro is called: +/// +/// - A snapshot will be taken and saved +/// - The buffer pointed to by `buffer` will be saved and used as the testcase +/// buffer. Each +/// fuzzing iteration, a new test case will be written to this buffer. +/// - The size of the buffer pointed to by `size_ptr` will be saved as the +/// maximum testcase size. Each fuzzing iteration, the actual size of the +/// current testcase will be written to `*size_ptr`. +/// +/// # Arguments +/// +/// - `buffer`: The pointer to the testcase buffer +/// - `size_ptr`: The pointer to the size of the testcase buffer +/// +/// # Example +/// +/// ``` +/// unsigned char buffer[1024]; +/// size_t size; +/// HARNESS_START(buffer, &size); +/// ``` +#define HARNESS_START(buffer, size_ptr) \ + do { \ + __srai_extended3(N_START_BUFFER_PTR_SIZE_PTR, DEFAULT_INDEX, buffer, size_ptr); \ + } while (0); + +/// HARNESS_START_INDEX +/// +/// Signal the fuzzer to start the fuzzing loop at the point this macro is +/// called. The index specified by `start_index` will be used. If you need +/// multiple start harnesses compiled into the same binary, you can use this +/// macro to specify different indices, then enable them at runtime by +/// configuring the fuzzer. +/// +/// When this macro is called: +/// +/// - A snapshot will be taken and saved +/// - The buffer pointed to by `buffer` will be saved and used as the testcase +/// buffer. Each +/// fuzzing iteration, a new test case will be written to this buffer. +/// - The size of the buffer pointed to by `size_ptr` will be saved as the +/// maximum testcase size. Each fuzzing iteration, the actual size of the +/// current testcase will be written to `*size_ptr`. +/// +/// # Arguments +/// +/// - `start_index`: The index to use for this start harness +/// - `buffer`: The pointer to the testcase buffer +/// - `size_ptr`: The pointer to the size of the testcase buffer +/// +/// # Example +/// +/// ``` +/// unsigned char buffer[1024]; +/// size_t size; +/// HARNESS_START_INDEX(0x0001U, buffer, &size); +/// ``` +#define HARNESS_START_INDEX(start_index, buffer, size_ptr) \ + do { \ + __srai_extended3(N_START_BUFFER_PTR_SIZE_PTR, start_index, buffer, size_ptr); \ + } while (0); + +/// Pseudo-hypercall number to signal the fuzzer to use the first argument to +/// the magic instruction as the pointer to the testcase buffer and the second +/// argument as the maximum size of the testcase buffer. +#define N_START_BUFFER_PTR_SIZE_VAL (0x0002U) + +/// HARNESS_START_WITH_MAXIMUM_SIZE +/// +/// Signal the fuzzer to start the fuzzing loop at the point this macro is +/// called. The default "index" of 0 will be used. If you need multiple start +/// harnesses compiled into the same binary, you can use the +/// `HARNESS_START_WITH_MAXIMUM_SIZE_INDEX` macro to specify different indices, +/// then enable them at runtime by configuring the fuzzer. +/// +/// When this macro is called: +/// +/// - A snapshot will be taken and saved +/// - The buffer pointed to by `buffer` will be saved and used as the testcase +/// buffer. Each +/// fuzzing iteration, a new test case will be written to this buffer. +/// - The `max_size` value will be saved as the maximum testcase size. Fuzzing +/// test cases will be truncated to this size before being written to the +/// buffer. +/// +/// # Arguments +/// +/// - `buffer`: The pointer to the testcase buffer +/// - `max_size`: The maximum size of the testcase buffer +/// +/// # Example +/// +/// ``` +/// unsigned char buffer[1024]; +/// HARNESS_START_WITH_MAXIMUM_SIZE(buffer, 1024); +/// ``` +#define HARNESS_START_WITH_MAXIMUM_SIZE(buffer, max_size) \ + do { \ + __srai_extended3(N_START_BUFFER_PTR_SIZE_VAL, DEFAULT_INDEX, buffer, max_size); \ + } while (0); + +/// HARNESS_START_WITH_MAXIMUM_SIZE_INDEX +/// +/// Signal the fuzzer to start the fuzzing loop at the point this macro is +/// called. The index specified by `start_index` will be used. If you need +/// multiple start harnesses compiled into the same binary, you can use this +/// macro to specify different indices, then enable them at runtime by +/// configuring the fuzzer. +/// +/// When this macro is called: +/// +/// - A snapshot will be taken and saved +/// - The buffer pointed to by `buffer` will be saved and used as the testcase +/// buffer. Each +/// fuzzing iteration, a new test case will be written to this buffer. +/// - The `max_size` value will be saved as the maximum testcase size. Fuzzing +/// test cases will be truncated to this size before being written to the +/// buffer. +/// +/// # Arguments +/// +/// - `start_index`: The index to use for this start harness +/// - `buffer`: The pointer to the testcase buffer +/// - `max_size`: The maximum size of the testcase buffer +/// +/// # Example +/// +/// ``` +/// unsigned char buffer[1024]; +/// HARNESS_START_WITH_MAXIMUM_SIZE_INDEX(0x0001U, buffer, 1024); +/// ``` +#define HARNESS_START_WITH_MAXIMUM_SIZE_INDEX(start_index, buffer, max_size) \ + do { \ + __srai_extended3(N_START_BUFFER_PTR_SIZE_VAL, start_index, buffer, max_size); \ + } while (0); + +/// Pseudo-hypercall number to signal the fuzzer to use the first argument to +/// the magic instruction as the pointer to the testcase buffer, the second +/// argument as a pointer to the size of the testcase buffer, and the third +/// argument as the maximum size of the testcase buffer. +#define N_START_BUFFER_PTR_SIZE_PTR_VAL (0x0003U) + +/// HARNESS_START_WITH_MAXIMUM_SIZE_AND_PTR +/// +/// Signal the fuzzer to start the fuzzing loop at the point this macro is +/// called. The default "index" of 0 will be used. If you need multiple start +/// harnesses compiled into the same binary, you can use the +/// `HARNESS_START_WITH_MAXIMUM_SIZE_AND_PTR_INDEX` macro to specify different +/// indices, then enable them at runtime by configuring the fuzzer. +/// +/// When this macro is called: +/// +/// - A snapshot will be taken and saved +/// - The buffer pointed to by `buffer` will be saved and used as the testcase +/// buffer. Each +/// fuzzing iteration, a new test case will be written to this buffer. +/// - The address `size_ptr` will be saved. Each fuzzing iteration, the actual +/// size of the current testcase will be written to `*size_ptr`. +/// - The `max_size` value will be saved as the maximum testcase size. Fuzzing +/// test cases will be truncated to this size before being written to the +/// buffer. +/// +/// # Arguments +/// +/// - `buffer`: The pointer to the testcase buffer +/// - `size_ptr`: The pointer to the size of the testcase buffer +/// - `max_size`: The maximum size of the testcase buffer +/// +/// # Example +/// +/// ``` +/// unsigned char buffer[1024]; +/// size_t size; +/// HARNESS_START_WITH_MAXIMUM_SIZE_AND_PTR(buffer, &size, 1024); +/// ``` +#define HARNESS_START_WITH_MAXIMUM_SIZE_AND_PTR(buffer, size_ptr, max_size) \ + do { \ + __srai_extended4(N_START_BUFFER_PTR_SIZE_PTR_VAL, DEFAULT_INDEX, buffer, size_ptr, max_size); \ + } while (0); + +/// HARNESS_START_WITH_MAXIMUM_SIZE_AND_PTR_INDEX +/// +/// Signal the fuzzer to start the fuzzing loop at the point this macro is +/// called. The index specified by `start_index` will be used. If you need +/// multiple start harnesses compiled into the same binary, you can use this +/// macro to specify different indices, then enable them at runtime by +/// configuring the fuzzer. +/// +/// When this macro is called: +/// +/// - A snapshot will be taken and saved +/// - The buffer pointed to by `buffer` will be saved and used as the testcase +/// buffer. Each +/// fuzzing iteration, a new test case will be written to this buffer. +/// - The address `size_ptr` will be saved. Each fuzzing iteration, the actual +/// size of the current testcase will be written to `*size_ptr`. +/// - The `max_size` value will be saved as the maximum testcase size. Fuzzing +/// test cases will be truncated to this size before being written to the +/// buffer. +/// +/// # Arguments +/// +/// - `start_index`: The index to use for this start harness +/// - `buffer`: The pointer to the testcase buffer +/// - `size_ptr`: The pointer to the size of the testcase buffer +/// - `max_size`: The maximum size of the testcase buffer +/// +/// # Example +/// +/// ``` +/// unsigned char buffer[1024]; +/// size_t size; +/// HARNESS_START_WITH_MAXIMUM_SIZE_AND_PTR_INDEX(0x0001U, buffer, &size, 1024); +/// ``` +#define HARNESS_START_WITH_MAXIMUM_SIZE_AND_PTR_INDEX(start_index, buffer, \ + size_ptr, max_size) \ + do { \ + __srai_extended4(N_START_BUFFER_PTR_SIZE_PTR_VAL, start_index, buffer, size_ptr, max_size); \ + } while (0); + +/// Pseudo-hypercall number to signal the fuzzer to stop the current fuzzing +/// iteration and reset to the beginning of the fuzzing loop with a "normal" +/// stop status, indicating no solution has occurred. +#define N_STOP_NORMAL (0x0004U) + +/// HARNESS_STOP +/// +/// Signal the fuzzer to stop and reset to the beginning of the fuzzing loop +/// with a "normal" stop status, indicating no solution has occurred. The +/// default index of 0 will be used. If you need to differentiate between +/// multiple stop harnesses compiled into the same binary, you can use the +/// `HARNESS_STOP_INDEX` macro to specify different indices, then enable them at +/// runtime by configuring the fuzzer. +/// +/// # Example +/// +/// ``` +/// HARNESS_STOP(); +/// ``` +#define HARNESS_STOP() \ + do { \ + __srai_extended1(N_STOP_NORMAL, DEFAULT_INDEX); \ + } while (0); + +/// HARNESS_STOP_INDEX +/// +/// Signal the fuzzer to stop and reset to the beginning of the fuzzing loop +/// with a "normal" stop status, indicating no solution has occurred. The index +/// specified by `stop_index` will be used. If you need to differentiate between +/// multiple stop harnesses compiled into the same binary, you can use this +/// macro to specify different indices, then enable them at runtime by +/// configuring the fuzzer. +/// +/// # Arguments +/// +/// - `stop_index`: The index to use for this stop harness +/// +/// # Example +/// +/// ``` +/// HARNESS_STOP_INDEX(0x0001U); +/// ``` +#define HARNESS_STOP_INDEX(stop_index) \ + do { \ + __srai_extended1(N_STOP_NORMAL, stop_index); \ + } while (0); + +/// Pseudo-hypercall number to signal the fuzzer that a custom assertion has +/// occurred, and the fuzzer should stop the current fuzzing iteration and reset +/// to the beginning of the fuzzing loop with a "solution" stop status. +#define N_STOP_ASSERT (0x0005U) + +/// HARNESS_ASSERT +/// +/// Signal the fuzzer that a custom assertion has occurred, and the fuzzer +/// should stop the current fuzzing iteration and reset to the beginning of the +/// fuzzing loop with a "solution" stop status. The default index of 0 will be +/// used. If you need to differentiate between multiple assertion harnesses +/// compiled into the same binary, you can use the `HARNESS_ASSERT_INDEX` macro +/// to specify different indices, then enable them at runtime by configuring the +/// fuzzer. +/// +/// # Example +/// +/// ``` +/// HARNESS_ASSERT(); +/// ``` +#define HARNESS_ASSERT() \ + do { \ + __srai_extended1(N_STOP_ASSERT, DEFAULT_INDEX); \ + } while (0); + +/// HARNESS_ASSERT_INDEX +/// +/// Signal the fuzzer that a custom assertion has occurred, and the fuzzer +/// should stop the current fuzzing iteration and reset to the beginning of the +/// fuzzing loop with a "solution" stop status. The index specified by +/// `assert_index` will be used. If you need to differentiate between multiple +/// assertion harnesses compiled into the same binary, you can use this macro to +/// specify different indices, then enable them at runtime by configuring the +/// fuzzer. +/// +/// # Arguments +/// +/// - `assert_index`: The index to use for this assertion harness +/// +/// # Example +/// +/// ``` +/// HARNESS_ASSERT_INDEX(0x0001U); +/// ``` +#define HARNESS_ASSERT_INDEX(assert_index) \ + do { \ + __srai_extended1(N_STOP_ASSERT, assert_index); \ + } while (0); + +#endif // TSFFS_H +#elif __aarch64__ +// Copyright (C) 2024 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 + +/// Definitions and macros for compiled-in harnessing of C and C++ target +/// software for the RISC-V (32-bit) architecture + +#ifndef TSFFS_H +#define TSFFS_H + +/// Define common with LibFuzzer and other fuzzers to allow code that is +/// fuzzing-specific to be left in the codebase. See +/// https://llvm.org/docs/LibFuzzer.html#id35 for more information +#ifndef FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION +#define FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION (1) +#endif // FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION + +#define __stringify(x) #x +#define __tostring(x) __stringify(x) + +/// __orr +/// +/// Invoke the magic instruction defined by SIMICS for the RISC-V architecture +/// with a specific value of `n` +/// +/// # Arguments +/// +/// * `value` - The value of `n` to use in the magic instruction +#define __orr(value) \ + __asm__ __volatile__("orr x" __tostring(value) ", x" __tostring( \ + value) ", x" __tostring(value)); + +/// __orr_extended1 +/// +/// Invoke the magic instruction defined by SIMICS for the RISC-V architecture +/// with a specific value of `n` and a pseudo-argument in register `r10`. +/// +/// # Arguments +/// +/// * `value` - The value of `n` to use in the magic instruction +/// * `arg0` - The value to place in register `r10` +#define __orr_extended1(value, arg0) \ + __asm__ __volatile__( \ + "mov x28, %0; orr x" __tostring(value) ", x" __tostring( \ + value) ", x" __tostring(value) \ + : \ + : "g"(arg0)); + +/// __orr_extended2 +/// +/// Invoke the magic instruction defined by SIMICS for the RISC-V architecture +/// with a specific value of `n` and two pseudo-arguments in registers `r10` and +/// `r9`. +/// +/// # Arguments +/// +/// * `value` - The value of `n` to use in the magic instruction +/// * `arg0` - The value to place in register `r10` +/// * `arg1` - The value to place in register `r9` +#define __orr_extended2(value, arg0, arg1) \ + __asm__ __volatile__( \ + "mov x28, %0; mov x27, %1; orr x" __tostring(value) ", x" __tostring( \ + value) ", x" __tostring(value) \ + : \ + : "r"(arg0), "r"(arg1)); + +/// __orr_extended3 +/// +/// Invoke the magic instruction defined by SIMICS for the RISC-V architecture +/// with a specific value of `n` and three pseudo-arguments in registers `r10`, +/// `r9`, and `r8`. +/// +/// # Arguments +/// +/// * `value` - The value of `n` to use in the magic instruction +/// * `arg0` - The value to place in register `r10` +/// * `arg1` - The value to place in register `r9` +/// * `arg2` - The value to place in register `r8` +#define __orr_extended3(value, arg0, arg1, arg2) \ + __asm__ __volatile__( \ + "mov x28, %0; mov x27, %1; mov x26, %2; orr x" __tostring( \ + value) ", x" __tostring(value) ", x" __tostring(value) \ + : \ + : "r"(arg0), "r"(arg1), "r"(arg2)); + +/// __orr_extended4 +/// +/// Invoke the magic instruction defined by SIMICS for the RISC-V architecture +/// with a specific value of `n` and four pseudo-arguments in registers `r10`, +/// `r9`, `r8`, and `r7`. +/// +/// # Arguments +/// +/// * `value` - The value of `n` to use in the magic instruction +/// * `arg0` - The value to place in register `r10` +/// * `arg1` - The value to place in register `r9` +/// * `arg2` - The value to place in register `r8` +/// * `arg3` - The value to place in register `r7` +#define __orr_extended4(value, arg0, arg1, arg2, arg3) \ + __asm__ __volatile__( \ + "mov x28, %0; mov x27, %1; mov x26, %2; mov x25, %3; " \ + "orr x" __tostring(value) ", x" __tostring(value) ", x" __tostring( \ + value) \ + : \ + : "r"(arg0), "r"(arg1), "r"(arg2), "r"(arg3)); + +/// The default index number used for magic instructions. All magic instructions +/// support multiple start and stop indices, which defaults to 0 if not +/// specified. +#define DEFAULT_INDEX (0x0000U) + +/// Pseudo-hypercall number to signal the fuzzer to use the first argument to +/// the magic instruction as the pointer to the testcase buffer and the second +/// argument as a pointer to the size of the testcase buffer. +#define N_START_BUFFER_PTR_SIZE_PTR 1 + +/// HARNESS_START +/// +/// Signal the fuzzer to start the fuzzing loop at the point this macro is +/// called. The default "index" of 0 will be used. If you need multiple start +/// harnesses compiled into the same binary, you can use the +/// `HARNESS_START_INDEX` macro to specify different indices, then enable them +/// at runtime by configuring the fuzzer. +/// +/// When this macro is called: +/// +/// - A snapshot will be taken and saved +/// - The buffer pointed to by `buffer` will be saved and used as the testcase +/// buffer. Each +/// fuzzing iteration, a new test case will be written to this buffer. +/// - The size of the buffer pointed to by `size_ptr` will be saved as the +/// maximum testcase size. Each fuzzing iteration, the actual size of the +/// current testcase will be written to `*size_ptr`. +/// +/// # Arguments +/// +/// - `buffer`: The pointer to the testcase buffer +/// - `size_ptr`: The pointer to the size of the testcase buffer +/// +/// # Example +/// +/// ``` +/// unsigned char buffer[1024]; +/// size_t size; +/// HARNESS_START(buffer, &size); +/// ``` +#define HARNESS_START(buffer, size_ptr) \ + do { \ + __orr_extended3(N_START_BUFFER_PTR_SIZE_PTR, DEFAULT_INDEX, buffer, \ + size_ptr); \ + } while (0); + +/// HARNESS_START_INDEX +/// +/// Signal the fuzzer to start the fuzzing loop at the point this macro is +/// called. The index specified by `start_index` will be used. If you need +/// multiple start harnesses compiled into the same binary, you can use this +/// macro to specify different indices, then enable them at runtime by +/// configuring the fuzzer. +/// +/// When this macro is called: +/// +/// - A snapshot will be taken and saved +/// - The buffer pointed to by `buffer` will be saved and used as the testcase +/// buffer. Each +/// fuzzing iteration, a new test case will be written to this buffer. +/// - The size of the buffer pointed to by `size_ptr` will be saved as the +/// maximum testcase size. Each fuzzing iteration, the actual size of the +/// current testcase will be written to `*size_ptr`. +/// +/// # Arguments +/// +/// - `start_index`: The index to use for this start harness +/// - `buffer`: The pointer to the testcase buffer +/// - `size_ptr`: The pointer to the size of the testcase buffer +/// +/// # Example +/// +/// ``` +/// unsigned char buffer[1024]; +/// size_t size; +/// HARNESS_START_INDEX(0x0001U, buffer, &size); +/// ``` +#define HARNESS_START_INDEX(start_index, buffer, size_ptr) \ + do { \ + __orr_extended3(N_START_BUFFER_PTR_SIZE_PTR, start_index, buffer, \ + size_ptr); \ + } while (0); + +/// Pseudo-hypercall number to signal the fuzzer to use the first argument to +/// the magic instruction as the pointer to the testcase buffer and the second +/// argument as the maximum size of the testcase buffer. +#define N_START_BUFFER_PTR_SIZE_VAL 2 + +/// HARNESS_START_WITH_MAXIMUM_SIZE +/// +/// Signal the fuzzer to start the fuzzing loop at the point this macro is +/// called. The default "index" of 0 will be used. If you need multiple start +/// harnesses compiled into the same binary, you can use the +/// `HARNESS_START_WITH_MAXIMUM_SIZE_INDEX` macro to specify different indices, +/// then enable them at runtime by configuring the fuzzer. +/// +/// When this macro is called: +/// +/// - A snapshot will be taken and saved +/// - The buffer pointed to by `buffer` will be saved and used as the testcase +/// buffer. Each +/// fuzzing iteration, a new test case will be written to this buffer. +/// - The `max_size` value will be saved as the maximum testcase size. Fuzzing +/// test cases will be truncated to this size before being written to the +/// buffer. +/// +/// # Arguments +/// +/// - `buffer`: The pointer to the testcase buffer +/// - `max_size`: The maximum size of the testcase buffer +/// +/// # Example +/// +/// ``` +/// unsigned char buffer[1024]; +/// HARNESS_START_WITH_MAXIMUM_SIZE(buffer, 1024); +/// ``` +#define HARNESS_START_WITH_MAXIMUM_SIZE(buffer, max_size) \ + do { \ + __orr_extended3(N_START_BUFFER_PTR_SIZE_VAL, DEFAULT_INDEX, buffer, \ + max_size); \ + } while (0); + +/// HARNESS_START_WITH_MAXIMUM_SIZE_INDEX +/// +/// Signal the fuzzer to start the fuzzing loop at the point this macro is +/// called. The index specified by `start_index` will be used. If you need +/// multiple start harnesses compiled into the same binary, you can use this +/// macro to specify different indices, then enable them at runtime by +/// configuring the fuzzer. +/// +/// When this macro is called: +/// +/// - A snapshot will be taken and saved +/// - The buffer pointed to by `buffer` will be saved and used as the testcase +/// buffer. Each +/// fuzzing iteration, a new test case will be written to this buffer. +/// - The `max_size` value will be saved as the maximum testcase size. Fuzzing +/// test cases will be truncated to this size before being written to the +/// buffer. +/// +/// # Arguments +/// +/// - `start_index`: The index to use for this start harness +/// - `buffer`: The pointer to the testcase buffer +/// - `max_size`: The maximum size of the testcase buffer +/// +/// # Example +/// +/// ``` +/// unsigned char buffer[1024]; +/// HARNESS_START_WITH_MAXIMUM_SIZE_INDEX(0x0001U, buffer, 1024); +/// ``` +#define HARNESS_START_WITH_MAXIMUM_SIZE_INDEX(start_index, buffer, max_size) \ + do { \ + __orr_extended3(N_START_BUFFER_PTR_SIZE_VAL, start_index, buffer, \ + max_size); \ + } while (0); + +/// Pseudo-hypercall number to signal the fuzzer to use the first argument to +/// the magic instruction as the pointer to the testcase buffer, the second +/// argument as a pointer to the size of the testcase buffer, and the third +/// argument as the maximum size of the testcase buffer. +#define N_START_BUFFER_PTR_SIZE_PTR_VAL 3 + +/// HARNESS_START_WITH_MAXIMUM_SIZE_AND_PTR +/// +/// Signal the fuzzer to start the fuzzing loop at the point this macro is +/// called. The default "index" of 0 will be used. If you need multiple start +/// harnesses compiled into the same binary, you can use the +/// `HARNESS_START_WITH_MAXIMUM_SIZE_AND_PTR_INDEX` macro to specify different +/// indices, then enable them at runtime by configuring the fuzzer. +/// +/// When this macro is called: +/// +/// - A snapshot will be taken and saved +/// - The buffer pointed to by `buffer` will be saved and used as the testcase +/// buffer. Each +/// fuzzing iteration, a new test case will be written to this buffer. +/// - The address `size_ptr` will be saved. Each fuzzing iteration, the actual +/// size of the current testcase will be written to `*size_ptr`. +/// - The `max_size` value will be saved as the maximum testcase size. Fuzzing +/// test cases will be truncated to this size before being written to the +/// buffer. +/// +/// # Arguments +/// +/// - `buffer`: The pointer to the testcase buffer +/// - `size_ptr`: The pointer to the size of the testcase buffer +/// - `max_size`: The maximum size of the testcase buffer +/// +/// # Example +/// +/// ``` +/// unsigned char buffer[1024]; +/// size_t size; +/// HARNESS_START_WITH_MAXIMUM_SIZE_AND_PTR(buffer, &size, 1024); +/// ``` +#define HARNESS_START_WITH_MAXIMUM_SIZE_AND_PTR(buffer, size_ptr, max_size) \ + do { \ + __orr_extended4(N_START_BUFFER_PTR_SIZE_PTR_VAL, DEFAULT_INDEX, buffer, \ + size_ptr, max_size); \ + } while (0); + +/// HARNESS_START_WITH_MAXIMUM_SIZE_AND_PTR_INDEX +/// +/// Signal the fuzzer to start the fuzzing loop at the point this macro is +/// called. The index specified by `start_index` will be used. If you need +/// multiple start harnesses compiled into the same binary, you can use this +/// macro to specify different indices, then enable them at runtime by +/// configuring the fuzzer. +/// +/// When this macro is called: +/// +/// - A snapshot will be taken and saved +/// - The buffer pointed to by `buffer` will be saved and used as the testcase +/// buffer. Each +/// fuzzing iteration, a new test case will be written to this buffer. +/// - The address `size_ptr` will be saved. Each fuzzing iteration, the actual +/// size of the current testcase will be written to `*size_ptr`. +/// - The `max_size` value will be saved as the maximum testcase size. Fuzzing +/// test cases will be truncated to this size before being written to the +/// buffer. +/// +/// # Arguments +/// +/// - `start_index`: The index to use for this start harness +/// - `buffer`: The pointer to the testcase buffer +/// - `size_ptr`: The pointer to the size of the testcase buffer +/// - `max_size`: The maximum size of the testcase buffer +/// +/// # Example +/// +/// ``` +/// unsigned char buffer[1024]; +/// size_t size; +/// HARNESS_START_WITH_MAXIMUM_SIZE_AND_PTR_INDEX(0x0001U, buffer, &size, 1024); +/// ``` +#define HARNESS_START_WITH_MAXIMUM_SIZE_AND_PTR_INDEX(start_index, buffer, \ + size_ptr, max_size) \ + do { \ + __orr_extended4(N_START_BUFFER_PTR_SIZE_PTR_VAL, start_index, buffer, \ + size_ptr, max_size); \ + } while (0); + +/// Pseudo-hypercall number to signal the fuzzer to stop the current fuzzing +/// iteration and reset to the beginning of the fuzzing loop with a "normal" +/// stop status, indicating no solution has occurred. +#define N_STOP_NORMAL 4 + +/// HARNESS_STOP +/// +/// Signal the fuzzer to stop and reset to the beginning of the fuzzing loop +/// with a "normal" stop status, indicating no solution has occurred. The +/// default index of 0 will be used. If you need to differentiate between +/// multiple stop harnesses compiled into the same binary, you can use the +/// `HARNESS_STOP_INDEX` macro to specify different indices, then enable them at +/// runtime by configuring the fuzzer. +/// +/// # Example +/// +/// ``` +/// HARNESS_STOP(); +/// ``` +#define HARNESS_STOP() \ + do { \ + __orr_extended1(N_STOP_NORMAL, DEFAULT_INDEX); \ + } while (0); + +/// HARNESS_STOP_INDEX +/// +/// Signal the fuzzer to stop and reset to the beginning of the fuzzing loop +/// with a "normal" stop status, indicating no solution has occurred. The index +/// specified by `stop_index` will be used. If you need to differentiate between +/// multiple stop harnesses compiled into the same binary, you can use this +/// macro to specify different indices, then enable them at runtime by +/// configuring the fuzzer. +/// +/// # Arguments +/// +/// - `stop_index`: The index to use for this stop harness +/// +/// # Example +/// +/// ``` +/// HARNESS_STOP_INDEX(0x0001U); +/// ``` +#define HARNESS_STOP_INDEX(stop_index) \ + do { \ + __orr_extended1(N_STOP_NORMAL, stop_index); \ + } while (0); + +/// Pseudo-hypercall number to signal the fuzzer that a custom assertion has +/// occurred, and the fuzzer should stop the current fuzzing iteration and reset +/// to the beginning of the fuzzing loop with a "solution" stop status. +#define N_STOP_ASSERT 5 + +/// HARNESS_ASSERT +/// +/// Signal the fuzzer that a custom assertion has occurred, and the fuzzer +/// should stop the current fuzzing iteration and reset to the beginning of the +/// fuzzing loop with a "solution" stop status. The default index of 0 will be +/// used. If you need to differentiate between multiple assertion harnesses +/// compiled into the same binary, you can use the `HARNESS_ASSERT_INDEX` macro +/// to specify different indices, then enable them at runtime by configuring the +/// fuzzer. +/// +/// # Example +/// +/// ``` +/// HARNESS_ASSERT(); +/// ``` +#define HARNESS_ASSERT() \ + do { \ + __orr_extended1(N_STOP_ASSERT, DEFAULT_INDEX); \ + } while (0); + +/// HARNESS_ASSERT_INDEX +/// +/// Signal the fuzzer that a custom assertion has occurred, and the fuzzer +/// should stop the current fuzzing iteration and reset to the beginning of the +/// fuzzing loop with a "solution" stop status. The index specified by +/// `assert_index` will be used. If you need to differentiate between multiple +/// assertion harnesses compiled into the same binary, you can use this macro to +/// specify different indices, then enable them at runtime by configuring the +/// fuzzer. +/// +/// # Arguments +/// +/// - `assert_index`: The index to use for this assertion harness +/// +/// # Example +/// +/// ``` +/// HARNESS_ASSERT_INDEX(0x0001U); +/// ``` +#define HARNESS_ASSERT_INDEX(assert_index) \ + do { \ + __orr_extended1(N_STOP_ASSERT, assert_index); \ + } while (0); + +#endif // TSFFS_H +#elif __arm__ +// Copyright (C) 2024 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 + +/// Definitions and macros for compiled-in harnessing of C and C++ target +/// software for the RISC-V (32-bit) architecture + +#ifndef TSFFS_H +#define TSFFS_H + +/// Define common with LibFuzzer and other fuzzers to allow code that is +/// fuzzing-specific to be left in the codebase. See +/// https://llvm.org/docs/LibFuzzer.html#id35 for more information +#ifndef FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION +#define FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION (1) +#endif // FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION + +#define __stringify(x) #x +#define __tostring(x) __stringify(x) + +/// __orr +/// +/// Invoke the magic instruction defined by SIMICS for the RISC-V architecture +/// with a specific value of `n` +/// +/// # Arguments +/// +/// * `value` - The value of `n` to use in the magic instruction +#define __orr(value) \ + __asm__ __volatile__("orr r" __tostring(value) ", r" __tostring( \ + value) ", r" __tostring(value)); + +/// __orr_extended1 +/// +/// Invoke the magic instruction defined by SIMICS for the RISC-V architecture +/// with a specific value of `n` and a pseudo-argument in register `r10`. +/// +/// # Arguments +/// +/// * `value` - The value of `n` to use in the magic instruction +/// * `arg0` - The value to place in register `r10` +#define __orr_extended1(value, arg0) \ + __asm__ __volatile__( \ + "mov r10, %0; orr r" __tostring(value) ", r" __tostring( \ + value) ", r" __tostring(value) \ + : \ + : "r"(arg0)); + +/// __orr_extended2 +/// +/// Invoke the magic instruction defined by SIMICS for the RISC-V architecture +/// with a specific value of `n` and two pseudo-arguments in registers `r10` and +/// `r9`. +/// +/// # Arguments +/// +/// * `value` - The value of `n` to use in the magic instruction +/// * `arg0` - The value to place in register `r10` +/// * `arg1` - The value to place in register `r9` +#define __orr_extended2(value, arg0, arg1) \ + __asm__ __volatile__( \ + "mov r10, %0; mov r9, %1; orr r" __tostring(value) ", r" __tostring( \ + value) ", r" __tostring(value) \ + : \ + : "r"(arg0), "r"(arg1)); + +/// __orr_extended3 +/// +/// Invoke the magic instruction defined by SIMICS for the RISC-V architecture +/// with a specific value of `n` and three pseudo-arguments in registers `r10`, +/// `r9`, and `r8`. +/// +/// # Arguments +/// +/// * `value` - The value of `n` to use in the magic instruction +/// * `arg0` - The value to place in register `r10` +/// * `arg1` - The value to place in register `r9` +/// * `arg2` - The value to place in register `r8` +#define __orr_extended3(value, arg0, arg1, arg2) \ + __asm__ __volatile__( \ + "mov r10, %0; mov r9, %1; mov r8, %2; orr r" __tostring( \ + value) ", r" __tostring(value) ", r" __tostring(value) \ + : \ + : "r"(arg0), "r"(arg1), "r"(arg2)); + +/// __orr_extended4 +/// +/// Invoke the magic instruction defined by SIMICS for the RISC-V architecture +/// with a specific value of `n` and four pseudo-arguments in registers `r10`, +/// `r9`, `r8`, and `r7`. +/// +/// # Arguments +/// +/// * `value` - The value of `n` to use in the magic instruction +/// * `arg0` - The value to place in register `r10` +/// * `arg1` - The value to place in register `r9` +/// * `arg2` - The value to place in register `r8` +/// * `arg3` - The value to place in register `r7` +#define __orr_extended4(value, arg0, arg1, arg2, arg3) \ + __asm__ __volatile__( \ + "mov r10, %0; mov r9, %1; mov r8, %2; mov r7, %3; " \ + "orr r" __tostring(value) ", r" __tostring(value) ", r" __tostring( \ + value) \ + : \ + : "r"(arg0), "r"(arg1), "r"(arg2), "r"(arg3)); + +/// Magic value defined by SIMICS as the "leaf" value of a CPUID instruction +/// that is treated as a magic instruction. +#define MAGIC (0x4711U) + +/// The default index number used for magic instructions. All magic instructions +/// support multiple start and stop indices, which defaults to 0 if not +/// specified. +#define DEFAULT_INDEX (0x0000U) + +/// Pseudo-hypercall number to signal the fuzzer to use the first argument to +/// the magic instruction as the pointer to the testcase buffer and the second +/// argument as a pointer to the size of the testcase buffer. +#define N_START_BUFFER_PTR_SIZE_PTR 1 + +/// HARNESS_START +/// +/// Signal the fuzzer to start the fuzzing loop at the point this macro is +/// called. The default "index" of 0 will be used. If you need multiple start +/// harnesses compiled into the same binary, you can use the +/// `HARNESS_START_INDEX` macro to specify different indices, then enable them +/// at runtime by configuring the fuzzer. +/// +/// When this macro is called: +/// +/// - A snapshot will be taken and saved +/// - The buffer pointed to by `buffer` will be saved and used as the testcase +/// buffer. Each +/// fuzzing iteration, a new test case will be written to this buffer. +/// - The size of the buffer pointed to by `size_ptr` will be saved as the +/// maximum testcase size. Each fuzzing iteration, the actual size of the +/// current testcase will be written to `*size_ptr`. +/// +/// # Arguments +/// +/// - `buffer`: The pointer to the testcase buffer +/// - `size_ptr`: The pointer to the size of the testcase buffer +/// +/// # Example +/// +/// ``` +/// unsigned char buffer[1024]; +/// size_t size; +/// HARNESS_START(buffer, &size); +/// ``` +#define HARNESS_START(buffer, size_ptr) \ + do { \ + __orr_extended2(N_START_BUFFER_PTR_SIZE_PTR, buffer, size_ptr); \ + } while (0); + +/// Pseudo-hypercall number to signal the fuzzer to use the first argument to +/// the magic instruction as the pointer to the testcase buffer and the second +/// argument as the maximum size of the testcase buffer. +#define N_START_BUFFER_PTR_SIZE_VAL 2 + +/// HARNESS_START_WITH_MAXIMUM_SIZE +/// +/// Signal the fuzzer to start the fuzzing loop at the point this macro is +/// called. The default "index" of 0 will be used. If you need multiple start +/// harnesses compiled into the same binary, you can use the +/// `HARNESS_START_WITH_MAXIMUM_SIZE_INDEX` macro to specify different indices, +/// then enable them at runtime by configuring the fuzzer. +/// +/// When this macro is called: +/// +/// - A snapshot will be taken and saved +/// - The buffer pointed to by `buffer` will be saved and used as the testcase +/// buffer. Each +/// fuzzing iteration, a new test case will be written to this buffer. +/// - The `max_size` value will be saved as the maximum testcase size. Fuzzing +/// test cases will be truncated to this size before being written to the +/// buffer. +/// +/// # Arguments +/// +/// - `buffer`: The pointer to the testcase buffer +/// - `max_size`: The maximum size of the testcase buffer +/// +/// # Example +/// +/// ``` +/// unsigned char buffer[1024]; +/// HARNESS_START_WITH_MAXIMUM_SIZE(buffer, 1024); +/// ``` +#define HARNESS_START_WITH_MAXIMUM_SIZE(buffer, max_size) \ + do { \ + __orr_extended2(N_START_BUFFER_PTR_SIZE_VAL, buffer, max_size); \ + } while (0); + +/// Pseudo-hypercall number to signal the fuzzer to use the first argument to +/// the magic instruction as the pointer to the testcase buffer, the second +/// argument as a pointer to the size of the testcase buffer, and the third +/// argument as the maximum size of the testcase buffer. +#define N_START_BUFFER_PTR_SIZE_PTR_VAL 3 + +/// HARNESS_START_WITH_MAXIMUM_SIZE_AND_PTR +/// +/// Signal the fuzzer to start the fuzzing loop at the point this macro is +/// called. The default "index" of 0 will be used. If you need multiple start +/// harnesses compiled into the same binary, you can use the +/// `HARNESS_START_WITH_MAXIMUM_SIZE_AND_PTR_INDEX` macro to specify different +/// indices, then enable them at runtime by configuring the fuzzer. +/// +/// When this macro is called: +/// +/// - A snapshot will be taken and saved +/// - The buffer pointed to by `buffer` will be saved and used as the testcase +/// buffer. Each +/// fuzzing iteration, a new test case will be written to this buffer. +/// - The address `size_ptr` will be saved. Each fuzzing iteration, the actual +/// size of the current testcase will be written to `*size_ptr`. +/// - The `max_size` value will be saved as the maximum testcase size. Fuzzing +/// test cases will be truncated to this size before being written to the +/// buffer. +/// +/// # Arguments +/// +/// - `buffer`: The pointer to the testcase buffer +/// - `size_ptr`: The pointer to the size of the testcase buffer +/// - `max_size`: The maximum size of the testcase buffer +/// +/// # Example +/// +/// ``` +/// unsigned char buffer[1024]; +/// size_t size; +/// HARNESS_START_WITH_MAXIMUM_SIZE_AND_PTR(buffer, &size, 1024); +/// ``` +#define HARNESS_START_WITH_MAXIMUM_SIZE_AND_PTR(buffer, size_ptr, max_size) \ + do { \ + __orr_extended3(N_START_BUFFER_PTR_SIZE_PTR_VAL, buffer, size_ptr, \ + max_size); \ + } while (0); + +/// Pseudo-hypercall number to signal the fuzzer to stop the current fuzzing +/// iteration and reset to the beginning of the fuzzing loop with a "normal" +/// stop status, indicating no solution has occurred. +#define N_STOP_NORMAL 4 + +/// HARNESS_STOP +/// +/// Signal the fuzzer to stop and reset to the beginning of the fuzzing loop +/// with a "normal" stop status, indicating no solution has occurred. The +/// default index of 0 will be used. If you need to differentiate between +/// multiple stop harnesses compiled into the same binary, you can use the +/// `HARNESS_STOP_INDEX` macro to specify different indices, then enable them at +/// runtime by configuring the fuzzer. +/// +/// # Example +/// +/// ``` +/// HARNESS_STOP(); +/// ``` +#define HARNESS_STOP() \ + do { \ + __orr(N_STOP_NORMAL); \ + } while (0); + +/// Pseudo-hypercall number to signal the fuzzer that a custom assertion has +/// occurred, and the fuzzer should stop the current fuzzing iteration and reset +/// to the beginning of the fuzzing loop with a "solution" stop status. +#define N_STOP_ASSERT 5 + +/// HARNESS_ASSERT +/// +/// Signal the fuzzer that a custom assertion has occurred, and the fuzzer +/// should stop the current fuzzing iteration and reset to the beginning of the +/// fuzzing loop with a "solution" stop status. The default index of 0 will be +/// used. If you need to differentiate between multiple assertion harnesses +/// compiled into the same binary, you can use the `HARNESS_ASSERT_INDEX` macro +/// to specify different indices, then enable them at runtime by configuring the +/// fuzzer. +/// +/// # Example +/// +/// ``` +/// HARNESS_ASSERT(); +/// ``` +#define HARNESS_ASSERT() \ + do { \ + __orr_extended1(N_STOP_ASSERT, DEFAULT_INDEX); \ + } while (0); + +#endif // TSFFS_H +#else +#error "Unsupported platform!" +#endif +#elif _MSC_VER +#ifndef TSFFS_H +#define TSFFS_H + +/// Define common with LibFuzzer and other fuzzers to allow code that is +/// fuzzing-specific to be left in the codebase. See +/// https://llvm.org/docs/LibFuzzer.html#id35 for more information +#ifndef FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION +#define FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION (1) +#endif // FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION + +#include + +/// HARNESS_START +/// +/// Signal the fuzzer to start the fuzzing loop at the point this macro is +/// called. The default "index" of 0 will be used. If you need multiple start +/// harnesses compiled into the same binary, you can use the +/// `HARNESS_START_INDEX` macro to specify different indices, then enable them +/// at runtime by configuring the fuzzer. +/// +/// When this macro is called: +/// +/// - A snapshot will be taken and saved +/// - The buffer pointed to by `buffer` will be saved and used as the testcase +/// buffer. Each +/// fuzzing iteration, a new test case will be written to this buffer. +/// - The size of the buffer pointed to by `size_ptr` will be saved as the +/// maximum testcase size. Each fuzzing iteration, the actual size of the +/// current testcase will be written to `*size_ptr`. +/// +/// # Arguments +/// +/// - `buffer`: The pointer to the testcase buffer +/// - `size_ptr`: The pointer to the size of the testcase buffer +/// +/// # Example +/// +/// ``` +/// unsigned char buffer[1024]; +/// size_t size; +/// HARNESS_START(buffer, &size); +/// ``` +void HARNESS_START(void *buffer, void *size_ptr); + +/// HARNESS_START_INDEX +/// +/// Signal the fuzzer to start the fuzzing loop at the point this macro is +/// called. The index specified by `start_index` will be used. If you need +/// multiple start harnesses compiled into the same binary, you can use this +/// macro to specify different indices, then enable them at runtime by +/// configuring the fuzzer. +/// +/// When this macro is called: +/// +/// - A snapshot will be taken and saved +/// - The buffer pointed to by `buffer` will be saved and used as the testcase +/// buffer. Each +/// fuzzing iteration, a new test case will be written to this buffer. +/// - The size of the buffer pointed to by `size_ptr` will be saved as the +/// maximum testcase size. Each fuzzing iteration, the actual size of the +/// current testcase will be written to `*size_ptr`. +/// +/// # Arguments +/// +/// - `start_index`: The index to use for this start harness +/// - `buffer`: The pointer to the testcase buffer +/// - `size_ptr`: The pointer to the size of the testcase buffer +/// +/// # Example +/// +/// ``` +/// unsigned char buffer[1024]; +/// size_t size; +/// HARNESS_START_INDEX(0x0001U, buffer, &size); +/// ``` +void HARNESS_START_INDEX(size_t start_index, void *buffer, void *size_ptr); + +/// HARNESS_START_WITH_MAXIMUM_SIZE +/// +/// Signal the fuzzer to start the fuzzing loop at the point this macro is +/// called. The default "index" of 0 will be used. If you need multiple start +/// harnesses compiled into the same binary, you can use the +/// `HARNESS_START_WITH_MAXIMUM_SIZE_INDEX` macro to specify different indices, +/// then enable them at runtime by configuring the fuzzer. +/// +/// When this macro is called: +/// +/// - A snapshot will be taken and saved +/// - The buffer pointed to by `buffer` will be saved and used as the testcase +/// buffer. Each +/// fuzzing iteration, a new test case will be written to this buffer. +/// - The `max_size` value will be saved as the maximum testcase size. Fuzzing +/// test cases will be truncated to this size before being written to the +/// buffer. +/// +/// # Arguments +/// +/// - `buffer`: The pointer to the testcase buffer +/// - `max_size`: The maximum size of the testcase buffer +/// +/// # Example +/// +/// ``` +/// unsigned char buffer[1024]; +/// HARNESS_START_WITH_MAXIMUM_SIZE(buffer, 1024); +/// ``` +void HARNESS_START_WITH_MAXIMUM_SIZE(void *buffer, size_t max_size); + +/// HARNESS_START_WITH_MAXIMUM_SIZE_INDEX +/// +/// Signal the fuzzer to start the fuzzing loop at the point this macro is +/// called. The index specified by `start_index` will be used. If you need +/// multiple start harnesses compiled into the same binary, you can use this +/// macro to specify different indices, then enable them at runtime by +/// configuring the fuzzer. +/// +/// When this macro is called: +/// +/// - A snapshot will be taken and saved +/// - The buffer pointed to by `buffer` will be saved and used as the testcase +/// buffer. Each +/// fuzzing iteration, a new test case will be written to this buffer. +/// - The `max_size` value will be saved as the maximum testcase size. Fuzzing +/// test cases will be truncated to this size before being written to the +/// buffer. +/// +/// # Arguments +/// +/// - `start_index`: The index to use for this start harness +/// - `buffer`: The pointer to the testcase buffer +/// - `max_size`: The maximum size of the testcase buffer +/// +/// # Example +/// +/// ``` +/// unsigned char buffer[1024]; +/// HARNESS_START_WITH_MAXIMUM_SIZE_INDEX(0x0001U, buffer, 1024); +/// ``` +void HARNESS_START_WITH_MAXIMUM_SIZE_INDEX(size_t start_index, void *buffer, + size_t max_size); + +/// HARNESS_START_WITH_MAXIMUM_SIZE_AND_PTR +/// +/// Signal the fuzzer to start the fuzzing loop at the point this macro is +/// called. The default "index" of 0 will be used. If you need multiple start +/// harnesses compiled into the same binary, you can use the +/// `HARNESS_START_WITH_MAXIMUM_SIZE_AND_PTR_INDEX` macro to specify different +/// indices, then enable them at runtime by configuring the fuzzer. +/// +/// When this macro is called: +/// +/// - A snapshot will be taken and saved +/// - The buffer pointed to by `buffer` will be saved and used as the testcase +/// buffer. Each +/// fuzzing iteration, a new test case will be written to this buffer. +/// - The address `size_ptr` will be saved. Each fuzzing iteration, the actual +/// size of the current testcase will be written to `*size_ptr`. +/// - The `max_size` value will be saved as the maximum testcase size. Fuzzing +/// test cases will be truncated to this size before being written to the +/// buffer. +/// +/// # Arguments +/// +/// - `buffer`: The pointer to the testcase buffer +/// - `size_ptr`: The pointer to the size of the testcase buffer +/// - `max_size`: The maximum size of the testcase buffer +/// +/// # Example +/// +/// ``` +/// unsigned char buffer[1024]; +/// size_t size; +/// HARNESS_START_WITH_MAXIMUM_SIZE_AND_PTR(buffer, &size, 1024); +/// ``` +void HARNESS_START_WITH_MAXIMUM_SIZE_AND_PTR(void *buffer, void *size_ptr, + size_t max_size); + +/// HARNESS_START_WITH_MAXIMUM_SIZE_AND_PTR_INDEX +/// +/// Signal the fuzzer to start the fuzzing loop at the point this macro is +/// called. The index specified by `start_index` will be used. If you need +/// multiple start harnesses compiled into the same binary, you can use this +/// macro to specify different indices, then enable them at runtime by +/// configuring the fuzzer. +/// +/// When this macro is called: +/// +/// - A snapshot will be taken and saved +/// - The buffer pointed to by `buffer` will be saved and used as the testcase +/// buffer. Each +/// fuzzing iteration, a new test case will be written to this buffer. +/// - The address `size_ptr` will be saved. Each fuzzing iteration, the actual +/// size of the current testcase will be written to `*size_ptr`. +/// - The `max_size` value will be saved as the maximum testcase size. Fuzzing +/// test cases will be truncated to this size before being written to the +/// buffer. +/// +/// # Arguments +/// +/// - `start_index`: The index to use for this start harness +/// - `buffer`: The pointer to the testcase buffer +/// - `size_ptr`: The pointer to the size of the testcase buffer +/// - `max_size`: The maximum size of the testcase buffer +/// +/// # Example +/// +/// ``` +/// unsigned char buffer[1024]; +/// size_t size; +/// HARNESS_START_WITH_MAXIMUM_SIZE_AND_PTR_INDEX(0x0001U, buffer, &size, 1024); +/// ``` +void HARNESS_START_WITH_MAXIMUM_SIZE_AND_PTR_INDEX(size_t start_index, + void *buffer, void *size_ptr, + size_t max_size); + +/// HARNESS_STOP +/// +/// Signal the fuzzer to stop and reset to the beginning of the fuzzing loop +/// with a "normal" stop status, indicating no solution has occurred. The +/// default index of 0 will be used. If you need to differentiate between +/// multiple stop harnesses compiled into the same binary, you can use the +/// `HARNESS_STOP_INDEX` macro to specify different indices, then enable them at +/// runtime by configuring the fuzzer. +/// +/// # Example +/// +/// ``` +/// HARNESS_STOP(); +/// ``` +void HARNESS_STOP(void); + +/// HARNESS_STOP_INDEX +/// +/// Signal the fuzzer to stop and reset to the beginning of the fuzzing loop +/// with a "normal" stop status, indicating no solution has occurred. The index +/// specified by `stop_index` will be used. If you need to differentiate between +/// multiple stop harnesses compiled into the same binary, you can use this +/// macro to specify different indices, then enable them at runtime by +/// configuring the fuzzer. +/// +/// # Arguments +/// +/// - `stop_index`: The index to use for this stop harness +/// +/// # Example +/// +/// ``` +/// HARNESS_STOP_INDEX(0x0001U); +/// ``` +void HARNESS_STOP_INDEX(size_t stop_index); + +/// HARNESS_ASSERT +/// +/// Signal the fuzzer that a custom assertion has occurred, and the fuzzer +/// should stop the current fuzzing iteration and reset to the beginning of the +/// fuzzing loop with a "solution" stop status. The default index of 0 will be +/// used. If you need to differentiate between multiple assertion harnesses +/// compiled into the same binary, you can use the `HARNESS_ASSERT_INDEX` macro +/// to specify different indices, then enable them at runtime by configuring the +/// fuzzer. +/// +/// # Example +/// +/// ``` +/// HARNESS_ASSERT(); +/// ``` +void HARNESS_ASSERT(void); + +/// HARNESS_ASSERT_INDEX +/// +/// Signal the fuzzer that a custom assertion has occurred, and the fuzzer +/// should stop the current fuzzing iteration and reset to the beginning of the +/// fuzzing loop with a "solution" stop status. The index specified by +/// `assert_index` will be used. If you need to differentiate between multiple +/// assertion harnesses compiled into the same binary, you can use this macro to +/// specify different indices, then enable them at runtime by configuring the +/// fuzzer. +/// +/// # Arguments +/// +/// - `assert_index`: The index to use for this assertion harness +/// +/// # Example +/// +/// ``` +/// HARNESS_ASSERT_INDEX(0x0001U); +/// ``` +void HARNESS_ASSERT_INDEX(size_t assert_index); + +#endif // TSFFS_H +#else +#error "Unsupported compiler!" +#endif diff --git a/examples/tutorials/risc-v-kernel/src/tutorial-kernel-modules/package/kernel-modules/tutorial-mod/tutorial-mod.c b/examples/tutorials/risc-v-kernel/src/tutorial-kernel-modules/package/kernel-modules/tutorial-mod/tutorial-mod.c index 2ce22982..bf8fc817 100644 --- a/examples/tutorials/risc-v-kernel/src/tutorial-kernel-modules/package/kernel-modules/tutorial-mod/tutorial-mod.c +++ b/examples/tutorials/risc-v-kernel/src/tutorial-kernel-modules/package/kernel-modules/tutorial-mod/tutorial-mod.c @@ -15,7 +15,7 @@ #include #include -#include "tsffs-gcc-riscv64.h" +#include "tsffs.h" #define MAJOR_NUM 100 #define IOCTL_SET_MSG _IOW(MAJOR_NUM, 0, char *) diff --git a/examples/tutorials/risc-v-kernel/src/tutorial-mod-driver.c b/examples/tutorials/risc-v-kernel/src/tutorial-mod-driver.c index 8bbc9851..57e25aff 100644 --- a/examples/tutorials/risc-v-kernel/src/tutorial-mod-driver.c +++ b/examples/tutorials/risc-v-kernel/src/tutorial-mod-driver.c @@ -8,7 +8,7 @@ #include #include -#include "tsffs-gcc-riscv64.h" +#include "tsffs.h" #define MAJOR_NUM 100 #define IOCTL_SET_MSG _IOW(MAJOR_NUM, 0, char *) diff --git a/harness/.gitignore b/harness/.gitignore new file mode 100644 index 00000000..15309787 --- /dev/null +++ b/harness/.gitignore @@ -0,0 +1 @@ +*.o \ No newline at end of file diff --git a/harness/build.sh b/harness/build.sh new file mode 100755 index 00000000..4f271ab6 --- /dev/null +++ b/harness/build.sh @@ -0,0 +1,30 @@ +#!/bin/bash + +SCRIPT_DIR=$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" &>/dev/null && pwd) + +cat < "${SCRIPT_DIR}/tsffs.h" +// Copyright (C) 2024 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 + +#if defined(__GNUC__) || defined(__clang__) +#ifdef __i386__ +$(cat "${SCRIPT_DIR}/tsffs-gcc-x86.h") +#elif __x86_64__ +$(cat "${SCRIPT_DIR}/tsffs-gcc-x86_64.h") +#elif __riscv && !__LP64__ +$(cat "${SCRIPT_DIR}/tsffs-gcc-riscv32.h") +#elif __riscv && __LP64__ +$(cat "${SCRIPT_DIR}/tsffs-gcc-riscv64.h") +#elif __aarch64__ +$(cat "${SCRIPT_DIR}/tsffs-gcc-aarch64.h") +#elif __arm__ +$(cat "${SCRIPT_DIR}/tsffs-gcc-arm32.h") +#else +#error "Unsupported platform!" +#endif +#elif _MSC_VER +$(cat "${SCRIPT_DIR}/tsffs-msvc-x86_64.h") +#else +#error "Unsupported compiler!" +#endif +EOF diff --git a/harness/test.c b/harness/test.c new file mode 100644 index 00000000..bd5b665e --- /dev/null +++ b/harness/test.c @@ -0,0 +1,92 @@ +#ifdef SINGLE_FILE +#include "tsffs.h" +#else +#ifdef __i386__ +#include "tsffs-gcc-x86.h" +#elif __x86_64__ +#include "tsffs-gcc-x86_64.h" +#elif __riscv && !__LP64__ +#include "tsffs-gcc-riscv32.h" +#elif __riscv && __LP64__ +#include "tsffs-gcc-riscv64.h" +#elif __aarch64__ +#include "tsffs-gcc-aarch64.h" +#elif __arm__ +#include "tsffs-gcc-arm32.h" +#endif +#endif + +#include + +int test_start() { + char buf[1024]; + size_t size = 1024; + HARNESS_START(buf, &size); + return 0; +} + +int test_start_with_maximum_size() { + char buf[1024]; + size_t size = 1024; + HARNESS_START_WITH_MAXIMUM_SIZE(buf, size); + return 0; +} + +int test_start_with_maximum_size_and_ptr() { + char buf[1024]; + size_t size = 1024; + HARNESS_START_WITH_MAXIMUM_SIZE_AND_PTR(buf, &size, 1024); + return 0; +} + +int test_stop() { + char buf[1024]; + size_t size = 1024; + HARNESS_STOP(); + return 0; +} + +int test_assert() { + char buf[1024]; + size_t size = 1024; + HARNESS_ASSERT(); + return 0; +} + +#ifndef __arm__ +int test_start_index() { + char buf[1024]; + size_t size = 1024; + HARNESS_START_INDEX(1, buf, &size); + return 0; +} + +int test_start_with_maximum_size_index() { + char buf[1024]; + size_t size = 1024; + HARNESS_START_WITH_MAXIMUM_SIZE_INDEX(2, buf, size); + return 0; +} + +int test_start_with_maximum_size_and_ptr_index() { + char buf[1024]; + size_t size = 1024; + HARNESS_START_WITH_MAXIMUM_SIZE_AND_PTR_INDEX(3, buf, &size, 1024); + return 0; +} + +int test_stop_index() { + char buf[1024]; + size_t size = 1024; + HARNESS_STOP_INDEX(4); + return 0; +} + +int test_assert_index() { + char buf[1024]; + size_t size = 1024; + HARNESS_ASSERT_INDEX(5); + return 0; +} + +#endif diff --git a/harness/test.sh b/harness/test.sh new file mode 100755 index 00000000..3d9be350 --- /dev/null +++ b/harness/test.sh @@ -0,0 +1,62 @@ +#!/bin/bash + +# Copyright (C) 2024 Intel Corporation +# SPDX-License-Identifier: Apache-2.0 + +# Compile test.c for each of x86, x86_64, riscv32, riscv64 architecture + +SCRIPT_DIR=$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" &>/dev/null && pwd) + +set -e + +"${SCRIPT_DIR}/build.sh" + +rm -f "${SCRIPT_DIR}/test_x86_64-clang.o" || exit 0 +rm -f "${SCRIPT_DIR}/test_x86-clang.o" || exit 0 +rm -f "${SCRIPT_DIR}/test_riscv32-clang.o" || exit 0 +rm -f "${SCRIPT_DIR}/test_riscv64-clang.o" || exit 0 +rm -f "${SCRIPT_DIR}/test_x86_64-gcc.o" || exit 0 +rm -f "${SCRIPT_DIR}/test_x86-gcc.o" || exit 0 +rm -rf "${SCRIPT_DIR}/test_aarch64-clang.o" || exit 0 +rm -rf "${SCRIPT_DIR}/test_arm32-clang.o" || exit 0 +rm -f "${SCRIPT_DIR}/test_x86_64-clang-single-file.o" || exit 0 +rm -f "${SCRIPT_DIR}/test_x86-clang-single-file.o" || exit 0 +rm -f "${SCRIPT_DIR}/test_riscv32-clang-single-file.o" || exit 0 +rm -f "${SCRIPT_DIR}/test_riscv64-clang-single-file.o" || exit 0 +rm -f "${SCRIPT_DIR}/test_x86_64-gcc-single-file.o" || exit 0 +rm -f "${SCRIPT_DIR}/test_x86-gcc-single-file.o" || exit 0 +rm -rf "${SCRIPT_DIR}test_aarch64-clang-single-file.o" || exit 0 +rm -rf "${SCRIPT_DIR}test_arm32-clang-single-file.o" || exit 0 + +echo "Testing x86_64 (single file)..." +clang -target x86_64-unknown-linux-gnu -DSINGLE_FILE=1 -g -c "${SCRIPT_DIR}/test.c" -o "${SCRIPT_DIR}/test_x86_64-clang-single-file.o" +echo "Testing i386 (single file)..." +clang -target i386-unknown-linux-gnu -DSINGLE_FILE=1 -g -c "${SCRIPT_DIR}/test.c" -o "${SCRIPT_DIR}/test_x86-clang-single-file.o" +echo "Testing riscv32 (single file)..." +clang -target riscv32-unknown-linux-gnu -DSINGLE_FILE=1 -g -c "${SCRIPT_DIR}/test.c" -o "${SCRIPT_DIR}/test_riscv32-clang-single-file.o" +echo "Testing riscv64 (single file)..." +clang -target riscv64-unknown-linux-gnu -DSINGLE_FILE=1 -g -c "${SCRIPT_DIR}/test.c" -o "${SCRIPT_DIR}/test_riscv64-clang-single-file.o" +echo "Testing aarch64 (single file)..." +clang -target aarch64-unknown-linux-gnu -DSINGLE_FILE=1 -g -c "${SCRIPT_DIR}/test.c" -o "${SCRIPT_DIR}/test_aarch64-clang-single-file.o" +echo "Testing arm (single file)..." +clang -target arm-unknown-linux-gnu -mfloat-abi=soft -DSINGLE_FILE=1 -g -c "${SCRIPT_DIR}/test.c" -o "${SCRIPT_DIR}/test_arm32-clang-single-file.o" +echo "Testing x86_64 (single file, gcc)..." +gcc -DSINGLE_FILE=1 -g -c "${SCRIPT_DIR}/test.c" -o "${SCRIPT_DIR}/test_x86_64-gcc.o" +echo "Testing i386 (single file, gcc)..." +gcc -DSINGLE_FILE=1 -g -m32 -c "${SCRIPT_DIR}/test.c" -o "${SCRIPT_DIR}/test_x86-gcc.o" +echo "Testing x86_64 (multi file)..." +clang -target x86_64-unknown-linux-gnu -g -c "${SCRIPT_DIR}/test.c" -o "${SCRIPT_DIR}/test_x86_64-clang.o" +echo "Testing i386 (multi file)..." +clang -target i386-unknown-linux-gnu -g -c "${SCRIPT_DIR}/test.c" -o "${SCRIPT_DIR}/test_x86-clang.o" +echo "Testing riscv32(multi file)..." +clang -target riscv32-unknown-linux-gnu -g -c "${SCRIPT_DIR}/test.c" -o "${SCRIPT_DIR}/test_riscv32-clang.o" +echo "Testing riscv64(multi file)..." +clang -target riscv64-unknown-linux-gnu -g -c "${SCRIPT_DIR}/test.c" -o "${SCRIPT_DIR}/test_riscv64-clang.o" +echo "Testing aarch64 (multi file)..." +clang -target aarch64-unknown-linux-gnu -g -c "${SCRIPT_DIR}/test.c" -o "${SCRIPT_DIR}/test_aarch64-clang.o" +echo "Testing arm (multi file)..." +clang -target arm-unknown-linux-gnu -mfloat-abi=soft -g -c "${SCRIPT_DIR}/test.c" -o "${SCRIPT_DIR}/test_arm32-clang.o" +echo "Testing x86_64 (multi file, gcc)..." +gcc -g -c "${SCRIPT_DIR}/test.c" -o "${SCRIPT_DIR}/test_x86_64-gcc.o" +echo "Testing i386(multi file, gcc)..." +gcc -g -m32 -c "${SCRIPT_DIR}/test.c" -o "${SCRIPT_DIR}/test_x86-gcc.o" \ No newline at end of file diff --git a/harness/tsffs-gcc-aarch64.h b/harness/tsffs-gcc-aarch64.h new file mode 100644 index 00000000..f8cfa738 --- /dev/null +++ b/harness/tsffs-gcc-aarch64.h @@ -0,0 +1,447 @@ +// Copyright (C) 2024 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 + +/// Definitions and macros for compiled-in harnessing of C and C++ target +/// software for the RISC-V (32-bit) architecture + +#ifndef TSFFS_H +#define TSFFS_H + +/// Define common with LibFuzzer and other fuzzers to allow code that is +/// fuzzing-specific to be left in the codebase. See +/// https://llvm.org/docs/LibFuzzer.html#id35 for more information +#ifndef FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION +#define FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION (1) +#endif // FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION + +#define __stringify(x) #x +#define __tostring(x) __stringify(x) + +/// __orr +/// +/// Invoke the magic instruction defined by SIMICS for the RISC-V architecture +/// with a specific value of `n` +/// +/// # Arguments +/// +/// * `value` - The value of `n` to use in the magic instruction +#define __orr(value) \ + __asm__ __volatile__("orr x" __tostring(value) ", x" __tostring( \ + value) ", x" __tostring(value)); + +/// __orr_extended1 +/// +/// Invoke the magic instruction defined by SIMICS for the RISC-V architecture +/// with a specific value of `n` and a pseudo-argument in register `r10`. +/// +/// # Arguments +/// +/// * `value` - The value of `n` to use in the magic instruction +/// * `arg0` - The value to place in register `r10` +#define __orr_extended1(value, arg0) \ + __asm__ __volatile__( \ + "mov x28, %0; orr x" __tostring(value) ", x" __tostring( \ + value) ", x" __tostring(value) \ + : \ + : "g"(arg0)); + +/// __orr_extended2 +/// +/// Invoke the magic instruction defined by SIMICS for the RISC-V architecture +/// with a specific value of `n` and two pseudo-arguments in registers `r10` and +/// `r9`. +/// +/// # Arguments +/// +/// * `value` - The value of `n` to use in the magic instruction +/// * `arg0` - The value to place in register `r10` +/// * `arg1` - The value to place in register `r9` +#define __orr_extended2(value, arg0, arg1) \ + __asm__ __volatile__( \ + "mov x28, %0; mov x27, %1; orr x" __tostring(value) ", x" __tostring( \ + value) ", x" __tostring(value) \ + : \ + : "r"(arg0), "r"(arg1)); + +/// __orr_extended3 +/// +/// Invoke the magic instruction defined by SIMICS for the RISC-V architecture +/// with a specific value of `n` and three pseudo-arguments in registers `r10`, +/// `r9`, and `r8`. +/// +/// # Arguments +/// +/// * `value` - The value of `n` to use in the magic instruction +/// * `arg0` - The value to place in register `r10` +/// * `arg1` - The value to place in register `r9` +/// * `arg2` - The value to place in register `r8` +#define __orr_extended3(value, arg0, arg1, arg2) \ + __asm__ __volatile__( \ + "mov x28, %0; mov x27, %1; mov x26, %2; orr x" __tostring( \ + value) ", x" __tostring(value) ", x" __tostring(value) \ + : \ + : "r"(arg0), "r"(arg1), "r"(arg2)); + +/// __orr_extended4 +/// +/// Invoke the magic instruction defined by SIMICS for the RISC-V architecture +/// with a specific value of `n` and four pseudo-arguments in registers `r10`, +/// `r9`, `r8`, and `r7`. +/// +/// # Arguments +/// +/// * `value` - The value of `n` to use in the magic instruction +/// * `arg0` - The value to place in register `r10` +/// * `arg1` - The value to place in register `r9` +/// * `arg2` - The value to place in register `r8` +/// * `arg3` - The value to place in register `r7` +#define __orr_extended4(value, arg0, arg1, arg2, arg3) \ + __asm__ __volatile__( \ + "mov x28, %0; mov x27, %1; mov x26, %2; mov x25, %3; " \ + "orr x" __tostring(value) ", x" __tostring(value) ", x" __tostring( \ + value) \ + : \ + : "r"(arg0), "r"(arg1), "r"(arg2), "r"(arg3)); + +/// The default index number used for magic instructions. All magic instructions +/// support multiple start and stop indices, which defaults to 0 if not +/// specified. +#define DEFAULT_INDEX (0x0000U) + +/// Pseudo-hypercall number to signal the fuzzer to use the first argument to +/// the magic instruction as the pointer to the testcase buffer and the second +/// argument as a pointer to the size of the testcase buffer. +#define N_START_BUFFER_PTR_SIZE_PTR 1 + +/// HARNESS_START +/// +/// Signal the fuzzer to start the fuzzing loop at the point this macro is +/// called. The default "index" of 0 will be used. If you need multiple start +/// harnesses compiled into the same binary, you can use the +/// `HARNESS_START_INDEX` macro to specify different indices, then enable them +/// at runtime by configuring the fuzzer. +/// +/// When this macro is called: +/// +/// - A snapshot will be taken and saved +/// - The buffer pointed to by `buffer` will be saved and used as the testcase +/// buffer. Each +/// fuzzing iteration, a new test case will be written to this buffer. +/// - The size of the buffer pointed to by `size_ptr` will be saved as the +/// maximum testcase size. Each fuzzing iteration, the actual size of the +/// current testcase will be written to `*size_ptr`. +/// +/// # Arguments +/// +/// - `buffer`: The pointer to the testcase buffer +/// - `size_ptr`: The pointer to the size of the testcase buffer +/// +/// # Example +/// +/// ``` +/// unsigned char buffer[1024]; +/// size_t size; +/// HARNESS_START(buffer, &size); +/// ``` +#define HARNESS_START(buffer, size_ptr) \ + do { \ + __orr_extended3(N_START_BUFFER_PTR_SIZE_PTR, DEFAULT_INDEX, buffer, \ + size_ptr); \ + } while (0); + +/// HARNESS_START_INDEX +/// +/// Signal the fuzzer to start the fuzzing loop at the point this macro is +/// called. The index specified by `start_index` will be used. If you need +/// multiple start harnesses compiled into the same binary, you can use this +/// macro to specify different indices, then enable them at runtime by +/// configuring the fuzzer. +/// +/// When this macro is called: +/// +/// - A snapshot will be taken and saved +/// - The buffer pointed to by `buffer` will be saved and used as the testcase +/// buffer. Each +/// fuzzing iteration, a new test case will be written to this buffer. +/// - The size of the buffer pointed to by `size_ptr` will be saved as the +/// maximum testcase size. Each fuzzing iteration, the actual size of the +/// current testcase will be written to `*size_ptr`. +/// +/// # Arguments +/// +/// - `start_index`: The index to use for this start harness +/// - `buffer`: The pointer to the testcase buffer +/// - `size_ptr`: The pointer to the size of the testcase buffer +/// +/// # Example +/// +/// ``` +/// unsigned char buffer[1024]; +/// size_t size; +/// HARNESS_START_INDEX(0x0001U, buffer, &size); +/// ``` +#define HARNESS_START_INDEX(start_index, buffer, size_ptr) \ + do { \ + __orr_extended3(N_START_BUFFER_PTR_SIZE_PTR, start_index, buffer, \ + size_ptr); \ + } while (0); + +/// Pseudo-hypercall number to signal the fuzzer to use the first argument to +/// the magic instruction as the pointer to the testcase buffer and the second +/// argument as the maximum size of the testcase buffer. +#define N_START_BUFFER_PTR_SIZE_VAL 2 + +/// HARNESS_START_WITH_MAXIMUM_SIZE +/// +/// Signal the fuzzer to start the fuzzing loop at the point this macro is +/// called. The default "index" of 0 will be used. If you need multiple start +/// harnesses compiled into the same binary, you can use the +/// `HARNESS_START_WITH_MAXIMUM_SIZE_INDEX` macro to specify different indices, +/// then enable them at runtime by configuring the fuzzer. +/// +/// When this macro is called: +/// +/// - A snapshot will be taken and saved +/// - The buffer pointed to by `buffer` will be saved and used as the testcase +/// buffer. Each +/// fuzzing iteration, a new test case will be written to this buffer. +/// - The `max_size` value will be saved as the maximum testcase size. Fuzzing +/// test cases will be truncated to this size before being written to the +/// buffer. +/// +/// # Arguments +/// +/// - `buffer`: The pointer to the testcase buffer +/// - `max_size`: The maximum size of the testcase buffer +/// +/// # Example +/// +/// ``` +/// unsigned char buffer[1024]; +/// HARNESS_START_WITH_MAXIMUM_SIZE(buffer, 1024); +/// ``` +#define HARNESS_START_WITH_MAXIMUM_SIZE(buffer, max_size) \ + do { \ + __orr_extended3(N_START_BUFFER_PTR_SIZE_VAL, DEFAULT_INDEX, buffer, \ + max_size); \ + } while (0); + +/// HARNESS_START_WITH_MAXIMUM_SIZE_INDEX +/// +/// Signal the fuzzer to start the fuzzing loop at the point this macro is +/// called. The index specified by `start_index` will be used. If you need +/// multiple start harnesses compiled into the same binary, you can use this +/// macro to specify different indices, then enable them at runtime by +/// configuring the fuzzer. +/// +/// When this macro is called: +/// +/// - A snapshot will be taken and saved +/// - The buffer pointed to by `buffer` will be saved and used as the testcase +/// buffer. Each +/// fuzzing iteration, a new test case will be written to this buffer. +/// - The `max_size` value will be saved as the maximum testcase size. Fuzzing +/// test cases will be truncated to this size before being written to the +/// buffer. +/// +/// # Arguments +/// +/// - `start_index`: The index to use for this start harness +/// - `buffer`: The pointer to the testcase buffer +/// - `max_size`: The maximum size of the testcase buffer +/// +/// # Example +/// +/// ``` +/// unsigned char buffer[1024]; +/// HARNESS_START_WITH_MAXIMUM_SIZE_INDEX(0x0001U, buffer, 1024); +/// ``` +#define HARNESS_START_WITH_MAXIMUM_SIZE_INDEX(start_index, buffer, max_size) \ + do { \ + __orr_extended3(N_START_BUFFER_PTR_SIZE_VAL, start_index, buffer, \ + max_size); \ + } while (0); + +/// Pseudo-hypercall number to signal the fuzzer to use the first argument to +/// the magic instruction as the pointer to the testcase buffer, the second +/// argument as a pointer to the size of the testcase buffer, and the third +/// argument as the maximum size of the testcase buffer. +#define N_START_BUFFER_PTR_SIZE_PTR_VAL 3 + +/// HARNESS_START_WITH_MAXIMUM_SIZE_AND_PTR +/// +/// Signal the fuzzer to start the fuzzing loop at the point this macro is +/// called. The default "index" of 0 will be used. If you need multiple start +/// harnesses compiled into the same binary, you can use the +/// `HARNESS_START_WITH_MAXIMUM_SIZE_AND_PTR_INDEX` macro to specify different +/// indices, then enable them at runtime by configuring the fuzzer. +/// +/// When this macro is called: +/// +/// - A snapshot will be taken and saved +/// - The buffer pointed to by `buffer` will be saved and used as the testcase +/// buffer. Each +/// fuzzing iteration, a new test case will be written to this buffer. +/// - The address `size_ptr` will be saved. Each fuzzing iteration, the actual +/// size of the current testcase will be written to `*size_ptr`. +/// - The `max_size` value will be saved as the maximum testcase size. Fuzzing +/// test cases will be truncated to this size before being written to the +/// buffer. +/// +/// # Arguments +/// +/// - `buffer`: The pointer to the testcase buffer +/// - `size_ptr`: The pointer to the size of the testcase buffer +/// - `max_size`: The maximum size of the testcase buffer +/// +/// # Example +/// +/// ``` +/// unsigned char buffer[1024]; +/// size_t size; +/// HARNESS_START_WITH_MAXIMUM_SIZE_AND_PTR(buffer, &size, 1024); +/// ``` +#define HARNESS_START_WITH_MAXIMUM_SIZE_AND_PTR(buffer, size_ptr, max_size) \ + do { \ + __orr_extended4(N_START_BUFFER_PTR_SIZE_PTR_VAL, DEFAULT_INDEX, buffer, \ + size_ptr, max_size); \ + } while (0); + +/// HARNESS_START_WITH_MAXIMUM_SIZE_AND_PTR_INDEX +/// +/// Signal the fuzzer to start the fuzzing loop at the point this macro is +/// called. The index specified by `start_index` will be used. If you need +/// multiple start harnesses compiled into the same binary, you can use this +/// macro to specify different indices, then enable them at runtime by +/// configuring the fuzzer. +/// +/// When this macro is called: +/// +/// - A snapshot will be taken and saved +/// - The buffer pointed to by `buffer` will be saved and used as the testcase +/// buffer. Each +/// fuzzing iteration, a new test case will be written to this buffer. +/// - The address `size_ptr` will be saved. Each fuzzing iteration, the actual +/// size of the current testcase will be written to `*size_ptr`. +/// - The `max_size` value will be saved as the maximum testcase size. Fuzzing +/// test cases will be truncated to this size before being written to the +/// buffer. +/// +/// # Arguments +/// +/// - `start_index`: The index to use for this start harness +/// - `buffer`: The pointer to the testcase buffer +/// - `size_ptr`: The pointer to the size of the testcase buffer +/// - `max_size`: The maximum size of the testcase buffer +/// +/// # Example +/// +/// ``` +/// unsigned char buffer[1024]; +/// size_t size; +/// HARNESS_START_WITH_MAXIMUM_SIZE_AND_PTR_INDEX(0x0001U, buffer, &size, 1024); +/// ``` +#define HARNESS_START_WITH_MAXIMUM_SIZE_AND_PTR_INDEX(start_index, buffer, \ + size_ptr, max_size) \ + do { \ + __orr_extended4(N_START_BUFFER_PTR_SIZE_PTR_VAL, start_index, buffer, \ + size_ptr, max_size); \ + } while (0); + +/// Pseudo-hypercall number to signal the fuzzer to stop the current fuzzing +/// iteration and reset to the beginning of the fuzzing loop with a "normal" +/// stop status, indicating no solution has occurred. +#define N_STOP_NORMAL 4 + +/// HARNESS_STOP +/// +/// Signal the fuzzer to stop and reset to the beginning of the fuzzing loop +/// with a "normal" stop status, indicating no solution has occurred. The +/// default index of 0 will be used. If you need to differentiate between +/// multiple stop harnesses compiled into the same binary, you can use the +/// `HARNESS_STOP_INDEX` macro to specify different indices, then enable them at +/// runtime by configuring the fuzzer. +/// +/// # Example +/// +/// ``` +/// HARNESS_STOP(); +/// ``` +#define HARNESS_STOP() \ + do { \ + __orr_extended1(N_STOP_NORMAL, DEFAULT_INDEX); \ + } while (0); + +/// HARNESS_STOP_INDEX +/// +/// Signal the fuzzer to stop and reset to the beginning of the fuzzing loop +/// with a "normal" stop status, indicating no solution has occurred. The index +/// specified by `stop_index` will be used. If you need to differentiate between +/// multiple stop harnesses compiled into the same binary, you can use this +/// macro to specify different indices, then enable them at runtime by +/// configuring the fuzzer. +/// +/// # Arguments +/// +/// - `stop_index`: The index to use for this stop harness +/// +/// # Example +/// +/// ``` +/// HARNESS_STOP_INDEX(0x0001U); +/// ``` +#define HARNESS_STOP_INDEX(stop_index) \ + do { \ + __orr_extended1(N_STOP_NORMAL, stop_index); \ + } while (0); + +/// Pseudo-hypercall number to signal the fuzzer that a custom assertion has +/// occurred, and the fuzzer should stop the current fuzzing iteration and reset +/// to the beginning of the fuzzing loop with a "solution" stop status. +#define N_STOP_ASSERT 5 + +/// HARNESS_ASSERT +/// +/// Signal the fuzzer that a custom assertion has occurred, and the fuzzer +/// should stop the current fuzzing iteration and reset to the beginning of the +/// fuzzing loop with a "solution" stop status. The default index of 0 will be +/// used. If you need to differentiate between multiple assertion harnesses +/// compiled into the same binary, you can use the `HARNESS_ASSERT_INDEX` macro +/// to specify different indices, then enable them at runtime by configuring the +/// fuzzer. +/// +/// # Example +/// +/// ``` +/// HARNESS_ASSERT(); +/// ``` +#define HARNESS_ASSERT() \ + do { \ + __orr_extended1(N_STOP_ASSERT, DEFAULT_INDEX); \ + } while (0); + +/// HARNESS_ASSERT_INDEX +/// +/// Signal the fuzzer that a custom assertion has occurred, and the fuzzer +/// should stop the current fuzzing iteration and reset to the beginning of the +/// fuzzing loop with a "solution" stop status. The index specified by +/// `assert_index` will be used. If you need to differentiate between multiple +/// assertion harnesses compiled into the same binary, you can use this macro to +/// specify different indices, then enable them at runtime by configuring the +/// fuzzer. +/// +/// # Arguments +/// +/// - `assert_index`: The index to use for this assertion harness +/// +/// # Example +/// +/// ``` +/// HARNESS_ASSERT_INDEX(0x0001U); +/// ``` +#define HARNESS_ASSERT_INDEX(assert_index) \ + do { \ + __orr_extended1(N_STOP_ASSERT, assert_index); \ + } while (0); + +#endif // TSFFS_H diff --git a/harness/tsffs-gcc-arm32.h b/harness/tsffs-gcc-arm32.h new file mode 100644 index 00000000..62893809 --- /dev/null +++ b/harness/tsffs-gcc-arm32.h @@ -0,0 +1,288 @@ +// Copyright (C) 2024 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 + +/// Definitions and macros for compiled-in harnessing of C and C++ target +/// software for the RISC-V (32-bit) architecture + +#ifndef TSFFS_H +#define TSFFS_H + +/// Define common with LibFuzzer and other fuzzers to allow code that is +/// fuzzing-specific to be left in the codebase. See +/// https://llvm.org/docs/LibFuzzer.html#id35 for more information +#ifndef FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION +#define FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION (1) +#endif // FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION + +#define __stringify(x) #x +#define __tostring(x) __stringify(x) + +/// __orr +/// +/// Invoke the magic instruction defined by SIMICS for the RISC-V architecture +/// with a specific value of `n` +/// +/// # Arguments +/// +/// * `value` - The value of `n` to use in the magic instruction +#define __orr(value) \ + __asm__ __volatile__("orr r" __tostring(value) ", r" __tostring( \ + value) ", r" __tostring(value)); + +/// __orr_extended1 +/// +/// Invoke the magic instruction defined by SIMICS for the RISC-V architecture +/// with a specific value of `n` and a pseudo-argument in register `r10`. +/// +/// # Arguments +/// +/// * `value` - The value of `n` to use in the magic instruction +/// * `arg0` - The value to place in register `r10` +#define __orr_extended1(value, arg0) \ + __asm__ __volatile__( \ + "mov r10, %0; orr r" __tostring(value) ", r" __tostring( \ + value) ", r" __tostring(value) \ + : \ + : "r"(arg0)); + +/// __orr_extended2 +/// +/// Invoke the magic instruction defined by SIMICS for the RISC-V architecture +/// with a specific value of `n` and two pseudo-arguments in registers `r10` and +/// `r9`. +/// +/// # Arguments +/// +/// * `value` - The value of `n` to use in the magic instruction +/// * `arg0` - The value to place in register `r10` +/// * `arg1` - The value to place in register `r9` +#define __orr_extended2(value, arg0, arg1) \ + __asm__ __volatile__( \ + "mov r10, %0; mov r9, %1; orr r" __tostring(value) ", r" __tostring( \ + value) ", r" __tostring(value) \ + : \ + : "r"(arg0), "r"(arg1)); + +/// __orr_extended3 +/// +/// Invoke the magic instruction defined by SIMICS for the RISC-V architecture +/// with a specific value of `n` and three pseudo-arguments in registers `r10`, +/// `r9`, and `r8`. +/// +/// # Arguments +/// +/// * `value` - The value of `n` to use in the magic instruction +/// * `arg0` - The value to place in register `r10` +/// * `arg1` - The value to place in register `r9` +/// * `arg2` - The value to place in register `r8` +#define __orr_extended3(value, arg0, arg1, arg2) \ + __asm__ __volatile__( \ + "mov r10, %0; mov r9, %1; mov r8, %2; orr r" __tostring( \ + value) ", r" __tostring(value) ", r" __tostring(value) \ + : \ + : "r"(arg0), "r"(arg1), "r"(arg2)); + +/// __orr_extended4 +/// +/// Invoke the magic instruction defined by SIMICS for the RISC-V architecture +/// with a specific value of `n` and four pseudo-arguments in registers `r10`, +/// `r9`, `r8`, and `r7`. +/// +/// # Arguments +/// +/// * `value` - The value of `n` to use in the magic instruction +/// * `arg0` - The value to place in register `r10` +/// * `arg1` - The value to place in register `r9` +/// * `arg2` - The value to place in register `r8` +/// * `arg3` - The value to place in register `r7` +#define __orr_extended4(value, arg0, arg1, arg2, arg3) \ + __asm__ __volatile__( \ + "mov r10, %0; mov r9, %1; mov r8, %2; mov r7, %3; " \ + "orr r" __tostring(value) ", r" __tostring(value) ", r" __tostring( \ + value) \ + : \ + : "r"(arg0), "r"(arg1), "r"(arg2), "r"(arg3)); + +/// Magic value defined by SIMICS as the "leaf" value of a CPUID instruction +/// that is treated as a magic instruction. +#define MAGIC (0x4711U) + +/// The default index number used for magic instructions. All magic instructions +/// support multiple start and stop indices, which defaults to 0 if not +/// specified. +#define DEFAULT_INDEX (0x0000U) + +/// Pseudo-hypercall number to signal the fuzzer to use the first argument to +/// the magic instruction as the pointer to the testcase buffer and the second +/// argument as a pointer to the size of the testcase buffer. +#define N_START_BUFFER_PTR_SIZE_PTR 1 + +/// HARNESS_START +/// +/// Signal the fuzzer to start the fuzzing loop at the point this macro is +/// called. The default "index" of 0 will be used. If you need multiple start +/// harnesses compiled into the same binary, you can use the +/// `HARNESS_START_INDEX` macro to specify different indices, then enable them +/// at runtime by configuring the fuzzer. +/// +/// When this macro is called: +/// +/// - A snapshot will be taken and saved +/// - The buffer pointed to by `buffer` will be saved and used as the testcase +/// buffer. Each +/// fuzzing iteration, a new test case will be written to this buffer. +/// - The size of the buffer pointed to by `size_ptr` will be saved as the +/// maximum testcase size. Each fuzzing iteration, the actual size of the +/// current testcase will be written to `*size_ptr`. +/// +/// # Arguments +/// +/// - `buffer`: The pointer to the testcase buffer +/// - `size_ptr`: The pointer to the size of the testcase buffer +/// +/// # Example +/// +/// ``` +/// unsigned char buffer[1024]; +/// size_t size; +/// HARNESS_START(buffer, &size); +/// ``` +#define HARNESS_START(buffer, size_ptr) \ + do { \ + __orr_extended2(N_START_BUFFER_PTR_SIZE_PTR, buffer, size_ptr); \ + } while (0); + +/// Pseudo-hypercall number to signal the fuzzer to use the first argument to +/// the magic instruction as the pointer to the testcase buffer and the second +/// argument as the maximum size of the testcase buffer. +#define N_START_BUFFER_PTR_SIZE_VAL 2 + +/// HARNESS_START_WITH_MAXIMUM_SIZE +/// +/// Signal the fuzzer to start the fuzzing loop at the point this macro is +/// called. The default "index" of 0 will be used. If you need multiple start +/// harnesses compiled into the same binary, you can use the +/// `HARNESS_START_WITH_MAXIMUM_SIZE_INDEX` macro to specify different indices, +/// then enable them at runtime by configuring the fuzzer. +/// +/// When this macro is called: +/// +/// - A snapshot will be taken and saved +/// - The buffer pointed to by `buffer` will be saved and used as the testcase +/// buffer. Each +/// fuzzing iteration, a new test case will be written to this buffer. +/// - The `max_size` value will be saved as the maximum testcase size. Fuzzing +/// test cases will be truncated to this size before being written to the +/// buffer. +/// +/// # Arguments +/// +/// - `buffer`: The pointer to the testcase buffer +/// - `max_size`: The maximum size of the testcase buffer +/// +/// # Example +/// +/// ``` +/// unsigned char buffer[1024]; +/// HARNESS_START_WITH_MAXIMUM_SIZE(buffer, 1024); +/// ``` +#define HARNESS_START_WITH_MAXIMUM_SIZE(buffer, max_size) \ + do { \ + __orr_extended2(N_START_BUFFER_PTR_SIZE_VAL, buffer, max_size); \ + } while (0); + +/// Pseudo-hypercall number to signal the fuzzer to use the first argument to +/// the magic instruction as the pointer to the testcase buffer, the second +/// argument as a pointer to the size of the testcase buffer, and the third +/// argument as the maximum size of the testcase buffer. +#define N_START_BUFFER_PTR_SIZE_PTR_VAL 3 + +/// HARNESS_START_WITH_MAXIMUM_SIZE_AND_PTR +/// +/// Signal the fuzzer to start the fuzzing loop at the point this macro is +/// called. The default "index" of 0 will be used. If you need multiple start +/// harnesses compiled into the same binary, you can use the +/// `HARNESS_START_WITH_MAXIMUM_SIZE_AND_PTR_INDEX` macro to specify different +/// indices, then enable them at runtime by configuring the fuzzer. +/// +/// When this macro is called: +/// +/// - A snapshot will be taken and saved +/// - The buffer pointed to by `buffer` will be saved and used as the testcase +/// buffer. Each +/// fuzzing iteration, a new test case will be written to this buffer. +/// - The address `size_ptr` will be saved. Each fuzzing iteration, the actual +/// size of the current testcase will be written to `*size_ptr`. +/// - The `max_size` value will be saved as the maximum testcase size. Fuzzing +/// test cases will be truncated to this size before being written to the +/// buffer. +/// +/// # Arguments +/// +/// - `buffer`: The pointer to the testcase buffer +/// - `size_ptr`: The pointer to the size of the testcase buffer +/// - `max_size`: The maximum size of the testcase buffer +/// +/// # Example +/// +/// ``` +/// unsigned char buffer[1024]; +/// size_t size; +/// HARNESS_START_WITH_MAXIMUM_SIZE_AND_PTR(buffer, &size, 1024); +/// ``` +#define HARNESS_START_WITH_MAXIMUM_SIZE_AND_PTR(buffer, size_ptr, max_size) \ + do { \ + __orr_extended3(N_START_BUFFER_PTR_SIZE_PTR_VAL, buffer, size_ptr, \ + max_size); \ + } while (0); + +/// Pseudo-hypercall number to signal the fuzzer to stop the current fuzzing +/// iteration and reset to the beginning of the fuzzing loop with a "normal" +/// stop status, indicating no solution has occurred. +#define N_STOP_NORMAL 4 + +/// HARNESS_STOP +/// +/// Signal the fuzzer to stop and reset to the beginning of the fuzzing loop +/// with a "normal" stop status, indicating no solution has occurred. The +/// default index of 0 will be used. If you need to differentiate between +/// multiple stop harnesses compiled into the same binary, you can use the +/// `HARNESS_STOP_INDEX` macro to specify different indices, then enable them at +/// runtime by configuring the fuzzer. +/// +/// # Example +/// +/// ``` +/// HARNESS_STOP(); +/// ``` +#define HARNESS_STOP() \ + do { \ + __orr(N_STOP_NORMAL); \ + } while (0); + +/// Pseudo-hypercall number to signal the fuzzer that a custom assertion has +/// occurred, and the fuzzer should stop the current fuzzing iteration and reset +/// to the beginning of the fuzzing loop with a "solution" stop status. +#define N_STOP_ASSERT 5 + +/// HARNESS_ASSERT +/// +/// Signal the fuzzer that a custom assertion has occurred, and the fuzzer +/// should stop the current fuzzing iteration and reset to the beginning of the +/// fuzzing loop with a "solution" stop status. The default index of 0 will be +/// used. If you need to differentiate between multiple assertion harnesses +/// compiled into the same binary, you can use the `HARNESS_ASSERT_INDEX` macro +/// to specify different indices, then enable them at runtime by configuring the +/// fuzzer. +/// +/// # Example +/// +/// ``` +/// HARNESS_ASSERT(); +/// ``` +#define HARNESS_ASSERT() \ + do { \ + __orr_extended1(N_STOP_ASSERT, DEFAULT_INDEX); \ + } while (0); + +#endif // TSFFS_H \ No newline at end of file diff --git a/harness/tsffs-gcc-riscv32.h b/harness/tsffs-gcc-riscv32.h index 1847b3c4..5e664c1c 100644 --- a/harness/tsffs-gcc-riscv32.h +++ b/harness/tsffs-gcc-riscv32.h @@ -2,25 +2,7 @@ // SPDX-License-Identifier: Apache-2.0 /// Definitions and macros for compiled-in harnessing of C and C++ target -/// software for the RISC-V (64-bit) architecture -/// -/// Example: -/// ```c -/// #include "tsffs-gcc-riscv32.h" -/// -/// int main() { -/// char buf[0x10]; -/// size_t size = 0x10; -/// size_t *size_ptr = &size; -/// HARNESS_START((char *)buf, size_ptr); -/// int retval = YourSpecialDecoder(buf, *size_ptr); -/// if (!retval) { -/// HARNESS_ASSERT(); -/// } else { -/// HARNESS_STOP(); -/// } -/// } -/// ``` +/// software for the RISC-V (32-bit) architecture #ifndef TSFFS_H #define TSFFS_H @@ -32,93 +14,430 @@ #define FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION (1) #endif // FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION -/// Default magic instruction `n` value to signal the TSFFS fuzzer to start the -/// fuzzing loop -#define MAGIC_START (0x0001U) -/// Default magic instruction `n` value to signal the TSFFS fuzzer to stop and -/// reset the fuzzing loop -#define MAGIC_STOP (0x0002U) -/// Default magic instruction `n` value to signal the TSFFS fuzzer that an error -/// has occurred and the testcase input should be saved as a solution -#define MAGIC_ASSERT (0x0003U) - -/// Alternative magic numbers that can be used for start and stop events in -/// conjunction with setting the magic number for each event via the SIMICS or -/// SIMICS Python script interface -#define MAGIC_ALT_0 (0x0004U) -#define MAGIC_ALT_1 (0x0005U) -#define MAGIC_ALT_2 (0x0006U) -#define MAGIC_ALT_3 (0x0007U) -#define MAGIC_ALT_4 (0x0008U) -#define MAGIC_ALT_5 (0x0009U) -#define MAGIC_ALT_6 (0x000aU) -#define MAGIC_ALT_7 (0x000bU) +/// __srai +/// +/// Invoke the magic instruction defined by SIMICS for the RISC-V architecture +/// with a specific value of `n` +/// +/// # Arguments +/// +/// * `value` - The value of `n` to use in the magic instruction +#define __srai(value) \ + __asm__ __volatile__("srai zero, zero, %0" : : "I"(value) :) +/// __srai_extended1 +/// /// Invoke the magic instruction defined by SIMICS for the RISC-V architecture -/// (`srai zero, zero, n`) with a specific value of `n`, after setting register -/// `a0` to the value of the pointer to the testcase and register `a1` to the -/// value of the pointer to the testcase size. These registers are accessed by -/// the fuzzer and are defined per-architecture. -#define __srai_extended(value, testcase_ptr, size_ptr) \ - __asm__ __volatile__("mv a0, %0; mv a1, %1; srai zero, zero, %2" \ - : \ - : "r"(testcase_ptr), "r"(size_ptr), "I"(value) \ +/// with a specific value of `n` and a pseudo-argument in register `a0`. +/// +/// # Arguments +/// +/// * `value` - The value of `n` to use in the magic instruction +/// * `arg0` - The value to place in register `a0` +#define __srai_extended1(value, arg0) \ + __asm__ __volatile__("mv a0, %0; srai zero, zero, %1" \ + : \ + : "r"(arg0), "I"(value) \ + : "a0"); + +/// __srai_extended2 +/// +/// Invoke the magic instruction defined by SIMICS for the RISC-V architecture +/// with a specific value of `n` and pseudo-arguments in registers `a0` and +/// `a1`. +/// +/// # Arguments +/// +/// * `value` - The value of `n` to use in the magic instruction +/// * `arg0` - The value to place in register `a0` +/// * `arg1` - The value to place in register `a1` +#define __srai_extended2(value, arg0, arg1) \ + __asm__ __volatile__("mv a0, %0; mv a1, %1; srai zero, zero, %2" \ + : \ + : "r"(arg0), "r"(arg1), "I"(value) \ : "a0", "a1"); +/// __srai_extended3 +/// /// Invoke the magic instruction defined by SIMICS for the RISC-V architecture -/// (`srai zero, zero, n`) with a specific value of `n` -#define __srai(value) \ - __asm__ __volatile__("srai zero, zero, %0" : : "I"(value) :) +/// with a specific value of `n` and pseudo-arguments in registers `a0`, `a1`, +/// and `a2`. +/// +/// # Arguments +/// +/// * `value` - The value of `n` to use in the magic instruction +/// * `arg0` - The value to place in register `a0` +/// * `arg1` - The value to place in register `a1` +/// * `arg2` - The value to place in register `a2` +#define __srai_extended3(value, arg0, arg1, arg2) \ + __asm__ __volatile__("mv a0, %0; mv a1, %1; mv a2, %2; srai zero, zero, %3" \ + : \ + : "r"(arg0), "r"(arg1), "r"(arg2), "I"(value) \ + : "a0", "a1", "a2"); + +/// __srai_extended4 +/// +/// Invoke the magic instruction defined by SIMICS for the RISC-V architecture +/// with a specific value of `n` and pseudo-arguments in registers `a0`, `a1`, +/// `a2`, and `a3`. +/// +/// # Arguments +/// +/// * `value` - The value of `n` to use in the magic instruction +/// * `arg0` - The value to place in register `a0` +/// * `arg1` - The value to place in register `a1` +/// * `arg2` - The value to place in register `a2` +/// * `arg3` - The value to place in register `a3` +#define __srai_extended4(value, arg0, arg1, arg2, arg3) \ + __asm__ __volatile__( \ + "mv a0, %0; mv a1, %1; mv a2, %2; mv a3, %3; srai zero, zero, %4" \ + : \ + : "r"(arg0), "r"(arg1), "r"(arg2), "r"(arg3), "I"(value) \ + : "a0", "a1", "a2", "a3"); + +/// Magic value defined by SIMICS as the "leaf" value of a CPUID instruction +/// that is treated as a magic instruction. +#define MAGIC (0x4711U) + +/// The default index number used for magic instructions. All magic instructions +/// support multiple start and stop indices, which defaults to 0 if not +/// specified. +#define DEFAULT_INDEX (0x0000U) + +/// Pseudo-hypercall number to signal the fuzzer to use the first argument to +/// the magic instruction as the pointer to the testcase buffer and the second +/// argument as a pointer to the size of the testcase buffer. +#define N_START_BUFFER_PTR_SIZE_PTR (0x0001U) + +/// HARNESS_START +/// +/// Signal the fuzzer to start the fuzzing loop at the point this macro is +/// called. The default "index" of 0 will be used. If you need multiple start +/// harnesses compiled into the same binary, you can use the +/// `HARNESS_START_INDEX` macro to specify different indices, then enable them +/// at runtime by configuring the fuzzer. +/// +/// When this macro is called: +/// +/// - A snapshot will be taken and saved +/// - The buffer pointed to by `buffer` will be saved and used as the testcase +/// buffer. Each +/// fuzzing iteration, a new test case will be written to this buffer. +/// - The size of the buffer pointed to by `size_ptr` will be saved as the +/// maximum testcase size. Each fuzzing iteration, the actual size of the +/// current testcase will be written to `*size_ptr`. +/// +/// # Arguments +/// +/// - `buffer`: The pointer to the testcase buffer +/// - `size_ptr`: The pointer to the size of the testcase buffer +/// +/// # Example +/// +/// ``` +/// unsigned char buffer[1024]; +/// size_t size; +/// HARNESS_START(buffer, &size); +/// ``` +#define HARNESS_START(buffer, size_ptr) \ + do { \ + __srai_extended3(N_START_BUFFER_PTR_SIZE_PTR, DEFAULT_INDEX, buffer, \ + size_ptr); \ + } while (0); + +/// HARNESS_START_INDEX +/// +/// Signal the fuzzer to start the fuzzing loop at the point this macro is +/// called. The index specified by `start_index` will be used. If you need +/// multiple start harnesses compiled into the same binary, you can use this +/// macro to specify different indices, then enable them at runtime by +/// configuring the fuzzer. +/// +/// When this macro is called: +/// +/// - A snapshot will be taken and saved +/// - The buffer pointed to by `buffer` will be saved and used as the testcase +/// buffer. Each +/// fuzzing iteration, a new test case will be written to this buffer. +/// - The size of the buffer pointed to by `size_ptr` will be saved as the +/// maximum testcase size. Each fuzzing iteration, the actual size of the +/// current testcase will be written to `*size_ptr`. +/// +/// # Arguments +/// +/// - `start_index`: The index to use for this start harness +/// - `buffer`: The pointer to the testcase buffer +/// - `size_ptr`: The pointer to the size of the testcase buffer +/// +/// # Example +/// +/// ``` +/// unsigned char buffer[1024]; +/// size_t size; +/// HARNESS_START_INDEX(0x0001U, buffer, &size); +/// ``` +#define HARNESS_START_INDEX(start_index, buffer, size_ptr) \ + do { \ + __srai_extended3(N_START_BUFFER_PTR_SIZE_PTR, start_index, buffer, \ + size_ptr); \ + } while (0); + +/// Pseudo-hypercall number to signal the fuzzer to use the first argument to +/// the magic instruction as the pointer to the testcase buffer and the second +/// argument as the maximum size of the testcase buffer. +#define N_START_BUFFER_PTR_SIZE_VAL (0x0002U) -/// Signal the fuzzer using a specific magic value `start` to start the fuzzing -/// loop at the point this macro is called. A snapshot will be taken when the -/// macro is called, and the maximum testcase size `*size_ptr` will be saved as -/// `max_testcase_size`. Each iteration of the fuzzing loop, the fuzzer input -/// (the "testcase") will be written to `*testcase_ptr` as if running -/// `memcpy(testcase_ptr, current_testcase, max_testcase_size)`, and the actual -/// size of the current testcase will be written to -/// `*size_ptr` as if running `*size_ptr = current_testcase_size`. -#define __arch_harness_start(start, testcase_ptr, size_ptr) \ - do { \ - __srai_extended(start, testcase_ptr, size_ptr); \ - } while (0) - -/// Signal the fuzzer using the a specific magic value (`stop`) to stop and -/// reset to the beginning of the fuzzing loop with a "normal" stop status, -/// indicating no solution has occurred. -#define __arch_harness_stop(stop) \ - do { \ - __srai(stop); \ - } while (0) - -/// Signal the fuzzer using the default magic value to start the fuzzing loop at -/// the point this macro is called. A snapshot will be taken when the macro is -/// called, and the maximum testcase size `*size_ptr` will be saved as -/// `max_testcase_size`. Each iteration of the fuzzing loop, the fuzzer input -/// (the "testcase") will be written to -/// `*testcase_ptr` as if running `memcpy(testcase_ptr, current_testcase, -/// max_testcase_size)`, and the actual size of the current testcase will be -/// written to -/// `*size_ptr` as if running `*size_ptr = current_testcase_size`. -#define HARNESS_START(testcase_ptr, size_ptr) \ - do { \ - __arch_harness_start(MAGIC_START, testcase_ptr, size_ptr); \ - } while (0) - -/// Signal the fuzzer using the default magic value to stop and reset to the -/// beginning of the fuzzing loop with a "normal" stop status, indicating no -/// solution has occurred. -#define HARNESS_STOP() \ - do { \ - __arch_harness_stop(MAGIC_STOP); \ - } while (0) - -/// Signal the fuzzer using the default magic value to stop and reset to the -/// beginning of the fuzzing loop with a "solution" stop status, indicating some -/// custom error has occurred. -#define HARNESS_ASSERT() \ - do { \ - __arch_harness_stop(MAGIC_ASSERT); \ - } while (0) +/// HARNESS_START_WITH_MAXIMUM_SIZE +/// +/// Signal the fuzzer to start the fuzzing loop at the point this macro is +/// called. The default "index" of 0 will be used. If you need multiple start +/// harnesses compiled into the same binary, you can use the +/// `HARNESS_START_WITH_MAXIMUM_SIZE_INDEX` macro to specify different indices, +/// then enable them at runtime by configuring the fuzzer. +/// +/// When this macro is called: +/// +/// - A snapshot will be taken and saved +/// - The buffer pointed to by `buffer` will be saved and used as the testcase +/// buffer. Each +/// fuzzing iteration, a new test case will be written to this buffer. +/// - The `max_size` value will be saved as the maximum testcase size. Fuzzing +/// test cases will be truncated to this size before being written to the +/// buffer. +/// +/// # Arguments +/// +/// - `buffer`: The pointer to the testcase buffer +/// - `max_size`: The maximum size of the testcase buffer +/// +/// # Example +/// +/// ``` +/// unsigned char buffer[1024]; +/// HARNESS_START_WITH_MAXIMUM_SIZE(buffer, 1024); +/// ``` +#define HARNESS_START_WITH_MAXIMUM_SIZE(buffer, max_size) \ + do { \ + __srai_extended3(N_START_BUFFER_PTR_SIZE_VAL, DEFAULT_INDEX, buffer, \ + max_size); \ + } while (0); + +/// HARNESS_START_WITH_MAXIMUM_SIZE_INDEX +/// +/// Signal the fuzzer to start the fuzzing loop at the point this macro is +/// called. The index specified by `start_index` will be used. If you need +/// multiple start harnesses compiled into the same binary, you can use this +/// macro to specify different indices, then enable them at runtime by +/// configuring the fuzzer. +/// +/// When this macro is called: +/// +/// - A snapshot will be taken and saved +/// - The buffer pointed to by `buffer` will be saved and used as the testcase +/// buffer. Each +/// fuzzing iteration, a new test case will be written to this buffer. +/// - The `max_size` value will be saved as the maximum testcase size. Fuzzing +/// test cases will be truncated to this size before being written to the +/// buffer. +/// +/// # Arguments +/// +/// - `start_index`: The index to use for this start harness +/// - `buffer`: The pointer to the testcase buffer +/// - `max_size`: The maximum size of the testcase buffer +/// +/// # Example +/// +/// ``` +/// unsigned char buffer[1024]; +/// HARNESS_START_WITH_MAXIMUM_SIZE_INDEX(0x0001U, buffer, 1024); +/// ``` +#define HARNESS_START_WITH_MAXIMUM_SIZE_INDEX(start_index, buffer, max_size) \ + do { \ + __srai_extended3(N_START_BUFFER_PTR_SIZE_VAL, start_index, buffer, \ + max_size); \ + } while (0); + +/// Pseudo-hypercall number to signal the fuzzer to use the first argument to +/// the magic instruction as the pointer to the testcase buffer, the second +/// argument as a pointer to the size of the testcase buffer, and the third +/// argument as the maximum size of the testcase buffer. +#define N_START_BUFFER_PTR_SIZE_PTR_VAL (0x0003U) + +/// HARNESS_START_WITH_MAXIMUM_SIZE_AND_PTR +/// +/// Signal the fuzzer to start the fuzzing loop at the point this macro is +/// called. The default "index" of 0 will be used. If you need multiple start +/// harnesses compiled into the same binary, you can use the +/// `HARNESS_START_WITH_MAXIMUM_SIZE_AND_PTR_INDEX` macro to specify different +/// indices, then enable them at runtime by configuring the fuzzer. +/// +/// When this macro is called: +/// +/// - A snapshot will be taken and saved +/// - The buffer pointed to by `buffer` will be saved and used as the testcase +/// buffer. Each +/// fuzzing iteration, a new test case will be written to this buffer. +/// - The address `size_ptr` will be saved. Each fuzzing iteration, the actual +/// size of the current testcase will be written to `*size_ptr`. +/// - The `max_size` value will be saved as the maximum testcase size. Fuzzing +/// test cases will be truncated to this size before being written to the +/// buffer. +/// +/// # Arguments +/// +/// - `buffer`: The pointer to the testcase buffer +/// - `size_ptr`: The pointer to the size of the testcase buffer +/// - `max_size`: The maximum size of the testcase buffer +/// +/// # Example +/// +/// ``` +/// unsigned char buffer[1024]; +/// size_t size; +/// HARNESS_START_WITH_MAXIMUM_SIZE_AND_PTR(buffer, &size, 1024); +/// ``` +#define HARNESS_START_WITH_MAXIMUM_SIZE_AND_PTR(buffer, size_ptr, max_size) \ + do { \ + __srai_extended4(N_START_BUFFER_PTR_SIZE_PTR_VAL, DEFAULT_INDEX, buffer, \ + size_ptr, max_size); \ + } while (0); + +/// HARNESS_START_WITH_MAXIMUM_SIZE_AND_PTR_INDEX +/// +/// Signal the fuzzer to start the fuzzing loop at the point this macro is +/// called. The index specified by `start_index` will be used. If you need +/// multiple start harnesses compiled into the same binary, you can use this +/// macro to specify different indices, then enable them at runtime by +/// configuring the fuzzer. +/// +/// When this macro is called: +/// +/// - A snapshot will be taken and saved +/// - The buffer pointed to by `buffer` will be saved and used as the testcase +/// buffer. Each +/// fuzzing iteration, a new test case will be written to this buffer. +/// - The address `size_ptr` will be saved. Each fuzzing iteration, the actual +/// size of the current testcase will be written to `*size_ptr`. +/// - The `max_size` value will be saved as the maximum testcase size. Fuzzing +/// test cases will be truncated to this size before being written to the +/// buffer. +/// +/// # Arguments +/// +/// - `start_index`: The index to use for this start harness +/// - `buffer`: The pointer to the testcase buffer +/// - `size_ptr`: The pointer to the size of the testcase buffer +/// - `max_size`: The maximum size of the testcase buffer +/// +/// # Example +/// +/// ``` +/// unsigned char buffer[1024]; +/// size_t size; +/// HARNESS_START_WITH_MAXIMUM_SIZE_AND_PTR_INDEX(0x0001U, buffer, &size, 1024); +/// ``` +#define HARNESS_START_WITH_MAXIMUM_SIZE_AND_PTR_INDEX(start_index, buffer, \ + size_ptr, max_size) \ + do { \ + __srai_extended4(N_START_BUFFER_PTR_SIZE_PTR_VAL, start_index, buffer, \ + size_ptr, max_size); \ + } while (0); + +/// Pseudo-hypercall number to signal the fuzzer to stop the current fuzzing +/// iteration and reset to the beginning of the fuzzing loop with a "normal" +/// stop status, indicating no solution has occurred. +#define N_STOP_NORMAL (0x0004U) + +/// HARNESS_STOP +/// +/// Signal the fuzzer to stop and reset to the beginning of the fuzzing loop +/// with a "normal" stop status, indicating no solution has occurred. The +/// default index of 0 will be used. If you need to differentiate between +/// multiple stop harnesses compiled into the same binary, you can use the +/// `HARNESS_STOP_INDEX` macro to specify different indices, then enable them at +/// runtime by configuring the fuzzer. +/// +/// # Example +/// +/// ``` +/// HARNESS_STOP(); +/// ``` +#define HARNESS_STOP() \ + do { \ + __srai_extended1(N_STOP_NORMAL, DEFAULT_INDEX); \ + } while (0); + +/// HARNESS_STOP_INDEX +/// +/// Signal the fuzzer to stop and reset to the beginning of the fuzzing loop +/// with a "normal" stop status, indicating no solution has occurred. The index +/// specified by `stop_index` will be used. If you need to differentiate between +/// multiple stop harnesses compiled into the same binary, you can use this +/// macro to specify different indices, then enable them at runtime by +/// configuring the fuzzer. +/// +/// # Arguments +/// +/// - `stop_index`: The index to use for this stop harness +/// +/// # Example +/// +/// ``` +/// HARNESS_STOP_INDEX(0x0001U); +/// ``` +#define HARNESS_STOP_INDEX(stop_index) \ + do { \ + __srai_extended1(N_STOP_NORMAL, stop_index); \ + } while (0); + +/// Pseudo-hypercall number to signal the fuzzer that a custom assertion has +/// occurred, and the fuzzer should stop the current fuzzing iteration and reset +/// to the beginning of the fuzzing loop with a "solution" stop status. +#define N_STOP_ASSERT (0x0005U) + +/// HARNESS_ASSERT +/// +/// Signal the fuzzer that a custom assertion has occurred, and the fuzzer +/// should stop the current fuzzing iteration and reset to the beginning of the +/// fuzzing loop with a "solution" stop status. The default index of 0 will be +/// used. If you need to differentiate between multiple assertion harnesses +/// compiled into the same binary, you can use the `HARNESS_ASSERT_INDEX` macro +/// to specify different indices, then enable them at runtime by configuring the +/// fuzzer. +/// +/// # Example +/// +/// ``` +/// HARNESS_ASSERT(); +/// ``` +#define HARNESS_ASSERT() \ + do { \ + __srai_extended1(N_STOP_ASSERT, DEFAULT_INDEX); \ + } while (0); + +/// HARNESS_ASSERT_INDEX +/// +/// Signal the fuzzer that a custom assertion has occurred, and the fuzzer +/// should stop the current fuzzing iteration and reset to the beginning of the +/// fuzzing loop with a "solution" stop status. The index specified by +/// `assert_index` will be used. If you need to differentiate between multiple +/// assertion harnesses compiled into the same binary, you can use this macro to +/// specify different indices, then enable them at runtime by configuring the +/// fuzzer. +/// +/// # Arguments +/// +/// - `assert_index`: The index to use for this assertion harness +/// +/// # Example +/// +/// ``` +/// HARNESS_ASSERT_INDEX(0x0001U); +/// ``` +#define HARNESS_ASSERT_INDEX(assert_index) \ + do { \ + __srai_extended1(N_STOP_ASSERT, assert_index); \ + } while (0); #endif // TSFFS_H \ No newline at end of file diff --git a/harness/tsffs-gcc-riscv64.h b/harness/tsffs-gcc-riscv64.h index f6acf1ea..68471915 100644 --- a/harness/tsffs-gcc-riscv64.h +++ b/harness/tsffs-gcc-riscv64.h @@ -2,25 +2,7 @@ // SPDX-License-Identifier: Apache-2.0 /// Definitions and macros for compiled-in harnessing of C and C++ target -/// software for the RISC-V (64-bit) architecture -/// -/// Example: -/// ```c -/// #include "tsffs-gcc-riscv64.h" -/// -/// int main() { -/// char buf[0x10]; -/// size_t size = 0x10; -/// size_t *size_ptr = &size; -/// HARNESS_START((char *)buf, size_ptr); -/// int retval = YourSpecialDecoder(buf, *size_ptr); -/// if (!retval) { -/// HARNESS_ASSERT(); -/// } else { -/// HARNESS_STOP(); -/// } -/// } -/// ``` +/// software for the RISC-V (32-bit) architecture #ifndef TSFFS_H #define TSFFS_H @@ -32,93 +14,424 @@ #define FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION (1) #endif // FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION -/// Default magic instruction `n` value to signal the TSFFS fuzzer to start the -/// fuzzing loop -#define MAGIC_START (0x0001U) -/// Default magic instruction `n` value to signal the TSFFS fuzzer to stop and -/// reset the fuzzing loop -#define MAGIC_STOP (0x0002U) -/// Default magic instruction `n` value to signal the TSFFS fuzzer that an error -/// has occurred and the testcase input should be saved as a solution -#define MAGIC_ASSERT (0x0003U) - -/// Alternative magic numbers that can be used for start and stop events in -/// conjunction with setting the magic number for each event via the SIMICS or -/// SIMICS Python script interface -#define MAGIC_ALT_0 (0x0004U) -#define MAGIC_ALT_1 (0x0005U) -#define MAGIC_ALT_2 (0x0006U) -#define MAGIC_ALT_3 (0x0007U) -#define MAGIC_ALT_4 (0x0008U) -#define MAGIC_ALT_5 (0x0009U) -#define MAGIC_ALT_6 (0x000aU) -#define MAGIC_ALT_7 (0x000bU) +/// __srai +/// +/// Invoke the magic instruction defined by SIMICS for the RISC-V architecture +/// with a specific value of `n` +/// +/// # Arguments +/// +/// * `value` - The value of `n` to use in the magic instruction +#define __srai(value) \ + __asm__ __volatile__("srai zero, zero, %0" : : "I"(value) :) +/// __srai_extended1 +/// /// Invoke the magic instruction defined by SIMICS for the RISC-V architecture -/// (`srai zero, zero, n`) with a specific value of `n`, after setting register -/// `a0` to the value of the pointer to the testcase and register `a1` to the -/// value of the pointer to the testcase size. These registers are accessed by -/// the fuzzer and are defined per-architecture. -#define __srai_extended(value, testcase_ptr, size_ptr) \ - __asm__ __volatile__("mv a0, %0; mv a1, %1; srai zero, zero, %2" \ - : \ - : "r"(testcase_ptr), "r"(size_ptr), "I"(value) \ +/// with a specific value of `n` and a pseudo-argument in register `a0`. +/// +/// # Arguments +/// +/// * `value` - The value of `n` to use in the magic instruction +/// * `arg0` - The value to place in register `a0` +#define __srai_extended1(value, arg0) \ + __asm__ __volatile__("mv a0, %0; srai zero, zero, %1" \ + : \ + : "r"(arg0), "I"(value) \ + : "a0"); + +/// __srai_extended2 +/// +/// Invoke the magic instruction defined by SIMICS for the RISC-V architecture +/// with a specific value of `n` and pseudo-arguments in registers `a0` and +/// `a1`. +/// +/// # Arguments +/// +/// * `value` - The value of `n` to use in the magic instruction +/// * `arg0` - The value to place in register `a0` +/// * `arg1` - The value to place in register `a1` +#define __srai_extended2(value, arg0, arg1) \ + __asm__ __volatile__("mv a0, %0; mv a1, %1; srai zero, zero, %2" \ + : \ + : "r"(arg0), "r"(arg1), "I"(value) \ : "a0", "a1"); +/// __srai_extended3 +/// /// Invoke the magic instruction defined by SIMICS for the RISC-V architecture -/// (`srai zero, zero, n`) with a specific value of `n` -#define __srai(value) \ - __asm__ __volatile__("srai zero, zero, %0" : : "I"(value) :) +/// with a specific value of `n` and pseudo-arguments in registers `a0`, `a1`, +/// and `a2`. +/// +/// # Arguments +/// +/// * `value` - The value of `n` to use in the magic instruction +/// * `arg0` - The value to place in register `a0` +/// * `arg1` - The value to place in register `a1` +/// * `arg2` - The value to place in register `a2` +#define __srai_extended3(value, arg0, arg1, arg2) \ + __asm__ __volatile__("mv a0, %0; mv a1, %1; mv a2, %2; srai zero, zero, %3" \ + : \ + : "r"(arg0), "r"(arg1), "r"(arg2), "I"(value) \ + : "a0", "a1", "a2"); + +/// __srai_extended4 +/// +/// Invoke the magic instruction defined by SIMICS for the RISC-V architecture +/// with a specific value of `n` and pseudo-arguments in registers `a0`, `a1`, +/// `a2`, and `a3`. +/// +/// # Arguments +/// +/// * `value` - The value of `n` to use in the magic instruction +/// * `arg0` - The value to place in register `a0` +/// * `arg1` - The value to place in register `a1` +/// * `arg2` - The value to place in register `a2` +/// * `arg3` - The value to place in register `a3` +#define __srai_extended4(value, arg0, arg1, arg2, arg3) \ + __asm__ __volatile__( \ + "mv a0, %0; mv a1, %1; mv a2, %2; mv a3, %3; srai zero, zero, %4" \ + : \ + : "r"(arg0), "r"(arg1), "r"(arg2), "r"(arg3), "I"(value) \ + : "a0", "a1", "a2", "a3"); + +/// Magic value defined by SIMICS as the "leaf" value of a CPUID instruction +/// that is treated as a magic instruction. +#define MAGIC (0x4711U) + +/// The default index number used for magic instructions. All magic instructions +/// support multiple start and stop indices, which defaults to 0 if not +/// specified. +#define DEFAULT_INDEX (0x0000U) + +/// Pseudo-hypercall number to signal the fuzzer to use the first argument to +/// the magic instruction as the pointer to the testcase buffer and the second +/// argument as a pointer to the size of the testcase buffer. +#define N_START_BUFFER_PTR_SIZE_PTR (0x0001U) + +/// HARNESS_START +/// +/// Signal the fuzzer to start the fuzzing loop at the point this macro is +/// called. The default "index" of 0 will be used. If you need multiple start +/// harnesses compiled into the same binary, you can use the +/// `HARNESS_START_INDEX` macro to specify different indices, then enable them +/// at runtime by configuring the fuzzer. +/// +/// When this macro is called: +/// +/// - A snapshot will be taken and saved +/// - The buffer pointed to by `buffer` will be saved and used as the testcase +/// buffer. Each +/// fuzzing iteration, a new test case will be written to this buffer. +/// - The size of the buffer pointed to by `size_ptr` will be saved as the +/// maximum testcase size. Each fuzzing iteration, the actual size of the +/// current testcase will be written to `*size_ptr`. +/// +/// # Arguments +/// +/// - `buffer`: The pointer to the testcase buffer +/// - `size_ptr`: The pointer to the size of the testcase buffer +/// +/// # Example +/// +/// ``` +/// unsigned char buffer[1024]; +/// size_t size; +/// HARNESS_START(buffer, &size); +/// ``` +#define HARNESS_START(buffer, size_ptr) \ + do { \ + __srai_extended3(N_START_BUFFER_PTR_SIZE_PTR, DEFAULT_INDEX, buffer, size_ptr); \ + } while (0); + +/// HARNESS_START_INDEX +/// +/// Signal the fuzzer to start the fuzzing loop at the point this macro is +/// called. The index specified by `start_index` will be used. If you need +/// multiple start harnesses compiled into the same binary, you can use this +/// macro to specify different indices, then enable them at runtime by +/// configuring the fuzzer. +/// +/// When this macro is called: +/// +/// - A snapshot will be taken and saved +/// - The buffer pointed to by `buffer` will be saved and used as the testcase +/// buffer. Each +/// fuzzing iteration, a new test case will be written to this buffer. +/// - The size of the buffer pointed to by `size_ptr` will be saved as the +/// maximum testcase size. Each fuzzing iteration, the actual size of the +/// current testcase will be written to `*size_ptr`. +/// +/// # Arguments +/// +/// - `start_index`: The index to use for this start harness +/// - `buffer`: The pointer to the testcase buffer +/// - `size_ptr`: The pointer to the size of the testcase buffer +/// +/// # Example +/// +/// ``` +/// unsigned char buffer[1024]; +/// size_t size; +/// HARNESS_START_INDEX(0x0001U, buffer, &size); +/// ``` +#define HARNESS_START_INDEX(start_index, buffer, size_ptr) \ + do { \ + __srai_extended3(N_START_BUFFER_PTR_SIZE_PTR, start_index, buffer, size_ptr); \ + } while (0); + +/// Pseudo-hypercall number to signal the fuzzer to use the first argument to +/// the magic instruction as the pointer to the testcase buffer and the second +/// argument as the maximum size of the testcase buffer. +#define N_START_BUFFER_PTR_SIZE_VAL (0x0002U) -/// Signal the fuzzer using a specific magic value `start` to start the fuzzing -/// loop at the point this macro is called. A snapshot will be taken when the -/// macro is called, and the maximum testcase size `*size_ptr` will be saved as -/// `max_testcase_size`. Each iteration of the fuzzing loop, the fuzzer input -/// (the "testcase") will be written to `*testcase_ptr` as if running -/// `memcpy(testcase_ptr, current_testcase, max_testcase_size)`, and the actual -/// size of the current testcase will be written to -/// `*size_ptr` as if running `*size_ptr = current_testcase_size`. -#define __arch_harness_start(start, testcase_ptr, size_ptr) \ - do { \ - __srai_extended(start, testcase_ptr, size_ptr); \ - } while (0) - -/// Signal the fuzzer using the a specific magic value (`stop`) to stop and -/// reset to the beginning of the fuzzing loop with a "normal" stop status, -/// indicating no solution has occurred. -#define __arch_harness_stop(stop) \ - do { \ - __srai(stop); \ - } while (0) - -/// Signal the fuzzer using the default magic value to start the fuzzing loop at -/// the point this macro is called. A snapshot will be taken when the macro is -/// called, and the maximum testcase size `*size_ptr` will be saved as -/// `max_testcase_size`. Each iteration of the fuzzing loop, the fuzzer input -/// (the "testcase") will be written to -/// `*testcase_ptr` as if running `memcpy(testcase_ptr, current_testcase, -/// max_testcase_size)`, and the actual size of the current testcase will be -/// written to -/// `*size_ptr` as if running `*size_ptr = current_testcase_size`. -#define HARNESS_START(testcase_ptr, size_ptr) \ - do { \ - __arch_harness_start(MAGIC_START, testcase_ptr, size_ptr); \ - } while (0) - -/// Signal the fuzzer using the default magic value to stop and reset to the -/// beginning of the fuzzing loop with a "normal" stop status, indicating no -/// solution has occurred. -#define HARNESS_STOP() \ - do { \ - __arch_harness_stop(MAGIC_STOP); \ - } while (0) - -/// Signal the fuzzer using the default magic value to stop and reset to the -/// beginning of the fuzzing loop with a "solution" stop status, indicating some -/// custom error has occurred. -#define HARNESS_ASSERT() \ - do { \ - __arch_harness_stop(MAGIC_ASSERT); \ - } while (0) +/// HARNESS_START_WITH_MAXIMUM_SIZE +/// +/// Signal the fuzzer to start the fuzzing loop at the point this macro is +/// called. The default "index" of 0 will be used. If you need multiple start +/// harnesses compiled into the same binary, you can use the +/// `HARNESS_START_WITH_MAXIMUM_SIZE_INDEX` macro to specify different indices, +/// then enable them at runtime by configuring the fuzzer. +/// +/// When this macro is called: +/// +/// - A snapshot will be taken and saved +/// - The buffer pointed to by `buffer` will be saved and used as the testcase +/// buffer. Each +/// fuzzing iteration, a new test case will be written to this buffer. +/// - The `max_size` value will be saved as the maximum testcase size. Fuzzing +/// test cases will be truncated to this size before being written to the +/// buffer. +/// +/// # Arguments +/// +/// - `buffer`: The pointer to the testcase buffer +/// - `max_size`: The maximum size of the testcase buffer +/// +/// # Example +/// +/// ``` +/// unsigned char buffer[1024]; +/// HARNESS_START_WITH_MAXIMUM_SIZE(buffer, 1024); +/// ``` +#define HARNESS_START_WITH_MAXIMUM_SIZE(buffer, max_size) \ + do { \ + __srai_extended3(N_START_BUFFER_PTR_SIZE_VAL, DEFAULT_INDEX, buffer, max_size); \ + } while (0); + +/// HARNESS_START_WITH_MAXIMUM_SIZE_INDEX +/// +/// Signal the fuzzer to start the fuzzing loop at the point this macro is +/// called. The index specified by `start_index` will be used. If you need +/// multiple start harnesses compiled into the same binary, you can use this +/// macro to specify different indices, then enable them at runtime by +/// configuring the fuzzer. +/// +/// When this macro is called: +/// +/// - A snapshot will be taken and saved +/// - The buffer pointed to by `buffer` will be saved and used as the testcase +/// buffer. Each +/// fuzzing iteration, a new test case will be written to this buffer. +/// - The `max_size` value will be saved as the maximum testcase size. Fuzzing +/// test cases will be truncated to this size before being written to the +/// buffer. +/// +/// # Arguments +/// +/// - `start_index`: The index to use for this start harness +/// - `buffer`: The pointer to the testcase buffer +/// - `max_size`: The maximum size of the testcase buffer +/// +/// # Example +/// +/// ``` +/// unsigned char buffer[1024]; +/// HARNESS_START_WITH_MAXIMUM_SIZE_INDEX(0x0001U, buffer, 1024); +/// ``` +#define HARNESS_START_WITH_MAXIMUM_SIZE_INDEX(start_index, buffer, max_size) \ + do { \ + __srai_extended3(N_START_BUFFER_PTR_SIZE_VAL, start_index, buffer, max_size); \ + } while (0); + +/// Pseudo-hypercall number to signal the fuzzer to use the first argument to +/// the magic instruction as the pointer to the testcase buffer, the second +/// argument as a pointer to the size of the testcase buffer, and the third +/// argument as the maximum size of the testcase buffer. +#define N_START_BUFFER_PTR_SIZE_PTR_VAL (0x0003U) + +/// HARNESS_START_WITH_MAXIMUM_SIZE_AND_PTR +/// +/// Signal the fuzzer to start the fuzzing loop at the point this macro is +/// called. The default "index" of 0 will be used. If you need multiple start +/// harnesses compiled into the same binary, you can use the +/// `HARNESS_START_WITH_MAXIMUM_SIZE_AND_PTR_INDEX` macro to specify different +/// indices, then enable them at runtime by configuring the fuzzer. +/// +/// When this macro is called: +/// +/// - A snapshot will be taken and saved +/// - The buffer pointed to by `buffer` will be saved and used as the testcase +/// buffer. Each +/// fuzzing iteration, a new test case will be written to this buffer. +/// - The address `size_ptr` will be saved. Each fuzzing iteration, the actual +/// size of the current testcase will be written to `*size_ptr`. +/// - The `max_size` value will be saved as the maximum testcase size. Fuzzing +/// test cases will be truncated to this size before being written to the +/// buffer. +/// +/// # Arguments +/// +/// - `buffer`: The pointer to the testcase buffer +/// - `size_ptr`: The pointer to the size of the testcase buffer +/// - `max_size`: The maximum size of the testcase buffer +/// +/// # Example +/// +/// ``` +/// unsigned char buffer[1024]; +/// size_t size; +/// HARNESS_START_WITH_MAXIMUM_SIZE_AND_PTR(buffer, &size, 1024); +/// ``` +#define HARNESS_START_WITH_MAXIMUM_SIZE_AND_PTR(buffer, size_ptr, max_size) \ + do { \ + __srai_extended4(N_START_BUFFER_PTR_SIZE_PTR_VAL, DEFAULT_INDEX, buffer, size_ptr, max_size); \ + } while (0); + +/// HARNESS_START_WITH_MAXIMUM_SIZE_AND_PTR_INDEX +/// +/// Signal the fuzzer to start the fuzzing loop at the point this macro is +/// called. The index specified by `start_index` will be used. If you need +/// multiple start harnesses compiled into the same binary, you can use this +/// macro to specify different indices, then enable them at runtime by +/// configuring the fuzzer. +/// +/// When this macro is called: +/// +/// - A snapshot will be taken and saved +/// - The buffer pointed to by `buffer` will be saved and used as the testcase +/// buffer. Each +/// fuzzing iteration, a new test case will be written to this buffer. +/// - The address `size_ptr` will be saved. Each fuzzing iteration, the actual +/// size of the current testcase will be written to `*size_ptr`. +/// - The `max_size` value will be saved as the maximum testcase size. Fuzzing +/// test cases will be truncated to this size before being written to the +/// buffer. +/// +/// # Arguments +/// +/// - `start_index`: The index to use for this start harness +/// - `buffer`: The pointer to the testcase buffer +/// - `size_ptr`: The pointer to the size of the testcase buffer +/// - `max_size`: The maximum size of the testcase buffer +/// +/// # Example +/// +/// ``` +/// unsigned char buffer[1024]; +/// size_t size; +/// HARNESS_START_WITH_MAXIMUM_SIZE_AND_PTR_INDEX(0x0001U, buffer, &size, 1024); +/// ``` +#define HARNESS_START_WITH_MAXIMUM_SIZE_AND_PTR_INDEX(start_index, buffer, \ + size_ptr, max_size) \ + do { \ + __srai_extended4(N_START_BUFFER_PTR_SIZE_PTR_VAL, start_index, buffer, size_ptr, max_size); \ + } while (0); + +/// Pseudo-hypercall number to signal the fuzzer to stop the current fuzzing +/// iteration and reset to the beginning of the fuzzing loop with a "normal" +/// stop status, indicating no solution has occurred. +#define N_STOP_NORMAL (0x0004U) + +/// HARNESS_STOP +/// +/// Signal the fuzzer to stop and reset to the beginning of the fuzzing loop +/// with a "normal" stop status, indicating no solution has occurred. The +/// default index of 0 will be used. If you need to differentiate between +/// multiple stop harnesses compiled into the same binary, you can use the +/// `HARNESS_STOP_INDEX` macro to specify different indices, then enable them at +/// runtime by configuring the fuzzer. +/// +/// # Example +/// +/// ``` +/// HARNESS_STOP(); +/// ``` +#define HARNESS_STOP() \ + do { \ + __srai_extended1(N_STOP_NORMAL, DEFAULT_INDEX); \ + } while (0); + +/// HARNESS_STOP_INDEX +/// +/// Signal the fuzzer to stop and reset to the beginning of the fuzzing loop +/// with a "normal" stop status, indicating no solution has occurred. The index +/// specified by `stop_index` will be used. If you need to differentiate between +/// multiple stop harnesses compiled into the same binary, you can use this +/// macro to specify different indices, then enable them at runtime by +/// configuring the fuzzer. +/// +/// # Arguments +/// +/// - `stop_index`: The index to use for this stop harness +/// +/// # Example +/// +/// ``` +/// HARNESS_STOP_INDEX(0x0001U); +/// ``` +#define HARNESS_STOP_INDEX(stop_index) \ + do { \ + __srai_extended1(N_STOP_NORMAL, stop_index); \ + } while (0); + +/// Pseudo-hypercall number to signal the fuzzer that a custom assertion has +/// occurred, and the fuzzer should stop the current fuzzing iteration and reset +/// to the beginning of the fuzzing loop with a "solution" stop status. +#define N_STOP_ASSERT (0x0005U) + +/// HARNESS_ASSERT +/// +/// Signal the fuzzer that a custom assertion has occurred, and the fuzzer +/// should stop the current fuzzing iteration and reset to the beginning of the +/// fuzzing loop with a "solution" stop status. The default index of 0 will be +/// used. If you need to differentiate between multiple assertion harnesses +/// compiled into the same binary, you can use the `HARNESS_ASSERT_INDEX` macro +/// to specify different indices, then enable them at runtime by configuring the +/// fuzzer. +/// +/// # Example +/// +/// ``` +/// HARNESS_ASSERT(); +/// ``` +#define HARNESS_ASSERT() \ + do { \ + __srai_extended1(N_STOP_ASSERT, DEFAULT_INDEX); \ + } while (0); + +/// HARNESS_ASSERT_INDEX +/// +/// Signal the fuzzer that a custom assertion has occurred, and the fuzzer +/// should stop the current fuzzing iteration and reset to the beginning of the +/// fuzzing loop with a "solution" stop status. The index specified by +/// `assert_index` will be used. If you need to differentiate between multiple +/// assertion harnesses compiled into the same binary, you can use this macro to +/// specify different indices, then enable them at runtime by configuring the +/// fuzzer. +/// +/// # Arguments +/// +/// - `assert_index`: The index to use for this assertion harness +/// +/// # Example +/// +/// ``` +/// HARNESS_ASSERT_INDEX(0x0001U); +/// ``` +#define HARNESS_ASSERT_INDEX(assert_index) \ + do { \ + __srai_extended1(N_STOP_ASSERT, assert_index); \ + } while (0); #endif // TSFFS_H \ No newline at end of file diff --git a/harness/tsffs-gcc-x86.h b/harness/tsffs-gcc-x86.h index 6f91792c..81e8620b 100644 --- a/harness/tsffs-gcc-x86.h +++ b/harness/tsffs-gcc-x86.h @@ -2,25 +2,7 @@ // SPDX-License-Identifier: Apache-2.0 /// Definitions and macros for compiled-in harnessing of C and C++ target -/// software for the RISC-V (64-bit) architecture -/// -/// Example: -/// ```c -/// #include "tsffs-gcc-x86.h" -/// -/// int main() { -/// char buf[0x10]; -/// size_t size = 0x10; -/// size_t *size_ptr = &size; -/// HARNESS_START((char *)buf, size_ptr); -/// int retval = YourSpecialDecoder(buf, *size_ptr); -/// if (!retval) { -/// HARNESS_ASSERT(); -/// } else { -/// HARNESS_STOP(); -/// } -/// } -/// ``` +/// software for the X86 architecture. #ifndef TSFFS_H #define TSFFS_H @@ -32,103 +14,464 @@ #define FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION (1) #endif // FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION +/// __cpuid +/// +/// Invoke the CPUID instruction with a specific value `value` in register +/// `rax`. +/// +/// # Arguments +/// +/// - `value`: The value to load into the `rax` register before invoking the +/// CPUID instruction +#define __cpuid(value) \ + unsigned int _a __attribute__((unused)) = 0; \ + unsigned int _b __attribute__((unused)) = 0; \ + unsigned int _c __attribute__((unused)) = 0; \ + unsigned int _d __attribute__((unused)) = 0; \ + __asm__ __volatile__("cpuid\n\t" \ + : "=a"(_a), "=b"(_b), "=c"(_c), "=d"(_d) \ + : "a"(value)); + +/// __cpuid_extended1 +/// +/// Invoke the CPUID instruction with a specific value `value` in register +/// `rax` and a pseudo-argument in register `rdi`. +/// +/// # Arguments +/// +/// - `value`: The value to load into the `rax` register before invoking the +/// CPUID instruction +/// - `arg0`: The value to load into the `rdi` register before invoking the +/// CPUID instruction +#define __cpuid_extended1(value, arg0) \ + unsigned int _a __attribute__((unused)) = 0; \ + unsigned int _b __attribute__((unused)) = 0; \ + unsigned int _c __attribute__((unused)) = 0; \ + unsigned int _d __attribute__((unused)) = 0; \ + __asm__ __volatile__("cpuid\n\t" \ + : "=a"(_a), "=b"(_b), "=c"(_c), "=d"(_d) \ + : "a"(value), "D"(arg0)); + +/// __cpuid_extended2 +/// +/// Invoke the CPUID instruction with a specific value `value` in register +/// `rax` and a pseudo-arguments in registers `rdi` and `rsi`. +/// +/// # Arguments +/// +/// - `value`: The value to load into the `rax` register before invoking the +/// CPUID instruction +/// - `arg0`: The value to load into the `rdi` register before invoking the +/// CPUID instruction +/// - `arg1`: The value to load into the `rsi` register before invoking the +/// CPUID instruction +#define __cpuid_extended2(value, arg0, arg1) \ + unsigned int _a __attribute__((unused)) = 0; \ + unsigned int _b __attribute__((unused)) = 0; \ + unsigned int _c __attribute__((unused)) = 0; \ + unsigned int _d __attribute__((unused)) = 0; \ + __asm__ __volatile__("cpuid\n\t" \ + : "=a"(_a), "=b"(_b), "=c"(_c), "=d"(_d) \ + : "a"(value), "D"(arg0), "S"(arg1)); + +/// __cpuid_extended3 +/// +/// Invoke the CPUID instruction with a specific value `value` in register +/// `rax` and a pseudo-arguments in registers `rdi`, `rsi`, and `rdx`. +/// +/// # Arguments +/// +/// - `value`: The value to load into the `rax` register before invoking the +/// CPUID instruction +/// - `arg0`: The value to load into the `rdi` register before invoking the +/// CPUID instruction +/// - `arg1`: The value to load into the `rsi` register before invoking the +/// CPUID instruction +/// - `arg2`: The value to load into the `rdx` register before invoking the +/// CPUID instruction +#define __cpuid_extended3(value, arg0, arg1, arg2) \ + unsigned int _a __attribute__((unused)) = 0; \ + unsigned int _b __attribute__((unused)) = 0; \ + unsigned int _c __attribute__((unused)) = 0; \ + unsigned int _d __attribute__((unused)) = 0; \ + __asm__ __volatile__("cpuid\n\t" \ + : "=a"(_a), "=b"(_b), "=c"(_c), "=d"(_d) \ + : "a"(value), "D"(arg0), "S"(arg1), "d"(arg2)); + +/// __cpuid_extended4 +/// +/// Invoke the CPUID instruction with a specific value `value` in register +/// `rax` and a pseudo-arguments in registers `rdi`, `rsi`, `rdx`, and `rcx`. +/// +/// # Arguments +/// +/// - `value`: The value to load into the `rax` register before invoking the +/// CPUID instruction +/// - `arg0`: The value to load into the `rdi` register before invoking the +/// CPUID instruction +/// - `arg1`: The value to load into the `rsi` register before invoking the +/// CPUID instruction +/// - `arg2`: The value to load into the `rdx` register before invoking the +/// CPUID instruction +/// - `arg3`: The value to load into the `rcx` register before invoking the +/// CPUID instruction +#define __cpuid_extended4(value, arg0, arg1, arg2, arg3) \ + unsigned int _a __attribute__((unused)) = 0; \ + unsigned int _b __attribute__((unused)) = 0; \ + unsigned int _c __attribute__((unused)) = 0; \ + unsigned int _d __attribute__((unused)) = 0; \ + __asm__ __volatile__("cpuid\n\t" \ + : "=a"(_a), "=b"(_b), "=c"(_c), "=d"(_d) \ + : "a"(value), "D"(arg0), "S"(arg1), "d"(arg2), \ + "c"(arg3)); + /// Magic value defined by SIMICS as the "leaf" value of a CPUID instruction /// that is treated as a magic instruction. #define MAGIC (0x4711U) -/// Default magic instruction `n` value to signal the TSFFS fuzzer to start the -/// fuzzing loop -#define MAGIC_START (0x0001U) -/// Default magic instruction `n` value to signal the TSFFS fuzzer to stop and -/// reset the fuzzing loop -#define MAGIC_STOP (0x0002U) -/// Default magic instruction `n` value to signal the TSFFS fuzzer that an error -/// has occurred and the testcase input should be saved as a solution -#define MAGIC_ASSERT (0x0003U) - -/// Alternative magic numbers that can be used for start and stop events in -/// conjunction with setting the magic number for each event via the SIMICS or -/// SIMICS Python script interface -#define MAGIC_ALT_0 (0x0004U) -#define MAGIC_ALT_1 (0x0005U) -#define MAGIC_ALT_2 (0x0006U) -#define MAGIC_ALT_3 (0x0007U) -#define MAGIC_ALT_4 (0x0008U) -#define MAGIC_ALT_5 (0x0009U) -#define MAGIC_ALT_6 (0x000aU) -#define MAGIC_ALT_7 (0x000bU) - -/// Invoke the magic instruction defined by SIMICS for the x86 architecture -/// (`cpuid`) with a specific value of `n`, after setting register `edi` to the -/// value of the pointer to the testcase and register `esi` to the value of the -/// pointer to the testcase size. These registers are accessed by the fuzzer and -/// are defined per-architecture. -#define __cpuid_extended2(value, inout_ptr_0, inout_ptr_1) \ - unsigned int _a __attribute__((unused)) = 0; \ - __asm__ __volatile__("cpuid" \ - : "=a"(_a) \ - : "a"(value), "D"(inout_ptr_0), "S"(inout_ptr_1) \ - : "ebx", "ecx", "edx"); - -/// Invoke the magic instruction defined by SIMICS for the x86 architecture -/// (`cpuid`) with a specific value of `n` -#define __cpuid(value) \ - unsigned int _a __attribute__((unused)) = 0; \ - __asm__ __volatile__("cpuid\n\t" \ - : "=a"(_a) \ - : "a"(value) \ - : "ebx", "ecx", "edx") - -/// Signal the fuzzer using a specific magic value `start` to start the fuzzing -/// loop at the point this macro is called. A snapshot will be taken when the -/// macro is called, and the maximum testcase size `*size_ptr` will be saved as -/// `max_testcase_size`. Each iteration of the fuzzing loop, the fuzzer input -/// (the "testcase") will be written to `*testcase_ptr` as if running -/// `memcpy(testcase_ptr, current_testcase, max_testcase_size)`, and the actual -/// size of the current testcase will be written to -/// `*size_ptr` as if running `*size_ptr = current_testcase_size`. -#define __arch_harness_start(start, testcase_ptr, size_ptr) \ - do { \ - unsigned int magic = (start << 0x10U) | MAGIC; \ - __cpuid_extended2(magic, testcase_ptr, size_ptr); \ - } while (0) - -/// Signal the fuzzer using the a specific magic value (`stop`) to stop and -/// reset to the beginning of the fuzzing loop with a "normal" stop status, -/// indicating no solution has occurred. -#define __arch_harness_stop(stop) \ - do { \ - unsigned int magic = (stop << 0x10U) | MAGIC; \ - __cpuid(magic); \ - } while (0) - -/// Signal the fuzzer using the default magic value to start the fuzzing loop at -/// the point this macro is called. A snapshot will be taken when the macro is -/// called, and the maximum testcase size `*size_ptr` will be saved as -/// `max_testcase_size`. Each iteration of the fuzzing loop, the fuzzer input -/// (the "testcase") will be written to -/// `*testcase_ptr` as if running `memcpy(testcase_ptr, current_testcase, -/// max_testcase_size)`, and the actual size of the current testcase will be -/// written to -/// `*size_ptr` as if running `*size_ptr = current_testcase_size`. -#define HARNESS_START(testcase_ptr, size_ptr) \ - do { \ - __arch_harness_start(MAGIC_START, testcase_ptr, size_ptr); \ - } while (0) - -/// Signal the fuzzer using the default magic value to stop and reset to the -/// beginning of the fuzzing loop with a "normal" stop status, indicating no -/// solution has occurred. -#define HARNESS_STOP() \ - do { \ - __arch_harness_stop(MAGIC_STOP); \ - } while (0) - -/// Signal the fuzzer using the default magic value to stop and reset to the -/// beginning of the fuzzing loop with a "solution" stop status, indicating some -/// custom error has occurred. -#define HARNESS_ASSERT() \ - do { \ - __arch_harness_stop(MAGIC_ASSERT); \ - } while (0) + +/// The default index number used for magic instructions. All magic instructions +/// support multiple start and stop indices, which defaults to 0 if not +/// specified. +#define DEFAULT_INDEX (0x0000U) + +/// Pseudo-hypercall number to signal the fuzzer to use the first argument to +/// the magic instruction as the pointer to the testcase buffer and the second +/// argument as a pointer to the size of the testcase buffer. +#define N_START_BUFFER_PTR_SIZE_PTR (0x0001U) + +/// HARNESS_START +/// +/// Signal the fuzzer to start the fuzzing loop at the point this macro is +/// called. The default "index" of 0 will be used. If you need multiple start +/// harnesses compiled into the same binary, you can use the +/// `HARNESS_START_INDEX` macro to specify different indices, then enable them +/// at runtime by configuring the fuzzer. +/// +/// When this macro is called: +/// +/// - A snapshot will be taken and saved +/// - The buffer pointed to by `buffer` will be saved and used as the testcase +/// buffer. Each +/// fuzzing iteration, a new test case will be written to this buffer. +/// - The size of the buffer pointed to by `size_ptr` will be saved as the +/// maximum testcase size. Each fuzzing iteration, the actual size of the +/// current testcase will be written to `*size_ptr`. +/// +/// # Arguments +/// +/// - `buffer`: The pointer to the testcase buffer +/// - `size_ptr`: The pointer to the size of the testcase buffer +/// +/// # Example +/// +/// ``` +/// unsigned char buffer[1024]; +/// size_t size; +/// HARNESS_START(buffer, &size); +/// ``` +#define HARNESS_START(buffer, size_ptr) \ + do { \ + unsigned int value = (N_START_BUFFER_PTR_SIZE_PTR << 0x10U) | MAGIC; \ + __cpuid_extended3(value, DEFAULT_INDEX, buffer, size_ptr); \ + } while (0); + +/// HARNESS_START_INDEX +/// +/// Signal the fuzzer to start the fuzzing loop at the point this macro is +/// called. The index specified by `start_index` will be used. If you need +/// multiple start harnesses compiled into the same binary, you can use this +/// macro to specify different indices, then enable them at runtime by +/// configuring the fuzzer. +/// +/// When this macro is called: +/// +/// - A snapshot will be taken and saved +/// - The buffer pointed to by `buffer` will be saved and used as the testcase +/// buffer. Each +/// fuzzing iteration, a new test case will be written to this buffer. +/// - The size of the buffer pointed to by `size_ptr` will be saved as the +/// maximum testcase size. Each fuzzing iteration, the actual size of the +/// current testcase will be written to `*size_ptr`. +/// +/// # Arguments +/// +/// - `start_index`: The index to use for this start harness +/// - `buffer`: The pointer to the testcase buffer +/// - `size_ptr`: The pointer to the size of the testcase buffer +/// +/// # Example +/// +/// ``` +/// unsigned char buffer[1024]; +/// size_t size; +/// HARNESS_START_INDEX(0x0001U, buffer, &size); +/// ``` +#define HARNESS_START_INDEX(start_index, buffer, size_ptr) \ + do { \ + unsigned int value = (N_START_BUFFER_PTR_SIZE_PTR << 0x10U) | MAGIC; \ + __cpuid_extended3(value, start_index, buffer, size_ptr); \ + } while (0); + +/// Pseudo-hypercall number to signal the fuzzer to use the first argument to +/// the magic instruction as the pointer to the testcase buffer and the second +/// argument as the maximum size of the testcase buffer. +#define N_START_BUFFER_PTR_SIZE_VAL (0x0002U) + +/// HARNESS_START_WITH_MAXIMUM_SIZE +/// +/// Signal the fuzzer to start the fuzzing loop at the point this macro is +/// called. The default "index" of 0 will be used. If you need multiple start +/// harnesses compiled into the same binary, you can use the +/// `HARNESS_START_WITH_MAXIMUM_SIZE_INDEX` macro to specify different indices, +/// then enable them at runtime by configuring the fuzzer. +/// +/// When this macro is called: +/// +/// - A snapshot will be taken and saved +/// - The buffer pointed to by `buffer` will be saved and used as the testcase +/// buffer. Each +/// fuzzing iteration, a new test case will be written to this buffer. +/// - The `max_size` value will be saved as the maximum testcase size. Fuzzing +/// test cases will be truncated to this size before being written to the +/// buffer. +/// +/// # Arguments +/// +/// - `buffer`: The pointer to the testcase buffer +/// - `max_size`: The maximum size of the testcase buffer +/// +/// # Example +/// +/// ``` +/// unsigned char buffer[1024]; +/// HARNESS_START_WITH_MAXIMUM_SIZE(buffer, 1024); +/// ``` +#define HARNESS_START_WITH_MAXIMUM_SIZE(buffer, max_size) \ + do { \ + unsigned int value = (N_START_BUFFER_PTR_SIZE_VAL << 0x10U) | MAGIC; \ + __cpuid_extended3(value, DEFAULT_INDEX, buffer, max_size); \ + } while (0); + +/// HARNESS_START_WITH_MAXIMUM_SIZE_INDEX +/// +/// Signal the fuzzer to start the fuzzing loop at the point this macro is +/// called. The index specified by `start_index` will be used. If you need +/// multiple start harnesses compiled into the same binary, you can use this +/// macro to specify different indices, then enable them at runtime by +/// configuring the fuzzer. +/// +/// When this macro is called: +/// +/// - A snapshot will be taken and saved +/// - The buffer pointed to by `buffer` will be saved and used as the testcase +/// buffer. Each +/// fuzzing iteration, a new test case will be written to this buffer. +/// - The `max_size` value will be saved as the maximum testcase size. Fuzzing +/// test cases will be truncated to this size before being written to the +/// buffer. +/// +/// # Arguments +/// +/// - `start_index`: The index to use for this start harness +/// - `buffer`: The pointer to the testcase buffer +/// - `max_size`: The maximum size of the testcase buffer +/// +/// # Example +/// +/// ``` +/// unsigned char buffer[1024]; +/// HARNESS_START_WITH_MAXIMUM_SIZE_INDEX(0x0001U, buffer, 1024); +/// ``` +#define HARNESS_START_WITH_MAXIMUM_SIZE_INDEX(start_index, buffer, max_size) \ + do { \ + unsigned int value = (N_START_BUFFER_PTR_SIZE_VAL << 0x10U) | MAGIC; \ + __cpuid_extended3(value, start_index, buffer, max_size); \ + } while (0); + +/// Pseudo-hypercall number to signal the fuzzer to use the first argument to +/// the magic instruction as the pointer to the testcase buffer, the second +/// argument as a pointer to the size of the testcase buffer, and the third +/// argument as the maximum size of the testcase buffer. +#define N_START_BUFFER_PTR_SIZE_PTR_VAL (0x0003U) + +/// HARNESS_START_WITH_MAXIMUM_SIZE_AND_PTR +/// +/// Signal the fuzzer to start the fuzzing loop at the point this macro is +/// called. The default "index" of 0 will be used. If you need multiple start +/// harnesses compiled into the same binary, you can use the +/// `HARNESS_START_WITH_MAXIMUM_SIZE_AND_PTR_INDEX` macro to specify different +/// indices, then enable them at runtime by configuring the fuzzer. +/// +/// When this macro is called: +/// +/// - A snapshot will be taken and saved +/// - The buffer pointed to by `buffer` will be saved and used as the testcase +/// buffer. Each +/// fuzzing iteration, a new test case will be written to this buffer. +/// - The address `size_ptr` will be saved. Each fuzzing iteration, the actual +/// size of the current testcase will be written to `*size_ptr`. +/// - The `max_size` value will be saved as the maximum testcase size. Fuzzing +/// test cases will be truncated to this size before being written to the +/// buffer. +/// +/// # Arguments +/// +/// - `buffer`: The pointer to the testcase buffer +/// - `size_ptr`: The pointer to the size of the testcase buffer +/// - `max_size`: The maximum size of the testcase buffer +/// +/// # Example +/// +/// ``` +/// unsigned char buffer[1024]; +/// size_t size; +/// HARNESS_START_WITH_MAXIMUM_SIZE_AND_PTR(buffer, &size, 1024); +/// ``` +#define HARNESS_START_WITH_MAXIMUM_SIZE_AND_PTR(buffer, size_ptr, max_size) \ + do { \ + unsigned int value = (N_START_BUFFER_PTR_SIZE_PTR_VAL << 0x10U) | MAGIC; \ + __cpuid_extended4(value, DEFAULT_INDEX, buffer, size_ptr, max_size); \ + } while (0); + +/// HARNESS_START_WITH_MAXIMUM_SIZE_AND_PTR_INDEX +/// +/// Signal the fuzzer to start the fuzzing loop at the point this macro is +/// called. The index specified by `start_index` will be used. If you need +/// multiple start harnesses compiled into the same binary, you can use this +/// macro to specify different indices, then enable them at runtime by +/// configuring the fuzzer. +/// +/// When this macro is called: +/// +/// - A snapshot will be taken and saved +/// - The buffer pointed to by `buffer` will be saved and used as the testcase +/// buffer. Each +/// fuzzing iteration, a new test case will be written to this buffer. +/// - The address `size_ptr` will be saved. Each fuzzing iteration, the actual +/// size of the current testcase will be written to `*size_ptr`. +/// - The `max_size` value will be saved as the maximum testcase size. Fuzzing +/// test cases will be truncated to this size before being written to the +/// buffer. +/// +/// # Arguments +/// +/// - `start_index`: The index to use for this start harness +/// - `buffer`: The pointer to the testcase buffer +/// - `size_ptr`: The pointer to the size of the testcase buffer +/// - `max_size`: The maximum size of the testcase buffer +/// +/// # Example +/// +/// ``` +/// unsigned char buffer[1024]; +/// size_t size; +/// HARNESS_START_WITH_MAXIMUM_SIZE_AND_PTR_INDEX(0x0001U, buffer, &size, 1024); +/// ``` +#define HARNESS_START_WITH_MAXIMUM_SIZE_AND_PTR_INDEX(start_index, buffer, \ + size_ptr, max_size) \ + do { \ + unsigned int value = (N_START_BUFFER_PTR_SIZE_PTR_VAL << 0x10U) | MAGIC; \ + __cpuid_extended4(value, start_index, buffer, size_ptr, max_size); \ + } while (0); + +/// Pseudo-hypercall number to signal the fuzzer to stop the current fuzzing +/// iteration and reset to the beginning of the fuzzing loop with a "normal" +/// stop status, indicating no solution has occurred. +#define N_STOP_NORMAL (0x0004U) + +/// HARNESS_STOP +/// +/// Signal the fuzzer to stop and reset to the beginning of the fuzzing loop +/// with a "normal" stop status, indicating no solution has occurred. The +/// default index of 0 will be used. If you need to differentiate between +/// multiple stop harnesses compiled into the same binary, you can use the +/// `HARNESS_STOP_INDEX` macro to specify different indices, then enable them at +/// runtime by configuring the fuzzer. +/// +/// # Example +/// +/// ``` +/// HARNESS_STOP(); +/// ``` +#define HARNESS_STOP() \ + do { \ + unsigned int value = (N_STOP_NORMAL << 0x10U) | MAGIC; \ + __cpuid_extended1(value, DEFAULT_INDEX); \ + } while (0); + +/// HARNESS_STOP_INDEX +/// +/// Signal the fuzzer to stop and reset to the beginning of the fuzzing loop +/// with a "normal" stop status, indicating no solution has occurred. The index +/// specified by `stop_index` will be used. If you need to differentiate between +/// multiple stop harnesses compiled into the same binary, you can use this +/// macro to specify different indices, then enable them at runtime by +/// configuring the fuzzer. +/// +/// # Arguments +/// +/// - `stop_index`: The index to use for this stop harness +/// +/// # Example +/// +/// ``` +/// HARNESS_STOP_INDEX(0x0001U); +/// ``` +#define HARNESS_STOP_INDEX(stop_index) \ + do { \ + unsigned int value = (N_STOP_NORMAL << 0x10U) | MAGIC; \ + __cpuid_extended1(value, stop_index); \ + } while (0); + +/// Pseudo-hypercall number to signal the fuzzer that a custom assertion has +/// occurred, and the fuzzer should stop the current fuzzing iteration and reset +/// to the beginning of the fuzzing loop with a "solution" stop status. +#define N_STOP_ASSERT (0x0005U) + +/// HARNESS_ASSERT +/// +/// Signal the fuzzer that a custom assertion has occurred, and the fuzzer +/// should stop the current fuzzing iteration and reset to the beginning of the +/// fuzzing loop with a "solution" stop status. The default index of 0 will be +/// used. If you need to differentiate between multiple assertion harnesses +/// compiled into the same binary, you can use the `HARNESS_ASSERT_INDEX` macro +/// to specify different indices, then enable them at runtime by configuring the +/// fuzzer. +/// +/// # Example +/// +/// ``` +/// HARNESS_ASSERT(); +/// ``` +#define HARNESS_ASSERT() \ + do { \ + unsigned int value = (N_STOP_ASSERT << 0x10U) | MAGIC; \ + __cpuid_extended1(value, DEFAULT_INDEX); \ + } while (0); + +/// HARNESS_ASSERT_INDEX +/// +/// Signal the fuzzer that a custom assertion has occurred, and the fuzzer +/// should stop the current fuzzing iteration and reset to the beginning of the +/// fuzzing loop with a "solution" stop status. The index specified by +/// `assert_index` will be used. If you need to differentiate between multiple +/// assertion harnesses compiled into the same binary, you can use this macro to +/// specify different indices, then enable them at runtime by configuring the +/// fuzzer. +/// +/// # Arguments +/// +/// - `assert_index`: The index to use for this assertion harness +/// +/// # Example +/// +/// ``` +/// HARNESS_ASSERT_INDEX(0x0001U); +/// ``` +#define HARNESS_ASSERT_INDEX(assert_index) \ + do { \ + unsigned int value = (N_STOP_ASSERT << 0x10U) | MAGIC; \ + __cpuid_extended1(value, assert_index); \ + } while (0); #endif // TSFFS_H \ No newline at end of file diff --git a/harness/tsffs-gcc-x86_64.h b/harness/tsffs-gcc-x86_64.h index 8de28fa1..8171f702 100644 --- a/harness/tsffs-gcc-x86_64.h +++ b/harness/tsffs-gcc-x86_64.h @@ -2,25 +2,7 @@ // SPDX-License-Identifier: Apache-2.0 /// Definitions and macros for compiled-in harnessing of C and C++ target -/// software for the RISC-V (64-bit) architecture -/// -/// Example: -/// ```c -/// #include "tsffs-gcc-x86_64.h" -/// -/// int main() { -/// char buf[0x10]; -/// size_t size = 0x10; -/// size_t *size_ptr = &size; -/// HARNESS_START((char *)buf, size_ptr); -/// int retval = YourSpecialDecoder(buf, *size_ptr); -/// if (!retval) { -/// HARNESS_ASSERT(); -/// } else { -/// HARNESS_STOP(); -/// } -/// } -/// ``` +/// software for the x86_64 architecture. #ifndef TSFFS_H #define TSFFS_H @@ -32,103 +14,464 @@ #define FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION (1) #endif // FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION +/// __cpuid +/// +/// Invoke the CPUID instruction with a specific value `value` in register +/// `rax`. +/// +/// # Arguments +/// +/// - `value`: The value to load into the `rax` register before invoking the +/// CPUID instruction +#define __cpuid(value) \ + unsigned int _a __attribute__((unused)) = 0; \ + unsigned int _b __attribute__((unused)) = 0; \ + unsigned int _c __attribute__((unused)) = 0; \ + unsigned int _d __attribute__((unused)) = 0; \ + __asm__ __volatile__("cpuid\n\t" \ + : "=a"(_a), "=b"(_b), "=c"(_c), "=d"(_d) \ + : "a"(value)); + +/// __cpuid_extended1 +/// +/// Invoke the CPUID instruction with a specific value `value` in register +/// `rax` and a pseudo-argument in register `rdi`. +/// +/// # Arguments +/// +/// - `value`: The value to load into the `rax` register before invoking the +/// CPUID instruction +/// - `arg0`: The value to load into the `rdi` register before invoking the +/// CPUID instruction +#define __cpuid_extended1(value, arg0) \ + unsigned int _a __attribute__((unused)) = 0; \ + unsigned int _b __attribute__((unused)) = 0; \ + unsigned int _c __attribute__((unused)) = 0; \ + unsigned int _d __attribute__((unused)) = 0; \ + __asm__ __volatile__("cpuid\n\t" \ + : "=a"(_a), "=b"(_b), "=c"(_c), "=d"(_d) \ + : "a"(value), "D"(arg0)); + +/// __cpuid_extended2 +/// +/// Invoke the CPUID instruction with a specific value `value` in register +/// `rax` and a pseudo-arguments in registers `rdi` and `rsi`. +/// +/// # Arguments +/// +/// - `value`: The value to load into the `rax` register before invoking the +/// CPUID instruction +/// - `arg0`: The value to load into the `rdi` register before invoking the +/// CPUID instruction +/// - `arg1`: The value to load into the `rsi` register before invoking the +/// CPUID instruction +#define __cpuid_extended2(value, arg0, arg1) \ + unsigned int _a __attribute__((unused)) = 0; \ + unsigned int _b __attribute__((unused)) = 0; \ + unsigned int _c __attribute__((unused)) = 0; \ + unsigned int _d __attribute__((unused)) = 0; \ + __asm__ __volatile__("cpuid\n\t" \ + : "=a"(_a), "=b"(_b), "=c"(_c), "=d"(_d) \ + : "a"(value), "D"(arg0), "S"(arg1)); + +/// __cpuid_extended3 +/// +/// Invoke the CPUID instruction with a specific value `value` in register +/// `rax` and a pseudo-arguments in registers `rdi`, `rsi`, and `rdx`. +/// +/// # Arguments +/// +/// - `value`: The value to load into the `rax` register before invoking the +/// CPUID instruction +/// - `arg0`: The value to load into the `rdi` register before invoking the +/// CPUID instruction +/// - `arg1`: The value to load into the `rsi` register before invoking the +/// CPUID instruction +/// - `arg2`: The value to load into the `rdx` register before invoking the +/// CPUID instruction +#define __cpuid_extended3(value, arg0, arg1, arg2) \ + unsigned int _a __attribute__((unused)) = 0; \ + unsigned int _b __attribute__((unused)) = 0; \ + unsigned int _c __attribute__((unused)) = 0; \ + unsigned int _d __attribute__((unused)) = 0; \ + __asm__ __volatile__("cpuid\n\t" \ + : "=a"(_a), "=b"(_b), "=c"(_c), "=d"(_d) \ + : "a"(value), "D"(arg0), "S"(arg1), "d"(arg2)); + +/// __cpuid_extended4 +/// +/// Invoke the CPUID instruction with a specific value `value` in register +/// `rax` and a pseudo-arguments in registers `rdi`, `rsi`, `rdx`, and `rcx`. +/// +/// # Arguments +/// +/// - `value`: The value to load into the `rax` register before invoking the +/// CPUID instruction +/// - `arg0`: The value to load into the `rdi` register before invoking the +/// CPUID instruction +/// - `arg1`: The value to load into the `rsi` register before invoking the +/// CPUID instruction +/// - `arg2`: The value to load into the `rdx` register before invoking the +/// CPUID instruction +/// - `arg3`: The value to load into the `rcx` register before invoking the +/// CPUID instruction +#define __cpuid_extended4(value, arg0, arg1, arg2, arg3) \ + unsigned int _a __attribute__((unused)) = 0; \ + unsigned int _b __attribute__((unused)) = 0; \ + unsigned int _c __attribute__((unused)) = 0; \ + unsigned int _d __attribute__((unused)) = 0; \ + __asm__ __volatile__("cpuid\n\t" \ + : "=a"(_a), "=b"(_b), "=c"(_c), "=d"(_d) \ + : "a"(value), "D"(arg0), "S"(arg1), "d"(arg2), \ + "c"(arg3)); + /// Magic value defined by SIMICS as the "leaf" value of a CPUID instruction /// that is treated as a magic instruction. #define MAGIC (0x4711U) -/// Default magic instruction `n` value to signal the TSFFS fuzzer to start the -/// fuzzing loop -#define MAGIC_START (0x0001U) -/// Default magic instruction `n` value to signal the TSFFS fuzzer to stop and -/// reset the fuzzing loop -#define MAGIC_STOP (0x0002U) -/// Default magic instruction `n` value to signal the TSFFS fuzzer that an error -/// has occurred and the testcase input should be saved as a solution -#define MAGIC_ASSERT (0x0003U) - -/// Alternative magic numbers that can be used for start and stop events in -/// conjunction with setting the magic number for each event via the SIMICS or -/// SIMICS Python script interface -#define MAGIC_ALT_0 (0x0004U) -#define MAGIC_ALT_1 (0x0005U) -#define MAGIC_ALT_2 (0x0006U) -#define MAGIC_ALT_3 (0x0007U) -#define MAGIC_ALT_4 (0x0008U) -#define MAGIC_ALT_5 (0x0009U) -#define MAGIC_ALT_6 (0x000aU) -#define MAGIC_ALT_7 (0x000bU) - -/// Invoke the magic instruction defined by SIMICS for the x86-64 architecture -/// (`cpuid`) with a specific value of `n`, after setting register `rdi` to the -/// value of the pointer to the testcase and register `rsi` to the value of the -/// pointer to the testcase size. These registers are accessed by the fuzzer and -/// are defined per-architecture. -#define __cpuid_extended2(value, inout_ptr_0, inout_ptr_1) \ - unsigned int _a __attribute__((unused)) = 0; \ - __asm__ __volatile__("cpuid" \ - : "=a"(_a) \ - : "a"(value), "D"(inout_ptr_0), "S"(inout_ptr_1) \ - : "rbx", "rcx", "rdx"); - -/// Invoke the magic instruction defined by SIMICS for the x86-64 architecture -/// (`cpuid`) with a specific value of `n` -#define __cpuid(value) \ - unsigned int _a __attribute__((unused)) = 0; \ - __asm__ __volatile__("cpuid\n\t" \ - : "=a"(_a) \ - : "a"(value) \ - : "rbx", "rcx", "rdx") - -/// Signal the fuzzer using a specific magic value `start` to start the fuzzing -/// loop at the point this macro is called. A snapshot will be taken when the -/// macro is called, and the maximum testcase size `*size_ptr` will be saved as -/// `max_testcase_size`. Each iteration of the fuzzing loop, the fuzzer input -/// (the "testcase") will be written to `*testcase_ptr` as if running -/// `memcpy(testcase_ptr, current_testcase, max_testcase_size)`, and the actual -/// size of the current testcase will be written to -/// `*size_ptr` as if running `*size_ptr = current_testcase_size`. -#define __arch_harness_start(start, testcase_ptr, size_ptr) \ - do { \ - unsigned int magic = (start << 0x10U) | MAGIC; \ - __cpuid_extended2(magic, testcase_ptr, size_ptr); \ - } while (0) - -/// Signal the fuzzer using the a specific magic value (`stop`) to stop and -/// reset to the beginning of the fuzzing loop with a "normal" stop status, -/// indicating no solution has occurred. -#define __arch_harness_stop(stop) \ - do { \ - unsigned int magic = (stop << 0x10U) | MAGIC; \ - __cpuid(magic); \ - } while (0) - -/// Signal the fuzzer using the default magic value to start the fuzzing loop at -/// the point this macro is called. A snapshot will be taken when the macro is -/// called, and the maximum testcase size `*size_ptr` will be saved as -/// `max_testcase_size`. Each iteration of the fuzzing loop, the fuzzer input -/// (the "testcase") will be written to -/// `*testcase_ptr` as if running `memcpy(testcase_ptr, current_testcase, -/// max_testcase_size)`, and the actual size of the current testcase will be -/// written to -/// `*size_ptr` as if running `*size_ptr = current_testcase_size`. -#define HARNESS_START(testcase_ptr, size_ptr) \ - do { \ - __arch_harness_start(MAGIC_START, testcase_ptr, size_ptr); \ - } while (0) - -/// Signal the fuzzer using the default magic value to stop and reset to the -/// beginning of the fuzzing loop with a "normal" stop status, indicating no -/// solution has occurred. -#define HARNESS_STOP() \ - do { \ - __arch_harness_stop(MAGIC_STOP); \ - } while (0) - -/// Signal the fuzzer using the default magic value to stop and reset to the -/// beginning of the fuzzing loop with a "solution" stop status, indicating some -/// custom error has occurred. -#define HARNESS_ASSERT() \ - do { \ - __arch_harness_stop(MAGIC_ASSERT); \ - } while (0) + +/// The default index number used for magic instructions. All magic instructions +/// support multiple start and stop indices, which defaults to 0 if not +/// specified. +#define DEFAULT_INDEX (0x0000U) + +/// Pseudo-hypercall number to signal the fuzzer to use the first argument to +/// the magic instruction as the pointer to the testcase buffer and the second +/// argument as a pointer to the size of the testcase buffer. +#define N_START_BUFFER_PTR_SIZE_PTR (0x0001U) + +/// HARNESS_START +/// +/// Signal the fuzzer to start the fuzzing loop at the point this macro is +/// called. The default "index" of 0 will be used. If you need multiple start +/// harnesses compiled into the same binary, you can use the +/// `HARNESS_START_INDEX` macro to specify different indices, then enable them +/// at runtime by configuring the fuzzer. +/// +/// When this macro is called: +/// +/// - A snapshot will be taken and saved +/// - The buffer pointed to by `buffer` will be saved and used as the testcase +/// buffer. Each +/// fuzzing iteration, a new test case will be written to this buffer. +/// - The size of the buffer pointed to by `size_ptr` will be saved as the +/// maximum testcase size. Each fuzzing iteration, the actual size of the +/// current testcase will be written to `*size_ptr`. +/// +/// # Arguments +/// +/// - `buffer`: The pointer to the testcase buffer +/// - `size_ptr`: The pointer to the size of the testcase buffer +/// +/// # Example +/// +/// ``` +/// unsigned char buffer[1024]; +/// size_t size; +/// HARNESS_START(buffer, &size); +/// ``` +#define HARNESS_START(buffer, size_ptr) \ + do { \ + unsigned int value = (N_START_BUFFER_PTR_SIZE_PTR << 0x10U) | MAGIC; \ + __cpuid_extended3(value, DEFAULT_INDEX, buffer, size_ptr); \ + } while (0); + +/// HARNESS_START_INDEX +/// +/// Signal the fuzzer to start the fuzzing loop at the point this macro is +/// called. The index specified by `start_index` will be used. If you need +/// multiple start harnesses compiled into the same binary, you can use this +/// macro to specify different indices, then enable them at runtime by +/// configuring the fuzzer. +/// +/// When this macro is called: +/// +/// - A snapshot will be taken and saved +/// - The buffer pointed to by `buffer` will be saved and used as the testcase +/// buffer. Each +/// fuzzing iteration, a new test case will be written to this buffer. +/// - The size of the buffer pointed to by `size_ptr` will be saved as the +/// maximum testcase size. Each fuzzing iteration, the actual size of the +/// current testcase will be written to `*size_ptr`. +/// +/// # Arguments +/// +/// - `start_index`: The index to use for this start harness +/// - `buffer`: The pointer to the testcase buffer +/// - `size_ptr`: The pointer to the size of the testcase buffer +/// +/// # Example +/// +/// ``` +/// unsigned char buffer[1024]; +/// size_t size; +/// HARNESS_START_INDEX(0x0001U, buffer, &size); +/// ``` +#define HARNESS_START_INDEX(start_index, buffer, size_ptr) \ + do { \ + unsigned int value = (N_START_BUFFER_PTR_SIZE_PTR << 0x10U) | MAGIC; \ + __cpuid_extended3(value, start_index, buffer, size_ptr); \ + } while (0); + +/// Pseudo-hypercall number to signal the fuzzer to use the first argument to +/// the magic instruction as the pointer to the testcase buffer and the second +/// argument as the maximum size of the testcase buffer. +#define N_START_BUFFER_PTR_SIZE_VAL (0x0002U) + +/// HARNESS_START_WITH_MAXIMUM_SIZE +/// +/// Signal the fuzzer to start the fuzzing loop at the point this macro is +/// called. The default "index" of 0 will be used. If you need multiple start +/// harnesses compiled into the same binary, you can use the +/// `HARNESS_START_WITH_MAXIMUM_SIZE_INDEX` macro to specify different indices, +/// then enable them at runtime by configuring the fuzzer. +/// +/// When this macro is called: +/// +/// - A snapshot will be taken and saved +/// - The buffer pointed to by `buffer` will be saved and used as the testcase +/// buffer. Each +/// fuzzing iteration, a new test case will be written to this buffer. +/// - The `max_size` value will be saved as the maximum testcase size. Fuzzing +/// test cases will be truncated to this size before being written to the +/// buffer. +/// +/// # Arguments +/// +/// - `buffer`: The pointer to the testcase buffer +/// - `max_size`: The maximum size of the testcase buffer +/// +/// # Example +/// +/// ``` +/// unsigned char buffer[1024]; +/// HARNESS_START_WITH_MAXIMUM_SIZE(buffer, 1024); +/// ``` +#define HARNESS_START_WITH_MAXIMUM_SIZE(buffer, max_size) \ + do { \ + unsigned int value = (N_START_BUFFER_PTR_SIZE_VAL << 0x10U) | MAGIC; \ + __cpuid_extended3(value, DEFAULT_INDEX, buffer, max_size); \ + } while (0); + +/// HARNESS_START_WITH_MAXIMUM_SIZE_INDEX +/// +/// Signal the fuzzer to start the fuzzing loop at the point this macro is +/// called. The index specified by `start_index` will be used. If you need +/// multiple start harnesses compiled into the same binary, you can use this +/// macro to specify different indices, then enable them at runtime by +/// configuring the fuzzer. +/// +/// When this macro is called: +/// +/// - A snapshot will be taken and saved +/// - The buffer pointed to by `buffer` will be saved and used as the testcase +/// buffer. Each +/// fuzzing iteration, a new test case will be written to this buffer. +/// - The `max_size` value will be saved as the maximum testcase size. Fuzzing +/// test cases will be truncated to this size before being written to the +/// buffer. +/// +/// # Arguments +/// +/// - `start_index`: The index to use for this start harness +/// - `buffer`: The pointer to the testcase buffer +/// - `max_size`: The maximum size of the testcase buffer +/// +/// # Example +/// +/// ``` +/// unsigned char buffer[1024]; +/// HARNESS_START_WITH_MAXIMUM_SIZE_INDEX(0x0001U, buffer, 1024); +/// ``` +#define HARNESS_START_WITH_MAXIMUM_SIZE_INDEX(start_index, buffer, max_size) \ + do { \ + unsigned int value = (N_START_BUFFER_PTR_SIZE_VAL << 0x10U) | MAGIC; \ + __cpuid_extended3(value, start_index, buffer, max_size); \ + } while (0); + +/// Pseudo-hypercall number to signal the fuzzer to use the first argument to +/// the magic instruction as the pointer to the testcase buffer, the second +/// argument as a pointer to the size of the testcase buffer, and the third +/// argument as the maximum size of the testcase buffer. +#define N_START_BUFFER_PTR_SIZE_PTR_VAL (0x0003U) + +/// HARNESS_START_WITH_MAXIMUM_SIZE_AND_PTR +/// +/// Signal the fuzzer to start the fuzzing loop at the point this macro is +/// called. The default "index" of 0 will be used. If you need multiple start +/// harnesses compiled into the same binary, you can use the +/// `HARNESS_START_WITH_MAXIMUM_SIZE_AND_PTR_INDEX` macro to specify different +/// indices, then enable them at runtime by configuring the fuzzer. +/// +/// When this macro is called: +/// +/// - A snapshot will be taken and saved +/// - The buffer pointed to by `buffer` will be saved and used as the testcase +/// buffer. Each +/// fuzzing iteration, a new test case will be written to this buffer. +/// - The address `size_ptr` will be saved. Each fuzzing iteration, the actual +/// size of the current testcase will be written to `*size_ptr`. +/// - The `max_size` value will be saved as the maximum testcase size. Fuzzing +/// test cases will be truncated to this size before being written to the +/// buffer. +/// +/// # Arguments +/// +/// - `buffer`: The pointer to the testcase buffer +/// - `size_ptr`: The pointer to the size of the testcase buffer +/// - `max_size`: The maximum size of the testcase buffer +/// +/// # Example +/// +/// ``` +/// unsigned char buffer[1024]; +/// size_t size; +/// HARNESS_START_WITH_MAXIMUM_SIZE_AND_PTR(buffer, &size, 1024); +/// ``` +#define HARNESS_START_WITH_MAXIMUM_SIZE_AND_PTR(buffer, size_ptr, max_size) \ + do { \ + unsigned int value = (N_START_BUFFER_PTR_SIZE_PTR_VAL << 0x10U) | MAGIC; \ + __cpuid_extended4(value, DEFAULT_INDEX, buffer, size_ptr, max_size); \ + } while (0); + +/// HARNESS_START_WITH_MAXIMUM_SIZE_AND_PTR_INDEX +/// +/// Signal the fuzzer to start the fuzzing loop at the point this macro is +/// called. The index specified by `start_index` will be used. If you need +/// multiple start harnesses compiled into the same binary, you can use this +/// macro to specify different indices, then enable them at runtime by +/// configuring the fuzzer. +/// +/// When this macro is called: +/// +/// - A snapshot will be taken and saved +/// - The buffer pointed to by `buffer` will be saved and used as the testcase +/// buffer. Each +/// fuzzing iteration, a new test case will be written to this buffer. +/// - The address `size_ptr` will be saved. Each fuzzing iteration, the actual +/// size of the current testcase will be written to `*size_ptr`. +/// - The `max_size` value will be saved as the maximum testcase size. Fuzzing +/// test cases will be truncated to this size before being written to the +/// buffer. +/// +/// # Arguments +/// +/// - `start_index`: The index to use for this start harness +/// - `buffer`: The pointer to the testcase buffer +/// - `size_ptr`: The pointer to the size of the testcase buffer +/// - `max_size`: The maximum size of the testcase buffer +/// +/// # Example +/// +/// ``` +/// unsigned char buffer[1024]; +/// size_t size; +/// HARNESS_START_WITH_MAXIMUM_SIZE_AND_PTR_INDEX(0x0001U, buffer, &size, 1024); +/// ``` +#define HARNESS_START_WITH_MAXIMUM_SIZE_AND_PTR_INDEX(start_index, buffer, \ + size_ptr, max_size) \ + do { \ + unsigned int value = (N_START_BUFFER_PTR_SIZE_PTR_VAL << 0x10U) | MAGIC; \ + __cpuid_extended4(value, start_index, buffer, size_ptr, max_size); \ + } while (0); + +/// Pseudo-hypercall number to signal the fuzzer to stop the current fuzzing +/// iteration and reset to the beginning of the fuzzing loop with a "normal" +/// stop status, indicating no solution has occurred. +#define N_STOP_NORMAL (0x0004U) + +/// HARNESS_STOP +/// +/// Signal the fuzzer to stop and reset to the beginning of the fuzzing loop +/// with a "normal" stop status, indicating no solution has occurred. The +/// default index of 0 will be used. If you need to differentiate between +/// multiple stop harnesses compiled into the same binary, you can use the +/// `HARNESS_STOP_INDEX` macro to specify different indices, then enable them at +/// runtime by configuring the fuzzer. +/// +/// # Example +/// +/// ``` +/// HARNESS_STOP(); +/// ``` +#define HARNESS_STOP() \ + do { \ + unsigned int value = (N_STOP_NORMAL << 0x10U) | MAGIC; \ + __cpuid_extended1(value, DEFAULT_INDEX); \ + } while (0); + +/// HARNESS_STOP_INDEX +/// +/// Signal the fuzzer to stop and reset to the beginning of the fuzzing loop +/// with a "normal" stop status, indicating no solution has occurred. The index +/// specified by `stop_index` will be used. If you need to differentiate between +/// multiple stop harnesses compiled into the same binary, you can use this +/// macro to specify different indices, then enable them at runtime by +/// configuring the fuzzer. +/// +/// # Arguments +/// +/// - `stop_index`: The index to use for this stop harness +/// +/// # Example +/// +/// ``` +/// HARNESS_STOP_INDEX(0x0001U); +/// ``` +#define HARNESS_STOP_INDEX(stop_index) \ + do { \ + unsigned int value = (N_STOP_NORMAL << 0x10U) | MAGIC; \ + __cpuid_extended1(value, stop_index); \ + } while (0); + +/// Pseudo-hypercall number to signal the fuzzer that a custom assertion has +/// occurred, and the fuzzer should stop the current fuzzing iteration and reset +/// to the beginning of the fuzzing loop with a "solution" stop status. +#define N_STOP_ASSERT (0x0005U) + +/// HARNESS_ASSERT +/// +/// Signal the fuzzer that a custom assertion has occurred, and the fuzzer +/// should stop the current fuzzing iteration and reset to the beginning of the +/// fuzzing loop with a "solution" stop status. The default index of 0 will be +/// used. If you need to differentiate between multiple assertion harnesses +/// compiled into the same binary, you can use the `HARNESS_ASSERT_INDEX` macro +/// to specify different indices, then enable them at runtime by configuring the +/// fuzzer. +/// +/// # Example +/// +/// ``` +/// HARNESS_ASSERT(); +/// ``` +#define HARNESS_ASSERT() \ + do { \ + unsigned int value = (N_STOP_ASSERT << 0x10U) | MAGIC; \ + __cpuid_extended1(value, DEFAULT_INDEX); \ + } while (0); + +/// HARNESS_ASSERT_INDEX +/// +/// Signal the fuzzer that a custom assertion has occurred, and the fuzzer +/// should stop the current fuzzing iteration and reset to the beginning of the +/// fuzzing loop with a "solution" stop status. The index specified by +/// `assert_index` will be used. If you need to differentiate between multiple +/// assertion harnesses compiled into the same binary, you can use this macro to +/// specify different indices, then enable them at runtime by configuring the +/// fuzzer. +/// +/// # Arguments +/// +/// - `assert_index`: The index to use for this assertion harness +/// +/// # Example +/// +/// ``` +/// HARNESS_ASSERT_INDEX(0x0001U); +/// ``` +#define HARNESS_ASSERT_INDEX(assert_index) \ + do { \ + unsigned int value = (N_STOP_ASSERT << 0x10U) | MAGIC; \ + __cpuid_extended1(value, assert_index); \ + } while (0); #endif // TSFFS_H \ No newline at end of file diff --git a/harness/tsffs-msvc-x86_64.asm b/harness/tsffs-msvc-x86_64.asm new file mode 100644 index 00000000..c66a039a --- /dev/null +++ b/harness/tsffs-msvc-x86_64.asm @@ -0,0 +1,187 @@ +; NOTES: +; Arguments: RCX, RDX, R8, R9 +; Callee-saved: RBX, RBP, RDI, RSI, RSP, R12, R13, R14, R15, XMM6-15 +; Caller-saved: RAX, RCX, RDX, R8, R9, R10, R11, XMM0-5 +; Return Value: RAX +; +; Test with: "W:\Program Files\Microsoft Visual Studio\2022\BuildTools\VC\Tools\MSVC\14.31.31103\bin\Hostx64\x64\ml64.exe" /c /Cp /Cx /Zf tsffs-msvc-x86_64.asm + +.CODE + +HARNESS_START PROC + push RDI + push RSI + push RBX + + mov RDI, 00h + mov RSI, RCX + ; mov RDX, RDX ; Unnecessary + mov RAX, 014711h + + cpuid + + pop RBX + pop RSI + pop RDI + + ret +HARNESS_START ENDP + +HARNESS_START_INDEX PROC + push RDI + push RSI + push RBX + + mov RDI, RCX + mov RSI, RDX + mov RDX, R8 + mov RAX, 014711h + + cpuid + + pop RBX + pop RSI + pop RDI + + ret +HARNESS_START_INDEX ENDP + +HARNESS_START_WITH_MAXIMUM_SIZE PROC + push RDI + push RSI + push RBX + + mov RDI, 00h + mov RSI, RCX + ; mov RDX, RDX ; Unnecessary + mov RAX, 024711h + + cpuid + + pop RBX + pop RSI + pop RDI + + ret +HARNESS_START_WITH_MAXIMUM_SIZE ENDP + +HARNESS_START_WITH_MAXIMUM_SIZE_INDEX PROC + push RDI + push RSI + push RBX + + mov RDI, RCX + mov RSI, RDX + mov RDX, R8 + mov RAX, 024711h + + cpuid + + pop RBX + pop RSI + pop RDI + + ret +HARNESS_START_WITH_MAXIMUM_SIZE_INDEX ENDP + +HARNESS_START_WITH_MAXIMUM_SIZE_AND_PTR PROC + push RDI + push RSI + push RBX + + mov RDI, 00h + mov RSI, RCX + ; mov RDX, RDX ; Unnecessary + mov RCX, R8 + mov RAX, 034711h + + cpuid + + pop RBX + pop RSI + pop RDI + + ret +HARNESS_START_WITH_MAXIMUM_SIZE_AND_PTR ENDP + +HARNESS_START_WITH_MAXIMUM_SIZE_AND_PTR_INDEX PROC + push RDI + push RSI + push RBX + + mov RDI, RCX + mov RSI, RDX + mov RDX, R8 + mov RCX, R9 + mov RAX, 034711h + + cpuid + + pop RBX + pop RSI + pop RDI + + ret +HARNESS_START_WITH_MAXIMUM_SIZE_AND_PTR_INDEX ENDP + +HARNESS_STOP PROC + push RDI + push RBX + + mov RDI, 00h + mov RAX, 044711h + + cpuid + + pop RBX + pop RDI + + ret +HARNESS_STOP ENDP + +HARNESS_STOP_INDEX PROC + push RDI + push RBX + + mov RDI, RCX + mov RAX, 044711h + + cpuid + + pop RBX + pop RDI + + ret +HARNESS_STOP_INDEX ENDP + +HARNESS_ASSERT PROC + push RDI + push RBX + + mov RDI, 00h + mov RAX, 054711h + + cpuid + + pop RBX + pop RDI + + ret +HARNESS_ASSERT ENDP + +HARNESS_ASSERT_INDEX PROC + push RDI + push RBX + + mov RDI, RCX + mov RAX, 054711h + + cpuid + + pop RBX + pop RDI + + ret +HARNESS_ASSERT_INDEX ENDP + +END \ No newline at end of file diff --git a/harness/tsffs-msvc-x86_64.h b/harness/tsffs-msvc-x86_64.h new file mode 100644 index 00000000..0122014f --- /dev/null +++ b/harness/tsffs-msvc-x86_64.h @@ -0,0 +1,290 @@ +#ifndef TSFFS_H +#define TSFFS_H + +/// Define common with LibFuzzer and other fuzzers to allow code that is +/// fuzzing-specific to be left in the codebase. See +/// https://llvm.org/docs/LibFuzzer.html#id35 for more information +#ifndef FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION +#define FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION (1) +#endif // FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION + +#include + +/// HARNESS_START +/// +/// Signal the fuzzer to start the fuzzing loop at the point this macro is +/// called. The default "index" of 0 will be used. If you need multiple start +/// harnesses compiled into the same binary, you can use the +/// `HARNESS_START_INDEX` macro to specify different indices, then enable them +/// at runtime by configuring the fuzzer. +/// +/// When this macro is called: +/// +/// - A snapshot will be taken and saved +/// - The buffer pointed to by `buffer` will be saved and used as the testcase +/// buffer. Each +/// fuzzing iteration, a new test case will be written to this buffer. +/// - The size of the buffer pointed to by `size_ptr` will be saved as the +/// maximum testcase size. Each fuzzing iteration, the actual size of the +/// current testcase will be written to `*size_ptr`. +/// +/// # Arguments +/// +/// - `buffer`: The pointer to the testcase buffer +/// - `size_ptr`: The pointer to the size of the testcase buffer +/// +/// # Example +/// +/// ``` +/// unsigned char buffer[1024]; +/// size_t size; +/// HARNESS_START(buffer, &size); +/// ``` +void HARNESS_START(void *buffer, void *size_ptr); + +/// HARNESS_START_INDEX +/// +/// Signal the fuzzer to start the fuzzing loop at the point this macro is +/// called. The index specified by `start_index` will be used. If you need +/// multiple start harnesses compiled into the same binary, you can use this +/// macro to specify different indices, then enable them at runtime by +/// configuring the fuzzer. +/// +/// When this macro is called: +/// +/// - A snapshot will be taken and saved +/// - The buffer pointed to by `buffer` will be saved and used as the testcase +/// buffer. Each +/// fuzzing iteration, a new test case will be written to this buffer. +/// - The size of the buffer pointed to by `size_ptr` will be saved as the +/// maximum testcase size. Each fuzzing iteration, the actual size of the +/// current testcase will be written to `*size_ptr`. +/// +/// # Arguments +/// +/// - `start_index`: The index to use for this start harness +/// - `buffer`: The pointer to the testcase buffer +/// - `size_ptr`: The pointer to the size of the testcase buffer +/// +/// # Example +/// +/// ``` +/// unsigned char buffer[1024]; +/// size_t size; +/// HARNESS_START_INDEX(0x0001U, buffer, &size); +/// ``` +void HARNESS_START_INDEX(size_t start_index, void *buffer, void *size_ptr); + +/// HARNESS_START_WITH_MAXIMUM_SIZE +/// +/// Signal the fuzzer to start the fuzzing loop at the point this macro is +/// called. The default "index" of 0 will be used. If you need multiple start +/// harnesses compiled into the same binary, you can use the +/// `HARNESS_START_WITH_MAXIMUM_SIZE_INDEX` macro to specify different indices, +/// then enable them at runtime by configuring the fuzzer. +/// +/// When this macro is called: +/// +/// - A snapshot will be taken and saved +/// - The buffer pointed to by `buffer` will be saved and used as the testcase +/// buffer. Each +/// fuzzing iteration, a new test case will be written to this buffer. +/// - The `max_size` value will be saved as the maximum testcase size. Fuzzing +/// test cases will be truncated to this size before being written to the +/// buffer. +/// +/// # Arguments +/// +/// - `buffer`: The pointer to the testcase buffer +/// - `max_size`: The maximum size of the testcase buffer +/// +/// # Example +/// +/// ``` +/// unsigned char buffer[1024]; +/// HARNESS_START_WITH_MAXIMUM_SIZE(buffer, 1024); +/// ``` +void HARNESS_START_WITH_MAXIMUM_SIZE(void *buffer, size_t max_size); + +/// HARNESS_START_WITH_MAXIMUM_SIZE_INDEX +/// +/// Signal the fuzzer to start the fuzzing loop at the point this macro is +/// called. The index specified by `start_index` will be used. If you need +/// multiple start harnesses compiled into the same binary, you can use this +/// macro to specify different indices, then enable them at runtime by +/// configuring the fuzzer. +/// +/// When this macro is called: +/// +/// - A snapshot will be taken and saved +/// - The buffer pointed to by `buffer` will be saved and used as the testcase +/// buffer. Each +/// fuzzing iteration, a new test case will be written to this buffer. +/// - The `max_size` value will be saved as the maximum testcase size. Fuzzing +/// test cases will be truncated to this size before being written to the +/// buffer. +/// +/// # Arguments +/// +/// - `start_index`: The index to use for this start harness +/// - `buffer`: The pointer to the testcase buffer +/// - `max_size`: The maximum size of the testcase buffer +/// +/// # Example +/// +/// ``` +/// unsigned char buffer[1024]; +/// HARNESS_START_WITH_MAXIMUM_SIZE_INDEX(0x0001U, buffer, 1024); +/// ``` +void HARNESS_START_WITH_MAXIMUM_SIZE_INDEX(size_t start_index, void *buffer, + size_t max_size); + +/// HARNESS_START_WITH_MAXIMUM_SIZE_AND_PTR +/// +/// Signal the fuzzer to start the fuzzing loop at the point this macro is +/// called. The default "index" of 0 will be used. If you need multiple start +/// harnesses compiled into the same binary, you can use the +/// `HARNESS_START_WITH_MAXIMUM_SIZE_AND_PTR_INDEX` macro to specify different +/// indices, then enable them at runtime by configuring the fuzzer. +/// +/// When this macro is called: +/// +/// - A snapshot will be taken and saved +/// - The buffer pointed to by `buffer` will be saved and used as the testcase +/// buffer. Each +/// fuzzing iteration, a new test case will be written to this buffer. +/// - The address `size_ptr` will be saved. Each fuzzing iteration, the actual +/// size of the current testcase will be written to `*size_ptr`. +/// - The `max_size` value will be saved as the maximum testcase size. Fuzzing +/// test cases will be truncated to this size before being written to the +/// buffer. +/// +/// # Arguments +/// +/// - `buffer`: The pointer to the testcase buffer +/// - `size_ptr`: The pointer to the size of the testcase buffer +/// - `max_size`: The maximum size of the testcase buffer +/// +/// # Example +/// +/// ``` +/// unsigned char buffer[1024]; +/// size_t size; +/// HARNESS_START_WITH_MAXIMUM_SIZE_AND_PTR(buffer, &size, 1024); +/// ``` +void HARNESS_START_WITH_MAXIMUM_SIZE_AND_PTR(void *buffer, void *size_ptr, + size_t max_size); + +/// HARNESS_START_WITH_MAXIMUM_SIZE_AND_PTR_INDEX +/// +/// Signal the fuzzer to start the fuzzing loop at the point this macro is +/// called. The index specified by `start_index` will be used. If you need +/// multiple start harnesses compiled into the same binary, you can use this +/// macro to specify different indices, then enable them at runtime by +/// configuring the fuzzer. +/// +/// When this macro is called: +/// +/// - A snapshot will be taken and saved +/// - The buffer pointed to by `buffer` will be saved and used as the testcase +/// buffer. Each +/// fuzzing iteration, a new test case will be written to this buffer. +/// - The address `size_ptr` will be saved. Each fuzzing iteration, the actual +/// size of the current testcase will be written to `*size_ptr`. +/// - The `max_size` value will be saved as the maximum testcase size. Fuzzing +/// test cases will be truncated to this size before being written to the +/// buffer. +/// +/// # Arguments +/// +/// - `start_index`: The index to use for this start harness +/// - `buffer`: The pointer to the testcase buffer +/// - `size_ptr`: The pointer to the size of the testcase buffer +/// - `max_size`: The maximum size of the testcase buffer +/// +/// # Example +/// +/// ``` +/// unsigned char buffer[1024]; +/// size_t size; +/// HARNESS_START_WITH_MAXIMUM_SIZE_AND_PTR_INDEX(0x0001U, buffer, &size, 1024); +/// ``` +void HARNESS_START_WITH_MAXIMUM_SIZE_AND_PTR_INDEX(size_t start_index, + void *buffer, void *size_ptr, + size_t max_size); + +/// HARNESS_STOP +/// +/// Signal the fuzzer to stop and reset to the beginning of the fuzzing loop +/// with a "normal" stop status, indicating no solution has occurred. The +/// default index of 0 will be used. If you need to differentiate between +/// multiple stop harnesses compiled into the same binary, you can use the +/// `HARNESS_STOP_INDEX` macro to specify different indices, then enable them at +/// runtime by configuring the fuzzer. +/// +/// # Example +/// +/// ``` +/// HARNESS_STOP(); +/// ``` +void HARNESS_STOP(void); + +/// HARNESS_STOP_INDEX +/// +/// Signal the fuzzer to stop and reset to the beginning of the fuzzing loop +/// with a "normal" stop status, indicating no solution has occurred. The index +/// specified by `stop_index` will be used. If you need to differentiate between +/// multiple stop harnesses compiled into the same binary, you can use this +/// macro to specify different indices, then enable them at runtime by +/// configuring the fuzzer. +/// +/// # Arguments +/// +/// - `stop_index`: The index to use for this stop harness +/// +/// # Example +/// +/// ``` +/// HARNESS_STOP_INDEX(0x0001U); +/// ``` +void HARNESS_STOP_INDEX(size_t stop_index); + +/// HARNESS_ASSERT +/// +/// Signal the fuzzer that a custom assertion has occurred, and the fuzzer +/// should stop the current fuzzing iteration and reset to the beginning of the +/// fuzzing loop with a "solution" stop status. The default index of 0 will be +/// used. If you need to differentiate between multiple assertion harnesses +/// compiled into the same binary, you can use the `HARNESS_ASSERT_INDEX` macro +/// to specify different indices, then enable them at runtime by configuring the +/// fuzzer. +/// +/// # Example +/// +/// ``` +/// HARNESS_ASSERT(); +/// ``` +void HARNESS_ASSERT(void); + +/// HARNESS_ASSERT_INDEX +/// +/// Signal the fuzzer that a custom assertion has occurred, and the fuzzer +/// should stop the current fuzzing iteration and reset to the beginning of the +/// fuzzing loop with a "solution" stop status. The index specified by +/// `assert_index` will be used. If you need to differentiate between multiple +/// assertion harnesses compiled into the same binary, you can use this macro to +/// specify different indices, then enable them at runtime by configuring the +/// fuzzer. +/// +/// # Arguments +/// +/// - `assert_index`: The index to use for this assertion harness +/// +/// # Example +/// +/// ``` +/// HARNESS_ASSERT_INDEX(0x0001U); +/// ``` +void HARNESS_ASSERT_INDEX(size_t assert_index); + +#endif // TSFFS_H \ No newline at end of file diff --git a/harness/tsffs.h b/harness/tsffs.h new file mode 100644 index 00000000..bf116af2 --- /dev/null +++ b/harness/tsffs.h @@ -0,0 +1,2876 @@ +// Copyright (C) 2024 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 + +#if defined(__GNUC__) || defined(__clang__) +#ifdef __i386__ +// Copyright (C) 2024 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 + +/// Definitions and macros for compiled-in harnessing of C and C++ target +/// software for the X86 architecture. + +#ifndef TSFFS_H +#define TSFFS_H + +/// Define common with LibFuzzer and other fuzzers to allow code that is +/// fuzzing-specific to be left in the codebase. See +/// https://llvm.org/docs/LibFuzzer.html#id35 for more information +#ifndef FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION +#define FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION (1) +#endif // FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION + +/// __cpuid +/// +/// Invoke the CPUID instruction with a specific value `value` in register +/// `rax`. +/// +/// # Arguments +/// +/// - `value`: The value to load into the `rax` register before invoking the +/// CPUID instruction +#define __cpuid(value) \ + unsigned int _a __attribute__((unused)) = 0; \ + unsigned int _b __attribute__((unused)) = 0; \ + unsigned int _c __attribute__((unused)) = 0; \ + unsigned int _d __attribute__((unused)) = 0; \ + __asm__ __volatile__("cpuid\n\t" \ + : "=a"(_a), "=b"(_b), "=c"(_c), "=d"(_d) \ + : "a"(value)); + +/// __cpuid_extended1 +/// +/// Invoke the CPUID instruction with a specific value `value` in register +/// `rax` and a pseudo-argument in register `rdi`. +/// +/// # Arguments +/// +/// - `value`: The value to load into the `rax` register before invoking the +/// CPUID instruction +/// - `arg0`: The value to load into the `rdi` register before invoking the +/// CPUID instruction +#define __cpuid_extended1(value, arg0) \ + unsigned int _a __attribute__((unused)) = 0; \ + unsigned int _b __attribute__((unused)) = 0; \ + unsigned int _c __attribute__((unused)) = 0; \ + unsigned int _d __attribute__((unused)) = 0; \ + __asm__ __volatile__("cpuid\n\t" \ + : "=a"(_a), "=b"(_b), "=c"(_c), "=d"(_d) \ + : "a"(value), "D"(arg0)); + +/// __cpuid_extended2 +/// +/// Invoke the CPUID instruction with a specific value `value` in register +/// `rax` and a pseudo-arguments in registers `rdi` and `rsi`. +/// +/// # Arguments +/// +/// - `value`: The value to load into the `rax` register before invoking the +/// CPUID instruction +/// - `arg0`: The value to load into the `rdi` register before invoking the +/// CPUID instruction +/// - `arg1`: The value to load into the `rsi` register before invoking the +/// CPUID instruction +#define __cpuid_extended2(value, arg0, arg1) \ + unsigned int _a __attribute__((unused)) = 0; \ + unsigned int _b __attribute__((unused)) = 0; \ + unsigned int _c __attribute__((unused)) = 0; \ + unsigned int _d __attribute__((unused)) = 0; \ + __asm__ __volatile__("cpuid\n\t" \ + : "=a"(_a), "=b"(_b), "=c"(_c), "=d"(_d) \ + : "a"(value), "D"(arg0), "S"(arg1)); + +/// __cpuid_extended3 +/// +/// Invoke the CPUID instruction with a specific value `value` in register +/// `rax` and a pseudo-arguments in registers `rdi`, `rsi`, and `rdx`. +/// +/// # Arguments +/// +/// - `value`: The value to load into the `rax` register before invoking the +/// CPUID instruction +/// - `arg0`: The value to load into the `rdi` register before invoking the +/// CPUID instruction +/// - `arg1`: The value to load into the `rsi` register before invoking the +/// CPUID instruction +/// - `arg2`: The value to load into the `rdx` register before invoking the +/// CPUID instruction +#define __cpuid_extended3(value, arg0, arg1, arg2) \ + unsigned int _a __attribute__((unused)) = 0; \ + unsigned int _b __attribute__((unused)) = 0; \ + unsigned int _c __attribute__((unused)) = 0; \ + unsigned int _d __attribute__((unused)) = 0; \ + __asm__ __volatile__("cpuid\n\t" \ + : "=a"(_a), "=b"(_b), "=c"(_c), "=d"(_d) \ + : "a"(value), "D"(arg0), "S"(arg1), "d"(arg2)); + +/// __cpuid_extended4 +/// +/// Invoke the CPUID instruction with a specific value `value` in register +/// `rax` and a pseudo-arguments in registers `rdi`, `rsi`, `rdx`, and `rcx`. +/// +/// # Arguments +/// +/// - `value`: The value to load into the `rax` register before invoking the +/// CPUID instruction +/// - `arg0`: The value to load into the `rdi` register before invoking the +/// CPUID instruction +/// - `arg1`: The value to load into the `rsi` register before invoking the +/// CPUID instruction +/// - `arg2`: The value to load into the `rdx` register before invoking the +/// CPUID instruction +/// - `arg3`: The value to load into the `rcx` register before invoking the +/// CPUID instruction +#define __cpuid_extended4(value, arg0, arg1, arg2, arg3) \ + unsigned int _a __attribute__((unused)) = 0; \ + unsigned int _b __attribute__((unused)) = 0; \ + unsigned int _c __attribute__((unused)) = 0; \ + unsigned int _d __attribute__((unused)) = 0; \ + __asm__ __volatile__("cpuid\n\t" \ + : "=a"(_a), "=b"(_b), "=c"(_c), "=d"(_d) \ + : "a"(value), "D"(arg0), "S"(arg1), "d"(arg2), \ + "c"(arg3)); + +/// Magic value defined by SIMICS as the "leaf" value of a CPUID instruction +/// that is treated as a magic instruction. +#define MAGIC (0x4711U) + +/// The default index number used for magic instructions. All magic instructions +/// support multiple start and stop indices, which defaults to 0 if not +/// specified. +#define DEFAULT_INDEX (0x0000U) + +/// Pseudo-hypercall number to signal the fuzzer to use the first argument to +/// the magic instruction as the pointer to the testcase buffer and the second +/// argument as a pointer to the size of the testcase buffer. +#define N_START_BUFFER_PTR_SIZE_PTR (0x0001U) + +/// HARNESS_START +/// +/// Signal the fuzzer to start the fuzzing loop at the point this macro is +/// called. The default "index" of 0 will be used. If you need multiple start +/// harnesses compiled into the same binary, you can use the +/// `HARNESS_START_INDEX` macro to specify different indices, then enable them +/// at runtime by configuring the fuzzer. +/// +/// When this macro is called: +/// +/// - A snapshot will be taken and saved +/// - The buffer pointed to by `buffer` will be saved and used as the testcase +/// buffer. Each +/// fuzzing iteration, a new test case will be written to this buffer. +/// - The size of the buffer pointed to by `size_ptr` will be saved as the +/// maximum testcase size. Each fuzzing iteration, the actual size of the +/// current testcase will be written to `*size_ptr`. +/// +/// # Arguments +/// +/// - `buffer`: The pointer to the testcase buffer +/// - `size_ptr`: The pointer to the size of the testcase buffer +/// +/// # Example +/// +/// ``` +/// unsigned char buffer[1024]; +/// size_t size; +/// HARNESS_START(buffer, &size); +/// ``` +#define HARNESS_START(buffer, size_ptr) \ + do { \ + unsigned int value = (N_START_BUFFER_PTR_SIZE_PTR << 0x10U) | MAGIC; \ + __cpuid_extended3(value, DEFAULT_INDEX, buffer, size_ptr); \ + } while (0); + +/// HARNESS_START_INDEX +/// +/// Signal the fuzzer to start the fuzzing loop at the point this macro is +/// called. The index specified by `start_index` will be used. If you need +/// multiple start harnesses compiled into the same binary, you can use this +/// macro to specify different indices, then enable them at runtime by +/// configuring the fuzzer. +/// +/// When this macro is called: +/// +/// - A snapshot will be taken and saved +/// - The buffer pointed to by `buffer` will be saved and used as the testcase +/// buffer. Each +/// fuzzing iteration, a new test case will be written to this buffer. +/// - The size of the buffer pointed to by `size_ptr` will be saved as the +/// maximum testcase size. Each fuzzing iteration, the actual size of the +/// current testcase will be written to `*size_ptr`. +/// +/// # Arguments +/// +/// - `start_index`: The index to use for this start harness +/// - `buffer`: The pointer to the testcase buffer +/// - `size_ptr`: The pointer to the size of the testcase buffer +/// +/// # Example +/// +/// ``` +/// unsigned char buffer[1024]; +/// size_t size; +/// HARNESS_START_INDEX(0x0001U, buffer, &size); +/// ``` +#define HARNESS_START_INDEX(start_index, buffer, size_ptr) \ + do { \ + unsigned int value = (N_START_BUFFER_PTR_SIZE_PTR << 0x10U) | MAGIC; \ + __cpuid_extended3(value, start_index, buffer, size_ptr); \ + } while (0); + +/// Pseudo-hypercall number to signal the fuzzer to use the first argument to +/// the magic instruction as the pointer to the testcase buffer and the second +/// argument as the maximum size of the testcase buffer. +#define N_START_BUFFER_PTR_SIZE_VAL (0x0002U) + +/// HARNESS_START_WITH_MAXIMUM_SIZE +/// +/// Signal the fuzzer to start the fuzzing loop at the point this macro is +/// called. The default "index" of 0 will be used. If you need multiple start +/// harnesses compiled into the same binary, you can use the +/// `HARNESS_START_WITH_MAXIMUM_SIZE_INDEX` macro to specify different indices, +/// then enable them at runtime by configuring the fuzzer. +/// +/// When this macro is called: +/// +/// - A snapshot will be taken and saved +/// - The buffer pointed to by `buffer` will be saved and used as the testcase +/// buffer. Each +/// fuzzing iteration, a new test case will be written to this buffer. +/// - The `max_size` value will be saved as the maximum testcase size. Fuzzing +/// test cases will be truncated to this size before being written to the +/// buffer. +/// +/// # Arguments +/// +/// - `buffer`: The pointer to the testcase buffer +/// - `max_size`: The maximum size of the testcase buffer +/// +/// # Example +/// +/// ``` +/// unsigned char buffer[1024]; +/// HARNESS_START_WITH_MAXIMUM_SIZE(buffer, 1024); +/// ``` +#define HARNESS_START_WITH_MAXIMUM_SIZE(buffer, max_size) \ + do { \ + unsigned int value = (N_START_BUFFER_PTR_SIZE_VAL << 0x10U) | MAGIC; \ + __cpuid_extended3(value, DEFAULT_INDEX, buffer, max_size); \ + } while (0); + +/// HARNESS_START_WITH_MAXIMUM_SIZE_INDEX +/// +/// Signal the fuzzer to start the fuzzing loop at the point this macro is +/// called. The index specified by `start_index` will be used. If you need +/// multiple start harnesses compiled into the same binary, you can use this +/// macro to specify different indices, then enable them at runtime by +/// configuring the fuzzer. +/// +/// When this macro is called: +/// +/// - A snapshot will be taken and saved +/// - The buffer pointed to by `buffer` will be saved and used as the testcase +/// buffer. Each +/// fuzzing iteration, a new test case will be written to this buffer. +/// - The `max_size` value will be saved as the maximum testcase size. Fuzzing +/// test cases will be truncated to this size before being written to the +/// buffer. +/// +/// # Arguments +/// +/// - `start_index`: The index to use for this start harness +/// - `buffer`: The pointer to the testcase buffer +/// - `max_size`: The maximum size of the testcase buffer +/// +/// # Example +/// +/// ``` +/// unsigned char buffer[1024]; +/// HARNESS_START_WITH_MAXIMUM_SIZE_INDEX(0x0001U, buffer, 1024); +/// ``` +#define HARNESS_START_WITH_MAXIMUM_SIZE_INDEX(start_index, buffer, max_size) \ + do { \ + unsigned int value = (N_START_BUFFER_PTR_SIZE_VAL << 0x10U) | MAGIC; \ + __cpuid_extended3(value, start_index, buffer, max_size); \ + } while (0); + +/// Pseudo-hypercall number to signal the fuzzer to use the first argument to +/// the magic instruction as the pointer to the testcase buffer, the second +/// argument as a pointer to the size of the testcase buffer, and the third +/// argument as the maximum size of the testcase buffer. +#define N_START_BUFFER_PTR_SIZE_PTR_VAL (0x0003U) + +/// HARNESS_START_WITH_MAXIMUM_SIZE_AND_PTR +/// +/// Signal the fuzzer to start the fuzzing loop at the point this macro is +/// called. The default "index" of 0 will be used. If you need multiple start +/// harnesses compiled into the same binary, you can use the +/// `HARNESS_START_WITH_MAXIMUM_SIZE_AND_PTR_INDEX` macro to specify different +/// indices, then enable them at runtime by configuring the fuzzer. +/// +/// When this macro is called: +/// +/// - A snapshot will be taken and saved +/// - The buffer pointed to by `buffer` will be saved and used as the testcase +/// buffer. Each +/// fuzzing iteration, a new test case will be written to this buffer. +/// - The address `size_ptr` will be saved. Each fuzzing iteration, the actual +/// size of the current testcase will be written to `*size_ptr`. +/// - The `max_size` value will be saved as the maximum testcase size. Fuzzing +/// test cases will be truncated to this size before being written to the +/// buffer. +/// +/// # Arguments +/// +/// - `buffer`: The pointer to the testcase buffer +/// - `size_ptr`: The pointer to the size of the testcase buffer +/// - `max_size`: The maximum size of the testcase buffer +/// +/// # Example +/// +/// ``` +/// unsigned char buffer[1024]; +/// size_t size; +/// HARNESS_START_WITH_MAXIMUM_SIZE_AND_PTR(buffer, &size, 1024); +/// ``` +#define HARNESS_START_WITH_MAXIMUM_SIZE_AND_PTR(buffer, size_ptr, max_size) \ + do { \ + unsigned int value = (N_START_BUFFER_PTR_SIZE_PTR_VAL << 0x10U) | MAGIC; \ + __cpuid_extended4(value, DEFAULT_INDEX, buffer, size_ptr, max_size); \ + } while (0); + +/// HARNESS_START_WITH_MAXIMUM_SIZE_AND_PTR_INDEX +/// +/// Signal the fuzzer to start the fuzzing loop at the point this macro is +/// called. The index specified by `start_index` will be used. If you need +/// multiple start harnesses compiled into the same binary, you can use this +/// macro to specify different indices, then enable them at runtime by +/// configuring the fuzzer. +/// +/// When this macro is called: +/// +/// - A snapshot will be taken and saved +/// - The buffer pointed to by `buffer` will be saved and used as the testcase +/// buffer. Each +/// fuzzing iteration, a new test case will be written to this buffer. +/// - The address `size_ptr` will be saved. Each fuzzing iteration, the actual +/// size of the current testcase will be written to `*size_ptr`. +/// - The `max_size` value will be saved as the maximum testcase size. Fuzzing +/// test cases will be truncated to this size before being written to the +/// buffer. +/// +/// # Arguments +/// +/// - `start_index`: The index to use for this start harness +/// - `buffer`: The pointer to the testcase buffer +/// - `size_ptr`: The pointer to the size of the testcase buffer +/// - `max_size`: The maximum size of the testcase buffer +/// +/// # Example +/// +/// ``` +/// unsigned char buffer[1024]; +/// size_t size; +/// HARNESS_START_WITH_MAXIMUM_SIZE_AND_PTR_INDEX(0x0001U, buffer, &size, 1024); +/// ``` +#define HARNESS_START_WITH_MAXIMUM_SIZE_AND_PTR_INDEX(start_index, buffer, \ + size_ptr, max_size) \ + do { \ + unsigned int value = (N_START_BUFFER_PTR_SIZE_PTR_VAL << 0x10U) | MAGIC; \ + __cpuid_extended4(value, start_index, buffer, size_ptr, max_size); \ + } while (0); + +/// Pseudo-hypercall number to signal the fuzzer to stop the current fuzzing +/// iteration and reset to the beginning of the fuzzing loop with a "normal" +/// stop status, indicating no solution has occurred. +#define N_STOP_NORMAL (0x0004U) + +/// HARNESS_STOP +/// +/// Signal the fuzzer to stop and reset to the beginning of the fuzzing loop +/// with a "normal" stop status, indicating no solution has occurred. The +/// default index of 0 will be used. If you need to differentiate between +/// multiple stop harnesses compiled into the same binary, you can use the +/// `HARNESS_STOP_INDEX` macro to specify different indices, then enable them at +/// runtime by configuring the fuzzer. +/// +/// # Example +/// +/// ``` +/// HARNESS_STOP(); +/// ``` +#define HARNESS_STOP() \ + do { \ + unsigned int value = (N_STOP_NORMAL << 0x10U) | MAGIC; \ + __cpuid_extended1(value, DEFAULT_INDEX); \ + } while (0); + +/// HARNESS_STOP_INDEX +/// +/// Signal the fuzzer to stop and reset to the beginning of the fuzzing loop +/// with a "normal" stop status, indicating no solution has occurred. The index +/// specified by `stop_index` will be used. If you need to differentiate between +/// multiple stop harnesses compiled into the same binary, you can use this +/// macro to specify different indices, then enable them at runtime by +/// configuring the fuzzer. +/// +/// # Arguments +/// +/// - `stop_index`: The index to use for this stop harness +/// +/// # Example +/// +/// ``` +/// HARNESS_STOP_INDEX(0x0001U); +/// ``` +#define HARNESS_STOP_INDEX(stop_index) \ + do { \ + unsigned int value = (N_STOP_NORMAL << 0x10U) | MAGIC; \ + __cpuid_extended1(value, stop_index); \ + } while (0); + +/// Pseudo-hypercall number to signal the fuzzer that a custom assertion has +/// occurred, and the fuzzer should stop the current fuzzing iteration and reset +/// to the beginning of the fuzzing loop with a "solution" stop status. +#define N_STOP_ASSERT (0x0005U) + +/// HARNESS_ASSERT +/// +/// Signal the fuzzer that a custom assertion has occurred, and the fuzzer +/// should stop the current fuzzing iteration and reset to the beginning of the +/// fuzzing loop with a "solution" stop status. The default index of 0 will be +/// used. If you need to differentiate between multiple assertion harnesses +/// compiled into the same binary, you can use the `HARNESS_ASSERT_INDEX` macro +/// to specify different indices, then enable them at runtime by configuring the +/// fuzzer. +/// +/// # Example +/// +/// ``` +/// HARNESS_ASSERT(); +/// ``` +#define HARNESS_ASSERT() \ + do { \ + unsigned int value = (N_STOP_ASSERT << 0x10U) | MAGIC; \ + __cpuid_extended1(value, DEFAULT_INDEX); \ + } while (0); + +/// HARNESS_ASSERT_INDEX +/// +/// Signal the fuzzer that a custom assertion has occurred, and the fuzzer +/// should stop the current fuzzing iteration and reset to the beginning of the +/// fuzzing loop with a "solution" stop status. The index specified by +/// `assert_index` will be used. If you need to differentiate between multiple +/// assertion harnesses compiled into the same binary, you can use this macro to +/// specify different indices, then enable them at runtime by configuring the +/// fuzzer. +/// +/// # Arguments +/// +/// - `assert_index`: The index to use for this assertion harness +/// +/// # Example +/// +/// ``` +/// HARNESS_ASSERT_INDEX(0x0001U); +/// ``` +#define HARNESS_ASSERT_INDEX(assert_index) \ + do { \ + unsigned int value = (N_STOP_ASSERT << 0x10U) | MAGIC; \ + __cpuid_extended1(value, assert_index); \ + } while (0); + +#endif // TSFFS_H +#elif __x86_64__ +// Copyright (C) 2024 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 + +/// Definitions and macros for compiled-in harnessing of C and C++ target +/// software for the x86_64 architecture. + +#ifndef TSFFS_H +#define TSFFS_H + +/// Define common with LibFuzzer and other fuzzers to allow code that is +/// fuzzing-specific to be left in the codebase. See +/// https://llvm.org/docs/LibFuzzer.html#id35 for more information +#ifndef FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION +#define FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION (1) +#endif // FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION + +/// __cpuid +/// +/// Invoke the CPUID instruction with a specific value `value` in register +/// `rax`. +/// +/// # Arguments +/// +/// - `value`: The value to load into the `rax` register before invoking the +/// CPUID instruction +#define __cpuid(value) \ + unsigned int _a __attribute__((unused)) = 0; \ + unsigned int _b __attribute__((unused)) = 0; \ + unsigned int _c __attribute__((unused)) = 0; \ + unsigned int _d __attribute__((unused)) = 0; \ + __asm__ __volatile__("cpuid\n\t" \ + : "=a"(_a), "=b"(_b), "=c"(_c), "=d"(_d) \ + : "a"(value)); + +/// __cpuid_extended1 +/// +/// Invoke the CPUID instruction with a specific value `value` in register +/// `rax` and a pseudo-argument in register `rdi`. +/// +/// # Arguments +/// +/// - `value`: The value to load into the `rax` register before invoking the +/// CPUID instruction +/// - `arg0`: The value to load into the `rdi` register before invoking the +/// CPUID instruction +#define __cpuid_extended1(value, arg0) \ + unsigned int _a __attribute__((unused)) = 0; \ + unsigned int _b __attribute__((unused)) = 0; \ + unsigned int _c __attribute__((unused)) = 0; \ + unsigned int _d __attribute__((unused)) = 0; \ + __asm__ __volatile__("cpuid\n\t" \ + : "=a"(_a), "=b"(_b), "=c"(_c), "=d"(_d) \ + : "a"(value), "D"(arg0)); + +/// __cpuid_extended2 +/// +/// Invoke the CPUID instruction with a specific value `value` in register +/// `rax` and a pseudo-arguments in registers `rdi` and `rsi`. +/// +/// # Arguments +/// +/// - `value`: The value to load into the `rax` register before invoking the +/// CPUID instruction +/// - `arg0`: The value to load into the `rdi` register before invoking the +/// CPUID instruction +/// - `arg1`: The value to load into the `rsi` register before invoking the +/// CPUID instruction +#define __cpuid_extended2(value, arg0, arg1) \ + unsigned int _a __attribute__((unused)) = 0; \ + unsigned int _b __attribute__((unused)) = 0; \ + unsigned int _c __attribute__((unused)) = 0; \ + unsigned int _d __attribute__((unused)) = 0; \ + __asm__ __volatile__("cpuid\n\t" \ + : "=a"(_a), "=b"(_b), "=c"(_c), "=d"(_d) \ + : "a"(value), "D"(arg0), "S"(arg1)); + +/// __cpuid_extended3 +/// +/// Invoke the CPUID instruction with a specific value `value` in register +/// `rax` and a pseudo-arguments in registers `rdi`, `rsi`, and `rdx`. +/// +/// # Arguments +/// +/// - `value`: The value to load into the `rax` register before invoking the +/// CPUID instruction +/// - `arg0`: The value to load into the `rdi` register before invoking the +/// CPUID instruction +/// - `arg1`: The value to load into the `rsi` register before invoking the +/// CPUID instruction +/// - `arg2`: The value to load into the `rdx` register before invoking the +/// CPUID instruction +#define __cpuid_extended3(value, arg0, arg1, arg2) \ + unsigned int _a __attribute__((unused)) = 0; \ + unsigned int _b __attribute__((unused)) = 0; \ + unsigned int _c __attribute__((unused)) = 0; \ + unsigned int _d __attribute__((unused)) = 0; \ + __asm__ __volatile__("cpuid\n\t" \ + : "=a"(_a), "=b"(_b), "=c"(_c), "=d"(_d) \ + : "a"(value), "D"(arg0), "S"(arg1), "d"(arg2)); + +/// __cpuid_extended4 +/// +/// Invoke the CPUID instruction with a specific value `value` in register +/// `rax` and a pseudo-arguments in registers `rdi`, `rsi`, `rdx`, and `rcx`. +/// +/// # Arguments +/// +/// - `value`: The value to load into the `rax` register before invoking the +/// CPUID instruction +/// - `arg0`: The value to load into the `rdi` register before invoking the +/// CPUID instruction +/// - `arg1`: The value to load into the `rsi` register before invoking the +/// CPUID instruction +/// - `arg2`: The value to load into the `rdx` register before invoking the +/// CPUID instruction +/// - `arg3`: The value to load into the `rcx` register before invoking the +/// CPUID instruction +#define __cpuid_extended4(value, arg0, arg1, arg2, arg3) \ + unsigned int _a __attribute__((unused)) = 0; \ + unsigned int _b __attribute__((unused)) = 0; \ + unsigned int _c __attribute__((unused)) = 0; \ + unsigned int _d __attribute__((unused)) = 0; \ + __asm__ __volatile__("cpuid\n\t" \ + : "=a"(_a), "=b"(_b), "=c"(_c), "=d"(_d) \ + : "a"(value), "D"(arg0), "S"(arg1), "d"(arg2), \ + "c"(arg3)); + +/// Magic value defined by SIMICS as the "leaf" value of a CPUID instruction +/// that is treated as a magic instruction. +#define MAGIC (0x4711U) + +/// The default index number used for magic instructions. All magic instructions +/// support multiple start and stop indices, which defaults to 0 if not +/// specified. +#define DEFAULT_INDEX (0x0000U) + +/// Pseudo-hypercall number to signal the fuzzer to use the first argument to +/// the magic instruction as the pointer to the testcase buffer and the second +/// argument as a pointer to the size of the testcase buffer. +#define N_START_BUFFER_PTR_SIZE_PTR (0x0001U) + +/// HARNESS_START +/// +/// Signal the fuzzer to start the fuzzing loop at the point this macro is +/// called. The default "index" of 0 will be used. If you need multiple start +/// harnesses compiled into the same binary, you can use the +/// `HARNESS_START_INDEX` macro to specify different indices, then enable them +/// at runtime by configuring the fuzzer. +/// +/// When this macro is called: +/// +/// - A snapshot will be taken and saved +/// - The buffer pointed to by `buffer` will be saved and used as the testcase +/// buffer. Each +/// fuzzing iteration, a new test case will be written to this buffer. +/// - The size of the buffer pointed to by `size_ptr` will be saved as the +/// maximum testcase size. Each fuzzing iteration, the actual size of the +/// current testcase will be written to `*size_ptr`. +/// +/// # Arguments +/// +/// - `buffer`: The pointer to the testcase buffer +/// - `size_ptr`: The pointer to the size of the testcase buffer +/// +/// # Example +/// +/// ``` +/// unsigned char buffer[1024]; +/// size_t size; +/// HARNESS_START(buffer, &size); +/// ``` +#define HARNESS_START(buffer, size_ptr) \ + do { \ + unsigned int value = (N_START_BUFFER_PTR_SIZE_PTR << 0x10U) | MAGIC; \ + __cpuid_extended3(value, DEFAULT_INDEX, buffer, size_ptr); \ + } while (0); + +/// HARNESS_START_INDEX +/// +/// Signal the fuzzer to start the fuzzing loop at the point this macro is +/// called. The index specified by `start_index` will be used. If you need +/// multiple start harnesses compiled into the same binary, you can use this +/// macro to specify different indices, then enable them at runtime by +/// configuring the fuzzer. +/// +/// When this macro is called: +/// +/// - A snapshot will be taken and saved +/// - The buffer pointed to by `buffer` will be saved and used as the testcase +/// buffer. Each +/// fuzzing iteration, a new test case will be written to this buffer. +/// - The size of the buffer pointed to by `size_ptr` will be saved as the +/// maximum testcase size. Each fuzzing iteration, the actual size of the +/// current testcase will be written to `*size_ptr`. +/// +/// # Arguments +/// +/// - `start_index`: The index to use for this start harness +/// - `buffer`: The pointer to the testcase buffer +/// - `size_ptr`: The pointer to the size of the testcase buffer +/// +/// # Example +/// +/// ``` +/// unsigned char buffer[1024]; +/// size_t size; +/// HARNESS_START_INDEX(0x0001U, buffer, &size); +/// ``` +#define HARNESS_START_INDEX(start_index, buffer, size_ptr) \ + do { \ + unsigned int value = (N_START_BUFFER_PTR_SIZE_PTR << 0x10U) | MAGIC; \ + __cpuid_extended3(value, start_index, buffer, size_ptr); \ + } while (0); + +/// Pseudo-hypercall number to signal the fuzzer to use the first argument to +/// the magic instruction as the pointer to the testcase buffer and the second +/// argument as the maximum size of the testcase buffer. +#define N_START_BUFFER_PTR_SIZE_VAL (0x0002U) + +/// HARNESS_START_WITH_MAXIMUM_SIZE +/// +/// Signal the fuzzer to start the fuzzing loop at the point this macro is +/// called. The default "index" of 0 will be used. If you need multiple start +/// harnesses compiled into the same binary, you can use the +/// `HARNESS_START_WITH_MAXIMUM_SIZE_INDEX` macro to specify different indices, +/// then enable them at runtime by configuring the fuzzer. +/// +/// When this macro is called: +/// +/// - A snapshot will be taken and saved +/// - The buffer pointed to by `buffer` will be saved and used as the testcase +/// buffer. Each +/// fuzzing iteration, a new test case will be written to this buffer. +/// - The `max_size` value will be saved as the maximum testcase size. Fuzzing +/// test cases will be truncated to this size before being written to the +/// buffer. +/// +/// # Arguments +/// +/// - `buffer`: The pointer to the testcase buffer +/// - `max_size`: The maximum size of the testcase buffer +/// +/// # Example +/// +/// ``` +/// unsigned char buffer[1024]; +/// HARNESS_START_WITH_MAXIMUM_SIZE(buffer, 1024); +/// ``` +#define HARNESS_START_WITH_MAXIMUM_SIZE(buffer, max_size) \ + do { \ + unsigned int value = (N_START_BUFFER_PTR_SIZE_VAL << 0x10U) | MAGIC; \ + __cpuid_extended3(value, DEFAULT_INDEX, buffer, max_size); \ + } while (0); + +/// HARNESS_START_WITH_MAXIMUM_SIZE_INDEX +/// +/// Signal the fuzzer to start the fuzzing loop at the point this macro is +/// called. The index specified by `start_index` will be used. If you need +/// multiple start harnesses compiled into the same binary, you can use this +/// macro to specify different indices, then enable them at runtime by +/// configuring the fuzzer. +/// +/// When this macro is called: +/// +/// - A snapshot will be taken and saved +/// - The buffer pointed to by `buffer` will be saved and used as the testcase +/// buffer. Each +/// fuzzing iteration, a new test case will be written to this buffer. +/// - The `max_size` value will be saved as the maximum testcase size. Fuzzing +/// test cases will be truncated to this size before being written to the +/// buffer. +/// +/// # Arguments +/// +/// - `start_index`: The index to use for this start harness +/// - `buffer`: The pointer to the testcase buffer +/// - `max_size`: The maximum size of the testcase buffer +/// +/// # Example +/// +/// ``` +/// unsigned char buffer[1024]; +/// HARNESS_START_WITH_MAXIMUM_SIZE_INDEX(0x0001U, buffer, 1024); +/// ``` +#define HARNESS_START_WITH_MAXIMUM_SIZE_INDEX(start_index, buffer, max_size) \ + do { \ + unsigned int value = (N_START_BUFFER_PTR_SIZE_VAL << 0x10U) | MAGIC; \ + __cpuid_extended3(value, start_index, buffer, max_size); \ + } while (0); + +/// Pseudo-hypercall number to signal the fuzzer to use the first argument to +/// the magic instruction as the pointer to the testcase buffer, the second +/// argument as a pointer to the size of the testcase buffer, and the third +/// argument as the maximum size of the testcase buffer. +#define N_START_BUFFER_PTR_SIZE_PTR_VAL (0x0003U) + +/// HARNESS_START_WITH_MAXIMUM_SIZE_AND_PTR +/// +/// Signal the fuzzer to start the fuzzing loop at the point this macro is +/// called. The default "index" of 0 will be used. If you need multiple start +/// harnesses compiled into the same binary, you can use the +/// `HARNESS_START_WITH_MAXIMUM_SIZE_AND_PTR_INDEX` macro to specify different +/// indices, then enable them at runtime by configuring the fuzzer. +/// +/// When this macro is called: +/// +/// - A snapshot will be taken and saved +/// - The buffer pointed to by `buffer` will be saved and used as the testcase +/// buffer. Each +/// fuzzing iteration, a new test case will be written to this buffer. +/// - The address `size_ptr` will be saved. Each fuzzing iteration, the actual +/// size of the current testcase will be written to `*size_ptr`. +/// - The `max_size` value will be saved as the maximum testcase size. Fuzzing +/// test cases will be truncated to this size before being written to the +/// buffer. +/// +/// # Arguments +/// +/// - `buffer`: The pointer to the testcase buffer +/// - `size_ptr`: The pointer to the size of the testcase buffer +/// - `max_size`: The maximum size of the testcase buffer +/// +/// # Example +/// +/// ``` +/// unsigned char buffer[1024]; +/// size_t size; +/// HARNESS_START_WITH_MAXIMUM_SIZE_AND_PTR(buffer, &size, 1024); +/// ``` +#define HARNESS_START_WITH_MAXIMUM_SIZE_AND_PTR(buffer, size_ptr, max_size) \ + do { \ + unsigned int value = (N_START_BUFFER_PTR_SIZE_PTR_VAL << 0x10U) | MAGIC; \ + __cpuid_extended4(value, DEFAULT_INDEX, buffer, size_ptr, max_size); \ + } while (0); + +/// HARNESS_START_WITH_MAXIMUM_SIZE_AND_PTR_INDEX +/// +/// Signal the fuzzer to start the fuzzing loop at the point this macro is +/// called. The index specified by `start_index` will be used. If you need +/// multiple start harnesses compiled into the same binary, you can use this +/// macro to specify different indices, then enable them at runtime by +/// configuring the fuzzer. +/// +/// When this macro is called: +/// +/// - A snapshot will be taken and saved +/// - The buffer pointed to by `buffer` will be saved and used as the testcase +/// buffer. Each +/// fuzzing iteration, a new test case will be written to this buffer. +/// - The address `size_ptr` will be saved. Each fuzzing iteration, the actual +/// size of the current testcase will be written to `*size_ptr`. +/// - The `max_size` value will be saved as the maximum testcase size. Fuzzing +/// test cases will be truncated to this size before being written to the +/// buffer. +/// +/// # Arguments +/// +/// - `start_index`: The index to use for this start harness +/// - `buffer`: The pointer to the testcase buffer +/// - `size_ptr`: The pointer to the size of the testcase buffer +/// - `max_size`: The maximum size of the testcase buffer +/// +/// # Example +/// +/// ``` +/// unsigned char buffer[1024]; +/// size_t size; +/// HARNESS_START_WITH_MAXIMUM_SIZE_AND_PTR_INDEX(0x0001U, buffer, &size, 1024); +/// ``` +#define HARNESS_START_WITH_MAXIMUM_SIZE_AND_PTR_INDEX(start_index, buffer, \ + size_ptr, max_size) \ + do { \ + unsigned int value = (N_START_BUFFER_PTR_SIZE_PTR_VAL << 0x10U) | MAGIC; \ + __cpuid_extended4(value, start_index, buffer, size_ptr, max_size); \ + } while (0); + +/// Pseudo-hypercall number to signal the fuzzer to stop the current fuzzing +/// iteration and reset to the beginning of the fuzzing loop with a "normal" +/// stop status, indicating no solution has occurred. +#define N_STOP_NORMAL (0x0004U) + +/// HARNESS_STOP +/// +/// Signal the fuzzer to stop and reset to the beginning of the fuzzing loop +/// with a "normal" stop status, indicating no solution has occurred. The +/// default index of 0 will be used. If you need to differentiate between +/// multiple stop harnesses compiled into the same binary, you can use the +/// `HARNESS_STOP_INDEX` macro to specify different indices, then enable them at +/// runtime by configuring the fuzzer. +/// +/// # Example +/// +/// ``` +/// HARNESS_STOP(); +/// ``` +#define HARNESS_STOP() \ + do { \ + unsigned int value = (N_STOP_NORMAL << 0x10U) | MAGIC; \ + __cpuid_extended1(value, DEFAULT_INDEX); \ + } while (0); + +/// HARNESS_STOP_INDEX +/// +/// Signal the fuzzer to stop and reset to the beginning of the fuzzing loop +/// with a "normal" stop status, indicating no solution has occurred. The index +/// specified by `stop_index` will be used. If you need to differentiate between +/// multiple stop harnesses compiled into the same binary, you can use this +/// macro to specify different indices, then enable them at runtime by +/// configuring the fuzzer. +/// +/// # Arguments +/// +/// - `stop_index`: The index to use for this stop harness +/// +/// # Example +/// +/// ``` +/// HARNESS_STOP_INDEX(0x0001U); +/// ``` +#define HARNESS_STOP_INDEX(stop_index) \ + do { \ + unsigned int value = (N_STOP_NORMAL << 0x10U) | MAGIC; \ + __cpuid_extended1(value, stop_index); \ + } while (0); + +/// Pseudo-hypercall number to signal the fuzzer that a custom assertion has +/// occurred, and the fuzzer should stop the current fuzzing iteration and reset +/// to the beginning of the fuzzing loop with a "solution" stop status. +#define N_STOP_ASSERT (0x0005U) + +/// HARNESS_ASSERT +/// +/// Signal the fuzzer that a custom assertion has occurred, and the fuzzer +/// should stop the current fuzzing iteration and reset to the beginning of the +/// fuzzing loop with a "solution" stop status. The default index of 0 will be +/// used. If you need to differentiate between multiple assertion harnesses +/// compiled into the same binary, you can use the `HARNESS_ASSERT_INDEX` macro +/// to specify different indices, then enable them at runtime by configuring the +/// fuzzer. +/// +/// # Example +/// +/// ``` +/// HARNESS_ASSERT(); +/// ``` +#define HARNESS_ASSERT() \ + do { \ + unsigned int value = (N_STOP_ASSERT << 0x10U) | MAGIC; \ + __cpuid_extended1(value, DEFAULT_INDEX); \ + } while (0); + +/// HARNESS_ASSERT_INDEX +/// +/// Signal the fuzzer that a custom assertion has occurred, and the fuzzer +/// should stop the current fuzzing iteration and reset to the beginning of the +/// fuzzing loop with a "solution" stop status. The index specified by +/// `assert_index` will be used. If you need to differentiate between multiple +/// assertion harnesses compiled into the same binary, you can use this macro to +/// specify different indices, then enable them at runtime by configuring the +/// fuzzer. +/// +/// # Arguments +/// +/// - `assert_index`: The index to use for this assertion harness +/// +/// # Example +/// +/// ``` +/// HARNESS_ASSERT_INDEX(0x0001U); +/// ``` +#define HARNESS_ASSERT_INDEX(assert_index) \ + do { \ + unsigned int value = (N_STOP_ASSERT << 0x10U) | MAGIC; \ + __cpuid_extended1(value, assert_index); \ + } while (0); + +#endif // TSFFS_H +#elif __riscv && !__LP64__ +// Copyright (C) 2024 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 + +/// Definitions and macros for compiled-in harnessing of C and C++ target +/// software for the RISC-V (32-bit) architecture + +#ifndef TSFFS_H +#define TSFFS_H + +/// Define common with LibFuzzer and other fuzzers to allow code that is +/// fuzzing-specific to be left in the codebase. See +/// https://llvm.org/docs/LibFuzzer.html#id35 for more information +#ifndef FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION +#define FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION (1) +#endif // FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION + +/// __srai +/// +/// Invoke the magic instruction defined by SIMICS for the RISC-V architecture +/// with a specific value of `n` +/// +/// # Arguments +/// +/// * `value` - The value of `n` to use in the magic instruction +#define __srai(value) \ + __asm__ __volatile__("srai zero, zero, %0" : : "I"(value) :) + +/// __srai_extended1 +/// +/// Invoke the magic instruction defined by SIMICS for the RISC-V architecture +/// with a specific value of `n` and a pseudo-argument in register `a0`. +/// +/// # Arguments +/// +/// * `value` - The value of `n` to use in the magic instruction +/// * `arg0` - The value to place in register `a0` +#define __srai_extended1(value, arg0) \ + __asm__ __volatile__("mv a0, %0; srai zero, zero, %1" \ + : \ + : "r"(arg0), "I"(value) \ + : "a0"); + +/// __srai_extended2 +/// +/// Invoke the magic instruction defined by SIMICS for the RISC-V architecture +/// with a specific value of `n` and pseudo-arguments in registers `a0` and +/// `a1`. +/// +/// # Arguments +/// +/// * `value` - The value of `n` to use in the magic instruction +/// * `arg0` - The value to place in register `a0` +/// * `arg1` - The value to place in register `a1` +#define __srai_extended2(value, arg0, arg1) \ + __asm__ __volatile__("mv a0, %0; mv a1, %1; srai zero, zero, %2" \ + : \ + : "r"(arg0), "r"(arg1), "I"(value) \ + : "a0", "a1"); + +/// __srai_extended3 +/// +/// Invoke the magic instruction defined by SIMICS for the RISC-V architecture +/// with a specific value of `n` and pseudo-arguments in registers `a0`, `a1`, +/// and `a2`. +/// +/// # Arguments +/// +/// * `value` - The value of `n` to use in the magic instruction +/// * `arg0` - The value to place in register `a0` +/// * `arg1` - The value to place in register `a1` +/// * `arg2` - The value to place in register `a2` +#define __srai_extended3(value, arg0, arg1, arg2) \ + __asm__ __volatile__("mv a0, %0; mv a1, %1; mv a2, %2; srai zero, zero, %3" \ + : \ + : "r"(arg0), "r"(arg1), "r"(arg2), "I"(value) \ + : "a0", "a1", "a2"); + +/// __srai_extended4 +/// +/// Invoke the magic instruction defined by SIMICS for the RISC-V architecture +/// with a specific value of `n` and pseudo-arguments in registers `a0`, `a1`, +/// `a2`, and `a3`. +/// +/// # Arguments +/// +/// * `value` - The value of `n` to use in the magic instruction +/// * `arg0` - The value to place in register `a0` +/// * `arg1` - The value to place in register `a1` +/// * `arg2` - The value to place in register `a2` +/// * `arg3` - The value to place in register `a3` +#define __srai_extended4(value, arg0, arg1, arg2, arg3) \ + __asm__ __volatile__( \ + "mv a0, %0; mv a1, %1; mv a2, %2; mv a3, %3; srai zero, zero, %4" \ + : \ + : "r"(arg0), "r"(arg1), "r"(arg2), "r"(arg3), "I"(value) \ + : "a0", "a1", "a2", "a3"); + +/// Magic value defined by SIMICS as the "leaf" value of a CPUID instruction +/// that is treated as a magic instruction. +#define MAGIC (0x4711U) + +/// The default index number used for magic instructions. All magic instructions +/// support multiple start and stop indices, which defaults to 0 if not +/// specified. +#define DEFAULT_INDEX (0x0000U) + +/// Pseudo-hypercall number to signal the fuzzer to use the first argument to +/// the magic instruction as the pointer to the testcase buffer and the second +/// argument as a pointer to the size of the testcase buffer. +#define N_START_BUFFER_PTR_SIZE_PTR (0x0001U) + +/// HARNESS_START +/// +/// Signal the fuzzer to start the fuzzing loop at the point this macro is +/// called. The default "index" of 0 will be used. If you need multiple start +/// harnesses compiled into the same binary, you can use the +/// `HARNESS_START_INDEX` macro to specify different indices, then enable them +/// at runtime by configuring the fuzzer. +/// +/// When this macro is called: +/// +/// - A snapshot will be taken and saved +/// - The buffer pointed to by `buffer` will be saved and used as the testcase +/// buffer. Each +/// fuzzing iteration, a new test case will be written to this buffer. +/// - The size of the buffer pointed to by `size_ptr` will be saved as the +/// maximum testcase size. Each fuzzing iteration, the actual size of the +/// current testcase will be written to `*size_ptr`. +/// +/// # Arguments +/// +/// - `buffer`: The pointer to the testcase buffer +/// - `size_ptr`: The pointer to the size of the testcase buffer +/// +/// # Example +/// +/// ``` +/// unsigned char buffer[1024]; +/// size_t size; +/// HARNESS_START(buffer, &size); +/// ``` +#define HARNESS_START(buffer, size_ptr) \ + do { \ + __srai_extended3(N_START_BUFFER_PTR_SIZE_PTR, DEFAULT_INDEX, buffer, \ + size_ptr); \ + } while (0); + +/// HARNESS_START_INDEX +/// +/// Signal the fuzzer to start the fuzzing loop at the point this macro is +/// called. The index specified by `start_index` will be used. If you need +/// multiple start harnesses compiled into the same binary, you can use this +/// macro to specify different indices, then enable them at runtime by +/// configuring the fuzzer. +/// +/// When this macro is called: +/// +/// - A snapshot will be taken and saved +/// - The buffer pointed to by `buffer` will be saved and used as the testcase +/// buffer. Each +/// fuzzing iteration, a new test case will be written to this buffer. +/// - The size of the buffer pointed to by `size_ptr` will be saved as the +/// maximum testcase size. Each fuzzing iteration, the actual size of the +/// current testcase will be written to `*size_ptr`. +/// +/// # Arguments +/// +/// - `start_index`: The index to use for this start harness +/// - `buffer`: The pointer to the testcase buffer +/// - `size_ptr`: The pointer to the size of the testcase buffer +/// +/// # Example +/// +/// ``` +/// unsigned char buffer[1024]; +/// size_t size; +/// HARNESS_START_INDEX(0x0001U, buffer, &size); +/// ``` +#define HARNESS_START_INDEX(start_index, buffer, size_ptr) \ + do { \ + __srai_extended3(N_START_BUFFER_PTR_SIZE_PTR, start_index, buffer, \ + size_ptr); \ + } while (0); + +/// Pseudo-hypercall number to signal the fuzzer to use the first argument to +/// the magic instruction as the pointer to the testcase buffer and the second +/// argument as the maximum size of the testcase buffer. +#define N_START_BUFFER_PTR_SIZE_VAL (0x0002U) + +/// HARNESS_START_WITH_MAXIMUM_SIZE +/// +/// Signal the fuzzer to start the fuzzing loop at the point this macro is +/// called. The default "index" of 0 will be used. If you need multiple start +/// harnesses compiled into the same binary, you can use the +/// `HARNESS_START_WITH_MAXIMUM_SIZE_INDEX` macro to specify different indices, +/// then enable them at runtime by configuring the fuzzer. +/// +/// When this macro is called: +/// +/// - A snapshot will be taken and saved +/// - The buffer pointed to by `buffer` will be saved and used as the testcase +/// buffer. Each +/// fuzzing iteration, a new test case will be written to this buffer. +/// - The `max_size` value will be saved as the maximum testcase size. Fuzzing +/// test cases will be truncated to this size before being written to the +/// buffer. +/// +/// # Arguments +/// +/// - `buffer`: The pointer to the testcase buffer +/// - `max_size`: The maximum size of the testcase buffer +/// +/// # Example +/// +/// ``` +/// unsigned char buffer[1024]; +/// HARNESS_START_WITH_MAXIMUM_SIZE(buffer, 1024); +/// ``` +#define HARNESS_START_WITH_MAXIMUM_SIZE(buffer, max_size) \ + do { \ + __srai_extended3(N_START_BUFFER_PTR_SIZE_VAL, DEFAULT_INDEX, buffer, \ + max_size); \ + } while (0); + +/// HARNESS_START_WITH_MAXIMUM_SIZE_INDEX +/// +/// Signal the fuzzer to start the fuzzing loop at the point this macro is +/// called. The index specified by `start_index` will be used. If you need +/// multiple start harnesses compiled into the same binary, you can use this +/// macro to specify different indices, then enable them at runtime by +/// configuring the fuzzer. +/// +/// When this macro is called: +/// +/// - A snapshot will be taken and saved +/// - The buffer pointed to by `buffer` will be saved and used as the testcase +/// buffer. Each +/// fuzzing iteration, a new test case will be written to this buffer. +/// - The `max_size` value will be saved as the maximum testcase size. Fuzzing +/// test cases will be truncated to this size before being written to the +/// buffer. +/// +/// # Arguments +/// +/// - `start_index`: The index to use for this start harness +/// - `buffer`: The pointer to the testcase buffer +/// - `max_size`: The maximum size of the testcase buffer +/// +/// # Example +/// +/// ``` +/// unsigned char buffer[1024]; +/// HARNESS_START_WITH_MAXIMUM_SIZE_INDEX(0x0001U, buffer, 1024); +/// ``` +#define HARNESS_START_WITH_MAXIMUM_SIZE_INDEX(start_index, buffer, max_size) \ + do { \ + __srai_extended3(N_START_BUFFER_PTR_SIZE_VAL, start_index, buffer, \ + max_size); \ + } while (0); + +/// Pseudo-hypercall number to signal the fuzzer to use the first argument to +/// the magic instruction as the pointer to the testcase buffer, the second +/// argument as a pointer to the size of the testcase buffer, and the third +/// argument as the maximum size of the testcase buffer. +#define N_START_BUFFER_PTR_SIZE_PTR_VAL (0x0003U) + +/// HARNESS_START_WITH_MAXIMUM_SIZE_AND_PTR +/// +/// Signal the fuzzer to start the fuzzing loop at the point this macro is +/// called. The default "index" of 0 will be used. If you need multiple start +/// harnesses compiled into the same binary, you can use the +/// `HARNESS_START_WITH_MAXIMUM_SIZE_AND_PTR_INDEX` macro to specify different +/// indices, then enable them at runtime by configuring the fuzzer. +/// +/// When this macro is called: +/// +/// - A snapshot will be taken and saved +/// - The buffer pointed to by `buffer` will be saved and used as the testcase +/// buffer. Each +/// fuzzing iteration, a new test case will be written to this buffer. +/// - The address `size_ptr` will be saved. Each fuzzing iteration, the actual +/// size of the current testcase will be written to `*size_ptr`. +/// - The `max_size` value will be saved as the maximum testcase size. Fuzzing +/// test cases will be truncated to this size before being written to the +/// buffer. +/// +/// # Arguments +/// +/// - `buffer`: The pointer to the testcase buffer +/// - `size_ptr`: The pointer to the size of the testcase buffer +/// - `max_size`: The maximum size of the testcase buffer +/// +/// # Example +/// +/// ``` +/// unsigned char buffer[1024]; +/// size_t size; +/// HARNESS_START_WITH_MAXIMUM_SIZE_AND_PTR(buffer, &size, 1024); +/// ``` +#define HARNESS_START_WITH_MAXIMUM_SIZE_AND_PTR(buffer, size_ptr, max_size) \ + do { \ + __srai_extended4(N_START_BUFFER_PTR_SIZE_PTR_VAL, DEFAULT_INDEX, buffer, \ + size_ptr, max_size); \ + } while (0); + +/// HARNESS_START_WITH_MAXIMUM_SIZE_AND_PTR_INDEX +/// +/// Signal the fuzzer to start the fuzzing loop at the point this macro is +/// called. The index specified by `start_index` will be used. If you need +/// multiple start harnesses compiled into the same binary, you can use this +/// macro to specify different indices, then enable them at runtime by +/// configuring the fuzzer. +/// +/// When this macro is called: +/// +/// - A snapshot will be taken and saved +/// - The buffer pointed to by `buffer` will be saved and used as the testcase +/// buffer. Each +/// fuzzing iteration, a new test case will be written to this buffer. +/// - The address `size_ptr` will be saved. Each fuzzing iteration, the actual +/// size of the current testcase will be written to `*size_ptr`. +/// - The `max_size` value will be saved as the maximum testcase size. Fuzzing +/// test cases will be truncated to this size before being written to the +/// buffer. +/// +/// # Arguments +/// +/// - `start_index`: The index to use for this start harness +/// - `buffer`: The pointer to the testcase buffer +/// - `size_ptr`: The pointer to the size of the testcase buffer +/// - `max_size`: The maximum size of the testcase buffer +/// +/// # Example +/// +/// ``` +/// unsigned char buffer[1024]; +/// size_t size; +/// HARNESS_START_WITH_MAXIMUM_SIZE_AND_PTR_INDEX(0x0001U, buffer, &size, 1024); +/// ``` +#define HARNESS_START_WITH_MAXIMUM_SIZE_AND_PTR_INDEX(start_index, buffer, \ + size_ptr, max_size) \ + do { \ + __srai_extended4(N_START_BUFFER_PTR_SIZE_PTR_VAL, start_index, buffer, \ + size_ptr, max_size); \ + } while (0); + +/// Pseudo-hypercall number to signal the fuzzer to stop the current fuzzing +/// iteration and reset to the beginning of the fuzzing loop with a "normal" +/// stop status, indicating no solution has occurred. +#define N_STOP_NORMAL (0x0004U) + +/// HARNESS_STOP +/// +/// Signal the fuzzer to stop and reset to the beginning of the fuzzing loop +/// with a "normal" stop status, indicating no solution has occurred. The +/// default index of 0 will be used. If you need to differentiate between +/// multiple stop harnesses compiled into the same binary, you can use the +/// `HARNESS_STOP_INDEX` macro to specify different indices, then enable them at +/// runtime by configuring the fuzzer. +/// +/// # Example +/// +/// ``` +/// HARNESS_STOP(); +/// ``` +#define HARNESS_STOP() \ + do { \ + __srai_extended1(N_STOP_NORMAL, DEFAULT_INDEX); \ + } while (0); + +/// HARNESS_STOP_INDEX +/// +/// Signal the fuzzer to stop and reset to the beginning of the fuzzing loop +/// with a "normal" stop status, indicating no solution has occurred. The index +/// specified by `stop_index` will be used. If you need to differentiate between +/// multiple stop harnesses compiled into the same binary, you can use this +/// macro to specify different indices, then enable them at runtime by +/// configuring the fuzzer. +/// +/// # Arguments +/// +/// - `stop_index`: The index to use for this stop harness +/// +/// # Example +/// +/// ``` +/// HARNESS_STOP_INDEX(0x0001U); +/// ``` +#define HARNESS_STOP_INDEX(stop_index) \ + do { \ + __srai_extended1(N_STOP_NORMAL, stop_index); \ + } while (0); + +/// Pseudo-hypercall number to signal the fuzzer that a custom assertion has +/// occurred, and the fuzzer should stop the current fuzzing iteration and reset +/// to the beginning of the fuzzing loop with a "solution" stop status. +#define N_STOP_ASSERT (0x0005U) + +/// HARNESS_ASSERT +/// +/// Signal the fuzzer that a custom assertion has occurred, and the fuzzer +/// should stop the current fuzzing iteration and reset to the beginning of the +/// fuzzing loop with a "solution" stop status. The default index of 0 will be +/// used. If you need to differentiate between multiple assertion harnesses +/// compiled into the same binary, you can use the `HARNESS_ASSERT_INDEX` macro +/// to specify different indices, then enable them at runtime by configuring the +/// fuzzer. +/// +/// # Example +/// +/// ``` +/// HARNESS_ASSERT(); +/// ``` +#define HARNESS_ASSERT() \ + do { \ + __srai_extended1(N_STOP_ASSERT, DEFAULT_INDEX); \ + } while (0); + +/// HARNESS_ASSERT_INDEX +/// +/// Signal the fuzzer that a custom assertion has occurred, and the fuzzer +/// should stop the current fuzzing iteration and reset to the beginning of the +/// fuzzing loop with a "solution" stop status. The index specified by +/// `assert_index` will be used. If you need to differentiate between multiple +/// assertion harnesses compiled into the same binary, you can use this macro to +/// specify different indices, then enable them at runtime by configuring the +/// fuzzer. +/// +/// # Arguments +/// +/// - `assert_index`: The index to use for this assertion harness +/// +/// # Example +/// +/// ``` +/// HARNESS_ASSERT_INDEX(0x0001U); +/// ``` +#define HARNESS_ASSERT_INDEX(assert_index) \ + do { \ + __srai_extended1(N_STOP_ASSERT, assert_index); \ + } while (0); + +#endif // TSFFS_H +#elif __riscv && __LP64__ +// Copyright (C) 2024 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 + +/// Definitions and macros for compiled-in harnessing of C and C++ target +/// software for the RISC-V (32-bit) architecture + +#ifndef TSFFS_H +#define TSFFS_H + +/// Define common with LibFuzzer and other fuzzers to allow code that is +/// fuzzing-specific to be left in the codebase. See +/// https://llvm.org/docs/LibFuzzer.html#id35 for more information +#ifndef FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION +#define FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION (1) +#endif // FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION + +/// __srai +/// +/// Invoke the magic instruction defined by SIMICS for the RISC-V architecture +/// with a specific value of `n` +/// +/// # Arguments +/// +/// * `value` - The value of `n` to use in the magic instruction +#define __srai(value) \ + __asm__ __volatile__("srai zero, zero, %0" : : "I"(value) :) + +/// __srai_extended1 +/// +/// Invoke the magic instruction defined by SIMICS for the RISC-V architecture +/// with a specific value of `n` and a pseudo-argument in register `a0`. +/// +/// # Arguments +/// +/// * `value` - The value of `n` to use in the magic instruction +/// * `arg0` - The value to place in register `a0` +#define __srai_extended1(value, arg0) \ + __asm__ __volatile__("mv a0, %0; srai zero, zero, %1" \ + : \ + : "r"(arg0), "I"(value) \ + : "a0"); + +/// __srai_extended2 +/// +/// Invoke the magic instruction defined by SIMICS for the RISC-V architecture +/// with a specific value of `n` and pseudo-arguments in registers `a0` and +/// `a1`. +/// +/// # Arguments +/// +/// * `value` - The value of `n` to use in the magic instruction +/// * `arg0` - The value to place in register `a0` +/// * `arg1` - The value to place in register `a1` +#define __srai_extended2(value, arg0, arg1) \ + __asm__ __volatile__("mv a0, %0; mv a1, %1; srai zero, zero, %2" \ + : \ + : "r"(arg0), "r"(arg1), "I"(value) \ + : "a0", "a1"); + +/// __srai_extended3 +/// +/// Invoke the magic instruction defined by SIMICS for the RISC-V architecture +/// with a specific value of `n` and pseudo-arguments in registers `a0`, `a1`, +/// and `a2`. +/// +/// # Arguments +/// +/// * `value` - The value of `n` to use in the magic instruction +/// * `arg0` - The value to place in register `a0` +/// * `arg1` - The value to place in register `a1` +/// * `arg2` - The value to place in register `a2` +#define __srai_extended3(value, arg0, arg1, arg2) \ + __asm__ __volatile__("mv a0, %0; mv a1, %1; mv a2, %2; srai zero, zero, %3" \ + : \ + : "r"(arg0), "r"(arg1), "r"(arg2), "I"(value) \ + : "a0", "a1", "a2"); + +/// __srai_extended4 +/// +/// Invoke the magic instruction defined by SIMICS for the RISC-V architecture +/// with a specific value of `n` and pseudo-arguments in registers `a0`, `a1`, +/// `a2`, and `a3`. +/// +/// # Arguments +/// +/// * `value` - The value of `n` to use in the magic instruction +/// * `arg0` - The value to place in register `a0` +/// * `arg1` - The value to place in register `a1` +/// * `arg2` - The value to place in register `a2` +/// * `arg3` - The value to place in register `a3` +#define __srai_extended4(value, arg0, arg1, arg2, arg3) \ + __asm__ __volatile__( \ + "mv a0, %0; mv a1, %1; mv a2, %2; mv a3, %3; srai zero, zero, %4" \ + : \ + : "r"(arg0), "r"(arg1), "r"(arg2), "r"(arg3), "I"(value) \ + : "a0", "a1", "a2", "a3"); + +/// Magic value defined by SIMICS as the "leaf" value of a CPUID instruction +/// that is treated as a magic instruction. +#define MAGIC (0x4711U) + +/// The default index number used for magic instructions. All magic instructions +/// support multiple start and stop indices, which defaults to 0 if not +/// specified. +#define DEFAULT_INDEX (0x0000U) + +/// Pseudo-hypercall number to signal the fuzzer to use the first argument to +/// the magic instruction as the pointer to the testcase buffer and the second +/// argument as a pointer to the size of the testcase buffer. +#define N_START_BUFFER_PTR_SIZE_PTR (0x0001U) + +/// HARNESS_START +/// +/// Signal the fuzzer to start the fuzzing loop at the point this macro is +/// called. The default "index" of 0 will be used. If you need multiple start +/// harnesses compiled into the same binary, you can use the +/// `HARNESS_START_INDEX` macro to specify different indices, then enable them +/// at runtime by configuring the fuzzer. +/// +/// When this macro is called: +/// +/// - A snapshot will be taken and saved +/// - The buffer pointed to by `buffer` will be saved and used as the testcase +/// buffer. Each +/// fuzzing iteration, a new test case will be written to this buffer. +/// - The size of the buffer pointed to by `size_ptr` will be saved as the +/// maximum testcase size. Each fuzzing iteration, the actual size of the +/// current testcase will be written to `*size_ptr`. +/// +/// # Arguments +/// +/// - `buffer`: The pointer to the testcase buffer +/// - `size_ptr`: The pointer to the size of the testcase buffer +/// +/// # Example +/// +/// ``` +/// unsigned char buffer[1024]; +/// size_t size; +/// HARNESS_START(buffer, &size); +/// ``` +#define HARNESS_START(buffer, size_ptr) \ + do { \ + __srai_extended3(N_START_BUFFER_PTR_SIZE_PTR, DEFAULT_INDEX, buffer, size_ptr); \ + } while (0); + +/// HARNESS_START_INDEX +/// +/// Signal the fuzzer to start the fuzzing loop at the point this macro is +/// called. The index specified by `start_index` will be used. If you need +/// multiple start harnesses compiled into the same binary, you can use this +/// macro to specify different indices, then enable them at runtime by +/// configuring the fuzzer. +/// +/// When this macro is called: +/// +/// - A snapshot will be taken and saved +/// - The buffer pointed to by `buffer` will be saved and used as the testcase +/// buffer. Each +/// fuzzing iteration, a new test case will be written to this buffer. +/// - The size of the buffer pointed to by `size_ptr` will be saved as the +/// maximum testcase size. Each fuzzing iteration, the actual size of the +/// current testcase will be written to `*size_ptr`. +/// +/// # Arguments +/// +/// - `start_index`: The index to use for this start harness +/// - `buffer`: The pointer to the testcase buffer +/// - `size_ptr`: The pointer to the size of the testcase buffer +/// +/// # Example +/// +/// ``` +/// unsigned char buffer[1024]; +/// size_t size; +/// HARNESS_START_INDEX(0x0001U, buffer, &size); +/// ``` +#define HARNESS_START_INDEX(start_index, buffer, size_ptr) \ + do { \ + __srai_extended3(N_START_BUFFER_PTR_SIZE_PTR, start_index, buffer, size_ptr); \ + } while (0); + +/// Pseudo-hypercall number to signal the fuzzer to use the first argument to +/// the magic instruction as the pointer to the testcase buffer and the second +/// argument as the maximum size of the testcase buffer. +#define N_START_BUFFER_PTR_SIZE_VAL (0x0002U) + +/// HARNESS_START_WITH_MAXIMUM_SIZE +/// +/// Signal the fuzzer to start the fuzzing loop at the point this macro is +/// called. The default "index" of 0 will be used. If you need multiple start +/// harnesses compiled into the same binary, you can use the +/// `HARNESS_START_WITH_MAXIMUM_SIZE_INDEX` macro to specify different indices, +/// then enable them at runtime by configuring the fuzzer. +/// +/// When this macro is called: +/// +/// - A snapshot will be taken and saved +/// - The buffer pointed to by `buffer` will be saved and used as the testcase +/// buffer. Each +/// fuzzing iteration, a new test case will be written to this buffer. +/// - The `max_size` value will be saved as the maximum testcase size. Fuzzing +/// test cases will be truncated to this size before being written to the +/// buffer. +/// +/// # Arguments +/// +/// - `buffer`: The pointer to the testcase buffer +/// - `max_size`: The maximum size of the testcase buffer +/// +/// # Example +/// +/// ``` +/// unsigned char buffer[1024]; +/// HARNESS_START_WITH_MAXIMUM_SIZE(buffer, 1024); +/// ``` +#define HARNESS_START_WITH_MAXIMUM_SIZE(buffer, max_size) \ + do { \ + __srai_extended3(N_START_BUFFER_PTR_SIZE_VAL, DEFAULT_INDEX, buffer, max_size); \ + } while (0); + +/// HARNESS_START_WITH_MAXIMUM_SIZE_INDEX +/// +/// Signal the fuzzer to start the fuzzing loop at the point this macro is +/// called. The index specified by `start_index` will be used. If you need +/// multiple start harnesses compiled into the same binary, you can use this +/// macro to specify different indices, then enable them at runtime by +/// configuring the fuzzer. +/// +/// When this macro is called: +/// +/// - A snapshot will be taken and saved +/// - The buffer pointed to by `buffer` will be saved and used as the testcase +/// buffer. Each +/// fuzzing iteration, a new test case will be written to this buffer. +/// - The `max_size` value will be saved as the maximum testcase size. Fuzzing +/// test cases will be truncated to this size before being written to the +/// buffer. +/// +/// # Arguments +/// +/// - `start_index`: The index to use for this start harness +/// - `buffer`: The pointer to the testcase buffer +/// - `max_size`: The maximum size of the testcase buffer +/// +/// # Example +/// +/// ``` +/// unsigned char buffer[1024]; +/// HARNESS_START_WITH_MAXIMUM_SIZE_INDEX(0x0001U, buffer, 1024); +/// ``` +#define HARNESS_START_WITH_MAXIMUM_SIZE_INDEX(start_index, buffer, max_size) \ + do { \ + __srai_extended3(N_START_BUFFER_PTR_SIZE_VAL, start_index, buffer, max_size); \ + } while (0); + +/// Pseudo-hypercall number to signal the fuzzer to use the first argument to +/// the magic instruction as the pointer to the testcase buffer, the second +/// argument as a pointer to the size of the testcase buffer, and the third +/// argument as the maximum size of the testcase buffer. +#define N_START_BUFFER_PTR_SIZE_PTR_VAL (0x0003U) + +/// HARNESS_START_WITH_MAXIMUM_SIZE_AND_PTR +/// +/// Signal the fuzzer to start the fuzzing loop at the point this macro is +/// called. The default "index" of 0 will be used. If you need multiple start +/// harnesses compiled into the same binary, you can use the +/// `HARNESS_START_WITH_MAXIMUM_SIZE_AND_PTR_INDEX` macro to specify different +/// indices, then enable them at runtime by configuring the fuzzer. +/// +/// When this macro is called: +/// +/// - A snapshot will be taken and saved +/// - The buffer pointed to by `buffer` will be saved and used as the testcase +/// buffer. Each +/// fuzzing iteration, a new test case will be written to this buffer. +/// - The address `size_ptr` will be saved. Each fuzzing iteration, the actual +/// size of the current testcase will be written to `*size_ptr`. +/// - The `max_size` value will be saved as the maximum testcase size. Fuzzing +/// test cases will be truncated to this size before being written to the +/// buffer. +/// +/// # Arguments +/// +/// - `buffer`: The pointer to the testcase buffer +/// - `size_ptr`: The pointer to the size of the testcase buffer +/// - `max_size`: The maximum size of the testcase buffer +/// +/// # Example +/// +/// ``` +/// unsigned char buffer[1024]; +/// size_t size; +/// HARNESS_START_WITH_MAXIMUM_SIZE_AND_PTR(buffer, &size, 1024); +/// ``` +#define HARNESS_START_WITH_MAXIMUM_SIZE_AND_PTR(buffer, size_ptr, max_size) \ + do { \ + __srai_extended4(N_START_BUFFER_PTR_SIZE_PTR_VAL, DEFAULT_INDEX, buffer, size_ptr, max_size); \ + } while (0); + +/// HARNESS_START_WITH_MAXIMUM_SIZE_AND_PTR_INDEX +/// +/// Signal the fuzzer to start the fuzzing loop at the point this macro is +/// called. The index specified by `start_index` will be used. If you need +/// multiple start harnesses compiled into the same binary, you can use this +/// macro to specify different indices, then enable them at runtime by +/// configuring the fuzzer. +/// +/// When this macro is called: +/// +/// - A snapshot will be taken and saved +/// - The buffer pointed to by `buffer` will be saved and used as the testcase +/// buffer. Each +/// fuzzing iteration, a new test case will be written to this buffer. +/// - The address `size_ptr` will be saved. Each fuzzing iteration, the actual +/// size of the current testcase will be written to `*size_ptr`. +/// - The `max_size` value will be saved as the maximum testcase size. Fuzzing +/// test cases will be truncated to this size before being written to the +/// buffer. +/// +/// # Arguments +/// +/// - `start_index`: The index to use for this start harness +/// - `buffer`: The pointer to the testcase buffer +/// - `size_ptr`: The pointer to the size of the testcase buffer +/// - `max_size`: The maximum size of the testcase buffer +/// +/// # Example +/// +/// ``` +/// unsigned char buffer[1024]; +/// size_t size; +/// HARNESS_START_WITH_MAXIMUM_SIZE_AND_PTR_INDEX(0x0001U, buffer, &size, 1024); +/// ``` +#define HARNESS_START_WITH_MAXIMUM_SIZE_AND_PTR_INDEX(start_index, buffer, \ + size_ptr, max_size) \ + do { \ + __srai_extended4(N_START_BUFFER_PTR_SIZE_PTR_VAL, start_index, buffer, size_ptr, max_size); \ + } while (0); + +/// Pseudo-hypercall number to signal the fuzzer to stop the current fuzzing +/// iteration and reset to the beginning of the fuzzing loop with a "normal" +/// stop status, indicating no solution has occurred. +#define N_STOP_NORMAL (0x0004U) + +/// HARNESS_STOP +/// +/// Signal the fuzzer to stop and reset to the beginning of the fuzzing loop +/// with a "normal" stop status, indicating no solution has occurred. The +/// default index of 0 will be used. If you need to differentiate between +/// multiple stop harnesses compiled into the same binary, you can use the +/// `HARNESS_STOP_INDEX` macro to specify different indices, then enable them at +/// runtime by configuring the fuzzer. +/// +/// # Example +/// +/// ``` +/// HARNESS_STOP(); +/// ``` +#define HARNESS_STOP() \ + do { \ + __srai_extended1(N_STOP_NORMAL, DEFAULT_INDEX); \ + } while (0); + +/// HARNESS_STOP_INDEX +/// +/// Signal the fuzzer to stop and reset to the beginning of the fuzzing loop +/// with a "normal" stop status, indicating no solution has occurred. The index +/// specified by `stop_index` will be used. If you need to differentiate between +/// multiple stop harnesses compiled into the same binary, you can use this +/// macro to specify different indices, then enable them at runtime by +/// configuring the fuzzer. +/// +/// # Arguments +/// +/// - `stop_index`: The index to use for this stop harness +/// +/// # Example +/// +/// ``` +/// HARNESS_STOP_INDEX(0x0001U); +/// ``` +#define HARNESS_STOP_INDEX(stop_index) \ + do { \ + __srai_extended1(N_STOP_NORMAL, stop_index); \ + } while (0); + +/// Pseudo-hypercall number to signal the fuzzer that a custom assertion has +/// occurred, and the fuzzer should stop the current fuzzing iteration and reset +/// to the beginning of the fuzzing loop with a "solution" stop status. +#define N_STOP_ASSERT (0x0005U) + +/// HARNESS_ASSERT +/// +/// Signal the fuzzer that a custom assertion has occurred, and the fuzzer +/// should stop the current fuzzing iteration and reset to the beginning of the +/// fuzzing loop with a "solution" stop status. The default index of 0 will be +/// used. If you need to differentiate between multiple assertion harnesses +/// compiled into the same binary, you can use the `HARNESS_ASSERT_INDEX` macro +/// to specify different indices, then enable them at runtime by configuring the +/// fuzzer. +/// +/// # Example +/// +/// ``` +/// HARNESS_ASSERT(); +/// ``` +#define HARNESS_ASSERT() \ + do { \ + __srai_extended1(N_STOP_ASSERT, DEFAULT_INDEX); \ + } while (0); + +/// HARNESS_ASSERT_INDEX +/// +/// Signal the fuzzer that a custom assertion has occurred, and the fuzzer +/// should stop the current fuzzing iteration and reset to the beginning of the +/// fuzzing loop with a "solution" stop status. The index specified by +/// `assert_index` will be used. If you need to differentiate between multiple +/// assertion harnesses compiled into the same binary, you can use this macro to +/// specify different indices, then enable them at runtime by configuring the +/// fuzzer. +/// +/// # Arguments +/// +/// - `assert_index`: The index to use for this assertion harness +/// +/// # Example +/// +/// ``` +/// HARNESS_ASSERT_INDEX(0x0001U); +/// ``` +#define HARNESS_ASSERT_INDEX(assert_index) \ + do { \ + __srai_extended1(N_STOP_ASSERT, assert_index); \ + } while (0); + +#endif // TSFFS_H +#elif __aarch64__ +// Copyright (C) 2024 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 + +/// Definitions and macros for compiled-in harnessing of C and C++ target +/// software for the RISC-V (32-bit) architecture + +#ifndef TSFFS_H +#define TSFFS_H + +/// Define common with LibFuzzer and other fuzzers to allow code that is +/// fuzzing-specific to be left in the codebase. See +/// https://llvm.org/docs/LibFuzzer.html#id35 for more information +#ifndef FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION +#define FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION (1) +#endif // FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION + +#define __stringify(x) #x +#define __tostring(x) __stringify(x) + +/// __orr +/// +/// Invoke the magic instruction defined by SIMICS for the RISC-V architecture +/// with a specific value of `n` +/// +/// # Arguments +/// +/// * `value` - The value of `n` to use in the magic instruction +#define __orr(value) \ + __asm__ __volatile__("orr x" __tostring(value) ", x" __tostring( \ + value) ", x" __tostring(value)); + +/// __orr_extended1 +/// +/// Invoke the magic instruction defined by SIMICS for the RISC-V architecture +/// with a specific value of `n` and a pseudo-argument in register `r10`. +/// +/// # Arguments +/// +/// * `value` - The value of `n` to use in the magic instruction +/// * `arg0` - The value to place in register `r10` +#define __orr_extended1(value, arg0) \ + __asm__ __volatile__( \ + "mov x28, %0; orr x" __tostring(value) ", x" __tostring( \ + value) ", x" __tostring(value) \ + : \ + : "g"(arg0)); + +/// __orr_extended2 +/// +/// Invoke the magic instruction defined by SIMICS for the RISC-V architecture +/// with a specific value of `n` and two pseudo-arguments in registers `r10` and +/// `r9`. +/// +/// # Arguments +/// +/// * `value` - The value of `n` to use in the magic instruction +/// * `arg0` - The value to place in register `r10` +/// * `arg1` - The value to place in register `r9` +#define __orr_extended2(value, arg0, arg1) \ + __asm__ __volatile__( \ + "mov x28, %0; mov x27, %1; orr x" __tostring(value) ", x" __tostring( \ + value) ", x" __tostring(value) \ + : \ + : "r"(arg0), "r"(arg1)); + +/// __orr_extended3 +/// +/// Invoke the magic instruction defined by SIMICS for the RISC-V architecture +/// with a specific value of `n` and three pseudo-arguments in registers `r10`, +/// `r9`, and `r8`. +/// +/// # Arguments +/// +/// * `value` - The value of `n` to use in the magic instruction +/// * `arg0` - The value to place in register `r10` +/// * `arg1` - The value to place in register `r9` +/// * `arg2` - The value to place in register `r8` +#define __orr_extended3(value, arg0, arg1, arg2) \ + __asm__ __volatile__( \ + "mov x28, %0; mov x27, %1; mov x26, %2; orr x" __tostring( \ + value) ", x" __tostring(value) ", x" __tostring(value) \ + : \ + : "r"(arg0), "r"(arg1), "r"(arg2)); + +/// __orr_extended4 +/// +/// Invoke the magic instruction defined by SIMICS for the RISC-V architecture +/// with a specific value of `n` and four pseudo-arguments in registers `r10`, +/// `r9`, `r8`, and `r7`. +/// +/// # Arguments +/// +/// * `value` - The value of `n` to use in the magic instruction +/// * `arg0` - The value to place in register `r10` +/// * `arg1` - The value to place in register `r9` +/// * `arg2` - The value to place in register `r8` +/// * `arg3` - The value to place in register `r7` +#define __orr_extended4(value, arg0, arg1, arg2, arg3) \ + __asm__ __volatile__( \ + "mov x28, %0; mov x27, %1; mov x26, %2; mov x25, %3; " \ + "orr x" __tostring(value) ", x" __tostring(value) ", x" __tostring( \ + value) \ + : \ + : "r"(arg0), "r"(arg1), "r"(arg2), "r"(arg3)); + +/// The default index number used for magic instructions. All magic instructions +/// support multiple start and stop indices, which defaults to 0 if not +/// specified. +#define DEFAULT_INDEX (0x0000U) + +/// Pseudo-hypercall number to signal the fuzzer to use the first argument to +/// the magic instruction as the pointer to the testcase buffer and the second +/// argument as a pointer to the size of the testcase buffer. +#define N_START_BUFFER_PTR_SIZE_PTR 1 + +/// HARNESS_START +/// +/// Signal the fuzzer to start the fuzzing loop at the point this macro is +/// called. The default "index" of 0 will be used. If you need multiple start +/// harnesses compiled into the same binary, you can use the +/// `HARNESS_START_INDEX` macro to specify different indices, then enable them +/// at runtime by configuring the fuzzer. +/// +/// When this macro is called: +/// +/// - A snapshot will be taken and saved +/// - The buffer pointed to by `buffer` will be saved and used as the testcase +/// buffer. Each +/// fuzzing iteration, a new test case will be written to this buffer. +/// - The size of the buffer pointed to by `size_ptr` will be saved as the +/// maximum testcase size. Each fuzzing iteration, the actual size of the +/// current testcase will be written to `*size_ptr`. +/// +/// # Arguments +/// +/// - `buffer`: The pointer to the testcase buffer +/// - `size_ptr`: The pointer to the size of the testcase buffer +/// +/// # Example +/// +/// ``` +/// unsigned char buffer[1024]; +/// size_t size; +/// HARNESS_START(buffer, &size); +/// ``` +#define HARNESS_START(buffer, size_ptr) \ + do { \ + __orr_extended3(N_START_BUFFER_PTR_SIZE_PTR, DEFAULT_INDEX, buffer, \ + size_ptr); \ + } while (0); + +/// HARNESS_START_INDEX +/// +/// Signal the fuzzer to start the fuzzing loop at the point this macro is +/// called. The index specified by `start_index` will be used. If you need +/// multiple start harnesses compiled into the same binary, you can use this +/// macro to specify different indices, then enable them at runtime by +/// configuring the fuzzer. +/// +/// When this macro is called: +/// +/// - A snapshot will be taken and saved +/// - The buffer pointed to by `buffer` will be saved and used as the testcase +/// buffer. Each +/// fuzzing iteration, a new test case will be written to this buffer. +/// - The size of the buffer pointed to by `size_ptr` will be saved as the +/// maximum testcase size. Each fuzzing iteration, the actual size of the +/// current testcase will be written to `*size_ptr`. +/// +/// # Arguments +/// +/// - `start_index`: The index to use for this start harness +/// - `buffer`: The pointer to the testcase buffer +/// - `size_ptr`: The pointer to the size of the testcase buffer +/// +/// # Example +/// +/// ``` +/// unsigned char buffer[1024]; +/// size_t size; +/// HARNESS_START_INDEX(0x0001U, buffer, &size); +/// ``` +#define HARNESS_START_INDEX(start_index, buffer, size_ptr) \ + do { \ + __orr_extended3(N_START_BUFFER_PTR_SIZE_PTR, start_index, buffer, \ + size_ptr); \ + } while (0); + +/// Pseudo-hypercall number to signal the fuzzer to use the first argument to +/// the magic instruction as the pointer to the testcase buffer and the second +/// argument as the maximum size of the testcase buffer. +#define N_START_BUFFER_PTR_SIZE_VAL 2 + +/// HARNESS_START_WITH_MAXIMUM_SIZE +/// +/// Signal the fuzzer to start the fuzzing loop at the point this macro is +/// called. The default "index" of 0 will be used. If you need multiple start +/// harnesses compiled into the same binary, you can use the +/// `HARNESS_START_WITH_MAXIMUM_SIZE_INDEX` macro to specify different indices, +/// then enable them at runtime by configuring the fuzzer. +/// +/// When this macro is called: +/// +/// - A snapshot will be taken and saved +/// - The buffer pointed to by `buffer` will be saved and used as the testcase +/// buffer. Each +/// fuzzing iteration, a new test case will be written to this buffer. +/// - The `max_size` value will be saved as the maximum testcase size. Fuzzing +/// test cases will be truncated to this size before being written to the +/// buffer. +/// +/// # Arguments +/// +/// - `buffer`: The pointer to the testcase buffer +/// - `max_size`: The maximum size of the testcase buffer +/// +/// # Example +/// +/// ``` +/// unsigned char buffer[1024]; +/// HARNESS_START_WITH_MAXIMUM_SIZE(buffer, 1024); +/// ``` +#define HARNESS_START_WITH_MAXIMUM_SIZE(buffer, max_size) \ + do { \ + __orr_extended3(N_START_BUFFER_PTR_SIZE_VAL, DEFAULT_INDEX, buffer, \ + max_size); \ + } while (0); + +/// HARNESS_START_WITH_MAXIMUM_SIZE_INDEX +/// +/// Signal the fuzzer to start the fuzzing loop at the point this macro is +/// called. The index specified by `start_index` will be used. If you need +/// multiple start harnesses compiled into the same binary, you can use this +/// macro to specify different indices, then enable them at runtime by +/// configuring the fuzzer. +/// +/// When this macro is called: +/// +/// - A snapshot will be taken and saved +/// - The buffer pointed to by `buffer` will be saved and used as the testcase +/// buffer. Each +/// fuzzing iteration, a new test case will be written to this buffer. +/// - The `max_size` value will be saved as the maximum testcase size. Fuzzing +/// test cases will be truncated to this size before being written to the +/// buffer. +/// +/// # Arguments +/// +/// - `start_index`: The index to use for this start harness +/// - `buffer`: The pointer to the testcase buffer +/// - `max_size`: The maximum size of the testcase buffer +/// +/// # Example +/// +/// ``` +/// unsigned char buffer[1024]; +/// HARNESS_START_WITH_MAXIMUM_SIZE_INDEX(0x0001U, buffer, 1024); +/// ``` +#define HARNESS_START_WITH_MAXIMUM_SIZE_INDEX(start_index, buffer, max_size) \ + do { \ + __orr_extended3(N_START_BUFFER_PTR_SIZE_VAL, start_index, buffer, \ + max_size); \ + } while (0); + +/// Pseudo-hypercall number to signal the fuzzer to use the first argument to +/// the magic instruction as the pointer to the testcase buffer, the second +/// argument as a pointer to the size of the testcase buffer, and the third +/// argument as the maximum size of the testcase buffer. +#define N_START_BUFFER_PTR_SIZE_PTR_VAL 3 + +/// HARNESS_START_WITH_MAXIMUM_SIZE_AND_PTR +/// +/// Signal the fuzzer to start the fuzzing loop at the point this macro is +/// called. The default "index" of 0 will be used. If you need multiple start +/// harnesses compiled into the same binary, you can use the +/// `HARNESS_START_WITH_MAXIMUM_SIZE_AND_PTR_INDEX` macro to specify different +/// indices, then enable them at runtime by configuring the fuzzer. +/// +/// When this macro is called: +/// +/// - A snapshot will be taken and saved +/// - The buffer pointed to by `buffer` will be saved and used as the testcase +/// buffer. Each +/// fuzzing iteration, a new test case will be written to this buffer. +/// - The address `size_ptr` will be saved. Each fuzzing iteration, the actual +/// size of the current testcase will be written to `*size_ptr`. +/// - The `max_size` value will be saved as the maximum testcase size. Fuzzing +/// test cases will be truncated to this size before being written to the +/// buffer. +/// +/// # Arguments +/// +/// - `buffer`: The pointer to the testcase buffer +/// - `size_ptr`: The pointer to the size of the testcase buffer +/// - `max_size`: The maximum size of the testcase buffer +/// +/// # Example +/// +/// ``` +/// unsigned char buffer[1024]; +/// size_t size; +/// HARNESS_START_WITH_MAXIMUM_SIZE_AND_PTR(buffer, &size, 1024); +/// ``` +#define HARNESS_START_WITH_MAXIMUM_SIZE_AND_PTR(buffer, size_ptr, max_size) \ + do { \ + __orr_extended4(N_START_BUFFER_PTR_SIZE_PTR_VAL, DEFAULT_INDEX, buffer, \ + size_ptr, max_size); \ + } while (0); + +/// HARNESS_START_WITH_MAXIMUM_SIZE_AND_PTR_INDEX +/// +/// Signal the fuzzer to start the fuzzing loop at the point this macro is +/// called. The index specified by `start_index` will be used. If you need +/// multiple start harnesses compiled into the same binary, you can use this +/// macro to specify different indices, then enable them at runtime by +/// configuring the fuzzer. +/// +/// When this macro is called: +/// +/// - A snapshot will be taken and saved +/// - The buffer pointed to by `buffer` will be saved and used as the testcase +/// buffer. Each +/// fuzzing iteration, a new test case will be written to this buffer. +/// - The address `size_ptr` will be saved. Each fuzzing iteration, the actual +/// size of the current testcase will be written to `*size_ptr`. +/// - The `max_size` value will be saved as the maximum testcase size. Fuzzing +/// test cases will be truncated to this size before being written to the +/// buffer. +/// +/// # Arguments +/// +/// - `start_index`: The index to use for this start harness +/// - `buffer`: The pointer to the testcase buffer +/// - `size_ptr`: The pointer to the size of the testcase buffer +/// - `max_size`: The maximum size of the testcase buffer +/// +/// # Example +/// +/// ``` +/// unsigned char buffer[1024]; +/// size_t size; +/// HARNESS_START_WITH_MAXIMUM_SIZE_AND_PTR_INDEX(0x0001U, buffer, &size, 1024); +/// ``` +#define HARNESS_START_WITH_MAXIMUM_SIZE_AND_PTR_INDEX(start_index, buffer, \ + size_ptr, max_size) \ + do { \ + __orr_extended4(N_START_BUFFER_PTR_SIZE_PTR_VAL, start_index, buffer, \ + size_ptr, max_size); \ + } while (0); + +/// Pseudo-hypercall number to signal the fuzzer to stop the current fuzzing +/// iteration and reset to the beginning of the fuzzing loop with a "normal" +/// stop status, indicating no solution has occurred. +#define N_STOP_NORMAL 4 + +/// HARNESS_STOP +/// +/// Signal the fuzzer to stop and reset to the beginning of the fuzzing loop +/// with a "normal" stop status, indicating no solution has occurred. The +/// default index of 0 will be used. If you need to differentiate between +/// multiple stop harnesses compiled into the same binary, you can use the +/// `HARNESS_STOP_INDEX` macro to specify different indices, then enable them at +/// runtime by configuring the fuzzer. +/// +/// # Example +/// +/// ``` +/// HARNESS_STOP(); +/// ``` +#define HARNESS_STOP() \ + do { \ + __orr_extended1(N_STOP_NORMAL, DEFAULT_INDEX); \ + } while (0); + +/// HARNESS_STOP_INDEX +/// +/// Signal the fuzzer to stop and reset to the beginning of the fuzzing loop +/// with a "normal" stop status, indicating no solution has occurred. The index +/// specified by `stop_index` will be used. If you need to differentiate between +/// multiple stop harnesses compiled into the same binary, you can use this +/// macro to specify different indices, then enable them at runtime by +/// configuring the fuzzer. +/// +/// # Arguments +/// +/// - `stop_index`: The index to use for this stop harness +/// +/// # Example +/// +/// ``` +/// HARNESS_STOP_INDEX(0x0001U); +/// ``` +#define HARNESS_STOP_INDEX(stop_index) \ + do { \ + __orr_extended1(N_STOP_NORMAL, stop_index); \ + } while (0); + +/// Pseudo-hypercall number to signal the fuzzer that a custom assertion has +/// occurred, and the fuzzer should stop the current fuzzing iteration and reset +/// to the beginning of the fuzzing loop with a "solution" stop status. +#define N_STOP_ASSERT 5 + +/// HARNESS_ASSERT +/// +/// Signal the fuzzer that a custom assertion has occurred, and the fuzzer +/// should stop the current fuzzing iteration and reset to the beginning of the +/// fuzzing loop with a "solution" stop status. The default index of 0 will be +/// used. If you need to differentiate between multiple assertion harnesses +/// compiled into the same binary, you can use the `HARNESS_ASSERT_INDEX` macro +/// to specify different indices, then enable them at runtime by configuring the +/// fuzzer. +/// +/// # Example +/// +/// ``` +/// HARNESS_ASSERT(); +/// ``` +#define HARNESS_ASSERT() \ + do { \ + __orr_extended1(N_STOP_ASSERT, DEFAULT_INDEX); \ + } while (0); + +/// HARNESS_ASSERT_INDEX +/// +/// Signal the fuzzer that a custom assertion has occurred, and the fuzzer +/// should stop the current fuzzing iteration and reset to the beginning of the +/// fuzzing loop with a "solution" stop status. The index specified by +/// `assert_index` will be used. If you need to differentiate between multiple +/// assertion harnesses compiled into the same binary, you can use this macro to +/// specify different indices, then enable them at runtime by configuring the +/// fuzzer. +/// +/// # Arguments +/// +/// - `assert_index`: The index to use for this assertion harness +/// +/// # Example +/// +/// ``` +/// HARNESS_ASSERT_INDEX(0x0001U); +/// ``` +#define HARNESS_ASSERT_INDEX(assert_index) \ + do { \ + __orr_extended1(N_STOP_ASSERT, assert_index); \ + } while (0); + +#endif // TSFFS_H +#elif __arm__ +// Copyright (C) 2024 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 + +/// Definitions and macros for compiled-in harnessing of C and C++ target +/// software for the RISC-V (32-bit) architecture + +#ifndef TSFFS_H +#define TSFFS_H + +/// Define common with LibFuzzer and other fuzzers to allow code that is +/// fuzzing-specific to be left in the codebase. See +/// https://llvm.org/docs/LibFuzzer.html#id35 for more information +#ifndef FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION +#define FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION (1) +#endif // FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION + +#define __stringify(x) #x +#define __tostring(x) __stringify(x) + +/// __orr +/// +/// Invoke the magic instruction defined by SIMICS for the RISC-V architecture +/// with a specific value of `n` +/// +/// # Arguments +/// +/// * `value` - The value of `n` to use in the magic instruction +#define __orr(value) \ + __asm__ __volatile__("orr r" __tostring(value) ", r" __tostring( \ + value) ", r" __tostring(value)); + +/// __orr_extended1 +/// +/// Invoke the magic instruction defined by SIMICS for the RISC-V architecture +/// with a specific value of `n` and a pseudo-argument in register `r10`. +/// +/// # Arguments +/// +/// * `value` - The value of `n` to use in the magic instruction +/// * `arg0` - The value to place in register `r10` +#define __orr_extended1(value, arg0) \ + __asm__ __volatile__( \ + "mov r10, %0; orr r" __tostring(value) ", r" __tostring( \ + value) ", r" __tostring(value) \ + : \ + : "r"(arg0)); + +/// __orr_extended2 +/// +/// Invoke the magic instruction defined by SIMICS for the RISC-V architecture +/// with a specific value of `n` and two pseudo-arguments in registers `r10` and +/// `r9`. +/// +/// # Arguments +/// +/// * `value` - The value of `n` to use in the magic instruction +/// * `arg0` - The value to place in register `r10` +/// * `arg1` - The value to place in register `r9` +#define __orr_extended2(value, arg0, arg1) \ + __asm__ __volatile__( \ + "mov r10, %0; mov r9, %1; orr r" __tostring(value) ", r" __tostring( \ + value) ", r" __tostring(value) \ + : \ + : "r"(arg0), "r"(arg1)); + +/// __orr_extended3 +/// +/// Invoke the magic instruction defined by SIMICS for the RISC-V architecture +/// with a specific value of `n` and three pseudo-arguments in registers `r10`, +/// `r9`, and `r8`. +/// +/// # Arguments +/// +/// * `value` - The value of `n` to use in the magic instruction +/// * `arg0` - The value to place in register `r10` +/// * `arg1` - The value to place in register `r9` +/// * `arg2` - The value to place in register `r8` +#define __orr_extended3(value, arg0, arg1, arg2) \ + __asm__ __volatile__( \ + "mov r10, %0; mov r9, %1; mov r8, %2; orr r" __tostring( \ + value) ", r" __tostring(value) ", r" __tostring(value) \ + : \ + : "r"(arg0), "r"(arg1), "r"(arg2)); + +/// __orr_extended4 +/// +/// Invoke the magic instruction defined by SIMICS for the RISC-V architecture +/// with a specific value of `n` and four pseudo-arguments in registers `r10`, +/// `r9`, `r8`, and `r7`. +/// +/// # Arguments +/// +/// * `value` - The value of `n` to use in the magic instruction +/// * `arg0` - The value to place in register `r10` +/// * `arg1` - The value to place in register `r9` +/// * `arg2` - The value to place in register `r8` +/// * `arg3` - The value to place in register `r7` +#define __orr_extended4(value, arg0, arg1, arg2, arg3) \ + __asm__ __volatile__( \ + "mov r10, %0; mov r9, %1; mov r8, %2; mov r7, %3; " \ + "orr r" __tostring(value) ", r" __tostring(value) ", r" __tostring( \ + value) \ + : \ + : "r"(arg0), "r"(arg1), "r"(arg2), "r"(arg3)); + +/// Magic value defined by SIMICS as the "leaf" value of a CPUID instruction +/// that is treated as a magic instruction. +#define MAGIC (0x4711U) + +/// The default index number used for magic instructions. All magic instructions +/// support multiple start and stop indices, which defaults to 0 if not +/// specified. +#define DEFAULT_INDEX (0x0000U) + +/// Pseudo-hypercall number to signal the fuzzer to use the first argument to +/// the magic instruction as the pointer to the testcase buffer and the second +/// argument as a pointer to the size of the testcase buffer. +#define N_START_BUFFER_PTR_SIZE_PTR 1 + +/// HARNESS_START +/// +/// Signal the fuzzer to start the fuzzing loop at the point this macro is +/// called. The default "index" of 0 will be used. If you need multiple start +/// harnesses compiled into the same binary, you can use the +/// `HARNESS_START_INDEX` macro to specify different indices, then enable them +/// at runtime by configuring the fuzzer. +/// +/// When this macro is called: +/// +/// - A snapshot will be taken and saved +/// - The buffer pointed to by `buffer` will be saved and used as the testcase +/// buffer. Each +/// fuzzing iteration, a new test case will be written to this buffer. +/// - The size of the buffer pointed to by `size_ptr` will be saved as the +/// maximum testcase size. Each fuzzing iteration, the actual size of the +/// current testcase will be written to `*size_ptr`. +/// +/// # Arguments +/// +/// - `buffer`: The pointer to the testcase buffer +/// - `size_ptr`: The pointer to the size of the testcase buffer +/// +/// # Example +/// +/// ``` +/// unsigned char buffer[1024]; +/// size_t size; +/// HARNESS_START(buffer, &size); +/// ``` +#define HARNESS_START(buffer, size_ptr) \ + do { \ + __orr_extended2(N_START_BUFFER_PTR_SIZE_PTR, buffer, size_ptr); \ + } while (0); + +/// Pseudo-hypercall number to signal the fuzzer to use the first argument to +/// the magic instruction as the pointer to the testcase buffer and the second +/// argument as the maximum size of the testcase buffer. +#define N_START_BUFFER_PTR_SIZE_VAL 2 + +/// HARNESS_START_WITH_MAXIMUM_SIZE +/// +/// Signal the fuzzer to start the fuzzing loop at the point this macro is +/// called. The default "index" of 0 will be used. If you need multiple start +/// harnesses compiled into the same binary, you can use the +/// `HARNESS_START_WITH_MAXIMUM_SIZE_INDEX` macro to specify different indices, +/// then enable them at runtime by configuring the fuzzer. +/// +/// When this macro is called: +/// +/// - A snapshot will be taken and saved +/// - The buffer pointed to by `buffer` will be saved and used as the testcase +/// buffer. Each +/// fuzzing iteration, a new test case will be written to this buffer. +/// - The `max_size` value will be saved as the maximum testcase size. Fuzzing +/// test cases will be truncated to this size before being written to the +/// buffer. +/// +/// # Arguments +/// +/// - `buffer`: The pointer to the testcase buffer +/// - `max_size`: The maximum size of the testcase buffer +/// +/// # Example +/// +/// ``` +/// unsigned char buffer[1024]; +/// HARNESS_START_WITH_MAXIMUM_SIZE(buffer, 1024); +/// ``` +#define HARNESS_START_WITH_MAXIMUM_SIZE(buffer, max_size) \ + do { \ + __orr_extended2(N_START_BUFFER_PTR_SIZE_VAL, buffer, max_size); \ + } while (0); + +/// Pseudo-hypercall number to signal the fuzzer to use the first argument to +/// the magic instruction as the pointer to the testcase buffer, the second +/// argument as a pointer to the size of the testcase buffer, and the third +/// argument as the maximum size of the testcase buffer. +#define N_START_BUFFER_PTR_SIZE_PTR_VAL 3 + +/// HARNESS_START_WITH_MAXIMUM_SIZE_AND_PTR +/// +/// Signal the fuzzer to start the fuzzing loop at the point this macro is +/// called. The default "index" of 0 will be used. If you need multiple start +/// harnesses compiled into the same binary, you can use the +/// `HARNESS_START_WITH_MAXIMUM_SIZE_AND_PTR_INDEX` macro to specify different +/// indices, then enable them at runtime by configuring the fuzzer. +/// +/// When this macro is called: +/// +/// - A snapshot will be taken and saved +/// - The buffer pointed to by `buffer` will be saved and used as the testcase +/// buffer. Each +/// fuzzing iteration, a new test case will be written to this buffer. +/// - The address `size_ptr` will be saved. Each fuzzing iteration, the actual +/// size of the current testcase will be written to `*size_ptr`. +/// - The `max_size` value will be saved as the maximum testcase size. Fuzzing +/// test cases will be truncated to this size before being written to the +/// buffer. +/// +/// # Arguments +/// +/// - `buffer`: The pointer to the testcase buffer +/// - `size_ptr`: The pointer to the size of the testcase buffer +/// - `max_size`: The maximum size of the testcase buffer +/// +/// # Example +/// +/// ``` +/// unsigned char buffer[1024]; +/// size_t size; +/// HARNESS_START_WITH_MAXIMUM_SIZE_AND_PTR(buffer, &size, 1024); +/// ``` +#define HARNESS_START_WITH_MAXIMUM_SIZE_AND_PTR(buffer, size_ptr, max_size) \ + do { \ + __orr_extended3(N_START_BUFFER_PTR_SIZE_PTR_VAL, buffer, size_ptr, \ + max_size); \ + } while (0); + +/// Pseudo-hypercall number to signal the fuzzer to stop the current fuzzing +/// iteration and reset to the beginning of the fuzzing loop with a "normal" +/// stop status, indicating no solution has occurred. +#define N_STOP_NORMAL 4 + +/// HARNESS_STOP +/// +/// Signal the fuzzer to stop and reset to the beginning of the fuzzing loop +/// with a "normal" stop status, indicating no solution has occurred. The +/// default index of 0 will be used. If you need to differentiate between +/// multiple stop harnesses compiled into the same binary, you can use the +/// `HARNESS_STOP_INDEX` macro to specify different indices, then enable them at +/// runtime by configuring the fuzzer. +/// +/// # Example +/// +/// ``` +/// HARNESS_STOP(); +/// ``` +#define HARNESS_STOP() \ + do { \ + __orr(N_STOP_NORMAL); \ + } while (0); + +/// Pseudo-hypercall number to signal the fuzzer that a custom assertion has +/// occurred, and the fuzzer should stop the current fuzzing iteration and reset +/// to the beginning of the fuzzing loop with a "solution" stop status. +#define N_STOP_ASSERT 5 + +/// HARNESS_ASSERT +/// +/// Signal the fuzzer that a custom assertion has occurred, and the fuzzer +/// should stop the current fuzzing iteration and reset to the beginning of the +/// fuzzing loop with a "solution" stop status. The default index of 0 will be +/// used. If you need to differentiate between multiple assertion harnesses +/// compiled into the same binary, you can use the `HARNESS_ASSERT_INDEX` macro +/// to specify different indices, then enable them at runtime by configuring the +/// fuzzer. +/// +/// # Example +/// +/// ``` +/// HARNESS_ASSERT(); +/// ``` +#define HARNESS_ASSERT() \ + do { \ + __orr_extended1(N_STOP_ASSERT, DEFAULT_INDEX); \ + } while (0); + +#endif // TSFFS_H +#else +#error "Unsupported platform!" +#endif +#elif _MSC_VER +#ifndef TSFFS_H +#define TSFFS_H + +/// Define common with LibFuzzer and other fuzzers to allow code that is +/// fuzzing-specific to be left in the codebase. See +/// https://llvm.org/docs/LibFuzzer.html#id35 for more information +#ifndef FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION +#define FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION (1) +#endif // FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION + +#include + +/// HARNESS_START +/// +/// Signal the fuzzer to start the fuzzing loop at the point this macro is +/// called. The default "index" of 0 will be used. If you need multiple start +/// harnesses compiled into the same binary, you can use the +/// `HARNESS_START_INDEX` macro to specify different indices, then enable them +/// at runtime by configuring the fuzzer. +/// +/// When this macro is called: +/// +/// - A snapshot will be taken and saved +/// - The buffer pointed to by `buffer` will be saved and used as the testcase +/// buffer. Each +/// fuzzing iteration, a new test case will be written to this buffer. +/// - The size of the buffer pointed to by `size_ptr` will be saved as the +/// maximum testcase size. Each fuzzing iteration, the actual size of the +/// current testcase will be written to `*size_ptr`. +/// +/// # Arguments +/// +/// - `buffer`: The pointer to the testcase buffer +/// - `size_ptr`: The pointer to the size of the testcase buffer +/// +/// # Example +/// +/// ``` +/// unsigned char buffer[1024]; +/// size_t size; +/// HARNESS_START(buffer, &size); +/// ``` +void HARNESS_START(void *buffer, void *size_ptr); + +/// HARNESS_START_INDEX +/// +/// Signal the fuzzer to start the fuzzing loop at the point this macro is +/// called. The index specified by `start_index` will be used. If you need +/// multiple start harnesses compiled into the same binary, you can use this +/// macro to specify different indices, then enable them at runtime by +/// configuring the fuzzer. +/// +/// When this macro is called: +/// +/// - A snapshot will be taken and saved +/// - The buffer pointed to by `buffer` will be saved and used as the testcase +/// buffer. Each +/// fuzzing iteration, a new test case will be written to this buffer. +/// - The size of the buffer pointed to by `size_ptr` will be saved as the +/// maximum testcase size. Each fuzzing iteration, the actual size of the +/// current testcase will be written to `*size_ptr`. +/// +/// # Arguments +/// +/// - `start_index`: The index to use for this start harness +/// - `buffer`: The pointer to the testcase buffer +/// - `size_ptr`: The pointer to the size of the testcase buffer +/// +/// # Example +/// +/// ``` +/// unsigned char buffer[1024]; +/// size_t size; +/// HARNESS_START_INDEX(0x0001U, buffer, &size); +/// ``` +void HARNESS_START_INDEX(size_t start_index, void *buffer, void *size_ptr); + +/// HARNESS_START_WITH_MAXIMUM_SIZE +/// +/// Signal the fuzzer to start the fuzzing loop at the point this macro is +/// called. The default "index" of 0 will be used. If you need multiple start +/// harnesses compiled into the same binary, you can use the +/// `HARNESS_START_WITH_MAXIMUM_SIZE_INDEX` macro to specify different indices, +/// then enable them at runtime by configuring the fuzzer. +/// +/// When this macro is called: +/// +/// - A snapshot will be taken and saved +/// - The buffer pointed to by `buffer` will be saved and used as the testcase +/// buffer. Each +/// fuzzing iteration, a new test case will be written to this buffer. +/// - The `max_size` value will be saved as the maximum testcase size. Fuzzing +/// test cases will be truncated to this size before being written to the +/// buffer. +/// +/// # Arguments +/// +/// - `buffer`: The pointer to the testcase buffer +/// - `max_size`: The maximum size of the testcase buffer +/// +/// # Example +/// +/// ``` +/// unsigned char buffer[1024]; +/// HARNESS_START_WITH_MAXIMUM_SIZE(buffer, 1024); +/// ``` +void HARNESS_START_WITH_MAXIMUM_SIZE(void *buffer, size_t max_size); + +/// HARNESS_START_WITH_MAXIMUM_SIZE_INDEX +/// +/// Signal the fuzzer to start the fuzzing loop at the point this macro is +/// called. The index specified by `start_index` will be used. If you need +/// multiple start harnesses compiled into the same binary, you can use this +/// macro to specify different indices, then enable them at runtime by +/// configuring the fuzzer. +/// +/// When this macro is called: +/// +/// - A snapshot will be taken and saved +/// - The buffer pointed to by `buffer` will be saved and used as the testcase +/// buffer. Each +/// fuzzing iteration, a new test case will be written to this buffer. +/// - The `max_size` value will be saved as the maximum testcase size. Fuzzing +/// test cases will be truncated to this size before being written to the +/// buffer. +/// +/// # Arguments +/// +/// - `start_index`: The index to use for this start harness +/// - `buffer`: The pointer to the testcase buffer +/// - `max_size`: The maximum size of the testcase buffer +/// +/// # Example +/// +/// ``` +/// unsigned char buffer[1024]; +/// HARNESS_START_WITH_MAXIMUM_SIZE_INDEX(0x0001U, buffer, 1024); +/// ``` +void HARNESS_START_WITH_MAXIMUM_SIZE_INDEX(size_t start_index, void *buffer, + size_t max_size); + +/// HARNESS_START_WITH_MAXIMUM_SIZE_AND_PTR +/// +/// Signal the fuzzer to start the fuzzing loop at the point this macro is +/// called. The default "index" of 0 will be used. If you need multiple start +/// harnesses compiled into the same binary, you can use the +/// `HARNESS_START_WITH_MAXIMUM_SIZE_AND_PTR_INDEX` macro to specify different +/// indices, then enable them at runtime by configuring the fuzzer. +/// +/// When this macro is called: +/// +/// - A snapshot will be taken and saved +/// - The buffer pointed to by `buffer` will be saved and used as the testcase +/// buffer. Each +/// fuzzing iteration, a new test case will be written to this buffer. +/// - The address `size_ptr` will be saved. Each fuzzing iteration, the actual +/// size of the current testcase will be written to `*size_ptr`. +/// - The `max_size` value will be saved as the maximum testcase size. Fuzzing +/// test cases will be truncated to this size before being written to the +/// buffer. +/// +/// # Arguments +/// +/// - `buffer`: The pointer to the testcase buffer +/// - `size_ptr`: The pointer to the size of the testcase buffer +/// - `max_size`: The maximum size of the testcase buffer +/// +/// # Example +/// +/// ``` +/// unsigned char buffer[1024]; +/// size_t size; +/// HARNESS_START_WITH_MAXIMUM_SIZE_AND_PTR(buffer, &size, 1024); +/// ``` +void HARNESS_START_WITH_MAXIMUM_SIZE_AND_PTR(void *buffer, void *size_ptr, + size_t max_size); + +/// HARNESS_START_WITH_MAXIMUM_SIZE_AND_PTR_INDEX +/// +/// Signal the fuzzer to start the fuzzing loop at the point this macro is +/// called. The index specified by `start_index` will be used. If you need +/// multiple start harnesses compiled into the same binary, you can use this +/// macro to specify different indices, then enable them at runtime by +/// configuring the fuzzer. +/// +/// When this macro is called: +/// +/// - A snapshot will be taken and saved +/// - The buffer pointed to by `buffer` will be saved and used as the testcase +/// buffer. Each +/// fuzzing iteration, a new test case will be written to this buffer. +/// - The address `size_ptr` will be saved. Each fuzzing iteration, the actual +/// size of the current testcase will be written to `*size_ptr`. +/// - The `max_size` value will be saved as the maximum testcase size. Fuzzing +/// test cases will be truncated to this size before being written to the +/// buffer. +/// +/// # Arguments +/// +/// - `start_index`: The index to use for this start harness +/// - `buffer`: The pointer to the testcase buffer +/// - `size_ptr`: The pointer to the size of the testcase buffer +/// - `max_size`: The maximum size of the testcase buffer +/// +/// # Example +/// +/// ``` +/// unsigned char buffer[1024]; +/// size_t size; +/// HARNESS_START_WITH_MAXIMUM_SIZE_AND_PTR_INDEX(0x0001U, buffer, &size, 1024); +/// ``` +void HARNESS_START_WITH_MAXIMUM_SIZE_AND_PTR_INDEX(size_t start_index, + void *buffer, void *size_ptr, + size_t max_size); + +/// HARNESS_STOP +/// +/// Signal the fuzzer to stop and reset to the beginning of the fuzzing loop +/// with a "normal" stop status, indicating no solution has occurred. The +/// default index of 0 will be used. If you need to differentiate between +/// multiple stop harnesses compiled into the same binary, you can use the +/// `HARNESS_STOP_INDEX` macro to specify different indices, then enable them at +/// runtime by configuring the fuzzer. +/// +/// # Example +/// +/// ``` +/// HARNESS_STOP(); +/// ``` +void HARNESS_STOP(void); + +/// HARNESS_STOP_INDEX +/// +/// Signal the fuzzer to stop and reset to the beginning of the fuzzing loop +/// with a "normal" stop status, indicating no solution has occurred. The index +/// specified by `stop_index` will be used. If you need to differentiate between +/// multiple stop harnesses compiled into the same binary, you can use this +/// macro to specify different indices, then enable them at runtime by +/// configuring the fuzzer. +/// +/// # Arguments +/// +/// - `stop_index`: The index to use for this stop harness +/// +/// # Example +/// +/// ``` +/// HARNESS_STOP_INDEX(0x0001U); +/// ``` +void HARNESS_STOP_INDEX(size_t stop_index); + +/// HARNESS_ASSERT +/// +/// Signal the fuzzer that a custom assertion has occurred, and the fuzzer +/// should stop the current fuzzing iteration and reset to the beginning of the +/// fuzzing loop with a "solution" stop status. The default index of 0 will be +/// used. If you need to differentiate between multiple assertion harnesses +/// compiled into the same binary, you can use the `HARNESS_ASSERT_INDEX` macro +/// to specify different indices, then enable them at runtime by configuring the +/// fuzzer. +/// +/// # Example +/// +/// ``` +/// HARNESS_ASSERT(); +/// ``` +void HARNESS_ASSERT(void); + +/// HARNESS_ASSERT_INDEX +/// +/// Signal the fuzzer that a custom assertion has occurred, and the fuzzer +/// should stop the current fuzzing iteration and reset to the beginning of the +/// fuzzing loop with a "solution" stop status. The index specified by +/// `assert_index` will be used. If you need to differentiate between multiple +/// assertion harnesses compiled into the same binary, you can use this macro to +/// specify different indices, then enable them at runtime by configuring the +/// fuzzer. +/// +/// # Arguments +/// +/// - `assert_index`: The index to use for this assertion harness +/// +/// # Example +/// +/// ``` +/// HARNESS_ASSERT_INDEX(0x0001U); +/// ``` +void HARNESS_ASSERT_INDEX(size_t assert_index); + +#endif // TSFFS_H +#else +#error "Unsupported compiler!" +#endif diff --git a/src/arch/mod.rs b/src/arch/mod.rs index 606abe2d..e1fd90f0 100644 --- a/src/arch/mod.rs +++ b/src/arch/mod.rs @@ -7,16 +7,20 @@ use self::{ risc_v::RISCVArchitectureOperations, x86::X86ArchitectureOperations, x86_64::X86_64ArchitectureOperations, }; -use crate::{tracer::TraceEntry, traits::TracerDisassembler, StartBuffer, StartSize, CLASS_NAME}; -use anyhow::{anyhow, bail, Error, Result}; +use crate::{ + tracer::TraceEntry, traits::TracerDisassembler, ManualStartAddress, ManualStartInfo, StartInfo, + StartPhysicalAddress, StartSize, +}; +use anyhow::anyhow; +use anyhow::{bail, ensure, Error, Result}; use raw_cstr::AsRawCstr; use simics::{ api::{ - get_object, read_phys_memory, sys::instruction_handle_t, write_byte, Access, AttrValueType, - ConfObject, CpuInstructionQueryInterface, CpuInstrumentationSubscribeInterface, - CycleInterface, GenericAddress, IntRegisterInterface, ProcessorInfoV2Interface, + read_phys_memory, sys::instruction_handle_t, write_byte, Access, AttrValueType, ConfObject, + CpuInstructionQueryInterface, CpuInstrumentationSubscribeInterface, CycleInterface, + IntRegisterInterface, ProcessorInfoV2Interface, }, - trace, + read_byte, }; use std::{fmt::Debug, str::FromStr}; @@ -100,12 +104,11 @@ impl Debug for Architecture { } /// Each architecture must provide a struct that performs architecture-specific operations pub trait ArchitectureOperations { - /// The register for this architecture which contains the address of the testcase buffer - /// when using the magic start functionality - const DEFAULT_TESTCASE_AREA_REGISTER_NAME: &'static str; - /// The register for this architecture which contains the pointer to the size of the - /// testcase buffer when using the magic start functionality - const DEFAULT_TESTCASE_SIZE_REGISTER_NAME: &'static str; + const INDEX_SELECTOR_REGISTER: &'static str; + const ARGUMENT_REGISTER_0: &'static str; + const ARGUMENT_REGISTER_1: &'static str; + const ARGUMENT_REGISTER_2: &'static str; + const POINTER_WIDTH_OVERRIDE: Option = None; /// Create a new instance of the architecture operations fn new(cpu: *mut ConfObject) -> Result @@ -141,169 +144,340 @@ pub trait ArchitectureOperations { /// Return a mutable reference to the interface for querying CPU cycles and timing fn cycle(&mut self) -> &mut CycleInterface; - /// Returns the address and whether the address is virtual for the testcase buffer used by - /// the magic start functionality - fn get_magic_start_buffer(&mut self) -> Result { - let number = self + /// Return the value of the magic index selector register, which is used to determine + /// whether a magic instruction should be used or skipped. + fn get_magic_index_selector(&mut self) -> Result { + Ok(self .int_register() - .get_number(Self::DEFAULT_TESTCASE_AREA_REGISTER_NAME.as_raw_cstr()?)?; + .get_number(Self::INDEX_SELECTOR_REGISTER.as_raw_cstr()?) + .and_then(|n| self.int_register().read(n))?) + } - trace!( - get_object(CLASS_NAME)?, - "Got number {} for register {}", - number, - Self::DEFAULT_TESTCASE_AREA_REGISTER_NAME - ); + /// Get the magic start information from the harness which takes the arguments: + /// + /// - buffer: The address of the buffer containing the testcase + /// - size_ptr: A pointer to a pointer-sized variable containing the size of the testcase + fn get_magic_start_buffer_ptr_size_ptr(&mut self) -> Result { + let buffer_register_number = self + .int_register() + .get_number(Self::ARGUMENT_REGISTER_0.as_raw_cstr()?)?; + let size_ptr_register_number = self + .int_register() + .get_number(Self::ARGUMENT_REGISTER_1.as_raw_cstr()?)?; + let buffer_logical_address = self.int_register().read(buffer_register_number)?; + let size_ptr_logical_address = self.int_register().read(size_ptr_register_number)?; + let buffer_physical_address_block = self + .processor_info_v2() + .logical_to_physical(buffer_logical_address, Access::Sim_Access_Read)?; + let size_ptr_physical_address_block = self + .processor_info_v2() + .logical_to_physical(size_ptr_logical_address, Access::Sim_Access_Read)?; - let logical_address = self.int_register().read(number)?; - trace!( - get_object(CLASS_NAME)?, - "Got logical address {:#x} from register", - logical_address + ensure!( + buffer_physical_address_block.valid != 0, + "Invalid linear address found in magic start buffer register {buffer_register_number}: {buffer_logical_address:#x}" + ); + ensure!( + size_ptr_physical_address_block.valid != 0, + "Invalid linear address found in magic start size register {size_ptr_register_number}: {size_ptr_logical_address:#x}" ); - let physical_address_block = self + let size_size = if let Some(width) = Self::POINTER_WIDTH_OVERRIDE { + width + } else { + self.processor_info_v2().get_logical_address_width()? / u8::BITS as i32 + }; + + let size = read_phys_memory( + self.cpu(), + size_ptr_physical_address_block.address, + size_size, + )?; + + let contents = (0..size) + .map(|i| { + read_byte( + self.processor_info_v2().get_physical_memory()?, + buffer_physical_address_block.address + i, + ) + .map_err(|e| { + anyhow!( + "Failed to read byte at {:#x}: {}", + buffer_physical_address_block.address + i, + e + ) + }) + }) + .collect::>>()?; + + Ok(StartInfo::builder() + .address( + if buffer_physical_address_block.address != buffer_logical_address { + StartPhysicalAddress::WasVirtual(buffer_physical_address_block.address) + } else { + StartPhysicalAddress::WasPhysical(buffer_physical_address_block.address) + }, + ) + .contents(contents) + .size(StartSize::SizePtr { + address: if size_ptr_physical_address_block.address != size_ptr_logical_address { + StartPhysicalAddress::WasVirtual(size_ptr_physical_address_block.address) + } else { + StartPhysicalAddress::WasPhysical(size_ptr_physical_address_block.address) + }, + maximum_size: size as usize, + }) + .build()) + } + + /// Get the magic start information from the harness which takes the arguments: + /// + /// - buffer: The address of the buffer containing the testcase + /// - size_val: The maximum size of the testcase + fn get_magic_start_buffer_ptr_size_val(&mut self) -> Result { + let buffer_register_number = self + .int_register() + .get_number(Self::ARGUMENT_REGISTER_0.as_raw_cstr()?)?; + let size_val_register_number = self + .int_register() + .get_number(Self::ARGUMENT_REGISTER_1.as_raw_cstr()?)?; + let buffer_logical_address = self.int_register().read(buffer_register_number)?; + let size_val = self.int_register().read(size_val_register_number)?; + let buffer_physical_address_block = self .processor_info_v2() - // NOTE: Do we need to support segmented memory via logical_to_physical? - .logical_to_physical(logical_address, Access::Sim_Access_Read)?; + .logical_to_physical(buffer_logical_address, Access::Sim_Access_Read)?; - // NOTE: -1 signals no valid mapping, but this is equivalent to u64::MAX - if physical_address_block.valid == 0 { - bail!("Invalid linear address found in magic start buffer register {number}: {logical_address:#x}"); - } else { - trace!( - get_object(CLASS_NAME)?, - "Got physical address {:#x} from logical address", - physical_address_block.address - ); - Ok(StartBuffer::builder() - .physical_address(physical_address_block.address) - .virt(physical_address_block.address != logical_address) - .build()) - } + ensure!( + buffer_physical_address_block.valid != 0, + "Invalid linear address found in magic start buffer register {buffer_register_number}: {buffer_logical_address:#x}" + ); + + let contents = (0..size_val) + .map(|i| { + read_byte( + self.processor_info_v2().get_physical_memory()?, + buffer_physical_address_block.address + i, + ) + .map_err(|e| { + anyhow!( + "Failed to read byte at {:#x}: {}", + buffer_physical_address_block.address + i, + e + ) + }) + }) + .collect::>>()?; + + Ok(StartInfo::builder() + .address( + if buffer_physical_address_block.address != buffer_logical_address { + StartPhysicalAddress::WasVirtual(buffer_physical_address_block.address) + } else { + StartPhysicalAddress::WasPhysical(buffer_physical_address_block.address) + }, + ) + .contents(contents) + .size(StartSize::MaxSize(size_val as usize)) + .build()) } - /// Returns the memory pointed to by the magic start functionality containing the maximum - /// size of an input testcase - fn get_magic_start_size(&mut self) -> Result { - let number = self + + /// Get the magic start information from the harness which takes the arguments: + /// + /// - buffer: The address of the buffer containing the testcase + /// - size_ptr: A pointer to a pointer-sized variable to which the size is written + /// - size_val: The maximum size of the testcase + fn get_magic_start_buffer_ptr_size_ptr_val(&mut self) -> Result { + let buffer_register_number = self .int_register() - .get_number(Self::DEFAULT_TESTCASE_SIZE_REGISTER_NAME.as_raw_cstr()?)?; - let logical_address = self.int_register().read(number)?; - let physical_address_block = self + .get_number(Self::ARGUMENT_REGISTER_0.as_raw_cstr()?)?; + let size_ptr_register_number = self + .int_register() + .get_number(Self::ARGUMENT_REGISTER_1.as_raw_cstr()?)?; + let size_val_register_number = self + .int_register() + .get_number(Self::ARGUMENT_REGISTER_2.as_raw_cstr()?)?; + + let buffer_logical_address = self.int_register().read(buffer_register_number)?; + let size_ptr_logical_address = self.int_register().read(size_ptr_register_number)?; + let size_val = self.int_register().read(size_val_register_number)?; + + let buffer_physical_address_block = self .processor_info_v2() - // NOTE: Do we need to support segmented memory via logical_to_physical? - .logical_to_physical(logical_address, Access::Sim_Access_Read)?; + .logical_to_physical(buffer_logical_address, Access::Sim_Access_Read)?; - // NOTE: -1 signals no valid mapping, but this is equivalent to u64::MAX - if physical_address_block.valid == 0 { - bail!("Invalid linear address found in magic start buffer register {number}: {logical_address:#x}"); - } + let size_ptr_physical_address_block = self + .processor_info_v2() + .logical_to_physical(size_ptr_logical_address, Access::Sim_Access_Read)?; - let size_size = self.processor_info_v2().get_logical_address_width()? / u8::BITS as i32; - let size = read_phys_memory(self.cpu(), physical_address_block.address, size_size)?; + ensure!( + buffer_physical_address_block.valid != 0, + "Invalid linear address found in magic start buffer register {buffer_register_number}: {buffer_logical_address:#x}" + ); + ensure!( + size_ptr_physical_address_block.valid != 0, + "Invalid linear address found in magic start size register {size_ptr_register_number}: {size_ptr_logical_address:#x}" + ); - Ok(StartSize::builder() - .physical_address(( - physical_address_block.address, - physical_address_block.address != logical_address, - )) - .initial_size(size) + let contents = (0..size_val) + .map(|i| { + read_byte( + self.processor_info_v2().get_physical_memory()?, + buffer_physical_address_block.address + i, + ) + .map_err(|e| { + anyhow!( + "Failed to read byte at {:#x}: {}", + buffer_physical_address_block.address + i, + e + ) + }) + }) + .collect::>>()?; + + Ok(StartInfo::builder() + .address( + if buffer_physical_address_block.address != buffer_logical_address { + StartPhysicalAddress::WasVirtual(buffer_physical_address_block.address) + } else { + StartPhysicalAddress::WasPhysical(buffer_physical_address_block.address) + }, + ) + .contents(contents) + .size(StartSize::SizePtrAndMaxSize { + address: if size_ptr_physical_address_block.address != size_ptr_logical_address { + StartPhysicalAddress::WasVirtual(size_ptr_physical_address_block.address) + } else { + StartPhysicalAddress::WasPhysical(size_ptr_physical_address_block.address) + }, + maximum_size: size_val as usize, + }) .build()) } /// Returns the address and whether the address is virtual for the testcase buffer used by /// the manual start functionality - fn get_manual_start_buffer( - &mut self, - buffer_address: GenericAddress, - virt: bool, - ) -> Result { - let physical_address = if virt { + fn get_manual_start_info(&mut self, info: &ManualStartInfo) -> Result { + let buffer_physical_address = if matches!(info.address, ManualStartAddress::Virtual(_)) { let physical_address_block = self .processor_info_v2() // NOTE: Do we need to support segmented memory via logical_to_physical? - .logical_to_physical(buffer_address, Access::Sim_Access_Read)?; + .logical_to_physical( + match info.address { + ManualStartAddress::Virtual(address) => address, + ManualStartAddress::Physical(address) => address, + }, + Access::Sim_Access_Read, + )?; if physical_address_block.valid == 0 { bail!( - "Invalid linear address for given buffer address {:#x}", - buffer_address + "Invalid linear address for given buffer address {:?}", + info.address ); } physical_address_block.address } else { - buffer_address + info.address.address() }; - Ok(StartBuffer::builder() - .physical_address(physical_address) - .virt(physical_address != buffer_address) - .build()) - } - - /// Returns the initial start size for non-magic instructions by reading it from a given - /// (possibly virtual) address - fn get_manual_start_size( - &mut self, - size_address: GenericAddress, - virt: bool, - ) -> Result { - let physical_address = if virt { - let physical_address_block = self - .processor_info_v2() - // NOTE: Do we need to support segmented memory via logical_to_physical? - .logical_to_physical(size_address, Access::Sim_Access_Read)?; - - if physical_address_block.valid == 0 { - bail!("Invalid linear address given for start buffer : {size_address:#x}"); + let address = StartPhysicalAddress::WasPhysical(buffer_physical_address); + + let size = match &info.size { + crate::ManualStartSize::SizePtr { address } => { + let address = match address { + ManualStartAddress::Virtual(v) => { + let physical_address = self + .processor_info_v2() + .logical_to_physical(*v, Access::Sim_Access_Read)?; + + if physical_address.valid == 0 { + bail!("Invalid linear address given for start buffer : {v:#x}"); + } + + StartPhysicalAddress::WasVirtual(physical_address.address) + } + ManualStartAddress::Physical(p) => StartPhysicalAddress::WasPhysical(*p), + }; + + let size_size = if let Some(width) = Self::POINTER_WIDTH_OVERRIDE { + width + } else { + self.processor_info_v2().get_logical_address_width()? / u8::BITS as i32 + }; + let maximum_size = + read_phys_memory(self.cpu(), address.physical_address(), size_size)?; + StartSize::SizePtr { + address, + maximum_size: maximum_size as usize, + } + } + crate::ManualStartSize::MaxSize(maximum_size) => StartSize::MaxSize(*maximum_size), + crate::ManualStartSize::SizePtrAndMaxSize { + address, + maximum_size, + } => { + let address = match address { + ManualStartAddress::Virtual(v) => { + let physical_address = self + .processor_info_v2() + .logical_to_physical(*v, Access::Sim_Access_Read)?; + + if physical_address.valid == 0 { + bail!("Invalid linear address given for start buffer : {v:#x}"); + } + + StartPhysicalAddress::WasVirtual(physical_address.address) + } + ManualStartAddress::Physical(p) => StartPhysicalAddress::WasPhysical(*p), + }; + + StartSize::SizePtrAndMaxSize { + address, + maximum_size: *maximum_size, + } } - - physical_address_block.address - } else { - size_address }; - let size_size = self.processor_info_v2().get_logical_address_width()? / u8::BITS as i32; - let size = read_phys_memory(self.cpu(), physical_address, size_size)?; - - Ok(StartSize::builder() - .physical_address((physical_address, physical_address != size_address)) - .initial_size(size) + let contents = (0..size.maximum_size()) + .map(|i| { + read_byte( + self.processor_info_v2().get_physical_memory()?, + buffer_physical_address + i as u64, + ) + .map_err(|e| { + anyhow!( + "Failed to read byte at {:#x}: {}", + buffer_physical_address + i as u64, + e + ) + }) + }) + .collect::>>()?; + + Ok(StartInfo::builder() + .address(address) + .contents(contents) + .size(size) .build()) } - /// Writes the buffer with a testcase of a certain size - fn write_start( - &mut self, - testcase: &[u8], - buffer: &StartBuffer, - size: &StartSize, - ) -> Result<()> { + fn write_start(&mut self, testcase: &[u8], info: &StartInfo) -> Result<()> { let mut testcase = testcase.to_vec(); // NOTE: We have to handle both riscv64 and riscv32 here let addr_size = self.processor_info_v2().get_logical_address_width()? as usize / u8::BITS as usize; - let initial_size = - size.initial_size - .ok_or_else(|| anyhow!("Expected initial size for start"))? as usize; let physical_memory = self.processor_info_v2().get_physical_memory()?; - trace!( - get_object(CLASS_NAME)?, - "Truncating testcase to {initial_size} bytes (from {} bytes)", - testcase.len() - ); - - testcase.truncate(initial_size); + testcase.truncate(info.size.maximum_size()); testcase.iter().enumerate().try_for_each(|(i, c)| { - let physical_address = buffer.physical_address + (i as u64); + let physical_address = info.address.physical_address() + (i as u64); write_byte(physical_memory, physical_address, *c) })?; - if let Some((address, _)) = size.physical_address { + if let Some(size_address) = info.size.physical_address().map(|s| s.physical_address()) { testcase .len() .to_le_bytes() @@ -311,14 +485,9 @@ pub trait ArchitectureOperations { .take(addr_size) .enumerate() .try_for_each(|(i, c)| { - let physical_address = address + (i as u64); + let physical_address = size_address + (i as u64); write_byte(physical_memory, physical_address, *c) })?; - } else { - trace!( - get_object(CLASS_NAME)?, - "Not writing testcase size, no physical address saved for size" - ); } Ok(()) @@ -329,8 +498,10 @@ pub trait ArchitectureOperations { } impl ArchitectureOperations for Architecture { - const DEFAULT_TESTCASE_AREA_REGISTER_NAME: &'static str = ""; - const DEFAULT_TESTCASE_SIZE_REGISTER_NAME: &'static str = ""; + const INDEX_SELECTOR_REGISTER: &'static str = ""; + const ARGUMENT_REGISTER_0: &'static str = ""; + const ARGUMENT_REGISTER_1: &'static str = ""; + const ARGUMENT_REGISTER_2: &'static str = ""; fn new(cpu: *mut ConfObject) -> Result where @@ -403,56 +574,51 @@ impl ArchitectureOperations for Architecture { } } - fn get_magic_start_buffer(&mut self) -> Result { + fn get_magic_index_selector(&mut self) -> Result { + match self { + Architecture::X86_64(x86_64) => x86_64.get_magic_index_selector(), + Architecture::I386(i386) => i386.get_magic_index_selector(), + Architecture::Riscv(riscv) => riscv.get_magic_index_selector(), + } + } + + fn get_magic_start_buffer_ptr_size_ptr(&mut self) -> Result { match self { - Architecture::X86_64(x86_64) => x86_64.get_magic_start_buffer(), - Architecture::I386(i386) => i386.get_magic_start_buffer(), - Architecture::Riscv(riscv) => riscv.get_magic_start_buffer(), + Architecture::X86_64(x86_64) => x86_64.get_magic_start_buffer_ptr_size_ptr(), + Architecture::I386(i386) => i386.get_magic_start_buffer_ptr_size_ptr(), + Architecture::Riscv(riscv) => riscv.get_magic_start_buffer_ptr_size_ptr(), } } - fn get_magic_start_size(&mut self) -> Result { + fn get_magic_start_buffer_ptr_size_val(&mut self) -> Result { match self { - Architecture::X86_64(x86_64) => x86_64.get_magic_start_size(), - Architecture::I386(i386) => i386.get_magic_start_size(), - Architecture::Riscv(riscv) => riscv.get_magic_start_size(), + Architecture::X86_64(x86_64) => x86_64.get_magic_start_buffer_ptr_size_val(), + Architecture::I386(i386) => i386.get_magic_start_buffer_ptr_size_val(), + Architecture::Riscv(riscv) => riscv.get_magic_start_buffer_ptr_size_val(), } } - fn get_manual_start_buffer( - &mut self, - buffer_address: GenericAddress, - virt: bool, - ) -> Result { + fn get_magic_start_buffer_ptr_size_ptr_val(&mut self) -> Result { match self { - Architecture::X86_64(x86_64) => x86_64.get_manual_start_buffer(buffer_address, virt), - Architecture::I386(i386) => i386.get_manual_start_buffer(buffer_address, virt), - Architecture::Riscv(riscv) => riscv.get_manual_start_buffer(buffer_address, virt), + Architecture::X86_64(x86_64) => x86_64.get_magic_start_buffer_ptr_size_ptr(), + Architecture::I386(i386) => i386.get_magic_start_buffer_ptr_size_ptr(), + Architecture::Riscv(riscv) => riscv.get_magic_start_buffer_ptr_size_ptr(), } } - fn get_manual_start_size( - &mut self, - size_address: GenericAddress, - virt: bool, - ) -> Result { + fn get_manual_start_info(&mut self, info: &ManualStartInfo) -> Result { match self { - Architecture::X86_64(x86_64) => x86_64.get_manual_start_size(size_address, virt), - Architecture::I386(i386) => i386.get_manual_start_size(size_address, virt), - Architecture::Riscv(riscv) => riscv.get_manual_start_size(size_address, virt), + Architecture::X86_64(x86_64) => x86_64.get_manual_start_info(info), + Architecture::I386(i386) => i386.get_manual_start_info(info), + Architecture::Riscv(riscv) => riscv.get_manual_start_info(info), } } - fn write_start( - &mut self, - testcase: &[u8], - buffer: &StartBuffer, - size: &StartSize, - ) -> Result<()> { + fn write_start(&mut self, testcase: &[u8], info: &StartInfo) -> Result<()> { match self { - Architecture::X86_64(x86_64) => x86_64.write_start(testcase, buffer, size), - Architecture::I386(i386) => i386.write_start(testcase, buffer, size), - Architecture::Riscv(riscv) => riscv.write_start(testcase, buffer, size), + Architecture::X86_64(x86_64) => x86_64.write_start(testcase, info), + Architecture::I386(i386) => i386.write_start(testcase, info), + Architecture::Riscv(riscv) => riscv.write_start(testcase, info), } } diff --git a/src/arch/risc_v.rs b/src/arch/risc_v.rs index 8a64ae35..aee0cb33 100644 --- a/src/arch/risc_v.rs +++ b/src/arch/risc_v.rs @@ -22,17 +22,6 @@ use crate::{ use super::ArchitectureOperations; -/// The default register the fuzzer expects to contain a pointer to an area to write -/// each testcase into when using an in-target harness. This is AKA a0 but we use x10 as the -/// canonical name -pub const DEFAULT_TESTCASE_AREA_REGISTER_NAME: &str = "x10"; -/// The default register the fuzzer expects to contain a pointer to a variable, -/// initially containing the maximum size of the area pointed to by -/// `DEFAULT_TESTCASE_AREA_REGISTER_NAME`, which will be written each fuzzer execution -/// to contain the actual size of the current testcase. This is AKA a1 but we use x11 as the -/// canonical name -pub const DEFAULT_TESTCASE_SIZE_REGISTER_NAME: &str = "x11"; - pub(crate) struct RISCVArchitectureOperations { cpu: *mut ConfObject, disassembler: Disassembler, @@ -44,8 +33,13 @@ pub(crate) struct RISCVArchitectureOperations { } impl ArchitectureOperations for RISCVArchitectureOperations { - const DEFAULT_TESTCASE_AREA_REGISTER_NAME: &'static str = DEFAULT_TESTCASE_AREA_REGISTER_NAME; - const DEFAULT_TESTCASE_SIZE_REGISTER_NAME: &'static str = DEFAULT_TESTCASE_SIZE_REGISTER_NAME; + const INDEX_SELECTOR_REGISTER: &'static str = "x10"; + + const ARGUMENT_REGISTER_0: &'static str = "x11"; + + const ARGUMENT_REGISTER_1: &'static str = "x12"; + + const ARGUMENT_REGISTER_2: &'static str = "x13"; fn new(cpu: *mut ConfObject) -> Result { let mut processor_info_v2: ProcessorInfoV2Interface = get_interface(cpu)?; diff --git a/src/arch/x86.rs b/src/arch/x86.rs index 5cba75c2..21a4add0 100644 --- a/src/arch/x86.rs +++ b/src/arch/x86.rs @@ -9,30 +9,21 @@ use super::ArchitectureOperations; use crate::{ tracer::{CmpExpr, CmpType, CmpValue, TraceEntry}, traits::TracerDisassembler, - StartBuffer, StartSize, CLASS_NAME, + CLASS_NAME, }; use anyhow::{anyhow, bail, Error, Result}; use libafl::prelude::CmpValues; use raw_cstr::AsRawCstr; use simics::{ api::{ - get_interface, get_object, read_phys_memory, sys::instruction_handle_t, write_byte, Access, - ConfObject, CpuInstructionQueryInterface, CpuInstrumentationSubscribeInterface, - CycleInterface, GenericAddress, IntRegisterInterface, ProcessorInfoV2Interface, + get_interface, get_object, read_phys_memory, sys::instruction_handle_t, Access, ConfObject, + CpuInstructionQueryInterface, CpuInstrumentationSubscribeInterface, CycleInterface, + IntRegisterInterface, ProcessorInfoV2Interface, }, trace, }; use yaxpeax_x86::protected_mode::{ConditionCode, InstDecoder, Instruction, Opcode, Operand}; -/// The default register the fuzzer expects to contain a pointer to an area to write -/// each testcase into when using an in-target harness -pub const DEFAULT_TESTCASE_AREA_REGISTER_NAME: &str = "edi"; -/// The default register the fuzzer expects to contain a pointer to a variable, -/// initially containing the maximum size of the area pointed to by -/// `DEFAULT_TESTCASE_AREA_REGISTER_NAME`, which will be written each fuzzer execution -/// to contain the actual size of the current testcase. -pub const DEFAULT_TESTCASE_SIZE_REGISTER_NAME: &str = "esi"; - pub(crate) struct X86ArchitectureOperations { cpu: *mut ConfObject, disassembler: Disassembler, @@ -44,8 +35,11 @@ pub(crate) struct X86ArchitectureOperations { } impl ArchitectureOperations for X86ArchitectureOperations { - const DEFAULT_TESTCASE_AREA_REGISTER_NAME: &'static str = DEFAULT_TESTCASE_AREA_REGISTER_NAME; - const DEFAULT_TESTCASE_SIZE_REGISTER_NAME: &'static str = DEFAULT_TESTCASE_SIZE_REGISTER_NAME; + const INDEX_SELECTOR_REGISTER: &'static str = "edi"; + const ARGUMENT_REGISTER_0: &'static str = "esi"; + const ARGUMENT_REGISTER_1: &'static str = "edx"; + const ARGUMENT_REGISTER_2: &'static str = "ecx"; + const POINTER_WIDTH_OVERRIDE: Option = Some(4); fn new(cpu: *mut ConfObject) -> Result { let mut processor_info_v2: ProcessorInfoV2Interface = get_interface(cpu)?; @@ -172,223 +166,6 @@ impl ArchitectureOperations for X86ArchitectureOperations { &mut self.cycle } - /// Returns the address and whether the address is virtual for the testcase buffer used by - /// the magic start functionality - fn get_magic_start_buffer(&mut self) -> Result { - let number = self - .int_register() - .get_number(Self::DEFAULT_TESTCASE_AREA_REGISTER_NAME.as_raw_cstr()?)?; - trace!( - get_object(CLASS_NAME)?, - "Got number {} for register {}", - number, - Self::DEFAULT_TESTCASE_AREA_REGISTER_NAME - ); - - let logical_address = self.int_register().read(number)?; - trace!( - get_object(CLASS_NAME)?, - "Got logical address {:#x} from register", - logical_address - ); - - let physical_address_block = self - .processor_info_v2() - // NOTE: Do we need to support segmented memory via logical_to_physical? - .logical_to_physical(logical_address, Access::Sim_Access_Read)?; - - // NOTE: -1 signals no valid mapping, but this is equivalent to u64::MAX - if physical_address_block.valid == 0 { - bail!("Invalid linear address found in magic start buffer register {number}: {logical_address:#x}"); - } else { - trace!( - get_object(CLASS_NAME)?, - "Got physical address {:#x} from logical address", - physical_address_block.address - ); - Ok(StartBuffer::builder() - .physical_address(physical_address_block.address) - .virt(physical_address_block.address != logical_address) - .build()) - } - } - - // NOTE: Manual implementation because we must ensure we set the width to 4 bytes - // instead of 6 for misreporting/hinted architectures - fn get_magic_start_size(&mut self) -> Result { - let number = self - .int_register() - .get_number(Self::DEFAULT_TESTCASE_SIZE_REGISTER_NAME.as_raw_cstr()?)?; - trace!( - get_object(CLASS_NAME)?, - "Got number {} for register {}", - number, - Self::DEFAULT_TESTCASE_SIZE_REGISTER_NAME - ); - let logical_address = self.int_register().read(number)?; - trace!( - get_object(CLASS_NAME)?, - "Got logical address {:#x} from register", - logical_address - ); - let physical_address_block = self - .processor_info_v2() - // NOTE: Do we need to support segmented memory via logical_to_physical? - .logical_to_physical(logical_address, Access::Sim_Access_Read)?; - trace!( - get_object(CLASS_NAME)?, - "Got physical address {:#x} from logical address", - physical_address_block.address - ); - - // NOTE: -1 signals no valid mapping, but this is equivalent to u64::MAX - if physical_address_block.valid == 0 { - bail!("Invalid linear address found in magic start buffer register {number}: {logical_address:#x}"); - } - - let size = read_phys_memory(self.cpu(), physical_address_block.address, 4)?; - - trace!( - get_object(CLASS_NAME)?, - "Read start size {size} from start size address" - ); - - Ok(StartSize::builder() - .physical_address(( - physical_address_block.address, - physical_address_block.address != logical_address, - )) - .initial_size(size) - .build()) - } - - fn get_manual_start_buffer( - &mut self, - buffer_address: GenericAddress, - virt: bool, - ) -> Result { - let physical_address = if virt { - let physical_address_block = self - .processor_info_v2() - // NOTE: Do we need to support segmented memory via logical_to_physical? - .logical_to_physical(buffer_address, Access::Sim_Access_Read)?; - - if physical_address_block.valid == 0 { - bail!( - "Invalid linear address for given buffer address {:#x}", - buffer_address - ); - } - physical_address_block.address - } else { - buffer_address - }; - - trace!( - get_object(CLASS_NAME)?, - "Got physical address {:#x} from logical address for manual start buffer", - physical_address - ); - Ok(StartBuffer::builder() - .physical_address(physical_address) - .virt(physical_address != buffer_address) - .build()) - } - - /// Returns the initial start size for non-magic instructions by reading it from a given - /// (possibly virtual) address - fn get_manual_start_size( - &mut self, - size_address: GenericAddress, - virt: bool, - ) -> Result { - let physical_address = if virt { - let physical_address_block = self - .processor_info_v2() - // NOTE: Do we need to support segmented memory via logical_to_physical? - .logical_to_physical(size_address, Access::Sim_Access_Read)?; - - if physical_address_block.valid == 0 { - bail!("Invalid linear address given for start buffer : {size_address:#x}"); - } - physical_address_block.address - } else { - size_address - }; - - trace!( - get_object(CLASS_NAME)?, - "Got physical address {:#x} from logical address for manual start buffer size", - physical_address - ); - - let size = read_phys_memory(self.cpu(), physical_address, 4)?; - - trace!( - get_object(CLASS_NAME)?, - "Read start size {size} from start size address" - ); - - Ok(StartSize::builder() - .physical_address((physical_address, physical_address != size_address)) - .initial_size(size) - .build()) - } - - /// Writes the buffer with a testcase of a certain size - fn write_start( - &mut self, - testcase: &[u8], - buffer: &StartBuffer, - size: &StartSize, - ) -> Result<()> { - let mut testcase = testcase.to_vec(); - let physical_memory = self.processor_info_v2().get_physical_memory()?; - - let initial_size = - size.initial_size - .ok_or_else(|| anyhow!("Expected initial size for start"))? as usize; - - trace!( - get_object(CLASS_NAME)?, - "Truncating testcase to {initial_size} bytes (from {} bytes)", - testcase.len() - ); - - testcase.truncate(initial_size); - - testcase.iter().enumerate().try_for_each(|(i, c)| { - let physical_address = buffer.physical_address + (i as u64); - trace!( - get_object(CLASS_NAME)?, - "Writing testcase byte {:?} to physical memory {:#x}", - c, - physical_address - ); - write_byte(physical_memory, physical_address, *c) - })?; - - if let Some((address, _)) = size.physical_address { - testcase - .len() - .to_le_bytes() - .iter() - .take(4) - .enumerate() - .try_for_each(|(i, c)| { - let physical_address = address + (i as u64); - write_byte(physical_memory, physical_address, *c) - })?; - } else { - trace!( - get_object(CLASS_NAME)?, - "Not writing testcase size, no physical address saved for size" - ); - } - - Ok(()) - } - fn trace_pc(&mut self, instruction_query: *mut instruction_handle_t) -> Result { let instruction_bytes = self .cpu_instruction_query diff --git a/src/arch/x86_64.rs b/src/arch/x86_64.rs index 74fa47cd..9d756450 100644 --- a/src/arch/x86_64.rs +++ b/src/arch/x86_64.rs @@ -21,15 +21,6 @@ use yaxpeax_x86::amd64::{ConditionCode, InstDecoder, Instruction, Opcode, Operan use super::ArchitectureOperations; -/// The default register the fuzzer expects to contain a pointer to an area to write -/// each testcase into when using an in-target harness -pub const DEFAULT_TESTCASE_AREA_REGISTER_NAME: &str = "rdi"; -/// The default register the fuzzer expects to contain a pointer to a variable, -/// initially containing the maximum size of the area pointed to by -/// `DEFAULT_TESTCASE_AREA_REGISTER_NAME`, which will be written each fuzzer execution -/// to contain the actual size of the current testcase. -pub const DEFAULT_TESTCASE_SIZE_REGISTER_NAME: &str = "rsi"; - pub(crate) struct X86_64ArchitectureOperations { cpu: *mut ConfObject, disassembler: Disassembler, @@ -41,8 +32,10 @@ pub(crate) struct X86_64ArchitectureOperations { } impl ArchitectureOperations for X86_64ArchitectureOperations { - const DEFAULT_TESTCASE_AREA_REGISTER_NAME: &'static str = DEFAULT_TESTCASE_AREA_REGISTER_NAME; - const DEFAULT_TESTCASE_SIZE_REGISTER_NAME: &'static str = DEFAULT_TESTCASE_SIZE_REGISTER_NAME; + const INDEX_SELECTOR_REGISTER: &'static str = "rdi"; + const ARGUMENT_REGISTER_0: &'static str = "rsi"; + const ARGUMENT_REGISTER_1: &'static str = "rdx"; + const ARGUMENT_REGISTER_2: &'static str = "rcx"; fn new(cpu: *mut ConfObject) -> Result { let mut processor_info_v2: ProcessorInfoV2Interface = get_interface(cpu)?; diff --git a/src/fuzzer/mod.rs b/src/fuzzer/mod.rs index 5374b825..3da5c2f9 100644 --- a/src/fuzzer/mod.rs +++ b/src/fuzzer/mod.rs @@ -10,7 +10,7 @@ use crate::{ use anyhow::{anyhow, Result}; use libafl::{ feedback_or, feedback_or_fast, - inputs::HasBytesVec, + inputs::{HasBytesVec, Input}, prelude::{ havoc_mutations, ondisk::OnDiskMetadataFormat, tokens_mutations, AFLppRedQueen, BytesInput, CachedOnDiskCorpus, Corpus, CrashFeedback, ExitKind, HasCurrentCorpusIdx, HasTargetBytes, @@ -37,10 +37,10 @@ use libafl_bolts::{ AsMutSlice, AsSlice, }; use libafl_targets::{AFLppCmpLogObserver, AFLppCmplogTracingStage}; -use simics::{api::AsConfObject, debug, warn}; +use simics::{api::AsConfObject, debug, trace, warn}; use std::{ - cell::RefCell, fmt::Debug, io::stderr, slice::from_raw_parts_mut, sync::mpsc::channel, - thread::spawn, time::Duration, + cell::RefCell, fmt::Debug, fs::write, io::stderr, slice::from_raw_parts_mut, + sync::mpsc::channel, thread::spawn, time::Duration, }; use tokenize::{tokenize_executable_file, tokenize_src_file}; use tracing::{level_filters::LevelFilter, Level}; @@ -181,6 +181,14 @@ impl Tsffs { let initial_random_corpus_size = self.initial_random_corpus_size; let executor_timeout = self.executor_timeout; let debug_log_libafl = self.debug_log_libafl; + let initial_contents = self + .use_initial_as_corpus + .then(|| { + self.start_info + .get() + .map(|si| BytesInput::new(si.contents.clone())) + }) + .flatten(); // NOTE: We do *not* use `run_in_thread` because it causes the fuzzer to block when HAPs arrive // which prevents forward progress. @@ -418,6 +426,13 @@ impl Tsffs { anyhow!("Couldn't initialize fuzzer dump to disk stage: {e}") })?; + if let Some(contents) = initial_contents { + write( + corpus_directory.join(contents.generate_name(0)), + contents.bytes(), + )?; + } + if state.must_load_initial_inputs() { state .load_initial_inputs( @@ -565,6 +580,24 @@ impl Tsffs { .map_err(|e| anyhow!("Error receiving from fuzzer: {e}"))? }; + if self.keep_all_corpus { + let testcase_name = testcase.testcase.generate_name(0); + trace!( + self.as_conf_object(), + "Writing testcase {}.testcase to corpus directory: {}", + &testcase_name, + self.corpus_directory.display() + ); + + write( + self.corpus_directory + .join(format!("{}.testcase", &testcase_name)), + testcase.testcase.bytes(), + )?; + } + + self.cmplog_enabled = testcase.cmplog; + debug!(self.as_conf_object(), "Testcase: {testcase:?}"); Ok(testcase) diff --git a/src/haps/mod.rs b/src/haps/mod.rs index 95e08225..c8b56397 100644 --- a/src/haps/mod.rs +++ b/src/haps/mod.rs @@ -7,292 +7,438 @@ use std::time::SystemTime; use crate::{ arch::ArchitectureOperations, - state::{MagicStart, ManualStartSize, Solution, SolutionKind, Stop, StopReason}, - StartSize, Tsffs, + magic::MagicNumber, + state::{SolutionKind, StopReason}, + ManualStartInfo, Tsffs, }; -use anyhow::{anyhow, Result}; +use anyhow::{anyhow, bail, Result}; use libafl::prelude::ExitKind; use simics::{ api::{ continue_simulation, log_level, object_is_processor, quit, run_alone, set_log_level, AsConfObject, ConfObject, GenericTransaction, LogLevel, }, - debug, info, trace, warn, + debug, get_processor_number, info, trace, warn, }; impl Tsffs { - /// Called on core simulation stopped HAP - pub fn on_simulation_stopped(&mut self) -> Result<()> { - if self.stopped_for_repro { - // If we are stopped for repro, we do nothing on this HAP! - return Ok(()); + fn on_simulation_stopped_magic_start(&mut self, magic_number: MagicNumber) -> Result<()> { + if !self.have_initial_snapshot() { + self.start_fuzzer_thread()?; + + let start_processor = self + .start_processor() + .ok_or_else(|| anyhow!("No start processor"))?; + + let start_info = match magic_number { + MagicNumber::StartBufferPtrSizePtr => { + start_processor.get_magic_start_buffer_ptr_size_ptr()? + } + MagicNumber::StartBufferPtrSizeVal => { + start_processor.get_magic_start_buffer_ptr_size_val()? + } + MagicNumber::StartBufferPtrSizePtrVal => { + start_processor.get_magic_start_buffer_ptr_size_ptr_val()? + } + MagicNumber::StopNormal => unreachable!("StopNormal is not handled here"), + MagicNumber::StopAssert => unreachable!("StopAssert is not handled here"), + }; + + debug!(self.as_conf_object(), "Start info: {start_info:?}"); + + self.start_info + .set(start_info) + .map_err(|_| anyhow!("Failed to set start size"))?; + self.start_time + .set(SystemTime::now()) + .map_err(|_| anyhow!("Failed to set start time"))?; + self.coverage_enabled = true; + self.save_initial_snapshot()?; + self.get_and_write_testcase()?; + self.post_timeout_event()?; } - self.log_messages()?; + self.save_repro_bookmark_if_needed()?; - if let Some(reason) = self.stop_reason.take() { - debug!(self.as_conf_object(), "on_simulation_stopped({reason:?})"); - - match reason { - StopReason::MagicStart(magic_start) => { - if !self.have_initial_snapshot() { - self.start_fuzzer_thread()?; - self.add_processor(magic_start.processor, true)?; - - let (start_buffer, start_size) = { - let start_processor = self - .start_processor() - .ok_or_else(|| anyhow!("No start processor"))?; - ( - start_processor.get_magic_start_buffer()?, - start_processor.get_magic_start_size()?, - ) - }; - - debug!( - self.as_conf_object(), - "Start buffer: {start_buffer:?} Start size: {start_size:?}" - ); - - self.start_buffer - .set(start_buffer) - .map_err(|_| anyhow!("Failed to set start buffer"))?; - self.start_size - .set(start_size) - .map_err(|_| anyhow!("Failed to set start size"))?; - self.start_time - .set(SystemTime::now()) - .map_err(|_| anyhow!("Failed to set start time"))?; - self.coverage_enabled = true; - self.save_initial_snapshot()?; - self.get_and_write_testcase()?; - self.post_timeout_event()?; - } - - self.save_repro_bookmark_if_needed()?; + debug!(self.as_conf_object(), "Resuming simulation"); + + run_alone(|| { + continue_simulation(0)?; + Ok(()) + })?; + + Ok(()) + } + + fn on_simulation_stopped_magic_assert(&mut self) -> Result<()> { + self.on_simulation_stopped_solution(SolutionKind::Manual) + } + + fn on_simulation_stopped_magic_stop(&mut self) -> Result<()> { + if !self.have_initial_snapshot() { + warn!( + self.as_conf_object(), + "Stopped normally before start was reached (no snapshot). Resuming without restoring non-existent snapshot." + ); + } else { + self.cancel_timeout_event()?; + + if self.repro_bookmark_set { + self.stopped_for_repro = true; + let current_log_level = log_level(self.as_conf_object_mut())?; + + if current_log_level < LogLevel::Info as u32 { + set_log_level(self.as_conf_object_mut(), LogLevel::Info)?; } - StopReason::ManualStart(start) => { - if !self.have_initial_snapshot() { - self.start_fuzzer_thread()?; - self.add_processor(start.processor, true)?; - - let (mut start_buffer, mut start_size) = { - let start_processor = self - .start_processor() - .ok_or_else(|| anyhow!("No start processor"))?; - ( - if let Some(buffer) = start.buffer.as_ref() { - Some( - start_processor - .get_manual_start_buffer(*buffer, start.virt)?, - ) - } else { - None - }, - match start.size { - ManualStartSize::MaximumSize(s) => { - Some(StartSize::builder().initial_size(s).build()) - } - ManualStartSize::SizeAddress(a) => { - Some(start_processor.get_manual_start_size(a, start.virt)?) - } - ManualStartSize::NoSize => None, - }, - ) - }; - - debug!( - self.as_conf_object(), - "Start buffer: {start_buffer:?} Start size: {start_size:?}" - ); - - if let Some(start_buffer) = start_buffer.take() { - self.start_buffer - .set(start_buffer) - .map_err(|_| anyhow!("Failed to set start buffer"))?; - } - if let Some(start_size) = start_size.take() { - self.start_size - .set(start_size) - .map_err(|_| anyhow!("Failed to set start size"))?; - } - self.start_time - .set(SystemTime::now()) - .map_err(|_| anyhow!("Failed to set start time"))?; - self.coverage_enabled = true; - self.save_initial_snapshot()?; - - if self.start_buffer.get().is_some() && self.start_size.get().is_some() { - self.get_and_write_testcase()?; - } - - self.post_timeout_event()?; - } - - self.save_repro_bookmark_if_needed()?; + + info!( + self.as_conf_object(), + "Stopped for repro. Restore to start bookmark with 'reverse-to start'" + ); + + // Skip the shutdown and continue, we are finished here + return Ok(()); + } + + self.iterations += 1; + + if self.iteration_limit != 0 && self.iterations >= self.iteration_limit { + let duration = SystemTime::now().duration_since( + *self + .start_time + .get() + .ok_or_else(|| anyhow!("Start time was not set"))?, + )?; + + // Set the log level so this message always prints + set_log_level(self.as_conf_object_mut(), LogLevel::Info)?; + + info!( + self.as_conf_object(), + "Configured iteration count {} reached. Stopping after {} seconds ({} exec/s).", + self.iterations, + duration.as_secs_f32(), + self.iterations as f32 / duration.as_secs_f32() + ); + + self.send_shutdown()?; + + quit(0)?; + } + + let fuzzer_tx = self + .fuzzer_tx + .get() + .ok_or_else(|| anyhow!("No fuzzer tx channel"))?; + + fuzzer_tx.send(ExitKind::Ok)?; + + self.restore_initial_snapshot()?; + self.coverage_prev_loc = 0; + + if self.start_info.get().is_some() { + self.get_and_write_testcase()?; + } else { + debug!( + self.as_conf_object(), + "Missing start buffer or size, not writing testcase." + ); + } + + self.post_timeout_event()?; + } + + debug!(self.as_conf_object(), "Resuming simulation"); + + run_alone(|| { + continue_simulation(0)?; + Ok(()) + })?; + + Ok(()) + } + + fn on_simulation_stopped_with_magic(&mut self, magic_number: MagicNumber) -> Result<()> { + match magic_number { + MagicNumber::StartBufferPtrSizePtr + | MagicNumber::StartBufferPtrSizeVal + | MagicNumber::StartBufferPtrSizePtrVal => { + self.on_simulation_stopped_magic_start(magic_number)? + } + MagicNumber::StopNormal => self.on_simulation_stopped_magic_stop()?, + MagicNumber::StopAssert => self.on_simulation_stopped_magic_assert()?, + } + + Ok(()) + } + + fn on_simulation_stopped_with_manual_start( + &mut self, + processor: *mut ConfObject, + info: ManualStartInfo, + ) -> Result<()> { + if !self.have_initial_snapshot() { + self.start_fuzzer_thread()?; + self.add_processor(processor, true)?; + + let start_info = self + .start_processor() + .ok_or_else(|| anyhow!("No start processor"))? + .get_manual_start_info(&info)?; + + self.start_info + .set(start_info) + .map_err(|_| anyhow!("Failed to set start info"))?; + self.start_time + .set(SystemTime::now()) + .map_err(|_| anyhow!("Failed to set start time"))?; + self.coverage_enabled = true; + self.save_initial_snapshot()?; + + self.get_and_write_testcase()?; + + self.post_timeout_event()?; + } + + self.save_repro_bookmark_if_needed()?; + + debug!(self.as_conf_object(), "Resuming simulation"); + + run_alone(|| { + continue_simulation(0)?; + Ok(()) + })?; + + Ok(()) + } + + fn on_simulation_stopped_manual_start_without_buffer( + &mut self, + processor: *mut ConfObject, + ) -> Result<()> { + if !self.have_initial_snapshot() { + self.start_fuzzer_thread()?; + self.add_processor(processor, true)?; + + self.start_time + .set(SystemTime::now()) + .map_err(|_| anyhow!("Failed to set start time"))?; + self.coverage_enabled = true; + self.save_initial_snapshot()?; + + self.post_timeout_event()?; + } + + self.save_repro_bookmark_if_needed()?; + + debug!(self.as_conf_object(), "Resuming simulation"); + + run_alone(|| { + continue_simulation(0)?; + Ok(()) + })?; + + Ok(()) + } + + fn on_simulation_stopped_manual_stop(&mut self) -> Result<()> { + if !self.have_initial_snapshot() { + warn!( + self.as_conf_object(), + "Stopped for manual stop before start was reached (no snapshot). Resuming without restoring non-existent snapshot." + ); + } else { + self.cancel_timeout_event()?; + + if self.repro_bookmark_set { + self.stopped_for_repro = true; + let current_log_level = log_level(self.as_conf_object_mut())?; + + if current_log_level < LogLevel::Info as u32 { + set_log_level(self.as_conf_object_mut(), LogLevel::Info)?; } - StopReason::MagicStop(_) | StopReason::ManualStop(_) => { - if !self.have_initial_snapshot() { - warn!( - self.as_conf_object(), - "Stopped with {reason:?} before start was reached (no snapshot). Resuming without restoring non-existent snapshot." - ); - } else { - self.cancel_timeout_event()?; - - if self.repro_bookmark_set { - self.stopped_for_repro = true; - let current_log_level = log_level(self.as_conf_object_mut())?; - - if current_log_level < LogLevel::Info as u32 { - set_log_level(self.as_conf_object_mut(), LogLevel::Info)?; - } - - info!( - self.as_conf_object(), - "Stopped for repro. Restore to start bookmark with 'reverse-to start'" - ); - - // Skip the shutdown and continue, we are finished here - return Ok(()); - } - - self.iterations += 1; - - if self.iteration_limit != 0 && self.iterations >= self.iteration_limit { - let duration = SystemTime::now().duration_since( - *self - .start_time - .get() - .ok_or_else(|| anyhow!("Start time was not set"))?, - )?; - - // Set the log level so this message always prints - set_log_level(self.as_conf_object_mut(), LogLevel::Info)?; - - info!( - self.as_conf_object(), - "Configured iteration count {} reached. Stopping after {} seconds ({} exec/s).", - self.iterations, - duration.as_secs_f32(), - self.iterations as f32 / duration.as_secs_f32() - ); - - self.send_shutdown()?; - - quit(0)?; - } - - let fuzzer_tx = self - .fuzzer_tx - .get() - .ok_or_else(|| anyhow!("No fuzzer tx channel"))?; - - fuzzer_tx.send(ExitKind::Ok)?; - - self.restore_initial_snapshot()?; - self.coverage_prev_loc = 0; - - if self.start_buffer.get().is_some() && self.start_size.get().is_some() { - self.get_and_write_testcase()?; - } else { - debug!( - self.as_conf_object(), - "Missing start buffer or size, not writing testcase." - ); - } - self.post_timeout_event()?; - } + info!( + self.as_conf_object(), + "Stopped for repro. Restore to start bookmark with 'reverse-to start'" + ); + + // Skip the shutdown and continue, we are finished here + return Ok(()); + } + + self.iterations += 1; + + if self.iteration_limit != 0 && self.iterations >= self.iteration_limit { + let duration = SystemTime::now().duration_since( + *self + .start_time + .get() + .ok_or_else(|| anyhow!("Start time was not set"))?, + )?; + + // Set the log level so this message always prints + set_log_level(self.as_conf_object_mut(), LogLevel::Info)?; + + info!( + self.as_conf_object(), + "Configured iteration count {} reached. Stopping after {} seconds ({} exec/s).", + self.iterations, + duration.as_secs_f32(), + self.iterations as f32 / duration.as_secs_f32() + ); + + self.send_shutdown()?; + + quit(0)?; + } + + let fuzzer_tx = self + .fuzzer_tx + .get() + .ok_or_else(|| anyhow!("No fuzzer tx channel"))?; + + fuzzer_tx.send(ExitKind::Ok)?; + + self.restore_initial_snapshot()?; + self.coverage_prev_loc = 0; + + if self.start_info.get().is_some() { + self.get_and_write_testcase()?; + } else { + debug!( + self.as_conf_object(), + "Missing start buffer or size, not writing testcase. This may be due to using manual no-buffer harnessing." + ); + } + + self.post_timeout_event()?; + } + + debug!(self.as_conf_object(), "Resuming simulation"); + + run_alone(|| { + continue_simulation(0)?; + Ok(()) + })?; + + Ok(()) + } + + fn on_simulation_stopped_solution(&mut self, kind: SolutionKind) -> Result<()> { + if !self.have_initial_snapshot() { + warn!( + self.as_conf_object(), + "Solution {kind:?} before start was reached (no snapshot). Resuming without restoring non-existent snapshot." + ); + } else { + self.cancel_timeout_event()?; + + if self.repro_bookmark_set { + self.stopped_for_repro = true; + let current_log_level = log_level(self.as_conf_object_mut())?; + + if current_log_level < LogLevel::Info as u32 { + set_log_level(self.as_conf_object_mut(), LogLevel::Info)?; } - StopReason::Solution(solution) => { - if !self.have_initial_snapshot() { - warn!( - self.as_conf_object(), - "Solution {solution:?} before start was reached (no snapshot). Resuming without restoring non-existent snapshot." - ); - } else { - self.cancel_timeout_event()?; - - if self.repro_bookmark_set { - self.stopped_for_repro = true; - let current_log_level = log_level(self.as_conf_object_mut())?; - - if current_log_level < LogLevel::Info as u32 { - set_log_level(self.as_conf_object_mut(), LogLevel::Info)?; - } - - info!( - self.as_conf_object(), - "Stopped for repro. Restore to start bookmark with 'reverse-to start'" - ); - - // Skip the shutdown and continue, we are finished here - return Ok(()); - } - - self.iterations += 1; - - if self.iteration_limit != 0 && self.iterations >= self.iteration_limit { - let duration = SystemTime::now().duration_since( - *self - .start_time - .get() - .ok_or_else(|| anyhow!("Start time was not set"))?, - )?; - - // Set the log level so this message always prints - set_log_level(self.as_conf_object_mut(), LogLevel::Info)?; - - info!( - self.as_conf_object(), - "Configured iteration count {} reached. Stopping after {} seconds ({} exec/s).", - self.iterations, - duration.as_secs_f32(), - self.iterations as f32 / duration.as_secs_f32() - ); - - self.send_shutdown()?; - - quit(0)?; - } - - let fuzzer_tx = self - .fuzzer_tx - .get() - .ok_or_else(|| anyhow!("No fuzzer tx channel"))?; - - match solution.kind { - SolutionKind::Timeout => fuzzer_tx.send(ExitKind::Timeout)?, - SolutionKind::Exception - | SolutionKind::Breakpoint - | SolutionKind::Manual => fuzzer_tx.send(ExitKind::Crash)?, - } - - self.restore_initial_snapshot()?; - self.coverage_prev_loc = 0; - - if self.start_buffer.get().is_some() && self.start_size.get().is_some() { - self.get_and_write_testcase()?; - } else { - debug!( - self.as_conf_object(), - "Missing start buffer or size, not writing testcase." - ); - } - self.post_timeout_event()?; - } + info!( + self.as_conf_object(), + "Stopped for repro. Restore to start bookmark with 'reverse-to start'" + ); + + // Skip the shutdown and continue, we are finished here + return Ok(()); + } + + self.iterations += 1; + + if self.iteration_limit != 0 && self.iterations >= self.iteration_limit { + let duration = SystemTime::now().duration_since( + *self + .start_time + .get() + .ok_or_else(|| anyhow!("Start time was not set"))?, + )?; + + // Set the log level so this message always prints + set_log_level(self.as_conf_object_mut(), LogLevel::Info)?; + + info!( + self.as_conf_object(), + "Configured iteration count {} reached. Stopping after {} seconds ({} exec/s).", + self.iterations, + duration.as_secs_f32(), + self.iterations as f32 / duration.as_secs_f32() + ); + + self.send_shutdown()?; + + quit(0)?; + } + + let fuzzer_tx = self + .fuzzer_tx + .get() + .ok_or_else(|| anyhow!("No fuzzer tx channel"))?; + + match kind { + SolutionKind::Timeout => fuzzer_tx.send(ExitKind::Timeout)?, + SolutionKind::Exception | SolutionKind::Breakpoint | SolutionKind::Manual => { + fuzzer_tx.send(ExitKind::Crash)? } } - debug!(self.as_conf_object(), "Resuming simulation"); + self.restore_initial_snapshot()?; + self.coverage_prev_loc = 0; - run_alone(|| { - continue_simulation(0)?; - Ok(()) - })?; - } else if self.have_initial_snapshot() { + if self.start_info.get().is_some() { + self.get_and_write_testcase()?; + } else { + debug!( + self.as_conf_object(), + "Missing start buffer or size, not writing testcase." + ); + } + + self.post_timeout_event()?; + } + + debug!(self.as_conf_object(), "Resuming simulation"); + + run_alone(|| { + continue_simulation(0)?; + Ok(()) + })?; + + Ok(()) + } + + fn on_simulation_stopped_with_reason(&mut self, reason: StopReason) -> Result<()> { + debug!( + self.as_conf_object(), + "Simulation stopped with reason {reason:?}" + ); + + match reason { + StopReason::Magic { magic_number } => { + self.on_simulation_stopped_with_magic(magic_number) + } + StopReason::ManualStart { processor, info } => { + self.on_simulation_stopped_with_manual_start(processor, info) + } + StopReason::ManualStartWithoutBuffer { processor } => { + self.on_simulation_stopped_manual_start_without_buffer(processor) + } + StopReason::ManualStop => self.on_simulation_stopped_manual_stop(), + StopReason::Solution { kind } => self.on_simulation_stopped_solution(kind), + } + } + + fn on_simulation_stopped_without_reason(&mut self) -> Result<()> { + if self.have_initial_snapshot() { + // We only do anything here if we have run, otherwise the simulation was just + // stopped for a reason unrelated to fuzzing (like the user using the CLI) self.cancel_timeout_event()?; let fuzzer_tx = self @@ -329,13 +475,30 @@ impl Tsffs { Ok(()) } + /// Called on core simulation stopped HAP + pub fn on_simulation_stopped(&mut self) -> Result<()> { + if self.stopped_for_repro { + // If we are stopped for repro, we do nothing on this HAP! + return Ok(()); + } + + // Log information from the fuzzer + self.log_messages()?; + + if let Some(reason) = self.stop_reason.take() { + self.on_simulation_stopped_with_reason(reason) + } else { + self.on_simulation_stopped_without_reason() + } + } + /// Called on core exception HAP. Check to see if this exception is configured as a solution /// or all exceptions are solutions and trigger a stop if so pub fn on_exception(&mut self, _obj: *mut ConfObject, exception: i64) -> Result<()> { if self.all_exceptions_are_solutions || self.exceptions.contains(&exception) { - self.stop_simulation(StopReason::Solution( - Solution::builder().kind(SolutionKind::Exception).build(), - ))?; + self.stop_simulation(StopReason::Solution { + kind: SolutionKind::Exception, + })?; } Ok(()) } @@ -357,9 +520,9 @@ impl Tsffs { transaction as usize ); - self.stop_simulation(StopReason::Solution( - Solution::builder().kind(SolutionKind::Breakpoint).build(), - ))?; + self.stop_simulation(StopReason::Solution { + kind: SolutionKind::Breakpoint, + })?; } Ok(()) } @@ -369,7 +532,7 @@ impl Tsffs { pub fn on_magic_instruction( &mut self, trigger_obj: *mut ConfObject, - magic_number: i64, + magic_number: MagicNumber, ) -> Result<()> { trace!( self.as_conf_object(), @@ -377,18 +540,58 @@ impl Tsffs { ); if object_is_processor(trigger_obj)? { - if self.start_on_harness && magic_number == self.magic_start { - self.stop_simulation(StopReason::MagicStart( - MagicStart::builder().processor(trigger_obj).build(), - ))?; - } else if self.stop_on_harness && magic_number == self.magic_stop { - self.stop_simulation(StopReason::MagicStop(Stop::default()))?; - } else if self.stop_on_harness && magic_number == self.magic_assert { - self.stop_simulation(StopReason::Solution( - Solution::builder().kind(SolutionKind::Manual).build(), - ))?; + let processor_number = get_processor_number(trigger_obj)?; + + if !self.processors.contains_key(&processor_number) { + self.add_processor(trigger_obj, false)?; } + + let processor = self + .processors + .get_mut(&processor_number) + .ok_or_else(|| anyhow!("Processor not found"))?; + + let index_selector = processor.get_magic_index_selector()?; + + if match magic_number { + MagicNumber::StartBufferPtrSizePtr + | MagicNumber::StartBufferPtrSizeVal + | MagicNumber::StartBufferPtrSizePtrVal => { + self.start_on_harness + && (if self.magic_start_index == index_selector { + // Set this processor as the start processor now that we know it is + // enabled, but only set if it is not already set + let _ = self.start_processor_number.get_or_init(|| processor_number); + true + } else { + debug!( + "Not setting processor {} as start processor", + processor_number + ); + false + }) + } + MagicNumber::StopNormal => { + self.stop_on_harness && self.magic_stop_indices.contains(&index_selector) + } + MagicNumber::StopAssert => { + self.stop_on_harness && self.magic_assert_indices.contains(&index_selector) + } + } { + self.stop_simulation(StopReason::Magic { magic_number })?; + } else { + debug!( + self.as_conf_object(), + "Magic instruction {magic_number} was triggered by processor {trigger_obj:?} with index {index_selector} but the index is not configured for this magic number or start/stop on harness was disabled. Configured indices are: start: {}, stop: {:?}, assert: {:?}", + self.magic_start_index, + self.magic_stop_indices, + self.magic_assert_indices + ); + } + } else { + bail!("Magic instruction was triggered by a non-processor object"); } + Ok(()) } } diff --git a/src/interfaces/fuzz.rs b/src/interfaces/fuzz.rs index 6c9046dc..3fae6173 100644 --- a/src/interfaces/fuzz.rs +++ b/src/interfaces/fuzz.rs @@ -2,8 +2,8 @@ // SPDX-License-Identifier: Apache-2.0 use crate::{ - state::{ManualStart, ManualStartSize, Solution, SolutionKind, Stop, StopReason}, - Tsffs, + state::{SolutionKind, StopReason}, + ManualStartAddress, ManualStartInfo, ManualStartSize, Tsffs, }; use anyhow::{anyhow, Result}; use libafl::inputs::HasBytesVec; @@ -70,26 +70,35 @@ impl Tsffs { /// /// If your target cannot take advantage of the written-back size pointer, use /// `start_with_max_size` instead. - pub fn start( + pub fn start_with_buffer_ptr_size_ptr( &mut self, cpu: *mut ConfObject, - testcase_address: GenericAddress, + buffer_address: GenericAddress, size_address: GenericAddress, virt: bool, ) -> Result<()> { debug!( self.as_conf_object(), - "start({testcase_address:#x}, {size_address:#x})" + "start({buffer_address:#x}, {size_address:#x})" ); - self.stop_simulation(StopReason::ManualStart( - ManualStart::builder() - .processor(cpu) - .buffer(testcase_address) - .size(ManualStartSize::SizeAddress(size_address)) - .virt(virt) - .build(), - ))?; + self.stop_simulation(StopReason::ManualStart { + processor: cpu, + info: ManualStartInfo { + address: if virt { + ManualStartAddress::Virtual(buffer_address) + } else { + ManualStartAddress::Physical(buffer_address) + }, + size: ManualStartSize::SizePtr { + address: if virt { + ManualStartAddress::Virtual(size_address) + } else { + ManualStartAddress::Physical(size_address) + }, + }, + }, + })?; Ok(()) } @@ -108,7 +117,7 @@ impl Tsffs { /// If your target does not have a buffer readily available to receive testcase data or /// you simply want to use it directly in some other way (e.g. by sending it to a network /// port), use `start_without_buffer` - pub fn start_with_maximum_size( + pub fn start_with_buffer_ptr_size_value( &mut self, cpu: *mut ConfObject, testcase_address: GenericAddress, @@ -120,14 +129,66 @@ impl Tsffs { "start_with_maximum_size({testcase_address:#x}, {maximum_size:#x})" ); - self.stop_simulation(StopReason::ManualStart( - ManualStart::builder() - .processor(cpu) - .buffer(testcase_address) - .size(ManualStartSize::MaximumSize(maximum_size as u64)) - .virt(virt) - .build(), - ))?; + self.stop_simulation(StopReason::ManualStart { + processor: cpu, + info: ManualStartInfo { + address: if virt { + ManualStartAddress::Virtual(testcase_address) + } else { + ManualStartAddress::Physical(testcase_address) + }, + size: ManualStartSize::MaxSize(maximum_size.try_into()?), + }, + })?; + + Ok(()) + } + + /// Interface method to manually start the fuzzing loop by taking a snapshot, saving + /// the testcase, size address, and maximum testcase size and resuming execution of the + /// simulation. This method does not need to be called if `set_start_on_harness` is enabled. + /// + /// # Arguments + /// + /// * `cpu` - The CPU whose memory space should be written + /// * `testcase_address` - The address to write test cases to + /// * `size_address` - The address to write the size of each test case to + /// * `maximum_size` - The maximum size of the test case. The actual size of each test case will + /// be written back to the target software at the provided size address. + /// + /// If your target cannot take advantage of the written-back size pointer, use + /// `start_with_max_size` instead. + pub fn start_with_buffer_ptr_size_ptr_value( + &mut self, + cpu: *mut ConfObject, + buffer_address: GenericAddress, + size_address: GenericAddress, + maximum_size: u32, + virt: bool, + ) -> Result<()> { + debug!( + self.as_conf_object(), + "start({buffer_address:#x}, {size_address:#x}, {maximum_size:#x})" + ); + + self.stop_simulation(StopReason::ManualStart { + processor: cpu, + info: ManualStartInfo { + address: if virt { + ManualStartAddress::Virtual(buffer_address) + } else { + ManualStartAddress::Physical(buffer_address) + }, + size: ManualStartSize::SizePtrAndMaxSize { + address: if virt { + ManualStartAddress::Virtual(size_address) + } else { + ManualStartAddress::Physical(size_address) + }, + maximum_size: maximum_size.try_into()?, + }, + }, + })?; Ok(()) } @@ -149,12 +210,10 @@ impl Tsffs { // Start the fuzzer thread early so we can get a testcase self.start_fuzzer_thread()?; } + let testcase = self.get_testcase()?; - self.cmplog_enabled = testcase.cmplog; - self.stop_simulation(StopReason::ManualStart( - ManualStart::builder().processor(cpu).build(), - ))?; + self.stop_simulation(StopReason::ManualStartWithoutBuffer { processor: cpu })?; Ok(testcase.testcase.bytes().to_vec().try_into()?) } @@ -168,7 +227,7 @@ impl Tsffs { pub fn stop(&mut self) -> Result<()> { debug!(self.as_conf_object(), "stop"); - self.stop_simulation(StopReason::ManualStop(Stop::default()))?; + self.stop_simulation(StopReason::ManualStop)?; Ok(()) } @@ -182,9 +241,9 @@ impl Tsffs { debug!(self.as_conf_object(), "solution({id:#x}, {message})"); - self.stop_simulation(StopReason::Solution( - Solution::builder().kind(SolutionKind::Manual).build(), - ))?; + self.stop_simulation(StopReason::Solution { + kind: SolutionKind::Manual, + })?; Ok(()) } diff --git a/src/interfaces/mod.rs b/src/interfaces/mod.rs index 3158fc35..ec8d20ab 100644 --- a/src/interfaces/mod.rs +++ b/src/interfaces/mod.rs @@ -5,4 +5,3 @@ pub(crate) mod config; pub(crate) mod fuzz; -pub(crate) mod tsffs; diff --git a/src/interfaces/tsffs.rs b/src/interfaces/tsffs.rs deleted file mode 100644 index 26a5d734..00000000 --- a/src/interfaces/tsffs.rs +++ /dev/null @@ -1,596 +0,0 @@ -// Copyright (C) 2024 Intel Corporation -// SPDX-License-Identifier: Apache-2.0 - -//! Backward-compatibility interface - -use crate::{ - arch::ArchitectureHint, - state::Stop, - state::{ManualStart, ManualStartSize, StopReason}, - Solution, SolutionKind, Tsffs, -}; -use anyhow::anyhow; -use libafl::inputs::HasBytesVec; -use simics::{ - continue_simulation, debug, error, get_processor_number, interface, lookup_file, run_alone, - version, AsConfObject, AttrValue, BreakpointId, ConfObject, GenericAddress, Result, -}; -use std::{ - ffi::{c_char, CStr}, - fs::read, - str::FromStr, -}; - -#[interface(name = "tsffs")] -impl Tsffs { - /// Interface method to enable or disable the fuzzer to start automatically when it - /// reaches the default start condition for the architecture of the processor that - /// is running when the default start condition occurs. Note that this method will - /// not resume or run the simulation, the SIMICS script containing this call should - /// resume execution afterward. - /// - /// These conditions are: - /// - /// # x86_64 - /// - /// - Magic instruction executed with `n=1` - /// * `rsi` - set to the address the fuzzer should write the testcase to each execution - /// * `rdi` - set to the address of a variable containing the maximum size of a testcase, - /// which will be overwritten each execution with the current actual size of the testcase - /// - /// # x86_32 - /// - /// - Magic instruction executed with `n=1` - /// * `esi` - set to the address the fuzzer should write the testcase to each execution - /// * `edi` - set to the address of a variable containing the maximum size of a testcase, - /// which will be overwritten each execution with the current actual size of the testcase - /// - /// # RISC-V - /// - /// - Magic instruction executed with `n=1` - /// * `x10` - set to the address the fuzzer should write the testcase to each execution - /// * `x11` - set to the address of a variable containing the maximum size of a testcase, - /// which will be overwritten each execution with the current actual size of the testcase - /// - /// # ARM - /// - /// - Magic instruction executed with `n=1` - /// * `r0` - set to the address the fuzzer should write the testcase to each execution - /// * `r1` - set to the address of a variable containing the maximum size of a testcase, - /// which will be overwritten each execution with the current actual size of the testcase - /// - /// # ARM Thumb-2 - /// - /// - Magic instruction executed with `n=1` - /// * `r0` - set to the address the fuzzer should write the testcase to each execution - /// * `r1` - set to the address of a variable containing the maximum size of a testcase, - /// which will be overwritten each execution with the current actual size of the testcase - /// - /// # ARMv8 - /// - /// - Magic instruction executed with `n=1` - /// * `x0` - set to the address the fuzzer should write the testcase to each execution - /// * `x1` - set to the address of a variable containing the maximum size of a testcase, - /// which will be overwritten each execution with the current actual size of the testcase - /// - /// # ARC - /// - /// - Magic instruction executed with `n=1` - /// * `r0` - set to the address the fuzzer should write the testcase to each execution - /// * `r1` - set to the address of a variable containing the maximum size of a testcase, - /// which will be overwritten each execution with the current actual size of the testcase - pub fn set_start_on_harness(&mut self, start_on_harness: bool) -> Result<()> { - debug!( - self.as_conf_object(), - "set_start_on_harness({start_on_harness})" - ); - - self.start_on_harness = start_on_harness; - - Ok(()) - } - - /// Interface method to set the magic value the fuzzer will wait for when - /// `set_start_on_harness` has ben configured. This allows you to place multiple harnesses in - /// a single binary and selectively enable one of them. - pub fn set_start_magic_number(&mut self, magic_number: i64) { - debug!( - self.as_conf_object(), - "set_start_magic_number({magic_number})" - ); - - self.magic_start = magic_number; - } - - /// Interface method to enable or disable the fuzzer to stop automatically when it - /// reaches the default stop condition for the architecture of the processor that is - /// running when the default stop condition occurs. Note that this method will not - /// resume or run the simulation, the SIMICS script containing this call should - /// resume execution afterward. - pub fn set_stop_on_harness(&mut self, stop_on_harness: bool) -> Result<()> { - debug!( - self.as_conf_object(), - "set_stop_on_harness({stop_on_harness})" - ); - - self.stop_on_harness = stop_on_harness; - - Ok(()) - } - - /// Interface method to set the magic value the fuzzer will wait for when - /// `set_start_on_harness` has ben configured. This allows you to place multiple harnesses in - /// a single binary and selectively enable one of them. - pub fn set_stop_magic_number(&mut self, magic_number: i64) { - debug!( - self.as_conf_object(), - "set_stop_magic_number({magic_number})" - ); - - self.magic_stop = magic_number; - } - - #[interface(name = "start")] - /// Interface method to manually start the fuzzing loop by taking a snapshot, saving the - /// testcase and size address and resuming execution of the simulation. This method does - /// not need to be called if `set_start_on_harness` is enabled. - /// - /// # Arguments - /// - /// * `cpu` - The CPU whose memory space should be written - /// * `testcase_address` - The address to write test cases to - /// * `size_address` - The address to write the size of each test case to (optional, - /// `max_size` must be given if not provided). - /// - /// If your target cannot take advantage of the written-back size pointer, use - /// `start_with_max_size` instead. - pub fn start_legacy( - &mut self, - cpu: *mut ConfObject, - testcase_address: GenericAddress, - size_address: GenericAddress, - virt: bool, - ) -> Result<()> { - debug!( - self.as_conf_object(), - "start({testcase_address:#x}, {size_address:#x})" - ); - - self.stop_simulation(StopReason::ManualStart( - ManualStart::builder() - .processor(cpu) - .buffer(testcase_address) - .size(ManualStartSize::SizeAddress(size_address)) - .virt(virt) - .build(), - ))?; - - Ok(()) - } - - #[interface(name = "start_with_maximum_size")] - /// Interface method to manually start the fuzzing loop by taking a snapshot, saving - /// the testcase and maximum testcase size and resuming execution of the simulation. - /// This method does not need to be called if `set_start_on_harness` is enabled. - /// - /// # Arguments - /// - /// * `cpu` - The CPU whose memory space should be written - /// * `testcase_address` - The address to write test cases to - /// * `maximum_size` - The maximum size of the test case. The actual size of each test case will - /// not be written back to the target software - /// - /// If your target does not have a buffer readily available to receive testcase data or - /// you simply want to use it directly in some other way (e.g. by sending it to a network - /// port), use `start_without_buffer` - pub fn start_with_maximum_size_legacy( - &mut self, - cpu: *mut ConfObject, - testcase_address: GenericAddress, - maximum_size: u32, - virt: bool, - ) -> Result<()> { - debug!( - self.as_conf_object(), - "start_with_maximum_size({testcase_address:#x}, {maximum_size:#x})" - ); - - self.stop_simulation(StopReason::ManualStart( - ManualStart::builder() - .processor(cpu) - .buffer(testcase_address) - .size(ManualStartSize::MaximumSize(maximum_size as u64)) - .virt(virt) - .build(), - ))?; - - Ok(()) - } - - #[interface(name = "start_without_buffer")] - /// Interface method to manually start the fuzzing loop by taking a snapshot, saving - /// the testcase and maximum testcase size and resuming execution of the simulation. - /// This method does not need to be called if `set_start_on_harness` is enabled. - /// - /// # Arguments - /// - /// * `cpu` - The CPU to initially trace and post timeout events on. This should typically be - /// the CPU that is running the code receiving the input this function returns. - /// - /// # Return Value - /// - /// Returns an [`AttrValue`] list of integers. Integers are `u8` sized, in the range 0-255. - pub fn start_without_buffer_legacy(&mut self, cpu: *mut ConfObject) -> Result { - if !self.have_initial_snapshot() { - // Start the fuzzer thread early so we can get a testcase - self.start_fuzzer_thread()?; - } - let testcase = self.get_testcase()?; - self.cmplog_enabled = testcase.cmplog; - - self.stop_simulation(StopReason::ManualStart( - ManualStart::builder().processor(cpu).build(), - ))?; - - testcase.testcase.bytes().to_vec().try_into() - } - - #[interface(name = "stop")] - /// Interface method to manually signal to stop a testcase execution. When this - /// method is called, the current testcase execution will be stopped as if it had - /// finished executing normally, and the state will be restored to the state at the - /// initial snapshot. This method is particularly useful in callbacks triggered on - /// breakpoints or other complex conditions. This method does - /// not need to be called if `set_stop_on_harness` is enabled. - pub fn stop_legacy(&mut self) -> Result<()> { - debug!(self.as_conf_object(), "stop"); - - self.stop_simulation(StopReason::ManualStop(Stop::default()))?; - - Ok(()) - } - - #[interface(name = "solution")] - /// Interface method to manually signal to stop execution with a solution condition. - /// When this method is called, the current testcase execution will be stopped as if - /// it had finished executing with an exception or timeout, and the state will be - /// restored to the state at the initial snapshot. - pub fn solution_legacy(&mut self, id: u64, message: *mut c_char) -> Result<()> { - let message = unsafe { CStr::from_ptr(message) }.to_str()?; - - debug!(self.as_conf_object(), "solution({id:#x}, {message})"); - - self.stop_simulation(StopReason::Solution( - Solution::builder().kind(SolutionKind::Manual).build(), - ))?; - - Ok(()) - } - - #[interface(name = "repro_legacy")] - /// Reproduce a test case execution. This will set the fuzzer's next input through - /// one execution using the provided file as input instead of taking input from the - /// fuzzer. It will stop execution at the first stop, timeout, or other solution - /// instead of continuing the fuzzing loop. - /// - /// This can be called during configuration *or* after stopping the fuzzer once a solution - /// has been found. - pub fn repro_legacy(&mut self, testcase_file: *mut c_char) -> Result<()> { - let simics_path = unsafe { CStr::from_ptr(testcase_file) }.to_str()?; - - let testcase_file = lookup_file(simics_path)?; - - debug!(self.as_conf_object(), "repro({})", testcase_file.display()); - - let contents = read(&testcase_file).map_err(|e| { - anyhow!( - "Failed to read repro testcase file {}: {}", - testcase_file.display(), - e - ) - })?; - - self.repro_testcase = Some(contents); - - if self.iterations > 0 { - // We've done an iteration already, so we need to reset and run - self.restore_initial_snapshot()?; - self.get_and_write_testcase()?; - self.post_timeout_event()?; - - run_alone(|| { - continue_simulation(0)?; - Ok(()) - })?; - } - - Ok(()) - } - - /// Interface method to set the fuzzer to use the experimental snapshots interface - /// instead of the micro checkpoints interface for snapshot save and restore operations - pub fn set_use_snapshots(&mut self, use_snapshots: bool) -> Result<()> { - debug!(self.as_conf_object(), "use_snapshots({use_snapshots})"); - - if cfg!(simics_experimental_api_snapshots) - || cfg!(simics_experimental_api_snapshots_v2) - || cfg!(simics_stable_api_snapshots) - { - self.use_snapshots = use_snapshots; - } else if use_snapshots { - let version = version()?; - - error!( - self.as_conf_object(), - "Not enabling snapshots, API is unsupported for target SIMICS version {version}", - ); - } else { - // NOTE: We don't report an error if snapshots are turned off when they are unsupported - } - - Ok(()) - } - - /// Interface method to set the execution timeout in seconds - pub fn set_timeout(&mut self, timeout: f64) { - debug!(self.as_conf_object(), "set_timeout({timeout})"); - - self.timeout = timeout; - } - - /// Interface method to add an exception-type solution number to the set of - /// exception-type solution numbers currently being monitored for. If any exception in - /// the set of exceptions currently monitored occurs, the testcase will be saved and - /// reported as a solution. - /// - /// For example on x86_64, `add_exception_solution(14)` would treat any page fault as - /// a solution. - pub fn add_exception_solution(&mut self, exception: i64) { - debug!(self.as_conf_object(), "add_exception_solution({exception})"); - - self.exceptions.insert(exception); - } - - /// Interface method to remove an exception-type solution number from the set of - /// exception-type solution numbers currently being monitored for. If any exception in - /// the set of solutions currently monitored occurs, the testcase will be saved and - /// reported as a solution. - pub fn remove_exception_solution(&mut self, exception: i64) { - debug!( - self.as_conf_object(), - "remove_exception_solution({exception})" - ); - - self.exceptions.remove(&exception); - } - - /// Set whether all CPU exceptions are considered solutions. If set to true, any - /// exception encountered during fuzzing will be saved as a solution. This is typically - /// not desired. - pub fn set_all_exceptions_are_solutions(&mut self, all_exceptions_are_solutions: bool) { - debug!( - self.as_conf_object(), - "set_all_exceptions_are_solutions({all_exceptions_are_solutions})" - ); - - self.all_exceptions_are_solutions = all_exceptions_are_solutions; - } - - /// Set a specific breakpoint number to be considered a solution. If a breakpoint with - /// this ID is encountered during fuzzing, the input will be saved as a solution. - pub fn add_breakpoint_solution(&mut self, breakpoint: BreakpointId) { - debug!( - self.as_conf_object(), - "add_breakpoint_solution({breakpoint})" - ); - - self.breakpoints.insert(breakpoint); - } - - /// Remove a specific breakpoint from consideration as a solution. If a breakpoint with - /// this ID is encountered during fuzzing, the input will be saved as a solution. - pub fn remove_breakpoint_solution(&mut self, breakpoint: BreakpointId) { - debug!( - self.as_conf_object(), - "remove_breakpoint_solution({breakpoint})" - ); - self.breakpoints.remove(&breakpoint); - } - - /// Set whether all SIMICS breakpoints are considered solutions. If set to true, any - /// breakpoint (read, write, or execute) encountered during fuzzing will be saved as - /// a solution. - pub fn set_all_breakpoints_are_solutions(&mut self, all_breakpoints_are_solutions: bool) { - debug!( - self.as_conf_object(), - "set_all_breakpoints_are_solutions({all_breakpoints_are_solutions})" - ); - - self.all_breakpoints_are_solutions = all_breakpoints_are_solutions; - } - - /// Set whether cmplog is enabled or disabled. Cmplog adds stages to trace and - /// analyze comparison operands during target software execution and mutate test - /// cases strategically using the logged operands. Execution speed is lower when - /// running with cmplog enabled, but the efficiency gain from improved mutations - /// typically makes up for the lost speed by many orders of magnitude. It is - /// particularly well suited for software which performs magic value checks, large - /// value and string comparisons, and sums. - pub fn set_cmplog_enabled(&mut self, enabled: bool) { - debug!(self.as_conf_object(), "set_cmplog_enabled({enabled})"); - - self.cmplog = enabled; - } - - /// Set the directory path where the input corpus should be taken from when the - /// fuzzer first starts, and where new corpus items will be saved. This path may be - /// a SIMICS relative path prefixed with "%simics%". It is an error to provide no - /// corpus directory when `set_generate_random_corpus(True)` has not been called - /// prior to fuzzer startup. It is also an error to provide an *empty* corpus - /// directory without calling `set_generate_random_corpus(True)`. If not provided, - /// "%simics%/corpus" will be used by default. - pub fn set_corpus_directory(&mut self, corpus_directory: *mut c_char) -> Result<()> { - let corpus_directory_path = unsafe { CStr::from_ptr(corpus_directory) }.to_str()?; - - if let Ok(corpus_directory) = lookup_file(corpus_directory_path) { - debug!( - self.as_conf_object(), - "set_corpus_directory({})", - corpus_directory.display(), - ); - - self.corpus_directory = corpus_directory; - } else { - error!(self.as_conf_object(), "Corpus directory cannot be set. The requested directory {corpus_directory_path} does not exist."); - } - - Ok(()) - } - - /// Set the directory path where solutions should be saved when the fuzzer finds them. This - /// directory will contain the fuzzer inputs which triggered any solution condition that had - /// been configured for the fuzzing campaign. These entries can be used to reproduce - /// and traige defects using the `reproduce` method. If no solutions directory is provided, - /// "%simics%/solutions" will be used by default. - pub fn set_solutions_directory(&mut self, solutions_directory: *mut c_char) -> Result<()> { - let solutions_directory_path = unsafe { CStr::from_ptr(solutions_directory) }.to_str()?; - - if let Ok(solutions_directory) = lookup_file(solutions_directory_path) { - debug!( - self.as_conf_object(), - "set_solutions_directory({})", - solutions_directory.display(), - ); - - self.solutions_directory = solutions_directory; - } else { - error!(self.as_conf_object(), "Solutions directory cannot be set. The requested directory {solutions_directory_path} does not exist."); - } - - Ok(()) - } - - /// Set whether a random corpus should be generated in the event that a corpus directory is - /// not provided, or an empty corpus directory is provided. This option defaults to false - /// because the penalty for using a random corpus is extremely high and corpus entries should - /// be customized for the target software wherever possible. By setting this option, you - /// should be aware your fuzz campaign's efficiency will be lowered. This is, however, very - /// useful for demonstration and test purposes. - pub fn set_generate_random_corpus(&mut self, generate_random_corpus: bool) -> Result<()> { - debug!( - self.as_conf_object(), - "set_generate_random_corpus({generate_random_corpus})" - ); - - self.generate_random_corpus = generate_random_corpus; - - Ok(()) - } - - /// Set the number of iterations to run the fuzzer for. This is the number of actual testcases - /// executed, and includes all stages (e.g. calibration). This should typically not be used - /// to limit the time of a fuzzing campaign, and is only useful for demonstration purposes. - pub fn set_iterations(&mut self, iterations: usize) -> Result<()> { - debug!(self.as_conf_object(), "set_iterations({iterations})"); - - self.iteration_limit = iterations; - - Ok(()) - } - - /// Tokenize an executable file and add extracted tokens to token mutations for the fuzzer - pub fn tokenize_executable(&mut self, executable_file: *mut c_char) -> Result<()> { - let simics_path = unsafe { CStr::from_ptr(executable_file) }.to_str()?; - - let executable_path = lookup_file(simics_path)?; - - debug!( - self.as_conf_object(), - "tokenize_executable({})", - executable_path.display() - ); - - self.token_executables.push(executable_path); - - Ok(()) - } - - /// Tokenize a source file and add extracted tokens to token mutations for the fuzzer - pub fn tokenize_src(&mut self, source_file: *mut c_char) -> Result<()> { - let simics_path = unsafe { CStr::from_ptr(source_file) }.to_str()?; - - let source_path = lookup_file(simics_path)?; - - debug!( - self.as_conf_object(), - "tokenize_src({})", - source_path.display() - ); - - self.token_src_files.push(source_path); - - Ok(()) - } - - /// Add tokens from a file of the format below, containing tokens extracted from the fuzz - /// target: - /// ```text,ignore - /// x = "hello" - /// y = "foo\x41bar" - /// ``` - pub fn add_token_file(&mut self, token_file: *mut c_char) -> Result<()> { - let simics_path = unsafe { CStr::from_ptr(token_file) }.to_str()?; - - let token_file = lookup_file(simics_path)?; - - debug!( - self.as_conf_object(), - "add_token_file({})", - token_file.display() - ); - - if token_file.is_file() { - self.token_files.push(token_file); - } - - Ok(()) - } - - #[interface(name = "add_trace_processor")] - /// Add a processor to be traced. By default, only the processor the start event occurs on - /// is used for tracing. - pub fn add_trace_processor_legacy(&mut self, cpu: *mut ConfObject) -> Result<()> { - debug!( - self.as_conf_object(), - "add_trace_processor({:#x})", cpu as usize - ); - - self.add_processor(cpu, false)?; - - Ok(()) - } - - #[interface(name = "add_architecture_hint")] - /// Set an architecture hint to be used for a particular processor. This allows overriding - /// the detected or reported architecture for the processor object. This is particularly - /// useful for x86 processors which report as x86-64 processors, or when fuzzing x86 code - /// running on an x86-64 processor in a backward compatibility mode. - pub fn add_architecture_hint_legacy( - &mut self, - cpu: *mut ConfObject, - hint: *mut c_char, - ) -> Result<()> { - let hint = unsafe { CStr::from_ptr(hint) }.to_str()?; - let processor_number = get_processor_number(cpu)?; - - debug!( - self.as_conf_object(), - "add_architecture_hint({processor_number}, {hint})" - ); - - self.architecture_hints - .insert(processor_number, ArchitectureHint::from_str(hint)?); - - Ok(()) - } -} diff --git a/src/lib.rs b/src/lib.rs index 9f5893c8..83973db8 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -29,19 +29,18 @@ #![warn(missing_docs)] use crate::interfaces::{config::config, fuzz::fuzz}; -use crate::state::{Solution, SolutionKind}; +use crate::state::SolutionKind; #[cfg(not(simics_deprecated_api_rev_exec))] use crate::util::Utils; use anyhow::{anyhow, Result}; use arch::{Architecture, ArchitectureHint, ArchitectureOperations}; use fuzzer::{messages::FuzzerMessage, ShutdownMessage, Testcase}; use indoc::indoc; -use libafl::{ - inputs::{HasBytesVec, Input}, - prelude::ExitKind, -}; +use libafl::{inputs::HasBytesVec, prelude::ExitKind}; use libafl_bolts::prelude::OwnedMutSlice; use libafl_targets::AFLppCmpLogMap; +use magic::MagicNumber; +use num_traits::FromPrimitive as _; use serde::{Deserialize, Serialize}; use simics::{ break_simulation, class, error, free_attribute, get_class, get_interface, get_processor_number, @@ -77,7 +76,7 @@ use std::{ alloc::{alloc_zeroed, Layout}, cell::OnceCell, collections::{hash_map::Entry, BTreeSet, HashMap, HashSet}, - fs::{write, File}, + fs::File, path::PathBuf, ptr::null_mut, sync::mpsc::{Receiver, Sender}, @@ -92,6 +91,7 @@ pub(crate) mod fuzzer; pub(crate) mod haps; pub(crate) mod interfaces; pub(crate) mod log; +pub(crate) mod magic; pub(crate) mod state; pub(crate) mod tracer; pub(crate) mod traits; @@ -101,26 +101,106 @@ pub(crate) mod util; pub const CLASS_NAME: &str = env!("CARGO_PKG_NAME"); +#[derive(Serialize, Deserialize, Clone, Debug)] +/// An address that was formerly virtual or formerly physical. The actual +/// address *must* be physical. +pub(crate) enum StartPhysicalAddress { + /// The address was formerly virtual + WasVirtual(u64), + /// The address was formerly physical + WasPhysical(u64), +} + +impl StartPhysicalAddress { + /// Get the physical address + pub fn physical_address(&self) -> u64 { + match self { + StartPhysicalAddress::WasVirtual(addr) => *addr, + StartPhysicalAddress::WasPhysical(addr) => *addr, + } + } +} + +#[derive(Serialize, Deserialize, Clone, Debug)] +pub(crate) enum ManualStartAddress { + Virtual(u64), + Physical(u64), +} + +impl ManualStartAddress { + pub fn address(&self) -> u64 { + match self { + ManualStartAddress::Virtual(addr) => *addr, + ManualStartAddress::Physical(addr) => *addr, + } + } +} + #[derive(TypedBuilder, Serialize, Deserialize, Clone, Debug)] -pub(crate) struct StartBuffer { +pub(crate) struct StartInfo { /// The physical address of the buffer. Must be physical, if the input address was /// virtual, it should be pre-translated - pub physical_address: u64, - /// Whether the address that translated to this physical address was virtual - /// this should not be used or checked, it's simply informational - pub virt: bool, + pub address: StartPhysicalAddress, + /// The initial contents of the buffer + pub contents: Vec, + /// The initial size of the buffer. This will either be only an address, in which + /// case the initial size will be `*size_ptr` and the actual size of each testcase + /// will be written back to `*size_ptr`, a `max_size` in which case the size will + /// not be written, or a `size_ptr` and `max_size` in which case the size will be + /// written back to `*size_ptr` and the maximum size will be `max_size`. + pub size: StartSize, } -#[derive(TypedBuilder, Serialize, Deserialize, Clone, Debug)] -pub(crate) struct StartSize { - #[builder(default, setter(into, strip_option))] - /// The address of the magic start size value, and whether the address that translated - /// to this physical address was virtual. The address must be physical. - pub physical_address: Option<(u64, bool)>, - #[builder(default, setter(into, strip_option))] - // NOTE: There is no need to save the size fo the size, it must be pointer-sized. - /// The initial size of the magic start size - pub initial_size: Option, +#[derive(Serialize, Deserialize, Clone, Debug)] +/// Exactly the same as `StartInfo` except with the semantic difference that the address +/// may not always be stored as physical, the user may provide a virtual address for both +/// the address and the size pointer (if there is one). +pub(crate) struct ManualStartInfo { + pub address: ManualStartAddress, + pub size: ManualStartSize, +} + +#[derive(Serialize, Deserialize, Clone, Debug)] +pub(crate) enum StartSize { + SizePtr { + address: StartPhysicalAddress, + maximum_size: usize, + }, + MaxSize(usize), + SizePtrAndMaxSize { + address: StartPhysicalAddress, + maximum_size: usize, + }, +} + +impl StartSize { + pub fn maximum_size(&self) -> usize { + match self { + StartSize::SizePtr { maximum_size, .. } => *maximum_size, + StartSize::MaxSize(maximum_size) => *maximum_size, + StartSize::SizePtrAndMaxSize { maximum_size, .. } => *maximum_size, + } + } + + pub fn physical_address(&self) -> Option { + match self { + StartSize::SizePtr { address, .. } => Some(address.clone()), + StartSize::MaxSize(_) => None, + StartSize::SizePtrAndMaxSize { address, .. } => Some(address.clone()), + } + } +} + +#[derive(Serialize, Deserialize, Clone, Debug)] +pub(crate) enum ManualStartSize { + SizePtr { + address: ManualStartAddress, + }, + MaxSize(usize), + SizePtrAndMaxSize { + address: ManualStartAddress, + maximum_size: usize, + }, } #[class(name = "tsffs", skip_objects_finalize, attr_value)] @@ -195,26 +275,35 @@ pub(crate) struct Tsffs { /// the version of SIMICS being used, the fuzzer will quit with an error message when this /// option is set. pub use_snapshots: bool, - #[class(attribute(optional, default = 1))] - /// The magic number `n` which is passed to the platform-specific magic instruction HAP + #[class(attribute(optional, default = 0))] + /// The index number which is passed to the platform-specific magic instruction HAP /// by a compiled-in harness to signal that the fuzzer should start the fuzzing loop. /// /// This option is useful when fuzzing a target which has multiple start harnesses compiled /// into it, and the fuzzer should start on a specific harness. - pub magic_start: i64, - #[class(attribute(optional, default = 2))] - /// The magic number `n` which is passed to the platform-specific magic instruction HAP + /// + /// There can only be one magic start value, because only one fuzzing loop can be running + /// (and they cannot be nested). This only has an effect if `start_on_harness` is set. + pub magic_start_index: u64, + #[class(attribute(optional, default = vec![0]))] + #[attr_value(fallible)] + /// The magic numbers which is passed to the platform-specific magic instruction HAP /// by a compiled-in harness to signal that the fuzzer should stop execution of the current /// iteration. /// /// This option is useful when fuzzing a target which has multiple stop harnesses compiled - /// into it, and the fuzzer should stop on a specific harness. - pub magic_stop: i64, - #[class(attribute(optional, default = 3))] - /// The magic number `n` which is passed to the platform-specific magic instruction HAP - /// by a compiled-in harness to signal that the fuzzer should stop execution of the current - /// iteration and save the testcase as a solution. - pub magic_assert: i64, + /// into it, and the fuzzer should stop on a specific subset of stop harness macro calls. + /// + /// This only has an effect if `stop_on_harness` is set. + pub magic_stop_indices: Vec, + #[class(attribute(optional, default = vec![0]))] + #[attr_value(fallible)] + /// The numbers which are passed to the platform-specific magic instruction HAP by a + /// compiled-in harness to signal that the fuzzer should stop execution of the + /// current iteration and save the testcase as a solution. + /// + /// This only has an effect if `stop_on_harness` is set. + pub magic_assert_indices: Vec, #[class(attribute(optional))] /// The limit on the number of fuzzing iterations to execute. If set to 0, the fuzzer will /// run indefinitely. If set to a positive integer, the fuzzer will run until the limit is @@ -283,13 +372,6 @@ pub(crate) struct Tsffs { /// Sets of tokens to use to drive token mutations of testcases. Each token set is a /// bytes which will be randomically inserted into testcases. pub tokens: Vec>, - #[attr_value(skip)] - /// A mapping of architecture hints from CPU index to architecture hint. This architecture - /// hint overrides the detected architecture of the CPU core. This is useful when the - /// architecture of the CPU core is not detected correctly, or when the architecture of the - /// CPU core is not known at the time the fuzzer is started. Specifically, x86 cores which - /// report their architecture as x86_64 can be overridden to x86. - pub architecture_hints: HashMap, #[class(attribute(optional, default = lookup_file("%simics%")?.join("checkpoint.ckpt")))] #[attr_value(fallible)] /// The path to the checkpoint saved prior to fuzzing when using snapshots @@ -305,6 +387,10 @@ pub(crate) struct Tsffs { #[class(attribute(optional, default = false))] pub keep_all_corpus: bool, #[class(attribute(optional, default = false))] + /// Whether to use the initial contents of the testcase buffer as an entry in the corpus + pub use_initial_as_corpus: bool, + #[class(attribute(optional, default = false))] + /// Whether to enable extra debug logging for LibAFL pub debug_log_libafl: bool, #[attr_value(skip)] @@ -322,6 +408,13 @@ pub(crate) struct Tsffs { /// or `stop_on_harness` are set. magic_hap_handle: HapHandle, + #[attr_value(skip)] + /// A mapping of architecture hints from CPU index to architecture hint. This architecture + /// hint overrides the detected architecture of the CPU core. This is useful when the + /// architecture of the CPU core is not detected correctly, or when the architecture of the + /// CPU core is not known at the time the fuzzer is started. Specifically, x86 cores which + /// report their architecture as x86_64 can be overridden to x86. + pub architecture_hints: HashMap, // Threads and message channels #[attr_value(skip)] /// Fuzzer thread @@ -380,9 +473,7 @@ pub(crate) struct Tsffs { stop_reason: Option, #[attr_value(skip)] /// The buffer and size information, if saved - start_buffer: OnceCell, - #[attr_value(skip)] - start_size: OnceCell, + start_info: OnceCell, #[attr_value(skip)] // #[builder(default = SystemTime::now())] @@ -456,9 +547,15 @@ impl ClassObjectsFinalize for Tsffs { CoreMagicInstructionHap::add_callback(move |trigger_obj, magic_number| { let tsffs: &'static mut Tsffs = instance.into(); - tsffs - .on_magic_instruction(trigger_obj, magic_number) - .expect("Error calling magic instruction callback"); + // NOTE: Some things (notably, the x86_64 UEFI app loader) do a + // legitimate CPUID (in the UEFI loader, with number 0xc aka + // eax=0xc4711) that registers as a magic number. We therefore permit + // non-valid magic numbers to be executed, but we do nothing for them. + if let Some(magic_number) = MagicNumber::from_i64(magic_number) { + tsffs + .on_magic_instruction(trigger_obj, magic_number) + .expect("Failed to execute on_magic_instruction callback") + } })?; tsffs .coverage_map @@ -509,7 +606,9 @@ impl Tsffs { /// Stop the simulation with a reason pub fn stop_simulation(&mut self, reason: StopReason) -> Result<()> { let break_string = reason.to_string(); + self.stop_reason = Some(reason); + break_simulation(break_string)?; Ok(()) @@ -522,6 +621,12 @@ impl Tsffs { /// "start processor" which is the processor running when the fuzzing loop begins pub fn add_processor(&mut self, cpu: *mut ConfObject, is_start: bool) -> Result<()> { let cpu_number = get_processor_number(cpu)?; + debug!( + self.as_conf_object(), + "Adding {}processor {} to fuzzer", + if is_start { "start " } else { "" }, + cpu_number + ); if let Entry::Vacant(e) = self.processors.entry(cpu_number) { let architecture = if let Some(hint) = self.architecture_hints.get(&cpu_number) { @@ -687,42 +792,18 @@ impl Tsffs { pub fn get_and_write_testcase(&mut self) -> Result<()> { let testcase = self.get_testcase()?; - if self.keep_all_corpus { - let testcase_name = testcase.testcase.generate_name(0); - trace!( - self.as_conf_object(), - "Writing testcase {}.testcase to corpus directory: {}", - &testcase_name, - self.corpus_directory.display() - ); - - write( - self.corpus_directory - .join(format!("{}.testcase", &testcase_name)), - testcase.testcase.bytes(), - )?; - } - - self.cmplog_enabled = testcase.cmplog; - // TODO: Fix cloning - refcell? - let start_buffer = self - .start_buffer - .get() - .ok_or_else(|| anyhow!("No start buffer"))? - .clone(); - - let start_size = self - .start_size + let start_info = self + .start_info .get() - .ok_or_else(|| anyhow!("No start size"))? + .ok_or_else(|| anyhow!("No start info"))? .clone(); let start_processor = self .start_processor() .ok_or_else(|| anyhow!("No start processor"))?; - start_processor.write_start(testcase.testcase.bytes(), &start_buffer, &start_size)?; + start_processor.write_start(testcase.testcase.bytes(), &start_info)?; Ok(()) } @@ -756,9 +837,9 @@ impl Tsffs { let tsffs: &'static mut Tsffs = tsffs_ptr.into(); info!(tsffs.as_conf_object_mut(), "timeout({:#x})", obj as usize); tsffs - .stop_simulation(StopReason::Solution( - Solution::builder().kind(SolutionKind::Timeout).build(), - )) + .stop_simulation(StopReason::Solution { + kind: SolutionKind::Timeout, + }) .expect("Error calling timeout callback"); }, )?; diff --git a/src/magic/mod.rs b/src/magic/mod.rs new file mode 100644 index 00000000..69b9fc2b --- /dev/null +++ b/src/magic/mod.rs @@ -0,0 +1,24 @@ +//! Magic number definitions + +use std::fmt::Display; + +use num_derive::{FromPrimitive, ToPrimitive}; +#[allow(unused_imports)] +use num_traits::{FromPrimitive as _, ToPrimitive as _}; +use serde::{Deserialize, Serialize}; + +#[repr(i64)] +#[derive(Debug, Copy, Clone, PartialEq, Deserialize, Serialize, FromPrimitive, ToPrimitive)] +pub enum MagicNumber { + StartBufferPtrSizePtr = 1, + StartBufferPtrSizeVal = 2, + StartBufferPtrSizePtrVal = 3, + StopNormal = 4, + StopAssert = 5, +} + +impl Display for MagicNumber { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + write!(f, "{}", *self as i64) + } +} diff --git a/src/state/mod.rs b/src/state/mod.rs index af51a794..23f0cf5c 100644 --- a/src/state/mod.rs +++ b/src/state/mod.rs @@ -12,37 +12,8 @@ use std::{ ptr::null_mut, str::FromStr, }; -use typed_builder::TypedBuilder; -#[derive(Serialize, Deserialize, Debug, Clone)] -pub(crate) enum ManualStartSize { - MaximumSize(u64), - SizeAddress(u64), - NoSize, -} - -#[derive(TypedBuilder, Serialize, Deserialize, Debug, Clone)] -pub(crate) struct ManualStart { - #[builder(default = null_mut())] - #[serde(skip, default = "null_mut")] - pub processor: *mut ConfObject, - #[builder(default, setter(into, strip_option))] - pub buffer: Option, - #[builder(default = ManualStartSize::NoSize)] - pub size: ManualStartSize, - #[builder(default)] - pub virt: bool, -} - -#[derive(TypedBuilder, Serialize, Deserialize, Debug, Clone)] -pub(crate) struct MagicStart { - #[builder(default = null_mut())] - #[serde(skip, default = "null_mut")] - pub processor: *mut ConfObject, -} - -#[derive(TypedBuilder, Serialize, Deserialize, Debug, Clone, Default)] -pub(crate) struct Stop {} +use crate::{magic::MagicNumber, ManualStartInfo}; #[derive(Serialize, Deserialize, Debug, Clone)] pub(crate) enum SolutionKind { @@ -52,21 +23,27 @@ pub(crate) enum SolutionKind { Manual, } -#[derive(TypedBuilder, Serialize, Deserialize, Debug, Clone)] -pub(crate) struct Solution { - pub kind: SolutionKind, -} - #[derive(Debug, Clone, Serialize, Deserialize)] /// Definition of all the reasons the simulator could be stopped by the fuzzer. In general, /// callbacks in the fuzzer, for example [`Driver::on_magic_instruction`] may be called /// asynchronously and stop the simulation. pub(crate) enum StopReason { - MagicStart(MagicStart), - MagicStop(Stop), - ManualStart(ManualStart), - ManualStop(Stop), - Solution(Solution), + Magic { + magic_number: MagicNumber, + }, + ManualStart { + #[serde(skip, default = "null_mut")] + processor: *mut ConfObject, + info: ManualStartInfo, + }, + ManualStartWithoutBuffer { + #[serde(skip, default = "null_mut")] + processor: *mut ConfObject, + }, + ManualStop, + Solution { + kind: SolutionKind, + }, } impl Display for StopReason { diff --git a/tests/riscv_64_kernel_from_userspace_magic.rs b/tests/riscv_64_kernel_from_userspace_magic.rs index 9e37434d..f115f9a3 100644 --- a/tests/riscv_64_kernel_from_userspace_magic.rs +++ b/tests/riscv_64_kernel_from_userspace_magic.rs @@ -41,8 +41,8 @@ fn test_riscv_64_kernel_from_userspace_magic() -> Result<()> { @tsffs.log_level = 2 @tsffs.start_on_harness = True @tsffs.stop_on_harness = True - @tsffs.magic_start = 4 - @tsffs.magic_stop = 5 + @tsffs.magic_start_index = 1 + @tsffs.magic_stop_indices = [1] @tsffs.timeout = 3.0 @tsffs.exceptions = [14] @tsffs.generate_random_corpus = True diff --git a/tests/riscv_64_kernel_magic.rs b/tests/riscv_64_kernel_magic.rs index 82f209ab..8e94bf1f 100644 --- a/tests/riscv_64_kernel_magic.rs +++ b/tests/riscv_64_kernel_magic.rs @@ -46,6 +46,7 @@ fn test_riscv_64_kernel_magic() -> Result<()> { @tsffs.generate_random_corpus = True @tsffs.iteration_limit = 1000 @tsffs.use_snapshots = True + @tsffs.debug_log_libafl = True load-target "risc-v-simple/linux" namespace = riscv machine:hardware:storage:disk1:image = "test.fs.craff" diff --git a/tests/rsrc/build.sh b/tests/rsrc/build.sh index 06751653..42e33d11 100755 --- a/tests/rsrc/build.sh +++ b/tests/rsrc/build.sh @@ -3,6 +3,8 @@ # Copyright (C) 2024 Intel Corporation # SPDX-License-Identifier: Apache-2.0 +set -e + if [ -z "${SIMICS_BASE}" ]; then echo "SIMICS_BASE is not set, defaulting to latest." SIMICS_BASE="$(ispm packages --list-installed --json | jq -r '[ .installedPackages[] | select(.pkgNumber == 1000) ] | ([ .[].version ] | max_by(split(".") | map(tonumber))) as $m | first(first(.[]|select(.version == $m)).paths[0])')" diff --git a/tests/rsrc/riscv-64/Dockerfile b/tests/rsrc/riscv-64/Dockerfile index 6fd70598..422ab4ff 100644 --- a/tests/rsrc/riscv-64/Dockerfile +++ b/tests/rsrc/riscv-64/Dockerfile @@ -1,6 +1,8 @@ # hadolint global ignore=DL3008 FROM ubuntu:22.04 AS buildroot +ARG BUILDROOT_REV="2023.11.x" + SHELL ["/bin/bash", "-o", "pipefail", "-c"] ENV DEBIAN_FRONTEND=noninteractive @@ -20,7 +22,8 @@ RUN apt-get -y update && \ wget RUN git clone \ - https://github.com/buildroot/buildroot.git + https://github.com/buildroot/buildroot.git && \ + git -C buildroot checkout "${BUILDROOT_REV}" WORKDIR /buildroot @@ -31,7 +34,7 @@ COPY simics_simple_riscv_defconfig configs/simics_simple_riscv_defconfig COPY test.c /test/usr/test.c COPY test-mod.c /test/usr/test-mod.c COPY test-mod-userspace.c /test/usr/test-mod-userspace.c -COPY tsffs-gcc-riscv64.h /test/usr/tsffs-gcc-riscv64.h +COPY tsffs.h /test/usr/tsffs.h # Build Linux, Linux Kernel Modules & RootFS # Build size: 7.9G diff --git a/tests/rsrc/riscv-64/build.sh b/tests/rsrc/riscv-64/build.sh index fbf59765..3b507955 100755 --- a/tests/rsrc/riscv-64/build.sh +++ b/tests/rsrc/riscv-64/build.sh @@ -7,6 +7,8 @@ # this only needs to be run if you want to modify the source code for the HelloWorld.efi module, # otherwise, the EFI is included in the source tree for ease of use +set -e + SCRIPT_DIR=$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" &>/dev/null && pwd) IMAGE_NAME="buildroot-build-tsffs-gcc-riscv64-test" @@ -23,8 +25,8 @@ fi pushd "${SCRIPT_DIR}" || exit 1 -cp "${SCRIPT_DIR}/../../../harness/tsffs-gcc-riscv64.h" "${SCRIPT_DIR}/tsffs-gcc-riscv64.h" -cp "${SCRIPT_DIR}/../../../harness/tsffs-gcc-riscv64.h" "${SCRIPT_DIR}/test-kernel-modules/package/kernel-modules/test-mod/tsffs-gcc-riscv64.h" +cp "${SCRIPT_DIR}/../../../harness/tsffs.h" "${SCRIPT_DIR}/tsffs.h" +cp "${SCRIPT_DIR}/../../../harness/tsffs.h" "${SCRIPT_DIR}/test-kernel-modules/package/kernel-modules/test-mod/tsffs.h" mkdir -p "${SCRIPT_DIR}/targets/risc-v-simple/images/linux/" echo "Building container" diff --git a/tests/rsrc/riscv-64/test-kernel-modules/package/kernel-modules/test-mod/test-mod.c b/tests/rsrc/riscv-64/test-kernel-modules/package/kernel-modules/test-mod/test-mod.c index 81a3bb8d..2e548c03 100644 --- a/tests/rsrc/riscv-64/test-kernel-modules/package/kernel-modules/test-mod/test-mod.c +++ b/tests/rsrc/riscv-64/test-kernel-modules/package/kernel-modules/test-mod/test-mod.c @@ -16,7 +16,7 @@ #include #include -#include "tsffs-gcc-riscv64.h" +#include "tsffs.h" #define MAJOR_NUM 100 #define IOCTL_SET_MSG _IOW(MAJOR_NUM, 0, char *) diff --git a/tests/rsrc/riscv-64/test-kernel-modules/package/kernel-modules/test-mod/tsffs-gcc-riscv64.h b/tests/rsrc/riscv-64/test-kernel-modules/package/kernel-modules/test-mod/tsffs-gcc-riscv64.h deleted file mode 100644 index d680ba0d..00000000 --- a/tests/rsrc/riscv-64/test-kernel-modules/package/kernel-modules/test-mod/tsffs-gcc-riscv64.h +++ /dev/null @@ -1,124 +0,0 @@ -// Copyright (C) 2023 Intel Corporation -// SPDX-License-Identifier: Apache-2.0 - -/// Definitions and macros for compiled-in harnessing of C and C++ target -/// software for the RISC-V (64-bit) architecture -/// -/// Example: -/// ```c -/// #include "tsffs-gcc-riscv64.h" -/// -/// int main() { -/// char buf[0x10]; -/// size_t size = 0x10; -/// size_t *size_ptr = &size; -/// HARNESS_START((char *)buf, size_ptr); -/// int retval = YourSpecialDecoder(buf, *size_ptr); -/// if (!retval) { -/// HARNESS_ASSERT(); -/// } else { -/// HARNESS_STOP(); -/// } -/// } -/// ``` - -#ifndef TSFFS_H -#define TSFFS_H - -/// Define common with LibFuzzer and other fuzzers to allow code that is -/// fuzzing-specific to be left in the codebase. See -/// https://llvm.org/docs/LibFuzzer.html#id35 for more information -#ifndef FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION -#define FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION (1) -#endif // FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION - -/// Default magic instruction `n` value to signal the TSFFS fuzzer to start the -/// fuzzing loop -#define MAGIC_START (0x0001U) -/// Default magic instruction `n` value to signal the TSFFS fuzzer to stop and -/// reset the fuzzing loop -#define MAGIC_STOP (0x0002U) -/// Default magic instruction `n` value to signal the TSFFS fuzzer that an error -/// has occurred and the testcase input should be saved as a solution -#define MAGIC_ASSERT (0x0003U) - -/// Alternative magic numbers that can be used for start and stop events in -/// conjunction with setting the magic number for each event via the SIMICS or -/// SIMICS Python script interface -#define MAGIC_ALT_0 (0x0004U) -#define MAGIC_ALT_1 (0x0005U) -#define MAGIC_ALT_2 (0x0006U) -#define MAGIC_ALT_3 (0x0007U) -#define MAGIC_ALT_4 (0x0008U) -#define MAGIC_ALT_5 (0x0009U) -#define MAGIC_ALT_6 (0x000aU) -#define MAGIC_ALT_7 (0x000bU) - -/// Invoke the magic instruction defined by SIMICS for the RISC-V architecture -/// (`srai zero, zero, n`) with a specific value of `n`, after setting register -/// `a0` to the value of the pointer to the testcase and register `a1` to the -/// value of the pointer to the testcase size. These registers are accessed by -/// the fuzzer and are defined per-architecture. -#define __srai_extended(value, testcase_ptr, size_ptr) \ - __asm__ __volatile__("mv a0, %0; mv a1, %1; srai zero, zero, %2" \ - : \ - : "r"(testcase_ptr), "r"(size_ptr), "I"(value) \ - : "a0", "a1"); - -/// Invoke the magic instruction defined by SIMICS for the RISC-V architecture -/// (`srai zero, zero, n`) with a specific value of `n` -#define __srai(value) \ - __asm__ __volatile__("srai zero, zero, %0" : : "I"(value) :) - -/// Signal the fuzzer using a specific magic value `start` to start the fuzzing -/// loop at the point this macro is called. A snapshot will be taken when the -/// macro is called, and the maximum testcase size `*size_ptr` will be saved as -/// `max_testcase_size`. Each iteration of the fuzzing loop, the fuzzer input -/// (the "testcase") will be written to `*testcase_ptr` as if running -/// `memcpy(testcase_ptr, current_testcase, max_testcase_size)`, and the actual -/// size of the current testcase will be written to -/// `*size_ptr` as if running `*size_ptr = current_testcase_size`. -#define __arch_harness_start(start, testcase_ptr, size_ptr) \ - do { \ - __srai_extended(start, testcase_ptr, size_ptr); \ - } while (0) - -/// Signal the fuzzer using the a specific magic value (`stop`) to stop and -/// reset to the beginning of the fuzzing loop with a "normal" stop status, -/// indicating no solution has occurred. -#define __arch_harness_stop(stop) \ - do { \ - __srai(stop); \ - } while (0) - -/// Signal the fuzzer using the default magic value to start the fuzzing loop at -/// the point this macro is called. A snapshot will be taken when the macro is -/// called, and the maximum testcase size `*size_ptr` will be saved as -/// `max_testcase_size`. Each iteration of the fuzzing loop, the fuzzer input -/// (the "testcase") will be written to -/// `*testcase_ptr` as if running `memcpy(testcase_ptr, current_testcase, -/// max_testcase_size)`, and the actual size of the current testcase will be -/// written to -/// `*size_ptr` as if running `*size_ptr = current_testcase_size`. -#define HARNESS_START(testcase_ptr, size_ptr) \ - do { \ - __arch_harness_start(MAGIC_START, testcase_ptr, size_ptr); \ - } while (0) - -/// Signal the fuzzer using the default magic value to stop and reset to the -/// beginning of the fuzzing loop with a "normal" stop status, indicating no -/// solution has occurred. -#define HARNESS_STOP() \ - do { \ - __arch_harness_stop(MAGIC_STOP); \ - } while (0) - -/// Signal the fuzzer using the default magic value to stop and reset to the -/// beginning of the fuzzing loop with a "solution" stop status, indicating some -/// custom error has occurred. -#define HARNESS_ASSERT() \ - do { \ - __arch_harness_stop(MAGIC_ASSERT); \ - } while (0) - -#endif // TSFFS_H \ No newline at end of file diff --git a/tests/rsrc/riscv-64/test-mod-userspace.c b/tests/rsrc/riscv-64/test-mod-userspace.c index c7db73a1..699b9144 100644 --- a/tests/rsrc/riscv-64/test-mod-userspace.c +++ b/tests/rsrc/riscv-64/test-mod-userspace.c @@ -8,7 +8,7 @@ #include #include -#include "tsffs-gcc-riscv64.h" +#include "tsffs.h" #define MAJOR_NUM 100 #define IOCTL_SET_MSG _IOW(MAJOR_NUM, 0, char *) @@ -76,11 +76,11 @@ int main(void) { size_t msg_size = 80; size_t *msg_size_ptr = &msg_size; - __arch_harness_start(MAGIC_ALT_0, msg, msg_size_ptr); + HARNESS_START_INDEX(1, msg, msg_size_ptr); ret_val = ioctl_set_msg(file_desc, msg); - __arch_harness_stop(MAGIC_ALT_1); + HARNESS_STOP_INDEX(1); if (ret_val) goto error; @@ -89,4 +89,4 @@ int main(void) { error: close(file_desc); exit(EXIT_FAILURE); -} \ No newline at end of file +} diff --git a/tests/rsrc/riscv-64/test.c b/tests/rsrc/riscv-64/test.c index 7bb2926c..648f824f 100644 --- a/tests/rsrc/riscv-64/test.c +++ b/tests/rsrc/riscv-64/test.c @@ -5,7 +5,7 @@ #include #include -#include "tsffs-gcc-riscv64.h" +#include "tsffs.h" const char *password = "fuzzing!"; diff --git a/tests/rsrc/riscv-64/tsffs-gcc-riscv64.h b/tests/rsrc/riscv-64/tsffs-gcc-riscv64.h deleted file mode 100644 index d680ba0d..00000000 --- a/tests/rsrc/riscv-64/tsffs-gcc-riscv64.h +++ /dev/null @@ -1,124 +0,0 @@ -// Copyright (C) 2023 Intel Corporation -// SPDX-License-Identifier: Apache-2.0 - -/// Definitions and macros for compiled-in harnessing of C and C++ target -/// software for the RISC-V (64-bit) architecture -/// -/// Example: -/// ```c -/// #include "tsffs-gcc-riscv64.h" -/// -/// int main() { -/// char buf[0x10]; -/// size_t size = 0x10; -/// size_t *size_ptr = &size; -/// HARNESS_START((char *)buf, size_ptr); -/// int retval = YourSpecialDecoder(buf, *size_ptr); -/// if (!retval) { -/// HARNESS_ASSERT(); -/// } else { -/// HARNESS_STOP(); -/// } -/// } -/// ``` - -#ifndef TSFFS_H -#define TSFFS_H - -/// Define common with LibFuzzer and other fuzzers to allow code that is -/// fuzzing-specific to be left in the codebase. See -/// https://llvm.org/docs/LibFuzzer.html#id35 for more information -#ifndef FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION -#define FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION (1) -#endif // FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION - -/// Default magic instruction `n` value to signal the TSFFS fuzzer to start the -/// fuzzing loop -#define MAGIC_START (0x0001U) -/// Default magic instruction `n` value to signal the TSFFS fuzzer to stop and -/// reset the fuzzing loop -#define MAGIC_STOP (0x0002U) -/// Default magic instruction `n` value to signal the TSFFS fuzzer that an error -/// has occurred and the testcase input should be saved as a solution -#define MAGIC_ASSERT (0x0003U) - -/// Alternative magic numbers that can be used for start and stop events in -/// conjunction with setting the magic number for each event via the SIMICS or -/// SIMICS Python script interface -#define MAGIC_ALT_0 (0x0004U) -#define MAGIC_ALT_1 (0x0005U) -#define MAGIC_ALT_2 (0x0006U) -#define MAGIC_ALT_3 (0x0007U) -#define MAGIC_ALT_4 (0x0008U) -#define MAGIC_ALT_5 (0x0009U) -#define MAGIC_ALT_6 (0x000aU) -#define MAGIC_ALT_7 (0x000bU) - -/// Invoke the magic instruction defined by SIMICS for the RISC-V architecture -/// (`srai zero, zero, n`) with a specific value of `n`, after setting register -/// `a0` to the value of the pointer to the testcase and register `a1` to the -/// value of the pointer to the testcase size. These registers are accessed by -/// the fuzzer and are defined per-architecture. -#define __srai_extended(value, testcase_ptr, size_ptr) \ - __asm__ __volatile__("mv a0, %0; mv a1, %1; srai zero, zero, %2" \ - : \ - : "r"(testcase_ptr), "r"(size_ptr), "I"(value) \ - : "a0", "a1"); - -/// Invoke the magic instruction defined by SIMICS for the RISC-V architecture -/// (`srai zero, zero, n`) with a specific value of `n` -#define __srai(value) \ - __asm__ __volatile__("srai zero, zero, %0" : : "I"(value) :) - -/// Signal the fuzzer using a specific magic value `start` to start the fuzzing -/// loop at the point this macro is called. A snapshot will be taken when the -/// macro is called, and the maximum testcase size `*size_ptr` will be saved as -/// `max_testcase_size`. Each iteration of the fuzzing loop, the fuzzer input -/// (the "testcase") will be written to `*testcase_ptr` as if running -/// `memcpy(testcase_ptr, current_testcase, max_testcase_size)`, and the actual -/// size of the current testcase will be written to -/// `*size_ptr` as if running `*size_ptr = current_testcase_size`. -#define __arch_harness_start(start, testcase_ptr, size_ptr) \ - do { \ - __srai_extended(start, testcase_ptr, size_ptr); \ - } while (0) - -/// Signal the fuzzer using the a specific magic value (`stop`) to stop and -/// reset to the beginning of the fuzzing loop with a "normal" stop status, -/// indicating no solution has occurred. -#define __arch_harness_stop(stop) \ - do { \ - __srai(stop); \ - } while (0) - -/// Signal the fuzzer using the default magic value to start the fuzzing loop at -/// the point this macro is called. A snapshot will be taken when the macro is -/// called, and the maximum testcase size `*size_ptr` will be saved as -/// `max_testcase_size`. Each iteration of the fuzzing loop, the fuzzer input -/// (the "testcase") will be written to -/// `*testcase_ptr` as if running `memcpy(testcase_ptr, current_testcase, -/// max_testcase_size)`, and the actual size of the current testcase will be -/// written to -/// `*size_ptr` as if running `*size_ptr = current_testcase_size`. -#define HARNESS_START(testcase_ptr, size_ptr) \ - do { \ - __arch_harness_start(MAGIC_START, testcase_ptr, size_ptr); \ - } while (0) - -/// Signal the fuzzer using the default magic value to stop and reset to the -/// beginning of the fuzzing loop with a "normal" stop status, indicating no -/// solution has occurred. -#define HARNESS_STOP() \ - do { \ - __arch_harness_stop(MAGIC_STOP); \ - } while (0) - -/// Signal the fuzzer using the default magic value to stop and reset to the -/// beginning of the fuzzing loop with a "solution" stop status, indicating some -/// custom error has occurred. -#define HARNESS_ASSERT() \ - do { \ - __arch_harness_stop(MAGIC_ASSERT); \ - } while (0) - -#endif // TSFFS_H \ No newline at end of file diff --git a/tests/rsrc/x86-user/build.sh b/tests/rsrc/x86-user/build.sh index 58532e4d..a035fbc4 100755 --- a/tests/rsrc/x86-user/build.sh +++ b/tests/rsrc/x86-user/build.sh @@ -14,7 +14,7 @@ if [ -n "${SIMICS_BASE}" ]; then fi -cp "${SCRIPT_DIR}/../../../harness/tsffs-gcc-x86.h" "${SCRIPT_DIR}/tsffs-gcc-x86.h" +cp "${SCRIPT_DIR}/../../../harness/tsffs.h" "${SCRIPT_DIR}/tsffs.h" cp "${SCRIPT_DIR}/../../rsrc/minimal_boot_disk.craff" "${SCRIPT_DIR}/minimal_boot_disk.craff" ninja diff --git a/tests/rsrc/x86-user/minimal_boot_disk.craff b/tests/rsrc/x86-user/minimal_boot_disk.craff deleted file mode 100644 index 2488b728..00000000 --- a/tests/rsrc/x86-user/minimal_boot_disk.craff +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:8ffab484ad42b567214be5a6a7245e2385a30964dd5438035a963ebc19126e36 -size 11505650 diff --git a/tests/rsrc/x86-user/test.c b/tests/rsrc/x86-user/test.c index 6a0e37a9..32f8025d 100644 --- a/tests/rsrc/x86-user/test.c +++ b/tests/rsrc/x86-user/test.c @@ -6,7 +6,7 @@ #include #include -#include "tsffs-gcc-x86.h" +#include "tsffs.h" const char hex[] = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'}; diff --git a/tests/rsrc/x86-user/tsffs-gcc-riscv64.h b/tests/rsrc/x86-user/tsffs-gcc-riscv64.h deleted file mode 100644 index 24243dcc..00000000 --- a/tests/rsrc/x86-user/tsffs-gcc-riscv64.h +++ /dev/null @@ -1,42 +0,0 @@ -#ifndef TSFFS_H -#define TSFFS_H - -/// TSFFS Magic Include - -// GCC EASM notes: -// - The stack pointer is required to be the same on exit to an asm block as it -// was on entry - -#define MAGIC_START (0x0001U) -#define MAGIC_STOP (0x0002U) - -#define __srai_extended(value, testcase_ptr, size_ptr) \ - __asm__ __volatile__("mv a0, %0; mv a1, %1; srai zero, zero, %2" \ - : \ - : "r"(testcase_ptr), "r"(size_ptr), "I"(value) \ - : "a0", "a1"); - -#define __srai(value) \ - __asm__ __volatile__("srai zero, zero, %0" : : "I"(value) :) - -#define __arch_harness_start(start, testcase_ptr, size_ptr) \ - do { \ - __srai_extended(start, testcase_ptr, size_ptr); \ - } while (0) - -#define __arch_harness_stop(stop) \ - do { \ - __srai(stop); \ - } while (0) - -#define HARNESS_START(testcase_ptr, size_ptr) \ - do { \ - __arch_harness_start(MAGIC_START, testcase_ptr, size_ptr); \ - } while (0) - -#define HARNESS_STOP() \ - do { \ - __arch_harness_stop(MAGIC_STOP); \ - } while (0) - -#endif // TSFFS_H \ No newline at end of file diff --git a/tests/rsrc/x86-user/tsffs-gcc-x86.h b/tests/rsrc/x86-user/tsffs-gcc-x86.h deleted file mode 100644 index ba6a8053..00000000 --- a/tests/rsrc/x86-user/tsffs-gcc-x86.h +++ /dev/null @@ -1,134 +0,0 @@ -// Copyright (C) 2023 Intel Corporation -// SPDX-License-Identifier: Apache-2.0 - -/// Definitions and macros for compiled-in harnessing of C and C++ target -/// software for the RISC-V (64-bit) architecture -/// -/// Example: -/// ```c -/// #include "tsffs-gcc-x86.h" -/// -/// int main() { -/// char buf[0x10]; -/// size_t size = 0x10; -/// size_t *size_ptr = &size; -/// HARNESS_START((char *)buf, size_ptr); -/// int retval = YourSpecialDecoder(buf, *size_ptr); -/// if (!retval) { -/// HARNESS_ASSERT(); -/// } else { -/// HARNESS_STOP(); -/// } -/// } -/// ``` - -#ifndef TSFFS_H -#define TSFFS_H - -/// Define common with LibFuzzer and other fuzzers to allow code that is -/// fuzzing-specific to be left in the codebase. See -/// https://llvm.org/docs/LibFuzzer.html#id35 for more information -#ifndef FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION -#define FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION (1) -#endif // FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION - -/// Magic value defined by SIMICS as the "leaf" value of a CPUID instruction -/// that is treated as a magic instruction. -#define MAGIC (0x4711U) -/// Default magic instruction `n` value to signal the TSFFS fuzzer to start the -/// fuzzing loop -#define MAGIC_START (0x0001U) -/// Default magic instruction `n` value to signal the TSFFS fuzzer to stop and -/// reset the fuzzing loop -#define MAGIC_STOP (0x0002U) -/// Default magic instruction `n` value to signal the TSFFS fuzzer that an error -/// has occurred and the testcase input should be saved as a solution -#define MAGIC_ASSERT (0x0003U) - -/// Alternative magic numbers that can be used for start and stop events in -/// conjunction with setting the magic number for each event via the SIMICS or -/// SIMICS Python script interface -#define MAGIC_ALT_0 (0x0004U) -#define MAGIC_ALT_1 (0x0005U) -#define MAGIC_ALT_2 (0x0006U) -#define MAGIC_ALT_3 (0x0007U) -#define MAGIC_ALT_4 (0x0008U) -#define MAGIC_ALT_5 (0x0009U) -#define MAGIC_ALT_6 (0x000aU) -#define MAGIC_ALT_7 (0x000bU) - -/// Invoke the magic instruction defined by SIMICS for the x86 architecture -/// (`cpuid`) with a specific value of `n`, after setting register `edi` to the -/// value of the pointer to the testcase and register `esi` to the value of the -/// pointer to the testcase size. These registers are accessed by the fuzzer and -/// are defined per-architecture. -#define __cpuid_extended2(value, inout_ptr_0, inout_ptr_1) \ - unsigned int _a __attribute__((unused)) = 0; \ - __asm__ __volatile__("cpuid" \ - : "=a"(_a) \ - : "a"(value), "D"(inout_ptr_0), "S"(inout_ptr_1) \ - : "ebx", "ecx", "edx"); - -/// Invoke the magic instruction defined by SIMICS for the x86 architecture -/// (`cpuid`) with a specific value of `n` -#define __cpuid(value) \ - unsigned int _a __attribute__((unused)) = 0; \ - __asm__ __volatile__("cpuid\n\t" \ - : "=a"(_a) \ - : "a"(value) \ - : "ebx", "ecx", "edx") - -/// Signal the fuzzer using a specific magic value `start` to start the fuzzing -/// loop at the point this macro is called. A snapshot will be taken when the -/// macro is called, and the maximum testcase size `*size_ptr` will be saved as -/// `max_testcase_size`. Each iteration of the fuzzing loop, the fuzzer input -/// (the "testcase") will be written to `*testcase_ptr` as if running -/// `memcpy(testcase_ptr, current_testcase, max_testcase_size)`, and the actual -/// size of the current testcase will be written to -/// `*size_ptr` as if running `*size_ptr = current_testcase_size`. -#define __arch_harness_start(start, testcase_ptr, size_ptr) \ - do { \ - unsigned int magic = (start << 0x10U) | MAGIC; \ - __cpuid_extended2(magic, testcase_ptr, size_ptr); \ - } while (0) - -/// Signal the fuzzer using the a specific magic value (`stop`) to stop and -/// reset to the beginning of the fuzzing loop with a "normal" stop status, -/// indicating no solution has occurred. -#define __arch_harness_stop(stop) \ - do { \ - unsigned int magic = (stop << 0x10U) | MAGIC; \ - __cpuid(magic); \ - } while (0) - -/// Signal the fuzzer using the default magic value to start the fuzzing loop at -/// the point this macro is called. A snapshot will be taken when the macro is -/// called, and the maximum testcase size `*size_ptr` will be saved as -/// `max_testcase_size`. Each iteration of the fuzzing loop, the fuzzer input -/// (the "testcase") will be written to -/// `*testcase_ptr` as if running `memcpy(testcase_ptr, current_testcase, -/// max_testcase_size)`, and the actual size of the current testcase will be -/// written to -/// `*size_ptr` as if running `*size_ptr = current_testcase_size`. -#define HARNESS_START(testcase_ptr, size_ptr) \ - do { \ - __arch_harness_start(MAGIC_START, testcase_ptr, size_ptr); \ - } while (0) - -/// Signal the fuzzer using the default magic value to stop and reset to the -/// beginning of the fuzzing loop with a "normal" stop status, indicating no -/// solution has occurred. -#define HARNESS_STOP() \ - do { \ - __arch_harness_stop(MAGIC_STOP); \ - } while (0) - -/// Signal the fuzzer using the default magic value to stop and reset to the -/// beginning of the fuzzing loop with a "solution" stop status, indicating some -/// custom error has occurred. -#define HARNESS_ASSERT() \ - do { \ - __arch_harness_stop(MAGIC_ASSERT); \ - } while (0) - -#endif // TSFFS_H \ No newline at end of file diff --git a/tests/rsrc/x86_64-breakpoint-uefi-edk2/.gitignore b/tests/rsrc/x86_64-breakpoint-uefi-edk2/.gitignore index 9564f30d..23b63b94 100644 --- a/tests/rsrc/x86_64-breakpoint-uefi-edk2/.gitignore +++ b/tests/rsrc/x86_64-breakpoint-uefi-edk2/.gitignore @@ -1,2 +1,3 @@ .ninja_log -test.efi \ No newline at end of file +test.efi +*.craff \ No newline at end of file diff --git a/tests/rsrc/x86_64-breakpoint-uefi-edk2/build.sh b/tests/rsrc/x86_64-breakpoint-uefi-edk2/build.sh index e49d87f9..095ac026 100755 --- a/tests/rsrc/x86_64-breakpoint-uefi-edk2/build.sh +++ b/tests/rsrc/x86_64-breakpoint-uefi-edk2/build.sh @@ -7,6 +7,8 @@ # this only needs to be run if you want to modify the source code for the HelloWorld.efi module, # otherwise, the EFI is included in the source tree for ease of use +set -e + SCRIPT_DIR=$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" &>/dev/null && pwd) IMAGE_NAME="edk2-build-tsffs-gcc-x86_64-test-breakpoint" CONTAINER_UID=$(echo "${RANDOM}" | sha256sum | head -c 8) @@ -14,8 +16,8 @@ CONTAINER_NAME="${IMAGE_NAME}-tmp-${CONTAINER_UID}" pushd "${SCRIPT_DIR}" || exit 1 -cp "${SCRIPT_DIR}/../../../harness/tsffs-gcc-x86_64.h" "${SCRIPT_DIR}/src/tsffs-gcc-x86_64.h" -cp "${SCRIPT_DIR}/../rsrc/minimal_boot_disk.craff" "${SCRIPT_DIR}/minimal_boot_disk.craff" +cp "${SCRIPT_DIR}/../../../harness/tsffs.h" "${SCRIPT_DIR}/src/tsffs.h" +cp "${SCRIPT_DIR}/../minimal_boot_disk.craff" "${SCRIPT_DIR}/minimal_boot_disk.craff" docker buildx build -t "${IMAGE_NAME}" -f "Dockerfile" . docker create --name "${CONTAINER_NAME}" "${IMAGE_NAME}" diff --git a/tests/rsrc/x86_64-breakpoint-uefi-edk2/src/HelloWorld.c b/tests/rsrc/x86_64-breakpoint-uefi-edk2/src/HelloWorld.c index 8cb5b92b..d8d0c953 100644 --- a/tests/rsrc/x86_64-breakpoint-uefi-edk2/src/HelloWorld.c +++ b/tests/rsrc/x86_64-breakpoint-uefi-edk2/src/HelloWorld.c @@ -16,7 +16,7 @@ #include #include -#include "tsffs-gcc-x86_64.h" +#include "tsffs.h" /** The user Entry Point for Application. The user code starts with this function diff --git a/tests/rsrc/x86_64-breakpoint-uefi-edk2/src/tsffs-gcc-x86_64.h b/tests/rsrc/x86_64-breakpoint-uefi-edk2/src/tsffs-gcc-x86_64.h deleted file mode 100644 index 706f9946..00000000 --- a/tests/rsrc/x86_64-breakpoint-uefi-edk2/src/tsffs-gcc-x86_64.h +++ /dev/null @@ -1,134 +0,0 @@ -// Copyright (C) 2023 Intel Corporation -// SPDX-License-Identifier: Apache-2.0 - -/// Definitions and macros for compiled-in harnessing of C and C++ target -/// software for the RISC-V (64-bit) architecture -/// -/// Example: -/// ```c -/// #include "tsffs-gcc-x86_64.h" -/// -/// int main() { -/// char buf[0x10]; -/// size_t size = 0x10; -/// size_t *size_ptr = &size; -/// HARNESS_START((char *)buf, size_ptr); -/// int retval = YourSpecialDecoder(buf, *size_ptr); -/// if (!retval) { -/// HARNESS_ASSERT(); -/// } else { -/// HARNESS_STOP(); -/// } -/// } -/// ``` - -#ifndef TSFFS_H -#define TSFFS_H - -/// Define common with LibFuzzer and other fuzzers to allow code that is -/// fuzzing-specific to be left in the codebase. See -/// https://llvm.org/docs/LibFuzzer.html#id35 for more information -#ifndef FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION -#define FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION (1) -#endif // FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION - -/// Magic value defined by SIMICS as the "leaf" value of a CPUID instruction -/// that is treated as a magic instruction. -#define MAGIC (0x4711U) -/// Default magic instruction `n` value to signal the TSFFS fuzzer to start the -/// fuzzing loop -#define MAGIC_START (0x0001U) -/// Default magic instruction `n` value to signal the TSFFS fuzzer to stop and -/// reset the fuzzing loop -#define MAGIC_STOP (0x0002U) -/// Default magic instruction `n` value to signal the TSFFS fuzzer that an error -/// has occurred and the testcase input should be saved as a solution -#define MAGIC_ASSERT (0x0003U) - -/// Alternative magic numbers that can be used for start and stop events in -/// conjunction with setting the magic number for each event via the SIMICS or -/// SIMICS Python script interface -#define MAGIC_ALT_0 (0x0004U) -#define MAGIC_ALT_1 (0x0005U) -#define MAGIC_ALT_2 (0x0006U) -#define MAGIC_ALT_3 (0x0007U) -#define MAGIC_ALT_4 (0x0008U) -#define MAGIC_ALT_5 (0x0009U) -#define MAGIC_ALT_6 (0x000aU) -#define MAGIC_ALT_7 (0x000bU) - -/// Invoke the magic instruction defined by SIMICS for the x86-64 architecture -/// (`cpuid`) with a specific value of `n`, after setting register `rdi` to the -/// value of the pointer to the testcase and register `rsi` to the value of the -/// pointer to the testcase size. These registers are accessed by the fuzzer and -/// are defined per-architecture. -#define __cpuid_extended2(value, inout_ptr_0, inout_ptr_1) \ - unsigned int _a __attribute__((unused)) = 0; \ - __asm__ __volatile__("cpuid" \ - : "=a"(_a) \ - : "a"(value), "D"(inout_ptr_0), "S"(inout_ptr_1) \ - : "rbx", "rcx", "rdx"); - -/// Invoke the magic instruction defined by SIMICS for the x86-64 architecture -/// (`cpuid`) with a specific value of `n` -#define __cpuid(value) \ - unsigned int _a __attribute__((unused)) = 0; \ - __asm__ __volatile__("cpuid\n\t" \ - : "=a"(_a) \ - : "a"(value) \ - : "rbx", "rcx", "rdx") - -/// Signal the fuzzer using a specific magic value `start` to start the fuzzing -/// loop at the point this macro is called. A snapshot will be taken when the -/// macro is called, and the maximum testcase size `*size_ptr` will be saved as -/// `max_testcase_size`. Each iteration of the fuzzing loop, the fuzzer input -/// (the "testcase") will be written to `*testcase_ptr` as if running -/// `memcpy(testcase_ptr, current_testcase, max_testcase_size)`, and the actual -/// size of the current testcase will be written to -/// `*size_ptr` as if running `*size_ptr = current_testcase_size`. -#define __arch_harness_start(start, testcase_ptr, size_ptr) \ - do { \ - unsigned int magic = (start << 0x10U) | MAGIC; \ - __cpuid_extended2(magic, testcase_ptr, size_ptr); \ - } while (0) - -/// Signal the fuzzer using the a specific magic value (`stop`) to stop and -/// reset to the beginning of the fuzzing loop with a "normal" stop status, -/// indicating no solution has occurred. -#define __arch_harness_stop(stop) \ - do { \ - unsigned int magic = (stop << 0x10U) | MAGIC; \ - __cpuid(magic); \ - } while (0) - -/// Signal the fuzzer using the default magic value to start the fuzzing loop at -/// the point this macro is called. A snapshot will be taken when the macro is -/// called, and the maximum testcase size `*size_ptr` will be saved as -/// `max_testcase_size`. Each iteration of the fuzzing loop, the fuzzer input -/// (the "testcase") will be written to -/// `*testcase_ptr` as if running `memcpy(testcase_ptr, current_testcase, -/// max_testcase_size)`, and the actual size of the current testcase will be -/// written to -/// `*size_ptr` as if running `*size_ptr = current_testcase_size`. -#define HARNESS_START(testcase_ptr, size_ptr) \ - do { \ - __arch_harness_start(MAGIC_START, testcase_ptr, size_ptr); \ - } while (0) - -/// Signal the fuzzer using the default magic value to stop and reset to the -/// beginning of the fuzzing loop with a "normal" stop status, indicating no -/// solution has occurred. -#define HARNESS_STOP() \ - do { \ - __arch_harness_stop(MAGIC_STOP); \ - } while (0) - -/// Signal the fuzzer using the default magic value to stop and reset to the -/// beginning of the fuzzing loop with a "solution" stop status, indicating some -/// custom error has occurred. -#define HARNESS_ASSERT() \ - do { \ - __arch_harness_stop(MAGIC_ASSERT); \ - } while (0) - -#endif // TSFFS_H \ No newline at end of file diff --git a/tests/rsrc/x86_64-crash-uefi/build.sh b/tests/rsrc/x86_64-crash-uefi/build.sh index bf1f8940..2eb84040 100755 --- a/tests/rsrc/x86_64-crash-uefi/build.sh +++ b/tests/rsrc/x86_64-crash-uefi/build.sh @@ -3,9 +3,11 @@ # Copyright (C) 2024 Intel Corporation # SPDX-License-Identifier: Apache-2.0 +set -e + SCRIPT_DIR=$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" &>/dev/null && pwd) -cp "${SCRIPT_DIR}/../../../harness/tsffs-gcc-x86_64.h" "${SCRIPT_DIR}/tsffs-gcc-x86_64.h" +cp "${SCRIPT_DIR}/../../../harness/tsffs.h" "${SCRIPT_DIR}/tsffs.h" cp "${SCRIPT_DIR}/../../rsrc/minimal_boot_disk.craff" "${SCRIPT_DIR}/minimal_boot_disk.craff" ninja \ No newline at end of file diff --git a/tests/rsrc/x86_64-crash-uefi/minimal_boot_disk.craff b/tests/rsrc/x86_64-crash-uefi/minimal_boot_disk.craff deleted file mode 100644 index 2488b728..00000000 --- a/tests/rsrc/x86_64-crash-uefi/minimal_boot_disk.craff +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:8ffab484ad42b567214be5a6a7245e2385a30964dd5438035a963ebc19126e36 -size 11505650 diff --git a/tests/rsrc/x86_64-crash-uefi/test.c b/tests/rsrc/x86_64-crash-uefi/test.c index d33221a8..9c623455 100644 --- a/tests/rsrc/x86_64-crash-uefi/test.c +++ b/tests/rsrc/x86_64-crash-uefi/test.c @@ -4,7 +4,7 @@ #include #include -#include "tsffs-gcc-x86_64.h" +#include "tsffs.h" typedef struct EfiTableHeader { uint64_t signature; diff --git a/tests/rsrc/x86_64-crash-uefi/tsffs-gcc-x86_64.h b/tests/rsrc/x86_64-crash-uefi/tsffs-gcc-x86_64.h deleted file mode 100644 index 706f9946..00000000 --- a/tests/rsrc/x86_64-crash-uefi/tsffs-gcc-x86_64.h +++ /dev/null @@ -1,134 +0,0 @@ -// Copyright (C) 2023 Intel Corporation -// SPDX-License-Identifier: Apache-2.0 - -/// Definitions and macros for compiled-in harnessing of C and C++ target -/// software for the RISC-V (64-bit) architecture -/// -/// Example: -/// ```c -/// #include "tsffs-gcc-x86_64.h" -/// -/// int main() { -/// char buf[0x10]; -/// size_t size = 0x10; -/// size_t *size_ptr = &size; -/// HARNESS_START((char *)buf, size_ptr); -/// int retval = YourSpecialDecoder(buf, *size_ptr); -/// if (!retval) { -/// HARNESS_ASSERT(); -/// } else { -/// HARNESS_STOP(); -/// } -/// } -/// ``` - -#ifndef TSFFS_H -#define TSFFS_H - -/// Define common with LibFuzzer and other fuzzers to allow code that is -/// fuzzing-specific to be left in the codebase. See -/// https://llvm.org/docs/LibFuzzer.html#id35 for more information -#ifndef FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION -#define FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION (1) -#endif // FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION - -/// Magic value defined by SIMICS as the "leaf" value of a CPUID instruction -/// that is treated as a magic instruction. -#define MAGIC (0x4711U) -/// Default magic instruction `n` value to signal the TSFFS fuzzer to start the -/// fuzzing loop -#define MAGIC_START (0x0001U) -/// Default magic instruction `n` value to signal the TSFFS fuzzer to stop and -/// reset the fuzzing loop -#define MAGIC_STOP (0x0002U) -/// Default magic instruction `n` value to signal the TSFFS fuzzer that an error -/// has occurred and the testcase input should be saved as a solution -#define MAGIC_ASSERT (0x0003U) - -/// Alternative magic numbers that can be used for start and stop events in -/// conjunction with setting the magic number for each event via the SIMICS or -/// SIMICS Python script interface -#define MAGIC_ALT_0 (0x0004U) -#define MAGIC_ALT_1 (0x0005U) -#define MAGIC_ALT_2 (0x0006U) -#define MAGIC_ALT_3 (0x0007U) -#define MAGIC_ALT_4 (0x0008U) -#define MAGIC_ALT_5 (0x0009U) -#define MAGIC_ALT_6 (0x000aU) -#define MAGIC_ALT_7 (0x000bU) - -/// Invoke the magic instruction defined by SIMICS for the x86-64 architecture -/// (`cpuid`) with a specific value of `n`, after setting register `rdi` to the -/// value of the pointer to the testcase and register `rsi` to the value of the -/// pointer to the testcase size. These registers are accessed by the fuzzer and -/// are defined per-architecture. -#define __cpuid_extended2(value, inout_ptr_0, inout_ptr_1) \ - unsigned int _a __attribute__((unused)) = 0; \ - __asm__ __volatile__("cpuid" \ - : "=a"(_a) \ - : "a"(value), "D"(inout_ptr_0), "S"(inout_ptr_1) \ - : "rbx", "rcx", "rdx"); - -/// Invoke the magic instruction defined by SIMICS for the x86-64 architecture -/// (`cpuid`) with a specific value of `n` -#define __cpuid(value) \ - unsigned int _a __attribute__((unused)) = 0; \ - __asm__ __volatile__("cpuid\n\t" \ - : "=a"(_a) \ - : "a"(value) \ - : "rbx", "rcx", "rdx") - -/// Signal the fuzzer using a specific magic value `start` to start the fuzzing -/// loop at the point this macro is called. A snapshot will be taken when the -/// macro is called, and the maximum testcase size `*size_ptr` will be saved as -/// `max_testcase_size`. Each iteration of the fuzzing loop, the fuzzer input -/// (the "testcase") will be written to `*testcase_ptr` as if running -/// `memcpy(testcase_ptr, current_testcase, max_testcase_size)`, and the actual -/// size of the current testcase will be written to -/// `*size_ptr` as if running `*size_ptr = current_testcase_size`. -#define __arch_harness_start(start, testcase_ptr, size_ptr) \ - do { \ - unsigned int magic = (start << 0x10U) | MAGIC; \ - __cpuid_extended2(magic, testcase_ptr, size_ptr); \ - } while (0) - -/// Signal the fuzzer using the a specific magic value (`stop`) to stop and -/// reset to the beginning of the fuzzing loop with a "normal" stop status, -/// indicating no solution has occurred. -#define __arch_harness_stop(stop) \ - do { \ - unsigned int magic = (stop << 0x10U) | MAGIC; \ - __cpuid(magic); \ - } while (0) - -/// Signal the fuzzer using the default magic value to start the fuzzing loop at -/// the point this macro is called. A snapshot will be taken when the macro is -/// called, and the maximum testcase size `*size_ptr` will be saved as -/// `max_testcase_size`. Each iteration of the fuzzing loop, the fuzzer input -/// (the "testcase") will be written to -/// `*testcase_ptr` as if running `memcpy(testcase_ptr, current_testcase, -/// max_testcase_size)`, and the actual size of the current testcase will be -/// written to -/// `*size_ptr` as if running `*size_ptr = current_testcase_size`. -#define HARNESS_START(testcase_ptr, size_ptr) \ - do { \ - __arch_harness_start(MAGIC_START, testcase_ptr, size_ptr); \ - } while (0) - -/// Signal the fuzzer using the default magic value to stop and reset to the -/// beginning of the fuzzing loop with a "normal" stop status, indicating no -/// solution has occurred. -#define HARNESS_STOP() \ - do { \ - __arch_harness_stop(MAGIC_STOP); \ - } while (0) - -/// Signal the fuzzer using the default magic value to stop and reset to the -/// beginning of the fuzzing loop with a "solution" stop status, indicating some -/// custom error has occurred. -#define HARNESS_ASSERT() \ - do { \ - __arch_harness_stop(MAGIC_ASSERT); \ - } while (0) - -#endif // TSFFS_H \ No newline at end of file diff --git a/tests/rsrc/x86_64-timeout-uefi-edk2/build.sh b/tests/rsrc/x86_64-timeout-uefi-edk2/build.sh index 64a2aed1..d99f0d10 100755 --- a/tests/rsrc/x86_64-timeout-uefi-edk2/build.sh +++ b/tests/rsrc/x86_64-timeout-uefi-edk2/build.sh @@ -7,6 +7,8 @@ # this only needs to be run if you want to modify the source code for the HelloWorld.efi module, # otherwise, the EFI is included in the source tree for ease of use +set -e + SCRIPT_DIR=$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" &>/dev/null && pwd) IMAGE_NAME="edk2-build-tsffs-gcc-x86_64-test" CONTAINER_UID=$(echo "${RANDOM}" | sha256sum | head -c 8) @@ -14,7 +16,7 @@ CONTAINER_NAME="${IMAGE_NAME}-tmp-${CONTAINER_UID}" pushd "${SCRIPT_DIR}" || exit 1 -cp "${SCRIPT_DIR}/../../../harness/tsffs-gcc-x86_64.h" "${SCRIPT_DIR}/src/tsffs-gcc-x86_64.h" +cp "${SCRIPT_DIR}/../../../harness/tsffs.h" "${SCRIPT_DIR}/src/tsffs.h" cp "${SCRIPT_DIR}/../../rsrc/minimal_boot_disk.craff" "${SCRIPT_DIR}/minimal_boot_disk.craff" docker buildx build -t "${IMAGE_NAME}" -f "Dockerfile" . diff --git a/tests/rsrc/x86_64-timeout-uefi-edk2/minimal_boot_disk.craff b/tests/rsrc/x86_64-timeout-uefi-edk2/minimal_boot_disk.craff deleted file mode 100644 index 2488b728..00000000 --- a/tests/rsrc/x86_64-timeout-uefi-edk2/minimal_boot_disk.craff +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:8ffab484ad42b567214be5a6a7245e2385a30964dd5438035a963ebc19126e36 -size 11505650 diff --git a/tests/rsrc/x86_64-timeout-uefi-edk2/src/HelloWorld.c b/tests/rsrc/x86_64-timeout-uefi-edk2/src/HelloWorld.c index fe409b25..fafb65a6 100644 --- a/tests/rsrc/x86_64-timeout-uefi-edk2/src/HelloWorld.c +++ b/tests/rsrc/x86_64-timeout-uefi-edk2/src/HelloWorld.c @@ -16,7 +16,7 @@ #include #include -#include "tsffs-gcc-x86_64.h" +#include "tsffs.h" /** The user Entry Point for Application. The user code starts with this function diff --git a/tests/rsrc/x86_64-timeout-uefi-edk2/src/tsffs-gcc-x86_64.h b/tests/rsrc/x86_64-timeout-uefi-edk2/src/tsffs-gcc-x86_64.h deleted file mode 100644 index 706f9946..00000000 --- a/tests/rsrc/x86_64-timeout-uefi-edk2/src/tsffs-gcc-x86_64.h +++ /dev/null @@ -1,134 +0,0 @@ -// Copyright (C) 2023 Intel Corporation -// SPDX-License-Identifier: Apache-2.0 - -/// Definitions and macros for compiled-in harnessing of C and C++ target -/// software for the RISC-V (64-bit) architecture -/// -/// Example: -/// ```c -/// #include "tsffs-gcc-x86_64.h" -/// -/// int main() { -/// char buf[0x10]; -/// size_t size = 0x10; -/// size_t *size_ptr = &size; -/// HARNESS_START((char *)buf, size_ptr); -/// int retval = YourSpecialDecoder(buf, *size_ptr); -/// if (!retval) { -/// HARNESS_ASSERT(); -/// } else { -/// HARNESS_STOP(); -/// } -/// } -/// ``` - -#ifndef TSFFS_H -#define TSFFS_H - -/// Define common with LibFuzzer and other fuzzers to allow code that is -/// fuzzing-specific to be left in the codebase. See -/// https://llvm.org/docs/LibFuzzer.html#id35 for more information -#ifndef FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION -#define FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION (1) -#endif // FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION - -/// Magic value defined by SIMICS as the "leaf" value of a CPUID instruction -/// that is treated as a magic instruction. -#define MAGIC (0x4711U) -/// Default magic instruction `n` value to signal the TSFFS fuzzer to start the -/// fuzzing loop -#define MAGIC_START (0x0001U) -/// Default magic instruction `n` value to signal the TSFFS fuzzer to stop and -/// reset the fuzzing loop -#define MAGIC_STOP (0x0002U) -/// Default magic instruction `n` value to signal the TSFFS fuzzer that an error -/// has occurred and the testcase input should be saved as a solution -#define MAGIC_ASSERT (0x0003U) - -/// Alternative magic numbers that can be used for start and stop events in -/// conjunction with setting the magic number for each event via the SIMICS or -/// SIMICS Python script interface -#define MAGIC_ALT_0 (0x0004U) -#define MAGIC_ALT_1 (0x0005U) -#define MAGIC_ALT_2 (0x0006U) -#define MAGIC_ALT_3 (0x0007U) -#define MAGIC_ALT_4 (0x0008U) -#define MAGIC_ALT_5 (0x0009U) -#define MAGIC_ALT_6 (0x000aU) -#define MAGIC_ALT_7 (0x000bU) - -/// Invoke the magic instruction defined by SIMICS for the x86-64 architecture -/// (`cpuid`) with a specific value of `n`, after setting register `rdi` to the -/// value of the pointer to the testcase and register `rsi` to the value of the -/// pointer to the testcase size. These registers are accessed by the fuzzer and -/// are defined per-architecture. -#define __cpuid_extended2(value, inout_ptr_0, inout_ptr_1) \ - unsigned int _a __attribute__((unused)) = 0; \ - __asm__ __volatile__("cpuid" \ - : "=a"(_a) \ - : "a"(value), "D"(inout_ptr_0), "S"(inout_ptr_1) \ - : "rbx", "rcx", "rdx"); - -/// Invoke the magic instruction defined by SIMICS for the x86-64 architecture -/// (`cpuid`) with a specific value of `n` -#define __cpuid(value) \ - unsigned int _a __attribute__((unused)) = 0; \ - __asm__ __volatile__("cpuid\n\t" \ - : "=a"(_a) \ - : "a"(value) \ - : "rbx", "rcx", "rdx") - -/// Signal the fuzzer using a specific magic value `start` to start the fuzzing -/// loop at the point this macro is called. A snapshot will be taken when the -/// macro is called, and the maximum testcase size `*size_ptr` will be saved as -/// `max_testcase_size`. Each iteration of the fuzzing loop, the fuzzer input -/// (the "testcase") will be written to `*testcase_ptr` as if running -/// `memcpy(testcase_ptr, current_testcase, max_testcase_size)`, and the actual -/// size of the current testcase will be written to -/// `*size_ptr` as if running `*size_ptr = current_testcase_size`. -#define __arch_harness_start(start, testcase_ptr, size_ptr) \ - do { \ - unsigned int magic = (start << 0x10U) | MAGIC; \ - __cpuid_extended2(magic, testcase_ptr, size_ptr); \ - } while (0) - -/// Signal the fuzzer using the a specific magic value (`stop`) to stop and -/// reset to the beginning of the fuzzing loop with a "normal" stop status, -/// indicating no solution has occurred. -#define __arch_harness_stop(stop) \ - do { \ - unsigned int magic = (stop << 0x10U) | MAGIC; \ - __cpuid(magic); \ - } while (0) - -/// Signal the fuzzer using the default magic value to start the fuzzing loop at -/// the point this macro is called. A snapshot will be taken when the macro is -/// called, and the maximum testcase size `*size_ptr` will be saved as -/// `max_testcase_size`. Each iteration of the fuzzing loop, the fuzzer input -/// (the "testcase") will be written to -/// `*testcase_ptr` as if running `memcpy(testcase_ptr, current_testcase, -/// max_testcase_size)`, and the actual size of the current testcase will be -/// written to -/// `*size_ptr` as if running `*size_ptr = current_testcase_size`. -#define HARNESS_START(testcase_ptr, size_ptr) \ - do { \ - __arch_harness_start(MAGIC_START, testcase_ptr, size_ptr); \ - } while (0) - -/// Signal the fuzzer using the default magic value to stop and reset to the -/// beginning of the fuzzing loop with a "normal" stop status, indicating no -/// solution has occurred. -#define HARNESS_STOP() \ - do { \ - __arch_harness_stop(MAGIC_STOP); \ - } while (0) - -/// Signal the fuzzer using the default magic value to stop and reset to the -/// beginning of the fuzzing loop with a "solution" stop status, indicating some -/// custom error has occurred. -#define HARNESS_ASSERT() \ - do { \ - __arch_harness_stop(MAGIC_ASSERT); \ - } while (0) - -#endif // TSFFS_H \ No newline at end of file diff --git a/tests/rsrc/x86_64-uefi-edk2/build.sh b/tests/rsrc/x86_64-uefi-edk2/build.sh index 64a2aed1..30a629d9 100755 --- a/tests/rsrc/x86_64-uefi-edk2/build.sh +++ b/tests/rsrc/x86_64-uefi-edk2/build.sh @@ -14,7 +14,7 @@ CONTAINER_NAME="${IMAGE_NAME}-tmp-${CONTAINER_UID}" pushd "${SCRIPT_DIR}" || exit 1 -cp "${SCRIPT_DIR}/../../../harness/tsffs-gcc-x86_64.h" "${SCRIPT_DIR}/src/tsffs-gcc-x86_64.h" +cp "${SCRIPT_DIR}/../../../harness/tsffs.h" "${SCRIPT_DIR}/src/tsffs.h" cp "${SCRIPT_DIR}/../../rsrc/minimal_boot_disk.craff" "${SCRIPT_DIR}/minimal_boot_disk.craff" docker buildx build -t "${IMAGE_NAME}" -f "Dockerfile" . diff --git a/tests/rsrc/x86_64-uefi-edk2/minimal_boot_disk.craff b/tests/rsrc/x86_64-uefi-edk2/minimal_boot_disk.craff deleted file mode 100644 index 2488b728..00000000 --- a/tests/rsrc/x86_64-uefi-edk2/minimal_boot_disk.craff +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:8ffab484ad42b567214be5a6a7245e2385a30964dd5438035a963ebc19126e36 -size 11505650 diff --git a/tests/rsrc/x86_64-uefi-edk2/src/HelloWorld.c b/tests/rsrc/x86_64-uefi-edk2/src/HelloWorld.c index a6cdda78..c5ebfc91 100644 --- a/tests/rsrc/x86_64-uefi-edk2/src/HelloWorld.c +++ b/tests/rsrc/x86_64-uefi-edk2/src/HelloWorld.c @@ -16,7 +16,7 @@ #include #include -#include "tsffs-gcc-x86_64.h" +#include "tsffs.h" /** The user Entry Point for Application. The user code starts with this function diff --git a/tests/rsrc/x86_64-uefi-edk2/src/tsffs-gcc-x86_64.h b/tests/rsrc/x86_64-uefi-edk2/src/tsffs-gcc-x86_64.h deleted file mode 100644 index 706f9946..00000000 --- a/tests/rsrc/x86_64-uefi-edk2/src/tsffs-gcc-x86_64.h +++ /dev/null @@ -1,134 +0,0 @@ -// Copyright (C) 2023 Intel Corporation -// SPDX-License-Identifier: Apache-2.0 - -/// Definitions and macros for compiled-in harnessing of C and C++ target -/// software for the RISC-V (64-bit) architecture -/// -/// Example: -/// ```c -/// #include "tsffs-gcc-x86_64.h" -/// -/// int main() { -/// char buf[0x10]; -/// size_t size = 0x10; -/// size_t *size_ptr = &size; -/// HARNESS_START((char *)buf, size_ptr); -/// int retval = YourSpecialDecoder(buf, *size_ptr); -/// if (!retval) { -/// HARNESS_ASSERT(); -/// } else { -/// HARNESS_STOP(); -/// } -/// } -/// ``` - -#ifndef TSFFS_H -#define TSFFS_H - -/// Define common with LibFuzzer and other fuzzers to allow code that is -/// fuzzing-specific to be left in the codebase. See -/// https://llvm.org/docs/LibFuzzer.html#id35 for more information -#ifndef FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION -#define FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION (1) -#endif // FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION - -/// Magic value defined by SIMICS as the "leaf" value of a CPUID instruction -/// that is treated as a magic instruction. -#define MAGIC (0x4711U) -/// Default magic instruction `n` value to signal the TSFFS fuzzer to start the -/// fuzzing loop -#define MAGIC_START (0x0001U) -/// Default magic instruction `n` value to signal the TSFFS fuzzer to stop and -/// reset the fuzzing loop -#define MAGIC_STOP (0x0002U) -/// Default magic instruction `n` value to signal the TSFFS fuzzer that an error -/// has occurred and the testcase input should be saved as a solution -#define MAGIC_ASSERT (0x0003U) - -/// Alternative magic numbers that can be used for start and stop events in -/// conjunction with setting the magic number for each event via the SIMICS or -/// SIMICS Python script interface -#define MAGIC_ALT_0 (0x0004U) -#define MAGIC_ALT_1 (0x0005U) -#define MAGIC_ALT_2 (0x0006U) -#define MAGIC_ALT_3 (0x0007U) -#define MAGIC_ALT_4 (0x0008U) -#define MAGIC_ALT_5 (0x0009U) -#define MAGIC_ALT_6 (0x000aU) -#define MAGIC_ALT_7 (0x000bU) - -/// Invoke the magic instruction defined by SIMICS for the x86-64 architecture -/// (`cpuid`) with a specific value of `n`, after setting register `rdi` to the -/// value of the pointer to the testcase and register `rsi` to the value of the -/// pointer to the testcase size. These registers are accessed by the fuzzer and -/// are defined per-architecture. -#define __cpuid_extended2(value, inout_ptr_0, inout_ptr_1) \ - unsigned int _a __attribute__((unused)) = 0; \ - __asm__ __volatile__("cpuid" \ - : "=a"(_a) \ - : "a"(value), "D"(inout_ptr_0), "S"(inout_ptr_1) \ - : "rbx", "rcx", "rdx"); - -/// Invoke the magic instruction defined by SIMICS for the x86-64 architecture -/// (`cpuid`) with a specific value of `n` -#define __cpuid(value) \ - unsigned int _a __attribute__((unused)) = 0; \ - __asm__ __volatile__("cpuid\n\t" \ - : "=a"(_a) \ - : "a"(value) \ - : "rbx", "rcx", "rdx") - -/// Signal the fuzzer using a specific magic value `start` to start the fuzzing -/// loop at the point this macro is called. A snapshot will be taken when the -/// macro is called, and the maximum testcase size `*size_ptr` will be saved as -/// `max_testcase_size`. Each iteration of the fuzzing loop, the fuzzer input -/// (the "testcase") will be written to `*testcase_ptr` as if running -/// `memcpy(testcase_ptr, current_testcase, max_testcase_size)`, and the actual -/// size of the current testcase will be written to -/// `*size_ptr` as if running `*size_ptr = current_testcase_size`. -#define __arch_harness_start(start, testcase_ptr, size_ptr) \ - do { \ - unsigned int magic = (start << 0x10U) | MAGIC; \ - __cpuid_extended2(magic, testcase_ptr, size_ptr); \ - } while (0) - -/// Signal the fuzzer using the a specific magic value (`stop`) to stop and -/// reset to the beginning of the fuzzing loop with a "normal" stop status, -/// indicating no solution has occurred. -#define __arch_harness_stop(stop) \ - do { \ - unsigned int magic = (stop << 0x10U) | MAGIC; \ - __cpuid(magic); \ - } while (0) - -/// Signal the fuzzer using the default magic value to start the fuzzing loop at -/// the point this macro is called. A snapshot will be taken when the macro is -/// called, and the maximum testcase size `*size_ptr` will be saved as -/// `max_testcase_size`. Each iteration of the fuzzing loop, the fuzzer input -/// (the "testcase") will be written to -/// `*testcase_ptr` as if running `memcpy(testcase_ptr, current_testcase, -/// max_testcase_size)`, and the actual size of the current testcase will be -/// written to -/// `*size_ptr` as if running `*size_ptr = current_testcase_size`. -#define HARNESS_START(testcase_ptr, size_ptr) \ - do { \ - __arch_harness_start(MAGIC_START, testcase_ptr, size_ptr); \ - } while (0) - -/// Signal the fuzzer using the default magic value to stop and reset to the -/// beginning of the fuzzing loop with a "normal" stop status, indicating no -/// solution has occurred. -#define HARNESS_STOP() \ - do { \ - __arch_harness_stop(MAGIC_STOP); \ - } while (0) - -/// Signal the fuzzer using the default magic value to stop and reset to the -/// beginning of the fuzzing loop with a "solution" stop status, indicating some -/// custom error has occurred. -#define HARNESS_ASSERT() \ - do { \ - __arch_harness_stop(MAGIC_ASSERT); \ - } while (0) - -#endif // TSFFS_H \ No newline at end of file diff --git a/tests/rsrc/x86_64-uefi/build.sh b/tests/rsrc/x86_64-uefi/build.sh index bf1f8940..2eb84040 100755 --- a/tests/rsrc/x86_64-uefi/build.sh +++ b/tests/rsrc/x86_64-uefi/build.sh @@ -3,9 +3,11 @@ # Copyright (C) 2024 Intel Corporation # SPDX-License-Identifier: Apache-2.0 +set -e + SCRIPT_DIR=$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" &>/dev/null && pwd) -cp "${SCRIPT_DIR}/../../../harness/tsffs-gcc-x86_64.h" "${SCRIPT_DIR}/tsffs-gcc-x86_64.h" +cp "${SCRIPT_DIR}/../../../harness/tsffs.h" "${SCRIPT_DIR}/tsffs.h" cp "${SCRIPT_DIR}/../../rsrc/minimal_boot_disk.craff" "${SCRIPT_DIR}/minimal_boot_disk.craff" ninja \ No newline at end of file diff --git a/tests/rsrc/x86_64-uefi/minimal_boot_disk.craff b/tests/rsrc/x86_64-uefi/minimal_boot_disk.craff deleted file mode 100644 index 2488b728..00000000 --- a/tests/rsrc/x86_64-uefi/minimal_boot_disk.craff +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:8ffab484ad42b567214be5a6a7245e2385a30964dd5438035a963ebc19126e36 -size 11505650 diff --git a/tests/rsrc/x86_64-uefi/test-cov.c b/tests/rsrc/x86_64-uefi/test-cov.c index b8a52e3f..616cfca3 100644 --- a/tests/rsrc/x86_64-uefi/test-cov.c +++ b/tests/rsrc/x86_64-uefi/test-cov.c @@ -4,7 +4,7 @@ #include #include -#include "tsffs-gcc-x86_64.h" +#include "tsffs.h" typedef struct EfiTableHeader { uint64_t signature; diff --git a/tests/rsrc/x86_64-uefi/test-fast.c b/tests/rsrc/x86_64-uefi/test-fast.c index 709a6b1c..2a240b51 100644 --- a/tests/rsrc/x86_64-uefi/test-fast.c +++ b/tests/rsrc/x86_64-uefi/test-fast.c @@ -4,7 +4,7 @@ #include #include -#include "tsffs-gcc-x86_64.h" +#include "tsffs.h" typedef struct EfiTableHeader { uint64_t signature; diff --git a/tests/rsrc/x86_64-uefi/test.c b/tests/rsrc/x86_64-uefi/test.c index b6f9d442..509b41fd 100644 --- a/tests/rsrc/x86_64-uefi/test.c +++ b/tests/rsrc/x86_64-uefi/test.c @@ -4,7 +4,7 @@ #include #include -#include "tsffs-gcc-x86_64.h" +#include "tsffs.h" typedef struct EfiTableHeader { uint64_t signature; diff --git a/tests/rsrc/x86_64-uefi/tsffs-gcc-x86_64.h b/tests/rsrc/x86_64-uefi/tsffs-gcc-x86_64.h deleted file mode 100644 index 706f9946..00000000 --- a/tests/rsrc/x86_64-uefi/tsffs-gcc-x86_64.h +++ /dev/null @@ -1,134 +0,0 @@ -// Copyright (C) 2023 Intel Corporation -// SPDX-License-Identifier: Apache-2.0 - -/// Definitions and macros for compiled-in harnessing of C and C++ target -/// software for the RISC-V (64-bit) architecture -/// -/// Example: -/// ```c -/// #include "tsffs-gcc-x86_64.h" -/// -/// int main() { -/// char buf[0x10]; -/// size_t size = 0x10; -/// size_t *size_ptr = &size; -/// HARNESS_START((char *)buf, size_ptr); -/// int retval = YourSpecialDecoder(buf, *size_ptr); -/// if (!retval) { -/// HARNESS_ASSERT(); -/// } else { -/// HARNESS_STOP(); -/// } -/// } -/// ``` - -#ifndef TSFFS_H -#define TSFFS_H - -/// Define common with LibFuzzer and other fuzzers to allow code that is -/// fuzzing-specific to be left in the codebase. See -/// https://llvm.org/docs/LibFuzzer.html#id35 for more information -#ifndef FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION -#define FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION (1) -#endif // FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION - -/// Magic value defined by SIMICS as the "leaf" value of a CPUID instruction -/// that is treated as a magic instruction. -#define MAGIC (0x4711U) -/// Default magic instruction `n` value to signal the TSFFS fuzzer to start the -/// fuzzing loop -#define MAGIC_START (0x0001U) -/// Default magic instruction `n` value to signal the TSFFS fuzzer to stop and -/// reset the fuzzing loop -#define MAGIC_STOP (0x0002U) -/// Default magic instruction `n` value to signal the TSFFS fuzzer that an error -/// has occurred and the testcase input should be saved as a solution -#define MAGIC_ASSERT (0x0003U) - -/// Alternative magic numbers that can be used for start and stop events in -/// conjunction with setting the magic number for each event via the SIMICS or -/// SIMICS Python script interface -#define MAGIC_ALT_0 (0x0004U) -#define MAGIC_ALT_1 (0x0005U) -#define MAGIC_ALT_2 (0x0006U) -#define MAGIC_ALT_3 (0x0007U) -#define MAGIC_ALT_4 (0x0008U) -#define MAGIC_ALT_5 (0x0009U) -#define MAGIC_ALT_6 (0x000aU) -#define MAGIC_ALT_7 (0x000bU) - -/// Invoke the magic instruction defined by SIMICS for the x86-64 architecture -/// (`cpuid`) with a specific value of `n`, after setting register `rdi` to the -/// value of the pointer to the testcase and register `rsi` to the value of the -/// pointer to the testcase size. These registers are accessed by the fuzzer and -/// are defined per-architecture. -#define __cpuid_extended2(value, inout_ptr_0, inout_ptr_1) \ - unsigned int _a __attribute__((unused)) = 0; \ - __asm__ __volatile__("cpuid" \ - : "=a"(_a) \ - : "a"(value), "D"(inout_ptr_0), "S"(inout_ptr_1) \ - : "rbx", "rcx", "rdx"); - -/// Invoke the magic instruction defined by SIMICS for the x86-64 architecture -/// (`cpuid`) with a specific value of `n` -#define __cpuid(value) \ - unsigned int _a __attribute__((unused)) = 0; \ - __asm__ __volatile__("cpuid\n\t" \ - : "=a"(_a) \ - : "a"(value) \ - : "rbx", "rcx", "rdx") - -/// Signal the fuzzer using a specific magic value `start` to start the fuzzing -/// loop at the point this macro is called. A snapshot will be taken when the -/// macro is called, and the maximum testcase size `*size_ptr` will be saved as -/// `max_testcase_size`. Each iteration of the fuzzing loop, the fuzzer input -/// (the "testcase") will be written to `*testcase_ptr` as if running -/// `memcpy(testcase_ptr, current_testcase, max_testcase_size)`, and the actual -/// size of the current testcase will be written to -/// `*size_ptr` as if running `*size_ptr = current_testcase_size`. -#define __arch_harness_start(start, testcase_ptr, size_ptr) \ - do { \ - unsigned int magic = (start << 0x10U) | MAGIC; \ - __cpuid_extended2(magic, testcase_ptr, size_ptr); \ - } while (0) - -/// Signal the fuzzer using the a specific magic value (`stop`) to stop and -/// reset to the beginning of the fuzzing loop with a "normal" stop status, -/// indicating no solution has occurred. -#define __arch_harness_stop(stop) \ - do { \ - unsigned int magic = (stop << 0x10U) | MAGIC; \ - __cpuid(magic); \ - } while (0) - -/// Signal the fuzzer using the default magic value to start the fuzzing loop at -/// the point this macro is called. A snapshot will be taken when the macro is -/// called, and the maximum testcase size `*size_ptr` will be saved as -/// `max_testcase_size`. Each iteration of the fuzzing loop, the fuzzer input -/// (the "testcase") will be written to -/// `*testcase_ptr` as if running `memcpy(testcase_ptr, current_testcase, -/// max_testcase_size)`, and the actual size of the current testcase will be -/// written to -/// `*size_ptr` as if running `*size_ptr = current_testcase_size`. -#define HARNESS_START(testcase_ptr, size_ptr) \ - do { \ - __arch_harness_start(MAGIC_START, testcase_ptr, size_ptr); \ - } while (0) - -/// Signal the fuzzer using the default magic value to stop and reset to the -/// beginning of the fuzzing loop with a "normal" stop status, indicating no -/// solution has occurred. -#define HARNESS_STOP() \ - do { \ - __arch_harness_stop(MAGIC_STOP); \ - } while (0) - -/// Signal the fuzzer using the default magic value to stop and reset to the -/// beginning of the fuzzing loop with a "solution" stop status, indicating some -/// custom error has occurred. -#define HARNESS_ASSERT() \ - do { \ - __arch_harness_stop(MAGIC_ASSERT); \ - } while (0) - -#endif // TSFFS_H \ No newline at end of file diff --git a/tests/x86_64_magic_apitest.rs b/tests/x86_64_magic_apitest.rs index f1b1cfb3..75534d0a 100644 --- a/tests/x86_64_magic_apitest.rs +++ b/tests/x86_64_magic_apitest.rs @@ -53,9 +53,6 @@ fn test_x86_64_magic_apitest() -> Result<()> { @tsffs.start_on_harness = True @tsffs.stop_on_harness = True @tsffs.use_snapshots = True - @tsffs.magic_start = 1 - @tsffs.magic_stop = 2 - @tsffs.magic_assert = 3 @tsffs.iteration_limit = 100 @tsffs.initial_random_corpus_size = 32 @tsffs.corpus_directory = SIM_lookup_file("%simics%") + "/corpus" diff --git a/tests/x86_64_manual.rs b/tests/x86_64_manual.rs index 93f6010d..d6b7d687 100644 --- a/tests/x86_64_manual.rs +++ b/tests/x86_64_manual.rs @@ -45,7 +45,7 @@ fn test_x86_64_manual() -> Result<()> { simics.SIM_load_module("tsffs") tsffs = simics.SIM_create_object(simics.SIM_get_class("tsffs"), "tsffs", []) - simics.SIM_set_log_level(tsffs, 2) + simics.SIM_set_log_level(tsffs, 4) tsffs.start_on_harness = False tsffs.stop_on_harness = False tsffs.timeout = 3.0 @@ -82,14 +82,14 @@ fn test_x86_64_manual() -> Result<()> { # In reality, you probably have a known buffer in mind to fuzz testcase_address_regno = conf.qsp.mb.cpu0.core[0][0].iface.int_register.get_number( - "rdi" + "rsi" ) print("testcase address regno: ", testcase_address_regno) testcase_address = conf.qsp.mb.cpu0.core[0][0].iface.int_register.read( testcase_address_regno ) print("testcase address: ", testcase_address) - size_regno = conf.qsp.mb.cpu0.core[0][0].iface.int_register.get_number("rsi") + size_regno = conf.qsp.mb.cpu0.core[0][0].iface.int_register.get_number("rdx") print("size regno: ", size_regno) size_address = conf.qsp.mb.cpu0.core[0][0].iface.int_register.read(size_regno) print("size address: ", size_address) @@ -104,7 +104,7 @@ fn test_x86_64_manual() -> Result<()> { virt, ) - tsffs.iface.fuzz.start( + tsffs.iface.fuzz.start_with_buffer_ptr_size_ptr( conf.qsp.mb.cpu0.core[0][0], testcase_address, size_address, diff --git a/tests/x86_64_manual_max.rs b/tests/x86_64_manual_max.rs index 1eaf0520..bb3f307e 100644 --- a/tests/x86_64_manual_max.rs +++ b/tests/x86_64_manual_max.rs @@ -82,7 +82,7 @@ fn test_x86_64_manual_max() -> Result<()> { # In reality, you probably have a known buffer in mind to fuzz testcase_address_regno = conf.qsp.mb.cpu0.core[0][0].iface.int_register.get_number( - "rdi" + "rsi" ) print("testcase address regno: ", testcase_address_regno) testcase_address = conf.qsp.mb.cpu0.core[0][0].iface.int_register.read( @@ -101,7 +101,7 @@ fn test_x86_64_manual_max() -> Result<()> { virt, ) - tsffs.iface.fuzz.start_with_maximum_size( + tsffs.iface.fuzz.start_with_buffer_ptr_size_value( conf.qsp.mb.cpu0.core[0][0], testcase_address, maximum_size, From d3072c1322d069df507c8247ac0e67c99694e9ce Mon Sep 17 00:00:00 2001 From: Rowan Hart Date: Thu, 11 Apr 2024 12:42:59 -0700 Subject: [PATCH 12/19] Fixup versioning for simics APIs and add versioned tests (#75) --- .dockerignore | 20 +- .github/builder/.dockerignore | 1 - .github/builder/Dockerfile | 28 +- .github/builder/build.sh | 17 +- .github/workflows/ci.yml | 19 +- scripts/build.sh | 26 +- simics-rs/cargo-simics-build/src/lib.rs | 48 +-- simics-rs/docs/src/SUMMARY.md | 2 +- simics-rs/docs/src/chapter_1.md | 1 - simics-rs/simics-build-utils/src/lib.rs | 166 +++------- simics-rs/simics-macro/src/interface/mod.rs | 20 +- simics-rs/simics-sign/Cargo.toml | 2 +- simics-rs/simics-test/src/lib.rs | 80 ++++- simics-rs/simics/src/api/base/version.rs | 18 -- simics-rs/simics/src/api/internal/core.rs | 3 + simics-rs/simics/src/api/internal/mod.rs | 1 + simics-rs/simics/src/api/logging/mod.rs | 144 --------- simics-rs/simics/src/api/simulator/embed.rs | 20 +- simics-rs/simics/src/api/simulator/mod.rs | 38 ++- .../simics/src/api/simulator/snapshots.rs | 283 ++++++++++++------ src/lib.rs | 191 +++++------- src/util/mod.rs | 3 +- ..._64_kernel_from_userspace_magic_6_0_185.rs | 145 +++++++++ ..._64_kernel_from_userspace_magic_latest.rs} | 5 +- tests/riscv_64_kernel_magic_6_0_185.rs | 76 +++++ ...gic.rs => riscv_64_kernel_magic_latest.rs} | 5 +- tests/riscv_64_userspace_magic_6_0_185.rs | 74 +++++ ....rs => riscv_64_userspace_magic_latest.rs} | 5 +- tests/x86_64_edk2_magic_6_0_185.rs | 76 +++++ ...2_magic.rs => x86_64_edk2_magic_latest.rs} | 5 +- tests/x86_64_edk2_timeout_6_0_185.rs | 76 +++++ ...meout.rs => x86_64_edk2_timeout_latest.rs} | 5 +- tests/x86_64_magic_6_0_185.rs | 76 +++++ tests/x86_64_magic_apitest_6_0_185.rs | 92 ++++++ ...test.rs => x86_64_magic_apitest_latest.rs} | 5 +- tests/x86_64_magic_crash_6_0_185.rs | 76 +++++ ..._crash.rs => x86_64_magic_crash_latest.rs} | 5 +- ...x86_64_magic.rs => x86_64_magic_latest.rs} | 5 +- tests/x86_64_magic_reporting_6_0_185.rs | 78 +++++ ...ng.rs => x86_64_magic_reporting_latest.rs} | 5 +- tests/x86_64_magic_speedtest_6_0_185.rs | 76 +++++ ...st.rs => x86_64_magic_speedtest_latest.rs} | 5 +- ...x86_64_magic_speedtest_tokenize_6_0_185.rs | 77 +++++ ...x86_64_magic_speedtest_tokenize_latest.rs} | 5 +- tests/x86_64_manual_6_0_185.rs | 154 ++++++++++ ...6_64_manual.rs => x86_64_manual_latest.rs} | 5 +- tests/x86_64_manual_max_6_0_185.rs | 151 ++++++++++ ...ual_max.rs => x86_64_manual_max_latest.rs} | 5 +- tests/x86_userspace_magic_6_0_185.rs | 112 +++++++ ...magic.rs => x86_userspace_magic_latest.rs} | 5 +- 50 files changed, 1874 insertions(+), 666 deletions(-) delete mode 100644 .github/builder/.dockerignore delete mode 100644 simics-rs/docs/src/chapter_1.md create mode 100644 tests/riscv_64_kernel_from_userspace_magic_6_0_185.rs rename tests/{riscv_64_kernel_from_userspace_magic.rs => riscv_64_kernel_from_userspace_magic_latest.rs} (93%) create mode 100644 tests/riscv_64_kernel_magic_6_0_185.rs rename tests/{riscv_64_kernel_magic.rs => riscv_64_kernel_magic_latest.rs} (94%) create mode 100644 tests/riscv_64_userspace_magic_6_0_185.rs rename tests/{riscv_64_userspace_magic.rs => riscv_64_userspace_magic_latest.rs} (94%) create mode 100644 tests/x86_64_edk2_magic_6_0_185.rs rename tests/{x86_64_edk2_magic.rs => x86_64_edk2_magic_latest.rs} (94%) create mode 100644 tests/x86_64_edk2_timeout_6_0_185.rs rename tests/{x86_64_edk2_timeout.rs => x86_64_edk2_timeout_latest.rs} (94%) create mode 100644 tests/x86_64_magic_6_0_185.rs create mode 100644 tests/x86_64_magic_apitest_6_0_185.rs rename tests/{x86_64_magic_apitest.rs => x86_64_magic_apitest_latest.rs} (96%) create mode 100644 tests/x86_64_magic_crash_6_0_185.rs rename tests/{x86_64_magic_crash.rs => x86_64_magic_crash_latest.rs} (94%) rename tests/{x86_64_magic.rs => x86_64_magic_latest.rs} (95%) create mode 100644 tests/x86_64_magic_reporting_6_0_185.rs rename tests/{x86_64_magic_reporting.rs => x86_64_magic_reporting_latest.rs} (94%) create mode 100644 tests/x86_64_magic_speedtest_6_0_185.rs rename tests/{x86_64_magic_speedtest.rs => x86_64_magic_speedtest_latest.rs} (94%) create mode 100644 tests/x86_64_magic_speedtest_tokenize_6_0_185.rs rename tests/{x86_64_magic_speedtest_tokenize.rs => x86_64_magic_speedtest_tokenize_latest.rs} (94%) create mode 100644 tests/x86_64_manual_6_0_185.rs rename tests/{x86_64_manual.rs => x86_64_manual_latest.rs} (97%) create mode 100644 tests/x86_64_manual_max_6_0_185.rs rename tests/{x86_64_manual_max.rs => x86_64_manual_max_latest.rs} (97%) create mode 100644 tests/x86_userspace_magic_6_0_185.rs rename tests/{x86_userspace_magic.rs => x86_userspace_magic_latest.rs} (97%) diff --git a/.dockerignore b/.dockerignore index 890d8768..b4175f15 100644 --- a/.dockerignore +++ b/.dockerignore @@ -1,15 +1,5 @@ -config.mk -.package-list -.modcache -Dockerfile -.project-properties/ -bin/ -linux64/ -win64/ -packageinfo/ -target/ -documentation -simics -simics-eclipse -simics-gui -compiler.mk +# Ignore dockerfile so re-runs with dockerfile-only fixes don't rebuild +**/Dockerfile +**/target/ +**/*.img +**/*.diff.craff \ No newline at end of file diff --git a/.github/builder/.dockerignore b/.github/builder/.dockerignore deleted file mode 100644 index 1d1fe94d..00000000 --- a/.github/builder/.dockerignore +++ /dev/null @@ -1 +0,0 @@ -Dockerfile \ No newline at end of file diff --git a/.github/builder/Dockerfile b/.github/builder/Dockerfile index bbdef3cd..e0115173 100644 --- a/.github/builder/Dockerfile +++ b/.github/builder/Dockerfile @@ -3,20 +3,15 @@ FROM fedora:20 ENV PATH="${PATH}:/root/.cargo/bin/" -RUN yum -y update && \ - yum -y install \ - coreutils \ - gcc \ - gcc-c++ \ - make && \ - yum clean all - COPY .github/builder/rsrc/rustup-init /install/rustup-init COPY .github/builder/rsrc/make-4.4.1.tar.gz /install/make-4.4.1.tar.gz COPY .github/builder/rsrc/cmake-3.28.0-rc5-linux-x86_64.tar.gz /install/cmake-3.28.0-rc5-linux-x86_64.tar.gz -COPY .github/builder/rsrc/llvm-5.0.2.src.tar.xz /install/llvm-5.0.2.src.tar.xz +COPY .github/builder/rsrc/lld-5.0.2.src.tar.xz /install/lld-5.0.2.src.tar.xz COPY .github/builder/rsrc/cfe-5.0.2.src.tar.xz /install/cfe-5.0.2.src.tar.xz -COPY .github/builder/rsrc/patchelf-0.18.0-x86_64.tar.gz /install/patchelf-0.18.0-x86_64.tar.gz +COPY .github/builder/rsrc/llvm-5.0.2.src.tar.xz /install/llvm-5.0.2.src.tar.xz +COPY .github/builder/rsrc/rpms /install/rpms + +RUN yum -y install /install/rpms/*.rpm && yum clean all RUN chmod +x /install/rustup-init && \ /install/rustup-init -y --default-toolchain nightly && \ @@ -30,8 +25,10 @@ RUN chmod +x /install/rustup-init && \ popd && \ tar -C /usr/local/ --strip-components=1 -xf /install/cmake-3.28.0-rc5-linux-x86_64.tar.gz && \ mkdir -p /llvm/tools/clang && \ + mkdir -p /llvm/tools/lld && \ tar -C /llvm --strip-components=1 -xf /install/llvm-5.0.2.src.tar.xz && \ tar -C /llvm/tools/clang --strip-components=1 -xf /install/cfe-5.0.2.src.tar.xz && \ + tar -C /llvm/tools/lld --strip-components=1 -xf /install/lld-5.0.2.src.tar.xz && \ mkdir -p /llvm/build && \ pushd /llvm/build && \ cmake -G "Unix Makefiles" -DCMAKE_BUILD_TYPE="MinSizeRel" -DLLVM_TARGETS_TO_BUILD="X86" .. && \ @@ -40,8 +37,7 @@ RUN chmod +x /install/rustup-init && \ make clean && \ rm -rf /llvm/build/ && \ popd && \ - rm -rf /make /llvm && \ - tar -C /usr/local/ --strip-components=1 -xf /install/patchelf-0.18.0-x86_64.tar.gz + rm -rf /make /llvm WORKDIR / @@ -56,9 +52,11 @@ WORKDIR /tsffs/ RUN mkdir -p /simics/ispm && \ tar -C /simics/ispm --strip-components=1 -xf .github/builder/rsrc/ispm.tar.gz && \ ispm settings install-dir /simics && \ - ispm packages --install-bundle .github/builder/rsrc/simics.ispm --non-interactive --trust-insecure-packages && \ - ls -lah /simics/ && \ + ispm packages --install-bundle .github/builder/rsrc/simics.ispm --non-interactive --trust-insecure-packages + +RUN RUSTFLAGS="-C linker=clang -C link-arg=-fuse-ld=$(which ld.lld)" && \ + export RUSTFLAGS && \ cargo install --path simics-rs/cargo-simics-build && \ - cargo simics-build --with-patchelf -r && \ + cargo simics-build -r && \ mkdir -p /packages && \ cp target/release/*.ispm /packages diff --git a/.github/builder/build.sh b/.github/builder/build.sh index f98fd63a..a0b962b5 100755 --- a/.github/builder/build.sh +++ b/.github/builder/build.sh @@ -2,12 +2,12 @@ # NOTE: Do not just copy-paste scripts/build.sh! +LLD_URL="https://releases.llvm.org/5.0.2/lld-5.0.2.src.tar.xz" CFE_URL="https://releases.llvm.org/5.0.2/cfe-5.0.2.src.tar.xz" LLVM_SRC_URL="https://releases.llvm.org/5.0.2/llvm-5.0.2.src.tar.xz" MAKE_SRC_URL="https://ftp.gnu.org/gnu/make/make-4.4.1.tar.gz" RUSTUP_INIT_URL="https://static.rust-lang.org/rustup/dist/x86_64-unknown-linux-gnu/rustup-init" CMAKE_URL="https://github.com/Kitware/CMake/releases/download/v3.28.0-rc5/cmake-3.28.0-rc5-linux-x86_64.tar.gz" -PATCHELF_URL="https://github.com/NixOS/patchelf/releases/download/0.18.0/patchelf-0.18.0-x86_64.tar.gz" PUBLIC_SIMICS_PKGS_URL="https://registrationcenter-download.intel.com/akdlm/IRC_NAS/ead79ef5-28b5-48c7-8d1f-3cde7760798f/simics-6-packages-2024-05-linux64.ispm" PUBLIC_SIMICS_ISPM_URL="https://registrationcenter-download.intel.com/akdlm/IRC_NAS/ead79ef5-28b5-48c7-8d1f-3cde7760798f/intel-simics-package-manager-1.8.3-linux64.tar.gz" PUBLIC_SIMICS_PACKAGE_VERSION_1000="6.0.185" @@ -31,6 +31,11 @@ if [ ! -f "${BUILDER_DIR}/rsrc/simics.ispm" ]; then "${PUBLIC_SIMICS_PKGS_URL}" fi +if [ ! -f "${BUILDER_DIR}/rsrc/lld-5.0.2.src.tar.xz" ]; then + curl --noproxy '*.intel.com' -L -o "${BUILDER_DIR}/rsrc/lld-5.0.2.src.tar.xz" \ + "${LLD_URL}" +fi + if [ ! -f "${BUILDER_DIR}/rsrc/cfe-5.0.2.src.tar.xz" ]; then curl --noproxy '*.intel.com' -L -o "${BUILDER_DIR}/rsrc/cfe-5.0.2.src.tar.xz" \ "${CFE_URL}" @@ -57,9 +62,13 @@ if [ ! -f "${BUILDER_DIR}/rsrc/cmake-3.28.0-rc5-linux-x86_64.tar.gz" ]; then "${CMAKE_URL}" fi -if [ ! -f "${BUILDER_DIR}/rsrc/patchelf-0.18.0-x86_64.tar.gz" ]; then - curl --noproxy '*.intel.com' -L -o "${BUILDER_DIR}/rsrc/patchelf-0.18.0-x86_64.tar.gz" \ - "${PATCHELF_URL}" +if [ ! -d "${BUILDER_DIR}/rsrc/rpms" ]; then + echo "RPM dependencies not found. Downloading..." + # NOTE: This may stop working at some point, as Fedora 20 is EOL. Therefore, we download the + # packages with the expectation that we will provide them separately if they are no longer + # available. + docker run -v "${BUILDER_DIR}/rsrc/rpms:/rpms" fedora:20 bash -c \ + 'yum -y update && yum install --downloadonly --downloaddir=/rpms coreutils gcc gcc-c++ make which && chmod -R 755 /rpms/' fi unset SIMICS_BASE diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index bb983519..43e2a801 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -10,11 +10,11 @@ on: env: CARGO_TERM_COLOR: always CFE_URL: "https://releases.llvm.org/5.0.2/cfe-5.0.2.src.tar.xz" + LLD_URL: "https://releases.llvm.org/5.0.2/lld-5.0.2.src.tar.xz" LLVM_SRC_URL: "https://releases.llvm.org/5.0.2/llvm-5.0.2.src.tar.xz" MAKE_SRC_URL: "https://ftp.gnu.org/gnu/make/make-4.4.1.tar.gz" RUSTUP_INIT_URL: "https://static.rust-lang.org/rustup/dist/x86_64-unknown-linux-gnu/rustup-init" CMAKE_URL: "https://github.com/Kitware/CMake/releases/download/v3.28.0-rc5/cmake-3.28.0-rc5-linux-x86_64.tar.gz" - PATCHELF_URL: "https://github.com/NixOS/patchelf/releases/download/0.18.0/patchelf-0.18.0-x86_64.tar.gz" PUBLIC_SIMICS_PKGS_URL_WINDOWS: "https://registrationcenter-download.intel.com/akdlm/IRC_NAS/ead79ef5-28b5-48c7-8d1f-3cde7760798f/simics-6-packages-2024-05-win64.ispm" # NOTE: We use the old ISPM because there is something wrong with 1.8.3 with unattended installation # PUBLIC_SIMICS_ISPM_URL_WINDOWS: "https://registrationcenter-download.intel.com/akdlm/IRC_NAS/881ee76a-c24d-41c0-af13-5d89b2a857ff/intel-simics-package-manager-1.7.5-win64.exe" @@ -23,11 +23,11 @@ env: PUBLIC_SIMICS_ISPM_URL: "https://registrationcenter-download.intel.com/akdlm/IRC_NAS/ead79ef5-28b5-48c7-8d1f-3cde7760798f/intel-simics-package-manager-1.8.3-linux64.tar.gz" PUBLIC_SIMICS_PACKAGE_VERSION_1000: "6.0.185" PUBLIC_SIMICS_ISPM_VERSION: "1.8.3" + BUILDER_LLD_VERSION: "5.0.2" BUILDER_CFE_VERSION: "5.0.2" BUILDER_LLVM_VERSION: "5.0.2" BUILDER_MAKE_VERSION: "4.4.1" BUILDER_CMAKE_VERSION: "3.28.0-rc5" - BUILDER_PATCHELF_VERSION: "0.18.0" MINGW_URL: "https://github.com/brechtsanders/winlibs_mingw/releases/download/13.2.0-16.0.6-11.0.0-ucrt-r1/winlibs-x86_64-posix-seh-gcc-13.2.0-llvm-16.0.6-mingw-w64ucrt-11.0.0-r1.7z" MINGW_VERSION: "13.2.0-16.0.6-11.0.0-ucrt-r1" @@ -50,7 +50,7 @@ jobs: id: cache-simics-packages uses: actions/cache@v4 with: - path: ~/simics + path: "${HOME}/simics" key: simics-linux-${{ env.PUBLIC_SIMICS_PACKAGE_VERSION_1000 }}-${{ env.PUBLIC_SIMICS_ISPM_VERSION }} - name: Install SIMICS (External) @@ -78,8 +78,7 @@ jobs: run: | mkdir bin && \ cp "${HOME}/simics/simics-${{ env.PUBLIC_SIMICS_PACKAGE_VERSION_1000 }}/linux64/bin/craff" bin/craff && \ - cp "${HOME}/simics/simics-${{ env.PUBLIC_SIMICS_PACKAGE_VERSION_1000 }}/linux64/bin/craff-fs" bin/craff-fs && \ - rm -rf "${HOME}/simics/" + cp "${HOME}/simics/simics-${{ env.PUBLIC_SIMICS_PACKAGE_VERSION_1000 }}/linux64/bin/craff-fs" bin/craff-fs - name: Upload Test Artifacts uses: actions/upload-artifact@v4 @@ -483,7 +482,7 @@ jobs: - name: Test Project run: | - SIMICS_TEST_CLEANUP_EACH=1 SIMICS_TEST_LOCAL_PACKAGES_ONLY=1 cargo test --no-fail-fast -r || ( echo "❗ Tests failed" && exit 1 ) + SIMICS_TEST_CLEANUP_EACH=1 SIMICS_TEST_LOCAL_PACKAGES_ONLY=1 cargo test --no-fail-fast -r _latest || ( echo "❗ Tests failed" && exit 1 ) echo "✅ Tests passed" - name: Build Docs @@ -593,7 +592,7 @@ jobs: uses: actions/cache@v4 with: path: .github/builder/rsrc - key: "cache-builder-dependencies-${{ env.PUBLIC_SIMICS_ISPM_VERSION }}-${{ env.BUILDER_CFE_VERSION }}-${{ env.BUILDER_LLVM_VERSION }}-${{ env.BUILDER_MAKE_VERSION }}-${{ env.BUILDER_CMAKE_VERSION }}" + key: "cache-builder-dependencies-${{ env.PUBLIC_SIMICS_ISPM_VERSION }}-${{ env.BUILDER_LLD_VERSION }}-${{ env.BUILDER_CFE_VERSION }}-${{ env.BUILDER_LLVM_VERSION }}-${{ env.BUILDER_MAKE_VERSION }}-${{ env.BUILDER_CMAKE_VERSION }}" - name: Download Builder Dependencies if: ${{ steps.cache-builder-dependencies.outputs.cache-hit != 'true' }} @@ -605,6 +604,8 @@ jobs: "${{ env.PUBLIC_SIMICS_PKGS_URL }}" curl -L -o .github/builder/rsrc/cfe-5.0.2.src.tar.xz \ "${{ env.CFE_URL }}" + curl -L -o .github/builder/rsrc/lld-5.0.2.src.tar.xz \ + "${{ env.LLD_URL }}" curl -L -o .github/builder/rsrc/llvm-5.0.2.src.tar.xz \ "${{ env.LLVM_SRC_URL }}" curl -L -o .github/builder/rsrc/make-4.4.1.tar.gz \ @@ -614,8 +615,8 @@ jobs: chmod +x .github/builder/rsrc/rustup-init curl -L -o .github/builder/rsrc/cmake-3.28.0-rc5-linux-x86_64.tar.gz \ "${{ env.CMAKE_URL }}" - curl -L -o .github/builder/rsrc/patchelf-0.18.0-x86_64.tar.gz \ - "${{ env.PATCHELF_URL}}" + docker run -v "$(pwd)/.github/builder/rsrc/rpms:/rpms" fedora:20 bash -c \ + 'yum -y update && yum install --downloadonly --downloaddir=/rpms coreutils gcc gcc-c++ make which && chmod -R 755 /rpms/' - name: Build Distribution Package run: | diff --git a/scripts/build.sh b/scripts/build.sh index d0be942d..53f98f2a 100755 --- a/scripts/build.sh +++ b/scripts/build.sh @@ -3,12 +3,13 @@ # Copyright (C) 2024 Intel Corporation # SPDX-License-Identifier: Apache-2.0 + +LLD_URL="https://releases.llvm.org/5.0.2/lld-5.0.2.src.tar.xz" CFE_URL="https://releases.llvm.org/5.0.2/cfe-5.0.2.src.tar.xz" LLVM_SRC_URL="https://releases.llvm.org/5.0.2/llvm-5.0.2.src.tar.xz" MAKE_SRC_URL="https://ftp.gnu.org/gnu/make/make-4.4.1.tar.gz" RUSTUP_INIT_URL="https://static.rust-lang.org/rustup/dist/x86_64-unknown-linux-gnu/rustup-init" CMAKE_URL="https://github.com/Kitware/CMake/releases/download/v3.28.0-rc5/cmake-3.28.0-rc5-linux-x86_64.tar.gz" -PATCHELF_URL="https://github.com/NixOS/patchelf/releases/download/0.18.0/patchelf-0.18.0-x86_64.tar.gz" PUBLIC_SIMICS_PKGS_URL="https://registrationcenter-download.intel.com/akdlm/IRC_NAS/ead79ef5-28b5-48c7-8d1f-3cde7760798f/simics-6-packages-2024-05-linux64.ispm" PUBLIC_SIMICS_ISPM_URL="https://registrationcenter-download.intel.com/akdlm/IRC_NAS/ead79ef5-28b5-48c7-8d1f-3cde7760798f/intel-simics-package-manager-1.8.3-linux64.tar.gz" PUBLIC_SIMICS_PACKAGE_VERSION_1000="6.0.185" @@ -22,44 +23,61 @@ CONTAINER_NAME="${IMAGE_NAME}-tmp-${CONTAINER_UID}" mkdir -p "${BUILDER_DIR}/rsrc" if [ ! -f "${BUILDER_DIR}/rsrc/ispm.tar.gz" ]; then + echo "ISPM not found. Downloading..." curl --noproxy '*.intel.com' -L -o "${BUILDER_DIR}/rsrc/ispm.tar.gz" \ "${PUBLIC_SIMICS_ISPM_URL}" fi if [ ! -f "${BUILDER_DIR}/rsrc/simics.ispm" ]; then + echo "Simics not found. Downloading..." curl --noproxy '*.intel.com' -L -o "${BUILDER_DIR}/rsrc/simics.ispm" \ "${PUBLIC_SIMICS_PKGS_URL}" fi +if [ ! -f "${BUILDER_DIR}/rsrc/lld-5.0.2.src.tar.xz" ]; then + echo "LLD not found. Downloading..." + curl --noproxy '*.intel.com' -L -o "${BUILDER_DIR}/rsrc/lld-5.0.2.src.tar.xz" \ + "${LLD_URL}" +fi + if [ ! -f "${BUILDER_DIR}/rsrc/cfe-5.0.2.src.tar.xz" ]; then + echo "CFE not found. Downloading..." curl --noproxy '*.intel.com' -L -o "${BUILDER_DIR}/rsrc/cfe-5.0.2.src.tar.xz" \ "${CFE_URL}" fi if [ ! -f "${BUILDER_DIR}/rsrc/llvm-5.0.2.src.tar.xz" ]; then + echo "LLVM not found. Downloading..." curl --noproxy '*.intel.com' -L -o "${BUILDER_DIR}/rsrc/llvm-5.0.2.src.tar.xz" \ "${LLVM_SRC_URL}" fi if [ ! -f "${BUILDER_DIR}/rsrc/make-4.4.1.tar.gz" ]; then + echo "Make not found. Downloading..." curl --noproxy '*.intel.com' -L -o "${BUILDER_DIR}/rsrc/make-4.4.1.tar.gz" \ "${MAKE_SRC_URL}" fi if [ ! -f "${BUILDER_DIR}/rsrc/rustup-init" ]; then + echo "rustup not found. Downloading..." curl --noproxy '*.intel.com' -L -o "${BUILDER_DIR}/rsrc/rustup-init" \ "${RUSTUP_INIT_URL}" chmod +x "${BUILDER_DIR}/rsrc/rustup-init" fi if [ ! -f "${BUILDER_DIR}/rsrc/cmake-3.28.0-rc5-linux-x86_64.tar.gz" ]; then + echo "CMake not found. Downloading..." curl --noproxy '*.intel.com' -L -o "${BUILDER_DIR}/rsrc/cmake-3.28.0-rc5-linux-x86_64.tar.gz" \ "${CMAKE_URL}" fi -if [ ! -f "${BUILDER_DIR}/rsrc/patchelf-0.18.0-x86_64.tar.gz" ]; then - curl --noproxy '*.intel.com' -L -o "${BUILDER_DIR}/rsrc/patchelf-0.18.0-x86_64.tar.gz" \ - "${PATCHELF_URL}" +if [ ! -d "${BUILDER_DIR}/rsrc/rpms" ]; then + echo "RPM dependencies not found. Downloading..." + # NOTE: This may stop working at some point, as Fedora 20 is EOL. Therefore, we download the + # packages with the expectation that we will provide them separately if they are no longer + # available. + docker run -v "${BUILDER_DIR}/rsrc/rpms:/rpms" fedora:20 bash -c \ + 'yum -y update && yum install --downloadonly --downloaddir=/rpms coreutils gcc gcc-c++ make which && chmod -R 755 /rpms/' fi unset SIMICS_BASE diff --git a/simics-rs/cargo-simics-build/src/lib.rs b/simics-rs/cargo-simics-build/src/lib.rs index bb670651..234a0c4f 100644 --- a/simics-rs/cargo-simics-build/src/lib.rs +++ b/simics-rs/cargo-simics-build/src/lib.rs @@ -105,8 +105,6 @@ pub enum SimicsBuildCmd { args: Args, #[clap(long)] simics_base: Option, - #[clap(long)] - with_patchelf: bool, }, } @@ -116,11 +114,7 @@ type Result = std::result::Result; impl App { pub fn run(cmd: Cmd) -> Result { - let SimicsBuildCmd::SimicsBuild { - args, - simics_base, - with_patchelf, - } = cmd.simics_build; + let SimicsBuildCmd::SimicsBuild { args, simics_base } = cmd.simics_build; let subcommand = Subcommand::new(args)?; let cargo = var("CARGO")?; @@ -235,46 +229,6 @@ impl App { signed.write(&signed_module_cdylib)?; - signed_module_cdylib = signed_module_cdylib.canonicalize()?; - - if with_patchelf { - // We need to use patchelf to replace absolute paths to shared objects with - // just names - String::from_utf8( - Command::new("patchelf") - .arg("--print-needed") - .arg(&signed_module_cdylib) - .check()? - .stdout, - )? - .lines() - .filter(|l| l.starts_with('/')) - .try_for_each(|l| { - let path = PathBuf::from(l); - let file_name = path - .file_name() - .ok_or_else(|| Error::NoFilename { - path: PathBuf::from(l), - })? - .to_str() - .ok_or_else(|| Error::NoFilename { - path: PathBuf::from(l), - })?; - println!("Replacing needed library {} with {}", l, file_name); - Command::new("patchelf") - .arg("--remove-needed") - .arg(&l) - .arg(&signed_module_cdylib) - .check()?; - Command::new("patchelf") - .arg("--add-needed") - .arg(file_name) - .arg(&signed_module_cdylib) - .check()?; - Ok::<(), Error>(()) - })?; - } - let target_profile_build_dir = subcommand.build_dir(subcommand.target()).join("build"); // Find interfaces diff --git a/simics-rs/docs/src/SUMMARY.md b/simics-rs/docs/src/SUMMARY.md index 7390c828..06ffc046 100644 --- a/simics-rs/docs/src/SUMMARY.md +++ b/simics-rs/docs/src/SUMMARY.md @@ -1,3 +1,3 @@ # Summary -- [Chapter 1](./chapter_1.md) +- [Build Directives](./build-directives.md) diff --git a/simics-rs/docs/src/chapter_1.md b/simics-rs/docs/src/chapter_1.md deleted file mode 100644 index b743fda3..00000000 --- a/simics-rs/docs/src/chapter_1.md +++ /dev/null @@ -1 +0,0 @@ -# Chapter 1 diff --git a/simics-rs/simics-build-utils/src/lib.rs b/simics-rs/simics-build-utils/src/lib.rs index 3abc1523..f8e62aaa 100644 --- a/simics-rs/simics-build-utils/src/lib.rs +++ b/simics-rs/simics-build-utils/src/lib.rs @@ -1,7 +1,7 @@ // Copyright (C) 2024 Intel Corporation // SPDX-License-Identifier: Apache-2.0 -use anyhow::{anyhow, ensure}; +use anyhow::{anyhow, ensure, Result}; use ispm_wrapper::ispm::{self, GlobalOptions}; use std::{ env::var, @@ -9,32 +9,9 @@ use std::{ path::{Path, PathBuf}, }; -/// Configuration indicating that the experimental snapshots API is available (as of -/// 6.0.173) -pub const CFG_SIMICS_EXPERIMENTAL_API_SNAPSHOTS: &str = "simics_experimental_api_snapshots"; -/// Configuration indicating that the experimental snapshots API is available under the -/// new `VT_take_snapshot` API name instead of the original `VT_save_snapshot` API name -/// (as of 6.0.180)) -pub const CFG_SIMICS_EXPERIMENTAL_API_SNAPSHOTS_V2: &str = "simics_experimental_api_snapshots_v2"; -/// Configuration indicating that SIM_log_info is deprecated and should be replaced with -/// VT_log_info until an API update -pub const CFG_SIMICS_DEPRECATED_API_SIM_LOG: &str = "simics_deprecated_api_sim_log"; -/// Configuration indicating that `SIM_register_copyright` is deprecated (as of 7.0.0) -pub const CFG_SIMICS_DEPRECATED_API_SIM_REGISTER_COPYRIGHT: &str = - "simics_deprecated_api_sim_register_copyright"; -/// Configuration indicating that all rev-exec features are deprecated (as of 7.0.0) -pub const CFG_SIMICS_DEPRECATED_API_REV_EXEC: &str = "simics_deprecated_api_rev_exec"; -/// Configuration indicating that the snapshots API has been stabilized and is available under -/// the name `SIM_` instead of `VT_` (as of 7.0.0) -pub const CFG_SIMICS_STABLE_API_SNAPSHOTS: &str = "simics_stable_api_snapshots"; -/// Configuration indicating that the `cpu_variant_t` and `gui_mode_t` command-line options are -/// deprecated (as of 7.0.0) -pub const CFG_SIMICS_DEPRECATED_API_CPU_VARIANT_GUI_MODE: &str = - "simics_deprecated_api_cpu_variant_gui_mode"; - /// Get the only subdirectory of a directory, if only one exists. If zero or more than one subdirectories /// exist, returns an error -pub fn subdir

(dir: P) -> anyhow::Result +pub fn subdir

(dir: P) -> Result where P: AsRef, { @@ -55,73 +32,41 @@ where .ok_or_else(|| anyhow!("No sub-directories found")) } -/// Emit configuration directives used in the build process to conditionally enable -/// features that aren't compatible with all supported SIMICS versions, based on the -/// SIMICS version of the low level bindings. This is not needed for all consumers of the -/// API, but is useful for consumers which need to remain compatible with a wide range of -/// SIMICS base versions. -pub fn emit_cfg_directives() -> anyhow::Result<()> { +/// Emit CFG directives for the version of the Simics API being compiled against. For example, +/// simics_version_6_0_185 and simics_version_6. Both a full triple version and a major version +/// directive is emitted. +/// +/// This function can be used in the `build.rs` script of a crate that depends on the `simics` +/// crate to conditionally enable experimental features in its own code. +pub fn emit_cfg_directives() -> Result<()> { // Set configurations to conditionally enable experimental features that aren't // compatible with all supported SIMICS versions, based on the SIMICS version of the // low level bindings. let simics_api_version = versions::Versioning::new(simics_api_sys::SIMICS_VERSION) - .ok_or_else(|| anyhow::anyhow!("Invalid version {}", simics_api_sys::SIMICS_VERSION))?; - - // Conditional configurations for API versions - - if ::from_str("<6.0.163")? - .matches(&simics_api_version) - { - // Bail out if we are targeting a version before 6.0.163. We don't test any earlier than - // this. - panic!("Target SIMICS API version is too old. The minimum version supported is 6.0.163."); - } - - if ::from_str(">=6.0.177")? - .matches(&simics_api_version) - { - // Deprecate (temporarily) the SIM_log APIs for versions over 6.0.177 (where the API - // was first deprecated) - // NOTE: This will be un-deprecated at an unspecified time in the future - println!("cargo:rustc-cfg={CFG_SIMICS_DEPRECATED_API_SIM_LOG}"); - } - - if ::from_str(">=6.0.173")? - .matches(&simics_api_version) - && ::from_str("<6.0.180")? - .matches(&simics_api_version) - { - // Enable the experimental snapshots api for versions over 6.0.173 (where the API first - // appears) - println!("cargo:rustc-cfg={CFG_SIMICS_EXPERIMENTAL_API_SNAPSHOTS}"); - } + .ok_or_else(|| anyhow!("Invalid version {}", simics_api_sys::SIMICS_VERSION))?; - if ::from_str(">=6.0.180")? - .matches(&simics_api_version) - && ::from_str("<7.0.0")? - .matches(&simics_api_version) - { - // Enable the changed snapshot API (VT_save_snapshot has been renamed to - // VT_take_snapshot) as of 6.0.180 - println!("cargo:rustc-cfg={CFG_SIMICS_EXPERIMENTAL_API_SNAPSHOTS_V2}"); - } + // Exports a configuration directive indicating which Simics version is *compiled* against. + println!( + "cargo:rustc-cfg=simics_version_{}", + simics_api_version.to_string().replace('.', "_") + ); - if ::from_str(">=7.0.0")? - .matches(&simics_api_version) - { - println!("cargo:rustc-cfg={CFG_SIMICS_DEPRECATED_API_SIM_REGISTER_COPYRIGHT}"); - println!("cargo:rustc-cfg={CFG_SIMICS_DEPRECATED_API_REV_EXEC}"); - println!("cargo:rustc-cfg={CFG_SIMICS_STABLE_API_SNAPSHOTS}"); - println!("cargo:rustc-cfg={CFG_SIMICS_DEPRECATED_API_CPU_VARIANT_GUI_MODE}"); - } + println!( + "cargo:rustc-cfg=simics_version_{}", + simics_api_version + .to_string() + .split('.') + .next() + .ok_or_else(|| anyhow!("No major version found"))? + ); Ok(()) } -pub fn emit_link_info() -> anyhow::Result<()> { +pub fn emit_link_info() -> Result<()> { #[cfg(unix)] - const HOST_DIRNAME: &'static str = "linux64"; + const HOST_DIRNAME: &str = "linux64"; #[cfg(not(unix))] const HOST_DIRNAME: &'static str = "win64"; @@ -133,11 +78,6 @@ pub fn emit_link_info() -> anyhow::Result<()> { let mut packages = ispm::packages::list(&GlobalOptions::default())?; - println!( - "cargo:warning=Found {:?} installed packages", - packages.installed_packages - ); - packages.sort(); let Some(installed) = packages.installed_packages.as_ref() else { @@ -151,7 +91,7 @@ pub fn emit_link_info() -> anyhow::Result<()> { println!("cargo:warning=Using Simics base version {}", base.version); base.paths .first() - .ok_or_else(|| anyhow::anyhow!("No paths found for package with package number 1000"))? + .ok_or_else(|| anyhow!("No paths found for package with package number 1000"))? .clone() }; @@ -194,7 +134,7 @@ pub fn emit_link_info() -> anyhow::Result<()> { .map(|p| p.path()) .next() .ok_or_else(|| { - anyhow::anyhow!("No libpythonX.XX.so.X.X found in {}", sys_lib_dir.display()) + anyhow!("No libpythonX.XX.so.X.X found in {}", sys_lib_dir.display()) })?, ); @@ -202,48 +142,45 @@ pub fn emit_link_info() -> anyhow::Result<()> { "cargo:rustc-link-lib=dylib:+verbatim={}", libsimics_common .file_name() - .ok_or_else(|| anyhow::anyhow!( - "No file name found for {}", - libsimics_common.display() - ))? + .ok_or_else(|| anyhow!("No file name found for {}", libsimics_common.display()))? .to_str() - .ok_or_else(|| anyhow::anyhow!("Could not convert path to string"))? + .ok_or_else(|| anyhow!("Could not convert path to string"))? ); println!( "cargo:rustc-link-lib=dylib:+verbatim={}", libvtutils .file_name() - .ok_or_else(|| anyhow::anyhow!("No file name found for {}", libvtutils.display()))? + .ok_or_else(|| anyhow!("No file name found for {}", libvtutils.display()))? .to_str() - .ok_or_else(|| anyhow::anyhow!("Could not convert path to string"))? + .ok_or_else(|| anyhow!("Could not convert path to string"))? ); println!( "cargo:rustc-link-lib=dylib:+verbatim={}", libpython .file_name() - .ok_or_else(|| anyhow::anyhow!("No file name found for {}", libpython.display()))? + .ok_or_else(|| anyhow!("No file name found for {}", libpython.display()))? .to_str() - .ok_or_else(|| anyhow::anyhow!("Could not convert path to string"))? + .ok_or_else(|| anyhow!("Could not convert path to string"))? ); println!( "cargo:rustc-link-search=native={}", bin_dir .to_str() - .ok_or_else(|| anyhow::anyhow!("Could not convert path to string"))? + .ok_or_else(|| anyhow!("Could not convert path to string"))? ); println!( "cargo:rustc-link-search=native={}", sys_lib_dir .to_str() - .ok_or_else(|| anyhow::anyhow!("Could not convert path to string"))? + .ok_or_else(|| anyhow!("Could not convert path to string"))? ); - let ld_library_path = vec![ + let ld_library_path = [ bin_dir .to_str() - .ok_or_else(|| anyhow::anyhow!("Could not convert path to string"))?, + .ok_or_else(|| anyhow!("Could not convert path to string"))?, sys_lib_dir .to_str() - .ok_or_else(|| anyhow::anyhow!("Could not convert path to string"))?, + .ok_or_else(|| anyhow!("Could not convert path to string"))?, ] .join(":"); @@ -335,57 +272,52 @@ pub fn emit_link_info() -> anyhow::Result<()> { }) .map(|p| p.path()) .next() - .ok_or_else(|| { - anyhow::anyhow!("No pythonX.XX.dll found in {}", sys_lib_dir.display()) - })?, + .ok_or_else(|| anyhow!("No pythonX.XX.dll found in {}", sys_lib_dir.display()))?, ); println!( "cargo:rustc-link-lib=dylib:+verbatim={}", libsimics_common .file_name() - .ok_or_else(|| anyhow::anyhow!( - "No file name found for {}", - libsimics_common.display() - ))? + .ok_or_else(|| anyhow!("No file name found for {}", libsimics_common.display()))? .to_str() - .ok_or_else(|| anyhow::anyhow!("Could not convert path to string"))? + .ok_or_else(|| anyhow!("Could not convert path to string"))? ); println!( "cargo:rustc-link-lib=dylib:+verbatim={}", libvtutils .file_name() - .ok_or_else(|| anyhow::anyhow!("No file name found for {}", libvtutils.display()))? + .ok_or_else(|| anyhow!("No file name found for {}", libvtutils.display()))? .to_str() - .ok_or_else(|| anyhow::anyhow!("Could not convert path to string"))? + .ok_or_else(|| anyhow!("Could not convert path to string"))? ); println!( "cargo:rustc-link-lib=dylib:+verbatim={}", libpython .file_name() - .ok_or_else(|| anyhow::anyhow!("No file name found for {}", libpython.display()))? + .ok_or_else(|| anyhow!("No file name found for {}", libpython.display()))? .to_str() - .ok_or_else(|| anyhow::anyhow!("Could not convert path to string"))? + .ok_or_else(|| anyhow!("Could not convert path to string"))? ); println!( "cargo:rustc-link-search=native={}", bin_dir .to_str() - .ok_or_else(|| anyhow::anyhow!("Could not convert path to string"))? + .ok_or_else(|| anyhow!("Could not convert path to string"))? ); println!( "cargo:rustc-link-search=native={}", sys_lib_dir .to_str() - .ok_or_else(|| anyhow::anyhow!("Could not convert path to string"))? + .ok_or_else(|| anyhow!("Could not convert path to string"))? ); let ld_library_path = vec![ bin_dir .to_str() - .ok_or_else(|| anyhow::anyhow!("Could not convert path to string"))?, + .ok_or_else(|| anyhow!("Could not convert path to string"))?, sys_lib_dir .to_str() - .ok_or_else(|| anyhow::anyhow!("Could not convert path to string"))?, + .ok_or_else(|| anyhow!("Could not convert path to string"))?, ] .join(":"); } diff --git a/simics-rs/simics-macro/src/interface/mod.rs b/simics-rs/simics-macro/src/interface/mod.rs index 75e4511b..9776d0e6 100644 --- a/simics-rs/simics-macro/src/interface/mod.rs +++ b/simics-rs/simics-macro/src/interface/mod.rs @@ -1,5 +1,5 @@ use crate::exception::IsResultType; -use command_ext::{CommandExtCheck, CommandExtPrint}; +use command_ext::CommandExtCheck; use darling::{ast::NestedMeta, Error, FromMeta, Result}; use ispm_wrapper::ispm::{self, GlobalOptions}; use proc_macro::TokenStream; @@ -754,7 +754,6 @@ impl CInterface { .join("py-typemaps.c"), ) .arg(interface_subdir.join(&header_name)) - .print_args() .check() .map_err(|e| { Error::custom(format!( @@ -946,7 +945,7 @@ impl CInterface { .arg(interface_subdir.join(&pyifaces_interface_i)) .arg("-o") .arg(interface_subdir.join(pyiface_interface)) - .print_args() + // .print_args() .check() .map_err(|e| Error::custom(format!("Failed to generate pyiface: {e}")))?; @@ -1418,8 +1417,19 @@ pub fn interface_impl(args: TokenStream, input: TokenStream) -> TokenStream { // Get the `name = ""` attribute let input = parse_macro_input!(input as syn::ItemImpl); - if let Err(e) = CInterface::generate(&input, &name) { - return TokenStream::from(e.write_errors()); + // Try three times to generate the interface, with a short delay between each + // attempt. For an unknown reason, disassembly/emission of the pyiface trampolines can fail. + // + // TODO: Disassemble these trampolines and emit the data in a more reliable way. + for i in 0..3 { + if let Err(e) = CInterface::generate(&input, &name) { + if i == 2 { + return TokenStream::from(e.write_errors()); + } + std::thread::sleep(std::time::Duration::from_secs(1)); + } else { + break; + } } let interface = Interface { input, name }; diff --git a/simics-rs/simics-sign/Cargo.toml b/simics-rs/simics-sign/Cargo.toml index 96cabefc..7a7e4d9e 100644 --- a/simics-rs/simics-sign/Cargo.toml +++ b/simics-rs/simics-sign/Cargo.toml @@ -22,6 +22,6 @@ categories = [ ] [dependencies] -object = "0.34.0" +object = "0.35.0" chrono = "0.4.34" thiserror = "1.0.57" diff --git a/simics-rs/simics-test/src/lib.rs b/simics-rs/simics-test/src/lib.rs index b7f8e59a..e43157ad 100644 --- a/simics-rs/simics-test/src/lib.rs +++ b/simics-rs/simics-test/src/lib.rs @@ -103,9 +103,20 @@ pub fn local_or_remote_pkg_install(mut options: InstallOptions) -> Result<()> { let Some(available) = installed.iter().find(|p| { p.package_number == package.package_number - && (Requirement::new(&package.version.to_string()).is_some_and(|r| { - Versioning::new(&p.version).is_some_and(|pv| r.matches(&pv)) - }) || package.version == "latest") + && (Requirement::new(&format!("={}", package.version)) + .or_else(|| { + eprintln!("Failed to parse requirement {}", package.version); + None + }) + .is_some_and(|r| { + Versioning::new(&p.version) + .or_else(|| { + eprintln!("Failed to parse version{}", p.version); + None + }) + .is_some_and(|pv| r.matches(&pv)) + }) + || package.version == "latest") }) else { bail!("Did not find package {package:?} in {installed:?}"); }; @@ -179,6 +190,10 @@ pub struct TestEnvSpec { install_all: bool, #[builder(default, setter(into))] package_crates: Vec, + #[builder(default, setter(into, strip_option))] + build_simics_version: Option, + #[builder(default, setter(into))] + run_simics_version: Option, } impl TestEnvSpec { @@ -205,7 +220,7 @@ pub struct TestEnv { impl TestEnv { /// Return a reference to the test base directory - pub fn simics_base_dir

(simics_home_dir: P) -> Result + pub fn default_simics_base_dir

(simics_home_dir: P) -> Result where P: AsRef, { @@ -226,6 +241,28 @@ impl TestEnv { ) }) } + + /// Return a reference to the base directory specified by a version + pub fn simics_base_dir(version: S, simics_home_dir: P) -> Result + where + P: AsRef, + S: AsRef, + { + read_dir(simics_home_dir.as_ref())? + .filter_map(|d| d.ok()) + .filter(|d| d.path().is_dir()) + .map(|d| d.path()) + .find(|d| { + d.file_name() + .is_some_and(|n| n.to_string_lossy() == format!("simics-{}", version.as_ref())) + }) + .ok_or_else(|| { + anyhow!( + "No simics base in home directory {:?}", + simics_home_dir.as_ref() + ) + }) + } } impl TestEnv { @@ -365,12 +402,27 @@ impl TestEnv { )?; if let Some(installed) = installed.installed_packages { - installed_packages.extend(installed.iter().map(|ip| { - ProjectPackage::builder() - .package_number(ip.package_number) - .version(ip.version.clone()) - .build() - })); + installed_packages.extend( + installed + .iter() + .filter(|ip| { + if ip.package_number == 1000 { + if let Some(run_version) = spec.run_simics_version.as_ref() { + *run_version == ip.version + } else { + true + } + } else { + true + } + }) + .map(|ip| { + ProjectPackage::builder() + .package_number(ip.package_number) + .version(ip.version.clone()) + .build() + }), + ); } } } @@ -410,8 +462,12 @@ impl TestEnv { let cmd = Cmd { simics_build: SimicsBuildCmd::SimicsBuild { args: install_args, - simics_base: Some(Self::simics_base_dir(&simics_home_dir)?), - with_patchelf: false, + simics_base: Some( + spec.build_simics_version + .as_ref() + .map(|v| Self::simics_base_dir(&v, &simics_home_dir)) + .unwrap_or_else(|| Self::default_simics_base_dir(&simics_home_dir))?, + ), }, }; diff --git a/simics-rs/simics/src/api/base/version.rs b/simics-rs/simics/src/api/base/version.rs index dc5e405c..28605ab9 100644 --- a/simics-rs/simics/src/api/base/version.rs +++ b/simics-rs/simics/src/api/base/version.rs @@ -3,14 +3,10 @@ //! SIMICS version access and management APIs -#[cfg(not(simics_deprecated_api_sim_register_copyright))] -use crate::sys::SIM_register_copyright; use crate::{ sys::{SIM_copyright, SIM_version, SIM_version_base, SIM_version_major, SIM_vmxmon_version}, Result, }; -#[cfg(not(simics_deprecated_api_sim_register_copyright))] -use raw_cstr::raw_cstr; use std::ffi::CStr; /// Get the current SIMICS version @@ -67,17 +63,3 @@ pub fn copyright() -> Result { .to_str()? .to_string()) } - -#[cfg(not(simics_deprecated_api_sim_register_copyright))] -/// Set the current copyright string -/// -/// # Contex -/// -/// Global Context -pub fn register_copyright(str: S) -> Result<()> -where - S: AsRef, -{ - unsafe { SIM_register_copyright(raw_cstr(str)?) }; - Ok(()) -} diff --git a/simics-rs/simics/src/api/internal/core.rs b/simics-rs/simics/src/api/internal/core.rs index 5810ee2a..28449211 100644 --- a/simics-rs/simics/src/api/internal/core.rs +++ b/simics-rs/simics/src/api/internal/core.rs @@ -3,13 +3,16 @@ //! Not officially exported CORE APIs +#[cfg(simics_version_6)] use crate::simics_exception; +#[cfg(simics_version_6)] extern "C" { /// Discard recorded future events and forget them pub fn CORE_discard_future(); } +#[cfg(simics_version_6)] #[simics_exception] /// Discard future events that are scheduled /// diff --git a/simics-rs/simics/src/api/internal/mod.rs b/simics-rs/simics/src/api/internal/mod.rs index 269e6fda..9ca8a17d 100644 --- a/simics-rs/simics/src/api/internal/mod.rs +++ b/simics-rs/simics/src/api/internal/mod.rs @@ -4,4 +4,5 @@ //! Internal non-exported APIs pub mod core; +#[allow(unused)] pub use self::core::*; diff --git a/simics-rs/simics/src/api/logging/mod.rs b/simics-rs/simics/src/api/logging/mod.rs index a987b6a3..df0eaee9 100644 --- a/simics-rs/simics/src/api/logging/mod.rs +++ b/simics-rs/simics/src/api/logging/mod.rs @@ -5,11 +5,6 @@ #![allow(clippy::not_unsafe_ptr_arg_deref)] -#[cfg(not(simics_deprecated_api_sim_log))] -use crate::sys::{ - SIM_log_critical, SIM_log_error, SIM_log_info, SIM_log_spec_violation, SIM_log_unimplemented, -}; -#[cfg(simics_deprecated_api_sim_log)] use crate::sys::{ VT_log_critical, VT_log_error, VT_log_info, VT_log_spec_violation, VT_log_unimplemented, }; @@ -46,38 +41,6 @@ where s.as_ref().replace('%', "%%") } -#[cfg(not(simics_deprecated_api_sim_log))] -#[simics_exception] -/// Log an info-level message through the SIMICS logging functions -/// -/// # Arguments -/// -/// * `level` - The level to emit this log message at -/// * `device` - The device to emit this log message through -/// * `msg` - The message to log -/// -/// # Notes -/// -/// The macros [`simics::error`], [`simics::warn`], [`simics::info`], [`simics::debug`], -/// and [`simics::trace`] are more flexible and user friendly. They should be used instead. -/// -/// # Context -/// -/// All Contexts -pub fn log_info(level: LogLevel, device: *mut ConfObject, msg: S) -> Result<()> -where - S: AsRef, -{ - let msg_cstring = CString::new(msg.as_ref())?; - - unsafe { - SIM_log_info(level as i32, device, LOG_GROUP, msg_cstring.as_ptr()); - }; - - Ok(()) -} - -#[cfg(simics_deprecated_api_sim_log)] #[simics_exception] /// Log an info-level message through the SIMICS logging functions /// @@ -108,37 +71,6 @@ where Ok(()) } -#[cfg(not(simics_deprecated_api_sim_log))] -#[simics_exception] -/// Log an info-level message through the SIMICS logging functions -/// -/// # Arguments -/// -/// * `device` - The device to emit this log message through -/// * `msg` - The message to log -/// -/// # Notes -/// -/// The macros [`simics::error`], [`simics::warn`], [`simics::info`], [`simics::debug`], -/// and [`simics::trace`] are more flexible and user friendly. They should be used instead. -/// -/// # Context -/// -/// All Contexts -pub fn log_error(device: *mut ConfObject, msg: S) -> Result<()> -where - S: AsRef, -{ - let msg_cstring = CString::new(sanitize(msg.as_ref()))?; - - unsafe { - SIM_log_error(device, LOG_GROUP, msg_cstring.as_ptr()); - }; - - Ok(()) -} - -#[cfg(simics_deprecated_api_sim_log)] #[simics_exception] /// Log an info-level message through the SIMICS logging functions /// @@ -168,41 +100,6 @@ where Ok(()) } -#[cfg(not(simics_deprecated_api_sim_log))] -#[simics_exception] -/// Log an info-level message through the SIMICS logging functions -/// -/// # Arguments -/// -/// * `device` - The device to emit this log message through -/// * `msg` - The message to log -/// -/// # Notes -/// -/// This function causes a frontend exception. Only use it if the error is truly critical. -/// -/// # Context -/// -/// All Contexts -pub fn log_critical(device: *mut ConfObject, msg: S) -> Result<()> -where - S: AsRef, -{ - let msg_cstring = CString::new(sanitize(msg.as_ref()))?; - - unsafe { - SIM_log_critical(device, LOG_GROUP, msg_cstring.as_ptr()); - }; - - #[cfg(simics_deprecated_api_sim_log)] - unsafe { - VT_log_critical(device, LOG_GROUP as u64, msg_cstring.as_ptr()); - }; - - Ok(()) -} - -#[cfg(simics_deprecated_api_sim_log)] #[simics_exception] /// Log an info-level message through the SIMICS logging functions /// @@ -231,29 +128,6 @@ where Ok(()) } -#[cfg(not(simics_deprecated_api_sim_log))] -#[simics_exception] -/// Log an error-level message through the SIMICS logging functions -/// -/// # Context -/// -/// All Contexts -pub fn log_spec_violation(level: LogLevel, device: *mut ConfObject, msg: String) -> Result<()> { - let msg_cstring = CString::new(sanitize(msg))?; - - unsafe { - SIM_log_spec_violation(level as i32, device, LOG_GROUP, msg_cstring.as_ptr()); - }; - - #[cfg(simics_deprecated_api_sim_log)] - unsafe { - VT_log_spec_violation(level as i32, device, LOG_GROUP as u64, msg_cstring.as_ptr()); - }; - - Ok(()) -} - -#[cfg(simics_deprecated_api_sim_log)] #[simics_exception] /// Log an error-level message through the SIMICS logging functions /// @@ -270,24 +144,6 @@ pub fn log_spec_violation(level: LogLevel, device: *mut ConfObject, msg: String) Ok(()) } -#[cfg(not(simics_deprecated_api_sim_log))] -#[simics_exception] -/// Log an error-level message through the SIMICS logging functions -/// -/// # Context -/// -/// All Contexts -pub fn log_unimplemented(level: LogLevel, device: *mut ConfObject, msg: String) -> Result<()> { - let msg_cstring = CString::new(sanitize(msg))?; - - unsafe { - SIM_log_unimplemented(level as i32, device, LOG_GROUP, msg_cstring.as_ptr()); - }; - - Ok(()) -} - -#[cfg(simics_deprecated_api_sim_log)] #[simics_exception] /// Log an error-level message through the SIMICS logging functions /// diff --git a/simics-rs/simics/src/api/simulator/embed.rs b/simics-rs/simics/src/api/simulator/embed.rs index 22129fc5..05799fa9 100644 --- a/simics-rs/simics/src/api/simulator/embed.rs +++ b/simics-rs/simics/src/api/simulator/embed.rs @@ -4,8 +4,6 @@ //! Functionality for embedding SIMICS into a program or library. These functions are useful for //! creating alternate SIMICS frontends -#[cfg(not(simics_deprecated_api_cpu_variant_gui_mode))] -use crate::sys::{cpu_variant_t, gui_mode_t}; use crate::{ simics_exception, sys::{ @@ -18,23 +16,23 @@ use paste::paste; use raw_cstr::raw_cstr; use std::{mem::forget, ptr::null}; -#[cfg(not(simics_deprecated_api_cpu_variant_gui_mode))] +#[cfg(simics_version_6)] /// Alias for `cpu_variant_t` -pub type CpuVariant = cpu_variant_t; +pub type CpuVariant = crate::sys::cpu_variant_t; -#[cfg(not(simics_deprecated_api_cpu_variant_gui_mode))] +#[cfg(simics_version_6)] #[derive(Debug, Clone)] /// Wrapper for `gui_mode_t` which can be converted to a string -pub struct GuiMode(gui_mode_t); +pub struct GuiMode(crate::sys::gui_mode_t); -#[cfg(not(simics_deprecated_api_cpu_variant_gui_mode))] +#[cfg(simics_version_6)] impl ToString for GuiMode { fn to_string(&self) -> String { match self.0 { - gui_mode_t::GUI_Mode_None => "no-gui", - gui_mode_t::GUI_Mode_Mixed => "mixed", - gui_mode_t::GUI_Mode_Only => "gui", - gui_mode_t::GUI_Mode_Default => "default", + crate::sys::gui_mode_t::GUI_Mode_None => "no-gui", + crate::sys::gui_mode_t::GUI_Mode_Mixed => "mixed", + crate::sys::gui_mode_t::GUI_Mode_Only => "gui", + crate::sys::gui_mode_t::GUI_Mode_Default => "default", } .to_string() } diff --git a/simics-rs/simics/src/api/simulator/mod.rs b/simics-rs/simics/src/api/simulator/mod.rs index 03251bb4..600feab6 100644 --- a/simics-rs/simics/src/api/simulator/mod.rs +++ b/simics-rs/simics/src/api/simulator/mod.rs @@ -16,17 +16,24 @@ pub mod modules; pub mod paths; pub mod processor; pub mod python; -#[cfg(not(simics_deprecated_api_rev_exec))] +#[cfg(simics_version_6)] pub mod rev_exec; pub mod script; pub mod sim_caches; pub mod sim_conf_object; pub mod sim_get_class; -#[cfg(any( - simics_experimental_api_snapshots, - simics_experimental_api_snapshots_v2, - simics_stable_api_snapshots -))] +#[cfg(not(any( + simics_version_6_0_163, + simics_version_6_0_164, + simics_version_6_0_165, + simics_version_6_0_166, + simics_version_6_0_167, + simics_version_6_0_168, + simics_version_6_0_169, + simics_version_6_0_170, + simics_version_6_0_171, + simics_version_6_0_172, +)))] pub mod snapshots; pub use breakpoints::*; @@ -42,15 +49,22 @@ pub use modules::*; pub use paths::*; pub use processor::*; pub use python::*; -#[cfg(not(simics_deprecated_api_rev_exec))] +#[cfg(simics_version_6)] pub use rev_exec::*; pub use script::*; pub use sim_caches::*; pub use sim_conf_object::*; pub use sim_get_class::*; -#[cfg(any( - simics_experimental_api_snapshots, - simics_experimental_api_snapshots_v2, - simics_stable_api_snapshots -))] +#[cfg(not(any( + simics_version_6_0_163, + simics_version_6_0_164, + simics_version_6_0_165, + simics_version_6_0_166, + simics_version_6_0_167, + simics_version_6_0_168, + simics_version_6_0_169, + simics_version_6_0_170, + simics_version_6_0_171, + simics_version_6_0_172, +)))] pub use snapshots::*; diff --git a/simics-rs/simics/src/api/simulator/snapshots.rs b/simics-rs/simics/src/api/simulator/snapshots.rs index eb685d03..9473efa6 100644 --- a/simics-rs/simics/src/api/simulator/snapshots.rs +++ b/simics-rs/simics/src/api/simulator/snapshots.rs @@ -3,206 +3,307 @@ //! Experimental snapshot APIs -#[cfg(all( - simics_experimental_api_snapshots, - not(simics_experimental_api_snapshots_v2), - not(simics_stable_api_snapshots) -))] -// NOTE: This API changes to VT_take_snapshot in simics 6.0.180 -use crate::sys::VT_save_snapshot; - -#[cfg(all(simics_experimental_api_snapshots_v2, not(simics_stable_api_snapshots)))] -// NOTE: This API changed to VT_take_snapshot in simics 6.0.180 and to SIM_take_snapshot in simics 6.0.180 -use crate::sys::{snapshot_error_t, VT_take_snapshot}; - -#[cfg(simics_stable_api_snapshots)] -use crate::sys::{ - SIM_delete_snapshot, SIM_list_snapshots, SIM_restore_snapshot, SIM_take_snapshot, -}; - -#[cfg(any( - simics_experimental_api_snapshots, - simics_experimental_api_snapshots_v2 -))] -use crate::sys::{VT_delete_snapshot, VT_list_snapshots, VT_restore_snapshot}; - -#[cfg(any( - simics_experimental_api_snapshots, - simics_experimental_api_snapshots_v2, - simics_stable_api_snapshots, -))] -use crate::sys::{VT_snapshot_size_used, VT_snapshots_ignore_class}; - -#[cfg(simics_stable_api_snapshots)] -use crate::sys::snapshot_error_t; use crate::{simics_exception, AttrValue, Result}; use raw_cstr::raw_cstr; -#[cfg(any(simics_experimental_api_snapshots_v2, simics_stable_api_snapshots))] -type SnapshotError = snapshot_error_t; +#[cfg(not(any( + simics_version_6_0_163, + simics_version_6_0_164, + simics_version_6_0_165, + simics_version_6_0_166, + simics_version_6_0_167, + simics_version_6_0_168, + simics_version_6_0_169, + simics_version_6_0_170, + simics_version_6_0_171, + simics_version_6_0_172, + simics_version_6_0_173, + simics_version_6_0_174, + simics_version_6_0_175, + simics_version_6_0_176, + simics_version_6_0_177, + simics_version_6_0_178, + simics_version_6_0_179, +)))] +type SnapshotError = crate::sys::snapshot_error_t; -#[cfg(all( - simics_experimental_api_snapshots, - not(simics_experimental_api_snapshots_v2) +#[cfg(simics_version_6_0_173)] +#[simics_exception] +/// Save a snapshot with a name. This function was renamed to +/// `VT_take_snapshot` in version 6.0.180 +pub fn save_snapshot(name: S) -> Result<()> +where + S: AsRef, +{ + Ok(unsafe { crate::sys::VT_save_snapshot(raw_cstr(name)?) }) +} + +#[cfg(any( + simics_version_6_0_174, + simics_version_6_0_175, + simics_version_6_0_176, + simics_version_6_0_177, + simics_version_6_0_178, + simics_version_6_0_179, ))] #[simics_exception] -/// Save a snapshot with a name +/// Save a snapshot with a name. This function was renamed to +/// `VT_take_snapshot` in version 6.0.180 pub fn save_snapshot(name: S) -> Result where S: AsRef, { - Ok(unsafe { VT_save_snapshot(raw_cstr(name)?) }) + Ok(unsafe { crate::sys::VT_save_snapshot(raw_cstr(name)?) }) } -#[cfg(simics_experimental_api_snapshots_v2)] -#[cfg_attr( - any(simics_experimental_api_snapshots, simics_stable_api_snapshots), - deprecated = "Use `take_snapshot` instead" -)] +#[cfg(all( + not(any( + simics_version_6_0_163, + simics_version_6_0_164, + simics_version_6_0_165, + simics_version_6_0_166, + simics_version_6_0_167, + simics_version_6_0_168, + simics_version_6_0_169, + simics_version_6_0_170, + simics_version_6_0_171, + simics_version_6_0_172, + simics_version_6_0_173, + simics_version_6_0_174, + simics_version_6_0_175, + simics_version_6_0_176, + simics_version_6_0_177, + simics_version_6_0_178, + simics_version_6_0_179, + )), + simics_version_6 +))] /// Save a snapshot with a name. API deprecated as of SIMICS 6.0.180 pub fn save_snapshot(name: S) -> Result where S: AsRef, { - Ok(unsafe { VT_take_snapshot(raw_cstr(name)?) }) + Ok(unsafe { crate::sys::VT_take_snapshot(raw_cstr(name)?) }) } -#[cfg(simics_experimental_api_snapshots_v2)] +#[cfg(all( + not(any( + simics_version_6_0_163, + simics_version_6_0_164, + simics_version_6_0_165, + simics_version_6_0_166, + simics_version_6_0_167, + simics_version_6_0_168, + simics_version_6_0_169, + simics_version_6_0_170, + simics_version_6_0_171, + simics_version_6_0_172, + simics_version_6_0_173, + simics_version_6_0_174, + simics_version_6_0_175, + simics_version_6_0_176, + simics_version_6_0_177, + simics_version_6_0_178, + simics_version_6_0_179, + )), + simics_version_6 +))] #[simics_exception] /// Take a snapshot with a name pub fn take_snapshot(name: S) -> Result where S: AsRef, { - Ok(unsafe { VT_take_snapshot(raw_cstr(name)?) }) + Ok(unsafe { crate::sys::VT_take_snapshot(raw_cstr(name)?) }) } -#[cfg(all( - simics_experimental_api_snapshots, - not(simics_experimental_api_snapshots_v2) -))] +#[cfg(simics_version_6_0_173)] #[simics_exception] /// Restore a snapshot with a name -pub fn restore_snapshot(name: S) -> Result +pub fn restore_snapshot(index: i32) -> Result where S: AsRef, { - Ok(unsafe { VT_restore_snapshot(raw_cstr(name)?) }) + Ok(unsafe { crate::sys::VT_restore_snapshot(index) }) } -#[cfg(simics_experimental_api_snapshots_v2)] +#[cfg(all( + not(any( + simics_version_6_0_163, + simics_version_6_0_164, + simics_version_6_0_165, + simics_version_6_0_166, + simics_version_6_0_167, + simics_version_6_0_168, + simics_version_6_0_169, + simics_version_6_0_170, + simics_version_6_0_171, + simics_version_6_0_172, + simics_version_6_0_173, + simics_version_6_0_174, + simics_version_6_0_175, + simics_version_6_0_176, + simics_version_6_0_177, + simics_version_6_0_178, + simics_version_6_0_179, + )), + simics_version_6 +))] #[simics_exception] /// Restore a snapshot with a name pub fn restore_snapshot(name: S) -> Result where S: AsRef, { - Ok(unsafe { VT_restore_snapshot(raw_cstr(name)?) }) + Ok(unsafe { crate::sys::VT_restore_snapshot(raw_cstr(name)?) }) } -#[cfg(all( - simics_experimental_api_snapshots, - not(simics_experimental_api_snapshots_v2) -))] +#[cfg(simics_version_6_0_173)] #[simics_exception] /// Delete a snapshot with a name -pub fn delete_snapshot(name: S) -> Result -where - S: AsRef, -{ - Ok(unsafe { VT_delete_snapshot(raw_cstr(name)?) }) +pub fn delete_snapshot(index: i32) -> Result { + Ok(unsafe { crate::sys::VT_delete_snapshot(index) }) } -#[cfg(simics_experimental_api_snapshots_v2)] +#[cfg(all( + not(any( + simics_version_6_0_163, + simics_version_6_0_164, + simics_version_6_0_165, + simics_version_6_0_166, + simics_version_6_0_167, + simics_version_6_0_168, + simics_version_6_0_169, + simics_version_6_0_170, + simics_version_6_0_171, + simics_version_6_0_172, + simics_version_6_0_173, + simics_version_6_0_174, + simics_version_6_0_175, + simics_version_6_0_176, + simics_version_6_0_177, + simics_version_6_0_178, + simics_version_6_0_179, + )), + simics_version_6 +))] #[simics_exception] /// Delete a snapshot with a name pub fn delete_snapshot(name: S) -> Result where S: AsRef, { - Ok(unsafe { VT_delete_snapshot(raw_cstr(name)?) }) + Ok(unsafe { crate::sys::VT_delete_snapshot(raw_cstr(name)?) }) } -#[cfg(any( - simics_experimental_api_snapshots, - simics_experimental_api_snapshots_v2, - simics_stable_api_snapshots +#[cfg(all( + not(any( + simics_version_6_0_163, + simics_version_6_0_164, + simics_version_6_0_165, + simics_version_6_0_166, + simics_version_6_0_167, + simics_version_6_0_168, + simics_version_6_0_169, + simics_version_6_0_170, + simics_version_6_0_171, + simics_version_6_0_172, + )), + simics_version_6, ))] #[simics_exception] /// Get the total size used by all snapshots pub fn snapshot_size_used() -> AttrValue { - unsafe { VT_snapshot_size_used() }.into() + unsafe { crate::sys::VT_snapshot_size_used() }.into() } -#[cfg(any( - simics_experimental_api_snapshots, - simics_experimental_api_snapshots_v2 +#[cfg(all( + not(any( + simics_version_6_0_163, + simics_version_6_0_164, + simics_version_6_0_165, + simics_version_6_0_166, + simics_version_6_0_167, + simics_version_6_0_168, + simics_version_6_0_169, + simics_version_6_0_170, + simics_version_6_0_171, + simics_version_6_0_172, + )), + simics_version_6, ))] #[simics_exception] /// Get the list of all snapshots pub fn list_snapshots() -> AttrValue { - unsafe { VT_list_snapshots() }.into() + unsafe { crate::sys::VT_list_snapshots() }.into() } -#[cfg(any( - simics_experimental_api_snapshots, - simics_experimental_api_snapshots_v2, - simics_stable_api_snapshots -))] +#[cfg(not(any( + simics_version_6_0_163, + simics_version_6_0_164, + simics_version_6_0_165, + simics_version_6_0_166, + simics_version_6_0_167, + simics_version_6_0_168, + simics_version_6_0_169, + simics_version_6_0_170, + simics_version_6_0_171, + simics_version_6_0_172, +)))] #[simics_exception] /// Set snapshots to ignore a given class by name pub fn snapshots_ignore_class(class_name: S) -> Result<()> where S: AsRef, { - unsafe { VT_snapshots_ignore_class(raw_cstr(class_name)?) }; + unsafe { crate::sys::VT_snapshots_ignore_class(raw_cstr(class_name)?) }; Ok(()) } #[deprecated = "Use `take_snapshot` instead`"] -#[cfg(simics_stable_api_snapshots)] +#[cfg(simics_version_7)] #[simics_exception] /// Take a snapshot with a name pub fn save_snapshot(name: S) -> Result where S: AsRef, { - Ok(unsafe { SIM_take_snapshot(raw_cstr(name)?) }) + Ok(unsafe { crate::sys::SIM_take_snapshot(raw_cstr(name)?) }) } -#[cfg(simics_stable_api_snapshots)] +#[cfg(simics_version_7)] #[simics_exception] /// Take a snapshot with a name pub fn take_snapshot(name: S) -> Result where S: AsRef, { - Ok(unsafe { SIM_take_snapshot(raw_cstr(name)?) }) + Ok(unsafe { crate::sys::SIM_take_snapshot(raw_cstr(name)?) }) } -#[cfg(simics_stable_api_snapshots)] +#[cfg(simics_version_7)] #[simics_exception] /// Restore a snapshot with a name pub fn restore_snapshot(name: S) -> Result where S: AsRef, { - Ok(unsafe { SIM_restore_snapshot(raw_cstr(name)?) }) + Ok(unsafe { crate::sys::SIM_restore_snapshot(raw_cstr(name)?) }) } -#[cfg(simics_stable_api_snapshots)] +#[cfg(simics_version_7)] #[simics_exception] /// Delete a snapshot with a name pub fn delete_snapshot(name: S) -> Result where S: AsRef, { - Ok(unsafe { SIM_delete_snapshot(raw_cstr(name)?) }) + Ok(unsafe { crate::sys::SIM_delete_snapshot(raw_cstr(name)?) }) } -#[cfg(simics_stable_api_snapshots)] +#[cfg(simics_version_7)] #[simics_exception] /// Get the list of all snapshots pub fn list_snapshots() -> AttrValue { - unsafe { SIM_list_snapshots() }.into() + unsafe { crate::sys::SIM_list_snapshots() }.into() } diff --git a/src/lib.rs b/src/lib.rs index 83973db8..e921d32f 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -30,7 +30,7 @@ use crate::interfaces::{config::config, fuzz::fuzz}; use crate::state::SolutionKind; -#[cfg(not(simics_deprecated_api_rev_exec))] +#[cfg(simics_version_6)] use crate::util::Utils; use anyhow::{anyhow, Result}; use arch::{Architecture, ArchitectureHint, ArchitectureOperations}; @@ -43,34 +43,24 @@ use magic::MagicNumber; use num_traits::FromPrimitive as _; use serde::{Deserialize, Serialize}; use simics::{ - break_simulation, class, error, free_attribute, get_class, get_interface, get_processor_number, - info, lookup_file, object_clock, run_command, run_python, simics_init, trace, AsConfObject, - BreakpointId, ClassCreate, ClassObjectsFinalize, ConfObject, CoreBreakpointMemopHap, - CoreExceptionHap, CoreMagicInstructionHap, CoreSimulationStoppedHap, + break_simulation, class, debug, error, free_attribute, get_class, get_interface, + get_processor_number, info, lookup_file, object_clock, run_command, run_python, simics_init, + trace, AsConfObject, BreakpointId, ClassCreate, ClassObjectsFinalize, ConfObject, + CoreBreakpointMemopHap, CoreExceptionHap, CoreMagicInstructionHap, CoreSimulationStoppedHap, CpuInstrumentationSubscribeInterface, Event, EventClassFlag, FromConfObject, HapHandle, Interface, IntoAttrValueDict, }; -#[cfg(any( - simics_experimental_api_snapshots, - simics_experimental_api_snapshots_v2, - simics_stable_api_snapshots -))] -// NOTE: save_snapshot used because it is a stable alias for both save_snapshot and take_snapshot -// which is necessary because this module is compatible with base versions which cross the -// deprecation boundary -use simics::{ - debug, restore_snapshot, save_snapshot, sys::save_flags_t, write_configuration_to_file, -}; -#[cfg(not(simics_deprecated_api_rev_exec))] +#[cfg(simics_version_6)] use simics::{ discard_future, restore_micro_checkpoint, save_micro_checkpoint, MicroCheckpointFlags, }; +#[cfg(simics_version_7)] +// NOTE: save_snapshot used because it is a stable alias for both save_snapshot and take_snapshot +// which is necessary because this module is compatible with base versions which cross the +// deprecation boundary +use simics::{restore_snapshot, save_snapshot, sys::save_flags_t, write_configuration_to_file}; use state::StopReason; -#[cfg(any( - simics_experimental_api_snapshots, - simics_experimental_api_snapshots_v2, - simics_stable_api_snapshots -))] +#[cfg(simics_version_7)] use std::fs::remove_dir_all; use std::{ alloc::{alloc_zeroed, Layout}, @@ -265,16 +255,6 @@ pub(crate) struct Tsffs { /// Whether the fuzzer should stop on compiled-in harnesses. If set to `True`, the fuzzer /// will start fuzzing when a harness macro is executed. pub stop_on_harness: bool, - #[class(attribute(optional, default = true))] - /// Whether snapshots should be used. Snapshots are introduced as of Simics 6.0.173 and - /// replace rev-exec micro checkpoints as the only method of taking full simulation - /// snapshots as of Simics 7.0.0. If set to `True`, the fuzzer will use snapshots to - /// restore the state of the simulation to a known state before each iteration. If set to - /// `False` the fuzzer will use rev-exec micro checkpoints to restore the state of the - /// simulation to a known state before each iteration. If snapshots are not supported by - /// the version of SIMICS being used, the fuzzer will quit with an error message when this - /// option is set. - pub use_snapshots: bool, #[class(attribute(optional, default = 0))] /// The index number which is passed to the platform-specific magic instruction HAP /// by a compiled-in harness to signal that the fuzzer should start the fuzzing loop. @@ -670,67 +650,58 @@ impl Tsffs { /// Save the initial snapshot using the configured method (either rev-exec micro checkpoints /// or snapshots) pub fn save_initial_snapshot(&mut self) -> Result<()> { - if self.use_snapshots && self.snapshot_name.get().is_none() { - #[cfg(any( - simics_experimental_api_snapshots, - simics_experimental_api_snapshots_v2, - simics_stable_api_snapshots - ))] - { - if self.checkpoint_path.exists() { - remove_dir_all(&self.checkpoint_path)?; - } + if self.have_initial_snapshot() { + return Ok(()); + } - debug!( - self.as_conf_object(), - "Saving checkpoint to {}", - self.checkpoint_path.display() - ); + #[cfg(simics_version_7)] + { + if self.checkpoint_path.exists() { + remove_dir_all(&self.checkpoint_path)?; + } - if self.pre_snapshot_checkpoint { - write_configuration_to_file(&self.checkpoint_path, save_flags_t(0))?; - } + debug!( + self.as_conf_object(), + "Saving checkpoint to {}", + self.checkpoint_path.display() + ); - save_snapshot(Self::SNAPSHOT_NAME)?; - self.snapshot_name - .set(Self::SNAPSHOT_NAME.to_string()) - .map_err(|_| anyhow!("Snapshot name already set"))?; + if self.pre_snapshot_checkpoint { + write_configuration_to_file(&self.checkpoint_path, save_flags_t(0))?; } - #[cfg(not(any( - simics_experimental_api_snapshots, - simics_experimental_api_snapshots_v2, - simics_stable_api_snapshots - )))] - panic!("Snapshots cannot be used without SIMICS support from recent SIMICS versions."); - } else if !self.use_snapshots - && self.snapshot_name.get().is_none() - && self.micro_checkpoint_index.get().is_none() + + debug!(self.as_conf_object(), "Saving initial snapshot"); + + save_snapshot(Self::SNAPSHOT_NAME)?; + self.snapshot_name + .set(Self::SNAPSHOT_NAME.to_string()) + .map_err(|_| anyhow!("Snapshot name already set"))?; + } + + #[cfg(simics_version_6)] { - #[cfg(not(simics_deprecated_api_rev_exec))] - { - save_micro_checkpoint( - Self::SNAPSHOT_NAME, - MicroCheckpointFlags::Sim_MC_ID_User | MicroCheckpointFlags::Sim_MC_Persistent, - )?; - - self.snapshot_name - .set(Self::SNAPSHOT_NAME.to_string()) - .map_err(|_| anyhow!("Snapshot name already set"))?; - - self.micro_checkpoint_index - .set( - Utils::get_micro_checkpoints()? - .iter() - .enumerate() - .find_map(|(i, c)| (c.name == Self::SNAPSHOT_NAME).then_some(i as i32)) - .ok_or_else(|| { - anyhow!("No micro checkpoint with just-registered name found") - })?, - ) - .map_err(|_| anyhow!("Micro checkpoint index already set"))?; - } - #[cfg(simics_deprecated_api_rev_exec)] - panic!("Micro checkpoints are deprecated in SIMICS >=7.0.0 and cannot be used. Set `use_snapshots` to `true` to use snapshots instead."); + debug!(self.as_conf_object(), "Saving initial micro checkpoint"); + + save_micro_checkpoint( + Self::SNAPSHOT_NAME, + MicroCheckpointFlags::Sim_MC_ID_User | MicroCheckpointFlags::Sim_MC_Persistent, + )?; + + self.snapshot_name + .set(Self::SNAPSHOT_NAME.to_string()) + .map_err(|_| anyhow!("Snapshot name already set"))?; + + self.micro_checkpoint_index + .set( + Utils::get_micro_checkpoints()? + .iter() + .enumerate() + .find_map(|(i, c)| (c.name == Self::SNAPSHOT_NAME).then_some(i as i32)) + .ok_or_else(|| { + anyhow!("No micro checkpoint with just-registered name found") + })?, + ) + .map_err(|_| anyhow!("Micro checkpoint index already set"))?; } Ok(()) @@ -739,30 +710,15 @@ impl Tsffs { /// Restore the initial snapshot using the configured method (either rev-exec micro checkpoints /// or snapshots) pub fn restore_initial_snapshot(&mut self) -> Result<()> { - if self.use_snapshots { - #[cfg(any( - simics_experimental_api_snapshots, - simics_experimental_api_snapshots_v2, - simics_stable_api_snapshots - ))] - restore_snapshot(Self::SNAPSHOT_NAME)?; - #[cfg(not(any( - simics_experimental_api_snapshots, - simics_experimental_api_snapshots_v2, - simics_stable_api_snapshots - )))] - panic!("Snapshots cannot be used without SIMICS support from recent SIMICS versions."); - } else { - #[cfg(not(simics_deprecated_api_rev_exec))] - { - restore_micro_checkpoint(*self.micro_checkpoint_index.get().ok_or_else(|| { - anyhow!("Not using snapshots and no micro checkpoint index present") - })?)?; - discard_future()?; - } + #[cfg(simics_version_7)] + restore_snapshot(Self::SNAPSHOT_NAME)?; + #[cfg(simics_version_6)] + { + restore_micro_checkpoint(*self.micro_checkpoint_index.get().ok_or_else(|| { + anyhow!("Not using snapshots and no micro checkpoint index present") + })?)?; - #[cfg(simics_deprecated_api_rev_exec)] - panic!("Micro checkpoints are deprecated in SIMICS >=7.0.0 and cannot be used. Set `use_snapshots` to `true` to use snapshots instead."); + discard_future()?; } Ok(()) @@ -770,10 +726,15 @@ impl Tsffs { /// Whether an initial snapshot has been saved pub fn have_initial_snapshot(&self) -> bool { - (self.snapshot_name.get().is_some() && self.use_snapshots) - || (self.snapshot_name.get().is_some() - && self.micro_checkpoint_index.get().is_some() - && !self.use_snapshots) + let have = if cfg!(simics_version_7) { + self.snapshot_name.get().is_some() + } else if cfg!(simics_version_6) { + self.snapshot_name.get().is_some() && self.micro_checkpoint_index.get().is_some() + } else { + error!(self.as_conf_object(), "Unsupported SIMICS version"); + false + }; + have } /// Save a repro bookmark if one is needed diff --git a/src/util/mod.rs b/src/util/mod.rs index 8a00be9c..e9d7e94f 100644 --- a/src/util/mod.rs +++ b/src/util/mod.rs @@ -25,9 +25,10 @@ impl Utils { run_python( r#"print(simics.SIM_get_attribute(simics.SIM_get_object("sim.rexec"), "state_info"))"#, )?; + let checkpoints: Vec = get_attribute(get_object("sim.rexec")?, "state_info")?.try_into()?; - println!("{:?}", checkpoints); + Ok(checkpoints) } } diff --git a/tests/riscv_64_kernel_from_userspace_magic_6_0_185.rs b/tests/riscv_64_kernel_from_userspace_magic_6_0_185.rs new file mode 100644 index 00000000..d53ef132 --- /dev/null +++ b/tests/riscv_64_kernel_from_userspace_magic_6_0_185.rs @@ -0,0 +1,145 @@ +// Copyright (C) 2024 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 + +use anyhow::Result; +use indoc::indoc; +use ispm_wrapper::data::ProjectPackage; +use simics_test::TestEnvSpec; +use std::path::PathBuf; + +#[test] +#[cfg_attr(miri, ignore)] +fn test_riscv_64_kernel_from_userspace_magic_6_0_185() -> Result<()> { + let output = TestEnvSpec::builder() + .name("test_riscv_64_kernel_from_userspace_magic_6_0_185") + .package_crates([PathBuf::from(env!("CARGO_MANIFEST_DIR"))]) + .packages([ + ProjectPackage::builder() + .package_number(1000) + .version("6.0.185") + .build(), + ProjectPackage::builder() + .package_number(2050) + .version("6.0.60") + .build(), + ProjectPackage::builder() + .package_number(2053) + .version("6.0.4") + .build(), + ]) + .cargo_target_tmpdir(env!("CARGO_TARGET_TMPDIR")) + .directories([PathBuf::from(env!("CARGO_MANIFEST_DIR")) + .join("tests") + .join("rsrc") + .join("riscv-64")]) + .build() + .to_env()? + .test(indoc! {r#" + load-module tsffs + init-tsffs + + @tsffs.log_level = 4 + @tsffs.start_on_harness = True + @tsffs.stop_on_harness = True + @tsffs.magic_start_index = 1 + @tsffs.magic_stop_indices = [1] + @tsffs.timeout = 3.0 + @tsffs.exceptions = [14] + @tsffs.generate_random_corpus = True + @tsffs.iteration_limit = 1000 + + load-target "risc-v-simple/linux" namespace = riscv machine:hardware:storage:disk1:image = "test.fs.craff" + + script-branch { + bp.time.wait-for seconds = 15 + board.console.con.input "mkdir /mnt/disk0\r\n" + bp.time.wait-for seconds = 1.0 + board.console.con.input "mount /dev/vdb /mnt/disk0\r\n" + bp.time.wait-for seconds = 1.0 + board.console.con.input "insmod /mnt/disk0/test-mod.ko\r\n" + bp.time.wait-for seconds = 1.0 + board.console.con.input "/mnt/disk0/test-mod-userspace\r\n" + } + + script-branch { + bp.time.wait-for seconds = 240 + quit 1 + } + + run + "#})?; + + let output_str = String::from_utf8_lossy(&output.stdout); + + println!("{output_str}"); + + Ok(()) +} + +#[test] +#[cfg_attr(miri, ignore)] +fn test_riscv_64_kernel_magic_6_0_185() -> Result<()> { + let output = TestEnvSpec::builder() + .name("test_riscv_64_kernel_magic_6_0_185") + .package_crates([PathBuf::from(env!("CARGO_MANIFEST_DIR"))]) + .packages([ + ProjectPackage::builder() + .package_number(1000) + .version("6.0.185") + .build(), + ProjectPackage::builder() + .package_number(2050) + .version("6.0.60") + .build(), + ProjectPackage::builder() + .package_number(2053) + .version("6.0.4") + .build(), + ]) + .cargo_target_tmpdir(env!("CARGO_TARGET_TMPDIR")) + .directories([PathBuf::from(env!("CARGO_MANIFEST_DIR")) + .join("tests") + .join("rsrc") + .join("riscv-64")]) + .build() + .to_env()? + .test(indoc! {r#" + load-module tsffs + init-tsffs + + @tsffs.log_level = 2 + @tsffs.start_on_harness = True + @tsffs.stop_on_harness = True + @tsffs.timeout = 3.0 + @tsffs.exceptions = [14] + @tsffs.generate_random_corpus = True + @tsffs.iteration_limit = 1000 + @tsffs.debug_log_libafl = True + + load-target "risc-v-simple/linux" namespace = riscv machine:hardware:storage:disk1:image = "test.fs.craff" + + script-branch { + bp.time.wait-for seconds = 15 + board.console.con.input "mkdir /mnt/disk0\r\n" + bp.time.wait-for seconds = 1.0 + board.console.con.input "mount /dev/vdb /mnt/disk0\r\n" + bp.time.wait-for seconds = 1.0 + board.console.con.input "insmod /mnt/disk0/test-mod.ko\r\n" + bp.time.wait-for seconds = 1.0 + board.console.con.input "/mnt/disk0/test-mod-userspace\r\n" + } + + script-branch { + bp.time.wait-for seconds = 240 + quit 1 + } + + run + "#})?; + + let output_str = String::from_utf8_lossy(&output.stdout); + + println!("{output_str}"); + + Ok(()) +} diff --git a/tests/riscv_64_kernel_from_userspace_magic.rs b/tests/riscv_64_kernel_from_userspace_magic_latest.rs similarity index 93% rename from tests/riscv_64_kernel_from_userspace_magic.rs rename to tests/riscv_64_kernel_from_userspace_magic_latest.rs index f115f9a3..1c76c6d8 100644 --- a/tests/riscv_64_kernel_from_userspace_magic.rs +++ b/tests/riscv_64_kernel_from_userspace_magic_latest.rs @@ -9,9 +9,9 @@ use std::path::PathBuf; #[test] #[cfg_attr(miri, ignore)] -fn test_riscv_64_kernel_from_userspace_magic() -> Result<()> { +fn test_riscv_64_kernel_from_userspace_magic_latest() -> Result<()> { let output = TestEnvSpec::builder() - .name("test_riscv_64_kernel_from_userspace_magic") + .name("test_riscv_64_kernel_from_userspace_magic_latest") .package_crates([PathBuf::from(env!("CARGO_MANIFEST_DIR"))]) .packages([ ProjectPackage::builder() @@ -47,7 +47,6 @@ fn test_riscv_64_kernel_from_userspace_magic() -> Result<()> { @tsffs.exceptions = [14] @tsffs.generate_random_corpus = True @tsffs.iteration_limit = 1000 - @tsffs.use_snapshots = True load-target "risc-v-simple/linux" namespace = riscv machine:hardware:storage:disk1:image = "test.fs.craff" diff --git a/tests/riscv_64_kernel_magic_6_0_185.rs b/tests/riscv_64_kernel_magic_6_0_185.rs new file mode 100644 index 00000000..435b5fef --- /dev/null +++ b/tests/riscv_64_kernel_magic_6_0_185.rs @@ -0,0 +1,76 @@ +// Copyright (C) 2024 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 + +use anyhow::Result; +use indoc::indoc; +use ispm_wrapper::data::ProjectPackage; +use simics_test::TestEnvSpec; +use std::path::PathBuf; + +#[test] +#[cfg_attr(miri, ignore)] +fn test_riscv_64_kernel_magic_6_0_185() -> Result<()> { + let output = TestEnvSpec::builder() + .name("test_riscv_64_kernel_magic_6_0_185") + .package_crates([PathBuf::from(env!("CARGO_MANIFEST_DIR"))]) + .packages([ + ProjectPackage::builder() + .package_number(1000) + .version("6.0.185") + .build(), + ProjectPackage::builder() + .package_number(2050) + .version("6.0.60") + .build(), + ProjectPackage::builder() + .package_number(2053) + .version("6.0.4") + .build(), + ]) + .cargo_target_tmpdir(env!("CARGO_TARGET_TMPDIR")) + .directories([PathBuf::from(env!("CARGO_MANIFEST_DIR")) + .join("tests") + .join("rsrc") + .join("riscv-64")]) + .build() + .to_env()? + .test(indoc! {r#" + load-module tsffs + init-tsffs + + @tsffs.log_level = 2 + @tsffs.start_on_harness = True + @tsffs.stop_on_harness = True + @tsffs.timeout = 3.0 + @tsffs.exceptions = [14] + @tsffs.generate_random_corpus = True + @tsffs.iteration_limit = 1000 + @tsffs.debug_log_libafl = True + + load-target "risc-v-simple/linux" namespace = riscv machine:hardware:storage:disk1:image = "test.fs.craff" + + script-branch { + bp.time.wait-for seconds = 15 + board.console.con.input "mkdir /mnt/disk0\r\n" + bp.time.wait-for seconds = 1.0 + board.console.con.input "mount /dev/vdb /mnt/disk0\r\n" + bp.time.wait-for seconds = 1.0 + board.console.con.input "insmod /mnt/disk0/test-mod.ko\r\n" + bp.time.wait-for seconds = 1.0 + board.console.con.input "/mnt/disk0/test-mod-userspace\r\n" + } + + script-branch { + bp.time.wait-for seconds = 240 + quit 1 + } + + run + "#})?; + + let output_str = String::from_utf8_lossy(&output.stdout); + + println!("{output_str}"); + + Ok(()) +} diff --git a/tests/riscv_64_kernel_magic.rs b/tests/riscv_64_kernel_magic_latest.rs similarity index 94% rename from tests/riscv_64_kernel_magic.rs rename to tests/riscv_64_kernel_magic_latest.rs index 8e94bf1f..225a49c4 100644 --- a/tests/riscv_64_kernel_magic.rs +++ b/tests/riscv_64_kernel_magic_latest.rs @@ -9,9 +9,9 @@ use std::path::PathBuf; #[test] #[cfg_attr(miri, ignore)] -fn test_riscv_64_kernel_magic() -> Result<()> { +fn test_riscv_64_kernel_magic_latest() -> Result<()> { let output = TestEnvSpec::builder() - .name("test_riscv_64_kernel_magic") + .name("test_riscv_64_kernel_magic_latest") .package_crates([PathBuf::from(env!("CARGO_MANIFEST_DIR"))]) .packages([ ProjectPackage::builder() @@ -45,7 +45,6 @@ fn test_riscv_64_kernel_magic() -> Result<()> { @tsffs.exceptions = [14] @tsffs.generate_random_corpus = True @tsffs.iteration_limit = 1000 - @tsffs.use_snapshots = True @tsffs.debug_log_libafl = True load-target "risc-v-simple/linux" namespace = riscv machine:hardware:storage:disk1:image = "test.fs.craff" diff --git a/tests/riscv_64_userspace_magic_6_0_185.rs b/tests/riscv_64_userspace_magic_6_0_185.rs new file mode 100644 index 00000000..df4dabf4 --- /dev/null +++ b/tests/riscv_64_userspace_magic_6_0_185.rs @@ -0,0 +1,74 @@ +// Copyright (C) 2024 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 + +use anyhow::Result; +use indoc::indoc; +use ispm_wrapper::data::ProjectPackage; +use simics_test::TestEnvSpec; +use std::path::PathBuf; + +#[test] +#[cfg_attr(miri, ignore)] +fn test_riscv_64_userspace_magic_6_0_185() -> Result<()> { + let output = TestEnvSpec::builder() + .name("test_riscv_64_userspace_magic_6_0_185") + .package_crates([PathBuf::from(env!("CARGO_MANIFEST_DIR"))]) + .packages([ + ProjectPackage::builder() + .package_number(1000) + .version("6.0.185") + .build(), + ProjectPackage::builder() + .package_number(2050) + .version("6.0.60") + .build(), + ProjectPackage::builder() + .package_number(2053) + .version("6.0.4") + .build(), + ]) + .cargo_target_tmpdir(env!("CARGO_TARGET_TMPDIR")) + .directories([PathBuf::from(env!("CARGO_MANIFEST_DIR")) + .join("tests") + .join("rsrc") + .join("riscv-64")]) + .build() + .to_env()? + .test(indoc! {r#" + load-module tsffs + init-tsffs + + @tsffs.log_level = 2 + @tsffs.start_on_harness = True + @tsffs.stop_on_harness = True + @tsffs.timeout = 3.0 + @tsffs.exceptions = [14] + @tsffs.generate_random_corpus = True + @tsffs.iteration_limit = 1000 + + load-target "risc-v-simple/linux" namespace = riscv machine:hardware:storage:disk1:image = "test.fs.craff" + + script-branch { + bp.time.wait-for seconds = 15 + board.console.con.input "mkdir /mnt/disk0\r\n" + bp.time.wait-for seconds = 1.0 + board.console.con.input "mount /dev/vdb /mnt/disk0\r\n" + bp.time.wait-for seconds = 1.0 + board.console.con.capture-start out.txt + board.console.con.input "/mnt/disk0/test\r\n" + } + + script-branch { + bp.time.wait-for seconds = 240 + quit 1 + } + + run + "#})?; + + let output_str = String::from_utf8_lossy(&output.stdout); + + println!("{output_str}"); + + Ok(()) +} diff --git a/tests/riscv_64_userspace_magic.rs b/tests/riscv_64_userspace_magic_latest.rs similarity index 94% rename from tests/riscv_64_userspace_magic.rs rename to tests/riscv_64_userspace_magic_latest.rs index 8436e1b0..9058c137 100644 --- a/tests/riscv_64_userspace_magic.rs +++ b/tests/riscv_64_userspace_magic_latest.rs @@ -9,9 +9,9 @@ use std::path::PathBuf; #[test] #[cfg_attr(miri, ignore)] -fn test_riscv_64_userspace_magic() -> Result<()> { +fn test_riscv_64_userspace_magic_latest() -> Result<()> { let output = TestEnvSpec::builder() - .name("test_riscv_64_userspace_magic") + .name("test_riscv_64_userspace_magic_latest") .package_crates([PathBuf::from(env!("CARGO_MANIFEST_DIR"))]) .packages([ ProjectPackage::builder() @@ -45,7 +45,6 @@ fn test_riscv_64_userspace_magic() -> Result<()> { @tsffs.exceptions = [14] @tsffs.generate_random_corpus = True @tsffs.iteration_limit = 1000 - @tsffs.use_snapshots = True load-target "risc-v-simple/linux" namespace = riscv machine:hardware:storage:disk1:image = "test.fs.craff" diff --git a/tests/x86_64_edk2_magic_6_0_185.rs b/tests/x86_64_edk2_magic_6_0_185.rs new file mode 100644 index 00000000..9ffedf73 --- /dev/null +++ b/tests/x86_64_edk2_magic_6_0_185.rs @@ -0,0 +1,76 @@ +// Copyright (C) 2024 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 + +use anyhow::Result; +use indoc::indoc; +use ispm_wrapper::data::ProjectPackage; +use simics_test::TestEnvSpec; +use std::path::PathBuf; + +#[test] +#[cfg_attr(miri, ignore)] +fn test_x86_64_edk2_magic_6_0_185() -> Result<()> { + let output = TestEnvSpec::builder() + .name("test_x86_64_edk2_magic_6_0_185") + .package_crates([PathBuf::from(env!("CARGO_MANIFEST_DIR"))]) + .packages([ + ProjectPackage::builder() + .package_number(1000) + .version("6.0.185") + .build(), + ProjectPackage::builder() + .package_number(2096) + .version("6.0.73") + .build(), + ProjectPackage::builder() + .package_number(8112) + .version("6.0.21") + .build(), + ]) + .cargo_target_tmpdir(env!("CARGO_TARGET_TMPDIR")) + .directories([PathBuf::from(env!("CARGO_MANIFEST_DIR")) + .join("tests") + .join("rsrc") + .join("x86_64-uefi-edk2")]) + .build() + .to_env()? + .test(indoc! {r#" + load-module tsffs + init-tsffs + + @tsffs.log_level = 2 + @tsffs.start_on_harness = True + @tsffs.stop_on_harness = True + @tsffs.timeout = 3.0 + @tsffs.exceptions = [14, 6] + @tsffs.generate_random_corpus = True + @tsffs.iteration_limit = 1000 + + load-target "qsp-x86/uefi-shell" namespace = qsp machine:hardware:storage:disk0:image = "minimal_boot_disk.craff" + + script-branch { + bp.time.wait-for seconds = 15 + qsp.serconsole.con.input "\n" + bp.time.wait-for seconds = .5 + qsp.serconsole.con.input "FS0:\n" + bp.time.wait-for seconds = .5 + local $manager = (start-agent-manager) + qsp.serconsole.con.input ("SimicsAgent.efi --download " + (lookup-file "%simics%/test.efi") + "\n") + bp.time.wait-for seconds = .5 + qsp.serconsole.con.input "test.efi\n" + } + + script-branch { + bp.time.wait-for seconds = 240 + quit 1 + } + + run + "#})?; + + let output_str = String::from_utf8_lossy(&output.stdout); + + println!("{output_str}"); + + Ok(()) +} diff --git a/tests/x86_64_edk2_magic.rs b/tests/x86_64_edk2_magic_latest.rs similarity index 94% rename from tests/x86_64_edk2_magic.rs rename to tests/x86_64_edk2_magic_latest.rs index 25fd0131..9ec3053f 100644 --- a/tests/x86_64_edk2_magic.rs +++ b/tests/x86_64_edk2_magic_latest.rs @@ -9,9 +9,9 @@ use std::path::PathBuf; #[test] #[cfg_attr(miri, ignore)] -fn test_x86_64_edk2_magic() -> Result<()> { +fn test_x86_64_edk2_magic_latest() -> Result<()> { let output = TestEnvSpec::builder() - .name("test_x86_64_edk2_magic") + .name("test_x86_64_edk2_magic_latest") .package_crates([PathBuf::from(env!("CARGO_MANIFEST_DIR"))]) .packages([ ProjectPackage::builder() @@ -45,7 +45,6 @@ fn test_x86_64_edk2_magic() -> Result<()> { @tsffs.exceptions = [14, 6] @tsffs.generate_random_corpus = True @tsffs.iteration_limit = 1000 - @tsffs.use_snapshots = True load-target "qsp-x86/uefi-shell" namespace = qsp machine:hardware:storage:disk0:image = "minimal_boot_disk.craff" diff --git a/tests/x86_64_edk2_timeout_6_0_185.rs b/tests/x86_64_edk2_timeout_6_0_185.rs new file mode 100644 index 00000000..ac44a39d --- /dev/null +++ b/tests/x86_64_edk2_timeout_6_0_185.rs @@ -0,0 +1,76 @@ +// Copyright (C) 2024 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 + +use anyhow::Result; +use indoc::indoc; +use ispm_wrapper::data::ProjectPackage; +use simics_test::TestEnvSpec; +use std::path::PathBuf; + +#[test] +#[cfg_attr(miri, ignore)] +fn test_x86_64_edk2_timeout_6_0_185() -> Result<()> { + let output = TestEnvSpec::builder() + .name("test_x86_64_edk2_timeout_6_0_185") + .package_crates([PathBuf::from(env!("CARGO_MANIFEST_DIR"))]) + .packages([ + ProjectPackage::builder() + .package_number(1000) + .version("6.0.185") + .build(), + ProjectPackage::builder() + .package_number(2096) + .version("6.0.73") + .build(), + ProjectPackage::builder() + .package_number(8112) + .version("6.0.21") + .build(), + ]) + .cargo_target_tmpdir(env!("CARGO_TARGET_TMPDIR")) + .directories([PathBuf::from(env!("CARGO_MANIFEST_DIR")) + .join("tests") + .join("rsrc") + .join("x86_64-timeout-uefi-edk2")]) + .build() + .to_env()? + .test(indoc! {r#" + load-module tsffs + init-tsffs + + @tsffs.log_level = 2 + @tsffs.start_on_harness = True + @tsffs.stop_on_harness = True + @tsffs.timeout = 3.0 + @tsffs.exceptions = [14] + @tsffs.generate_random_corpus = True + @tsffs.iteration_limit = 30 + + load-target "qsp-x86/uefi-shell" namespace = qsp machine:hardware:storage:disk0:image = "minimal_boot_disk.craff" + + script-branch { + bp.time.wait-for seconds = 15 + qsp.serconsole.con.input "\n" + bp.time.wait-for seconds = .5 + qsp.serconsole.con.input "FS0:\n" + bp.time.wait-for seconds = .5 + local $manager = (start-agent-manager) + qsp.serconsole.con.input ("SimicsAgent.efi --download " + (lookup-file "%simics%/test.efi") + "\n") + bp.time.wait-for seconds = .5 + qsp.serconsole.con.input "test.efi\n" + } + + script-branch { + bp.time.wait-for seconds = 240 + quit 1 + } + + run + "#})?; + + let output_str = String::from_utf8_lossy(&output.stdout); + + println!("{output_str}"); + + Ok(()) +} diff --git a/tests/x86_64_edk2_timeout.rs b/tests/x86_64_edk2_timeout_latest.rs similarity index 94% rename from tests/x86_64_edk2_timeout.rs rename to tests/x86_64_edk2_timeout_latest.rs index b2306d26..0609a006 100644 --- a/tests/x86_64_edk2_timeout.rs +++ b/tests/x86_64_edk2_timeout_latest.rs @@ -9,9 +9,9 @@ use std::path::PathBuf; #[test] #[cfg_attr(miri, ignore)] -fn test_x86_64_edk2_timeout() -> Result<()> { +fn test_x86_64_edk2_timeout_latest() -> Result<()> { let output = TestEnvSpec::builder() - .name("test_x86_64_edk2_timeout") + .name("test_x86_64_edk2_timeout_latest") .package_crates([PathBuf::from(env!("CARGO_MANIFEST_DIR"))]) .packages([ ProjectPackage::builder() @@ -45,7 +45,6 @@ fn test_x86_64_edk2_timeout() -> Result<()> { @tsffs.exceptions = [14] @tsffs.generate_random_corpus = True @tsffs.iteration_limit = 30 - @tsffs.use_snapshots = True load-target "qsp-x86/uefi-shell" namespace = qsp machine:hardware:storage:disk0:image = "minimal_boot_disk.craff" diff --git a/tests/x86_64_magic_6_0_185.rs b/tests/x86_64_magic_6_0_185.rs new file mode 100644 index 00000000..0743e66a --- /dev/null +++ b/tests/x86_64_magic_6_0_185.rs @@ -0,0 +1,76 @@ +// Copyright (C) 2024 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 + +use anyhow::Result; +use indoc::indoc; +use ispm_wrapper::data::ProjectPackage; +use simics_test::TestEnvSpec; +use std::path::PathBuf; + +#[test] +#[cfg_attr(miri, ignore)] +fn test_x86_64_magic_6_0_185() -> Result<()> { + let output = TestEnvSpec::builder() + .name("test_x86_64_magic_6_0_185") + .package_crates([PathBuf::from(env!("CARGO_MANIFEST_DIR"))]) + .packages([ + ProjectPackage::builder() + .package_number(1000) + .version("6.0.185") + .build(), + ProjectPackage::builder() + .package_number(2096) + .version("6.0.73") + .build(), + ProjectPackage::builder() + .package_number(8112) + .version("6.0.21") + .build(), + ]) + .cargo_target_tmpdir(env!("CARGO_TARGET_TMPDIR")) + .directories([PathBuf::from(env!("CARGO_MANIFEST_DIR")) + .join("tests") + .join("rsrc") + .join("x86_64-uefi")]) + .build() + .to_env()? + .test(indoc! {r#" + load-module tsffs + init-tsffs + + @tsffs.log_level = 2 + @tsffs.start_on_harness = True + @tsffs.stop_on_harness = True + @tsffs.timeout = 3.0 + @tsffs.exceptions = [14] + @tsffs.generate_random_corpus = True + @tsffs.iteration_limit = 1000 + + load-target "qsp-x86/uefi-shell" namespace = qsp machine:hardware:storage:disk0:image = "minimal_boot_disk.craff" + + script-branch { + bp.time.wait-for seconds = 15 + qsp.serconsole.con.input "\n" + bp.time.wait-for seconds = .5 + qsp.serconsole.con.input "FS0:\n" + bp.time.wait-for seconds = .5 + local $manager = (start-agent-manager) + qsp.serconsole.con.input ("SimicsAgent.efi --download " + (lookup-file "%simics%/test.efi") + "\n") + bp.time.wait-for seconds = .5 + qsp.serconsole.con.input "test.efi\n" + } + + script-branch { + bp.time.wait-for seconds = 240 + quit 1 + } + + run + "#})?; + + let output_str = String::from_utf8_lossy(&output.stdout); + + println!("{output_str}"); + + Ok(()) +} diff --git a/tests/x86_64_magic_apitest_6_0_185.rs b/tests/x86_64_magic_apitest_6_0_185.rs new file mode 100644 index 00000000..b5fa88d9 --- /dev/null +++ b/tests/x86_64_magic_apitest_6_0_185.rs @@ -0,0 +1,92 @@ +// Copyright (C) 2024 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 + +use anyhow::Result; +use indoc::indoc; +use ispm_wrapper::data::ProjectPackage; +use simics_test::TestEnvSpec; +use std::path::PathBuf; + +#[test] +#[cfg_attr(miri, ignore)] +fn test_x86_64_magic_apitest_6_0_185() -> Result<()> { + let output = TestEnvSpec::builder() + .name("test_x86_64_magic_apitest_6_0_185") + .package_crates([PathBuf::from(env!("CARGO_MANIFEST_DIR"))]) + .packages([ + ProjectPackage::builder() + .package_number(1000) + .version("6.0.185") + .build(), + ProjectPackage::builder() + .package_number(2096) + .version("6.0.73") + .build(), + ProjectPackage::builder() + .package_number(8112) + .version("6.0.21") + .build(), + ]) + .cargo_target_tmpdir(env!("CARGO_TARGET_TMPDIR")) + .directories([PathBuf::from(env!("CARGO_MANIFEST_DIR")) + .join("tests") + .join("rsrc") + .join("x86_64-uefi")]) + .build() + .to_env()? + .test(indoc! {r#" + load-module tsffs + init-tsffs + + @tsffs.log_level = 2 + + @tsffs.all_breakpoints_are_solutions = True + @tsffs.all_breakpoints_are_solutions = False + @tsffs.all_exceptions_are_solutions = True + @tsffs.all_exceptions_are_solutions = False + @tsffs.exceptions = [14] + @tsffs.exceptions.remove(14) + @tsffs.exceptions = [14] + @tsffs.breakpoints = [1] + @tsffs.breakpoints.remove(1) + @tsffs.timeout = 3.0 + @tsffs.start_on_harness = True + @tsffs.stop_on_harness = True + @tsffs.iteration_limit = 100 + @tsffs.initial_random_corpus_size = 32 + @tsffs.corpus_directory = SIM_lookup_file("%simics%") + "/corpus" + @tsffs.solutions_directory = SIM_lookup_file("%simics%") + "/solutions" + @tsffs.generate_random_corpus = True + @tsffs.cmplog = True + @tsffs.coverage_reporting = True + @tsffs.token_executables += [SIM_lookup_file("%simics%/test.efi")] + @tsffs.pre_snapshot_checkpoint = False + + load-target "qsp-x86/uefi-shell" namespace = qsp machine:hardware:storage:disk0:image = "minimal_boot_disk.craff" + + script-branch { + bp.time.wait-for seconds = 15 + qsp.serconsole.con.input "\n" + bp.time.wait-for seconds = .5 + qsp.serconsole.con.input "FS0:\n" + bp.time.wait-for seconds = .5 + local $manager = (start-agent-manager) + qsp.serconsole.con.input ("SimicsAgent.efi --download " + (lookup-file "%simics%/test.efi") + "\n") + bp.time.wait-for seconds = .5 + qsp.serconsole.con.input "test.efi\n" + } + + script-branch { + bp.time.wait-for seconds = 240 + quit 1 + } + + run + "#})?; + + let output_str = String::from_utf8_lossy(&output.stdout); + + println!("{output_str}"); + + Ok(()) +} diff --git a/tests/x86_64_magic_apitest.rs b/tests/x86_64_magic_apitest_latest.rs similarity index 96% rename from tests/x86_64_magic_apitest.rs rename to tests/x86_64_magic_apitest_latest.rs index 75534d0a..9ca112a0 100644 --- a/tests/x86_64_magic_apitest.rs +++ b/tests/x86_64_magic_apitest_latest.rs @@ -9,9 +9,9 @@ use std::path::PathBuf; #[test] #[cfg_attr(miri, ignore)] -fn test_x86_64_magic_apitest() -> Result<()> { +fn test_x86_64_magic_apitest_latest() -> Result<()> { let output = TestEnvSpec::builder() - .name("test_x86_64_magic_apitest") + .name("test_x86_64_magic_apitest_latest") .package_crates([PathBuf::from(env!("CARGO_MANIFEST_DIR"))]) .packages([ ProjectPackage::builder() @@ -52,7 +52,6 @@ fn test_x86_64_magic_apitest() -> Result<()> { @tsffs.timeout = 3.0 @tsffs.start_on_harness = True @tsffs.stop_on_harness = True - @tsffs.use_snapshots = True @tsffs.iteration_limit = 100 @tsffs.initial_random_corpus_size = 32 @tsffs.corpus_directory = SIM_lookup_file("%simics%") + "/corpus" diff --git a/tests/x86_64_magic_crash_6_0_185.rs b/tests/x86_64_magic_crash_6_0_185.rs new file mode 100644 index 00000000..f6e2f4db --- /dev/null +++ b/tests/x86_64_magic_crash_6_0_185.rs @@ -0,0 +1,76 @@ +// Copyright (C) 2024 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 + +use anyhow::Result; +use indoc::indoc; +use ispm_wrapper::data::ProjectPackage; +use simics_test::TestEnvSpec; +use std::path::PathBuf; + +#[test] +#[cfg_attr(miri, ignore)] +fn test_x86_64_magic_crash_6_0_185() -> Result<()> { + let output = TestEnvSpec::builder() + .name("test_x86_64_magic_crash_6_0_185") + .package_crates([PathBuf::from(env!("CARGO_MANIFEST_DIR"))]) + .packages([ + ProjectPackage::builder() + .package_number(1000) + .version("6.0.185") + .build(), + ProjectPackage::builder() + .package_number(2096) + .version("6.0.73") + .build(), + ProjectPackage::builder() + .package_number(8112) + .version("6.0.21") + .build(), + ]) + .cargo_target_tmpdir(env!("CARGO_TARGET_TMPDIR")) + .directories([PathBuf::from(env!("CARGO_MANIFEST_DIR")) + .join("tests") + .join("rsrc") + .join("x86_64-crash-uefi")]) + .build() + .to_env()? + .test(indoc! {r#" + load-module tsffs + init-tsffs + + @tsffs.log_level = 2 + @tsffs.start_on_harness = True + @tsffs.stop_on_harness = True + @tsffs.timeout = 3.0 + @tsffs.exceptions = [14] + @tsffs.generate_random_corpus = True + @tsffs.iteration_limit = 100 + + load-target "qsp-x86/uefi-shell" namespace = qsp machine:hardware:storage:disk0:image = "minimal_boot_disk.craff" + + script-branch { + bp.time.wait-for seconds = 15 + qsp.serconsole.con.input "\n" + bp.time.wait-for seconds = .5 + qsp.serconsole.con.input "FS0:\n" + bp.time.wait-for seconds = .5 + local $manager = (start-agent-manager) + qsp.serconsole.con.input ("SimicsAgent.efi --download " + (lookup-file "%simics%/test.efi") + "\n") + bp.time.wait-for seconds = .5 + qsp.serconsole.con.input "test.efi\n" + } + + script-branch { + bp.time.wait-for seconds = 240 + quit 1 + } + + run + "#})?; + + let output_str = String::from_utf8_lossy(&output.stdout); + + println!("{output_str}"); + + Ok(()) +} diff --git a/tests/x86_64_magic_crash.rs b/tests/x86_64_magic_crash_latest.rs similarity index 94% rename from tests/x86_64_magic_crash.rs rename to tests/x86_64_magic_crash_latest.rs index 800111a0..fc631923 100644 --- a/tests/x86_64_magic_crash.rs +++ b/tests/x86_64_magic_crash_latest.rs @@ -9,9 +9,9 @@ use std::path::PathBuf; #[test] #[cfg_attr(miri, ignore)] -fn test_x86_64_magic_crash() -> Result<()> { +fn test_x86_64_magic_crash_latest() -> Result<()> { let output = TestEnvSpec::builder() - .name("test_x86_64_magic_crash") + .name("test_x86_64_magic_crash_latest") .package_crates([PathBuf::from(env!("CARGO_MANIFEST_DIR"))]) .packages([ ProjectPackage::builder() @@ -45,7 +45,6 @@ fn test_x86_64_magic_crash() -> Result<()> { @tsffs.exceptions = [14] @tsffs.generate_random_corpus = True @tsffs.iteration_limit = 100 - @tsffs.use_snapshots = True load-target "qsp-x86/uefi-shell" namespace = qsp machine:hardware:storage:disk0:image = "minimal_boot_disk.craff" diff --git a/tests/x86_64_magic.rs b/tests/x86_64_magic_latest.rs similarity index 95% rename from tests/x86_64_magic.rs rename to tests/x86_64_magic_latest.rs index 48726ec3..c61e69f5 100644 --- a/tests/x86_64_magic.rs +++ b/tests/x86_64_magic_latest.rs @@ -9,9 +9,9 @@ use std::path::PathBuf; #[test] #[cfg_attr(miri, ignore)] -fn test_x86_64_magic() -> Result<()> { +fn test_x86_64_magic_latest() -> Result<()> { let output = TestEnvSpec::builder() - .name("test_x86_64_magic") + .name("test_x86_64_magic_latest") .package_crates([PathBuf::from(env!("CARGO_MANIFEST_DIR"))]) .packages([ ProjectPackage::builder() @@ -45,7 +45,6 @@ fn test_x86_64_magic() -> Result<()> { @tsffs.exceptions = [14] @tsffs.generate_random_corpus = True @tsffs.iteration_limit = 1000 - @tsffs.use_snapshots = True load-target "qsp-x86/uefi-shell" namespace = qsp machine:hardware:storage:disk0:image = "minimal_boot_disk.craff" diff --git a/tests/x86_64_magic_reporting_6_0_185.rs b/tests/x86_64_magic_reporting_6_0_185.rs new file mode 100644 index 00000000..13d5bc5f --- /dev/null +++ b/tests/x86_64_magic_reporting_6_0_185.rs @@ -0,0 +1,78 @@ +// Copyright (C) 2024 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 + +use anyhow::Result; +use indoc::indoc; +use ispm_wrapper::data::ProjectPackage; +use simics_test::TestEnvSpec; +use std::path::PathBuf; + +#[test] +#[cfg_attr(miri, ignore)] +fn test_x86_64_magic_reporting_6_0_185() -> Result<()> { + let output = TestEnvSpec::builder() + .name("test_x86_64_magic_reporting_6_0_185") + .package_crates([PathBuf::from(env!("CARGO_MANIFEST_DIR"))]) + .packages([ + ProjectPackage::builder() + .package_number(1000) + .version("6.0.185") + .build(), + ProjectPackage::builder() + .package_number(2096) + .version("6.0.73") + .build(), + ProjectPackage::builder() + .package_number(8112) + .version("6.0.21") + .build(), + ]) + .cargo_target_tmpdir(env!("CARGO_TARGET_TMPDIR")) + .directories([PathBuf::from(env!("CARGO_MANIFEST_DIR")) + .join("tests") + .join("rsrc") + .join("x86_64-uefi")]) + .build() + .to_env()? + .test(indoc! {r#" + load-module tsffs + init-tsffs + + @tsffs.log_level = 2 + @tsffs.start_on_harness = True + @tsffs.stop_on_harness = True + @tsffs.timeout = 3.0 + @tsffs.exceptions = [14] + @tsffs.generate_random_corpus = True + @tsffs.iteration_limit = 100 + @tsffs.coverage_reporting = True + @tsffs.corpus_directory = "%simics%/corpus2" + + load-target "qsp-x86/uefi-shell" namespace = qsp machine:hardware:storage:disk0:image = "minimal_boot_disk.craff" + + script-branch { + bp.time.wait-for seconds = 15 + qsp.serconsole.con.input "\n" + bp.time.wait-for seconds = .5 + qsp.serconsole.con.input "FS0:\n" + bp.time.wait-for seconds = .5 + local $manager = (start-agent-manager) + qsp.serconsole.con.input ("SimicsAgent.efi --download " + (lookup-file "%simics%/test-cov.efi") + "\n") + bp.time.wait-for seconds = .5 + qsp.serconsole.con.input "test-cov.efi\n" + } + + script-branch { + bp.time.wait-for seconds = 240 + quit 1 + } + + run + "#})?; + + let output_str = String::from_utf8_lossy(&output.stdout); + + println!("{output_str}"); + + Ok(()) +} diff --git a/tests/x86_64_magic_reporting.rs b/tests/x86_64_magic_reporting_latest.rs similarity index 94% rename from tests/x86_64_magic_reporting.rs rename to tests/x86_64_magic_reporting_latest.rs index f6fb4e70..6086531e 100644 --- a/tests/x86_64_magic_reporting.rs +++ b/tests/x86_64_magic_reporting_latest.rs @@ -9,9 +9,9 @@ use std::path::PathBuf; #[test] #[cfg_attr(miri, ignore)] -fn test_x86_64_magic_reporting() -> Result<()> { +fn test_x86_64_magic_reporting_latest() -> Result<()> { let output = TestEnvSpec::builder() - .name("test_x86_64_magic_reporting") + .name("test_x86_64_magic_reporting_latest") .package_crates([PathBuf::from(env!("CARGO_MANIFEST_DIR"))]) .packages([ ProjectPackage::builder() @@ -45,7 +45,6 @@ fn test_x86_64_magic_reporting() -> Result<()> { @tsffs.exceptions = [14] @tsffs.generate_random_corpus = True @tsffs.iteration_limit = 100 - @tsffs.use_snapshots = True @tsffs.coverage_reporting = True @tsffs.corpus_directory = "%simics%/corpus2" diff --git a/tests/x86_64_magic_speedtest_6_0_185.rs b/tests/x86_64_magic_speedtest_6_0_185.rs new file mode 100644 index 00000000..c8db9065 --- /dev/null +++ b/tests/x86_64_magic_speedtest_6_0_185.rs @@ -0,0 +1,76 @@ +// Copyright (C) 2024 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 + +use anyhow::Result; +use indoc::indoc; +use ispm_wrapper::data::ProjectPackage; +use simics_test::TestEnvSpec; +use std::path::PathBuf; + +#[test] +#[cfg_attr(miri, ignore)] +fn test_x86_64_magic_speedtest_6_0_185() -> Result<()> { + let output = TestEnvSpec::builder() + .name("test_x86_64_magic_speedtest_6_0_185") + .package_crates([PathBuf::from(env!("CARGO_MANIFEST_DIR"))]) + .packages([ + ProjectPackage::builder() + .package_number(1000) + .version("6.0.185") + .build(), + ProjectPackage::builder() + .package_number(2096) + .version("6.0.73") + .build(), + ProjectPackage::builder() + .package_number(8112) + .version("6.0.21") + .build(), + ]) + .cargo_target_tmpdir(env!("CARGO_TARGET_TMPDIR")) + .directories([PathBuf::from(env!("CARGO_MANIFEST_DIR")) + .join("tests") + .join("rsrc") + .join("x86_64-uefi")]) + .build() + .to_env()? + .test(indoc! {r#" + load-module tsffs + init-tsffs + + @tsffs.log_level = 2 + @tsffs.start_on_harness = True + @tsffs.stop_on_harness = True + @tsffs.timeout = 3.0 + @tsffs.exceptions = [14] + @tsffs.generate_random_corpus = True + @tsffs.iteration_limit = 1000 + + load-target "qsp-x86/uefi-shell" namespace = qsp machine:hardware:storage:disk0:image = "minimal_boot_disk.craff" + + script-branch { + bp.time.wait-for seconds = 15 + qsp.serconsole.con.input "\n" + bp.time.wait-for seconds = .5 + qsp.serconsole.con.input "FS0:\n" + bp.time.wait-for seconds = .5 + local $manager = (start-agent-manager) + qsp.serconsole.con.input ("SimicsAgent.efi --download " + (lookup-file "%simics%/test-fast.efi") + "\n") + bp.time.wait-for seconds = .5 + qsp.serconsole.con.input "test-fast.efi\n" + } + + script-branch { + bp.time.wait-for seconds = 240 + quit 1 + } + + run + "#})?; + + let output_str = String::from_utf8_lossy(&output.stdout); + + println!("{output_str}"); + + Ok(()) +} diff --git a/tests/x86_64_magic_speedtest.rs b/tests/x86_64_magic_speedtest_latest.rs similarity index 94% rename from tests/x86_64_magic_speedtest.rs rename to tests/x86_64_magic_speedtest_latest.rs index 6cc175ee..abc20772 100644 --- a/tests/x86_64_magic_speedtest.rs +++ b/tests/x86_64_magic_speedtest_latest.rs @@ -9,9 +9,9 @@ use std::path::PathBuf; #[test] #[cfg_attr(miri, ignore)] -fn test_x86_64_magic_speedtest() -> Result<()> { +fn test_x86_64_magic_speedtest_latest() -> Result<()> { let output = TestEnvSpec::builder() - .name("test_x86_64_magic_speedtest") + .name("test_x86_64_magic_speedtest_latest") .package_crates([PathBuf::from(env!("CARGO_MANIFEST_DIR"))]) .packages([ ProjectPackage::builder() @@ -45,7 +45,6 @@ fn test_x86_64_magic_speedtest() -> Result<()> { @tsffs.exceptions = [14] @tsffs.generate_random_corpus = True @tsffs.iteration_limit = 1000 - @tsffs.use_snapshots = True load-target "qsp-x86/uefi-shell" namespace = qsp machine:hardware:storage:disk0:image = "minimal_boot_disk.craff" diff --git a/tests/x86_64_magic_speedtest_tokenize_6_0_185.rs b/tests/x86_64_magic_speedtest_tokenize_6_0_185.rs new file mode 100644 index 00000000..2f1f65d6 --- /dev/null +++ b/tests/x86_64_magic_speedtest_tokenize_6_0_185.rs @@ -0,0 +1,77 @@ +// Copyright (C) 2024 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 + +use anyhow::Result; +use indoc::indoc; +use ispm_wrapper::data::ProjectPackage; +use simics_test::TestEnvSpec; +use std::path::PathBuf; + +#[test] +#[cfg_attr(miri, ignore)] +fn test_x86_64_magic_speedtest_tokenize_6_0_185() -> Result<()> { + let output = TestEnvSpec::builder() + .name("test_x86_64_magic_speedtest_tokenize_6_0_185") + .package_crates([PathBuf::from(env!("CARGO_MANIFEST_DIR"))]) + .packages([ + ProjectPackage::builder() + .package_number(1000) + .version("6.0.185") + .build(), + ProjectPackage::builder() + .package_number(2096) + .version("6.0.73") + .build(), + ProjectPackage::builder() + .package_number(8112) + .version("6.0.21") + .build(), + ]) + .cargo_target_tmpdir(env!("CARGO_TARGET_TMPDIR")) + .directories([PathBuf::from(env!("CARGO_MANIFEST_DIR")) + .join("tests") + .join("rsrc") + .join("x86_64-uefi")]) + .build() + .to_env()? + .test(indoc! {r#" + load-module tsffs + init-tsffs + + @tsffs.log_level = 2 + @tsffs.start_on_harness = True + @tsffs.stop_on_harness = True + @tsffs.timeout = 3.0 + @tsffs.exceptions = [14] + @tsffs.generate_random_corpus = True + @tsffs.iteration_limit = 1000 + @tsffs.token_executables += [SIM_lookup_file("%simics%/test-fast.efi")] + + load-target "qsp-x86/uefi-shell" namespace = qsp machine:hardware:storage:disk0:image = "minimal_boot_disk.craff" + + script-branch { + bp.time.wait-for seconds = 15 + qsp.serconsole.con.input "\n" + bp.time.wait-for seconds = .5 + qsp.serconsole.con.input "FS0:\n" + bp.time.wait-for seconds = .5 + local $manager = (start-agent-manager) + qsp.serconsole.con.input ("SimicsAgent.efi --download " + (lookup-file "%simics%/test-fast.efi") + "\n") + bp.time.wait-for seconds = .5 + qsp.serconsole.con.input "test-fast.efi\n" + } + + script-branch { + bp.time.wait-for seconds = 240 + quit 1 + } + + run + "#})?; + + let output_str = String::from_utf8_lossy(&output.stdout); + + println!("{output_str}"); + + Ok(()) +} diff --git a/tests/x86_64_magic_speedtest_tokenize.rs b/tests/x86_64_magic_speedtest_tokenize_latest.rs similarity index 94% rename from tests/x86_64_magic_speedtest_tokenize.rs rename to tests/x86_64_magic_speedtest_tokenize_latest.rs index 714bf429..a1fef52c 100644 --- a/tests/x86_64_magic_speedtest_tokenize.rs +++ b/tests/x86_64_magic_speedtest_tokenize_latest.rs @@ -9,9 +9,9 @@ use std::path::PathBuf; #[test] #[cfg_attr(miri, ignore)] -fn test_x86_64_magic_speedtest_tokenize() -> Result<()> { +fn test_x86_64_magic_speedtest_tokenize_latest() -> Result<()> { let output = TestEnvSpec::builder() - .name("test_x86_64_magic_speedtest_tokenize") + .name("test_x86_64_magic_speedtest_tokenize_latest") .package_crates([PathBuf::from(env!("CARGO_MANIFEST_DIR"))]) .packages([ ProjectPackage::builder() @@ -45,7 +45,6 @@ fn test_x86_64_magic_speedtest_tokenize() -> Result<()> { @tsffs.exceptions = [14] @tsffs.generate_random_corpus = True @tsffs.iteration_limit = 1000 - @tsffs.use_snapshots = True @tsffs.token_executables += [SIM_lookup_file("%simics%/test-fast.efi")] load-target "qsp-x86/uefi-shell" namespace = qsp machine:hardware:storage:disk0:image = "minimal_boot_disk.craff" diff --git a/tests/x86_64_manual_6_0_185.rs b/tests/x86_64_manual_6_0_185.rs new file mode 100644 index 00000000..076edc7c --- /dev/null +++ b/tests/x86_64_manual_6_0_185.rs @@ -0,0 +1,154 @@ +// Copyright (C) 2024 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 + +use anyhow::Result; +use indoc::indoc; +use ispm_wrapper::data::ProjectPackage; +use simics_test::TestEnvSpec; +use std::path::PathBuf; + +#[test] +#[cfg_attr(miri, ignore)] +fn test_x86_64_manual_6_0_185() -> Result<()> { + let output = TestEnvSpec::builder() + .name("test_x86_64_manual_6_0_185") + .package_crates([PathBuf::from(env!("CARGO_MANIFEST_DIR"))]) + .packages([ + ProjectPackage::builder() + .package_number(1000) + .version("6.0.185") + .build(), + ProjectPackage::builder() + .package_number(1030) + .version("6.0.8") + .build(), + ProjectPackage::builder() + .package_number(2096) + .version("6.0.73") + .build(), + ProjectPackage::builder() + .package_number(8112) + .version("6.0.21") + .build(), + ]) + .cargo_target_tmpdir(env!("CARGO_TARGET_TMPDIR")) + .directories([PathBuf::from(env!("CARGO_MANIFEST_DIR")) + .join("tests") + .join("rsrc") + .join("x86_64-uefi")]) + .build() + .to_env()? + .test_python(indoc! {r#" + import cli + import simics + + simics.SIM_load_module("tsffs") + + tsffs = simics.SIM_create_object(simics.SIM_get_class("tsffs"), "tsffs", []) + simics.SIM_set_log_level(tsffs, 4) + tsffs.start_on_harness = False + tsffs.stop_on_harness = False + tsffs.timeout = 3.0 + tsffs.exceptions = [14] + tsffs.generate_random_corpus = True + tsffs.iteration_limit = 100 + + simics.SIM_load_target( + "qsp-x86/uefi-shell", # Target + "qsp", # Namespace + [], # Presets + [ # Cmdline args + ["machine:hardware:storage:disk0:image", "minimal_boot_disk.craff"], + ["machine:hardware:processor:class", "x86-goldencove-server"], + ], + ) + + qsp = simics.SIM_get_object("qsp") + + + def on_magic(o, e, r): + if r == 2: + print("Got magic stop...") + tsffs.iface.fuzz.stop() + + + def start_script_branch(): + # Wait for magic start -- in reality this could wait for any + # start condition, but we make it easy on ourselves for testing purposes + print("Waiting for magic start...") + conf.bp.magic.cli_cmds.wait_for(number=1) + print("Got magic start...") + + # In reality, you probably have a known buffer in mind to fuzz + testcase_address_regno = conf.qsp.mb.cpu0.core[0][0].iface.int_register.get_number( + "rsi" + ) + print("testcase address regno: ", testcase_address_regno) + testcase_address = conf.qsp.mb.cpu0.core[0][0].iface.int_register.read( + testcase_address_regno + ) + print("testcase address: ", testcase_address) + size_regno = conf.qsp.mb.cpu0.core[0][0].iface.int_register.get_number("rdx") + print("size regno: ", size_regno) + size_address = conf.qsp.mb.cpu0.core[0][0].iface.int_register.read(size_regno) + print("size address: ", size_address) + virt = False + + print( + "Starting with testcase address", + hex(testcase_address), + "size address", + hex(size_address), + "virt", + virt, + ) + + tsffs.iface.fuzz.start_with_buffer_ptr_size_ptr( + conf.qsp.mb.cpu0.core[0][0], + testcase_address, + size_address, + True, + ) + + + def startup_script_branch(): + cli.global_cmds.wait_for_global_time(seconds=15.0, _relative=True) + qsp.serconsole.con.iface.con_input.input_str("\n") + cli.global_cmds.wait_for_global_time(seconds=1.0, _relative=True) + qsp.serconsole.con.iface.con_input.input_str("FS0:\n") + cli.global_cmds.wait_for_global_time(seconds=1.0, _relative=True) + cli.global_cmds.start_agent_manager() + qsp.serconsole.con.iface.con_input.input_str( + "SimicsAgent.efi --download " + + simics.SIM_lookup_file("%simics%/test.efi") + + "\n" + ) + cli.global_cmds.wait_for_global_time(seconds=3.0, _relative=True) + qsp.serconsole.con.iface.con_input.input_str("test.efi\n") + + + def exit_script_branch(): + cli.global_cmds.wait_for_global_time(seconds=240.0, _relative=True) + simics.SIM_quit(1) + + def on_magic(o, e, r): + if r == 2: + print("Got magic stop...") + tsffs.iface.fuzz.stop() + + simics.SIM_hap_add_callback("Core_Magic_Instruction", on_magic, None) + cli.sb_create(start_script_branch) + cli.sb_create(startup_script_branch) + cli.sb_create(exit_script_branch) + + simics.SIM_continue(0) + # NOTE: If running from CLI, omit this! + simics.SIM_main_loop() + "#})?; + + let output_str = String::from_utf8_lossy(&output.stdout); + + println!("{output_str}"); + + Ok(()) +} diff --git a/tests/x86_64_manual.rs b/tests/x86_64_manual_latest.rs similarity index 97% rename from tests/x86_64_manual.rs rename to tests/x86_64_manual_latest.rs index d6b7d687..4faac108 100644 --- a/tests/x86_64_manual.rs +++ b/tests/x86_64_manual_latest.rs @@ -9,9 +9,9 @@ use std::path::PathBuf; #[test] #[cfg_attr(miri, ignore)] -fn test_x86_64_manual() -> Result<()> { +fn test_x86_64_manual_latest() -> Result<()> { let output = TestEnvSpec::builder() - .name("test_x86_64_manual") + .name("test_x86_64_manual_latest") .package_crates([PathBuf::from(env!("CARGO_MANIFEST_DIR"))]) .packages([ ProjectPackage::builder() @@ -52,7 +52,6 @@ fn test_x86_64_manual() -> Result<()> { tsffs.exceptions = [14] tsffs.generate_random_corpus = True tsffs.iteration_limit = 100 - tsffs.use_snapshots = True simics.SIM_load_target( "qsp-x86/uefi-shell", # Target diff --git a/tests/x86_64_manual_max_6_0_185.rs b/tests/x86_64_manual_max_6_0_185.rs new file mode 100644 index 00000000..8b781d26 --- /dev/null +++ b/tests/x86_64_manual_max_6_0_185.rs @@ -0,0 +1,151 @@ +// Copyright (C) 2024 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 + +use anyhow::Result; +use indoc::indoc; +use ispm_wrapper::data::ProjectPackage; +use simics_test::TestEnvSpec; +use std::path::PathBuf; + +#[test] +#[cfg_attr(miri, ignore)] +fn test_x86_64_manual_max_6_0_185() -> Result<()> { + let output = TestEnvSpec::builder() + .name("test_x86_64_manual_max_6_0_185") + .package_crates([PathBuf::from(env!("CARGO_MANIFEST_DIR"))]) + .packages([ + ProjectPackage::builder() + .package_number(1000) + .version("6.0.185") + .build(), + ProjectPackage::builder() + .package_number(1030) + .version("6.0.8") + .build(), + ProjectPackage::builder() + .package_number(2096) + .version("6.0.73") + .build(), + ProjectPackage::builder() + .package_number(8112) + .version("6.0.21") + .build(), + ]) + .cargo_target_tmpdir(env!("CARGO_TARGET_TMPDIR")) + .directories([PathBuf::from(env!("CARGO_MANIFEST_DIR")) + .join("tests") + .join("rsrc") + .join("x86_64-uefi")]) + .build() + .to_env()? + .test_python(indoc! {r#" + import cli + import simics + + simics.SIM_load_module("tsffs") + + tsffs = simics.SIM_create_object(simics.SIM_get_class("tsffs"), "tsffs", []) + simics.SIM_set_log_level(tsffs, 2) + tsffs.start_on_harness = False + tsffs.stop_on_harness = False + tsffs.timeout = 3.0 + tsffs.exceptions = [14] + tsffs.generate_random_corpus = True + tsffs.iteration_limit = 100 + + simics.SIM_load_target( + "qsp-x86/uefi-shell", # Target + "qsp", # Namespace + [], # Presets + [ # Cmdline args + ["machine:hardware:storage:disk0:image", "minimal_boot_disk.craff"], + ["machine:hardware:processor:class", "x86-goldencove-server"], + ], + ) + + qsp = simics.SIM_get_object("qsp") + + + def on_magic(o, e, r): + if r == 2: + print("Got magic stop...") + tsffs.iface.fuzz.stop() + + + def start_script_branch(): + # Wait for magic start -- in reality this could wait for any + # start condition, but we make it easy on ourselves for testing purposes + print("Waiting for magic start...") + conf.bp.magic.cli_cmds.wait_for(number=1) + print("Got magic start...") + + # In reality, you probably have a known buffer in mind to fuzz + testcase_address_regno = conf.qsp.mb.cpu0.core[0][0].iface.int_register.get_number( + "rsi" + ) + print("testcase address regno: ", testcase_address_regno) + testcase_address = conf.qsp.mb.cpu0.core[0][0].iface.int_register.read( + testcase_address_regno + ) + print("testcase address: ", testcase_address) + maximum_size = 8 + virt = True + + print( + "Starting with testcase address", + hex(testcase_address), + "maximum_size", + hex(maximum_size), + "virt", + virt, + ) + + tsffs.iface.fuzz.start_with_buffer_ptr_size_value( + conf.qsp.mb.cpu0.core[0][0], + testcase_address, + maximum_size, + virt, + ) + + + def startup_script_branch(): + cli.global_cmds.wait_for_global_time(seconds=15.0, _relative=True) + qsp.serconsole.con.iface.con_input.input_str("\n") + cli.global_cmds.wait_for_global_time(seconds=1.0, _relative=True) + qsp.serconsole.con.iface.con_input.input_str("FS0:\n") + cli.global_cmds.wait_for_global_time(seconds=1.0, _relative=True) + cli.global_cmds.start_agent_manager() + qsp.serconsole.con.iface.con_input.input_str( + "SimicsAgent.efi --download " + + simics.SIM_lookup_file("%simics%/test.efi") + + "\n" + ) + cli.global_cmds.wait_for_global_time(seconds=3.0, _relative=True) + qsp.serconsole.con.iface.con_input.input_str("test.efi\n") + + + def exit_script_branch(): + cli.global_cmds.wait_for_global_time(seconds=240.0, _relative=True) + simics.SIM_quit(1) + + def on_magic(o, e, r): + if r == 2: + print("Got magic stop...") + tsffs.iface.fuzz.stop() + + simics.SIM_hap_add_callback("Core_Magic_Instruction", on_magic, None) + cli.sb_create(start_script_branch) + cli.sb_create(startup_script_branch) + cli.sb_create(exit_script_branch) + + simics.SIM_continue(0) + # NOTE: If running from CLI, omit this! + simics.SIM_main_loop() + "#})?; + + let output_str = String::from_utf8_lossy(&output.stdout); + + println!("{output_str}"); + + Ok(()) +} diff --git a/tests/x86_64_manual_max.rs b/tests/x86_64_manual_max_latest.rs similarity index 97% rename from tests/x86_64_manual_max.rs rename to tests/x86_64_manual_max_latest.rs index bb3f307e..061e387c 100644 --- a/tests/x86_64_manual_max.rs +++ b/tests/x86_64_manual_max_latest.rs @@ -9,9 +9,9 @@ use std::path::PathBuf; #[test] #[cfg_attr(miri, ignore)] -fn test_x86_64_manual_max() -> Result<()> { +fn test_x86_64_manual_max_latest() -> Result<()> { let output = TestEnvSpec::builder() - .name("test_x86_64_manual_max") + .name("test_x86_64_manual_max_latest") .package_crates([PathBuf::from(env!("CARGO_MANIFEST_DIR"))]) .packages([ ProjectPackage::builder() @@ -52,7 +52,6 @@ fn test_x86_64_manual_max() -> Result<()> { tsffs.exceptions = [14] tsffs.generate_random_corpus = True tsffs.iteration_limit = 100 - tsffs.use_snapshots = True simics.SIM_load_target( "qsp-x86/uefi-shell", # Target diff --git a/tests/x86_userspace_magic_6_0_185.rs b/tests/x86_userspace_magic_6_0_185.rs new file mode 100644 index 00000000..a5ff030a --- /dev/null +++ b/tests/x86_userspace_magic_6_0_185.rs @@ -0,0 +1,112 @@ +// Copyright (C) 2024 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 + +use anyhow::Result; +use indoc::indoc; +use ispm_wrapper::data::ProjectPackage; +use simics_test::TestEnvSpec; +use std::path::PathBuf; + +#[test] +#[cfg_attr(miri, ignore)] +fn test_x86_userspace_6_0_185() -> Result<()> { + let output = TestEnvSpec::builder() + .name("test_x86_userspace_6_0_185") + .package_crates([PathBuf::from(env!("CARGO_MANIFEST_DIR"))]) + .packages([ + ProjectPackage::builder() + .package_number(1000) + .version("6.0.185") + .build(), + ProjectPackage::builder() + .package_number(2096) + .version("6.0.73") + .build(), + ProjectPackage::builder() + .package_number(8112) + .version("6.0.21") + .build(), + ProjectPackage::builder() + .package_number(1030) + .version("6.0.8") + .build(), + ProjectPackage::builder() + .package_number(4094) + .version("6.0.15") + .build(), + ]) + .cargo_target_tmpdir(env!("CARGO_TARGET_TMPDIR")) + .directories([PathBuf::from(env!("CARGO_MANIFEST_DIR")) + .join("tests") + .join("rsrc") + .join("x86-user")]) + .build() + .to_env()? + .test_python(indoc! {r#" + import cli + import simics + + simics.SIM_load_module("tsffs") + + tsffs = simics.SIM_create_object(simics.SIM_get_class("tsffs"), "tsffs", []) + simics.SIM_set_log_level(tsffs, 2) + tsffs.start_on_harness = True + tsffs.stop_on_harness = True + tsffs.timeout = 3.0 + tsffs.generate_random_corpus = True + tsffs.iteration_limit = 100 + + simics.SIM_load_target( + "qsp-x86/clear-linux", # target + "qsp", # namespace + [], # presets + [["machine:hardware:storage:disk1:image", "test.fs.craff"]], + ) + + qsp = simics.SIM_get_object("qsp") + + tsffs.iface.config.add_architecture_hint(qsp.mb.cpu0.core[0][0], "i386") + + + # when we're running userspace code, we don't want to catch exeptions until + # we actually start fuzzing, including gpfs on other code. we can wait to + # enable the exception until later (we could even toggle it on and off per + # iteration) + def on_magic(o, e, r): + # wait for magic stop -- in reality this could wait for any stop + # condition, but we make it easy on ourselves for testing purposes + if r == 1: + tsffs.exceptions = [13] + + + def startup_script_branch(): + cli.global_cmds.wait_for_global_time(seconds=20.0, _relative=True) + qsp.serconsole.con.iface.con_input.input_str("sudo mkdir /disk0/\n") + cli.global_cmds.wait_for_global_time(seconds=1.0, _relative=True) + qsp.serconsole.con.iface.con_input.input_str("sudo mount /dev/sdb /disk0/\n") + cli.global_cmds.wait_for_global_time(seconds=1.0, _relative=True) + qsp.serconsole.con.iface.con_input.input_str("ls /disk0\n") + cli.global_cmds.wait_for_global_time(seconds=1.0, _relative=True) + qsp.serconsole.con.iface.con_input.input_str("/disk0/test\n") + + + def exit_script_branch(): + cli.global_cmds.wait_for_global_time(seconds=240.0, _relative=True) + simics.SIM_quit(1) + + + simics.SIM_hap_add_callback("Core_Magic_Instruction", on_magic, None) + cli.sb_create(startup_script_branch) + cli.sb_create(exit_script_branch) + + simics.SIM_continue(0) + # note: if running from cli, omit this! + simics.SIM_main_loop() + "#})?; + + let output_str = String::from_utf8_lossy(&output.stdout); + + println!("{output_str}"); + + Ok(()) +} diff --git a/tests/x86_userspace_magic.rs b/tests/x86_userspace_magic_latest.rs similarity index 97% rename from tests/x86_userspace_magic.rs rename to tests/x86_userspace_magic_latest.rs index 41f37864..0de060a1 100644 --- a/tests/x86_userspace_magic.rs +++ b/tests/x86_userspace_magic_latest.rs @@ -9,9 +9,9 @@ use std::path::PathBuf; #[test] #[cfg_attr(miri, ignore)] -fn test_x86_userspace() -> Result<()> { +fn test_x86_userspace_latest() -> Result<()> { let output = TestEnvSpec::builder() - .name("test_x86_userspace") + .name("test_x86_userspace_latest") .package_crates([PathBuf::from(env!("CARGO_MANIFEST_DIR"))]) .packages([ ProjectPackage::builder() @@ -55,7 +55,6 @@ fn test_x86_userspace() -> Result<()> { tsffs.timeout = 3.0 tsffs.generate_random_corpus = True tsffs.iteration_limit = 100 - tsffs.use_snapshots = True simics.SIM_load_target( "qsp-x86/clear-linux", # target From 669593439fa481b6195ca1c7193842fdfa21981e Mon Sep 17 00:00:00 2001 From: Rowan Hart Date: Fri, 12 Apr 2024 16:20:47 -0700 Subject: [PATCH 13/19] Remove LibAFL InProcess Executor Timeout (#77) --- docs/src/config/common-options.md | 12 - simics-rs/cargo-simics-build/src/lib.rs | 2 +- src/fuzzer/executors/inprocess/inner.rs | 150 +++++++++++ src/fuzzer/executors/inprocess/mod.rs | 316 ++++++++++++++++++++++++ src/fuzzer/executors/mod.rs | 5 + src/fuzzer/mod.rs | 27 +- src/haps/mod.rs | 22 +- src/lib.rs | 11 +- src/util/mod.rs | 6 +- 9 files changed, 510 insertions(+), 41 deletions(-) create mode 100644 src/fuzzer/executors/inprocess/inner.rs create mode 100644 src/fuzzer/executors/inprocess/mod.rs create mode 100644 src/fuzzer/executors/mod.rs diff --git a/docs/src/config/common-options.md b/docs/src/config/common-options.md index 7e68074b..d33daa28 100644 --- a/docs/src/config/common-options.md +++ b/docs/src/config/common-options.md @@ -41,18 +41,6 @@ Note that this timeout is in virtual time, not real time. This means that whethe simulation runs faster or slower than real time, the timeout will be accurate to the target software's execution speed. -The fuzzing executor also has a timeout, which runs in real time. This timeout -is intended to detect situations where the fuzzer reaches a broken state where -it is no longer able to iterate (e.g. the virtual time timeout is not working) -and stop. By default, this timeout is set to 60 seconds and resets each -iteration. Only iterations which take more than 60 seconds will trigger the -timeout, but some very large fuzzing cases could exceed this time. To increase -it, for example to set the timeout to 10 minutes: - -```python -@tsffs.executor_timeout = 600 -``` - ### Setting Exception Solutions The primary way TSFFS detects bugs is via CPU exceptions that are raised, but should not diff --git a/simics-rs/cargo-simics-build/src/lib.rs b/simics-rs/cargo-simics-build/src/lib.rs index 234a0c4f..ee331571 100644 --- a/simics-rs/cargo-simics-build/src/lib.rs +++ b/simics-rs/cargo-simics-build/src/lib.rs @@ -197,7 +197,7 @@ impl App { let mut signed = Sign::new(&module_cdylib)?; - let mut signed_module_cdylib = module_cdylib + let signed_module_cdylib = module_cdylib .parent() .ok_or_else(|| Error::NoParentDirectory { path: module_cdylib.to_path_buf(), diff --git a/src/fuzzer/executors/inprocess/inner.rs b/src/fuzzer/executors/inprocess/inner.rs new file mode 100644 index 00000000..ef0f0866 --- /dev/null +++ b/src/fuzzer/executors/inprocess/inner.rs @@ -0,0 +1,150 @@ +use core::{ + ffi::c_void, + fmt::{self, Debug, Formatter}, + marker::PhantomData, +}; + +use libafl::{ + events::{EventFirer, EventRestarter}, + executors::{hooks::ExecutorHooksTuple, HasObservers}, + fuzzer::HasObjective, + inputs::UsesInput, + observers::{ObserversTuple, UsesObservers}, + state::{HasCorpus, HasExecutions, HasSolutions, State, UsesState}, + Error, +}; + +/// The internal state of `GenericInProcessExecutor`. +pub(crate) struct GenericInProcessExecutorInner +where + HT: ExecutorHooksTuple, + OT: ObserversTuple, + S: State, +{ + /// The observers, observing each run + pub(super) observers: OT, + // Crash and timeout hah + pub(super) hooks: HT, + phantom: PhantomData, +} + +impl Debug for GenericInProcessExecutorInner +where + HT: ExecutorHooksTuple, + OT: ObserversTuple + Debug, + S: State, +{ + fn fmt(&self, f: &mut Formatter<'_>) -> fmt::Result { + f.debug_struct("GenericInProcessExecutorState") + .field("observers", &self.observers) + .finish_non_exhaustive() + } +} + +impl UsesState for GenericInProcessExecutorInner +where + HT: ExecutorHooksTuple, + OT: ObserversTuple, + S: State, +{ + type State = S; +} + +impl UsesObservers for GenericInProcessExecutorInner +where + HT: ExecutorHooksTuple, + OT: ObserversTuple, + S: State, +{ + type Observers = OT; +} + +impl HasObservers for GenericInProcessExecutorInner +where + HT: ExecutorHooksTuple, + OT: ObserversTuple, + S: State, +{ + #[inline] + fn observers(&self) -> &OT { + &self.observers + } + + #[inline] + fn observers_mut(&mut self) -> &mut OT { + &mut self.observers + } +} + +impl GenericInProcessExecutorInner +where + HT: ExecutorHooksTuple, + OT: ObserversTuple, + S: State, +{ + /// This function marks the boundary between the fuzzer and the target + #[inline] + pub(crate) unsafe fn enter_target( + &mut self, + _fuzzer: &mut Z, + _state: &mut ::State, + _mgr: &mut EM, + _input: &::Input, + _executor_ptr: *const c_void, + ) { + } + + /// This function marks the boundary between the fuzzer and the target + #[inline] + pub(crate) fn leave_target( + &mut self, + _fuzzer: &mut Z, + _state: &mut ::State, + _mgr: &mut EM, + _input: &::Input, + ) { + } +} + +impl GenericInProcessExecutorInner +where + HT: ExecutorHooksTuple, + OT: ObserversTuple, + S: HasExecutions + HasSolutions + HasCorpus + State, +{ + /// Create a new in mem executor. + /// Caution: crash and restart in one of them will lead to odd behavior if multiple are used, + /// depending on different corpus or state. + /// * `hooks` - the hooks run before and after the harness's execution + /// * `harness_fn` - the harness, executing the function + /// * `observers` - the observers observing the target during execution + /// This may return an error on unix, if signal handler setup fails + pub(crate) fn new( + hooks: HT, + observers: OT, + _fuzzer: &mut Z, + _event_mgr: &mut EM, + ) -> Result + where + EM: EventFirer + EventRestarter, + Z: HasObjective, + { + Ok(Self { + observers, + hooks, + phantom: PhantomData, + }) + } + + /// The inprocess handlers + #[inline] + pub(crate) fn hooks(&self) -> &HT { + &self.hooks + } + + /// The inprocess handlers (mutable) + #[inline] + pub(crate) fn hooks_mut(&mut self) -> &mut HT { + &mut self.hooks + } +} diff --git a/src/fuzzer/executors/inprocess/mod.rs b/src/fuzzer/executors/inprocess/mod.rs new file mode 100644 index 00000000..51f7e8b9 --- /dev/null +++ b/src/fuzzer/executors/inprocess/mod.rs @@ -0,0 +1,316 @@ +//! The [`InProcessExecutor`] is a libfuzzer-like executor, that will simply call a function. +//! It should usually be paired with extra error-handling, such as a restarting event manager, to be effective. +//! +//! Needs the `fork` feature flag. +#![allow(clippy::needless_pass_by_value)] + +use core::{ + borrow::BorrowMut, + ffi::c_void, + fmt::{self, Debug, Formatter}, + marker::PhantomData, + ptr, +}; + +use libafl_bolts::tuples::tuple_list; + +use libafl::{ + corpus::{Corpus, Testcase}, + events::{Event, EventFirer, EventRestarter}, + executors::{hooks::ExecutorHooksTuple, Executor, ExitKind, HasObservers}, + feedbacks::Feedback, + fuzzer::HasObjective, + inputs::UsesInput, + observers::{ObserversTuple, UsesObservers}, + prelude::HasMetadata, + state::{HasCorpus, HasExecutions, HasSolutions, State, UsesState}, + Error, +}; + +use self::inner::GenericInProcessExecutorInner; + +/// The inner structure of `InProcessExecutor`. +pub(crate) mod inner; + +/// The process executor simply calls a target function, as mutable reference to a closure. +pub(crate) type InProcessExecutor<'a, H, OT, S> = GenericInProcessExecutor; + +/// The inprocess executor that allows hooks +pub(crate) type HookableInProcessExecutor<'a, H, HT, OT, S> = + GenericInProcessExecutor; +/// The process executor simply calls a target function, as boxed `FnMut` trait object +pub(crate) type OwnedInProcessExecutor = GenericInProcessExecutor< + dyn FnMut(&::Input) -> ExitKind, + Box::Input) -> ExitKind>, + (), + OT, + S, +>; + +/// The inmem executor simply calls a target function, then returns afterwards. +#[allow(dead_code)] +pub(crate) struct GenericInProcessExecutor +where + H: FnMut(&S::Input) -> ExitKind + ?Sized, + HB: BorrowMut, + HT: ExecutorHooksTuple, + OT: ObserversTuple, + S: State, +{ + harness_fn: HB, + inner: GenericInProcessExecutorInner, + phantom: PhantomData<(*const H, HB)>, +} + +impl Debug for GenericInProcessExecutor +where + H: FnMut(&S::Input) -> ExitKind + ?Sized, + HB: BorrowMut, + HT: ExecutorHooksTuple, + OT: ObserversTuple + Debug, + S: State, +{ + fn fmt(&self, f: &mut Formatter<'_>) -> fmt::Result { + f.debug_struct("GenericInProcessExecutor") + .field("inner", &self.inner) + .field("harness_fn", &"") + .finish_non_exhaustive() + } +} + +impl UsesState for GenericInProcessExecutor +where + H: FnMut(&S::Input) -> ExitKind + ?Sized, + HB: BorrowMut, + HT: ExecutorHooksTuple, + OT: ObserversTuple, + S: State, +{ + type State = S; +} + +impl UsesObservers for GenericInProcessExecutor +where + H: FnMut(&S::Input) -> ExitKind + ?Sized, + HB: BorrowMut, + HT: ExecutorHooksTuple, + OT: ObserversTuple, + S: State, +{ + type Observers = OT; +} + +impl Executor for GenericInProcessExecutor +where + EM: UsesState, + H: FnMut(&S::Input) -> ExitKind + ?Sized, + HB: BorrowMut, + HT: ExecutorHooksTuple, + OT: ObserversTuple, + S: State + HasExecutions, + Z: UsesState, +{ + fn run_target( + &mut self, + fuzzer: &mut Z, + state: &mut Self::State, + mgr: &mut EM, + input: &Self::Input, + ) -> Result { + *state.executions_mut() += 1; + unsafe { + let executor_ptr = ptr::from_ref(self) as *const c_void; + self.inner + .enter_target(fuzzer, state, mgr, input, executor_ptr); + } + self.inner.hooks.pre_exec_all(state, input); + + let ret = (self.harness_fn.borrow_mut())(input); + + self.inner.hooks.post_exec_all(state, input); + self.inner.leave_target(fuzzer, state, mgr, input); + Ok(ret) + } +} + +impl HasObservers for GenericInProcessExecutor +where + H: FnMut(&S::Input) -> ExitKind + ?Sized, + HB: BorrowMut, + HT: ExecutorHooksTuple, + OT: ObserversTuple, + S: State, +{ + #[inline] + fn observers(&self) -> &OT { + self.inner.observers() + } + + #[inline] + fn observers_mut(&mut self) -> &mut OT { + self.inner.observers_mut() + } +} + +impl<'a, H, OT, S> InProcessExecutor<'a, H, OT, S> +where + H: FnMut(&S::Input) -> ExitKind + ?Sized, + OT: ObserversTuple, + S: HasExecutions + HasSolutions + HasCorpus + State, +{ + /// Create a new in mem executor. + /// Caution: crash and restart in one of them will lead to odd behavior if multiple are used, + /// depending on different corpus or state. + /// * `user_hooks` - the hooks run before and after the harness's execution + /// * `harness_fn` - the harness, executing the function + /// * `observers` - the observers observing the target during execution + /// This may return an error on unix, if signal handler setup fails + pub(crate) fn new( + harness_fn: &'a mut H, + observers: OT, + fuzzer: &mut Z, + event_mgr: &mut EM, + ) -> Result + where + Self: Executor + HasObservers, + EM: EventFirer + EventRestarter, + OF: Feedback, + S: State, + Z: HasObjective, + { + let inner = GenericInProcessExecutorInner::new::( + tuple_list!(), + observers, + fuzzer, + event_mgr, + )?; + + Ok(Self { + harness_fn, + inner, + phantom: PhantomData, + }) + } +} + +impl GenericInProcessExecutor +where + H: FnMut(&S::Input) -> ExitKind + ?Sized, + HB: BorrowMut, + HT: ExecutorHooksTuple, + OT: ObserversTuple, + S: State + HasExecutions + HasSolutions + HasCorpus, +{ + /// Create a new in mem executor. + /// Caution: crash and restart in one of them will lead to odd behavior if multiple are used, + /// depending on different corpus or state. + /// * `user_hooks` - the hooks run before and after the harness's execution + /// * `harness_fn` - the harness, executing the function + /// * `observers` - the observers observing the target during execution + /// This may return an error on unix, if signal handler setup fails + pub(crate) fn generic( + user_hooks: HT, + harness_fn: HB, + observers: OT, + fuzzer: &mut Z, + event_mgr: &mut EM, + ) -> Result + where + Self: Executor + HasObservers, + EM: EventFirer + EventRestarter, + OF: Feedback, + S: State, + Z: HasObjective, + { + let inner = GenericInProcessExecutorInner::new::( + user_hooks, observers, fuzzer, event_mgr, + )?; + + Ok(Self { + harness_fn, + inner, + phantom: PhantomData, + }) + } + + /// Retrieve the harness function. + #[inline] + pub(crate) fn harness(&self) -> &H { + self.harness_fn.borrow() + } + + /// Retrieve the harness function for a mutable reference. + #[inline] + pub(crate) fn harness_mut(&mut self) -> &mut H { + self.harness_fn.borrow_mut() + } + + /// The inprocess handlers + #[inline] + pub(crate) fn hooks(&self) -> &HT { + self.inner.hooks() + } + + /// The inprocess handlers (mutable) + #[inline] + pub(crate) fn hooks_mut(&mut self) -> &mut HT { + self.inner.hooks_mut() + } +} + +#[inline] +#[allow(clippy::too_many_arguments)] +/// Save state if it is an objective +pub(crate) fn run_observers_and_save_state( + executor: &mut E, + state: &mut E::State, + input: &::Input, + fuzzer: &mut Z, + event_mgr: &mut EM, + exitkind: ExitKind, +) where + E: HasObservers, + EM: EventFirer + EventRestarter, + OF: Feedback, + E::State: HasExecutions + HasSolutions + HasCorpus, + Z: HasObjective, +{ + let observers = executor.observers_mut(); + + observers + .post_exec_all(state, input, &exitkind) + .expect("Observers post_exec_all failed"); + + let interesting = fuzzer + .objective_mut() + .is_interesting(state, event_mgr, input, observers, &exitkind) + .expect("In run_observers_and_save_state objective failure."); + + if interesting { + let executions = *state.executions(); + let mut new_testcase = Testcase::with_executions(input.clone(), executions); + new_testcase.add_metadata(exitkind); + new_testcase.set_parent_id_optional(*state.corpus().current()); + fuzzer + .objective_mut() + .append_metadata(state, event_mgr, observers, &mut new_testcase) + .expect("Failed adding metadata"); + state + .solutions_mut() + .add(new_testcase) + .expect("In run_observers_and_save_state solutions failure."); + event_mgr + .fire( + state, + Event::Objective { + objective_size: state.solutions().count(), + executions, + time: libafl_bolts::current_time(), + }, + ) + .expect("Could not save state in run_observers_and_save_state"); + } + + // Serialize the state and wait safely for the broker to read pending messages + event_mgr.on_restart(state).expect("Failed on restart"); +} diff --git a/src/fuzzer/executors/mod.rs b/src/fuzzer/executors/mod.rs new file mode 100644 index 00000000..9ef217e8 --- /dev/null +++ b/src/fuzzer/executors/mod.rs @@ -0,0 +1,5 @@ +//! Executors take input, and run it in the target. + +#[allow(unused)] +// Unused are allowed, we may want hooks in the future +pub(crate) mod inprocess; diff --git a/src/fuzzer/mod.rs b/src/fuzzer/mod.rs index 3da5c2f9..65d9a8a8 100644 --- a/src/fuzzer/mod.rs +++ b/src/fuzzer/mod.rs @@ -4,7 +4,10 @@ //! Fuzzing engine implementation, configure and run LibAFL on a separate thread use crate::{ - fuzzer::{feedbacks::ReportingMapFeedback, messages::FuzzerMessage}, + fuzzer::{ + executors::inprocess::InProcessExecutor, feedbacks::ReportingMapFeedback, + messages::FuzzerMessage, + }, Tsffs, }; use anyhow::{anyhow, Result}; @@ -14,9 +17,9 @@ use libafl::{ prelude::{ havoc_mutations, ondisk::OnDiskMetadataFormat, tokens_mutations, AFLppRedQueen, BytesInput, CachedOnDiskCorpus, Corpus, CrashFeedback, ExitKind, HasCurrentCorpusIdx, HasTargetBytes, - HitcountsMapObserver, I2SRandReplace, InProcessExecutor, MaxMapFeedback, OnDiskCorpus, - RandBytesGenerator, SimpleEventManager, SimpleMonitor, StdCmpValuesObserver, - StdMOptMutator, StdMapObserver, StdScheduledMutator, TimeFeedback, TimeObserver, Tokens, + HitcountsMapObserver, I2SRandReplace, MaxMapFeedback, OnDiskCorpus, RandBytesGenerator, + SimpleEventManager, SimpleMonitor, StdCmpValuesObserver, StdMOptMutator, StdMapObserver, + StdScheduledMutator, TimeFeedback, TimeObserver, Tokens, }, schedulers::{ powersched::PowerSchedule, IndexesLenTimeMinimizerScheduler, StdWeightedScheduler, @@ -40,7 +43,7 @@ use libafl_targets::{AFLppCmpLogObserver, AFLppCmplogTracingStage}; use simics::{api::AsConfObject, debug, trace, warn}; use std::{ cell::RefCell, fmt::Debug, fs::write, io::stderr, slice::from_raw_parts_mut, - sync::mpsc::channel, thread::spawn, time::Duration, + sync::mpsc::channel, thread::spawn, }; use tokenize::{tokenize_executable_file, tokenize_src_file}; use tracing::{level_filters::LevelFilter, Level}; @@ -48,6 +51,7 @@ use tracing_subscriber::{ filter::filter_fn, fmt, layer::SubscriberExt, registry, util::SubscriberInitExt, Layer, }; +pub mod executors; pub mod feedbacks; pub mod messages; pub mod tokenize; @@ -179,7 +183,6 @@ impl Tsffs { let input_tokens = self.tokens.clone(); let generate_random_corpus = self.generate_random_corpus; let initial_random_corpus_size = self.initial_random_corpus_size; - let executor_timeout = self.executor_timeout; let debug_log_libafl = self.debug_log_libafl; let initial_contents = self .use_initial_as_corpus @@ -350,39 +353,33 @@ impl Tsffs { let mut manager = SimpleEventManager::new(monitor); - let mut executor = InProcessExecutor::with_timeout( + let mut executor = InProcessExecutor::new( &mut harness, tuple_list!(edges_observer, time_observer), &mut fuzzer, - &mut state, &mut manager, - Duration::from_secs(executor_timeout), ) .map_err(|e| { eprintln!("Couldn't initialize fuzzer executor: {e}"); anyhow!("Couldn't initialize fuzzer executor: {e}") })?; - let aflpp_cmp_executor = InProcessExecutor::with_timeout( + let aflpp_cmp_executor = InProcessExecutor::new( &mut aflpp_cmp_harness, tuple_list!(aflpp_cmp_observer), &mut fuzzer, - &mut state, &mut manager, - Duration::from_secs(executor_timeout), ) .map_err(|e| { eprintln!("Couldn't initialize fuzzer AFL++ cmplog executor: {e}"); anyhow!("Couldn't initialize fuzzer AFL++ cmplog executor: {e}") })?; - let tracing_executor = InProcessExecutor::with_timeout( + let tracing_executor = InProcessExecutor::new( &mut tracing_harness, tuple_list!(cmplog_observer), &mut fuzzer, - &mut state, &mut manager, - Duration::from_secs(executor_timeout), ) .map_err(|e| { eprintln!("Couldn't initialize fuzzer AFL++ cmplog executor: {e}"); diff --git a/src/haps/mod.rs b/src/haps/mod.rs index c8b56397..92fd58a7 100644 --- a/src/haps/mod.rs +++ b/src/haps/mod.rs @@ -123,7 +123,11 @@ impl Tsffs { self.send_shutdown()?; - quit(0)?; + if self.quit_on_iteration_limit { + quit(0)?; + } else { + return Ok(()); + } } let fuzzer_tx = self @@ -290,7 +294,11 @@ impl Tsffs { self.send_shutdown()?; - quit(0)?; + if self.quit_on_iteration_limit { + quit(0)?; + } else { + return Ok(()); + } } let fuzzer_tx = self @@ -374,7 +382,11 @@ impl Tsffs { self.send_shutdown()?; - quit(0)?; + if self.quit_on_iteration_limit { + quit(0)?; + } else { + return Ok(()); + } } let fuzzer_tx = self @@ -470,6 +482,10 @@ impl Tsffs { duration.as_secs_f32(), self.iterations as f32 / duration.as_secs_f32() ); + + if self.shutdown_on_stop_without_reason { + self.send_shutdown()?; + } } Ok(()) diff --git a/src/lib.rs b/src/lib.rs index e921d32f..2057563c 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -242,11 +242,6 @@ pub(crate) struct Tsffs { /// time timeout is exceeded for a single iteration, the iteration is stopped and the testcase /// is saved as a solution. pub timeout: f64, - #[class(attribute(optional, default = 60))] - /// The timeout in seconds of virtual time for each iteration of the fuzzer. If the virtual - /// time timeout is exceeded for a single iteration, the iteration is stopped and the testcase - /// is saved as a solution. - pub executor_timeout: u64, #[class(attribute(optional, default = true))] /// Whether the fuzzer should start on compiled-in harnesses. If set to `True`, the fuzzer /// will start fuzzing when a harness macro is executed. @@ -372,6 +367,12 @@ pub(crate) struct Tsffs { #[class(attribute(optional, default = false))] /// Whether to enable extra debug logging for LibAFL pub debug_log_libafl: bool, + #[class(attribute(optional, default = true))] + /// Whether to send shut down on stops without reason. This means fuzzing cannot be resumed. + pub shutdown_on_stop_without_reason: bool, + #[class(attribute(optional, default = true))] + /// Whether to quit on iteration limit + pub quit_on_iteration_limit: bool, #[attr_value(skip)] /// Handle for the core simulation stopped hap diff --git a/src/util/mod.rs b/src/util/mod.rs index e9d7e94f..8cd191d6 100644 --- a/src/util/mod.rs +++ b/src/util/mod.rs @@ -3,7 +3,7 @@ use anyhow::Result; use simics::api::{get_attribute, get_object}; -use simics::{run_python, FromAttrValueList}; +use simics::FromAttrValueList; #[derive(Debug, Clone, FromAttrValueList)] pub(crate) struct MicroCheckpointInfo { @@ -22,10 +22,6 @@ pub(crate) struct Utils; impl Utils { /// Get the list of saved micro checkpoints pub fn get_micro_checkpoints() -> Result> { - run_python( - r#"print(simics.SIM_get_attribute(simics.SIM_get_object("sim.rexec"), "state_info"))"#, - )?; - let checkpoints: Vec = get_attribute(get_object("sim.rexec")?, "state_info")?.try_into()?; From 4ac9d39d08f9ece09830cd23c6c061c73a234e95 Mon Sep 17 00:00:00 2001 From: Rowan Hart Date: Fri, 19 Apr 2024 11:18:33 -0700 Subject: [PATCH 14/19] Windows kernel fuzzing docs (#70) --- .github/linters/.markdown-lint.yml | 1 + .github/workflows/docs.yml | 6 +- Cargo.toml | 2 +- README.md | 7 +- docs/book.toml | 4 + docs/src/SUMMARY.md | 21 ++ docs/src/config/README.md | 20 +- docs/src/config/common-options.md | 18 -- docs/src/config/installing-in-projects.md | 2 +- docs/src/fuzzing/compatibility.md | 20 +- .../images/DEBUGGING_FUZZER_Run_and_Debug.png | Bin .../HARNESSING_UEFI_SIMPLE_Run_Target.png | Bin ...HARNESSING_UEFI_SIMPLE_Run_Target_Post.png | Bin ...QUIREMENTS_Test_Micro_Checkpoints_Post.png | Bin ...EQUIREMENTS_Test_Micro_Checkpoints_Pre.png | Bin ...REMENTS_Test_Micro_Checkpoints_TestRun.png | Bin .../images/SETUP_Install_Finished.png | Bin docs/{ => src}/images/SETUP_Install_Only.png | Bin .../images/SETUP_Install_Proceed.png | Bin .../images/SETUP_Select_Install_Directory.png | Bin docs/{ => src}/images/demo.cast | 0 docs/{ => src}/images/logo-social.png | Bin docs/{ => src}/images/logo.png | Bin docs/{ => src}/images/logo.svg | 0 docs/{ => src}/images/mini.mp4 | Bin docs/src/setup/linux.md | 2 +- docs/src/tutorials/README.md | 3 +- .../edk2-simics-platform-bios/booting.md | 2 +- .../edk2-uefi/testing-the-application.md | 2 +- docs/src/tutorials/windows-kernel/README.md | 9 + .../building-windows-image/README.md | 28 ++ .../change-default-shell-to-powershell.md | 21 ++ .../clone-and-build-hevd.md | 56 ++++ .../compile-the-fuzz-harness.md | 11 + .../building-windows-image/convert-image.md | 43 +++ .../create-a-fuzz-harness.md | 162 ++++++++++ .../create-a-project.md | 1 + .../building-windows-image/create-a-vm.md | 65 ++++ .../create-and-start-the-driver-service.md | 27 ++ .../download-windows.md | 14 + ...nable-ssh-port-forwarding-in-virtualbox.md | 56 ++++ .../images/2024-03-16-11-55-02.png | Bin 0 -> 100514 bytes .../images/2024-03-16-11-55-58.png | Bin 0 -> 99927 bytes .../images/2024-03-16-11-56-39.png | Bin 0 -> 113731 bytes .../images/2024-03-16-11-57-17.png | Bin 0 -> 78739 bytes .../images/2024-03-16-11-57-48.png | Bin 0 -> 89198 bytes .../images/2024-03-16-11-58-06.png | Bin 0 -> 103932 bytes .../images/2024-03-16-11-59-33.png | Bin 0 -> 85132 bytes .../images/2024-03-16-12-01-17.png | Bin 0 -> 78475 bytes .../images/2024-03-16-12-04-27.png | Bin 0 -> 22072 bytes .../images/2024-03-16-12-04-40.png | Bin 0 -> 16059 bytes .../images/2024-03-16-12-09-20.png | Bin 0 -> 30764 bytes .../images/2024-03-16-12-10-29.png | Bin 0 -> 97346 bytes .../images/2024-03-16-12-11-56.png | Bin 0 -> 58558 bytes .../images/2024-03-16-12-13-14.png | Bin 0 -> 44728 bytes .../images/2024-03-16-12-14-15.png | Bin 0 -> 96944 bytes .../images/2024-03-16-12-14-29.png | Bin 0 -> 5026 bytes .../images/2024-03-16-12-17-25.png | Bin 0 -> 36670 bytes .../images/2024-03-16-12-17-50.png | Bin 0 -> 28506 bytes .../images/2024-03-16-12-18-07.png | Bin 0 -> 27616 bytes .../images/2024-03-16-12-18-57.png | Bin 0 -> 31608 bytes .../images/2024-03-16-12-19-09.png | Bin 0 -> 41674 bytes .../images/2024-03-16-12-19-23.png | Bin 0 -> 34055 bytes .../images/2024-03-16-12-26-28.png | Bin 0 -> 121627 bytes .../images/2024-03-16-12-26-46.png | Bin 0 -> 115344 bytes .../images/2024-03-16-12-27-02.png | Bin 0 -> 100485 bytes .../images/2024-03-16-12-28-52.png | Bin 0 -> 136324 bytes .../images/2024-03-16-12-29-09.png | Bin 0 -> 130680 bytes .../images/2024-03-16-12-29-30.png | Bin 0 -> 118056 bytes .../images/2024-03-16-12-29-53.png | Bin 0 -> 116789 bytes .../images/2024-03-16-12-30-18.png | Bin 0 -> 121778 bytes .../images/2024-03-16-12-30-49.png | Bin 0 -> 116295 bytes .../images/2024-03-16-12-31-10.png | Bin 0 -> 126010 bytes .../images/2024-03-16-12-31-28.png | Bin 0 -> 125356 bytes .../images/2024-03-16-12-31-45.png | Bin 0 -> 125907 bytes .../images/2024-03-16-12-32-12.png | Bin 0 -> 158754 bytes .../images/2024-03-16-12-36-59.png | Bin 0 -> 589546 bytes .../images/2024-03-16-12-37-56.png | Bin 0 -> 133899 bytes .../images/2024-03-16-12-38-12.png | Bin 0 -> 282278 bytes .../images/2024-03-16-12-45-13.png | Bin 0 -> 15405 bytes .../images/2024-03-16-12-46-16.png | Bin 0 -> 34645 bytes .../images/2024-03-16-12-46-28.png | Bin 0 -> 43870 bytes .../images/2024-03-16-12-46-44.png | Bin 0 -> 16895 bytes .../images/2024-03-16-12-47-01.png | Bin 0 -> 17157 bytes .../images/2024-03-16-12-50-38.png | Bin 0 -> 18357 bytes .../images/2024-03-16-13-16-20.png | Bin 0 -> 210966 bytes .../images/2024-03-21-12-24-34.png | Bin 0 -> 101701 bytes .../images/2024-03-21-12-25-39.png | Bin 0 -> 66525 bytes .../install-hevd-driver.md | 47 +++ .../install-simics-agent.md | 48 +++ .../install-the-code-signing-certificate.md | 17 ++ .../install-virtualbox.md | 4 + .../building-windows-image/install-windows.md | 92 ++++++ .../installing-development-tools.md | 125 ++++++++ .../installing-the-ewdk.md | 77 +++++ .../run-the-fuzz-harness.md | 14 + .../building-windows-image/run-the-fuzzer.md | 1 + .../run-the-simulation.md | 1 + .../building-windows-image/set-up-ssh.md | 39 +++ .../windows-kernel/create-a-project.md | 31 ++ .../images/2024-03-21-16-50-53.png | Bin 0 -> 346657 bytes .../images/2024-03-21-17-38-46.png | Bin 0 -> 291752 bytes .../images/2024-04-01-09-10-48.png | Bin 0 -> 80660 bytes .../images/2024-04-01-09-11-19.png | Bin 0 -> 68449 bytes .../images/2024-04-01-09-19-09.png | Bin 0 -> 46915 bytes .../images/2024-04-12-12-25-13.png | Bin 0 -> 12991 bytes .../images/2024-04-12-12-49-03.png | Bin 0 -> 8140 bytes .../windows-kernel/run-the-fuzzer.md | 65 ++++ .../windows-kernel/run-the-simulation.md | 187 ++++++++++++ examples/tutorials/windows-kernel/.gitignore | 2 + examples/tutorials/windows-kernel/fuzz.simics | 73 +++++ examples/tutorials/windows-kernel/run.simics | 64 ++++ harness/tsffs-msvc-x86_64.h | 286 +++++++++++++++++- harness/tsffs.h | 284 +++++++++++++++++ simics-rs/Cargo.toml | 2 +- simics-rs/cargo-simics-build/src/lib.rs | 10 +- simics-rs/ispm-wrapper/src/data/mod.rs | 2 +- simics-rs/simics-api-sys/build.rs | 4 +- simics-rs/simics-macro/src/attr_value/mod.rs | 20 +- simics-rs/simics-macro/src/class/mod.rs | 113 ++++--- simics-rs/simics-macro/src/interface/mod.rs | 5 +- simics-rs/simics-sign/src/lib.rs | 19 +- simics-rs/simics-test/src/lib.rs | 2 +- simics-rs/simics/src/api/base/attr_value.rs | 22 +- simics-rs/simics/src/api/base/conf_object.rs | 42 +-- simics-rs/simics/src/api/simulator/embed.rs | 12 +- .../tests/packages/hello-world/Cargo.toml | 13 +- simics-rs/tests/packages/hello-world/build.rs | 6 +- .../tests/packages/hello-world/src/lib.rs | 4 +- simics-rs/tests/test-packages/Cargo.toml | 30 -- simics-rs/tests/test-packages/build.rs | 4 - simics-rs/tests/test-packages/src/lib.rs | 7 - .../tests/test-packages/tests/hello_world.rs | 37 --- src/lib.rs | 27 +- 134 files changed, 2200 insertions(+), 241 deletions(-) rename docs/{ => src}/images/DEBUGGING_FUZZER_Run_and_Debug.png (100%) rename docs/{ => src}/images/HARNESSING_UEFI_SIMPLE_Run_Target.png (100%) rename docs/{ => src}/images/HARNESSING_UEFI_SIMPLE_Run_Target_Post.png (100%) rename docs/{ => src}/images/REQUIREMENTS_Test_Micro_Checkpoints_Post.png (100%) rename docs/{ => src}/images/REQUIREMENTS_Test_Micro_Checkpoints_Pre.png (100%) rename docs/{ => src}/images/REQUIREMENTS_Test_Micro_Checkpoints_TestRun.png (100%) rename docs/{ => src}/images/SETUP_Install_Finished.png (100%) rename docs/{ => src}/images/SETUP_Install_Only.png (100%) rename docs/{ => src}/images/SETUP_Install_Proceed.png (100%) rename docs/{ => src}/images/SETUP_Select_Install_Directory.png (100%) rename docs/{ => src}/images/demo.cast (100%) rename docs/{ => src}/images/logo-social.png (100%) rename docs/{ => src}/images/logo.png (100%) rename docs/{ => src}/images/logo.svg (100%) rename docs/{ => src}/images/mini.mp4 (100%) create mode 100644 docs/src/tutorials/windows-kernel/README.md create mode 100644 docs/src/tutorials/windows-kernel/building-windows-image/README.md create mode 100644 docs/src/tutorials/windows-kernel/building-windows-image/change-default-shell-to-powershell.md create mode 100644 docs/src/tutorials/windows-kernel/building-windows-image/clone-and-build-hevd.md create mode 100644 docs/src/tutorials/windows-kernel/building-windows-image/compile-the-fuzz-harness.md create mode 100644 docs/src/tutorials/windows-kernel/building-windows-image/convert-image.md create mode 100644 docs/src/tutorials/windows-kernel/building-windows-image/create-a-fuzz-harness.md create mode 100644 docs/src/tutorials/windows-kernel/building-windows-image/create-a-project.md create mode 100644 docs/src/tutorials/windows-kernel/building-windows-image/create-a-vm.md create mode 100644 docs/src/tutorials/windows-kernel/building-windows-image/create-and-start-the-driver-service.md create mode 100644 docs/src/tutorials/windows-kernel/building-windows-image/download-windows.md create mode 100644 docs/src/tutorials/windows-kernel/building-windows-image/enable-ssh-port-forwarding-in-virtualbox.md create mode 100644 docs/src/tutorials/windows-kernel/building-windows-image/images/2024-03-16-11-55-02.png create mode 100644 docs/src/tutorials/windows-kernel/building-windows-image/images/2024-03-16-11-55-58.png create mode 100644 docs/src/tutorials/windows-kernel/building-windows-image/images/2024-03-16-11-56-39.png create mode 100644 docs/src/tutorials/windows-kernel/building-windows-image/images/2024-03-16-11-57-17.png create mode 100644 docs/src/tutorials/windows-kernel/building-windows-image/images/2024-03-16-11-57-48.png create mode 100644 docs/src/tutorials/windows-kernel/building-windows-image/images/2024-03-16-11-58-06.png create mode 100644 docs/src/tutorials/windows-kernel/building-windows-image/images/2024-03-16-11-59-33.png create mode 100644 docs/src/tutorials/windows-kernel/building-windows-image/images/2024-03-16-12-01-17.png create mode 100644 docs/src/tutorials/windows-kernel/building-windows-image/images/2024-03-16-12-04-27.png create mode 100644 docs/src/tutorials/windows-kernel/building-windows-image/images/2024-03-16-12-04-40.png create mode 100644 docs/src/tutorials/windows-kernel/building-windows-image/images/2024-03-16-12-09-20.png create mode 100644 docs/src/tutorials/windows-kernel/building-windows-image/images/2024-03-16-12-10-29.png create mode 100644 docs/src/tutorials/windows-kernel/building-windows-image/images/2024-03-16-12-11-56.png create mode 100644 docs/src/tutorials/windows-kernel/building-windows-image/images/2024-03-16-12-13-14.png create mode 100644 docs/src/tutorials/windows-kernel/building-windows-image/images/2024-03-16-12-14-15.png create mode 100644 docs/src/tutorials/windows-kernel/building-windows-image/images/2024-03-16-12-14-29.png create mode 100644 docs/src/tutorials/windows-kernel/building-windows-image/images/2024-03-16-12-17-25.png create mode 100644 docs/src/tutorials/windows-kernel/building-windows-image/images/2024-03-16-12-17-50.png create mode 100644 docs/src/tutorials/windows-kernel/building-windows-image/images/2024-03-16-12-18-07.png create mode 100644 docs/src/tutorials/windows-kernel/building-windows-image/images/2024-03-16-12-18-57.png create mode 100644 docs/src/tutorials/windows-kernel/building-windows-image/images/2024-03-16-12-19-09.png create mode 100644 docs/src/tutorials/windows-kernel/building-windows-image/images/2024-03-16-12-19-23.png create mode 100644 docs/src/tutorials/windows-kernel/building-windows-image/images/2024-03-16-12-26-28.png create mode 100644 docs/src/tutorials/windows-kernel/building-windows-image/images/2024-03-16-12-26-46.png create mode 100644 docs/src/tutorials/windows-kernel/building-windows-image/images/2024-03-16-12-27-02.png create mode 100644 docs/src/tutorials/windows-kernel/building-windows-image/images/2024-03-16-12-28-52.png create mode 100644 docs/src/tutorials/windows-kernel/building-windows-image/images/2024-03-16-12-29-09.png create mode 100644 docs/src/tutorials/windows-kernel/building-windows-image/images/2024-03-16-12-29-30.png create mode 100644 docs/src/tutorials/windows-kernel/building-windows-image/images/2024-03-16-12-29-53.png create mode 100644 docs/src/tutorials/windows-kernel/building-windows-image/images/2024-03-16-12-30-18.png create mode 100644 docs/src/tutorials/windows-kernel/building-windows-image/images/2024-03-16-12-30-49.png create mode 100644 docs/src/tutorials/windows-kernel/building-windows-image/images/2024-03-16-12-31-10.png create mode 100644 docs/src/tutorials/windows-kernel/building-windows-image/images/2024-03-16-12-31-28.png create mode 100644 docs/src/tutorials/windows-kernel/building-windows-image/images/2024-03-16-12-31-45.png create mode 100644 docs/src/tutorials/windows-kernel/building-windows-image/images/2024-03-16-12-32-12.png create mode 100644 docs/src/tutorials/windows-kernel/building-windows-image/images/2024-03-16-12-36-59.png create mode 100644 docs/src/tutorials/windows-kernel/building-windows-image/images/2024-03-16-12-37-56.png create mode 100644 docs/src/tutorials/windows-kernel/building-windows-image/images/2024-03-16-12-38-12.png create mode 100644 docs/src/tutorials/windows-kernel/building-windows-image/images/2024-03-16-12-45-13.png create mode 100644 docs/src/tutorials/windows-kernel/building-windows-image/images/2024-03-16-12-46-16.png create mode 100644 docs/src/tutorials/windows-kernel/building-windows-image/images/2024-03-16-12-46-28.png create mode 100644 docs/src/tutorials/windows-kernel/building-windows-image/images/2024-03-16-12-46-44.png create mode 100644 docs/src/tutorials/windows-kernel/building-windows-image/images/2024-03-16-12-47-01.png create mode 100644 docs/src/tutorials/windows-kernel/building-windows-image/images/2024-03-16-12-50-38.png create mode 100644 docs/src/tutorials/windows-kernel/building-windows-image/images/2024-03-16-13-16-20.png create mode 100644 docs/src/tutorials/windows-kernel/building-windows-image/images/2024-03-21-12-24-34.png create mode 100644 docs/src/tutorials/windows-kernel/building-windows-image/images/2024-03-21-12-25-39.png create mode 100644 docs/src/tutorials/windows-kernel/building-windows-image/install-hevd-driver.md create mode 100644 docs/src/tutorials/windows-kernel/building-windows-image/install-simics-agent.md create mode 100644 docs/src/tutorials/windows-kernel/building-windows-image/install-the-code-signing-certificate.md create mode 100644 docs/src/tutorials/windows-kernel/building-windows-image/install-virtualbox.md create mode 100644 docs/src/tutorials/windows-kernel/building-windows-image/install-windows.md create mode 100644 docs/src/tutorials/windows-kernel/building-windows-image/installing-development-tools.md create mode 100644 docs/src/tutorials/windows-kernel/building-windows-image/installing-the-ewdk.md create mode 100644 docs/src/tutorials/windows-kernel/building-windows-image/run-the-fuzz-harness.md create mode 100644 docs/src/tutorials/windows-kernel/building-windows-image/run-the-fuzzer.md create mode 100644 docs/src/tutorials/windows-kernel/building-windows-image/run-the-simulation.md create mode 100644 docs/src/tutorials/windows-kernel/building-windows-image/set-up-ssh.md create mode 100644 docs/src/tutorials/windows-kernel/create-a-project.md create mode 100644 docs/src/tutorials/windows-kernel/images/2024-03-21-16-50-53.png create mode 100644 docs/src/tutorials/windows-kernel/images/2024-03-21-17-38-46.png create mode 100644 docs/src/tutorials/windows-kernel/images/2024-04-01-09-10-48.png create mode 100644 docs/src/tutorials/windows-kernel/images/2024-04-01-09-11-19.png create mode 100644 docs/src/tutorials/windows-kernel/images/2024-04-01-09-19-09.png create mode 100644 docs/src/tutorials/windows-kernel/images/2024-04-12-12-25-13.png create mode 100644 docs/src/tutorials/windows-kernel/images/2024-04-12-12-49-03.png create mode 100644 docs/src/tutorials/windows-kernel/run-the-fuzzer.md create mode 100644 docs/src/tutorials/windows-kernel/run-the-simulation.md create mode 100644 examples/tutorials/windows-kernel/.gitignore create mode 100644 examples/tutorials/windows-kernel/fuzz.simics create mode 100644 examples/tutorials/windows-kernel/run.simics delete mode 100644 simics-rs/tests/test-packages/Cargo.toml delete mode 100644 simics-rs/tests/test-packages/build.rs delete mode 100644 simics-rs/tests/test-packages/src/lib.rs delete mode 100644 simics-rs/tests/test-packages/tests/hello_world.rs diff --git a/.github/linters/.markdown-lint.yml b/.github/linters/.markdown-lint.yml index b7f70180..12992b7a 100644 --- a/.github/linters/.markdown-lint.yml +++ b/.github/linters/.markdown-lint.yml @@ -32,6 +32,7 @@ MD029: false # Ordered list item prefix MD033: false # Allow inline HTML MD036: false # Emphasis used instead of a heading MD041: false # HTML can be at the top of the file for the image and such +MD045: false # Do not require alt text ################# # Rules by tags # diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml index 95ba3ea0..8570d86a 100644 --- a/.github/workflows/docs.yml +++ b/.github/workflows/docs.yml @@ -83,12 +83,12 @@ jobs: - name: Generate SIMICS Documentation run: | ispm projects "$(pwd)" --create --ignore-existing-files --non-interactive - ./documentation -o docs/book/simics --dont-open --project "$(pwd)" + ./documentation -o docs/book/html/simics --dont-open --project "$(pwd)" - name: Generate Crate Documentation run: | SIMICS_BASE="${HOME}/simics/simics-${{ env.PUBLIC_SIMICS_PACKAGE_VERSION_1000 }}" RUSTDOCFLAGS="--enable-index-page -Zunstable-options" TSFFS_TESTS_SKIP_BUILD=1 cargo doc --document-private-items --workspace --no-deps - cp -a target/doc/ docs/book/crates/ + cp -a target/doc/ docs/book/html/crates/ - name: Set Documentation Permissions run: | @@ -104,7 +104,7 @@ jobs: - name: Upload artifact uses: actions/upload-pages-artifact@v2 with: - path: "./docs/book/" + path: "./docs/book/html/" - name: Deploy to GitHub Pages id: deployment diff --git a/Cargo.toml b/Cargo.toml index 8d17d5f8..03cafce0 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -22,7 +22,7 @@ version = "0.2.1" [package.metadata.simics] package-number = 31337 -version = "6.0.6" +version = "7.0.1" [lib] crate-type = ["cdylib", "rlib"] diff --git a/README.md b/README.md index 704db15e..86b26521 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,3 @@ -

TSFFS Logo

- # TSFFS: Target Software Fuzzer For SIMICS TSFFS is a snapshotting, coverage-guided fuzzer built on the @@ -67,9 +65,10 @@ TSFFS is focused on several primary use cases: However, TSFFS is also capable of fuzzing: -- Kernel & kernel drivers -- User-space applications +- Kernel & kernel drivers on Windows Linux, and more +- User-space applications on Windows, Linux, and more - Network applications +- Hypervisors and bare-metal systems ## Contact diff --git a/docs/book.toml b/docs/book.toml index 35041e3a..b065549b 100644 --- a/docs/book.toml +++ b/docs/book.toml @@ -7,3 +7,7 @@ language = "en" multilingual = false src = "src" title = "TSFFS: Target Software Fuzzer for SIMICS" + +[output.html] + +[output.linkcheck] \ No newline at end of file diff --git a/docs/src/SUMMARY.md b/docs/src/SUMMARY.md index a20ea34f..b24b65dd 100644 --- a/docs/src/SUMMARY.md +++ b/docs/src/SUMMARY.md @@ -49,6 +49,27 @@ - [Configuring the Fuzzer](tutorials/edk2-simics-platform-bios/configuring.md) - [Running the Fuzzer](tutorials/edk2-simics-platform-bios/running.md) - [Optimizing the Fuzzer](tutorials/edk2-simics-platform-bios/optimizing.md) + - [Fuzzing a Windows Kernel Mode Driver (KMD)](tutorials/windows-kernel/README.md) + - [Building a Windows Image](tutorials/windows-kernel/building-windows-image/README.md) + 1. [Install VirtualBox](tutorials/windows-kernel/building-windows-image/install-virtualbox.md) + 2. [Download Windows](tutorials/windows-kernel/building-windows-image/download-windows.md) + 3. [Create a VM](tutorials/windows-kernel/building-windows-image/create-a-vm.md) + 4. [Install Windows](tutorials/windows-kernel/building-windows-image/install-windows.md) + 5. [Set Up SSH](tutorials/windows-kernel/building-windows-image/set-up-ssh.md) + 6. [Enable SSH Port Forwarding in VirtualBox](tutorials/windows-kernel/building-windows-image/enable-ssh-port-forwarding-in-virtualbox.md) + 7. [Change Default Shell to PowerShell](tutorials/windows-kernel/building-windows-image/change-default-shell-to-powershell.md) + 8. [Installing the EWDK](tutorials/windows-kernel/building-windows-image/installing-the-ewdk.md) + 9. [Installing Development Tools](tutorials/windows-kernel/building-windows-image/installing-development-tools.md) + 10. [Install Simics Agent](tutorials/windows-kernel/building-windows-image/install-simics-agent.md) + 11. [Clone and Build HEVD](tutorials/windows-kernel/building-windows-image/clone-and-build-hevd.md) + 12. [Install the Code Signing Certificate](tutorials/windows-kernel/building-windows-image/install-the-code-signing-certificate.md) + 13. [Install HEVD Driver](tutorials/windows-kernel/building-windows-image/install-hevd-driver.md) + 14. [Create a Fuzz Harness](tutorials/windows-kernel/building-windows-image/create-a-fuzz-harness.md) + 15. [Compile the Fuzz Harness](tutorials/windows-kernel/building-windows-image/compile-the-fuzz-harness.md) + 16. [Convert the Image to CRAFF](tutorials/windows-kernel/building-windows-image/convert-image.md) + - [Create a Simics Project](tutorials/windows-kernel/create-a-project.md) + - [Run and Set Up the Simulation](tutorials/windows-kernel/run-the-simulation.md) + - [Run the Fuzzer](tutorials/windows-kernel/run-the-fuzzer.md) ## Reference Guide diff --git a/docs/src/config/README.md b/docs/src/config/README.md index f92e5b20..9d35c45c 100644 --- a/docs/src/config/README.md +++ b/docs/src/config/README.md @@ -1,7 +1,25 @@ # Configuration Before TSFFS can fuzz target software, it must be configured. The configuration API is -kept as simple as possible, with sane defaults. +kept as simple as possible, with sane defaults. TSFFS exposes all of its configuration +options as Simics *attributes* which means that you can list its configuration options +by running the following in a Simics CLI prompt in a project with TSFFS installed (see +[Installing in Projects](installing-in-projects.md)). + +```simics +load-module tsffs +list-attributes tsffs +``` + +You'll see a list of attributes, each of which has help documentation available through +the Simics CLI like: + +```simics +help tsffs.exceptions +``` + +To read about all of the TSFFS options in detail, including methods for setup, +installation, and configuration: - [Installing In Projects](installing-in-projects.md) - [Loading The TSFFS Module](loading-module.md) diff --git a/docs/src/config/common-options.md b/docs/src/config/common-options.md index d33daa28..8a56e4a7 100644 --- a/docs/src/config/common-options.md +++ b/docs/src/config/common-options.md @@ -9,7 +9,6 @@ is desired. - [Setting Exception Solutions](#setting-exception-solutions) - [Setting Breakpoint Solutions](#setting-breakpoint-solutions) - [Fuzzer Settings](#fuzzer-settings) - - [Using Snapshots](#using-snapshots) - [Using CMPLog](#using-cmplog) - [Set Corpus and Solutions Directory](#set-corpus-and-solutions-directory) - [Enable and Set the Checkpoint Path](#enable-and-set-the-checkpoint-path) @@ -122,23 +121,6 @@ heap. ## Fuzzer Settings -### Using Snapshots - -SIMICS 6.0.175 introduced an experimental snapshots feature that is not dependent on -reverse execution micro-checkpoints. In some cases, this snapshot method is faster and -in some cases resolves issues with model incompatibility with micro-checkpoints. This -feature is not enabled by default. - -To use reverse-execution micro-checkpoints instead, use: - -```python -@tsffs.use_snapshots = False -``` - -Micro-checkpoints cannot be used by when compiling the module against versions of SIMICS -which do not support them, and a runtime panic will occur when attempting to take a -snapshot if enabled on an older version of SIMICS. - ### Using CMPLog Comparison logging greatly improves the efficiency of the fuzzer by making each diff --git a/docs/src/config/installing-in-projects.md b/docs/src/config/installing-in-projects.md index f9dff406..0dc4cd12 100644 --- a/docs/src/config/installing-in-projects.md +++ b/docs/src/config/installing-in-projects.md @@ -14,7 +14,7 @@ when creating projects. Projects are created using `ispm` (Intel Simics Package Manager). The command below would create a project with packages numbered 1000 (SIMICS Base), 2096 (Quick Start -Platform [QSP] x86), 8112 (QSP CPU), and 31337 (TSFFS), each with the latest version +Platform, or QSP, x86), 8112 (QSP CPU), and 31337 (TSFFS), each with the latest version except SIMICS base, which here is specified as 6.0.169. All that is required to create a new project with the TSFFS package included is to add it after the `--create` flag to `ispm`. Using the `-latest` version is recommended for simplicity, but if you are a diff --git a/docs/src/fuzzing/compatibility.md b/docs/src/fuzzing/compatibility.md index 0cc90d84..77ed6e1e 100644 --- a/docs/src/fuzzing/compatibility.md +++ b/docs/src/fuzzing/compatibility.md @@ -32,7 +32,7 @@ Supported Architectures: If your model's target architecture is one of these, it is supported by TSFFS. If not, file an issue or pull request. Adding new architectures is easy, and can be a good first contribution to the fuzzer. See the generic and specific architecture information -[here](../../../modules/tsffs/src/tsffs/src/arch). +[here](https://github.com/intel/tsffs/tree/main/src/arch). ## Micro Checkpoints @@ -51,8 +51,10 @@ model with a simple test. ### Testing Micro Checkpoints As an example, let's consider the x86 QSP platform model that ships with SIMICS and the -Hello World EFI [example](../../../examples/tests/x86_64-uefi/). The process for fuzzing -this target software follows the basic flow: +Hello World EFI [resource +example](https://github.com/intel/tsffs/tree/main/tests/rsrc/x86_64-uefi) which you can +build by running `./build.sh` in the resource directory. The process for fuzzing this +target software follows the basic flow: 1. Boot the x86 QSP BIOS with the QSP x86 hdd boot script, with a minimal boot disk 2. Upload the test.efi EFI app using the SIMICS agent (for most real targets, we @@ -210,7 +212,7 @@ running> You'll see several automatic actions on the SIMICS GUI, and you will end up with the console screen below. -![The EFI console, with the prompt FS0: \\>](../../images/REQUIREMENTS_Test_Micro_Checkpoints_Pre.png) +![The EFI console, with the prompt FS0: \\>](../images/REQUIREMENTS_Test_Micro_Checkpoints_Pre.png) First, we'll run our EFI app to make sure all is well. @@ -220,7 +222,7 @@ running> $system.console.con.input "test.efi\n" You should see "Working..." print out on the console. -![The EFI console, after test run](../../images/REQUIREMENTS_Test_Micro_Checkpoints_TestRun.png) +![The EFI console, after test run](../images/REQUIREMENTS_Test_Micro_Checkpoints_TestRun.png) Now, we'll go ahead stop the simulation and take our micro checkpoint. @@ -242,7 +244,7 @@ running> stop We stopped our execution after the app executed, so you should see the output from the second time we ran it ("Working...") printed on the GUI console. -![The EFI console, after running again](../../images/REQUIREMENTS_Test_Micro_Checkpoints_Post.png) +![The EFI console, after running again](../images/REQUIREMENTS_Test_Micro_Checkpoints_Post.png) Now, we will restore our micro checkpoint and clear the recorder. The second step is important, because if we did not clear the recorder we would *replay* the execution of @@ -259,7 +261,7 @@ simics> continue The console should be back to the state it was before you ran the second app execution, and will look like this: -![The EFI console, after test run](../../images/REQUIREMENTS_Test_Micro_Checkpoints_TestRun.png) +![The EFI console, after test run](../images/REQUIREMENTS_Test_Micro_Checkpoints_TestRun.png) #### Testing for Your App @@ -279,12 +281,12 @@ somewhat depending on your project. In general, try to follow this flow: ## Snapshots -Newer versions of SIMICS (>= 6.0.175) support a new feature called snapshots, which are +Newer versions of SIMICS (>= 7.0.0) support a new feature called snapshots, which are similar to micro checkpoints but do not rely on underlying rev-exec support. If your model supports a new version of SIMICS, follow the same instructions as for micro checkpoints, but replace: -* `VT_save_micro_checkpoint("origin", 0)` with `VT_take_snapshot("origin")` +* `VT_save_micro_checkpoint("origin", 0)` with `VT_save_snapshot("origin")` * `VT_restore_micro_checkpoint(0)` with `VT_restore_snapshot("origin")` And do not call `CORE_discard_future`. \ No newline at end of file diff --git a/docs/images/DEBUGGING_FUZZER_Run_and_Debug.png b/docs/src/images/DEBUGGING_FUZZER_Run_and_Debug.png similarity index 100% rename from docs/images/DEBUGGING_FUZZER_Run_and_Debug.png rename to docs/src/images/DEBUGGING_FUZZER_Run_and_Debug.png diff --git a/docs/images/HARNESSING_UEFI_SIMPLE_Run_Target.png b/docs/src/images/HARNESSING_UEFI_SIMPLE_Run_Target.png similarity index 100% rename from docs/images/HARNESSING_UEFI_SIMPLE_Run_Target.png rename to docs/src/images/HARNESSING_UEFI_SIMPLE_Run_Target.png diff --git a/docs/images/HARNESSING_UEFI_SIMPLE_Run_Target_Post.png b/docs/src/images/HARNESSING_UEFI_SIMPLE_Run_Target_Post.png similarity index 100% rename from docs/images/HARNESSING_UEFI_SIMPLE_Run_Target_Post.png rename to docs/src/images/HARNESSING_UEFI_SIMPLE_Run_Target_Post.png diff --git a/docs/images/REQUIREMENTS_Test_Micro_Checkpoints_Post.png b/docs/src/images/REQUIREMENTS_Test_Micro_Checkpoints_Post.png similarity index 100% rename from docs/images/REQUIREMENTS_Test_Micro_Checkpoints_Post.png rename to docs/src/images/REQUIREMENTS_Test_Micro_Checkpoints_Post.png diff --git a/docs/images/REQUIREMENTS_Test_Micro_Checkpoints_Pre.png b/docs/src/images/REQUIREMENTS_Test_Micro_Checkpoints_Pre.png similarity index 100% rename from docs/images/REQUIREMENTS_Test_Micro_Checkpoints_Pre.png rename to docs/src/images/REQUIREMENTS_Test_Micro_Checkpoints_Pre.png diff --git a/docs/images/REQUIREMENTS_Test_Micro_Checkpoints_TestRun.png b/docs/src/images/REQUIREMENTS_Test_Micro_Checkpoints_TestRun.png similarity index 100% rename from docs/images/REQUIREMENTS_Test_Micro_Checkpoints_TestRun.png rename to docs/src/images/REQUIREMENTS_Test_Micro_Checkpoints_TestRun.png diff --git a/docs/images/SETUP_Install_Finished.png b/docs/src/images/SETUP_Install_Finished.png similarity index 100% rename from docs/images/SETUP_Install_Finished.png rename to docs/src/images/SETUP_Install_Finished.png diff --git a/docs/images/SETUP_Install_Only.png b/docs/src/images/SETUP_Install_Only.png similarity index 100% rename from docs/images/SETUP_Install_Only.png rename to docs/src/images/SETUP_Install_Only.png diff --git a/docs/images/SETUP_Install_Proceed.png b/docs/src/images/SETUP_Install_Proceed.png similarity index 100% rename from docs/images/SETUP_Install_Proceed.png rename to docs/src/images/SETUP_Install_Proceed.png diff --git a/docs/images/SETUP_Select_Install_Directory.png b/docs/src/images/SETUP_Select_Install_Directory.png similarity index 100% rename from docs/images/SETUP_Select_Install_Directory.png rename to docs/src/images/SETUP_Select_Install_Directory.png diff --git a/docs/images/demo.cast b/docs/src/images/demo.cast similarity index 100% rename from docs/images/demo.cast rename to docs/src/images/demo.cast diff --git a/docs/images/logo-social.png b/docs/src/images/logo-social.png similarity index 100% rename from docs/images/logo-social.png rename to docs/src/images/logo-social.png diff --git a/docs/images/logo.png b/docs/src/images/logo.png similarity index 100% rename from docs/images/logo.png rename to docs/src/images/logo.png diff --git a/docs/images/logo.svg b/docs/src/images/logo.svg similarity index 100% rename from docs/images/logo.svg rename to docs/src/images/logo.svg diff --git a/docs/images/mini.mp4 b/docs/src/images/mini.mp4 similarity index 100% rename from docs/images/mini.mp4 rename to docs/src/images/mini.mp4 diff --git a/docs/src/setup/linux.md b/docs/src/setup/linux.md index 01540a2a..eb760f6d 100644 --- a/docs/src/setup/linux.md +++ b/docs/src/setup/linux.md @@ -52,7 +52,7 @@ For users of the public distribution of SIMICS, visit the [SIMICS download page](https://www.intel.com/content/www/us/en/developer/articles/tool/simics-simulator.html), accept the EULA, and download the following files. Users of internal or commercial private Wind River or Intel SIMICS should follow internal documentation available -[here](TODO). +[here](https://goto/simics). * `intel-simics-package-manager-[VERSION].tar.gz` * `simics-6-packages-[VERSION].ispm` diff --git a/docs/src/tutorials/README.md b/docs/src/tutorials/README.md index 2b631cf6..c4ccb70d 100644 --- a/docs/src/tutorials/README.md +++ b/docs/src/tutorials/README.md @@ -4,4 +4,5 @@ We have several tutorials for harnessing and fuzzing various target software. - [Fuzzing an EDK2 UEFI Application](edk2-uefi/README.md) - [Fuzzing a Kernel Module](kernel-module/README.md) -- [Fuzzing a Custom BIOS](edk2-simics-platform-bios/README.md) \ No newline at end of file +- [Fuzzing a Custom BIOS](edk2-simics-platform-bios/README.md) +- [Fuzzing a Windows Kernel Mode Driver](windows-kernel/README.md) \ No newline at end of file diff --git a/docs/src/tutorials/edk2-simics-platform-bios/booting.md b/docs/src/tutorials/edk2-simics-platform-bios/booting.md index f46c0310..f027c973 100644 --- a/docs/src/tutorials/edk2-simics-platform-bios/booting.md +++ b/docs/src/tutorials/edk2-simics-platform-bios/booting.md @@ -5,7 +5,7 @@ add our fuzzing harness. This time, we'll add our harness to the boot flow, befo UEFI shell, so it is prudent to make sure everything looks OK first. Before this step, you'll need to have the TSFFS SIMICS package installed in your system -by following the [setup steps](../setup/README.md) or by installing a prebuilt `ispm` +by following the [setup steps](../../setup/README.md) or by installing a prebuilt `ispm` package. You'll also need the SIMICS base package (1000), the QSP-x86 package (2096), and the QSP-CPU (8112) package. All three are available in the public simics release. diff --git a/docs/src/tutorials/edk2-uefi/testing-the-application.md b/docs/src/tutorials/edk2-uefi/testing-the-application.md index b5c761f3..0293f634 100644 --- a/docs/src/tutorials/edk2-uefi/testing-the-application.md +++ b/docs/src/tutorials/edk2-uefi/testing-the-application.md @@ -3,7 +3,7 @@ Before we harness the application for fuzzing, we should test it to make sure it runs. Before this step, you'll need to have the TSFFS SIMICS package installed in your system -by following the [setup steps](../setup/README.md) or by installing a prebuilt `ispm` +by following the [setup steps](../../setup/README.md) or by installing a prebuilt `ispm` package. You'll also need the SIMICS base package (1000), the QSP-x86 package (2096), and the QSP-CPU (8112) package. All three are available in the public simics release. diff --git a/docs/src/tutorials/windows-kernel/README.md b/docs/src/tutorials/windows-kernel/README.md new file mode 100644 index 00000000..a9247ad7 --- /dev/null +++ b/docs/src/tutorials/windows-kernel/README.md @@ -0,0 +1,9 @@ +# Fuzzing a Windows Kernel Mode Driver (KMD) + +This tutorial will walk you through the process of creating, building, and fuzzing a +Windows Kernel Mode Driver (KMD) running on the simulated x86_64 platform on Windows 11. + +- [Building a Windows Image](building-windows-image/README.md) +- [Create a Simics Project](create-a-project.md) +- [Run and Set Up the Simulation](run-the-simulation.md) +- [Run the Fuzzer](run-the-fuzzer.md) \ No newline at end of file diff --git a/docs/src/tutorials/windows-kernel/building-windows-image/README.md b/docs/src/tutorials/windows-kernel/building-windows-image/README.md new file mode 100644 index 00000000..e3d0b3ea --- /dev/null +++ b/docs/src/tutorials/windows-kernel/building-windows-image/README.md @@ -0,0 +1,28 @@ +# Building a Simics-Compatible Windows Kernel Development VM + +We will use VirtualBox to create a Windows Kernel Development Virtual machine +before converting the VirtualBox Virtual Disk Image (VDI) to the CRAFF format used by +Simics. + +There are several advantages to creating the image this way: + +- Speed: VirtualBox runs faster than Simics and is easier to work with interactively +- Compatibility: The image can be used for other purposes +- Iteration: Speed and compatibility allow iterating on the image contents more quickly + +1. [Install VirtualBox](install-virtualbox.md) +2. [Download Windows](download-windows.md) +3. [Create a VM](create-a-vm.md) +4. [Install Windows](install-windows.md) +5. [Set Up SSH](set-up-ssh.md) +6. [Enable SSH Port Forwarding in VirtualBox](enable-ssh-port-forwarding-in-virtualbox.md) +7. [Change Default Shell to PowerShell](change-default-shell-to-powershell.md) +8. [Installing the EWDK](installing-the-ewdk.md) +9. [Installing Development Tools](installing-development-tools.md) +10. [Install Simics Agent](install-simics-agent.md) +11. [Clone and Build HEVD](clone-and-build-hevd.md) +12. [Install the Code Signing Certificate](install-the-code-signing-certificate.md) +13. [Install HEVD Driver](install-hevd-driver.md) +14. [Create a Fuzz Harness](create-a-fuzz-harness.md) +15. [Compile the Fuzz Harness](compile-the-fuzz-harness.md) +16. [Convert the Image to CRAFF](convert-image.md) diff --git a/docs/src/tutorials/windows-kernel/building-windows-image/change-default-shell-to-powershell.md b/docs/src/tutorials/windows-kernel/building-windows-image/change-default-shell-to-powershell.md new file mode 100644 index 00000000..93c61960 --- /dev/null +++ b/docs/src/tutorials/windows-kernel/building-windows-image/change-default-shell-to-powershell.md @@ -0,0 +1,21 @@ +# Change Default Shell to PowerShell + +This is a CMD command prompt. The remainder of the tutorials for Windows will +provide only PowerShell commands. To change the default shell for OpenSSH to +PowerShell, run: + +```cmd +powershell.exe -Command "New-ItemProperty -Path 'HKLM:\SOFTWARE\OpenSSH' -Name DefaultShell -Value 'C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe' -PropertyType String -Force" +``` + +Exiting the SSH session by running `exit`, then reconnecting with `ssh -p 2222 +user@localhost` should log you into a PowerShell session by default: + +```txt +Windows PowerShell +Copyright (C) Microsoft Corporation. All rights reserved. + +Try the new cross-platform PowerShell https://aka.ms/pscore6 + +PS C:\Users\user> +``` diff --git a/docs/src/tutorials/windows-kernel/building-windows-image/clone-and-build-hevd.md b/docs/src/tutorials/windows-kernel/building-windows-image/clone-and-build-hevd.md new file mode 100644 index 00000000..471ea0e3 --- /dev/null +++ b/docs/src/tutorials/windows-kernel/building-windows-image/clone-and-build-hevd.md @@ -0,0 +1,56 @@ +# Clone and Build HEVD + +We will use [HackSys Extreme Vulnerable Driver +(HEVD)](https://github.com/hacksysteam/HackSysExtremeVulnerableDriver) as our windows +driver target. + +We'll clone HEVD into our home directory and enter the EWDK build environment. + +```powershell +cd ~ +git clone https://github.com/novafacing/HackSysExtremeVulnerableDriver -b windows-training +cd HackSysExtremeVulnerableDriver/Driver +W:\LaunchBuildEnv.cmd +``` + +Now, we can go ahead and build the driver: + +```cmd +cmake -S . -B build -DKITS_ROOT="W:\Program Files\Windows Kits\10" +cmake --build build --config Release +``` + +And exit our build environment: + +```cmd +exit +``` + +Back in PowerShell, check to make sure there is a release directory: + +```powershell +ls build/HEVD/Windows/ +``` + +You should see: + + +```txt + + Directory: C:\Users\user\HackSysExtremeVulnerableDriver\Driver\build\HEVD\Windows + + +Mode LastWriteTime Length Name +---- ------------- ------ ---- +d----- 12/20/2023 7:16 PM CMakeFiles +d----- 12/20/2023 7:16 PM HEVD.dir +d----- 12/20/2023 7:17 PM Release +-a---- 12/20/2023 7:16 PM 1073 cmake_install.cmake +-a---- 12/20/2023 7:17 PM 2275 hevd.cat +-a---- 12/20/2023 7:17 PM 1456 HEVD.inf +-a---- 12/20/2023 7:17 PM 32216 HEVD.sys +-a---- 12/20/2023 7:16 PM 45308 HEVD.vcxproj +-a---- 12/20/2023 7:16 PM 4117 HEVD.vcxproj.filters +``` + +If so, we're in business! diff --git a/docs/src/tutorials/windows-kernel/building-windows-image/compile-the-fuzz-harness.md b/docs/src/tutorials/windows-kernel/building-windows-image/compile-the-fuzz-harness.md new file mode 100644 index 00000000..1835596c --- /dev/null +++ b/docs/src/tutorials/windows-kernel/building-windows-image/compile-the-fuzz-harness.md @@ -0,0 +1,11 @@ +# Compile the Fuzz Harness + +That's all we need to test the driver from user-space. We can now compile the harness by +entering the Build Environment for VS Community (not the EWDK): + +```powershell +Set-ExecutionPolicy Unrestricted +& 'C:\Program Files\Microsoft Visual Studio\2022\Community\Common7\Tools\Launch-VsDevShell.ps1' -Arch amd64 +ml64 /c /Cp /Cx /Zf tsffs-msvc-x86_64.asm +cl fuzzer.c tsffs-msvc-x86_64.obj +``` diff --git a/docs/src/tutorials/windows-kernel/building-windows-image/convert-image.md b/docs/src/tutorials/windows-kernel/building-windows-image/convert-image.md new file mode 100644 index 00000000..54572f6e --- /dev/null +++ b/docs/src/tutorials/windows-kernel/building-windows-image/convert-image.md @@ -0,0 +1,43 @@ +# Convert Image to CRAFF + +Now that we have set up our Windows image, we need to convert the image to the +CRAFF format that Simics uses. + +First, shut down the guest machine with: + +```powershell +shutdown /s /f /t 0 +``` + +## Find The Virtual Disk Image + +After the guest machine has shut down, click the "Storage" category header in +the machine page shown below. + +![Storage category header](images/2024-03-21-12-24-34.png) + +The settings window for Storage will appear. Note the "Location" field. This is +the path to the virtual disk image. + +![Location field showing virtual disk image path](images/2024-03-21-12-25-39.png) + +## Convert the Virtual Disk Image + +To convert the VDI to raw, we can use either the VirtualBox CLI: + +```sh +VBoxManage clonehd "/path/to/VirtualBox VMs/Windows 11/Windows 11.vdi" "examples/tutorials/windows-kernel/windows-11.img" --format raw +``` + +Or we can use the qemu-img tool (included with QEMU installations): + +```sh +qemu-img convert -f vdi -O vdi "/path/to/VirtualBox VMs/Windows 11/Windows 11.vdi" "examples/tutorials/windows-kernel/windows-11.img" +``` + +Then, we will use the `craff` utility included with Simics. Find your Simics +base directory (e.g. `simics-6.0.185`), and run: + +```sh +~/simics/simics-6.0.185/bin/craff -o examples/tutorials/windows-kernel/windows-11.craff examples/tutorials/windows-kernel/windows-11.img +``` diff --git a/docs/src/tutorials/windows-kernel/building-windows-image/create-a-fuzz-harness.md b/docs/src/tutorials/windows-kernel/building-windows-image/create-a-fuzz-harness.md new file mode 100644 index 00000000..c595ac97 --- /dev/null +++ b/docs/src/tutorials/windows-kernel/building-windows-image/create-a-fuzz-harness.md @@ -0,0 +1,162 @@ +# Create a Fuzz Harness + +We'll create a directory `~/fuzzer` where we'll create and run our fuzz harness: + +```powershell +mkdir ~/fuzzer +cd ~/fuzzer +``` + +We're going to fuzz the driver via its IOCTL interface. The handler for the interface is +defined +[here](https://github.com/novafacing/HackSysExtremeVulnerableDriver/blob/master/Driver/HEVD/Windows/BufferOverflowStack.c). +It is possible as well to harness the kernel driver directly, but it is typically much +easier to use a user-space driver to fuzz the kernel driver. This has the added benefit +that most test cases for drivers are implemented as user-space programs, so converting a +test case to a fuzz driver becomes very simple. + +Essentially, if we pass more than `512 * 4 = 2048` bytes of data, we will begin to +overflow the stack buffer. Create `fuzzer.c` by running `vim fuzzer.c`. + +We'll start by including `windows.h` for the Windows API and `stdio.h` so we can print. + +```c +#include +#include +``` + +We will also include our TSFFS header: + +```c +#include "tsffs.h" +``` + +Next, we need to define the [control +code](https://learn.microsoft.com/en-us/windows-hardware/drivers/ddi/d4drvif/nf-d4drvif-ctl_code) +for the driver interface. The device servicing IOCTL we are triggering is not a +pre-specified [file +type](https://learn.microsoft.com/en-us/windows-hardware/drivers/kernel/specifying-device-types), +so we access it with an unknown type. We grab the control code for the handler we want +from the [driver source +code](https://github.com/novafacing/HackSysExtremeVulnerableDriver/blob/master/Driver/HEVD/Windows/HackSysExtremeVulnerableDriver.h). +Note that in the handler, we can see this is a type 3 IOCTL handler (AKA +`METHOD_NEITHER`) and that we want RW access to the driver file. + +```c +#define HACKSYS_EVD_IOCTL_STACK_OVERFLOW CTL_CODE(FILE_DEVICE_UNKNOWN, 0x800, METHOD_NEITHER, FILE_ANY_ACCESS) +``` + +Next, we'll define our device name and a handle for the device once we open it. + +```c +const char g_devname[] = "\\\\.\\HackSysExtremeVulnerableDriver"; +HANDLE g_device = INVALID_HANDLE_VALUE; +``` + +Now we can implement our fuzz driver. Since we're compiling as C code, note we do not +declare the function as `extern "C"`, but if we were compiling as C++ we would need to +do this. + +```c +int main() { +``` + +The first thing we need to do is check if the device handle is initialized, and +initialize it if not. + +```c + printf("Initializing device\n"); + + if ((g_device = CreateFileA(g_devname, + GENERIC_READ | GENERIC_WRITE, + 0, + NULL, + OPEN_EXISTING, + 0, + NULL + )) == INVALID_HANDLE_VALUE) { + printf("Failed to initialize device\n"); + return -1; + } + printf("Initialized device\n"); +``` + +Next, we'll declare a buffer and a size of the buffer. We'll make it 1 page in size. +Note that the `size` variable must be a pointer-width integer to be compatible with the +TSFFS fuzz harnesses. We will downcast it to the DWORD size parameter for +`DeviceIoControl` later. + +```c + BYTE buffer[4096]; + size_t size = 4096; +``` + +Now we can add our start harness. When this harness function executes, the fuzzer will +take a snapshot. Each fuzzing iteration, `buffer` will be filled with up to 4096 bytes +of fuzzer data and `size` will be set to the actual number of bytes of the fuzzing +testcase. + +```c + HARNESS_START(buffer, &size); +``` + +We'll also add a print for ourselves to let us know if the buffer *should* be overflowed +by an input. + +```c + if (size > 2048) { + printf("Overflowing buffer!\n"); + } +``` + +Finally, we'll call `DeviceIoControl` to interact with the driver by passing our input +data to the IOCTL interface. + +```c + DWORD size_returned = 0; + + BOOL is_ok = DeviceIoControl(g_device, + HACKSYS_EVD_IOCTL_STACK_OVERFLOW, + (BYTE *)buffer, + (DWORD)size, + NULL, //outBuffer -> None + 0, //outBuffer size -> 0 + &size_returned, + NULL + ); +``` + +After executing the IOCTL, we check the return value and in either case, we will add a +`HARNESS_STOP` call, which signals the fuzzer that this fuzzing iteration is over. The +fuzzer will reset to the initial snapshot and run again with a new input. It is +important to insert a stop harness before any exit from the fuzzing harness code path so +the fuzzer knows when to stop. Otherwise, execution will proceed until a timeout occurs, +which in this case would be a false positive. + +```c + if (!is_ok) { + printf("Error in DeviceIoControl\n"); + HARNESS_STOP(); + return -1; + } + + HARNESS_STOP(); + + return 0; +} +``` + +Save the file with + +## Add Header & ASM File + +To build the fuzz harness with the TSFFS harness functions, we need both the header +(`tsffs.h`) and the MSVC ASM file (`tsffs-msvc-x86_64.h`). + +Copy `tsffs.h` and `tsffs-msvc-x86_64.h` into the `fuzzer` directory by running the +following on your host machine: + +```sh +scp -P 2222 harness/tsffs.h "user@localhost:C:\\Users\\user\\fuzzer\\" +scp -P 2222 harness/tsffs-msvc-x86_64.asm "user@localhost:C:\\Users\\user\\fuzzer\\" +``` \ No newline at end of file diff --git a/docs/src/tutorials/windows-kernel/building-windows-image/create-a-project.md b/docs/src/tutorials/windows-kernel/building-windows-image/create-a-project.md new file mode 100644 index 00000000..db312c98 --- /dev/null +++ b/docs/src/tutorials/windows-kernel/building-windows-image/create-a-project.md @@ -0,0 +1 @@ +# Create a Simics Project diff --git a/docs/src/tutorials/windows-kernel/building-windows-image/create-a-vm.md b/docs/src/tutorials/windows-kernel/building-windows-image/create-a-vm.md new file mode 100644 index 00000000..e7cb1fb9 --- /dev/null +++ b/docs/src/tutorials/windows-kernel/building-windows-image/create-a-vm.md @@ -0,0 +1,65 @@ +# Create a VM + +Run VirtualBox. You will be greeted with this window (if this is your first +time using VirtualBox, the list of VMs will be empty, for example below you +will not see an entry for "Windows 10"): + +![VM List](images/2024-03-16-11-55-02.png) + +Click "New" to create a new Virtual Machine. You should see the dialog below. + +![New VM Dialog](images/2024-03-16-11-55-58.png) + +Enter a name, select the ISO image we downloaded, and be sure to check "Skip +unattended installation". Then, click "Next". + +![New VM Dialog 2](images/2024-03-16-11-56-39.png) + +At least 4GB of RAM and 1 CPU is recommended, but add more if you have +resources available. Be sure to *check* "Enable EFI (special OSes Only)". Then, +click "Next". + +![New VM Dialog 3](images/2024-03-16-11-57-17.png) + +At least 64GB of disk space is recommended to ensure enough space for all +required development tools, including Visual Studio and the Windows Driver Kit. + +![New VM Dialog 4](images/2024-03-16-11-57-48.png) + +Ensure the settings look correct, then select "Finish". + +![Finish Settings](images/2024-03-16-11-58-06.png) + +Click "Settings" in the Windows 11 image tab. + +![Settings](images/2024-03-16-12-10-29.png) + +In the "System" tab and "Motherboard" sub-tab, ensure the following settings. +Uncheck "Floppy" from "Boot Order", ensure "TPM" is set to "v2.0", ensure +"Enable I/O APIC" and "Enable EFI" are checked, and ensure "Enable Secure Boot" +is *unchecked*. + +![System Tab](images/2024-03-16-12-11-56.png) + +In the "System" tab and "Processor" sub-tab, ensure the following settings. +Ensure "Enable PAE/NX" is *checked* and that "Enable Nested VT-x/AMD-V" is +*unchecked*. + +![System Processor Tab](images/2024-03-16-12-17-25.png) + +In the "Display" tab, ensure "Graphics Controller" is set to "VBoxSVGA" and +"Extended Features: Enable 3D Acceleration" is *checked*. + +![Display](images/2024-03-16-12-13-14.png) + +Click "OK" to close the settings Window, then click "Start" in the Windows 11 +image tab to start the virtual machine. + +![Start VM](images/2024-03-16-12-14-15.png) + +A window that says "Press any key to boot from CD or DVD....." will appear. +Click inside the Virtual Machine window and press "Enter". The VirtualBox EFI +boot screen should appear, followed by the Windows Setup dialog. We're ready to +install Windows. + +![](images/2024-03-16-12-14-29.png) diff --git a/docs/src/tutorials/windows-kernel/building-windows-image/create-and-start-the-driver-service.md b/docs/src/tutorials/windows-kernel/building-windows-image/create-and-start-the-driver-service.md new file mode 100644 index 00000000..8c773a7b --- /dev/null +++ b/docs/src/tutorials/windows-kernel/building-windows-image/create-and-start-the-driver-service.md @@ -0,0 +1,27 @@ +# Create and Start the Driver Service + +We'll create a service for the driver and start it. + +```powershell +sc.exe create HEVD type= kernel binPath= C:\Users\user\HackSysExtremeVulnerableDriver\Driver\build\HEVD\Windows\HEVD.sys +sc.exe start HEVD +``` + +You should see: + + +```txt + +SERVICE_NAME: HEVD + TYPE : 1 KERNEL_DRIVER + STATE : 4 RUNNING + (STOPPABLE, NOT_PAUSABLE, IGNORES_SHUTDOWN) + WIN32_EXIT_CODE : 0 (0x0) + SERVICE_EXIT_CODE : 0 (0x0) + CHECKPOINT : 0x0 + WAIT_HINT : 0x0 + PID : 0 + FLAGS : +``` + +This means our vulnerable driver is now running. diff --git a/docs/src/tutorials/windows-kernel/building-windows-image/download-windows.md b/docs/src/tutorials/windows-kernel/building-windows-image/download-windows.md new file mode 100644 index 00000000..c603f7b5 --- /dev/null +++ b/docs/src/tutorials/windows-kernel/building-windows-image/download-windows.md @@ -0,0 +1,14 @@ +# Download Windows + +Download an ISO for 64-bit Windows 11 from the [Direct +Link](https://software-static.download.prss.microsoft.com/dbazure/888969d5-f34g-4e03-ac9d-1f9786c66749/22631.2428.231001-0608.23H2_NI_RELEASE_SVC_REFRESH_CLIENTENTERPRISEEVAL_OEMRET_x64FRE_en-us.iso) +or if this does not work, download from the [Microsoft Evaluation +Center](https://www.microsoft.com/en-us/evalcenter/evaluate-windows-11-enterprise). You +will be asked for your email and name, but there is no validation of this information +and you will be given a download link regardless of what is entered. + +The ISO should have a filename like: + +`22631.2428.231001-0608.23H2_NI_RELEASE_SVC_REFRESH_CLIENTENTERPRISEEVAL_OEMRET_x64FRE_en-us.iso` + +This tutorial assumes version 23H2, but should be the same for future versions. diff --git a/docs/src/tutorials/windows-kernel/building-windows-image/enable-ssh-port-forwarding-in-virtualbox.md b/docs/src/tutorials/windows-kernel/building-windows-image/enable-ssh-port-forwarding-in-virtualbox.md new file mode 100644 index 00000000..b7f194c3 --- /dev/null +++ b/docs/src/tutorials/windows-kernel/building-windows-image/enable-ssh-port-forwarding-in-virtualbox.md @@ -0,0 +1,56 @@ +# Enable SSH Port Forwarding in VirtualBox + +Shut down the VM by selecting `File` > `Close` in the +VirtualBox menu bar, then select "Send the shutdown +signal". + +![](images/2024-03-16-12-45-13.png) + +Click "Settings" in the Windows 11 image tab. + +![](images/2024-03-16-12-10-29.png) + + +Select the "Network" tab on the left. + +![](images/2024-03-16-12-46-16.png) + +Select the "Advanced" drop-down menu. + +![](images/2024-03-16-12-46-28.png) + +Select the "Port Forwarding" button to open the port forwarding menu. + +![](images/2024-03-16-12-46-44.png) + +Select the top-right button "Adds port forwarding rule" to add a new rule. + +![](images/2024-03-16-12-47-01.png) + +Set the name to "OpenSSH" on protocol TCP from host +port 2222 to guest port 22. Leave both IP fields blank. +Select "OK" in the port forwarding menu, then select +"OK" on the settings menu. + +![](images/2024-03-16-12-50-38.png) + +Start the image back up by clicking "Start" in the +Windows 11 image tab. + +Then, on your host (if your host is a Windows machine, +enable the `OpenSSH.CLIENT` capability on your host as +shown above), run: + +```sh +ssh -p 2222 user@localhost +``` + +After entering the password at the prompt, you should +be greeted with a command prompt: + +```txt +Microsoft Windows [Version 10.0.22631.2428] +(c) Microsoft Corporation. All rights reserved. + +user@DESKTOP-QNP1C9S C:\Users\user> +``` diff --git a/docs/src/tutorials/windows-kernel/building-windows-image/images/2024-03-16-11-55-02.png b/docs/src/tutorials/windows-kernel/building-windows-image/images/2024-03-16-11-55-02.png new file mode 100644 index 0000000000000000000000000000000000000000..e35c06b1d9ae63698c1514ecb998789c4eee427e GIT binary patch literal 100514 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�b}mQRF_ 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 WYV21)4M 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%0Dk=_phkfYwj_w8_9ex|Q`pOJ5hzi@@?}A; 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 literal 0 HcmV?d00001 diff --git a/docs/src/tutorials/windows-kernel/building-windows-image/images/2024-03-16-11-57-48.png b/docs/src/tutorials/windows-kernel/building-windows-image/images/2024-03-16-11-57-48.png new file mode 100644 index 0000000000000000000000000000000000000000..167a6fb39d777d9111750c6c710eae5b5ca32b3d GIT binary patch literal 89198 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 Ogp!<^>_?Po;Qt34R=@KA literal 0 HcmV?d00001 diff --git a/docs/src/tutorials/windows-kernel/building-windows-image/images/2024-03-16-11-58-06.png b/docs/src/tutorials/windows-kernel/building-windows-image/images/2024-03-16-11-58-06.png new file mode 100644 index 0000000000000000000000000000000000000000..5f6c96ad54c2296d500886aad2579aff24c5caf3 GIT binary patch literal 103932 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%0DlK40l+w3@0b5`9Dh|0 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 literal 0 HcmV?d00001 diff --git a/docs/src/tutorials/windows-kernel/building-windows-image/images/2024-03-16-11-59-33.png b/docs/src/tutorials/windows-kernel/building-windows-image/images/2024-03-16-11-59-33.png new file mode 100644 index 0000000000000000000000000000000000000000..dcc1a202153b80f4f64ef6c6b19bc5fd0c885830 GIT binary patch literal 85132 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�(b2o34)!X4>Z!feP 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 WF1iWk-ylH1-vcELSdoHh(7ymv7u6L2 literal 0 HcmV?d00001 diff --git a/docs/src/tutorials/windows-kernel/building-windows-image/images/2024-03-16-12-04-27.png b/docs/src/tutorials/windows-kernel/building-windows-image/images/2024-03-16-12-04-27.png new file mode 100644 index 0000000000000000000000000000000000000000..bf6368e1c8583f5056d8f5dd97920d3246b0952a GIT binary patch literal 22072 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 QP+pMWFT&1sA!F|R1F4gYwEzGB literal 0 HcmV?d00001 diff --git a/docs/src/tutorials/windows-kernel/building-windows-image/images/2024-03-16-12-04-40.png b/docs/src/tutorials/windows-kernel/building-windows-image/images/2024-03-16-12-04-40.png new file mode 100644 index 0000000000000000000000000000000000000000..9fc377ac9ee3675812a0fd904ca55188c4e61643 GIT binary patch literal 16059 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 XUgCUm*R&JD6PRK&eL{p}!M6VgRHw{= literal 0 HcmV?d00001 diff --git a/docs/src/tutorials/windows-kernel/building-windows-image/images/2024-03-16-12-11-56.png b/docs/src/tutorials/windows-kernel/building-windows-image/images/2024-03-16-12-11-56.png new file mode 100644 index 0000000000000000000000000000000000000000..40b117d543e9f591acc21e625cd632231cd3be33 GIT binary patch literal 58558 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�=s&)XqqyQeBxJZdTtn(4rIb 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 BD!Bjv literal 0 HcmV?d00001 diff --git a/docs/src/tutorials/windows-kernel/building-windows-image/images/2024-03-16-12-13-14.png b/docs/src/tutorials/windows-kernel/building-windows-image/images/2024-03-16-12-13-14.png new file mode 100644 index 0000000000000000000000000000000000000000..c36de59af1b09c9a349c8a77b54b2ca9276d2fd8 GIT binary patch literal 44728 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

;lYH+>CY-9S{bcj(LgK0eUfmmpo?0e3qL1{; zs$Y%5N1VRmA}zhWtF-jmPkjueqx(;0UUHcz9?{t3HCqhC< zNOR1rPUoamBeVlVgTm(Pm7ECiEZK1F%Zo}^L;JOZv&p|+f$O*}?(t>Uzqu_lGPVeJ z$j;`QL6YlYtyj;(>T^DaE44qzljVa-m#5X}U&rkWxKg!AZ2as2T1$<_Nd%U43<37E z)b$^fTlvefrAR_LI?e6IlNq0H92_xceV;F~OU6k+oj`b*SKoDg#|%iB&Qn2qbl}MM zVN=B3w@x}gZ2SrJFHe6B5(yu`66QDrb z?x(61ce3`a7eWGt47+x9b<eCmJ zN@CZ(9!*$xZ@hb$R@3xT{{+>uE0`W3%zmbQ;KQJg50)Q%FmAQ!4p2S9t>YJIILLl; zO>)%^IH@*t`2$@C%hHrP4_lxFu)<06YKTAJUDk_KjF>AN&aO=Uv)0!Y$=>e4DuL z4D;X$m7rklsSXYsrnh~F%3q3!kz`^AwF5)uDHWpba*$y# zNm2n=N$3{KCoZaC>x@JJogcy}KQ|5M*BoD@I3MyNCJkpM=@ZDU+%ue7f`hG-q#&3p zVhG_{bBv^*mTw6-gLn%HmC@O&`P~DRTCNN~N(X zy8|@hGX4(m>#7~_NzT@M%!%Y_#}j?{0cMFS0}c&MY=oD!1vV+`1?FDMk@1G-=3ucz z^^WP}?c4wQeD%bLSKw;_iIPe$Cj^tl`66?qEGG_qesN`|-&pHUJ-jO4F zE}2D3K>>$NM26z(+IU>aIydac%RYJ9Qd7O`rBA@xpt5O1yO5pDt#l{2@p;g&1d7X@ z@Q&LrvTc{r?>U+uopOt`W-cy_TyDNIC;@Vd08Gitb2IqV3nK$RA|K_YtV9Z!iF=uxpNF1g%s_fPnNV++QJ05F(|EE#8V(E^oEZGAmj zu0+#u@^TBiNaG;X`?OBU0SzjH1F-^@a;7DVGmv^xUz5e1h(UFijg<9AzcP zKjLTV@I80S&vZdQ=YiYeGDG_1?$P?c{yDk8h zq`bV|iT&SMnjv>{=<<+s$%kZfLFAg#JqrP7*v{-G(jkC1b5wmeORes9w(n5&p}%j#Blxuco;9ALtPJ)Ml{fv0t@h%k z=~bEW8k$WRtLFhADn$oX>A|dn)gE}47=wA{G(F#cKa-@;;_YkV0Pl=6aO7MDB=HJY zC!2;)HznPH1aqlF|KL%FMm_ZRdz0stvi6qk%eQtm+oI>`>M~bHe`leP4@%DLP*#4q zu{uEXSlfi2(k_d?HH0UG)|E(K_4#m0!v_{b^Sh!gR>?8VU9LD)&Dl`x%)r;$I8pw6Y~1UPZPe4r`d*Ff8Ea|SFgvKiC1Y4nz2qRak^GY zU=-Ebpl^_Oo*OIBYh?nB%ccw6#ec3dA`Z#a7W(AZY^16H&NenSb}v+_Qhwq>nvIY) zrqCYyBtjD@dfiX!HERkP?@Wpg-IsRv{pxpshS-8G*4Ou4Km6kUcRR`c&Al@jqpMA^kGC6cp|=A(Pujh$%LLWG=CSSE`71W#jw}KTi zTh5He{mxUrM=Nhx0%})ZUH#(P?~YUV!9n^+y6eoh`vo7#nzns@(wMe@87DV8*X&r{ zb@m|+mo$s9!RwMs=}y3Z3-_aH&tspDq)w#aCX_e;H7Hc#}Ntcn_7YbX>z}$nq@prL~U%f*EuSrnGM#^189eE(0h$9KmO)x)V$m=y$YV z)c$VkWj#dPPqOOO^ZbV^y`yyohNh|Co$z-sWH=BwxSnt%9neqFzXRwe;Ja_y^qTbu zpBM@RwDi{`PJpAd-vURdo9P7+>)JuOiGbvO)M(_%gGGI)wty5hY0e3{aghBQ2{1s+ zu3s_Om_ume%rd@lZQOFrvt?xYFZcwQ0eCKj8I>Z z8kH(UbMD&Ot_0SdH0d)mt)q`@STHozAv3#A^AyMsJA3%Hl-NEq9lshb>`#&9nMAys zwE3yAz$pdiVxwghdQo@D^}&=SBqT0?1kf{?W_f8^>;A$+Cr=7cC++XE>i&LyF+Lug zQe%4VVA2XP48UK0;6<}!dE9q_;yEMOOVW|_2c~2}#N+l&S#?`vsRTt46P=6!RfY_i zVU^kQ-t<5X*{|PTzOSyn#)M^IX8iK2fF3t>75M6yIJlYi0{_E&bqgJ8n z0paoAw{IwDx0BN+zMF&5hcF=l8!}{wYuc*^4<3}2;bJQ2E94@nLjnGHF_}sLWVDh% z$^>ncx3}~OU{eZm|8WF&4AbeXkBtQX!#QgW4M1&&qAyue&dbcq#DefP0G9~dG*@#x zW#AW5wT11XES7W6BlCN2VeAv_Uwo#Aju@fXjFQNQK0)(TJ8Ns2UIf-QOo8PkdWnmt z7}aeWuoMmZZGoO(UIIz*IYvb1A=DRjm>T~ zF<{&1V-7N{%`b~u!8)tYJ=Is$bLVtV_4n(TC4O}4cB)d^T{R6cj;uBM5cISMin4(7 z?%kW4{SvF>iIAQL>>`+FFy@BiJ0!QK@Wk|!y@L{N`#+j7xOugr+Di(Mff5on%apmn z{QHv#&Gy}cEn}AA0FXrNqso0or!^bOT}`51)L{+OM|M+(3L^zKFjlKq6fBLFV|jP;k-_60_5{l3f1 z^12kLL4;3B2~aXuLF4ELHr)Ad(ZTf9uIB^QpRTZKXNBXp_ zgU$l#U7<0=IKd0cuH4Psm9R9~ciCA}JuP9-IXOGFCBL?96Zt*5`IYKiK9XEcAQTF+ zf0&HcpDC0vM0H-)2<;m_N^LFt6JMfNm zncc=#I?h`x-S**|+JJdWk*6n{jeq}>R2XOSTMY9+CM@_}#!=D$PMg-OoJn6paDoH5 z^ou+m5)u_LH7125nz89bIAbFtd_yhd`}FVsh7Cxxo>4_zm5Yf}{91KM>*VV$=$?|z z7+k=?{MES-KKIchM}*v)5m(EWCD|9&(qz)w`0nm*DwyLhm~nDIqC0}+E38Ev(a8{` zW^G#U?(VLBN}}s(q&LrO3*KB#aG4dL>=mWO1W#y`@ z+NqGG{soz2Jl$eeI78vUt-H=%ma;yS>FqElT_y!+$nH6}{Pejy_x8lktQl!^&o=~- zqu%`a3_avs_~jAP*GsnL2~g#iKGp$P^ad&Ac3o=vWL{s_l)RlZu;zb$0241VDM>)2 z`NDwg0L^L~yO5J~w1iF|86!7b=zC1M^<8iSKGA(MjXgGYYPmXuHzuA?pKUU*?;y%S_tQWk(%0K;Ygj5u5=_G3ZB8!*CSo8K*%f22VO zvK-lU?3`&=Dp}6l+MC2c*sV03oH)jSEWNzE)bB)RzIoG5eu|`3MSZn{=d9W|>#utL zcC?Vly3H(!$<-`e1FQ>H6O9 zo#$JwRp?#Oux&le4s^>EWQe3lZ{G_30Z5jV@hb2;s<^_8vitpe!RL=w)kB-BaIA>8 zD`Jh14^A{sd3-rud!*Q0j)+hwCoCs&6QFi}Xi|ujMoeoq){-Q6NgSuQ?kvO z@g&^Q#G~TW>2pY7ehhDEG1K_%xBpC-K-15S7V#ALeFdW1o9eT(st~ z-(tc4MR;xdA&>_F2j3SO7w)i_tZo}$(SJlqt?GZKd7kqnm2xY)1mlm=bI0S%vs#PI z7KiS?G2-L7y0$Gv(l6;*vi0F)V`$K|YuBlpJUTx&T<+H=@02-}r>^d66cg8xsZ(92 zB`sY%B(!x=#wT+)lme*7!GgyJ)!rPSfuW}j(PSn28M#3s_{=Z22d z-`@&9;+hGbO;=6m{5Q?)$N@w|zUdB-6ju#8U1(G{HDv6FsDtaLm9IQmvoK)&$Zojp z2-pqWyCS>yuRbA;SUmG7<6wvu zY$V1vGkpv5F?wcb{$(ToFJx1%8O#tCrw3gSvTq|(Q>psNomZsR6F0W~7K<~}9=$uC z%T(?~FPBUy{7|``grJG@4JO0&3l~0;W@;soGJ&16!Ojl2!e8-!8KH8-k0RxkYo*@G zl`CftsI^ysCQLHSNw*BC4I4rjyt1xfEQN&NO(!-_Y2w6>r#xO0x*kJk9wII-*qTer zj~`F2_>Q*?J9Ua|XZWyT5D#Bq;xCQJdH#Y0hVg}HAO(^*--QpL!hInO(xR58(n&!@ zhHfsuUk8vOa@*%!m|N};QQL*1q=PN5Fy(xBw0w|X_1YW9wibLY{L(sII!<}gRd){$ zFv(()Yak3j>VLJM15!ldikzFPsI2Tt6gPN6*OI7J3Q|#Eh7TXt<2MdNW-_*EErQ+6 zg$wH+A6L?v3Q1I;+e1*&%A64~#r6PTP;#<+;9RnZ^Cs~fqm+6bg#Av{COKfhDvl}q zX!ZAYZuqxtWh<(5a%aex*jgoa_sLE9kvtS?etvc0c;dia83}V__eD;< zQwa9PJrdMusA4(d8L2wH6LuuG93u_%L_Jh9VEm_ql_=%T^`~(+H1K@ZYt9D}^box< zK0XYtqx%|l$$c8`*p1-99U1F0f!45e_U!Gqy7?q(&-ybO<6Gq?t%m`sRj#26vliu+ z*1Dx=>&Td@NR;rcjN=Pw_ENGxE2fWGS8Z1S48s?xth z`W^&ZwNGxPyPe#BYUy_#I_C|KyZZfmLE%heY(Nlva&q9l@r8w}J6Gy8=Kw!drLmLO zjt*Wv|ZNCN+4t8b6F1b1q!jP|zcKl|yn+x|Ma31h`hEX#PB6uU@$io%d*p~Fi~ z98Nq1GaQi&ek$fkc1o-jq1iBb@*%%|G-%Jv?Ll{)YB~W!M?bPw(SZZUEZX_2HvUqP z__(!e)_`0PJDPA?h>2fJkAZJd1pf)VJal0Sw~T-?UZNN8!F_N2IZRY^H4Vmh@A3sV z`kP+5yLmo>*&05~lnyBORIAQ=behtN)ZUq4`>dx;ZfK&pY3M7fnn>TDKYvOk2(+JJ z!zTKq_^XSn-=B5oiKpiYvt@52-%jqK@ve(`>ifs-dj`^se{f-fXZShhvHti`I1Vz0 z2SwA_ubo|;w^wu*EvhfR6p_DzHScNt+H7yer{sN z!-D7Upc$u-U-W&-!Sqh}R79k2aAQ(fj{D36i?J#$g(DjrK2zRlJUh_2QAMU!fAUJ{ z!cl1!XrgGh@NtQl=%9~(PHnj^9iuU!3T#&@kU<$Cytc{xBd%IymQa-WpY5!OzMprn zl-rEK^MV$xX#Udzd#ihgQ`YUUc-4(hW9cBNx(n^ow|wmpv&FlarnyW2L;@+T+j2 zn73^kq|3vujoTpR*Y$nJ_y?%KQLgzy0~>Tk@ffm#6)P@pE%#@KIWQ{(FMA z3$(JiYodeCtygeG8!EiMNW2T1f@fP+RG5NJ?jMSM`1CMwm-27gGBSUZf+G5&<5y1b r8C31GYX5((gW*Fxot9JY!wAX`9 literal 0 HcmV?d00001 diff --git a/docs/src/tutorials/windows-kernel/building-windows-image/images/2024-03-16-12-14-15.png b/docs/src/tutorials/windows-kernel/building-windows-image/images/2024-03-16-12-14-15.png new file mode 100644 index 0000000000000000000000000000000000000000..ac35fece03049cc8ec00027d2ddec1152207f5ec GIT binary patch literal 96944 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

(xll_u`g@@sK$JnbaQB+h! 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 literal 0 HcmV?d00001 diff --git a/docs/src/tutorials/windows-kernel/building-windows-image/images/2024-03-16-12-14-29.png b/docs/src/tutorials/windows-kernel/building-windows-image/images/2024-03-16-12-14-29.png new file mode 100644 index 0000000000000000000000000000000000000000..b8184ee911bffdf4b496fbc056e905afae10c9ec GIT binary patch literal 5026 zcmeI0TTs$j9LG;yATP-@wO!P3o7$XmlZ-|yQLI(TsqA89S|p>Q6=@JAqA1$UbxWJw zE^4UlKBT*?q7#XC#MH>j#I=PG6yqB)Y{2Kt4orwtDbtI$g-O!;6oa1&OhnNp7 zQ8M8X=4P2?Lz!daBfCDrLn7K~ZOES7sU30USA_PzjT1w3#YUrXU?Od2dCtN-(+=cb zHt8V|+cKk-*4E_HakaIzRRa_F6DWHC-rPU~kn0;{J(HMe4b2~{A#Gw20ONmI)8Yq6 z0Dj$z0wARLQwycmopbX|Ce!xvNDKyZ0yQct5Ql)1bXPxSIF6^wS)((Rwf%t?vAY7yy?$)pEsg8$CqG$gT$5W(RCrNimKTjf5M<~L zTu2XAabRr;LGvMi_x?w-TS$k$(yOs`cvi2crN`)}Fd}@x`JBiDO!urBZ@x&1C0B8K zy^l4`v)(mpp81`m;F1ZNLG>sHDy7UH)^()};ew?(O>_DtOExWiX71ck`pwzf*t1j+ zr<{Dj&uHo&D1+z&u?eSW%0(kIemlNy^1`6{YEP4NV-*J5J(5{DuTgiYmmY9;jT}lv zcZv$f2EWCKcqYfWxs}MiLXJF^f%Ca%7BtRox)1k1BDUa`g}*A)6AHp#W^R^b7jg@k zx??M*0s(F?hb<7x!p8M66VK`!He#hmlNzAti1r0db!i98%h$UIql(^^L#tb#WYgc0 z<;@Cl7abbphu4tHX1R9QbnuMSS$ES){AD)y1MqgdF~rQrRNa~3$Sim6z6-7D=PwWfAAx89%O zVR~%(b2*{)cCf+m8l}BVfCg_AYqLfMPbPMt99UvcMs(Cz$NG{C*ZWCS-1V^oP~U}p zGD$PUEZYARXSx+aSaGVZASLcPC!t~{tdhb`W3FoN*a|$mXRZ1YUAp-X1)q|{D($`; z<4<9Jv{({e!{KPpdxipmF5?xyk%V*M8^mNpv0{ry1$M7_&K0gk9A_m~_?uaZcBhuY z2=LsE$sS2lBN@Z3m)j>9m99z8-}5gri%HM@SmIS&ctY*dcn%l!>Iz4GFSr73mH41L z$(+Fb8F!*(VyrS=>YtV#a7LdANGJLP_&VJW^8v*y1p`r8J!)8eCx#a9*}d{`mjY=fL5UDPk-9IyAQR z(bmT=zsqgvv8l(Vp3i&#+B{?PjLkDP&sbgXwZ7Cgq}Y&RL&_H*h06}MXkj?JlLmnB wd$x5PmX&3O%|^LguGMNKojW!e{~K^=*;tpu@_2j?(W)~L5f&NB-A%gmFPbbOYXATM literal 0 HcmV?d00001 diff --git a/docs/src/tutorials/windows-kernel/building-windows-image/images/2024-03-16-12-17-25.png b/docs/src/tutorials/windows-kernel/building-windows-image/images/2024-03-16-12-17-25.png new file mode 100644 index 0000000000000000000000000000000000000000..80013d41bec7d0575f49eee37518a163864d113f GIT binary patch literal 36670 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 X8$p%x!dT$=D(In(kv8%V$G`p^DD~Pl literal 0 HcmV?d00001 diff --git a/docs/src/tutorials/windows-kernel/building-windows-image/images/2024-03-16-12-18-07.png b/docs/src/tutorials/windows-kernel/building-windows-image/images/2024-03-16-12-18-07.png new file mode 100644 index 0000000000000000000000000000000000000000..7d96c8b4cdba771dae8a6ad9250394cf83d60901 GIT binary patch literal 27616 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 literal 0 HcmV?d00001 diff --git a/docs/src/tutorials/windows-kernel/building-windows-image/images/2024-03-16-12-19-09.png b/docs/src/tutorials/windows-kernel/building-windows-image/images/2024-03-16-12-19-09.png new file mode 100644 index 0000000000000000000000000000000000000000..f71bce2fad7a629906970b481f3fb0932905fed4 GIT binary patch literal 41674 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 literal 0 HcmV?d00001 diff --git a/docs/src/tutorials/windows-kernel/building-windows-image/images/2024-03-16-12-19-23.png b/docs/src/tutorials/windows-kernel/building-windows-image/images/2024-03-16-12-19-23.png new file mode 100644 index 0000000000000000000000000000000000000000..7fc1cb9bea896de3fd66e851871eeb5ccb4c6076 GIT binary patch literal 34055 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 literal 0 HcmV?d00001 diff --git a/docs/src/tutorials/windows-kernel/building-windows-image/images/2024-03-16-12-26-28.png b/docs/src/tutorials/windows-kernel/building-windows-image/images/2024-03-16-12-26-28.png new file mode 100644 index 0000000000000000000000000000000000000000..f79c3843cb4fb07e67626387a5c26f365a73d341 GIT binary patch literal 121627 zcmV*3Kz6^0P)e4 z8OW}HLIMdcBmpG}5>Oc>FCfc|!dpPXB9Q+5(f9W4rIu4wr>d*^*7p;5_jXsEb86}8 z?>Tk4Z}i7!dr1)y<&zF@q?AP(kXuy2`EC_aPCK$GCR-M%Nw?F&N{2KHIYY#yooSd1 zyfm7F*oru?mR9#_8dj{%7AL2uRXT!Klx_>Hf{qa6QRZmUD1xR-27v2XU1L*tT=;Gb z=;Lg7;^08WNR0;BP-E|!#erg(7iX6UO5GBaD9L3R=n3nMN(nZo{(Fo-UTGgVNC24YdPI#78Ct}k`pLM)C&kgzU!*3xe>AE#^tdq^XkR46=(EZm9$ z*^6cmXYNJ(lO_PXEalzp%u#{m6@=~;7PRU&7$7imJ5fxhVa*Gzo)o&H+{5f5jc=el zA04_cTQ{bB!UxQcQkR4U?gEJeh*PEzoKg&<2rR(u4QIJ1^-{$WXHtODC2t?97HYXK zoT{Dh%R%L4Vm`^kc!E#`Y=pi^=va0TyN0%*S^~h8&Ge_iQHm&^Dufe8R0!TaGOo~k zmLf1WCat1u5;xT+IoB{uIR`=*u96m>Q2~+9sosDcPN9-hB$J+@VhdW*3shn8kmlxU z%qtGYtJ`c{wzlg}T=xTgjCyTmopd)sv0DwZT&kZ{Gv1UQ3BELTP^QI}6#> zv{nv-*;`3*BTa6qYT5=2Q8Nq^?FSplBajfzQ(-2?hO0rW0yC^IX)$t*rAiSz>oy2Ujx$hQA{3j2*c+X&iL8`0XS|L?eRJHw4aw^J z0FpxS>zf=^voprL3#tHD?BK&1JauW(FRjq zSyKglA6E}N%VCoYhPWjWH}!=DN_v@0@#4fqU2Dp5L#4LUi9)r^mh+%T@r1E?AY4OY zY9XgW{wm|jCyv};9^y3WEc7G8A}OC&ym3I0q`Mm+sGq-=!9>CUjlv=GA4-IceP7Uh zkU=B#j=v9}XOF0UMi9T0l}sT;o$|Yd4AGdAR&&92bXP)Cs6y0Vd0&UF6dLvfl!|%F ztc+M%6*aC8Q)$R5C5ed8l}HbLGXR-+B7^8u4<-n_=0R^V6nP3A+R~yC@ihRHy)kSX zO!&+OpdGiD6JWGAIwk3_mEgYCyxBHXCr#Y4l$$N8sLuWY!XaR>Yh!-4R> z!P|$~kU!Cn`tuig(P4IxSbRT_Z7*cH!gqU>EfIy7l_0eniVr5AP!yH%1rGSniX>o?wGofN3aLv_Mq=1Z?&g^mUZh-pCw6z-`AbWkyfd93wktY~jlL0I-Unpc6_QmU2-WoeNT%@3tmp zk*-jq%-)Cm`DB_=pSlBs-whdCat?q{GkwYm?ti({((zQqr~=&IGT`L^Lw0Dqi0MjG z29SBxsi~xZCRr*b5^=s^7z3+WlA^oepr~70PgbAmT0*^XNom%AZGGs{osIfShx}V+ zSqk~9#m#^=@QUf|>NrDOTA-PzOJHeoh1I~TsPra-I-icIADQJeZr?HUi#=4R)+tuc zgrbG=n}#;JLZqXUa}IFV*X6Jh^;J|E77vqaEB?ugW4N&u5cUB~3X@W7Pjdxrla@r8|5%FMc(aeP@Mo!~k-I>2x8gYf z!WE2?AkEV!9jKSvJ5aAf_=}bnh2f?&qGo0A;uys(8_=ewtkxnV!bOJn0R#f@_5lQn z6cuY|U@68}W?)`~jwZA)vli3>_=>8u_L(rE{vIwRX|0jW@Bu7x&IP(Z&xy=8M4M5DaT8?W=d$F^eVD>EFh5QA=TnPCW zz;gf!D8{B3CzW9=TrX{#k)WlGtpG7;u6iqgTMEfIMKO}qs@=4}0a8AgSV47i5!PHK zWs>3STv~x^QUBa|T4nW4R*U-6yGes^G5TFxmpx!wnJB7Cl~CLj0VnLxg(THr(GsB~ z<)C{ZPY0{B=vS297P3upY%Ba96_nB9vd(Og;f4GOf5zoU?2kaUzK902Yv1v^H> zG^lt&BDN~GE=hN?%C8y&go1*5n%fQRZ;WGTy8*DR0JTt?+-`tk5LJ?bK#J>Gsx4lK zxbPPb5w2j9o)VIcsv&=1Z5X>%WTGW8-1w*q{+J z5z3qfC@> zC#~qauKbEh8@e`arD8KVzNvO$)u=qo4z7&alU45wWPz70#*`}$%;gnnH$g2Bo~fnM zA!bw}+Ug8YDz5 zW-k)U4cF5)huPhvK*VICwiR#|SQdTJE;CmkC_kcrnyG1oa@2N&t3A$k#mb=Wxp5*ZeV zoFd=9@O!P`n829;g|L`PSXLG(XGW;#p2dQ6Psj2zOfbcjDTqdK-TKu*-4xIU7=|Js zaCT)|Qgl;*5-^+{oZGpC6f;E?E5L*rraXdRuOaPVvEZnUD%532*3>iBjh%rMn0rS! zO*68v!cC*87sdNoI<>a{DRJ;(u%8+$2Q*c!JsEJ4binEP5pJ+Q25hfT`cuufGXloI zv7>J&NQE-?t>H>@bz{!^M;Tfu5vTEYtt*dZgMv(EbzaaI0g~egW(&gfJPD;{ zpgv$SVgCGgGw(Fj-nl7U(drIBl=%-GAfe(yTDBoKj1q9i7Oi#It`SP5j7ZYkgf^nU z5OCbTYMR5>YW$YMRv#6kkI z&yndGnA8`o91{LOp3`fZC*ur6xjz`%mCT@3&kUhua;)RpWuypqY6Sa0>Z;YC>A=BQ zc(GTE?7MU9fhkdU0OHJlRB)Ulm7VUgFmdxTF)=74u0=U21ltN%dMsG({+8QA7wiz= z7$Fu5S|C973A$Id0a6*DMRKytH6VRw+4qS8W4Oj+d7gnIXG=B$R7$w?)9P&>!0G(%+Xo?UJ zI5lXAH(b}d)Io^Bex4}yzJzRl=y_85;EcP38EH}Z>pf=d6$omT4UoBk%ZA=XkzeU% z>%{)m!_YFJRH$BwSB(Fh^@tZj32C_Fln>(FdcwWV2O9zVjN=5Lufo6 z)G3T;gGjt|bQxfXSf(Pgg5Huc$D;IqneSM-vtrc(sVeS^$~KPFl^a28loUC$GmwC5 zj@p1p!ZD9Xqe-wwPr+-Q1iRz}yP21rZpa_h+B|b8IV~zSNO65$+r`Rb<`)?td0Fi1 z1dVgVVkS<{<_84M1xB(?m-nz(^Nvj@L>E@`JI|fsrU<~dL3AKF8?8B_mBsrN70ZPA zwG_!I(G(yj2-5+ef_63H-079_deB5FRscve%!33;KUHi9zzSkmW@qb1&r;`ja1IV! zA~*nt@fB9)2*f2I)k`u2*1)bHrJD`25`Bk)s+e9y(F2hZ(kd(yDZ;79&iOyA#}-6-`vJf=<9*EKTV)XMr@A?J}fPFHDW67^)I#Z$$Y7 zjvYXu-FZ>|FS}~)j1dPQ-(koMKxT_jR}6AZwm35^2^uoDPWt6{n2nf$R>!J?U6&30#!=_Se z?gw3^v@)>0S>l#2V$v%B%Vu{%PAKj(0H(s%+N2-BEVPzku_u;L*cn44RDDOmMqi-m zwdcVgLS&IG-%vt&H68+O*==&>N`{qjRq6DOu7gs#^Kk|0vHyruOsWyW!dUZ7lxqS3 zf2K)Fr1*Pzmq2@0D0KjZVSdKe0*FHkwk4V;lP|d3On(3nY*Vv_UN#Cy=QT;}f1K zrYNX0cfK}eE`zA1v`fRbfh$8PWCN%q8Kh-tLWIa@+IgjAi(= zb1&vvRn!$Tzp!-yO=`uCIbupHF?hvelxf{o*wr(g0N9%sm?7`UKvx7P@I#8M2t8c3 zcuqHZo+*+|L~@RaT3jHaPJG^#S-b}dRPX`-;yoTtMWe`Htac(QR^vA6%H(RAd9Qy< zJZ@E}IOER%kiyg#Ii%{6b&J}`77>dx#+Aez--K#}U^#|aiZWDpf(_QN45)z)Gz4M- zAVMLz6h}(6fP!TlW0nv}{>>={@pJTo{j6f#@Q#ckwP8|o7&N8?g{Eo>F2}%FE`d;j z%z8~B<=madn8YMj$|Pw0;Fo9*p%nCz=ugI`LMl=zo+N352JEQwB*rgiW>o4s)OKm~ z8LbDPyATE)fCig2Kny@41%=ej@`3bAL?P^wegt;_!wfXluo@1KV=CkwXq}c=jSI2B zX+UP}6m9d`L1t;t={rdYVhYZ7cj$*BQ1pzG%CG6SNC}ayBJW>mt7mnTWJoh7QG$Sg zJ%K`zTu`2Oi%K>TBKFS)vklANPMKS4dC5q$IOkQx#WR4)IA(xglcU?yrPYaGGqVn) z>JBTKF`Rmkcnz)t5TVBR^P<&D;24CyZDE7xYB6z5BfuJ}V*E;axs@Cv`f|4&+c(hJ4sVvm+HKH+ifCxqk6(xu zl43GxmR1^aCitm3#1K%7rFql0#(h}RHdd)b?B%Hh0RA-(|;>a~I&T5|LSu>#QY1X}6YJDHkM_2Q~$l=pd zz|nE}5oPs2OgUXNgQ7w}plMPw@*#H+jtD8L2r0}rR}E;{#4+m$bkwSH z5^X#Kkf1g5Wgc#o5UW*A(IjNPWAiOa>JfWQ#WD&pY*LXSU#Eio4nr_=rI-c8C>G_E z4yM3s$!koaAv(7k@LmDo7HkCw*yd6X!&tT4J^-YQRG$e88=>fkqG4>m%%5RbuQ>b< zjQwYdWkRK*%5jb&(6twXbG(>5WWyn9mQf#`ICle=4Le$k`dbM0+lcXNH3PK2l`R|5 z3Su-$#u83dihErIU9?#TAfj$3;z-shp=%IYgQCJ;RH0gjan;+V$I@c(8NZW6nW$em zs?kJez+M34b>J&wTEK?l~}J@{zJP@k0f`CyC)oTXLZHUu&KK;f$W#gG5AxTN8mSbZRu|?-_sux!H_IAfSR&HxV!^2nCv=RbrZNa%aHEc?=tHs>#RC+(yYkufz%-xRk++ zXmmtG;^jO%Xav#4uP$eX?YTP);$T0}r3QO!n%6u+d}AX;Vrq#WCf+2^R$)AF*p z@}=;9(IepQA!G_ClcD4WaCN2M=)Vn|FHaBrgEknb8s(~EZ971;m{VkMGeO;SNu$#F z01P0QvxHSUrXQA*Ysmq~U0wFGK6vHSt-+)T$Q_drs(1`tF<2FnH5NQM8}5ra(5-XZ zW(Y*vrjdBl78BfMx_Jz?Tr>BZD0)$STfx$Sn+&kqa6H(gh2w33)Py-$Tb)>V2RRC-~+0 zrb-BvTX(pdHrYZcALq-DTX%SPe^bS__>3rC9;F3^TLJW2QcS-lm_CDaAfF;c{0MUK zbn1fD%o9M?qH8+XE}9}#e?YZ|VE!WAR1*$BCU#(-_Zy3AqBSKd{Kb$ZbJ8&Hml1D2 z*sr{P>r1f!FxR)Z=hK39CxLkZMA=)q9iL#m#vwurnrv#GI`Frj|Gj zPR7N<43pCNLf0jB4wRXywG9EHVWgTCOhpK$!|Y;@2VT46B}q2FQQU+BkXct@9#!U$ zN^B`7fL?-8PsX1Rs}>5&3la+yOH{diQSJ*7^&=F*SRPX*m$kq|FjTSxC|s44&=y@v z1+Gs4;3%bhH&o;VX|1BNzvPRclNU{nlmE%C6J-hFs?30TRy%B3H*~V6eEE!Uw$T+q zgZ)Lu28n9(xxPR%Zy}YH#VM$4Ujx*MB{i9aQG8BMUBbMAS31>6v3t zrR^4ulaeu_Xpg`u{)Aw6ZmBx$Q?WGX00idvJ-%dhiOL}rJ+&O6*aCFr+I|R_l)0yK zVPH9f@PnzQs1+|#Z$hUyexr9@+W>@Wu(Gc17|>zr=jc?xw?wr1aii+i8rjh6 zn?8VzmbPMjEO0#%F+eT^GebcZ{C-oQ^1Ld70GHVD;Hi@$@ui|t>>G#j6s536LD4Y~ zzxYY$3@|JbJ{$~o0|+Mzs7bg%ZUD^(AVm0^0C8@S6gmtdCxK@wqb{uq^6gulT1(2u zQK2PHvU0v_ba}RpC9K-Cs?v7aZ~$857Vj>s&HL3&ahUfrgn=9Z6S~1l><9ZLD`eFO%rsmJNn1z~=f5PMWQ0u{*5fB^3m$g~9#agW)jxBza~ z#Ikb5;^2VY?@NaZ2ZYm?LhC7B1*Hm$VFTO%lH46x%sV4Nz+%}xKyrXh%}e_R+9R#J z8$gO7X=Ir81n^a8iIbt=G(~v+fQB;wm`q|j4LJb$o3IU%D=eXF1X?37y&>sfv|-+l z7DzWDLtdl#{SqV;?c&*Kp$$fNuS*bI1v$=)eD{$+OS9%a0NVgn_AiRB10v`gE$s3U ztAw^2BULxoeEyCE<)mU1UZsc#<^Gg5P88?PZXI%`MXN-l=?1j61Zd|o)tQV)T(P-+=i$!&T9I9hZq2AjiHgyat>b&O2&Df0!_0f=aSP(@1@LNEfC z`qz&4qs7vV$j~MIUNC+$F0TfV*La?IrK(!{#~5Jy0POI;zy?Xu9LZOqpXHS=KAp)_ z%9qC9Ti_G`Mosw+55xcwC}xycy2gdVY^U^v2y_Ng|BadSUl^T;xgh{^14vAw#+HDf zI{gZ76)RQ95O-SLq7RUkl=K0L=W@CXI}Zx5qX^UAK#&C!A?g~8M#*=-npRu~Ag2AH zgT~c`i+}*M)JDKCiAo4nL)k$LmZoyA=bdEkUa4+J2yec;br4XBe;za$;6=;Aque*K z7R@3G00bc=o6feg5>JB9E2WA9C!>rtw2C=S0q=Y^c@-CI9-_st8Q){t(F_?C?FNWU z;g;vOihb2_W6kLy!OAE4&Kxq)SPIUo(SS@>L9RbYJIWBn`+0}?6eUlvdG|iLoK~879NzCBgDyaIug59y7Cn2UAM1vxL}z(BTQcli%zY);KaJbcV(q-0H6F#| z_Z2q~$`LCbN7Z;B!z%6+mHO2Rq4ttS$ZI{bCBW;o_^q8Jce58#`P|XQaoUe|(dstc zfT(bshqz^4oIS*FAxb1(+6N$#vq_gfA%_|s001BWNklpqWm>2>}lAQ9-KL;j8+ zBUZEtAjAI4ya+5XN1!9x8OnEA?}E+dDg7pEyr4WgJj(20$iM?V1gaw0*~p8eD~MxB zDY69aY$!Pc%x=cq5MWXEMr2>)2DIo!;(^I*1r%))_yBn`}1Qe+sFk0#uv zCs3+^6Li<~1Vpvvq?>gB(0RX{4AGipN-sp31>RpeY$fE66Hzx(TbK8{O{k6ifSfY` zc$%2^FSHH_y8H(k{QTk_Qg#DNgsfSg9LQj zL{+rz0~Xu>9Qo>os(J$DwMf|n6d9r(0J$rs9DvM4t~Db&JEE=7z3Imgfh^8rZF4XEcBI|DaTgOJb>k?pn_ zy5-<4p6}nJn3k*B9}4v}9e{}TM;CD%Z#`s-!2Z?Hj-0VRZLUvC+70wIw<7Xj;ZX#T zE|YDqo|I`=fNQ+TRl|}e03+uZYDm}$a29Bjt?~_lVS_uj9rliwUi~K_f``|6(DMW! zl{6iInD&Pb`csv(qn#ZcBeou@XIT4!KkD@)mt!1qC6`ueoJvZ$k;A3g5fe6#7@=HtsBeov0>GglU zwKedT&YmY~8jS3jH2f%@B?mpN= zO#N6x6k1n$e_!=3n5FfOqO6t1XDLsqo*QX^l zfK$tp8Dl8(%_jSIp@+j=C`H~AsF-(Ex)soBdo6tcyDe%XHz1DVh>+y<_~>o`R{&^3 z0NDXhp#CX>4}gXGEl(1tL*whvhWf#&g$dOd-h68l_78cFMLQ$YF)4+q@>yYfZUAj7 zpq4&>bzr&y2!afw$o^B9bpr^$htM1Ved^!%5F7vvwC}1^hnCl&4FMK_v_uN#n?MWd zI$hPG?^;5a7ijiVLT4&-1A-4w3!ugE-P{m}N!)m88vjQDwEY-B^C?9T8~_U6m%lPv z;s4+OD4~59BfnejxApA;^QT>i`s=?UlSBQr@3{#9qHwts1oH8su@aJvO~P;m(qz zy-|#$1*1po_bOeZJEQ9@;!53sDz*X|L@W3Js6ciDaAfJB@dD78kjXm2Z^Mm~VU#{0b$ z5O3a0I-0ycj!6`8S|o4-3}gfW9RU2me?dUJd2_N-gdG4XT)j9=!lyR-WNUyBj;uid zGju1O1@`X{^_M7DU!e2=Uq~@go{;7)zfCtF_yBbQ{#F2{IH96A-n@BpN7Rvgi5flt z(*(hrf>1MpgbsjN>fd_*Pva|8c>ACo7Zh*W?2VxTaM*bVj-C>Pi6_wr)%FJJUp*>m zbwO!FDsclW`2ZwU6MO)p@X`%P33p85h(rn9ZSs4j381%y>TLxi;5Y!StCmtv6$SQR z_z+M)+bt!2G}sR-0~FxMO2jY&ZQ|8~{aa{-IiOfXd#(^eE-qRoHE2unWPpWb)OtEl z@BvH%Ig{Ul8xWP|Lq64qZi4Aw3`oFn0OF!>nVVAb=tKEj+&Y^-LdfPg{0cx3!rrLc zLZdMJ6?B2lB(2+s`3}Y|tYs^JI$1?PlgdJVyyuCr7>|{lNXCV^3xy4YOTw{KuqGz@#ZM%X!?XH+a)A*1K2$(_5mmwMF;ZG`XMlu zY5aEa;{D;5fWh!$O)(3fy1*w}+Xr5;e=4B!$~60Th5E}CRfoMff~rZtxs3oCs4Pb7 z(;BE&8VJubV$vB+VNZY!%n-c&XMDwIaN5kg&eQss#8Jfj4Lw;Opwt6`F46fRF#6%f zFQ3uCq5g58{$PZq#Gfwk#?Ur|JIjr{C7NL&93wEQVhcBBN(HmUyh_8N@hqU38R(IV4^eAi36mgZ^xS>CjD7>p1_*qBdiVk+o8Vt^zcdmKOpE9@ zd;nS>C?o8;sPQstPCLhdzg#tUvXZUX8(quLhX>OsfP4t zbvp?I-6H1$@O*V`vw{!c9`J9Y72cca>{l2lj~K`0L2G;K7&HY4lJ+BKC97Y;4nQ95 zPAZ*lzthGAl;IEiSD#uE?T~M>QR;888lnKN)k^?16<;pjgO{LUK~={4vle&=q^^^m=K}9tdotjGlMa#oFMtmtw^!@8?Wjq3WB67; zZXZA`yv{Kt4}k-~PW#FIWr526rS?SH7Hv&1oo>9-#s#n-SYNCxKO&x?JGIQQe?w$d zi~4Ikx=?-8zZSPUBsTz0qqZA>hu{O~!_y z_ESPz6HG@NAF}*Ch9m5s0fea~$9&}3zX_;|)u8?r!wDmhq3u&)Ki#fjP4EF6gTZ^Q zH6I|$n1O-(VliV+1~VN1oxp#BY#SmD`wz&VtvRNnjd#?n03cjgVi-2yOf9(vN%SL zB1+AUNsQP?@6f(9(@~D?s96DUh*uNy>rF`m=5CTv_Kyx-F7AN$q5_9ZF%DIaOXZ3H zUET7g;EffxMQt-BFktXTZ2C4|@&O`<4?y25z&5n#0Pxa&WYnkDN2MdoDqJJ#jkac* z&b2&b`_u&Pv46~YCCzQXrA_cv1evh<4u$-QQ>NI4svBTHi@Yh;e1LYH9SSgeN4Dbw zq)b{p9R`(~v|a6YZW&Ok1l(BxYc;KtO?KrFsIUr z0r*qPBleFV5Fo<2n?_vtYg$hct}SPh+*{EH0I85MMc#X1p;kUXr7+GB%_&I7IaN{g z0fat578r(h5N!5eu2BsCb7TMduRHYxZGFKz)cBC?Q#Uxn{_&@lN?L_X<_scm1Onpd zPTer#=5uV-8WxxSxd0hU6fYd8e94DNj3eX%Nx=C18c{*apu51t`eOC++ky1Zfy@5I zcf7#<2_fxFIUVBL4w({w0w}{U&i;)|EfwltQSuCqK&})Qcx{nqS8fm+?)U>>1I+sX zR(Hlk&GE+vaKKI*J^(#1^x+BO63%mPNOTQ)sm>(88E6^Lbz2YS?mJ@fMMefj-`XO z4?w6sfGjks790Sr*uNOmUT7yK)=q6L!HLEP>R(S(&HfYWZv;luesFQaC@MUkOLkEoA0YQvHHNN$tOJ10{yC<{Bo{2pm#im6t7of# zsJ`)m`qvhfvj2#X$Y?CnL><2Z{}s|xfok6Z|9n)kEg({7(FcHCIC=m)rR>9ua>hnW zJ^+du9+hvrILG!rKA9?)IY!&(6{)(Xijd(>{Rvv&=CI?fC!-n(|?8 zLC=+a0O=RxfK6tq79PHin5q*I2CID%rmKuK~paWi1D4FTyq@N>tYXkeQ6$14S zFbV7Izc{JC5=kaCq*yXPQ+Gpu;(Yn*dD}W?R%@Fz>%qlh#hXR44b))+Dq__8(Al z$WedYg@m%UhrmB3Vl!fCdbCu8v>zCZ<^`FMjJOq`Y8z}5Ktn-W!ZsP;=_|d_M=sdi zcr4gpB2Xui95!OgFXUv|e+@`~inivV)il1XyS#m1G4M~HQQonCMBukQPXA{R4EZuE zhSlG`DeUH?T0rt>+_gx;>V?f3Pb^i;`7qR6*TU__prv_5tE%y$GIAe^E``z&|o< zQ-6(B0%T=bzTbB-LU3A;+|22{uQw*n`T$CRHpE#Uz)7Qsn?3+F6i#slXa{xo0T{-K z9RR)2rKpW*JyHHm1i#?qHDC*Y{RfzVE%wixPJXd}_XGb%S9!`_vxY2H6rYmQG{gps z*+@zAEvu6pG`dU;VEF(xsIaSaJAklgHq8~5*aXPz9YiEbR#27Q0EQ1BZ~)*+DDiuy z+YvFV5I+{oEZY5gbSdL5piZ#D{&~~MIri^w;GY;`|IJ$oqDW*b(+Ni726)n?VevjI zpzK*o!0m}i6ydc&#Rnj?fUe4j$ZP_r>S#;Y-UJY+jB<%UDWuqZ>H}aI$8!Kso$Q8Y zI_FQ12KMh40{agzfXb=Ax>OO`G4Rh=_Ek}QFB2vVG`=a4=Lu*Fr@(eXn+TxDy^J$Z zu@AtgWBg$NW5Vl*YJ31v&>EN401@x!oW=D4n6Cjuv46E&@ zyp<)OmN3u$1#>BGSN3nB;V};Tk23!;T}ff7;P<)IW}6AE&X8He-#RH(m11t|4* zG3|%V{;^;r=SNX4FE_^20LcjDCiZ9oX{}Q-u0l^hQEATHh;mF1)#U;qD6Is}7{Wqj zTq2@T`E=8Y5)+r`%ZO+_4C_pb`ay z0y>M@GwsJjtCeDt)jW+27j5gFM0t8p0vJ|G#wc+hoe{*XiIp0omx*!Dp+XW^A{}QvP zZPR{m(F*+IZO)htOFNn&Bft8YvC?we)zy{8sp4xS=6u71)3MTk0$5S+NdE_Lwe|rz zbSmdK3sh5A zOS8V8K7ia!Fs6Jmh=mL04;$Qh!2bL7_4e|NaT>O12IW~^PUgI@E)$AA0P}YMpy0Cq zvMW<4UJn0jZ-^ix&{FdVecUcE6Zn_*9vw~lVX%KJ;I=xJ;2(_v+Ga?!&5-D-D=q`c zG=Z29LgwCZUHX3;O4UJ|)ogSB{KTIgS+|A|a@$XCF=vxCH$W1lM*;ADdD`WD0GmF* zPj0=15VCIV+9#fP!lo(*SpAY z+Yx4LOkx1H>g(%Wv~a!=V^pfSdqX__gcAuNz4ieb;6(J9&(IbG@C!)$02&T}Ox}M~cpXv!j`98k?p}yBLFnLi zfeQ791(nU3VMnr8X+N;QzriOl9$dY0^n2cU@(IUD)QNK+ub6Y~z-#dpbFP(9Tf{@F zSB@F^&Qqk!P((4oorU4UNBnZ-?*?AoJazgkqXs>+dgYiMw>#y;&zQ~&k`&IEa$Fza z!PP5AjeOThCwvBCj0$4vM@(4T1eiW!=BsbKwQ}`uhmROxNW~LRJkitBGk%|aetO4U zuf6fsbIO9o#nfK~E(ZP?_1&cYMS&FQ4!LAy9j@G6WD%1J-(Uzt zVw|C6oxv*PM8t&1{OBsGC7EgnZ2{}D4}InPPn@{y-W5BJ9GUnS!$*ub^|aG(zIpDt zwQFB~`6U!1o3M0E6{&n2lh&{Kw$3$v<+s#*vcDFbqTyhOiYYk&u-JbLT)G(UK~)Ik zw1L3>12j;3>aQ!=eA*8piqh!uEDeE%5L?t`0xi>B_W_7WHvmO)<6Y%?Qmps@(qmmI z?MKGAapMX{MhrK!;b8TeiZj%oG?{%=G9o51#Sf4}OQf)c+7AJX3`r3ei9R9hvsIxs zSCKA^bVSJbZx>+a{HV_ybAf+n(|!zQ{8OasK8CS)!Mp<}?wh>8=fH{kUUkJ~eSP#~ z-{d_%hadd08=b(xE&bg9lM)IDY!zVS&NUC%VrI_*1>Xj!SKP#14FeBBQ*wZyM+I#n1 zT6)=|n7*#(sf|4+pKx5)u#T=_jr(}=dCrx&$E^GMdgoku+1`7+KRJ8y3CBJD*rRi< zyo~kEpKSS^-ZSF7*Qe0q%7*v#^+ieoUP8!6KC(Zjm?~@#k|Mb+G2x;S0HYue13-ky z?*Py?DVisecuSluSmOQszNpd-2;{T@Q|v#W{!pR*Jg83_M+5(i`W^=U5w7TS&p9i3 z8_%ReClf+e+_&tJwQC3=Uq0_^$}$(uyDfdg4(&rLW}mBJ#(c3EsouTEPZ&O8#ESctee>V`^=FG0F1~Z=a7xs(7|uKC_*sda$+N#y z^!4>lopMA{EWwgR^Y34N@4<&01}Q%<&_DOa>(;G(_?Ihx2WoZ`X-xX@#~%IUpSS6-@okAp%2;ez=m9{*WF$e1xZPnfXpnl%sK_@CD=Trhvxy({+21lnhxbM}q@d42kI z-P*Os9DUSjUpRxWv7jPFPtS%M{&T~E1@o8PyP_PjAo=>z>v8h0P;BlE*PU|unLW?FIPhA$bj1T*UEPF` zOE3N=%dmzSUERO`%ePq@=w-`Iagkm z=v}(vfnTnAIMKWJ_z91!Tl4LU&X1durTj0!isj2T_H0@Vn243B~bop;akJ)+2BKmu89$B|072EUd3#XiRW^(Y}Wp_8){_5tX z%YV~o`>UIie^gO1A-#RQpF3{az(9XjSNBb~-1gF|n_qf$^QzxIa_qF3Ke+D3q}YS2 zS0?O#@9`5>{q~Wh%)+1keDs)|2L}2-Ir(7LR*Voy!g}FD)HQNVjx@^wQ1lvb*o~_xZg1!*Z8< z@0l}mW}bP@oY}r=lxW9XE5VF?2J#{)73Cn^b_S^pWCGaLpT$|heWK%7m#G7{Bh&`@ z1!Km;;A;e|eeqcv;Ap~rm|uiCv0|sN%ZQ8C94w4h8`VvZher30W@a0-oktH-Ut^C> zOpuYhm^(P58+zjlSSLe{^MI;4p^OeTE(Z(pT>((R)xYm9<68S-7yNQzkaJ6*M*R5w zFZV9)wdTv_UF`KDqgzE2cFuGKFo_u0C(HM~-55e7N(b9b?^%fnnV{2u3nP|q#Oo3` zlY_?M<#u5Z2=KIsIOT1ra9Cvp*rWi%enj}*=%DrQgsuy!pAX9x=H)}a=5U#|HE_DY zDbTb>Wprwc+pnGB*PH1?&Ca@jg}RvqK4Ir##1&ls{yTOrC8a7 zTtr`k+4k3uk15T;SPsPjs(D6nH*+tw*Np+UL~wjx`>P?E;Z#b+9sU+8_~rXj;h2*) z-jC`fw}@I47_i!~1VBk9!n=_#2f^r#j|e$7pF1x-Dk!$M7B%HVeFXR&i8cQKhB??> zYbu4}H4E5sFzcp}kUS%BYy8+qm582h4|dh>N%CRi4VrLn<#f{4xYD^{J09XIqfPL| z+B9&`M@R1JQW=-s`g}u;OED<{^7$)cz-)!F5|O0uANFUGjd!<2zbRYn7NQ47?QgO- zuUj@N0{|tYQ=GSJ2tIi$xi!&K*@7heVz%M@>`~mHk6?Qkg~uZ8*o*C7v$nkwFh5H6 z!eYA~tAjaeMWlZK41%x;OK=177te7Nd~ecPczKXwI-Cc=bBPm)v_@z3#k<62j(j}ora^u@##h{JmC9w6pF6Rey&e9W?9#i ziPEK9`u2**-}mXz3UY*LW(bRlJ*f!p3a6!3Oj+}B%NyFY4jyNJk~wsEaG-@hmYE*# z=IE4?lgbvd7Bo!6t|N1%oRs7>Qqyb8*&D;05U9WYNR|n-d}Lv%Zp66!xG1O(%iceWO;Vs;PPtZ0>^?3nm&?) z&wjE-!v;{1QauXr6H1hi=&26CBjg}?=Yh4B;o6=>QER<%x1WRA+Pi7HDBQFY&dIZO z8ob-s7}vS`V$-+$J67ew4!{G#oNIpPXLWRU#$!T`ntWtlE|&7^e?Y zdSH+#i4WdKxjl$LQgcAnT(a+$6h# z?_XexjNNjil(eKl z470#!!`%6iidr_`J2{l@ROBjZ^@d(AKFpfCosk z4^yfLu)iRHM+B|2UD5KD>elujuB~p)Nq=SW>{3ZJai8SYaXD<>`|S1%kYstmPJs!e z667p82HQ)z5Nz23^s?5n&ZzNd6nv6d$3_PIf%z89-{M)C1fo#=%A!QqtV90%!ZG%B z_N0~f>U`Zsl@8eSMRw9OdEAPa&kFX7bDr)+6Z;)6>?Yv_#D&66)S&>E!j5oX*f#W7%}E~X=~!J= zWYB4m?ChSeu}UT%pX@sZ?&1kMl(sal9+YGXIGnbM&vHEGjij&M!jq?<{Dahj#+sIa zNmXy2G(C~G;D2|xrY)tbu076PjRk=+U)|z7DK)6&bpUfaB#NNsp8r!rW!i<3qWZP$ z7a4?Y1O&Lyk&`AYFI=0d%t$pSe3|rf)X)%%%hRDNV?j<)&JR6x zq+o_#_8i>yci3-hU=FqAjx-eq{OZPA{Ei_!3dmyd>yhU3+E5W!$dW-kJT!p(122WAl0pYtPbIFMUo;|?tbsHWf!OTI zP+4wx$SSv?y$1jRz=HR{>1uMWd727v zd&gfTxZ=8iP^}{gAIRQ0;dOV%5CDq+c%JmXRIrMMBkY;6|9Ekn%m)C3jihD8^UE4P z_zh%-ho{F!-fLH((>eU24;lwz^;qSBvW>(;;+I%}S(^68{eDBOEI7F*V2Q%Vh(<9q z6P4vpm#x-VPbP(5kb`fnSQlMVt>UHbfSC(M9EuXL@0#Db#NEmE9evlmc>ktYGt1+4 zwKXOuoF=2j9V)Zf%hZ=@ZU@v&>G){$~Yz zVvx1n^@LrMT7I%!x^X7!`c+V@E&1U@c6B@{;SkRC`{o-pIQh=`G}cP4{sW@6DzN!1 z1xRCAC2vxeh}ij31cB^+bx;sT2fXtygN$XVyMU~8Jl3)VJD(>GdUq`|Rx!43dM}Y3 zytqq<=k0wRYExrZ$1hqGgiL#)7Q3{G*BQ;5<00kH(XtCzmf^c#AoSimGfq5Y)Rf(M zGdO+^;srY!K51<%FGuw^u12I`m59C&r^{K{CZ%~T+z6}$9TG;69xtECF6H>%*#-EE zKX~weT~UGuyV1d>zWkq;Yq7MbVeKs`91LX6c}M<<3a)HNQ+ z`($x`dQGh0Xu{o|pSpcU7j(YsgLv9MyN7v`=>?}vS;cnNOxa!E+;GEi0uL|K|7ChX zAgBn3FuO2f@F*reOWYICNN><^OG}HGr>(Zs6^VwSj60Aip@V`3-9W6;E<3V(EHAu~ z&w>wJXGE<4Cw5a6cst}&sgr|u42R1heuWzl&It-TCv3rlZornDLb^|OwYd@?$s1vHXHeFkQXOV-K#w-xQD1(e0Uc+^xEvzBpdE z1iiet!Ya-L#4R0!%)n6axsGfDCcwDf=zuqY3mM{8JjkI()FQiZ*1JnPA1xsL$-50p zaG0|Dr-zPs&T{91#F)qxji)u=Va$tX{znGy zE&&-)$oKMLFy4dyk@WsgpM2u!>pT(YLW6ao8igyIe6Z{ip@FV7_T^CUHFi)>QT<#R zwBHptXdtYp4iv4mN#3kgwzj#QJ_>!9!Sh^}E!?0ujHQB+>n~c@LYoTMH763O*-qfN znoDv;I`BsaGLlE7>wSLqP+|Gk6Se=|bvOekg0=>tl6L=$oBvlFKdwXjgl|Na4c^fn zYy|T+-n9ucJvDwCFA0A5Hu6c)%nXB5mSMdKz^`L5U#qAU&4M=h@n_5wZxjQLMjKhN z!*7`N)cSK3^d6GJ_t^9vs_3by5wdgno#-Hy-OeSRGC9lOFTbEmwoOlaEPH>sd!Ry^ zXq#XDkrj4!J*!KcVjdz-{r8i$E4Oksi}oAH4uil4VZQjZ5S=Tnv(k8NMDT{ZKhv(o0)Wira6z6Z z-Rm*hkSHz66GCcwB+TyLHCjZm+=3_oqxL^24(tg_L%y8_j5tPX$jOTd76m$^k-%;Q zwPKt>&{rM)^$BBzH|u6z>2@H{XQfq00H>FoR_BOM`~{W^ij|LYsC3}iWbL(GR%8B= zpWlfg`TSMx^@n#-4~sM1|0xLI*p9dAC4n3t;8G6(AEpG12S`aGWT|7vMCN|K`$#iH z(pAU%J*^{XFM1fJM%29C9pkb$1KNJ_LuO~yw}+)Q*xhmmT}VPZk`p*z7=po69v?@) zK3xfk$>beEPbzv60tG+gofs$F-eBUDec2H%!*!hpb9mV2lw^b$PPiVoo~lI-k};Bz zsk*A_2B7x<#^o{W$v@u1_4W*M_B1rZ!dilj(S6*Aqg2(86{>&smqhS(^6MOLPJet( zC-Ta?m@4G<_NodpGgY_odlPK@Vin*j0CJwDJ$CKMi#GCH7b7**GrGjsyysVR5PDUf2*MDE+dL!~`j*knRoPcsPkbh?{3BjZWc)i!Mr38%PRpf=Qdq*v zNX_hkVV9e#J5!|pD95*!LFKjA)|HypJPm-&*qPiD&To4M0cEd*&&ef zAziWb=ZvY==Y>Bj*5N(8?K}>@+E+=S`4MuUVI2Db6$J}y2fJ4xzr}yN5p!Ij$?W); z8VX!2&vtXc1L6kfzLonFb@N=PG*k7jgd~CFR%U8UoNZ*^`DK@PX>=u6p>U8gmo;Yk z0aZJ-6ctTh3dzMmLO(EqaMnX`ew5=}C+sMrE*|+GHJx%9F;y@BRw_Ak-sj=VognDC z&AU*BF9On_fkW1}kEUsc6Ml=lJh)E=y_yFn<%3vqgWo}kXiRU#*3rKW_!dLaQzfvnOL=sV zZfWrhY2RlRyF3p%S16@{i^UR7L9P1hQ=zx(zsTh|s6s1-r9iV*So}QRp2J@GJr#zs zjy`@k`E<^cZeh4i8`0gx@4uy&agm0g{{MRKkBUa|p>X4(`xB@`zJ)7(yZ7UmY559= zh@EntP@Nh2^aFMg*{#AJ(G;&JNTtZsl6l1Nnh+jeFo1W>3T)OVnM^)S;;+iMdG6dR z&;H9p@zqa$6zJH)*N2}(mvDm6{s{Dz0@YaX82aVf%Si zpDXVDh>bRKw%V#XhHE!9JrK3aM0llH+RTDJD zPjb+uy&dXVl#-zO6*?ryp#2UV)Dy#=+9$w#4EW1lAiF;v-Nw-;Xs6DsjtdHmSGI=p54@X^|11YswMq{FFIxhBTQp3|n2I7BCRXE*lm#t`h^`Q{PKQaaMmG9%^?X7PFdC!wmcpY-b?IS_ja)eYW4C8ux5M_!gku1FB^ zTP9HR`|`;>cR%~ijj?hJ2eeyX&vR-3P+67tEcPTLC_ z1_s*re?B+Jw?NlZ_Y~Lh-p0p<{2_xrM;V4w%Wm^!9?J9|TQW5{I=J|Oe>hfo1V{gQ zt{gyn>yv^s3_41^G<2aLELs6o27ZLiU*dFnAPC>h(ADF<_jxFH3kstEx=mPPUXZ8y zk8Kzm(z`M`dA}=nX`L(q#|7f+$!*_F^v=re_J`1P@?PiU-+y%fh?akeD@VnBf3}Y!;HB0ua{=&WZ^)ydFq6;)t$%UBz0KPX0W zIRu?S<%+|i3;8RC(y=^tO-_8aB4+eOUgRo|0B_%wHY&3D{0qnfS453Q&X(#`r`^MK!Lmn zbEAucLpeceOQsdid|y~4^pDlEoPI-=-?xq{k_f@dqxs|yn}VV(;=_l^Xm`0=Jg1bl zhUxVLTyb+>`3#J9*7kJP;iUKp_2TI6GjW#}EcY8#M)9lZ9DDSU&_pZIkXc@|OPu8-4vxfcmvp5Np6`7e%b^%QS%t`?Ue@4{umH1a+;t0)1=9%=}J|$=hDK-@|STA98 z=m;%CR4oaAX%P-czY+6JaMQ^+H+uQYR1nd2>p+^aNox39r$E2&VqKv+@gkHR$}g&m zePvN{!`}l%Jm2}Rqh-sC*81G_rEtap-eYH6w%dn$t}o~H6F#Ta4PO=MvF0Z4wf)ri zQyF!^4~-LtbB~`SM{{lmmmggK8^=*1vgCIemTuy@gm9hZ#&5(u5xZ~JYLo|M?Vu?I z@2|>NbTvyP#~T;KKT0Jq1&HtBd6m^c5DY*CZuS;3-xS%sl)+Uhe8O9+${|)-Q36hS z@M8p!Gh}j?|FAPRfXba#0tfdY8y)U`5QusmO(jI#(h$~6tbh&} z9AC1!{~hN%e^8fG_T{s#Q3Sj1As8R?)63WW=$7TS(eYD{hS*;`iUdZB5Z>W(caNRh zV?AG&Kx&?AoGoTh0XZhZ2UkothIlw)H}si=RL64zi{e4sUyN63NeapD)!=S}_n7}Z zNE=;e{$TY;*%kWPn9w@C!~~V*YAPs`#zvy0>p!%N-vU_P#4&r1OmGy)_|-Ysyq7OR zm1?y=3?YZ|YO*AeffV835|h^aF~i8+9=SbjB-7QF%r;U{_b;QAJ?nN>5Ae7Krg$k{eQk87}Z5{<>ay(PQb+t`HAzTRG2 z5$Ceyx1RUHGFhM3?5s;)6*JmRSU;THX5wzWVf@JHETkF6*6xQW%K&{VW`hqtxx*pz!eCa4A%7CfY=G;xBJdzmZ8|6Sj}zzNS}Q=Tl!8z2JD$ok@2mCP zuzV?+S1(k{@15UQ)z%4wZICrazw0XzvUoV_45tTukt07`%cGBm8a?1yr%5Q<5W0FR zpNokSN^P|X@iE9XWi=>)=raoT$>13FPc={YmKK!NB@{0-2VYPNAV5GxvB$KAZTK{V z4DR`I<^z{sIjdY7$=_GqCETyNW$myv(&O3|L!a#W9(C0{=yEL1Coai`ei(Lk#-$kI z#7Wb^ozSk{wvwZztc9B3u`JmQ%_ZWygSHkR`_R_mfSHn>nfEc1V&kY$pX4`qlqF!1 zSUt#Vhx;*ak{bv@-WwShyVNGt0-dj`M9kOz1Wji0lvp2kXfn?$fH==0gVnbeCoShW z2!RcR0^%y>HaA#-gq!548ABd{ar@@tv|&d3@!~W${)c3L=cT8= zt_E9i$i5cipeBc~72cm~M?UsH4GFI^&JMk! zos=xPvgOfw1cpy0>lZYlp1{o&H1za8uYk7t*`2v?*`MM?jk1Eg41p6R!uji2(i=(j zLfvkkSfK}?fy*otaASZ`f=1nIs(QM{57+>zDbHUQcvo)fJr8Fob_r28KafhKNuq5( zY#FA8KHf44IS1HJ zF+BghpNX5!x$VJl+x$GlQm>gWweD*vE8*heI>uuWOXWV;ypu+A)I`aKQdt854#!wk zhaj7NosyQCLe4s9?B$vQyT z*}+i<*~7aSIx}n2g63P_J12u09Gbs1zchgkTdU*AjVLIpS0KS2={M4=<0+$4x`h6s zd8lbtb7#FamnU)Kr%)&q~F+hF*p z9fS({OFFOp3h7<>tWRJzAs|3gL=+T11HhJ_}?;o*u6(_fE$%%-F+#f9mfn)~#yc(jRHl=%ZIi>q9J$TpV@!5oW*iO_% z$&gIw^x8Yk_OG~DhVRTdr#Qe*9On%+P6-)Kd9dAP;iJXput?H5;3&gAE*^Y3@&@95 z=~<;!9YXiCr_V6!-JisJQgp%=W}37-IV2AlNIMv+Srye9gpPH zP^Dzd$NU?WHgM)Jci0)X1+TMO;cOHvrbXiM4Lz4zo|TUgxUt)Au%zo`vFVxg0?11C zU0yaew%p2GpiUh80D!OahvvNx)f{RCOq^3r8sV{Mw%7I#1$=C`8`$YP>1;0YE-7v$ zOvHej*yPFnfE&4=yg3Aw{KhoTzUfws7u+Eh2VBicjf>4|(1YO=)Ai!7P0Y9-lk^JzTUX&xxzVY*(kOJ94 ztYtK(sL;RJU{iQPt4`}h2$DeXRzs9dOJGAF*`-zO={4p6&G%F!l?(;46du9O#3jmJ z|D-`v(!d-l${zmj25Sr*KsD*h*H5q22YdFjaHjkUJFjHWDFxTMYYhqzVph_({|O|= zIYcn^Yrqo#m3G))7urHL)^FE%AZ|q=$YS??x`Mkj3aS!V!_&+A5!UnH7%2dWilT_d zG(v!W?vGG&{wKwPK3}32V1g@e@9lL_h>m)eO)U%G>!PZO@_!AnMo1+k9(KCLNmI)L z0_A$!AL8v*{Ng7BWi8DLAc|jIpJ=dt2LjRA92I}-{#?v{rF_bX^Ey};3#?bDxN0Av zF4rICQnt!Ri8OycS-+A5s(61=PI(5ustT5vkP&_TlhU|>%N7%pfqh}~82eCgpV*dS3{vnj}s5@<)P}KIp+|<&c|n0y;>!G+K}U7NuiMj1vFpe zFVasMfluRVnKcr={HKSI>OMOZTCu9M#QdP$sq$k-`(H+?YBDUjsL!!mwHnGyLN4p$ zdCjXju##f!s$U-v5tUHqNBw^FMLx^uvH`P!y>GPH!~Y$(Vc};ctA;;6jy2SekMAgQ znZmdZ9~|2I>%Q1v2oe=)d9pWuIXMB^2=Cw zEM$SI1e~IX&Trt76gs;9Vs|~!)ArEgOfXx{tMNEKb~S>c7SpWtCiwPtDyWK=08q!r zUF2#(Rgg?jCL1Dwi7PDdpd?Fs5xXMoO&)xelQ9Rr8TyYA`)!t4EO4N0%3JHV+!D6W z@R8g4yK^{LA|7&L0L<#ka=RIt%WTinfj2zILatjWVF{~RZf2^10%#s zL7P!}FA-PcF32%i9bRe1FX5Z2u40GG%DinmHx%%ZD@^8m&X9)NdQl2z%K30 z{J~$bumruH$p6rdXJHAfckpJ|9lHLdRV&1I86_#c{0j*g2dsuwaQUVyJJr<$0ds&; z>Yo^r2c2N=j%F4}FsVQ-({JW6>{bb_M7!S=dR&iWJhOU5i#ImNb^U7$#`1+yd00t?MF($MI|AklYgV?^?`CemK4V>+ z;KsFU2X73pdbC#|k&)sZcatZwNlg1|m$Qf*CNa-$?~A!M_pAR*BV2{|PRr-Or&}5? zuYMa_ES&!I(-C-g(QWglAFyUw2j`pKH)hh?vsl0N!PFstV)hd>Qt5pUU_ipacfjk^ z_yfojmsB58?y$T1lPje@Z$a#NQ#y6S=F%ey3SCcSs)r42 zcouOO|HL~hfPE!ENrGw4gFD${7RyyNqizfdl|G<7g5AU3t2h4XY;9P@RT(ooS&60) zIhkJB$@(FU>DW*rVh7fq8Q_ubf5-vexaY*0BWc;{SA3lEdwgOetdf~Q zA=@Ic!5Ch(nnLdEk=^Shj3>$^NBYc1kw|i@?8+yzzW;YtW4aIA6)aPE^-KW>PSPA4 zdQ81g?nVG0yPigGU@1`JT?!HXYN*!$7$PQ~X4S9okaTV@f?GwSoYoG)61doT0|NUi zyMn4Ze%jEohb5@x_}L6KQPN`n?gMt7E}Lz=dgJO}x9*^hE}Od(6C9EL?kxH($uVH` zKU42RmbpqHu^oWa*LDuRBi-=GUdzfoBg8C4Bc)%^zv4k?q8Ajiaxqlf)mJ~t+?1E` zbUM5MNBd+`RmL9^CLN6Z8`XR)e6V2r)cN0dw+}v@K2btr0AZC#~5>5YC#q+?$3qG{3|2vOYHB+ZLnWQB^h=n_N(v<^G$c z2j+`12ZGo}7i1-1iqVa?FGu8Kq#?E$5w~{p^imVhP0++Cj;}g1Xn%{<{ctTt3wKkw zA1&~>(_?)t7>mD}^BJw~qhF>qSU-VaKaI!Wk510X1p{Uv*FGnm%#{uV1p!DtmWlgX zhbSGk6Fx<@=hpUfmsaPWmrDfOsYJ7rfGr!fdTX@PhwlUsSpE?D`nE^p}M&`E{FcKaAgvn}Q>>nUG z_J{Xsx$(G>aEHkN(W{J9khhh?DI25ac!%5-&k8)CX2`B(~QD$Ziy{Dr0 zyrdvh8Q9)uW@Zkfpi&7-c4k&|kDLWg5eng-@0t8K<# zo{P;++jZCnxSL9QD7E~DD87j}!9^OlpdOjAV6aWe3&LFppfCAWC~Cbd=JBaqe+Aat-E^Ki1Vg0OYcG2&E5p)_urx#$G zLiTy)5@2FDIbTHu8EHx>%xROXp?}qHbZ_H_ zi4M(0IAwGpdHL{MOXBlzi#DCWJYelTDCsNZ;UCN518@afr=&7j6AnEq8_pb#E-_X* z`)<>6fSPf39)d1`N#j+x5buQRS`Mr=dB0cD){@b*@~vHN761}^++~$1LU-#?YiUsQ z;hN1aX;hWXIt*YIBk1i773$d`jQ7-^csTxD0M59U-~T5RvAxgIh@3n@jGY{@dM57H zi_$8J;1vYdJdAvLZHzif;DK-%DUqS)cH3G6X>H50B{l>JVB24e%iE<7SlMi|MB_E7 zD0*?*&Xa|K$*7 z98`D8smv2Vt?2d1IWv1TL=N{#f_;P;Z+aK@m5dnJqo`Ja$N$IwF9jI0Sc8=NbLBcD zerW_XM~K^CKi$8Z%Rn+3RES`gl5aFhJb6#ugm=|6G6WB70rLQfG|9=EyvJw`;*=Pl z$AjIZ6~ggRJ{d^Sdba&aL4a~iUVCi_otbB47{|qWm%>sM<5R`}%LfHU1%Xh*)~o;S z(~+))NdM#PS7!NyFII@J%O9yh?WWCZ;#&TbM+4v+S2Hg^hbXrY)XX%V8Un78{;lMK zi`Ar|YvH5Ujd`UYx|SH}FZ|RYZ!wdVrmF)VBWon_@3vT_K&J*K-SHQorvmDxnFQj2 z%`t=XrDH&p@G&c0PkQbY+jH^CwCd&NQyXlb(aCT=JrJ_-ZhtEge34(Ky0w=AJ(W7h zx!ZKUxL-|iTa|>gD)Eu{6?<;hTWDi_(xmm-&``?=Xj8=6qttWo$-b=Wr`)BLF zx(R_p^ElPt(JLR=PsgQ;Ys@!%26D!`J+b)_PPEBQ2%Vx9%II-71AQUYVAA=7ls;iq zk9wiU875xSd;Dv{>aUdksh{1tyeqWhVn3^_q5Hlw0>sSak$^5QwdcGh7hou@f#~32 z<-+eM-}zd{v^eE?kf2HKtc*TrRwN~!Fv?kP8{SBIjQd2Gtx~&^Ixm=HA%QzXKtH%v7w$?C8tl5GffIUd^~)C$9GZT z<3^RnMD-whw+kgzg*K{zv~`d#El{H5kPNDaf2|V|NHNKO?Z$Cx4s_2-+C64C8l!ou z*JNre9>*O)J+(}4D~1o(iOe`;9b{0FgKEunM^s*WeQ(2WAqV+@mNPj*&~`CMfZu;s zE#x>Bc1PXhw=e01Xi`FN|29-ZbC)%XjyMXr!eGn~i?N>f?kPTr6Ufod`&^g{BDRhK zAF~0?;UoY$bOZy`brnPi)AT7}h)qlqvs&B(e`5apOjM!s7+X=y#mF@EVfKsIC~nvB z1+ctE4^!L2f41_ z{e<>uh>wBXQ%9ED)S6t|X;z+|FDiewos<{FedZxEKygLycFk^2_BQ64lKnUH^+^;x z4*kSJuzLmt+f?WuFm3TZ-YGMPWDxwQjND3Uh${+dhLSvdLJdb%cS;20+1h5g;>y}0f737{u8Z%99e7; zI;<1+%iTq~6Su7GHxuk}RBd+g72_uANGpu?%GXXN&q|TM<28DPpDzXMWH3fjeU0!|y!zGx|3~r> zn{?pccV{!drxf~2_;!}?`Xp5(@b@SwIfAB-Qr0DV%&eDppd4#76$0W2>`u1#H42=*z!PSo=NrBx3qL9OLACr;N(le41^$WwDu#W`?k8a7Q z%^y`(L$Cp_A6?mWi@Bu4tczHES7vjs&%|3tM@hHd`KDfnW{e+(C7yr6JyFB|ynrFV zxWv+!Mi$qF;a>}W$w!2sL-ov$T?ulJNthof>z}-t04+Xq{dM9z5*MyyW^7pO<^-Dyq&6hgC zO$`6NT}OYIPC$l68!^;S+}>!giag#SycUdqMdw^$@2T>&REKb<(>0}3IafQxjCK9+ ze5&Da4Jh;~CvI(f*0u12AHQfDr~`S&EZn%4!}GLyd2Ng%tjV_HtC~qB&tvs#$(25k zvBewjUgGW>oM(lg!6WD2Nqo`9F_zS24!D1XE3=U?PhVK(Y1&L8I#CLzG05R38#EO^ zkW1n?H0-B>B#pLE()JF~O~)gNs+CWKqtfvr*+B6A~>uR=>lQ|j3_d_zIJ>vj+riLmk&`^iGa6d|gay$EY zB8U%JDO*Gqt`_WYPa<*GeCOt2Ky!k8F-_*ks|`-zC`(L28%cx~D3I+=4kZ6Wk5FC; z(eLB?8$&r2Y*L7Erfeei9y;}Jn9D)Fd1WXLMCg;OSJwE~@$oNiCd+A!q^w_Y+aFw) zyW#3OdFRsojA!7&0?mMG$yFX3U z9AK$k4oF_ExGB46gJi;ipR(h{gXwlOx>M`Zm1p)v<{J%2&aTXEW_e}PUbZyEzGS>* zs45t7VU9lE4SH`Cjzz9EVy^`&=j*Kk5?&b}t_cpnVeh_aTKw|o^qoJYvh(VFRfaL~ zN63#1Yi7ZyAL!ONBW0j$HKt^~7F!aE z_CFdVeH3mV_%`eBlT*Q7n({N{zY_g?pGAYG`gR4HFGE4q@cm*Cja# z5#|W?3}kz;34#5s$?FOUr){%4mL4}ojl4o3saDKE>xGmxzx2l9zK42d9HeqA*SD}LDKkM!z z4MK~KWnYZ72Y9>qW12rX8S=lobv>KWH#B)G*+d6o@x6TlqGMpXMVNvYn>LyQd`}7(=GjkjfrUmNA49{Pq+x+Mm{FtmRWxski+`{z=<;g( zb{N*NldqEcrRuo(B2t6ZM7sn&Z)IDY1G(K%H?-zw zdGTgv8}Y77Eq?o<8Z9F91?KFh14`sFh+7fM&WZKTIwu2SbB@$u0nG8&4=sv3Q=}ll z_NI?h7Y9|h6KW`=?E_NMWz=wM`~%XJ%bdpjvg5nKqf`@r#FfPIi|1aqtLCd05Vz*R zTbJ7exc9dqIzx&S9Ru8@&u-Hn4?qnBQJ$U&$Ps%*Q0< z0_)FWWl2uz)LPCz1< zDc6pz%vrU3jjCsa@!@OB9$gBW+>}OfouvJLEdZ@}B`t$%JKC;gTHo2pMj zMk;__p(-fT5TGfb#s{Hpj)FW8wZO_MxrejW%&gSFmAU>YYbb?r;@m58WaRvYjEd)4kXo-ScN&Q^P`t1@dT6?}c#(H>B{a26EclhFYV zx=#1Uj->}2Cl9B#Hv}1Py_Xl}m?V$jZfnK)(@KU9{lh3}x$Z;3*7>s2($s4q8#CC0 z!OQvmuteO&(al7(;&0BzHgVz)=9e~ceC)&vFxxkZZag6gU)SobP_z7kIbP?+z?nL3 z%&?aaUMES$>=MmF%l3A9o%XfKCT%5Zx*gUgoxC5sbSNr^h@bO&<1v{(T#3573b;A! zKsWS4P_%}0-n=CQT_=Vzn4f}ywg)MrZqn%33qju#1Z~G$-8PwmwxH3WgiRs2>eer@ z$@m~9d&x(Sg4Uf>a(!PzlLF?3$1&~pb(YvJju+wY^y&JuzD=}BIM&$^-z9J7J+LRh zWXV56Hh&r({($^1?w={FQOM_3LHZK&6gKIFVY9@5LPCJ)TJty{|1{dTW}6LOr=aC; zIRsqM(PB-|%#;rOF5O!N5aj2X_F3^|8#YH(m5;c8T)v#eleJn@mR7xBP-v5SsK!Cc4G1k`i- z>zXfU$c`sznUfMv#E3cX9DM02$wYSW9b1dy$G#e)7JFNlRZI98!ON=ucBtKK>Fau= zN)38$Wjg)MIeJ*k$>&f?EKupu>DkY|3!`R7uU8w3zT4pS4SGAZz8yyjure_DTo)kQ zUbk;9o9!>Od>C!L$<%1h_~L)N|FqZ8#3ZvM*XPmXbk3khp0v&KqVHLral50R8Qg3o z1`LK3Ii9P{HOy%>vGcfoK})<9j5X0oeSOs5s}F86d|NQP6tJ)`4IgYFQt|bo=d|D1o^FrRX>c9=0#TlM9i~JWD*t_FnL3-R(OxmICOM)GT>tXK z2q9yh9^LLR%YHlf047=xQ=CSTngtwOzQKXNHCf@mH}UTxjVL}aOv7=*=k1N1ZuE9P zUc)mF1DI4DYBgeeHxeI+EOo2QnUC8ZCn@)9rq5rAL(Tdu*6JnZzG16F|D`~{+S6J1UuE}ufj!5X5#5g?(Nc?F zpnDd!$O3|A$GRQ{zuxprzpL^jVAA|pi%yX?CRi}|TU5Dy+opeCHp==U_22`Y<)c*j z9%@TOM8p6cz{WwBrcv%+iN*n_M?`ak{VN%T+yN-yqaY^ViUfoa&ty}QzQP5{FG;mKICjKl`_X2n{Sn7#&;@cbpQ~e zr^pGY-QhUa!B=*3y6KT*R9@4GEBSOmZ;v0751b13cB8YV`JNvEFfIZiSJg)swEqqc za+YVCLC5Ib%>x6q|G^4;#%Z?pK>~1j#7I#KZ_}YRy8NN|%6Ms`CSJ_w&AD{J@iX?h zc&ybXU6s?wyS7R>p*i?ZD5kx_4k*yquoZ+GYDQjM27|XE`owe5mTcpb6!p9;OZt(L z4>I>jN3?{Q$e;jBm=hRH zhHu`qoim`F>)_k9hZPY=5YsB{Url8f*!VGCNjQnk0n6l#Tru`U1hK_6rDZ&9zrRrU zuCBZep!C#&Kp_&vZIDK3e-Mb(o zi+qbQrRiZo=2`i_QY^A^`r4W%^3mw4^(FRV9M(WRap`@Nc?*oGr&JKx<y9SD(1gOMXLjAt^@X7f*tGPMAJ8p4Et`Xn5uJnC%iZ5!;nS)5>uZXZS6(}e zsa)7^C{XXq&UA^$vQ2hOd{IIvC`F_2UT_~8=4K}h;<*T`-j8iGIJV5be9juf-u1JL zbF~X{OpZ>kkKSeDM_ys-HJ@BuMeX)^Fl6CTE}BH2bGmjbdoi%jYH(mNa!s^CHI==| z_8DNtI==7yArukh5OFpRXwr2Aposq`0(v2Hl2S*tdPzlPT6h!4iTuQ?gKv{IEA)9en3Hsu!+Wp4crm z|Gm0as$Jq)&;g8c z^td#1f(=`X7zkZ#HA*>wILCy7;nsRgzB+aZ57Q;9_UZ~famB5k0vgeY6G96KTnAvr z8^_sL5OPXd8+>sJ{XV?%5CA)yio$n zjc@6F%6p8zDPggJ&$&2`E{pH?j&`OzKRa|7?KF`9oVqbVk)edFqS(SP`_OwxZ(W#~ zrV5iSFB&2Fl?PZ=L~!)|j>J!-auxD{DrO_7c!Gy~1A2f+ak&HPHT6p!&5*`~X9&R~ zR&olR1Ru6OatIxiO%U9EOE6_f2wAP)rU~5=U?n5hUF@GSCB@%o;VYW)1Nk4x5 z{-O|}ZahkgYv&i3h{XGstgow1UhQ5x>6H0S7r9KZpr z!(iD|Z>?d7h99KyX_4lw1O3mj5#jyAu(74Ewj5qSynqJ>kY=tdc^dlQ^!lNlEZb=? zxD+b601JHLNI`SHCkE^&RrxS>Awc<-ep8Q`9Hx+t_l$x3ZXp_~^Qc=&Kk$+@%lgzS zG9{v}8>(Qvuzb%AB+%V^P+p6)J?Sj{arMggs_wMwh4o6E zn;d&7F4BP^CTxoUax%?WQmmbwlq=DA@Ud(sv%g3?bJ^8cOh~aW5yDQ1WkH;Yk8w9w zC1&qUV0VLtef+5am=i}jL@Hzhkvfmq@28PM$rnh;Z!RIwKwxlvpe61amKHvdPjebi z5ftwj_F^JAc(AjAYPoaJB@zld4@ilqpq#)*7-CA~>pshIQd!=96I2&CgCe4@Sn&sKXQ_MwJ50f$Gh@bf_`JzwBU!A zA^bS!&SY^9!oyNyb;fWcC&b;~Ed1J-aF#8wJglr1(|rC^i&%JBKs+EyE()SBrd{0g zE$A3KB7+V}j*Kd3N-NE!zV8MQGFo*DKlcA9`l7!;-m}RO^8AIPii$ZuqIo+ENF)HmCBMM z_-0NZQ`Z4pn>F^|rSmBbB}%jPNEP!b%M_JxL|Gp@N$U8Vz)n)Txf<({HMa4Y^M?C% zMQ9z8J0l`;09K|Uh5Hj#RJl{Zp(;yJip{V?%ML%G=_+_(eRH{gh9ok=d(M@b-G5O~;5-&_yFf%7SMjj< zuYuDrggMLCc;PjV*CT(2+1BKio?4h>C}>sy#RRWawytW7z816)zjtwc$QI^V{X~xk zSFys;O1U=${>f1Afqw*F&}T{> zU5Qd)L#f@~8$I}bJ{GT>KthtjTNTBRqrp7>3UFxYdr*sc<%_91Jx%YAKhkRR_PSE~ z`jqFYv7|wfO-G`LzMNPWn-^Ov!=g~yIlISWZHPRqiGdgLErV|L>Qm-0UX_5`0R44* z7j@(t0g5D*I1`SyBvXMr9Fd+8@6rB+^d~1EPM8nNCh6e+YuUqx^7)#E@ z&qzLP-3i~T^AxS_IQ)Pn}rA z5_}7LPB`IpuR@C$HWFXYN{BD1vtohi;fS|{vjro$EfARw zMD@!iZvIg<$NfCbuqYP?Or6k62@b!c2*m`{!rk}QBU-YE6i3k;sz}KDpwXdhlT8a{ zfrzrU{PIG|h|Z3mYK17`?P)wy7PF@J{L`PMm+)p>l#o5PlSXrn=b)Ob{CxpUha)!nz_AwTx0GWp2KC_Kc*Je6wd`Ij~ zvujz7fwVi$r%0ZOnLl#WErv?nXb7-35!lf7q46Utpv0A`^Vj%AC|3RpjCB7HS^Klg zfhI>aF5$&QmeP(KM0g5|6r{PmD-EmHSz6pj9lkKVt?4_vAoM<_i2j(`?Xxh%vXekO zgc@trLgIxY+d5Dw`4Co!WheVG2tCm}2TzD7^&^N(SZtm_QBpxmA%A;^a=oM!d#`i^!a55%>U7Ot|MgBhJ0ukUE zU;yZU2Jm5z(_`_+0!Y=A%=P!1&*tn{T-IRI(*&O*s$EV@dq2W)Mvn;)SJDOnR@`h6u~%q zfu|?Vi%l3_|8tlxRgbSsN4KdDuAZ*=PBdpE&dXi{0!1Jq^?;hm z^poz6rR+$?6y35tVa>ZIiloL%4y}Dy?=VF0x zPbUUPoJLspo+TyZX61iQKdHqGki2RgF z0w!@?^rbW2Z@AIcpDX5-+2IK=GNwSaRAYPyC3HVQD4yUFQ;1VQu@pwkn64>~pNLL48?JQi8cCDv(^fM#N`A*=40 zpT@(leMgjc0xL~WJ$JGnj(9L@ezO&6rEOP7XmBw;>_HbXNO*!~xK&4m5UylZgyA`#1JgKTOV>ePqW*5Lb4_RRh$-1%bsiv-Q5-V1);uQ@Pb zdMSt$S(xRC_lnL9;}uEk5wmoj|H@SEC^g^$#nzx8Xv%ws&Gd>;0>EO!EM34Y{IY8QjL)Wzhut;(Y{FH|_A}1dd5waGeRI#p>r(f|EkAHf z@GzDBwe0+$>Bn#9tzF>W6T!cH`RxZgk>EKi|p1=J}4i!4j1B4 z3WaXVqBoA)1mc27_(ea-oJ^ob+JjIWB@Z#e=s!U}X=Uc%LyQyed6gC4+i65rAqaFM z>_{W9@gp7>;NxJknM#qG$C|TD4E{ogRBCV}2@6tCA+KT;!!g$XI-igWT{UWLIMyB9 zW9Zt(2PA!8QC-9Ej!?bnmhd&{n)Q0Q1cXdDfB-`53g>!{ucfFQ0*xI zs6!|LEOoF|nT`el+gKkoW&>yf{ptyE#PjDwn&hm=s}c~%F|(7}GjVWU6?@Cy;t|;E z`4`)Zl<@x!BjUf)-g19CweeRQW)s*0oK2Lvz6^=Dwnz` zGQ3b2MID?*ozGB@+)fsAa-LZCtcJbae5;*`ZK)#?_7z1E11%Cl{j2*@(`Nd^YuuII z+=2mSMA(B(DzA=3DIZ0^+F7fXF(Qs2p5i_(|MHaQWJzo=VQLQkd94DAN*=j**uLKU zqsK#o$hGq~KH>{CH@#VuQxg2mzFGbkY1FTB8rs$m6xYWPK3|OfWlhrc!#UYheO-wZ zeLnXG4-*WhS!KoCj-oAP+ygBJ{@b-7-zQ8)lCoaV4!GT2V@R)nf2p&9nUvr}-aIuH zkSnjKhzn#R-iEj$dM0P-=HbBfz%^ygKtw7^d*&FP|7l~jE$(4TSW3TTsPITSR-CPe z?Gs6$x+ZG&%4%^QLm;Q8>EgFkqIK~4q^CQ28IGgp4=C>M?z;WMqB}*)*!sb$+R1V%U4-?AgN+p&vrpEaE_IZ_?#>`gn|H$Gb5c6!p`~#2&S|@>R9iGY0uiA= z7>UpY_yDXva&h+VApkZa4g&#%k*9E|(QyQJKiX(t*5_llzR~?}IJ~RAJmxCRH8*u} zyMkAVcbw0!Wy{N#+QOEP!_d}bEAUzEBNkRhMrP(g>#u*^=G~IbzY1DV@{#MEq95+F z^6j%y(+u&YQ1exIxM-lxv9JV~AM6@1gsl4+uUHtZ;6kmsTC)iC;+gRQ2*Zx}ck)g@ zNOzrSOI=VLHlS|(T; z#$l#fb0X=?!%Xs@6uW5#nU#@ z2>8?JrMMxMXN&Llg=uV)>MVJHI2_`B5?w!gN)L@ug{MJ(f5&646#5CR8!M0N<+(!j z>J}JE)E|>aPCY7**%wzksqZbcz*Il=ep4nx*}0))Ya*VP5yMPJ39+w37IIcU9B7?p zd4tXV>lpqq;^9rdERvR?eqJ7qQEOg8n>oXgna(~N1Qmv|Vh%G|+Ttg%jCpVtfV{4% zs_JV+#n-P-bF`vk^22D@DH3I%Ft(Yy7vjA3B9|ThMwekK;ZcP2A?q_!pi}bGII#gv z*!FM!cKgv-+E?fgu*SQ@tam5EXn{=u|M{!C-{nVXl+SkUO?YI{ZlP; z-pZZDq14L!(&QN#=6W#R?2H%qhO}wM{Fd%m&rTn<*4Kw11ZNPaXg#+sk8kbMv^=5i zb?YU%YPW`ZZ%*tlTj1hDks5Li4!bKFol0X%AqeN~0_9E@$DM_YGWbgf-e~u*6j3zX zz3|mmlzKU#HH}^>b!v~iMo*+W@I-^?^4L-kESwSvt*oOa@;!N(*z5LX)o8__M#)pm z$y9aMmOBrAVqUP5cdy%S_8dP=;hQBj|T@rfOtqp1L(=F#;_5{$c!uk{x*n%tGVj-4wNoTZO%woELWgRB+^ z=Ee_;p?yz$BcP205+d(|e&8~on7T8Iq54?+I86r+(W~D5=$r0-1u2C}TV-sH%>gJ!|-9TXQG8}LVvd3Zwr+CT2N-A+?M0~qx^Ol_m;+G z^;zZ0C*(QO$LDl{+jp>(a@ z3o29A0f)TYo*~fTcNL5A)bo{K!2Z=ZOGlpFNyXUbCpoXO{8Z^HkjU&*( z81o?{kM=#?zFB9=N_@n@!9m;0Vh;~54hzYgCL>IVkS}#)M6#F8>r0ia3nK%c*P#lQ zyR)paZo(z@LG~5-E#rRkhQ|#wrM2+x2P)IeWnLWg4R7`HAzz*ORy)OfTrO0#!`k41 zWE^Y&v;k7CKO8}x2=wRxYdimtBE6Q|M-r*p5$)Ny{Ok$u_{GLJ^pR@aygpN(Je4roUFso%||_~ZLg9T zDuf&HkvK8J-HJGZJOSZh2m-P%)n9RD@lSO>`n+x{Cq-&yWemzzuihC>7Tg!5y%54* zEk-zo5RdM=+BG`HrqGWv1KK9L=VdCfM?JLY_#hNA?5p~Ffo!}iMgb%i+vN?1t6Xo2 zS>oLnH@yfDo~J6wVo)aqIVwY|;MCYRMMO_N=8}pwhBOvY;P*v?C6~sj)p=iAKJzt3 z7kPxc*6uS@&!usq^Rm&Ln4WG!Xqe9VC-eeB@fIQXmo?xg%o^xQ5z$*nl(ntMW@??eu($76eQnfJ_XgPFZ?dRw6BBee~!^RZ_YRwFKI*6ubj2lQXY#oCSNo??JI}&ThE3{h2P6E&%n$7GaH-f!*$2&Hn|5Urq3uZ zol(>u&(-e{H`Q;`x^j@_ml|{FN$~Osxa;W6dE~oX-H!JKVT$FhsA1lCS$_uoq+T2T z5Vfi{!b-5~Z$58yme$*()>Dsv8uTas!>6E8G=y#B_*~308(kb%anIHUS0#nkd)u4o z(ffJBxl6y3MulDrwVH~)(CW)nr>e9HvT62Ud-pNpp=B{T$@0bT`*WU#nl@n3n4O&i zTB^z$mW^eZ&jZyr#7>G42(uW)E=CX9^>>pkVZP*{ZppOy%^FY3RGAP2UFf1o=jeMR zm7Q%%hgq2eadzys;vN9g62IsgrdVi=t^CuodN}LW;2>HelAWaPlq_5_vUfAz*U*BCb(%N&Z?V&;-X$#S31bMgw|3)AY9)I} z=&j1c2$r<s_pNzJCguibARUDU;t9BfbyH|S=H1+1r`4hSH&5UR&)>b#S>{}so? zgx)n_&?DR|D?4Cwx!mA19qG9eky{lPbBq1#)u-2+Z$%;;=dGQtgqD&RNhTWsa zMP7k+*Roi{)T@h0ONeLacXehJ&|lc#OCMA=Cu@peBOTP~HR~qER~Jn^(vARwel_P^KVGCy)3L?~lJH&$TusAK z&w$1Aymyu{-?m3t`B6(rcxlzORoxHUFKf&I#L?Y$Rl7(iUfH1p|A&bJk449)dOsgB zW;t0ydU1J3VbGTGlPsRx%{&k}K+@lrClf!!B+Q}G5m;`cH2fE=fpu@Ky3rgnX_dck z#)DDBB_2X2tO^ge4iL8vLll4L(rBU;8J@dg!pe4bmdgASS?LY?iCRrzv*xFq4w0U* z=oJ|$KU6p}HWF5yuw(AN@+lKJ6BGCjqvJcA`!g=2ccg_#iu9h@k{QQi4$K2(Y!8P< zlFY7JFXYVtx=P2Cj>rVs>30j#S_Y!9SuZ(tl)v>qhHJfBFOI{rey-afook(Sjp^xniR zXk11jXarIlm6ExjJNu*o`O`D@kbFCb(ePB;XWz_>xxN0BjDnp<=X=w3dd79j4(#Oc z;!CW1pbj>2VZPz<%yiha^Ir5^!^mSxys}6{T(zkGMhZ3HVKvu4Je>aTI6~;t({GSe zhAKQkdxi+VG1O|^>5y!!fMf|R^k)|G&+_7|7lAEdw6&in9Q29M_aCBb4j($szZ4e* z2b43vXD%QFheE46l%rw2^Z=q;;jfB8tf}WXb!dWMnl1z)fwh^S6-0;4CU{OxkBW~) zJ^yLB$QHyc)m0q3Cjj!2c+v%k-jl)0QB?muC~Wr_-N*@%1h_pK)}*v{{QG%xZZj<{hlX1S!7XrFFq&)c_!aE-z~2ool_|mQgbleQD1TP>!p-lXwN2rVkfmr9Y;b0@~I$%{Z1p_XAVB$ z<1w-C8M;#AIwVJ+ zkNhi~(m3dJc2lZ0-7{_swxg0`ZPa(H?VcdW*L_vMA8t!(j2LFw@alyaW%TLmmg;u{UpNHC98T)v}Uze6Q1c0Uy z@SkZcT+xah{UVFs#ezhrPWtIimK6S35SHw4L;bURip-A%=!MLg^c1nx*I7MTw5G=_;aemmq<43Rtj>$a#xi+(dwF%ocUQ(|gW9vhk3L*?H9Gu90S6HOaWYo| z)>)MvPlCKi=kGUJd8oy7)5V6jBfF`eFSX6Cdew`mAf3|QXxrXXl~6QU;6J`ETj{2A z*T+YPw3@jRdxZ~W{4bPf&34D!OyI4@SGO+q9VO40YLtvz!qdpev4Yn)a+g{EZC7n{ z=iqy5e1Y64(i9P5W=r%x{lsJ^xa&&LBGK(KpYJSC5lJdfw7Oxe2#^Rv;PmjS&8$mlPYLt_!2-45OeeRfQ%`6KQ(erKxmf`U9Kat9~D zf;UzCEnjbb5|Q2oGUNiA;~j>7SAYwoG0s$)`VJPQV|505oA`irp;s;MigK`Aj%p77 zqm$3BxNriMJ{I!_D`we)9*m*Rn4?}p|9@Zpdx3;%)7ustuaRjOmyA-t;rII3f7r;Jqzf+E7pL0#z9SQPFo5GCkIEGq>To05Ttk1TYH8+eZx2F| z3X%Gq+!l0c2l;~(d`7|y;h4W9qzF6npvnMB6OcJkq|!Gs%mn#7_j?a5((Nh%T!>eT z1$0SB(`LV<=UA;ha&bK>m{<-e3J8DRLPjmtmL$Dbb?~&fxo9dSmE6UwI?MaN2=8?Z|EunzzbCAEWJ^iQdR-oRR0 z#**x4r9~=>d8OGqUTyV!-g!2D`1`P7 zWp@tqP%bOW(%ZSst0^zFJS}RwO7q#kay}vQidy7GhFbV@&75)1mo0*@SJl~fwyS{n z!NYoSx0gfnzP<@5$M90HR`Ug<@UUs+yR8F!JW5=l3NQY4ASZqBzN#`3@-DI3m&pPy z!4{du{FoZIA)2z5r1hhO+dUq7_L|DyH94G1Kr4JCBAXN@?bq_MZONqXX_1fsZ(*sP zfxgy&gbEa91(Xj_j3@my6eZ(!`G>36gC0Du*;kFq39^_SJuqr+eFiFkKv@9)XhdwM z>D;&F3CQ(N*#M9`Zod3|dju3|^`_t5fU#!3Fm1NU84K~BUf|s(D8R8WG<C@F82 zdf(-xTp>cK0`x6?v@4dPpxU~(g9;i|qxH`=`BG^L|KNRPnif{M8<2J16^^Whh#aj-J$@%AXJbGomjjY>V9n&9TE_+iTJOw8sA6ydC}C$V@OGXC%(s+hOoO(s{cN$`G=8rTrLw zUBJ}=_Vdb-03aN}j17;QpWN{sP;ewSOfYJBwm0_mmGG33kxTCfMlOY8Ogg=8od=u~ z=MJYMh;AS4DZb@Gnw>%L5r9OHdZ)w#K3CE&O6^{T)kEmLnKiq5Y@TVWaq}G9$zAlt zzFD@$Q<$(Vf}5eI%QlEHlz$S%-^bNJ{9poyulI#vF8_q(o{G6VKq2|(mA8$(z4yX7 z?*Z!NLi`cf3RBIyNzRCnTosSbEl7O3i9x{z)0nOqXrZb0L`b93`L+kg~iQni9mSsLnZ_t|M44-9WZkA@+prbRBo~o4^Zt!hkZKmm=hFY!L2;#3%vOm+)Q^!h5BV125d=wDv;?3RN`pbWt^@sX z=T0g5am&%{Ri)4Ac!lhxci$OD2}Vk6x%M9_os5L!+1(gwbnlJFVBQL{;zPUphT*+7 z4AysJuY;%BHeWYLhtad^M^-{hpp1zKc$n+c0K&IjyOO#+Brap~K4Tx+M6w zuoAjR*kC{ytTn7>77rcUNCe@aqccb#J`f^ggR+rV&Sy(`G#Jm;P?1NBrTwh-nwd;J zJnUT7+TW@5rBtxO7*Mbd?lf+0DTOvV7(hFbl?IJw9)tg@7Ws0rIq$w@g1pLGYIgp; zp7oz5q<#;5^L%vg$E_v&s;;B`-AcQ3v@?1uNA|lVxc)t6GO5;s^QZp>fRm9GWAL6F zvN~+`eLMrhdAzgNF8-fJ1igcSBi~1tT>XCKvGZ4S=+|sJXu%zU7g?Y8`NiOSy_$?N z$lsWfni|Ormp?l;&n|i_n-}k@{?i{;zAo`!dyd%}+rJM(^T-7fF>=;j;$;#@ss$~O z#m#^%Ng2G!XH_oMSXWe@5MNP|(}$szIx`%e_vxKMBHXo%|Mo~wY}@4eeP)pp{%Ll- zA|$(r)0)av!^KQXD0b&urrEK|aS-lK`C>Uq-8xkrB(wNgon1#&ZLAd|XXkC=W@clb zQ9o}uib$f0hGt^(^_v`s7bR=%X?YqO3kd4+cy!t3CLNN`*fe5{x}F5wCoqkVPrfac$kiPoGeMXYz*XuqL#bZ$HGQ zpl>Vdfj7g1!eqy&x_EN6x`^=tz#rF2kfr^7!tq7zB`X=eJFQRiEL-rk|nXAol8j| zy+8645sGXxZPY}FdwS^eOGnE?Clyo|-*&&qMe{fa@k?^XM1_l47!1C#cm4+aBwstz zW_?m?EUBFOvwin(g`;yUV&WBSg?u&0Mwz=1D?xyoC{(^qN44k`ck<5R;Y^3F9>XB7 z9%h{|6txgNd{><~--HeOahL_{%Tnr7JS4+9wMr3}ulnxBz*?r?$M`t-4cGUMJ!YU} z4Z~+FjAJq+RjRmt+|iumq%Lee9{6^zd?yQTw;{zrq`Cqn7Vk=~u^KKHmE)V@lG$q% z@nXTg1#bj@=;FntJ}2~S{>p1o*%BgnwS)eF5N8oMmM`<_EqD_Yg{zn^9X`xxI+BBI zvZ}=U1N2%*r2nQp1(m#_$zqmzInt?c^PoTs&a&|Q^2=ovfMKHcUSZ2b(9hZ%L+d5R z)MR{2x}N7!HB+A=iqV!_B+7X~*Ja{d)MSq0qGr}?cpoo(x(^C_pcnC?t;j(o=^v0X zq|R>kYpecd(MKll2vo2i97rF2vvc;}An;PstL{b9TZ(k2L%w3(1y9H%PcU#x6&`+j z5R?1^tCf9=`({IMg5sQ;ZNoW>XIR16^_dK!`WuT=#pfs%0#<`$EOM*sj@&B!v^YnO zozGcTBp8*XZYu5T4qb^Tt`&*ICL%gKtsaT0h1b7QOT(^3g`4I2;?z3v!zE;k8Tfr$ zi}+feUNAHq!*lC#oSvg%mB@nt1Pk2hyaJw#Ab~`2T?~x-*JUUSS$}=4^a4EIadtk6 zp?~_Lr6ubfN7S5b$q(tD!B!a3!u$S6LRE*1)(jt$8Fe&)(b-423I7;dHm7V=$-Zf6 zzMJV&aVYtT<)^7;d20Inc0#`~gG@9L0zW$f`>3WEK)E`1^#m|#kl1~ydwJCMy%^06 zNnf}X%||N-b-m~v6{{VCbpmm*XR@tNyyowCJ-7Pe*T&`9^9+aPjUT7~-iGA2wY4=j zUyV2ix@&7|^QGFC%OL<|w|v@(T?zI^Gf(t?VMn(BU6xjcdebOygrc+-7fo&))S@RIc$=DS%g zthXE+*$M`OtngdyMFQ#Db$J%w4*?F|hli&eQ_Qm3i0zZ?(ut~8SZi`L|-WEB( zsf~7(2p;0i8{R&f_m{~V{u|Z%8Lh9P(tpy=y0WmaFgdy5TP4_qrlFy$Fgbq;EI)qj zG0j*g@+eRvw>lDm;(=0CNp~IV7)o->oV>pQy1I$Zj<0LEpJ;m5hhnm3Dqg^0P!27i z6Cys#1DWg#@I6*TbuIFlfz`JDrGq`Uj6-Lknpef+k7{UZ#b65$Lm;JmcU~9AvZmvB zYa#AK+eEz6kcnSqhz8L~xFBU~UVsgl8NQKHzcR;16>n3vch{h;thuxoQ>R zXQq$&jLpteDn@CM-k6AiW1VRQtqKcR1t$kcwQ-1uB%Glz$PAv8`$K8cvN(1BrSmXB zGzEg&m(A4PHRXcwXIAHIZ~UXXqwi}k+LtcwSOZY3V_s11YDyk9gpK#T^8J-4BfN}5 zvWtCLx7~Qa8b`Ul{2__HHX;FXAgSXQXmprUg4f+4u^lQeXLDDiTV`7P_3KN;+m@CV z`mb|t3p`=&f8{gjEGz3**nMm;R1a0;wJJV$TG@TKTEpa%D_2o8-PhuvGhJf0OUn~! zIfuY*aeMJ<2Kz-73MV+>b#ToL)k;kF#RVMD)4~aLmeF}q zmW98ACgFc3R1P$kexCP7d@AcCt7N*|0H_IZ>I}3+vqZQq|EZQtzAV=r=Q@5F%Dr27a}4bw;;0y5E=yl2izEmp{I<{7Oy*o4 z%xqf09sNazFN(+lGNyhn;T1p)TYvz$E2*q3h9w^QoI@9Hk*kv^O=#RCsw?T!g4KRT zKG6d{CPw|PpfhuRolL^kyYJ&QChqdZlXg$qjUR8jeRnj->KK-2rdCj_Glx4nJJ-_7 zc+m~=@vL(1{vQ`$9;#jB4^H>_z+D*d8MH<~W3x%3r^gzz87=dgPFE~Ls*4@PhIk#T z(l|chcqIcgECNq|)xq*^WJUeUZiWYX_lC+!aSSzN)(J6&_9|ni@SbPpKo?q~Wc!N7 zi!@bgp|(a!q)p{HjvLFhSjiPEf2yNNQdUA%Iq1t5KAuvZ+v4b{R|v>v^zpy1UswZH zgroT&08C$>VuQBT>;<)yTIr)X0dnQAc;>MFl#|b&-Vp;C?f*)^<{rrQw9Cx&nJ4iX zwg-`fi9b|FpbSxg3^RGIsL@Ay2+bNNhxx{gjV~1$bBuroQJv;asX3M(jlwx=4 zRlqDEMg^F)lu%Us^9tZe#KGp{;qbY+paiIg&u;~-&GioU)HIK@8jFCRgExYLA7~|H z<#gbHjs%m4BYOJLc8MtfQGFB@uSizKASwa$>7nHd%-<$M%JkF=ug=fUeO}eB$cFW& zuAR93&@4nf0Yh_`))Lts^Uo!Y%l<*q35G2wRRPIb*Xtw2^Xz(9O78@tE`lY;+r8x!vdmc~Cp>fGtuElnF!EuwrO#M!S+&nhf;~-HR|5R`Ol_oh^rb>ZjSl9iP$BL_z6EepW3^Ukj zjZ%IMa~)TocqnMxhh7ez6a8fyVt|po`Ij)iH{_M9xb5cN^Bu(zK$)h|8T};pS&xv((iu7rAIA&TN!W8FG+b;cb!uzt^;*DdbkD=xCUNnh<7x}5U zPA{24fYmnUf*%m8>xW!-F@X6QM7D;%`SG^=!lu_AQ|E8#K_zs26FE81RV$$am5pL%BDfhBuIiYN><`L_(u&k#}Ck`+X%=O2H8bdphudpP?R6%&%a)~E&l&|)H0X{eH^AyJ$?=;%Wq~(+Oxcn^t||YBH1^jm#IpGd z^d}`6^p)vQ2}?9HAUsPd;kriL+FJ}IS6~C$)Vk~}LxoK(K&C^HBD&^?o>c3JjQC8wX4xxZTToKe! z?+SVwacbhDNvz&g2`v<}L%7xB#^yVI4a&ZqOUtjMif3cne#q(b;>hH?=X{R|B^+0! zb6kx>JAW7WR=9ib#zOPAc-4ae3rd4^62aw1G>&Wh2(?N| zR2;_^W@g@rzF=@%$;A9WnyxY`%J1twLw89^4c*-(LxXe)NQY7)DGf7pHz+0Dpmd0I z2}p-1N_Tg|%san#t^b;Dvz`w#&%Jk_ea|_2pR-BK2|tw^Q|&$Qlno*i1w3v|dJ|cw zIF;8mFj+O%GU8$u%J285`}^YSn;dKprGuc1cLhRua=;glZv5EDf}Ff~@pi65wH{5K z{%DjOd`fc_WvbyMmPbn-7EuHXMD9tB8x1XYcWVLnYVKF!pQO#ZbY51M32ptI5Ufb$ zIscU&Jq3Mam@Cg4)|S!5MFf4(z?dL?^`d#PGil0I{$Vn`LOm7^CV zS>Ha+TRpV2X!7SlDo?we9lwO5rRc^Gy@^7T#3E`X1bW**UGr^UdHY_{ewkI7+LU{r zsWxpe69Ri&LnQOW-<0RzC8c3K8U+I2(9dBk6@dwJ(N9c0r)@7gBB@L_A1TQf7Lw{k z3a}E4~#Tqt-)194GyPP#B!U>-et$u$r5cl!V%oClfICYBW47O5Nw5UxhK6qGFE+ zw(<{g6x0gI@cUbx(&R0j1fu~h&gTk}7fAWE@9+Se2@j$2Hq)qOFH-OaegCAOyO9Hs%X*vjP&wL#o}jw zy3HJP5js`O#I?Czx^m$=2k4gvvMan`WUdl7q0)VolllK-^Q`@3|Dyk zBqWHBcYkYz!1BGU=mW%eAZChBT*ZnG8t^RALrZd8TZChFE>_W``EGRV)Az0%M(>c& zBTV|mKIc}clc9~S{WW|P80iZbWa?yybxg`brFVv_PE3yayK9jEn)v*FnfK(!dncP= z3NiL8_?5x057QVRaW+P2@uGAt=ikN}=q=fVJ=jAyG#V%=Z#GkK9nK^8k{yfOhEUgpF=Vv6pYGvp6XbdSWc>E{FLvzO}E8jSyF<pq{P4QuOq2lS55J zuXuZmf7I2gD*WgJ4m6ERju z1$EHx@2ugjWE7LHwn1SWwwO*Vg-97wZoMr|`$B8agdaaL2iVo?n@91|PUR^Fne@W# z@X`8K{W&QiA;r+j?&o!HVBz#~PfDS2iBz!nu1>_05b6VkxtL^8!>9wS*Jv&h^r&T- zvL(YI^g4(Xot5#yM^{_ghcfGh;yZLTvSx40+K*DFpuo!*FPZ1tno5z~iB3s{&NFhq z_HJpZT8j5@x-{I(#ADW=002?ArFFhy0BE1Tx+J{Pg%*?ZW3lHVD;9r8oVrA47xWR5 zpe7Q26W8j(GQ=viUqxYhA9KW*bg!3GvZ*xD@H19v5UCJp?kIMN@_$_2TE%i-%u0WeU7;%c zK=`W?nIK*~f7*$?D}h8M2-LeDycCzt{a$qwMaN30!^gTi2sW$U2_ z>A4p(cusA^#*I;5;Q@l@N}skflgy(KO!5tp7-7$gDr+7UbiS1jx^yBOzU5Jc8NQ5< zK?WsXSGH;nn>SwUb1Qb*LLp`$mke?DfpkAPpFd!n1m-OM&HB01ObZxHc+-t?2edp~ z^){&%fWiYl(LUW~%<5PEUQQ2v>TanXZnC2%q7II+wN*(-;*yc!aOch*iP3}GB4Qx# zyje@bSW({HOWIu1bEo#e`{xgFCMa`#Y-msdZeBKx+~&Ng?x`gND1F0%7`eqD`sP$m zZh@NnCy$VK)w+L&K^4`qnO`gM5dmJ5HLGV9H;K&Q2voUo58jd|vSVOp+mZg`_vK${ zt0}qnWg9d1{Z^k(Z8bq1m_q* z^V#7Q53i$dc%`1lq4r2T-sUM#TaGz8!=tSdQl1t>8x1xUYx>~zEpogEAFp~_mGOSD zR)>)!A>G)%j+|5K>%|CEv>UI0UvoH!@92g`KGWW4lp`K>YB9*Xm{9h{tRP-NS(5z7U40?^BZ{)X z#M-H@OBR!-5^K~zeb4=uBkGpx`5c3J*f3V~?!5V+y;wrG^ZTT4mDck12%WX3`&2}B z_&8QlCQFSA+9A(vevJyU8JJB{-VSlhFYu=uw^;yVW!z9|d+4hOX0ddI9Pnchh0-qB zgB=3C1chY#1H(FoXhAlOILQyE-E4AFylfn-p11S`4HTJePTABjogYEYzW@=M;ut=Z z_-%s;=e9OAhy&J#570CSJ`*OTcvU)?Q{6zhLs#_{;={@CE;S`u9VhJeXQ|5A7ksK4 zSueYdI0-bXVYCO8&rkYCgH?evREC3vd7Nc@nBgMy)Qoa`p}tf51*+Cc^0qOrBPQW8 zE!^?cGt21(PPhBckF+mg_UK@ zyu>G{VB(Z+A5=}Vw%U6^VeWk`d%#dxnb1M0JvB9j_eZ2_4_FQWwuT46z#&`%ZLy;Z@8GM3raO}cgTKYyza+Rt>Crf@vYJScFsSYa|LVJS06Sge+ELgiP1G<`pAx$iA5U?FV}edSZI*Zs=~t+rJ#P6*4+1Yiv0n zxKj?gsudcU5UU^tNc*|Fq27n9kU#&>*UDcdLf)Jfj>12r9b!UWmS!*E(L_9o z=prJ2gzS!KIbdp1qCKhS8(*Jv8*fU6RTt>4C3CkL9n{D-l1lLIY1MwOHJ@Yrpqvb$ zc@NW!$om{3iPezT(nbVD5oQHuz=W6^o%P;f^5~Nq`^1bNxY#;*wvD z^`X@tDPsa`PvmQ-xq)Uw%0%@ylHw(Yzb(hen+BNEF08VU5+t2cxTu6Ieh})Mb`|Hp zn_*o~6|`6~uBcDazNC=N$AXr1`-mqo+7;Mho)_9)nDl?bN$doojek7X^q(i#xtee$ zBP(Pu-n>fZTjk^yVOcXO!agHdhQIy1K1$^#h_d%wLrIS{*B8z-gBe*9^Wmc4 zyWHw<#cOUuv1dK6K}^pBC`9JE3t=($)ttzabVI{_^4n5Uw93PY^yrtmL>8fy;K*7a ztjaGso(S~mh2J}A(`Ro8iIlGiVfV55R^lphY!;=>IM zt$j6?JS#eaT+dFEQ+eDN?bBPW#my-Ab)jq*pqfY&060f)M@;K{MD^c1vsI^)j#a*{ zrCNUn3|Msp&u4RkveUmyi#AEJ(EeR+pg{~F!QQ^N7ftrG8|2ArLzBs#7P)UFO~ zS)u#1?-)7;@`l$Z4!}S`d1rBh8IkZ9SYw#$AGt1N{w~2w{@2JUIHD(~g*+cs26#FN z$5b0$ZEJLE#)}l>fM3!BPXBIBAt%hiKpdGayU|4f5DfePNtP0aeQHENl)@a+KWfR_LBsxj1P2N*0$8! z=09?%Z!y;Gx>ThINRtw)7-_phE`Ug(D-<1d<3V@R=bfcU^N9+f5ry{dU_Cy=4gToL z9<*9|?pg~mjIOh>M%&OQ+!-d`SrLt2U0Llb*PntK6od6(OKl5_v}p;I~hpnLWd zEcg0e>>uzjNa~4aE5)3lX{R6lL{*&+9m+W<+ZkuPx9naaOLy(=I#AY1yC6&QRfcE5 zs9$Lwt`za*!F?nvy|CG>ymgL~?^II>fg(_};jh2mw1ty*9Egg7hD_K>Rvr3w3g>OS z1yS$29+?{yK>s3Hz82DkAE{}~f;19!H6sy7%!{&aANkVn8M<>qpBz1pw@oc}sy_A) z5;fX#o;_EYP+RRTLvRI)3N4ROn9A(vK%GH4Bwj^8>1pxc`iI3q`Qo zEQzmTx--JvNq-#G@b13HiCs|HqJF>tAUfQ$dHq{YVQ&O_3-0#e*CEh~x!-AOAqfxD zRv(a4Wwxsy0+6K3ol?j2^M!T}Zcgh~4;Q>i!l%FcgojiyVVEcchV^5}U}vto>qc^s ziU|9}qfO`mVj}Iuw!A>66r2 zQgJ-EP<0%%og1_*WAEFIq5BrFeoM)yoxl%c1XJn?zbLjyP>Ww)<;&j8{wF;aXF0}p zH>g5VYx91L@915|0E)~&QF4eZ*#8_@)z>;j$iuwG1pQVS~&H;(e z??zvmtJ=TcKbRYun>SmN(10g1w{pHBG9d!^K;wrIN*nlcDr3)z$5)O-6{DA!fA6ac zJB+_(yV4cUYD!PX!9H8{sffPGvq6!-0jss2Eblzs{t4Uo?r&k-PckLTF16X`roum6 zdQXx+?JZc+CNFULi3H=)83z_^$@9S4la!bJxLMvpi#G*rTb4yR{IkI!2PG1lIOV@R zxx05nfLBA&6VuJL=vV6MN}hY`%rbg?4cP(@ zb<%rKhKG3^*nZ7gdzJ<(dl8(N0< zT5<@I6I3^JMql@ZF`-G?#l}f4Fky&YAr#Ak!YhmPPZ;Orr*&Uqv1INuD%@tb8W>kW zx5iGG?C+a@7f}%X78lvu2k7Nt2&%N!3Mq!r4WX7_z>S}-sv5CJqwkW6^3tix8|K3> zUL#%ZU&Zuv8jYGoqVxq&7iX3)iygxUQ16dt?7YQ|VughnRy^dMG+>vpRV4%7bUb{A zhJM3y+G3DLP$QXj;dDtl+Isp^*6$2ssd_>>SP)T>IfE+S-f*q%i#2NEMB^D^z^8c+ zzK=6I+Y}V&{}*=_{`&TO4^DiabcE-cJ#CGlc8a64D>^zwQFf|?(;m)Xj%x{0h_E2+ zIy>PDNqqM=__Xy!{f7l!LTniS>kBsWnSlYknA_ImoIz99X`6*3z?xqV1UD9wQhTx?-6QqoFE$#fr@dUst?VMZaM9WG+BwG*qJfNC@FYdzWxh|vu8<_SBz1sX z#q!HglOjwdOtmGt4PH8+>7dTLZdNty3&+5NjDoK-u~M*BcT0IU?Y2szUsWad<6mp~ z$@(2n;Yz)g<}=~kKw&0t?;ndX)KQh4D}UJGN@vA8i+srrlfCr#Nh@`8bOX^uu7~du zTg&m{;16y7TRS6vxsqkPqkj_5_}HCuNux}fhTr^q4nv4o(?8vO6Ha)BnVQOzlYdvr zwSYKwMZCS9;xqpSk3?LdcRhXYe#%j!eWRhrOz*$K2R&R^;d>zpL6B>T94by19}|D> z3Z(eXp2UpJJONs48BODSaiF5I6 zI8 ztV>~_@!)SD!o^0xoo;!FV~O#EyYsl|h6>vYJ5BhTzKnKzhda9vWOJa-r?g8CB=ggf z03?UOl|ELn9Ch2|<@f&H(D=%8PFoiKd{{N;YWQn+qW)mKj17 zt}nG`XmkaLNEV8RDteB!=8yW8rFG~81#cTf*?CJr`1~N5=T>J|00kNg%j7%GDUSB< z{1ayC+)jq~(tG6Z98WS*BsUZl;ppZAR!5Y;&}m)7`yU}$U>}-w`DjZ<_YPBe25hKb z`@Q{!kd)6&;_F{~1hyRv>q=k@3k8Y5%7^tts;J&jU3)vMC`qi5YQMJ_*V@-eTeq@M zSB!G*fnN6}AybYuD->qtr$|`1YXO3g0c>w2wsJjVT1!X$d^Bu9$};=zGot>e^wX_V zRj;HLDVdrG0rBJG&g>7Gr9Cg53LtA69X1#zxn^Iup{~>mJT1KONgOUqAhZnJqwWgY z>0Y^5`fil#tC!M#_Y3|=f%sN~w0;VP!BJhGrpK{R$bNj)VM6Jt$QKtWrp%y{qB!(VT(WGg-LxbZa zg<}EX@neaEKybl>0NV|g=KCIyNQD)k1AOMQbUVFG>#!X@K}sElCC zW8JJ#?NW=&PvqW^z3l0<&kvB(V>z1(*bNClOd7fV?s7R8R`oe*xAff!c){QD$RE7h z;tKz}6;A<`mZ?SH)hop+;gwQc+3K;7EJ-|{lnB$?ye zn=VBE+Vsl9Q4&fIJ>t$1wdZ5LwC9DU*!#dsOnv<{CZ?sUPZrn5H^Dljx9=1Xq8f&p zh}Y`$ru@00CW8@eHDyX6k`XdpBa0Vt#SX$fi{H}K!d=k5A5akirE;luF-6mWQb3IX zxkBLl)=LY@SM*8SyFvX*PHFGn!Bx5+MIgjj{KguQ3^bh@O+-30Pnb#D?^>wm$x{6e z#9y+8QiLU8;*#~bhgB$74nW74n0dUS&ccf$Kk|6#RUSRoK#ko?SzcU_+3<{5qHl)* zld`f;^f!kg@!|jBQSx9Bxfnr7j?X<+kz-d;cz=XYJa7`~CFa-Xq{a&^zSBF`LK1y2D5*SE%>jUzQK! z2QMB|4gl~6VK3hu+Ey*CW9Z3)Y~T{xi)Q%D&-a~o2V#MHxLG}zyWPB%yZ>lj4y(I4 zOX$xFy2)V8sri=_v6pmG?+YotuY4`Mk4~1YWFWuhynSaloCuKS=+BHyJKv$!Z>@n~ z9lh+$fGxGQWvBOG4BKG& zxzG2d1H>U={@vN^+HKDnTg~l~?5$VD>7VXz@R%QB=56qqVM!1WxV!Lz{8;=U7dQCv zGEFx4UQLxF>l5gHk~o91?i#OAhyBm2(O6{MrSJiV&dsyoS9)u@i{?&UEu{W;Gi#`iP9MY}cApg#j-9<0rac$GF-1{y# z5&j>dq7ijnRbxCg;%xR#oMlx8EvLRY9>&7q259`!ao0BK;V3`~BBqW1SXA2WV(?|2 zGk9pT_u+(!YA@0=_*JcWtK&w0YtTj6&)UE=9q3k-zQp}b`Pwi&l8;Q+9x>p%KSEzN+V!|;xON?J!1r{xV%8n>S3AOj&i`~7^W?kzkHoW>v$L2O z3Zt)*BI1G&L^C#vXk0+HZ$)YEhY+b|#-U6sP&Dz|4+KO<&4W3y#>$?7nk0HzD$lil zwMJqL7+xv^2CkP)bfbhn3ldc1zeT}ssoL&|PvHbJh-L=*H{T||6=ET4J>qI@hCXQ@{N zHr}v30$_;Gf23wwSJV|NZFm_3drDhAUg~rsL(uHp}(bg`?$!ecDc_Ay#IWz|TZO@Rvl7J>)@g}V*O z-dWN(%iM|uNnHg%e@Xs9foje#vWFSpUIaF+J1EY$tJ zM{eb&gCNo4pKM<;x{@NZJsc}Xwy%s}CNU;!goCdd>{3yK0w#W3NFp@zJW8VAwd3oY z!_8)FA+WFf_48Md(@enobDbZ9$L!QpZ;OlLC3B5-#|* zqsEI*L>p7B;~%v>U$%6u$f*D_TStSGhWjS7-uS$`gPuLb-HCbU&{tjkc(w72)ld4D zKDuR)JUB@J5?THw(`SJx;BM_a`W3+wE}7ltS`X-?Tvn>dH>B}h%7!1m#MV*%Wf_4l z-5riK@NgYqNHVArfT(>5>>3bsBEFeY7lvd=wh~K@xlB^XKvW27bZtA2joS zT32#@3kb<*-s5kr2;!w+`OExnp2a=!-Tsj(hrk)n`J&V@JSKd!H2)Vl*U$>@Rj%+P zvRZyYKP8U$f_%vd$Ld_!$&+IK=Dg==g&GOX6sgXqQ2YMR&>OJ@+4Hcda5Sp}?N*KW zZc43#9n$r=SuIQ$?K7n3&QFE$^89<ZvfP>g13T^U<9w6Z-i>F@?zTPA}0|o z{}--;9=_{8@R>pP5)kJZ_$yr-+0H8|JR%|@cWj6YpRaBE+3#B)ewV3;{_}gdSLfR> z2${V5wgwGa+sr7Jews@{ejm`{TbLU(fsUkD)ZPC5n{YLt?doG~27eK27H-W9*+SB8 zcO`Sq>l>CI{gPBcIN#S|KbOf7fO!>(r15HePOw?0M4y9kA4kEJ&`{$Pto{0Kot*TWSKIbWH= zT8+CKRX45&sU4T^D+6{&t3ZT#K!9lrZMGzY@;et%ff(wn&?YnrmBWw|iauGlj*SjP z*4foJuHP2cm-6;A6P1UfYrF;kX40VFT#fo)+#AS79Azxdo@vv`A)QY{`29s_3dVQy zt5%dqA6&t&B5pnMYdd#S59_Zex`UA{iH+`WCOZHCTt=VU{f|s6@1rIy5cbg9-$N?M zmpQ&xB(q@lkcgzBElBQKi)fS$L^7(I;MIPQ9Y6cqjr_+T;P!CE0#S?b=vSiXUe>yY zCKf|WO}W1ml7BXc8{mvQ;MNZ0L@To~EitbmSoegy8P6bD?-2}=&pr-jVZh46ze~~g znlPwRw7#eo1-8cC|0stJ*}o@!21Aalj^@KrK%4GN%6%LI7)N;w1yJlvHZ2h8#e z?*zv6l)BPQY2GZ7O=K}Iw+GzDPm)X9Ff-7Ii(lj;uJj}0B?uTLgZuEPHe7K8vC^t~ z>}T#}P1h?2ztD7$a~i0$0uZ!kQugFYf_A&@F_`)-28`qR?aGZxg4U-l zQN8B^KGX6@(vcPPAPwxci9^#R@XRTY9b>_+PNS&WcATwO;W!OLBSu(0bl+`$)5?1h zQ32-^u>L~jA|(B+V2uT%7Tvs1y6oDZ8F+(FFJGVlN6~CR;Ko6@#)GQ5%HVe5#j$bO&)PEEw~wnZ%%G z{TCZsiNU{YE{WqEx2RGK_$-X;&M-mdCbxopTCBE zrADnMD|=w;P#3&>+|j{Ik}ld92f*Uox`89|o>f_k0E;ZzUv1_@c)#c*yLMQJ5n@A%?O7pj>pSaO`uF1Gt zN;0q{EdlT%leBn@gps$Z@i1Pl@U+)%$N9}-syZrjHc2W*wlL(NGyeC_;~G^l(zDVk zQ)ZKvy=NF#a^bPT*&2w465@^SJ843K2g;&;H@oQ1LHq0jZ0Y)F*#g+S{Y^nO?S6$Q z92}bkrdcRMUk9hQ8(6f2cgoMb5bSRY#Y!6U{)LPRhT;5E^Y28bcO$87`xJhpdrZ@=?s1W9+NG~LXbq^rI%&@U zlJ}$Yp6Lb_h|nIMouV9;v)Va>#-_ zdiAd8?~ymlM7$=u0}>i$44|hC9HlAQpVsR)t?`?XnYolGpU5cwF8$K0aGJ8Zt8ixf z`TdkNVoVc$1SSZC9rQ2%@57(NV$8N~zEWB?jlI!&q`bWV%5?LI1~ZG)l$FPhi#g!$ z7zpwb_4)V0ksa`nFGhMHh~#Ks#isRjvwi3pO~SfTA>~K%c*^wDSk39Nt=w4^Z=DNbWIPG9twcPRgW}#lhB(BA%)Z@j;xftl zyK9MeQ$_vt49zKn(_O=&#K8B1JMc^xJWfn~m^@-xSAw5}hLT)5G#jAi&-_kfkdxQ} z4_#Fmn2A6imeRDD2|ZVE7iXL2V0->?bmnfGuXwAF^J<)k)U+k z$4>|DTH3rMG*)V5%pC{FdE7{6*MdDuYxg=pL;{y=eo~Ov+mrVF3KcW{l|#B&0xYyE z03;MWF89-y=QfXx-FUY*P(ND6P^@L(l2DQNt(JxP>hyjotH3hdrEB%|HCuu)f8LKM zPHHkb{$WtbxJwZy)$=JgilbW7-3!o<}q3`OL4n76{t`RwIvb^P6p~opdn*01f z`PG%rHUyFc{NerNQq_q$Mlgr1WFryUyrlPAII-c@zIlj`E_OtMQ}jiz9UzGKABvTB z3fR+72RpdKz2T}(@2VG~rf;wI^{RNZ>Z9fxMU)pun0G2g3CoQCh4>)8A*~XsOUoJo zqv>vs_ZBPp6^3bb^|{fwuihm|yCq%^Sn#;AwqJ41@RWhtuCq z16>ViOC?A;*<(;U2Drf(V{(daRCxifZ|X|Fp6$UKIAjV@R99VN>O%_|G_2Oe87Bv_ zq9rPc7Lo$eQ)oCYG2IV7+<{>w?q1~&6rAARyISfu1OgaimQQK509vp88mHL_>XfYW z;HKIar|R41)oYx>iE#WujqyV0n~Zj)_%)9k!$Ju|aoF1fvM~)YAKn4sf_hK$6DK(m zvGj*fl)+Z^PCjRo7}V(Z$0#Te6iCsg8o7ag{ytSjrU9uhxBIbkmyL6~qzDUqYk$=c zX-P0NW!*z5&TG-}KBTrd^XSzo1}8_LDrd=QlfPtcL>#S2&M_Yyp!Sl%n(|1HDoV|S zh_j>sTG*Gmb~B2IN>S@7|bmt?@1*fyAwU61=8AgQ3f#|xJtHr#@dB6 zzdxPJT~kovu3!RDy~9KS{daK<$zr6XUTuNx(5}!wUcRwKipwnh6#wN$*aep8Z35PD z@T`~lak)}w#S7(8{%~~@!T|Lj|7IuYl(xHXe0;pDW#;h4OGeuZg z`;yz{VyVibJ+^>P>r?mTu zMS4v;gTIn(RkghBcJhu|X0pSlDY?h*BPcl!%6=$ z)gc|spQ5@S`^4E(KC_~$VbR~Q6I*)FyKEiP@JRm zT*{3`!6Rm$200#mRn=miv*q(MPl8F}y-i-qiFTzhN|>Nyp{ORg5{+5*OazVxZiA6S zN9Y*OT|5z=&eXyG-w_C2rlt z*e)3kn@biJ8Z-cmh7bXw3j0+68ZXKY_@mO&8dhFaf$5)IdP6VMQ2uCA0vcu{+7Mq( z`f8-l?(Rm~LGzA*JaZ2%Lfta=S zd{zOdvIC^d%|9v{brU)ujtWLMH-Cy?k+UkQax%GgCc_l_iZ1OkNqXp zl|oChWHX_I$64Ltvc~sm#+UfwP%0gGv_cPZA63sZG+M;RJjd??XS2KZ%y=Bg?}Zk^Ha`xB_sN)8qd}~i zlZCKI*&7QT^^xs4S>tNxJAMZNR76k=B6J8*$k`U`)}{a%cg^my2Y-HQ(+Ph+yV|TH zNAM(uYgW%FM7axo!S!Fe-pS*(TTA48;&sAGG1q$8U9@7iIot!C8oKvcc8=D_ZT+23PT( zrGdpJq<_0ckN%hIZm595suRU5V^{>5X?_*AD0b2myU3h`igi?HBirEiGj`61XQw&u zxI3i*n@c3Qumy4vB1eM!7)+H;mOdO(u_i0SO)Rs zF@(#dhsb6a-n{0?=PyyF9!Plh*NrCq6?6Gj>NpqW3IM=9eaZD%=A!(+$x4x7FX`T~gnRy}jYN#XiY#^22!^!GP@07L=LVA`1W!#h!@ ztx9*|J^L9<&PLv3LYF!N_?*NT=qgb9QCr-wYjX z!+&v9d$!S3=tNJTVY0VPWE}0rkS4}`82{&{_Y8Z^^cg-;o6(27wujMiEJmy@laD(L z<+{u?1&5?yId;EX27-PsE#nIzT(8=%oJO{#ToU~T&d>0aLANw82^ z{+-w8tk*#cr<=0lBNJZs-f1Pr^S8)w9)JKz*@Z@L%`zsT$VAP@ak{8HB-PBwu%{-+rWVoL&s z629Q`S@Kojprd8lI*OmeO3%1apeycK6MBk`H_Oh*U!9>$wRNx(ct)&(c#l zWLF8lfqK+Q{^k03wP1isG<+kR!7wg8w8@>B>ORYHv9)~1NYM{qrq=5)sPH}$iQ7&n z*tm7e*FIRsl_4e~IEQ=c*2r3kF!Oy}T<7*Mco92lI6O$qT2ja**MmKW_$gKz%&%Q3 ziK!!qOghbzW(XTJUqISG&vk0#FlhEv^LWcEq41@#j;9ND7dYg{1+v8r^$@(O(DGWXkgo}kB z(AiK^UrNwGR(VdwSMhEsTID|iR(IP~t)}cTyJO#@s^OfV5paB37r2@pw_|ycz zG{;Cp{bbp8n*NFK=i3vkokzvL1sG3UW&LUYtS0j;$bYaQLq%A$Zf5o|JvNBwa8aOG z5FjDsP%;Wnm~~&@sgYUUoXI3(ZP8HqSrk|qGw74fko8ukW-0(ye)6Sc%rcS z?5_yY7mkK&X6d=L{Gc9`E*kqB&xnxkMv3k&RI4ouUaP?Whgy=CrVW+!4mK@q?pC<+^( zaig({f8lo2Fo?Sp%G|_knMY`WONKME#`wMm8|J?*OYk%p&frJVTqt`xFYT3leZfa& zfHagS`t|)Zn?>adr46q(!q(}Wkbnf?sr7nxZ&MB-Io%B+Q>!-#g^%BfdcKX*RK!w? z*HwS0$U)tmvYi!%7@~dQe(#GL%rgV4Y217})>&|`HYlydz-{&smEZc*kMTU+7IL>N z#Oaql7W=!o)_cBXRZcVT1En3Z$+ECNc@k`oXCC#9fY)L*cy+NfkmMT@v9@N{B*p2E>i;bOsY$ZV?~UyIO5;)8BSCfYxWpa zt3Ic=6uDnWvefJ(4HYAguOdUYt9tkH1SSz~Nz#owRVSJ=<>eHIp?af>vh?G+M5NJ9 zZWH46jl7d2`4JVU@xVnh?orgwmY{X%=^IU@s41QJSBCa8W-62Yb!Q- zHO!I2w#9(mJIm_NuNa6vnV95Y++VqjNr&YZFMIxmM^^dBsJ~G~B@4{@60Rx^un_*Z zjj9+Gh)kXYHORpBy}+3pWkCAoXc=OToeqLlxHLh$fZ|5*+W{iQB7 z)g8<*YeV+>)mK&1X($IDMocok)X_R%6^UWMZ!tzTnm^m*!eXH}QtS8}%#e^Skt;?@ zWQ&z0S^Af4OCbxDy%X)9V4$P9Q+4e`!k^e3>l8Py7_6Z7KMFuvIBWK+Az!=y(81AD&#+)kg1~rrzmZcyFc~sHt zQYU9FieIOCu>wy1qX9FV#RL1uPEbRU=LKkM8JUpfwR6U|C{;>VOIhV0MmzdqP?wSF zu^L_C=o_2r0T2LI14#3Z9E<-*5a?<5JuybC^VgWWYN|`ob(J#9`4xWx-HL&TfNASt zO3CPW>mR*|KR@!?(EH!~?z`hg=9!=`lMEPSX)T18ERzcfy-ARHdySJt4r8*p)7*SY zr5LVLM*TG5=9Qm2{1IP1G2-o5emkwf-4UXoiPYl1TCt9fMz+g_QV(-~d_7sqI$TS2 zU)?+MCm!xhG)pLbKm&kJsB2y-dqLib_|{e#nKfl%Z#q(n|15QYsCBbCLWtxSEk2@R zMWK*Xj2fjIr@8@mTp%;NAS{hV3u8C4L1mHpr8KI>S}*F?7Zz%%W@JF0fdKI>Jvx)3 z8xd9LPoq!vQ|^DJRq&pMYH37Wqf5bj!-dGqf;jD0{v9?!-v49jtfQiM!@fUDcPrh} zk|K!2E+r`)Dh;B5G=h@5pp9}vcXz|G@yzde&vVZE$NsT+M4$(TWPYSfa!wjZ6gDhw@y9a3G4n>-lOwE19M@;(5DT_VYKJX74A)e{77=R9dst z6l|Am5a(zmSq8QnsuA!gWwUWz$w-8)=C2m+=I^$V_E2GF0@EECi6{pLMwf*My&g7i z1q0wjcR7`VAS3JSr-yuuzYWT8J}qBK^xmn!&XDXNpX@* zqhEQ409EvhJ%m!zEuVK8VPaOf=VUn4XT1wz=!J@iXL+Hl8vYmI|RDn@*3iE+}~7B4Za_R zrF>?5WY=ylDquqS(OmWxSJMgh^-)uIXR19yEDm<~+1L?J{g-wO6{Xl6xTP;pDCx-D8MUDt>>N8y#s5wJ1#vE<9S# zhcJo^;x(GHVJ`r%#3N96wO^)jl!p60c1og#U|NxQn0q&Yu;43K&OzQxNe)EhR>QAJ0W}(w?7tnN7n#d#1d?vQBswpV33Q$YZ`i&TJ}_` z=+4bVKw?9Ij&WT5HLhZA?Ed+>V@GA7jdg!u;hnFQ#^bs3T5&X(Q#ez8Pwz1eJAxyh z^_hM3L!Z~LQ-hBq*omnF3PS0&%otJRe*8Km2zmaN_hi4`oZlApi+GqpB}9(lyZ!tY z1YsrrqK@QUVuxq8$dqq2y3ObfhY!1_C5#CB3yEcfgF4~fyfd4hJ#3nsnnlb}8wJSt zU&&sX>bQ?AJ?`1`2Kb6m?ID%7sep>(51y7u7N)C7E?S7Modia0<2hyFHo1XLC)LIJ zXP^(#S0=Q*$HdPX*qK|0<~{Ap;l?w5;$e_R%dFylFu#))vG7zpJYzX z*B==B;bPPG$fgh;crn2VTNf=WH#)0N)`=T1gqwZnUS}#d>o?X`H0lpu7Ev4Yds-Uc zrXT&7?2XpJ&ijYa+L11`HknQ*RRZre3GzGdDVY`5NSatw4&^`EPBl2+o&U$WBm7mZ zm2B=M8MpTlH6lozi-3p<&dN06JK_a?e2VD6VMs zt5E+nAz8FvVqzrQ*3g?)X{8ij;k$fm5_bQp8v{nVJS=`c>}B(|w54ibe;yA#6;Q(g z%PL=k{dB0*p3X#I2Uihuu-8FpYPd9YB1&ED$6LtSt=$d4MQmL-pvnaIxvyh=#h_v# zqf57KQR=RVL48znGHEX}6eumV3xkF5IrRBz_;3HW_Q3k7m5wE`f z>MqG#I`NQk?kAzT57qN-NRBNVLT;()-*(%G1{LNqfz7Maj@??5cD|qC{TRkkE#RAANfxuDD4_o480D?v-3I0;-s z^Fcg6fYNgZ#Tc*SI z@K>E*U7!Xmn9{UwhxihnOb@AWYQO`kKb*dBOh@Dwq?6s>98QCr7T&q1noRcATn14; zxd$m5ey=?jw>F;#JL-(fy`4d}Lhmum^-xDVbHHIKmCcW@yA4|sp7L7_cd?U)T$j*v zuv(Y*$CS@+ia9JdfceZrMYG1y#8nkuj^W=mW+c|+FgLjW2w%9J!jZrr*R|{+pG3{U zi?14)Q^J1X;k-q6M#=o>1oeouZ&AWiHvxB{HLE8CG1afOtDg!ysuYmAeK4k&HgorL z6JIR%V-*+|aOV*fLSxxW4Z(rO^=sz?pTHL;>>^GVIt98h+-Xl#~pKL0@%8r zth7t&VMi;us=b_%HZ~nz2d*ZIr7#h<*@7byy_y(yMs`L$dAF<8DfY&d_x}0dh$_|9 zh*RzQ1TCa!M0lN=t4i$r;#mct3>x3jJCG@t&;JTopa?Ia^NoBxZ%n4Dx_5r~4At~T zoO!2kw-D^8M{rAw_-ZWqI5~dG^JM(9YWIjyi_azgXNyPQn|fOwy$$%xP&Zg%@+*qL z0Pi|uYHK2^_N8~5@{*2ivr7l*KA(TEumk7GdxRJaEq><>T?wn;oc70FlQ24Xkll92 zZz-;dCwh|dh3nd~VixBTF6LuT{2Qv5>r?GUZU6+8R77k+N1G#7Ek8cy6BR3~4}6t3 z((3hy3K)a*d$9@?G(>V|L*|+VN9DmS3WTI*`kChn|Gqm!FoMf4jFKM=?52}Gy$Ly~ znW$#=mH*>AY~wVc-UGg&-9b&^pkcl8a{m@|K;ki!lgP-3MHTn0$AG={h8&Z9KV!G( z=_+MPc7Pm$ro#02%Oia0x?76ce-b|!IhT%n{vi;ZLzG%Cn9MC3E`Z1pL(M2wNNW0|AT*Xr$3mhR36DE*HbSYJvtJUm-~Ln49z;6TLu<5dG) zvG?N4?}kiApSq)W;#+DbWYRX!iODL_a?sz6vMDz$;W3}s!W&3F@w6?Z2jr#;mPl<9 zljzCA&ywrKbEh2tKxCin^mrvnuBnmJFrC_5Qcm7XspB49o!d4Pa5$5qs_(^OL$Rbf zlnxH}y31?jEhc=DavxE?-5=B=7B(^**5;trH~ewRBguQ>7~(=xg3Y=`RZg3%KPl|~ z%?3$c6MV!bpc1Nzi|GjUq0>-f80+JR)?WKVh=(vD$geRh1`Aoe#zv`=zg@;c?;9DG z8`F>6Ss>Tii>!G_rtju6_{lz) zw{hYGsP-<~@L}aDpyA%<&GrNKd(ofBhT+qOpL7-**BZC&_k0Pa5_!WqZmtGY@Oyz)LcfwWyX)OX0tu~H)?)XD)Reun525PR^ z0XJvSWO3f_g;HiCa6zU&P;N3$VL+E{DY_N<0DWb8I>){7 zaLbQLA1zNMK@@u(gE^%IaPW$)yu#0QJU{n`o;nw5y}PFsZAJ8aVB_Tix?3mYke+jZ zBjA)(ym46v?tzbiZ=m#%r*7sR(`a4YK=&ft)(cY^y)VsOF<~R*X37>f@dlI0A|K*2 z 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�r+BYvm2&vOTKGoMTj_tZcXgU!!OxGKZ(G{=e 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 BM}`0Z literal 0 HcmV?d00001 diff --git a/docs/src/tutorials/windows-kernel/building-windows-image/images/2024-03-16-12-26-46.png b/docs/src/tutorials/windows-kernel/building-windows-image/images/2024-03-16-12-26-46.png new file mode 100644 index 0000000000000000000000000000000000000000..69d7b361560133fa87446dedb0c88221c680ff0c GIT binary patch literal 115344 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

aAU)8F}(&^ObtWDPNqWn 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

tE&Fot+}rD#@rwLh3=IMl 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

Bc$2qu)OK#zZ#` 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 IM6N<$f?>9y(EtDd literal 0 HcmV?d00001 diff --git a/docs/src/tutorials/windows-kernel/building-windows-image/images/2024-03-16-12-29-30.png b/docs/src/tutorials/windows-kernel/building-windows-image/images/2024-03-16-12-29-30.png new file mode 100644 index 0000000000000000000000000000000000000000..02ebd36b8d8c14c494d9cf8ce014a22f8b993205 GIT binary patch literal 118056 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 literal 0 HcmV?d00001 diff --git a/docs/src/tutorials/windows-kernel/building-windows-image/images/2024-03-16-12-29-53.png b/docs/src/tutorials/windows-kernel/building-windows-image/images/2024-03-16-12-29-53.png new file mode 100644 index 0000000000000000000000000000000000000000..04541e36773bdc30e8c4e3a4ac4c49a6b902f8ee GIT binary patch literal 116789 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

)q7l)NoMlR#L-JI^q%%&j}Nl!U2w$iScn+ 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%0DkUGA9~%*AO6{Y_>4dLSJ$qgem#ub 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 z

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

$g^s6&d5Trl{L2DDpcp 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 N002ovPDHLkV1fa2OxFMa literal 0 HcmV?d00001 diff --git a/docs/src/tutorials/windows-kernel/building-windows-image/images/2024-03-16-12-30-49.png b/docs/src/tutorials/windows-kernel/building-windows-image/images/2024-03-16-12-30-49.png new file mode 100644 index 0000000000000000000000000000000000000000..5ca36404d5481607593e89c086376dfc040cee27 GIT binary patch literal 116295 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 O0000?$CbzpZPPH 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

    s$G-?nQuvEhRc12+B$R=aeQpe3b{T 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 literal 0 HcmV?d00001 diff --git a/docs/src/tutorials/windows-kernel/building-windows-image/images/2024-03-16-12-31-45.png b/docs/src/tutorials/windows-kernel/building-windows-image/images/2024-03-16-12-31-45.png new file mode 100644 index 0000000000000000000000000000000000000000..dae4a776c3b5a44cc115b7842f561a5501c02167 GIT binary patch literal 125907 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%0Dw$83LGNiMga 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%0Ay@<^p`PYSFc|C;D?_b zUXQxl?GOO_9w+6)CIkTydqkWLAp!vQ2(WJp0wDHNc>w5fst@}TqZtUCamb(NK8SrZ zed7<~tc{m1ckWzQJTGe`%FAX5MRXUDdbbO8L^}u!qa#PyB-=ts?zVj{p-TGYsF+HTddKQOo*<0Lsqz)R&TUDnn22q7OMT}eVwd^>5 zma`j>moJYpCH6dZ5l=Ola#l4%IU@_F9syOTFazm-ggqd%b0ptFA)eo|ZhwNYDcy!~ zM;J`3eUvgjliL9sL->p_fbOX4x{g8Dbsg*WNi1y0^65D9m0q>v{bbV=S*ojGN(BIb z^NK?ktonuZJjI>wMO=sGs=Sj4XD5V7w%?w1nw@8W9@#uyqtvq!%$_c233c-F+4cYc$`x>eru>2!^J)LatMfA9vTcKDlzUc3VOjH0 z&-lNV#dY6#n`X0wQq&ZowObgZ_f0fPIS8y8biCw)(JkhDL!{Um_t19(Xs4i1Giz?%(iRLI(1iE8z5M1^N zWiDZxnfLPt$?D=4wF|gS%iIRBMf;Pa7E&tX-i5=s#simr(+x3t){Ql|iX)8&E=7JI z_anF87huq_j|cB|Wc)D35TIkMhv`B9;?Tc68-DV4SZ?|r7+^o|0f3FPz5|BPi*dK{WuCy; zYycbMhTL!&P72eT)3E2qFck|dpARobGBvRs!ri{~GH!wP|1e0K4 zdFAXNXqnt3g-g?1YY8NMM-5$<>=s!in|Qxa*N69m8ekST0|wg4^`B%16aESXh)n^N zOh46_-a9{2|8a`%nf>_s_=(>S|DX2*Vpctyf0>JQ-T370@O7a19Pgj+H83{b9FUtP z9AW&i$te^WCxvwg z2+(&&fIW7=dfeZjK?F8j1Hc}U!ASJ`;YLIc03CD_qur1DaSBekKtQGCFl78ezKwfk z%*W>C9-BuMSB&hrse-UYF@4_Oso*F+S7hGXfFT=5w*#4fcY&}|F02jiiJcLEP^z4h zjM(c6ZI$^Hnos*HiYg>@EgwmLki8@Cw-iE@6b_AT63fYxM4dFcNoGg=#p$ovMQG&g zi|gjG?x>NU(FJU}*t=)Ug(DV7gvHJYq5g~V$+POp;wZqf0$tZAF}72;_Ez*|U~>WL zJ?g?&k^^haAh!x&bbJ%Tk=ZjPkf~p|I;w4>t3kd1PgQ3{hAS*}1ZN!M&reiXBF58K zBk$)b?vF_E{*jzd|7QUEbRIs>XDZQkqfWle{#3UY!SVhnKb%V;D!I0Cx-wq6R^mB^_B990o z=iUGK*!X$hQtn5;=B@x>42AxgdUO2Yvwc}6)JEYPzufGrA+Lq&AC$C@6M5dYj8|yv zTHzwj;J1Qv%V0h@YY}eZkXty=6d(ujGR3H1C9pFsa9%`MdHB!-2(D-LC;;?NAaZ_l zs-^}WB-?1i_%hrPYMmFg=sK4EA}B�i~oTTs@fM%<_?-r5Ooyjb&V&R%{o$AWu7j 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 z VC50Jt1g}fZ-g0>gcRbo94uB^ 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 T*191200000NkvXXu0mjfI)U5? literal 0 HcmV?d00001 diff --git a/docs/src/tutorials/windows-kernel/building-windows-image/images/2024-03-16-12-36-59.png b/docs/src/tutorials/windows-kernel/building-windows-image/images/2024-03-16-12-36-59.png new file mode 100644 index 0000000000000000000000000000000000000000..caa04bacb43e4a3a78ad1eb95458631c79130c2a GIT binary patch literal 589546 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

    rL+oSguK`v{miOp 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®kB{cdoC@-knvtcvp=suG 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�P&o1h2;RrKRUl0Iu; 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

    ~HwsA~ zn!$yY@I3YT+j2+cB}^pZrmoLXrWyQs>hk>IjC@0JIe7g(fH7-Z$i>*vEIQm8S*}dJ z&;DR9MN*=_4klYFMNd?gt03PTg-ij}4QY5nn`8fctDGgC`f7hU|N4b*rAhFo2!&@M zy?R`V_B83MpVgwwLuo$hpf+A4A>l|WL6xv59xHiK7m~~4qSY-`r0uD+J8h_-+H?9a zi!dQKe$V_S9}KN%Z+70d;)ldwB|g`J|0HX|jC~(Y7#9OGkc{D1?2oY}Cy6JciJxLg zN{BVX&CT(AP?{J+&TS4=EM-frNeqqY#hkWqpMIPpl~ONg3{B2p_{w?? ziwlDdqi`MvJd0CmTzy7opc@XZx2~pgi?@IR;j)<$# ze6=Q(NzPg02MMef)zqE^W9MECtte&8W2c!Y#t{nY^{Yj!EzAR>7j0#~VJHe20|9Z! z`}M6bH9dGs%wcLh6rGRXbuqbIQu5J9I#)Dy85RO~_%p(yn9OHU87T}t^4%$#e_{e* zM9kTPlvOnqjt?O8QG~@Y^D8LbrFBBZLva?)8UPlA8ZmPUTD!Xm${w zDlj+qWp5i7;Iwml;DlJXcGP2~3(5bbpFQfQirO!jKfm?MbcszZE?rMfm~Q^b=goFC z6D@E*PItA2=JrB8%Pt)pEo;k{#BjYjrfDYx=h=f>l5)<0sTIJcj&M&b zb7FRMM*Yi@u5{~GelU>#o_A68l5-r@bKodfo^t(p$&g1+7+7ePjVX^#ElQBGROzv< z;E<(m3GNQO9#~Qe2{qlHZw5P3M(ZhC)Wz16Ou%6 zluH)LIi}!B5)-9v_YuHzm>!oo@hdBiC-iPiS5DN}c2t!!KX^VGCy6fP-;Z5Iy35+I z(>y*ymoiok5vIc#*Tv##c-#~*$@S%Hn{k;2NfYnc4;6BxvvjrT4?iQT4IUeWsIlOw zIJsHK=SN|wkgBSRNW`YKpv6LyO2y)|Ll3WmS`11vFs8tnCT>Kn-$R8)MZ1yX2PDok zp;ORz{xw2eTC=zcOvozoS5aiMDFG2`0uIyGlh66UDSzG&7yQRY*X8 zY)(X!!mcjQT~NE{bghZ}dgY|^H#-A~J=!@g$qr?@#tnr+DDJ2BMy$t%xfx3Fp`q3i zyUCWMM!0zeUh*hfpVj1L&!QCrCw~~A)GS7BW~pn$WH#g(2R?%%QSvcS#^5n9mc-h( ze54*INwS+v?H9Ia{*7tS*WWI=O}>Ijme?$JUNfyWjf%6eZRSD&@3End*2C4kvOhom z8a(XS3lqwraz^gp^}ov<7NW*X?_<`!aA^C9Vm|xz_(niN?EB5Jz=)ndsgQ-gU69a= zXif$T5AHaQra~T6LQ=zR@m^NmNFAJO=}rhdT++UoKZZ1Ndr(o$43{=N#$}m-L;h!f z>NorW*3oxeT_0T;1u{}YiZRb~Q;4xM%+1DMK9HrgT6+INTk4V5y3Lk0O3af_&-;nA zO}knm7_@K&!eH>_E#E4&K~+HPvr53S&lLM^5KU+?BTsK%!$4^7_-*I)JdQkrqPX}{ zxzXP-8`@XnXwxcss$MTtJ=&3>9M8KPaJ10G1-^ueZg)Cm+P-7H?@k)&BC$1|k!~`0 za(&IQ9W>8%<=xs-A8@enD=qf8Dt}3|kd1~5gG$dzGx7D~?Qdt9?!m#So7D>hD^vU} z&VPG5wO7ZU00hUvLX%J6OC!csLrjvoluf0c)r}D|2l8-p-Dq(MD=9k0JyDm$H>APO z$l})%?j&~mJ^#_8b|%I%V|$zqY=U%^nK`^#&P&B&j7)f=&P8H>E(Dn9IocAYyv_M~ zUTV6B+hZX2%Ff3f!S$gk|6XhF);Fa2^5$(v$Cb)Pu<&-G{MxlRFUCYjV~ zIA>~`JdLq3K-j6%uJf+N$}K&;QetuG?gWLZ=j@izxj=Fu&-gi)!pq69k8y0Lp-{6n`z1!w)G1&j~`|QkeDqbAvgD)PHD4B`1{3+vnc)aC7OweAdP2fIF>ZI z4Are^v94X1V`qsCfFh2rsw)Lx(1%?pnPW%9}HZ zQk^=u3>8$2wjqeUA#}q2km)?%!DJR~s^m^Mw4~lq%4m@*&aU_>u73B9lR>eFr}C%p z!u)s6H+u62I)qUmyhJ)Ccb`^pSG)r#SNTaX99tSfMHfyR8INXmD2>EBN>48fR$)kl zlCnPxxjSQ-`dgKndJ5nJfHfBnbG^wqzPO8#?*)m8*TY$&z6@PNH zXG?z|xwc_|kbE#*>k%CaA-Zg6WAS5TO$lRx@JEiMwDW&wwXHotvLM7$6O(Z>@QNur zbNDEn>@?QaEmkqXvm#nt#b5!0xK+My06CO(_nXUF5Ut%LH)=HHHo76yA4-R~Lc z)_xPC@kXkBB||_DwMG-g$QUi?kq@2dstX>)^-_$=G%EH_pebV6sIsCpSCqyo8epM= z1>>XPB{4|jzjh5NdB1`5#fZ*shN(j=a&dU*jf32h%Ni8OLE_DDU0ufTx>E_GQ| zteAcaG|>?blPwpId5aB`e%!6fi)1oa|`7fcChfclsd;hy(xDLlJ;dfrwyBTSxebg`v_M;zaJ(^Co_S*;dw|W z=;DMI5WYc$(Z$RK1cP^=UdpUQe>)3^C_(b96m<4BN~}Y=$v>CWla76hOaE$}`1EzL`<9_Lwlxet7TnyI4sm0dZPqv1cKlz4z+y zA*Yzx^200NHZK~)Kt3a?wIt-V~YRWj*wC!lTgw=(R-LIuv*j)#`ha|fzxx`NxE z3ky4N7vlF2hwrQ-0dUg$t)&4WA>Bniuz`#LDG4#(mB%Bo#O|$0@jW-Of0GoJevGKr zdyUuxT-g#I6|Kgl3#{r^Bam=7gRBcCHxp6N@31n7Z2RCGErzBy!q zSTw{UsDs#q5JqOWm;rTww?)v2p=7qk3IFZzZ#b@o#)s6N?W~YBRsGu+9{mXpS=m7> zVo1{9lvgrKgosI|)}jMIN+!UB@2_42IiJCW4cW*!E5`}K$Kl%8Aog}n|2QJSpl!sJ zOddtHx^hYrJHLzIyS}hJhtkA4;69U^va5hWoLw7^X6fVy`Vn4N#hi(oiV^$$x1q9hEW8c2s%5Ia zK0Q~?wSUQWJ{eotmL$&`%1|*9%PEK?PwT`K>S}xYA(tYveP?HE`0I1kP?@Xz+oiP8 z@Lx@i@PM%lYtn$ur(hJkHwvn;lg#s{f~wI7tjHrRduvQs(3s2Vgh|VKkr6?^L}e3J z?^M<0y;SM6lCecp~z7!DGOL=F>7me)jXlXA-swRu-TTJ zFPW*M;6yd0j1;U=t<9V#QSAs831?AdaHF^I$ET^6bclI_Bm>%EkZv}RXfW1l0(+n# zdB~RDgRugBM@Z(s3Ks4q4+z|67($RQLBkks`R)m(+A)_4gWB4pfyi>@-`vIdtwdXl z7a5c|zWwi7fOnr5*xrK+<37-4>7ooA;qoT0&Hr==HU=f-f)zkJt+#`W$q3O}<^}cH zv0`C)4oEJ*ZYlI))UUMIU$wdPQBG28J=hihRq9lFAn|#*RTZ+mvKLpf=g-Yu$?_Ex zO5RqEF?A}I&@s`;WHBxtWm$+MOg$^03<0NwO#U^BX+|OZMt3IPUi9h}s{%%XVMo80 zdG7JShwiFddsgqhZFnm>efgLcbd_Yx21nNH%Ubd%A3zLTs{35BU3js%(5ZlDE%iFQ<8&&+Rzm zrcYb*JjCtzi3pOI^VY~xrstT1pNK5Kl(1gz+l{K@@1c<=Uz78!GR{mqY|d^4+gHH8 zw&qZsehfu;bg862WcYr$w!LbEinK&(l%yEe#j;~>NALi^UhSdTqi%!ufsFzEKY{3A zRn=@bXE1JUXgw5reI&4O5&exGjOA)N1qfgA+fNCKV8Kwh;OJCCp8jBO^M&!7(rFC3 zY71(yg!?IaRBZFW2tIyHIh}@@?f^%%oebU(bcLq9Pg8qc>i6)LNS}uT0rV>0T@wep9oWi6ouN4l6))HF0DQstFHf)t-JmYW|W(`1J2_# zZm6^1zI{_5FD^D3KLt-%8on|qN+HBUDKUGx%bs5iEx4M<-b)57EBG;tZurUHUbcYY z(>I-*nq!bH_nTBhdg~D40p})l!~xpM>ROns?}xH#`A%l?;D5|lDKv^hFp(ODcS3Jv100{r($jpse-OT zdJoDN%BZJxjzb^3K?_hOwJ*R=Ax%Of6@`P-(fOIKEVCWYcM3_$`NCFxR{Zkp&Uq}18wD@*GwO(GIK?Pwb zYTn04cj9-^tH{EEJhu4Jw|I-y**(^3d^(^sdv*}%rv-g9RSC4S(^L7=@IPhr$ae7Q zqhVXgd&%h`Ftm1gE@k!_3r?Fr$66PH66u(+*WjpM@Co)B(AO0S{y52YqtW}X;sB(T)_0ahtGDDOBxOjXN;2$dnD3Rh(U-_6FhtdAz1ja!eu24D zqCDubq6O?uJ8TTLD?-W2z)ACYTfV#sb_+j(D=Mn)c71wH%*?35Zy~%^1_m}*N>Z*H zMAlPJN#NakvY!%P%S8|6Y)7uU*J{dN#~_9vPNBk7iKtF`u4#0MgH}f%s`tH}XWhzH z-=gTQrTs*sI-Bb~WTP11;=V4$sJe|2c2qV8jeR5_6s$4rwb9?fv*76Ap6Cz8S9<>k zI*T^y0Utf#8Un`8o@Pwe>W7O7mjQt&=1uV$(B)9wC^LEE(2o8PItHDUE9?h-^T31=wUGsxk+NW^&=^wJBqjMN^VtWcX38 zu)tqyZ%&V-uu;m^9tYVwuk;K>L8?vw(0jzu)W=!O_o6&0Q==da^#(yfwL!N;V&{W4 zIYU3)V$@9%RjyWGG#@_s+ouB?;A-nlu zmD$X6QdsHD>O5s4#GC^Gy8p2N4xbNo_-jlwwleF$r_*M=-|!+(rulw|ECCYJmc7K( zC1w#}2AOlXoC_s;8`o_aX~(7QuxmxNEH5fSJ$j)9m{?FSluq8zzYgDBYUIe6H<{8B z%UFh;2NOM{utmUstWgR9p5wD7+W-efrZaMp-jJ%S1DFLLd7wz7V?@4>0|=WK6KKW= zJ8_Z_$hlcviY_IJ>5{5$jEjK=GJMMGawsy8{n8!wv4BHu=+NG5Fl!Z;^^bWq-wRw8 zbq`3nb$l84Op?zt#AT6rc`lJKk5}jz>P?3+4UU1T#D&s<>95Wjb!is&#UQHl>O{rP zWC--owdctAjHD$YCL{_sG#rRe>!8A$YJ~~%;NWOuXBkea+#jPoMl+0WZ!59UD+j$3 zhcX5t2y({?ZxbpWuvA=K&}PF0z9ZNYl$XSR$*SmKrk zY}Z0MSQ&xgbQNDu73^^sh^)+^uWUZH@CkGB6bq#E;Jio|Q-v44X{x9U#)({VkV$I1 zbdUC7t)rBR0uz0SIi4J~ZNh~LF@f=H$!tp0<*Og)m~^b^!K&y;;Yr$|tjZaP2nY%j z806b~*OVflkr(0~9YSSLYY|wQT+<#nSmh`^) zy@fI4idS1bp&EDd<}JDiRVY3;D*s3B>xarVTx%axsi_l*Xech06;tZwv>bpq--Om1 z!W7_;OBcP&5lr_2oFR{+xrtKUAN9TDoZe|;D379(%BuE%@|t6Tzitn#ZnSbn{(#5Q zxbwUEqmrta;PKRqX#=OEqdC3;?D%lqWFlfn_Hq&3%V6nKu}62{>%k-_NM9dC3n|*R z?LjqW-(fKb$>A>rp>iJ*y>>!z{7({IWil|g-p)sW!BY^Nv;~I>5h}UNPcwL0U*V{~ z9t%Oa?K%cQ31#OKY!}gz_Fv?-q<&zaY?vZY?tga|Pw&lZx-!Y5Pg+z7b4sUXX*}aZPA7};?9=@#l9`2(ad;yB zS-UEZ=Ydw=)NhHSqtDs-6?^4me@Qb2f*!ET-5|jJ5b9q$;>B-ctZ%AZjc)(L#DvzG z9tocj&e>&yMLcqm)3H|pWSh>Op8Iw2UYyIOb^d zET7GlD0&xv5><9ggyZ^;zQ36N8HDC%=B4mit$SJ>1X58}brkU|0&@@|6iP!MjPqR8 zzLQdWc*UtmE~tKO`C3($5ODB}eC$ zz?QeXC*k3j2$L4s6aVB$n@Dj+|9n&$N+yMMq@ee^frzdmuyN$s=#!Gl2Ggj?y1aD> zN{dujRdXU`Hg1aPi8{YVxx{$PWJ2K(6|Vk)XLyws91dxZ! z7(<$;ej(G;b-|km#q;UMA>u4r?PQ0BY;6dlRi4B!#w5foR`l3h3$b-%1nJb`LUXz* zf!Sbi4J#y3)4XxX1FLg4n4NaFT#$pk)Dz|4Lv1ZA^zk#*agVvPpMk1aD&`0a#+vpk zIR+Scx;8vvD0<~=RqgwxpYo=Jal9c`7-9Irw58!&gA5d*&4sV%l-RjbelFw56dHSq zD=~Olc+JfaOx=%0o!^>IoF629wv!!U_TOM$4;VV(JXquY(o0?3ozH%&eboHmatr6} zlYjW+ZFNdLjoBTfvn$FeXM$NF{gIA=z7X>DfW>{x-4A0;Q$Y5|)#-aCeYwZG3ZcY| zlMtU)PeM5)x&tKUYNTOFCrI(^RW*w@!(fAdqhjKtJ{-bIFZp0U1i?t3^`f)Y1rvc< zq^E%?MZxf%V>??H4Sr>ozE$)K1FjOhiIL}X=Y(RPt&*WG(?}#=ky{OT7QAWC_6P|X z054%|s=Ub>bm}oXa=CTA^395h*~X*BWLF3$3$Jf$n_e@sFhNEq8k|uLmxnrwFOLn< zze-9{kJe{8%QCZ-utW0|6IGmB5KfSN9Zt!jn}>NQs~Q%+#1|eYZj-ojkif_NKnrbC z-^6;9BDX$9#Kwe!?|2{`?<8U4j%PUC{_|Cpbu%d}$iX#dLZGFnA?{?!*{$Iza_$_yQXA*Wh&#{GMEIDIsuBGF2nXbKi8g1C%n z24KyYiuQKPmk;EK$-0}mIsdHb^*_rh=tPW?Bq9APxWEEvWQzd636Rr2W#O} zMIt3?y8o#P?Gty1SsgDoe(n?ulhde0#lAvT(4L3FdDA5bs~@#zW|=NjU}C*Fe4U|N zA;dvMYj`vQ4rM?c*?m|4CvM-D8jUX2@amgJ?LM(u_xYX`pX+LdY(v%a&-Ld!t^M9F zq?E_-lJ!DOdjX)z0{CM$C`gT%N4^JfUKYUs1F>!vlfha_`;Ww4st#lEXQ{S8=gEv* ziBG3*-%CiwdcD)Nt6n6NZ2S@}1H)KzvG-_g{oELfPVmM7L`E^j5JK>?offBGc0Zw} zebr`*IgV0*kK_~7W`CW8P60ePY-qM|`IUtY8))edUoo2U7Tx_KqxlRWWR`&g11yRq zC$#luVXHuzt+k{4`Ih_!pPYKk4=h0l*23fIeT%*~ZIeVbK?v|9hJhN=&{H=iL6Oh7WQF`bAZHca}4 zj>$SK5k(mh-`GyVXwmpB=O^vdeQ=8)0UYkSRd}fgI3_<6DA)dduqpf_%<%av#I^^< zFz-sI1AwLuJp2b4RH4X&Af|*scRD%;mPlxQuzUtkMm07LN3@j{v}D>B)vVB_1!WYr z@L)DU@NjG>aj@|k8byGbA*;Q7rnIb4d@fJJWlK6>ZMt^YAg4wQI)z_6mfog!)jVd& z8H93#Xe?-heFRC7GesuTOBQ@_?jyOoB5%hlcWf$%@MV*ckPk(fHfnTa+|WQ6nF!j_ z3?MulWGvEM?ZtU1Y&ry9SrkIJ275BHD=fI^-U2Ozkc`l`Nsxvee6X-beLk$Lqad#BGN*H1<^oJtVQu;sp=%^$(ZHb zM#2dbS8E<)`yZ@k(h_>GYz=xIYrl{4G4Hr?&b|vJUhK~mq*;%=8fBTa1``=*pQ&{Z zPaz&84dCmR;CR?jJ(Luf3v-F&dGo<4Xf0&eY~{sZdUkKw^lPh@-uaP$bWPdQ#|U;n z?SwOMQKNKV9h_w1PQnHcv;>xs+F{a~8m1x@BT*ug^t6N58?CjD_v0)r-%dw`Rm}%l zg;6pX48ak})0LHMW)_%VZAf3|{^sF`kYM5nk!LOK8xCiS87JUhTvYH$-4agNf+mro zEqYmi1u1j<)wF&>9kxfep(g1bBNufIN2A;z1RCWfmpAoC zp&;TZFz1R0@ops3JyBEjppo>t7}dErIkuwF7vZ7DC$VF_-c0EpCLiD#ttlD<~2^ z0#hB;%G_{3CP{(;hp!COYq`b(;HY zW@TTvs-rWbVQDkVp?y<>JuO5wT#^zoVcsU?Mm!Z`$oyTMnVynp_+?vX?U^{&fqUg@ zdV3a3Q0pLD!tdhx&y5zTLT_T^HU0E@u}IiA(yw`2UzfSbf4`<<-FFfM)6tum6teS| zZO7IVBhaI1G-y}WOgc0!K^%STvR1;q%UI<5KCu(BSH9&lXt8-m;%Qz>MS1&atoDHc zpFL=E&YS(m-l!`9vC2FRR5GIG+oGdnbUhw2emI?@#G$Wi^io!7mi1t55hHkllKYp7 zF%YIC@$iTR_0KdkTmlpxp|Wb+W`Z~%<7gH*j!5-`EAIk0Mvzi?v>bae^XV9=;k>~S zX;Lr|7VD26DLw`Yhl45nL_f0)AIrX;Ys~2vWS~Z9maM)f1rtKg6#R)4EI6=#3FDHw zS6D^ww}B0Z2_V4c9|eU3$7pqbWZGF|*3k0NPh9L;NFbTm#jFcW{WOfMno*juQZ}6y z?eft?HNmMRolpyy&vJ*l^!9qx<|ueWzzy$BQ1x1M#-MUgEVq$i$`B?jUYz6_1nMb}ylSTd@fUi2-jKK?T@3FQO=5)->sPU0E-#-0 ztT0nS0oxG+Bl}-&Dxtx}jo{LoQ+y2QZrvmXx%i_ybs2C*G94^U{*j=AzbgbK>&de zkdFzgiXm0i@;Z-8u+At7qkU!CGBh;0_G}I%6GROw)n=KSvtwgt@1z_$E$Y6iG_1yo zIfkgj)c(K;L-;oBroQJOwqFITcCb7ix zkw}$DH`0BDX>1WQS_-FNr@>@VaAiz6I0)cHWF2>YARIE(GEr7bPe!iF@j)V!$3f0+ zQfs)UOs)!nLDKmA`QJ%y`s8 znHI^VuDweOET>%KKjk~S{`gp3T~a=~x^E(ZcM-u~i{xeDi(=&qQkn1|v!)F)4aP~b zTo623mhlQt1^}>FqRgt3;4Qvmr|g(|7A`(j5uCKIW41r9tA*)V{#&+LTJED=N_*O) z79Qa!-Yg-Wc;_oie>8bom;*aM5s^$qP0MBbLn{+{T=BntNFGQuYw35AaVnxc$*&VS zq_m%zZ@JC(KBO`BmMeeEyD2s2-8lT}Do;K%KM<@tI8zyk5p0;ZW#3$-!VVu!uTZ(y zUb`3YbZ*2FLCYbMz!!RkuVr8LSWk{6Y!N z@jn~ec~{Zh{m3nl`v1KIxriNmP)H;CKmT5G6ARu!{67b}f|7R$z9_pZ+r(*jO8j|a zsmfZKI)C4UApJ5r@HU%|VX3$!%I<$aNFnnbm6iWM8GnZ}APuBQA^RPuepde->zYfq zTRVm@3T>El#2p8l3@!mxsCe`AaI5!4GndzP7@&dNx%9rCDI(){P|p>;1Uj9&y1Jt9co}h6 zbTs?lSJm|_w@zj7ZndtsHpO41>o|XRrURZaE#dKa7U)JrJ@!F`dwe<&KEz^CrE8B*GC7^m8~HlTMtS|G4Zb!%~Xx zpBP4?;02CFPe`Z-+%5(bUxPnQ?NwD(xl{t@ju?(z@wDSwwLh}!CmO0NN%Je2IbZDU zYWWY%94vH?_V3e3OjsmR&6_}PRk@MYT_eMM&$|m6tSnvKiA!P2$Zy$gbz)_w`fya7 z*@|(wXx4*JJP8SjTmK$_dzCSwYhv=oK;^TAGFegBT8o0bYU!-o6=|!a-tq_B!XS7n z3kg>KTg7s@T-q7(>9Cc{9~Nb6;ff8QCbUr~4?5s=hF4dX%xBERTPp7e3=wc7FfcEzBVdi`xy#u}Gr8M#-yDKXG zep2HS`5jI`PEPJHk>L)2JJj>UU%J@?&Cp!}0v_Xq)^9pD9$kO;N9-@uwOJh;9CRHt zj&pte6&l$2^>-u%F_-z`>Z<<$won|6R3LDVy|>EB%EnTdS6mG1EV}`~K{Np~^{23P zA*_B>Z#qOg>_7aETMGz(7y5T7q*@E9gwG17WMc@AKR&ctAQwUl_`~Z-36kL*&|+;+ zJVnT?=|3~0#nvOmJ-@~2^{;Nz65}MqAR;1SCHwGfy`N2CD%j)R|B*(oQx^fO3qx0p zAmZ-vI)21m_`2JgT{o$(&o;uC8*#=QS8;UsdeW;o;LMf;i?O$>$zE-8w4u)Rwh4VD z;f=V!#>!I1j>b4D+}zw;xXo*TTSBQRi*iTyxD!9-1QgKaMwWuooPQ5hl`J;;b?R`T zS}frPM$HvsHn!YcRD^o{p~WVqi_n&jq=f? zBfO{c8v8<}u=<9{oRL2DiNqIWUj1s*7L2|yT*-`PV?V0C?XeW#Dajh&f%Cr|w~{=l zAAp<462O#pbYu<&m@2JZRWBS0fGAK^SGTd10NgmqyP3qRi;Km!{JXg?pSdi2e`p9T zwMjkx)!LiPz6MAdRMTN%Jf!^-EDu}l#dVniHrHB57A-q4D`$ppUA(F03bv-Ub6aU>kNYLeUX{h8o@ejY0dLq zUS6m>A9NoKid-*lT;6rH{Qk>4OvPW}eId-f;#h#*WHoVL3Yq@V^NU8Zu!ZTc+!>j_ zW~KhLt4ZsuQ_95bujNT{Q&eNIxnoqF-QoT?S6%>BFx7E&T{Ri{Xu_3-t&%3gG!&11 zd3o7?6aq;mm@W@@u4lda3*Sn9#3z|AVM~>VP;gbF&o+?C$RFOJ967tGn5CUnf`B zz(0jiJx`Z)D{U!E8o=G@1iT*wIeAuA7TilrJl2q;MIbmz#)A6_84i!Q?#1~n@d+Nz ztN1NcPCKhK2|OgdNKa-B82$j(IO-w_s&&Q^(Eao62CAHry#EFbzr%#Kpy06c>Wz1W zzUaU5Vs>^tk_|sngG+kNyU`r4ApgzFz5H{v+^vK>&jZ%I*CWUUsd|6@3Lj6Tus%mu zq$DnXEo~|4@SG@F-m~=gI@O{PKhDwH%kfjJ?F?A!*wYd|opAO}8ZT(FzmJU9im#wC zFyptBx3qeU+M0SA8agaqyR~!3ffZisA!v&N_sazd`!T^X!rk|k_5B`%3^+LyP$V7(GKb-J z29RMePP~Ue2GO^u{&zQH1NxIXp0qm{7MyF~(Bf-yiob9F62oiz!TDruPTRh8-6rN_ zOJ7a3-GQY6sV7Yj3jBP5bqK9_{+KOQle!(#qAo!slSJ7;R9_8} zDLP~Iy4Jc6S)}#CC{gC6g^dN*U(h4Y&nKqI>crN|+x0CRJ1@(3Hnljxx%~RWuFjUX;Jf=ry;A-%&4a_kkG@04 zTEf4Z2Zj%qRFG&FW(;9_rpp_7qPJVMDJ~m56-oP+xBql;{44|7_FH_OJO^)ZCvtlF zyw;or&Dhee{45Y0sA&!0{9=f(Qg9Fc$k##x1Lo!uGd=qcl5Htcw`l{Nuhj-o2jT4N z6xfzLaU4N?VJmA3h%P(rk?pDMz;d&#xuoD?Wh7cz1h6y`2aGyErNi(SF2Tt)^;Ld! zz~A3KK@A;g;VPv4{|>eyN`JHOD`Np&1fps0#u-*6w)Ejf9_lt$4pnYu$&>0C%`?`L5f=ZNH|i*1WwD=;q(l^nQ0Da{y>)PRyAl74-BiaDMf}Ry^<(OTw)= zD79l61b2CPNn+tS^U_K_9GAna^7s2E6M?tX;Z2bYHhDWc6)is$VP(>23pDiKL4ZxzlZErCf z85#AS!8(+vZ>O|^e4k$8ua)=`|N4Co$U*2>j4k-8h?e;Xz{_4D~;ispVWCnbUG$MVeMLpD{= zhu@Q!QsVE2|9%nsP7Um?VL2Hv^|`pHph2B}*j*O zEiJWwzLAzixhf;?w?sg@Z>U3JHa}^p%o3HRMd=R?2?rsjC`}`v!?(7)f=F6hF$a-> ztY(+A+MTiaURt?D};GmIF-z!{>kGtJqJIOcZ5#lr|P6tD;eqmcTMd2I-~ zy9Pu$lM~jDc{u{yzc3=s_grtdATkWtK#s2cez$tV$=Xvq++~)f;!-mBpT=6{h`it3 zNw<3XQ=Iq&&}@QsGaWlRJDr@IxI6w7WxwnBC`>+cbaW(xeF5CMBd0bE4UO@1?&B|g zB0H&i#2m&ai?)e}8f8-c943u+uvFGZjvFb77E$gkn zNnQ%FM1p8QP4|>p&5J93!8o%wKw=RVO2DM8h+@1+8*BsDuQE-m!f|vDo4%DMjm+D_ z&LLV}S-F2Sd)oN-Z#n3Boil|=0UZiJFV=y}4Fsf=|GwFV=;h=5m#QRggR*5o&%#67} z$VkemzdrRCzQAHC6{FYp0e3I(?a|qWRLZflSWn^Z`yi?7WaBIQ3f9#cU|rN`=Uyerj(G&XFq%4Ud(J{cP~$` z%39OHtGNGd=iquZVBu^haY+f6KdP{O=f2IfcEXu6a2%ck+uDJQ7cw{)O>mu|Sszpm zBi3=2)8`p@5&%VKN;_YqpTpl5#o=OY%1~g{ZO>hO@1HMgJJ0RjcBt?c2X+t2DECAB z8k(EL_=jsmTQ&UiLqy1I6Fep-`!j|5 zR{mkn!=p#*5&?fAWGH_Pc@-(NBaAk85DIXLj&jAqspKONk7*cAfqz1Rmot(X%a zDJfyd1avHSz+W}M4m5B29&XP`I89&q9Id`kM=qEE_T2 z_70ZDevh65P=c&9^2FN#Ljgc54=|%1gkSxb+z;tNwub!c)*=e6xSjbSQ-hlapZA#KcZc;M~iTS=bwsYsSuH#oIVftRrqGjgD&@p`jB zPI~(Rnni&~ZA&lD{0rIP44D*RE7MNzX#-h_3TDqE@ zoo!}nia+&OqLLDsF_N=sT|l^<@3+$y6nL2&N0F*(W9AchnIN@ad6(5OoN%~e<@--c zDbc08f=Xa3b*s^4A+g8jQGrIP*L%DCYW{PY)B4j^2UVIti~Kf;N2&ii-UU6_Ii}meIUzo#|(VC$U z9fX~%lLPm44gQhGnY=Dk{SDg@FTLCQ66tyg{Hjj2wiJ0zXU__pIjA zyA*S?hqkpRxgM%gYW!m1xL(pvCH`=5fO_AZ1fKtOakGyO8H>$tepH(@0S9Zl&R{Qm zDd0{|0yHLoMdyG2MliekW;1pHz$^jSRqr2VHhBH;)|j5ly?z6q7}XADEij2Wz8Y7^N)$3QG-{o(|;mK0{KrXp8MfyCvUUX$b0(e=y=R1aX?Ha9m@ zx)0(3r(4gJ^!zaO49Mr_jPac^U~h1RRsc-!=_E?(1*;eIe7})M#=m>FU&l>CoBRH| zNdE1FBOGDu&LrA5`M9Gp_fA*)RM{?Tcl1)Kkz=j&4)0PuY?jA zpBN5_CAd?}!LT_X=;|V?8u3>seU;?-!FX9?Y>9FXB8mDRb|hH^#nDdAidLFWc=Bp_%BNJYnDBtSPl0d%<|;qQR+cp->dJ)NZks8&(Z{z3}ZuXJNHFOx4 zT?pOA#XoYmcfHMbH7!%=s_lK;IsQkbUo73ou#MlDI!VZLIbrcDwX`_zb~7S^Au9xY zNrM>9YP}O%zjH+r=;7QSr!7o33uJm-!XxC8;qcL-NG<&fj3IQK>gJMk7oN!6H67M4 z7Bv*OxN5hA8kj7GY6lvlz3(F7AmIRrGV&yL?Qy^DTkShJh#ci|P|Sb~ zJHgW=Jsl#D=~#Asa0em-U^CtJ6M*9Qd}~LOA45*2>x(Z{q6FHR$lk>e&rE?_>|Zt zlzzS@i1E!|pX1(#v++#zvW-vih}M9Bk$U)z3!KQUV}5`)U?4*4A8h611}Y7zxO#3N z+4($xh>fBNT&!LEl-Wkcc-y76B?y>iJiML(K)6@aa=5tx zS4(nu^zz-j*C>Iyj2xnr4> zOs}*|0`OXIwh}kGpJh@?^bYXy_FpB?^m-2rqvrb_9oXVXwY&TOA_0U*Te)ObJh_B} zybFN*Z9S}6X}$DrMJ#+njcmTZ#fVApwiA8-T9E8b>1=ESa|lTgl0d?n3Hik^BDMDg8v~UGhgjkS%L%K(I3BS|E--m6o8ClyJnLvg6Yz&EC z2z01y(Y%y|vRC^RPkI7Yq~A%MP2Jk*v{63JMCJgGKjM_Yng_L%~!$D1=^SKfqqg@C1GK$ovO%(nJVNzuI^DkACL6jKd*93?By+dc@6|9 zjR1bQ?sd&GAcf`4gBNP8&gmxu1Oc zy&gqdw8Ttxy<0|g?7G@~5uJAUBjI-X6g#an)U(&?U-(v=yMojB_s=dXzM{(-pjWS` z1Glh^hz9S!O+8J|WQy&UyDO=_I&Sw2+9cf3VrQ;*8&7 zqWSS*(}q5AuJV~6Dl>{yRJk7^pt_*0G3j6!Lpx8zjW$(Q=Q?_bn}Z_~TPYfT2OY5= zpNPU9Y-lZ8!htVHn&&N5rA)4>wnXM@x7=~^5ASRkE>nAWFI zC@nnk`uKRi7NDXF=J2xMq>KjF@Txi|Y$MN0Dfg>RJh$)UADWr9`1@e+=D>F?xC0-E zh5HcEBNjvrJrEF8$3AT@(^d3|;vRs{y~JGqo-aic%qc4h1aX~W#kHX4M;d_AbM2=z zApglh+sw?28uu1Zf_BBkYUx~$097617m&TJB_d-#p}4KMv@MYUVzu=PAtIB^n#mArdAs2IQR&{DsF}9G*}Sp7=}D@Zmg9TGbkZ~NW3i3) zTdQ|>>2-mJReC_S5JvM*u=f!t{8+WTP22D2Ip#KL+y*$;!`j{ptE*kEYaM!;BK8v* zya0dGA0VM?N?hv0z37gYO9F7BfWSOhZGR8Yoq+%gOp;TJc^?3I1^`TM7vgh+v3?N; zv@a0v^CbLQCxw(Ti4SQ+eOnXD$xvyxL@}iT=iTF@9-n=(t!h3LwcC%BI%;Bv%2wt7 zJpcx9@$*sYL=SV{QVhJes{2^Q*n9U=2;+8Lw`XsT^-CtttKo2)U-yhs8x~@|bAR`O zcH<|5a6+lb(yf8=Q43I2$S`U~)ma6_#`o8bFk@xo)AmoufP@p)DcIq>Rj8Fk$<{?; z&!QE+3ej|}89e$PkMihZDIoRfra`fStN6uT2ItY!EKF4xh{^Mu9_9wRzX;uH1Kx>ir%~9cZ~~3wB{vbm2RCCSAKiI z5d*4$FI(Ad!NR8-*Gq%lu$r_v=MUhcUvQ}=O%7Cjk2t1Q&~adS_7|jKEcJ_Mxr1E- zRiMT%vdJg2V@Es2c~r$H3L+zIy#C>yqg#{(Q64eZ77TR1BX;dT$iC z(!~Jb2Bc6v-$nLT-3G8wJPTGg{UpN)RDQspKpN(7jWZHQcHUAKaQF?CrV9uu zFfsLpx)07fiQJNV>_khx(tLUM$v>pr=A)ml?#zswHyXXn(=59^hUVjkYIDWTB`gTu zwor>bRkA;QhdMjEVyh0(=Ckj1IPuN4zxS){WMBBPvv;mKHWB-*G&#zvq)GXqxW z5|D=q_+-DzeQ_-VZ%cveW>TT6hq6i!q5=gfnAqPhwd;<9ml6IO;tegQs4hVpc1#h& z!-&Q}MF$yRA~GVpLTz%g>avHeDb0I=aDpxWoHH9qoVzA(!PK!>96<2@Q_`8oL-qZC ze8$Yj3=It_W2_;hFr@6uFxKoL>mVs)PucfTwz6g4WvP%YlqE|HQITzwB!(;{`@VgT z-|zl8kH?*J9*=vL`+B}#=e}5K0*|FCTSk9uPW0;{R+QKk|6YGvJeGMyMpxoHr+6>t z%SSmqP)lErn~M2+oW@GK2~|l|$FdF=86^euvftk7iUIHAe_%6f7E=R2o(h8BDi0^U zhjf9YoB#K-Opzl%cwGr1pr6~^l=pwx>3}_gp>u_{Y|-ew0G?~#ljReJ9=Lv@lHFWfK>9Eu8T0gTw2ngDUvdu_ z_ewb_=080lrYEuOfR2GJEqU!FU?tmU* zUi^i&1GWO~+i7s|^>ODMUfZ|0n9kc}P=%1N-Rn^{wsBOJzLwRh3U49&t9*_Tg*M055gy(_JYfia`9NqlqotOow87wN8 zQw1)u`Ip!uA2ApbUlsD2Xp`QksAU<<&mU!sCCHwyZ%=SM+sG?RD6lLwM%R>xEG;se z^C~DJ4Gb7CKaP|?Xr}ZB^nc^-z9uDbT272cAy26=z%?%*zQSrDuzz`b|LAwWwQEbj zM79h!gt;y=a($ikOFshA^40g&q+u)No?eo6Z8#k^@B7?*vUCH_9wDBxv?ZNm-Qa#f zP?Ly9bJT}U5F5Q*y_`9!v2mVppQE9_h=m4YcJpJ^_ETNQExgpKTcEBBm%2v8c8Oj2 z^vvmff)ZMuYCek1=Cg0Zs5)-yJ3vNY=XJ&UR?I_~-1|R|Y`>Dp6q76|UI|}V%y_xz z{#Sw=MMbtpy{JoEf}~-j4=cB_tiQm{USBI=m(*0av7PSqcD79J!fu9zu1@Q&fzYA4 zY6xQQzk>N2=1fNU=IT19b&!63e!Yd|`!c{Nl>(ogon0k1mzV2&JJV2AW$CY2P5#9fbP@PG%J@)@Gw%1N=>9tLtk(t9n@%>`as!&FyXX07 zc@EH!x&tT#qEf|if9Rjt`2q$B^Hk0wf>sCIp0}}m?gC~=2#OBJ(dvYvlM*x`yGZ6k zWFK>wXAf)URo%nC)J7#D3%?Gs>bZR+1VYcOMZg=YhayM$nHbN9Lp>opu*MDD;~2`H zn6;9_>F6K3egY7W=%YsRID;-H_N@PUN?s~U+{<8|;XA&eTo^~3_P=fRltLAH`wWQv zumPKGwV8SWLLe$UJbeFt0w8RT&uqOZl3AbM2xQgQL^r$DSpZPEuy_ETk9aWNZhhh7{82~y z)&Lx4V>giRcZFJ84a)c|A>}`GzFk-q2gJc-Rr-vxm@+ao`m&uCFD7DAznQCz|AzsN zb1EGBOjEG`g|4kcH?O#?lR9>}e!a+3b0D^v51S9<_>G(#I6b!<*mt zJ7V2wFt7v>he);B!EWiW{ryB}X>VYF7(_&ZmN1h&*@6sZB1fU0QqifZrJ>L(3M)Jp z#l*OuW6WCouezQ>JCO8M;nZoQWU4HEFG!XbIT!oYQ9f|TW2OtxZM$3Ff#`r#`79ID z`p#-0u-?x;OuYc!D&PWhcfWabGUE%S^Ue29gy6w?{}2_-LEw|q2(tAB^BKrku){#| zYihivJ0YFF#7JQY4Sz%{kB)f8>1^I?LCK*=df#YusUDA3L{%I*V2v$q3Va>1Cq@Xm z$%-{ab=K|Skxr7>(xHsh)N6|}p!N^UW@^v5zWDySY`$WAZ*KQ#lN5hORPIp}m)Y)z zNYS(bpLPE*=)Do)PABBnkn1+#o4^M3C^z`)EOM{eG>y8I_F28+U}w;Q_J*^SkIy?R zaZ^SE-bCoD_zw$s`cs1gRL{!www>$Y9tAiwTc1SY?Qn4|9bUTVn81QCL=rq5ZBBcc zi4jJ=?Q*07u^q^Vl^Hcf{_K|xk3xTXS?nb9N{#|`Jl~!mZ=JNi_NXh9R9z2mr0DRJ zBcxNXo_q83VNir2bGQS8d?#v>*Jm0#PyTPBcFr$&yxx`R6lHJEKQmrZi1OO{lCbcr zva&Pqf|?o$qbl~RF~6}(;|={T*S0q{P-i=r<3(3ns%K-7TJOEFD*DoR5}~o~KBPQ7y&c0;sDq|& zdMd0P1CkzDVXLA+Z!9Xhsh+Yq7cX9<9tUA=q^BMSW?NPb*lG{`i4*t`r`Ub2Rk}C z0Kx!9(&UezLQnz<>HxK9Jdu5{XsoKLs;kRz7Q@EIb}sh9nwy4(hPpZ}=~Si@11#td zz&Akq1OhC=$DQkZp^NYG=*@E_A%S)55U5dsftvu70AV7a(KKeXD(Gp*d6raYD3TZ6 zu|z)?;=U1(fFk=q3B2uLQJ6L+aWruf5|@n0pZAtEWHAvo`76U7rxBX{?v&{8`@6k8 z)>STDH)5rl{W2*|(UW5PgzDPj;@Z06xh>rQo5#Nv+l|nk&T!4t;;0A{y+ZkMA)D&Q z^y*D}k%iese`Tt%^w7}pB}O>Ss>R{$yAC$ajYTU=*v?trMSQxHyN8!4q^+_SM0I{|2*)f*NRqhTQeK8K zO7S~^6iW8A3>+q+V?EHw$Ow;bf5I*Wd{U;Scd=gooi;Igj;<+kbypRsqav>6Pf&W&TBVg;V;rBCP9e&YsyTDPP ze^ng9w;0yi{MOs+ce`z1nt4i?bA@jxCSe)S1FWNvIPRWB`GX85w2FTVkwr}_N!_}> z%XeN=tKVw3W2-DLcw@mPUbpX)Me5DbF{_a6KFbPj3%Ex7ufLm7hp*su;;#OS_IE&T zD`m5ycKJ1Bspx|^v~XV5{Y*sT3`>w#dBD$yO*t`PnDGR)oqYs%=jLv-@}Ni@hgilr z$^f@6VYD0{k(-;d!&mz|{Hn)J(tx+%x3bS^5_ex56bjE@AAYfR!)`J&<9;p5f6142 z@&4eGkbT$P<@mhgqSbqFj2$YJiH@6~_mV6BDr_nwT`=vOiK}&53Y*PCwg@KHiHQls zX|AIBf;Ws~&UKAeuQjQ69dg|4?CiiwqNdjMh=HAvQ`XqR!dViF;C!&V<`CP(d=Vog zA`%4bJ76(7L0G@q!UhM8gyn(r0XVW!3?mWKtSn+ZcWM>pWpJ2Dx`W_jnE69F4#tXy zJu3PtQT=mN=`W6wWVfvjUw8ryw4q{IAOz^CQVvpfcE+9xR^?cxOenmFx2EN(`OW1U5X zsa)zP9CQ%0z{N}M4vK5HjYF#RP*-)i zH2xnAH0$&4_1*M)=#$$qadx(wohWkA^r|oD55Lx#AU@E*h%WQd2PIVL<}~a*5PbP*7DfRu#{rkF(2x0V9`GLK9O$qcG4M zTtgGvllGtZj)44`16lz^*%u3USa&_HKK7RocPFklYUx%Ra1CGlBJr+W2`fG_EFWiQLTr-W{T=w zIqgj6DsoN6vd~9^czhcj79PGb%fA6jsK}L5obTD1n-<%~fSA6`lD`+OQCb*(T!R_B zf?2T05#22TjK}J|d2jp7!@U>w=jJ|B>)i;*9!>X0Vfqy7EUs8JMzg@yaRC4%2(*-3t=FM=X44-CRD$M(1<1oT1- zASND;WQ{#Rq=(@X_&b)FStFLm&nf4xp+?bpQkrr%v{B@Z`QOYrOcr;$1zJZqZqwSM zu`UfwUy@WijeI5(iz9V8G|t%bu%2SUzF$SewM+^hI*vQij;N$+-c4Liqly{r;qx(2_V~?@9dc)ENJ3n*{XSmp&KQ@YSjQ z-%fpcsu@~lf9F!eB0!8o>M7a*4nyuV=yj_EW}>lMhqCM59UJk~mm5xxZX>Ilkv;u7 z+H!$%*Pf4kQPQ3vbD*JXWO}Sqt{$w0MUpFYKq-*KJ;h(MRr-|u`c-hp;|XzEdI{bp zswHep-KOcNAK`xGqWro&=0v-a26g7lwPCwY+XL?&a5XdjY5SaueEhGW8PzxcfsvZJ z6{UJzs0!FkomiO*thyOI?*a1Jh<#9Xa$7~qc;D;tB~51nZWox0OtI9j~B5Pcp2C!l9-O50@8O-~k+OLoJei#f^8$N3xS2+IS0iR)!7R zf7-8Q(-^}W9~JM+EcSEg|DmDfZk+lc??uSjlTOkrrz_U&U!~GOuI(C|?lXR;pMhAB zZ9l(Gr1Kxw7KCDOk@;)PEsq(}7G>q3|HK(I9UO!g1(7Jm#^ddF^Pk%*kt`eR5w;;~ z3JPhcsa>6aunP{!zlb-mu*#uem? zTcfGbE$r6f>*xT9QSZ8+S3e~FJE-lh8qc}aY=aK^?;_ga_}!Q(QtqvZpJ2@zY5>Ln z%Ys8}j82Zw-CAx!w*zgS1KbV-`TGHaue3s?32|A%)B>G_d+k)fAeUw+B^u?SnG73r zQY5u2#1RTX+pe~uGv!xysrs1|^RntrwQa&*2u3->j-On&b#rl~XZ8v6OaQ*6CESyA zr6u3jHBtgOWREotO&vNsUx9)Eo$@_3FnR!)=J(}1dx=2uu{hk16=xtI0&gK9q?mY#ki z)%K6~z-8+joJ{RQ&?n!gui)|tOJHvT(3?JILRvb85Wb?;N~XKW<@T?BM}i(ilNve! zn6iB!ymWhCu>z~awf#GS$Xs%3yQL5K&)c1>#XqtcY6AVS``s{4;^|aM@{YaW;o&dC z;7zt1Eafp)6lTq)*5F5~F`gKY26@xxCx4iPhSyY2PR4SrU;=L=DD{|2_zL`xFZa&A zPYq6wWM-y(#?jLMJX0qcZ2)orcaIz)*PcJRgg9qp3>(?h2RTmmb7fWd%0g^D?&dUx z71Cn>Y|B*f$9g{Qon1XiNo0%}#=G8CoJc>lb*DA^N{T6*8YU?9SkHkI4R~GW*O3e) zXUN%o>$1m2iI2NHWs_$<;1>c)r*z^k^`$Mjxw-mXtz9Gexxf>}J%BbMon!jk?3JzhR@dK0x@e@Z0hUxFe5fqxR6i_IDytgCD^{C`z>bI~~~;hAoBnF9M1gCJMy;&<1i z*w<@>U|pfCaWk_{=;k}`O{xPYG$NFB zq1$B09aN?f)ESL9V8SvOsnzY`?HJLDwI@=bvo{ECk>w zs(pm}Joe9z8)SuQSl|@xj5@26R1~kBsblWwZ<-f3{$_Et-9^&LC_ zVC1@g5?JWdo(tr!YqtZNiEJtQTu>yP!RkaG9$8lRgilWI=*mJhqG_-KTup?8$7f$( z@^3y?0O=LAnE_Az8_J+3@6qj!M_d2-F+fe^ijH%}6@|xAev7(!?8;z3i*inYLqr$i zcJfymS8_xyjt{?m#TIhXReA&_V<1YdX0jNlDun+VpsQ%d4!sB>M+wgpy0oX#%^G3y zOM}zpR`t=WK4Q&4?;42)IZ3g!bX{r?N6tZ7fponx2+VIcNn43y8tAAgPt1!Ab72I| z9}mKfV5l}NP+ftRHglD3_Y*^0A7DG<4m#!Rl^;jQsSZ90p-wE`0SeWDS);))aGLHl z^0=iV<92hBO}`Wf7=h1{UW5b8huWph6Z2>L@wWuY|E@p@5$BZsBQ7T<7eEBGxcB1mZFl&7JRPtJd2z}>|0jzcNZcPuw zPv}z?W%K=juguz0EdzA~*Y?Tuz-$+z5QTAiJ7uGad3xY))?%jU4gOyB=@W5%dkgh^ zeguE&t562{V;Vsx{R3{?)z9%Jc@{Sx(?fSfTsyg}^ZzAExDF(7zV!7gy-t)qHiH09 z(R)Rv=D6Wb#5$d29jRFtx--{$`1&AzOd#V&v6snw4>9!Zr&1H>N8+*SLnfibBcN2SwH>{h=qj^U$P76Teua_i6zTvXXci zw6J^ql8)(d;JeRA@;K7rBL9Vf#BdZrn*YYn+iBv3;i}u5-%p*vKOr`6qOA<%`Eqcn zwC%8vw^?Np?atFZ;_Ic{bnt^s*BU%phIR1I;D2y_|J!7Eo@Uqn&(cFt-2Lyj1ScgE zk3ZZKX(E}g+&L~8EaXHe^c?Befv+gVU@hb5x^McCO-DD5 zC4=vpunjtQj>9`;X*&2Z=205sznv<(FpL%zPAM3aLX%mXLL$^ zBGmn5{>Im*cY}gkVe*I&7-P~39)JMd%r50$4}_rM9mcam=w|R_vojMLlA&eDWaE(nK_N%$0nO z2)_u6X6D7i+ZugHCdssIEkLT%IZoe19peQ!U-`Ynl%E-1k;iA8*ppnNG)kMF0^-_r za{i$8zRirOWc@|b0J(zawK1n=z}UbxS_L;7@!fskS&;dyE@MwS8>>mVL`Gl)sw;1e zhn;P8h-7e?sNr~g2(||JAJF?Ut_Zqi-|9(Ux?{!mVj%1uWDj(8Hv=F4gCJY(j?9t@ z>3b)nG$S?!9~p~E0bhNDfpvcN7e0ZPC6i}VS}Lk-R@F`co|J(+4E~bPZ^O7Oc|Tke zbaiqt&tULLOmtJ&jEY=-xK@RibkE28p$*+ZN$*!;SGdCFWWNfQ#rUKd3K}ozVXmB) zxz>}(Fh12u6OHp4N=qb~iF|V`)$kT>I~l1(Yp}r7zT{%)d8%9(&CwC9D=**1rt`qm zDg5+tKh;ybmc^-TXs8Qt@tmr$Jf@{~H5d%BW>IxFlK+eMllC{?W&!n-vK;|}3TP8n zaG18Z4oTPHR-{$agw^XETh}RukD+Iea)Ctxx`~y0>)9lI7lN3X`xz|8(+k!HE2?~z zv?gfiagadf4LF)vcy&3PnQl;X5}imB1HpFhs}Od|qL#V*&E9H0uf=?MKI-qemw|*p zONt!z%)E}5+jG(Ve%Bs|>CH~6Jf*Yg$n5U&b#_aL&-KR`ejsXVxdHTmt-vEz%~wAW zNqveHAiMhtj0U{r-zlsbd*Qx{d_@pu!Qfvv%FSw9@x|l=aSaGlqFSXxmG#dddzbN! zZQk-)kpF~|O`6P&FScCXCtxQ0w*W5ZqPLDc+{n`}O^krDZGgnhLztVIdag^a7llwr ztJO;J1Vcth$EB-N7!>tbm~P5=l2`@6HeBRGJ@Uwi^32Gk2C~>^V&cSxy5){vkraUW z^}51^|I!d%=hH0qd?AW21H+kQf#BeoGaF)HpmsIXmi;KmGt4{o#yWNiyIG5*27Wqxhdn*XCISngUps2SCUP*AA zo$Fqwj05hlRJ#8}K73Zk51%v!^ot|WKcPXS8`|z$23^V2TbMY=p~7dwpS2F%kDRGj zTv$gD2~TL#0wy^TD?PbDoN&F0FQlZIs8p1j3+$s_^!ZMmC#n`Q@!KbU;QiJg1A~t_ zeDcXb)~2EU{>c2ACkHxz*L=a{Z5=_a#|i^mNV0fA<{JeWD5As;%W#&@Qr8 zO7rOsbHgWnb>b)Syw9`Va^0Yq;aX;!iS8K6EL@HSN@HoNZi3|YtL@aZq>?=cSv{o` zTrd^2vCbQ>XS2!326tVG9u8T1*yhEB5_~E*i_P>PtlqxCe?@k;D#<~?j{+uJ5Fb#uu zZhtF#o(O;U_g`c6HyOMapgcLd32WG-YHV`os(E`8E`V=mPzgFLh zGSMaEz_Sc#L9olcWx_AJFWSk0jL|`MRX1^15mhUJ?!ak)@aha+KR*9y z@2Lg!M9k=m2v}2C>#Gn6(cpAOc;@5QIa27y3ZA4}6POlur8*V%vKB?-@SCjZ(iy2kw`~(0(T)#QDp(dM0?In2fS4LWO zzg#%Z3}M@DF9HBFQU4|NHm=y@7lh^j8fOH39ix-HTt)<}3R;L(8;j)X({!Gr&G`eE_7AxZ?eM2TiEo!-io+iz z1LRtI?oGgL>WIawNcHu90

    IiF@6+xX9ZRnVpOBK< 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

    Iy2qCiT%NgT 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 TiG>qp00000NkvXXu0mjfHx#@h literal 0 HcmV?d00001 diff --git a/docs/src/tutorials/windows-kernel/building-windows-image/images/2024-03-16-12-45-13.png b/docs/src/tutorials/windows-kernel/building-windows-image/images/2024-03-16-12-45-13.png new file mode 100644 index 0000000000000000000000000000000000000000..e0971bc2715fed7679acfe8732e8449e3105d9bd GIT binary patch literal 15405 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 literal 0 HcmV?d00001 diff --git a/docs/src/tutorials/windows-kernel/building-windows-image/images/2024-03-16-12-46-16.png b/docs/src/tutorials/windows-kernel/building-windows-image/images/2024-03-16-12-46-16.png new file mode 100644 index 0000000000000000000000000000000000000000..621da892c7ccfa4af98fcbbdefd26f56156982d9 GIT binary patch literal 34645 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 literal 0 HcmV?d00001 diff --git a/docs/src/tutorials/windows-kernel/building-windows-image/images/2024-03-16-12-46-28.png b/docs/src/tutorials/windows-kernel/building-windows-image/images/2024-03-16-12-46-28.png new file mode 100644 index 0000000000000000000000000000000000000000..a07db48e29f37ff038c73e60e5a3c8943cd8fafb GIT binary patch literal 43870 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 F{|o2;et-Y~ literal 0 HcmV?d00001 diff --git a/docs/src/tutorials/windows-kernel/building-windows-image/images/2024-03-16-13-16-20.png b/docs/src/tutorials/windows-kernel/building-windows-image/images/2024-03-16-13-16-20.png new file mode 100644 index 0000000000000000000000000000000000000000..ef8f6a4ca1b788456b9a9e914f3f94fc299a4ec7 GIT binary patch literal 210966 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�ae${1=fBF67bIBe8=)QRPoSL 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Ϥ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

    3Jl)M!9wr11Eb#ne?x1|Kd$^3P8aq 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¬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 z zQEtyvHLFT&L({~j4YAb_WOE)g%BIy2B}BxC z7$E^@5fmB<`ChdCS?%{j)}2}p+p3A3L%=(_4(7>n+>q}C8ymMIjYjiY4gE#2p;Us0 z#)PWFmFe^!h8eFZjQkJ3DNAi*2*gwWpm6pDqM{|LKu1yg`n4SAX1zX zo=i5Nr~w{74TEJ^22)5WbeYykzJ(=p9lBd=Z*hCw-Cn2EVf(Gi30-GtYq`sog-}4D z5l&Bnh?g4opr!FDkU>kRkFC12o-(NL{$!qKH(Z?LB=?iGC4XAZCwU|p!%*RIkMKu! zAlz}RyPx8#4$!BzW9Yz@@vllT2rpk> z{PwS3+jCrZFhNd$X*Q!dcfz$h2cNy|-$y)Rd=L%*x>>^^nM~n1fY^Cuo83TSWR7Dx==^A22XMiAxw-WxkTj(MU645B1FVS zLzK;?Y1$YYh7Dqiwr$!*LsX535gHH_63|3wgaoMb@&hzhaPRZ#aNqo7ki7U_E~BBr zDQbOiZ8p$Iiq+^_t9eCfMvA3^_}R}~NzNMTbW5FlfF?Dm?+o!TD&?O2lLDbpSYjSP zz*GvyMm=RwQN&G^P^thTqEHbO&xQgB)!m_03-Uk(*B=OIM2LuejRaS92+PP67}9O8 z6(DD%uF1DePUyDh+by?O-OWwf-q`JRzPY;XZgY35G-XyG3REl-!2>Y>k5bQSp19Qj zh)M?OQ82E;gs9@NFLfFD`GSCmXUpo@b<~TWH6<8P-l$Mr^=IoX^O!ci@PQ8qe`>wv~0Y(#`Q#_i@(4 zx-$QmImeEWwfkMy7Q`W&r_R*put6Mp$YR*4VW9^L*D!bA$?y!GTAt_QTpsD1R6M;0 zcSUDmko`?6v+&4$Se)z6=TZm2zgy|N?@C8;xc)7VF|qDe1J#}jR6E1$7MMg1^u6oI zVoSz|7)l&tHVZKbkRh3p>5sq!MnGcl#50AG6oQK96saiBvc(v4ww$(a-o5_w_uscy z*8(w^LV{{aTdn*G*6IZPygjw7KF1C)l*odjH>p*r01AO&S22s`TGr-$hGRV38-S)Y8y2) z5?cvTLJXIem)eLnh^;nJn^s~|7&{u#M1+VCD|i(&4Ma!FxUPM#Yn%;C1=Bl}w^R~n znmMlxW=2Tv3?@d<@MQdWM(zD+}Rn3;c2U9N_=8vJ}?=q=@ zQB3Il!jis#h#26!d*3Zfy#Q`-cetNH6_LVpQt>JtVzGrNRa8|%Q0Y}E4~I}sg#?M% zIQMB&v`=@8o166Q>-OsErn@nw2y4Vb&JY9$ z6oDdy`xo61A`)T<3b@|IoGC%2oE61jB@#rW6joCJw4v%S#}hf`x}D@CFJE?E>?b+N zT%N-Zd6b3zNeB0AdDvFm8r6ii)c(kKPd~|1O3(6qawjAJs8;xylVVsevecjTTBV!+ zrC1xif)I#OxVD?JACxjYhRGGg=Ymyd7Wz1E0iNF>d=PLZLt?kdnn>IzVqKPY;eP|CIH15RnqOW9qR zuI7z-JLo&B^pn2j&X;ltl{J|>$|#h*F?!I1BLG1Qc(x$|W=Mb$DboOIpa^56M2%52 z;Otytj7=MwCN!JaZbH*)Xb>AnD3tvWps`q~JvOCKV`OlMxRtsiERT>qkvjj0*(_(6 zW#_vKB@@gJ{XtrG_D=>WuF+PLv(Q9JicEMa)v|PnZ6)x3Al)Kd*0Zkha1u zSdx^ZKoyO|2!@DY1T#BQU?K{E1VJty0oK6hT8Uv;&@0xyy7Z;Di5&J&xySqEiOu{c z>1Ea9@dHw`PK2_P+*5jc?{_`s1Z#e8IZQV`Ry}x*i9A~7r)2(qUwIfhHd|5Hq#7do z=wFCB&KFpWL26bK&ze}$hm3Mg_E}3rRg9v-i~@8^~x3i9~FXWGIRV0r1Q70fBWs%i_4gZ+niw@QJIM#J&Y^>z31Xc zuNM#$5AN-ma*PrpnvJ%twry-Su{n!Pln_&B*tTsG;kZ9G2%bz+OIjYSn9Y}#r?d1FsL74` ziP>mba%N8SQfg*q2{{X0A0VC0GWAl)n`x{D4~d{aR<<3pB83 zy=5jmOox5TI$zFIaiuLdA?(gimiAgbK&U-vO}T3|6+pQPeFeTk@ADhj9Xl!|7yu$c zL`YFlDkv&Ys?al;h9IH{A&WvpHA+wwWoWVl#-Jf;jH-$zLKKbb4-H~dygW3JV%cK` z+SJ9g#rDQ-udTbrw{K~Ch3jv2eP!tuY1^glHYW|%dIq5oR7C-yk(R|Bqb5MH`~wy= zWLv%$heu*@6!Qpn#R>X9Sk~v`X(wtwN%1k{ao$UJ5A%+9%y*JUo6i@Ht-hPAQb8Ut zKQCAfcoIeZ$!?7!Ch|`5&?CwIdFFH&^Tt&N=r=B%VD)E^5RfLq*hDBus0xHVi`!#> zd+UA=dQ=fKWXV>GON|iD=tv@G7Zf4a1|HF(%VZ*@V&FF*Z;=ftWy>@}HnS~rHXxWuPRvPYESYU6l9dp;qs35- z_nwWXgjVQ)?1`b$G63yqax|}(=Q2Qi7LV9?p-XkVjHk`#O}$JoF!`)?wC3A^Q1rhA zFQQ7}SO!;80Eh&7Y_JjlB~*inc?^W(=Ap!&5~?Bw6@VftO4krV5U+f!K}0nKQ58|K zA&Qz3a*Pa7W0au__^rW@Se;^rH!zuC91H{ZT) zyPLfIdWEDl!)p*UK5{Y&A(a(LW`Jh7>c$F`%EKHkLcIhNXXsu)b3e561fcWjf$T}1 zUszXXeQoZ%2!EJ2<6W`}e82B7eqwn(H2}}z5O@h{z)tIRuK#fZJ&J0zxbN89Wz!B9 zT#h9d3JC+OZJXXMA0Wb-yr$Bbt2Mcx7K2d4q`Y*e?By~f|7_3NX0y50Kzc=22QSYS z8Fs9KTHwackKBnZtjJNUgncG}??1l#^xMbK;5H#;%N9~b>M|(`O*9qI#7hOhq!?36 zNncNNFC{lnRRjF070bQ#7pRZ%t%l=)!D5vcG|YhXiret0&Q&|W;wfv@IlVi&0`Td- zLJZop&E_ngZJOo`af1-hHV6^1Edjed2`x4~kqkM*GP({lq+E(vHC4u zj3Tv1DbW_ve`on#A-a)}LV7D{LkWr~>K1|6kef)MwIzk1n0V?Za|)hPOc6XpI748d zGC*wnfK>5nz7#mQu0$FMJq}w!UsR2v6k!Jwb(TI=lc)w2s7Me9G?ig z(@KaTM2RY)5mmGsNI(o|Td2Y^QbJ1Dyao-nMe1<7)tjq}>+AD$&FeqA+i&U1UpH4@ zZ@Vp!0&@f+sfr*_WpGu-)ioKFOqpj8nmhyRGj2`p{RBE8^^-iQJgW|HbVb;sqw0PP zS)-J!1)Dy#JR1+^Z^Ku+j~al-yj7=``@1gp^tvqS4^tgr9A+?j#)tvdw5kCpk%tu= z5>A+AN$3ZlBqy3Az&fknOx)UDd@iF2CB!ZGBV~GsoEd!$Ie{9)Q_KXWDoG&4_FrOcMMWrGi6Q_j`7N)0?^D#E z5+Y*A5=}wG90F9c1PMVy3>qXhB7re#+oEj|H)tc8wp@KXhZ!~*7ah8-Sd!bXO}>fO z-}L5sbM@7(zvORUx|^$v)F3fuSPno00wC2x;#a+2xT(Kt0;zK)WyX$rK>uytc6Z7T zj^7?n=C-YeNqt-Pe=Z{kJ{yJR_%yt03uSHl>HfOEe1A2dce2h7`kfySPvCiYGCliI zRRZo-_U#RQOK&R&`fGKCWu)Y|wKxb=#jSOoGNfP%!ig0QINi)YWfDO|RAfj4KjeQh zQMWz{1m~9*&Dkb(+u@{SGM)#?v0Xgqi1Qh(Co(acJB>b`#b5sM%g4{}O_4G(kc?eN zO9H4+=>+ZUXbYf-37t(}N&Nue*@4j0R7RDR9sF4_PFE|or%UPehSHX#j_#uoJk8@X zD6y>l`Aj`sbyW0oj{rXY(i9tiiA*iHKW7-xZA)&=?2ZqUv_&>co#kwnVVO?d$yu1i z>!OijS)4#(RGNTdR`PF(Im@5!fFcD3Gm4{d2s}Lu0H^j3^>|0VG8X%{u@8e7FO96C zRcGlV13(iK&mdZOKQLC+Lttd7=*H2qsAlQPmaF)`-Y)%h14;({J~G^QTro|!iU=A+ zO#C|51?q`OE8?$KIw|R5%?c9e z-`Crlbp0*o8>HL_A`peD)DpQ-!zNltQ-CzFS8 zR33QTr|TQQfiH;fW*VB$v-1FE*juEx@{Y+!3#o+e@(e&s#0_~h#fX$TOufY!6-)ro zfuK$)0Asj7-a$P?0m$uU6C1A?<+jD2SqgkswilaEpFg~M)BJhW8A3`(iKzn^qN-;* z6se?;0yF8spXJ*Qz>x|LE7^xVR4jj2>+(!`Mi%Bb)CB!6XgH3T>C_gub(nw&Ar=8_ zHl+u;T|Xn6!#i4*lq@HtES8WGEircbF14Me!6OJ zzVYiH+b_STFMsBntDAHSOW{0TvV+ltq8dQb;{o87kD?`$SwtX#rnAVTWw|$#;mG&X zb3OmohWVpBkADuJzw{!1Ve-`TJnsJqAXWdQeIQro$*De^zY+E~Uj^S!JfDvR`d9B? z+5784NArD;*qkc!X)&y}K0ivK^%sOw zL3!=Qxh5%fuimsG=n`UtV&MNc+oB&TtFqxRR3He@tW=uy=FLGLC}`9O@ZEsyEk$Qo7ZktmMDIsUpivm{OzgNC3DLqTrwMedWo(I%Rk~FcJhrSs83n!njk}9V+K$Bv0 zU(6i+lLKwMZ1}}5QOK+uQbckWwB}3LWc4@nb=Mlj56-eZSl$kn9DW{w*A$3ma zk!)gFa)xCxL7^};GXkVqIeCMGN-v_<-f~Mnvg1&9ZAfn*m)u{ry3$P0GeD|nf2)*p znqk55dgVA}efWky<@m>EBgh;&*|HC?%y};srkfVvsICf`~$*g~%o{w1|zws7(_>BWD*7 zMT}@;8FSld?wD>Qb$IhB-hRc`FZlLn_vOp&_N!g}@s$uJ7}Xen5G0C*ben=me*pzr z)MBwdHPg}ZQ-IEsoaApPeZ2Kao<^2zRX^Pj?q&Et$g!};qcR-yzzVvkQ{gpGmoqs| z;7B2I2t_SMmEaUxn{c+xKnhfP26372dA1*5Z6m0nhM>CHY;Lw)&n8+uj~DjJ_ zx7SH#HArVm1Q7*__rH96^Zp$aOxBqIYRPTKL9Fof3pu|S?NO^skti_|j{c_szMi)e zLu59s#sc^cwHR6P5?Bq=n9)*Dne=1DpcsD_CIJ>g=yC^z1nrol32#2WjR5}mKgfi2 zxy#u)OWDh5NzQ-?lb8V(43)m0bFBg8DrhVge44DydoUk%0Tg~qb$xqryq)`LRFJeRJ>@2#25m%Q8Y3HXaiRU zzI>6;;%tMqMbjWEnifrz)Pfmj7fA2$`WCm}ns492_KIKr|C`%uUVq(QUEQV|7JXQs zcl`Feu>lW|L$!yab$|*+R(`(E)#hZ1;{J> zczTthNQ?SU-bHW5R#hw2U4@1zxG0%&L?y&{c7A^I?aE>5;(Xe8=uas3S)sK^*|<_` z)!!;~E?GR8+Six={O^Chdb8;gh(KevHA@ByQu5B1g1)Xy358yFEgK->d=8Tm8O&Pb znHBr@<)MdsJSE|MC59QQW>RztKPvl2M8B~R;0Hsv05J7paOFG!Ak)kYQL<%2e*Nz4 zhtD4(fIt7e^{To#xfUU?NTTbERAlLsZhDcYG&%6nIHCXzQO^YR{)S{$H^cg;XAtt7Ka(L& zl8P=G464Utx96p&bG7y_4U^??rPRoDASJxk9S9}>OMJC+*dTPzhpH(>lmZhiHAO(x zsEtsO146VE5CU?e63k-Ki0d{qE!sxfRyJpd5$y(yh!HKYNjQIn^IPQ>zx;A}^9_If zdHdJzx8MHC*I#&hy-nL})(E2@C{zLS5OB-)d>y_tL&T1}_yL~eB+o4VI=mC#AK2`N zk^O4GV?8*g(SgrdCJgu1LJ!@Udz6KKIu9Mg(ARz^0Q`MBo!(XWT>IW>KVmUe{xd!E zAm|FfX4A%!4umQSzzoc^Y!1NyFY5*FU& z`Nhm{G*i+uY+4zrl?oGnQdKSSumUaMw@*4yBT)&Hk}9?4BZ5;sP<4RG6R*yo^k*e9 z!20rIzq5boaW*l#k9&6&smH30lP4|repbX@&u8HtQG`k3@=ezIl*-+ioy?lyqsA)C z4F&y_j4q7(2>%=SrSqgDTq*Osrp*R#bQ6x14h9DXNWo#A76mp27QJaSCMw<=J zHi!|;8A3p85h9v%fJiqu-{Snk=I!U^`YXQtar@=p-PKoq`OgwdOzm&XaC%s8gYD%DviJuXs#Ug}u9s zD*np;=8nZ;kamMo|3@h51wCPvV^WS@vXqa)2mEmE`j_!~o6o0#5NS7?=KL(@#Lj-C z`)t+Y(kFirLW~B>h~d?zx1ay@t2Vevph-$*R7)sewFa`nirJZ-5w&Ci0$Aq1qUy@^ zcOE=Y3Gb}vzbFTuVYQgTT@5HWuG@mw7>mHDTr)D8<7s>ZS|c@Kxkq4AhjJQ9m{*B-0E$iA^~ za~38`u2 z>>{)qZCW%fVk||Y<2l+3oWIdmw|M>G{M*OP%~$^QpLTnNuYY#eUvF{;S`bDRHK?+8 z)gADDdSU4Qg$?HK0X3KyWI3Zd);&V6?W4t^+-+sGV2&nx5 zg~lGj0YFX=Y0uh!{P#azz1?g(WI|N7w_Rq?&|0p1^XU|MuO7Pw(Rfw+RtIx-AjO zFe#OE2|&D7aUu6O1xVIyQAOK-%;~!hm z0~mA6yx}YzP%pD`vPBu6ljs*`ZRny5_l|ahm{iZlTzYkWrDxgQ?#gCQUb6CiX9x@a z2Cr-2YGH}C2K!PVqaDO_(2ZPFs}G5Qa}N`8^&7aJ>dt`-s8}MPh{7l#3NzR-b!a!S z%a*n|#1tE8Hlf{UY|);B0&USYXwGnUiC1rQdxMX^o?rjPKmIL${l2~WE8kqFe7ntE zRNG9#KlWd~dxs03kYcgRNiNIrq%j(MmKFudf~ zcUkfS)cOF9s=SUUuxU5#rYHdF5u+3@yJ{pUMI{y~=6_FMUVv)Zx=R8Y-~K+9pmKh3 z@mKhRNkqgJvLMdL2M5Z^bLNq*;3W1EfM>w$0rqGNXXh86e*5La$M+N@PobD$2Fp~0 zfsIeXM9EB{8K^K2G@8J-h$p-+wEl|yYmKh~{rlB2S1F2a;Dl_9NJSh@L`YCQKwvU& zE3+;(08cYodj0mz=U+daU$$Mwtyu(sF3?jL8H>@rFGg0f)v7pGi~@*d7$7DlG73!T zt4VM)AOl1YIDN>-fROuf55*CD?F+Tk(Dg$P>iy2Lt3Qn*I(G2&X#ailHEUa%uH2#{ zt8_04G3Ve$Oc&ta%qV-Lz_ zh0dPVwk!Z5yRVBPpm~)s0R$=;fKXLP%UgzqA`mr+h*7#0>SUotVxw^*ZB%V7oO5#~ z=Vuxt!UobHG-%GTImg*+dHw$E`s(c4ANb?dvEKcM@lp zdtFZE`IDUFCz8K~6X0>>ySoCOMhBR^1rF5#9yXZiQ5LyqT^9fVAOJ~3K~!gQ|3G$j z*%^;5{p2N04Qe4GD6&D-2^nH$=76uzGXiRn09OFU2S-IRl^bE>;VN{fDXX&CY%~Pu zke$3YzaH-v@T5cEH6p*}{qe-;J{gXr1uTS8@flhc+GA`+A3l2*la zsshHXPk}>1tY}~5ZySvMAg!c&Cp})cR{nB=ea-$kQdj(&4M4v-0E*RjVxU>DiYf|c z$EZTFj4Vxj`|0hwUtS~NHbbBhfOQVxW%)x4!IR^eKBtuFwUb?UT1W`ClX!9)ZKZUL_-mc_P=or;QNDO};&gXXko$j@Y6J2rbeEX6RlaUZHu7vyW$&U-bGf`}6<1{r2bW z_16wL2AruyMHGo(;pK@JoG_yV6=C)~M+Tte?3G>}9UfTyw5?9^iY(`y+G8<2_5jDq z4~}-$=IvN{w0!4}(hHV7guuZZwz-d2yY+yB1t99_uu@WYk^>_UJ7-Hto(3e=Rf#P#F$6Z_@txIK|$Y7rcT?oL~? z{@#P23F0rDYpB17$x`q~B?vSpXn=s0J8iRs+c$4t-EQ;wc|fi3WkgQd%%sKzxcQFA z4&Jor9YVk}{{&SCGH9SN3xc?j**ps_DEQ$7OF))WV%N) zF){lt{QOAoh0(!Aq-!%vA%qx0Vh2mjn>X+O_5St8^KAwpIU#3BIVUrSK!c~f2Vq7b z%xd-&)_81l8b8FGd*!v79D`dm=%ePk@xKa33ou$uj8o|@;)e55x7NcnIDwb*rDy=G z@}*TIh(a|>GRYmfx1Zj9_~$Rp1-@LPO9oc}oY+)4Ey~57nOu`S)Qba^yxPMM(RF4>j6C=CXSVJ?^jH7n~4#q<52f z=PJRZ#1vFop#t^3BGYb8I#e8*DaF z12*RfEzVxy<`(Un_U5&{esgy9hyD5QuYdh&aAFY=`aH5x= z|76~D>_tJzhV-KY=#!k}Bq#Z?UT}Mf+m#+L_XbuQT_`~f4z8zL z;Jzow_Z|n*zf~C0mnNwDF^}v(LxHJc!ZgJZgAm%Xu zeI)X5;QiFV8H&0~j=gV=P1cj|Ji_!u*5++JpVzR%;&W%ValbEY9;k3gQ1YrKu-kAr z_Pq_O1>Em!bY&M($xL;P6m`{aGcPCTH<3v(UECfOdn};_M9Fg>K(q`(EFDc=P4Y?O(s&eEBoo{FS=vl&y=}hTyqK&2k25 z=%iFY697UL^o4}SHPos*>$`g)e;Ro#%l%1Ca*~rAC68queiW%T<^rBERKG2Xba=jgW zgvH+Ohqf2?+B2Y8w|BUPR}Zu^h|$sa9(IAy=nJbp?A%$|55QIJ5>TW9s+mEx+yz2W z?Y0&}K%)|ox9D!IYY{iN3AfF8JiCaSRyP}j7Mm8E7PkSLbDY1z<-7LXFYVVq?f3tE z_3iik^*>un$TFCotcKQtB(9O5M9!dS2E!_^!=8s$@0SzsJ;~F`6WJQ?O-VY* zedW6Zy#A>2U1FUpLftovgwQ6oKJJ+$QdIX^oKB>`wb zZKPPX@+z#P5oc?Q6SvFuayG7~lro_rBDMy>JP5FD+l!0y>n~qCzOdH1a!~sc^GfyR ze;x8t!WTviA$7NUe*VvY{qxP+H`|2l{*#Q9a>@nt0}3l(odB{Ee&}jJ;q#X|S2e)5 zaP|8H|E>g3ofyNwvb|QfhI5X*#B!Jh&{N`%eIl$6bkzAMjCjp^xXR(4$LN%e zV=Zai=8h~iqtTYSeS0|NbNV3m&Hns>wcfB?;p66E+@KGjac0^`K?MM+2!x4Vd=M%o zMxm;TlE}#b6X}=*5@BuVuCvAvZY*8r+l{qnx;fK!18uN*g_cNL#4|LnarRozUtiq( zC4c@qefiJ!%YU}p>#IiE7@D8~$j(G`MZZQbutrf&FQtsy{O#qW*qr1fC;85DH}K`r zkmD)3s6E|H8C_r~t*as9)891+k`zzuKYmMj!CFZ%$oW|#0uQKlK;p@NY|O_O=jK8w z)3^1gi9l7eIY)Z_N*rGx4Z1ly4>5K*3)MO2au947&&B=aKs-4*E-|P9Lr5)DlO;6m z$6r5x`t8@a`M>PFYpiYARVMb0G1prAbsqP9@40oW%4Lj+up25J9$iw)C`bl3>2w=M z#EDGkD8W2LH<7w=a5@cvP83W7QUhrdZ;l1)&&A^brm2ufyz97EqU7@-9JpPG>^kJx4QG%;rMPn8Bc_w5`X}R&#)RX86`-EY-X8E>SYgsxMWnXItgVxbw&1h(9+Da;o)fE3qK^D-Ew145WOfES!1K4Wn z$>k4{O0dF$|Fy{s4%-YVbbN6=uuBy?kwz?Sg_AXzzaAhzt)C5({ zd@_mdQfRTj0GKY^l6!LNg1YNu?m%1LrYncDIVIfEl!xVbn5Mz(?X={G$I*4E-D>p7 zT6=7^^>j?@+s;_V-6JkYlAfnDn7Q`myGYLvg@P{7#48FAMhOmcsFUuZVoC)a8YP6% zqFeMLf)kGu)MJLikB+Q2)ZtFi>!avF140SwBb4ZkFxV;gE|#}HfB5=q55^Db7=v;M z7Kx%s#dB7?c=Omxcb7cM_rbZG%gJR+=*}|#$+<52MJi9jd4B@2QcF$mW!A{-?^7FK z=7wArb?+RjA=#L2YSAkKGlZaoiF$v~D@v$96Qwud4l{$1XzBZ;F&lEUK7%Zdqr3%e zP2joVbySz&Gz9Gr2lwvX6~<&XP%?$(2~MGGnS-}fqg$;9HiMJoepk{>cSqL_ZtPsx zabRpP!K98cf>tD5p9o3&_oV%2wx4u3$yNa!$&1g7`A?;QJLm(7w@@Df89v16UKyOg zCULl%4*-Ce=J(UYnN>7yE8 zd=F(GgAsNw4)$N`zxK-AySMG|b}cS&dLk%l9%yrGk&t`maxPDh%qbmDOAzW@&gBuv zBX!~fry71+(BpQ!YvUbuNP?bNRcQ#&0BsTg++ps_FclF5fd+^mvvLU2D|uF?h5>=( z*6zZP+7N*Na8jYYUQYl@fS4dDz)w1t#?x zie~K}(iHt|KswBs067gH>G9HTP6~Z%E-)hzGL?Gzu{*qW0omn|5$~pQ&qe?ibOJz& z5aYx_s*Lt_uHL-1yQi-o!UfTJG>H~bgwhSsyZ{guICYy9Teys}7&pC4kzHGwb;0Gh zjjYhT7v5i-r|D^Tmt((lf2S-u4abhPz7lO?2CQqhsKH7O&tp3r8`9Eq{1A^hr%#O& znO+9-yvW`RMk}y|@@YoEsf!YHI>qP(LO>`~CLSjidQ$eaeh|kGtQzQOrzrcX0fT*1 z0~`(zhA4(o?Ts$n)z?4A`>#*#-#ubX)`^G-Tt!kLMFE=Zg=B;*sfX~mWZOLWrKfJm z74~G!_VncVUD;fg+rF93xR~_nJAZSff2l)ayWvdtJAtxu92WV+%kgD9yWuatCLf)g z21Ic6HF-KS>acWd_KG_>RN&zT+<0Z@(7sWl|_lNk5FMS!qFkBVL04DRmr`be);O;!QJuX zfkl%l460sb69+>YMXCs3G&&*S)K}$P&gF5*lLn=$~>^ATf~4Ztf-L~ zqX<=lsL~IGgxL0>yq!*?r;H0T0UK)Tt8V;(e$=XHsow);^ zAtW+=%T9HS#DI~t+v5jKA5o-AVo9q`IjcE$E&+EH>Vv`XUQyH*0|bD39@%5RfaWmm zB9fQfT|(gk!1u3Qym9lH-aw8Vb*lUoQ|1KdG9^l71N8wid#6DF8X8icto<{4;S;@& zlN4{V1iWSa%msbhVK$)(2Otg+N2BOx5K)d{Q@XZ6HrYtGgur%-Mgu^h!Kv84eDT`N zD`gK44#9xvjL|%179&!WbovPlfLso0n;n+?zVH&<-Y2m(d3V*mOGb1&C^7TP$-MUq z2OzRKwE!z(xSN>)O9#7jskfb4$Kc+02WcNl8AYG~;eZH~beM~(iW5QMpos>NiD(3B zNH4}ooD2|a?+uDxFN6}kA$omGDpUg$gRq} zz$Xj>bS~#|F6Z)yNe?; z$dhycDqz{24?_b40@H~D+H`?=N}s9rKmAUQ`X(cz!Avx}fFhzQ6j(xSX@L4s zoa|oQyZQXB(8GfXB;aUlPKl8)O>m~n^hy>0bh!q)-S5lK$&!BN+cp1R>=9oI=~*(K zrNeLQRvmZAcYc><(HGx}r}xBMn*~1`f;h&}+XhdT-+6OEjHPja6N()ByCKm!J_w}n z8dT^Bf)6U&)&dA(gXD8S;TAo(h^kQ)>VjG%2G$ZMF^+9A;CSf6L0R?@3JiBq_EGdu z4XeQp`a8Yh&iLN#`pzq3uVbuLr6>>xfx%)_oGk?C+|z$9k5smOo}bIPoPN6NL&?_g zq!ap`Pl5%Sw+BvU1Dr(KeZ44jFer)u6&KOu`=`?hLPWAo*Ld_7;C_zvJXH=vA==gl zUc4U#5<=Cl#t(wWsOgmD_xa*u90R>H2i)3$%f&gUa!jvjU`-|fT?5Q(s9wK$^U}2| zE|@qh!V`C@Nh0nSsweb)qvfry*@jfti9N?I7N` z{Q+t12{7wXm}0(XQ9x8pu@{4=79t{%UiEv|ZeG7|xjKp%M@OO2+$_Q$5K;;rozB^)X6EX zl0x)J(ZyV z5gsFb>~x5Uh*;y}2NPh1NTB%^$iv3}pT3-pS`T!$0H8H}C45o#@i*xl&6qh|x{mfg zKQBoaMXQ>s01{(#VNnJrqSa7byLoW+=9QRO|AR~>H3hNujH^yr4RF%PSO7~SL#O5u zm}lK-`)?3X^BWd-vz#t-JK0`|?_6`6tjY5Jm#E;|E%b6|&?fVmw~tph* zOv^<`wqlQ2GYP*WXx3L8*?-V_5hTaC90IyKgSsa(9TXN86<&CxMT<4!z{|1K5&c2Y zt2Fd5R1_7o!g#2|(eU=DC=1-XUE7hN79bQ_K8#U!F6Z*Z$&=*DJ(s6R9(Np|YXh9b z9yp;5u+0$`gLl^NGPNAm#{ts&a2l6RkOfa}V_{GojfQ2J6ab++o$l^Nx{xXzb-#J< z`r=eW$yLTuBB3~3yWyI zGuk{q{J94dSD1p_f*qB=uEZ3;0~r_Xr;L{9{g1CmuwLK zY#jcc+hj(d2GP?72-+D;5k(!?PZJjK&a~3+(>BxjHWch6EJg&`ySRVw%#E^#2V)q_ zRcec7fn-2{i@4-5gYG#8;B0T2)ghiO-0F|;(e#kc{*^s%YVt0P7_<+%CW$!xqS;-J zxo6dikmp;$TahfLrz4dYUdV;UPkkH z)-1ZFRjw8$MCkR(vMQ0V{}LS5BJek#?lMJdonE?hUFST@64YWXA)qWTUcPks#zhLo z#%NwU>FN>gQfdhSEyrGjOa+zcNCcp{m{+jAo?&c-II|+}l&n_Id>>nfW?l|Tjx^4EFEI>S(PQ5@X7{(=5udLs%r?%L zVw~;tXR@C7c5%qt2)auFcOrtMx3M?bysk?dKK z1#iBU-n*y6-kUowou}v-pRolCce+PB<2nq-WMc%!MzW@x1rhHjDPnW>L4ai*-==QN z>|omH@|p1hEoI?YrayFk?(RB$2X==l((v}o_pr<_nwTQVBE7z|OHK?DRimTc-y8Nv zaG)wRDV1(;Ck#Sp%RGaW>nWYC^FW)d0MK=+Vmh=bilYK3Nm|UIgH%BbNo{~g5T`t- zC!-7dw{O25>q(0EE0ojc=iGyo)2|NPMMWBJzGF+VND`vSp^zzkN9wQ8U@-!uf+SQ7 zgd0jF?Bcbn*PnmJ6g5E=uf@&lI)VsVm}RIBD2cbTDN&S8tk8`RG*18K#8C50TssK? zpyjKX+4dql^C`JYUUAF2N?z7x&K>tZ#8bqGCM4hr3RF}|RPJ<9gH7VN7!{XqUc7v; zb7*iyjP5QT5#0;v!8M&nZ)^!AJXHcdNuceEOyE1dq0HsDnY{L(PJ(48gMUtlR#N5vfVejJ}$5hT*M>+NWyV$&$zc*W2cJhbXXFUOd zw)U1#$OexGfdo%CsKFJCfEx^IN>ewCCsx!J>kwnn>!UY7QDL-$B51EbRccX`{a#Uu z-u^ zyx$MIdzC6wGiu)r7Tw+4T@v0MO+00(T|rPfZ{=BSAZ7SUMhz`f6%rIEgfJWq>cji6 zq&zR-aGYO(q=7z!7Sd7uvx{ED$q)c>i%!s?t_Cyot1DM8U%q;!DsXoUH%4QuJ!a@m z&dx=yM@fGHbN(hV*g*s}3@9ym!9NgI5tsX=~hnY>xW2EQeWy}nv4fqH26sR~W1K{j1 z^lx~1>Qw(_(hVBS6|}>;xYLZkM>1T9ZA>(EF94KIsM1|U3{ZloB2w_o+(?fWebR^3 z)o_Gf4o_sk?Pv0glj?}R2Lps6--TxG8N8Z2 zRSHV#bqWxW8B3{<&|+@EHdwIXQf;S^bVkxq zo`E1K{vmEox)uc`rSRItt5>eyxL(~#K3xC+AOJ~3K~$7D93w^&;s!H1C71XGkf~IY z65n9@DPYp?b8X**=SNoSQ^7Ejo=gQHn2ADDJR~s$d4}Df@xIH9_TM#xj-MTA(g_6c zl*NCHXm*!Bw83acG@u+J)ekQFDuSY4l>Ob;K99Sv9n}+*f}$!I*%}n=>x_4-ne0qmuH-V;)LU22?9Q&Obsz!}s=&oFV+d!OwLKJ7 zSykm>J(BPqxw zv7}Myo3!WjO+l&(%#OaEU_S(!N&%n?a%ttH{pYZPw=69Qev^lt_GwnarW$TgxN00nR`+9si8lfBfyXpx@aF!O4q{7P39vXm0&sZ?scEpxP*+ zgnKGv3#Bx#r&)>)2xbyD+(ApJ*Bj@ z(y1vbwME1lz4GR>&+J{gzyPa(0IOv(i5B55U`QH(P}~V~G9m4yf$q?g57AqAkCSK! zK!Jp<0nlpdjg^4xy#(PoFC!}wo?EqXjK;x_V2KEG z+})AMba$T(4$SV-eUvb_oAsS!6M2eDY@!XhiKdOyLV)SUBN@fhty)SjK`*$`Y!Xe} z!(apr=9 zTZdOJRhRZ>u7OW~X8hpLKKj4k{?(7Z_UV_$k86ZqJo3_uyI=RU`+x3BhgU8Ym-fr< zra$jh~$EDl>>gbN+O+|5=Xz?%#Q)ZCzDn zuo6sM19$g!Z#;8-v{OwYCN&6*CyXxcO>sBov}Cw2jK&Gk$0O=kLpomJ47?E@PEx0jMZU&3>WMbpG z+8Lqjqv&Dh0(zAkRZtNP{i-bPyi(tJH7b=Bgb)cpJiXO9m#0SF{mv`j_MYo+f9r5g z(d^2bpX~#9*E=r#$oIYQ@@FUi?Ek#|i@)-@kNx)TM>xz!Cm;I2o4);9Zme!|(S89+OH*Z|Ne$fLa6F4!6j7B#$AsW&pk;)<^HM=2!e>?(4rb1v_+hJYr z?E0B3Jn!=iN8R2ZE_q;@Kz%HMeOaF^&CH7NtQyix)Mf@NxndTbO=tXAX&xh+N@vL3 zXwR}}fHwb_2@!N+UYYio%~)odHLE}fJ8Yk9q5;wZA=zo&>^-y6EtW3lC()Sv6CP!3 zv81{s2469!ySasajo}`u9?AewNJ9aI< z0pKP`#lB3EVvV-WS4skgwvm9wq-cEqU4s9#I5|tVIWx^7cQQ9fFNzRr7gY$yRu`2L za_yNL7q4D6;K5N1EnRR_*Mb66Hh^UkIkmZoCxM_DXtd~Wya>Q%3ir93iOhKVIrW%y znLzcJN1_`EmDXP{{gqP^gZbEMlP8=4o2il+v?;=ulyrrs?BF6!s6i5j&&${9 zI@m$Khv5#2LPKzn3a1xkC0f*ncj}49vZ$27tOnrj5K$2oNe5faea5EDS{n4pRJSMZ z0)8VH1`Fk-e{uh({-ZBRe*F{6SG|4bfBc2F{rdlL`+NWHAH88b(C>fm!9y;~3FK#f z_$`0=>n{y@CoB*)=;^!Oaq(-ua`!*~?>_sXpZ(P7j_q8|WxZ^O3d)T$1E)m?Sd{9R zh}iCKuPC7fR6)Yb&2qgbWVm&nw!HXxTp1n%uwmHrMoVsd_DS7G#wNQU zsr6l-Z}PCVE0lPGl5NqE4(h1`{+TY+isbuojG-)IGy|rOq9l> ziN(mENnvV%NXec{wc-embOQ};0t!#W0yJ|%*MtC0(EYhQLDKaGEsF+B8+3M=^=Wi| zZ_I$U(>A!6{QHu?{^=GKq(U6ij+zHqCoI#T8l`~=rPOw2>Y&UQ1TY9A69sOFba%u_ z9i@&!Rs~S?P>fI%szF2LT54~npwd`R9;Bq10w`468Rz|B+w1hp75ekr=5fl8e*c@_ z_gAl-SlyhHcYO8!ul~ZH`+>jzryu^vE2q-o;i9nz*iz*0(8jnJ0 zdl&jeiJ%aL8Dn(1(m=XGWrjCfIz)Rjea|}okE3a4MvV0KR0y-Gu4Hmry`< z$2+>@KV+f?;*{OriChc7n>l)u^^g*W8@)ZL`!m{qjumv*oW~Yw?nDsKBGfU4UT`CV z9Nav(bZrlUagA|wr_@F=r~pp!T(LNZ05X4(frJ~=w>fEie3gLD#mPg^?NB9!;hMJMQ*w!H{j%coEhKzvc93J5Js!Dh`W1(UVn;&CDq+MlHR)C znr$5kA`R390Jtc-X8x$hhNS|EWFXM&Qi*_0h|pa{t6mj~iuDn)2HGh>MlMe-Su&WV zTO19Dpv@;pTC&F)RdM;o_3Jkeik=)fB4Cbaa1&Y{ln~w&2tv+}&2ax@07&xvyEloy z?kP#2DXW_(K^t{Hr3EwF1I#r2(|73emvy+0y~}##Mt}E$GK`(sCmM&Hs%kKl2}d=^1JNt$feFb@SctymF?8I6K+e{r_+#?mzyCFFOnE zKgn0Uedk9%@cbEdepnY38wZOZmD$Qi(f$aneXaTpI1)VeVvN`p?e)lxC6tWvP}H z;e?av!`9|$vI>xY7w>BSdC;9}a^dAMbM=eX(X=ecINTk+>CMj#M{+pvNkaa(#M+J7 zx>6B(8av@mV?zAXllJdS+P^z#Zt*+<@c3n0Bh1z}IW_6n*)!5b_@wJNBYC#G_Zzri z=hc!Bg(GiHZGRk|M6j59NeTF?1vet();Wv=k>0K!73$j3hkTL?Dnd zIws~d#6<^0S)eyUfWR4mLMs&%qKCI(M`C6gLQVp9-vkA8E>Eny`x~x&%Qs!!y!~sp z>(}q(8*y{Bc+k_o_rVuF{)xL!V@~k*e%sBh_c^J1_`mt_)4~0(koWzSs~`TzYajdV zyJvcob2&R%rhGq{0f`0JpEUeqqa|FWFsG`56p@`#KjD8=9Z)l7P`5jn@cy~Gsi!`r z0?&6X^M_g?BI)Q5h)eQ5&MY}8s!maXsJg`vWH{&_HMbOx9S?Kp|88F3_QFO(X0kv$ zR{J|Q4sPsU93Bz1!@x<5?jif{JyG>}qQpd|>Orf$=ikxz_|f_wQ_IGuJ`dB+e@f%G zOb&RNU8}b75~pfoSI=)1Kpn2&=;Ge9&)?eJtHu%L9^Ip9tU=cX`b<$ZOP*8D$RBri z(o@vJ=;rRErTE6V0r1%6Nmd-!J1zw91rCDkB)Jh9XF|6!V#Xk*M(jK>#YHty{&x09 zwgCXNX$1|~C?W48Al+o@U~okgDS}1v2#7R;C{$2K+uIMl9(p6t6?73gLs{;;io^R} z$0I8R(88kwUKFL7HAn1B47014odMbjjy}Dz?5sb1^ZKz5zOYHN*KXJU^Z)w#agP6Y zzw^p>z3=8G0fbBYDP@BGn& zkNwu2KmN0$RP*aQ-h1QEfBDYpDgmtwdiqm8@aC`n*Z!}E9qt#UJjOu8V;7zEi1D-& zy6B>%m=WTnY01H$Dk~74_+8BCDH6_x(5K;{X`S|`_i%PVlMw*8NFV|6M53>Rk&qw) zcZ!Cx-=DL<8d4BnIjWP%RQm^rAXlzkyZ+2gCp4g*n1fDOOjm15jSqTqql$2vuAD72 zCNNG;=>;HkCy*iqjn}_X^jo#QTh}bP_S4ROOrLMPoosF+Zzs~#gW5ToL1LL%KZH*QwrGTN2`g!rMe8@??3i^OENtCj`!tt5)cXu61-wG^AMmA#QU5e!u$cE?)Cb8^mhO%O2kso z^NZ5c3i0!k$x&461r17pyQVYG0M#5l6b~A5na1{_N&bZSg-jb2a0<4COP;YTyE~Ts zezt?>*00+&dFVU7djF*t z_qV7IAOhglLGLfU`;$s?qBn}@G+vPi za{yH#h347lAc80zg_fxhnQCFQvfu9whKG0W3RGwiC{V|`DhsD0;}=|^0J{2jSA2P{ zf~M*OW}={on?Zq~a2sB}eDK0^)leVQ$$cNp+@iS~Tu32>E_5U~Fb#luQj`s(!`%rn z077R97l4UMpNY?>d3O`ZFvyhx94@)+F>=IU`iiHeHE+{@8|XiQ79#|Ls?uH&Nemv< zJwCYc!t=Mjfbz-1c?6GB=Q?Fi83(nNN-5zV+y}F@bhd zqy106JK=(9X)sDU^`fF;<^)ufpxb!&`jsm;t`-3ih(xRj2~KOsiUbsAsz(f&;(rK2 z=`6u(ArTcC_k;U0pl%*dm z_~d*U_vww;eP{Ug7Kgowb^6FpzyX#Nco1g8! z`dxxP9`bI%%DJrw1mjp(SCKeIWwhCqxTDs zQ!tSfYI71KmmokBBN9?rBZgt`;MT$A%X<_=hZ!a@nz=hX$0yt~Gbu22|I_L2W{jk{ zo0*xrH~%@wHxdgFx68FZP1)+Udq|nR&K5W5{5`WKj~KZ5@Q2IOY;CBN$O52!f~I@T zToNkJJ=yfgQO*pvX=?DMPIJ^P-_ZFvB?Rc=4n~a=smEeR#rOg4->&c7wecYU^n2L5 zh|xZ(9SrvM(v9Jz>pT5XFp0H0C5R|Q9PVxagQ!T@((kf0UE1T4;}>D}4?R`#*S>iT zwdE&2b@W|7@CRG<`M$sT{~V52Il2ZtegD64u(qFD2fd&Ep|`AXV;@|re&rv0`Br1w zRzCFazi?VL(bga918-UzYWO=p`KKEOJwE)ASAXr-zp%F1cmJE~PsF)AF>-Q;S{E)m z{q>X|SP$#(BN0>yheS~u?v%q3RH3P|ldHv~yf!Kzl~>hM)ICJR+#w}1p7&N z{-hdEGJ}u1bkr*G%%jujPuT%E1$WPZ(q?Biz08t!GUNN_@r#fUg(x6E2qAHfiUJA~ z*Fp|%J#*pmWi43*?;2vaZix}Nwxu;bf>*R41mX_ z`aeop>%Ew3z$Mou8sGoYezu7Wkfh7P52!OAm;Bjsvf27?HUIpKouW{MfJ0m)QGGfX z0nhh;8ogqE8V)hAvHX$9z3AemHc^|DKIz$EF}W{CwatBd>1W z;rIW7{RlTgZe_>cu z$WA1ZM!LX5fGR{AaB0%DS7kFK^vlU6)AqW+Seiegh)7XXy-HM*zRg+akwSG9@kt8b zA4dXsQ?ko*Nl$@WgtK>X@5Zfz-TnU9F^L|57+Kdw7omcI6mfu>7{F6uujIcM1CqLe z%m>u?9GeVUuyf5c|MT<@ml>yiqnAu=B+Gh#W(8%ZT|@t$I7g@nxuYT^35X6jJTC2j zp*ns>UiKB;E({3FIsWIg|I-@Mrjy+!IFL*5ATfc-y2VkK%zgw&LtgP4CQdr-;I~9_byx= z_IC=ycoJi@+F=d)@nP|fPqG{jd_Be}+=*p%&hBfs>!154|KAC^{Rh9e#%#E9X+5dV z*L>whNTC5z{ex$3UAca(25M&n9URwj5+ezB6^bNv z*O4&%nY_nE42^zIWy`*ss1fg zNtEKCh(;JV>F*A1K7Xq}lGU^E0nL~~ z1T>zQ1?XHJv&fI^sg&s@v_hA0By2$8HsNcMUo zsRr0#aF_&_0>(nZ(EMI~XdYuKSdic_BEoq;!K^$5fS)IAgpY1KpZwI($#(qMZ{L3T zvy+4COSSw>(rP#1CR)(dDP2+j=*RzsWrI8%`>ErCzU|%DRyX+gC+?kqw*UKo;!oF- zivG)AyZ@n|{nWNSpG%T$ueQep5?rW*^0Y}jHl_(W^D&e1%PgBe8G{qJ?WGnJyTRcXIjV^cQ$fG9;BLK!rpLD_WN;s1eJuq z5tXjKkzd(NQE|iULo5B6V*cLQke1EiDgh*hy(>4aU%h@Ul=8sbkt=`Ib)*SGppl*6 zK?d>=aPeFP3^`vmm&-*<`;$E9np}-pr7)z*#~?5*S1QSXNU9hcPEV$q!AZlQG;xr$ z4V}}JfLp1O8tI}E#f{d#w14B-8~c}rV?#~UF-C(KC+2jhmVmfHAWYej4tTPFEFqs# z%CCDe1ERUXW7_H-lPUQ|hyXlBIp%kN1n&O@#ei3;@{c+q(QS0P2W?dU9Hf(MiqFIZ zB%$Dll&A0J(>C62l1v1~);A#Tuml1E;px#J9@T5LiN-^Wk9c&~@87S-M=(b<#Lk6k zw1+S}s&?YeMcuzT=PXKK=6ecm8NiPWE;cj?d){Aqyktr+b7=8+LVE z(mfW1gkYncB9u@C;6^7wQxY(pX8$e%{+zl&BZ&hD4GU1>@06wS?W*dPWd#Wdr|;mh zdPlNx%3IR@Q(G58G1%R^di{De>`e$jji{s7wV6>gNTT>OBqM_W3@Po;Gg6?f3QVS# zeu4_5^Z~by??09PWiA7ZY0hstV_nz~8Y}_1aEWHaCTyqXbf*wOj1G}2*REcF=7tHz z1}L1Uqf9JO?|J*FQM#%E~{w3#qn+Md~sD#aArE>r_-1=yqO$}FZDo_Fkl^O&}>G{(XAoWIn=Ay?peL`103o*P8?Z4#$4#aipL8fiGFM>F0mx zGw*-zn#}2K<)s&Q*M>w+?4> zmgkt-usEM}?ZlV4+ZMgo@;hl|Z>}Punz-#$2r=W~waXWFc0iygF|HY-c??#YM->UG z&09(&(Oqj(r(uDEusv4mL2IXwm8a&7v}9gwdr=id-&+jw_(@6PM5 zb3Bny0PbCrrQIh15_HNKH1ilsh?wTJt04r{nvOzHk1-nEdeiflu3nrtOfatN+8B+s z5n9m1=s^l*w2r`th9R>>5h4HWwCo^EI=wh`O7S!GEiwZOn7#G+;>p;8Dd*2DD5$+8 z+dKm;RGemJWU52J;7cG{;(fl*a<>UOo5j zlR}#Bw|E(C4w)&a$-O(t=N3r+}xPy!8|=I+yz!J2G)g*i#RUp2m0VX z#t#5sFf4|wFG_hh(V4fclBu!OiVQVDfcio)q;(aa%I6zAx>b6F#w{M1Ht zHy``0JEwcxfB3^+y38s5@lV`4iyCC#_RZHMlR;_|c*bH(%sxZ}VmZ*!PALH)B+7qhX0;9t4<}mq?^;7`>5OKy)3pQ5{CbjK zu}iE+NoZsh4OOoP3EeK14R0Ea>3q`4xH|Mtel#F5Fqd_(Yl||3DDKS8L5Y2zm zt(XD@E%S~+j4&{gwR?0#NEB^sfaZ=)Y`tvpI!@4Fh8RPfXgn$=5A^6h4{uNI-*uay zR18Nt+6z1TTJ6|yAA1-3dl&k>ogh7;U{SyrjYhgEv``7+U~RDhFg^U|i%k}>M6CKe z9(n5vtGv#i{>*yi{@ee9-(O2&^YZ5=AN;Y|3S}$mY;5p(=_~jD^4Blch7ZU7?SFea zM$`@E%h!cUes^7Ig%$GQkG#5e8Q=P*!HN6-BA2J*Zrnyr+Xk2csX#)7#xuDG&n8jTAG)NV3sAS`R)HfOf*y$H#>15j%yNlNkoIQUgj>f)rse8bL#= zLaavnWQLD?m|QehRg)P&foh`4bO;95FF*7Av;C1qf`W1F?%DAT6EI|MpG4=G^x;hQ zmntcwIzY^hK7uf0+-|#UWb!knG;20jFUkCO*8Wowho(${H;uiW3W)B@I;bZ7T!0A1 zRM^cYE_Ct1{_f4^p1pK!NX59eXiT6cHwZ-%UnU+ zM$n)kru{T-fJFT14v)0x9^E652t%1`W)mTS{tS#6MwiS0u_*NfHby-3@qHfNj`#0c zoFFLr1L+Sj++lC%{XGo#%h7JXw^LMuP!5WsP>4BecN2vM0B&aU^E{WwA*<7TuUy(F z4R@gos#Ql$k8nIsP-Ng?Y=F%}0f|vkgbHX#plB<4*t^j0 zjSz}lvdSXdG*Mb>g7`2wgr}@LNsenr^9n}0eH-_G(@OHIR5EeBD32**nyEg64Elpy zzW@MrtM@obGm{WP5mJ>aghU@o9gUuU;mx}j`VYp4j%XMkMKiI6)jOs60zywz{|U7( z%@xJu{3hu%cM5WbMN0mg`ui%b*%V(Bw*&JmhW^vBapO6hHue@mD^#Nk1R{$SY9%?eBW-_((qfiF@DvAO8O7YUCgKzzfUr7GAp@ zzx8kZ-YFidm6u-JTblszbHDVNhdIO_{K?_!Q+aT0>B(xJMNb1P{`7^9g(v3>WZ9c* zbuPq;2CI(MA>~^t;zA)QlDtB6P9VNB>h0`SNzbp{h!AVD2vU#f?`V|r?Do>mF{Oj- zpE|Y|u>fuUPM3z>PF6Vc1x^U0sH#wwR!`{D9N^~YOPm@roIjG_xS~q9#|cEF-#>Wn z=EZB5A~12Ms70r1bf+s4B**{|M#;Llz{TA?gZ?3&z(o-bAl3W=;o=Z)s5`vD|7YMn zT3AApjGDkl?HU@Ib#5#Hw)36Q*^C-QK!ZzwO7K88V~~qiFI~NHt?c2>5o)KX8r>Xp zmA0;_J1I;BzdY6XGJv!M`ytHXmIy$dmUVqFg#|z+Vo;co{;)vgQ_-{MI+3mhvC;|M z+2hoPG_!l>M9xXWd$p#sO$N5P>VGQokmkq6N16F!!$;^=2U^^gG7Z-?SCUAg{R9nE zwpsV;3I#z?2vh_R1u(sFp_UZ&WO^qcW^}I+q3%$Pp(qABD0&#WxM`diNb%q-K-kz7 z1!8Gs9M`cP#~2Ny%zz`$<*~^x|LW(L(cJ*Jv|oPkyPyBjpZT+GyZxSTTUB57<6s+I;vUuYC9;ue|%6SHAHtUfdl80H6Ns(K0l>o%k@t9wY zGl{~<3?W=p2ZQ0gqr-%%-*yFy5TcvYwJb%%$440SuiUtH^V#PZFpelH9UtLnY@sN} zbqxj*Z2|z9bY;LanL?>_0okGa$vFYYR6m{wK{Im>vh$ybQBd-tCSLy;17_;`Pgl#b z1L^2aanvQ`)Fo}a%VIVTHtr;c| z2_!z8h#A{K6OBC@^$?I^274wLaDr{z7);C0-S6Ies`grI{#bk0sdG+MopbKH_r2Hc zw{&#wxmCONS5@u3K7MO0Ly=(3FjALLQmj&#lKUr!0Hzwvggs`FifDHH6(LhqC5Wj4 zM(*f%=K{c8qgRX`VnaF--@iul+A`#|8|pZ?c{e#A?KoU6d2-C|k`0 z#~QIo5uvpy7e%Q>QA#XjR@ZT+Dh+)9{`bS#*3IDlAJLpX^l!fOqkr#_0rl{I{q`%{ z3II<&vG+?Ch^E2*7@qqY4FziyRb?iH5b^Hr&Z*NySvIjNsjdZ9m=X~; z25kbGpmLOUyEXmK#(-`F!A3JcfF(BoqHKA{7#||CoR!SoV3}w--PwQfmc<&8s`oeV{>cmCYf0?dq4_q;QUxo*1Knl=?;wHx+X$d*9NeOA;*o*sd%@J{hQ(A*^PMH z5x4gGHUwxva%gSWMm!#mJ&Ay(_}uGSpt*7{#u!4NBA~9I!aLJ57tWo(eC9BM1BiM5 z_F)x`sW?11WC~_P3Lq!_6a!N7pPT@gvK_#ZYp-)Llv#OC59DqHhMex#on^J*{?QVm z%*@@5n|~MMqA%nCO`$tuOsz11pparRzIf%zxl3mSIE)b0YF1a3FqdS789b9%VrvXA z@n}D!NFo0blQqE9BYtM^k3t={AmrdC4~k^Tlu_in)#_&J&UW9VWx!6~+5Q`Di+@`| z-Klx17g$MZ;2f*V!gB*Fo+&*xB=evJ_TvhK? zfS^8n=gL>dkxad+%$$_dV;~ZEs#1fAFVX zJBn4bH@`beqY@U^ElscJ2!xUDXE+uL>Lv0RQu+hXXqufO~Fw$*Q~5#jk28^Lt5 z!h5sY39h+su^S8nshPw`0i!4o2(yiMt82v3AeesLUT_iOZ9*9VY*n3Qt!*`RJ1%sKD6r_$^knfIH9=UP-@kjOrN{BPmQ4M7j zQBe+M6eVRdSOio_$q>vFfvNjXi;Dy)Gk}ACR1HR|P)lyU>6E}6>6Dc2jrzagMthepJp7u6BOwBnSQM?JNd%0@0$?dAa&k{F zhW?o{V-T)7{A|r`p7T7@#eLmSTRpNvG?H*zTr);AL1iF{=2t6@GB>Ur8yeiyf*&H|K`!Y zv!D6g;rIUdaRwS%wF*ww;qTWX_>YC$zv2PiZ#1~QA4~m1R_KANHZQuQh4YyDp(uz* z3?V=vp|JB8r#m|-&c7jZZpN-wZof2*DS*~-aF)6D7SWctfR^mCbfRnXp^PRX0)jiM)q=`&y+TE9J?ns7u)L@J6=arWw!OII!xW3B=9(3g?KVLk?clg3s(k~g^> zfRxO^{034okmXcgZSLR9QZ!Ia{00Fa$Jyt5M+>}iFMpM+Gjr}g{b^}q6(~k!9V>;Y z$@KK@Bac5u1q7%Sq9$VIJ-1-+@c&r~vDCJu?7uKGQiUjKB&|sl8Z|{fb?*fa0Gj@F z?w@iLqnC{j0FLy|ujT%`uIbh5x9<9|?tk?X!qAd2e0I6YE|vPSHKSd#FLC)upSEMb zlCwdNx{vp0Q+h6F>-!hWpDd3{1`yj^y`qvam4RRYg_Hmt02E+`nJFomMt~?(au^Ij zi%{l4a=(&G?>*s&z3-5a7=0KS@z5dj5zxMSX`<*ZU^MCRDk^}D3Z@u_E z@3=n9`UCjXAMJnp_kQXax_hkjKmNm455&Ov@3(h=ULvy&MxlM=dVlLqn;`ht(q}$* zc;uK)59k$4?H%U?JOMO?=?9_F3Y(_Q#7wmgqr&8HyhG#7}!XO*6}RgI8wFlLc5Oo`PDx z{XD08NB}rlW#$+SgVa)^pxWZ}%6nnIgVw>E#^+}8E4sijAZ+o;(3 z*0(e!^b|mAF4~1RQt)rylU8#_IDK3u;MJ+$vi#shJ?0}K&#O+v?*FgOWg8<_VqBmo zLpd%SiKQZh90u74qC$w3qjc<`j7-I37iEdb6arIKi-3hfeYqzwFw9$1QwA3$73H|D z%h_R7)s;pugPEF9NWeJaR{++(_xU;5=W0WG_I-bP?o9E_cU&DPGad8Wo;v@wr_R4{ ztN!v=lJ@G_<|BleHx27|kH2s%p2t3f``n52 zPI5jxpqDSTwR(xA+w4i*xUl2P*@H+Yt+yrIII*Zz%BzlM-=d{_` zRy3F~%2~OFdf0M1Sj%h-D&{(lvqNk(!G~I$A%V=)z#tT5S&l~4Z35UxsGlw4+)s0n zClI3Wsh!K$ub#VffdXc=0u-agXi-(gTV(UFKRJF6Qqo&fj{@YWf6ZXx-(;qyFp!7E zbY(xxjWy&`VKCEG;4$E?0`2)!^NDtOA}w^(sQy!7@)K$SwTKzY@#x0GH!od1b0CNW zHAJx}Dk9JVU^C}N%o0OyW=0MNP&E;lXEpMep6Q8E%ZY(q@vkl+*gU{d3lO%21>kta z$HA65Tkk1rYXk1C?#&&$^^$h~$h63^_tut!VmW)atgr3zD_^R!6Yjs=E!z9W8WG&pM`No6^SBIqX~du zIaNV3OAF6T(wN-wyuDm#+b5)F16z3@+&6bv25>sRSDxS7f?xc-Prmfbj~sK%{yV29 zpV<5R-*vt3?DKz7eb*12pzm+fhm&q%Lt5*KaF?lf!@bW1sk=qT#*ego*&1!`=B9x4 zg%cO)Vt`Py`71M-1&wn1-0AYdPGmL487=l)YA zOTYyNkfQ8JQW~~q2A=h~B-QHrjT={PTvi|i%mgA@i;9|Rwi!A4%jU8Psi}D4QWtT= zL;aX}wlFafm^d`bJP=R=9CFi#T7EQS*#a=|Mx7}4pWeFu0_y-dTadr5?Q6HMr~7pp zc+I++>nqvU;+kqVsb@or$2O;rLYuSrYi>=SOt_^c!?AVESx4Hax(b89h;}Dd>;+q-9P=AKl$vzd%o|HO_cf@(nmi2!gu}P z@pIC5&L6)2zZ;5H^kYB!pSJE(4-Itb4X^FaJJzQE?c-ZVO}&S-?S}Gl53kub-k06D z+TA@i8GzcGOJYUcdYs}&QXNLsslCbR)9~Cd9>P(gnUHzN7LZ@iz+tJG-nR+_81c7VqETh~V|B|%cAoYNla7DNQW~$^ta$pG`PntM^_M~O* zKe5rI4RRqhW58Wt6s1!B940TK@`y7Tm+f^LEV}Qhj zR#G*K&9>=?k}B(Q`hU%jo!#V`d-xKz0DfQ zud})&nD@QRwDMzpfezMx)$w{woF7`LaJA&B)_<{uqiFq?Ywj)B%ZMM5PDtA9wMZCT zC7}cY`z!7K{cKEXVxpq8L^7CgF<~|Y1K6V=lNp<7RS7W}+x|;c2&0`-C<@-0mUU%j zh|xqC8lVt0GciO3b6^G&C~9*3DGD$L4&xX@tYZ|BC?=NF7`fL#GsQ1+-T#UOYz=Mw zcx)wX;{(6){D(jG!oU2d|5;y7+|B9vFIGSH&;HX%$L~KH{l-6k-2n9exWGT?;r{#i zkPf=nmXqUo-X75XNyl=xh6RSSp)`tgb8{}K%?PtId*i)xqcBRLKT~Xp=usR!IF6Zd z6M2)?aw1DjxBfZG*t%Mw+>J$b>Vi6onP3dEay%&~(|CC339ghR01k2S9;#__XEROn zM3`RQPd0l103ZNKL_t(If92-&-Lt1EMI~yASj8BlNTFbIh`%}9pIjt>Am{QT_`e2N zbWl8!k--^#!Q2RtG~})wN8|iUY4*6q<1calSTT(>2P{Ljnt$CU0oKWxGY`G$(dn5{ zWl+Y!eyzlHR56$`K*uz=a<*Qxj+oBbox} zSq^?`+N=J#GadP6G|bfxU%Gvldi3Aj2e+;N4rgdX$$M?Dj?GlkeQQoO9D`*#t_u6= zUnCF*M_C300A$PvlwJ^j1393CQ8knO+cTL#Jl2-LJk)>!k!5BYNoKac9}o7cY6c>V z#^q=niYXNnDn?dJP>jK)Qqa+;pa79tq%zW?piqJXL_vh2;PH4gnM}r`vM7sCWUt@W zcur`d9?<8XpZyR2)90W6Vs(f0{Qe)l^u@odkEKh;OT*Cr69xYq>zc6z-FY&B2lRlp zrmXvIX_ix%nNSc&xrlq`CcCFcAmxBsQAbEj${tX!cOxwM+vdqCr3rd`M ziZTO0R20Ri9H)pyv}E!nYkX{-xh5DB3ch&#>e)*dX^bkuz@n&P1PWN+6 zRe~8Q(1guLqwh|NeD%y(CdolKc?zpR&3~-$y`G2+q#nCz&Ku=WKb_1QSqu8ZS)or* zD2>ZUU-Q`R-fnG(hQnGpl(ne1n!Zu^8lXg}cb?=+kSqW`>8Lm2`m`|(x{U&01EUl5=%Il0orgiU#zXMUZs(?e=SMUTXBT>W_0WR`!8d(-ldkI zpoP?5y~vjST?5o1@Pahn@2$G7|4Z|;a`nRBh4Kr92ios0a7>F$Z=9tq>)#Rs(W9X; zQ*B;3%cfeQwB*9ntpV=4Mc{*%4oBlM>;w)j?;9I|7@>#)Q~>M#Z7E7E0+$m^c7lSW z2BJaLYSS@@Su24l1vL#w3lK9w-5>-IQ78yp7Db_|2Zx6$W>J%wl5?Nu#+v(E^|;B4 zyvc@k+?(FggYo1Odq4Z*uR4~9G43(^@!!4m{qOzbyQaoo`&tY`{|{#R&VP8EaX;#=;NGS98LNBh0{f;@X(F|15`*vOu-(3KkJmq5GX~2aNgT2x46K$db_E8Yhce! z{+q@AC%y0jkiV_;Zggh==7@hY5Qv!@zL|)LU}|It9MseUW<8ebqYv+0I9rafUnMaA!K?zgND}~PN`K z|68@YMJ<~S_as+bGussNeV6ov-J$f!$jEa}Wnqle!F(1`K{QG^EhbYAOr}tc1ddvx zGzuJNICv?BFq#765mZ@g(kL2X0#Pv|78L^`h_gcvQC>Qd(-Dy|ld6Rfrjs2Jkvhg0 zHTnw0o^3fz81f?R0ooo|2)3tR{-rKDCPWx)8z=G5d#*J z4i`xi4k9C)19qKz#fF-))Xljzb6_}YAjFHLfXBsFBFb(63zsKsfO+K4WDOXVqpGd| z5T_8AE|w6JsDhXRR}wKU&RxBH_2C;r5Q7+^K*Ur?C1vYMXl*fg8eAi&r}9kEG2LTA z(`+`teUGFg9vn0&!r|aw7nG1v2`ni}$>4SX%(;Kexj4^1Jl}6UjT;f7MlcTRSy2=S zR9U?G$n{HCuM}md6j4>dQ4mE`87K_C=PQyO!+%Kf@oNX5|DXEf{o_sh^@^ao_v*B@ z$o+b*Zh9a*+#OnF@rUmhfyE?{GJ>Yd!9gV+?3^B5ytG@Cj{c{*h6> zF?pOLgHRD_RhUfAp1*qY=7q~=_9M*mA=Dac6UVoEj$KQhzKJc*DX}1!>;6@f1t6EB z9Pb}yP@T(Djk-Ol(2}fWFvfx~;5m5Pvuv=CfI)L%AYDR$DncOAL#vGK^trw34_`mE zH=Ze~+C)rLV=bn^JbDlasxX2onTP&#?q4*jK}ZD}RijBH71L;*wJ3pt3>G0CHbkMK zX6_9PcOcA((_kPI*d1&wjXmY)Wcjmk&5a?dt1{~>wxokM8`9QqViQ;`wS*fRu4j?^ z?-;)=(o*MJqi7XgsjEGQ3-h_uU{lvN_p+~tE5&*$Za2ChCM}n4TG;AyOw{(W1pqcq z-%0^Y8tR!G-mdn)Qb`2{!%OcVESCJXQwBBj%T5^f?PgaGt3c5GK&tRX2QT_`Dmn{Pwn*O$Rs-wDP^IxBSpmUX3bZ23~0CFQbA;55XBe|>lmY&VI0fRl(;AW*1D=y zL0p%heN+<^g&P47YnBM95yVtD7)1fQqCtg>2}+!U#F-h9!FPi6$`U99Vjgi3h+`Db ziDDuG-)unbfNs_{86A0cUeR>(+T`c{(bsGe_w$8Y^(Q}l`@OM3dP7oU0iP>O^1{`{Zb>v%gS zNITP)e=5B}>RX>5SO$h^+g+s5%r|q}ImxZF%IpUO3I1QH9iBN`p1(K^0bHPpFolAm zs5`duic6QX*`9hgIn=K9t#dGoB0#&R8#6x*4`E3nY1if%$!Mi@b9ZM2fWSpjh9bl& zHEIN6h6oYEfLLK%T)uJb(nHt6ln)|AAquHgL`|6tDX6B|JixzilkQJpFmar`=h3ys zjzTKVwmSsID{4d|15(ug^sgZY@$}o554WWnYvKM0^ISY>Xn=zSP+3Hb#dLD{=C$)z z_JmLiOrS;*Ek-CP7(_tCnPqKo{BDv^vj~{y{Z;?h#4M^h>_;FT>k}|j)fAi5jI$g= z`4;+wHFy6g0>BAz|E*_{x(@bV*jrEg;BbqZ_pSTFUMai>ZPQ}hZPkF781a=iYOxi< z;ASMCw#|K2o0a0eqU4ojfnfn`(Pjry*YPy(6oxP&0=q&Y z&S0eFOv9)MB}OAmCa5bqtc+^#h)kFZs2JE|kU5^w^Z$~o7XSq@EIkkYz%YX-5GV*+ zusTKnBGNogOuVg2%vUXa_=9g;%ecRAtNxh}eC`9k@`cq?&wb+7bDy~N>@R%w=C$#& z?|SSl-*k4kwl}^0^s_(ws(1hNpWIQWx1^ib#y|I-R}U2U$j4v!z^^`k*ZOn!>E_k( zz3#$#T5vi%CQ*G`<@y7GVVK&p)46>wofXyK_)t}*V2G+QlzRT+>D|)+C1&0|fJHQ` z;fUODkkrDB&#A7+CQBN=^|bbp*zlQ2iO2}8q{NMmnNu8@#Oa5!7>`ENxWBJZ_Z4m` zk*Y$#&c*YWZd{$78hLmeQH>r8H8$A+2ntoeG~w7C`k%wwqzu2#&6J*9c z>;8SLMhQ(TP5+m<|7B{p|HVn8Rsn{<6atki*B*Z8v4# zCN;LNmcaRdmgqO%_lC8|pWplBi_iSXA2urgKKlIgv+w%B|M2u%FaG2YJUU$GJHGA8 zzxp>{x|_bXANk-L2E>w2{qg=?Nc#JLhUu$ZV((qI?{9&m>2{~!lv!XC6Oa-YQG|l+ zo!dQsVJ8&eV4`NiQ6ROdDK$P_Eft^#++@%G+Y{iS;T)EU@(!}t;e~7GApR|9o95l~ ztT?`7y7!#72S5p2hVgWK@KRy1O3EzNB;YVlFPy#c(8IfDPS=K+KvZL`TB}B9V%Zb@ zYEp80rD{1^xBoUtW&usQb4S4Y;9Q}eb@>FgIm>RDeQ%gDn#%x2n8*8HlydT5E$RMS zlW7KsNl}E|vuCf|xHj3LTL%@Pj1^+7F{&zv0vjnn%w#ZCSWaoC>X;?d=W1m{( z{@Z7_X=0O7n@r|#nfBTFW4Rew4{dmPtD>|3v_61C`v8CzKai#&g#lzBE7*Ad#l!s< z4`+wbVju}pA=c2E>lvzjt7iaEj4+wdWLk_S97+je3MIG%6+{KVl!AMriJ_eAzDSwM zzzpV`goVL`5HKovXENHEPRr3K1WKmJ>?}qtar<5f`}Z$B{WmT>^^IqT%lzIaUwqr& z`Te!re?uSo?Js@HGk-9gLtr}QXaCz*ZQ9E_rjP#5Zya#^ec@JppF{tjeB#VqXyw!Y z@!&4B(nnwA-2Xi!huU|1qx*a5>eeSy^5aS$W&)sMYDBDxsvO0$=O?H3AS%Q(o2e)y zLL{=|Nm3j)Ag$uWGCX1 zHSgU*4sEi=7-oz3l?6=Cvfqr&59Zq1V7--owuhsw;vK`J#eW*uV)wWPT*JHPa1f)j zYM!u2+?~W1D>F|k;ir6kq=Lsh3I$hn zEm1sl7|+K>maHA~XRN`L-Z!*KSB^&`NJKyS_Z}TCzyKJk@ftZ+-Z z8?Q&#Gu_?pw#(bmbh_Kn$;K&W6HDJs(@WnizIu`GcW=v_#RYAfHb{j>WvQq@ z2d6Jg&Rr@kfSIZq&>~jQ2u^AzcI2mN;{J&o2b$ONMKwJeJYaRRv!_OFff?x8b>}{c z9%_g($F>Xnr`;(AqW9L>V!l5yl{frcjy$1(CtnAcnFS7saHS)!K}K3>2@w`qkGS zc?bbwkcinVf{MBl0~^ZJ4^bbiIzub&*Q%y~kS2Xx2F)i&STl&t)uVZ*_e~S#nR#={ zE=%EzTn!I+w%`;VG>ZzEGoySJDIj76BM?Q2ASEV&3Mo%V*B*W7?B%^0s1*v1wbr$n zda7Xqz{EKRgr%52-g6TZO>%^XKoT(#XoL#6f3U>l4Gcg8rfg~w^G)+Ofs*7jYfKuJ zOdLnH0Ce(jLwudBStWWn%j48lZ&Fof;U&FthrWN46>w1vKX7KLw$AGo`p~24AM8th z5H_$399g-(t%iQv@+V9FYPh;(>C?mt&RrwpV9XW@jI_e-7Y}cL6}irJMlSz?$%j3Mjl6FnDnW5tzWtWm%5L zUV4rlv%;a2_3kNn}$D*w=Lf9bdW_b&~X`L1sp za>+dwdiQrf^7e1JG*IAQ{_DT^&~LBl=ZVsXKmNkqX=oEC?+1jHb+~=}9`@=)sguzk z_y#a%{pTuqV7?nGQr1;Js9cn_#3~+6P8ECS#^n^QxOA;9T(|9tIcKR`lbyo>^`xw6 z{qANAdgzXCXiM*%AV9RJjBL&)LqRznk0(>8K$Sv>u|~k@n^*TPpD%Vot%$YP6lRqu z*p$u4%q0rXYUR0pLFOnTG9v>)Ddo_0&3EdCQr`H?6tI+ZI9d6VGk_oWGOeTrNz>M1 z$L5NdR+?V}5CU^3G-C-srmP6Ke)IapYgd$TP$Ndf+EQpAgMrKvyx%N?l++JNQr<(L zYN9ZsWCsxwPxl)=r>}_ufF{Mir4$LCFU%JD+;z8)vL>#1Zfuo@T~k{}g#+yJ0*t$I^vM#)MU20Dyz>R{N6$9ZDTbOyts7$lr+O(>1zznT{FQ^d+~YF?Noq zqs~^z-udhsK!1g+HE%2!bbq!c>-lWguH`$+iiM=D&zm}eU>&1bLzW{#klP|veXYQ&m@+y7q_>B+UGysBf`q=M2NPh-& zDTbOO_fjKs-;zUpmMP(aoSjgWBAD3>sLowDbN1YsvP}ECC`8~+WzglC=DxLVy6v%s zbTCjGFX?MbcHi;2_G`(=pV1Esl*|cCG@gvW42D5qGCgzV;m034bM{;yh$1SaMif&~ z%ig_eW@_q@{au=nlpYsKn*beo?3{R)u8iHVVHnVD-}$wr*NG78S^v&bebp`=w^g2a@dvG3vRp~mJJVh< zyL;KLf92w(V%PN$J76dOFz9`udMX+g5OFJ5gUnUCS*Qt2Hsh+J3s~ zxf{7CLkM*pU%a(%3c{!uK_lrbRHf`6P&r~MFdAdD!*#_{sVJBk1;Jp!t+}KEFu}}y zd6UY(h*E~&6epC3o9`cqePBMqT*md58MWHp|ifK=yk8z9XNY1(>o8; z^BW)i(lg(2ZJ@y4{`M=!?h5R0;>~N5pL@?x#@~aP{`yD1^mo5=NJ8kNwc7M{wawf0 z{$K5gp|lCT<;{EVe?>ZCr-?C!j_)*nB#**@+8axU`Q1sfJF=z7KS&W=jELt9zJgmj3S}itMxnUI?zpSU_&UzMjSx@bp z!%+40W~Gu2Gs66Lx5~e%dH%LHwX9UatqWEw$>_UIYer-HTQ(*DUGtMKADpFbIe31$ z>uA&ep_1$F^1#VsDBtIk(7&N>*RahWQKB4^&4^76#B2;zQjMYqR72_1UKs*O73xE) zZp-0_C#O)3F%iUy>KVrxRw$I2p@jhq1;Jn`g`Y1=Y%qcam=YO~WC0N8T*cNbVd)NW zpaOx&gb|~m4kD6Wgnf_km65EKzVWMp-ubs~40Exc`lH)--pbGa(w_|r0Dt`rC*|Jy ztxugF9^iD$KlKkDJE7J)Ywi;OKJ&T5VJw#0-uljN^4vcC)(dOPd=<(VowOli-7NC= z1s{GFDev$ro;h>3u?!#e@??NSopD)TxOn#T9+&}guU|-n8Po$-5;q#3r0_Su`G0G< z_6$yV%k!}Jl`*q6`ad6`+}%aNB8{m31*G)d1THd9r{#`ni9b;QVB!$Uok?B2h{@>c zqt~z8xK0J4pspc`C>ljgRNWs!h?F#MXJ(q*d@~X@dC5B5MJ1>GGBN{K+eoN_C`rh@142w@QqV@;|i!0U{o_ZtZN_? zp@@D92$uC8H25mp!-2Pa(;Do}C;s1;?!1-HKYuvP-3~Lp zUnO)fTjS;Y+Q)Y8u!+m(*WiEF_Tlc+{U(t2*#z!y4gJYe3$^2Hm}~0|1~6qrzj1x) z%;?C<)pA|?p{lwh6hjgSZo%E6x(X=DD%dP**G{{tIv3n{(WYL0|~lnR)P z*i4WUZY^|LRk&acW@ISC^upf7>sLm*#i69A_jR;c6o5e?*1}ehkt!vB3WX`i&DaJv z0pxIR-bn=x?Ly_N9h_F!2}j9j(5lBu3Wlu z<6;D60s*38R!37RI7CU}nKcrJ!*)y{N~R_PtD)kYgn4#obIemTk>oXE;=zAhDrh$J zoERAm_wOp{lqqe_Wv2Un#7w|F)VklT8C+6qFHt8jW`!r?mGZ6M)_r!dR~>Nwfxfv% ze1Dg0pjQi5S-YNg8Ctxei~HB*v#ZtTAKcl2Ma#o7v}uL=Z(3>F5PE6x?8*dgydG^p z+g;E*S-tC9PgcbZ`ZJfg2!Y+8NHAtF85sl`4qlu=l`&@Kss!KG(S(YE%M#-Wq~;h+ zsuY(jxOYQ!NFBq0>0%p_4nbdHRq zKBtQN({FOy2dLwTc<9<1&ihY3dptoQU$|8dbNNp`v9}2d=*cJczU^;Z^lVn2{PgW# z{#Rc-fzUnohCcg+!`Hofh{d0bhZK;T@X2p^^BPOb^M5fEw)JIB+r2MKOLvQpx4R7f z8K&bBJhtAB78y~XFjY;lI>}T0s@nuK>;3`P`loNr+Hqs& zgUL^5+djh9+_8*vvc-H}a}KgKKh$=vbthy*lkx8O;`J-%uUtZbS&gV#DPj}_5wj>q zsfmLDIjDz2nFOkoB^J{NRY)|AiPsk~6U&wX(;Vef1eS9hBw->MBD`;$k0Qw``4u*G z!C;L5Fw6pOQs4-e-*cBlTi}L)Ztj1n{6_U`aC}YI0Ib5(h5=FQ>)*g0vU!0!d?a2* zw6IVZR3Hi>6h)zG)vO9kqjFRq98|33$cizcqj!jK;@fY<-E-C+UX$tU)H{0AO=)9X(+N8a|-`5$`bp$*fM-T(AwgEe& zSAc_=)lpz%#u^0{0vD!$N5uB*SPD{)YtKk-ux(A8<+*TJzc}=tvPb~R+WmPZV8C+{ zFQxlkH$CksG?Uji&jB65o{%Sfgk4PPEMn3vyzvXTb`w zG^_cpWF7CKW`6MvTxh6gbi7h>aq9b)hK2vOSR=Z2h~X>Rl`q|w&MW(DM|~X{wl%F% zxAni<-tE?1SWd>3u{VHeI;7D6D?-UoiB=Zl`e63uxGy$2Qx^4YzFo`^;&?J0k6;r> z#O#n_rAhZ+1cjOy0y8M7={W}nBVV7<2+-gdcY zV?-_1BBWpqe$X3e2AD@Q=TKS$UuLL!?oP+3S4(n+kTk3sH}%hVYcE4Y1m?gYsyoU(b6l*rpx_;y2QDdj_z`YO(>w46;bj!i1}R-G5Q*Lz1e9ha3;Vz+{5) z2;&i#6Dmrg0w}<22p~2TDWDty#71mPpy0f|5sW-@0Fpg`Xzrp!;?OOAtC6c2<5sPWNm{*>)r8B+44er2d~@&djRHMCGUi zEXvFfjU%W!b!Id@#asde6*aZGGV>S@pf>CWIHKZXlUZFYGkn#ycdCh4O6+{KX-aIX zU{#Y)(0Dr8J+;dtRDw#30!NR6s$`lG>|(8KynukrBmcPLuO+TOk))8BmZgN8C(N^e zwRV5av4oIONtp?mrvb)L;zf3qu1h2aK%pF13!FN4>e7wN~jH1u@3+r%;}+x*|5zhCS|7s7sC=L*xaR7qQgPBkoBJi1u_d1n@yZ6o^= z+qkOuU$7V~_q^RoIzH%)u#}BB7h6ieoPYO<7X3GLZZ7UQzTBa{iaOh}{`c{iXe*?< z2N_sM5VF`^pgrYAFmNa(>cQ>WC>j-^L>%$$7iByOMTyB6vmMltD;U*6$`)K(MWz|i zLk^2{$pgeW(S(xw15i6(GAGSOP8w-#{G#`b192!q5kd%6RV#_QDg_Hhx$f|Dca7|b z+u{8~Uvmcztk1sd@wEXruU#2E`@^rg^N6MQmevLW8jjgIOz&J5>hueLQ4OXec$q(f zTlW7h7|eWyxleFJTPKbmIHjNhfEpr^fkgChXD?j1bZU1OAwa|`5m<;(O@rr~1!!*n z2LOcDZ^9h+-`nn-Q)+MDD_H;e5SsE$IPPyhmwe19zsz-o=- z-O-sdr^dSsK-~ob6vb3X)J#0qMRNHC+^<%h^)~}4Ij>J?tMZJw+64b`mtR=2t+2yl zE#>W`q_S({{sA@0fPPx!e%d1kAPJsJ21^MZKt>d`o}AvfboKIu%NMx7fkF&b)Rgus zA_;ivdU%5<%uFL0R3p@({E;lB`-Q}e^^c}%>P`-#>gxX#2#7oYY6^^+^^l3xw|vK~ zu>(*W>6C2%TQ~uC^PtjGMl?v=c3xC=P6(5&nn-(TF=7Sw(!tC z*P-?A?(<4j&DA|6ms;##_t*UHr|p>dHqpui94{R~*S}5SuKl9*Jgk-{3cdzPq}hSd zt*RW4#?w%7tfnEHLNUU4jB3Inf06&VKV0CC|MXru0BjqD?6~Uhqq_!Yy31lf z-@bMS9cZf{*%Tp!sG?eh!a^{yny5a1{`A>%p%_6G(KOZylrT|MGbUa1moS)z&aeVi<**$- zJd7$q#UM!BfBH`0d>ZcG%*@op05cVXsio*Qrmo9ZkeLc7WdU=Z7)VOQ3~}`sL8*ZE zcTqLm&rLNp4km;74KxntuU@=#{VI=eAgBdVt&SpU5WlxH*Q_~QSA`6wkrbL#{-Wmb z{w4bXJNF-xCqM%Kc$gz;5*yE5{k&&$rqZm%{ikVYOEm^;sQYZ$Q06y!6~VD!Y}u%u z`SFfo9&y!Z1)$%k?VHbPZ3}0YxLebOI&I-K?y7CUP)O}S|Lu3s<~2Bqrp@8EM$}7Q z2WQ~j(wtE1YB^84rn_KC%|b+>2xVE6<+vz| zqM#6Ho+S9*a{mn-cP~Ew=WB5DYr_O>LQg)icYd!NE;Arzti9H0I=MfCHElt^_R+sw zTjrsANunnRNG#4+AG|V`uH-Sp5^>b$9sRRGj~9$%FMp5G9k)= zS#{>@HHLTXhps4L_fX@tmg-8gfr3eR|zn0ANy z7#Y}{A+yXb2m#p`?hFtiISQDWGIZ{LsV-^&b9+a_)EX8TTm@9qFI6&Qs#R+Um@Zzu zc=6iR$tkKlld++y)s#&LRuBpT69Q8D0c4k7q3n(9I3I{likgT?^yBlOpVDBC)j5o0 z;&CjJc_xJXDz$b021+4@@)Wmj?vMqb_nqA4;aK}(FUqFC;?v*xoNw6H@V^*Tjr0pD zD-yzj&VHkMuv~N#P5hEMuXWXO6W#j$;rj1*`R$ypb=R!BLB~tS1<$1=r`0tkWHN=h zo`;#Vh==juC4KSB)nq!V4=@{JXN+Qm$po_*mxm!nvOq{_0Z2V)m=OuUMqo2jGY;go zP-8MnA>KQp z^LrBn-*5i*mwx7lA0HNY{)=xuyJ`Pg^v>_RK3we!x9Uxt5KfLxT4uQ4WRk|ZxO%*^ z{5^9T?rpcNF-*!h7%{V%fv6}Mq*@=0cFU_*FP=ILP~soWV9K#}0bl{=lYeOn+t72@ zR(ji|vhUmF7s~VuZaYegaII}n9fJ%~5uc|agWh!$T1V+N} z1EOkxaDvRMCKg^5Ff*Yft|%Pf?#==53|rX)I5A1d2(TFH$F*bg%+0O2?p>~2_2${P zqN+keD0a^5-gxApQ)ecJ5r?%JbFEfI2?)+zljWokDdtboYvxqG1_*L~UsJUd{SyjD z1gWPPwj3-d#r|(B0A>p}Ik_98aV;wTTfg)1V^bZq^zQQ`xiRYeWCb>7wfACym1lHV zKfSEx?_@5GdlLFC_k6K#%8LK_wJn#gWqp4~A9S8`x;2bO%H)g__S z%Ow{_N1fX7MN5T$sPnTrCv(XeOEs*yQ=6!K`V{=Fsb61Y@lG8Jk+tp|(EE7jk2OF< zGcW>aQ61=uFYMobadvpSst#+Z!2y#ACObtrDY)PeLQyaWCU(Ueh>Vzsh?tm({kI2R zAYulk*C=V_k|qX5>69h43^|a9n3Kp(;A-jGoKq0Fg6qq4i4|TBvwbDPkwrTxWMBNP1d6MSLvOD znV13m&hNjtZJiJ34(XMl@?Rn%7SX^IIEYm|E-qd?f8k;nO%OE_L)EHEMN~vpTwiW^ zeNAk1N~o3o?O1!;d;hTBZE2FNb#+VA->5H}wuX73b(4U3FbS7&0@HYBeERgxcnl>- zR8|^3HXHVaF=%G_*cLbP4Q`0(XjN+huw`sTwG(=OjujIvRs;W`V zB2+A@iikv2F^j6INKZ*KCk|jzQ+FXqOsLudW7y&?lXT?%!L53o^j zvv=DzJ6K_#$lH5lQ5YVmD#?-7F1=d+U~iX|{d4ZIxnFDh-#z>lA!lG=?HSjA5x`bH z%Z;yomU_}jo#R-Vu%!tYN}z%Zjp5)$yM0R!Z*z4>^&vzM zN{q%R3gbdK5DMq?0TN;X8Q2n6pF{y8Heyf!6K9jWCElOY_L0^hMhebA)_{w0a5N(_ zW&)Im0&@tV2t_E05SV*o=e@k?L%;o(YuW3!eAC&d-+J-LO?>dDUc1(X_y736zdUgE zlb^o5Nkh;5`}KLm?tl6xANbtbGHbc{HWATxf9LhJxt4$amyhV_@$!iR)U4ho_kE;p z_3U43_ltW>4HgHy#4d|OB2tSYv)wb3i&u8aDJVc;1VlwWt4+yswEJ^|Mx_J*7BG*x za6+n=o-Me4{~GE?+lbMKGMt1LQjmnwCX@2i8Ptgp<+{?kR>#N27y(b|W#oLjN5n}Q zJ~H#Lb!HhYlfkV3@7VyN`P_TRiU5_-kj*IsmAG>83} z2LhT?qs_Iz zW*~EK*>?Y%&SPG48hGDpYyfEPJdiJ&%f3K|3+tk)V7b2bsOE-?W(Zx~XjQOSYrcN5 zfu*w@z35r9h8!)rXj>(BLSoX=Q{KH7dJ!X#8dOCL#5Oh!U;bh}9gokP;r*BDQ=@Wv z8a%Vzy;5pDjHZ#Pa7}?QN77(2B4U4nhzP!3s&oCumQji@W4O7&ALiudlyh!)iZNJr z$*|U4rtDuJL|hc1FtdZhgC$Gi{6=S20RSNcGgH+*p11$0Sfjws?<}P`?#bM|E&aRS z|H|8*x-d{+I_97JfyaOMlV8~u2taI>YnCY{>@TUU>zW=>{{M@g7!>|{+T~ooZ4RaZ(FBmmgUJ4=20H3JQQuBD7 zb8r`b15C6kieM(SR$&}2T-iN+9w-nMMCIX3>j(u!iLRb;z9n%lWSluSVkTHCo-;s6 zql*@2*1glWVMPm3{+RNU8FHq`Id79TbZYNKBznqK_5UslT$Rm%w`k{S= zGSo<-#;B$sfteCG2_l}OfKZr;si|ZbkES3;5=|=88Y(8WnW!g-_F<|*BMgq2(X6-y zB~)2n!5eAZOoirm5RE*U9)#B0WEnBi^(ZYrSsRp@7vAoT9gy;e6#$!DIIO&HU$FdR za2!k0%TR^h@}eGnNw={gfOS_hzsX%C24|!9>_RVFz3SG!bcvDMs%nO2^)T+j4L`9+F5rq;Q5@3yj5}UC&O0L=cQ_e^S zGNy<<3*DK2)BM39TDpaeHp?0~5J1et#EughkH?`bJOZhzswUUrMoevNzWLXQI13&- z{rtc9v$bWeT^W7kgHPPt(joYL@BM4fe8+mQ%Ex|ZNc|7s^UoiC-#_~F!A$xJyl|_2 z=a2q}%{%u0v-fVXwk2zM*!NeBIoDeIe(&CW?>3y+35iLNiFrtnkO(4*C5(b?#aOZw z<6y-+K?sr~B3X&B93CP&krHquC$=K$$pge-feeTQFt!Yw1BbqM@4eTW zqyGQP!(TN0jB#fPF=g@IwAxe9+M6P6OO~-Hb2N_n@v;c}=sM%!XN&)CcVK<9 zv!~w)HHZCQ_sQ$M={ zf&+N?!un_a?l=6<_r9@Do!|8Jw|?q>`iAfN_6IvlJ~`7L`q5vNuf1m$9zx>Dk z{4dYC3jEwJee^AV>gRv@7sf+)+V%PA(~tkHFK%~=aQd%)_-nUE1bX%1@&Ell{;NAR zF#C!BFX=0s4*h9VzbLB$uNXv$miBmkjC=QQ+_-@dK*ADILQ1M?v>dx;dhS$`lWthg7pgN1V>M#ZA{f9 zf)HUtAtkt0IOjKUVS|WBFza>0LeRwbunf|3plN3XSOh2~VneZdt1}7YV078U2S5~o z#*j2vGF3CPK2bo$G+so=jMeBWRE)t~vh-*9rYBUJy%QT&ho%xmBMM_&Bj z{=wUS^>6&vtVPgweCz!`_a|T32|7FaUw`tQJuQoV`WN2+#_#-x-|?;YzwO_+d;Mwz z@LRug_V>T=_7wVm1<;TG?Jxbv_rJNl%*j#sGvD>%xBTH-fA9Zz`$zuUfe8QAhsS^6 zdtdt_-*R`S_r;Sl`}hCCUZzA}skF3{Fa3lU%Rgtzy+g;+H1)L^8VXey4s%sNtU0Y%=LErNP0n;vved$AAn8o-S1&+rK^vxxe( zRX|*kYbVDik_>GE4XK5yrIaJ}7n2rvWKPoM{Q`vJ^{vZsuvqi&b}(jd zdR)T*Ru048R?mj{^0~~iY9cSc^62o+?C1Jxm{TUO7--E^G`6{)@6~LFW=hI@p>2NJvVQ#H>(?K?b^Yoc+_(d* zaCU|d-qVlX)6FAkH-QOAv_#Pr`h+J&Fb6eefCm@uHXVW{<#$mwqizxPc~uC6e!lX$ z3jQnW&k4)mK1XlRl-i`KwUKIff{F2=Li3b&vyFc3!=jrfafbtz@aW+HSPU#=(f0SZ%-CB zrjKsiJ$dcT2Y2ryuAzpuwKj##nW-i-hy+kPc(ZTE4lg4h#ospnPTA>N^RNcS-qnpR z^j|*%gEtihGEg#bfHyLxBC~H5>svk27+@;v0Yi5*Fh}IkWUWLVA0J)4z6uRaH)xZA z;mMh)(poW<>|L3q-Vq+|(g=kSmWpx(G*y_vNT?8WL;q|51G?FeS+Q+5(9MBzznrni z?~A?kx_XKAT;(KY0WkMA4ipiJDRo0#T{(XJYu-XC(>VHtoyx?RuNrt#|gOLxKK9*Rw!HmP0UP>rZAs zq!6%f&(1!0XLI9@9$$%@Gh8`>HdwEDbOcSJYH9%?WWiGa9r|$3001BWNklC}7bjfY8Lu z&Q`~`dH49nO@t=fZ>x$!!+dmSMR11T5dsg5NeC7D$WJSRy`NRnm~a9_vs)welYT%@B( zQ!?#80FlrOUT6BYq@&pOdEAfXGNtk`TkIe{ZK(TLWTm#z*4?MuJNKul{%1QKiYK3< zegZ%cj|L}}uP_9x0#6=&c>4Z3r&n%XU7tWt&@@;b%lb;x1l_Bg1(zN*D zEnKX`_qV@v`h$P@H~#7mf9*~)o~NTPetGj%Zv1o3bn$+`2hzpvCmB>pXCUGE>Qjuo zefRpEJ148PLq4<#nnV-L;3-;yNKU`r#n+UXbF!~{-!9ESf%1Ty9Et0|vDWOe<6tX`7%bYnI(BXCi&HR=dz8Bz2$tc&6E=%}J>vSK42B3>^ z6N*S{BBULm|L%6hB;XpDyyx%uG@8cevj=mvmGi|2@gD+xZR? z9d!HwU81-L?E}CLhG~7}yYS!EE8Aq}RiT5LK3r3=IE4CA)XN>(d`m4(J2%96>8VhF}yL>FF%D4~Id>&qYl&p<3C?6gQexx|-a{(s>kP!iDO zDzb}lufGxzi7|u_Lx{&m$E$VIG%+?YrxiO;fUx@&JRM7UIDOln{`tT2zkm6HD(~n^ zU*3Gvcm1Q!f8qBox}ncHef|q?f8SsHwI^riZ%g*YFK@p6dw%gk8L&$_UpjQZefH+I z-j_O^D8wj6A%m@tZGn3MgHaa`>F`XM^8l$p zR==ISBET_#6dqq&ON1Icz)xze-Kbfx;+TFVpT%1)-ktP$>UZH^ z1Ll~*SvRlR8WD4Ev8#U4P*--_#wRteI$vO(Y`NC?jc-u`yZ?T>EWxqkKpC)aVb4(Z5_jwNl7HiUsO7!3j@gD`{u3)xtdKtS-9 z?AisPc=%>dKj4d?+{qrp{xfz-K~4uC-bs4jxtWPun*E91EdKzjc|JdTpzr`{!4@xI zPtVw!`**p4h7e#fo|yxE)a`(w$3SiSH~mn&4F>f%0td1nz7y``>jDwclqd)ijHc9P zwK~3XMIsciWSY>nNLox zzP_Y@MmJ_M(v+rT3;$pW-OyT^nI^)Z2_6VY4b&|4R}(r{(~19GXqdhCvbMh8W_w#) zPjFDI0SeAsK<}X&`*a!YDfk~>8UA>lj`f^nJZA51>(At8yuHQkjV`pk{G%E_H&b9n zqB)taZVs2^A3M-L#`7>MK{@m=SkhEX>)*Z}o`twTTgsnT(+3er(u(V?|E9a0MyL{b zgw#BKKYjSF>M71nA;9rEtX2{un^=PU*mQT}s9f9b#Z zXMgzL{n?-Ur4P@y+9zlFqkrw6fAhchk3L28|5+s01AOVrn{%n{r+)T>ulsj?_EPqL z?sVur{Mn)@`yn9^)Z{K!OnQotZr-_e``(q~tAIdFlTuSgab+qp))J5U&q3_}WqSH) zJWOAD==&l})f1W}CWXaSY}SoL5OBf08qLHUS2FE$?yeFW}mZn6;;4M_CIUtGYjF$bzz$}aTN__k;Zm?Ki}Mp`plgB>Ez$EJn9+lwTDE+mY33nHny`!%e5NY#KMP~P zU4ob`ptSqm48HZWVEaA{Y!6_`j=WERx~t|%LtEM%7hsk>OLc3e#p!i|mE?ZZgN1qq z<$4+R@+{ZB_N)pB`WdWRSzuR+xRc#eb}2lphhi6pdAXM?TwkQ2vjnRsJp&iR zB6V2m@6KkPa_^Ic%#m|C3SwEFd1y3@#s1K&6UX?=CqW5O6cj~l8nXH5gVXolUfsBT zt$mE66T~%+j^gRsLSr$RwiL-8EADG0AwZ2DF)l0X=#i&=#fdLEfKrkHJ0=fcP8RI$ z!gq}?f_NRaT z&;E&*zvqv?{MM@{&sf`&GyMnu&-*|0qyMCa{ueEI{*27@UiA4dy#4tvy!|(S^bdUV zzkchfRRLf8^5(Dnjo<#UzxBoQ?b{_ir*yDS!j4~LeGrfgB4&xu7$Gp&+0m8e!3#HU z-oolAV_!?u1e$?C7*Grq1}%vNcf}G3wIXiN{aLjgrl)GnX3U6Xt=7QS<@2bP#@@pl zUJhTUg;VAsJew zCKuBOm3M+L#1X$ zL%IXMyo)kw*NB8_fW0QCGdZc}V44SD+aefWua@+v%nSUFV(+w$P1r$jA4noGRtpd8B0uF_uNRg>pB+d-PzW&)1DQc zW4j?I^ppM@;3%0ylwi`NC;a%`_R)uk*KnM$YH+mj+`zOzi7*)ai4drO`;--JWft5c z!*qId(-NAXattNwgaC!V77>^W`TLkaGGJDFo4^vEP5>4Mx6m|=AjHPf#^n?p3(<9L zVV)P(#=%A!i`&#ZZ80tQv7h+uANz^l{-&?L`Gfz#>tFY|Yx_r}>FAe#?a@#F{0IN> zU;cHRrB#P`u;b+@ef`<=w1BAZ=U|-&%A#b@aI#ZrTz0c zUu?UG5~x%OL`2Keu*S_hS8v`%TmeMNXie0rc#IVVm%2FG4f_diCV*leZZYYgH1&vZNe!20#xs#lG!BPb* z(SAHLuonJ>`L9@J6^iVZRFT=vk3dTw?xMaNV)S5~SjC60zI6ZP7gazY8IoF3csL_i z39MV%+#dmH@R<3t1Yl=K~ zVz6d%r3dtbh|#Q}K!+v| zPl^6(smA_vZovJ#>Zz9MU?!9ja~Pf|FB)=J@9N>=D9M#1)Q@nkTEIE3ABr z2=qvx)4q0pOGF^a>H=e4*^=`HWcI+{ziX(AoIkS#0tQbg1^^OR>3MwRyG4*>F%1A9 zNRTEF5Sp55(yYmp9jDK8YmNQWzwp5y{d4~qz&CyU&F}cP9(?Z2lUH6me)wQL>m=}{ z-`zaf*suQ6N5A;1kN)Q0|D9Uo-yh!3D`f%F-o5r1EK{R6)O z;Cue~OW*v5Zhr2~D-R#6XLSPae$amD_u60nwMYN`|MI(+iGH6$IE%EALhi1Tk{vyvj3g1 zex9oG;@cSjga9?8plMd|XcZbHzz9`n2E9TPcYk&C57N58m6ikKh*_5XTQ&wNG5w4G zgu70&_)QBv<8BXptP6LpPi-edQfw7ZaK>=_P{A!mHC2T4f;kkh3DD4_|YX&SR+frxFZPh@4+?=^4z z!P|Ep;@VBb6`nl7d+%;O{z%RqGi^u>nurvGW?M@kgGrVv`M#6qI8d_)9z~YGV%}DQ z3uhsSS>DBv@6vbK5 z8u-NE%Co?$ivd*^6*iRQcYN!;`*)B0>o5L)kM=?QBg4^4`i#F-^`H7%4QfVk)G`U0?|prCX7*7mzK*PauoT4d}da>$zmTDU#iZT%zdIQzo`S zYtY*dUU=(Y_?m0Ck6U0voF<$l)nt|g6!C-x`CWJxG#{PY@F>k_Et$lv!L&7PO%tiA zEi{>#nTl!2`Q-_KJuZ-R52BE(0|U#Xb1G)k!jEWS(1Vm=s)n>-wyp}-^c=E zHg|2?w2ynf-Hm&`ifQNP`Z06F?pP1=cMk>nOXX)Z7&zP}+ZLW!fE0bYL4h%QV)&X- zQjJEn5Q3nwHhuiz>4)#0Ub%668lDx}YU;q7zI40lPF1Yr3S`74-oJbA-pTsNrQ1oZZBKf4PVA-a_+_klO^Hdm87|76NnKTM#YCFhc96jpq(# zBo-%U!IEvB3t|O+NhlCHRaTaE2*4l+u*S~xz2AF$&#t*|;qh&Vo$bVW9specnA zvQ>Y{L`jeLLlKKaOK8Ln80YN+HROyQ5DidB8#F8XfStXEd98%ESt`{oO^xAB>|6bm~LSqaIUIBv#`nGC+gGrGBQdoVq+)AxGnCr>1RJ&KN4SPN+ zKUgK5$drA%W2JU2vmdGy2e}9U?Yn*^4Dy8_p+hSj?|r+b^w8*7i|_ZDskoQ#KmRia zM^)STypD?+?Prbl-41ut`I~^&BvJ#%1`NU#GBVTwiIIi?!s5D-MiAhZFHo?JmY5Qu6b4Xe1`Qq+Q&fx*N~nkK z^mzZ-Tpn(|pM(25OOT}a0XqisEWri~Ffh1odTtqXAb>^a=Eyc+yaNLg+__hxgb+>a zjo<&q$=#bg#*-FCAOvn`iDDskVK5C2%q559r|a`UfGNNueyUJmD%#T2`9i?N+8oZv zodl>9cgZ7*x+LRBy61zHH`_Tybi+i}e}A(y5PRJ zCF8}N2?%;z(T9x#T#!VG5>_!pp}-WXNG(%hY7G|LEZ1^6RhNynDAf zS|uP6mY9;Y8>K<$oJcK;&u+MugZy~fuLSo2r%{zme%D~G5CAdTCo76?EvYl*bmpWs&_)tEvi*e^uq~RH~i7 z&vuyoVxOsJ&Ll=K8t@eQ*NoZVZkRLRo3j2G_32rTwC&ICxO-vff40~b3H@xX2T#h< z1J5W*-BnL{&!g8IwAFXM{J{$^ua9puM+RBp=ol%5W*u9FB#{^ZND>$I(B($HrJLLM zcT)cxw;3oR27!yG{GcjXex>V=FKQ1qAR-22TOJcgHhIk21RqCMf_dfV`&(Xf9n9&;TVKU%j?| z@Zyb|w_$K6Rc8133Hq!CgS*a`i8znrBekxq!$^}#YkX2PU_%x3sJM)K zCY{-6-uxws#Ms2ZZ2FJXvQ3&=RTD9YW7o>WJ*x-|Fsd0G_Iij2$M-q*f0qs{1Ai$X zn3*>iOhqr%=7=8{1^?-|t{#NZD8WNuQ-QcXy8FWYH{N`cSJ4VKEj5{`w5=v%2#qE4 z^RAfvoA=ipf2lMkSA~#DQ>KN&QQ+}6;}!a4ZYu0r#) zgwXeIe|xhBR3t!T+;CD;#uF#TZ*QFh${^#Z;D5Voq z9VW))j&X}tgN!K-h+esmR&3>#x=%_Hdp0`(1fycLRor zxP=cx7VBhzeU`=hMv*7VO?t9$D=V9Pjfn&z8~XbJ(fxd~u)gpB{ejZ6UhFssc8_!g zh!~?cl#o=F)9v7^l6YwgbYb-Tp#Mur|8q$Wcq;UtH!&C(BpL%?A%vufXhUr8+&{km z;L7?KngGBQo0Ke@4l$s!mINSVc2{+z5-Ja(1RKd% z-~8m7jzh+Z@*?}65jyw$Ky~sC18}>1OoTAcNOp4T`b)3AeBnGrdpPhxiS&5qABb-6z2jttqAuGhhow;;4W8E1yuWAxvX z_2_?Us$HhHp0~m6W>j>G?0>qvCM#w;5bycR*#a{-X>LJpe`<~mnnKmV8XI+UI^-pj zn_0JnX|Zwtcb4p~4Vjc>9$@sq79>53%NGid*HL9?KbWGiDc4*RTW&tnQ(IW9orOPj z>iRSAh@}V{;n7F$e*DqR*l8r1~3VsH?{XIwaUj^ z)CK7D00o*z-;4Z(xt8+1#2e~TiFK%EAqH-xnal4WJpce807*naR56-Bnx+Xcgdi!2 zYIYjFSo$nr>q{QsBItSh$zRg*P2GvxAN(RQNPrl*K}^Rdxc~6xwVQ!}8JdW*Q`>Bk zNc2Ew4ihuJX1{M%r}Uz6@08|1RP}io#*EJBEo0sb*9ieg3=$=TAOb~3|EV?4jBDzK zqvBy~4CupJy5PSHmV<2I;uk&RFAA*gBL9fE%E2n}f7d-$U9W@v*Tu>i#vT?+DNoSE z6sFc5U%&DC8?WDaa6<)WiUg>NTkNQsAV`QFqdyP8D{uvdS@4iP=t3Zw`vV}S_*J2q zCGnU)R$?5Lm_IK5FBy(4WLa58{MqoSeizj%t7ZSQsBfq6*BOBR;GZcyV^ucmmCr#& zx*^XxQ<}r_1DGBr%a`bJ(qi7bS~D;nEj!eMIrKj<&KW#C$pf$;3tt4&Hf*&oIi1_Z zugl67EX~Ol1B1hk#%jgQ)G!yQr{fpMF$cA!;R8EWc7ZIqF6}H}%4K+U7)n_3T3wpb zuvET!vP0TH5H@C(&fWojaa6hXO@`_IS9V_&ujw8&nDLWm78lKcL4;+PT?V*B!(gZ}dx{$;!WaXrPt zqVyD_h=QYR#QB^+pn)O?QJN-700~WQ`d`q$0feaph$%_Q(K~a%ACGaLjen>n`BLTu zq(I$l{A1bBzUxMYx#V!x78geC+fbqoR=k0DIx$n|(Y5O@z4pqz7w=kw(+y0Z38$Mx zgPD*4h>=3lXtWXnPz~loa6^4{A8@n8q%=1KQo0+22Lsj2Lzt1AvG(jn^H2>*kawFOQ;7yn7y#`RBoo z5SW65AJ%#r~N|j(hFuoqv9Io0YfV-12Q8qIF>{ZV>C058yX}uO(P;2WTTfHz$Ja<)1i#S zC4Exlc&mO3`Lj7dm1NwYX|G+s`r^ZDA%dhC+LmVzAAi-OW1s@5n89LW8^qb-nesQf9Ft+t0e=Dc0_Qrh$|fsy;7?;I8;- zV_K5n&h|$DAcD;*9)JA7NALd5$LqH{i=ZEXxP)ccgHDi%;TbU}xto>EcLkQ_Aq#Zsb00Y?SC0zN?b56S?ES88YH4-U zG|fsH7?BcGp^2L|IiPiyUs$LzSrJO8i=#kQmwm%X5A0*iVSmtt{sf>|9W4eH^iMz_ z=BdXz8Q;k3mm~DwfJfFX*9^F$C6>gLHSU;F!Bee=z*!dXHhRFg7n&Qg$u z0j3CU{b3B^S$N#*m!A8;;l5Z)CYtB@N~VdLNVjlJ)MPm-D8-CWYNtmaJZCTgIB(L0 z<#vXsk7Ljcjb!h`Jy`(RMz?y0qvh1e{-=&8yJ=a-%`NigEf;r6nxAsB=oZSdn&K(z zpDRAgUF`>cw^cQn)vdEP|HwkkTagqCZ7EYq?ksZQHOyB!eD!+{=lP%jLQL8-=q7yh z?&HTF8aDtD0-A^rO@fA?giGPaY!=5Rraeg~-p`o=s#}$J+NgZ>wTt-KIm~%Y9Y-xP zskwf9w%QnD6Ppl2h|aNtBZK&_HiUXfmvl*=5V8DM{9F-$2m~{2){SCg>Cw^k=KjN5 zS8uFc3hZf}RK=7Yhf+)Fq0DUKY$```b40F#v#RWBv62E?w=#+5IN9&=(6WR;nE|iy|FD<+M)mc z^g)?Eo7e(%=pO)6+Qb+L+q7pQ0a03Om3sH(hj;GZU7w&eY!nbE;-*b37D8n#B!%T4 zH}3av{;o^NK|iS|j=x}n8JVE|)j&d(P>`WpZ`Ig4G4$LE+P07e68p*f-3fat6QH5& zfBN8p?0@OX_--x8F070!JXo_mb3F6#`dDj0PO9w+gyB~VuTN@Q#L5e@|K8Sr+qfoO z*c0GPi_LLL6Az93Mzm|Kj2XObW%r?T0OWhHI{VRq60Ac7(S!cT%%^erAW_h^QC9E2 z_tA&%oZfxm%IXT5i1iAq6*nu>4a7jRe!niZI^IPO`(KPsvt^*04|*I1|M5w;?~o;C z9a$toxt|_Yw5Zd%A0hidqAcTd?_ew9|4u=WYpzX$Ix)Y9#25vVB&n#XIu9`Loa?6S zv%<%nA04W3I+QNl$KaAK={csNvMkn+wf%yqrN?O6yZ7$izkhskCEJK=5=}HCyD*WG zv#tjQh?U>0o6m$U7=xe9(_eHSm|;u{vj4n8Fa31;O?pzB$pAt1PGl}>hj>^S5b8aS zO@j~+GWyRszf`k@3k6D0I-qNsy>{u2z($xy|3P5(1n_t`C4oH&mAvOW&W1Y+bf#E& z^q4*L7i9mQ(t)8nok9!}(R@q%){O1*%kqP*}JR$K`b2HoEsh z3EycdG+67_|85HfDphm*A5*|riDlWpIm2Lp7BM9NhAgpk778TYM5^Wy^Q*67{?wBp zgPEA8Fn70^u9E859$uWI%B*F+@Tj(V@HDS3s6JPA0E6puY)buQa%aFgjQcsNX+}Q3 z*z_*&T+PyQ$(_ix(^2kp?yhh3VZFj!~afO3trr zG$UC^g1`Wnd!70QD|_!1v)p)i`3 zNInXW;D*zVPn^XPy2x@RuVh{b_% z7*Gyv#|IV7JUqQ#$)P(Pg4AQ^fX9St>3&t=0`woX)m@sac@hyQKN~7uzb?@6=iSh( zx-WJ4zTyS6ID7|lC8oue%8YoynfmwDV>}(yK6Ia72GIMmmrqAa34lH=KtH4zh8aLD z=`k}47D6zivH9TL(?=g-eI2VSXd0|nh>eCOGJ2*OfdPRd!&kT6_aHwaKmf_!3Akex z%!&%3`i177g?l840@7>t$Xy}O)xKa!N0z+;I^BBiTgL;SVrYW|X+$6! zY>>C3YT7R0_a$A@C7m~g{@iq!>CshOi2eA=t>c$ozIpQ&Bzo8%ri7G)3aBBc2nIv~ zT@@OGF#wRw}{ZwWhj={W?&YWE)F8Ly$%BnW`uXMxq*YVo{s$x;9si7~kD zSFMEoF`7~pK!Ayx&X5`R=CJq%&j(B;Kx+2?Edzkt!~;YQtYaKzyy~RmJ>(su|4J7jnQkf2m%rH9M@0ZZOH4*|qZNJb4kD_9mm9(@(@vwFQUvwp_V zzi4=77GE>-K>1obp-yS`k?L#pxkj!d-NJxpoiu^PyZgxgJ5Fi*$TH`|5zyE=vweMY z4ANehe(<7~i!GGc&Gthz<{`|oUS z++C*@%@Ni|Sg(;z1ET;U0oepcx~F9T=>z_*O7 zhP_+9JN>@XkYOL4KLrdDVu+1M0FjOU+g3f}uUP~Y9-c=<$(;8$djP}CI_PZqAIpHA zEK&az4%Rc!_MVo+0W9IAGoLU!kJ_YNJ-;rMesB|ipNJUzy8X@S09>Slf1ET z*0x{>5{b~Z7G3x4u-yMs1C8nyPW0(eYKi}2X2~=Dy77-|37BJ}(%gr@G|T=iAu~8y z(7%TO@?^lnS5$qUqW|d&9lzgQuX}6)wDft7Dt*~t&CVY`1B?Gb&2zeitr`Pz$Vg0n z6Qi0Z1DSVy9%MnD8M_QCuL~|UG0B%0$S z0Qq>j1i0JjLgS`i(j|Q*Q7G$Q%i&IlK~f03cmL+S7p|?3KtPqr0UpK0;BK+)5s(Rr z#7>~@kuw8aJ~A(-Tekb(n`Us-w5_pSK=x4H&G_~~LNI;-T zHtsi=8vwajKYR1iXeH!+N&4QQ>e8OTn0<%KrA4yY&y|HtH4PZ!XoIegj~~49@THeu zJ~|GMT5i-N##Yrdi^K#XrU>Yy{v}_poBFu>Z!)UTs7h61f+c#;Q!~(1{e$L6|1?jM zoO@b8JfZ#k=Q$ZjrmG=!j8OSo%kXBzyZi3vGBN?$pN1NS9ZYI%#xrw!TH!%(?LZt^ zFZx3<=mN8~6a7CuZ4urd!m7=cc?R_V?DQ0hhyyA=C%FH~Y9}fq8L9|KjZutiB>mu> z)3ZlNE!IF2Leqq%X%K;+Vz6k?lF};&W5~uqqob#C69BU9O-)1o0m497N&73Vgv_#k zvT&k(VoO0F%@4dP*G+HnKmUe3gQjbmJ3&wgA%+NokpaQfKH1lCNtbjUOc`Q?89_61xja+>_sTU`B2+B9IMCGNc+yhN_?rWR7W8k*&c-QQM=5}k zq?6rwSG~l!@hwm-2;XHCGfxeG&USp(lx13*aA0`UeU_5)qA(^S^ie|O6zO59p_dny z`s*cIkFdxH^UdK}?lTE=RtmYC09`g;8KLSyCuK0sZd|2piz~lAAI!wm)n~!uFf8{$2V5%)lq6B2%D8?y9qHGNi&8Z%rSdR z5ObLR48naxBDq6(_OhjZR%O$(14}kd1c~4w-kcMt$6k)S;74G|EfB!$16L}f(4SQo zas>Y?lCz$mkJEshdQ*Y{2#AOxra>V|3lBi5bT&!VyEre?mnAQyr3LZ4@g4Tds+GbkF-*|*haWE$OFu)^?rLzt1V znX6R+1d$*`&`dg-2?7y`Xqq4q$t-QC8dA%)H8qGeM1TscM8V0HKY?a&v!IkcDL`bY zc{b25p>LpW`cJwC8_{PGgNGp!_ZA*!EOI^=)p|QC_s$CO_hYf^8jb(V|9k64Q}eBEmUbqXt2x` z(2`jaB2bO$x&n}ddYB}4ng$57@;a4eQ2oD^jK5QAkQp;FYbyHJ-zWR^t5&mlGCdy$ zg5zh<0L-AwrnQd`~6IiCI{2`Mze38C4>>C|u zQq{f%QB8uZQi|`r^YM#MZXaKdFsvInYp`00wuC}W zA%SjvqsS61nd6U&)Ti4E+yJNId=1$;r`u#KS0z9fB8Z)7P+yy%!^=mQ&6@=M@grey}<436?`5A3i1pRoGO zlU3_c=?5^H?A;36$+>#8K}XG=)7c|>!6sU zf6w^qr;aK}%dt*H|0Z=B*dcR@1El_{#g;3;4A|+R2 z7EW|RtZXhs%fd2xiZGJWnKMp*6O~qw#llF06f_osdf)}*&~beT(;Qyl;^FycnFmnZ``{2;=|k5u0evEztfD#%(LD` z-w4m4r_0tBy;OLq%sxNNNk*XjP$1w3g4^h1KL!zrAr_wqRcNx5EU9>MTUe3TYlg~J z;^jl#YR1FnK&!xpx6wO&2D`Z?*?Eax!pAG3sWjDhD`oVmLN{m)|e@hr_<-)%BP zcD7Kn-P`f_LMQhrKPq${MfRdY>p3s^@xk>hp(_Ct2yQCF5Mq#U`Xs&c_M;bGyA~5x zM_4y#RyjXo2$53KaaD%)o(G_o`uoZaT@e8)S^mf&xP#}}%S`~!ELKK2_9&2|psZc^ zJM({MW;2T-OLNs{2g@~iqY`5j=RicDFf(dqAj%LvDQ>Tux~~Gt@8XgTxTMb>Sx#Q) zpMf#@??}+5&FZKLVr~2Q%FUCPUwv@pDnft~tr`uq03*#p2pERja9hXehOn3seL{od zdJILD9#|5U_BF^{nGVa*LpC5AM?(ZLga~m9e}yHcWNo4*8ncc-AZA7cs#sP9bT;!j z+%uW8S(R}9*~mWweRhd^bFwR$4x}UmD27Bp_gAv9P!Twx$k9baOwDK#0z@`;W`gyV zuXEN?c^GOZ40#so%>-Sw@GTsF znEAG&iS6`s(EpHj&J)#rYCwOvqS?z4F+s`TyQgWA5TWsdcg`Mvg!L7KBg6(xw9tq& zg5;4VD1p#o+am&4u}ICPfn8jn%9_9WZ92gAK*Tv#kadndIY6E>2sveD$P7fqBm2he zDgY0I*Qo;_sJw(b?G`0;W<{V?Jit)Z<&MG<`(Iy9(AXIueUdbHuCnMxB4ZPLfhF&?~d^WJ@t24+x4dTL5(m1Kw#(3=5Gqbvx3P$f#K zH^-T7EJOe0c>hvuo})qKE1}NB3rd4RoD3M|{Pvp{y1xIl$DsK;0dzw17;Yr{We?M2aFn<_~OA*^C+YPN~j zuHJq4;NdF|!x7FDXG%g6ncC!end@xx?$hitE+I&hti&j3jotTGm6mAg{D7wf20c`0 zKMAGQ&PSZ1<6f%4NtS$dgX-X=D^GUtlKbN1Iojp}FoFn6i;3Nz{>oroFLjO!*JrQH zk7~K{a-}acXYoI|FcOn5%PE(-v=#j?&(eJPZP)ij|I6Lm+3svZ`#iF}5Bt&XXP5hM zfN9oK)&EJ5DGeqeq}0kvgz@7K(+BTtuH9VYDw+mIN8$90x)CduH$5ty=AV@QpOPI+ z%6?p;^q>Rp(&+*EN^=^q4Ctk6u6%8Q- zl87-+kqe60wfo7^R}>GhgE+BxoGmkd<5GceNuMayF@JXK;U;F9PEL-VoP7k@+&V`y*K2EpP$C-kZWU^glg3m*LPpn)xyM&)p^b;D|X48wEya zLYtTpH9-~PtcbgBl~DM|;cX0x9Pra6`q_8Zkyi;03X<6-9%T7jjG3imRIYpHushE) z>t6Tie!CN+ml9D$lBSj$93MS+_`+*%zSgX9me3jqsN$^EWSNi3Oo$cC@Aj!y^ctP` z-;~yxDy)UIv_wnp6+u&hvhYL9?#?VZzpPmQS8stcZ=@T3E&DHmurUH(e6xqiR*5AB zU@9G4UQD6>DO9#=VcMJO!5k%UzI6`>h~dB{oOEB=BG}#jQylhu{5~rChG9LEbFOP=a`T$G|kG|I*yX|S(!*hZDOHL;X%*K`mOS8{P-3IZDRV_V!u@X=<69}_7 zoHSQ^Hk(K3!*|Z^KU}wGh(}njakP?61fs!8BpqWpoGh!VGE3kCGPsR?7McsJPlMC_ z$SB#6pA{bfWNXnbPq46)2yVqZQ<<6CB*_c5+@2^_Y670t{m|iFQzuUVxcML78z$L`8_d!<9;w5|) zFj9+%ARvfH1mGcUaF#SBYGN|L0u9I(P@su<&`*k~ipyZsPZp9!WZzjgp2=3H4kf4p zO3nfXHvt-UGW(hJ-o5!|)n&4pbXN1v5F15Gre+&CUf+A^!HciHboFNQ@fkJ-qqT`` zYe|&|W(ADqOws?IGT-g=lu>~CMrYCgp$~2s|L+pCAKKisitQcP0-(3_ zXISTM^uL8)pDDbJb>ZB{?Y{(M!T0C z^xY9x*aOLCpgFr2dRac|_batTtl|NRwgKoe2IOfgQvTedA}C=_Ltig<5r_mrVuXkS zLLIm!T++qRK1zT~x};B^vh=d%0lIZNMBZWm;u@Q?592Xjc=67yyTt`I*``%h&jb~M zLumnq{N^7Yt z*wPX`#HS{q(z5~hBkme)p1VM^>3`OH6rny?*Z=?-{m(3b&Tb`Vn;wt(8QtEx`kQ`k z>)J83eXoK3P$E8-%#S1LbdvbGI`rcSoi3)nTgl*M_|#Y)Kjf1zd}P$UfnH*~h(-|t z#&u50FKPyAq3dja2C5aQ@L zcD}nn2thosafkm0FD_@~$WWi4M;MBYjZ5pR74ELXBr2PJ--w-^@J*oe zIzahVcl?3Gyidf;2V~W8*NqUQbj4x66rM$VWj8@W2pU9_st&9#1$DUOi{uTq0D`3( zOX9!t>gI(F_bFGtE$vPV4DjM^c0TOKbC;LktBlOW>BG0V1<)M!-U*WcK&*2oa*!n< zMta~HF$uw_q=jf|r{Op}eC5vV`|A*p3}&V@RaF&DLPLZAh@QZS^^z_&i_=W%eFDUy zGg$idjDf`T6G{y|vYJ@@*V&xv2L+wmsbn2&w`qkY#s(7geW&ic-3lch);o2l* zXf!okB?|`XvvTL{CP2GsKgs&j8jp^edddd}56nJ01Ch73wcSK&rr8dZEZ4aY&9fp~ zfcD&-r#Qu*Lh%3WXlAz>6G~uk z6U`tnGudY3;E4iePTYyM04OnnIuZT;f`<}H$k_l=#P#RwZlb6T<{F;Rh;z;fhY5zr ztiSF>E16AxE+y8VrPX&ymvr7V3+T7(Du->?v(bP{5E}q7hD2K0ATmTTJ4Lg(b??^Q z2iK2}O9V)onW;$zx5z=(d{>cbKLmET`Bp<%Vt401FI2KmLxayn+#-b!0zH$NK!TtP z$Zt?%N>qgM zYC|XKFP}T9Bv-4oYAZyHk)YAg1cNdNnbvo1zWm1PH}Bp^z=oipZK+E8|Ji%fV9TSa{f;z_Q0u`R811Kga*DzU= zvOp|gMu`NNps{o|mYxg&0K`N<6LE!~Z$yGR2x#XuWsbIBO;!O9?pen!$dNCQcXmK1 z;-ZigOElTgc0?MIIfD9?Pj7Z(s+63CC2yUL)Qv!afC3?eSXCs<0@>POpFtjAY?<7M zT*)&)tBXJ8NxW{-s`O0FXHP=O&Tg@wPkZpjf9(qfVPOx?r9cIV*Vt@1Y>vHm~P*8n0& zK?_eletG*ctU|egqChC6EGY$~q6LV70nj=M&p_?c5npxU?$_;leEqyRCuMfB#i>`g zJLjfYL5&kBoSQN zX!j<4aneo3;KrmS_u)Aq^{%O14_et;0={*rMFfV4m{b8)ZiJI3j~qNyphT=db2AuJ z6{&>-drx=h`6na6vH#4f09C43VyEyKy~H-1Zjldklh1PN-UT6yJo;x9|-`U z`LnYVZO31z#t?G+R-qKZ0!<_K>^Xks)QPhvP~y_I8#T%HPNfQENN(JIyeRH2Vi5j(|Q~(q8kxgw;$*L zTHdYqCFBMg9a+1LEc@?=So`3p?Ct9h_<-h^}o-T)6+ z*b#QlL;v$Hv-SRF=-(SxXtQT6j!yDl>(}KFaGNb0ylY93e|M4=Q|BSJTIu!YdNh3_ z(2d*erc14GZ9sq&EO##Jr6;Fx3J_&LSxQk#QHlgWGzCa@lX(#YK}fMU^B;f|`dI`J zlaP}1`tP++UPRIh86frBCiF-WA{3#3`C@tt8B(ksF90-0W2#Wvts`9zkU$7iNBlqj z-v9}@hQ@EXp?pIqilQhA2}MyzifBFl4lYmM_id*?|NAfb{O`Zy8td5=`oc$E@`aDQ zCX=gzn`-CEY}NZSPzwe5{}h^!+4H7fB=et@*NJbf6Gg%6u%JYxadOSoD6 z{&r-jU)Sj7w^BFf$_ip;L?WRG@a8?}gjpWR5Rv?)fA-b)-E(x#Q#ksyzc=UCtD~`X zd!tFLKk_SIcmB)7{mwx&=FT3Z+8-D7)y#1H|Y}Nf_w|Ib6ouPM& zcFPI-YTyXjt8k8U(aQBV);}3vrtDoI1hIn37+7I~{YUnmJiUKoFVvuBB7uskQjI8N zGRyCh?1lMX{+%6{29ADbSBgJoLOh0u2D&B!K`4YpLh@#a5iwfK=pQC%a`o0JunalQ zrzMGYGJS_JhrmxUeOQKvhX zWn<5gnB3B;?yGrxHtBo7J% zGmTKs4-k!@DQRXV=B$8w0jT%`WTWy%pF?9-g`;NP=B%NHVVHToOVWH1SUFqiQmA^_ zwi}?(#j!p$g9CRis3|(rv91DPPCpmK?@#w&c8TRakI~f~6|2s3zd-$UDTTnY(0{D( zyn4FVr2p%6hyK@4^L48DdQcr7El~>o6#4iUE?&BLaNp6ezJaooa)PofLZPN1X9VNy z0wRc!hfuz&{Cdi%y8K7G#o43Zy+JqY4=k6gf z2r0b)Lhu@Djw3N3?N!_|H%h#85rT*W5fuT{YS*l*qP7_3FD>1D*WMRD@8AbM{zUKk z4}SNVXQV$1>E$my_K$z)PKW*vJ-oHC7EWxg-*?Z^U;UZqz2dbW2XN-Z`s=>)>?^20z$?FiIVDPGq9lN3h9FQxh#o$&|HO%-d-p;F%Bfi( zuroD{5EN zT9eZJOF*Ei5Gjk2;I?jKZF2PZ=9zP6_wEhb#I&LUrZTNmBcvdhl;8=do4_P6m_{%~ zE+Umws2bHwN!8@<8)*tvvnWs+0Z`4O9!Z*=oDA5<4o%?RXCN6GG^0ok&j}M|cL=bS z5$BTETLJ)FMIM0V#sAB8zB9@Z$a@tu_g2muM4$5pJWKN^be#pAUsNc6h-z87So`o6AsJxhm5bGtOB#2=x}gXtN))BJolG{PBgBXz zbPVbe#Ll1mgzHF**h#qON&(b&waV3}U*heh5#ZEhA_Hetzc#d$9c+1oNv?tUfRkQj zwPjI{2M7WSA%HXq0j5KCy8wXi_@O_jKiArTBY)+02Mf1|?M^>4W-(6}J@#aE_`u`` zzw68_1MtG<9(YE&vQb{Tdhx+PrZDSOR1Op82&Kd}{ zlm^!=JqdGHu4MF|xB*uIm^49tECv4oLb@RZ{?8&Ura06o)fZ>bKW9F7=Bz9VB@L`> z3gFOfM^D{;>cEj(whc;1A-ZGR+tWgdwYBv)RU%|zd?4KqK(hwGuNzE-W6^N z>^mB$+T2#URXNAgmGw31k2d2x3LJaA!pua}vP=PHV*#b|6lpait#+hWG6S&sbxLnf zV{$N{T5C_Vu&$pNs=xl0|HGkQn|o#(8|r)?Q_VIy))VPo>~b#yJ?i&w#bw#%fQJh# zSNk>Yzt?d5t(pmS1+tU|8%Udrzf%D)8bv}V*LSvezVPVf&9et5+gQH^+v_OTER-VC zq6knkqAH3)qX7l#ca3fcE5PPSkU z%b9uyaD6?0VjaKSx~WE2ldz6u&K_HlIR?qnw5$BcLl18qJ}{ZZ`fqs69fuE09(eHb z-FNMM`ua1XGw#v5f9KK9es0?4SYGqvfAp$vIu78gzI@-?-}%Vf{?V5`@kIRf_kRA> z-*O6R?XD_T-#r>x597w=t4`?1x*Az;qozJ1`L?h9@z$VW_~!w6`RLwFfvJ^~QUKKk z13O%s>{**`KaM?m=8jXFC-*=QN>mk8%PMM&8EKh@B0wq42ARTudMF$5y(ae}bOI~P zj;^C^?H6kUhZbPS*$xfA)ekgltD_75;1~Ps3KN~6=I}n zfCfRR{c_bnr7FlkCFn-;MzW3pWTpcD>ZsS1tp-!^@R!U`p3ZTk4IPqM00$fCA@xsH zRV^naNV7;Xgy6Rkh}0qo3#{$kyLtBXp<}mhDJmioJC#<-Aca|=5mF@c8xy0#O@Nf3 z!d$PBV*8jz#7K*QYC1Jl^LU_Ii7748lvH|@&y+TdK+gMXi5W<&PD0I=_#f2B%CcIC z^}p>kk=HE9+8F@ptXc9+Yb~(OIvILvMtlHP5Z_-7j9UJ#VKiTVZlU>Q$~TyM7-HGr-7=jX7_7E9#eb zM#KR_;c<|CMzWdMLk&WqJ{tcTy{5`kdeb+t! zfBxB>fB4V-OCDg-7oR?{{+1toc76MWM|Xbl*Dk#IXFm;>dB5y9fam_r_q!Av!08j~ zpZK+}hnwvG@=_-IzxTn%?!Ig9;RBO5{J=lq!sAIn1zZ~e#L`fR&J0KfFp zU*&^+?8)l?eE%0-^W%Rs*6mq+MVnsrcmKc(I0JB#zGO%U1c@=a7BGYofSIXTQ5Mtc zDcOUg#}4g3w5MDL0@PyEB5F|66zx6>08_|;)`k%rUJprWN0}G&t#f8>>&Z;f>}J<^ zNV&|0Mxg|tgcXDd0d=`Zq$+4ZOj15lgD5nGvJ`+~pre21JIs6+brTon0GGAQo5_%< zR$_Xd`M*Z%bWn zXjv)4)25x9m8plGK&#fCG|_lw&e5K4d$0F-YG!|})o9m+-{`eFAN?KUA%PpDf4}-oP@G0%2E(0!XQCJfRHU@T2bnxS$G4_FUR?zm`CNW zg#--RyYJd}?~4xSlBe(giM#K< zYv0z6KJ@U`o;~4hZ~F3fRi{s^|K2aWpndy^W9vWm>T@0==pX;gLtgB4-+6m|i+_IX z$!baT58&LXJr6v18NfH)dt16Bc=6X9Jbz~6u_vp)|C66;iV7fj-@kw1tH0&ciOuzg z9^Sg}=+5B-ll$&D`b$6kRsDJR*3erjQ+o7HPq)VvM;cTY0j*hCEVVhmW@Mj>(mbVw?Sm=R-FFPplX#PZWN+c zP1Yx;&Yn4Y`|-7PY)zpCjf~M4jq0w*iT{B~@?$1I_1HybM$k-+G*dG(qdNeYMVc8k zWrRzGli5#xJv?WyGXqG0L}4xT-@-5?kesA@4{>b$^ilYAqrMYx2gmo8?+7O5(8cy0 zi!3@g_;IMJ@xIM;u+z{$H%A*<__g!X5Zklx_GO)Y`<+Z5x+`XI9+tW|e@`FcF_z%g zR@W^wFT+Sc=-oPdR`z9IS!1)(e1xn3Hb{I%? zq;*sa?US0DXn7F~=@uHcqI)cZ^|I-g&(VV%1_%qde$^GWT^+(wYLP#Cbo(3s_D2D{ z;v0|O{}Xp_tQX(?%G2-ve;!}Sbou<5jr-sA$Q$00aP#w@vmd~VzxhLtT-XNihS#3| z#drU?|MX+ue+PgE9=!DJKk^3;U)Tol+yD0YUf$`E3p>B^TaO;NwWtN*@B80gc=ug< zzw>XMeETmy^2mjqkACvv^PjW-#b0xvF96m7lrh9MesR#z?R0=bw28~oTC{k*}Bn7c%e^|6<_Ef9m z!8S&2pZ#G7$&BL)=@bV9Oa?&#K>`YqLd2&=86#q3tW>oXX~Kb92al$*`YU zl$L^nHuvY_#i5#Hi0{$yTT%a+x}2GV5u%w_UO+%Kk^!J_su64D=Gl{{Z$E(om#<(- z8WGi^LL+lPd4Cjj&plUs%H1mls^+A>2J;-q?)a=qj}GKKK+1w7^uyo zU}8|4r<0ItJ~&(JfZ36Hc0IJLvd89UH5yx!Z8jqer_8Bk|Ltp;xyf1Z8nHoB8*6E8 zb65T-Sx3}`={XNTyDBEzsyQ!MoeH3TZ@+~Z!St+bW0u1nn3I`qj1`-Y{s#o*Ba-;B z>U(Vsc6e3!&A5hv7=K>}ZX4;(SjSfF=PuBg3SoT4pSGUOUh$CbJ&ta-sD=8_i5>l{N;v5<)1-A{0dkA_!pG zG_vxxJ>l&BC3;h~zGhBk|xp@D_9{2J7-S0Z%*I)3}`vJV|7apD+;Jbh4(O3MPkJmWc6%iZj zeJjfMedO^P{lEOB$4(qu2k?FW;1BB?-~Bs}_Q3kD|L4#9l}9e@IPbBsXYu5};Wc-> z?M+|4v0i-ilNUV%&`tVcqk)&Pp&0?VMosEMGYCQvAO_hf*X`u#gGZ0u5(=oM2$&kh z6tIxjdq7H?66$@i~K@W2B0<1(|vI5 zC0d(RITr$0cc~6V|0F47ZTdeSgDeSKdgeJjD%<6Hw{@E8_A;00Uzsg4a%G^KgCz&Y z)BoNDkt21^)U&A1`D=v@%xDNQ9LY`ZHR1 zg^E|CYr*%|nKkG|vB>+npJZYrG$520pSXPaq8+>~2vL+MOOyqx!k}&+6DSZ#{;Dgg zA)1T;NGFP*l^md@5UTC?(@$(v2jU%I4$)J~{aJg-=M)3XR{v~wpe37c$6Amil1rUP z;pfru-oN=6gTa{`$TTKYq^(58Zdq(fjT> z>gMw9MetYdPLlo)eC&yO@2NR~Hof)r&wk!l?mv8Ba&Ujy3u^iHcRup^@4MshfywK> z>+I{_`l;7_*I57$J-l@l1~9+-fiIjtbJ}fk-tuG5-dHalc<}OAJ>UPWr(bsO(bLEG zY^(=I_OtYx@BMuJ`M$q)Bn@_M$NuCqS61!zul~&Q+|cNKA9?&H`oFmWYG0!jm^LtARL1P>1Vt#+V${fj$4;L*b?(fb zePO$DFAi*Pn-QkL2%2yB;&9lrZ>7)_%;?_~RJVnqMrs8!(`Xuv70f_Yji5r6G^o;b z1t6fLXa9A!CFlLEheWh2nsO;N4=$mm*#$5c_g)<>T%sZWJ7o7i)0Zq63Rzt+cpQcv zZcr5MZ8^*p z22es+zw*S+Q%`Ki9f%|B##o zAc7D)Td?HT^APGh%2_`V>U6k=z;MRSM12msGvFDS&{#Rf9EvH?s|Iou*AN}OTUYQSl;z?x7AOH7v zKk$X6N7vBn-}))<;TvCb{;$9IFtRcIEdAEM`P!fO(YqXWKlWsN&-*?G$n#AHzx#>ZxjKl+2Fuwzm73(9%}=eRah0I&mOYK3%geuEbIH5j z@yc+8(qe(I9{diunky5x(Wcd&iqKX~o=lbh>*{@I;VfAzi3 zf5ivB;lKIl$N#X;0KDzzKjU@2_<0B2pZH(=!e>?<7y#fuf9P=l-~5f6?*2PyeE;&7 z9&;~+=l;$2zu=W0yyx3LJZL7=qxXLJasSX8;I+`N{>$f`IJSP_(Vee*)rXe%c)m$r z0+e)zfhY_`L=iXkO-`NNJaDiupo$hksmAT?oj8q-)R7E+0s$M55M{`})b6nAX*OT{ zzwDv!{D_zvM28}U;&`q2)70S!0MtQyR3l*s!axfG!QKOVZ-3VLTlVdVKqMmV@)fNjCTklp zx-+hL7&+HgOR~~uN_tFq+)uh6v_`iAf>mHeHJAYgtC*~S3})g1LzB|L4Tsz}0w5*L ziL(Sg3G6tPA7(!~4k2vF0rleR5Fi`Q)AtlecQt+?NVqSpMp zozwIBJ5n>L1@Mhce_yy8z)sNJj>xSA)COPV9&l-kj%P+Xfcut_F}D%$pzOabF&t=q zMj1Lsthi9d&n^v)eWn6y54mn-v>RfORI!TtT z)LN=^efGIX^IMX@Co#W-tOrP8g0fA2GIErR^_fKb=)?uei^?B2l9ERV@m1H`E4!UU z)-bp(BC8{k6e|A#gjn622y3-oPVgxrK|)cK6A5JqAs_!8nq6aad;uT1um#`+Uwxp) z>p$|n=f(=R=?$+vUpwi(tp&|%SK#~K{G31ww6n+8-um}bC>u9)-M_Cuf-R}Q->3ui zpKy$?Ki>ER1kq;a}1a#)ku)?)kDxBdK|0yuwW10(LgByT%Bsc-V7 z`=(Z*=yI3$4G|W!HeB_MbQ0!J0w}qzF=k;JR0X60t%x zHH|bCVF3yhW&#z5wdP{_mh9hCV zGjo(Ye@XN9q$~-E)9qUh-TJI&-*xb|TU0PrObyX!l&Gf4AVqQ_gLvYa zg9r^Ev}Gdyi~z=NnPmV{uBEK+X;&~*epQxswmj$ldJSz2wJ^8x{0^@;(nW0gGUdm< zj2F8GTAj;u;fX9+$--afwzWbHP2s0O0^c;YJFTs_o^@W{38RSnuohqucW~tr_D6^z z6ex>O6yiDW)7c=D0#q}Ec1q#l%Kb72zO;%omajSNPg5cNa}vR|WC5*<(o_!QbYQs% z>pHWce-cilUOO-0X}JYN&KDr!CPwLq%~f`0z6nB9`zoYBa{&qs^|J5ud^vjS&wl!z z7arc&Q+)70e%*!7O%LubceWQRT3-GQn?L&Mb3gj(a~D3lvo*C7$JPM6@57G+c;v$N zd*1i?`|dgV{O9cd)bHN=#Km~x*xD0M#P;p){m^6g-E-TC&GoSYP9ON#6L;UW&lL+l z^Gl69{uM7h{&PR^oX4K5?)f zqN2e(Mw(+&mm9hLjLT_~jNiQpT<|Yw=k#Tk+&lXBE!!GXpV~FKM*qlyAXaM`l z3XEh0W8(ibW=TKITIk;*VabvQO(q1U;aDxf%%^6S|F#6dBTHqWGgc|xwtHViE&{*@=r-C~!ARq|6Z*?r7 zPI+nU_*+qf+Tk|R>*dAVcprgMq?89Ch=jTxG=2r$=>OUBNQz_&REA-Hue-JZd-fkGgt2Wo{u(#hD1I9-u>I3z5iX0T=?wHiOu!%XEwIB z?LF`N{3~DkF)#L=Kl}&xzw435o~#ZZn4CDa_P~ReUiQ5oX}A53cRu`6_kX%B@ZJwS z_RoL*PiMRM`nUeE%hw-!vijBE`HQ*(u6cOq;T1e<-R}Q^2QPi#W|E+u%tDxFF&Vmp*}_}ISVrw-k6tK(Z#ifKetu_!bV24*vQsWYxHqZ!|;@=uM| z<1FX&-6bmEB=l(edjTziWguZhs#xFWuK~KoZ}Q z`VVw)cwRdUz#P~;dqs$D`PsUAmt?Tm7%x;{=IJcz(r8b-;=!vmQ#-?f_Q%`j90u!K z(6@Qz$1(R<1FKyht)>NbyBDu32@8M}_ofmcBmnQKV@x1mVN-o-ZLc1`bMJHSJ-+V< z7_fZ>7ca((PfV-rQsX2>B}LSLLNvewTG864P0@ZY*zQAn%g&}|e{vfD z!GPcgusNw(it!xL;_OsFhIZmOo_3IjqpK+c%3umi-IO%=HQ?WO9CWh@CY6fu8V7 z0eFy|bPhlPhWZ2%=6hQQMw&DNkWxH2kN;YS1+5TK2+HE*xwCiNbtX)3c?tw^F+W3pv@<=QtF!L0@Foi~?QlpsBB4Y(ci_?_%SEDgfqng6ZOodc4XqEt41d)>? z_&-)FOC-5a(9ejZFG){~H5w!{`e%PV1T>QV9s>X*=(@_wv>1WaA7{cZ%yg~?{byET z=v?W5h5<;MKP|wN=%N3aSFYRWPzz0&KIgp%{m<*k5;E_rK*NhczB=Ny$QCX>w4tS zWJoIlsG%`83MtfQYQ@37pl%D0ke>_lj|sRZ9-xU&3K7CL+k9#xw9KPOnuaE=eZm2= z=)XOOSD&{Hs6jJ)`2Mr~ezZc8uA2}kLnr`A#!i(YDpjfKLK%Stq*(TZ$F$5|yPkE6WhLx=vgRz#AF3eF|;pntBunVNQp+3Wh+Wd>jf6L-1U;a&`*|Nh;xzs^J9GlKuQ zjgGc3Omory81x@wemYl%ex29+oc(mcgp8M*>C)JJ7)1Ybp7Pjfy3DCCzszce_Rr8E z)aHnu-iABcv+Ru&Kon9^ceXC?TzYD{Z@RW;f>59+LJ`uAB$Cet--~Cs=q957TKvb5fNl%n;pRV*DUwa)+~L3xi4+UsqrXX4okTt1gXCd?d2 z=(H>8;Agj{AcCSWk5u7mr>6@*_SV(zBG(`Jo^wccJ5RLRdi-Mbp-)`i#fEOuO}YVy z%AHWg&6CGAPi{DnE7q{Jt-V2W5-RA`m`{27n};m{lzyJ?S0-z~??uOsImt5C^gS?|Jrke(A4mhrA;^xx`p z2mSlME%e_Wl$p8OGHvJ41CxeAPM$t_=Ioit9$cxQ00cW)1zn?N@9pgSkY?8P6>dP} z9=E1KGbSGZ7x3qBNGUIvNBi*@M`@r;KG8@YlDLU^TADGnJ|&S1kT)>N^M$MyNV`PcQ}(s>lH4vN2&G7k z8j#~Z03H6Rb&L(MRn6$em-l>YqTSLm{a^q7>kjRooZMXB+R@j)<&S&6KL6$a_e~l3 zO}g=Ee19IiY-PzKn+K0=?wxF4X9~iqh-$iHR#*C!s>#X_Jp5oBd)Y2|(Sg z;me`>%b+rK{?JxC=sb>b5D)*LDdfLJ#Z;q3fsq#6+sj;nqzV12sav(w3Bb}xpMk2h z#pjmA-pQl~&3>BCjX<|PYKQk}c!EXa2mokNRiy|;S=_dH?DlhatnbC;DNJCnD_c_v z)If&7jK(b?Y`W8e8tF2A((Rm}RHd0wJ@XeVntKAcsgOHA0E}kI&L_=4`pnw4H8GIg z;gHbY_-fD(S9;GlLx#@mwB}((I5keYfQXy{Xx^lm71=@mS%T)@x=XzS>Sx-y{!Gt& zrg^r}Zkg4v>@sM$zd{z3zeZZR!evJ~YXH-}vaq>b9^gu~?NZZ?Dy%gjR}ms+^{Hqe zroh~;5XserL4;Ic2qI#El|1$MR<#2G%HY`mLQ%r^x27r~C?Y5wW+}QKD)FnNc;PE7Std3W} zuEITKEzV!+9tyys2xdiq8eC>(WL8C_dU`xSf3OQFI|g1y{Oy7N0X+2Z)<5}|e{vPs ze{a%Fx&dg={--SnOWO||#fH<#DCKedxmq`bL3oeS}^-J;WRfrYLU{Mf34NytOOCH#UZrWook;d_t03_!} z7p8Q-$qJ|~Y0uew6Xq7n-L#?o%&lPN%TlF|x2*t6Dc8%%#@gw-&aLl5MVO!>wx==yBKGXm^fVK#DZmme5KrvdF=@09Po zQ)GWhE#^kXgp~dMNZF~8WqGKUsHUK@C1b7~)}ZR~noeNRTzcCd39YkRS_2gO=IsWvqUAVstQ zM1s)>6m4T2W{1&MO0M*4=!)E%v(}NgC8HnGcgMz2mLSBv6_QMLacf@Y;nm5s`o( zL5$8V2@$NLyEe3}h(=TZhM70FsbTPAugnrlX-t0aGRqHr?1`ga`+qbSTle+aUv=HC zt~a<=C+4f8-Fh9zoS1iAh;xI`n9O^(xYcY)vh+go!_qvXH~^F2drC2xtnF-1Xc0SFDs)*H$k9jz^ZV9!E-SNdAI-HZa1a!* zfS{3ziA37kzVgeS`xSfkPqqy^hN#pCXc^Q^G*kW;kT4OCzZXp#XvRDno~&?<%f zvB((BJl$_)T7fERq?svcPzuagrE`Y{Lg?X9bCMYdO;e&VezNRcWpG65g!`YZZy5> zNjkTxfw~syF=nrDdDK4Ajb$&+=~BPI(ig9ldOhjIgG7E&iTV#W#JSEk&zUJ5QvPeo z`N$Bg+_@aLoV}1Y&nupb5@-#WA=b=MF{opeq0)6?n($d zhYig?+TihvntKsT{RwrzwR}s;O@>xgKyzpNV-QFPp$I`jkroXD(v~QBR-ONl>oci0 z=|&-r&@pKOF;0uxLlrc6q(7)NB@?Y$Fi(cvIq8{Q~xoXuk<3edICXt>X-t*>VbTZh%^QwL{sH4^;-EpcV% zp4p}c`_uWlhh0lOtP~ zcOHNI;%#w%APT``g0e&`VX;<{txPV6s%3$Fs~&0F--DopBvWS&gV0VHmK}lHf_Dfc z`!;xJo)k5xk({`ZPEtg6W?ekYkpR}1CS^~9MuRD##{6DW{kpX`gl1wXOo<1iAOlGe zDnwY-J`Mw~IWWir?3TpzCf%fE=vv}5+{k2E?FeD;;AZ(Ep+!+Ls8!o*dyCBzhmUOT zE!Kbns)*65sG8B8kZwLuOW#NB`>G)9jnV#(u=WE-<4D$-LJh@U_>%Ki{lpzVR`DP6lPwJ`ET`- zO|J_5=Qc5N+Y&vQ+v0+5bbBzjtuCOO*YGN95;L1|zm@SipZ<{l^NC%k+QP5?Ur)A5 znu!1aAOJ~3K~$d=Fy+N3E>+Y0T5b6$n1g|Ot2L|NesHO3uR#D%7_!M7TjO=3A0~(6 z)PtEk$MC>(Wza|#gt@Ch-PE{P>$=l3zCLf#4Mksc>!I%OQno-Tr(t^a0%72!EG?+o zR=I&=Cl4Rp+`GO9Q-W^sks`ssvQ2o~IyYo|-L?N&s^7~D3eAQy@7C@iK3**#BA%Ly zU?>8LASDpoofoQ%s#>|VjDUc`Qm7w-{;xsZvYmv-y%A{R>Pl#q-z#YeVy85~%pj~S z;I~e?Uw|zOzEZGW~^^U^)R4D5*FQi*g$$9Aea4<$?iW*O#@162C|l;_9Xo` zzTm&64g=8Y^n#aR2Ksk?n<+L>+l*V@G7ZhPFj}TptovHdt!|c4nJf5T*q^!kGUpVy zTIi2qP%@W0noqmGaA##CyBLsUM1R^`@9?VEJ+A-NQC?>4t#hECLIKN5PwZTI%J$qE z0#KAFN=l)j5XL}=Tizt`yNkJ-Rz~WbPpt}4oF52;49Ny3>)G5~v&}RhLv;5dNFF`4 zT~H3*-`L}NesEAy)KVt(T@L@#P6&{~es+R^A~jUAB-v`;TS4*|sP!qC56Q1p5MhwO zVnPt6YW}Nc4{48uFmS?kSK-y?3Rs!O*8dod2QqqQ>c2^U$;jWe@qIWX+me*I9AF8E zsg-L`+d|Nz#|~_sItQ z2fF1OzsK3v%g+K6kC#so2}KBHg1axY8GBXC669{oLX-HPnGLYS05G9{qr%k8bqA3ajWiGXX>J;13GSOSIV2UeO;NI! za)!r{SO5aa=(DXZVfVTAmcf|CfBz9Ljj^sK=)^dc%d|Zg(RNVwSh4xy^ZEDIjjRMi zcT4ua8v0+vODr!hTw2Ak0R3~^ljEwpvEY`4V;mXV$}O!*LoJAm!kK4Kr9L=^L-Hho z0v4B^+|RU8FP=)E6@H*+_~)B{K5~#m^|c97&J9-c7d3a`@r9DjU-n>juAmus$Ari~w3Lt{ zQiLLH`34D8kpg%=a^F5$CXNFcQ93%v<%Ds~#kn|PxpTZ#SR)poJ5e(Lr!$4(z(fEo;_Dpp2Kk$8d|A2}X}rLdaG=-(6s)KUl} zDoyEuKHVJ3Dq7BaoD>2IGr-K$s?mQ9{aYMSewy{LcMtkw zx6wZm1JJ<$`E4WGkFZ;4_Fd^mHLc}m7#`tn$-@Rh6E0+DIv{H9t2iJ1&tUt^5w@hu z-KK_X>&?ZI(0>`4bJr5|jwVIcZW?``K4g`Q;fRP0O(p3S=JiB(}(ACz}$^!S*im%?lsv4t}>mR1^ z-E4Q>)A9HHCa1TXw0b0E1CljKKmY)9K#adr@Dd4TAs#%me(KDT1BcgGKrLs$t?2S& zcY)1W$Aia1C?ZO<%dh4$Xc}8i`?Hl z&FhATc9B+h0v;3pFM0R!w{%~wrSa(Om22wo@(nF2@91q2cd|;g^Tq#To9r@8tb+cp zfwI7LwN|gPDYid!a~cd4>j;T&WC|jsRohpd+OY~2AtlOECKK5alVBo6LgWySnr1Q@ zDQuUBGadqMzM&n0AFeL|8$JO;5TWO0&{G!-ES$!n*dQWxelcROlJ?c4wr*BP)(}7- zAqcG~#i#~9Fuo{O$xZr_r!Q3};MSq$8$|%cfb${sjeF3N)YzZquQIsy1_N>OVDA`25piv-DAq3j^061v&SV%OJ zY&%05h#ceJM2IBFH_!D80H~88)(goT>8D>C**{WRfL8ar=-+DpUjl?tV4}C3*u4GD zI~XuE6s26=vPd8lajJyCasp!jl$v8P5@rI|01%9TTl*;JUcb>%eliV8zRwDyn9;wc z;GWq>goDqkrL-7*WNCh~&}iXv&i6jk@1`>VbHPyZ{GNgS46WvF%Nd?H>O+Pw+paE|?=ZZjvgj!io$l8HblnBeGESFn+_}<-zt1*T6t@p#3BXoGYEvv%8;m=@<)`put(OW0o zJxY?66#%RVWhi_Lg(=h!qeZnCMNGs3NGOZ}N~owAOyKfvmuMTzZ>|-j$?ercXDWok z*Z^V>pg6#5(k|sg*0Ns(yRf0Ylum-q=#(1DLL}@=x68G)qnn#|ec7{hf{KVhRH~th zj7p$L-T=Pu*Qtn2-TgP){S%Cy`O+*>qiLkM<&Wk_ppj5(FeHO6;5H9JagEGR1FI0yqc3 zkS%$<@X%0tjHhI0gyi7WC>(&y0@V$%UAeT5JW0ozN8ob^5<)O5M6~uZX6Ht^X+81` z(%5@?V>arGrV-r4PV>erJsOe58=UrK%Z><&IV%wzkQ+@C(vvg{8(kkr4 zQaE)LeZq3>&WiSX*T>2)Ny`YtuMgdDSiesKw~Li>>r!>`$*m)C13(BU%2EPD01JX9 zCYFq1{BY@DJaxf-piVc0c^{+BAPhQuwv3MrH(5~L8* z9Zc-Nk-aC*?%j6)C=iu2iIJ*x)JxwE{J}NoUuya6?3U+6Tc79b{WIsn0-wg2@^e++ zEv+m`34$O}NKqgGc0;VP<8Oq!{KCXYC{>eH3vx`$w09X`>elT-qe+sEBN+*asW_%@ znOic6Khh>9?dv^~WL$)-F=&&Ac&n;uF)0C!jJF;=boTtYy$8!H5fP#WRgD#+K`k)x z7jE+-pqm#N0i?VJ9`{pWN{eKqx*j0XDhK_hmW=+h>gWs_ku&p5@SG@P)YaUkagky#I{; zqo@WjxZEY>`ErYWgDJ!vWpl`U%LYI&b)Fzg!OdNMljE=Z004Em-#Yqg5)ila0FCTl ztQm$4=bvQC3!oObaqF$OpFelx#J+98?V))nHu3v%754h$bL1cd& zTDJZv)N@YG)y#Gs5y(F$3A^vaxum6gk@F8^W&-uVV9u!^-;IXrsQHAt|CXn!mGi54 zr!x;A0Wgs@qZSbLxOVB5U0W@yYX(-eJ6bg++x4!0muPHyzBq92O>zn_gP;&rx&y?G zL+dBb96WRkEKyks6|YfLU99aad=@TbbA0K^rdn!BNDeGIP9uV_d5D6n{UnF;0CX#9 zzat)~pUK#;OrejAu!R0iqgW&?csPIe5%#?&g|s2F`>)X`+4v{7svsoW`e!>IMHZ#F zw8PCUJqL3VinJB4&3R$-&&I4iK)E*Ao^DNU**JIC9k-p@Ul}~^XNqK+P<@IDjg*bc zM`LMX>VY}>hll)6oB-9e0Y*;nS`Q5Ayx%K6jDMA3~b=@YSi!mO_pC|4Me+GEy!=K_vH7Dj32(&cW!98|012> z{f($L-pPDLmg*-9p)9Cpt1I2i13=D2AQ?z!4*?)}I!iwUYu$p(E(8%tHbMpqO^RR= zIn&S$v2y;B(#^TQA!%$o9S+_=(A>;R!D?-9apLr$+fJ;72^gRek&IEaqD6ORWr})` zynq*({>uXPbo5Z}ABGD-QUCUt1nNzn2o)hhD2jl>0X@_Z)uJLsSTr-q@_G>2AvUGM zqIjsA6z<;=`gfs=DNv(orhq?5gzuUMO?H#aqWuQ+v-MsjU_Um&(mCr1a$4|1{=#qXg1?n9lWS+VjQlg_6Z{bM{6@K}@c;{DH7 zGN>SH6&utu430}?i!I;nmEYCXkB%{BX#{64RpC$=pJk!{oK|)L`uBg+IX@1yHGKUB zRM|hH(0`d#5+E7`3PUI_KXv8evq|#=bqbojP#a=DuL@w?v|9-wy?Vq$H}Pc6V&gF_u?bqCgM? zL7-|^)vg7GaH_0Iw)3)*>F6l^efu#m=hcCriXuTf6%B8d$ZBOdGmkVAG8OOrh?h06 z0N+KbcNdaX2Pi^(aAzvX;?2)EA&55Tz0n4dbC0^EiN(GGzr|_$ySal%diC__`@jAE z{`a>A+-%(h+ubelRnFnwuM!czAsvz|&N*OFZX%yq(0#hQ(X)9D9YC1ftlY0f8elqu z?BBzKs9^tbZ^4YzOaLr_(G}D3rua0`zkQCsm9Gg{V*k}zE?7>q(}Lwa#LkZ|9cJ(2 z%x#qqFZ!HB+^3(;dpGahyNk>*`xiR%$ulp&=IoBm1vFa$4ObYee>)V@w1LO)_La*4VsKNyWDMG?Zki@DE zaQxUlcD2BIg7<$Cn%knXY@|$k56EX}F#y{Z(l~|Y+c@_clKC3l4s+50A{p4Ct?Br( zZ8Q@E&;X#;$(R>&dqTxBL_n&Dkw_v4nr%qL0qe|j#%CT)y8QdKJXpC1Y5rRNvQjbk zxqLkb7QKFuLhPGJ$>{8x@4o%{{i`R>F=m%uhix7++=BG87!tjaYZ6-71ZFAyYT;}l zynH$w`h_okouLl($nkTJ6(1}$j#&;wOnhzHS(msam!&iS)12MMGhMUU9Ug=`pdiD-b#<_ zYtM;*x)-V*Qlw@$b5c=rzlAEpYTXD9A9_jmYX;A>433@+C>a1qb1#9yL=Kv$!ueB( z|Km1%dVKWA0xaN}UXF39a=P=wk(&9MeU6w=jRB}2S))0vTYPzfP4YdS8nS=AUYu(+P?|gf{1${1DUT}=~*MEPo-P@}d5JA@=CB$q`Dm0o?f-r|3>ztO! zqiDk%*hUe)+eI7LFYW5#?^0QJYR78c0k%!IvFwy1C_XzVKvB)hNrI4g+kys<61+Vq z4*XG}G&0|t0@SH#W+-JHW5H)wCvverXw)y;O;rM_%_1xhReLEJ>l-hSOtBFXN|Tl? zv5rDY;s%ICELvG%yt&Ux_zacy=Nv(E5J}sx^QdF#soAwM|5sKTIb`vB(6ZM5^>Uda zbg80#Y5hy(!_RG>e{?sr6~t#{eyX%RO+tLskYiOO54YN}?^4LJijBiOZ9R=|e|-J! z@2{V{jP*nFz?>DCHkz9SWu(CcD)rrJ%s=r=7D<{!G0ij9H~#KIP^m4nV7c{Irh%oy zLSarTrxyW-LGOcUmt~b^qyrL|U;$DPW5zg09>hJt6HMR=EBUaPff50%5_F#-&C&;{-xxZ4P3fjLK*i5qhkj&vhO z`ap9xiyX*864`SuEJ7q0eE(iPUGG-jtjo{1iJ#+~VwRrw70ARGlJE=0kI^ zknDqK2ZHEgRvnbJL{As3Z(Uq4t`Ec$ZgFp3k2Lzf)2rLTQpw|okCvmTc|E?WPamFp z<|WQAkGH`rLBvxB*PFQex~J?d$9_6|$j5W0ezE1T@8z%2^=Anh1(JjS((c-}w|JVN z8zhCQs47yRDRmc&%#i0xRjZ{Q?%rJBNmFl{4|-em??>3dnlf@TG*`NGuuMB(7_mfEnmwQRW8-3 zW(G%=cLM;@rc;=ikuFFO0@-Ev&6^i*e}4VsMN!}_$R4wp6;QY+In-h_;B=v*Wlq(4 zzJhdz3&&mU%wbTOrwJ^d9U@dpf^@}1Nylgy2V@JUe-RUU$m#%v=AgQh!T0a1967E; z(E;GW6&i_egLEhG2$`h+nSD~cLLvd|N_BAIqGkb$>&?~w)G1v%;F;DvyL$WX$M1iB zo1S1WWPl9D&QMq)31h*D%YPK{2wx6XBL@wh!4ldFbI{$w|Ho!N{T}JiNCH-+@X%aZ ztaSZ6nK)QS!{!{U=RD|!nJ*voIg{b6gQpt#Xh~)k15lJ#OnM7DG}9Vu2O9=gElHw6sDY1%m#A$dq@Q z0`@ODUnM`K4zPCJi~Dn?!gIg!32l6B&AR^Z;rd_0H*Yp+gOrexsuswaD#8kOU&2wj z#@;kR{Cm_r#e;_x1gY{jfB@N9K%~m!SyYpDji}okd#1arDSKPS01=(l@e=Mkg((XF zHb0-*Loe13As8kHREmpmf32EEz0E0nAecje=v#q(X2zm^?T->YH~sN9O9y z>|U!mpRCQ#kC^_4@6IvI?zn}y2t@Pm&DL6tfg#MNB%+d1 zxq~46w1Jl0M#7afdsSF`-JGOZ&|`WD7a$_`x2FHC0`4T~9?5JmtJ!X0M)BFooZ_?G zR#~g3I!Q+xp+Kht2kE=FKmYjqAAi4ko(97oImsZw4ksc29?mB-nY~z?G2uA{^C$LnoLSk+^>L|W z^qENiD9!^*SzvOM#ms6Smy|Y_Cy&)bgdY2oA64s`jqt41way(A*-!m?qMVlgrznuM ziyd#|4h3VSnbpdxEvyaE$qT8EPY-h4)%GC_ldkIR z&F#Pby!kP2IzSa#bb#Q(m@?bmqnuC!jv)P&cn5oWW5ofggHZ_QtgeTcWb3KH#t3xe zim0kZ!vmIVMf=@tx=M`0RA*xO3533Z^iAv7BPXr-12D5E%p)EoiHOtG;R@1geN^p8 z?)fCXmapaWE+QrwdC z@CRyk0IME4p)myfUvci4R=|b6?Zwq+-z|{k;J!QGkwwgfuGB7#%tn9v^H0D2?e}Ld z)6IbGNF(VON6Xn1ec&-%uD2jc{sNQ)UZB&mv*P`3RzG+o5un4(%?lk6Gl4QR9zIee zy)M?=cVDWq=|VECzbr#Ou>W~}T-K~e5RW4PRALligLOxbHbbqAtuhob+`79=6-2Ce!d^wi@03ZNK zL_t*6#&2m54KE;y0#YUT0M{!hUU;()GTs*<_TXA`H9!je=Dvf?gdNl)tvyz8zP3;W z>(BwpDU4{aDoF>(P7yTbi5b5F3jk5P3IsK)0KpP&xJU{nv!r0L9cufrYDn|H(Y#Mk zU9dzHC;k|_kYDP$RIU3W34n_#aB^C{~a+h^9%ujSFo zIl_%20|2Dt76;;WNUEd&s-2jR&iw3U`r(&v-~RY~^8}-X(??+cnV#qn(Ux^5)C!Wa z4`~9k6>mNlD;{!sejfgM_|BeUL7XQ-pZBYTHHG)TLR7SaCfFqXTh4A{2(E(2a~x*| z4WSaO3}(aW}9iDNQga3p;gs-em<1;axk) z$cFs-$2Y(Il+H5#oaLNQ465 z<+&SOIut>cO2Vv8jBZtO;up3ALns#yZN1qRSaweel86(XiqX|UVeErt3H=i7 z01suV{u=!7?^HfQ`l(Q$NO*!|%Z{C1@%5V*zr6ppe_DJxL}7+8=RCS<5>ZsrkSa?< zsCywk@^JI4$`6aLSo?Yo7#vK;392fcH0Nr!kp5|zW)YPtbkG%sq6xUtJ%WB|B&vAp zRwVv#pl6}|sfob?#+d$sRy*ntFY&RBM4`yaKELhwzY<8)Oeu9CGs)S_-M;0$o0#r6||fHY&Xkj zfy{{IzDWNi{aM(1F|&b8hLLKCn46Is`nnv3o9hL8T<=U3{Rz|_oOK%~%iX5ByQF^}>B=eT|9sJZ z{*~wO=zo-u&|c=L$lC4CPn*QUCbd0C`D7B$$}K-ae?IDEUU`RCY}ayBe`{o*bas4LHf_ zglI+WD>hG6k~%l(Pj-L;Oe|vn<~qR4av3HEubdj?E?E7PiiM%{c0q4ll$P=;M1IlY zva5CfSfY!w7^k{=Xw@}b;SOycOXbBsKn7=@b#KhS#In}=HCK(xc$)81zQ!1wE|-nZ z#R_2q>?H(>!bwm}(;QuL_XOYn`0d+w-(9_c0og#ph#}`}6zSZcNMLbPh~(tL*5*|9 zU$1+Wbu;_%JOI@!h$Dl^8dn(@gNiCNsU`r(1V`k-M{~Awa=Oma;N#~|s!&Qv!hw!6D@8^2f?jti__=FHaCHjz`M17JFm zgs8;5Q$-Zi0*&om-BD8Dgt-7{`|QD_Z+q=QPtP9FkA(lvFOLm%pV|IJoj4QnpNn)= zSwFSM?mJKayBGl;(n5D;c~FeAJ%=MQdKkkEkhJ}Cur1smKuSQOB$wiR=Mf`&sZ6=X zIJRDY-rED#okh>tbb$HEllT9uooYrvNfm#xKSwPRz#epQ(7rMVwz0hHxaj-^twx5s z$3&n~B7vtke4zLUk@he`%GdI>d>JLx+1})Y5~8Hy8HUbZe*5I7_uqf_Mn*?OgJx$Q zY_}UlI+bqpEU4lMtA}y52DI`SSee2iF`)u2(Nz2s1(Iq9D9jn8_Su+6x{Ff4puyDO ztts^XtZqFFnU(~_BUBcR?FZn*{8NqqU=8LiIj|5Zg{$GSD>ySTxh zzIyS;fBfC zVgA!uQmuefxpNJjtYSy|f4;K!FftGy9pSsMtlih@z#gyPsvp>6C?YxM)NgFOwh@2+ z>*meyf`+a~moz145)nZ4DC|1p^C@3g7`hL|=;;-0QhT`2ggm^TAW|wL5W};-VlD+u zpG4~Faud>V{la#!#l6>4CQ|?=lWWDLX0N;y^JKUJ%n=lc{KqBh zFbN62*J>;-*k!q@w7wEhNyUr`1E5G$YFkIix(U@j9z6HL_aO;K%i8Pm>4l!N%IZ#e z;WBWk3*V&{hRcIWKeP4c!tyad$r($ys3ZdPk)R4i6;!%GTskt}y!htXZ-4vY+wUY3 zE^tH69COYi1U)HmBy?K+28$bCi?QKs!I&=>NAC2TJL2AF_i3Fu^3E=#5dx?=N#dkM z{nSak|6;R93o&v!M$`XEFB>ZL}Dw4rG&Gh6OP(|mZ zzP=cSi{byvCCHB#I#0U*eQf&&(*KDzk4pbIwn6ehgq&UQUL9UL=}WdAJi02ssu*0_ z4C5prfSx&T{~XOA0#&4rDD2oCygUxk{T3chXe_+@^F1;?9>MZaD-p+kI#y@e1jo?2FnyiM0R=lD!Skx&*KyAhKhK$TZV2$2iZL-_#u+@~zGr*^>p8x(I zf4una8y93R!5d?CE4X|`lLPamD1uvvQn3GUZ({M?XQq#IqmA$^Zk|ot!Hm!WTApCf zpgXPP3#)ids6f?|Cx*ya4KPuo-Rv(RwuVQ1D(95bXLkTz`~Y{@D4vsf z%0urvvk}|t(MF6rjDvZGjoHlIApM5afV~s|gKE6x)6{0)BT(G1n!Y@}9ZbbUu$20b z7vcWgEyvHf?Mp}SPWZne@%MW+cb|2~@23!^I~zYW5$`wE9$otXOA)m*UewEc^dG&5 zm|IeXJJ2KB|NP%S^X|0(Ng!QN%T3h(BI1O8RAPr%!cWMjtS&k-7v8H(%mC!4EL{NS zCIul$6%7!6f#t_iQ{enKAk|0^(3PSQn6V|ZtU~$3`X76m%q~1>6_bsvm>~o$KAAu< zd6w-}s!bzygE|X}4#1*aB_SaODm4K!YM_$w$7X7oe(5OkUs^7H@4l*4pRg!>dR-x+ zNdY*rb9nk}^UM41e*ES6<|#(Pi5x!OF34KnwGgEp1^Z{A!2u$WcUnuA&AfU2JnD%t_~<}KXe1~X+w z9+7uqgTJz;o@Lzmuwx!=+}UnBjyvShEyMEY1}pKaowCRq0u>cu;fNwhSjE!jsRI@- z)!wjOD!!k9;g`-f3yqD-%dEA$2Lm2O;*XxaXFWXTx^t*t-qFsnUymI;7KHw>qW}5w z;$H&%KgKl{wyG}!e`WgvLeSCEpZ~nc1Kc4Ux+L0Zm~llzYJQj?#iOYC0r&r0{9in? zN|>|vQdZc0j=oFf&peVKwYoo-TKY{zta!;~VyV z6BXoi5CTb}NmEx00_MmWWA;4KGSxeegkP=^${YHCcy;q}2kGtwGWUX?qoCbh)7(Zv z<+*fQWa4F>!3ZgE5Rd})&)f(6=&UjTDm&YyzLNysZPSbA@Ba4dPrts&0yB&bGk40E zosKT094m9k+teTh^>8r{E>1HbSd5H5fSDFv{uwk_2>qFsoq_cm+?<8{2QUu?B)0y0 zb%>gzf1r_GSLvUH@aCixdSq6do>-6cKAsQTol~&`@cd<+NCXYpV1wAGmPr%KY8iRd zoORqv9(A}y9x?1>x68J(Ji@YhMv1{N0IH&*s#F!2c~zq34zGn-N*9V|#MI9MO;*Rb zYNq>ky7}kjPX`eG(Q!JhdmJ78V|Jn=*E%?tC%&x}&VqW^uG<3Gk7N?4OL19j4av5nhsFM zZ=N7bD!9{Lsp9C zQ(Jh^#X?a-ersqUimrZi8M$Q;V zS{5^tqSC=CrjvA+ z0_PLq_sYXen|f9o;2Go454${W zIqdT8Hs=AhrDf#7@|cYRh*Fg*L2y<4%8IapGsLKBgFo@>x%Ygg^nXTw4iBEHv;NFZ z;R;7jpD7aOc8`^xynH{3g*=o*{@IKE=f0e+pKBfdyyPFCdZY+Mkwp4o_u<2zH?PNM zN~l7Mk6x&beuzl}#VO{vs=WrG&4v5g2Ie7A}s3E{ECPDS)?~sk|Ih_s48@% zx&>7<4m!g@j?crd5d!}n<=<4$UnxRWWXqx{b^VZy``6rx#g0&+9fu{$SZz#6W;tgLRe?l7Zz$_I&S)Xgv z?}?FUpTx~QA&tWpPp^Le`|rQ}_Dkw;o9U2D*y!VEZYrXL(#k^⩔c$1PA7{BG7v# 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

    (|yx!hDyjX2E5Gm+68_e7+ zXh2V2d$uNTqptBS?|Tp0;fUGE8l7qmR!a5(nsQ14lEuu;Xo^k# z>pyMS(Q2+0>w?WaQkHF&oUmI#67ztZBxMwpTC_YGjc(}vfMsTkbJmt1ba!tkPv6fQJHJSuPb$2sBaRiOe!*54buO%HEktF@<;gdbO_RWvrS8O!XDq*im9An5nJN&m4oii>kj z1t3%P1BG*j*7H#MKahe`${+}{~Njvo^Fwxnc$joyK&+0ZKrZ>w9t98*=|>N_c~BkblD0T9ZP z2wXHJRh2}Lx#pS%t5$0b1A?0=TD8%k!DLv@fWrl>?E#Yoh&UsMe)i>QEb^xaSbw`W z&StY^yWr*AUF008J+-CP-A zxQJApfRIoT(w6>&#Y0p?M6-GgHWNCfhZIJ`!hk(3o)ggMrVjd?%Li}CEn{i%m3cB# z6_8V9w5blR0;H^C-2=P3FE;=9_1jn9J!~Jauc&*vh*gwgG(ksmw4up42IX*4TvzAw z$&AiOhlh7@zHYYvP7MrEx3AAS=@~8YR#F{S!?1!2%t4|Quhput7QjF%ob=#E6erx+ zP%RD;<}Mzx=0tNDn|XL_xTFt31GRG!)q1O!JMwWe&*CW>j4&j34Uec*tGdeH|NPVI z-(Rm^q!9r)l452>+{N9zc}^!^XZvs=_k$F+^aW%Q+%Jy}DPrxjVhms#)j; zMmjpwKP1kEGbVxFCktU=*%(|jUd`{_RNJFu7CC?D$h254!>Gb_Jw&p zcEFBm5%k^>$*ax%_U`^Ztv3)22aG%2jb6SR?(r z?pK6hOb|gWq#H~FJTS@O>=IAg+b4Msh-B}54N~@`Ke28I02Qw;s>3P`8SYj~*^i@_ zN~<7ka=Ie+^Yf<1|33TtNqK*j95?-3duHQe<`Bw9c^43Z;&3puq za)LA|LQuoeSt$vNuUE=o>^KdLBjn;?F}bGuCWj?a0zyv6h7_?t|J zDb0!$DxA3a?yu2n?3h6WDy zu7CLT>+gPfl{OeFt%wt~#y>}=YmWer9yk*J8o+ZF5f&NtE){)pz)moM!#}69@qb^; zZWTnZlh3y)NH>5W)pJV2W>~Mq&{G*yA4m5ptWEkC3SH<2=1 zy&(Xh1J=#nVF_fj3?ACQyMf;qlfaKQ#>0!9K$47rdMQdR)yMVA`&Zw5{rX?OBjK?i zQn!@Ri@74(%>367P3@QFxi@rse<%Sh?H7w%@cjo{d4<)m4b!UA=oY~b?j}JS+FbzM z-4V5({%p9Q2>^5;{rASo2~z*aKJk`N^LG|OKLM=hN<(?uzGLjo$3;L( zc{Oad51Z{)hinnZ4y)#LcdKxB^B5S5L||`I|L1Rfi(Wmw zIKaF1Yr+h};^t*6Lt1TyydE^{3vf5_YLQK^R=SU?qW6|pYov_3hXh^c!Bs5{DuTTd z3hX>s$wb*g7w2%sXe?uIK4>AQHCjXjQ;uUmlE8)T4e6g!PD=Nr$=%9WtyZ(*X66oe z)f5Blr2jtp%=zf$I(hW-k}wGNc&3OKA^|ua-|T8_c03iR0-&lG0O%>}{f7zwxFnj- zr!L)waCP&{mGdV!BDz`r{vHPG8K1+#2{6~?Y%3;A&at)rz!E>d!B3b>1$YKSbqrxz z{3$(R8_gE5ylm2flyrzrqL(V&MFkAZL}XBzVuiquqaMF?`2-vMdn)HP=r*tWPnjdO z4zH!ajVVio`}mhW=#Rht^waCFb%VVZXojN{j3cZ?v>q=2jL`G*FdpcQ-T*El9Z$sl zg*1HBis>#+YNZe^Ej4DdX$QVFuQjhl5@;y3W&Ev`R@qSUu5@V>K9ydj3Hm{ZA7(OI z$NhVAoHx_H5!R6~9pB$VU47>KIdqgQn{xX5(f1`h$cw6#Y9rS9>mR=T^Z z=?mPzifRUC#){Z&|DEX{&5sdniP&E_twgTht^ka*mJTg!{~`Umo6}*2NRdD%EtG%; z_z4OiAe5@+06;e>9!vjc1hNSlbhaNZblS%i9H}?;l?RK?Z zQ(#7@&|$UK+8j7;HBvYL2oJ#1Q}|TgU7?jtnZKpY#-8UosfoM zfF#ce`;2{Z+q+kw&bb$3S)N3+LnB|e1$abn&5C4GS|S@%QUKDZLEM1NdgbORm1?!t z!Ahy6Mh-%q`}JVz-q^FZMcLmPlYi;EznvH2+z9-@i^Z+B_(ctu3_=>~aWmynn(WIr z|K8OdNT?uXqztH2_3(>EuRj$dbk?f+tdTlIl(!B5z_OC$ax|X)e$88YeNH?NttCs$ z{d8vX2^=-QAL*c=X0!<*`dAx@KO=HzX6%`Wucx{Jn6Oy=-U*1<9tbYue5SyLMJM$) z3g$`N8hh}~w7=8aVi7t3R6vy=C9jR%yR9+tELqT=Gy`p4FfJ|7ms|k1PSjghhzqZM zPt*Fc3iSThjRhdS({FJ;6CLTOq_~v)#p;KjzxwW{uh(1Md#Of95MrWM01!3?u-Fbd zptuo8%``j{*!0N;Ep7joQ9Z{xFxpUEA`X@w=EVsowI|tyLop1RRynVgg5oF@#RA>} zt3p$!z?z`!7NGYa@RYERFC=@oM=(Ug27!$hbQ1bO>q*v*r2nOQwhRKEnmGv%Y&;H2 zlbt&h!N5Pf*nai>H{br_r|p;duSX!kfPHl<6eJKNJ`NY(ATDU$S?Gr7y0gi&Ny7S~{06Zu9pR=8u z%SQ64%kA^}rnM&eyX^~0dJYBXjeJQl3~9B=tJP+EKdc96u2$K!Kd-e0i7nkj`WHH% z%mZ+?+Sk_my)34mo6Y9H05?k;@k=8iXwrm}K++t$r|o^*k7i7R4pcB{602b~Ajw)- zt<*6W)9pR-fHdI610E9)sa!Ks!Xw-S)lFQ{T>ue|e<~g_0ncMJ7U^)F3!! zOLYuUO(N9{faEl!ln1wAD5Y2_`~9v73`gnAZ!`k^jmjq(flnC4-|Be|NK0lX0Ccx2 zwEzyyNU22vJXs;VD8qf~a!%iv;R3hZHJy^{^^>?dWf{TwVB-ib?gFnENRkH0XOV>WBRwQPWvSN_f!Dr z(*M(Qfs1x786Nv-1;EORLBIO$>(~GM{o%{an-LhWA5n@|gS&XGpse!B!fQb=yu3{h zq>ykIdJpIe_8y}ZxQUy20jpaD4YZ*8X_`Q2K@41#!&@o@kVFsvZG=B$@J+O4HKrjP z7)hV%kgI}DFFfJzYW{zVGEoD!uyXAjT?!#I>#)9ic-U<3MYX!2mN3KATD&?z+QLKB zz+BHL0LRwu$zXK8hSzoDvsW!$;s>|gxZqs=t~WlYiTVq4!BP{TARMQ&g%9y**a5Qu zMAH6E)dZ_~b2ng}(vW=Qn>wzETm`0HQH$524==FULKVY+RmPtQkLsF`a@zf6DXr>` zwYox8luA-mf}^M><(R@Z+iErK((~FKR+FF$MYp>Ik8CsWIYp4Oq@1u`=he#1Y~0sc zC#qa+kByf1Q1l=Rf2)ml8eMNaD{q&6=If8}81H3|(_8Cv5z=;zVsOxwW?e=wy$}W@ z*}tj#H-&Y`Yb1px0ED=tF72tquMYnuAafm__-d2bEe8iXimgT2&X;KmtLYDKMD?6^ znt4Tt>t%a*yoCuW?Y|oYjA7 zVoR^nxPaQcUOshV1d?Uj7rhE2M5g31lMWz~Nb4cUA?vG%r<~0KT_%8uqysvX-i-jl zDA@8IoLq3^L3(1cor!E-6uowqzU5@TRrkGJp12^~oIfsX2{(yZHrS9`87aNiNhhM(>$3K5uKVWnaX{;FcS_A&=5QZJGJxYLp17X_iIv@YiGT(E6 zoK(?gLE!+{(eOi7}acahEX&o&PUC*YFQLG!9B-E8mj8U(5V1~-=CHo_}u ziA+=4E>_SONxo4yUSNf8ZUwctRnk}syjZP*=z$1~2WvmDx1xw)>;K3 zVrFLX5~MV^8|fBUBM}i%c}p|o$1g`h|0k?Tl=o_oZ~%lYA8Ezv*c`c{5J3{D=~Q42 zgMplxkDsEvpI&)Bj`r#Y%ow37G^Gpgz0HRpz||4b*Owm6d}g{fBz0R6Ix38&N;d-M4wzj7eZ8o5sjJLmsiSA<;WwQmgJ!rGq?n@DoVOSL}B-4B(JZCtQ94X`iFY&&1yDF|L05w3&Ve@qokxF0niausE}S*S9j}I-+uGsufN>CSU>JjfRuGt zA~~;^Be?=1EiP9)JT_zl6S{{oLpUwCjVip-O(NZ|k2Gu2zgKvnyP%o>o5{avOAb!q zzdi{SqzN#kH=cxSp6bgdpZNc->3pI9-?W>~cCIEy277~o^hykat~Tq?(Fc9K^ zn;D(vN7BE$OZ!wlk<(sM0FJfr!%AJ{0+{~L#Ys7P#S@ReVyJxR@pO=x_`<7&%PnnM z>wV}i|v8h~R6k5H(S%F+l<5l&8>Y_0&Z3^^rVt*hBMj#f%7g%;|9 zXyo36qmxfhefBOQq~2} zO}cDb+9yolbY1CI>e%zb*+qbd7DS@K_j!2l!CH0RS8$l5>;P%&E}+Ce4R%>iLs;!*3Sa0qmxR2cpQkw;8{B!H?q1*{WA z3xM-FK;LYR?EM$l?ayr7eYha_D3=T+7yN)QaUgYs{p7_GBLPuWrHuhm2gV9g8TE^Z--Onw2GWD`KQ%Bvzi<@2Z&SKe;kid z%E`Oea-zZE6xSr{&1$^?1V+$N3u^6=`;fZ}jq ztgJ?>ZbrI#C;V?Pd`{8129G4jP8!XH1!j>;fVI*qZFC=5odN!_>JjN{CXolhjBtcL z5Q)Qm!cHNMv=_He$exga9dK~C-X6$)oX!Tf@LNf5A76!dyK26NyV?>Rp87^$ArM8D zyxHE}zgTTHniC|sgDreJM1Si!zvA;n4lp!FAIvX7fSwkqpE!H=#M#TAm)cLxzb`@m z*2gTbU*0Mw%iqy`Xi>qTyJ^SPWSW^fA1fSb#O6gtRTrsy(5kz^QHu$!-l)VxQvd)U z07*naRHw~$wOV1lhAN1xYI~LLi>+pEYd*~?*AHD z?*$NrrdV4%9FYC4Nh18b8g;2$rpP?8!#&9YG(Be)i9}?P4PZL97zPKgIK|~3#uj6u zR6qCnd5Mt;dULD;JnsZ}f&yr&#S#rTHN2@T7u*%SDj5(FSD#X%hLHRW`gw`@Ij#R& zJDmS6^YMMHKcVk|SOj3G2uihKJ-E4}=m4+9fiJ%M;BT50#@Gv0K zV*NQcfg_Cf8nXqDMtFLHW3|>%0^hd4y!zD*Q+%sFh@1G zqZC?|TEMDw5ldkc$0Yrmhmh|PLTMzth0K!93J;mSHoDJ-b?FhnVu9%Ez`V&7Fu75t zCHDaQb7)gxQYBceLZCT2y;?<*?_U4%{p(*IzS`D`$J$JKyT?7CMu7*1DFn1e0NGRk zaU)5uAjxj~w;HJsXoYU{!dmENLH+5$31f6aB>OXSR019OLxv{-@fMN>VoG-~5zS5C zdT#RhIX(@7)A?{l@I5JfYWe;kHhin5@VX55T20>KYi;>8(wmJVE=N{c}-nUAQk99d3Ng zt#3Ns=Fiq4VsnI|?u4p}IzWoM?RQnGi7>AuuLlee*Am>Em2lKj&63}x^#*x`t!T=s z3dv3-66K8-IFV>okd~DSp&r5R!hrIU1ckcjoFykoZ2YsoAa(!|aRm?a z1l;7jt~T0OY8~B81ga@XcCW`h_MZ4Uo-3C={PTjs=LQG5rW{%*7x+t=&(8f$f$QVr zz6R^3A|)hEp&W)+dC}|-ZTvO(gIMVQgCoCE`{CNmKJHFE5F)kX(Y|X<%F<`h`ZSFup z4RXxtwbF`M6;`DyA{5rT?Z07I$d2B3cOvM0qWLCWtdH1;2>g}E4-5q1Pq%y@h5YhR zPFgIwu$ei7ty9blN=eX^A*iL~_3GuQ z*XQyRFT>R*5C6f4IOj6@6y-e#kvCzX&&;)H61szeJm`9p*Q@Qr7m^clBBi>!yIb}4 z?MSa~4zkSww8<`A`j3a_lNX=q_P(^Y^6ZDXTF}3?e4d~&cIwEHq>f#B&j4 z%P8c4(rfzjzjmulzB6#0xspUFRId(bOTpoZzorBsgo^2hD1?F>ep#W4fYi-4u?}M{rDQ9SO3+7GYNFVA zf$Za#OB?g8mHWFW22%;GZ!uQ&@vm{*jqaX0YM_A@WR_JdM|1eEs#;Kkx&U55HT*ctz)b1G-(*S)oE3N&DjaFMs>(^_O3- zIKY5fQH*ZlE`*d?A*z9$n{GM6I^pyW8L{@YLk5nUulj1$9)R?HFnrfM4h(8VIJMH@McKQ`#YNrcK?7(azQzb)) z56TRmh8H8kfq@QM+}ORDP4)*sxQImFfEYn;PB+ygIjvI~R@trY$9>(8wU%Xn9Zm47 zx_!1DTy^>X6yWK;YG?rn9(ViQZtuR*3{_~*_=IRTv(|icU+c9cj7i#~S5E+vKyAN8 z&x5sUX*Itj>pxd~Li0ZXr#Y-)TpOp@DY>Sb{gBtc)$KAIe5p$uRp8KKe{wO}3VBAY z>)DqRmU1>`Z(xAJT9Zf#cnHHtFMx_BrMYV-1v*pCs!2!3n@wWTckf<4PqWecD3csU zA%qRHV^%aPgjC*t`S9!OU%vf*WeQIy)y4v=V$}g8uy|1nAjvd?*s;)u<4pvn>>_PY zU+mQjVZO`XmwVz<(*LPBvX2f|6#`@+`j=rss+J+H~}WUf1?*R1)$Qad$C$W1&jp1?m-Odv;dDV z!haFJG+)Uq{j=p5>u1>Ig##Z5FD=JW^ssmMIr92{sB-0sG^W+Sn*GNu6M#yi798i&zX&y3! zW>L*hO=(EA?BBfU1B*Qw(vrR!?>v;=Px-*GpHJ9EX%Ws7Vuer zvt;XP?a+wn%ISgEn*9HEPPVr%H%~71Fm7#&t1tq1Gzk@M`^^`d-~RRb)%P1y$O_d^ zDj`_}wT@nyl4v;p33NW2=<)FE97_Lh-?-_qIFf#z#QgNqMgBnE#{d%|V;F|@oif3_ z<-{%3$Gw>&G1+974?Y`13-dLjfgY^(9s*NH`DBnJHkMFM*dD3$CE-t0X|jcL@$VFu z<$#_w{{v9*kf{yOA-($Uo1g!9{o?D*pF6myc?k27tO){b3jS=QsSo=*c>s;|jJ$d-|6@O}QiqLg$PaAoryVuew$t!iL4_r2Aiv>d$*{Q z=WxbpMi6j(%5&8}TQ0dUF2)HgElIN_W7c7uA15M-l@iiGbA~|6R&s*}mLvAF>ce6G%p?wErq&9S43P++w}K z{Ywl3G(oc=nI=GGzoS1Im>{YivO8fE5f=fWP*FhO<}xkw0t&@jLsfJp^J*5%&MYoK z>U=}N5DGAk6SQqTr{IwLrPdt|s6RSvR|jrA6HxTpACVG6tM${QSCj97&2o zT9`9^3d?P5`ji%~&)J&Q4B?X~A9Zf=6$149n|)=8ZtCzqU>*Ro>N0y3`feH?1D~F- zXn1dx3Q5ILvar?{U4?I%zn6P+yEwd)%^Gy9rC@1uYM+_#Zr7MhM=e!aYDDl96+ucc zA(W{7;VzJgg#bWfFb3v+0($;npT>`#U(qicjBX87xfNafffe9pZ&_68>BS;J##(?p z3^{NtlGNQ~mAw3Q_v+#GzkdGmhppVf1^Z&9s+DYJwNj`lDM)xT-A3c)T=HPxOfb8C z4qt!Ld-K;?O8Cns95r{bqO_nD5`ephWeSLB8*TfSm?&ImEP0U4{btyxE9j^mnT*}` zf;zzIuEHStWFUV6(E}%|z#WVPzN81-pKb+kA%&GweqUD5ArS;@y?N4l4K{f(FxyDF znQ!icNHHMhmZE9ZL{myqoGNKVVb*Vc{_eN`_}BfHoByh)fLBywt>V>ulI0NDMFj*p z&^MxfBiC=|Idaqjuk->dFoTV51!e*Mft%F=8r_MG{9$yE1;;-lDgf=R2o(qu?N2Br z{o}Mzvy|C5ebePSer7av5#)G?T#Uk+$IP<4t)b-7UGF~MBNFdusyMq$4`Aw2O!~G{ zR3e!Yp_+o41Ayvwd$--LR%^`}np^-fu-4Vw1JmUJ*`k5}u7%bAEfXAg_ z#iI7V2;eT>kkQxaNtlN>aw=tqb6tD(1C=B^c`u7gv zjU!V(aN*rrwD$~^bQ6C=F%S~wnv&!UVQs*p>fpCOeD~YG{<-~PvvU-M8_Y-(n$VTh zP?^ZC(o@*7{4OGZgX6_1ZtfKxqQB8cScO&Z;(m+>HnM*U4%EO)Nwe#RT*7ellP;b8 zvv2loPtmzgo*N`jU331_^$Ytam-o&sk0(c34Bj-_7nvga^_sLAMJSp{`hE{hSgq6c z#cF+**CG9Ps2APc+(|}IM|>Ve4n94?pPWb_Q4PJM06g8LOa1I>RMXp^e($3Hry4N} zZLIqWnpsgp3(%Aj#8}5-V=eA=vmMs=2@rb>+#>RZ#?dVcb#sSdg_IOBs357183Ne> zWe+#Ny;)v%vP{Nd)TL*?H{9j;5Lf*SRNmDwIUltBuRpp2p34~ zzfX106aL?)V#Ws;bHy#PhbE1%UA0MxS$wHrJK|m@Rmpm17HG^ge!(THdS6%?MYal$IHR- zGiS+WL7!~qlZgqyGBmO zS9fDqH}?CHRo%6E!*0jZn%l%XcZV~YGm-R@48y;((rWO2M$~UGe!5q$hDdkN_>X)7 z4sjCk1N_6u-Fh%w!UwQq5j^G0dTva{nN|zx0FjEqU6FR-u9;HP!9s{cK~P~ zcS`J#GFF?_-QDK?A+3g-GelajuQ};f>!b*vN&oR)_OC_hpnopnHvnk&(p*aedU(xk zpXcJ`&pqd9(f`?MT)yD^a`)bb-IJ^7fx)9Su*GLvr6^RA3qkz#=YA}8i}m(l5W)C3 z!s-Tt8HJ`)cWk!Mgw0lS0tk(?T>?!gqgZhoXs#FnY%{koR8pDOZQ-2pj7K^G34#hr;#c2)`}=?V>*d$mH#=0o1*KY~2Dv{IbZoA%YH4kZ> zMN)il^J->h1l`==bdSLe?QtM;&dBx=r^+0EDIC&(Uf-&B>(F=s%696Y|oU!_0 z%>@GR1EEM#hf~5zi0=1ZtawW&$A6 z=Gz~?{Q31a>jwbXRd?5FuqtlS;Vo^A2hbIOnBQ~ik9m%t?@{8yqH?9^-$qLqBAb7C z8bfnx<4Esqa1jEOjP+)<*$M>ijl#ZG_aa^c%p%GbzS~UvJ?U?cjift(Aib$!`$u4d zB6KoL{$2VP5DiPj1=D}Hw!A9_IBJ)~h-dpvrUckfb2A!J64k=0>*4Oj{U87DzwTdb zE71NG-7k}h(n$lVhPAn;6Thu)TkVFBX$eK3m z&BKe;dIeF4Hi93gv0An8WP#z*vQP+td4-L<6Y&AagEz|Jt2Gb6tvz|*+PL-3Cr-YD zz5m0GhMOP$E0d>bf=6aef7d<^9rniQ~F|NWo4ajf?*?$S0>yu5L*&X&eqL2m9P zud#hV>I&T(^@bIM3IX%3jB0O;s1b9--I#e6SR8V%2u9EGwv4rY7`T_nf8~>*&;)JCAZZ|$UO=XD0f+`B>e4riy zBz?a=LM(os<^9p-usObFgEXiAUk}&0i8W}UTAzK$#eP4i+{ITM&e_v893D9_$uEv_ zxlm8Fj@g@tpg5*VT@IVL z4C83Ek|uN!S9gJl)4euf-i>BNhsVP!A~zP?y~Vr&6toanpxge>NdLj%;eGS=lSV8K zh7Z-J9TX68RwzVuWTE2Kx37Nr{r4ANZQtx*4rJ85n_0rJ+m#k78orq({dW$aiMhy~ zZt**P3?lz9`MVXjJ$>f;Zv;o};tKEm0`EDYI)O~+NSMa}TUT^7fG1!1+%P!#;unV$ z&&7~DTRvy$e_5_svAWAm+e$Fx_1$)}-KLx&Dk(=sh6elT^i?1j$=bq%il)Yidnca& z<}WoZ(%ln#>H#>e)@53cvxlGgA|FijzvhCEU9RbhHtNIR9`v4|fDHGi0Rn^MA&JQ37SboN_m8Pffb)K6Y)S&KLDMEUeN2= zvWE$UoMD;7>Ea$<%7%5D$U}v0qO;_oBqeE<6+|^BE7iT!I>H-iErdsYfMs`HBLeu1 za)QQtKVbRj0_>Q0=@1oBNTPd6$*h8s(uy3% zH|5{vwGQ_W*-6)If}Nw5>QD!vng^`z<_+5&Nyy4VSn~kpPWKaZ91AwDrC8U6_@xXb z6LNQQbM~fSw$C*mp+Fj&aO1m@mH|XyW(rAZ$eL@ewIorsI(i*DT=>Wj@Qft)j$h($ z1L=7`#X*NAD=524TLs;&w5-V=zS#Wm%XeRWn+id}=yXFZ-0xjH zgQ&&xA{4Q4$Sf>AOGobYRd`1`ciAT@{#VeIxe*MiK|IdGX`R$88cP!3ft&cnGcB3GV#aOu-Hr2xJFYQ0Ji`}rF7{ZB6)rP^2Oc#3yAdeJyL5GuvYWt&w`sdU5QBfJ3Y2bYezQz zNeA_Q%`E-ntOwv|A-E)hpPBH}jn@s9Csv0GZ#;j^CA-DhyaaEtS=_wOUOQJN+lzEA z0SCmb#!)Loq}_Fj3=pe3|F8XDti$~mcNEJSKwFX>N2GOz; z3WwnlyGJdfv3lf4Cq1c}g-jl+u+NjRJ0zOLzisZ#R~Lsn^>MQev_=a>KnDR;oiGET zjSwP~lyrg*Ce2XfoE+=@o4?$RR-FyM6#TU$wW|-_D=Ej~!KasoJ_}EjoS9S6jq$5a z{_M&>|LYNcPse(LzaF7EVf6lKj8u`x62>RM8|_`vwk#|bkh2_;GNpx^P0QUNe)5JM zVG2wqgS~3ev~E_Mtkh?8fD_Ai>!71*^%&^(C<$ekM>RmJ`%(s<;-^oXrv%jAVEc$NPz|= zwRdZOQv)uwB$kdc9`_;igMe$zS$dg;Et8$ArWcwQH1VBYH&K| zY(BpH=H`hg(kMh$b*E0kz+(4X&elWZ&v63|?7Pce<;m42 zp5fzL0Fe}lxT3wyszfvMG$@s3RWk0j+s$3pjB2Qa71U~0;4XA^6LDAr`cFB(oJLk9 z1?F^+OWS{K(m%^A>$`An^5WHt(J?wH`ex^)xH)K5m_#I!YKNy@2t?SO)7;f( z>0d}UgBSCnR>I!zR#1yurB`@it+dXFL^gJRH?lU%pBuooTThUq$PJ9<0YFpYdHNlj zfHj2#Oe^#i2DQZu7WhIcJs3*2PNYkM;H}R&U;m3c;PHf*{}7elj}R4|7-&T_DF59d zL|(1d>xY+LYRVAt0O||O-05CxsA_a~ns`@1dlDH)=X09$?na^8+tS>|F_@=LA)d|y zaKi^!s3GV2=b7ici{vzmp4VLb8HkC;rA_py0}Y`RLLd&)2+)N}NZKO0`_t%e>izxZ zKC$4E-J2Dw@vnB4q^?Fl80Y|*w#m=$Ykrnx z!dXU95)?O#qg!ou9~HI$0G)DO^`1Ul;7+9{J_+D{5B2|>+lbD12|ktI;JR`S1$3av zOiI^0$s-Op4pRXWWB@8OPaWlvIISkryAJZc-CX`g=KqVPw8M+g1@4sdSoS1y&VY$Z zhE%#}uH#>?e*Wr@|MlzrORWaYs6aJVgPYO=FE0V7(k3k&$7sH56HcFY-Wz{xk}z-S zu>b(>0G$rYt6aQVEh+2fZnN5CO>hLGJ!g#74^hwmc%8?&WaBC)puY23hwQ=T7Nm&X5vw10p5(jgHdZP5!=j-mRfo^#53U^nqs_1Ym$t6w)=hAjp9LTJ~Pe&Gw?(wW3x!eH5i9 zVS-_MkIfy1HMXJxO3;G>P!&OeOPBy$fl1~E01;6|gMc>+f3xDw8bJS?0rf$b@0WJH zhy`rj=La(+yYGL#39D`@H*VAim!J8) zS=!nm5se_iiv8nQN07lZ5F8bO6c$Ptc+wN^ZNp)CM2?Sq&gJHM9-{4UeAg9Ox6au-F^M?^>06a{k`rDF4QEu zzecOcO}wfb#bbe{(7}Y3-MV>CCx{=We&@;SPYzs^{%6vY1FzR)4qDtEil8sUNTyuV zF6J!I;QYyHfIG}l4Q8}LtB9yyWg_9V<9`ga;JI-|!;NHxv2p&mP0~NT0xl#_C(IBe zFh&#ST~lNiEO>LnDE&xuXb^phQz-w3y*F)hBR9H4PXsbaR+VkErHd3OUVroMPk;XL z)w|~$;d?mME9$|T3p$)f!{9z`q)h9kyQ6b=(jC?U_Cu>Qqc_+dR^80q+=2u?fL(mmI`!kSam>1OUuGm>VW@f+v^*L^kf9r8X)PxZtB1Yib|A!Vn2roxBi z_uI?jG+7?K?Gl`j@9%l-tu1-T$)8^If9S=NS0=y3LfIKP^EZJ4w zUKKRG{WIV{)-2hK@RzKe%#nm z`m%W9>ASChVQO~Df|EojACNngyd904V|`i~!w4^*>I4bLH$y z&5pk@T)(fiI;pBCB|<_bY}bdDg;x30i}Mpz_aUr7Cmu?GDO=~KE%$klbEB{}$3LLj zQ@?61x030BJ4{OBAYC9WpnV_SOUK})f49PBHjG78npY}Cq*(*(;?;{EfBw^}uQvOJ z210TDzP0Mjgl%vGEaH6$WX7oOrR~e~Bw`-z(cSZVSJRfCSL1kcz8o2kiGH9?e=mkBOGWBi*&zD%*0J-BGd`C!=>~eX}jFLWun~32#^ezFoh8WFESq#>`(J4@$C@_#C23kwdNX<{3RTig@cO&2zx(OOS6{toj^BR^V=(sn)>=Sv z0E$v(4-I>#k?x+r{fPk8lkcCQ6?uMkOU@s+)*}QO>5fcm5JIBR=@tQ`2;d0VxqxOl za`Afl@>RWQ`(K}YG&w#=d1}%B$rkVgOm=%^idH3GI30%V?&9idv)ySawK);49doCJ z3&1_HLP+R=Byy1jX#M?J%Jj_tS0lE>;vK)b_woSTCQO{WC|5MGp z3?ib4bTk~1u?@k!Kiv_4M$CxU`dj_otUmLL?bT3xsA2D*n@O19w^!KiAPOp6L`qD` z0=iXa6+i=$mVMO)`D{-fnc0J;MhGX(H@sQWGs*}+li5FzS;Z%|by9*_)Hw+yk{YXu zs0fM-T3kzM&D@$C-qXcMkQQP^I4OX5o@H0&EkADgtb>MmYOmsg)GHGZx?KN$I2;<&UfbNIsPFC)yEbBD5Z$V;jkyH?8ep( z054u%{P^>?UwnNbBMuEZ$f5f0?+>aQuTCdyF-4sc6wImk=LD1F8(#`@i)ZxpT7UY> zYWrLH2Ktwqpphs7CFyk0v`U5mS_*f&?d8>|0~*mBW@wG|0B>TAZYqQsVEGpwe4g$- z8kmv&G;{wt+yGZN5mqEBNfs3JZWVsET5cLP7OfhRyRg zFMs-Pf4g{oX^MkI4r96lEN~`k?$Y<4hWU)q6_W13{wbmBpur7hu*x9$Nr}I?HK&o? z-tS@ckMuqXBL_*ide;XKpr9P1;Fnws+4M$C1Tw3=^+@#Z=|J)6$_KogPbcWRq-4IX zF&4z3uY+CI0Tjb#bFtlCT)4-(jb5i5a1Gq?8rJh($eY)x%#~So# zuA$?g+f%ii6ZapWY@Dt6G2OP#__3;CR^VmIC#yXPxMaXNRRTyR&_Ft%v&_na=hd<- zf(}2!_52A6LuL?{qV5K_ix*cv{Pe?@-#+627f3-hwCcck*t@$%-Y7wjAEgo#3~aH* ze7K$Vl=OdcejXVe0a!RCL`4D`W&|O)yt>@%Mk%O{<{)6sTIo&Q5LqwLC87v&V1q}b zD-kXL8t7r&=YsFw;sVlvMmlmM&9wIhD2yYEm4J<@71lEHWbGSYjs2CEVEOE;Q1BkfnC zTOvlxNb{ZxEe0Y5N=}yk=*N7OBBAVBnL9U*H|4Gmc#$8ynEwHq`EgmsZypslgGi*; z;UrWEb-UeOUhOU}hhbnw`jP^=Hw);G!x&zz$-qCq!w7;!tO$QrL7F`7(lZ@J@G&s} z$6mk5!SF;@|9cMWqeTCQmnWQLXB{b;%Rr~xh)r#Bk{+E670?w59bl}j{f2``xwy(i zJdPF)KKN!|arFvi#Iu)B(E<#Lf!Hhd?_t8WcXHC}*$rWE(b5r zVPEUMc|#d7C{(dT0o^879XX{wOO^T~7j}7fN$zu^tleCGo3pkV*6DaaIo~kHgU27~fb0hjBD<^Lp{}*$>};|IN2A zFrvbMQk%cuAHb2W`~6|mA;w3XU?y~t1&(wURg>59rf|!9wf@-lw^A*p&o^F*{OVmn z1mJD}OObI~E-yzY8WZ&2$X2a2Ado+uvD15Wt2M%CWF5s+u%8-@W+N(F85L?k>^tR;_3e zNN9O+cgyXM0r+-j&-q0#qI(1669oU&dx~GUTQjH8k}5t(xWftH4g~QZBPJxG9XN*p z&qSX`L*`r)NC>CCnu_AFQ~uwk1RE^E%CVS6AU#4iNr;qTD8qL9{JCy+!)9cph;}f- zv<+rXGbB>W;XTkQOu=bIO(`jl$}Igeq(?4><49Cr%<9m7AFcqb977*eKAGYFvG@4I zlR9Tfzk9AOL30tH*>tpfYVG1h3dB+0`#S}%5k>AJqB$>nBWK_*W1Zw=D@}yMI%Cv~Nl}VR4{a1pmqILt zCOQ_dl%d$B?GH^3t<^paCld}n4)Vu)YJ%n8&$Qh0g_@`x?O;|V;jbG1I{<~cq!mFH z{GRtLCy^ANH|@=*E%#@xxks;^_6&$*B<_RjyR)3U{v_ja?0gPUkcwiF>JSAaP(VN| z8P8Vr-_bdrwe+XDglw&{9r~e?aFdeEM#E{RiD zPikha0j~5HZ=Qeu^G|QSdj5L_2DG?2QL9;XP{(0o4HLj9WV)nv4-#x&NP%u}qh+?Q zNbeQ-eKQh(jdWV*2?jQTaC0;|ri^Bx6-Wk&V=_yxhHQc%+|cNjgMMmo0X#w#_zWzw ztK#P>z9rP?bfUB<5X@Y2F+nX640mY_=JK zQhC@FfdWHuC@Q>W(h?1XevdrhJldT3v%MRLB_;5fhCm{N0;W?uLye-R!ta|inxrU} zl4YDLc`UKkB85XjiAXIzZi|!wy7zkUOlB^ms}P;ULBr_~eRXy{(%xiDYxl>fLq66goq3Q&fEgiSc!Tk`|Fze^ixp^TQd}fx={gtQl!0N|7Z#dUhLHE7 zH@aXIVh93I=)#$KuX5+9GZXDHHa+j$m#Oqb3CWW75}AAE#uB~=QtuY@tZ4@0dFq7y zWIE^+XX0We9P~oJm%!57uT}~S3$yf5+GEO{DZFul|dTw(+ zBOl80r(@apW=p+8Yq5An5kLm2zzHofZiDJahaq#V1+ixk{kS>P&!cGx?k`$yV>wp| zL@sIyWe(3Kdotju4MLxG>Mny#@B5s^;y}xj%os+dkX)wO0tB*TsQWIP9)4Z1C(AAOo~TM#xAC z4u@F~5iex6o^2}#VtfMcs?1=Xn0J!d5>uE+TYjFw+?1v)H`5L@3v6?j^V`6$JR`5B5RjLD>mJgfvnFO80|NRdgukdu#jg+4id+-o5+!?XZI@nxh_q z7zeG9EmH{rk(}ySstJYh(S3C!{m&mK2_dyHr8sV&x(JFV=)58z#yT=DZ4 zoxJNq1^S0hIbS{2iuUK^^CHa~b5TG=ydCVfUmC<6yX~dAdo|mDNK;$6Qf#((_Cmo; za00;`A|?XTDiD;MvIZjokU;jQO@C$xLI(kc*DBS3yrjc{B;1?nea;tV1&^NQXx77^ z4xDXNp#m46lu}emQ3%Z%o4_h{jtOSU6H_;;tgwvBK!n>yfJ}}^nEs%`X^wt^(mUdwE}9P^8$DNCc!Z|= zsO32Jca8@*%KZnNS=+g|1OP<)Miw>(jhM@*;^u6Yn_JS#C2-D?_lM~SM?1jH4PkX) z;^%QEiWC4wG2;Ony!-micRzf0^+HTxhI&A)?uOQy8^grEcn2pIx%lTc@ZO1^7O&As z(f?>kB)f*0)}iTm>;gi}`F=ZY!6^;_3dV6W?lzk(sAvXrw(4!~)<7$6fQviWoP-(8 z2!oq2BVr@0H&O4wb05^763$_|(0VxU()N$V(iV1BOuQ-!EAI5*J|$BFKu6I6(#>X4 z{Q?Kye)Yum3B$KVRXL@p)Gx$0a`BU90ta`=( zSjPT(V`70K=>dtzgO>cEAd}d~ll_A^B~ogXbkW~iz?2tKJsbn)L)Qk^Ml zLztH^`KKC(-i5t8=U4I09yqq{-G0FzBKkji6d!!ACp-VcX7o|D$J-cZ(QKtEh)5Z9 z)7s&;f9{*}h3zh$Z%Nt9LBvYxrUihGc>XHuVuPr(@Ygd45{P8|lkQwXFiQi8h)4)S zN&u<#CJJI|zN8E~g9s!o9}6#AyjnfSz)XgSrG9|5oEI&OwxGmaZbfqA$6SG0i9 z7=>yUu>L?jC8DP@Bm$1eghfxepWXz7JEiLbE7AW5`4hJP$vrVW*AZ|oLgnV?58L(Y)H-?UcRym z<LjhB5TQab#Z+C!S4WdKDslKUYV zyqULH>7rWgEuQYz!)rcg*w2JApE}{8^OLKqjzuea$FA?+AL@a0Q6>wJ2t@Pzo;0+- zXcHdn-$?$ty`0C{-}Ca+ljS~3=>1x9U-36I_}+lUQ!Jcsw+02DeBL7+Ajyl8<}0MU z6%1?z4T2B_h*?!cf~TctSCG=>vvUpVb!N@;gMQrdKv&D{XWy($Bw}(((L#~E9Vit8 zzxeixKmGZeSMPSsQ4JKd3U{?;*5Hk^Uxi%QHzF`6*AViq?c`i@Z;1Z5F^Bt1@J=y~ z;EQ8_u3(!<_eNsF9g4Coo84|4A&O>b6|J#Wn8BMOvwcYz_}zh)A*>PHo91#$l6%s? zMt4Dm1t92dLgiS={TU9MqJLUCmb1>$Hw&2-(Jq#C1wh=)ylE*Y(nuN0#f#^E{_lT# z`TC_Rs-ZcWd219I+?}5Iw;<2+>9(YJa5@qZ!W%)lUPA|fHJH(xdxN!5a%j!j=tg&V zkBvxIghh@|c6fh!7?`i$@^R(??cM+YTsrYjEDr0P<;1MH1OM;|%ob1Ry6?|&9Op32 zjiB#DQ9|Gj6ljrQqnmPZ@oX5!aWgvLNmc~_%^dD-)!ilY^hIr*Z<`FeJ6r+M^GmqH zT`K}kC<%I0l|{^FAf82>6j3r$m`zg!Gn?T`fJd64b7h?$GoLZ9&tEwOIIe`9>7)V# zT8<)$BBN;0Vr4*UrL{x57AYj@=7LUZS`s9>EN22h{|(DR2gq<(0)oT!p}w!)HnM?= z#teyc5pfxi;hZOH{bQ7YkIyJ{BxK(dh3}^f9LwrYng;%`&QZB<8pZU#p`c>`1;kG z9R{>(x`;JgAAlBl7Dc3hu^7tC)v%;hxU-8MBKqT$-Els5@(Sm71rSzk2m+1c)}TPa z?qVprakGUes-qoHo4ZMC9*m!GahEh?cm5u?5ayZqpBAox5P2ITH9$)L5fu?y(FFQm zNdIsMVnPa!rGIeRn~IP7T?F1#RaD;F9`M(1-~RZwzrOkU<#mNOP*9tjbI|d6 z-#`sbZ2Eta{$WXD6uj>s;pScg`Qz5m%#-r}05^K`R^3`)p~5+GEd5(hd)nf!2jVll z?b8S@rGHL>;-Z8HjVfEJMwI=~b?#S=~V z6A1?6T(uA(7XR;9Rbhm`Tpnp@qRfZ5y03eux=$#aF zP1GhgKKHpi3ofVH{D%}SLP%Gv$2Z!!ST7Yq^XjO$&^KSd{N_(zzI=OO3TrS(YdBQ4 zMl^r|s)Xw#Vx>GK?wOS9*7JGX_+AepPIZV6>40NY4!7?p;0aukt-K&XeU4SDlsjo=EyXdaiyn#gO@Lk5ml9WkD%r+>N{4xVap* zBZHrXbaQ05Z}rv%5Ov}qbrM!DJuPxc{Th1%Oi^+&r=ro=S5s4ZqEdK zuk!Gn>2Z766RVFWYkQ(wd`MGIn){EZ^(y5ydmtu>1{86cH`TJ;44_^Aw*SZfw3lyo zL)p3)F%yLjpxZFm)w8nQB5;-<%+1|sXa_hT%_D~}4IRm;66?jB#!EyQ8P;c1!0ZYL zuCw0AMPPAvdV~pZiVD!QPh)};qItku66DeX!s7}o-6B_n+T>{rdd@dv}N)Dr$AnvF>YY zb-URfDmx5^I{8U*>|DZ(l}x5C?z9HC3HjqG{kQZ9WO84VG$R|F@%W^N;f#`5Cut@`J^!;IHz|?R9wbEy%gvmL$%u6n!}@o z4g-aq5h(QHa&{$nnicA-z3u$$#&YuCxlWy!ndf+c7(2i?jIA9+K^=eluiwa5VIwF- zs0^mzz$R#dw%1F+Y~fooGtPv_4=bD|{HZ=UUFFn0om8Wg7#aH*xAdl(+{UTB#XKg+f;pUPVmca<(=WJk3 z9J4OlbGn@ix9Vr1afzz63zG( zk+5uqOc z&K{}$%CY|xCnve`bm(Zmz!Du3COuBa1t(a578gI2(f!V9ZrYHZ*xvtv<)MnidFaFg z?|Z6llCy@v4$J|>!Oobw=U-+GPcJZnV7~AjmI~tu<-@`Aip5x*Q0yML2 zrCWg(zz%!!@XL!TGRMngw_mj`WePu+P$_r&^B8E65UpIOGgRngA1n|;GD&w7NFfM? zyNhTkqlgv^rq!&P8*}y7B&CoAwbuVNMI&606oM`gZ`aoL*m&duqbi}8@>?yiK=&$> zWch^U!{4MQEFZWuov^k&s=|-nCr@EnUny5{1i}^aF7_eCEKsUQ2}*3y@Bp1aV!t=` zn1QF#$p4_?L3^Zu)(MeNAX>&@->xBti?`3e`|<17U%n_CR7Y(v3%-AW4?%4SvP=Jy z`u$i*B}M*lx-o5VVy3S(`T#bGi#n#k-(y z;gpsT+UcI?f3px|B?*7xR7;R&a{lm)^dF`VpGgu!Hp(5zmyedpk`Sc3X(?qhpywi^ z>cQ>RyEi}n{pXjjUmDPW=4j5A&w^yL4tDAYk!D(7Qd43Or-tpnlAgkS7x&#QIDZ29 z6O^FN6#bL)hdl-$6^mHfEt!U-KXqy}lNsWJrR^sa&pK7?hm=pSg=g4p+zl$CEGg7% zE_Y?O4e1|62{_#yM#5-x7$Z+}2mE+yVL;!F<0cEB4(BEQxVMkLoqm6BJivSOHKcJ%u>+s0YB{h`z4(S+Og-K8H=|D2!{=!Tkpm+&WPZVHTSg%Bt! z-v7EMgm`xON<~X^v;ul9T8oam3v4eyY&Hryp)iU8WFrQ)u-eU(Fl*hP*%UI_{1_mU z)LFYqk~43PSerI4PN*Ivc|qyCqhybHk9vGMf9hPBz(FBkhybMwq8wZdrJyO?tX4?s zz7z`L4ZaZ>e0O=+g7sv}<=J{3(w^+|ZVxl=uMf!tIzo$-0TMxL^7#Bg|5ufVh|2o# z$@ZX@JbliA2i$#H86=5)XP1a{zum%IxCkZ6wA=wv$QjJ0dkSBahpZ1 z-yr^Pa0i?rD~kgSP9=MOU@k&_xsd+T_Am31#dFNFXaRyE0V%^knpsoroH{C%_0>0D z{`B)--+uYp6$e8jnxUGT35}krhlVDE9t;uE|HRM_M7FQm89xt^0?peVR%tY^H1D|o z2!(E)^~m8Z`k!tPiZAktg^iy?hYP3c&nXMg7&-lV!(X)c9KS7JwdKBlo*n;Fl;ymA zDo6g*{II!8PjpR}V9TDXETazN?)kGaY|2nXivf|8!ss3m-fkXg;^>~ql?j;i{^vxt zxLDfKt-Kh!^|LH-|D4*I*3hH(oq#M-^pUdx6?2=$wml5%}Au-7(|bn z_d7vH3;%wvIrI$?9g^5cTmyzQmI2;)ZEUn=Y*PSn2Oodv9J*x?KQ}2QRYwtlIOY1f z9`+8`0zj!nR0z#L?SFZ@>to9!R<=I`kKXY-Payh#AW6{?66xs38i|BHvBFvrnL3z1 zb!&l80jE<`b*%$@3`f&bmD>j*r2oi&<|LI~f8V^l`u2yfzy9v+aEU|1^`RNGH8hi2 z=`GMB3b;5h^BAyORpza+3+D43*Fx>_@l&F|+&q8rc_sP-C}oTUv?Kwgcp$u*wKB-C z8MnL5W-C(Q4AM^q>1PYWcemp^g$8zni@Up#9?4z2XZxBsf11#`{oBy-?p@rU%>33t zV+(JNqqfwbcaViz^vE z8u7WiX6c{7|L87kFmu*q_zCb&t8lYS0p{M#|6pTgI*TxXkRY9K4X;b6K$371lKp*R zA3k3^R>`rN!AsG9-6yAeXmxZrzSHfUu{w5q@ODHD?i#a` zZQ$vix%GZ`m&aas-|If^)D#cjB{EL4qt)W5W&qaQ1}BR{MOx$jm+OCs2%bHARj#WG zmF_f*BZdvih;f6<=g01}a-vh7G0jX;@e)qfXsebX-LX5hR+}8WMbb^ljp4%^v=J*p+2OHk~B5@4YN zAeM?;KN5lr5r?4kB_i#Zj(~O`f>I_h+QJX;$)5B9@8eAa=$!PV$77bExO=4X!li!s z-51|}|8{eQLq#I>f?5^z1(egkOE_RGuk1X0Hhaj6^}5QAjQ!+hB~gqC#zgUAOr-rr^m@1+>hqKG)Y$@Jy{%2DS@jF{ZudGrvUs+i#hX- zQ-BskA;I;z+w88!%|KCykZk7e=1zwGY6!m1aKQ-?AO$ka|52Y$_gj1F*nv7LjbH*p z0_nHu5dv%Y&{UQI#7ix=mjSno+?nGK9qBs<>`u}D8RACgi$gG0F zKnjes9(CL$?|#Q=zwfSq$)eAUlwT^T!5_~VEHG7*YCt#-QU`EAkb$Xr_T&K1YnFCU z&!(w}NQopnBy1eUiMhGF+O_vW8pM^RCzKd07AAus{<@<7pqyi`MN70P%J_!#3U`|Tt+~DA}7F; z;u%DwdpOywf!u7iU;X8~FTej{`vTUmuP&-a)t(HXau8)m^- zIlyUgUvRv#9gF_U6D%z95E&Bp zn@1jB_dq&XVt&jBIt@K-Fe3<4m5hI7yvwWa33T3Kl)~WMEMXI;{3IS888#7qCzwheI%nV zfrQrT1jZLg(PFJ0e!u>wdKq6x8DdTPU9GtohRtr!0mBv-CTv4qX%NChAYe;CWu^s~ z=|p;@@8s*B=u*(Ng7l^ZiZ0#<5v0kvbEkBTq6_-L@*=VES=u>591xk`s64GZ=`zqa zX<7ml=_tbpXemBaYt>rq%J@Qo{&z01|EarcPwG&wTRk+dD3J+RlcGf=s0(Hb(0|Hj zRX%qWMX=BT`T`Jc%48AgrhJ*)CIkd5fCySBq-oamm8b4=n33l?Uobl>@CZoW^{2PLI1GTIR==*5 zCW67710?O{d*_?i3TyYN>;Z@!~af#O@Ms6@un$4$$9|h?uQ;!X-`23YL#4518hro{7*;VE6kE z({n9tggq!AR0szoAf}5tv2b&DsGce^5lT4972+br%tat&7>l|pg0!f)r^93}+3b!< zK0gE>JoTjCW%>&|75?W`^MYD3hEPK_^XBbf-XO#vs!A=LX%;~4W&Ps=oA4y3{7aPe z{QnoSQ9Q9Cac6C^5c`>L@6rh{6_xO7iv($gP${kpEAFRSgdh4oYTvPa+Pn$4#|q^H zSwuGF)t4`R{M(nqWv0XeLFi%MTJwUTx&?v0Py^f{Y1^HXC7+T0&z6%y-mT-c6q;{9 zK}eyBM5w7d+`PHkW*mmyFkS$i^T!QlYE8U}8zq8$eZsatT+DTx-+lAueMMEs zfcL+fH5q#N956ga(gox#I1 zkhzgV^rQ)xPsA9T3ELA5nZh9+{fgB;916Vg94v2|mnj1yB{fN0^WQysHf z%41LMc@)E);`)H~3UYcZ7Y9!n7EY}xSY9H_BS*KmdBc;eKIbRdETx?@T|B1n%;)*8 zx9kf?-F4@!PFHm9+GVip#Q&fq++;<{ov6mpL{s2qN2{~N!%$+K6RCUmd# zL14eA?4Id%gUe@dqJ;-`5GUI{qnLmJ1{IZ(uGze&bdo#q>><%KiDY`&wD*T?IgLlb zOc2*%N^J(92NHhY7fRRKkG^DCkO^KA(zqe@t03A19YXWG5^Ffx0;e zA^-Wm{weL9A219>q*7YAhT@W$cuJ?OQvlGD7;550m~xoA-cP1*`l@hE7L(F2F7LD zZ>D<_i*|EU@CBgftI4OPiXmQ9>o0MP*jVd)gW6`)8VO;8w2;R>)&Gw}#Q_RI|7KG&Fi zmY&Atw77#i=*$c{JF(WsyTw%bo`HjAhmREmmNJ*a3YYIG|0?SMgFef!l9 zfB);7uU_vJ?+;Gb`X1ik70r!~q3q0D5=$hL0Y0`H@%|RLBUt>cf|359vR1P_%;}Zx zH1~D@NNYm(o&^Rxb$5+vjK_jtWt z**g|W`Mi(ax|dB0)V$!NxO`f8)x`^W5B)#L>@=%O)UZ>?ke4JUj`k(Es9K{4s0AWK zK^dUK^VhFM3yQi9q070GY_R5ZI^As&`XyJg&TBwlcTpd&Xkw1rMCdXxHE}*aa?$}E z1n%=$S&J_(%3~*1=Kc!+_{sxtLdd>L3OSA8S&!VgV556ff7@Libi%{RlU6p@dajWV zG-BOSk4&%AH13p$5}JiCQH8h{5xoCxFaMuvk!KjlvKNC;Hqc=hRJGvZ5{}}LbG(rd zx)@YUlUgd?cL|5Y{N|@UCAgh|WqLH3x1{`MDeMQ{3S_omB+gR0?&5`3ffH`9h)Hs~Ygjh~0_tqb&AZIfKNi!dD_Z^Qs&S{= zd9M9w!e+O)blb9sGK(wF<4Z}p7C_P5hE2J8b}?LziST!ElWH(SYC{40AsK6Ja{hqk zbci$9ei9_ZmY{!nSkZ&?r`!G~+8^+`}KPjNb5+xY7G15Fn((*hxGMR_O;ZhgY-; zKfv7C7^J5G`ge;!(&RXD3LKHwLk3I7zxjx0os?hWX^^-##~zX>j@XmReU< zgIn&lxZ-FrJR|)-vZT>*5*;v;{wYKio@%imb3T%k5;5TdDu!X)T@Du)Qbwpy3kY|& z2v>K98z%P-W?{c8m|X8=c7ls(Ww}|Ib%3rdq|RWylB36bBx>M11n4P5|69(y#~p6F zc6GZaT=&nk^kHW|QG3q6katKAX_i|A3B3672QLFxLKC5s^c4>?vTgsZDa88%yYZQ4-xE%GbJD=P(&Ry~V4yZ|>| z(dF3md!71uF)s7#dcxoJ#B$7yr6I-z-2>z8dcUuG2UHZQT8cIx>5u;v&@8K{sL!Fy zcKvf@<$8W-xx-@jh|&e~{!%`1DEb@?oX(1Ma^_ZNpNM zSai)|nfVlX1B9+ZK?R@?x;q#UCLPPZRSbCX<(EJH^!@8MnP|&y|G+p;{lUgd}_er*-yBHPHZddBa>^uk$~knJfpj;GPM;D9wdtv4BPSIa<{wO zpr9GtX~tIBDy+dwJWTl^(^}9Z7B}}uYwH~<<4h(Tk2qHoxHtvQ3<72c|EwNQbapZ= zb0J5x*~%g=8J7uw?nM=Fqie7Wfl`Va-hKV<+n;`T_3n$Z0UFHR4pI;1)G+&YX}@Rt z_PmjJn*H5f!i64+jy1A*Yjk6)ZU;0oue9dg+?+JGik{P#AdCpsI(LHb1p1@X+@+1Z zzp?YdV?Ov>-ss1??C0w{WyZP>EOK&PoN3Qvp_M0s<-0f?plJwHM4cqXVkJ>kDbO-( zx7*9h?QZ8GKY%IyyO~vVT)(HX*R_|mr=>UB`qzcN%_Ur5K8$eR=Ggf0kJBY5M1P+7 zyexUuDH_o8eLN4)$zPvz&$yT9f6MQWx#iiWJf^mfR_;_Vj_qM7$AxD+4@PX=SVm+0 z?Z18%bs4UParDCduT9`ZSVS(aFpk*mU`;Pf1j6R-WOWuN>7d?FBNt4FoWE)!a{4)8 z<(&Zuz>?%6&VZ4sS2NeDjyT{q*wH7=m0gH&<)0=B-&|aTO>6{L@v*Su9_8 zoF38tHx{D#+wuXHC-lDoWJ|D`2+}g55+o>PC>NKP+p7VB07Y9vYitKt^HznPp;<67 zcXMH5Wc#8qk|)s(;RIlF&fIf>s0P?!(4H3k41Nt@&lC{MF8zo66wsU**bOABOYDj2 z)FMXEjYA>DNC;kk{pGiR{_*WsZw>hUeW23Het)1z1~7!ZDdNq10&3;` z&jZKj;T?5{yC-cNGomh{VEf*iZZXiIqK;Cp?VtbqS5XvsxzmkHIf#$y*QJz#@dBG| zR4W9mDM=T$0~wi4=quaWjN0zT`c4H1tZd_p7oWYsJ%MNfPGow5{^lgksgnee5Gja7 zUbJ)L(tG8B-bo5V0ALB*2*V=)g2mxbl(DE5(SrST8g*#sVB+4l5)jgEw7fZX^XPPs z%ZXL%^q`-eY7abq%>KK4fczp(XpnB;uy1v5Xdt1g!2}ASPtKSBl>d}RmqY|+kUNim z0m2Dz((4e{_H#Uv%mN^&0*7dXZb+9*fq9QuY^4i7z(+3hW<@13suvw70+q%_-(P+4 z>ia)`_wvoi67+0ndp8$1dLx@mcy)vzk{UqTnezrb?#5+V{-n7Quk@=ME6?gHCvu@Q zX$vN!iHkx3mk7VgrIm!qMm87Q&E-%AG)HX!Q4cf|H#Y-aq_anu6G7$g>dt^qlL)~# zSTEyqME#N($eVcg_&-3_K&1Lgt4hd5GLuvU{9-{J8)(>=B>@{HL;`vxW1&c;$yjzT zp8fRS{`%t8D~xCn#?ZXF3yP;AO~|q9aa~)Zj|xxN$5*v|Na3Ql?{o48-tKg@i`{Vc z(9bAo4T7JX@hU(;8OH5)b8)%Z?z9X}RChqw!T!!*>`JncJ~{*d5>A;`vrd^p_NdHd zs>GG~f0=`VxA#T@n{FIE_hnI5W4gB8o*JZ2Df&O?E+@` zKKYM@P>FO{qB7Y2@L&J`uLXnZi_z5~2XU1urCh0&4YrqP1~9;f(!wBfFo>W5D6+82 zPxAa^dMA7pG1*_f1$-y2S+;ofypmal7r$_Fb}W(uXhaZn4?u=w-SCP4$v7@05|PpY zxau$t5a?isL){Z#=3SUJUH0U`pQw;$^@4j{eEf|aK|MjTq#o-2x>~y!h$7Gu`x-^m zKkHZFKjjI^$^ds1fPSmf{Q>krvkoxdBt3qDDP&%HHjkW}WDxKH5E`LE0wsBnQ_6y< zgfbs;DkS5E9@q^}QvwcIfaZ-TT1E%W_7GmYeeuIz{`BU{OIL`(9Q*2UZPnexZStCG zJbZ=(az=#Kd?2v?v43_hF>@IHy@UQ!FqoIkblL%sMIV#A&&tH*eC}7S|DEih4=6XyBIpXhqF3fS-ckGg zMSndr8;=I}-OtE-izSn z7ti4kQAmUAMaIh)Lm9E%!5y(cUDKUZl1<#h=ArD%@ATeI0G!YPAi8{|!_O&es}(X^ z(5yeqyaPdi!GHqIqn?h9e6n;9^sZoDh{*{oo#r0YNYx>8WIZT~%{cfl0BU}46Q^;i zT>_r0lvy_J&vg4ZdiTuacRe1bby=xzXMc@Wo&NPmU7EH*r-tL6E&z3~L)~BRW8YVW zqNsZJkn?;K|Lsc9T>Pgzs@!2^@4AGnjxCH~5M)NbPIxD)g+cO2%uDN$5V=Ooo;m`N zL~JEKuvdX&_Ke#a{g{%b5U0a+gtdyoi`UP7{Q0{#@16}iRD(Hc<6&<^X$S8Kq{>A5 z!ybEybf_MiX&0P7{dMp5iTJ#9rJqOsWDV=D?EexVDbq^j?#zC57cWK2D8uD;bFtF_ zMzjhiT19QJ3c7kj($zFIH<*M$+&!{=869j5DNY$#=`L&{mIFP@{UQ3tR~P!y_TTNR zGx#SR-D&7ZSxvC$CWP!S!4y-?QS{l{H$VRMr!W8X^}#`4@3=lRP~F81=3b<9jzNI4_meDvaw5-1*p0OG^*&DY<5_2#SRIszk{c>jA98A};|`{h7NC-%vQW%pYG z2`j%vbh>e576^`ZqLb$TwXt}j(r1cg`6sO^5&J8F(NvT{hRtyG{L+Bt@#xs^y;ai1 zO=*JQssBIhz2~;vIFc>ABS13q7*(mdr1HMH`%ceV_x)e!-fw-=Gd*p}=p>1VeSZW1 zf@zMCRA#yhKcqaFBnW^oJKPQv5X^3wumMib5$U_?{t<+rP9U>T`#T!D{_6ijvZdQC zvPuX2UC81rww|qBIOfrQ8L5j!vS)`sd-49a|MtJ$|K$Axkp+t(XA)|LyqLQr9T|+# zUfL1H)MCDX!<=-uiyKJ^pMEn~MEz!u_-N0;`9ovjfeNf&+<^jO28BgP7~y$jCEB2( zPXHp$_PRT5`qSqA(~qT%v9L#v&F$xrPwvqFT6sr7bs_^iNnu)NNZ%wXL{%kRm>~%O z(lG6J<9@_w?z_w0Or+K#tMJpGQf)%yQL zp14E*q}IgK>-ybUPka)#DDC9lQ}}f+YuhDW{F7SN8y+s3t?&E|7w4>87@rF_Xc!eQ z3uVXCxo*2B?Rkyk>$q#}5a|eQTmf&Xo(Q-rAW%Br+uizx?`*p1Uh<-rm$x9?~gBOty2tp0Bf8; zt+`fKUHe#F@}zQe0iaSK;zdo^&NoHK@FXCjfKU~%G^i#ShGAZYe7MWDkfNGI7#RR1 zHjX;5mEt{~rz9&{@wIp5w{-x{y}k4Ef3pR2_g>-}{TdAE^O z7G?fP~eY(QjD-oRKr#1g26n+JM8dyHQv)M>P+Ct-60-;3RTQ_?4^1$_w#-$?#R^ zfY!Xb<&`uj8p1=gdF`$Wy{eWL%R^F8wZ$kRDS77Yi{JhJPk(yv<$HGvFk;DA+_NK_ zdyeTPFbY(>&SG~DO|k=U@fxu}cUtt>mj$-a%(KxKTKU(PTsZzM+)N@n8t5+c$fa49 zy5}P8(8IPP?S1v=zfKe-j^Ia`C;huV7KAn#zP2}?KaY6MJ@o88e3S|5&CG8PcmH(CGnE<$z7oF zQG@1p1xf9huQC1ZTLQtXAW}$KobGg$6tq8!%^30N7ax88X59AF-MCJk=bWJFg$q=p6~qWkV=}Q)y69kWfTK=?=m*0f52Mpw~CoSJzYc*tjES zC5&FKo)@Kg^Cz85{W1m%Bdoe-x+r~4OVAhV@& zOW#$w;O-)#Drp=@x>*L1#1F5Yee~hC|Mth{zk81f5Zo=8&5g*B6rkA2OK4dU`C2%z z19T}IJ`ulbw1p+!ccEv?nZCGL^ZY3|FI@j4`Eh}dB)v1gRN;rs<3Ap6m*(xQjp#Jza-=q8Ae16E1a9Lu0(is+;R1Z&U zJwe}7v2s%~*<#=QeIAD0IPJ#k0R!*8XL3);u90?o?Dl|*Ld*wRwxV=*a}$U=B$OpZ zg)dE3?&E-qb7rFfSr^J0H&APcZbXeMjaRU{DYWUK%fLjInz&qn>K;&tB??!xAZ!7p zji^gGp{CrUq!2EWN}9%O379j4ZZ58CQiFOv5v%sGoa?JFu;KgfM5DK%<+yido{E=L zz*ak(2po4m-sL&NhLj*cN{~b>Z%GI9Kc)OKE+hXWyO9l0&Ewv zoM{8YdKo=U1J%1wi zEsFz;N9?ZyEeAcixLCCFdZTnBQc{xcCL%eI^q>yAdilF={`mV3K6(G($Oa6UXIp}+ z)My5Y1TY1D6Y&HO<2{`wj_4A?w}%FsnVr6Po?)4u%`(g?2dL8{IJl-gX3ZxR{qmCP zRp4waKny;->R;gKm0L$IT94lQedVnwdhQKQ{keq@u19PGO*E^mR?xqYJPEQa)n5YW-8Cnl-(2{4+z_2@ zLMsKBD%{KAx0=TjMJ0Xz_wSI>%TM0hjdJ&oJkk$|B9>$t28vY^D3 z0>aeL?~%t>`*TeKaD31=K+r&T^#EWoCQ55_jUQMI4pJ^JvW=D%rzxB>Atm&`k&qle z8U&%L;*o%z3h|^PM(B|2aEMft?wQv1m)KT{qG0m^3ZcnE@1&HU#(J=Y2ta5|0jL5_ zxqCG)i-VAGT^2|fC98|faSczg&;GM&pMFxK#Lrn?uODx>`%?0RvHzyP+0{WyMM60m zPK*VjHV*?DtMigoJAkZ8kEU#Rdo6dystJ>%sH)RupE2;G&p-U?51&o9xI4H^8quDX zvCKdwjfnW#iV&)|_qMgiAN$|WAb2_b=@HO>`zkl@A!ztXNP@#;(CeG4{q3X)3qh86 z-+5uqEIGTvXD5S%XV6Mqt7ik@QJ=fJ(T&J8Cve0I2l}@HZJU!1NP6+95F%n>%TC+8 zfXVnPmKg&AqByS;({I?=hele$~JM-9#4t0 zdgaHIr(ud;`@Xlen+5(CL5d85!E&u>n)X-wo10-69562qXEZZ9&D|~XuSE*Bh$_I9hADV>aRv7FBY{6vU(u7-y;tk-(zg$o`z9aoL}`RmU& z@97;`C&claf1}s=K${-8o>e0t_1}Q!6{MGKGQez7;O=hu$6vl1r}4Smj!2gLF1acX z$#JE_fZa8+i)FD)Cp5EWDr5;SptL{(_)&C!4f8EBKs-L|1FXuvs_oOY%VM#>Ob$GM30a6)6$z5&L(X#+OrnJhEp({?Y<~3{{%_@f zX6f?uo%|Gfvegc-$x2ZcvP#8vVIE}EW+aJ-(1}R@;%9SWReXaIyGnKcVO?m{Njxtv zKmF*dKYTG=!3@Jr51EUJWwnKFgiBHUu|}a36>qJ&u5Rgsf=-ZGo8H5bBi!F2rcW<8 z^Pyf8GD-d35h`bKf;#H%X4>CO!vqHw2Mu}VGBYpkE-)bl=FH+IC>)qhqvhcAXE;=Z zKoDAUVJ_jVC<%eFWx511SGdoj*IZ?TqL}S;M0Myomp&Kdytq@7LdDEvNLTMZ`}W`e z^!&whQ`{Xmj505{JItaJOyDBaNH8D{vYOLN_Aio7LO>d%q%>>je_>wSvxnzTUd%IS z?pb0`Vswh)A1wbF-6TMNjoAxJQ?UIowr)h0#f~h{FyYghJe1f&yecQoX{5 z0ztyf|KwaQ5^QIWYT|l#JolNKH(8t?JDw{l0xtXgZ)!V<0eJe$TXD4> zG)+uHR+)xd3}YY)o_qRCNWSRa;*=UbXKP&95V{`DryB)VW>4NK0+a zskbv=6!kRAe({U<>*zqM5J>K~$#;R0T|cTRB{m<9MaE0D`RWg>cd! zUd1YG_f3_J8Ll<+;;cLkf`3Dn!ec8OD*0L1G!p=|IUf#-TOm{wO`_xxmEv)wkCkQb zu?qi>E>8-L{WX`@(}}-f_j|XWzMisQbidYB9y>vI%xMXbE31wQK}pV;2_duu>6~xy zo0$Sa-4NSF2?Y&^nCJICdH;)VKfishnP4!dW#k2x;ii!T3*p`)ReI>$OExxS9zXQb zpQlj1{;>V^67*k%gf>bm<&GwS;QHqJ>UO6Cf}w`=!<=nSX5ubxB2+k-#hoY~F`&6+ z^GI~%q!DoU?93o5=Z}NI?-}a<3S-0(L^&+TOO)`!0(7DUkJh4^fg0aG0H}yNkVI6M zWrq8^FJ654hi~5d;Q100VUW9wY^0|pXSjl*UXIIn!*s7v-$fii*nw&88E&)%+1wV- zi`zmsx5Yh}{9S1QIDVv7nDxl=c!>RoYkpzqzxne7Of`kin>Fo` zMFQ8>Kb_=}3?NWY1q5`!AjD7iZ#{XbIc(TWGjN|L47f+HltzQi6_Y+K;>I-8dnK?jM|UUKXQ? z=LFMG&C}?F8EFoOhXuf$C95wZ(Jws%kyp~-4rw93fv{@a8VjjS9f#r>Pg2(C3-1ql zmgAyvssLV2KT%PU?1q${z5lx}zxnE;&t85HWI_a)xVxL(1xPlV>L^_0vm)O`&BZr| z@CYR^c!rt#!kj&4*b=zk%{&6XEjyha;m+X~WrRmQsaiiO&3{4v@YQ}(g|Y(UxW2lz z@4EdHhzc*dC11uKjyk(80lubvd*kvGa%PZ7B2Iw_2GL=f_PcR^lZHu>c%e0q83i}O zj4}7jJ22rOtE+l7uK@jDs{PWM=vT|nY9`~U$M#A-Rn_I%UCu#M5F|{)c=!FQ|Nak*4suo(; zSNnXd-IMJ_f|Am{8eyauMxtQ=sHrH!Vu%DOTs|EJ(KL)I$(Se$GT=_AFtf-2KjHg* zGe}N4k%BQ12#+la7teRIWhfz1s24>jqRmVo5j%b6>Hc_Yz;EU0h5w4f8(jXPC;VD1 z&u>NDKvjzdovDJZB4#dhAW@;L`8z6gdnpea0hHpwA-UdE{?piwjM+g|q%p}Zef!6+ zfA``hO*q^!&vb_)c?PqP;tm0X5DI-|5&)}rV)WiCIaz&Xw^d5jm2i9TA0fYXXW4om zgZ|gmO+sies1HNZ30Lo2X@XbQwZkDVvzaSAz>J7Xfw&GB#WZj~$Qm+RTwK5`AbklQ zOu&jyf5Z())$x~J7H626O^HC^n&=L)?v)b9>c-Z6a#=Ezw=drR=1+h8;G>s!4%s1R zKJ4x0RYKmp-22M|80<~VUv&k(B^lsJk1pl-C2!w*?VK1imTH=I<8D7) zUFk51$YQa^;B+@DjthY(yqH~3{yjFlb^mYi`tgu%VsKX#yd0zdvk@IXLm2?bL+bg~ z`{NPcdNTMqURVI+d70)C2;Od1n~Lsj=A%o$#~nZSeCfQKx-I!k#b;XB)1sfPTrUj& zrPb@;SuycK&b;atgRqDini#3={A><10ytEhCRC8j936u1Ty78}x!Ns@Rte+D2yBrilOYz$>54%5E+=J!~80S zT2P6}=@8fA7=@~Gmuk+~mdyd*ekD#2e+BOKVCXB_%!~Dp&g)ZJ(6l44zq@Fj5AzR; zFVF-{U?K)!8EiTL03ZNKL_t(&5R_-e@RW z@3`&h8TW>2jK}fl30A*_7O~KFEkW}i-rOhaMcmqsE|lU=)&VJ!+C^K`cIsMbS$yl` z>%6*9KhMtnHmDJ6$`A^g$l5nvxK>f7d|mPJGwSS%TY9#T{@*h*^t8bjDF6Gof9-EC z@j;G~XF41Ji5de;x>nm0u0iu3WR)<1fiq#kg)N5C&1ezrYT_Bl?haa{2(COo zHSjl7uw^@F>1!h2Kuis9W5hap+dwEqRUtGp10bRj|6s`n4D!y0AAJ7pSMPrG;%<*u zGh~4;u&m2sW&njq-Lxnqv*96L+;GAO07iFc3v8wtZT37f2l~&n?4G$C0`9|dHIWpj ze~A}QgR_c2aQaF&=}q(8HY(jFh&?qouhT|ELU*&pE#5wL)8|M_s3;TAg*fp_?F848 zUE%3K_BcweSS{pC{dFS`cE2L8#&yLXkbsI8haW+jV2*J&U0qGPy$*wD^0M!U8Qsm@ z=ybP|!zDs2%JZzuxcFQf5sYE6VXZ=1*)AAHdcOY)bu#VqfFVqh)-0z!QkL zCI>uZ007AF1OEJf|MKFK_ju4B{&9D$X}IH$-}CmFOnU%uQ=7#s$jt!r5=P2EXDBiB zr3>d~POtImLI9=Y*FG~4SZRD3jzIASsuV+Pu>=x;sKIMSWWT1e-?EHtnCS>;@zO;* zmE-u1Pfn=l7+b81jLC^a&!jL;#n{EDk#o1=#5bDX6;qz8<8r+{P^fiCqil+>zxj~! z3=gA=7T1b?js(tHKX>@~&CAcUcz!ECS9#rO9%_DR0%i?jt*Qf{?i9Mc1tJot03eWr zPDTJvP^(LD5yU>x?fwBGE}8;d1YlahU@5~ezFH2NgetJZ_}cL6%w8>fwtrZi#1xz>2! zq7ipU)$12I35EAlTuT?5r;xAv{RYEa<)F+ z^XDVVPYr%9O{@!+hXBwb0;ND;mO$HYHxq|l63nk0>JFX8X@84p4^VyCxi3;U zp6OIVV1?VdRdgGZw-Qrvc`le^UGR(jAT z13&}`s2WB<#OhQpngY_L#vfNXqtcHijSR!k-OgOOz(}Vu&US(@K~e2RTH`b7@}@a% znTjuzQ&QR!b7HHu9P1C2qE5TJdzI%%WP~ItBEbmMkM*xL?3Ek9^otkiH~O>Xjao~o zV%tAssg}Yz@3{GJRGOcRKuG`=Aw=H&Oj6986xDWgceDh3;Ln+&t68Ier(E)^8cA{& zeYX4bi_bp!E^Yc3>kGom^b6WBWda zr$jn}#X8qEQ_|rkCJFoN-R(Qq!-Uxj`p*mVjFQbDGYkxLh9Z?Y9A4n&h+L|kL-+5@ zEIbijq5(>D9D1OM|2O56=ZuHD-^lUcMGCg~)-v8MUl?K;m zm=Vaz_fHQWQ?CI4^=&G)*t36|7f8vE-}d=w5T0^)l-vF5?DKEFC7lpvoV7C?4MG{X z0uT_1l0{`u=y-j5t!YeYRFz249E7Vu^&chxscQi>`$ajsSsuN5$4LtY+`w>%*9CY6 z4L051`tPQTzPaQ0SDyW`?jrZUN*?bO+t2q20LOk$JpS++<#nL{lb-jOYfp6l4^?^o znztp!{8E7G$X?%-H3Th*7?YAtbHkti{1;Ep-{0TnL(cS+(yQ;G1I9h3J@yN186$~? zJB4bL@Xo1YWhhWMR;pAJ{MwArTA^`$u9?D)*@4i6fz=csT|EUH^j_;LJ5XGR`Ue43 z343^vLsss~5ChgfH_`|oNn9ie6k_5G5(}XRD;(i2y6$2XdptSvsrLche*f5e0RRTd zngYEcQDS~IFH43^X@sVT1Q1nhn1JMM&HA@lew8xGZ{>02DaAg(llyPmb@Zyx9IK9c&Q+=~P)fOOor` zo2%RFG$I3#Q2cY5J!g8>$baC0=Z$XSnas|}ZF3YNv_`fRBGZ{Z-w^LK~8 zjotW6J8DDt&etT8ZJ#;Vb^kuFZl#TAc9~A<$W^_SyYh7l` ziv@1dh?@c_#}1nJmU9f$zm?z08x%Rg8X`g*eJSWu3W@+w);NE{5pgR{Kqavn7+AFn zI9`}tDN4nNW+7+}P&^G->__a=$De)h+2+XlL-337GwcacZDt|SUw%Hk)1A`u2Mhdm*5gJ=aQ%;aDIN?ax-|VlRUGJ~p zKrSBaoR^$4Eej3eN+VoRqFc$Z2^d)Y{!8p{&3FYEn1u#pAa)^w1yTnIlAxe}(n5}_ z=RuJHP`KO5P_*qSe0Mb5=0$Q|lB8ib9+pEEUOj*3kN^AM_s`#11eq|cv^|+HA$3iA z%+Oa!g@cvzhYoYV+#R;SGA%P_+TzPh&*2e7D;5t}P4875oahvXAXu_nKZ@^9^Jwqh zSNrprdFFV6ZeR4a`1Yztln(tr@`guOea|x=%U#pXwe?Js;%pq6JEVj(O#9vL`g$67 zUb7Kp(k=LB!;gz_Z`2>kvKTu%2_j~41qrZ*V$fZ5%tN(t?%)2j376aG{x8MKUbYmU zANKmRJ_7Ira@6uD0pK1S{xFCaK77sNpLhQHr(IreIuhLOiD!S*dU##I;E8u#b`*Q+ zI3MY}*4qm-q|{(N0Ag@Jce_{L&;R-V|8*E&To1d$kA@_NAD3a2VMxP>{WZ+6%i<;k z77DE(@z~#_Ez{#v04=bnXZwkkmDct$0O}2F{wd}Au-oaG`j2{EstsqJ5}w=k5Ru3k zEMcT=zChs-yb2l&cAz+}L?opIr4mDy1zAP1yGSIq?CcI}$Btj(d7hn<%g%p&X*zAR zrDe40Pj#4=d9j(Ekr+_`WgNP#RUPNJM3}4) zP^AN6pvL)bE`fo)WVl=Fy*PhdH<~nYD8)=@%K>}&`121x|Ms)t3Pvzt$$|c1xw?N> z;2NaI<(%lAcC_5t$ByGH+K9i{{*~^VvmcJG52xgH4=ewgK%j*3>e9U{81C z#plIxrdjdB5BP)ty17x^fHYbGSdr$|xqt+6XxeMkuUF?E6CoIO0GF__uzClf^McAMQ6GSlW@{-H zxr!^#>VVe=V5}l_{L_gjn+6|cp5Cm!-m&d%m7**-c`f%qP*#%kqcY&3(dWr@tRyQ( z`_uj9_z|x&92ZSOXRp2I0mt$*kN!Wc?P<{eX?^1p9YO?8yZ)(#vEc?LFHCjCy=Ic} zknM-Rz53hL52~`e8uNg=oyjl{>1wyfG{LXo27?$q5pF_}$m9sX1zH^ciJ=^@*2B%AM$^vcy z!vX*aFo?JS?xZTH!3f_a=fuTVB~^q0+`=9;(>kmHv-btiZ%c}MVNt#aMjhtEf~3g&`(OS(rD6BMF2Bl{^p*HH_%P_W!?eeeVdOk7 zZb?URSBSO%*Pxl{HF+m#fR2Ly%2n82-x^;#B8bCabs}n}hF}LmZ{{h;zpmD9BueZ+ z+*0zHfyH`Jn^z4b5J{wgT9oDCw#RM z)**F$cyX~`fX7(>tiJ#Bo8AJ@jUmBGIjNAO807l)I_;EzF@k-4$?k@n1Idd}+yo9Y zXNG4%P4ZRgaTuOJ^o1~R0V1x}i7XZU*MrQ7%%Y(QJ3wzGVPOYa_r?O!xAvdbPZv!~ zUa0gWSMS_>^>2Up@QY7gWyhd*nMvT{H-zyBJZz=r-o(oNmmz4HB==f&*6 zi1*ENh(R<%krN{7mx2D>jjSQpg{sDi?w{pxE$I0y9(XbcxqNv~(Yw{;cM79!PF{BR z|HTf4P7ZA7Uy#Oezu#S7r!-L{dyt8V8=cwA+`Pncl&HjF1SncRwwT{=0b+SZC1NVi zJRaEfWnByw{aF-eXL0X?V0Zx5fWQagMRllt8Wz{Cii@|N=su5USN|tZerht#Lv17L z_HnM_&6RDd-CqA-xx~(Kv1u29{w2};spTH8p>y?^}SmTF!|BAvS}m37~`G;our8S<5a%6pcG0KW2QE zN~#{7L3IpjAXyua2nmp?oG%9+fE8=UAyOib<0c6-Uh65-LnX2ol#yUJZ6q=YqsZ3U zoW}?R{b*^GPym&r6U>rfHV@a|nyDZTgVo2EA}T7z<>ZwWFVU0Nw`zmXQ6jGgWfd3u zTU9EtF#y16AXNp9AHMrh<-KfxLKLbfwje1w7r_xV=sIgozS)Qk1F)R;n>L)=1>`IWIcm@5l)bl9(Q^acPINr?Z*tp> zOD_4?plv)4?roikjMc5K`%yZ_l1)1wE~~;G^%3W>M)wU{%ZplmGhCfwL8NML${Z4? z!gJ2bqyr@(h{7nn*KgmqFo6;QPZgFkVS26mXV1R+_N(b?a0LZ9W65sWmYK*3hcGE4 zuZT!cpjijGLgy@DoMaONiUyIzQ?Kh+^BPCdj@PreU9%qJ+j+if`j1|U27xCff$kLS z_WS*_tKF3tkcq`$WH#nZ^GK=?9G(g**=#)%IkNu}MmMKuY*4FI zoW8hOu)QZHQAS8cv9L;=HiTC%5fc_!hnA5Sx7qUSIsE=3(eDy|MPRVZI6R)gh)jk+ zNG~BBk@>4Qua;+*WmVv2KXIkA3$=IL{c*oSun}TOz5J4|`O|R7BSFz?DEP~b4ozYA z^P<9&f=!CbPn9w2bwC=fZ=Vg*l+plA#cbxtZZvZ`oC3By(n3T$epzT$SqOwt-0KcQ zl=HN%rm_nbWDAJbAayxft>v#%>Z<;37ZlO_OY zJw^&uBak73Dme&D#3SHrE@s~vpVXEp{hTK9wS@b7eit~I3b|dq+KtO$_66dQ1eGEO zt*__I+&e~WZ&ZFBRmpGVb<3L^2R~QQY6P%4IfD?WYy|>M!A5DWfJ91cu0NxLO0iG4 z*|-~*C1>Zb9~QIS&HkG|d^zn$9brT^Ulw1?%}NF$VJiAW3P2A%L3ePsB`zlda4X$t zm(8JWmVRhmrBsfC zOi*%3pQ5Pr7j++(b{^Kp79wv!3Aokj(j$VJ5p$Jpx7uR?KrL220CJj0MN2#YQDJ<< zv@}Jzlt&eLq5UeNaiTj&c&NsULR3LYQ65!`QM(|RG&QNJ`(Sx?i2DLqohmi(NWkFk zXo{{A&38~l^SI|nZyBP5~fH|lhNxM}MobdrPPfa>1*^CO(7SC7DZ$A6_ z;};*^xPS_GEQ>F5arhC8HHS&-V%OaQ8LI_m z1O3k_;Of4>_I0S$cl+t;_IiJ#nlKaDV2kJ3^TOnmIPPEs}+<>U9;CKKwqI9?Ux z`8yscKVi(_J%!EmUiuu~B&i&Vnk0?mZnwL-8mB!0NJ0PENweVjgc}f9t_eV#;ef!B zoGzYJ9*5N)S!{9b*WTMl+9}+%6(}&G8g4d(L0vufkNRlj&#q-Rjf1N#ukziGDNRX7?5~nj@{%pn&D0XyJ+gqYv)YRk zx19D@HS3?o2~@Rxua@pUZjuI|x-Ot(BJL~(%?_~kxuglJo6T0o50zD2u7C&CPYp!i z`t+K8-HLCagqyJ@5f@QO03-uY+6=I6E5$IiKK9JqF30@wx0_80r+?JT%5@S^7)=i; zL~te=53df(!4!!=D#^ec;v(%;bX-Okr`4I?j)aDbo7r2~5Pp+J{*}s^iI_x;NT3z( zJcdD_><22z3w0$SDxf3+Yetb{&4{F+jUjBj-hKA<#~*+4-okL9ff=%io0!pEXyN*Y zLMBOw2as8}8x|!&sXanoJE+kAxstss5~g(k(@Cp)vanHLg&hj~e`WCkw52`a(x17k)1MblrEtU=3; z;(Z@n(M3Nbt(UT~*smwF!0D0eH@oSeP+i=dKD~4E*ZC`YbZaePa>on|1(Em->(DG23>4GjnOTGP?ZtxqKcr>5Dr5U za5?0^{>NV(@9w6QbjWvp_r2*L)3v4v`@QCQusQoeT3#$N14yf1YB*2jnn7`I^=1dq zCN74gaBK%S*0fT>FTZH+Lk946Mv7>--mC&hIiEG!(dkHZl?P(8s0u~Vh&(Kc`Y=T} z8&ybHPEd{ZT7J}l6ipB$cs5Efi@6v704@4Wzu?w+L2%uC-7^r^+fIZ`Ee~eoJ#S7? z^W9xuGMNCVmgK4;!jr}Ic1z#5pVL~-W2Js4{WBZG}E^x1j%CsAI; zJEF$YH9DX$bEu?onk_qgdgu0=KmFnTPd?&^!welp67%ddxFvd}_F12W;A#z*oX)ly zfIgE}(7(;hnLfKMw47~bHqsGkFFoL<7gSFMtY@$uxz)-EgzAXv#>@3J0cR7hcyj=2 z1>f_&2wn>Fu%Zf3vR7 z+;{&;$qxEoWE>j$%kQo3`~~;kbzg;#I_4jO{!!NGmIu2K*I)egDd_*r${V5opA;go z?#65m>g91sHMVnA5v0&@4=H{B_a89GZlBV)mmwWS$B!9lx*DM)_E&0o@SJJx4skdo zGUl@8>FUD@Hx__G=O^u&p8uyGh9lOXMg$~{3Y6>1?`6f_V$eksN>?+&2vC51@h)a0 z4ldfa5(+BaP0e1B>b6zjg+h^%YJ$6Sp+m&j)DtJ}HT^5teANMn^KbI}JPGYb?Pka^ zHQwTIx8y^n?G#Yeq%P_$^7>86CYIo=jo?v@f9NU45hK5qf1Yw0%q%rWZx5V#dc%oV zj~3h|v``(2M6#S>2I%aQ6sRnR!}RX-=~th={P=}TFhUf0Damp34Ccc4nO1Uw+KOZ8 z`=l2VV}(==V*-dx>|lCU_kJAk>kGl3>> zB?X4a;$@NQE0bPwsUn*f#?KtQpJ0ysz(9`YLka;-=voAZQ1ldD|7eldZRTVsx<1yO zsK`_RRMiBBW#Ka4y#Ko||JUz-_xZBFdpI~;yohGFOK^e`w?J93Opway2mnXW?tN~<=JwP2a3NF9Tr-DD*@4Dc$^oipJHfe+ii=lV{`s&lc3j#9=ZJ- zjmcvbr(2P!Jm-I=fwTlJi-?M({dje?zq(4p=tN1cr($Mwv#`~XW+q39X0In74aKs5 zQpB-czpLvWy2*FGl@D~{;cmVS*x5||kGc5aJOJm)6MfuISt#y#B9G?!+d0qAZz@l^ z<7wrWwwk>`sRTd@x?(l52UCNPqEbX>Mg*0=`tHZS|0Rt(xfut4tBw1a2m zJkc`T7ZMzxXg#cvMdpzCPJvFhG9g0!`8o*UsdV+1H(vY$A^VNCFV~SqsOclze|x^-vg#H6G`fcim0Qkm&@*WsfSBR;ZzWO~)WUbUx*eVN^o&wZ$S}D+5T3>fcXrU|0XE`Ko%~!xC0~BADCf1P968(JK z=gyXU^vk_4<1NvJ|I#H+XNbr!3~88TcQx*>$6;~^;bt+EVpjD3;lU*Y-Pm{o>&RDu z@>I$yAGWTlN8VWtvKX*kx!vc6Tb@*SQk|S?I!_;Vwx-7wd3+v#3+n$z-o2Fpo{s)6 zIr#uMZ~2OcKGdj7BlTu-m_LaAf8{_*L6>SC?FKQMsVbxdk%}lFG>l1>SMv{l`{CyH zYPTN&LDFHzdBk3jMoc>_*BBS(1@81E+#`z&QFX(iw=asg`pm$k0k)4zI0UiHuHxt4 z3??M1>hs73mFNP8oB=jE9?nogqm42R| z%1@i$zwXuWTltwwKOG*2VB{Ru>HUG$%|nYCP>K&B5m~Slpr&&9+7uCrEn**k@!^M` zz8rQz=C8}*X0+@%i&?p@Di_O!qs7s@fsV~usj&WOAmLp651SvtdcdwfZFY$8esB#b z!f&2k?XJgRL`Ed7Qa2p#vfBWI6EGEOIJRJ^A7~af1gI*Nj1^s7`knEvO zXzeV$Sk?c<`(Gls$g5i=YUAT`y|*|kmL4t3B4eUpdUo^0AHMnM%g<+lC)_QrCQjr- zwhWPE;rbs+na0P;ped?ZWX;Lo^3OqmRN{TZ|A!XNKQwbUw@eSeD5qt*37xF$Mzoss zxyU~##1p}Qgx0Ao5Y?kOzjbwf(qwsC!p0EYK*4T=$au8>Hy#jw%Ro72$6NE3eR=xbei%A#Pp65XK!$J7y5d~*%ffczHsiU z?z5IIUnAoN#f$TxzB~ag9BBA9ykzGwuIk>2=cj!sGaiEWSc#MY%zw_OscS=>cp0K}0&ag~kn3owljTm5|vM5L*8+^DN4JC~as-ng; z1d{6Li$b=em4KYZ??0L>{WUS@stmI4j^q>}LNs%5(Qs30cCaqKH>#~ts6zxuVe|(H z)kyWo;+_U$1=4^}e;G7ZS6(V%OY6H+(Uc0JcggKf* z6#+Pk9mM;eVt-Q3L7_|v=pq;dc|IIo9V}xIh+s@mbxDE+4i=HGI1-3fzviObPqgZ;*mp*Gqp=d0*t#?N)Y%%Pc9+q{$_3JK` zUf<4*3rZ_ZXLhQ=I(d4nup5-MVQqKe=3;c=`>4Wre^@ezBc*Lrwc}L8T8)t`<1EmK zMpXg{Ly-TtyNVb*NrH&E8>p(5{L`;re(?EwH}94V-Z|rNFd!{=PO5mN2`lMAip*Y& zc?^!QW;a|H%i7Lv#LC!u_qihGZqN!p$!ajSk zXCo8~V1~S4nSEJ=9AFC9P?>usvTzC4f54qNl3|&<(KG1cmOKY#CSd|+p$ZBwA{2_x z3grb3SoN%+z&j;;53@pma*cgX=w7pF0mCrRMMs@;-aUWz)t`R<;iA_=DAkVqX1rTs+ffSdI^#@0hdu!o1Ku@&E{3-7SP1H_#L`&j5uU za*`L(f&_&YvyrGt4$jb#7iy$_pX_D^&Xmv;`2{6W(IcIpi%W?|&)2dx;gO}^g*QU) z$pczUOSss!O;(WzVF}h1NJ`^0?)PaLkw!@qYw$VYW=_v=w-E9WL3OnaD{X9BKz_Q9 zm03~FMgz&segy_Q-^##STfW}44%LyrYhBuH*>_sTu4VnlG70=U#O0#O-A2xa?l!*Dd@F zkN98y}csc$=n5{ryWY)~mwZU$=rE|f_rZHFKKb4C^D7zP3*3;1NIn|-wi(ia{_98JM{ z(f?x`dCv`xxpxyQdZvYsuIYZ5{(95>zB*rTC7$iw>y{@~)r+E+1f)%cP7X-(eE9GG z`mf#1@M8a77GLgcp8RfyVH$=JyDKHJ+o_u?SzK>(R3=SvUjQdSMh1Ws%6*3f{y&22 zeZ*ebLF+l(y91%q9d?YO^&~zf3oSTLj!eL=r%{pV1J|>k+$Mo3Ry^*5C7j%l}$WEzs{?-B~U$ zI~=}FHRC?caepKhc8tzkGu4-te3-x3iB@jt@ zb|Ww-5&*vQ{>>L(e|r0T7{Xhw+`;&wl^SXJ3DvZt!Xe8!Rl-3^~)X!%}_2h)@quNP|m$A~J%(X&zxGk=?7*9$^#ftL#B!{A=qUn{sKoU-Cq_pC9Id zAAZtu>8Tf2G>eJV0TC4u_n73OLmGFxVVcrz5*Z|DNQxbW;fNI!Om(f*DIb1To59-( zVExnkwwHyvLH~N}mvye5Griw*SgPKi>(A|@w`%nPbov%bKQkXo1G)*AIKJi0TeNAw zV~*d;?R;zHt>EupP#4&m@KbLDLz?dLovNs+FU#Nl^4Hzf`0fYScEEfG{eBszVRwaT zf@kcm)r~V@MmXW>Y#bZ_I!^%EoaVhky=MyQf30^n8KTGf*wnMK3B_hDTNz+2v2F`; zC}5)h3GplzN1!SyV6~u04GsVh(@I20t+2!h)!N^Pv2dS7)IHj52r8jYNdll)a=mkH z+)mnK*SoWYB`lG!Q12b?=Dc_qJT(YXAW-(%8ZJcRoHrZdM0fD`!s9%tZ+|A&gSq?T zCo9!U{3m_L>y)>uYj_Lgk*7c_8{VFWYnPTDxOyK6AQYXmrBNlNh4b?l?|$*k$Iss% zOffH57Ub+s*kWcb&>%!;Se+<)ZLFj67tf6Cu{c{VXz)e4CDYJDYV_AGz%oi~Oo#GnV49vx|BeGgqWVkBMKju!);rGv= z)-UxH#?R343;O)NhSts)7_xHw$7f#J$K08Q5v1iplaSp#$#8S?`5%7&={H~N4nMr2 zizp;#x5cxI8@;3!KqYxaA^3MnVdgIm;-Clmr!Ahd=b1KJUg!(*VnO@k?sS+TGNOU* z!QNJr3wQedtOlh=&;)l z(>U(-!#E)g4w^d&cMG>wv%*Eiy3AGqplikdWA9Cy9!2uGCB^ODls=70aPJkkv&Z+p;{(*PuJ=sqXJnu%+pQMKfw=aNa_TY9 zJa~M4PiEiKzdq%W`qUFB>i5H@&IhLm)SM|L2yTCS_0!*fy13dvC<%}%@_Uusz)G0TFuj0P2Z=nvQ*@1A?Fn3$FFeHiTvnh$A;d zi$w;gEk`%14_^DE%dS$1#^M{N2#|nEd{@0(TYdvjAg)!y5Emp$3tyxP1nNSSL{BO* zxFxsT^!rh17ZosT{8*!W9`SlR?9d*Kk=tOpy|rv~g+df*P?44-VfDt}ZMpB^{#bXQ zKN)`h|4KQ|3VcA*jafEW83DAZ|Iy@sM0jXQ$ra}L;>E=m-+lVQ=eum6pcsnLg8RSF ztVa64YsSI4rn<98YEBUXON>L`wPnHjvJS&#yuoBcJA8W0v96mUyKJ(piT2T1Q}>oM zq~|ZMo?Tz+h{EdmQ_O9$aC;$DT-=4GG|*a3TMwTfxEE9coDwksk?WTz4HLJ}UU8xb z$nf~DBGKGmwj`;H$gbeZlr~c2tb>_ZaU`NV$L*L)&hF#&vv2<6-#-2N>+}r2y`qaG zg-x)@&ER2*AeP1G;E-P@HKWg!tUg#1{{)X5m)5AdODd}=3RlrQ6A-r9p-@ST0FqPT2QY);Zg7F zp3(3#pYM6UceQ@P)N;1w`||*-bpMY!=pJ+N!)tyw%BnYMLNd3J#5SnNan4cmD7SM_kWHAIr zyiOtrs)&CXJ3E!+4~<|K|z5zN(o1KFWJq*T$tEY%PaKnl$Hvx zws2_0I;mC+5udY0;>7jMs!+e|Z(RS>iUDw;`J|&>KHptFzZ^EmhD@r+luIdY1y(>R zT`G^iA)vq4yuXAI?u>N5kr}sgf;vzH7L@;Ffgr*FNLHIb-Lg9EUJE&AjfZ8^ZX6Cy zRkCQr|5B2Met-Agi!Xlo?$fWo9In!<2^km%+}>h(HKjDVn}@n(4laXK>YYXq2^x$M z^$VNW(7%uGD z0-$Ghn-g1ZvoF1s^0qb%)x=qZR*|$BciUkz4&#=UT_e)@x>buyc&gEBbSAr1z<$Ws zcvsg-f>};pMuV$`b@;xHpY*Z2a97?Dn@1L|Y+@01W166X6? zw{}}#je0!Numcdz`5CIrvu^n0+<1Fs77G7#1A_$`Nj92ee&hC>~P~Hjl*<B!oY)zs4~6)I;X9T zdgtE8>DK8Z>nF6+t=S`IzoI7aA31!44l;7eO1(0ku8$u8#dVV|pY5)$pAB0SRMO7^ z=IjwKYt>;#X>JBgaO0BO$_X=iVUYhY*WXwOCvs|(|13L2f}@XRv7id(q*XR{mxpk6X)up(|=oqWu_q`>+l=w!tBMnZtfDJ1cvvtjnU z)_;D>{h2E#uAb*|ow_kuC?ErK=J|Q^b@O?eDES`eW*qOR&qTMzgca?ra zIjz@Uckk3SL^HuXI1j+1%iM|6tf>8k=emA$<@qeuPf}*Q{)VFN{kK2qf_(DTt|D$G ziAhypK%)Epx7%O->$i)mi=7Sv?8h>0hhYmHu-TwY7)I(q9n3sM%1DoxuQ($$5^CQ6 zy5s!sG6&ar^1zoS0w@=*ux2vAVdTK6&kH}7%v#G9Gq8Y?T4@01mYcXubpbfj56@g8 z40}P+K}A#%k#xq!h-9Eb3^*b{UnP`0TeMRmXfW})3k2?YpRKeoip9_(>wLfudNqIk zveMSSBNh0+$k6?DOQnJrfJ&z;2%4CKa*0pB`slMSuXT$e&|&!fc2D2BOQivaCx2c3m3FRIKn)K`Kzw(#yS%>I?X&=;`hdvo z%`~Hbmt#LA09G;4*GL{raoVzx!Htn@nUUAQ8t5)nT*Q@4XW;Fr$CEYgm6Gdly~I zX$BUS?4j?s;#QjOKZ8cM5Qc~<48aY;Fqg*T2O|>bA?*mNW#ITNKd3x%dzeqXKY8g7 z(6v0I)jpI`8aA7Y?YO;=l%PsTrTVO56ao00XASFM>t(GpuwDK(|i)T{R z0gG|r4Vzds_qGqI)0u$pZe&IRhuc$D>bT*Tj9~SQ zT9BVKFWO)SZ+3u?0U97jaCuj>z676CDS*9-9L<|o7O!4X0(wI{(h0<=*Yx#GFDWtr zmEzwV5Fba3L&|#NW$$HAxC%rDu#hH8-Y~1rR=d=59Vi=>8b;b(`|+$ z2^<)brok~e5DCg0k_2Mz!)$u#1Dxyra5zB?eig2dgub-iBD)VVL5*8 zJ7Z7bu7e)*UT61IbmYylf`jaKo|>)p)E3td-r+!=D66CA04d_I{tjo}2}9TI-tp`Q zUK|Gs@71X>FUh$PkudB_ZS#HuFPqFgr}Ud=RGa19Pzy`GO~W7}&dA;ilQ4MYZ~pCv zFTVXqH;CM=x05+_y3M3Aa3F;cArg{DN-+>VtL)nr)B*sOIGu?4KP?7?lVEhxyPsBM zkutw8ERWMHi}NjnC=}+I^l{jXSKI6NUg#htQg{{QVmX@|JcF*{N|)-^Ze)QM!ePZ} zq!*g8l71G_7)b$Of)YHUv;y%)h+cbG(|ffML1;7pR@7DF7GfuD=~yDiJU}{Q`;s&y z5Sr3$+3VHC*MIxrtM9*+%gwFPDDGhKQoNYDk*-j!kqDF!f?@*^5E16=2D(^r7I>y* zc!o`urz!y0{^Uey$#3zVtxxFKfgvhc|Xrbni>Le|`0S zJKg_!*X}xcJbw=L`s+P*J%0|~U(@|ZIbi`f`MQrM!D?SVIY*Z7&Z7SZmSa)j|1Xaz zPaI}YO_JKO;kXFk@F~Fu-grm%alEhD5fyMOg!&Y zYS@F9^DQR8YQyUgeEh#E-H$prE99E2z}_R^oIi2L3l#Tq4pUx9L_IWHe3UUmj@c}M zRd~T7?$-au>6ZWp6JU@eLUJP_5E%w>k%G|MWd%f3!yBk>x1oHzXStE9>Ldi|wQd1xLBD4qq7x=;k9v&w3_dX7I zeTvQhO3NyD@Y5{4^y9GTKC4jCe-0a=sWe!v*j#O&zkH@cWm$7W3vjLIpONz`Quj93 ze-sZ4y`cXZ^=m{CMqYpdMvmJ^0uXAFP~-HxpWZ)6tRCf@tjHO>nH9_;Pm`vUhC!T> z3pN)U#?9^Re!RZ?;>Yhk{pL&THre4KrLYDn6oD~fdTV?^usK)sZoC{C001BWNkl^dEA96?pN;e(VJR+~_16=E0ae)6&ccw4Pp}*f>9P z?-ZWzoXUUY;znvcRO@4k06Oe0(>M;B?J$f~4ex#eEyUM*^iRNjc5>@E`+II#>-QtB zb`c(<=Ywt@CD?jb<;~vx=}C28oog1Lhd1^H`|{(U|2dAG2Y}jhozyemw{MSY*6#CT z{Qmz$^o1ZuZLNXS&XZFpE=@#96cZhU28e`3L?I#t z;zis`1n5GndrgaHVZVhnc3}k|ZQtxv>)wt{GTU^!w}K&*iAh9N#H5BmS5cr-n!L@K zf4Dg;fcub!=&nj;q3ZNcXWBaK$(d^oJ9rxY_BQFRo`*igBW0443Yte&^cOFIDUTA; zNlOm6d{s&rhP2-of@wRJ{SDOK`{I)?zWMCp1+YOWD8^h^O0q(aH06#U1g{X&EBY5o zHA~j^mVE*Z3HEvd_MBbI%R7MnJ(@Wb8?XQrMzWH+|5qqzoHZjD=Nt?5 znIcz0sQ-h#copx*Fy5*rI;WB)>5w*r-Iht8?LPhf+i!mSQLoagf&xH-w-c7h5-wOm z(wu{91qeh)AnI&X{SnPw%nNPr+2Gmp z2Aj!ve&;JN+GXKgTZDLKJ38aRveNW-S9Blmix7AxrSF<{exxK+kp@kh?bVeIm@;+fCK{W-1sZzuSjWz~oJc{tJFy1be0|DdWz!O%a!^!-;TXJ^Lw5e^Mf`*dH4 zWVN7xDm7dtLgCbi-+#OP^{1P0b0tH{H{6dl4!XHS8nD}Rz0Rh9cJDl^XYr(7#=g#0Q`@v1iICA|jef-h<|DA_GwB2@?E-BW^?Uu0ooJ=mee{Z3YFS_W zFfshT`v1JP(|6Ia4v&cdEK}ZG>?G0PPQ&QWKYsbce|)!n1|O=EOfgy!D^lHCoD5CF z98ySvjT~!M=lAIU@IjAfIJ+-q=#SZ}nCt7?zuvE5G)&1#NKAKw;_~Y1`sIt=rDlMD zRo%apf>KBhLcr96)V{I(G-A(!NU++_KiwtN>@dQbHGn}6By;$(g!a^{|B}qxoiCn! ztd5lHXD5P8VjKigti+~M+zhT4+t0uI`s*LRAD*S(CS<~al0#yF=M@Aq&5oSzcM z^Jf14lLtUP=~|>{(ny`*fFJ?GxY=H$aU8}CBn2-=c$-D>PdxQAk_c5=a*SP(jAmDo{c^LXXH@SNhwZ8Js z;Xa{pJa_%WkHfpQm~Zmy6P0(=XfrWa*US?gSb(%NbyO9X%}dghZ}Lz7_-T7Jyx8oD zlrr#kbRBg&VBBD{(^9NtOA|b$P-)dOPS+x)lpYg83QWs5EenB6NtJP1GselMZJz;;Vi1>wKh_M>I=j;2nkRq-o+eC^B5Ed zlhX)QfpbuZK+^!hD3VH^Xc;JMoOjEu)%$=tn==S$#C)}%VIUWDN4S8@`|QS+Jtqzx zi_Uad7NzM|EY^M+o53CUQD^j zW`Jj(et-7a```cPch?^PBQlXmV^{#3IYl0)O8M{ov=qeRCeZ~gL^+OvSu_p@QY$%s zUpJKHCIS$z6088#KG}W(P@~c6_DrKolFh~T>iN~hl~PfHU!lPEZaLWM6I_&H-aLPd zEUfzO%61>V@&%RYzc~pt8llMTrD4{LU8T800i@Jmq#63dV|!GH$L=a^buZ5=0I<)K z4r#l&xSeh}?d9t7^B=$a?Ax!l*PGi3?idpG8D(DpHKP&YNrWPz5!zM7GuE_U0olC> z4PKm?HlY~Ht(OcdwBoj)f0$Kz(5CxeuqGXFxK~D_Fy+?cVMQ+3Tl#vf|JoYR#Q=2o zaz6Gt^xw^-haCNX>>jb4mF?{+0D7COX$ZETakJH7q$E%*9DYDEuNl^w4-l5T5c5e~ z-LC3t5}!ZI(LTNA@HxUT^@|hv0oZYN9h9|;5l-W=GjHmC-9J~W`&3yroPKsKzaG5* zQ@Z~sr(yseIC&1P<4V=?fV&?tNAK30{bg(gZwE2(-HRM6G2q-K%~fN@u`FfSZq5AF z&#!*{>G$1s&_QgUragvRj2mdecBjQ;x|O_Pa`Bq})+1t$ZR)OK0i~V04Kg3=`0KsZ z*MF8#uv`YrihrOJ6*@MdbNK=KwhrQ7=NN-90<3ETBdDSIz_uT%zJJw+Xr@LwslXko z!%(x^VALc7c94PP){Fvo3vy2pO+tq{Z8=!hN(#1jDl=1>&`5}maOC~IWOq+#2rtd> z`;i(4{4jQ=w_e^N;9l$Amj5j}yt66=_O4&|cj;}d__N(PC&v6miaen_(^>p_rwk<= zA~|Q5>EeUuU;p^U2cINUAfXhPvjDX~O1~JV$*m};fgpq81po+f0fp{$OY%i10HAA# ze;|T}yx;5l=W^huJl`dAB{=vUA-~s;0`mgpZg=tg<+F=tn*x|Y1UaKj-bg>i4RB%A z;|Je=XuZw7&>S?H(Q8m}i+MGmR0kM1X*Jnl_5TScm|#K;MAB*fLsW|JU$SYFdJsbZ zn$+Ecw=-MjG!2)RpMCeuXWxG_KEK=>Ca0?GC+u&FKuc)nkyxRBL;SI&IjgnA+^q&b{Ozi|;cL-cd4;?i z#l=yp>P{$R+>GNU?Y6@>Xc{0|rv-r;@oVvavSS9HW#FpqKJ^S|mPz;f8RPZ(KzoQ9 zdR^WQ9_v@cqi#9+_7OE4WCDIngRd$kh))q)YyS}|B&T2ow)^; zv^Uk?r``rS*!+T8Z~((8U@(7mI2bDYOdUz`pp7qH7=m2>9LTLXUTPc@j z@7*1a0NmN@9@V|R{?lwZ=M5nLs>Q3d3#fb13HshrAmiv(F0P+{|F^F{{OrO2SCoRA zoN3G%d2fIW8VH0^(H=C|y}YS-oq7~;(i*IZ2v5iW>u=gxS|&+_0$#s~Ew2Onj0ctO zY$6~kyQ_<<7tb!PMp3vUdjTa+%oDB9y(;Uyc(}u`zzSL1&E3q4la5kC25>sPRHn;n z0jL>&1=egIk?Xg5ezFDxH>ddeLK;bE<#`6W5$lX00?057PTDkWuAY7U-FKh=_^n-E z>;)_kl{{g(nOGnxv5?SUK(O%qrmNGPLIh+Nr@5gz^W}U7Gq{A?d zmF;JP6y_7LI6~cm>7OLMx$?IW#v%!?9jq$J>v3b9UObjtW9I6<@BXb9#@oDW3?GCA zkK&FVbkpju2gJCZ*w`Qa_Fp#-!0|YqEvqMaz-jcy&)~83)^t$u^^IHYsf}j*OX`xi0gm| zg(+0x^)#GMc&QC`C;i-CHsPQx#03}BJe|^P2yKLpBLt+`ajW8>^7o$}0+DJhtost0 z7GGN2KzHIbCn7YXK&zy7%$7>Su}TOgA`;$%B5;SOqJS923!2i!Jd*`Z2gO}=84mO( z?tB&rn?N9qN7Z5Gw;9F70D%r+g^BE^iz!ir{U)#)%GWA)?+gz?v3D+{hs*GK|0PE? zpD-!BZh6OeT?tkW$HzYS6O~8rs0sjLZQ(6zl$cq-+lj0YPrKoEdNp1SUwrr3M_*pZ zh&=&d%5H`3;zo~bU)5(X{9Gsqw)d9a%1^(k)B66oOC9=OIW`B#;Aao4k6p7aObu(SmB|{!K`UWWF$ZP4OG<*G4ZwcNPY7PK5l< z%s((R&mV><0PQiGO`wV>v0)G$4nBOj-f7p|&B&BSL%}$F{LL3%{P@jqePIJ~h7d56 zDXS(Xy}8Lc3@!B*1*C`8pRGI12;eoXG0V*IIWZVNOK~rtvy|%cM29_2A&CD3l|`XggRsbqO@AVi1hmi(wpx z?QYm?M8v8`kdu)`&0+4|WUX1>f1o`f7OGrWH*9?e*IqH*K7eI;K2EJWgN3(Rc;<7* z0dOME!|5x}9=_-Of6#(}XMgVXjR)X#kajf=18TU82Fmp0A^8i4NWWJlU zEi3{^8h-un-~RVz^Uc*4*jtg3x3b@2BS<4IE>R|KFPLe_l$0o9a7R`ZSU?k*H%HDB z#ktmmwY43}_VD3r5`72jmxC2(LCh6MfWa9wQwJ_NhS7Av(i)9Sz^y`GTB-Vm(0_$f zPn8G`nKU)TCRQ$ND9D6%lGI(c_9VEF6c{K5Q9^|&sfcbwCb8R6Zr%1og23ETje2lU zV9~$I(kifuBfzN8V1y%q)82p1>2o+?$z^03!N~~~86cqdXPy8Wc%#h(X>W_OOxQj& za_|+xiOah;$QG)xo|8u#MptCL?zsHPrSe%KTK;W&T!?tx)NhWX(uAGpf15hB&05d0 zB`)5-tPUhmI8Lu3ZZ zOMhCQ7ghQ}tI~X;mYDO^dA&Ldj?Uc~L@yhZb|+7pJj;pR@OYajvxtp|kDx=OP9Rs3 zZmPQ3Y;O0(a!D7%Eq~MJ^2xU!fA-z=aEZOc99~dN%{AY;6{w5?DaC`lP+FwSYzJUR z6+oi$AgtuT`q~z?Bdxu3w8R0+gqDU}8^8(Q^ENjZ?ok;CGf1KgLy=r;k3rIQeEG?H z+ug=efLN3X(*!Rm;&;RoDgkDV{j~xZEQiC7!wiua%QNY8lR&^I5CaO`$fDI6-~sm| ze@ON9C#&aA-5{N;b3J(R=U1JEWM)nd!(gRYvCX(CId3j6Zl*nypZxI6m;d7jd2xB; z$a|&GF~^%UNC3OYeJu2ehnG)xSpe?RsI8&@9hCrgAmRtq{E66NA^Lx_!bM=E z0=8)3T|mG2ZU6J%e|@oi&g|1GPov6!&484!-HA_1gYDf5Bi%<}3U?+pK;EEab@0*d z;SP9#;!N@;3V?u0V+v|OzFG$x&re6%)1K(y0fBhqJ+@mh2+iNE@2x?(t82R8fSC@6 zEgoRi?4k^8V=F>9M2YISF9`xBxPZnz-9@w-vl-?QX=q#kh*NY9*ak(Z1`y^xWfqsx zf~Ul*AX8tbHishbH=CA^Z62v*obM}-P^}yuq7PcmtNI)4KCb%FtsnimuKBgMns>FM zv=F*Z9(wxitQ(^<`_db9p~7kbfMH0UZAc@?o15EV81!=c`~DX^!zW*V`1v;s! zb*6EH6?aooHTD>4I5*Bh5}LTU((x}CzJ4>W@i~ZR`E4G8?tiuNhD6vJ>wSKjs2LaO ztYvpMS8Ok~&tE=wviL@ZcADX@skt%4E+h#ZD>bFD&{hwh(VX7pcE{FaH9Vdf=AzysaIjN!#Z6VgNF zA2g=4rh%?m-(oMU%u6fLzk9Do3;&Tj!E2w_PqB8F_1Yb24gjgqF45yO4zJausgQ0C zQKSKB7`NLrZjlma3mxeU@2oboRqMZAPAl|}=IGli_>a;5vYRyzfur#}6`s4|^gA~e zPm3P!Qs>`={&D(=?yp(+U>BhN$xopFXyE=4eCws6!iQhnK0d0E$6S22>BE50f2lHa zXYc$aq?NCJ|NVdcFS&ScGbAY!Z(r@xcDva^5-u*qa zz8+N-QN0fYVsOy&K2Q4`m_$VYRiy|cBUn?soa8--6Y({jNe%(ho0PY@#5{(wXO3Pq z^)}k#lWYs&C9=4BJ#Bet|Le+qZ1raagXPHAhR-|2nTB5rP(*=&AASD8XJ38#@_pnW zbV*>r?ae-$kP1^Ug(4X<0bqDv*Ztvi$7hvfL;qoEsb6*1Eik3&i96??=yAg}vng>t zX9*Zx2N+l^8_KxbJimVa?D`oJpeP2*$k|IV7FdC}(!|XX+VIA1Z&u)-7dL|$VQ}*R z`c*P;z$4)o;ElA*TbAGGa6@CA&bvR9Ta;9NffT69H05C!#$lZHlev%EtwL|ggw62r zS6_bjx4&JycX?A_#RZxRta6yrO#lT2&YI$ZZ6qyRk|O(WFo1+oPSXa>dk%nmsqwz_aO9~@Rc*ll^Qu|MJ=Z(r@xb%o-@}E< zHBer8*Uabm`G-FN!H>#WAb#|M9;4Dl|6=iCm{Z5eL!W;YHy zqyfW-Vas7hcQ}}+VZyEGnw%qgh3MlAR($^*H4rLTpJjlir)Vpm?aCg<&tFOtXb;(h zLJugjT79;K&ieaW8RqYSrXi0Xn$toxWC&*Y3AL^8GjR82PmgwDn`O=Ii3pb#N}LOhG8PI^7Z-?l$FN)zPW!l zcwASz{1kJh?PIUk&4bF>z0KDCYt?*iC;6j^6CP3C%4WDk($Btu1PCjpDFs7K+77q* zCJpw%=kI;~^{3CSQ*mSi1y-=%PiAf=V5G-t^|@;3Dyte&R)BV1I+zj50%7JSZ2!0B zUbTQ5a@IR^^(_fEx>>ih;x3LPq**EHVz_?!{POt~6i#?SDHZ)!09=qF4X&ws)$)6B z8iMJcR!|%)q4}m8JjN{8Fb(1j4O=7psct`QSlWgl0G*v3phy2`5`#x@vpZCi3PjAy z1R(LFZ@&5V-~YCKad|soDkiE%SoUHp#m$y+u7hO=ryp?wbVl~yLeKExmT4KKSlQFF zS*B04Y!MP+?p`X_C(J$a1e<#e1!gr-I80eC+V|u_Uk} zV(QIlzPf5v)$-zAcW7SozQ;9k?`-Lg!N-;d2mohv{|_k(V0hc*Xi)A#Bu|C8@6kv_ z(|2^^j$ZvK0M-Lb#Mj7Cv`PcV0m4Nkk%jy6kN^4i?ZvRUxK`2Wce~l7OI6um+@ZLP z6H9TmWaceDNQCf27TefFWCgDm4Sfa0KppzX1YC8}jS;_B=P!V}o=?G8r?bp0($e-W zVgm%i=3>-HKYW3c2fvQl9cDhJ_N>`-qpb@B6a|Q&lITDG0)Yv;=P5Tp# zCL;JgBX62$+6_=s1(iO5g)HV3RaEElc$|77$06GA6Ja@*+YAFD8L);BP+ebNf3tZ& zdEioA>0*}+Kh6xj<9t0^KMyY>1cxj6F|JB&pqgfvceQ>;J%1T6e{boZj353F<% zz$-?R`mKnhBwFYW8Z$P${^07%??1nOe@t71pT}grpYk*n)r|zdZ8($@@TSRRlb2g8 zZcF$jXk=Z@#bu3Jsv^0?DS@bo#uxNYvdi_#s@kYirmJnSyE&y4bHdZb@ciZVv+L)> zCw%rbe&#-cQ5u+@8_gYGQCfc{1rtr*Nvyd}MIdZw31^cyL?A_rE@{{?H~UD1D| zWb;Q9$g6=K5%Q$WwUrGt|?hY$yS`< z{L|Dp0O51~-G%*=N{}X==^2)31*Md-r`^&D%M?;U(3=MCXL$ZNYeEDgTBcaG5M!`~ z7uR=8bXJ;WD%Sor&;Dh%SZSU6JI+n&Gv7a`Jk5?#AE7}Wg@k!S0f<&7(>O#RiebCi zZO83q7`BiERQe>69=<>BZYJTsMY4tbE-R-C1|Z4PW5|AN*{J{)>p@&q^HJ2QkDl&< zLw3gR|BTk3$F4_l`3c;3_kMU>Pj^itNNJ7oR1F8$FXc`F;9#VVsy%dpI8)C3^xC+5 zb))c)LH`dZceebmbFj~4R*=`fMd&UPl$bRJl$6_lzWVj2-!3n=o9j_WDL2d;3Nv+L!7?+IcHA)ZW$KWfblL zhi3L6E_E*bJe+$?Ob9s8B9-g0Kf4BnuAQWN-&nnYP^ry&rAMMub>TS>if%?xm1HG3 zZoRnCloX992ygo#D^>z5Qrieb$Xup<_JZWl1cj(ZHh`y^wU1IV@G)1jYFY34_5S`n zpff9=|0d(KfTw%T@`DM#eE)c6u|KMudxS?7c26vkgO329NsBoW3X9pz)rZ$#eE-?Y zk4M?S749%+Hg~5}yf~onG$V&NSgMGO`Mn&z-NQq&L+x=G&pTCB?XQ4+4`qPH^;w}q z4|Jr$X{u9wvOH|k^~)E}-@i^n6=sM?W9*)3#lb{pLh|6Y$r7o)yoBOE9HR)D+aw?> z=x1>LkPZozyD=gGz%BqFj$I{e*7x_ie}rIkyd2_Aa}sGBA-ui4!R7YlXP}C> z|DFjZ0;;7TPsJ%#5UlVBN|`F51x5tS>zI1*eimA$O*BK9O3BQ(jHJIF%s=K{!r2L- z>^FMwACRmjj!JS`B^R#HzZ|@qqX~R^Mn7<#cYHMuD?Rvo)Qt}4_=nc zF^cQv?;4IL+gVqpkFK0S&oi7jK>sH%o$ETh;NdX<$A31OjJ0I^=444tYCGST^<&)O z-}e%tPLA8uc8BhyXM4Td3I zj2K63cBvHi44AZhi$Nx#1f4=aTUshCjy>q~^wE`=jT$Puz`eDPvS;S;5?UQN;KtuCQuiw0YW?KLtgf@M!pwh>&g$OX5muoyg+qPaZENJKYST$t96BV;cJK8~cB_gig;g zKrauF1ayw9iIl>@wygpt&`ZN43K(TjKn4{N6M6=%6wAYUzOfnZgVq`V%(Lyye29&{ z5`4b%S$cZxy(64_NG)&L?K|ec+p%H(HTJVVX`x7?VT>s4IGLQ#VlG=X=3$#Y{p#b7 zzkHE);DB5(Wp{#(DHkgc3`5!mCJ}dpupW@r9HPfM%H`vUgVxs*VB`hQaGrlhRH>(%>?&Ia&D=No=PsBXtB*SV1h4Y}e*fpoX*_!0 z9&vxof2>f{v{uzee<=)}06M55KmsX(q=UQv{EuIrzj(fR_MXb%1-GyA?qV3X*zU9x zOrs5>_z-$LaU(#7w~PR?!0zVq-(HO#oW6^PPjy*sQN*#`91^6&{;u_U64a*7ul0*o zdpsB@JmizO7aey{TM-r=j5J1ybcOog}{f*_wy$DwF^2*jH0#y{tbip|O`p;kB2Gb-M5>k>%iA{!? zmsQCphuMW!b3nRJ&6pD>Dy6AVX9eM@U8w!e)gdvHETN~BpHnS&6?EV9om}KAtefTh z@9|yjC+RPKNa4}NhjQS3HFb_9i&%Sd^IW!q?pY2RXpcGj*Y*`2J>AOi(wD1C6>>Q8k0~Om0oSXtfpl>hu`jP=i%-7!{L`=B-&_Uy=TvBvlC4bcHXyv@ zDRgSAewup=Cjj9(PX_6`9A9B^53io$(lphvM^vA3L>!K`C!ghbgl2!%Vz%HMcUM&i z=}xKSpV`ZckKVhwz8JRZf>MwTmN{k5Q&{qprqVL@ioL_=MNan_Xd=j z(u;*b9a@uod3gMb5VSdlf$-|A6900ULQMhVFs5NJw^E9#swx0uq%qfAGLpXd>WlCG z^KUOc`XCFefKV?8|D{~a4b(w`bJ=2UkQPTmqv6L6Sgt$*%zs&fk3M%z|5xA{akTH%5fon;TQ&dl<2`^}Rp zX55ifB;x35NDKj$AvjSn47wRNyX`P;phME+lx)F3%^K`Wvc&V&89t9QX+fG|U;q$|l{dZPJ)*_XFV*zyCL2`u0#Mf7>%b6E*UQc=2r@tQj z(yI^7z4G2mrqlf&IR%}B{t=86pVtWZKfBxg=-Sh3sk1zA9qDgOFO`1027UQVn1w03h8)*&p2pkZ? zV|O@>oLnj;K|4}0hXKSgi&<Jx zAEWD#nsNZ*Uoms4bv+Z55O}b7l>jX10B631A8cT6eC5RNuqN+)XTb^vQ+gx8= zUp;?5UTg@MA(!y`ujHOEp$QDZp={<1o*Scw_fN6N=j9fP{~`<*|A_qsSp=o(S;ZM# zV6n-|!Y9@sQI`z>0DY#vjQ)q$$1n^jrDEn}8j?ubmkEmJpMCo6zyIyo2k+k!6fKc) ztH2{n*QLrm4w*?+$rz|$?x&f!h2_(Ia&LY_cuLNAec7Nty3YCZpBtFhIdM-b@*i2xnHT>y<(kvwsi*j= zejcyXb!qR*SAVr~AjOBHdeXt+zy0*{?=LQ1yts0OZL$BoY&IbPV7FE5!hRe1LW0^Q z^591Pcsv#0*o(s<2cjAHG*4Ul2QM`+?(oyvt_@lVXNK&DpzfDOzdA7+n_VSbWKK=TW z7asx}B)X`*floI(6AKF|S^O8o0Jiafbe6IH+pxGc-NbTlScCiJvdBvZ9w;Yg_Ntuo zK6uhCfE1OQmoxl83N0;8A*Y7=B&b6?-=r`FG?!50@wH>&;$GAkEv&cPpxpz$7^#>`DhL z{wt|={v0v^0MG^AMCt&$?Ovx2$-#Y|(xA_-pFewXJ?s(yvq<>G%HwbJ0wv%IA{aYE z_iv@Ltf(DJm<81Ke%tOoj-#1nD+-7v5N-u2 zU3~iSxBvOK4?cbWm0>DCf)%*Ya`^DOAPGb$^k!#qR-yvB&{4A%6nJqj%*D&zb9S3( zdzRwC`C~@QL47)-e}@TKb9B`>;83?1;@?i?bNudV>Fv+`QF2aiefrN6< zWyi<0@<(m~uZ8>j&ujdE@T4pZ@oMUq1UplVCgK-|cqLt7~jFC=-U! zH-;RM0AY^z$b_XW4xlO~c$Pb=Vc4p`V)bQg8<2?3OQh%V1Q789)uSdpv-3X*ZOEMc zcTvF0LbOwdfn?tH5TP-DDL?<<*{9!q`trkV+TkV?}f|Kak zOQQR1n@sbNaX=ccdBr{Lt%Z>i^V@8y&BYx&B99op_D-4?sBA7TuV22ne713gISOGJ z#k^!OBa4E{qLHnO24;An6>~GU0yDbNYZBl<{|)z7^bZygKoJ3Gf*6j_q&9c|YPe{a zY~HatT~GT7oU=P=#8wcZ7{`l`Klt(g_#f|m^5H&12MF=%cNb_0^iKi@dH21qXcpy_RubDP6M8t(3Ghhk*e7D&Rl(KK!@FEkC35+#8w z^$-rvtLgw0vYX7O^Sp;O;(uASNnO@fyQ_Zg0=%4u3i}0d&7nJJE#0fIIzkSQ)&0MT z*8fC{^Ra)nKkEzwcON@vp?~~wmIdh0^XCZ;o3{l0{a^?l)z1fA{Du$yM<3E}rObNq zgA#tLkBSTtfx9^|rXlD2^MC#F^1~O;$DQqkYI&cm=w^$}4tWwc4x`XDh5cAat(bkz z&DE*cqpRNgiu9iPg5~=5T0jkw6vh^R6h%OCTUZh$dxS`vgD-#DI|$P1|t`)s*+Qh2q@9Q&LFa z8%<75Q#Qj89cU(icBC$}Oc*9aMs zq-glMw}{P_**n4r(@e<|2(cbvjU(_@L3?ffcdFbyHZR|A(zrsDGI z^7(t$yQ@tQ7C69yQoKxFjAr2_pJw#$g)lKQ8fnhr9(+I+=s#D_AGZGj{R^s8#5O3E zXt|>Q)exR*>4q{jY5 zLLCi5QXCPa8<-w7qd`!gX3u*s#cYC2Rti|cIO0{>DGdG}I4avui(Z%`3gT_lWwbKm zbkDVRAK?1;HEQcVcVQBLiL!c-unLDjBuFa5X0zLk+pP=(Afk!00mZF~eIA}(1Xm_A z0Lv0st&UTh_Q8lPy*h;Kt*VgRy2~GkO5W|8d5G5k_3j1G__*5jN6&Wf&FLWEWAu-1 zTd%07_hUZQ)q6U6PdO<({dJbmQjXqp6r>A<+A_Bj1XH3wgbD=z^%Ry}RW}8U(|&SuKvke3Dk{zT--MJu z#sy`)&ja^wsdw+G52@kdU3&^}|LC9IP3fAyb6*9>v}L*~{xszWngR zPcLtS~PR z#23ME(x01ECs*5TsZbkETEG(FDzdrUy?pPz-Srj;*#U{zU(b6hPE^uP4K<%LynE=y zy||mv-6Hju8Cc*o11_o&APgE+|1I#UXbiE1=Z8C1>-M0l)5s@^cag#RVxZUZn@v8AhGxpGp9^|StnKkh)z(Cl#p)Ob0`! zXUF7pd8~D@Q>7oPHy)w(IZ@i}JjFHi2T40mS|09x6AUnw)ayz6#O}jvN>bENP^?Y9 zg78%r3ezW@0*mwJH=FhN{%rWJQn6;(y}rEu2y*ESoGE)eirmO#+>YK8vM zaQ`w1D-vp35#e(}fCJ6(;@i+$4q7t}H)Z-}w|V~J`R@647?6oV!X;0hZ>-01~o;<+l$QQ(CvQaSz$=~9`5t#x>|j8sts)xH|Y>^NG{TTX!b z>;SCfGz<&CBYCF7J;?pz&lp&7kVVYs z4xdmAR#>uIre#=0{V9W9ot@0!<}}bHgaMMAEei;5K7Uj&J%9zVc)$8YB#pynGj6wOvsE1o6xAB$8@@gs9#(|=V#!{nb)&S7wNT^c zs!vb7Xqih(Z;pBwR&S5J=q*6FcZar4qdV4&oX6!H`tRkZuE^o{>qH#KH2_TjXf0L2 zeQ9?2clmw(--&l~*ryZaL}ItYdR749et)ca?>v3skyP~1N%KZ?i$@>sF7pPe_pblP zY8lV&Jv|Tc+3UN%&NW-p<}~14OFTt*QuZ;O0;@g?gNj>LQBeP%|Lgz0eD*gThGEnq z$Qx`gFpLG|}S!W$#TJBe{)i(Gx&sRgvr_+1+ZbmMlw_ z?V0)i|LNViwiYjHRss>{eh2`G%vxCNMbh{U#?vZhBC#(gcK@ufv83uYdNZp)fe;ii zYi05mlz|f6w1)oery)RGQVue-NWwx00>wl^MITd)C}6%Ht7qO-iiZ_2V9m)C^DSTt(1a%$bK>lU$A~I9TCaWMmG(o>!dmvg%bUs zPu)@o#i)aAIXKR&+(PNvGUTz>^9ZnUFFU2I&VOrxybBhZ5tO;J^JoGyzin}u zRHExL!)>As*5YLL`STxIn!^%`ns86R7GOcdpi~nX0wkLv#4v<^=D$l!pMU$w=YP1D zE7$-d(uABOPp~9Zs8w|pgFrxv(OJ&IZuSbcw|N<}2EJg`iEksu#^!Hx(k%;LS#y*F z>nic^z+}>47yx8bibxD5Hsw6*;@wAgx38WdU^18hCU4#(rr^Fl$pDq&z*7ww$h54? zq$;v{tY670mW-LR#=j96G>8@h2p@LwzyYZCM+Q**&}f0f>qIxW7Gl&A(u8IjT<{2t z!}jNghp-)G9OBLOH~;mQFTVT3-%~~!Kv0phXi{&c(wQp~3SVA8cRpFrKh#{Y38u&i zmTlU@CQeB-Sx(j6XJ*bsg3`Shk&FbDhT`WFppYWwA{=u)E>@L>HiPEVyS|QP9*6ZC zz)9u#_``urU|#V@4m{R>o|1}OqOT>KsKD3m{JalwCqZZ>D2%idLk1`?UX8o$xZTEK z2ohb|WtKsLO0^>TGL&u2qRma_d+p_&3va$RmT%+ zy{t^Y^?3Hi>;15tc;5ffH{v3_|7D&^v@DOk1D%Pr#=jN0($NYV=aYSH^LQ?r!Bw*j zC%pjuYRNnQ8(_A*{g|w65-$5>_3!_{w3xJ2U$_Ktu^kdFw`SIy;tzlO>Gkea8VwQC zLr8D1xxp}oalmFLmO?hj5d5ftz+eHP+TeN{+8I)s(Fp?0)o-f$P&w@zOsY1zp#Yi^ zAK(z1Qp9P1Rwoa4F;F-B>RAs)PpC>Cb6-^Q!x@wA??}9Eh=_A$i|d~f3#=aE<=g>a zWB`m3gzf`92B^r$5QQp{L5Khh8>plQC1DD2E7J3U$Bo8Pp_V8pe3Sa|?v{{q|<}CZ)LDef{U}KKk;Dy%C!sC#b=r^k!u?*A@|R z#<35V6@5kmW+qgCG!2%sP0&Q0O!v%*>Jfk4<-ZjJ2%5R4AVOyCf0q@xzLWY|CKvwx zA5#}x48r;)jvpDn0W@<_YUsa&zIKN{BH`+0*lglv48uSK1I&FVnSrKiq`7KUxfExm zsk#vs<5sZ&xf;pt2wmgU<)7zf;aF+EfmGvWJn^%$?C&EqK|jL%6CC6(c}^Muf1q@F zPG&JsrI;V*{XbsnD&IT7`hTbN;dFK{n6)6zhZD^9wVd(~fBoU+?mF(SLt@_Z;UNrL z88_JMu$=~-NJWe=_drvai0+}duoTQpgn z0Y8}K)>k5i06|nr2zg^yK#nw}zIn4Z3#y2NUj%Ym>Hl4i+K$uABDyIob9S8gHAyfZ z@lE=2m}l9vOB=cr)%LAxrThx2l1&)(NEV#W#?$4Tzco*l87`9j9u#$aHMtiY1_l73 z#2F-@0;&fF520vmP!WP+l9=yb+YJwC*)j zQl2Qm0o%%Bmdc^*v~`N}c%X2rD|%%u7j>5zP(ih<{Ff6V>LI&D2vgH>x4FK3cK7lw z4lqCsnxV!#nPz1cTJUfMMW02XnapZxuI^7W`oEUwpdSjFqko~nB>>fRsfdwUf{*mm zgrg{JG2JXD7+E6eLd_7wHgU@P&HeqCfBg1~FTWagn+JtuWJOL)Dd(hSLK8B0Bxb@j z^9fQ6Mg=KUGE)g=)l8i%?=9~&O_iu~g8%>^07*naRAz}eX`YIYBQ;|d%Qecc%MD2H zsYkQ2xt&D_)33>nb-LvJU!>h|L7o%)>s{{LvP%2yRPWc*=`d=Fm0K*79T5Y<7>CXF z`YH}%4AJj4V+H=j(?88+Wn|q=Y|vl2KaaGzf6(Qb$?tXE^#~swwSz+OKN?2t=C3VqJ`(3T@5|I!4≠&^wkO=y$C+gRo8B?`s0sip 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 AJq|Kz4&4 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

  1. Q7CaRLRHa) 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 BzB~W` literal 0 HcmV?d00001 diff --git a/docs/src/tutorials/windows-kernel/images/2024-03-21-17-38-46.png b/docs/src/tutorials/windows-kernel/images/2024-03-21-17-38-46.png new file mode 100644 index 0000000000000000000000000000000000000000..c480dac95418c7f6bbe29e017de2765f17d13919 GIT binary patch literal 291752 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�?#@8E*Rr=SrH4p^Aw^Cae_X?n+f|1fETr*hF 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�mWzvqDSF0{=fWW9N1V{;&d;69 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≥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 @;>K2TvMM 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 B8NL7j literal 0 HcmV?d00001 diff --git a/docs/src/tutorials/windows-kernel/images/2024-04-01-09-19-09.png b/docs/src/tutorials/windows-kernel/images/2024-04-01-09-19-09.png new file mode 100644 index 0000000000000000000000000000000000000000..a0133a17f9fddf32db44d5124bdce632aeeb595b GIT binary patch literal 46915 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 Ba(w^* literal 0 HcmV?d00001 diff --git a/docs/src/tutorials/windows-kernel/images/2024-04-12-12-49-03.png b/docs/src/tutorials/windows-kernel/images/2024-04-12-12-49-03.png new file mode 100644 index 0000000000000000000000000000000000000000..6356a2c846d8271ff417047ca244b7f5cd482c24 GIT binary patch literal 8140 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 m&zm<7z>!BD`OGuV0QmngUvnw7H*qik0000 + +/// HARNESS_START +/// +/// Signal the fuzzer to start the fuzzing loop at the point this macro is +/// called. The default "index" of 0 will be used. If you need multiple start +/// harnesses compiled into the same binary, you can use the +/// `HARNESS_START_INDEX` macro to specify different indices, then enable them +/// at runtime by configuring the fuzzer. +/// +/// When this macro is called: +/// +/// - A snapshot will be taken and saved +/// - The buffer pointed to by `buffer` will be saved and used as the testcase +/// buffer. Each +/// fuzzing iteration, a new test case will be written to this buffer. +/// - The size of the buffer pointed to by `size_ptr` will be saved as the +/// maximum testcase size. Each fuzzing iteration, the actual size of the +/// current testcase will be written to `*size_ptr`. +/// +/// # Arguments +/// +/// - `buffer`: The pointer to the testcase buffer +/// - `size_ptr`: The pointer to the size of the testcase buffer +/// +/// # Example +/// +/// ``` +/// unsigned char buffer[1024]; +/// size_t size; +/// HARNESS_START(buffer, &size); +/// ``` +extern "C" void HARNESS_START(void *buffer, void *size_ptr); + +/// HARNESS_START_INDEX +/// +/// Signal the fuzzer to start the fuzzing loop at the point this macro is +/// called. The index specified by `start_index` will be used. If you need +/// multiple start harnesses compiled into the same binary, you can use this +/// macro to specify different indices, then enable them at runtime by +/// configuring the fuzzer. +/// +/// When this macro is called: +/// +/// - A snapshot will be taken and saved +/// - The buffer pointed to by `buffer` will be saved and used as the testcase +/// buffer. Each +/// fuzzing iteration, a new test case will be written to this buffer. +/// - The size of the buffer pointed to by `size_ptr` will be saved as the +/// maximum testcase size. Each fuzzing iteration, the actual size of the +/// current testcase will be written to `*size_ptr`. +/// +/// # Arguments +/// +/// - `start_index`: The index to use for this start harness +/// - `buffer`: The pointer to the testcase buffer +/// - `size_ptr`: The pointer to the size of the testcase buffer +/// +/// # Example +/// +/// ``` +/// unsigned char buffer[1024]; +/// size_t size; +/// HARNESS_START_INDEX(0x0001U, buffer, &size); +/// ``` +extern "C" void HARNESS_START_INDEX(size_t start_index, void *buffer, void *size_ptr); + +/// HARNESS_START_WITH_MAXIMUM_SIZE +/// +/// Signal the fuzzer to start the fuzzing loop at the point this macro is +/// called. The default "index" of 0 will be used. If you need multiple start +/// harnesses compiled into the same binary, you can use the +/// `HARNESS_START_WITH_MAXIMUM_SIZE_INDEX` macro to specify different indices, +/// then enable them at runtime by configuring the fuzzer. +/// +/// When this macro is called: +/// +/// - A snapshot will be taken and saved +/// - The buffer pointed to by `buffer` will be saved and used as the testcase +/// buffer. Each +/// fuzzing iteration, a new test case will be written to this buffer. +/// - The `max_size` value will be saved as the maximum testcase size. Fuzzing +/// test cases will be truncated to this size before being written to the +/// buffer. +/// +/// # Arguments +/// +/// - `buffer`: The pointer to the testcase buffer +/// - `max_size`: The maximum size of the testcase buffer +/// +/// # Example +/// +/// ``` +/// unsigned char buffer[1024]; +/// HARNESS_START_WITH_MAXIMUM_SIZE(buffer, 1024); +/// ``` +extern "C" void HARNESS_START_WITH_MAXIMUM_SIZE(void *buffer, size_t max_size); + +/// HARNESS_START_WITH_MAXIMUM_SIZE_INDEX +/// +/// Signal the fuzzer to start the fuzzing loop at the point this macro is +/// called. The index specified by `start_index` will be used. If you need +/// multiple start harnesses compiled into the same binary, you can use this +/// macro to specify different indices, then enable them at runtime by +/// configuring the fuzzer. +/// +/// When this macro is called: +/// +/// - A snapshot will be taken and saved +/// - The buffer pointed to by `buffer` will be saved and used as the testcase +/// buffer. Each +/// fuzzing iteration, a new test case will be written to this buffer. +/// - The `max_size` value will be saved as the maximum testcase size. Fuzzing +/// test cases will be truncated to this size before being written to the +/// buffer. +/// +/// # Arguments +/// +/// - `start_index`: The index to use for this start harness +/// - `buffer`: The pointer to the testcase buffer +/// - `max_size`: The maximum size of the testcase buffer +/// +/// # Example +/// +/// ``` +/// unsigned char buffer[1024]; +/// HARNESS_START_WITH_MAXIMUM_SIZE_INDEX(0x0001U, buffer, 1024); +/// ``` +extern "C" void HARNESS_START_WITH_MAXIMUM_SIZE_INDEX(size_t start_index, void *buffer, + size_t max_size); + +/// HARNESS_START_WITH_MAXIMUM_SIZE_AND_PTR +/// +/// Signal the fuzzer to start the fuzzing loop at the point this macro is +/// called. The default "index" of 0 will be used. If you need multiple start +/// harnesses compiled into the same binary, you can use the +/// `HARNESS_START_WITH_MAXIMUM_SIZE_AND_PTR_INDEX` macro to specify different +/// indices, then enable them at runtime by configuring the fuzzer. +/// +/// When this macro is called: +/// +/// - A snapshot will be taken and saved +/// - The buffer pointed to by `buffer` will be saved and used as the testcase +/// buffer. Each +/// fuzzing iteration, a new test case will be written to this buffer. +/// - The address `size_ptr` will be saved. Each fuzzing iteration, the actual +/// size of the current testcase will be written to `*size_ptr`. +/// - The `max_size` value will be saved as the maximum testcase size. Fuzzing +/// test cases will be truncated to this size before being written to the +/// buffer. +/// +/// # Arguments +/// +/// - `buffer`: The pointer to the testcase buffer +/// - `size_ptr`: The pointer to the size of the testcase buffer +/// - `max_size`: The maximum size of the testcase buffer +/// +/// # Example +/// +/// ``` +/// unsigned char buffer[1024]; +/// size_t size; +/// HARNESS_START_WITH_MAXIMUM_SIZE_AND_PTR(buffer, &size, 1024); +/// ``` +extern "C" void HARNESS_START_WITH_MAXIMUM_SIZE_AND_PTR(void *buffer, void *size_ptr, + size_t max_size); + +/// HARNESS_START_WITH_MAXIMUM_SIZE_AND_PTR_INDEX +/// +/// Signal the fuzzer to start the fuzzing loop at the point this macro is +/// called. The index specified by `start_index` will be used. If you need +/// multiple start harnesses compiled into the same binary, you can use this +/// macro to specify different indices, then enable them at runtime by +/// configuring the fuzzer. +/// +/// When this macro is called: +/// +/// - A snapshot will be taken and saved +/// - The buffer pointed to by `buffer` will be saved and used as the testcase +/// buffer. Each +/// fuzzing iteration, a new test case will be written to this buffer. +/// - The address `size_ptr` will be saved. Each fuzzing iteration, the actual +/// size of the current testcase will be written to `*size_ptr`. +/// - The `max_size` value will be saved as the maximum testcase size. Fuzzing +/// test cases will be truncated to this size before being written to the +/// buffer. +/// +/// # Arguments +/// +/// - `start_index`: The index to use for this start harness +/// - `buffer`: The pointer to the testcase buffer +/// - `size_ptr`: The pointer to the size of the testcase buffer +/// - `max_size`: The maximum size of the testcase buffer +/// +/// # Example +/// +/// ``` +/// unsigned char buffer[1024]; +/// size_t size; +/// HARNESS_START_WITH_MAXIMUM_SIZE_AND_PTR_INDEX(0x0001U, buffer, &size, 1024); +/// ``` +extern "C" void HARNESS_START_WITH_MAXIMUM_SIZE_AND_PTR_INDEX(size_t start_index, + void *buffer, void *size_ptr, + size_t max_size); + +/// HARNESS_STOP +/// +/// Signal the fuzzer to stop and reset to the beginning of the fuzzing loop +/// with a "normal" stop status, indicating no solution has occurred. The +/// default index of 0 will be used. If you need to differentiate between +/// multiple stop harnesses compiled into the same binary, you can use the +/// `HARNESS_STOP_INDEX` macro to specify different indices, then enable them at +/// runtime by configuring the fuzzer. +/// +/// # Example +/// +/// ``` +/// HARNESS_STOP(); +/// ``` +extern "C" void HARNESS_STOP(void); + +/// HARNESS_STOP_INDEX +/// +/// Signal the fuzzer to stop and reset to the beginning of the fuzzing loop +/// with a "normal" stop status, indicating no solution has occurred. The index +/// specified by `stop_index` will be used. If you need to differentiate between +/// multiple stop harnesses compiled into the same binary, you can use this +/// macro to specify different indices, then enable them at runtime by +/// configuring the fuzzer. +/// +/// # Arguments +/// +/// - `stop_index`: The index to use for this stop harness +/// +/// # Example +/// +/// ``` +/// HARNESS_STOP_INDEX(0x0001U); +/// ``` +extern "C" void HARNESS_STOP_INDEX(size_t stop_index); + +/// HARNESS_ASSERT +/// +/// Signal the fuzzer that a custom assertion has occurred, and the fuzzer +/// should stop the current fuzzing iteration and reset to the beginning of the +/// fuzzing loop with a "solution" stop status. The default index of 0 will be +/// used. If you need to differentiate between multiple assertion harnesses +/// compiled into the same binary, you can use the `HARNESS_ASSERT_INDEX` macro +/// to specify different indices, then enable them at runtime by configuring the +/// fuzzer. +/// +/// # Example +/// +/// ``` +/// HARNESS_ASSERT(); +/// ``` +extern "C" void HARNESS_ASSERT(void); + +/// HARNESS_ASSERT_INDEX +/// +/// Signal the fuzzer that a custom assertion has occurred, and the fuzzer +/// should stop the current fuzzing iteration and reset to the beginning of the +/// fuzzing loop with a "solution" stop status. The index specified by +/// `assert_index` will be used. If you need to differentiate between multiple +/// assertion harnesses compiled into the same binary, you can use this macro to +/// specify different indices, then enable them at runtime by configuring the +/// fuzzer. +/// +/// # Arguments +/// +/// - `assert_index`: The index to use for this assertion harness +/// +/// # Example +/// +/// ``` +/// HARNESS_ASSERT_INDEX(0x0001U); +/// ``` +extern "C" void HARNESS_ASSERT_INDEX(size_t assert_index); + +#else // __cplusplus + #include /// HARNESS_START @@ -286,5 +569,6 @@ void HARNESS_ASSERT(void); /// HARNESS_ASSERT_INDEX(0x0001U); /// ``` void HARNESS_ASSERT_INDEX(size_t assert_index); +#endif // __cplusplus -#endif // TSFFS_H \ No newline at end of file +#endif // TSFFS_H diff --git a/harness/tsffs.h b/harness/tsffs.h index bf116af2..77df053c 100644 --- a/harness/tsffs.h +++ b/harness/tsffs.h @@ -2591,6 +2591,289 @@ #define FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION (1) #endif // FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION +#ifdef __cplusplus + +#include + +/// HARNESS_START +/// +/// Signal the fuzzer to start the fuzzing loop at the point this macro is +/// called. The default "index" of 0 will be used. If you need multiple start +/// harnesses compiled into the same binary, you can use the +/// `HARNESS_START_INDEX` macro to specify different indices, then enable them +/// at runtime by configuring the fuzzer. +/// +/// When this macro is called: +/// +/// - A snapshot will be taken and saved +/// - The buffer pointed to by `buffer` will be saved and used as the testcase +/// buffer. Each +/// fuzzing iteration, a new test case will be written to this buffer. +/// - The size of the buffer pointed to by `size_ptr` will be saved as the +/// maximum testcase size. Each fuzzing iteration, the actual size of the +/// current testcase will be written to `*size_ptr`. +/// +/// # Arguments +/// +/// - `buffer`: The pointer to the testcase buffer +/// - `size_ptr`: The pointer to the size of the testcase buffer +/// +/// # Example +/// +/// ``` +/// unsigned char buffer[1024]; +/// size_t size; +/// HARNESS_START(buffer, &size); +/// ``` +extern "C" void HARNESS_START(void *buffer, void *size_ptr); + +/// HARNESS_START_INDEX +/// +/// Signal the fuzzer to start the fuzzing loop at the point this macro is +/// called. The index specified by `start_index` will be used. If you need +/// multiple start harnesses compiled into the same binary, you can use this +/// macro to specify different indices, then enable them at runtime by +/// configuring the fuzzer. +/// +/// When this macro is called: +/// +/// - A snapshot will be taken and saved +/// - The buffer pointed to by `buffer` will be saved and used as the testcase +/// buffer. Each +/// fuzzing iteration, a new test case will be written to this buffer. +/// - The size of the buffer pointed to by `size_ptr` will be saved as the +/// maximum testcase size. Each fuzzing iteration, the actual size of the +/// current testcase will be written to `*size_ptr`. +/// +/// # Arguments +/// +/// - `start_index`: The index to use for this start harness +/// - `buffer`: The pointer to the testcase buffer +/// - `size_ptr`: The pointer to the size of the testcase buffer +/// +/// # Example +/// +/// ``` +/// unsigned char buffer[1024]; +/// size_t size; +/// HARNESS_START_INDEX(0x0001U, buffer, &size); +/// ``` +extern "C" void HARNESS_START_INDEX(size_t start_index, void *buffer, void *size_ptr); + +/// HARNESS_START_WITH_MAXIMUM_SIZE +/// +/// Signal the fuzzer to start the fuzzing loop at the point this macro is +/// called. The default "index" of 0 will be used. If you need multiple start +/// harnesses compiled into the same binary, you can use the +/// `HARNESS_START_WITH_MAXIMUM_SIZE_INDEX` macro to specify different indices, +/// then enable them at runtime by configuring the fuzzer. +/// +/// When this macro is called: +/// +/// - A snapshot will be taken and saved +/// - The buffer pointed to by `buffer` will be saved and used as the testcase +/// buffer. Each +/// fuzzing iteration, a new test case will be written to this buffer. +/// - The `max_size` value will be saved as the maximum testcase size. Fuzzing +/// test cases will be truncated to this size before being written to the +/// buffer. +/// +/// # Arguments +/// +/// - `buffer`: The pointer to the testcase buffer +/// - `max_size`: The maximum size of the testcase buffer +/// +/// # Example +/// +/// ``` +/// unsigned char buffer[1024]; +/// HARNESS_START_WITH_MAXIMUM_SIZE(buffer, 1024); +/// ``` +extern "C" void HARNESS_START_WITH_MAXIMUM_SIZE(void *buffer, size_t max_size); + +/// HARNESS_START_WITH_MAXIMUM_SIZE_INDEX +/// +/// Signal the fuzzer to start the fuzzing loop at the point this macro is +/// called. The index specified by `start_index` will be used. If you need +/// multiple start harnesses compiled into the same binary, you can use this +/// macro to specify different indices, then enable them at runtime by +/// configuring the fuzzer. +/// +/// When this macro is called: +/// +/// - A snapshot will be taken and saved +/// - The buffer pointed to by `buffer` will be saved and used as the testcase +/// buffer. Each +/// fuzzing iteration, a new test case will be written to this buffer. +/// - The `max_size` value will be saved as the maximum testcase size. Fuzzing +/// test cases will be truncated to this size before being written to the +/// buffer. +/// +/// # Arguments +/// +/// - `start_index`: The index to use for this start harness +/// - `buffer`: The pointer to the testcase buffer +/// - `max_size`: The maximum size of the testcase buffer +/// +/// # Example +/// +/// ``` +/// unsigned char buffer[1024]; +/// HARNESS_START_WITH_MAXIMUM_SIZE_INDEX(0x0001U, buffer, 1024); +/// ``` +extern "C" void HARNESS_START_WITH_MAXIMUM_SIZE_INDEX(size_t start_index, void *buffer, + size_t max_size); + +/// HARNESS_START_WITH_MAXIMUM_SIZE_AND_PTR +/// +/// Signal the fuzzer to start the fuzzing loop at the point this macro is +/// called. The default "index" of 0 will be used. If you need multiple start +/// harnesses compiled into the same binary, you can use the +/// `HARNESS_START_WITH_MAXIMUM_SIZE_AND_PTR_INDEX` macro to specify different +/// indices, then enable them at runtime by configuring the fuzzer. +/// +/// When this macro is called: +/// +/// - A snapshot will be taken and saved +/// - The buffer pointed to by `buffer` will be saved and used as the testcase +/// buffer. Each +/// fuzzing iteration, a new test case will be written to this buffer. +/// - The address `size_ptr` will be saved. Each fuzzing iteration, the actual +/// size of the current testcase will be written to `*size_ptr`. +/// - The `max_size` value will be saved as the maximum testcase size. Fuzzing +/// test cases will be truncated to this size before being written to the +/// buffer. +/// +/// # Arguments +/// +/// - `buffer`: The pointer to the testcase buffer +/// - `size_ptr`: The pointer to the size of the testcase buffer +/// - `max_size`: The maximum size of the testcase buffer +/// +/// # Example +/// +/// ``` +/// unsigned char buffer[1024]; +/// size_t size; +/// HARNESS_START_WITH_MAXIMUM_SIZE_AND_PTR(buffer, &size, 1024); +/// ``` +extern "C" void HARNESS_START_WITH_MAXIMUM_SIZE_AND_PTR(void *buffer, void *size_ptr, + size_t max_size); + +/// HARNESS_START_WITH_MAXIMUM_SIZE_AND_PTR_INDEX +/// +/// Signal the fuzzer to start the fuzzing loop at the point this macro is +/// called. The index specified by `start_index` will be used. If you need +/// multiple start harnesses compiled into the same binary, you can use this +/// macro to specify different indices, then enable them at runtime by +/// configuring the fuzzer. +/// +/// When this macro is called: +/// +/// - A snapshot will be taken and saved +/// - The buffer pointed to by `buffer` will be saved and used as the testcase +/// buffer. Each +/// fuzzing iteration, a new test case will be written to this buffer. +/// - The address `size_ptr` will be saved. Each fuzzing iteration, the actual +/// size of the current testcase will be written to `*size_ptr`. +/// - The `max_size` value will be saved as the maximum testcase size. Fuzzing +/// test cases will be truncated to this size before being written to the +/// buffer. +/// +/// # Arguments +/// +/// - `start_index`: The index to use for this start harness +/// - `buffer`: The pointer to the testcase buffer +/// - `size_ptr`: The pointer to the size of the testcase buffer +/// - `max_size`: The maximum size of the testcase buffer +/// +/// # Example +/// +/// ``` +/// unsigned char buffer[1024]; +/// size_t size; +/// HARNESS_START_WITH_MAXIMUM_SIZE_AND_PTR_INDEX(0x0001U, buffer, &size, 1024); +/// ``` +extern "C" void HARNESS_START_WITH_MAXIMUM_SIZE_AND_PTR_INDEX(size_t start_index, + void *buffer, void *size_ptr, + size_t max_size); + +/// HARNESS_STOP +/// +/// Signal the fuzzer to stop and reset to the beginning of the fuzzing loop +/// with a "normal" stop status, indicating no solution has occurred. The +/// default index of 0 will be used. If you need to differentiate between +/// multiple stop harnesses compiled into the same binary, you can use the +/// `HARNESS_STOP_INDEX` macro to specify different indices, then enable them at +/// runtime by configuring the fuzzer. +/// +/// # Example +/// +/// ``` +/// HARNESS_STOP(); +/// ``` +extern "C" void HARNESS_STOP(void); + +/// HARNESS_STOP_INDEX +/// +/// Signal the fuzzer to stop and reset to the beginning of the fuzzing loop +/// with a "normal" stop status, indicating no solution has occurred. The index +/// specified by `stop_index` will be used. If you need to differentiate between +/// multiple stop harnesses compiled into the same binary, you can use this +/// macro to specify different indices, then enable them at runtime by +/// configuring the fuzzer. +/// +/// # Arguments +/// +/// - `stop_index`: The index to use for this stop harness +/// +/// # Example +/// +/// ``` +/// HARNESS_STOP_INDEX(0x0001U); +/// ``` +extern "C" void HARNESS_STOP_INDEX(size_t stop_index); + +/// HARNESS_ASSERT +/// +/// Signal the fuzzer that a custom assertion has occurred, and the fuzzer +/// should stop the current fuzzing iteration and reset to the beginning of the +/// fuzzing loop with a "solution" stop status. The default index of 0 will be +/// used. If you need to differentiate between multiple assertion harnesses +/// compiled into the same binary, you can use the `HARNESS_ASSERT_INDEX` macro +/// to specify different indices, then enable them at runtime by configuring the +/// fuzzer. +/// +/// # Example +/// +/// ``` +/// HARNESS_ASSERT(); +/// ``` +extern "C" void HARNESS_ASSERT(void); + +/// HARNESS_ASSERT_INDEX +/// +/// Signal the fuzzer that a custom assertion has occurred, and the fuzzer +/// should stop the current fuzzing iteration and reset to the beginning of the +/// fuzzing loop with a "solution" stop status. The index specified by +/// `assert_index` will be used. If you need to differentiate between multiple +/// assertion harnesses compiled into the same binary, you can use this macro to +/// specify different indices, then enable them at runtime by configuring the +/// fuzzer. +/// +/// # Arguments +/// +/// - `assert_index`: The index to use for this assertion harness +/// +/// # Example +/// +/// ``` +/// HARNESS_ASSERT_INDEX(0x0001U); +/// ``` +extern "C" void HARNESS_ASSERT_INDEX(size_t assert_index); + +#else // __cplusplus + #include /// HARNESS_START @@ -2869,6 +3152,7 @@ void HARNESS_ASSERT(void); /// HARNESS_ASSERT_INDEX(0x0001U); /// ``` void HARNESS_ASSERT_INDEX(size_t assert_index); +#endif // __cplusplus #endif // TSFFS_H #else diff --git a/simics-rs/Cargo.toml b/simics-rs/Cargo.toml index 48fea1a0..e7869897 100644 --- a/simics-rs/Cargo.toml +++ b/simics-rs/Cargo.toml @@ -34,7 +34,6 @@ members = [ "simics-test", "simics-build-utils", "tests/packages/hello-world", - "tests/test-packages", ] default-members = [ "cargo-simics-build", @@ -46,6 +45,7 @@ default-members = [ "simics-sign", "simics-test", "simics-build-utils", + "tests/packages/hello-world", ] exclude = [] diff --git a/simics-rs/cargo-simics-build/src/lib.rs b/simics-rs/cargo-simics-build/src/lib.rs index ee331571..d9cd66f0 100644 --- a/simics-rs/cargo-simics-build/src/lib.rs +++ b/simics-rs/cargo-simics-build/src/lib.rs @@ -131,8 +131,7 @@ impl App { { let line = output.stdout.lines().next().transpose()?; line.clone() - .map(|l| l.split('=').last().map(|s| s.trim().replace('"', ""))) - .flatten() + .and_then(|l| l.split('=').last().map(|s| s.trim().replace('"', ""))) .map(PathBuf::from) .ok_or_else(|| Error::SimicsBaseParseError { output: line })? } else if let Ok(simics_base) = var("SIMICS_BASE") { @@ -171,7 +170,7 @@ impl App { build_cmd.env("SIMICS_BASE", simics_base); subcommand.args().apply(&mut build_cmd); #[cfg(unix)] - build_cmd.args(&["--", "-C", "link-args=-Wl,--gc-sections"]); + build_cmd.args(["--", "-C", "link-args=-Wl,--gc-sections"]); build_cmd.check()?; // Get the module cdylib @@ -283,8 +282,7 @@ impl App { .filter_map(|p| { p.clone() .file_name() - .map(|n| n.to_str().map(|n| (p, n.to_string()))) - .flatten() + .and_then(|n| n.to_str().map(|n| (p, n.to_string()))) }) .sorted_by(|(_, a), (_, b)| a.cmp(b)) .group_by(|(_, n)| n.clone()) @@ -293,7 +291,7 @@ impl App { .filter_map(|(_, g)| { g.max_by_key(|(p, _)| { p.metadata() - .map(|m| m.modified().unwrap_or_else(|_| SystemTime::UNIX_EPOCH)) + .map(|m| m.modified().unwrap_or(SystemTime::UNIX_EPOCH)) .unwrap_or_else(|_| SystemTime::UNIX_EPOCH) }) }) diff --git a/simics-rs/ispm-wrapper/src/data/mod.rs b/simics-rs/ispm-wrapper/src/data/mod.rs index bf44d2ef..dd6f929b 100644 --- a/simics-rs/ispm-wrapper/src/data/mod.rs +++ b/simics-rs/ispm-wrapper/src/data/mod.rs @@ -247,7 +247,7 @@ impl Packages { /// Sort the installed and available packages by their version number (highest first) pub fn sort(&mut self) { if let Some(installed_packages) = self.installed_packages.as_mut() { - installed_packages.sort_by(|a, b| b.version().cmp(&a.version())) + installed_packages.sort_by_key(|b| std::cmp::Reverse(b.version())) } } } diff --git a/simics-rs/simics-api-sys/build.rs b/simics-rs/simics-api-sys/build.rs index ed251b2f..72de0a93 100644 --- a/simics-rs/simics-api-sys/build.rs +++ b/simics-rs/simics-api-sys/build.rs @@ -737,7 +737,7 @@ pub mod common { pub fn emit_link_info() -> Result<()> { #[cfg(unix)] - const HOST_DIRNAME: &'static str = "linux64"; + const HOST_DIRNAME: &str = "linux64"; #[cfg(not(unix))] const HOST_DIRNAME: &'static str = "win64"; @@ -845,7 +845,7 @@ pub mod common { .to_str() .ok_or_else(|| anyhow!("Could not convert path to string"))? ); - let ld_library_path = vec![ + let ld_library_path = [ bin_dir .to_str() .ok_or_else(|| anyhow!("Could not convert path to string"))?, diff --git a/simics-rs/simics-macro/src/attr_value/mod.rs b/simics-rs/simics-macro/src/attr_value/mod.rs index 5ac9a1fa..c965c35e 100644 --- a/simics-rs/simics-macro/src/attr_value/mod.rs +++ b/simics-rs/simics-macro/src/attr_value/mod.rs @@ -76,7 +76,10 @@ impl ToTokens for IntoAttrValueListOpts { .iter() .filter(|f| !f.skip.is_present()) .map(|f| { - let ident = f.ident.as_ref().unwrap(); + let ident = f + .ident + .as_ref() + .expect("No identifier for field. This should be impossible"); quote!(#ident.into()) }) .collect::>(); @@ -109,7 +112,10 @@ impl ToTokens for IntoAttrValueListOpts { .iter() .filter(|f| !f.skip.is_present()) .map(|f| { - let ident = f.ident.as_ref().unwrap(); + let ident = f + .ident + .as_ref() + .expect("No identifier for field. This should be impossible"); quote!(#ident.into()) }) .collect::>(); @@ -206,7 +212,10 @@ impl ToTokens for IntoAttrValueDictOpts { .iter() .filter(|f| !f.skip.is_present()) .map(|f| { - let ident = f.ident.as_ref().unwrap(); + let ident = f + .ident + .as_ref() + .expect("No identifier for field. This should be impossible"); quote!(#ident.into()) }) .collect::>(); @@ -236,7 +245,10 @@ impl ToTokens for IntoAttrValueDictOpts { .iter() .filter(|f| !f.skip.is_present()) .map(|f| { - let ident = f.ident.as_ref().unwrap(); + let ident = f + .ident + .as_ref() + .expect("No identifier for field. This should be impossible."); quote!(#ident.into()) }) .collect::>(); diff --git a/simics-rs/simics-macro/src/class/mod.rs b/simics-rs/simics-macro/src/class/mod.rs index c10aa74f..a9a9be7e 100644 --- a/simics-rs/simics-macro/src/class/mod.rs +++ b/simics-rs/simics-macro/src/class/mod.rs @@ -128,68 +128,63 @@ impl ClassDeriveOpts { data.fields .iter() .filter_map(|f| { - f.attribute - .as_ref() - .map(|a| { - let Some(field_name) = f.ident.as_ref().map(|n| n.to_string()) else { - return None; - }; - - if let Some(default) = a.default.as_ref() { - Some(quote! { - simics::set_attribute_default( - instance, - #field_name, - #default.try_into()?, - )?; - }) - } else if a.optional.is_present() { - // We handle two kinds of f.ty: - // * `i64`, `u64`, `f64`, `String`, `bool` - simple types are - // directly used - // * `BTreeSet` - complex types are transformed into e.g. - // `BTreeSet::::default()` - let field_ty = &f.ty; - - let new_field_ty = if let Type::Path(mut p) = f.ty.clone() { - if let Some(segment) = p.path.segments.last() { - if segment.arguments.is_empty() { - quote!(#field_ty) - } else { - let args = p - .path - .segments - .last() - .expect("Known to exist here") - .arguments - .clone(); - p.path - .segments - .last_mut() - .expect("Known to exist here") - .arguments = PathArguments::None; - let ty = Type::Path(p); - quote!(#ty::#args) - } - } else { + f.attribute.as_ref().and_then(|a| { + let field_name = f.ident.as_ref().map(|n| n.to_string())?; + + if let Some(default) = a.default.as_ref() { + Some(quote! { + simics::set_attribute_default( + instance, + #field_name, + #default.try_into()?, + )?; + }) + } else if a.optional.is_present() { + // We handle two kinds of f.ty: + // * `i64`, `u64`, `f64`, `String`, `bool` - simple types are + // directly used + // * `BTreeSet` - complex types are transformed into e.g. + // `BTreeSet::::default()` + let field_ty = &f.ty; + + let new_field_ty = if let Type::Path(mut p) = f.ty.clone() { + if let Some(segment) = p.path.segments.last() { + if segment.arguments.is_empty() { quote!(#field_ty) + } else { + let args = p + .path + .segments + .last() + .expect("Known to exist here") + .arguments + .clone(); + p.path + .segments + .last_mut() + .expect("Known to exist here") + .arguments = PathArguments::None; + let ty = Type::Path(p); + quote!(#ty::#args) } } else { quote!(#field_ty) - }; - - Some(quote! { - simics::set_attribute_default( - instance, - #field_name, - #new_field_ty::default().try_into()?, - )?; - }) + } } else { - None - } - }) - .flatten() + quote!(#field_ty) + }; + + Some(quote! { + simics::set_attribute_default( + instance, + #field_name, + #new_field_ty::default().try_into()?, + )?; + }) + } else { + None + } + }) }) .collect() } else { @@ -431,7 +426,7 @@ impl ClassDeriveOpts { let (_impl_generics, ty_generics, _where_clause) = self.generics.split_for_impl(); if let Some(data) = self.data.as_ref().take_struct() { data.fields.iter().filter_map(|f| { - f.attribute.as_ref().map(|a| { + f.attribute.as_ref().and_then(|a| { if let Some(ref ident) = f.ident.as_ref() { let ty = &f.ty; // Check if type is an integer @@ -491,7 +486,7 @@ impl ClassDeriveOpts { } else { None } - }).flatten() + }) }).collect() } else { vec![] diff --git a/simics-rs/simics-macro/src/interface/mod.rs b/simics-rs/simics-macro/src/interface/mod.rs index 9776d0e6..017cfccf 100644 --- a/simics-rs/simics-macro/src/interface/mod.rs +++ b/simics-rs/simics-macro/src/interface/mod.rs @@ -183,6 +183,7 @@ impl ToTokens for Interface { ); }; + #[allow(unused)] let internal_interface_default_args = input .items .iter() @@ -194,7 +195,6 @@ impl ToTokens for Interface { } }) .map(|s| { - #[allow(unused)] // NOTE: False positive let ffi_fn_name = format_ident!("{}_{}", name, s.ident.to_string()); let name = &s.ident; @@ -366,8 +366,7 @@ impl CInterface { let name = format_ident!( "{}", interface_attr_opts - .map(|o| o.name) - .flatten() + .and_then(|o| o.name) .unwrap_or(item.sig.ident.to_string()) ); diff --git a/simics-rs/simics-sign/src/lib.rs b/simics-rs/simics-sign/src/lib.rs index d2ed1cbc..f5f08ada 100644 --- a/simics-rs/simics-sign/src/lib.rs +++ b/simics-rs/simics-sign/src/lib.rs @@ -518,11 +518,21 @@ mod test { use super::Sign; use std::{env::var, path::PathBuf}; + #[cfg(debug_assertions)] + const TARGET_DIR: &str = "debug"; + + #[cfg(not(debug_assertions))] + const TARGET_DIR: &str = "release"; + #[test] #[cfg(windows)] fn test_windows() { let manifest_dir = PathBuf::from(var("CARGO_MANIFEST_DIR").unwrap()); - let hello_world_dll = manifest_dir.join("hello_world.dll"); + let workspace_dir = manifest_dir.parent().unwrap(); + let hello_world = workspace_dir + .join("target") + .join(TARGET_DIR) + .join("hello_world.dll"); let _signed = Sign::sign(hello_world).unwrap().data().unwrap(); } @@ -530,7 +540,12 @@ mod test { #[cfg(unix)] fn test_linux() { let manifest_dir = PathBuf::from(var("CARGO_MANIFEST_DIR").unwrap()); - let hello_world = manifest_dir.join("libhello_world.so"); + let workspace_dir = manifest_dir.parent().unwrap(); + let hello_world = workspace_dir + .join("target") + .join(TARGET_DIR) + .join("libhello_world.so"); + println!("{:?}", hello_world); let _signed = Sign::new(hello_world).unwrap().data().unwrap(); } } diff --git a/simics-rs/simics-test/src/lib.rs b/simics-rs/simics-test/src/lib.rs index e43157ad..9e29fb05 100644 --- a/simics-rs/simics-test/src/lib.rs +++ b/simics-rs/simics-test/src/lib.rs @@ -431,7 +431,7 @@ impl TestEnv { spec.package_crates.iter().try_for_each(|c| { // change directory to c - set_current_dir(&c) + set_current_dir(c) .map_err(|e| anyhow!("Failed to set current directory to {c:?}: {e}"))?; #[cfg(debug_assertions)] diff --git a/simics-rs/simics/src/api/base/attr_value.rs b/simics-rs/simics/src/api/base/attr_value.rs index 24e998f4..adff29b1 100644 --- a/simics-rs/simics/src/api/base/attr_value.rs +++ b/simics-rs/simics/src/api/base/attr_value.rs @@ -2081,7 +2081,7 @@ impl TryFrom for u64 { fn try_from(value: AttrValueType) -> Result { if let Some(unsigned) = value.as_unsigned() { - unsigned.try_into().map_err(Error::from) + Ok(unsigned) } else if let Some(signed) = value.as_signed() { // For signed values, we can try to convert them into unsigned // values if they are non-negative. @@ -2211,7 +2211,7 @@ impl TryFrom for i64 { fn try_from(value: AttrValueType) -> Result { if let Some(signed) = value.as_signed() { - signed.try_into().map_err(Error::from) + Ok(signed) } else if let Some(unsigned) = value.as_unsigned() { // For unsigned values, we can try to convert them into signed // values if they are within the range of the signed type. @@ -2278,7 +2278,7 @@ impl TryFrom for f64 { fn try_from(value: AttrValueType) -> Result { if let Some(f) = value.as_float() { - f.try_into().map_err(Error::from) + Ok(f) } else { Err(Error::FromAttrValueTypeConversionError { ty: type_name::().to_string(), @@ -3740,11 +3740,11 @@ pub fn free_attribute(attr: AttrValue) { unsafe { SIM_free_attribute(attr.0) } } +#[allow(clippy::unwrap_used)] #[cfg(test)] pub mod test { use crate as simics; use crate::{attr_list_set_item, AttrValue}; - use simics_api_sys::attr_value; use simics_macro::{ FromAttrValueDict, FromAttrValueList, IntoAttrValueDict, IntoAttrValueList, }; @@ -4078,14 +4078,12 @@ pub mod test { #[test] fn test_bool() { - assert_eq!( - bool::try_from(AttrValue::boolean(false)).unwrap(), - false, + assert!( + !bool::try_from(AttrValue::boolean(false)).unwrap(), "Boolean conversion failed" ); - assert_eq!( + assert!( bool::try_from(AttrValue::boolean(true)).unwrap(), - true, "Boolean conversion failed" ); } @@ -4137,7 +4135,7 @@ pub mod test { let hash_set: HashSet = [1, 2, 3, 4, 5].iter().cloned().collect(); let hash_map: HashMap = [(1, 2), (3, 4), (5, 6)].iter().cloned().collect(); assert_eq!( - Option::::try_from(AttrValue::try_from(option.clone()).unwrap()).unwrap(), + Option::::try_from(AttrValue::try_from(option).unwrap()).unwrap(), option ); assert_eq!( @@ -4227,7 +4225,7 @@ pub mod test { // _hash_map: [(0, 1), (2, 3)].iter().cloned().collect(), }; - let attr = AttrValue::try_from(instance.clone()).unwrap(); + let attr = AttrValue::from(instance.clone()); let instance_re = TestList::try_from(attr).unwrap(); assert_eq!(instance, instance_re); } @@ -4296,7 +4294,7 @@ pub mod test { // _hash_map: [(0, 1), (2, 3)].iter().cloned().collect(), }; - let attr = AttrValue::try_from(instance.clone()).unwrap(); + let attr = AttrValue::from(instance.clone()); let instance_re = TestDict::try_from(attr).unwrap(); assert_eq!(instance, instance_re); } diff --git a/simics-rs/simics/src/api/base/conf_object.rs b/simics-rs/simics/src/api/base/conf_object.rs index 831e6d02..f239a7f6 100644 --- a/simics-rs/simics/src/api/base/conf_object.rs +++ b/simics-rs/simics/src/api/base/conf_object.rs @@ -25,6 +25,7 @@ use crate::{ use raw_cstr::{raw_cstr, AsRawCstr}; use std::{ ffi::{c_void, CStr}, + fmt::Display, ops::Range, ptr::null_mut, }; @@ -69,16 +70,16 @@ pub enum TypeStringListType { OneOrMore(Box), } -impl ToString for TypeStringListType { - fn to_string(&self) -> String { +impl Display for TypeStringListType { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { match self { - TypeStringListType::Type(t) => t.to_string(), + TypeStringListType::Type(t) => write!(f, "{}", t), TypeStringListType::Range(r, t) => { - format!("{}{{{}:{}}}", t.to_string(), r.start, r.end) + write!(f, "{}{{{}:{}}}", t, r.start, r.end) } - TypeStringListType::Exact(c, t) => format!("{}{{{}}}", t.to_string(), c), - TypeStringListType::ZeroOrMore(t) => format!("{}*", t.to_string()), - TypeStringListType::OneOrMore(t) => format!("{}+", t.to_string()), + TypeStringListType::Exact(c, t) => write!(f, "{}{{{}}}", t, c), + TypeStringListType::ZeroOrMore(t) => write!(f, "{}*", t), + TypeStringListType::OneOrMore(t) => write!(f, "{}+", t), } } } @@ -149,23 +150,24 @@ pub enum TypeStringType { Or(Box, Box), } -impl ToString for TypeStringType { - fn to_string(&self) -> String { +impl Display for TypeStringType { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { match self { - TypeStringType::Integer => "i".to_string(), - TypeStringType::Float => "f".to_string(), - TypeStringType::String => "s".to_string(), - TypeStringType::Boolean => "b".to_string(), - TypeStringType::Object => "o".to_string(), - TypeStringType::Data => "d".to_string(), - TypeStringType::Nil => "n".to_string(), - TypeStringType::Dictionary => "D".to_string(), - TypeStringType::Any => "a".to_string(), - TypeStringType::List(l) => format!( + TypeStringType::Integer => write!(f, "i"), + TypeStringType::Float => write!(f, "f"), + TypeStringType::String => write!(f, "s"), + TypeStringType::Boolean => write!(f, "b"), + TypeStringType::Object => write!(f, "o"), + TypeStringType::Data => write!(f, "d"), + TypeStringType::Nil => write!(f, "n"), + TypeStringType::Dictionary => write!(f, "D"), + TypeStringType::Any => write!(f, "a"), + TypeStringType::List(l) => write!( + f, "[{}]", l.iter().map(|li| li.to_string()).collect::() ), - TypeStringType::Or(l, r) => format!("{}|{}", l.to_string(), r.to_string()), + TypeStringType::Or(l, r) => write!(f, "{}|{}", l, r), } } } diff --git a/simics-rs/simics/src/api/simulator/embed.rs b/simics-rs/simics/src/api/simulator/embed.rs index 05799fa9..c629f03b 100644 --- a/simics-rs/simics/src/api/simulator/embed.rs +++ b/simics-rs/simics/src/api/simulator/embed.rs @@ -14,7 +14,11 @@ use crate::{ }; use paste::paste; use raw_cstr::raw_cstr; -use std::{mem::forget, ptr::null}; +use std::{ + fmt::{self, Display, Formatter}, + mem::forget, + ptr::null, +}; #[cfg(simics_version_6)] /// Alias for `cpu_variant_t` @@ -50,10 +54,10 @@ pub enum DeprecationLevel { NewAndFutureDeprecated = 2, } -impl ToString for DeprecationLevel { - fn to_string(&self) -> String { +impl Display for DeprecationLevel { + fn fmt(&self, f: &mut Formatter<'_>) -> fmt::Result { let val: u32 = *self as u32; - val.to_string() + write!(f, "{}", val) } } diff --git a/simics-rs/tests/packages/hello-world/Cargo.toml b/simics-rs/tests/packages/hello-world/Cargo.toml index cbcbc9d6..5013ddc7 100644 --- a/simics-rs/tests/packages/hello-world/Cargo.toml +++ b/simics-rs/tests/packages/hello-world/Cargo.toml @@ -3,7 +3,7 @@ [package] name = "hello-world" -version = "0.1.0" +version = "6.0.0" authors = ["Rowan Hart "] edition = "2021" description = "A simple module demonstrating the Intel Simics Simulator API" @@ -27,3 +27,14 @@ crate-type = ["cdylib"] [dependencies] simics = { version = "0.1.0", path = "../../../simics" } ffi = "0.1.1" + +[build-dependencies] +simics-build-utils = { version = "0.1.0", path = "../../../simics-build-utils" } + +[dev-dependencies] +ispm-wrapper = { version = "0.1.0", path = "../../../ispm-wrapper" } +simics-test = { version = "0.1.0", path = "../../../simics-test" } +anyhow = "1.0.80" +command-ext = "0.1.2" +indoc = "2.0.4" +versions = { version = "6.1.0", features = ["serde"] } diff --git a/simics-rs/tests/packages/hello-world/build.rs b/simics-rs/tests/packages/hello-world/build.rs index 9d0c9a3f..5a799162 100644 --- a/simics-rs/tests/packages/hello-world/build.rs +++ b/simics-rs/tests/packages/hello-world/build.rs @@ -1,4 +1,8 @@ // Copyright (C) 2023 Intel Corporation // SPDX-License-Identifier: Apache-2.0 -fn main() {} +use simics_build_utils::emit_link_info; + +fn main() { + emit_link_info().unwrap(); +} diff --git a/simics-rs/tests/packages/hello-world/src/lib.rs b/simics-rs/tests/packages/hello-world/src/lib.rs index 2d65696a..74301c5f 100644 --- a/simics-rs/tests/packages/hello-world/src/lib.rs +++ b/simics-rs/tests/packages/hello-world/src/lib.rs @@ -15,7 +15,7 @@ use simics::{ #[class(name = "HelloWorld")] #[derive(FromConfObject, Default)] struct HelloWorld { - #[class(attribute)] + #[class(attribute(optional))] pub message: String, } @@ -36,7 +36,7 @@ impl HelloWorld { #[class(name = "HelloWorld2")] #[derive(FromConfObject, Default)] struct HelloWorld2 { - #[class(attribute)] + #[class(attribute(optional))] pub message: String, } diff --git a/simics-rs/tests/test-packages/Cargo.toml b/simics-rs/tests/test-packages/Cargo.toml deleted file mode 100644 index 4bdb4de2..00000000 --- a/simics-rs/tests/test-packages/Cargo.toml +++ /dev/null @@ -1,30 +0,0 @@ -# Copyright (C) 2024 Intel Corporation -# SPDX-License-Identifier: Apache-2.0 - -[package] -name = "test-packages" -version = "0.1.0" -authors = ["Rowan Hart "] -edition = "2021" -description = "Intel Simics Simulator package tests" -documentation = "" -readme = "../README.md" -homepage = "" -repository = "" -license = "Apache-2.0" -keywords = ["simics", "simulator", "intel", "x86", "risc", "modeling"] -categories = [ - "simulation", - "virtualization", - "hardware-support", - "api-bindings", - "emulators", -] - -[dependencies] -ispm-wrapper = { version = "0.1.0", path = "../../ispm-wrapper" } -simics-test = { version = "0.1.0", path = "../../simics-test" } -anyhow = "1.0.80" -command-ext = "0.1.2" -indoc = "2.0.4" -versions = { version = "6.1.0", features = ["serde"] } diff --git a/simics-rs/tests/test-packages/build.rs b/simics-rs/tests/test-packages/build.rs deleted file mode 100644 index 82c48f6c..00000000 --- a/simics-rs/tests/test-packages/build.rs +++ /dev/null @@ -1,4 +0,0 @@ -// Copyright (C) 2024 Intel Corporation -// SPDX-License-Identifier: Apache-2.0 - -fn main() {} diff --git a/simics-rs/tests/test-packages/src/lib.rs b/simics-rs/tests/test-packages/src/lib.rs deleted file mode 100644 index ba8cfada..00000000 --- a/simics-rs/tests/test-packages/src/lib.rs +++ /dev/null @@ -1,7 +0,0 @@ -// Copyright (C) 2024 Intel Corporation -// SPDX-License-Identifier: Apache-2.0 - -pub const CARGO_MANIFEST_DIR: &str = env!("CARGO_MANIFEST_DIR"); - -#[test] -fn test_sanity() {} diff --git a/simics-rs/tests/test-packages/tests/hello_world.rs b/simics-rs/tests/test-packages/tests/hello_world.rs deleted file mode 100644 index d2c69294..00000000 --- a/simics-rs/tests/test-packages/tests/hello_world.rs +++ /dev/null @@ -1,37 +0,0 @@ -// Copyright (C) 2024 Intel Corporation -// SPDX-License-Identifier: Apache-2.0 - -use anyhow::{anyhow, Result}; -use indoc::indoc; -use ispm_wrapper::data::ProjectPackage; -use simics_test::TestEnvSpec; -use std::path::PathBuf; -use test_packages::CARGO_MANIFEST_DIR; -use versions::Versioning; - -#[test] -fn test_hello_world() -> Result<()> { - TestEnvSpec::builder() - .package_crates([PathBuf::from(CARGO_MANIFEST_DIR).join("../packages/hello-world")]) - .extra_packages([ProjectPackage::builder() - .package_number(1000) - .version(Versioning::new("latest").ok_or_else(|| anyhow!("Invalid version"))?) - .build()]) - .name("hello-world") - .cargo_target_tmpdir(env!("CARGO_TARGET_TMPDIR")) - .build() - .to_env()? - .test(indoc! {r#" - load-module HelloWorld - @hw = SIM_create_object(SIM_get_class("HelloWorld"), "hw", []) - @hw.message = "Hello, World!" - @hw.iface.HelloWorldInterface.say() - @hw.iface.HelloWorldInterface2.say2() - @hw2 = SIM_create_object(SIM_get_class("HelloWorld2"), "hw2", []) - @hw2.message = "Hello, World! (Again)" - @hw2.iface.HelloWorld2Interface.say() - @hw2.iface.HelloWorld2Interface2.say2() - "#})?; - - Ok(()) -} diff --git a/src/lib.rs b/src/lib.rs index 2057563c..4676a701 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -45,7 +45,7 @@ use serde::{Deserialize, Serialize}; use simics::{ break_simulation, class, debug, error, free_attribute, get_class, get_interface, get_processor_number, info, lookup_file, object_clock, run_command, run_python, simics_init, - trace, AsConfObject, BreakpointId, ClassCreate, ClassObjectsFinalize, ConfObject, + trace, version_base, AsConfObject, BreakpointId, ClassCreate, ClassObjectsFinalize, ConfObject, CoreBreakpointMemopHap, CoreExceptionHap, CoreMagicInstructionHap, CoreSimulationStoppedHap, CpuInstrumentationSubscribeInterface, Event, EventClassFlag, FromConfObject, HapHandle, Interface, IntoAttrValueDict, @@ -69,12 +69,14 @@ use std::{ fs::File, path::PathBuf, ptr::null_mut, + str::FromStr, sync::mpsc::{Receiver, Sender}, thread::JoinHandle, time::SystemTime, }; use tracer::tsffs::{on_instruction_after, on_instruction_before}; use typed_builder::TypedBuilder; +use versions::{Requirement, Versioning}; pub(crate) mod arch; pub(crate) mod fuzzer; @@ -489,6 +491,9 @@ pub(crate) struct Tsffs { #[attr_value(skip)] /// The number of iterations which have been executed so far iterations: usize, + #[attr_value(skip)] + /// Whether snapshots are used. Snapshots are used on Simics 7.0.0 and later. + use_snapshots: bool, } impl ClassObjectsFinalize for Tsffs { @@ -569,6 +574,24 @@ impl ClassObjectsFinalize for Tsffs { ) .map_err(|_e| anyhow!("Value already set"))?; + // Check whether snapshots should be used. This is a runtime check because the module + // may be loaded in either Simics 6 or Simics 7. + let version = version_base() + .map_err(|e| anyhow!("Error getting version string: {}", e)) + .and_then(|v| { + v.split(' ') + .last() + .ok_or_else(|| anyhow!("Error parsing version string '{}'", v)) + .map(|s| s.to_string()) + }) + .and_then(|v| { + Versioning::from_str(&v).map_err(|e| anyhow!("Error parsing version string: {e}")) + })?; + + tsffs.use_snapshots = Requirement::from_str(">=7.0.0") + .map_err(|e| anyhow!("Error parsing requirement: {}", e))? + .matches(&version); + Ok(()) } } @@ -849,7 +872,7 @@ impl Tsffs { fn init() { let tsffs = Tsffs::create().expect("Failed to create class tsffs"); config::register(tsffs).expect("Failed to register config interface for tsffs"); - fuzz::register(tsffs).expect("Failed to register config interface for tsffs"); + fuzz::register(tsffs).expect("Failed to register fuzz interface for tsffs"); run_python(indoc! {r#" def init_tsffs_cmd(): try: From dfe1680730313dccbe26e8b028b1c856858a0a11 Mon Sep 17 00:00:00 2001 From: Rowan Hart Date: Fri, 19 Apr 2024 11:37:08 -0700 Subject: [PATCH 15/19] Add missing script from windows kernel fuzzing docs (#79) --- .github/workflows/docs.yml | 2 +- .../windows-kernel/run-the-fuzzer.md | 40 +++++++++++++++++++ 2 files changed, 41 insertions(+), 1 deletion(-) diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml index 8570d86a..d56e382f 100644 --- a/.github/workflows/docs.yml +++ b/.github/workflows/docs.yml @@ -44,7 +44,7 @@ jobs: - name: Install mdBook run: | - cargo install mdbook + cargo install mdbook mdbook-linkcheck - name: Build mdBook run: | diff --git a/docs/src/tutorials/windows-kernel/run-the-fuzzer.md b/docs/src/tutorials/windows-kernel/run-the-fuzzer.md index 4ec97cd5..02e9ec90 100644 --- a/docs/src/tutorials/windows-kernel/run-the-fuzzer.md +++ b/docs/src/tutorials/windows-kernel/run-the-fuzzer.md @@ -34,6 +34,7 @@ Next, we'll add a `script-branch` that will wait for our graphical breakpoint. T allows us to unattended-ly wait until the system is booted and the Simics agent, which allows us to run commands and upload files to the system, is started. + Once we get the breakpoint, we will save the booted checkpoint if we did not have one already. @@ -43,6 +44,45 @@ simulation (since we are running without VMP) will not time out. Finally, we run our fuzzer executable and wait for all commands to execute. Once the fuzzer executable runs, the fuzzer will start and the execution loop will begin. +```simics +script-branch { + board.console.con.bp-wait-for-gfx breakpoint-boot 1 + echo "Got booted breakpoint. Waiting 10 seconds..." + bp.time.wait-for seconds = 10 + echo "Got booted breakpoint, stopping..." + stop + + if not (file-exists "booted.ckpt") { + echo "Got booted BP, saving checkpoint..." + write-configuration booted.ckpt + } else { + echo "Already had checkpoint, not saving..." + } + + start-agent-manager + $matic = (agent_manager.connect-to-agent) + continue + $matic.wait-for-job + $matic.agent-poll-interval ms = 60000 + stop + load-module tsffs + init-tsffs + @tsffs.log_level = 4 + @tsffs.start_on_harness = True + @tsffs.stop_on_harness = True + @tsffs.timeout = 3.0 + @tsffs.exceptions = [13] + @tsffs.generate_random_corpus = True + @tsffs.iteration_limit = 1000 + + $matic.upload-dir -overwrite "%simics%/fuzzer/" + $matic.run "C:\\fuzzer\\fuzzer.exe" + continue + $matic.wait-for-job + echo "Done with jobs..." +} +``` + For example, you should see something like below. Note that you should see a very large initial spike in coverage on the first fuzzer execution. From 980ab1797f34a1a93492aa0e2a7eea5304519368 Mon Sep 17 00:00:00 2001 From: Robert Guenzel Date: Tue, 23 Apr 2024 17:24:01 +0200 Subject: [PATCH 16/19] Update README.md (#82) --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 86b26521..eeed9878 100644 --- a/README.md +++ b/README.md @@ -101,6 +101,6 @@ Rowan Hart Brandon Marken Ph.D. -Robert Geunzel Ph.D. - +Robert Guenzel Ph.D. + From 50f06dde53580a2f498bc0ab85dfd5f296deefb0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=90=8C=E8=90=8C=E9=85=B1?= <37472162+mengmengjiang1999@users.noreply.github.com> Date: Tue, 23 Apr 2024 23:30:38 +0800 Subject: [PATCH 17/19] Fix risc-v-kernel-module tutorial and example code (#72) Co-authored-by: Rowan Hart --- docs/src/tutorials/kernel-module/running-the-fuzzer.md | 2 +- examples/tutorials/risc-v-kernel/project/run.simics | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/src/tutorials/kernel-module/running-the-fuzzer.md b/docs/src/tutorials/kernel-module/running-the-fuzzer.md index 56559874..0de55632 100644 --- a/docs/src/tutorials/kernel-module/running-the-fuzzer.md +++ b/docs/src/tutorials/kernel-module/running-the-fuzzer.md @@ -18,7 +18,7 @@ The build script for our application created a `project` directory for us if it exist, so we'll instantiate that directory as our project with `ispm`: ```sh -ispm projects project --create 1000-latest 2096-latest 8112-latest 31337-latest \ +ispm projects project --create 1000-latest 2096-latest 2050-latest 2053-latest 8112-latest 31337-latest \ --ignore-existing-files cd project ``` diff --git a/examples/tutorials/risc-v-kernel/project/run.simics b/examples/tutorials/risc-v-kernel/project/run.simics index fc95234d..4666be21 100644 --- a/examples/tutorials/risc-v-kernel/project/run.simics +++ b/examples/tutorials/risc-v-kernel/project/run.simics @@ -7,7 +7,7 @@ init-tsffs tsffs.log-level 4 @tsffs.start_on_harness = True @tsffs.stop_on_harness = True -@tsffs.set_timeout = 3.0 +@tsffs.timeout = 3.0 @tsffs.exceptions = [14] load-target "risc-v-simple/linux" namespace = riscv machine:hardware:storage:disk1:image = "test.fs.craff" From 5da36065e37803fb41900ea98d3b0e2c475698b4 Mon Sep 17 00:00:00 2001 From: Rowan Hart Date: Thu, 25 Apr 2024 09:49:19 -0700 Subject: [PATCH 18/19] Add arm architecture (#76) --- Cargo.toml | 1 + src/arch/aarch64.rs | 1275 +++++++++++++++++++++++++++++++++++++++++ src/arch/arm.rs | 1321 +++++++++++++++++++++++++++++++++++++++++++ src/arch/mod.rs | 57 ++ src/arch/x86.rs | 4 + src/arch/x86_64.rs | 4 + src/tracer/mod.rs | 10 + 7 files changed, 2672 insertions(+) create mode 100644 src/arch/aarch64.rs create mode 100644 src/arch/arm.rs diff --git a/Cargo.toml b/Cargo.toml index 03cafce0..3660cddf 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -75,6 +75,7 @@ num-traits = "0.2.18" num-derive = "0.4.2" tracing-subscriber = "0.3.18" tracing = { version = "0.1.40", features = ["log"] } +yaxpeax-arm = "0.2.5" [dev-dependencies] simics-test = { path = "simics-rs/simics-test" } diff --git a/src/arch/aarch64.rs b/src/arch/aarch64.rs new file mode 100644 index 00000000..16f82511 --- /dev/null +++ b/src/arch/aarch64.rs @@ -0,0 +1,1275 @@ +// Copyright (C) 2024 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 + +//! Architecture-specific implementation for ARM architecture + +use crate::{ + tracer::{CmpExpr, CmpExprShift, CmpType, CmpValue, TraceEntry}, + traits::TracerDisassembler, +}; +use anyhow::{anyhow, bail, Result}; +use libafl::prelude::CmpValues; +use raw_cstr::AsRawCstr; +use simics::api::{ + get_interface, read_phys_memory, sys::instruction_handle_t, Access, ConfObject, + CpuInstructionQueryInterface, CpuInstrumentationSubscribeInterface, CycleInterface, + IntRegisterInterface, ProcessorInfoV2Interface, +}; +use std::{ffi::CStr, mem::size_of, slice::from_raw_parts}; +use yaxpeax_arch::{Decoder, U8Reader}; +use yaxpeax_arm::armv8::a64::{InstDecoder, Instruction, Opcode, Operand, ShiftStyle, SizeCode}; + +use super::ArchitectureOperations; + +pub(crate) struct AArch64ArchitectureOperations { + cpu: *mut ConfObject, + disassembler: Disassembler, + int_register: IntRegisterInterface, + processor_info_v2: ProcessorInfoV2Interface, + cpu_instruction_query: CpuInstructionQueryInterface, + cpu_instrumentation_subscribe: CpuInstrumentationSubscribeInterface, + cycle: CycleInterface, +} + +impl ArchitectureOperations for AArch64ArchitectureOperations { + const INDEX_SELECTOR_REGISTER: &'static str = "x10"; + + const ARGUMENT_REGISTER_0: &'static str = "x9"; + + const ARGUMENT_REGISTER_1: &'static str = "x8"; + + const ARGUMENT_REGISTER_2: &'static str = "x7"; + + fn new(cpu: *mut ConfObject) -> Result { + let mut processor_info_v2: ProcessorInfoV2Interface = get_interface(cpu)?; + + let arch = unsafe { CStr::from_ptr(processor_info_v2.architecture()?) } + .to_str()? + .to_string(); + + if arch == "aarch64" + || arch == "arm64" + || arch == "armv8" + || arch == "armv9" + || arch == "armv10" + { + Ok(Self { + cpu, + disassembler: Disassembler::new(), + int_register: get_interface(cpu)?, + processor_info_v2, + cpu_instruction_query: get_interface(cpu)?, + cpu_instrumentation_subscribe: get_interface(cpu)?, + cycle: get_interface(cpu)?, + }) + } else { + bail!("Architecture {} is not aarch64", arch); + } + } + + fn new_unchecked(cpu: *mut ConfObject) -> Result + where + Self: Sized, + { + Ok(Self { + cpu, + disassembler: Disassembler::new(), + int_register: get_interface(cpu)?, + processor_info_v2: get_interface(cpu)?, + cpu_instruction_query: get_interface(cpu)?, + cpu_instrumentation_subscribe: get_interface(cpu)?, + cycle: get_interface(cpu)?, + }) + } + + fn cpu(&self) -> *mut ConfObject { + self.cpu + } + + fn disassembler(&mut self) -> &mut dyn TracerDisassembler { + &mut self.disassembler + } + + fn int_register(&mut self) -> &mut IntRegisterInterface { + &mut self.int_register + } + + fn processor_info_v2(&mut self) -> &mut ProcessorInfoV2Interface { + &mut self.processor_info_v2 + } + + fn cpu_instruction_query(&mut self) -> &mut CpuInstructionQueryInterface { + &mut self.cpu_instruction_query + } + + fn cpu_instrumentation_subscribe(&mut self) -> &mut CpuInstrumentationSubscribeInterface { + &mut self.cpu_instrumentation_subscribe + } + + fn cycle(&mut self) -> &mut CycleInterface { + &mut self.cycle + } + + fn trace_pc(&mut self, instruction_query: *mut instruction_handle_t) -> Result { + let instruction_bytes = self + .cpu_instruction_query + .get_instruction_bytes(instruction_query)?; + + self.disassembler.disassemble(unsafe { + from_raw_parts(instruction_bytes.data, instruction_bytes.size) + })?; + + if self.disassembler.last_was_call() + || self.disassembler.last_was_control_flow() + || self.disassembler.last_was_ret() + { + Ok(TraceEntry::builder() + .edge(self.processor_info_v2.get_program_counter()?) + .build()) + } else { + Ok(TraceEntry::default()) + } + } + + fn trace_cmp(&mut self, instruction_query: *mut instruction_handle_t) -> Result { + let instruction_bytes = self + .cpu_instruction_query + .get_instruction_bytes(instruction_query)?; + self.disassembler.disassemble(unsafe { + from_raw_parts(instruction_bytes.data, instruction_bytes.size) + })?; + + let pc = self.processor_info_v2.get_program_counter()?; + + let mut cmp_values = Vec::new(); + + for expr in self.disassembler.cmp() { + if let Ok(value) = self.simplify(&expr) { + cmp_values.push(value); + } + } + + let cmp_value = if let (Some(l), Some(r)) = (cmp_values.first(), cmp_values.get(1)) { + match (l, r) { + (CmpValue::U8(l), CmpValue::U8(r)) => Some(CmpValues::U8((*l, *r))), + (CmpValue::I8(l), CmpValue::I8(r)) => Some(CmpValues::U8(( + u8::from_le_bytes(l.to_le_bytes()), + u8::from_le_bytes(r.to_le_bytes()), + ))), + (CmpValue::U16(l), CmpValue::U16(r)) => Some(CmpValues::U16((*l, *r))), + (CmpValue::I16(l), CmpValue::I16(r)) => Some(CmpValues::U16(( + u16::from_le_bytes(l.to_le_bytes()), + u16::from_le_bytes(r.to_le_bytes()), + ))), + (CmpValue::U32(l), CmpValue::U32(r)) => Some(CmpValues::U32((*l, *r))), + (CmpValue::I32(l), CmpValue::I32(r)) => Some(CmpValues::U32(( + u32::from_le_bytes(l.to_le_bytes()), + u32::from_le_bytes(r.to_le_bytes()), + ))), + (CmpValue::U64(l), CmpValue::U64(r)) => Some(CmpValues::U64((*l, *r))), + (CmpValue::I64(l), CmpValue::I64(r)) => Some(CmpValues::U64(( + u64::from_le_bytes(l.to_le_bytes()), + u64::from_le_bytes(r.to_le_bytes()), + ))), + (CmpValue::Expr(_), CmpValue::Expr(_)) => None, + _ => None, + } + } else { + None + }; + + Ok(TraceEntry::builder() + .cmp(( + pc, + self.disassembler.cmp_type(), + cmp_value.ok_or_else(|| anyhow!("No cmp value available"))?, + )) + .build()) + } +} + +impl AArch64ArchitectureOperations { + fn simplify(&mut self, expr: &CmpExpr) -> Result { + match expr { + CmpExpr::Deref((b, _)) => { + let v = self.simplify(b)?; + match v { + CmpValue::U64(a) => { + let address = self + .processor_info_v2 + .logical_to_physical(a, Access::Sim_Access_Read)?; + Ok(CmpValue::U64(read_phys_memory( + self.cpu, + address.address, + size_of::() as i32, + )?)) + } + CmpValue::U32(a) => { + let address = self + .processor_info_v2 + .logical_to_physical(a as u64, Access::Sim_Access_Read)?; + Ok(CmpValue::U64(read_phys_memory( + self.cpu, + address.address, + size_of::() as i32, + )?)) + } + _ => bail!("Invalid dereference size {:?}", v), + } + } + CmpExpr::Reg((n, _)) => { + let regno = self.int_register.get_number(n.as_raw_cstr()?)?; + let value = self.int_register.read(regno)?; + if self.processor_info_v2.get_logical_address_width()? as u32 / u8::BITS == 8 { + Ok(CmpValue::U64(value)) + } else { + Ok(CmpValue::U32(value as u32)) + } + } + CmpExpr::Add((l, r)) => { + let lv = self.simplify(l)?; + let rv = self.simplify(r)?; + + match (lv, rv) { + (CmpValue::U8(lu), CmpValue::U8(ru)) => Ok(CmpValue::U8(lu.wrapping_add(ru))), + (CmpValue::U8(lu), CmpValue::I8(ru)) => { + Ok(CmpValue::U8(lu.wrapping_add_signed(ru))) + } + (CmpValue::U8(lu), CmpValue::U16(ru)) => { + Ok(CmpValue::U8((lu as u16).wrapping_add(ru) as u8)) + } + (CmpValue::U8(lu), CmpValue::I16(ru)) => { + Ok(CmpValue::U8((lu as u16).wrapping_add_signed(ru) as u8)) + } + (CmpValue::U8(lu), CmpValue::U32(ru)) => { + Ok(CmpValue::U8((lu as u32).wrapping_add(ru) as u8)) + } + (CmpValue::U8(lu), CmpValue::I32(ru)) => { + Ok(CmpValue::U8((lu as u32).wrapping_add_signed(ru) as u8)) + } + (CmpValue::U8(lu), CmpValue::U64(ru)) => { + Ok(CmpValue::U8((lu as u64).wrapping_add(ru) as u8)) + } + (CmpValue::U8(lu), CmpValue::I64(ru)) => { + Ok(CmpValue::U8((lu as u64).wrapping_add_signed(ru) as u8)) + } + (CmpValue::I8(lu), CmpValue::U8(ru)) => { + Ok(CmpValue::I8(lu.wrapping_add_unsigned(ru))) + } + (CmpValue::I8(lu), CmpValue::I8(ru)) => Ok(CmpValue::I8(lu.wrapping_add(ru))), + (CmpValue::I8(lu), CmpValue::U16(ru)) => { + Ok(CmpValue::I8((lu as i16).wrapping_add_unsigned(ru) as i8)) + } + (CmpValue::I8(lu), CmpValue::I16(ru)) => { + Ok(CmpValue::I8((lu as i16).wrapping_add(ru) as i8)) + } + (CmpValue::I8(lu), CmpValue::U32(ru)) => { + Ok(CmpValue::I8((lu as i32).wrapping_add_unsigned(ru) as i8)) + } + (CmpValue::I8(lu), CmpValue::I32(ru)) => { + Ok(CmpValue::I8((lu as i32).wrapping_add(ru) as i8)) + } + (CmpValue::I8(lu), CmpValue::U64(ru)) => { + Ok(CmpValue::I8((lu as i64).wrapping_add_unsigned(ru) as i8)) + } + (CmpValue::I8(lu), CmpValue::I64(ru)) => { + Ok(CmpValue::I8((lu as i64).wrapping_add(ru) as i8)) + } + (CmpValue::U16(lu), CmpValue::U8(ru)) => { + Ok(CmpValue::U16(lu.wrapping_add(ru as u16))) + } + (CmpValue::U16(lu), CmpValue::I8(ru)) => { + Ok(CmpValue::U16(lu.wrapping_add_signed(ru as i16))) + } + (CmpValue::U16(lu), CmpValue::U16(ru)) => { + Ok(CmpValue::U16(lu.wrapping_add(ru))) + } + (CmpValue::U16(lu), CmpValue::I16(ru)) => { + Ok(CmpValue::U16(lu.wrapping_add_signed(ru))) + } + (CmpValue::U16(lu), CmpValue::U32(ru)) => { + Ok(CmpValue::U16((lu as u32).wrapping_add(ru) as u16)) + } + (CmpValue::U16(lu), CmpValue::I32(ru)) => { + Ok(CmpValue::U16((lu as u32).wrapping_add_signed(ru) as u16)) + } + (CmpValue::U16(lu), CmpValue::U64(ru)) => { + Ok(CmpValue::U16((lu as u64).wrapping_add(ru) as u16)) + } + (CmpValue::U16(lu), CmpValue::I64(ru)) => { + Ok(CmpValue::U16((lu as u64).wrapping_add_signed(ru) as u16)) + } + (CmpValue::I16(lu), CmpValue::U8(ru)) => { + Ok(CmpValue::I16(lu.wrapping_add_unsigned(ru as u16))) + } + (CmpValue::I16(lu), CmpValue::I8(ru)) => { + Ok(CmpValue::I16(lu.wrapping_add(ru as i16))) + } + (CmpValue::I16(lu), CmpValue::U16(ru)) => { + Ok(CmpValue::I16(lu.wrapping_add_unsigned(ru))) + } + (CmpValue::I16(lu), CmpValue::I16(ru)) => { + Ok(CmpValue::I16(lu.wrapping_add(ru))) + } + (CmpValue::I16(lu), CmpValue::U32(ru)) => { + Ok(CmpValue::I16((lu as i32).wrapping_add_unsigned(ru) as i16)) + } + (CmpValue::I16(lu), CmpValue::I32(ru)) => { + Ok(CmpValue::I16((lu as i32).wrapping_add(ru) as i16)) + } + (CmpValue::I16(lu), CmpValue::U64(ru)) => { + Ok(CmpValue::I16((lu as i64).wrapping_add_unsigned(ru) as i16)) + } + (CmpValue::I16(lu), CmpValue::I64(ru)) => { + Ok(CmpValue::I16((lu as i64).wrapping_add(ru) as i16)) + } + (CmpValue::U32(lu), CmpValue::U8(ru)) => { + Ok(CmpValue::U32(lu.wrapping_add(ru as u32))) + } + (CmpValue::U32(lu), CmpValue::I8(ru)) => { + Ok(CmpValue::U32(lu.wrapping_add_signed(ru as i32))) + } + (CmpValue::U32(lu), CmpValue::U16(ru)) => { + Ok(CmpValue::U32(lu.wrapping_add(ru as u32))) + } + (CmpValue::U32(lu), CmpValue::I16(ru)) => { + Ok(CmpValue::U32(lu.wrapping_add_signed(ru as i32))) + } + (CmpValue::U32(lu), CmpValue::U32(ru)) => { + Ok(CmpValue::U32(lu.wrapping_add(ru))) + } + (CmpValue::U32(lu), CmpValue::I32(ru)) => { + Ok(CmpValue::U32(lu.wrapping_add_signed(ru))) + } + (CmpValue::U32(lu), CmpValue::U64(ru)) => { + Ok(CmpValue::U32((lu as u64).wrapping_add(ru) as u32)) + } + (CmpValue::U32(lu), CmpValue::I64(ru)) => { + Ok(CmpValue::U32((lu as u64).wrapping_add_signed(ru) as u32)) + } + (CmpValue::I32(lu), CmpValue::U8(ru)) => { + Ok(CmpValue::I32(lu.wrapping_add_unsigned(ru as u32))) + } + (CmpValue::I32(lu), CmpValue::I8(ru)) => { + Ok(CmpValue::I32(lu.wrapping_add(ru as i32))) + } + (CmpValue::I32(lu), CmpValue::U16(ru)) => { + Ok(CmpValue::I32(lu.wrapping_add_unsigned(ru as u32))) + } + (CmpValue::I32(lu), CmpValue::I16(ru)) => { + Ok(CmpValue::I32(lu.wrapping_add(ru as i32))) + } + (CmpValue::I32(lu), CmpValue::U32(ru)) => { + Ok(CmpValue::I32(lu.wrapping_add_unsigned(ru))) + } + (CmpValue::I32(lu), CmpValue::I32(ru)) => { + Ok(CmpValue::I32(lu.wrapping_add(ru))) + } + (CmpValue::I32(lu), CmpValue::U64(ru)) => { + Ok(CmpValue::I32((lu as i64).wrapping_add_unsigned(ru) as i32)) + } + (CmpValue::I32(lu), CmpValue::I64(ru)) => { + Ok(CmpValue::I32((lu as i64).wrapping_add(ru) as i32)) + } + (CmpValue::U64(lu), CmpValue::U8(ru)) => { + Ok(CmpValue::U64(lu.wrapping_add(ru as u64))) + } + (CmpValue::U64(lu), CmpValue::I8(ru)) => { + Ok(CmpValue::U64(lu.wrapping_add_signed(ru as i64))) + } + (CmpValue::U64(lu), CmpValue::U16(ru)) => { + Ok(CmpValue::U64(lu.wrapping_add(ru as u64))) + } + (CmpValue::U64(lu), CmpValue::I16(ru)) => { + Ok(CmpValue::U64(lu.wrapping_add_signed(ru as i64))) + } + (CmpValue::U64(lu), CmpValue::U32(ru)) => { + Ok(CmpValue::U64(lu.wrapping_add(ru as u64))) + } + (CmpValue::U64(lu), CmpValue::I32(ru)) => { + Ok(CmpValue::U64(lu.wrapping_add_signed(ru as i64))) + } + (CmpValue::U64(lu), CmpValue::U64(ru)) => { + Ok(CmpValue::U64(lu.wrapping_add(ru))) + } + (CmpValue::U64(lu), CmpValue::I64(ru)) => { + Ok(CmpValue::U64(lu.wrapping_add_signed(ru))) + } + (CmpValue::I64(lu), CmpValue::U8(ru)) => { + Ok(CmpValue::I64(lu.wrapping_add_unsigned(ru as u64))) + } + (CmpValue::I64(lu), CmpValue::I8(ru)) => { + Ok(CmpValue::I64(lu.wrapping_add(ru as i64))) + } + (CmpValue::I64(lu), CmpValue::U16(ru)) => { + Ok(CmpValue::I64(lu.wrapping_add_unsigned(ru as u64))) + } + (CmpValue::I64(lu), CmpValue::I16(ru)) => { + Ok(CmpValue::I64(lu.wrapping_add(ru as i64))) + } + (CmpValue::I64(lu), CmpValue::U32(ru)) => { + Ok(CmpValue::I64(lu.wrapping_add_unsigned(ru as u64))) + } + (CmpValue::I64(lu), CmpValue::I32(ru)) => { + Ok(CmpValue::I64(lu.wrapping_add(ru as i64))) + } + (CmpValue::I64(lu), CmpValue::U64(ru)) => { + Ok(CmpValue::I64(lu.wrapping_add_unsigned(ru))) + } + (CmpValue::I64(lu), CmpValue::I64(ru)) => { + Ok(CmpValue::I64(lu.wrapping_add(ru))) + } + _ => bail!("Cannot multiply non-integral types"), + } + } + CmpExpr::Sub((l, r)) => { + let lv = self.simplify(l)?; + let rv = self.simplify(r)?; + + match (lv, rv) { + (CmpValue::U8(lu), CmpValue::U8(ru)) => Ok(CmpValue::U8(lu.wrapping_sub(ru))), + (CmpValue::U8(lu), CmpValue::I8(ru)) => { + Ok(CmpValue::U8(lu.wrapping_add_signed(-ru))) + } + (CmpValue::U8(lu), CmpValue::U16(ru)) => { + Ok(CmpValue::U8((lu as u16).wrapping_sub(ru) as u8)) + } + (CmpValue::U8(lu), CmpValue::I16(ru)) => { + Ok(CmpValue::U8((lu as u16).wrapping_add_signed(-ru) as u8)) + } + (CmpValue::U8(lu), CmpValue::U32(ru)) => { + Ok(CmpValue::U8((lu as u32).wrapping_sub(ru) as u8)) + } + (CmpValue::U8(lu), CmpValue::I32(ru)) => { + Ok(CmpValue::U8((lu as u32).wrapping_add_signed(-ru) as u8)) + } + (CmpValue::U8(lu), CmpValue::U64(ru)) => { + Ok(CmpValue::U8((lu as u64).wrapping_sub(ru) as u8)) + } + (CmpValue::U8(lu), CmpValue::I64(ru)) => { + Ok(CmpValue::U8((lu as u64).wrapping_add_signed(-ru) as u8)) + } + (CmpValue::I8(lu), CmpValue::U8(ru)) => { + Ok(CmpValue::I8(lu.wrapping_add_unsigned(ru))) + } + (CmpValue::I8(lu), CmpValue::I8(ru)) => Ok(CmpValue::I8(lu.wrapping_sub(ru))), + (CmpValue::I8(lu), CmpValue::U16(ru)) => { + Ok(CmpValue::I8((lu as i16).wrapping_add_unsigned(ru) as i8)) + } + (CmpValue::I8(lu), CmpValue::I16(ru)) => { + Ok(CmpValue::I8((lu as i16).wrapping_sub(ru) as i8)) + } + (CmpValue::I8(lu), CmpValue::U32(ru)) => { + Ok(CmpValue::I8((lu as i32).wrapping_add_unsigned(ru) as i8)) + } + (CmpValue::I8(lu), CmpValue::I32(ru)) => { + Ok(CmpValue::I8((lu as i32).wrapping_sub(ru) as i8)) + } + (CmpValue::I8(lu), CmpValue::U64(ru)) => { + Ok(CmpValue::I8((lu as i64).wrapping_add_unsigned(ru) as i8)) + } + (CmpValue::I8(lu), CmpValue::I64(ru)) => { + Ok(CmpValue::I8((lu as i64).wrapping_sub(ru) as i8)) + } + (CmpValue::U16(lu), CmpValue::U8(ru)) => { + Ok(CmpValue::U16(lu.wrapping_sub(ru as u16))) + } + (CmpValue::U16(lu), CmpValue::I8(ru)) => { + Ok(CmpValue::U16(lu.wrapping_add_signed(-ru as i16))) + } + (CmpValue::U16(lu), CmpValue::U16(ru)) => { + Ok(CmpValue::U16(lu.wrapping_sub(ru))) + } + (CmpValue::U16(lu), CmpValue::I16(ru)) => { + Ok(CmpValue::U16(lu.wrapping_add_signed(-ru))) + } + (CmpValue::U16(lu), CmpValue::U32(ru)) => { + Ok(CmpValue::U16((lu as u32).wrapping_sub(ru) as u16)) + } + (CmpValue::U16(lu), CmpValue::I32(ru)) => { + Ok(CmpValue::U16((lu as u32).wrapping_add_signed(-ru) as u16)) + } + (CmpValue::U16(lu), CmpValue::U64(ru)) => { + Ok(CmpValue::U16((lu as u64).wrapping_sub(ru) as u16)) + } + (CmpValue::U16(lu), CmpValue::I64(ru)) => { + Ok(CmpValue::U16((lu as u64).wrapping_add_signed(-ru) as u16)) + } + (CmpValue::I16(lu), CmpValue::U8(ru)) => { + Ok(CmpValue::I16(lu.wrapping_add_unsigned(ru as u16))) + } + (CmpValue::I16(lu), CmpValue::I8(ru)) => { + Ok(CmpValue::I16(lu.wrapping_sub(ru as i16))) + } + (CmpValue::I16(lu), CmpValue::U16(ru)) => { + Ok(CmpValue::I16(lu.wrapping_add_unsigned(ru))) + } + (CmpValue::I16(lu), CmpValue::I16(ru)) => { + Ok(CmpValue::I16(lu.wrapping_sub(ru))) + } + (CmpValue::I16(lu), CmpValue::U32(ru)) => { + Ok(CmpValue::I16((lu as i32).wrapping_add_unsigned(ru) as i16)) + } + (CmpValue::I16(lu), CmpValue::I32(ru)) => { + Ok(CmpValue::I16((lu as i32).wrapping_sub(ru) as i16)) + } + (CmpValue::I16(lu), CmpValue::U64(ru)) => { + Ok(CmpValue::I16((lu as i64).wrapping_add_unsigned(ru) as i16)) + } + (CmpValue::I16(lu), CmpValue::I64(ru)) => { + Ok(CmpValue::I16((lu as i64).wrapping_sub(ru) as i16)) + } + (CmpValue::U32(lu), CmpValue::U8(ru)) => { + Ok(CmpValue::U32(lu.wrapping_sub(ru as u32))) + } + (CmpValue::U32(lu), CmpValue::I8(ru)) => { + Ok(CmpValue::U32(lu.wrapping_add_signed(-ru as i32))) + } + (CmpValue::U32(lu), CmpValue::U16(ru)) => { + Ok(CmpValue::U32(lu.wrapping_sub(ru as u32))) + } + (CmpValue::U32(lu), CmpValue::I16(ru)) => { + Ok(CmpValue::U32(lu.wrapping_add_signed(-ru as i32))) + } + (CmpValue::U32(lu), CmpValue::U32(ru)) => { + Ok(CmpValue::U32(lu.wrapping_sub(ru))) + } + (CmpValue::U32(lu), CmpValue::I32(ru)) => { + Ok(CmpValue::U32(lu.wrapping_add_signed(-ru))) + } + (CmpValue::U32(lu), CmpValue::U64(ru)) => { + Ok(CmpValue::U32((lu as u64).wrapping_sub(ru) as u32)) + } + (CmpValue::U32(lu), CmpValue::I64(ru)) => { + Ok(CmpValue::U32((lu as u64).wrapping_add_signed(-ru) as u32)) + } + (CmpValue::I32(lu), CmpValue::U8(ru)) => { + Ok(CmpValue::I32(lu.wrapping_add_unsigned(ru as u32))) + } + (CmpValue::I32(lu), CmpValue::I8(ru)) => { + Ok(CmpValue::I32(lu.wrapping_sub(ru as i32))) + } + (CmpValue::I32(lu), CmpValue::U16(ru)) => { + Ok(CmpValue::I32(lu.wrapping_add_unsigned(ru as u32))) + } + (CmpValue::I32(lu), CmpValue::I16(ru)) => { + Ok(CmpValue::I32(lu.wrapping_sub(ru as i32))) + } + (CmpValue::I32(lu), CmpValue::U32(ru)) => { + Ok(CmpValue::I32(lu.wrapping_add_unsigned(ru))) + } + (CmpValue::I32(lu), CmpValue::I32(ru)) => { + Ok(CmpValue::I32(lu.wrapping_sub(ru))) + } + (CmpValue::I32(lu), CmpValue::U64(ru)) => { + Ok(CmpValue::I32((lu as i64).wrapping_add_unsigned(ru) as i32)) + } + (CmpValue::I32(lu), CmpValue::I64(ru)) => { + Ok(CmpValue::I32((lu as i64).wrapping_sub(ru) as i32)) + } + (CmpValue::U64(lu), CmpValue::U8(ru)) => { + Ok(CmpValue::U64(lu.wrapping_sub(ru as u64))) + } + (CmpValue::U64(lu), CmpValue::I8(ru)) => { + Ok(CmpValue::U64(lu.wrapping_add_signed(-ru as i64))) + } + (CmpValue::U64(lu), CmpValue::U16(ru)) => { + Ok(CmpValue::U64(lu.wrapping_sub(ru as u64))) + } + (CmpValue::U64(lu), CmpValue::I16(ru)) => { + Ok(CmpValue::U64(lu.wrapping_add_signed(-ru as i64))) + } + (CmpValue::U64(lu), CmpValue::U32(ru)) => { + Ok(CmpValue::U64(lu.wrapping_sub(ru as u64))) + } + (CmpValue::U64(lu), CmpValue::I32(ru)) => { + Ok(CmpValue::U64(lu.wrapping_add_signed(-ru as i64))) + } + (CmpValue::U64(lu), CmpValue::U64(ru)) => { + Ok(CmpValue::U64(lu.wrapping_sub(ru))) + } + (CmpValue::U64(lu), CmpValue::I64(ru)) => { + Ok(CmpValue::U64(lu.wrapping_add_signed(-ru))) + } + (CmpValue::I64(lu), CmpValue::U8(ru)) => { + Ok(CmpValue::I64(lu.wrapping_add_unsigned(ru as u64))) + } + (CmpValue::I64(lu), CmpValue::I8(ru)) => { + Ok(CmpValue::I64(lu.wrapping_sub(ru as i64))) + } + (CmpValue::I64(lu), CmpValue::U16(ru)) => { + Ok(CmpValue::I64(lu.wrapping_add_unsigned(ru as u64))) + } + (CmpValue::I64(lu), CmpValue::I16(ru)) => { + Ok(CmpValue::I64(lu.wrapping_sub(ru as i64))) + } + (CmpValue::I64(lu), CmpValue::U32(ru)) => { + Ok(CmpValue::I64(lu.wrapping_add_unsigned(ru as u64))) + } + (CmpValue::I64(lu), CmpValue::I32(ru)) => { + Ok(CmpValue::I64(lu.wrapping_sub(ru as i64))) + } + (CmpValue::I64(lu), CmpValue::U64(ru)) => { + Ok(CmpValue::I64(lu.wrapping_add_unsigned(ru))) + } + (CmpValue::I64(lu), CmpValue::I64(ru)) => { + Ok(CmpValue::I64(lu.wrapping_sub(ru))) + } + _ => bail!("Cannot multiply non-integral types"), + } + } + CmpExpr::Shift((shiftee, shifter, typ)) => { + let shiftee = self.simplify(shiftee)?; + let shifter = self.simplify(shifter)?; + + match (shiftee, shifter) { + (CmpValue::U8(lu), CmpValue::U8(ru)) => match typ { + CmpExprShift::Lsl => Ok(CmpValue::U8(lu.wrapping_shl(ru as u32))), + CmpExprShift::Lsr => Ok(CmpValue::U8(lu.wrapping_shr(ru as u32))), + CmpExprShift::Asr => Ok(CmpValue::U8(lu.wrapping_shr(ru as u32))), + CmpExprShift::Ror => Ok(CmpValue::U8(lu.rotate_right(ru as u32))), + }, + (CmpValue::U8(lu), CmpValue::I8(ri)) => { + let ru = ri as u8; + match typ { + CmpExprShift::Lsl => Ok(CmpValue::U8(lu.wrapping_shl(ru as u32))), + CmpExprShift::Lsr => Ok(CmpValue::U8(lu.wrapping_shr(ru as u32))), + CmpExprShift::Asr => Ok(CmpValue::U8(lu.wrapping_shr(ru as u32))), + CmpExprShift::Ror => Ok(CmpValue::U8(lu.rotate_right(ru as u32))), + } + } + (CmpValue::U8(lu), CmpValue::U16(ru)) => match typ { + CmpExprShift::Lsl => Ok(CmpValue::U8(lu.wrapping_shl(ru as u32))), + CmpExprShift::Lsr => Ok(CmpValue::U8(lu.wrapping_shr(ru as u32))), + CmpExprShift::Asr => Ok(CmpValue::U8(lu.wrapping_shr(ru as u32))), + CmpExprShift::Ror => Ok(CmpValue::U8(lu.rotate_right(ru as u32))), + }, + (CmpValue::U8(lu), CmpValue::I16(ri)) => match typ { + CmpExprShift::Lsl => Ok(CmpValue::U8(lu.wrapping_shl(ri as u32))), + CmpExprShift::Lsr => Ok(CmpValue::U8(lu.wrapping_shr(ri as u32))), + CmpExprShift::Asr => Ok(CmpValue::U8(lu.wrapping_shr(ri as u32))), + CmpExprShift::Ror => Ok(CmpValue::U8(lu.rotate_right(ri as u32))), + }, + (CmpValue::U8(lu), CmpValue::U32(ru)) => match typ { + CmpExprShift::Lsl => Ok(CmpValue::U8(lu.wrapping_shl(ru))), + CmpExprShift::Lsr => Ok(CmpValue::U8(lu.wrapping_shr(ru))), + CmpExprShift::Asr => Ok(CmpValue::U8(lu.wrapping_shr(ru))), + CmpExprShift::Ror => Ok(CmpValue::U8(lu.rotate_right(ru))), + }, + (CmpValue::U8(lu), CmpValue::I32(ri)) => match typ { + CmpExprShift::Lsl => Ok(CmpValue::U8(lu.wrapping_shl(ri as u32))), + CmpExprShift::Lsr => Ok(CmpValue::U8(lu.wrapping_shr(ri as u32))), + CmpExprShift::Asr => Ok(CmpValue::U8(lu.wrapping_shr(ri as u32))), + CmpExprShift::Ror => Ok(CmpValue::U8(lu.rotate_right(ri as u32))), + }, + (CmpValue::U8(lu), CmpValue::U64(ru)) => match typ { + CmpExprShift::Lsl => Ok(CmpValue::U8(lu.wrapping_shl(ru as u32))), + CmpExprShift::Lsr => Ok(CmpValue::U8(lu.wrapping_shr(ru as u32))), + CmpExprShift::Asr => Ok(CmpValue::U8(lu.wrapping_shr(ru as u32))), + CmpExprShift::Ror => Ok(CmpValue::U8(lu.rotate_right(ru as u32))), + }, + (CmpValue::U8(lu), CmpValue::I64(ri)) => match typ { + CmpExprShift::Lsl => Ok(CmpValue::U8(lu.wrapping_shl(ri as u32))), + CmpExprShift::Lsr => Ok(CmpValue::U8(lu.wrapping_shr(ri as u32))), + CmpExprShift::Asr => Ok(CmpValue::U8(lu.wrapping_shr(ri as u32))), + CmpExprShift::Ror => Ok(CmpValue::U8(lu.rotate_right(ri as u32))), + }, + (CmpValue::I8(li), CmpValue::U8(ru)) => match typ { + CmpExprShift::Lsl => Ok(CmpValue::I8(li.wrapping_shl(ru as u32))), + CmpExprShift::Lsr => Ok(CmpValue::I8(li.wrapping_shr(ru as u32))), + CmpExprShift::Asr => Ok(CmpValue::I8(li.wrapping_shr(ru as u32))), + CmpExprShift::Ror => Ok(CmpValue::I8(li.rotate_right(ru as u32))), + }, + (CmpValue::I8(li), CmpValue::I8(ri)) => match typ { + CmpExprShift::Lsl => Ok(CmpValue::I8(li.wrapping_shl(ri as u32))), + CmpExprShift::Lsr => Ok(CmpValue::I8(li.wrapping_shr(ri as u32))), + CmpExprShift::Asr => Ok(CmpValue::I8(li.wrapping_shr(ri as u32))), + CmpExprShift::Ror => Ok(CmpValue::I8(li.rotate_right(ri as u32))), + }, + (CmpValue::I8(li), CmpValue::U16(ru)) => match typ { + CmpExprShift::Lsl => Ok(CmpValue::I8(li.wrapping_shl(ru as u32))), + CmpExprShift::Lsr => Ok(CmpValue::I8(li.wrapping_shr(ru as u32))), + CmpExprShift::Asr => Ok(CmpValue::I8(li.wrapping_shr(ru as u32))), + CmpExprShift::Ror => Ok(CmpValue::I8(li.rotate_right(ru as u32))), + }, + (CmpValue::I8(li), CmpValue::I16(ri)) => match typ { + CmpExprShift::Lsl => Ok(CmpValue::I8(li.wrapping_shl(ri as u32))), + CmpExprShift::Lsr => Ok(CmpValue::I8(li.wrapping_shr(ri as u32))), + CmpExprShift::Asr => Ok(CmpValue::I8(li.wrapping_shr(ri as u32))), + CmpExprShift::Ror => Ok(CmpValue::I8(li.rotate_right(ri as u32))), + }, + (CmpValue::I8(li), CmpValue::U32(ru)) => match typ { + CmpExprShift::Lsl => Ok(CmpValue::I8(li.wrapping_shl(ru))), + CmpExprShift::Lsr => Ok(CmpValue::I8(li.wrapping_shr(ru))), + CmpExprShift::Asr => Ok(CmpValue::I8(li.wrapping_shr(ru))), + CmpExprShift::Ror => Ok(CmpValue::I8(li.rotate_right(ru))), + }, + (CmpValue::I8(li), CmpValue::I32(ri)) => match typ { + CmpExprShift::Lsl => Ok(CmpValue::I8(li.wrapping_shl(ri as u32))), + CmpExprShift::Lsr => Ok(CmpValue::I8(li.wrapping_shr(ri as u32))), + CmpExprShift::Asr => Ok(CmpValue::I8(li.wrapping_shr(ri as u32))), + CmpExprShift::Ror => Ok(CmpValue::I8(li.rotate_right(ri as u32))), + }, + (CmpValue::I8(li), CmpValue::U64(ru)) => match typ { + CmpExprShift::Lsl => Ok(CmpValue::I8(li.wrapping_shl(ru as u32))), + CmpExprShift::Lsr => Ok(CmpValue::I8(li.wrapping_shr(ru as u32))), + CmpExprShift::Asr => Ok(CmpValue::I8(li.wrapping_shr(ru as u32))), + CmpExprShift::Ror => Ok(CmpValue::I8(li.rotate_right(ru as u32))), + }, + (CmpValue::I8(li), CmpValue::I64(ri)) => match typ { + CmpExprShift::Lsl => Ok(CmpValue::I8(li.wrapping_shl(ri as u32))), + CmpExprShift::Lsr => Ok(CmpValue::I8(li.wrapping_shr(ri as u32))), + CmpExprShift::Asr => Ok(CmpValue::I8(li.wrapping_shr(ri as u32))), + CmpExprShift::Ror => Ok(CmpValue::I8(li.rotate_right(ri as u32))), + }, + (CmpValue::U16(lu), CmpValue::U8(ru)) => match typ { + CmpExprShift::Lsl => Ok(CmpValue::U16(lu.wrapping_shl(ru as u32))), + CmpExprShift::Lsr => Ok(CmpValue::U16(lu.wrapping_shr(ru as u32))), + CmpExprShift::Asr => Ok(CmpValue::U16(lu.wrapping_shr(ru as u32))), + CmpExprShift::Ror => Ok(CmpValue::U16(lu.rotate_right(ru as u32))), + }, + (CmpValue::U16(lu), CmpValue::I8(ri)) => match typ { + CmpExprShift::Lsl => Ok(CmpValue::U16(lu.wrapping_shl(ri as u32))), + CmpExprShift::Lsr => Ok(CmpValue::U16(lu.wrapping_shr(ri as u32))), + CmpExprShift::Asr => Ok(CmpValue::U16(lu.wrapping_shr(ri as u32))), + CmpExprShift::Ror => Ok(CmpValue::U16(lu.rotate_right(ri as u32))), + }, + (CmpValue::U16(lu), CmpValue::U16(ru)) => match typ { + CmpExprShift::Lsl => Ok(CmpValue::U16(lu.wrapping_shl(ru as u32))), + CmpExprShift::Lsr => Ok(CmpValue::U16(lu.wrapping_shr(ru as u32))), + CmpExprShift::Asr => Ok(CmpValue::U16(lu.wrapping_shr(ru as u32))), + CmpExprShift::Ror => Ok(CmpValue::U16(lu.rotate_right(ru as u32))), + }, + (CmpValue::U16(lu), CmpValue::I16(ri)) => match typ { + CmpExprShift::Lsl => Ok(CmpValue::U16(lu.wrapping_shl(ri as u32))), + CmpExprShift::Lsr => Ok(CmpValue::U16(lu.wrapping_shr(ri as u32))), + CmpExprShift::Asr => Ok(CmpValue::U16(lu.wrapping_shr(ri as u32))), + CmpExprShift::Ror => Ok(CmpValue::U16(lu.rotate_right(ri as u32))), + }, + (CmpValue::U16(lu), CmpValue::U32(ru)) => match typ { + CmpExprShift::Lsl => Ok(CmpValue::U16(lu.wrapping_shl(ru))), + CmpExprShift::Lsr => Ok(CmpValue::U16(lu.wrapping_shr(ru))), + CmpExprShift::Asr => Ok(CmpValue::U16(lu.wrapping_shr(ru))), + CmpExprShift::Ror => Ok(CmpValue::U16(lu.rotate_right(ru))), + }, + (CmpValue::U16(lu), CmpValue::I32(ri)) => match typ { + CmpExprShift::Lsl => Ok(CmpValue::U16(lu.wrapping_shl(ri as u32))), + CmpExprShift::Lsr => Ok(CmpValue::U16(lu.wrapping_shr(ri as u32))), + CmpExprShift::Asr => Ok(CmpValue::U16(lu.wrapping_shr(ri as u32))), + CmpExprShift::Ror => Ok(CmpValue::U16(lu.rotate_right(ri as u32))), + }, + (CmpValue::U16(lu), CmpValue::U64(ru)) => match typ { + CmpExprShift::Lsl => Ok(CmpValue::U16(lu.wrapping_shl(ru as u32))), + CmpExprShift::Lsr => Ok(CmpValue::U16(lu.wrapping_shr(ru as u32))), + CmpExprShift::Asr => Ok(CmpValue::U16(lu.wrapping_shr(ru as u32))), + CmpExprShift::Ror => Ok(CmpValue::U16(lu.rotate_right(ru as u32))), + }, + (CmpValue::U16(lu), CmpValue::I64(ri)) => match typ { + CmpExprShift::Lsl => Ok(CmpValue::U16(lu.wrapping_shl(ri as u32))), + CmpExprShift::Lsr => Ok(CmpValue::U16(lu.wrapping_shr(ri as u32))), + CmpExprShift::Asr => Ok(CmpValue::U16(lu.wrapping_shr(ri as u32))), + CmpExprShift::Ror => Ok(CmpValue::U16(lu.rotate_right(ri as u32))), + }, + (CmpValue::I16(li), CmpValue::U8(ru)) => match typ { + CmpExprShift::Lsl => Ok(CmpValue::I16(li.wrapping_shl(ru as u32))), + CmpExprShift::Lsr => Ok(CmpValue::I16(li.wrapping_shr(ru as u32))), + CmpExprShift::Asr => Ok(CmpValue::I16(li.wrapping_shr(ru as u32))), + CmpExprShift::Ror => Ok(CmpValue::I16(li.rotate_right(ru as u32))), + }, + (CmpValue::I16(li), CmpValue::I8(ri)) => match typ { + CmpExprShift::Lsl => Ok(CmpValue::I16(li.wrapping_shl(ri as u32))), + CmpExprShift::Lsr => Ok(CmpValue::I16(li.wrapping_shr(ri as u32))), + CmpExprShift::Asr => Ok(CmpValue::I16(li.wrapping_shr(ri as u32))), + CmpExprShift::Ror => Ok(CmpValue::I16(li.rotate_right(ri as u32))), + }, + (CmpValue::I16(li), CmpValue::U16(ru)) => match typ { + CmpExprShift::Lsl => Ok(CmpValue::I16(li.wrapping_shl(ru as u32))), + CmpExprShift::Lsr => Ok(CmpValue::I16(li.wrapping_shr(ru as u32))), + CmpExprShift::Asr => Ok(CmpValue::I16(li.wrapping_shr(ru as u32))), + CmpExprShift::Ror => Ok(CmpValue::I16(li.rotate_right(ru as u32))), + }, + (CmpValue::I16(li), CmpValue::I16(ri)) => match typ { + CmpExprShift::Lsl => Ok(CmpValue::I16(li.wrapping_shl(ri as u32))), + CmpExprShift::Lsr => Ok(CmpValue::I16(li.wrapping_shr(ri as u32))), + CmpExprShift::Asr => Ok(CmpValue::I16(li.wrapping_shr(ri as u32))), + CmpExprShift::Ror => Ok(CmpValue::I16(li.rotate_right(ri as u32))), + }, + (CmpValue::I16(li), CmpValue::U32(ru)) => match typ { + CmpExprShift::Lsl => Ok(CmpValue::I16(li.wrapping_shl(ru))), + CmpExprShift::Lsr => Ok(CmpValue::I16(li.wrapping_shr(ru))), + CmpExprShift::Asr => Ok(CmpValue::I16(li.wrapping_shr(ru))), + CmpExprShift::Ror => Ok(CmpValue::I16(li.rotate_right(ru))), + }, + (CmpValue::I16(li), CmpValue::I32(ri)) => match typ { + CmpExprShift::Lsl => Ok(CmpValue::I16(li.wrapping_shl(ri as u32))), + CmpExprShift::Lsr => Ok(CmpValue::I16(li.wrapping_shr(ri as u32))), + CmpExprShift::Asr => Ok(CmpValue::I16(li.wrapping_shr(ri as u32))), + CmpExprShift::Ror => Ok(CmpValue::I16(li.rotate_right(ri as u32))), + }, + (CmpValue::I16(li), CmpValue::U64(ru)) => match typ { + CmpExprShift::Lsl => Ok(CmpValue::I16(li.wrapping_shl(ru as u32))), + CmpExprShift::Lsr => Ok(CmpValue::I16(li.wrapping_shr(ru as u32))), + CmpExprShift::Asr => Ok(CmpValue::I16(li.wrapping_shr(ru as u32))), + CmpExprShift::Ror => Ok(CmpValue::I16(li.rotate_right(ru as u32))), + }, + (CmpValue::I16(li), CmpValue::I64(ri)) => match typ { + CmpExprShift::Lsl => Ok(CmpValue::I16(li.wrapping_shl(ri as u32))), + CmpExprShift::Lsr => Ok(CmpValue::I16(li.wrapping_shr(ri as u32))), + CmpExprShift::Asr => Ok(CmpValue::I16(li.wrapping_shr(ri as u32))), + CmpExprShift::Ror => Ok(CmpValue::I16(li.rotate_right(ri as u32))), + }, + (CmpValue::U32(lu), CmpValue::U8(ru)) => match typ { + CmpExprShift::Lsl => Ok(CmpValue::U32(lu.wrapping_shl(ru as u32))), + CmpExprShift::Lsr => Ok(CmpValue::U32(lu.wrapping_shr(ru as u32))), + CmpExprShift::Asr => Ok(CmpValue::U32(lu.wrapping_shr(ru as u32))), + CmpExprShift::Ror => Ok(CmpValue::U32(lu.rotate_right(ru as u32))), + }, + (CmpValue::U32(lu), CmpValue::I8(ri)) => match typ { + CmpExprShift::Lsl => Ok(CmpValue::U32(lu.wrapping_shl(ri as u32))), + CmpExprShift::Lsr => Ok(CmpValue::U32(lu.wrapping_shr(ri as u32))), + CmpExprShift::Asr => Ok(CmpValue::U32(lu.wrapping_shr(ri as u32))), + CmpExprShift::Ror => Ok(CmpValue::U32(lu.rotate_right(ri as u32))), + }, + (CmpValue::U32(lu), CmpValue::U16(ru)) => match typ { + CmpExprShift::Lsl => Ok(CmpValue::U32(lu.wrapping_shl(ru as u32))), + CmpExprShift::Lsr => Ok(CmpValue::U32(lu.wrapping_shr(ru as u32))), + CmpExprShift::Asr => Ok(CmpValue::U32(lu.wrapping_shr(ru as u32))), + CmpExprShift::Ror => Ok(CmpValue::U32(lu.rotate_right(ru as u32))), + }, + (CmpValue::U32(lu), CmpValue::I16(ri)) => match typ { + CmpExprShift::Lsl => Ok(CmpValue::U32(lu.wrapping_shl(ri as u32))), + CmpExprShift::Lsr => Ok(CmpValue::U32(lu.wrapping_shr(ri as u32))), + CmpExprShift::Asr => Ok(CmpValue::U32(lu.wrapping_shr(ri as u32))), + CmpExprShift::Ror => Ok(CmpValue::U32(lu.rotate_right(ri as u32))), + }, + (CmpValue::U32(lu), CmpValue::U32(ru)) => match typ { + CmpExprShift::Lsl => Ok(CmpValue::U32(lu.wrapping_shl(ru))), + CmpExprShift::Lsr => Ok(CmpValue::U32(lu.wrapping_shr(ru))), + CmpExprShift::Asr => Ok(CmpValue::U32(lu.wrapping_shr(ru))), + CmpExprShift::Ror => Ok(CmpValue::U32(lu.rotate_right(ru))), + }, + (CmpValue::U32(lu), CmpValue::I32(ri)) => match typ { + CmpExprShift::Lsl => Ok(CmpValue::U32(lu.wrapping_shl(ri as u32))), + CmpExprShift::Lsr => Ok(CmpValue::U32(lu.wrapping_shr(ri as u32))), + CmpExprShift::Asr => Ok(CmpValue::U32(lu.wrapping_shr(ri as u32))), + CmpExprShift::Ror => Ok(CmpValue::U32(lu.rotate_right(ri as u32))), + }, + (CmpValue::U32(lu), CmpValue::U64(ru)) => match typ { + CmpExprShift::Lsl => Ok(CmpValue::U32(lu.wrapping_shl(ru as u32))), + CmpExprShift::Lsr => Ok(CmpValue::U32(lu.wrapping_shr(ru as u32))), + CmpExprShift::Asr => Ok(CmpValue::U32(lu.wrapping_shr(ru as u32))), + CmpExprShift::Ror => Ok(CmpValue::U32(lu.rotate_right(ru as u32))), + }, + (CmpValue::U32(lu), CmpValue::I64(ri)) => match typ { + CmpExprShift::Lsl => Ok(CmpValue::U32(lu.wrapping_shl(ri as u32))), + CmpExprShift::Lsr => Ok(CmpValue::U32(lu.wrapping_shr(ri as u32))), + CmpExprShift::Asr => Ok(CmpValue::U32(lu.wrapping_shr(ri as u32))), + CmpExprShift::Ror => Ok(CmpValue::U32(lu.rotate_right(ri as u32))), + }, + (CmpValue::I32(li), CmpValue::U8(ru)) => match typ { + CmpExprShift::Lsl => Ok(CmpValue::I32(li.wrapping_shl(ru as u32))), + CmpExprShift::Lsr => Ok(CmpValue::I32(li.wrapping_shr(ru as u32))), + CmpExprShift::Asr => Ok(CmpValue::I32(li.wrapping_shr(ru as u32))), + CmpExprShift::Ror => Ok(CmpValue::I32(li.rotate_right(ru as u32))), + }, + (CmpValue::I32(li), CmpValue::I8(ri)) => match typ { + CmpExprShift::Lsl => Ok(CmpValue::I32(li.wrapping_shl(ri as u32))), + CmpExprShift::Lsr => Ok(CmpValue::I32(li.wrapping_shr(ri as u32))), + CmpExprShift::Asr => Ok(CmpValue::I32(li.wrapping_shr(ri as u32))), + CmpExprShift::Ror => Ok(CmpValue::I32(li.rotate_right(ri as u32))), + }, + (CmpValue::I32(li), CmpValue::U16(ru)) => match typ { + CmpExprShift::Lsl => Ok(CmpValue::I32(li.wrapping_shl(ru as u32))), + CmpExprShift::Lsr => Ok(CmpValue::I32(li.wrapping_shr(ru as u32))), + CmpExprShift::Asr => Ok(CmpValue::I32(li.wrapping_shr(ru as u32))), + CmpExprShift::Ror => Ok(CmpValue::I32(li.rotate_right(ru as u32))), + }, + (CmpValue::I32(li), CmpValue::I16(ri)) => match typ { + CmpExprShift::Lsl => Ok(CmpValue::I32(li.wrapping_shl(ri as u32))), + CmpExprShift::Lsr => Ok(CmpValue::I32(li.wrapping_shr(ri as u32))), + CmpExprShift::Asr => Ok(CmpValue::I32(li.wrapping_shr(ri as u32))), + CmpExprShift::Ror => Ok(CmpValue::I32(li.rotate_right(ri as u32))), + }, + (CmpValue::I32(li), CmpValue::U32(ru)) => match typ { + CmpExprShift::Lsl => Ok(CmpValue::I32(li.wrapping_shl(ru))), + CmpExprShift::Lsr => Ok(CmpValue::I32(li.wrapping_shr(ru))), + CmpExprShift::Asr => Ok(CmpValue::I32(li.wrapping_shr(ru))), + CmpExprShift::Ror => Ok(CmpValue::I32(li.rotate_right(ru))), + }, + (CmpValue::I32(li), CmpValue::I32(ri)) => match typ { + CmpExprShift::Lsl => Ok(CmpValue::I32(li.wrapping_shl(ri as u32))), + CmpExprShift::Lsr => Ok(CmpValue::I32(li.wrapping_shr(ri as u32))), + CmpExprShift::Asr => Ok(CmpValue::I32(li.wrapping_shr(ri as u32))), + CmpExprShift::Ror => Ok(CmpValue::I32(li.rotate_right(ri as u32))), + }, + (CmpValue::I32(li), CmpValue::U64(ru)) => match typ { + CmpExprShift::Lsl => Ok(CmpValue::I32(li.wrapping_shl(ru as u32))), + CmpExprShift::Lsr => Ok(CmpValue::I32(li.wrapping_shr(ru as u32))), + CmpExprShift::Asr => Ok(CmpValue::I32(li.wrapping_shr(ru as u32))), + CmpExprShift::Ror => Ok(CmpValue::I32(li.rotate_right(ru as u32))), + }, + (CmpValue::I32(li), CmpValue::I64(ri)) => match typ { + CmpExprShift::Lsl => Ok(CmpValue::I32(li.wrapping_shl(ri as u32))), + CmpExprShift::Lsr => Ok(CmpValue::I32(li.wrapping_shr(ri as u32))), + CmpExprShift::Asr => Ok(CmpValue::I32(li.wrapping_shr(ri as u32))), + CmpExprShift::Ror => Ok(CmpValue::I32(li.rotate_right(ri as u32))), + }, + (CmpValue::U64(lu), CmpValue::U8(ru)) => match typ { + CmpExprShift::Lsl => Ok(CmpValue::U64(lu.wrapping_shl(ru as u32))), + CmpExprShift::Lsr => Ok(CmpValue::U64(lu.wrapping_shr(ru as u32))), + CmpExprShift::Asr => Ok(CmpValue::U64(lu.wrapping_shr(ru as u32))), + CmpExprShift::Ror => Ok(CmpValue::U64(lu.rotate_right(ru as u32))), + }, + (CmpValue::U64(lu), CmpValue::I8(ri)) => match typ { + CmpExprShift::Lsl => Ok(CmpValue::U64(lu.wrapping_shl(ri as u32))), + CmpExprShift::Lsr => Ok(CmpValue::U64(lu.wrapping_shr(ri as u32))), + CmpExprShift::Asr => Ok(CmpValue::U64(lu.wrapping_shr(ri as u32))), + CmpExprShift::Ror => Ok(CmpValue::U64(lu.rotate_right(ri as u32))), + }, + (CmpValue::U64(lu), CmpValue::U16(ru)) => match typ { + CmpExprShift::Lsl => Ok(CmpValue::U64(lu.wrapping_shl(ru as u32))), + CmpExprShift::Lsr => Ok(CmpValue::U64(lu.wrapping_shr(ru as u32))), + CmpExprShift::Asr => Ok(CmpValue::U64(lu.wrapping_shr(ru as u32))), + CmpExprShift::Ror => Ok(CmpValue::U64(lu.rotate_right(ru as u32))), + }, + (CmpValue::U64(lu), CmpValue::I16(ri)) => match typ { + CmpExprShift::Lsl => Ok(CmpValue::U64(lu.wrapping_shl(ri as u32))), + CmpExprShift::Lsr => Ok(CmpValue::U64(lu.wrapping_shr(ri as u32))), + CmpExprShift::Asr => Ok(CmpValue::U64(lu.wrapping_shr(ri as u32))), + CmpExprShift::Ror => Ok(CmpValue::U64(lu.rotate_right(ri as u32))), + }, + (CmpValue::U64(lu), CmpValue::U32(ru)) => match typ { + CmpExprShift::Lsl => Ok(CmpValue::U64(lu.wrapping_shl(ru))), + CmpExprShift::Lsr => Ok(CmpValue::U64(lu.wrapping_shr(ru))), + CmpExprShift::Asr => Ok(CmpValue::U64(lu.wrapping_shr(ru))), + CmpExprShift::Ror => Ok(CmpValue::U64(lu.rotate_right(ru))), + }, + (CmpValue::U64(lu), CmpValue::I32(ri)) => match typ { + CmpExprShift::Lsl => Ok(CmpValue::U64(lu.wrapping_shl(ri as u32))), + CmpExprShift::Lsr => Ok(CmpValue::U64(lu.wrapping_shr(ri as u32))), + CmpExprShift::Asr => Ok(CmpValue::U64(lu.wrapping_shr(ri as u32))), + CmpExprShift::Ror => Ok(CmpValue::U64(lu.rotate_right(ri as u32))), + }, + (CmpValue::U64(lu), CmpValue::U64(ru)) => match typ { + CmpExprShift::Lsl => Ok(CmpValue::U64(lu.wrapping_shl(ru as u32))), + CmpExprShift::Lsr => Ok(CmpValue::U64(lu.wrapping_shr(ru as u32))), + CmpExprShift::Asr => Ok(CmpValue::U64(lu.wrapping_shr(ru as u32))), + CmpExprShift::Ror => Ok(CmpValue::U64(lu.rotate_right(ru as u32))), + }, + (CmpValue::U64(lu), CmpValue::I64(ri)) => match typ { + CmpExprShift::Lsl => Ok(CmpValue::U64(lu.wrapping_shl(ri as u32))), + CmpExprShift::Lsr => Ok(CmpValue::U64(lu.wrapping_shr(ri as u32))), + CmpExprShift::Asr => Ok(CmpValue::U64(lu.wrapping_shr(ri as u32))), + CmpExprShift::Ror => Ok(CmpValue::U64(lu.rotate_right(ri as u32))), + }, + (CmpValue::I64(li), CmpValue::U8(ru)) => match typ { + CmpExprShift::Lsl => Ok(CmpValue::I64(li.wrapping_shl(ru as u32))), + CmpExprShift::Lsr => Ok(CmpValue::I64(li.wrapping_shr(ru as u32))), + CmpExprShift::Asr => Ok(CmpValue::I64(li.wrapping_shr(ru as u32))), + CmpExprShift::Ror => Ok(CmpValue::I64(li.rotate_right(ru as u32))), + }, + (CmpValue::I64(li), CmpValue::I8(ri)) => match typ { + CmpExprShift::Lsl => Ok(CmpValue::I64(li.wrapping_shl(ri as u32))), + CmpExprShift::Lsr => Ok(CmpValue::I64(li.wrapping_shr(ri as u32))), + CmpExprShift::Asr => Ok(CmpValue::I64(li.wrapping_shr(ri as u32))), + CmpExprShift::Ror => Ok(CmpValue::I64(li.rotate_right(ri as u32))), + }, + (CmpValue::I64(li), CmpValue::U16(ru)) => match typ { + CmpExprShift::Lsl => Ok(CmpValue::I64(li.wrapping_shl(ru as u32))), + CmpExprShift::Lsr => Ok(CmpValue::I64(li.wrapping_shr(ru as u32))), + CmpExprShift::Asr => Ok(CmpValue::I64(li.wrapping_shr(ru as u32))), + CmpExprShift::Ror => Ok(CmpValue::I64(li.rotate_right(ru as u32))), + }, + (CmpValue::I64(li), CmpValue::I16(ri)) => match typ { + CmpExprShift::Lsl => Ok(CmpValue::I64(li.wrapping_shl(ri as u32))), + CmpExprShift::Lsr => Ok(CmpValue::I64(li.wrapping_shr(ri as u32))), + CmpExprShift::Asr => Ok(CmpValue::I64(li.wrapping_shr(ri as u32))), + CmpExprShift::Ror => Ok(CmpValue::I64(li.rotate_right(ri as u32))), + }, + (CmpValue::I64(li), CmpValue::U32(ru)) => match typ { + CmpExprShift::Lsl => Ok(CmpValue::I64(li.wrapping_shl(ru))), + CmpExprShift::Lsr => Ok(CmpValue::I64(li.wrapping_shr(ru))), + CmpExprShift::Asr => Ok(CmpValue::I64(li.wrapping_shr(ru))), + CmpExprShift::Ror => Ok(CmpValue::I64(li.rotate_right(ru))), + }, + (CmpValue::I64(li), CmpValue::I32(ri)) => match typ { + CmpExprShift::Lsl => Ok(CmpValue::I64(li.wrapping_shl(ri as u32))), + CmpExprShift::Lsr => Ok(CmpValue::I64(li.wrapping_shr(ri as u32))), + CmpExprShift::Asr => Ok(CmpValue::I64(li.wrapping_shr(ri as u32))), + CmpExprShift::Ror => Ok(CmpValue::I64(li.rotate_right(ri as u32))), + }, + (CmpValue::I64(li), CmpValue::U64(ru)) => match typ { + CmpExprShift::Lsl => Ok(CmpValue::I64(li.wrapping_shl(ru as u32))), + CmpExprShift::Lsr => Ok(CmpValue::I64(li.wrapping_shr(ru as u32))), + CmpExprShift::Asr => Ok(CmpValue::I64(li.wrapping_shr(ru as u32))), + CmpExprShift::Ror => Ok(CmpValue::I64(li.rotate_right(ru as u32))), + }, + (CmpValue::I64(li), CmpValue::I64(ri)) => match typ { + CmpExprShift::Lsl => Ok(CmpValue::I64(li.wrapping_shl(ri as u32))), + CmpExprShift::Lsr => Ok(CmpValue::I64(li.wrapping_shr(ri as u32))), + CmpExprShift::Asr => Ok(CmpValue::I64(li.wrapping_shr(ri as u32))), + CmpExprShift::Ror => Ok(CmpValue::I64(li.rotate_right(ri as u32))), + }, + _ => { + bail!("Cannot shift non-integral types"); + } + } + } + CmpExpr::I16(i) => Ok(CmpValue::I16(*i)), + CmpExpr::U32(u) => Ok(CmpValue::U32(*u)), + CmpExpr::I32(i) => Ok(CmpValue::I32(*i)), + _ => bail!("Unsupported expression {:?}", expr), + } + } +} + +pub(crate) struct Disassembler { + decoder: InstDecoder, + last: Option, +} + +impl Disassembler { + pub fn new() -> Self { + Self { + decoder: InstDecoder::default(), + last: None, + } + } +} + +impl Default for Disassembler { + fn default() -> Self { + Self::new() + } +} + +impl TracerDisassembler for Disassembler { + fn disassemble(&mut self, bytes: &[u8]) -> Result<()> { + let mut r = U8Reader::new(bytes); + + if let Ok(insn) = self.decoder.decode(&mut r) { + self.last = Some(insn); + } else { + bail!("Could not disassemble {:?}", bytes); + } + + Ok(()) + } + + fn last_was_control_flow(&self) -> bool { + if let Some(last) = self.last.as_ref() { + // NOTE: This is imprecise on ARM because PC is not restricted + // TODO: Are there any other control flow instructions? + return matches!( + last.opcode, + Opcode::B + | Opcode::Bcc(_) + | Opcode::BR + | Opcode::BRAA + | Opcode::BRAAZ + | Opcode::BRABZ + | Opcode::CBNZ + | Opcode::CBZ + | Opcode::CCMN + | Opcode::CCMP + | Opcode::CSINC + | Opcode::CSINV + | Opcode::CSNEG + | Opcode::CSEL + | Opcode::TBNZ + | Opcode::TBZ + ); + } + + false + } + + // TODO: Make call/ret distinction more accurate, all three can ret/call far or near, but + // there are semantic versions based on operands: + // https://inst.eecs.berkeley.edu/~cs61c/fa20/pdfs/lectures/lec12-bw.pdf + + fn last_was_call(&self) -> bool { + if let Some(last) = self.last.as_ref() { + return matches!( + last.opcode, + Opcode::BL | Opcode::BLRAA | Opcode::BLRAAZ | Opcode::BLRAB | Opcode::BLRABZ + ); + } + + false + } + + // https://quantum5.ca/2017/10/19/arm-ways-to-return/ + fn last_was_ret(&self) -> bool { + if let Some(last) = self.last.as_ref() { + return matches!(last.opcode, Opcode::RET | Opcode::RETAA | Opcode::RETAB); + } + + false + } + + fn last_was_cmp(&self) -> bool { + if let Some(last) = self.last.as_ref() { + return self.last_was_control_flow() + || matches!( + last.opcode, + Opcode::CMEQ + | Opcode::CMGE + | Opcode::CMGT + | Opcode::CMHI + | Opcode::CMHS + | Opcode::CMLE + | Opcode::CMLT + | Opcode::CMTST + | Opcode::CSEL + | Opcode::CSINC + | Opcode::CSINV + | Opcode::CSNEG + ); + } + + false + } + + fn cmp(&self) -> Vec { + let mut cmp_exprs = Vec::new(); + if self.last_was_cmp() { + if let Some(last) = self.last.as_ref() { + for operand in &last.operands { + match operand { + Operand::Register(s, r) => match s { + SizeCode::X => cmp_exprs.push(CmpExpr::Reg((format!("x{r}"), 64))), + SizeCode::W => cmp_exprs.push(CmpExpr::Reg((format!("w{r}"), 32))), + }, + Operand::RegisterPair(s, r) => match s { + SizeCode::X => cmp_exprs.push(CmpExpr::Reg((format!("x{r}"), 64))), + SizeCode::W => cmp_exprs.push(CmpExpr::Reg((format!("w{r}"), 32))), + }, + Operand::RegisterOrSP(s, r) => match s { + SizeCode::X => cmp_exprs.push(CmpExpr::Reg((format!("x{r}"), 64))), + SizeCode::W => cmp_exprs.push(CmpExpr::Reg((format!("w{r}"), 32))), + }, + Operand::Immediate(i) => cmp_exprs.push(CmpExpr::U32(*i)), + Operand::Imm64(i) => cmp_exprs.push(CmpExpr::U64(*i)), + Operand::Imm16(i) => cmp_exprs.push(CmpExpr::U16(*i)), + Operand::ImmediateDouble(_) => {} + Operand::ImmShift(i, s) => { + cmp_exprs.push(CmpExpr::U64((*i as u64).wrapping_shl((*s).into()))) + } + Operand::ImmShiftMSL(i, s) => { + cmp_exprs.push(CmpExpr::U64((*i as u64).wrapping_shl((*s).into()))) + } + Operand::RegShift(s, a, c, r) => { + let reg = Box::new(match c { + SizeCode::X => CmpExpr::Reg((format!("x{r}"), 64)), + SizeCode::W => CmpExpr::Reg((format!("w{r}"), 32)), + }); + + let typ = match s { + ShiftStyle::LSL => CmpExprShift::Lsl, + ShiftStyle::LSR => CmpExprShift::Lsr, + ShiftStyle::ASR => CmpExprShift::Asr, + ShiftStyle::ROR => CmpExprShift::Ror, + _ => continue, + }; + + match s { + ShiftStyle::LSL => cmp_exprs.push(CmpExpr::Deref(( + Box::new(CmpExpr::Shift((reg, Box::new(CmpExpr::U8(*a)), typ))), + None, + ))), + ShiftStyle::LSR => cmp_exprs.push(CmpExpr::Deref(( + Box::new(CmpExpr::Shift((reg, Box::new(CmpExpr::U8(*a)), typ))), + None, + ))), + ShiftStyle::ASR => cmp_exprs.push(CmpExpr::Deref(( + Box::new(CmpExpr::Shift((reg, Box::new(CmpExpr::U8(*a)), typ))), + None, + ))), + ShiftStyle::ROR => cmp_exprs.push(CmpExpr::Deref(( + Box::new(CmpExpr::Shift((reg, Box::new(CmpExpr::U8(*a)), typ))), + None, + ))), + _ => {} + } + } + Operand::RegRegOffset(r0, r1, c, s, a) => { + let reg0 = match c { + SizeCode::X => Box::new(CmpExpr::Reg((format!("x{r0}"), 64))), + SizeCode::W => Box::new(CmpExpr::Reg((format!("w{r0}"), 32))), + }; + let reg1 = match c { + SizeCode::X => Box::new(CmpExpr::Reg((format!("x{r1}"), 64))), + SizeCode::W => Box::new(CmpExpr::Reg((format!("w{r1}"), 32))), + }; + let typ = match s { + ShiftStyle::LSL => CmpExprShift::Lsl, + ShiftStyle::LSR => CmpExprShift::Lsr, + ShiftStyle::ASR => CmpExprShift::Asr, + ShiftStyle::ROR => CmpExprShift::Ror, + _ => continue, + }; + let shift = Box::new(CmpExpr::U8(*a)); + + cmp_exprs.push(CmpExpr::Deref(( + Box::new(CmpExpr::Add(( + reg0, + Box::new(CmpExpr::Shift((reg1, shift, typ))), + ))), + None, + ))) + } + Operand::RegPreIndex(r, i, _) => cmp_exprs.push(CmpExpr::Deref(( + Box::new(CmpExpr::Add(( + Box::new(CmpExpr::Reg((format!("x{r}"), 64))), + Box::new(CmpExpr::I32(*i)), + ))), + None, + ))), + Operand::RegPostIndex(r, _) => cmp_exprs.push(CmpExpr::Deref(( + Box::new(CmpExpr::Reg((format!("x{r}"), 64))), + None, + ))), + Operand::RegPostIndexReg(r0, _) => cmp_exprs.push(CmpExpr::Deref(( + Box::new(CmpExpr::Reg((format!("x{r0}"), 64))), + None, + ))), + _ => {} + } + } + } + } + + cmp_exprs + } + + // NOTE: CmpType is not well suited for arm + fn cmp_type(&self) -> Vec { + if self.last_was_cmp() { + if let Some(last) = self.last.as_ref() { + return match last.opcode { + Opcode::Bcc(_) => vec![CmpType::Equal, CmpType::Greater, CmpType::Lesser], + Opcode::CBNZ => vec![CmpType::Equal], + Opcode::CBZ => vec![CmpType::Equal], + Opcode::CCMN => vec![CmpType::Equal, CmpType::Greater, CmpType::Lesser], + Opcode::CCMP => vec![CmpType::Equal], + Opcode::CMEQ => vec![CmpType::Equal], + Opcode::CMGE => vec![CmpType::Greater, CmpType::Equal], + Opcode::CMGT => vec![CmpType::Greater], + Opcode::CMHI => vec![], + Opcode::CMHS => vec![], + Opcode::CMLE => vec![CmpType::Equal, CmpType::Lesser], + Opcode::CMLT => vec![CmpType::Lesser], + Opcode::CMTST => vec![CmpType::Equal], + Opcode::CSEL => vec![CmpType::Equal], + Opcode::CSINC => vec![CmpType::Equal], + Opcode::CSINV => vec![CmpType::Equal], + Opcode::CSNEG => vec![CmpType::Equal], + _ => vec![], + }; + } + } + + vec![] + } +} diff --git a/src/arch/arm.rs b/src/arch/arm.rs new file mode 100644 index 00000000..b5ca3511 --- /dev/null +++ b/src/arch/arm.rs @@ -0,0 +1,1321 @@ +// Copyright (C) 2024 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 + +//! Architecture-specific implementation for ARM architecture + +use anyhow::{anyhow, bail, Result}; +use libafl::prelude::CmpValues; +use raw_cstr::AsRawCstr; +use simics::api::{ + get_interface, read_phys_memory, sys::instruction_handle_t, Access, ConfObject, + CpuInstructionQueryInterface, CpuInstrumentationSubscribeInterface, CycleInterface, + IntRegisterInterface, ProcessorInfoV2Interface, +}; +use std::{ffi::CStr, mem::size_of, slice::from_raw_parts}; +use yaxpeax_arch::{Decoder, U8Reader}; +use yaxpeax_arm::armv7::{InstDecoder, Instruction, Opcode, Operand, RegShiftStyle, ShiftStyle}; + +use crate::{ + tracer::{CmpExpr, CmpExprShift, CmpType, CmpValue, TraceEntry}, + traits::TracerDisassembler, +}; + +use super::ArchitectureOperations; + +pub(crate) struct ARMArchitectureOperations { + cpu: *mut ConfObject, + disassembler: Disassembler, + int_register: IntRegisterInterface, + processor_info_v2: ProcessorInfoV2Interface, + cpu_instruction_query: CpuInstructionQueryInterface, + cpu_instrumentation_subscribe: CpuInstrumentationSubscribeInterface, + cycle: CycleInterface, +} + +impl ArchitectureOperations for ARMArchitectureOperations { + const INDEX_SELECTOR_REGISTER: &'static str = "r10"; + + const ARGUMENT_REGISTER_0: &'static str = "r9"; + + const ARGUMENT_REGISTER_1: &'static str = "r8"; + + const ARGUMENT_REGISTER_2: &'static str = "r7"; + + fn new(cpu: *mut ConfObject) -> Result { + let mut processor_info_v2: ProcessorInfoV2Interface = get_interface(cpu)?; + + let arch = unsafe { CStr::from_ptr(processor_info_v2.architecture()?) } + .to_str()? + .to_string(); + + if arch == "arm" || arch == "armv7" || arch == "armv6" || arch == "armv5" || arch == "arm32" + { + Ok(Self { + cpu, + disassembler: Disassembler::new(), + int_register: get_interface(cpu)?, + processor_info_v2, + cpu_instruction_query: get_interface(cpu)?, + cpu_instrumentation_subscribe: get_interface(cpu)?, + cycle: get_interface(cpu)?, + }) + } else { + bail!("Architecture {} is not arm", arch); + } + } + + fn new_unchecked(cpu: *mut ConfObject) -> Result + where + Self: Sized, + { + Ok(Self { + cpu, + disassembler: Disassembler::new(), + int_register: get_interface(cpu)?, + processor_info_v2: get_interface(cpu)?, + cpu_instruction_query: get_interface(cpu)?, + cpu_instrumentation_subscribe: get_interface(cpu)?, + cycle: get_interface(cpu)?, + }) + } + + fn cpu(&self) -> *mut ConfObject { + self.cpu + } + + fn disassembler(&mut self) -> &mut dyn TracerDisassembler { + &mut self.disassembler + } + + fn int_register(&mut self) -> &mut IntRegisterInterface { + &mut self.int_register + } + + fn processor_info_v2(&mut self) -> &mut ProcessorInfoV2Interface { + &mut self.processor_info_v2 + } + + fn cpu_instruction_query(&mut self) -> &mut CpuInstructionQueryInterface { + &mut self.cpu_instruction_query + } + + fn cpu_instrumentation_subscribe(&mut self) -> &mut CpuInstrumentationSubscribeInterface { + &mut self.cpu_instrumentation_subscribe + } + + fn cycle(&mut self) -> &mut CycleInterface { + &mut self.cycle + } + + fn trace_pc(&mut self, instruction_query: *mut instruction_handle_t) -> Result { + let instruction_bytes = self + .cpu_instruction_query + .get_instruction_bytes(instruction_query)?; + + self.disassembler.disassemble(unsafe { + from_raw_parts(instruction_bytes.data, instruction_bytes.size) + })?; + + if self.disassembler.last_was_call() + || self.disassembler.last_was_control_flow() + || self.disassembler.last_was_ret() + { + Ok(TraceEntry::builder() + .edge(self.processor_info_v2.get_program_counter()?) + .build()) + } else { + Ok(TraceEntry::default()) + } + } + + fn trace_cmp(&mut self, instruction_query: *mut instruction_handle_t) -> Result { + let instruction_bytes = self + .cpu_instruction_query + .get_instruction_bytes(instruction_query)?; + self.disassembler.disassemble(unsafe { + from_raw_parts(instruction_bytes.data, instruction_bytes.size) + })?; + + let pc = self.processor_info_v2.get_program_counter()?; + + let mut cmp_values = Vec::new(); + + for expr in self.disassembler.cmp() { + if let Ok(value) = self.simplify(&expr) { + cmp_values.push(value); + } + } + + let cmp_value = if let (Some(l), Some(r)) = (cmp_values.first(), cmp_values.get(1)) { + match (l, r) { + (CmpValue::U8(l), CmpValue::U8(r)) => Some(CmpValues::U8((*l, *r))), + (CmpValue::I8(l), CmpValue::I8(r)) => Some(CmpValues::U8(( + u8::from_le_bytes(l.to_le_bytes()), + u8::from_le_bytes(r.to_le_bytes()), + ))), + (CmpValue::U16(l), CmpValue::U16(r)) => Some(CmpValues::U16((*l, *r))), + (CmpValue::I16(l), CmpValue::I16(r)) => Some(CmpValues::U16(( + u16::from_le_bytes(l.to_le_bytes()), + u16::from_le_bytes(r.to_le_bytes()), + ))), + (CmpValue::U32(l), CmpValue::U32(r)) => Some(CmpValues::U32((*l, *r))), + (CmpValue::I32(l), CmpValue::I32(r)) => Some(CmpValues::U32(( + u32::from_le_bytes(l.to_le_bytes()), + u32::from_le_bytes(r.to_le_bytes()), + ))), + (CmpValue::U64(l), CmpValue::U64(r)) => Some(CmpValues::U64((*l, *r))), + (CmpValue::I64(l), CmpValue::I64(r)) => Some(CmpValues::U64(( + u64::from_le_bytes(l.to_le_bytes()), + u64::from_le_bytes(r.to_le_bytes()), + ))), + (CmpValue::Expr(_), CmpValue::Expr(_)) => None, + _ => None, + } + } else { + None + }; + + Ok(TraceEntry::builder() + .cmp(( + pc, + self.disassembler.cmp_type(), + cmp_value.ok_or_else(|| anyhow!("No cmp value available"))?, + )) + .build()) + } +} + +impl ARMArchitectureOperations { + fn simplify(&mut self, expr: &CmpExpr) -> Result { + match expr { + CmpExpr::Deref((b, _)) => { + let v = self.simplify(b)?; + match v { + CmpValue::U64(a) => { + let address = self + .processor_info_v2 + .logical_to_physical(a, Access::Sim_Access_Read)?; + Ok(CmpValue::U64(read_phys_memory( + self.cpu, + address.address, + size_of::() as i32, + )?)) + } + CmpValue::U32(a) => { + let address = self + .processor_info_v2 + .logical_to_physical(a as u64, Access::Sim_Access_Read)?; + Ok(CmpValue::U64(read_phys_memory( + self.cpu, + address.address, + size_of::() as i32, + )?)) + } + _ => bail!("Invalid dereference size {:?}", v), + } + } + CmpExpr::Reg((n, _)) => { + let regno = self.int_register.get_number(n.as_raw_cstr()?)?; + let value = self.int_register.read(regno)?; + if self.processor_info_v2.get_logical_address_width()? as u32 / u8::BITS == 8 { + Ok(CmpValue::U64(value)) + } else { + Ok(CmpValue::U32(value as u32)) + } + } + CmpExpr::Add((l, r)) => { + let lv = self.simplify(l)?; + let rv = self.simplify(r)?; + + match (lv, rv) { + (CmpValue::U8(lu), CmpValue::U8(ru)) => Ok(CmpValue::U8(lu.wrapping_add(ru))), + (CmpValue::U8(lu), CmpValue::I8(ru)) => { + Ok(CmpValue::U8(lu.wrapping_add_signed(ru))) + } + (CmpValue::U8(lu), CmpValue::U16(ru)) => { + Ok(CmpValue::U8((lu as u16).wrapping_add(ru) as u8)) + } + (CmpValue::U8(lu), CmpValue::I16(ru)) => { + Ok(CmpValue::U8((lu as u16).wrapping_add_signed(ru) as u8)) + } + (CmpValue::U8(lu), CmpValue::U32(ru)) => { + Ok(CmpValue::U8((lu as u32).wrapping_add(ru) as u8)) + } + (CmpValue::U8(lu), CmpValue::I32(ru)) => { + Ok(CmpValue::U8((lu as u32).wrapping_add_signed(ru) as u8)) + } + (CmpValue::U8(lu), CmpValue::U64(ru)) => { + Ok(CmpValue::U8((lu as u64).wrapping_add(ru) as u8)) + } + (CmpValue::U8(lu), CmpValue::I64(ru)) => { + Ok(CmpValue::U8((lu as u64).wrapping_add_signed(ru) as u8)) + } + (CmpValue::I8(lu), CmpValue::U8(ru)) => { + Ok(CmpValue::I8(lu.wrapping_add_unsigned(ru))) + } + (CmpValue::I8(lu), CmpValue::I8(ru)) => Ok(CmpValue::I8(lu.wrapping_add(ru))), + (CmpValue::I8(lu), CmpValue::U16(ru)) => { + Ok(CmpValue::I8((lu as i16).wrapping_add_unsigned(ru) as i8)) + } + (CmpValue::I8(lu), CmpValue::I16(ru)) => { + Ok(CmpValue::I8((lu as i16).wrapping_add(ru) as i8)) + } + (CmpValue::I8(lu), CmpValue::U32(ru)) => { + Ok(CmpValue::I8((lu as i32).wrapping_add_unsigned(ru) as i8)) + } + (CmpValue::I8(lu), CmpValue::I32(ru)) => { + Ok(CmpValue::I8((lu as i32).wrapping_add(ru) as i8)) + } + (CmpValue::I8(lu), CmpValue::U64(ru)) => { + Ok(CmpValue::I8((lu as i64).wrapping_add_unsigned(ru) as i8)) + } + (CmpValue::I8(lu), CmpValue::I64(ru)) => { + Ok(CmpValue::I8((lu as i64).wrapping_add(ru) as i8)) + } + (CmpValue::U16(lu), CmpValue::U8(ru)) => { + Ok(CmpValue::U16(lu.wrapping_add(ru as u16))) + } + (CmpValue::U16(lu), CmpValue::I8(ru)) => { + Ok(CmpValue::U16(lu.wrapping_add_signed(ru as i16))) + } + (CmpValue::U16(lu), CmpValue::U16(ru)) => { + Ok(CmpValue::U16(lu.wrapping_add(ru))) + } + (CmpValue::U16(lu), CmpValue::I16(ru)) => { + Ok(CmpValue::U16(lu.wrapping_add_signed(ru))) + } + (CmpValue::U16(lu), CmpValue::U32(ru)) => { + Ok(CmpValue::U16((lu as u32).wrapping_add(ru) as u16)) + } + (CmpValue::U16(lu), CmpValue::I32(ru)) => { + Ok(CmpValue::U16((lu as u32).wrapping_add_signed(ru) as u16)) + } + (CmpValue::U16(lu), CmpValue::U64(ru)) => { + Ok(CmpValue::U16((lu as u64).wrapping_add(ru) as u16)) + } + (CmpValue::U16(lu), CmpValue::I64(ru)) => { + Ok(CmpValue::U16((lu as u64).wrapping_add_signed(ru) as u16)) + } + (CmpValue::I16(lu), CmpValue::U8(ru)) => { + Ok(CmpValue::I16(lu.wrapping_add_unsigned(ru as u16))) + } + (CmpValue::I16(lu), CmpValue::I8(ru)) => { + Ok(CmpValue::I16(lu.wrapping_add(ru as i16))) + } + (CmpValue::I16(lu), CmpValue::U16(ru)) => { + Ok(CmpValue::I16(lu.wrapping_add_unsigned(ru))) + } + (CmpValue::I16(lu), CmpValue::I16(ru)) => { + Ok(CmpValue::I16(lu.wrapping_add(ru))) + } + (CmpValue::I16(lu), CmpValue::U32(ru)) => { + Ok(CmpValue::I16((lu as i32).wrapping_add_unsigned(ru) as i16)) + } + (CmpValue::I16(lu), CmpValue::I32(ru)) => { + Ok(CmpValue::I16((lu as i32).wrapping_add(ru) as i16)) + } + (CmpValue::I16(lu), CmpValue::U64(ru)) => { + Ok(CmpValue::I16((lu as i64).wrapping_add_unsigned(ru) as i16)) + } + (CmpValue::I16(lu), CmpValue::I64(ru)) => { + Ok(CmpValue::I16((lu as i64).wrapping_add(ru) as i16)) + } + (CmpValue::U32(lu), CmpValue::U8(ru)) => { + Ok(CmpValue::U32(lu.wrapping_add(ru as u32))) + } + (CmpValue::U32(lu), CmpValue::I8(ru)) => { + Ok(CmpValue::U32(lu.wrapping_add_signed(ru as i32))) + } + (CmpValue::U32(lu), CmpValue::U16(ru)) => { + Ok(CmpValue::U32(lu.wrapping_add(ru as u32))) + } + (CmpValue::U32(lu), CmpValue::I16(ru)) => { + Ok(CmpValue::U32(lu.wrapping_add_signed(ru as i32))) + } + (CmpValue::U32(lu), CmpValue::U32(ru)) => { + Ok(CmpValue::U32(lu.wrapping_add(ru))) + } + (CmpValue::U32(lu), CmpValue::I32(ru)) => { + Ok(CmpValue::U32(lu.wrapping_add_signed(ru))) + } + (CmpValue::U32(lu), CmpValue::U64(ru)) => { + Ok(CmpValue::U32((lu as u64).wrapping_add(ru) as u32)) + } + (CmpValue::U32(lu), CmpValue::I64(ru)) => { + Ok(CmpValue::U32((lu as u64).wrapping_add_signed(ru) as u32)) + } + (CmpValue::I32(lu), CmpValue::U8(ru)) => { + Ok(CmpValue::I32(lu.wrapping_add_unsigned(ru as u32))) + } + (CmpValue::I32(lu), CmpValue::I8(ru)) => { + Ok(CmpValue::I32(lu.wrapping_add(ru as i32))) + } + (CmpValue::I32(lu), CmpValue::U16(ru)) => { + Ok(CmpValue::I32(lu.wrapping_add_unsigned(ru as u32))) + } + (CmpValue::I32(lu), CmpValue::I16(ru)) => { + Ok(CmpValue::I32(lu.wrapping_add(ru as i32))) + } + (CmpValue::I32(lu), CmpValue::U32(ru)) => { + Ok(CmpValue::I32(lu.wrapping_add_unsigned(ru))) + } + (CmpValue::I32(lu), CmpValue::I32(ru)) => { + Ok(CmpValue::I32(lu.wrapping_add(ru))) + } + (CmpValue::I32(lu), CmpValue::U64(ru)) => { + Ok(CmpValue::I32((lu as i64).wrapping_add_unsigned(ru) as i32)) + } + (CmpValue::I32(lu), CmpValue::I64(ru)) => { + Ok(CmpValue::I32((lu as i64).wrapping_add(ru) as i32)) + } + (CmpValue::U64(lu), CmpValue::U8(ru)) => { + Ok(CmpValue::U64(lu.wrapping_add(ru as u64))) + } + (CmpValue::U64(lu), CmpValue::I8(ru)) => { + Ok(CmpValue::U64(lu.wrapping_add_signed(ru as i64))) + } + (CmpValue::U64(lu), CmpValue::U16(ru)) => { + Ok(CmpValue::U64(lu.wrapping_add(ru as u64))) + } + (CmpValue::U64(lu), CmpValue::I16(ru)) => { + Ok(CmpValue::U64(lu.wrapping_add_signed(ru as i64))) + } + (CmpValue::U64(lu), CmpValue::U32(ru)) => { + Ok(CmpValue::U64(lu.wrapping_add(ru as u64))) + } + (CmpValue::U64(lu), CmpValue::I32(ru)) => { + Ok(CmpValue::U64(lu.wrapping_add_signed(ru as i64))) + } + (CmpValue::U64(lu), CmpValue::U64(ru)) => { + Ok(CmpValue::U64(lu.wrapping_add(ru))) + } + (CmpValue::U64(lu), CmpValue::I64(ru)) => { + Ok(CmpValue::U64(lu.wrapping_add_signed(ru))) + } + (CmpValue::I64(lu), CmpValue::U8(ru)) => { + Ok(CmpValue::I64(lu.wrapping_add_unsigned(ru as u64))) + } + (CmpValue::I64(lu), CmpValue::I8(ru)) => { + Ok(CmpValue::I64(lu.wrapping_add(ru as i64))) + } + (CmpValue::I64(lu), CmpValue::U16(ru)) => { + Ok(CmpValue::I64(lu.wrapping_add_unsigned(ru as u64))) + } + (CmpValue::I64(lu), CmpValue::I16(ru)) => { + Ok(CmpValue::I64(lu.wrapping_add(ru as i64))) + } + (CmpValue::I64(lu), CmpValue::U32(ru)) => { + Ok(CmpValue::I64(lu.wrapping_add_unsigned(ru as u64))) + } + (CmpValue::I64(lu), CmpValue::I32(ru)) => { + Ok(CmpValue::I64(lu.wrapping_add(ru as i64))) + } + (CmpValue::I64(lu), CmpValue::U64(ru)) => { + Ok(CmpValue::I64(lu.wrapping_add_unsigned(ru))) + } + (CmpValue::I64(lu), CmpValue::I64(ru)) => { + Ok(CmpValue::I64(lu.wrapping_add(ru))) + } + _ => bail!("Cannot multiply non-integral types"), + } + } + CmpExpr::Sub((l, r)) => { + let lv = self.simplify(l)?; + let rv = self.simplify(r)?; + + match (lv, rv) { + (CmpValue::U8(lu), CmpValue::U8(ru)) => Ok(CmpValue::U8(lu.wrapping_sub(ru))), + (CmpValue::U8(lu), CmpValue::I8(ru)) => { + Ok(CmpValue::U8(lu.wrapping_add_signed(-ru))) + } + (CmpValue::U8(lu), CmpValue::U16(ru)) => { + Ok(CmpValue::U8((lu as u16).wrapping_sub(ru) as u8)) + } + (CmpValue::U8(lu), CmpValue::I16(ru)) => { + Ok(CmpValue::U8((lu as u16).wrapping_add_signed(-ru) as u8)) + } + (CmpValue::U8(lu), CmpValue::U32(ru)) => { + Ok(CmpValue::U8((lu as u32).wrapping_sub(ru) as u8)) + } + (CmpValue::U8(lu), CmpValue::I32(ru)) => { + Ok(CmpValue::U8((lu as u32).wrapping_add_signed(-ru) as u8)) + } + (CmpValue::U8(lu), CmpValue::U64(ru)) => { + Ok(CmpValue::U8((lu as u64).wrapping_sub(ru) as u8)) + } + (CmpValue::U8(lu), CmpValue::I64(ru)) => { + Ok(CmpValue::U8((lu as u64).wrapping_add_signed(-ru) as u8)) + } + (CmpValue::I8(lu), CmpValue::U8(ru)) => { + Ok(CmpValue::I8(lu.wrapping_add_unsigned(ru))) + } + (CmpValue::I8(lu), CmpValue::I8(ru)) => Ok(CmpValue::I8(lu.wrapping_sub(ru))), + (CmpValue::I8(lu), CmpValue::U16(ru)) => { + Ok(CmpValue::I8((lu as i16).wrapping_add_unsigned(ru) as i8)) + } + (CmpValue::I8(lu), CmpValue::I16(ru)) => { + Ok(CmpValue::I8((lu as i16).wrapping_sub(ru) as i8)) + } + (CmpValue::I8(lu), CmpValue::U32(ru)) => { + Ok(CmpValue::I8((lu as i32).wrapping_add_unsigned(ru) as i8)) + } + (CmpValue::I8(lu), CmpValue::I32(ru)) => { + Ok(CmpValue::I8((lu as i32).wrapping_sub(ru) as i8)) + } + (CmpValue::I8(lu), CmpValue::U64(ru)) => { + Ok(CmpValue::I8((lu as i64).wrapping_add_unsigned(ru) as i8)) + } + (CmpValue::I8(lu), CmpValue::I64(ru)) => { + Ok(CmpValue::I8((lu as i64).wrapping_sub(ru) as i8)) + } + (CmpValue::U16(lu), CmpValue::U8(ru)) => { + Ok(CmpValue::U16(lu.wrapping_sub(ru as u16))) + } + (CmpValue::U16(lu), CmpValue::I8(ru)) => { + Ok(CmpValue::U16(lu.wrapping_add_signed(-ru as i16))) + } + (CmpValue::U16(lu), CmpValue::U16(ru)) => { + Ok(CmpValue::U16(lu.wrapping_sub(ru))) + } + (CmpValue::U16(lu), CmpValue::I16(ru)) => { + Ok(CmpValue::U16(lu.wrapping_add_signed(-ru))) + } + (CmpValue::U16(lu), CmpValue::U32(ru)) => { + Ok(CmpValue::U16((lu as u32).wrapping_sub(ru) as u16)) + } + (CmpValue::U16(lu), CmpValue::I32(ru)) => { + Ok(CmpValue::U16((lu as u32).wrapping_add_signed(-ru) as u16)) + } + (CmpValue::U16(lu), CmpValue::U64(ru)) => { + Ok(CmpValue::U16((lu as u64).wrapping_sub(ru) as u16)) + } + (CmpValue::U16(lu), CmpValue::I64(ru)) => { + Ok(CmpValue::U16((lu as u64).wrapping_add_signed(-ru) as u16)) + } + (CmpValue::I16(lu), CmpValue::U8(ru)) => { + Ok(CmpValue::I16(lu.wrapping_add_unsigned(ru as u16))) + } + (CmpValue::I16(lu), CmpValue::I8(ru)) => { + Ok(CmpValue::I16(lu.wrapping_sub(ru as i16))) + } + (CmpValue::I16(lu), CmpValue::U16(ru)) => { + Ok(CmpValue::I16(lu.wrapping_add_unsigned(ru))) + } + (CmpValue::I16(lu), CmpValue::I16(ru)) => { + Ok(CmpValue::I16(lu.wrapping_sub(ru))) + } + (CmpValue::I16(lu), CmpValue::U32(ru)) => { + Ok(CmpValue::I16((lu as i32).wrapping_add_unsigned(ru) as i16)) + } + (CmpValue::I16(lu), CmpValue::I32(ru)) => { + Ok(CmpValue::I16((lu as i32).wrapping_sub(ru) as i16)) + } + (CmpValue::I16(lu), CmpValue::U64(ru)) => { + Ok(CmpValue::I16((lu as i64).wrapping_add_unsigned(ru) as i16)) + } + (CmpValue::I16(lu), CmpValue::I64(ru)) => { + Ok(CmpValue::I16((lu as i64).wrapping_sub(ru) as i16)) + } + (CmpValue::U32(lu), CmpValue::U8(ru)) => { + Ok(CmpValue::U32(lu.wrapping_sub(ru as u32))) + } + (CmpValue::U32(lu), CmpValue::I8(ru)) => { + Ok(CmpValue::U32(lu.wrapping_add_signed(-ru as i32))) + } + (CmpValue::U32(lu), CmpValue::U16(ru)) => { + Ok(CmpValue::U32(lu.wrapping_sub(ru as u32))) + } + (CmpValue::U32(lu), CmpValue::I16(ru)) => { + Ok(CmpValue::U32(lu.wrapping_add_signed(-ru as i32))) + } + (CmpValue::U32(lu), CmpValue::U32(ru)) => { + Ok(CmpValue::U32(lu.wrapping_sub(ru))) + } + (CmpValue::U32(lu), CmpValue::I32(ru)) => { + Ok(CmpValue::U32(lu.wrapping_add_signed(-ru))) + } + (CmpValue::U32(lu), CmpValue::U64(ru)) => { + Ok(CmpValue::U32((lu as u64).wrapping_sub(ru) as u32)) + } + (CmpValue::U32(lu), CmpValue::I64(ru)) => { + Ok(CmpValue::U32((lu as u64).wrapping_add_signed(-ru) as u32)) + } + (CmpValue::I32(lu), CmpValue::U8(ru)) => { + Ok(CmpValue::I32(lu.wrapping_add_unsigned(ru as u32))) + } + (CmpValue::I32(lu), CmpValue::I8(ru)) => { + Ok(CmpValue::I32(lu.wrapping_sub(ru as i32))) + } + (CmpValue::I32(lu), CmpValue::U16(ru)) => { + Ok(CmpValue::I32(lu.wrapping_add_unsigned(ru as u32))) + } + (CmpValue::I32(lu), CmpValue::I16(ru)) => { + Ok(CmpValue::I32(lu.wrapping_sub(ru as i32))) + } + (CmpValue::I32(lu), CmpValue::U32(ru)) => { + Ok(CmpValue::I32(lu.wrapping_add_unsigned(ru))) + } + (CmpValue::I32(lu), CmpValue::I32(ru)) => { + Ok(CmpValue::I32(lu.wrapping_sub(ru))) + } + (CmpValue::I32(lu), CmpValue::U64(ru)) => { + Ok(CmpValue::I32((lu as i64).wrapping_add_unsigned(ru) as i32)) + } + (CmpValue::I32(lu), CmpValue::I64(ru)) => { + Ok(CmpValue::I32((lu as i64).wrapping_sub(ru) as i32)) + } + (CmpValue::U64(lu), CmpValue::U8(ru)) => { + Ok(CmpValue::U64(lu.wrapping_sub(ru as u64))) + } + (CmpValue::U64(lu), CmpValue::I8(ru)) => { + Ok(CmpValue::U64(lu.wrapping_add_signed(-ru as i64))) + } + (CmpValue::U64(lu), CmpValue::U16(ru)) => { + Ok(CmpValue::U64(lu.wrapping_sub(ru as u64))) + } + (CmpValue::U64(lu), CmpValue::I16(ru)) => { + Ok(CmpValue::U64(lu.wrapping_add_signed(-ru as i64))) + } + (CmpValue::U64(lu), CmpValue::U32(ru)) => { + Ok(CmpValue::U64(lu.wrapping_sub(ru as u64))) + } + (CmpValue::U64(lu), CmpValue::I32(ru)) => { + Ok(CmpValue::U64(lu.wrapping_add_signed(-ru as i64))) + } + (CmpValue::U64(lu), CmpValue::U64(ru)) => { + Ok(CmpValue::U64(lu.wrapping_sub(ru))) + } + (CmpValue::U64(lu), CmpValue::I64(ru)) => { + Ok(CmpValue::U64(lu.wrapping_add_signed(-ru))) + } + (CmpValue::I64(lu), CmpValue::U8(ru)) => { + Ok(CmpValue::I64(lu.wrapping_add_unsigned(ru as u64))) + } + (CmpValue::I64(lu), CmpValue::I8(ru)) => { + Ok(CmpValue::I64(lu.wrapping_sub(ru as i64))) + } + (CmpValue::I64(lu), CmpValue::U16(ru)) => { + Ok(CmpValue::I64(lu.wrapping_add_unsigned(ru as u64))) + } + (CmpValue::I64(lu), CmpValue::I16(ru)) => { + Ok(CmpValue::I64(lu.wrapping_sub(ru as i64))) + } + (CmpValue::I64(lu), CmpValue::U32(ru)) => { + Ok(CmpValue::I64(lu.wrapping_add_unsigned(ru as u64))) + } + (CmpValue::I64(lu), CmpValue::I32(ru)) => { + Ok(CmpValue::I64(lu.wrapping_sub(ru as i64))) + } + (CmpValue::I64(lu), CmpValue::U64(ru)) => { + Ok(CmpValue::I64(lu.wrapping_add_unsigned(ru))) + } + (CmpValue::I64(lu), CmpValue::I64(ru)) => { + Ok(CmpValue::I64(lu.wrapping_sub(ru))) + } + _ => bail!("Cannot multiply non-integral types"), + } + } + CmpExpr::Shift((shiftee, shifter, typ)) => { + let shiftee = self.simplify(shiftee)?; + let shifter = self.simplify(shifter)?; + + match (shiftee, shifter) { + (CmpValue::U8(lu), CmpValue::U8(ru)) => match typ { + CmpExprShift::Lsl => Ok(CmpValue::U8(lu.wrapping_shl(ru as u32))), + CmpExprShift::Lsr => Ok(CmpValue::U8(lu.wrapping_shr(ru as u32))), + CmpExprShift::Asr => Ok(CmpValue::U8(lu.wrapping_shr(ru as u32))), + CmpExprShift::Ror => Ok(CmpValue::U8(lu.rotate_right(ru as u32))), + }, + (CmpValue::U8(lu), CmpValue::I8(ri)) => { + let ru = ri as u8; + match typ { + CmpExprShift::Lsl => Ok(CmpValue::U8(lu.wrapping_shl(ru as u32))), + CmpExprShift::Lsr => Ok(CmpValue::U8(lu.wrapping_shr(ru as u32))), + CmpExprShift::Asr => Ok(CmpValue::U8(lu.wrapping_shr(ru as u32))), + CmpExprShift::Ror => Ok(CmpValue::U8(lu.rotate_right(ru as u32))), + } + } + (CmpValue::U8(lu), CmpValue::U16(ru)) => match typ { + CmpExprShift::Lsl => Ok(CmpValue::U8(lu.wrapping_shl(ru as u32))), + CmpExprShift::Lsr => Ok(CmpValue::U8(lu.wrapping_shr(ru as u32))), + CmpExprShift::Asr => Ok(CmpValue::U8(lu.wrapping_shr(ru as u32))), + CmpExprShift::Ror => Ok(CmpValue::U8(lu.rotate_right(ru as u32))), + }, + (CmpValue::U8(lu), CmpValue::I16(ri)) => match typ { + CmpExprShift::Lsl => Ok(CmpValue::U8(lu.wrapping_shl(ri as u32))), + CmpExprShift::Lsr => Ok(CmpValue::U8(lu.wrapping_shr(ri as u32))), + CmpExprShift::Asr => Ok(CmpValue::U8(lu.wrapping_shr(ri as u32))), + CmpExprShift::Ror => Ok(CmpValue::U8(lu.rotate_right(ri as u32))), + }, + (CmpValue::U8(lu), CmpValue::U32(ru)) => match typ { + CmpExprShift::Lsl => Ok(CmpValue::U8(lu.wrapping_shl(ru))), + CmpExprShift::Lsr => Ok(CmpValue::U8(lu.wrapping_shr(ru))), + CmpExprShift::Asr => Ok(CmpValue::U8(lu.wrapping_shr(ru))), + CmpExprShift::Ror => Ok(CmpValue::U8(lu.rotate_right(ru))), + }, + (CmpValue::U8(lu), CmpValue::I32(ri)) => match typ { + CmpExprShift::Lsl => Ok(CmpValue::U8(lu.wrapping_shl(ri as u32))), + CmpExprShift::Lsr => Ok(CmpValue::U8(lu.wrapping_shr(ri as u32))), + CmpExprShift::Asr => Ok(CmpValue::U8(lu.wrapping_shr(ri as u32))), + CmpExprShift::Ror => Ok(CmpValue::U8(lu.rotate_right(ri as u32))), + }, + (CmpValue::U8(lu), CmpValue::U64(ru)) => match typ { + CmpExprShift::Lsl => Ok(CmpValue::U8(lu.wrapping_shl(ru as u32))), + CmpExprShift::Lsr => Ok(CmpValue::U8(lu.wrapping_shr(ru as u32))), + CmpExprShift::Asr => Ok(CmpValue::U8(lu.wrapping_shr(ru as u32))), + CmpExprShift::Ror => Ok(CmpValue::U8(lu.rotate_right(ru as u32))), + }, + (CmpValue::U8(lu), CmpValue::I64(ri)) => match typ { + CmpExprShift::Lsl => Ok(CmpValue::U8(lu.wrapping_shl(ri as u32))), + CmpExprShift::Lsr => Ok(CmpValue::U8(lu.wrapping_shr(ri as u32))), + CmpExprShift::Asr => Ok(CmpValue::U8(lu.wrapping_shr(ri as u32))), + CmpExprShift::Ror => Ok(CmpValue::U8(lu.rotate_right(ri as u32))), + }, + (CmpValue::I8(li), CmpValue::U8(ru)) => match typ { + CmpExprShift::Lsl => Ok(CmpValue::I8(li.wrapping_shl(ru as u32))), + CmpExprShift::Lsr => Ok(CmpValue::I8(li.wrapping_shr(ru as u32))), + CmpExprShift::Asr => Ok(CmpValue::I8(li.wrapping_shr(ru as u32))), + CmpExprShift::Ror => Ok(CmpValue::I8(li.rotate_right(ru as u32))), + }, + (CmpValue::I8(li), CmpValue::I8(ri)) => match typ { + CmpExprShift::Lsl => Ok(CmpValue::I8(li.wrapping_shl(ri as u32))), + CmpExprShift::Lsr => Ok(CmpValue::I8(li.wrapping_shr(ri as u32))), + CmpExprShift::Asr => Ok(CmpValue::I8(li.wrapping_shr(ri as u32))), + CmpExprShift::Ror => Ok(CmpValue::I8(li.rotate_right(ri as u32))), + }, + (CmpValue::I8(li), CmpValue::U16(ru)) => match typ { + CmpExprShift::Lsl => Ok(CmpValue::I8(li.wrapping_shl(ru as u32))), + CmpExprShift::Lsr => Ok(CmpValue::I8(li.wrapping_shr(ru as u32))), + CmpExprShift::Asr => Ok(CmpValue::I8(li.wrapping_shr(ru as u32))), + CmpExprShift::Ror => Ok(CmpValue::I8(li.rotate_right(ru as u32))), + }, + (CmpValue::I8(li), CmpValue::I16(ri)) => match typ { + CmpExprShift::Lsl => Ok(CmpValue::I8(li.wrapping_shl(ri as u32))), + CmpExprShift::Lsr => Ok(CmpValue::I8(li.wrapping_shr(ri as u32))), + CmpExprShift::Asr => Ok(CmpValue::I8(li.wrapping_shr(ri as u32))), + CmpExprShift::Ror => Ok(CmpValue::I8(li.rotate_right(ri as u32))), + }, + (CmpValue::I8(li), CmpValue::U32(ru)) => match typ { + CmpExprShift::Lsl => Ok(CmpValue::I8(li.wrapping_shl(ru))), + CmpExprShift::Lsr => Ok(CmpValue::I8(li.wrapping_shr(ru))), + CmpExprShift::Asr => Ok(CmpValue::I8(li.wrapping_shr(ru))), + CmpExprShift::Ror => Ok(CmpValue::I8(li.rotate_right(ru))), + }, + (CmpValue::I8(li), CmpValue::I32(ri)) => match typ { + CmpExprShift::Lsl => Ok(CmpValue::I8(li.wrapping_shl(ri as u32))), + CmpExprShift::Lsr => Ok(CmpValue::I8(li.wrapping_shr(ri as u32))), + CmpExprShift::Asr => Ok(CmpValue::I8(li.wrapping_shr(ri as u32))), + CmpExprShift::Ror => Ok(CmpValue::I8(li.rotate_right(ri as u32))), + }, + (CmpValue::I8(li), CmpValue::U64(ru)) => match typ { + CmpExprShift::Lsl => Ok(CmpValue::I8(li.wrapping_shl(ru as u32))), + CmpExprShift::Lsr => Ok(CmpValue::I8(li.wrapping_shr(ru as u32))), + CmpExprShift::Asr => Ok(CmpValue::I8(li.wrapping_shr(ru as u32))), + CmpExprShift::Ror => Ok(CmpValue::I8(li.rotate_right(ru as u32))), + }, + (CmpValue::I8(li), CmpValue::I64(ri)) => match typ { + CmpExprShift::Lsl => Ok(CmpValue::I8(li.wrapping_shl(ri as u32))), + CmpExprShift::Lsr => Ok(CmpValue::I8(li.wrapping_shr(ri as u32))), + CmpExprShift::Asr => Ok(CmpValue::I8(li.wrapping_shr(ri as u32))), + CmpExprShift::Ror => Ok(CmpValue::I8(li.rotate_right(ri as u32))), + }, + (CmpValue::U16(lu), CmpValue::U8(ru)) => match typ { + CmpExprShift::Lsl => Ok(CmpValue::U16(lu.wrapping_shl(ru as u32))), + CmpExprShift::Lsr => Ok(CmpValue::U16(lu.wrapping_shr(ru as u32))), + CmpExprShift::Asr => Ok(CmpValue::U16(lu.wrapping_shr(ru as u32))), + CmpExprShift::Ror => Ok(CmpValue::U16(lu.rotate_right(ru as u32))), + }, + (CmpValue::U16(lu), CmpValue::I8(ri)) => match typ { + CmpExprShift::Lsl => Ok(CmpValue::U16(lu.wrapping_shl(ri as u32))), + CmpExprShift::Lsr => Ok(CmpValue::U16(lu.wrapping_shr(ri as u32))), + CmpExprShift::Asr => Ok(CmpValue::U16(lu.wrapping_shr(ri as u32))), + CmpExprShift::Ror => Ok(CmpValue::U16(lu.rotate_right(ri as u32))), + }, + (CmpValue::U16(lu), CmpValue::U16(ru)) => match typ { + CmpExprShift::Lsl => Ok(CmpValue::U16(lu.wrapping_shl(ru as u32))), + CmpExprShift::Lsr => Ok(CmpValue::U16(lu.wrapping_shr(ru as u32))), + CmpExprShift::Asr => Ok(CmpValue::U16(lu.wrapping_shr(ru as u32))), + CmpExprShift::Ror => Ok(CmpValue::U16(lu.rotate_right(ru as u32))), + }, + (CmpValue::U16(lu), CmpValue::I16(ri)) => match typ { + CmpExprShift::Lsl => Ok(CmpValue::U16(lu.wrapping_shl(ri as u32))), + CmpExprShift::Lsr => Ok(CmpValue::U16(lu.wrapping_shr(ri as u32))), + CmpExprShift::Asr => Ok(CmpValue::U16(lu.wrapping_shr(ri as u32))), + CmpExprShift::Ror => Ok(CmpValue::U16(lu.rotate_right(ri as u32))), + }, + (CmpValue::U16(lu), CmpValue::U32(ru)) => match typ { + CmpExprShift::Lsl => Ok(CmpValue::U16(lu.wrapping_shl(ru))), + CmpExprShift::Lsr => Ok(CmpValue::U16(lu.wrapping_shr(ru))), + CmpExprShift::Asr => Ok(CmpValue::U16(lu.wrapping_shr(ru))), + CmpExprShift::Ror => Ok(CmpValue::U16(lu.rotate_right(ru))), + }, + (CmpValue::U16(lu), CmpValue::I32(ri)) => match typ { + CmpExprShift::Lsl => Ok(CmpValue::U16(lu.wrapping_shl(ri as u32))), + CmpExprShift::Lsr => Ok(CmpValue::U16(lu.wrapping_shr(ri as u32))), + CmpExprShift::Asr => Ok(CmpValue::U16(lu.wrapping_shr(ri as u32))), + CmpExprShift::Ror => Ok(CmpValue::U16(lu.rotate_right(ri as u32))), + }, + (CmpValue::U16(lu), CmpValue::U64(ru)) => match typ { + CmpExprShift::Lsl => Ok(CmpValue::U16(lu.wrapping_shl(ru as u32))), + CmpExprShift::Lsr => Ok(CmpValue::U16(lu.wrapping_shr(ru as u32))), + CmpExprShift::Asr => Ok(CmpValue::U16(lu.wrapping_shr(ru as u32))), + CmpExprShift::Ror => Ok(CmpValue::U16(lu.rotate_right(ru as u32))), + }, + (CmpValue::U16(lu), CmpValue::I64(ri)) => match typ { + CmpExprShift::Lsl => Ok(CmpValue::U16(lu.wrapping_shl(ri as u32))), + CmpExprShift::Lsr => Ok(CmpValue::U16(lu.wrapping_shr(ri as u32))), + CmpExprShift::Asr => Ok(CmpValue::U16(lu.wrapping_shr(ri as u32))), + CmpExprShift::Ror => Ok(CmpValue::U16(lu.rotate_right(ri as u32))), + }, + (CmpValue::I16(li), CmpValue::U8(ru)) => match typ { + CmpExprShift::Lsl => Ok(CmpValue::I16(li.wrapping_shl(ru as u32))), + CmpExprShift::Lsr => Ok(CmpValue::I16(li.wrapping_shr(ru as u32))), + CmpExprShift::Asr => Ok(CmpValue::I16(li.wrapping_shr(ru as u32))), + CmpExprShift::Ror => Ok(CmpValue::I16(li.rotate_right(ru as u32))), + }, + (CmpValue::I16(li), CmpValue::I8(ri)) => match typ { + CmpExprShift::Lsl => Ok(CmpValue::I16(li.wrapping_shl(ri as u32))), + CmpExprShift::Lsr => Ok(CmpValue::I16(li.wrapping_shr(ri as u32))), + CmpExprShift::Asr => Ok(CmpValue::I16(li.wrapping_shr(ri as u32))), + CmpExprShift::Ror => Ok(CmpValue::I16(li.rotate_right(ri as u32))), + }, + (CmpValue::I16(li), CmpValue::U16(ru)) => match typ { + CmpExprShift::Lsl => Ok(CmpValue::I16(li.wrapping_shl(ru as u32))), + CmpExprShift::Lsr => Ok(CmpValue::I16(li.wrapping_shr(ru as u32))), + CmpExprShift::Asr => Ok(CmpValue::I16(li.wrapping_shr(ru as u32))), + CmpExprShift::Ror => Ok(CmpValue::I16(li.rotate_right(ru as u32))), + }, + (CmpValue::I16(li), CmpValue::I16(ri)) => match typ { + CmpExprShift::Lsl => Ok(CmpValue::I16(li.wrapping_shl(ri as u32))), + CmpExprShift::Lsr => Ok(CmpValue::I16(li.wrapping_shr(ri as u32))), + CmpExprShift::Asr => Ok(CmpValue::I16(li.wrapping_shr(ri as u32))), + CmpExprShift::Ror => Ok(CmpValue::I16(li.rotate_right(ri as u32))), + }, + (CmpValue::I16(li), CmpValue::U32(ru)) => match typ { + CmpExprShift::Lsl => Ok(CmpValue::I16(li.wrapping_shl(ru))), + CmpExprShift::Lsr => Ok(CmpValue::I16(li.wrapping_shr(ru))), + CmpExprShift::Asr => Ok(CmpValue::I16(li.wrapping_shr(ru))), + CmpExprShift::Ror => Ok(CmpValue::I16(li.rotate_right(ru))), + }, + (CmpValue::I16(li), CmpValue::I32(ri)) => match typ { + CmpExprShift::Lsl => Ok(CmpValue::I16(li.wrapping_shl(ri as u32))), + CmpExprShift::Lsr => Ok(CmpValue::I16(li.wrapping_shr(ri as u32))), + CmpExprShift::Asr => Ok(CmpValue::I16(li.wrapping_shr(ri as u32))), + CmpExprShift::Ror => Ok(CmpValue::I16(li.rotate_right(ri as u32))), + }, + (CmpValue::I16(li), CmpValue::U64(ru)) => match typ { + CmpExprShift::Lsl => Ok(CmpValue::I16(li.wrapping_shl(ru as u32))), + CmpExprShift::Lsr => Ok(CmpValue::I16(li.wrapping_shr(ru as u32))), + CmpExprShift::Asr => Ok(CmpValue::I16(li.wrapping_shr(ru as u32))), + CmpExprShift::Ror => Ok(CmpValue::I16(li.rotate_right(ru as u32))), + }, + (CmpValue::I16(li), CmpValue::I64(ri)) => match typ { + CmpExprShift::Lsl => Ok(CmpValue::I16(li.wrapping_shl(ri as u32))), + CmpExprShift::Lsr => Ok(CmpValue::I16(li.wrapping_shr(ri as u32))), + CmpExprShift::Asr => Ok(CmpValue::I16(li.wrapping_shr(ri as u32))), + CmpExprShift::Ror => Ok(CmpValue::I16(li.rotate_right(ri as u32))), + }, + (CmpValue::U32(lu), CmpValue::U8(ru)) => match typ { + CmpExprShift::Lsl => Ok(CmpValue::U32(lu.wrapping_shl(ru as u32))), + CmpExprShift::Lsr => Ok(CmpValue::U32(lu.wrapping_shr(ru as u32))), + CmpExprShift::Asr => Ok(CmpValue::U32(lu.wrapping_shr(ru as u32))), + CmpExprShift::Ror => Ok(CmpValue::U32(lu.rotate_right(ru as u32))), + }, + (CmpValue::U32(lu), CmpValue::I8(ri)) => match typ { + CmpExprShift::Lsl => Ok(CmpValue::U32(lu.wrapping_shl(ri as u32))), + CmpExprShift::Lsr => Ok(CmpValue::U32(lu.wrapping_shr(ri as u32))), + CmpExprShift::Asr => Ok(CmpValue::U32(lu.wrapping_shr(ri as u32))), + CmpExprShift::Ror => Ok(CmpValue::U32(lu.rotate_right(ri as u32))), + }, + (CmpValue::U32(lu), CmpValue::U16(ru)) => match typ { + CmpExprShift::Lsl => Ok(CmpValue::U32(lu.wrapping_shl(ru as u32))), + CmpExprShift::Lsr => Ok(CmpValue::U32(lu.wrapping_shr(ru as u32))), + CmpExprShift::Asr => Ok(CmpValue::U32(lu.wrapping_shr(ru as u32))), + CmpExprShift::Ror => Ok(CmpValue::U32(lu.rotate_right(ru as u32))), + }, + (CmpValue::U32(lu), CmpValue::I16(ri)) => match typ { + CmpExprShift::Lsl => Ok(CmpValue::U32(lu.wrapping_shl(ri as u32))), + CmpExprShift::Lsr => Ok(CmpValue::U32(lu.wrapping_shr(ri as u32))), + CmpExprShift::Asr => Ok(CmpValue::U32(lu.wrapping_shr(ri as u32))), + CmpExprShift::Ror => Ok(CmpValue::U32(lu.rotate_right(ri as u32))), + }, + (CmpValue::U32(lu), CmpValue::U32(ru)) => match typ { + CmpExprShift::Lsl => Ok(CmpValue::U32(lu.wrapping_shl(ru))), + CmpExprShift::Lsr => Ok(CmpValue::U32(lu.wrapping_shr(ru))), + CmpExprShift::Asr => Ok(CmpValue::U32(lu.wrapping_shr(ru))), + CmpExprShift::Ror => Ok(CmpValue::U32(lu.rotate_right(ru))), + }, + (CmpValue::U32(lu), CmpValue::I32(ri)) => match typ { + CmpExprShift::Lsl => Ok(CmpValue::U32(lu.wrapping_shl(ri as u32))), + CmpExprShift::Lsr => Ok(CmpValue::U32(lu.wrapping_shr(ri as u32))), + CmpExprShift::Asr => Ok(CmpValue::U32(lu.wrapping_shr(ri as u32))), + CmpExprShift::Ror => Ok(CmpValue::U32(lu.rotate_right(ri as u32))), + }, + (CmpValue::U32(lu), CmpValue::U64(ru)) => match typ { + CmpExprShift::Lsl => Ok(CmpValue::U32(lu.wrapping_shl(ru as u32))), + CmpExprShift::Lsr => Ok(CmpValue::U32(lu.wrapping_shr(ru as u32))), + CmpExprShift::Asr => Ok(CmpValue::U32(lu.wrapping_shr(ru as u32))), + CmpExprShift::Ror => Ok(CmpValue::U32(lu.rotate_right(ru as u32))), + }, + (CmpValue::U32(lu), CmpValue::I64(ri)) => match typ { + CmpExprShift::Lsl => Ok(CmpValue::U32(lu.wrapping_shl(ri as u32))), + CmpExprShift::Lsr => Ok(CmpValue::U32(lu.wrapping_shr(ri as u32))), + CmpExprShift::Asr => Ok(CmpValue::U32(lu.wrapping_shr(ri as u32))), + CmpExprShift::Ror => Ok(CmpValue::U32(lu.rotate_right(ri as u32))), + }, + (CmpValue::I32(li), CmpValue::U8(ru)) => match typ { + CmpExprShift::Lsl => Ok(CmpValue::I32(li.wrapping_shl(ru as u32))), + CmpExprShift::Lsr => Ok(CmpValue::I32(li.wrapping_shr(ru as u32))), + CmpExprShift::Asr => Ok(CmpValue::I32(li.wrapping_shr(ru as u32))), + CmpExprShift::Ror => Ok(CmpValue::I32(li.rotate_right(ru as u32))), + }, + (CmpValue::I32(li), CmpValue::I8(ri)) => match typ { + CmpExprShift::Lsl => Ok(CmpValue::I32(li.wrapping_shl(ri as u32))), + CmpExprShift::Lsr => Ok(CmpValue::I32(li.wrapping_shr(ri as u32))), + CmpExprShift::Asr => Ok(CmpValue::I32(li.wrapping_shr(ri as u32))), + CmpExprShift::Ror => Ok(CmpValue::I32(li.rotate_right(ri as u32))), + }, + (CmpValue::I32(li), CmpValue::U16(ru)) => match typ { + CmpExprShift::Lsl => Ok(CmpValue::I32(li.wrapping_shl(ru as u32))), + CmpExprShift::Lsr => Ok(CmpValue::I32(li.wrapping_shr(ru as u32))), + CmpExprShift::Asr => Ok(CmpValue::I32(li.wrapping_shr(ru as u32))), + CmpExprShift::Ror => Ok(CmpValue::I32(li.rotate_right(ru as u32))), + }, + (CmpValue::I32(li), CmpValue::I16(ri)) => match typ { + CmpExprShift::Lsl => Ok(CmpValue::I32(li.wrapping_shl(ri as u32))), + CmpExprShift::Lsr => Ok(CmpValue::I32(li.wrapping_shr(ri as u32))), + CmpExprShift::Asr => Ok(CmpValue::I32(li.wrapping_shr(ri as u32))), + CmpExprShift::Ror => Ok(CmpValue::I32(li.rotate_right(ri as u32))), + }, + (CmpValue::I32(li), CmpValue::U32(ru)) => match typ { + CmpExprShift::Lsl => Ok(CmpValue::I32(li.wrapping_shl(ru))), + CmpExprShift::Lsr => Ok(CmpValue::I32(li.wrapping_shr(ru))), + CmpExprShift::Asr => Ok(CmpValue::I32(li.wrapping_shr(ru))), + CmpExprShift::Ror => Ok(CmpValue::I32(li.rotate_right(ru))), + }, + (CmpValue::I32(li), CmpValue::I32(ri)) => match typ { + CmpExprShift::Lsl => Ok(CmpValue::I32(li.wrapping_shl(ri as u32))), + CmpExprShift::Lsr => Ok(CmpValue::I32(li.wrapping_shr(ri as u32))), + CmpExprShift::Asr => Ok(CmpValue::I32(li.wrapping_shr(ri as u32))), + CmpExprShift::Ror => Ok(CmpValue::I32(li.rotate_right(ri as u32))), + }, + (CmpValue::I32(li), CmpValue::U64(ru)) => match typ { + CmpExprShift::Lsl => Ok(CmpValue::I32(li.wrapping_shl(ru as u32))), + CmpExprShift::Lsr => Ok(CmpValue::I32(li.wrapping_shr(ru as u32))), + CmpExprShift::Asr => Ok(CmpValue::I32(li.wrapping_shr(ru as u32))), + CmpExprShift::Ror => Ok(CmpValue::I32(li.rotate_right(ru as u32))), + }, + (CmpValue::I32(li), CmpValue::I64(ri)) => match typ { + CmpExprShift::Lsl => Ok(CmpValue::I32(li.wrapping_shl(ri as u32))), + CmpExprShift::Lsr => Ok(CmpValue::I32(li.wrapping_shr(ri as u32))), + CmpExprShift::Asr => Ok(CmpValue::I32(li.wrapping_shr(ri as u32))), + CmpExprShift::Ror => Ok(CmpValue::I32(li.rotate_right(ri as u32))), + }, + (CmpValue::U64(lu), CmpValue::U8(ru)) => match typ { + CmpExprShift::Lsl => Ok(CmpValue::U64(lu.wrapping_shl(ru as u32))), + CmpExprShift::Lsr => Ok(CmpValue::U64(lu.wrapping_shr(ru as u32))), + CmpExprShift::Asr => Ok(CmpValue::U64(lu.wrapping_shr(ru as u32))), + CmpExprShift::Ror => Ok(CmpValue::U64(lu.rotate_right(ru as u32))), + }, + (CmpValue::U64(lu), CmpValue::I8(ri)) => match typ { + CmpExprShift::Lsl => Ok(CmpValue::U64(lu.wrapping_shl(ri as u32))), + CmpExprShift::Lsr => Ok(CmpValue::U64(lu.wrapping_shr(ri as u32))), + CmpExprShift::Asr => Ok(CmpValue::U64(lu.wrapping_shr(ri as u32))), + CmpExprShift::Ror => Ok(CmpValue::U64(lu.rotate_right(ri as u32))), + }, + (CmpValue::U64(lu), CmpValue::U16(ru)) => match typ { + CmpExprShift::Lsl => Ok(CmpValue::U64(lu.wrapping_shl(ru as u32))), + CmpExprShift::Lsr => Ok(CmpValue::U64(lu.wrapping_shr(ru as u32))), + CmpExprShift::Asr => Ok(CmpValue::U64(lu.wrapping_shr(ru as u32))), + CmpExprShift::Ror => Ok(CmpValue::U64(lu.rotate_right(ru as u32))), + }, + (CmpValue::U64(lu), CmpValue::I16(ri)) => match typ { + CmpExprShift::Lsl => Ok(CmpValue::U64(lu.wrapping_shl(ri as u32))), + CmpExprShift::Lsr => Ok(CmpValue::U64(lu.wrapping_shr(ri as u32))), + CmpExprShift::Asr => Ok(CmpValue::U64(lu.wrapping_shr(ri as u32))), + CmpExprShift::Ror => Ok(CmpValue::U64(lu.rotate_right(ri as u32))), + }, + (CmpValue::U64(lu), CmpValue::U32(ru)) => match typ { + CmpExprShift::Lsl => Ok(CmpValue::U64(lu.wrapping_shl(ru))), + CmpExprShift::Lsr => Ok(CmpValue::U64(lu.wrapping_shr(ru))), + CmpExprShift::Asr => Ok(CmpValue::U64(lu.wrapping_shr(ru))), + CmpExprShift::Ror => Ok(CmpValue::U64(lu.rotate_right(ru))), + }, + (CmpValue::U64(lu), CmpValue::I32(ri)) => match typ { + CmpExprShift::Lsl => Ok(CmpValue::U64(lu.wrapping_shl(ri as u32))), + CmpExprShift::Lsr => Ok(CmpValue::U64(lu.wrapping_shr(ri as u32))), + CmpExprShift::Asr => Ok(CmpValue::U64(lu.wrapping_shr(ri as u32))), + CmpExprShift::Ror => Ok(CmpValue::U64(lu.rotate_right(ri as u32))), + }, + (CmpValue::U64(lu), CmpValue::U64(ru)) => match typ { + CmpExprShift::Lsl => Ok(CmpValue::U64(lu.wrapping_shl(ru as u32))), + CmpExprShift::Lsr => Ok(CmpValue::U64(lu.wrapping_shr(ru as u32))), + CmpExprShift::Asr => Ok(CmpValue::U64(lu.wrapping_shr(ru as u32))), + CmpExprShift::Ror => Ok(CmpValue::U64(lu.rotate_right(ru as u32))), + }, + (CmpValue::U64(lu), CmpValue::I64(ri)) => match typ { + CmpExprShift::Lsl => Ok(CmpValue::U64(lu.wrapping_shl(ri as u32))), + CmpExprShift::Lsr => Ok(CmpValue::U64(lu.wrapping_shr(ri as u32))), + CmpExprShift::Asr => Ok(CmpValue::U64(lu.wrapping_shr(ri as u32))), + CmpExprShift::Ror => Ok(CmpValue::U64(lu.rotate_right(ri as u32))), + }, + (CmpValue::I64(li), CmpValue::U8(ru)) => match typ { + CmpExprShift::Lsl => Ok(CmpValue::I64(li.wrapping_shl(ru as u32))), + CmpExprShift::Lsr => Ok(CmpValue::I64(li.wrapping_shr(ru as u32))), + CmpExprShift::Asr => Ok(CmpValue::I64(li.wrapping_shr(ru as u32))), + CmpExprShift::Ror => Ok(CmpValue::I64(li.rotate_right(ru as u32))), + }, + (CmpValue::I64(li), CmpValue::I8(ri)) => match typ { + CmpExprShift::Lsl => Ok(CmpValue::I64(li.wrapping_shl(ri as u32))), + CmpExprShift::Lsr => Ok(CmpValue::I64(li.wrapping_shr(ri as u32))), + CmpExprShift::Asr => Ok(CmpValue::I64(li.wrapping_shr(ri as u32))), + CmpExprShift::Ror => Ok(CmpValue::I64(li.rotate_right(ri as u32))), + }, + (CmpValue::I64(li), CmpValue::U16(ru)) => match typ { + CmpExprShift::Lsl => Ok(CmpValue::I64(li.wrapping_shl(ru as u32))), + CmpExprShift::Lsr => Ok(CmpValue::I64(li.wrapping_shr(ru as u32))), + CmpExprShift::Asr => Ok(CmpValue::I64(li.wrapping_shr(ru as u32))), + CmpExprShift::Ror => Ok(CmpValue::I64(li.rotate_right(ru as u32))), + }, + (CmpValue::I64(li), CmpValue::I16(ri)) => match typ { + CmpExprShift::Lsl => Ok(CmpValue::I64(li.wrapping_shl(ri as u32))), + CmpExprShift::Lsr => Ok(CmpValue::I64(li.wrapping_shr(ri as u32))), + CmpExprShift::Asr => Ok(CmpValue::I64(li.wrapping_shr(ri as u32))), + CmpExprShift::Ror => Ok(CmpValue::I64(li.rotate_right(ri as u32))), + }, + (CmpValue::I64(li), CmpValue::U32(ru)) => match typ { + CmpExprShift::Lsl => Ok(CmpValue::I64(li.wrapping_shl(ru))), + CmpExprShift::Lsr => Ok(CmpValue::I64(li.wrapping_shr(ru))), + CmpExprShift::Asr => Ok(CmpValue::I64(li.wrapping_shr(ru))), + CmpExprShift::Ror => Ok(CmpValue::I64(li.rotate_right(ru))), + }, + (CmpValue::I64(li), CmpValue::I32(ri)) => match typ { + CmpExprShift::Lsl => Ok(CmpValue::I64(li.wrapping_shl(ri as u32))), + CmpExprShift::Lsr => Ok(CmpValue::I64(li.wrapping_shr(ri as u32))), + CmpExprShift::Asr => Ok(CmpValue::I64(li.wrapping_shr(ri as u32))), + CmpExprShift::Ror => Ok(CmpValue::I64(li.rotate_right(ri as u32))), + }, + (CmpValue::I64(li), CmpValue::U64(ru)) => match typ { + CmpExprShift::Lsl => Ok(CmpValue::I64(li.wrapping_shl(ru as u32))), + CmpExprShift::Lsr => Ok(CmpValue::I64(li.wrapping_shr(ru as u32))), + CmpExprShift::Asr => Ok(CmpValue::I64(li.wrapping_shr(ru as u32))), + CmpExprShift::Ror => Ok(CmpValue::I64(li.rotate_right(ru as u32))), + }, + (CmpValue::I64(li), CmpValue::I64(ri)) => match typ { + CmpExprShift::Lsl => Ok(CmpValue::I64(li.wrapping_shl(ri as u32))), + CmpExprShift::Lsr => Ok(CmpValue::I64(li.wrapping_shr(ri as u32))), + CmpExprShift::Asr => Ok(CmpValue::I64(li.wrapping_shr(ri as u32))), + CmpExprShift::Ror => Ok(CmpValue::I64(li.rotate_right(ri as u32))), + }, + _ => { + bail!("Cannot shift non-integral types"); + } + } + } + CmpExpr::I16(i) => Ok(CmpValue::I16(*i)), + CmpExpr::U32(u) => Ok(CmpValue::U32(*u)), + CmpExpr::I32(i) => Ok(CmpValue::I32(*i)), + _ => bail!("Unsupported expression {:?}", expr), + } + } +} + +pub(crate) struct Disassembler { + decoder: InstDecoder, + last: Option, +} + +impl Disassembler { + pub fn new() -> Self { + Self { + decoder: InstDecoder::default(), + last: None, + } + } +} + +impl Default for Disassembler { + fn default() -> Self { + Self::new() + } +} + +impl TracerDisassembler for Disassembler { + fn disassemble(&mut self, bytes: &[u8]) -> Result<()> { + let mut r = U8Reader::new(bytes); + + if let Ok(insn) = self.decoder.decode(&mut r) { + self.last = Some(insn); + } else { + bail!("Could not disassemble {:?}", bytes); + } + + Ok(()) + } + + fn last_was_control_flow(&self) -> bool { + if let Some(last) = self.last.as_ref() { + // NOTE: This is imprecise on ARM because PC is not restricted + // TODO: Are there any other control flow instructions? + return matches!(last.opcode, Opcode::B); + } + + false + } + + // TODO: Make call/ret distinction more accurate, all three can ret/call far or near, but + // there are semantic versions based on operands: + // https://inst.eecs.berkeley.edu/~cs61c/fa20/pdfs/lectures/lec12-bw.pdf + + fn last_was_call(&self) -> bool { + if let Some(last) = self.last.as_ref() { + return matches!(last.opcode, Opcode::BL | Opcode::BLX); + } + + false + } + + // https://quantum5.ca/2017/10/19/arm-ways-to-return/ + fn last_was_ret(&self) -> bool { + if let Some(last) = self.last.as_ref() { + if (last.opcode == Opcode::POP + && last.operands.iter().any(|o| match o { + Operand::Reg(r) => r.number() == 15, + Operand::RegList(l) => l & (1 << 15) != 0, + _ => false, + })) + || (last.opcode == Opcode::MOV + && last + .operands + .first() + .is_some_and(|f| matches!(f, Operand::Reg(r) if r.number() == 15))) + { + true + } else { + last.opcode == Opcode::BX + } + } else { + false + } + } + + fn last_was_cmp(&self) -> bool { + if let Some(last) = self.last.as_ref() { + return matches!( + last.opcode, + Opcode::CMN | Opcode::CMP | Opcode::TST | Opcode::TEQ + ); + } + + false + } + + fn cmp(&self) -> Vec { + let mut cmp_exprs = Vec::new(); + if self.last_was_cmp() { + if let Some(last) = self.last.as_ref() { + for operand in &last.operands { + match operand { + Operand::Reg(r) => { + cmp_exprs.push(CmpExpr::Reg((format!("r{}", r.number()), 0))); + } + Operand::RegWBack(r, _w) => { + cmp_exprs.push(CmpExpr::Reg((format!("r{}", r.number()), 0))); + } + Operand::RegList(l) => { + for i in 0..16 { + if l & (1 << i) != 0 { + cmp_exprs.push(CmpExpr::Reg((format!("r{}", i), 0))); + } + } + } + Operand::RegDeref(r) => { + cmp_exprs.push(CmpExpr::Deref(( + Box::new(CmpExpr::Reg((format!("r{}", r.number()), 0))), + None, + ))); + } + Operand::RegShift(rs) => match rs.into_shift() { + RegShiftStyle::RegImm(r) => { + let reg = r.shiftee(); + let imm = r.imm(); + let typ = match r.stype() { + ShiftStyle::LSL => CmpExprShift::Lsl, + ShiftStyle::LSR => CmpExprShift::Lsr, + ShiftStyle::ASR => CmpExprShift::Asr, + ShiftStyle::ROR => CmpExprShift::Ror, + }; + cmp_exprs.push(CmpExpr::Shift(( + Box::new(CmpExpr::Reg((format!("r{}", reg.number()), 0))), + Box::new(CmpExpr::U8(imm)), + typ, + ))); + } + RegShiftStyle::RegReg(r) => { + let shiftee = r.shiftee(); + let by = r.shifter(); + let typ = match r.stype() { + ShiftStyle::LSL => CmpExprShift::Lsl, + ShiftStyle::LSR => CmpExprShift::Lsr, + ShiftStyle::ASR => CmpExprShift::Asr, + ShiftStyle::ROR => CmpExprShift::Ror, + }; + cmp_exprs.push(CmpExpr::Shift(( + Box::new(CmpExpr::Reg((format!("r{}", shiftee.number()), 0))), + Box::new(CmpExpr::Reg((format!("r{}", by.number()), 0))), + typ, + ))); + } + }, + Operand::RegDerefPostindexRegShift(r, _, _, _) => { + cmp_exprs.push(CmpExpr::Deref(( + Box::new(CmpExpr::Reg((format!("r{}", r.number()), 0))), + None, + ))); + } + Operand::RegDerefPreindexRegShift(r, rs, a, _) => match rs.into_shift() { + RegShiftStyle::RegImm(ri) => { + let reg = ri.shiftee(); + let imm = ri.imm(); + let typ = match ri.stype() { + ShiftStyle::LSL => CmpExprShift::Lsl, + ShiftStyle::LSR => CmpExprShift::Lsr, + ShiftStyle::ASR => CmpExprShift::Asr, + ShiftStyle::ROR => CmpExprShift::Ror, + }; + cmp_exprs.push(CmpExpr::Deref(( + Box::new(CmpExpr::Add(( + Box::new(CmpExpr::Reg((format!("r{}", r.number()), 0))), + Box::new(CmpExpr::Shift(( + Box::new(CmpExpr::Reg(( + format!("r{}", reg.number()), + 0, + ))), + Box::new(CmpExpr::U8(imm)), + typ, + ))), + ))), + None, + ))); + } + RegShiftStyle::RegReg(ri) => { + let shiftee = ri.shiftee(); + let by = ri.shifter(); + let typ = match ri.stype() { + ShiftStyle::LSL => CmpExprShift::Lsl, + ShiftStyle::LSR => CmpExprShift::Lsr, + ShiftStyle::ASR => CmpExprShift::Asr, + ShiftStyle::ROR => CmpExprShift::Ror, + }; + cmp_exprs.push(CmpExpr::Deref(( + if *a { + Box::new(CmpExpr::Add(( + Box::new(CmpExpr::Reg((format!("r{}", r.number()), 0))), + Box::new(CmpExpr::Shift(( + Box::new(CmpExpr::Reg(( + format!("r{}", shiftee.number()), + 0, + ))), + Box::new(CmpExpr::Reg(( + format!("r{}", by.number()), + 0, + ))), + typ, + ))), + ))) + } else { + Box::new(CmpExpr::Sub(( + Box::new(CmpExpr::Reg((format!("r{}", r.number()), 0))), + Box::new(CmpExpr::Shift(( + Box::new(CmpExpr::Reg(( + format!("r{}", shiftee.number()), + 0, + ))), + Box::new(CmpExpr::Reg(( + format!("r{}", by.number()), + 0, + ))), + typ, + ))), + ))) + }, + None, + ))); + } + }, + Operand::RegDerefPostindexOffset(r, _, _, _) => { + cmp_exprs.push(CmpExpr::Deref(( + Box::new(CmpExpr::Reg((format!("r{}", r.number()), 0))), + None, + ))); + } + Operand::RegDerefPreindexOffset(r, i, a, _) => { + cmp_exprs.push(CmpExpr::Deref(( + if *a { + Box::new(CmpExpr::Add(( + Box::new(CmpExpr::Reg((format!("r{}", r.number()), 0))), + Box::new(CmpExpr::U16(*i)), + ))) + } else { + Box::new(CmpExpr::Sub(( + Box::new(CmpExpr::Reg((format!("r{}", r.number()), 0))), + Box::new(CmpExpr::U16(*i)), + ))) + }, + None, + ))) + } + Operand::RegDerefPostindexReg(r, _, _, _) => { + cmp_exprs.push(CmpExpr::Deref(( + Box::new(CmpExpr::Reg((format!("r{}", r.number()), 0))), + None, + ))); + } + Operand::RegDerefPreindexReg(r, i, a, _) => { + cmp_exprs.push(CmpExpr::Deref(( + if *a { + Box::new(CmpExpr::Add(( + Box::new(CmpExpr::Reg((format!("r{}", r.number()), 0))), + Box::new(CmpExpr::Reg((format!("r{}", i.number()), 0))), + ))) + } else { + Box::new(CmpExpr::Sub(( + Box::new(CmpExpr::Reg((format!("r{}", r.number()), 0))), + Box::new(CmpExpr::Reg((format!("r{}", i.number()), 0))), + ))) + }, + None, + ))) + } + Operand::Imm12(i) => { + cmp_exprs.push(CmpExpr::U16(*i)); + } + Operand::Imm32(i) => { + cmp_exprs.push(CmpExpr::U32(*i)); + } + _ => {} + } + } + } + } + + cmp_exprs + } + + // NOTE: CmpType is not well suited for arm + fn cmp_type(&self) -> Vec { + if self.last_was_cmp() { + if let Some(last) = self.last.as_ref() { + return match last.opcode { + Opcode::CMP => vec![CmpType::Equal, CmpType::Lesser, CmpType::Greater], + Opcode::CMN => vec![CmpType::Equal, CmpType::Lesser, CmpType::Greater], + Opcode::TST => vec![CmpType::Equal, CmpType::Lesser, CmpType::Greater], + Opcode::TEQ => vec![CmpType::Equal], + _ => vec![], + }; + } + } + + vec![] + } +} diff --git a/src/arch/mod.rs b/src/arch/mod.rs index e1fd90f0..d1fddd6f 100644 --- a/src/arch/mod.rs +++ b/src/arch/mod.rs @@ -4,6 +4,7 @@ //! Architecture specific data and definitions use self::{ + aarch64::AArch64ArchitectureOperations, arm::ARMArchitectureOperations, risc_v::RISCVArchitectureOperations, x86::X86ArchitectureOperations, x86_64::X86_64ArchitectureOperations, }; @@ -24,6 +25,8 @@ use simics::{ }; use std::{fmt::Debug, str::FromStr}; +pub mod aarch64; +pub mod arm; pub mod risc_v; pub mod x86; pub mod x86_64; @@ -37,6 +40,10 @@ pub(crate) enum ArchitectureHint { I386, /// The architecture is RISCV Riscv, + /// The architecture is arm + Arm, + /// The architecture is aarch64 + Aarch64, } impl FromStr for ArchitectureHint { @@ -47,6 +54,8 @@ impl FromStr for ArchitectureHint { "x86-64" => Self::X86_64, "i386" | "i486" | "i586" | "i686" | "ia-32" | "x86" => Self::I386, "riscv" | "risc-v" | "riscv32" | "riscv64" => Self::Riscv, + "armv4" | "armv5" | "armv6" | "armv7" | "arm" | "arm32" => Self::Arm, + "aarch64" | "armv8" | "arm64" => Self::Aarch64, _ => bail!("Unknown hint: {}", s), }) } @@ -58,6 +67,8 @@ impl From for AttrValueType { ArchitectureHint::X86_64 => "x86-64", ArchitectureHint::I386 => "i386", ArchitectureHint::Riscv => "risc-v", + ArchitectureHint::Arm => "arm", + ArchitectureHint::Aarch64 => "aarch64", } .into() } @@ -76,6 +87,12 @@ impl ArchitectureHint { ArchitectureHint::Riscv => { Architecture::Riscv(RISCVArchitectureOperations::new_unchecked(cpu)?) } + ArchitectureHint::Arm => { + Architecture::Arm(ARMArchitectureOperations::new_unchecked(cpu)?) + } + ArchitectureHint::Aarch64 => { + Architecture::Aarch64(AArch64ArchitectureOperations::new_unchecked(cpu)?) + } }) } } @@ -87,6 +104,10 @@ pub(crate) enum Architecture { I386(X86ArchitectureOperations), /// The RISC-V architecture Riscv(RISCVArchitectureOperations), + /// The ARM architecture (v7 and below) + Arm(ARMArchitectureOperations), + /// The AARCH64 architecture (v8 and above) + Aarch64(AArch64ArchitectureOperations), } impl Debug for Architecture { @@ -98,6 +119,8 @@ impl Debug for Architecture { Architecture::X86_64(_) => "x86-64", Architecture::I386(_) => "i386", Architecture::Riscv(_) => "risc-v", + Architecture::Arm(_) => "arm", + Architecture::Aarch64(_) => "aarch64", } ) } @@ -513,6 +536,10 @@ impl ArchitectureOperations for Architecture { Ok(Self::I386(x86)) } else if let Ok(riscv) = RISCVArchitectureOperations::new(cpu) { Ok(Self::Riscv(riscv)) + } else if let Ok(arm) = ARMArchitectureOperations::new(cpu) { + Ok(Self::Arm(arm)) + } else if let Ok(aarch64) = AArch64ArchitectureOperations::new(cpu) { + Ok(Self::Aarch64(aarch64)) } else { bail!("Unsupported architecture"); } @@ -523,6 +550,8 @@ impl ArchitectureOperations for Architecture { Architecture::X86_64(x86_64) => x86_64.cpu(), Architecture::I386(i386) => i386.cpu(), Architecture::Riscv(riscv) => riscv.cpu(), + Architecture::Arm(arm) => arm.cpu(), + Architecture::Aarch64(aarch64) => aarch64.cpu(), } } @@ -531,6 +560,8 @@ impl ArchitectureOperations for Architecture { Architecture::X86_64(x86_64) => x86_64.disassembler(), Architecture::I386(i386) => i386.disassembler(), Architecture::Riscv(riscv) => riscv.disassembler(), + Architecture::Arm(arm) => arm.disassembler(), + Architecture::Aarch64(aarch64) => aarch64.disassembler(), } } @@ -539,6 +570,8 @@ impl ArchitectureOperations for Architecture { Architecture::X86_64(x86_64) => x86_64.int_register(), Architecture::I386(i386) => i386.int_register(), Architecture::Riscv(riscv) => riscv.int_register(), + Architecture::Arm(arm) => arm.int_register(), + Architecture::Aarch64(aarch64) => aarch64.int_register(), } } @@ -547,6 +580,8 @@ impl ArchitectureOperations for Architecture { Architecture::X86_64(x86_64) => x86_64.processor_info_v2(), Architecture::I386(i386) => i386.processor_info_v2(), Architecture::Riscv(riscv) => riscv.processor_info_v2(), + Architecture::Arm(arm) => arm.processor_info_v2(), + Architecture::Aarch64(aarch64) => aarch64.processor_info_v2(), } } @@ -555,6 +590,8 @@ impl ArchitectureOperations for Architecture { Architecture::X86_64(x86_64) => x86_64.cpu_instruction_query(), Architecture::I386(i386) => i386.cpu_instruction_query(), Architecture::Riscv(riscv) => riscv.cpu_instruction_query(), + Architecture::Arm(arm) => arm.cpu_instruction_query(), + Architecture::Aarch64(aarch64) => aarch64.cpu_instruction_query(), } } @@ -563,6 +600,8 @@ impl ArchitectureOperations for Architecture { Architecture::X86_64(x86_64) => x86_64.cpu_instrumentation_subscribe(), Architecture::I386(i386) => i386.cpu_instrumentation_subscribe(), Architecture::Riscv(riscv) => riscv.cpu_instrumentation_subscribe(), + Architecture::Arm(arm) => arm.cpu_instrumentation_subscribe(), + Architecture::Aarch64(aarch64) => aarch64.cpu_instrumentation_subscribe(), } } @@ -571,6 +610,8 @@ impl ArchitectureOperations for Architecture { Architecture::X86_64(x86_64) => x86_64.cycle(), Architecture::I386(i386) => i386.cycle(), Architecture::Riscv(riscv) => riscv.cycle(), + Architecture::Arm(arm) => arm.cycle(), + Architecture::Aarch64(aarch64) => aarch64.cycle(), } } @@ -579,6 +620,8 @@ impl ArchitectureOperations for Architecture { Architecture::X86_64(x86_64) => x86_64.get_magic_index_selector(), Architecture::I386(i386) => i386.get_magic_index_selector(), Architecture::Riscv(riscv) => riscv.get_magic_index_selector(), + Architecture::Arm(arm) => arm.get_magic_index_selector(), + Architecture::Aarch64(aarch64) => aarch64.get_magic_index_selector(), } } @@ -587,6 +630,8 @@ impl ArchitectureOperations for Architecture { Architecture::X86_64(x86_64) => x86_64.get_magic_start_buffer_ptr_size_ptr(), Architecture::I386(i386) => i386.get_magic_start_buffer_ptr_size_ptr(), Architecture::Riscv(riscv) => riscv.get_magic_start_buffer_ptr_size_ptr(), + Architecture::Arm(arm) => arm.get_magic_start_buffer_ptr_size_ptr(), + Architecture::Aarch64(aarch64) => aarch64.get_magic_start_buffer_ptr_size_ptr(), } } @@ -595,6 +640,8 @@ impl ArchitectureOperations for Architecture { Architecture::X86_64(x86_64) => x86_64.get_magic_start_buffer_ptr_size_val(), Architecture::I386(i386) => i386.get_magic_start_buffer_ptr_size_val(), Architecture::Riscv(riscv) => riscv.get_magic_start_buffer_ptr_size_val(), + Architecture::Arm(arm) => arm.get_magic_start_buffer_ptr_size_val(), + Architecture::Aarch64(aarch64) => aarch64.get_magic_start_buffer_ptr_size_val(), } } @@ -603,6 +650,8 @@ impl ArchitectureOperations for Architecture { Architecture::X86_64(x86_64) => x86_64.get_magic_start_buffer_ptr_size_ptr(), Architecture::I386(i386) => i386.get_magic_start_buffer_ptr_size_ptr(), Architecture::Riscv(riscv) => riscv.get_magic_start_buffer_ptr_size_ptr(), + Architecture::Arm(arm) => arm.get_magic_start_buffer_ptr_size_ptr_val(), + Architecture::Aarch64(aarch64) => aarch64.get_magic_start_buffer_ptr_size_ptr_val(), } } @@ -611,6 +660,8 @@ impl ArchitectureOperations for Architecture { Architecture::X86_64(x86_64) => x86_64.get_manual_start_info(info), Architecture::I386(i386) => i386.get_manual_start_info(info), Architecture::Riscv(riscv) => riscv.get_manual_start_info(info), + Architecture::Arm(arm) => arm.get_manual_start_info(info), + Architecture::Aarch64(aarch64) => aarch64.get_manual_start_info(info), } } @@ -619,6 +670,8 @@ impl ArchitectureOperations for Architecture { Architecture::X86_64(x86_64) => x86_64.write_start(testcase, info), Architecture::I386(i386) => i386.write_start(testcase, info), Architecture::Riscv(riscv) => riscv.write_start(testcase, info), + Architecture::Arm(arm) => arm.write_start(testcase, info), + Architecture::Aarch64(aarch64) => aarch64.write_start(testcase, info), } } @@ -627,6 +680,8 @@ impl ArchitectureOperations for Architecture { Architecture::X86_64(x86_64) => x86_64.trace_pc(instruction_query), Architecture::I386(i386) => i386.trace_pc(instruction_query), Architecture::Riscv(riscv) => riscv.trace_pc(instruction_query), + Architecture::Arm(arm) => arm.trace_pc(instruction_query), + Architecture::Aarch64(aarch64) => aarch64.trace_pc(instruction_query), } } @@ -635,6 +690,8 @@ impl ArchitectureOperations for Architecture { Architecture::X86_64(x86_64) => x86_64.trace_cmp(instruction_query), Architecture::I386(i386) => i386.trace_cmp(instruction_query), Architecture::Riscv(riscv) => riscv.trace_cmp(instruction_query), + Architecture::Arm(arm) => arm.trace_cmp(instruction_query), + Architecture::Aarch64(aarch64) => aarch64.trace_cmp(instruction_query), } } } diff --git a/src/arch/x86.rs b/src/arch/x86.rs index 21a4add0..8c75a091 100644 --- a/src/arch/x86.rs +++ b/src/arch/x86.rs @@ -730,6 +730,10 @@ impl X86ArchitectureOperations { .to_le_bytes(); Ok(CmpValue::U64(u64::from_le_bytes(bytes))) } + _ => { + // There are other types but they are never emitted on x86 + bail!("Unsupported expression type"); + } } } } diff --git a/src/arch/x86_64.rs b/src/arch/x86_64.rs index 9d756450..491b557b 100644 --- a/src/arch/x86_64.rs +++ b/src/arch/x86_64.rs @@ -704,6 +704,10 @@ impl X86_64ArchitectureOperations { .to_le_bytes(); Ok(CmpValue::U64(u64::from_le_bytes(bytes))) } + _ => { + // There are other types but they are never emitted on x86_64 + bail!("Unsupported expression type") + } } } } diff --git a/src/tracer/mod.rs b/src/tracer/mod.rs index 4126775f..795dcd23 100644 --- a/src/tracer/mod.rs +++ b/src/tracer/mod.rs @@ -18,12 +18,22 @@ use typed_builder::TypedBuilder; use crate::{arch::ArchitectureOperations, Tsffs}; +#[derive(Debug, PartialEq, Eq, PartialOrd, Ord, Hash)] +pub(crate) enum CmpExprShift { + Lsl, + Lsr, + Asr, + Ror, +} + #[derive(Debug, PartialEq, Eq, PartialOrd, Ord, Hash)] pub(crate) enum CmpExpr { Deref((Box, Option)), Reg((String, u8)), Mul((Box, Box)), Add((Box, Box)), + Sub((Box, Box)), + Shift((Box, Box, CmpExprShift)), U8(u8), I8(i8), U16(u16), From 592a8df1e987cdfed5437f8b7151f85e62f0e81e Mon Sep 17 00:00:00 2001 From: Rowan Hart Date: Thu, 25 Apr 2024 13:08:03 -0700 Subject: [PATCH 19/19] Add option to output execution traces during fuzzing (#81) --- src/arch/aarch64.rs | 10 +++++++ src/arch/arm.rs | 10 +++++++ src/arch/risc_v.rs | 10 +++++++ src/arch/x86.rs | 8 ++++++ src/arch/x86_64.rs | 8 ++++++ src/haps/mod.rs | 15 ++++++++++ src/lib.rs | 56 ++++++++++++++++++++++++++++++++++-- src/log/mod.rs | 4 +++ src/tracer/mod.rs | 69 ++++++++++++++++++++++++++++++++++++++++++++- src/traits/mod.rs | 1 + 10 files changed, 187 insertions(+), 4 deletions(-) diff --git a/src/arch/aarch64.rs b/src/arch/aarch64.rs index 16f82511..8f08d1af 100644 --- a/src/arch/aarch64.rs +++ b/src/arch/aarch64.rs @@ -1056,6 +1056,16 @@ impl TracerDisassembler for Disassembler { Ok(()) } + fn disassemble_to_string(&mut self, bytes: &[u8]) -> Result { + let mut r = U8Reader::new(bytes); + + if let Ok(insn) = self.decoder.decode(&mut r) { + Ok(insn.to_string()) + } else { + bail!("Could not disassemble {:?}", bytes); + } + } + fn last_was_control_flow(&self) -> bool { if let Some(last) = self.last.as_ref() { // NOTE: This is imprecise on ARM because PC is not restricted diff --git a/src/arch/arm.rs b/src/arch/arm.rs index b5ca3511..3ff9dc27 100644 --- a/src/arch/arm.rs +++ b/src/arch/arm.rs @@ -1053,6 +1053,16 @@ impl TracerDisassembler for Disassembler { Ok(()) } + fn disassemble_to_string(&mut self, bytes: &[u8]) -> Result { + let mut r = U8Reader::new(bytes); + + if let Ok(insn) = self.decoder.decode(&mut r) { + Ok(insn.to_string()) + } else { + bail!("Could not disassemble {:?}", bytes); + } + } + fn last_was_control_flow(&self) -> bool { if let Some(last) = self.last.as_ref() { // NOTE: This is imprecise on ARM because PC is not restricted diff --git a/src/arch/risc_v.rs b/src/arch/risc_v.rs index aee0cb33..6eb440a5 100644 --- a/src/arch/risc_v.rs +++ b/src/arch/risc_v.rs @@ -459,6 +459,16 @@ impl TracerDisassembler for Disassembler { Ok(()) } + fn disassemble_to_string(&mut self, bytes: &[u8]) -> Result { + let mut r = U8Reader::new(bytes); + + if let Ok(insn) = self.decoder.decode(&mut r) { + Ok(insn.to_string()) + } else { + bail!("Could not disassemble {:?}", bytes); + } + } + fn last_was_control_flow(&self) -> bool { if let Some(last) = self.last.as_ref() { if matches!(last.opcode(), |Opcode::BEQ| Opcode::BNE diff --git a/src/arch/x86.rs b/src/arch/x86.rs index 8c75a091..bb9f98f5 100644 --- a/src/arch/x86.rs +++ b/src/arch/x86.rs @@ -985,6 +985,14 @@ impl TracerDisassembler for Disassembler { Ok(()) } + fn disassemble_to_string(&mut self, bytes: &[u8]) -> Result { + if let Ok(insn) = self.decoder.decode_slice(bytes) { + Ok(insn.to_string()) + } else { + bail!("Could not disassemble {:?}", bytes); + } + } + fn cmp(&self) -> Vec { let mut cmp_exprs = Vec::new(); if self.last_was_cmp() { diff --git a/src/arch/x86_64.rs b/src/arch/x86_64.rs index 491b557b..d307f23b 100644 --- a/src/arch/x86_64.rs +++ b/src/arch/x86_64.rs @@ -964,6 +964,14 @@ impl TracerDisassembler for Disassembler { Ok(()) } + fn disassemble_to_string(&mut self, bytes: &[u8]) -> Result { + if let Ok(insn) = self.decoder.decode_slice(bytes) { + Ok(insn.to_string()) + } else { + bail!("Could not disassemble {:?}", bytes); + } + } + fn cmp(&self) -> Vec { let mut cmp_exprs = Vec::new(); if self.last_was_cmp() { diff --git a/src/haps/mod.rs b/src/haps/mod.rs index 92fd58a7..3cbe97ce 100644 --- a/src/haps/mod.rs +++ b/src/haps/mod.rs @@ -58,6 +58,7 @@ impl Tsffs { self.post_timeout_event()?; } + self.execution_trace.0.clear(); self.save_repro_bookmark_if_needed()?; debug!(self.as_conf_object(), "Resuming simulation"); @@ -152,6 +153,10 @@ impl Tsffs { self.post_timeout_event()?; } + if self.save_all_execution_traces { + self.save_execution_trace()?; + } + debug!(self.as_conf_object(), "Resuming simulation"); run_alone(|| { @@ -204,6 +209,7 @@ impl Tsffs { self.post_timeout_event()?; } + self.execution_trace.0.clear(); self.save_repro_bookmark_if_needed()?; debug!(self.as_conf_object(), "Resuming simulation"); @@ -233,6 +239,7 @@ impl Tsffs { self.post_timeout_event()?; } + self.execution_trace.0.clear(); self.save_repro_bookmark_if_needed()?; debug!(self.as_conf_object(), "Resuming simulation"); @@ -323,6 +330,10 @@ impl Tsffs { self.post_timeout_event()?; } + if self.save_all_execution_traces { + self.save_execution_trace()?; + } + debug!(self.as_conf_object(), "Resuming simulation"); run_alone(|| { @@ -416,6 +427,10 @@ impl Tsffs { self.post_timeout_event()?; } + if self.save_all_execution_traces || self.save_solution_execution_traces { + self.save_execution_trace()?; + } + debug!(self.as_conf_object(), "Resuming simulation"); run_alone(|| { diff --git a/src/lib.rs b/src/lib.rs index 4676a701..ae58dc19 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -42,6 +42,7 @@ use libafl_targets::AFLppCmpLogMap; use magic::MagicNumber; use num_traits::FromPrimitive as _; use serde::{Deserialize, Serialize}; +use serde_json::to_writer; use simics::{ break_simulation, class, debug, error, free_attribute, get_class, get_interface, get_processor_number, info, lookup_file, object_clock, run_command, run_python, simics_init, @@ -66,7 +67,8 @@ use std::{ alloc::{alloc_zeroed, Layout}, cell::OnceCell, collections::{hash_map::Entry, BTreeSet, HashMap, HashSet}, - fs::File, + fs::{create_dir_all, File}, + hash::{DefaultHasher, Hash, Hasher}, path::PathBuf, ptr::null_mut, str::FromStr, @@ -74,7 +76,10 @@ use std::{ thread::JoinHandle, time::SystemTime, }; -use tracer::tsffs::{on_instruction_after, on_instruction_before}; +use tracer::{ + tsffs::{on_instruction_after, on_instruction_before}, + ExecutionTrace, +}; use typed_builder::TypedBuilder; use versions::{Requirement, Versioning}; @@ -375,6 +380,25 @@ pub(crate) struct Tsffs { #[class(attribute(optional, default = true))] /// Whether to quit on iteration limit pub quit_on_iteration_limit: bool, + #[class(attribute(optional, default = false))] + /// Whether to save execution traces of test cases which result in a solution + pub save_solution_execution_traces: bool, + #[class(attribute(optional, default = false))] + /// Whether to save execution traces of test cases which result in an interesting input + pub save_interesting_execution_traces: bool, + #[class(attribute(optional, default = false))] + /// Whether to save all execution traces. This will consume a very large amount of resources + /// and should only be used for debugging and testing purposes. + pub save_all_execution_traces: bool, + #[class(attribute(optional, default = lookup_file("%simics%")?.join("execution-traces")))] + #[attr_value(fallible)] + /// The directory to save execution traces to, if any are set to be saved. This + /// directory may be a SIMICS relative path prefixed with "%simics%". If not + /// provided, "%simics%/execution-traces" will be used by default. + pub execution_trace_directory: PathBuf, + #[class(attribute(optional, default = false))] + /// Whether execution traces should include just PC (vs instruction text and bytes) + pub execution_trace_pc_only: bool, #[attr_value(skip)] /// Handle for the core simulation stopped hap @@ -440,8 +464,11 @@ pub(crate) struct Tsffs { edges_seen: HashSet, #[attr_value(skip)] /// A map of the new edges to their AFL indices seen since the last time the fuzzer - /// provided an update + /// provided an update. This is not cleared every execution. edges_seen_since_last: HashMap, + #[attr_value(skip)] + /// The set of PCs comprising the current execution trace. This is cleared every execution. + execution_trace: ExecutionTrace, #[attr_value(skip)] /// The name of the fuzz snapshot, if saved @@ -865,6 +892,29 @@ impl Tsffs { } Ok(()) } + + /// Save the current execution trace to a file + pub fn save_execution_trace(&mut self) -> Result<()> { + let mut hasher = DefaultHasher::new(); + self.execution_trace.hash(&mut hasher); + let hash = hasher.finish(); + + if !self.execution_trace_directory.is_dir() { + create_dir_all(&self.execution_trace_directory)?; + } + + let trace_path = self + .execution_trace_directory + .join(format!("{:x}.json", hash)); + + if !trace_path.exists() { + let trace_file = File::create(trace_path)?; + + to_writer(trace_file, &self.execution_trace)?; + } + + Ok(()) + } } #[simics_init(name = "tsffs", class = "tsffs")] diff --git a/src/log/mod.rs b/src/log/mod.rs index 0bacb689..03300ed3 100644 --- a/src/log/mod.rs +++ b/src/log/mod.rs @@ -74,6 +74,10 @@ impl Tsffs { self.edges_seen_since_last.clear(); } + + if self.save_interesting_execution_traces { + self.save_execution_trace()?; + } } } diff --git a/src/tracer/mod.rs b/src/tracer/mod.rs index 795dcd23..c08c125c 100644 --- a/src/tracer/mod.rs +++ b/src/tracer/mod.rs @@ -6,6 +6,7 @@ use ffi::ffi; use libafl::prelude::CmpValues; use libafl_bolts::{AsMutSlice, AsSlice}; use libafl_targets::{AFLppCmpLogOperands, AFL_CMP_TYPE_INS, CMPLOG_MAP_H}; +use serde::{Deserialize, Serialize}; use simics::{ api::{ get_processor_number, sys::instruction_handle_t, AsConfObject, AttrValue, AttrValueType, @@ -13,11 +14,37 @@ use simics::{ }, trace, }; -use std::{collections::HashMap, ffi::c_void, fmt::Display, num::Wrapping, str::FromStr}; +use std::{ + collections::HashMap, ffi::c_void, fmt::Display, hash::Hash, num::Wrapping, + slice::from_raw_parts, str::FromStr, +}; use typed_builder::TypedBuilder; use crate::{arch::ArchitectureOperations, Tsffs}; +#[derive(Deserialize, Serialize, Debug, Default)] +pub(crate) struct ExecutionTrace(pub HashMap>); + +impl Hash for ExecutionTrace { + fn hash(&self, state: &mut H) { + for (k, v) in self.0.iter() { + for entry in v.iter() { + k.hash(state); + entry.hash(state); + } + } + } +} + +#[derive(TypedBuilder, Deserialize, Serialize, Debug, PartialEq, Eq, PartialOrd, Ord, Hash)] +pub(crate) struct ExecutionTraceEntry { + pc: u64, + #[builder(default, setter(into, strip_option))] + insn: Option, + #[builder(default, setter(into, strip_option))] + insn_bytes: Option>, +} + #[derive(Debug, PartialEq, Eq, PartialOrd, Ord, Hash)] pub(crate) enum CmpExprShift { Lsl, @@ -346,6 +373,46 @@ impl Tsffs { } } + if self.coverage_enabled + && (self.save_all_execution_traces + || self.save_interesting_execution_traces + || self.save_solution_execution_traces) + { + if let Some(arch) = self.processors.get_mut(&processor_number) { + self.execution_trace + .0 + .entry(processor_number) + .or_default() + .push(if self.execution_trace_pc_only { + ExecutionTraceEntry::builder() + .pc(arch.processor_info_v2().get_program_counter()?) + .build() + } else { + let instruction_bytes = + arch.cpu_instruction_query().get_instruction_bytes(handle)?; + let instruction_bytes = unsafe { + from_raw_parts(instruction_bytes.data, instruction_bytes.size) + }; + + if let Ok(disassembly_string) = + arch.disassembler().disassemble_to_string(instruction_bytes) + { + ExecutionTraceEntry::builder() + .pc(arch.processor_info_v2().get_program_counter()?) + .insn(disassembly_string) + .insn_bytes(instruction_bytes.to_vec()) + .build() + } else { + ExecutionTraceEntry::builder() + .pc(arch.processor_info_v2().get_program_counter()?) + .insn("(unknown)".to_string()) + .insn_bytes(instruction_bytes.to_vec()) + .build() + } + }); + } + } + Ok(()) } } diff --git a/src/traits/mod.rs b/src/traits/mod.rs index 3f6d438e..020e2e8e 100644 --- a/src/traits/mod.rs +++ b/src/traits/mod.rs @@ -8,6 +8,7 @@ use anyhow::Result; /// and compare tracing pub trait TracerDisassembler { fn disassemble(&mut self, bytes: &[u8]) -> Result<()>; + fn disassemble_to_string(&mut self, bytes: &[u8]) -> Result; fn last_was_control_flow(&self) -> bool; fn last_was_call(&self) -> bool; fn last_was_ret(&self) -> bool;
  2. 2K4d6@B44bI%$?}}5(qaqI{%zCCXX3wDbzbfFp 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 Ulw)mYQvd(}07*qoM6N<$g3CJ1WdHyG literal 0 HcmV?d00001 diff --git a/docs/src/tutorials/windows-kernel/building-windows-image/images/2024-03-21-12-24-34.png b/docs/src/tutorials/windows-kernel/building-windows-image/images/2024-03-21-12-24-34.png new file mode 100644 index 0000000000000000000000000000000000000000..6bd53b89d10935e62eea84a7790ab08e5d810c7f GIT binary patch literal 101701 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�o$^ArSZkHeG-xX@d5N_4P-vRiThb zYio_>t>FL~l;$Gi+af8@E4S`R1qrnfT9DQ~h!vnhXafXv7RWrMK&YhX<|O{81f&uG zM^L?^-p+%!1mA`ywf~{7Zv%Xtx9{FDWJ8dJhJ+}VyKfBSMGQr+&d=)rHfv~T0FjE) z!Lm196fSYNSRe1|RS7Udl=8;k-2V(AUaVV8ijRMzQDbwyGY-;vZ*LELj6U#r&Lkqx z+m4GyK%fG4m~nD)f|sxl(klxU2}qIq`*YE0plO1?!tCq_9Sjx1@~?xeGE9Y(`w@O^_9>x8^&~ojV7Z7vM3pyuiS~;n%uUl8@aVJ$eNCG1OpRKfj48 zdysZ`)YbdQ^w5PA1LK!_(2a*`EuzKKXAx(Q@VK`8SP|~CEmv$2VNO*yL16fG+SCb+ z!K*E*K{Pu%8+NjrVF|?cNE%5f>T_1HXlfom4umzV5W4GsxDmAVHR%0?XWY!mFSWE4 z+vp>tvA}lxE^B?YYoI4hm{!^!WaX@+q-x8~*y`!W#U*Z-f7XNk!|HjlD8GlRsdxbHV@$vwVWf>D!sz`Zj zOBhj>u6?m(aPbGSJ_{azRs56aMOT3P7Wc+iy!`KYj2ajT`?D)L3aBPt+Z+GaWyKh7Q8;q7Z{0aGzUvB=_$zDd7X+swVa(wyn zWgt7h_V&!)+zVt0r}h0MV~9du=y%;cXaay$Ie-m73xXm{X8{g zlBZ=WK$)Plu(EPA8_Tn}uy z@}|RZDsK>vpet5YRh5=Hg2VwLSL7Tq3N#-y-MMB~?UYenT^$k8El=wgpOxi&coDs} z?-Uf(Y*p$0((wZO*X3)84E5^6cfWg52S~^3q-uU*3*;w6cC_rRDy9sE=N;3>iI?PL zXA4mFfNyXY@*`Uor-*&5tt}srJmXBaa5uCaF#D*4g{z?}7v$x^-bBgKUk-vqgC3d0 zZFV}u30Ik?nIosCr>CZ-2JPR}&dx53?^io*008L(p`*NZ(JWE7d{AltKSI-dYyXYQ z8$D@|D&)xK2OhW>`zjdoH?zSA;pcxVeY!ulfTD(rF~#}+OCAX5<5f^eq?6Xzvo1N! zGy!_s5OrGwnrMSoGt-0;$Vv_0wt*-HmQ?z7YXq4M5M^s?y%K{>X!}rs0BJ3xgSH38 zGN^Z^#I1C+LIVQ>U|BbT-qi=96sW08Qh6oDwOhc!gf4@+v^ZK}QSCVK2=tEq{eAd% z%IWAIE3B`hMz`n(u@8N*o5|g!mDL%-V`kIjDt4K}@!B%S)hLd^_9G>73u9@T+MhZR z+u7~(-RbG+ZNO|m`~aVn0PTyPoScOHgoX&0=IY|&0`Q#_@OLDYFq%<;z65})$!jzF zV?J zhK8V}14iog2859*#s(MA0~L{4%6A{Qu3DCqCWASy@@cnb6Q+;s6|LP(q0`9UL6MAp_eUWDW>HIHZAw(is8ahJZyo;{Lr5 zl;361W-J(cjg5_f;nFfPR1v`apcZ@tVmUQA34JvoK7I%&o89nhNSZD1d|Dml|8Mo? z_INK4Iwb@!Xxo9@Fz|^0S3UxZ+1MV?8=xVe`X2%5pq<{76vO$pguV+f#sK8daU6uv zip}k9oNLz-KgGqyX6NL0fyirpflC0#{jF7ZBIE$5M5dLN zoiMj@a(oO15`(iNXbqr(UV}PVSxE^MksFvu1MPDNa*SyXJX)zq(|ADFl=4DOx{DF< zIX~7PEe?F6y~b!WA1+O!me^D`k%D^Q<$q-+u|OH=7KqT+PZ;S(<{jr~^+ZnscL2eN z?au#KtX9W91_KKG=M30gP)tC(pkyG%$HyljNk~thgs=vpH#R>0=;zn_AP5f(0J{R$ zw~4W5w0P-5RzM=VK9{t#84TNqi!;M`g{7s!_55@XADo<=U>6y)VU%GXvI^S!?#>R# zD^W;fGB70I;Na&+(@Fz_I6Xbun1Er6x;nK?2}6$jS;bEHI~;0hLaNvf-^!*SQb4sg z0t?s{|0|?zf<4p&Zom~hJa2A?U_;_SeW@dE0*Vc^6__^&kh%y4)s$?lBBVm8Uh%M< zEzc>0Dj9%40M@Pc8P@5_&+F=L>^p88WSTzrSd_rekt!o}Ak^m6_dOnYe zGI{TiBE$WLx6R7YE0a`Rj4kpe1jlfZpx^F#weKVC-$}koI1#6_tuf(?kgqH>Q3XrrQZWpMCkxVfOGF5m|QoWY{fCAeQz=8>FMdY zxw#<(Z{BtwuG7*6z$6*qcC>LLYi$Aj8GsAOdJXPN z1ArAc`ZRdKeuYX0qfabp!s;pq7Whw4ug;;@5gm<3 zaBz5d3YP&d$~tL_mbFYy9z&|3=aQhkm1awk`gOQIR2B8dq zMouDZx(E#ou)u(gva)iN9K`$f&V3&mJsL4N+YJ0J?0TUiO- z`+xz%Qh=IAN(|$W4vrpg{gczuVE7Pc&y%;#Vj4%!0%F~{TmO)xQ=&rW?* z{v5F1NSI87X+m4DlDe!L-W@{y!=o0tQS}t&0^tU;c}TL)fk9t1Y$rMo8w1v`>oOD! z|6kt&cd8(-F7`2BH0y?&27)W=FIXl-8amRY2G9}qWGVOg9Q4_)j1H!fjg)NP|OX-7e^m@-GyE3cx?yr<(?m3Z24jQ?jr+{3_n5+kse=BTeHfpiU zrn$nlLu(Sed=(FGW1@NkimK1GODxcE4k^|?%N(zupqO0HDy?)2ckHEnAOLWh#}Fhm zQ`2d1ML&zGtExstL~O$tsjCreW2Oln=Y!N|DKS@b|473R!fjuh=;c(hq)sNBn;Emg%DNK71Ca_K zlHy%?B#CHtOK-2!K&~P<(;a<%W)PPUi=kI3=s1_ht5)FtF8I6I?t(rF(g?H`t!1X^ z=72MZnuKPdx$uwOt}jDF+d)a1e*vN`Sa=;~3A|DKODii>L`3vhrcJ(MgM&o>8PxBS z1rP>(4-Vy_rU9f*Z~u66p!UyCRHTs+>Bt8f{OueuRfb;tzZ~_cnC(@I7UdTa=TVGz zcNZFL)N}fcK^+9O3cOSSa$m~p*E2xNATNd{f1Di)@GDc)?HLlymCVe{pkIkL2?&h= zoh%*(q*?B|53mM$vDeZ7Z%{5L{yQo^2@G&jI8?pN);(YCbzr zfBbC+lzK5}WlE0+hDa~6JApL<{0C4?!Yp|B^q?4nO`@(=29OH;i-EKY(4avc)}2px z2ADs9ac$u)7qI(xfD*u?1;-n#-$yVCTjcXcw_$p`T&QG0sWxU5E}0Ntyg)(OH8Aj5 zB6U-KYxZaR%?ycR%uySANgFJB-cvYU8cdIQ?|H5flx z?~G&4qgb$n-ThxrR5sH>SU|uXN?yR(Nj0==(Bk7aVFUnh5G6kT_n$vU%gv+@)@ac) z82tPz5Z&6Lp$)UKq-X7=dX6|z3Y|rW_`JLbidMPa0n&N}{HO3G;8w=-jsO6Rl5+#p z^Wwz|FqHwcd#sHQL*hW+1Fw{=@{*ysvva`uq^NBr!3CH&0F4wNwjXR7^uX}+p&;Zm ztO{5%fWTZ(fdPvR+f|_lLXiA^hdYo?q0gRm-GsJO@b>LnaF4aL20#FYc0)u&6bDoR zrVNTMjDP-|13Vw@7<@&SDtNb*AkYA`8u$id6CeURLn6155<%=V=mEgtx9oTUh)_ga z+!MlHSooVrFDTSfr~4N0BmqppqKDL+Q?y+@Jamh6pw|F607_d615K_=pmqSLa0CXs zwk8>H>MNSg3&Vif(Ct7jOLX%G*KyWVP$fLyRY|D}qy#8UrCLQ0|F9+7Fx;$Pq$Mjl zUJW-0D8MO9vE(Us=Ei&iY?C43T}h3e0S7|^%&j9(trHZGN zgf)#-82i7o064&&BT-XSJoj#a-u_yzv<_4cXo5rKYBi17U|Px-Y>8 zoA9Aqb3R#_vw#}6ucN<8^n|Kbr}VzFbs3>fB+^xuP}X!{+N6m21w1RIO0&d@S`3MO zCQ1&HN3HJx9{~V)wC{RRnO&#wo&?>U)V3rfgc94O)0wlAtYc9~F<@$anW##uv;LjC z5oZ>e+=*{1Zf48V`AJugcCu%phoyytg|h@~wV?b1!2+4_EyNDs@+p`S10)W>2+Dvl z=sra6d0-Y;UFyIRDjeWm0RsVWn&C=x!8Q5x$sADWKzvKv;ob(^xEYWucXr(I@SlMgqxn6rGdkC$g>x1M^giHV5h z=I4{vDopo6bYCUyq;mK4gqu>gBg&LNDwkT>4g)Z4;6_Bd7J+s#M8p{iqeKc9qC`OMjb{-e`#n(3n7Q?a=-PAm}3JM8NMg5Ochd3BuCO`DW3w$C% z%aY}zIkFuGY z{rGQq1f)f$8CH76B>NusDvUuVA|q!4aLP-d-BvkH{JwH00j&{YT)i9w5&#fkcB}7u z0aj|!N}a=`;z>_Jlvd|l*wuQbscgyqurqn(brY;VI=+m!e(NLLXVeiGqTvors) zBUF4mA-T}toL{~hq>{|@3bAQoVuDVPAUI0Z^q=l+aSzC>hJ>^@M!t9%NMN*J%8MbOg5SX{o)Gyr*^{mQAeC@D^K z)?<8Vev*-q!4e+Hs}ge+{fm5jOc~->A(v~FA@cQrNDG?o?WT=LtgZ&AKWyd?1Rb#nB(Fg zFM2PZutK{7&CdW{NJ^wb8LRe5r2SFMF(h!H)>iiZxtd!9m@+rO;;>E*SrgRRYi`ec zYLI2~Y@#c#dR)p!%ws!3knB7@iRzE(B%9QiZ2#Fr3}?b#Q37TZU5)4 zpqE!p-bQYr(j!VHTY~YK0k@d4#Ox)l0GvPY5yIWKKvt3 z@tV5vRL0zejppQv`x8@b&f>!*wnwN}EywQ=|K+wd*rK1TiM+x{8=an0rrkb0F(HSq zVxmlZ5JhDOQpnJJL1DKphwP(Qh|I~blJx6_pO^g2dtcGxEjDZre0O5x^r#SA*-pIk zqF}ei!*lIAhXBlAOU(^2NB%@fRY{GxiVC8Zv@N~F4OE@xB=4OZ*eGv@tWf@3wQ}B_ z39c3!e&||yZ*y?7-YSD017knwv&tXe3gcHSZ(FXue{s>%IC?j=Y10s~80}a$=gBWh zDqX$)C5&|T_EixPR#kS;mV5Fp2YqO0a8S!q?6-VHdtl`SGpr{v-@=bOHbWb4ub!Xe zz_q*mB+aTEzh3&e^iX)ZNPw$kN`KQ~f0}Kx2|VrQM8c7{_gd5+mEg8%h|n3#n|zvR zdNR^_?6srz_C(*{x7 zLm4}+)}JCec+mF@ecYlLz?HEsX_*ebxp{QPN{bw zy*cg#)z9E#(|x#mU58B$5%d9})}qW8criXPEY1i&CUJ0gBAQODPQfhc^x)p-&Y?`) zwP%eh2t=v9-u~wIJAs4REA6#MhJj8(TGFl;qOrpay>Z#~hj!`f6Qw<+gOR7<%IpiL z63kUo4s8N^#{s|B#W}+5aWM8%I9CVmFEtju48oPw)YPaTBc={;A1kLSi2G3-)U`l?_+F>r~iy^=lYb-#w2S!m(51H zB6pD<2lbNm^27j(8HaaTrdyZ&jMIb5H=p7kHYcX1bC5<*mFDN<%&nHJf0KBMe;Zzz zzQV-Fck}5b)rL+Q@dYimJb0?jjd&Av(ZK%U*=mbU^h^QgOt>+sv?Y~LaIg(oRe<$7w{EMNDP`L2=>x^+FP z7PMZjnfOVg-f?}r&C8SH9ELtlXLFo2P>c(w0xIYOU(Z(Jvw2gRpq8a7nb(XL~(Np8%IS23t%Q&&RYQG0%WmHDLp>qJ>q(W6J+Yl96+ z`NKbdFIv}8N>8ddkGr6E5g%%6g#pMrD7oU+)>gkKA8-8G-dyD8ANc2QUA}~&pk3C^ zjQQZaKwxrx>+@&FVWw^2GM1!S%6`jM4&{CIKIO=wXtI+4o~S-~rgE~>inL52h5tuWxwChsS!pNA;OFIi;^8*Lk(TQ#rfB=ur5|s8ZPQ`C zS$ww1yqS{Klz%T-z%SgrQ^yx*$63#PV}17(8HCNG;)jwf+4MhqJh?rCo}| zmL`pMX+jZG)&*21>DODCWO`Fd?3=Cw>R(u$?aQ!k)r~G^D6>7}BgFRlZdaC(tZmAf zpg+|0?48iathOzqu4}g3<%ZJ*IXf5qyMDOWFz~tMgI8E(F>=#Nr~98$v#O$WhKvI= zk3B<){_NVr18HOY!wB@qGyp@8yX z&;{4V!D031PZ4m{;Q{KxlHZ9JOn(0fPYmRwF zY1~y%YC5p(Dtb;O>i8qicFf9AIi2V^)N{G}nyq1m!-lP~RWW04Kby7X>pow1I_4?1 zw$X7Zz9#3odup!wrR;%y*tHWC<#%%lG|1+jXGZC#EZhCOQe)zoJo?pdTlGw&DN}tG;=o(Q^%E z<*{*a;E`nzzeHhJGvU>IH3iR~e1FW$5`O-+$SsAqEhE^Rw{G^vrGg~g8;!4x9`aax z42-OK$JXkqZ{IU{Y_yA__YtMcOda60miac5?~yt%jEzx4-Bq0sb4ZVHUcCM-7z6(k z2cKv^AHG;Eh1$e6+ry)XZM<%_JWB)S&q|_^GjY=cQw9?nEOA8d{VyorepLH5%vu~L z<0$3-Q1#t`SoZDvw^XELRz!&;8D*11k7R}HT}Jk%lo=I5M)rt|Y$A$M(vT1uwurK6 zn%REGrRV+r-uM2)`@EI=zV7S#e9q5#9_Mi!XZDHu>rHOEw0?+LeG2IwcIRz<=%!>) zuFW|l6zMK{PNu#jPqd@W^jo6M^fa%XrATV5QFrT0e-6&vBCf-Ci(;}P3M((k>K>)l z+!yaqIqBx~I;Kx;^YQPq?aZF!jkB>FM<`bAY+vk5+eIf^knI+teVBf#KP+ZCer535 z*29m#TszH>Kr?H(VdeDD$jI*9yXU@jo>5T91+btpLM2;|Wr$1|l#3jdBu&G`1n)f$ zwj55ZLyAf$3<;^Mo9E|Mzs2!fwDFEfN_u&ELX95IB*+220gxYbmMHuI=FEZ+2}l{O z3h>hVNu~|a2Y_Gzhu22cZ3nQ7hbKoZbpj9zIyBfB?T>bV#Eb$q34I~pFo_!24QS7{ ze*7pXA`-jjJ_J(>)1ygTz(VanUQppWt)@0NJL~S^@_TmHcXfH;Sa;$27Ez?bM%m4+ z7Bg)~yFoKqTem^=;zH=Kw-aNW&PU7knZ7ZO%-;$TrH9WLABdsbXSY0jzW895R8@P9 zy{+%1*UiT#MWpYtk|cY^s9j!4xG{*_VOyX+dUf~ibDTSshUEBe@Ena*{IXf^PJc3*@a&o}@zZ!!wfpwDogezb z6f|-^`8Xfc5MERu?unNkD8K=-Us3lcD=T-sBA`!cUrF%20fhTV`+-Bk)1%B84Q_)f za9{8*Vh*0EzBnGO85kNGiq@maGcQr_A5m?gfQO7;An8R@lLIjG_h~W& z#(?UcWQvvrKxQD^iYh9MlpDcp-$l6*l=3B*H^`vK4;nqRw6FlU;HKv?7$?9q=Yg@O z`OYyLu|p9mBoyt*%FKKe-I?t-gn=lcFN*#GN-gv~9yEB<5`mCXG$@mM-wDcQ@=!a& zb6YpKZJ3f|Fi(`txyG?!U(EFsU3=-W5V7Y)hL?EnF_KzB3(3;6LpmnN__qaAU1&YF z=X8A!%k5!{tnyc#rP(36u5lN8nrHfBZjwx&`hB}g<96^;she2))FS&O4d~Jj4++=0$rjDR%YzmL^W9$FaSs!Dvr{Cx1U!I^jI$M_7 zRh#)xe$IEMu&Hb}$>Y{p>C&6Eb4HdM6^kFob6u2mIzaYn*u~1bTYrLzCwpeFH}u<) z(24E07fzkbUq14nO5(#y!#_TnWMrC}`+W^GEwh@>@LxIJc%|+~*r~otH>BO0x$hmH z=Is9`DD66kxq0(uf;?vZ4$=;C{~f%#kDos6 z1d+vYiRi`~OPjsgNcufFISz`r<|ao+$CD>((0I4RrU&06zvp@!@!CNG&0PG*kuw}o zHa0f*OXy`mB=G$4Npx>yCt?MFA0R7GI2BYo(uK&ix3_ENGm;Qd0G0DGQtjZKUs@s> zaUfxBxca3nUkjvQZ?vNH`Bo9V$V`EE5}%3Q7bu*cmT1-&Q+@~v$Ncail922ck;(;2 zO_sYd&kw2nuzYyzNpOx?RqmLM*}c?K{}8p&gwuhBQisTP=)G-^N-@#l%}rSB`n9`{4O=`Onh_>_QE%&rI{du1S<;pBeYf^f?nlSg(1NsGx@0fRotJK% z&X06^Epinb|CqD2;_y)2M@M8CA&N~beH~d3%KPe%(^!bCG~d!y`I2(-Wjx*bJ1q#v z*yM{^hTT~mju-}@_jQ#M?JZ5vz zli#wF<1goXuTNHfZ~gkz)}BDsw6`%;c`ZjMZovRNu`5Uo3*a|Son5S6oKpI z^FteZW#8dkr>`x-@4M>CHK)d3%AC1=WQY7# zQmszQ4nKY}e{3Ey;--%MGPScqB=5k{!VldBn#iCUAK~E<5*N2VSN`x}Y=gz{@US}z zdg+FShGl1x9#5m4kLK%U68OxY&>=#{8w}A!w4mQ5ix&Q@0;$c(0hoSPRzOmmY^z@- zTc|!?aZwSg-D*HoTba;)XqrG*j%FN(b770$6J$jPQl7ET%}aj z=)xZ91j#$MC`f0fc}k>?%(;u157b+yF$#oiCw+NW*hw=W^p<~iBk4nK_So;0lu$!v z(z4eP>siu4l8s}|-Rze~7X;Wy5eG;3=PJZoMt13}esjLl(dA=ddiRz5V)W?b(S}LS z+4e!wJsM`lQ(rf76JH|3k1tB`p?NJ8i26w?R*sITadEY==s?=r*f6oMfKAFPDkvoM z_WgV7w4J+lk)J?l-l1ioZ)gbG1AIz)`qz(cP_@iWc#a$aqS%Cehm60Vpdc}%;rGa; zK2rMKyZafbK(2aQ-F6>brm{b+g}>Yy{Qdm_(Sx3}xU{6jXbF)S{k&&QqME6HcD@GDg0MG?yr!GbuSZbYbUQMbECG z3cr+|`xRVGZg4gH zyZ_|udEFhYA9qtUr1dV<{AR0P?l0Ceiah4%=xBTwuqbZcyoodh3X7(}N%_dV&p;Ns zc5OqxHWDdGyEg9aH?$tzLtD-Gu#DFXH~SEBBoJ7Xci_&!TW1S9+Rs4U%}e!7OrB?E zazOZyV>>eEiu z&dkc%`+F{eNpJue8_@r4l$0cYY!o+%6l7sa*_t78*T^i_m&2d0?qi9xdrxU7cczPm zk?JYOm?$r*iqtqU9v-vaK=R89j;xEjn7PKa zX^+l+x4kZ&F*?9w;B@N8{WO^h=ald!1+H|D){}RN>CWhd_b`cBwn(lc8e5k;nO1a^ zlo~)tX=!b(GZCv2MOG^o>2M9}kr>!m5_4M3s z5GqpSi92lgkei=h6*^`x6Z-p2xEbHwIgVCrANoBY;4Y(W`U+sNH2!nB3X}uJs1rt0oBG0CMNx$PLKRhB5pssc3NjXA9tt%rN+^d8PXzT%+#b0 zPp)e;HCNs0pW4Ve#g`j@PayO9KU;;(Ecy3bdNyX8UsagEtYwnAP_HI$_(ax8*=$F` z$#5shqnd8XRoq29MX~dbgl{S~K^rtYY;%7}JxBB4n@_usgcjIk zJ&f@0X?^+o%}sOC<2#yCPp&V-jn(inK~O(%pQ1ghT)xVVyhNW562O-oYhNKio&QP^x3V@_$HvpRLqY$KEnGv)hj;QD z%E`-jJle9p*T#NmFm7VJq5gtgHd%x%sllF%6tLm+>E>NZ*`bqW)))SkZhsVifX&t>{7jUO*H_(t*Q`>+jQgJ&~Eiq}t*y=YKaKt30x zB^ldZuf{ooN|r=Yt?y+xlkn$4N^7e;&wlY%W!)6L>cCIWqkyc@5%=taOd#-U+<>BMo zzo%BTc+RS_fA26K1D?~R*IIM7RtC*Y=g-7WaO-*)81K2bPb2?Y3fJx8XT2AH93Wl1 z-*PX$dhfeJ`W??!dh%Ukj#u&R#NoTRi$it(2iwZchiG|vQsWh;%=jz%#`+a~=-KaF z_IWCOm4&0TmEK|_z0+ui_S@KVc0bI_ZE|X*;RYQP{!ZbFUlDacvd_Dluk5JziuQdT zIH$YNFBbc!SC?XA&iWJ)R4vprE1&P4SYKR!fB15Gs5<=FIPy*#Y}%2OKU zBb>3vn+p!#iygOjJzFF~@lcrQQ-gow%VSgPS?S*&Gi#x=q%Rtb?QOlaQvAp7#P=;R zGkQ@ZO9HRdo^wO}Jz=e2{^#niRnCf_yv0U_Bc%0F%=e7VnOf7(QZ{{c(OfNqM^EsBwWa z+lAy8RloJ!*x;WyI#7qN*erU z{dOvD$?!j^*gCcUuAemCU*SyxV+VanpB4S?38N~n+e#uLms3@9#=V5i8;7SrU4tZC z7Mk^*o+YdqlDf9GtCPvu|8N0BU`_(lgX71aL1xs^)+P`K(u6|z?gR88avXG8)6ne^ zY|8d_;g9D2P#|8?FV;c{9wOuBtzZC%uEmpeyACc zZX@xjcm;nrNHAYXNqbIZfjO6xlM@osfQ4~dSvl5=myge)qjq#UH6;bo@s<}s0^ULF zj8wNDmc$0Bwu(Hk8%Z&1N*3kin3&)vqBHFO?HDh>!+c46 z_ix93;x8?{^YZh}B-6wklQqH6xoG-F;JR)7rNaFD@t;4hfa{XO3-5@-2}ms*937ER zHC0{iI-il7D-MkUIJ_i%$e`4@A3k_+Ga^EF%~&V=)zJT2u+)L39bDZ!<3VIWxC`E(!l1!TxXOXP4M?!*G}O!d zaJe)!)zQ%*bdxX?1CJtt_2|H_Uuz)11wG1s^5hf9&!BPuOMu-9u!OLPhC{&Re&RH~5Ly*z&l9Ebc_Cy-@cJK=LhQYy< z$d+r%3GOpk#7#UXnxLHG4mCIb1N>0M=u!<5a97-JC)YJQe zun!@R-CnLz{qMuWQ0Co#{8+-#@dq9nfgm9!!U3=3mrK{DPh6awjEs!;Yd}nWJ`hkB zbeZufI}c5oc|dGqi6R?k~nX6sk}bk+7;6<<8ODsb`QMMl5hC-TeyFZlhT z)uyDTRy}iO4Wc4xmo+qY@Ej1ue%U@-KfUs7xv40>sx!8~kkXoQ&RX>uq8M-I(*304 zW|~m{z<|A9Dpcxrw!V#dcB*C*6eA@iY@qEyii0{`I*qX3`ra)}8vFe84@6C1i*MVu z4T_z5##IzCxbLmGXGW(NeskRt1ab!O^nwH{q8}13FAf$N57alJ(J1P+XkQjwx~uxJVFzQ@(zb z;Fp`1A+Q-d}?kRB^L5u*9PDB;nqO8(B zU44Cf`vNquQAJ^l1TvtVtu6oACo@>%oBYAR!=IpPI(zmrN&#-iyKhh4o#Jl0k(o!p zKcM~lNcZFZR8)W%r)Sv=?9R%EU2u1wot{3es;a|hA@ZA?>6C_pXoUdm zw%*1b0=?8hP6(Vk5C~BK;%tRF3Fop+dSxaSmf-m}0u-@H^~_969y4PaBRZw}uqNJQ z^$M!`(~lgwg=||mwY0QYSZ-sLZm!TfeYy|^GT=K}JklFhlwjSimC2N)Wo^>Fr(!Yr z2|obU$JGz6<-hsr(nW0@>GpXLk#Yiy8D#eY<6R_|O5@r%p)*OVJ8lQdWg_(ntu?Pz zdda#y7pV(GJ)yhU)EQyWAqrJYZEBNEOJ&x>liGKrNWa0thK2CP&6^4T&D52qt_RkU zu#kWw1^ii{W}Rs`myLSUrd8=`L-xyUFP-i z*pIRZvWeJyfb2l$N|9hZpMelQ5d}i+UhTbgPe%Rj{u-E?n!?>-VrE84H2?%vB_k?I z!^7h-8bgYl5P%wfE-XhRdvop|0vB;|+D?M<02v934_)HSvhC~^Amsz$ zGS4?p^n=%!p8n+-&DQmF*H?~Gm7I1vw~DeX+YJD< zr<#+q+eIin;)G1&skT)5J@@d8Ec5;o%F7wRPeE29D;uYi=YD7ymX{#7YM6Y**`uPW z3fjLV42^Ii6%_DP;Jj-_4wfe63B#wYB*a6k8^??82uTpDHd%fNxP@E_D4`A>^3|*3 z@X1O!dZFvS8SqN{(i9Mu_WpQmLU4IOQzRpu(m;Pi*K0}2doC=st`iJb?6(fRuHTz^ z#OSC3K{!@YQi4KIL`dipXt>1Lf}99FszphtYDXXoq2IZ44t+5M3}808&5qiVR1=T= z)}$GdwHFHHIJRuvx&#XPx2+=L{A=HhO6z`3^ z>|@rXzt>X1&-?A2ZH~5GJt;f*z(2!p-#hzsj-Nv7?Ad3K!U1_d^v*l3!2*#E(uwi* z!UXeS_%8sc?fBf#ES->kCx(IqV1`f;K)%1S^rtZG3LIFB&~MV^V-|DJ2iX@(#aGor z$N;Ay4%oz81Qg`f_gJpzRNhUtLnn#Qo?N^*gM<$RJKJ=t zR9q}LuE@8+_dj#;r+-odY}c>bpGaL<8LH&d;|~uk3WBwx_I(-=$YCA`wt;`5_VVYQl+2WrLP3y7-2M zyM-zEd3nDfxgq*tYHEj(+6tFKe4?eNcNv_10^~d59i)sk!Xjuchh_!YKB(xC`tb}> zDw9Kz^9gIs>RpNwW&V+$>1~{U0WQe(IHI7P%&nf(*3l`|aDaG&D>CEltDr+-W=4o3 z2M!(tKC_6HDX0f4uvtgrFIF<4!2)>zA|n8Hsx4aPkI->7V2BVo1Fj!5aG zcxPK+gE@%i3?W4V8COhD5Dt41eydW#At1C?02~Sl4t8;I!TD)fqvL*?w;RO|NWTdQ z32A9;!Y1t>KHLZY80%sk6SaDQlSE!#9_Pe_LkYB~IXPCQro_yE#E_)fa0{&7rczU@ zdj-!+(9<$=bZp++znD`kW@{7+A0MF_)7-~mvqkEjy=YuR?MXQ3E?;WlmQH&=^J1j% zneS4CIydU%qdxQZ&FR@81W{F0_48Z9c8aCm>eO}rA8y9oEG%0$ZV2y-oa(sIAB_ZX4{GUAX_8EHpLQH)4WNaw$?~$#$meH%Yge*O zZIJor7s`)MOaui6LXCDFv|%8WBW{(mzD3B$oRRIh_h0`$4nX;BY@XB_%avUWvKSz+ zo0S!iGfJiwB(^}<1dhPSO-@Uz73!V3I)!F76nDn(=c8p|X*A}zYn2L69%ujiSFf(U zAH^{YAx?DjgUAoZ;GJa)b*Yh&5sFjnRPq<-+5YT%b_}{7q+IPC9Xz_wJa@tU2QN_1 zAdBtdGYi9Ka<9JW%~53;IUWrcaMX2BjbUrxNDZz$tb913M8EVEguh7g3B5Ob=UVNM z+v4a&R)&3DSX^vHRaj5}C5WZ7bN_R{wI{!x!l47VoPvS^7c;WL7`l#B^wF~iY)B_b zG~WqbPBUpecEoRN@3Ko*&QM)a`!BbPWA_B}`6rf+G}dY+E|x{7UN$~-{oP7Y-Mb4v zdfywC3d~w&U(cxe$QXm{90?3KUb*O27%}bH^UPy%07DVDqBh;AF{tt&B(6C*BdCDh z1O?!`>zq9c*7c9Sg2$81&4k(-K`hBe7M^y1^3h@J9eaV(5n4t!7)j7g{1_N;`}6Z`_B)(Pn>M^e)<;D}1-KvDcjQNN5C(LdO>N1z>J=diO%xk9 zc95y}tp*EJA&6;&?DQ?aIph!{IIVCM6Qe`NA?!z!mB0f0#!#wJc;3DGp&hApgYJ1{ zgy|CFN^{VRaMjw{uU~&Br32kXynPH)DQFS(U|V2v;Q-bluWk_*+3&fzpWP1*UP$u8 z?n6QK+I$iTx6Hy21Bo_74vjoJHT4}gYatY(4|!c*pLdm-%paWy!8&uW22?-k@!X&$ zLHPE4(o+7MUQETQ1{6q%X54|R?J~R*$9|$V#R{`0nEgio@ zJmux8p#Xp!IJ}u-nLvW8l2Tm!#2x2Zx4VInQKLoK=8>@dZBkH5hm%_rf$2BeZzy0iaSS5~kk?~RXvAS60ge+ycF0_Q^gmBKBm;>a zd?C!wpGTX-YohJYTi>9Kn8+-Y<5o0;=)3yv*TvfR_x2$0%o$9 z74!W08qSmcOS$VNkW9ZxzXNrL8H6K;9X;UWx2zVX#AwXco$NK3m2wwfI**f5vGR2FF*zPIx^Bx zZm$Pk2p0F%6SV7io4__|YU}3Y+TNRIhVu{xqhn%{>TrZuiWys)oka$$(l!X!icnRU zoZ#Ld`e3k$y0LN7s^FXNC*o4^0etWo1RJ5R?+V1}D)LsR+-a!q{?zy~y%0Jb)$Lg) zqIxDp;$v@b)z#Pg_@E>F@ZkffGvc#-P5>!TVCrtm7e9%TS6jOcfj9AYE9BdGjByuS zU6W+|RuK%6+xXK6`wVQ?mxw83rtlI&Jr3k>qPJ35_;ycsclV1IU+@U*E^*U`jJ!{K zZ)I{XG9!ci0$=QvTk01~4pFm^5>xJlEn2aPyBoEA{Qf}pBhply>sSjPzpFuDZtd(` zVny`}HM4P*$0U~Ltd31zrS_kpEfD?$2b;cw#I6hJM8U%0F^Jhvg)p8*i>wDZ)RT`K z2mblzAFvIj&>X|)j<-~*pERiFLD^|;YAP!$OFZ;~N2UYj9ShCk{Q{$$44qb164zdh z6HT%%#~5kei|#~14HN+VPrP7}AbI}Hwvp^72kECvn}$rkx>dR@d|PVa;fjLQ)-o;w z4uxG?KDr-j$9xw{@A{@DkcGbcZl|*gLbiVF`ODrtj3gve;y58j)VARla7;qnWBWJ_ zK6X)xoQzbX&9`&keZB+5n{Beyy9xLr3VFUE5qA*b4UkAHqs$J77mH3B5#=hB; z{H?_qB7crd(~R_bg+2N{pTPXN_J!t&{_uB&@h5#xJ6yaIkyRGy>q!2n=`b%Zq-QS> zXyA4C8a-dW_{L$>8-$t&5?>5lNt7ieLfwZ=fSeqFZZ$IB5i1i=XrQMf-HMMVbe%}M zIv!Q||xO4<^K2!zJa?Q}p zqjK-VwW4^L2+LAhDyTLq%)jc$9&mrjWLN@=E$HRuFZvT{JKQ6WU2hylG6z88VRaJ^ zU#0Q88Fle~CwTbb_uG=F?MzMY!>zW~^KBSc>S_1O!7UBbh(?Hz*mgqJMc6CQLlfct zt@{~|Q!vzn=Gy?$V5ChtI_PdIz5{Y`vtkv?FoK5JfXF zG0ls~8bs^ViP}Y2fAx~zLr#ejC6^3@qA0#={*Zgf`44E_*`@< zk8Nv7f2@64$w%91?(XvN@z;w_KDn1nSniSbk&u?Yf?Di}Glp$AcikuK#c*0Xu#>hi z37F!v#Myy+1LQ1O+<7kvZE8#hQZ_OoI0YEdgOFBT;)t&&{5Gaf26h{t`zHylaL1BQ243_=$^m`eE$elZOV5XA6;e46765hU&$JKiPi9_Om>fVe&3pm?6M8P1@ zq9j3v$Uqec=n1$3(4JfH(g1!I<06I+=i-9b?<@F)<>Ul~*hrx;gPjRUd++Yq$PFYQ z8V)Eya4dm`ao$UPbfOcxuv9$Q+UbBeTq)$QU&euls?>aS<{A23Yt)za&S1fa_M0kq zl$gBNeR^S34N%blY&Sl0SDFRt65|?d=`ssmBPzMQk)wLD_$|ft^F8C1w4^v(bKTz!DIAi4r`QvN;sl zJs-$UfV_zK)s|#HLqa$`qo_C!e>->!F)}br6PDKs3gY9&nw2LR&)flKjntRt9FGW| zl-N_>&kX0HPV9S(J_aCo+!Z;Fk4W4JhpWd8)T|LWrU2(2Jea#!aTa^k$3kZj@GUq) zNcIPiG7k<;!$103L8NHy(J2IErNB0u(NF?|OGTUlCJM`dC`Az*qhe?5Yu-e%IXgHs z8Gpoy!NN7=jZy`W48~J|n~~5UR&%ARY@&l1T6OGIn42RL)WQl79~YBVH8(XiUEIvF z6{CyZp}Y9a!pcfWyw+0Y98N?7EIdt3U}{b|0pVY*EG&ZMIBIoVBv|JZ_UCKAt?CR5 z4@Zdal7vi#*s>M3l9XIvz)Y|{R*f1q7r}iG`Sw7&7}!ntzy@c$dq+Yb>pGV5OvYKZ zE}(4hQ;Q|0lEn>1h%?wZ>O4hpEgPik9LH;RG=64mTzjlV>$~5&QDXXB@vNHhDOH?f zwNF}Qb@s+Sii*|w`J7+$WX|}9K7EUfZ1y2#yP?{nI<{K^<5LQB&Y2sXRKt30i)17+ z*RkUo3!hIYVHz9hzSiJJ8518LAM~eK?p=b>4J4)6vM9)%s~3V)+5C{3V|fBxfX)@` z3sYboA^>6U^uRC`(8at@H9Yf>W5JZ+ANHJWB;d5DDbaRm`S_6;R;{RxfukbOfp7F2 zU=vK%z+Uft?$=*mKZckK^FTz0@<)$;wdJ?M%>j*>J-c>^Lt_sOH>OGc`1~}1`MNqc z06Se=Cm7XeBRM%bqQ{CVlc>UI(CGoI2E7kZA1#D_gG6~A9x=F!BvU7+JBf)lI8(8v zF^mVT9$MMGGFKq{ue)6Se!W+CD;d6Nb$hE$xjvSX6?c?&GqxM{+iq#R&=R=$)=K%= zgkmnY4O_R5EQ{az*^|*%SvZ#VrdIigRrYj6fAnF_=RR%;M(o2AQ^W7%%Qh89_f^pQ zo=rtLS|Ge@+e+GPDNmu>Zo5c9G;FJ|bQk}`!^I^(UU3v;q4S!rR~hPu-Lm130W%Fm zM)9XLaE~S|iN0&WWhmRBVr}Ev@9Wp}o4s3o1=enTeKvhrP)A7e6y#kZU4gs(1(>uLc%TJv2ZiY{YmqY4%f6-8&E@ZLR3 z9`p@~30{c#7-okVBas8jmBv4TPbMx)ZMgcPvr`=I#Ls>RtY?c^yICZ2iZ<-}MLCf@ z;xqJmrr?lF4*y5kU=;hQ%auYaBp10eB5SNmPS&&^s(hP&;i`|8Hl{CpA@>bJ=% zA_vFo)Tuyip5f^Q#7t}|yqcdf>?de7eMeIwmo>a@FVz21K5+th`UlJ>N&Z}e#fC31 z2LES$CI$v!xG%Vu39oO!48I&Sw9-wSwOE}P2CCx9XHtI8ERZ+XdF>`6sh%kCc>r1O zWg3Q~8CR;}r_Z;g*`9F^NI7-AsqT+}*SDz7#`naFu!+D~0>c?%yhwll6KQ2MvTbKq ze_ma$7gzi~wzfWX8xEChmwsWIJcN@7!5)Vbl7^7*@Xs(VB7wt?zAt7-Dsn~xV?pM& z@@p^GI$6k0Iy5tpWq8s*vn|EZYe=m$Upg&(Q{xuJZw)s-eyovL)LpF#bnJ>Q;OSoc zamMGneOuLo7$i=xFC5?>X(vu5>=!E$x%J-LSdBf%=+nD-`r_0yz$!G_mb-;mKuCnp z4gh9`;3{M?iv~8__m(i&BQz5L%)MBSb1{71uCeQB#wigjqLmHq+pwhe+ZrTWPXeW$$UP5$3C^WQ3#4sdAgP|&@h z&4YZ}15ghf`+*g)f$K21)EOd0PNW#&`MHh+d@qaU? zWEJ;dl`uqkvTj#s7F$g2ZBed_-&|*$b|m|14oj20#;DGd)wiKU2?{Gv^gq#RLqe&e zs|!AVVbQ{um*h|lU}`7{8Xv-|Q8V!WV9gCAG!qOf91OIyz(j7}O|ia^{{6Ay=Y4!r z67BYk_U6d%7F^4Nrw))Ds2)mI9nWC)(BNMNjy|A!AGBr1kPDrS$;OF7doM`Uo z5Q9saXG&7iAzDf}Z?$!6{#`}?a<@uy_h~WS7*Mx+r?9vGY^)AX&*i5~Byg9``mr8e zRr^OZd^xw7rhEAH&#W__c`AG5%^Pqi?iR8L2Ei403l<831&~7Ib)YY!Qr0CpLn!U6 z%-@0!gH?vIX?;E9CibvXZN{Ngtv!c zeVRQZ6_Daec%ncm(u8?#X!e4Ag!aKVxY&>=H(o<7*NpQQuF+^O-Ujta(;1x$WmVN5 zXwsqp#K{ha*PM4&9RGc@He8Z+14)pA^mES8dY44RlAy1=^ZsQ2hwr3D>Pi=mm|y6e zDR2=zSWz(tV9-a}WQCBl#wvrfR3k;XWsAl(L19dsBl31CNHpI_6V9MO$=ldS|FaBs z3R5KIuKLa~?Qs-kD{|UIa@)}I9K=cb+i70n;;*0fwr@jceP(vH|EtSi>dwEv?yE>7 zMV(=9c1ux_Z01k1E{uO(PH?UKR@Hd6IUT4e0_QJ_^#8uw0joPz#I|l=j6Bggvj2h2 zhBEOVcixQT){Q!S*XrwFy#C)5MD`iMeF5sE6O=bHxkZ0H$PL)Q&6^*`;Nf#{O~?2r z*EWuIt;63|SHK5_piGiK`Nm{%wxfB4Ux$4g4pvC>sWh!R_fLuCd;mr5-+%8bGUT>^ zZZK94nC~lQ9g38;fOg>~d&6MQ-!G=PCxCYQ)sc-+WM2{vbwuv8HD)pK@vyKxcKRHW zRm`RB|1tl!dh^BrFAezcfk6$b^x_1;xjS@d9B3awHSpUX)nEbWpy_;QCaMZ&G`UxG z|B_c}?Kn`Sc*O8kG6U(ut8e($-?yY77-pb0U_XOh*sgc*`0>xp%_u|%pG6EIO+$G< zGd+F&4yve`XT{t9e*G*QJpQ!l{wK*kh^$m~OivE`Ct9_#-5@iOaH<@`d81A5qT020?a89ppEcfXu2S6kA!$C zFOQgl1N;Zio?<%~G*AO7bJ8~hZh#sPZ%pP7uh)~D^q6pk3mioThuukyzBDnYwT4Cp zgoGsjabt}!mIZ_0Na@h}AP<3It|4qtaN>bxGK!Bksqzq%k}`Ica;x+K=7usW zO~MuApaCS>DXFPoUXhca^wolu54co-%!sM57?|+nHsO&ehf4Wbu?-8~bK$%p5vKi`Q!^5)!wOfH0*6INRAsXMX;Ul4i;d1$MNq#<=Kl+;J zv!N`{NhZKmt!l*Q5^T9o4{ceuTf>tR+_7|mX$H(WB)=OTNT?Qas$U|jH{poF_-keo zCI|@tl_xq$5fCqWV7w`bNyvio*ck%?b~E}#^EVo;MhfV$cAU~^OPh`ojQD#nCVt@~ z{q~T`*Djc`)6k$ZdI^M*D<&=>f!rU`Hx^8hk5YUs1$g;GYwO^ohsq5RRbkg5;O9X7 zkT(IC0eH2z`R-#$(*25x!`$5J)+u3&)f@la(#b>6dJMQws-8c$b^RjReqWZwx+yB+ z8v(ht0{pMiQo*V_cYYtt&Q%6ae+rKhh4v^Wfnj|*riTnnkoE}+x1zzE>iTa~?PCwk zq$JxHK<<%t{O_A40=0*UVs3i+37$B-Cox`$d9oKd05304`wIZUa{ zDO+vDtR^UY@9`&q^`VwQ?F{U|`Hiwd7?T;2l)qIy_Lxv0AR82+m?cLPO!kn&pu|gs z!7U6dk;8)R>gwiZ_h$FM@!0t$Eh(K(+Tig8V{8%c!XgBHVbd3+xFhgx5!*&z1YXh!L^YZE;J=GgmhAx&?HA;a4sB1M2+uCHKcRK~ z6|fj2Y=7qFocbpI{bzrpy01DT>Baz=ck44QbHhps8SMvGmc^Z#jsEAH$aqfkmF(6? zvx3#NS5rB1LH}7q|Gv|jq;p*729m|aLHGZ8?-lP!N_FR$&P*j&i%jlCQX#v>r-_Qka0f4j+zWLroeIQS1-M zZ%>Kz!P8o28?MRQ>uPKBoqfVM_`gTsJLpJGkf}1nQtO* z@h1po&tMMy_N{XE6atusmshAO`PV820jl=02Z&%^$5X58-Se(!93f>A{OQ; z1#SzdX?JMLteSVjb}LGek%>uPQ*#3e#SSw_95yz2n4pX3*S$lDGaAc^fWs%k2w}$m zeMMoI;2=?;0P*Ju??UAT&>qMOGNC;(SE_=7 z-eBt?(T1QBPO?fkH^#h1oXOT^W@ID)iuiL2x5J$s9pI#&MbCRYpmCTm0WT|?f(fT8i^%`oH(a8x z@wxZga{MV+m78r}sfa3RU3(R9i}&W9XU{&bmg$Ouz>c`)hI5p_A(TOYc~UNN zOL!GHEbk)C`&0cG{Q#Yiv_*fDR+i$I=~~Qu72PD8h2Q<%Z!-k;MBe*lrg9~?7aKsgRDON@@Dze1lB3|c8*VoY3o$0q)B z2!|0u6f?HO?U9akhb(D3O!Pw4GdDTu*?*OAN_uhQl+@kE789hTj#>w!XZAbM&x<#V zMupg*i2>>ly8p|u#n@ZL#ZF)Q!A$`z|F+yJXo8sSkcxA+{uVo)2v)s{qN0ndD?0~{ z6jVOdhCp1x!oms)?56D#Vq#DqKLKF^mvn#z0?deV8I{5*Yexv^;(;_>Cqhq!nRncCgS}egsroTuAOFC~CFWVURd9 zJPdfT_+Ba?5#adqsy8~s(4N90!(lZ$I~yJvN}qtZSl``k@XtS2gP~%8E&`JQLDu+! zDW7K!AbNdz^JWCy{fCbp`TbaTgD0`k1_hf$_U2UWbUYgg`}FbC?FaCIdNVxK!C z1p}KTWDTgv3k#Q!xq>)YAyf?X6G-zx)nrc3JYsqL-VK+QjT^|GJDu1^i{cIU3K8@s zFWmpkFmM4FX20*BRICXs5=d)+1};26dUff-1<;8vUbxT*chp`W&1KjkU~fE@`z;=1 zCJ_O5O+ny%kiMW-iq#U#4JQh)zVMg|!AnIjg4`l4tsnM$fbr0cCR`%Wa6|Y3&N#W) zi*o`vI{q)7I);$0CyAg%qPj=VK|jb0?O7lkA>8n)2SB@H$ByXUcsT5eadRWA7ASe@ z>c&H%a_7!DRGa7{FUW$o3R*l3vk+PX3cy?z7FPZ|UjxjG0CoqQXe7K8+nCZzN+7Bj z`}E0>1J9lCEJY(7+*A;2X3LlWoM5f#b4<<6MclkOD87rGn9s^JegsbVVEY}#7{`&d z%^&91tp#7yh3+>Gwp46cuCEfir@%!F+$y(SoJRx&TslCk*uweL_O`Ye)Mxkth;j(f z16w&d1?`X=}kx4Kd6E*aV^@`1&+p*>OyOm4$EnSQbe) zf@1?4F>56yd3_93A2V(rS{IYfmO$}jjo}w(GN68(816y`;Hbdl93)Me=HV!1!M`dQDAw5glzHK zfn|*JkH~PQxuAo^I11Tmx5+)kZt;(#t8Q5>w+u{C#u>g`S%n`g`w~JjELg+ytUO96|itbMgymEjJ zPGUGfN%G1MG#+sM*nyy&Cd9}8JNj;+d@Dd9WYJ)!jU4pB;(!{2IS5A&cbzMm&}If5 zn7eo6NaXv%4(LLpr64Xq2X`dlZb``+n(7l1c6bsf-ce60x-lTZAjTk}hJgQS@K#h* zT#QuD=LfdNTY`)&iW2q8xx`>JQh)$q!e^5oH6`UOXooa3N*_F6k@k6|1FZ|%a&Z>~;XiYFr*0f&j{N>NN zYkj}4@sZJW=J?J{oGK~mdbmF2-hT+7#ShHoLu(~5F%jtfR3ISZ<$rK|G49xL6NhtX zs4|4cO-=Jt;ABgC&tb2IuNms^%WdC@f`TO>a_-Qq8kTJ&s zL}wJ3GA1n&Rvc(9L8LVj$?`stAqvbJ35Ur8il5YO1cl};|K4{rVlJ0gl$z*)y)p24O8a`24u+jsPD(PzR@DUUqVCJyr&CPEd>RC5()gfaddG%1lpJH#Fo~1q0!=R+C)T z-MiB;_+G{0s{?)r<|DR+ec6l5+1Z`I#6e|6TxU~` zDm^@idCv>dEOjb!2%rPwgJOXzXodp$!ZwYw?1nvcxqfcLXTktVTwDeSKTaL=X$>99 zz@)`u92x#mxqcA;?i1X0l2w7PhMxC;8B4_AhP4haRaem>1;XRhzf%C)7RM&`=hetH_~T6+{cj#MM)}QB#hpl z$X07t$yD-HBKAIc`gEH4sDAusfMBTNA!$j^%p`EN^XCUU zDZSD7M9W44ya+VoW@a2p)exf>=YDvjMF(zr*bx+4uYt=ZR}C#KE|&2XW@QbHjS*eE zx(5JkfdvBIF38XCMi%mmxB(=eu-97ynRT95_PmiqPVh*d5c?n(Zf;!IGTh-i)o`$c zZ67V&$27lH0BfCDzb$D9Z`{>MLmzP)4u1adU^L7Z)HuA1aB2dnOoOwEHScz6>gL8q zG>xwh9dGOG?17K{=ck>oUJcv}T(ARHh@)kN>7XVWh=hwju%_|{X_0@{BNd4*RmSg1 z+Z{Q1<$dXT2h{E9MuLeA`-LCgMhM^NAY2^e|Mf|EA8iqS5p69r6MU|hmMdMn_%I^k zoq}YbB&b{XtL&^S2-~VJ9b}tbKVL{3=1f6m`sPezu9=;Q>wAIZ!2+$N(1j5d@N}f< zT)ekoS{5i~&K!B2LqC43Oj>!LH<&~2`{Vo2-Ri%4Yt1#qfA@h(;^vV&o?}!gW|rRP z3dD2qJo0k=Pf2tNa(sf0eM!6j{$Jwf>ZC-({()dK{ee#v)*}D^&zD&Qww-)^OYt@R z6fv;k-`9!LOc6}x2Il(lr|i~8DgOQQc^SM(gha&2bN}^+Hq2>_vM09j(mxx~b~{V{ zNJ8qDiu}TR2I|ep4a7Vfl#8r&;jBl&r<Ye}jMNIoT6tSO!tVXEhc%;wNn`yzj z)YLOi$Hp&pKUwN)B0C3^SdN&`wRi73*Is;nzXdTh=-=1xVj}R?39z1?Nsg&k>W*Vo zI1_3Ytf-LNI`8`C_K}McUgLCh2KxFNH*RDF{)?l)S;+1`zm0pYho{IC#AJR{?X|11 zQIARWpMgflKNQ=wZyqza<&z%}e9>J}mC3nEqHN}Owt^h!r!*=Dh-dfW*bCQ`^72{m zCi}E+Ao~Ve$lJ0U>_&p%u1dXrZ+??4+D{}7>R(Z-R1Md1JLf|eKlrWi*HG5apT#>a z7krU*QzBO|{N$&4ppJ8x0lY*@AkQEez|E%rjVN)MFP$+S=wn=H%hAgYW#d znj*t;Wdnms&lqsZLEn1hH-^A~?9LFwe_p)!0_kC6bMt{rBx*2adiZ>r3rU|N&~#H% z!qmR3OsE>@Cb8Use2NPQph0KTVu7p_=`KPx(koO+_ZY=?($P&~T-www@Oq+>la=Lg zj%uR-)X^EpT2lxMn3()`i;kUueYK+0?JE9bi-E<)b%LzcV&IM`zrZfPZh=4~$I(=rA%8Ps}C+uNIIb>H?dU4S;Y_1tQPHdnfQ2xS_3wo)8KQDEL66 zYiwws(};QW2Z$PUG6B33Drne}DYcTI=X0}}-qP{wU2m{Y4^U6PW6tPh0?o_PFk zFI0ow&;9(i@J`Pf#A6wOUi)Wy8nldrDn~HwhSui;e4&O}4`973i!+Dlkh*~t25(J~ zV&s96BQU3@FA2+uqrt6t+lzC9~~SZ^I2IIIQscJpwjCC-H@Id_M?jeRDx+Syk@@xWZ7kuRORs2NUec7 z5>Ex=RlRS5hE z^K*p3y4zxeRR?K6o+>$UD8IOk9Qe!7&_zh0IYJQ!CMRvrSz|Ha$_Ki;^e_h$aNxqpgxHqi!XdDptb=V^ zK}kso2GEwO_XfNdX=Yi_u)YD7AZ_@;3;U7vdmQp0rQGaz z+4Ur2a)ssG=hwZQjoKyYL|3`<>LV6jajsr`S(`N=NtbVTakprP$LhA@qPUL4#r!C zm<6-PGs(Z2t?xPb?N58g=7_d($=UG|u5%&1^ZQHqmKNk*w}%cPu^CmU4hP-sqkWq&NVOLAUqO zT0BNA+u89fY$CE>Og#f2GB8w&xaPw{!$D6Kh$Cvl)f2}3z|Vj)El&cQh26qAU2b&$ zZy^S%tDlfVL`LYuhH<11!g&oGu)6w+re^fe%k^AKW?P*rkm+rwUn@P{bb*45;pn3q zigL%j3fn@*EZL4)8mw*M8dclHbznzlsG`QRnD8GOYh&ev7}^XP9l;Q z9i61aMD*6Dc(1|CItSuhph3t`td8@AG`;G?0)egA3r}} z6BDrxe6>v*u7-z)1L{Vy9&Cdf4$KseM_?$d!g&oBZf|E7oCod;lz=!2Y@^>p7KHEw zGv{QpL=c0N-Drqtm!1lB8A17i3Zgu*EpyAMQ?+4X+ad-fB3j$qpIscMrvng(Tr#W# z0zwNXr#@^3#C2Ut%J9zJAD1JfI&C#V5|$nZ>Bo?dp2x5T(D z?0c9K0~-nEK6cC-36*Td?>NEfBcsr30Jd5J<1oYqAp$#%&@=+r!vTb8GAMaKa)uZ6 zK@OaLVK;9Q(j<{2L(*WZ5b^zQp6A*7eZSxLt@roq>D{r`z3%(E zuJb&P<2a9V{MfOa(MY0~aNf|@%k=_#AJqi#fR%D2A%1C9(ot>&AF>`S^71zIwLbN^ zsi{7T9-pY zqR_~*t?_+g1k@RCu*iWJ2vx??)#gffj@8W!+hOocGDwD*9?m1dlH+N1|7L1e*l}y? zcStI%h?k<#qeeY_@uEDJ*i9kXaC-5l4`L^=0Gs6^Q>Os(R3WVCp7th(3l%gPp; znr5Y_-m(Lw1u}BkR-?t#5deX zs2U^<2@a2V)+}puSlGMpg4{RkL<49MW=PruEv>%2dMShwd{|C%qdis;Qwe)OsiaP= zj1`L(P_qD(E9=&s2nb-D(=1UU6)%T{_w2=sw~_d=Pf@ZGpH6Yue|*nSl$fe4-lMl>Q+>gv+YCST&Ok9aFCrLYjnoL`?#jTxQIOp^Y;%( z{`i|I&!=$ym(+q(9m#K>FJC)XeD$sJDI?!OP2W{_S1cJPIZ9PkFr?vxrf8rAkdkDW zmYu~>9ra6PgXx<^vH@ym8bFS6yeZn-o71Ykp`p19N{rr6R5KhkDW5OM zB4EQp05xpbJOyD$&)tpK8n2HYoB$sB;9t2p!s~!RKw#jO}gn?NyWT=Q8at$ zy|t{a(_w=W_nG;oLKoVN@sT%g-sXPw8uVNu<%^*-_7Nmbhm05kt$ubGn37Y2*|&kc zGB^lm3nb{bDpd%LNlcShbm;i>l&&+x5;N!D0nOAHw2~^VFIn-RWBP06%a`Pv;CwsSGLJriUge(Fir_BbqSTXyUv%Nl z&Iw?>Xj~5+JXknEm~7wqy1Va>GueMG{CfKKwjyOZwA5eHYH{TDZP&6RLtN|I9YZ#K z(3bvfK*7M%<*Sd449=1t_fouY=`GEO`t9XEw{%~k^RdTdUkb)({Eu~qjc=vDk`AMJ zJx?3-=L4Do*VVl_=R+5sC{^ih$0t774K~}}>enlMZjUSK2mIZC+-z!0A17n-Md5bz zK3}ab*A$;$n7*^{x$0WE+kRuKLe*L{NPA$LMJ=t zm_dZmG4zk(Y(-+U^ZW}Pok3wyDe z!b)#{``|kRR(yP$QLfW8bmXk}e^f91mM}9G_Xn064|LZqy`1Q2mE}j}+m5$5RVWYm zuJetnI)Q@fKd+|2K8wwM*Dh6jxG~D<%JMl?HxG5+cIo@IA4Q>sEE{9v2nWxmf1Pp7 zdeo2*^W*4N*B~$OHWgLXl;&4LROoz_e390eHqbuZ;mn1r>br+-)X5p4rPa8;Va{sN z5lPLMiw&vgv;)xbWPJt*A%BqrL_i?3kN`#E=+aaj+!Cj z#w1iu)U$W~a_ac+#e*D1_fm`%{_f%TjE2LQm>AGy^Q+s47m(NA{g#@UHM92#H1zbj zeJ@x`aweXD<{Iat?~cVqWJIW(u0v+7eJm>?f|CjFcZV<8u*jX=L*Ek+jo|J|P#qe~ zoL$KDhls88=fa^~4&I$@b!^{0L((rvb&L1~gkO?l4J0UTGJ`s@b9wYLVp&7+F9LNK z+BmEOw3+&P@4kIR4?QKNHH1Hn>!b~*z#buFZ*9AA?%X-{#N|tudUpL25&pk{mMv@J z)C&QXIdn*Jz>Av(eWM!{r6UJj?Ep^Cq4@@!!ql>0(FNeyFc-)Sf97bUlpCWt7vOF3 z&PRr330o_87y8M%Neo^<@cQ;~DO6_L3-CoE+;aNxVO%JKp={(+tb}8&Dc{EIdri{7 zz2CBgdtK`<*z6e__vI|_+jr0)eHt>bq@qS4W)kWIAP1j0Tu;ztZ{Cb$w7Hv`uGKd3 zR-w(=4=f2viN-4+9o%=`l-k4g?R0d^fAWM4Q&(Gi`1tXWB6w&J4998 zQ|L=T7D_w*#4_$5q;{B9;B3X^1RSJG7`_;`noprO!iO(hvSr@x1uI1!d7o!pPd68E2) z{by{hTw0{8Ph_%iN4n^b0br@EuV;)1ep^pLB$@=;Yn;T|V-%p~fAr{L@^REpk*ZMbV=NOn zSaA15EW-DuB!mEe>(+3Ho+x7OX%k%DNX6PHTfB*NeLNm7C;O(y^s}ehYtrtfvlm?F?#P1TG zd+nCHnx9{1`JG{?d`kPzT-v3E4-SFIYYg zAKsvNpjHtCse1$ON8jLiPo3IDvbU@@P{>#8nZQ89A4lI{9xR=<qu8 z^zB>KB%haxJo9(5WGEs9f`TNas7RN4F=^6w)VEvgJC4I9tzLcm22XLcqq}AL^i)nM zP|Tx8j|v%-f`ZUEet)7&%7 zoat2=OO>qF;BFQ1x{CUXbMU>ge{=puP-S=bb}Gh|qdTM~g%QcgZHUGAxaU7kr=++$ zIceua&+w8cz@d}!hjn3RH%1bGkZx6b*-QuARmQYWN#NTN`s(hWWk59G$QPjsW;bZa zeC1Jce|YMGtt9*`1#`w_kSm58Gk`PX#*K%8)c&V!3rOG-6LmrsI5BWUl>PYe*@+ti z7N~6c`H_%?g|61-!X+4YaaaOzpkr24R$jY$HT4mWP-<4mMVXoVy#HO3I!K7OBgg~$ zx_fu3C=sQajg814FFYg!sn@%zssg9}s5e2^k(_dRQTZRo;mqd(BLGM{5tqb7Mml|4 zEUX_7cNH(|*@`yWz7-!Xro7pBodr(RZE0!2g_uVF5t^EZ-wsY^qrzEpSf7~NaT@I; zz~n!F&VKA4h^H%v;+4ci7dAXMh<$xCIvRbSNb(V-FiZ=XA|g#rm`79u41jXmwF^Uu z)HwdNn(hY#H~6eguu1n0?2RGTr}FX(*RM|js^T!x3O~s|A2|}u&mO) zjcU*bfade&V4C73%a;os$8)5ze=>g@Dur;!vDR5Tv&CAGg;IW<2?_$7igl{9`ELz* z1#*FH{OT1CCKjtdSRnC*m)_K@=s%9`5UjJl*VmsKyUGh(hD}DHv<0)*;L-*KVv5k# z04zoGxs-kfP1#flspdVx=0te$p4-ZOh$I`LeA<;^>HhuA9=8B(qw3V6r+rHE zh5#V|x+L1a!@BiXNkl<>tu3IwrN@WX&ZWWOGBy3t>2u@+LakLHw#n{^7~eN)(Sn8` zac9lbz8VNb=8m$z>8Jqfg74VdZ7675=;!A4b)V~}w=26BJCD)O2hJ4iYU{48)_3KA znKfm`-}$wNqlc~8?uI@BnfusJHfYhU`r1`iTkhE1-zqNuvN>|}kAE4KPgxKcA(TYy z_C7-=sBmiO>K36Ad{kZa_d9jj(j(I$-2uHsW@PElbFUTax30H;s1Wfku~l)Lgy;_)+J2}CZo+Li0q(aa!cO-ddO0naANH7`fxq zG9+Bdx(N2d!>h?+7@mRJ>hS7MjK%%W%jsgub0hm-Y);&Ie@Z3%O5dV}CwAvf`6Nu= zd~?0|uo(&Oihrnv%D*_EZR8n^N-d2Bh{cO<>K)AzldUKKkD=KSN!5&0e+g*`?LkYW zpb?rgrz+O)?_|D<95`U+SlOu7z)2H}`~fp)i}1Trs^c8&xb%`kO)#|UT~{3VvvNnvn84olPj3ud zxHQekV1vunzx1D{h`u0oe9ob~bG}G=A!Y_pY=|AniiyS<&8pyO3aYBF0q4-OvQOf+ z36eISv-5>zD7f8ofBL>Y3TqRZI0^+pb={>>>)VeH}CFgl&6nvO6TI z?Ab$y=2=)2aR=bdeqxi*;Q4lU%Vy4Gl2j7QYG_z8(`M8Eyg%`OoNT6~;n$(g>ZMzj zemId87cF(Nz37gWbE#?Zi?bR~Y=xJy@D2jM%&?;65a9l4{B(9Ous%x8=ka74*)Up9 zo@kC88#OQO?|XgMXslTLi`VAYO0M~GFD2w&UA-0(t79y8N844qQT0>LLAyduo-{lC zgNb9gq*K=}U(RP4b7BbmHNCG5V03H^)n&QrO17k>-LE!V=*C`R-E$Y9S70*-Xqw_j-9@ftB*luR8TW zTk%>y$(Z#M$K~|P)I7daG(WMTXWtrKBZEML2xHIlc0r_@Na)NJ2)WBU+Z9h8%RPk? z=nb=ZJ>d_~9|hd%^Y`8Ba-`II820lJZS>|fgxSXw@;19Y0krBGqEx=aIP1p{wP)5^~K1}z3-Qhh=}08z((Kh zf@-E|_E-r>=yB;7O7wWGHf6~I^URA@Do#!jNuit=?LdENOtkP zsaw)igP(3Ry}4!{P3xz>NOPSfW$FFWqGXki*z47MEgq@=INN;HfuzKnDU%Ie8GNYj zk@9Sn{>7B|J15q^4GH!PhYMsKz;wUv(*aqP972`*9QBzn2?HpW9yw7WmY1~7BM71D zq$O;D%Gdh((Q0Zjw{9VSSCd5h`l_G+a}YZ8=V|N1w|(F{En+52MY-%TLe}I ztOQBsY`N2@Bk24NKH3*Z;!E};g@AVAL`$O7jT@VehR`$o^5$A&z6^2{L_g}Lk;6xh z%*f2lEG$d}8Kmx^S|`Qeg0C+ND{cQ}z|f(I9QwFj!Ja@#PD=SAhEaKsf90ArlPG>E zU<5Z0@Bix6$B#EBFTXDMTroY}K;-Z3t>A0wTc&8?r<<4D5D{gppLg|)jb&ck7Atvq zd6Pk?U)FLtP+m}S6WnDwaHOVMyxzUb;vrrzf}uRcN8k2&-fZ_7i6{A$eke#X-hLQG`>tqk$`J zm4TEabczLwP{#W33mlW~=mp6Oh4M&FO6mw+Q=Hhp^%__^@BgdQo;M3@c|@8f3?FAN z#^ZtIN2~^(J)x)-M%(4^;VZHFVyTiz1?#!)T(jnqV%-GiS&!sJlJIv^R8-c%_3*oD zIg=iAwL~P0Y!~4z0?56do>iYd3Bq(EBkZY0>*-ly;6mTWFMEb_bkIahjl`vw%LrEK zWPDWbRjihV*TsYo@>PZd6hRU4fLj%{CGk#dr#QfJi_0veBq7yZ@v~BRXeD~&h|&}L zWk!L)WzKo_zH;oW6qg5Xc{lf4^%`FNVe|bCWpVAxu@dw-;n#k%Q%%iujkDf#M?r(U zbo-P*>Vo)O+W-3XPdVQ=kc@+lO=iufX(DD4ukNhT0a$L`zjWaOb+)C6i58MoimrZ~ zcMEy47?jQuqeMRmwSVl`67CFCMY9v-2y6F|=E3XNF}##ad5p5->D#x#)+czkt+HC| zl>l2b8+3CFZP)cLi>Ja;!!#Du8h??u-^53Z?8YWddP75Vcn{B1+$#UHEnsWHVd*L< zy`NaRzHY?*j10y*l9}}C`ln!c*lhj>NgnkBcNHPidTbK<{XR5!fRE4ygaeB|l?e$s zVovni&5HqKX)%MgCn{~&{TiDb1SD|z-dSY*FJA_18Ni%R=lazILl6p^5hUJfq$gRpV*xD zhTM?NjX^YT45nuO`N_kFpRr`b`lVw30M*^3k4i_cZLVi5CA1q_ZU7fyBn`IE`ufGd zTPSWj@Siq^kg3DTJQYG=jW#oP7E~@+z2dS@hWQCP4??(gtxK-b@4^@v|Jg-z{sURK zm}?|t)E2%-W6?6TCEW^Eg6LzVaF)99ecz}H7sMzPEJT!k@jY^)1zAz-hNWncgn`DK zB@@rCqs4O+bNEFzEF>{^=>=(rAP9i z(a~F%EgR_01Wz{c>4V`HFUFFvKt7`E-TCPy`dXu+wZhWt-=B9_ZDW(#{nGX8Il)r- z>+5b^zjB58+j}3=-v$_J<7dA+NPye!8hR*{Y6p~QmtPX@hKKuQFc*?PHI61k0BSij z;ryfI&&r+2gg@YGU6-#&_gUoYiDc{65q!M0{@hs2iUx&M65&%qI7hxA>SU|k_V<_r zTl+u6+3$M^UQg1}+rZ9IO5eHhj-1ll+xXHwF% z03hrA0sQb#dx$_Ol*~wrR&x-iN9~o(6mDK^4fFB34H$5oU!|XAw(fY9kt1V)&xy}6 zLx-Ni#L&}Iav_^-?ZXqo+?P+EK2=m)L=6u>idGV%hrk^xmModD>6Iq!c=(Z`1}(gM z_Z&SyoScWoOU9+<=OdQfhKhr;fTFv!ya(SFP=mP*{Hd|=I@5Tt)urzT;W(WvLzz(U zCAnXiRZ23u3OaiXovMD!wSn$pB0Fdv2 zZ|Sb0G*@AO%p~```!m?YP5B%C!vZp(xpIon@5K|jf5Bi4$K5501N-VGH8SVQ6-<~i z*Qv8BH0B<#jX}HBFHvea4pL!0!b9ug(YO&+A9_6b&uU+~%N4sak?15CylC$H`B*kY zGZCQ0SHK-hCfbV+dRQN(om}|;{z3&V4Hr*y5p_{gjp_2*J^LEvD8uM22xHaFo3|Nd zM(O4brHH;rB28+>FE&>mj1h8HzUDMwY+`9~i*M;g{o2~%^OT;v8ixsW!Bp3=>5+=1 zk#c_*xm`}JMC0r=SgK#nt(4n_wy7RZK99EEcr{>%*Y}5?Us_&Y)w1tzUd_W1ZA?IW z@b`WWF|AYE4lI|@Dk4*tq`iO1a6CCL!cmLPt_o);i#< zFL&-vLNQ`J6hg=;^B;<*FMf_ zMn~yR((#7iS!~q#UGJ4@KSq>Fq^Vh{#v%qrchp>P0NovayN!Li2@DE6*pF^gUOai? zq}BIBSfWFj7d6G+;|K!sNs?3YoQlt(G@sLEqE056l#~=V)VRf`#{KkJ;J3Smo~wMc zA2b$RmyZ3^kexJ;{mwB6zzYY0f<<0)WfvU{ z$4lJYkT;s^(8_Z@KnLykapN$2*s>-5e%t{QjJ?;axwY~hm}yb2*}(JKf>HTl0cJt}Q?S-N;}L$)yQ-B(8IF=hfpP`3w=1q3%_(#;Vh zy@E5m@2t-g$ly9&L60Re*io!#xO;%J=nzVZd@FgIzi)$Lh%RHRUgB@JE7dP3@ zvl}GIe61&Rtx={Tt}3;fLA-&xaiI_?9^K>H62gr&??~oWz)mZABkCCGFxRse&z9oEY5ymhRU^Tx|!CCM0Dl!Bq_FMAaIgeTUe5Tr6EEo}zU3{s2I9s-(Rd~)1OKxmMEmbbXS zq@*>4GOm}Ur4*w<{{Ca(^tn;X&CU0Dc`Z60(?fkHK8SI*3PZpno(Ma@Ctp%#$dI~}SK~D`UlIRV zvrtAdTXYryG*Pf%Z9!c(;qmCQQc)03t5TIj*sc? zxGKEnuTisFWI&X^){<5sK!?6MKwy_#7kVdTO-2VZPIzJ=12)_*L=? z*ako%`W+rwRq>tM7y&Ty#eKgrU4gV1lBQzW9=Bq)Sde0YB~e7mL~rLx2yAn6rhB5|nlP?14tB))%bEwy|w(`P+R*9#NS* zPI99ClIKst{S;e1uV1$geCrE!03XX(xk{m#y7^Zs$-0(ovUB-PZ!?&`x+U>=uFyKt zT*heyAlxuM6)KFbnJX-P=7Kj~qC?R}LKvFN@iwyJi)+R-&%4+Zu;|q4ODA_v zn{KvOJZa(Y=_3bp{cX_HCtV~D&9v|KzO_wzVsLZsUwx05HSe}8+wtg(^Wz5HO6&OW zv@d#%3cCuH?hD%Y-j^Omdt)bE;OSy0gYLbDe#JgS#VoXgJUeSf#{{Dz0sTN=D57oy zFJosSVg&SnG)>$GSSiWL$>P#!Jqyrgs@18aE9gsMU@y}}R?|42!@(V*n z#*C>Zc}Aeg`KTy@w%9ZETzGg}y7OE`PQoVcVs!0ZO1_7#klefT;1~8w8op$H{b2E(4y&7@oOmmNDxVBJ8Pr#~F`c zhENi}Zu!=&^{gho81Dgio)$|f@*p=?gKjTGP-vQqdJ9+Ke zN7Uk^e&lQ>W5hT~z=Wj#RQ{LN0(#8g5Qza?;Uv2vmDB5TH6O}sNgC1kWvOR(K~yBP zD4_SEi5ff-!wJ1{3N z8j276=@TcwPo)-e?dImE@7(!G=|uyQFyE6zH{n${NhODT(I5Tg%JEAcsid^kJ+`8} zoXI9rw6#?%kdJt{%L{F;W_H1M9>1Nv=!3?UjU&KR-?ldgw?BCFs3P=!P|Bnebe@w$ zNK4bjP+PDz_`!-3U!8e0XjrLKc%>cpqwo3|GWquog45f(51eZjzsGa(k`qMRzM$i5 z^O`kEo%^F&7jwv?HOVd2Xy|=>ef8%XTO&!@Y>(Y?X1tS_+Wj6_?O>S-QPzho|d55%Qj8Cj9`ZcB=2JTMK zS5Xnp^iTU+q*maN;^)^l(3<;C6cB~opMn}nKe*=o`%6rbohM(|CE%Juc{tgDLRftCMF0!o_+J5 zvT)g^O`8@h=-1d9o4=y0)PWihY7vhQ|BXc~^WK9s?-mrCv>r?g4pt{)E{xfTJp~6S z_+=8G!7h7~_X`6bcj1_U_uyN|2yWUaEf@1=BLD|8G8yXq}UoMt7i6r>?4+Y;%*47RHFVq!Y)`ZC8 zX4^dDLkEf#=fz^QXTNLdfbf*nax?oMQbDCl*-sJ2hEt+F>>cj~UFD=sB*jNs_>|3be zYtWQ&RK+p&($4PqfSp--fpW|!wTWuF`hJx8i$A@Qc3re|m^|>!LDe@u(atkH)z6j7 z89nd-+Z?v_(jO;nK-@NN6udDiVzPVFayoL#$;ap8Zr!3OuQ)SvE$IU!MaQ~)iHApg zyo}`JDN{IuaJ1n|{}H4U+wf+$*3YaXyXEWX4I(R(2l(OAW-ok@Ob;B08>)4lmoR+K zCMy2=Z?al;XT%~HqH2rLiKo|--h8WhYd{wTjL_@X=F9i)$tDX(>wf*_&Bxn3E(BW_TpvGak{zOy zO`H1n^rWd3{JhgD2T<=l(6hXr%LJ#|m9+ffLca?!D)0Jiv*p>BP>j&&|ashp56s7QCXb2S#hm36=`iTR;S&G|Sm- z9;T`*R|DC?eS1Im8kM~;3v1GXS0Sk(wmuo96h1>~Mk_4j&+SXEcA!ITjH^(BYw%CT zo&yT+3uZWIn9xdn)i(LPl$kULMPDU3k9S<~?*5COQ_9b(HhZRkUKGMqQ(s>+)VW-- zbG)6F%sOO1WNoPF=%M8WR>JmxR|E(lo zDyF}TCM<;5rAK!9WMSz;@TQO=Kt#`MJtmlz(OMRCVSx&@?Q~>ygABia{i^F&eI~Uj zKGo>c>$r%oi8Lu;(zT;5%7lh5rlvGz{1QIDj{N_k!)n-rzWPlis5u#N^y7BxL$X}d zy1Uz&*COel?IQf8JP3l7kAI{@TJ8h(;M;6%6&77S-%Wp66}GMl`F&Iic6ET8@X94DCKXZ@xkYihj!-wMRB=5s9#v{ zSY*&SxrRfH^D1yN-LSdQH!PO##l3)FPQr)o`D-{Q=J8%_JM*k7LoQzK=kM#=Px@bB z|Iq@>hp?u0q{&7Y%CvsoTH*X_x@mv0n>HpwbZn3w6ul|rTB)3vGoD>m2jeHq9wCwu zc*vbtgGhM>4;jK?KijAj4m|*+CG*|3n|Kb}Iq@W9A(I7Sw&ndcnbHP(+Q3Uvs%WeO zj~?BI9$NH+ZoOtVeG`{ZSBW$_0__T8;L_)a{J9yi7cb5{`L6uM%a?@(1?+ri&bf`o zM-^^cJlooRk;RI&uRXDNRqVRTULG7(VQIZXe_26a9D3_`7;qllO!rUI)UNqq$8_V@kP}oxsvcZcd(dzUR->( zMYVpt;BpVcUF7S_;;SZHU_tyf#khaC0XSufbXr-PfBg=17gPCWpB?JLBIwel2FduP zeIMd&IX_1L4k{EV9wdg92Q-ogPgvJakWfsRIFYlj_mFXl8X7nWSs5Cx1z!Ng!n3Ap z{_)F~D?R@8D?njdTH3{*j(H)|3ALDd1zjJLRVBOQiy(Almx644$5$CT(-9WL$Gr6b#PiOel;u6g1T$o+_^_ohtb^8l&u=k z)Y4)wcBA>u0+g1;E}y~xXb%mW@|`YU0?tSgXFFqOsniN7!jW4(dltP-*<#mf_At~R zq6#k2vzPD)0UX}qhy`rM2Hy5#gVu8rIh-V&zr^ORmfp^2NGc0Hgb7lJfDv*{i9lvT z9$C&Av<~JU>-M?b%zc<@(8_lsCIJYXWW#KLIPWS)&pH|38q-jb>&Tw0nFnpZk9B*Io zK)w9+fB*a4w|lp5)YG5yO4+XQp1<38zEjKO`Ty|AX`8e=ca~CVd)@R=uS6ZqI2{*N zGP2H4_GG4loWi{MotN49pY20d1=u<(T083&A2|E>k9TPu7NzTDm@bn42gy^8`HzI3 zvbB@=3YNG3ebt-xiE=9)n_Yur|9@W^JpydamQ7bnJO5Ve&EM2dmnIE4zszxB3G01= zO5oqG55J`Klk`(m@$FCtXq+cu5}Y{K=MqQB_g&-~7Iw>t=Gfry$eyq}YVocix~~m8 zcrSS`TOV&@9d&pskF z8PJYH)*|x9$VnT2^&jh-d&R`Xfjt?Yo;2^>ZGc`-U7<_!@Q5a9;XAb@n|^OpTdnUO z-SRm~EzIosdGj-2<_BmMLWSn~tn+K1LBS3|Ej4VI`XL3#-mE824j+)95G9jqo0;K{ zeCj)Wi;cRzYW;o}0{s|Y=2l>|9>8$L41WqM&*>v1xfK^P8@~8Ml)`(E)@92H2@U!I z*!$4hV^C4(uBI9p3By{13Fh#Z&2DY{2|$@R^kSvaaws6ARs5GNuWyBc2@35+h~nQD zpPfc-jIE4`!)hpLe8XzdqS6e}WHnipZ|QM4W0lW{Qpr)~`O~jnsHiOJSU^cJ*pT5e z{~WaVR!mGkyd3{nvg8GLU(lH|WM36EHCBrkmz9@Kz`dvXjikaXdQHJsz5~ix^d;>A z=hMR4q_!5cLr?{uhmqmX=`cpr4Hvv1Aa%gXCSVL{cZ1TE^Z@A$Wy9JvYqIBkzSCF? zz-2LYs>jiz&*9C@0>B@spkgB<1)7<+_fb(+&b)Uogh1c2vAi^^r~zC69R&4tdPspzwFVjfzQc_%all{{)0VAM`qIh(Hr?GP7u2SIBr^j5g2pZDF|Jk=thbLpg%nX;ASgPk5AZ|_F&g0WHz||965Woy1YDwrm@Gpz1NWx zqD(+0^5J8HaAwq|Vi}koonG&qc~nW+(NFb4lI_N)H}x)b9xA$FOwEz=Lsdgd#PJg+ zW{b)3VM`Fxj#5+mT3h=H*&3)Wo%@JFe6nE9SPeqo66hn%Dw38dyLX{3K;4$Y6(Cf- zj{HW9$c&Ema5jFgUgkH~^p>QiBn1>Aj0Q8}KYS>8{F6pXc2p%vH2a3Fo{&H?F<3^1 z;t-+20!TypJGfJX2nLKU#^~x}B|s3KlMGU<*4RdW9F;XlA???+kq8<(B%>6uf z&f|bW4w$(y5^kOwkCV!(Aa4l;Aj~PV63h_V@tj$3zyS=%8?*f^)){DRe%n9+`ns?X zdV}zL0zn}#2`3m*jO;!iabjZ1otCt_ySwMK)uJDq4Fvyq$DggOB9RE0p!(~Tz`h)& z;CzU7ztCX?B~}p-bG5%+m5vkPP75i4(w$&qyF`a|RaJO>y7EIsP)- z@>7RlLet|ZH7czZSFc>b_nkU=`;I-rs?Y!j7-2Km=B!PyUbuDlmV@GU>SX9^QGH`$<+JI2 z!=}8aZus!wN@!?3<_suErJf3AFCcgDe4q$4$40hS1xh5m;C-h;9|&Wd3fDL~>m>eRseOi- zLPrZNX$6h|2=TcdHvrZE27rx3J^6|Y7s3@wG`{4JXm(2m0-|#V>wF42o-K_AfIs=e z6&1y(hcHPcNC=tJmu2rVXPxW@x(Ii&sNO}$BidZZdD6#8=w%EG5i5yWC3H+XQ=$?x zqG4u6293pdfuFH00C^}*-gSH1f~7Cvq69xTDWL-vKgk(l(rr+}V;k2nV^Qy2Lo?4y zyaZGliPnJjTG zcMoLtON(~<-Y6PmtYm#P=%VU7-`q(>A^X~IX(Q8H#;PIi0W9MMw&Lq{VehoX;;KsF zEz3&1Bhj}nL`f~9Fjv>CvJKu=@jGY?QJv)__=<}@(iesrz1#)azW)@4Q{tXji}`D| z+-EYk33ji5Or5==&qEJzhV65uq05q3L*-tfu}q~u3PoT6&c%NI)KPp2iVuRw+k~-x znMbFD+Fy%aEDFV+m@^Ca4oY6|&`7n7oYr5y2o9WB7Qw?w`=blPfo}(o1BQto=KQMA zm`35@8zT{Q3^@g=F}^2VRD1w>hw`oaYy*MyDd_EUx%aAiV`LtphB|UvS$^`?)tom( z0o%TSqh}be^&>hlvGB!t_?my9NG2U(4=YMNAT3MK`>;9? z&>)7OC~$`9o6|FeUM#w`jm1JIgHv57=FXqv*?<6ecS!@mE%G}>gBW|EilXBYYc|QJ z$cnQn8xm5Lvb_%-y5rv7MrKFv=~(O3t_5-ZcW(mdC%Tb@fug2zIn46hR#!H)| zS8m`zA*=PU6D(ZejVy|emQ`0jj{Z!D#5u-t!2(SvbyD5$RnONl8-zjt+7iN^r%jp_ zj8DC{q(b~n)JGUikp!;Ah7nawc=aAq*cg=MJk5Oa#yk_NM-Lv12<7yrg$3m$0t6Qz zp`Zp$WL8nTf4ZPeq+5<#0{r0Q?2OYpc+^&zXtY=~kmS5v{Q)>^e@7{PdwYNC8{}q> zFYX?&NPFr33qb+BfrJ|Kyx`%(gVuw`ELR_RfMvfPU~_b2JzO|=#fMM0n^jzNnC zh9dnGy7rykw?R0CBrh?vEt2Cyc5oKXX+ndbC-& zC^dXk7`aX_5Y18)Af%xSmoELH`>vW%CDVTd`lZSXJ0)pJ|6-Y}1h?jKlD&B}8Yd+^ z7Lh7ZaJ>b|GKk7WBB-%EX7;Vw8Qai^_m`5ABBm&RKS^{aAH96>;!mGlg1EIc0YqSh z!HLY;B~Iy@+4-^k=6HJ-j%?pGJND)qJ@45sZn~9|EEMJC#p01hNNjJ;b@%?jb)x9T zEHeSZ2MsiOuJ{1qB;-^Py!{^Mm0lo&)!Ot*`0CtA*G>{LDk_RiLq5&|k@8v1y5zPX zDtF>{F6L>*Zx?K;X{LhiW>=8$pExmCL^(c%!k5TR?9p#)S|t+NBpGm#-2DEukU+P$ z)wJ__iKjIAM&OjMd9XxYVFE;`a=jL<2tc{g;Z9n@zrG!4vi6|2(*=u#y+j{ZRz>ag zzB1|ALL!Xnn%l1Zo|c`>@D~ts9QSC=CYg|tkrCW2&FJO;ktMDm^`N$m55R;4xgQsBG6b?ozxzE`}UN$X_>4z zKpAf&1owdYm<1=KBQ9G_q&q;RCPz{*frucwT74C_%|e1gUX-jOe9iW*YB|pq_y2zU zy+Wf|>)XVEho-pq9cd7?Ec!@umad%ftz|)C5v9Q(HPdrfuTEx?IS4*DGPsEVJW#w9 zL|XqU3DX4d>2TS8;rnWszF=4MT2PP`#XJ!!G;8E3@qrOZ_1OTz@qv~*lBuhi7$Eqd zVMAW^e4jUk%muyKx0h;L3zyZ!X*pnoyBT+v(z7M!zOc%gTAJ=0`>o-aLwTnAi`Wl; ze7&G8TqPljrGU`&-3rKnIp?Fer7mTMv{*T;duJGn-9LZO*YW3dhY?06#|;ZIT9I`& z58jQFjZ{zB_YDh#9yXw+z^Lt@B(RuYjJh3kZDitDNT5347wjDC_i3Kjbmr2WhN z+{*iWPw6|#|HAF=`BOv1vV!N26%{KGGK~3|)2DB5d8;3;TSu@aNDlTwrB%`My64`# zVzKyGV4(Cu5GhXI#g@qs<3W5hH_b;}O2jFvDH_jj6)K8X5xBrv6ku2aHE!$EvnSXiu z=xpN-n_uBdyOemYG7GTw8DZlx&%Dh&WCiT)!dKzv&M^Wy&^0{v%7;UaUY~C*la-i% zrDjZo^C|t?wL06@xh||f*utkGIWsCJqZB&Rr>OiB{k5=F-&8CpbYQ7V6kr2^6|mHWpTjLJ8CIC^QPKELBfyR`Kob_94^H>F2QJvjP3OF=Zow`j+V zY#Pu%ymO4aCIwsNWykCq#dkZ2b2^>(Vv}BRMyz$p`PJ0IWP^}zWZ?R-a43fUDU$-Zek$r<0 z@_yFdw$5s*3!^)4LsI#ygM%Gv`l3H^FHW1-31m**QGDG*gLAA>uLJ(RoARsQG1X28 zd8)Y8z}|He_}?r;Lk9h%r>5EnC}qw2htaSqKz0+yj(wN<2ndREfmxQJK0XgHo>>;Q zJmZ^^|7?gI4U71G#36?9^zX@`N<1ckR*~|dg$kyPD#pq!}V9*tZK21=c zi`d&MR>(;bhjCJ5;GLPGl;lEyiUlg=g;|GEhY3dk*)Co+*!mP;&-2*iQS@iPC30FI zz-P`j9kQ$1chs5}K1n0OrE9R??=SN5f^+-?;Gj!MGcBIhPU%vAE$G-UDj}E{H}>Ul zExN}^h?nJusw#3(4p}MYP(0(kS{lpm*`z zfZnL>!RBZoAe!$jdcr#2U}v|RgUe?fBmtxklSPc?&7(4BvV3VnGe3FscGwOF2fB&o z6TI+QU{MJ!w86nvqz8qCj1$X$WXlsW;SSvn#rrG4k)9W!+nk!Hw$|QL`Zl>1%1kUW z3`O+m3`0*RP>q{5AwnW&IP3DXt(Y(PO|M%Q$;OC{B`3au z~x|tR#2j^DSUlImP zAq%}sEvYLPaovX~#5ATTwbO?WYeLA`-9K`Z)PBq#DQLtQ5oMoyai*^DExNSXNTfxI z#cIKk4?0YTzIGWj|F|FqBv>W<6&>;#=mc-GGy1z+(27Aj7TqIKRSTAM9MDBV$2YAH z@zj3fTZRLK{3@O!p0=cDD%f$^*#qKGfX;+zzx{Ggcsyryo3XG#yTQYVgO^|aBD5i0 zo80D&MFfq%JUaLZ#Mg*W2FyR`O_@#6!PQr>4Yxl(eTD$TyrfgEatQWXJG-@V)8rj< zB>ZM}ZpULU+xFSnDKMrliSJ3-9A#<&OO&vO(r|%F5$36z!tFL~`b?Hc1W#hAW9Hh= z{~r~;4|WrNnP~Z?4rHK>J@6WZEg1+q6FBp8VeIvWWBBeOxoJ3?bH1Hw@5)_nFD*6wuzb?dZ#RFc-=ZO!$zqM^)3uo`!Mts@A6 z{O+a^kT0%7{#%6Dto^2pFvppmFUDeB3JIwTt?Y<&wFf&(k(?{F&U>RfoF8lRIU#^3 zTS)d-d=;O?&`$7-MOVd8ZB}@R{Fg?z)i%y*jUDe$qEYwMP@efV%=pBdscL3!MS}Lu z&nG-RGdRS-yIcPKQBM|IbUA69zO%Sf!Cf-B0Dgv|zoHKv-ggc^(CrJo!ArxX(}2?b z7cWAn8PLSCKiyV$Y_5(!4ySF6S`|+yde?fZV$@X?UZKB62LRxe;yYOl06={C3tx{4|8l{*`WpuT z)PSO_l$LMyG03OcO2Lb%Rp-RR;}+E9QDs)m7U)pC` zSzr?Fs&n(RZ`DjJ)oW{iNX$1$*juGr>xEDLGq%>z(LAN3_!2+-4-kdZ86Bo^`(nIn zqkZeLxI2%&J&xFCI!Yr5mTU8}E8M+xilC*2|F&M^%l~J zm*Ls+>j5r-(b=Se>BJWaS^tOvs zkH~_tYMvZ7xurU$-{~;CA5D9BM-#HHnyMpDygQqZZ#W_o4cbiFVg;Ou&f`3)9@emF z-rTm>88KE@tYjfwhUYI5tTlbd5>jf=_knyiREd41RD%^%N3>GYBPWG0zu9gkN}%Zt zyJDPIsZ=P^X5Mka-yVHDedoPcTi$|z7HDept)<-Tfi(lAJz~!3*!{=d_@WLuOW}QtTKICCPM!I}T@nM9O*Q9Bir_RK1gLoX zBe6n7d`=0HK}5GIEv8RIA&36xdMZT?dR4p)24E2}{fLQ&>byvClB&#=&x~W?r9J_L zp$6q0oUl{R^<6^Lpuda=g$|=eYpl%^#@6ko>FL(xN!Mlj-*Y@)4=cT$AE2_=^N1@B zRrw=AFHK?pwr!a)ZKjKjSuZXhzb(fh&VEK*HY&|Lh>?iJq1Em2Pj$|M+?Ko5+`>s} zxDZA*jb&r1AG%hA~d!y)lmW zVsS+y*t>SH&ZpQtixT#eYfyWXi9}|KHzzub=KYj}K{XMx3bi7h zmObFS+^90}gbL|=mSQD;cg_(h1iYIe_~vMHaiY_6eg6Hc!K)1?UT#Lu9MJkBdxkLR z&Fb@wcir;GwWfk!@cjxH;|hf=1cBJroar977JL%Ao`^_iCs1krii-<#)dTpFV=IQ6t>)V|o~ zr83|+ps2TwXam^=Pn}A?i(j|8TqpYYO%5(+th#~G*1L)9#v(JkUS!RaC_+QMTE6z- z9RZxZ|240jcDLi&WF!#ff2>1#X`e-D%qX>rC0xVb-<6d8MP&8Rwkhj}%fN9C&R!zy zsT$lWSan-%sl%S)qig`(AIC%5!a*2k9t^=)Yi-WfTXnjW5vL1hl=cgn%OUN$Pczmy z_1u_t+k>mC0Bx-x?dp;`wAMxa)K9$jYEG@@%nz*?tPI!xIhUL$pxJ5~`S>Agb?^7~ zTcm9X%i(38D;f7)r?Xj`;PqV_^WbZpZ`D(%VW`@%A5%IqM<|+vV-J#lf1$QuZDiD| z6Ks;_+euv>2W<$K&R9MlORb~)SupF1_56UE<2k{glH)r5ZuOpr4|B9Zd z;6@~V8i!$HF!UisP5iz%MfEiW#ZI;oh1pE0%F?#P+qX9K*L041vyArhjt86m&m86>pgV|+e*~RGz!9CV>}ydpSO9 z>+5D!bAQrJgIiXe%j{Y`_Qpj{o40-qP?C|73I*Ps?~Y}8jjGB1TY3u-EF62HUMZ!q z3;CX}-|ywY#(g?Gpbyt~o3UKuqoeJY!)#5f-ph?n%MXu_dBG0{_tyOX?~wlaE#%1# zx>-y~Ng1H8rvcRuZKoh>ySb%i0kc&codoBv*+ecj*cbtEq@A1}0< zG5`1P-`h?Y)M>dfE-p^);QyQL%hQ|DkvP}OCvO9uE(WLqj(HZyTJRW^nj<>d}M~RgsWcbamTPT9(=hY_tmH zDD7=ip!{F60h5bgw>iycnbps^M?$B=3GJ|z?YVT*JW<{Ul=M7EZeGjopSlTgSfP^I z5%?mI+{e#Tn9^WG6}0)_W9)Sxx7T_7gMTK=bdgVt>G-{;IP9GkqQ8>M5O^MZhENXM|)!#Wky#*Mx$#Kz}7W{aNI z9BZ;N^-FmO^wWZ=-|!*B&}he40(3tt{iX>n^c6+GX$f&ot8+7PDOUT#N)NUK$RQl4 zby;oEH3~dzoeGPz#_D|D?70=cIV3@8yeYgj2^t<;H**+>@ab@SS{~Qq=~@eXns<>1 zqSkjiWJu3x`*;tip4=a#v0$YjwbPURgzDOy=ZGD}n_li>Oi&sG9HJ>PnKVO|6OK2f z#3PEM)clvf5reF>si?q^%eu$;j)v>~^wU+W0TZ_oxu=7LwCrZ@@|sQ?`vLr0@w?3q z(syr7ZewDxf{xg*&lrIhCGs1Y^SqTjphtV>aQ1Cr9<=V|`(5?9O1HngdjP6R{ z;sq264RQn*nZnZZju*WCgjtLSFMledYI3)uQl|WS-)rn6T9=Ms2L8^+)wX@Sm5$9V zE_T!JaT^S~F#Z%P6&fEB_}il9ZXanT;f!3|ZdD!Dg|iG>0o{uJa!CHOgWT_zk(0aQ z(sGyFv$|tsWH85OkzN_aF7NQBi*6RH90?io>?Hl z7W5pR6ELZD&aded=+>r!ei{MpjzR?czn;8Ca6O_M~q>vd%Lx( zv~OUDkD#*gC;aSz+)Pn%?r{WgPG^wW+&%vhS;j3qWG9O7a7beH$JKcqb955#6H*v>Wx?E;@wpx$JbJa0;s6n9Fnk_B))=-)aJ0Y3~F zYeEN%-Fv(i+P%&MD3_IrY)pN|6d!}HszX-%Nj?jh1Vh_??!eq1`A`JM$b&5)Jz1xI zCuVK@?!(#w#$HpWA*}&Nm?0-ghOmPq%Pp_G=7(?$rqlZy31`v)A|)Zipeg?JnxK=P zE-M{YKWtXz1dJpixrpm#+ISZqc4|8P?-kbEE>8_Ry&o?GOhYc02E0!&&q=>;x-JSW zbU-r}&YliWmYD){a=cFB*cRCi=Z52|^6vWus6Zz^qDjx%r^+Y^7Dgif*rc4?#B@bW)XYTp-y( zBi!xAU%T;zjFU8Q0|oX3GERXWakV^uuVRAj+}PNV9-MGh+8prMIozHWnMrJR z$xBESc>i2|?!NNsM~DMm_0)7AHeY4m2HiEMKOfxeX}fk840PU?45Z-K+~1YpgQ4!< z5<|~@woiPFf`Y5>nP$fkpWRH}Ox!K)#kF3)8Vx9zN1MVHtASF?u{Yh^&aH^*IDk;& z*oa6Z3ib*vsOIUmKW)L;UiM%A0bLmuX(G(5}{g$l4_6A;uV={O<0CDGw|b z_y>*dE61|$<)uKbzvofG+o{noT}nUevr0{Ycy3@FrO9Q<%QY(0`Xz?AdL18+m9H4* zEdd#v=fO&C)aa*!w>!Wnp^&@37miE>AbM)bwF;M zEGl9kul?p6f-UiDYtnNmSGYOgHj57tkeormQf3$0E#6AImJ#+cJL^7>UKElnGYf=2 zH|FZ7mp}r7_pevCWayOiYgeR&#l4Z=W(WTng6v}&Kl}}mV5D8?%?R_=Up7irrh8&%jcxpPGTLxGF{FsFSmI z&DkBc?t$UR$jE?Me#q{5MzW}_yW`heY%Jh-pyOLvcE}pbk^Ezr$3E#{=1K%=q9Rg? z3*{gp(ecrl+Q7gzyDFc>7N1q4##(MB%|4AdA0OSO?XS>@NkSWh2U>AlAW+6P0hgk&WRaj1|xWh=7X{Tu>W*aH*ucQTSuc`k2`HxxB&79hl2p|P>gQS zRV6+?0K98jfs_O^60q|kU4J7SzE(=4LT$oUp%SNO!P$${YwozhzM1)3z;oL-dh_T4 zI=b?h0G;*_t2qapUJT?edY9W?U``%jf1N-8-iQgY1VPQO%%omyt-y_6@J$B07~~-# zhY{8vnE;wcab-4&Fo2>0k}gkoM@?e)rC?#}Ym1CLb&&-}nCpZ8RsjpaS3|WtX)}#c}Zzg_=ud zexduw@|aZXNkL7>H7-M{8sU38xod4j_c8shgw7x!KMj#vj3*{S28!yu!c7IfKSmJA z3-Da*SNa*S*KilNocou`8wq9qD@wl&uISEuDIX8d5ZHHP-bLJ4Y`;uZLPxTLD)tVo z!K3peK5R}C@r+h`PjXOZeI)tKfdO3vrg@Doi?2hR6f^t~#apj$sC@CTB*Qt-a0 zjs*yH>P4Pd1KQWYHOpKSKe$v1BChM_?-HV;_fZKYe$BhtoBI(%9i2 z3W=y`Z?~CSBz7iorfG~4F!9{I6ytIc9}K&`Zm{lOBhO-Vd{rHCq(5*&@E)!{$hE!=<+4Rbf3C%v{}{iE@iP9fX}?W0)(QCc_4;?d2@z*zI7beVo#Qz9 z3}i!}hs>%6lG<*sz3kS*^?8m*w7ZRn&nOENot4CJj|;gT{SVof+dC_upUx}O0T!Raq57L=N)eVwR;CBxdv|c*HjW@rP!S}fA}UvGf3I_|Qd0r>;n5!t`Ru+Wg^BS-++*N2cTM8?61y{&*w}aH zk;`ByVwQ3lGHh|%(b#lunTd>Ztbl%jZ@<@iV#*ifD@tIw*_PJ|tFTJ%c(mA~53~lS zfbZv10%WXaq4Do`sXjy1MNp0ib8TK%a7FHd3h!BE!I1VFAFVnQng=Pou`vs|qfZey zFW7-5#zhXxz3Ene_zuO}ln_k#6yJn#?m@lcdA%^>zx9%{7SgQ`h~NA|p$c^ESj-5i z^-2%fe&71YhJ74vQPaG`8oZEx3Kk+p!Li&KKXF6JNgvs*52B@wrypIo4KAi_+>=%? z;-aM`VvRQkzs9N-_P$Q0LOf5}P@X@Y&mXd7+*$#e0`iQqjg zX-UO5Hmhn#PRg2O?DdUaTS?Y{y4Vgm*C-d&|5UwPSNoy2YZSNt|2zD@j^_W`Xe$r*ZpL%D@gy4} zU;f|hWj)cVS!0|Zcbf!U)_%Z5x2|Tu_u~#@hygdppo1W)=Dp8gDhdiH2nLl1xuTN@ zxLLIE?w<^Sg-C?VY3t@*rlnk`5Ss=bDBP~yD#3P%trc5n8JWtQK_^)g;*Ulyrr;=i zwdUv5GlO5|em2FsQ5*kB>#%$qu6Zk7gev4|=nH{>v!I)$rQUWc+9>o&kLro(-+=DMQtMR6vuy8m~!(HdIXfRX5nG&-RoolPHmqK0B(UXi`s-^+XWHu3xj ze!6DL^}Rf>$z5%6SfEP~eJH^0fc2BD87Ce05u5&9SnxT6-kLtfSHZ2XJ)WMOoweO< zV({-cthvqAO^CscV5btZ+h1bi3xX$%a72sneb z9>FFJ?mKsPcaIY1Ndr_twdMy!bUo3{2j9lh;Mdaxd3i5=VAq|QUV$5*h^tv0q9m@_ z@<0!jY{8yqK@Rgjf^Qc0B%TVepLSiIUIU_6=LsPYFl^w3LbP)?-#o6Hc(^$M-=Cf| zUEg8{KJax4i}U<)@B5PHymWPu5OlRC9;_tyzj0Y#K4`=FZYK>~ojLsMIDA=yhaQRN z6{e79{Lb^CkXJy+GjWJj32Y2}*T9q)_#h^*dR|BMAjuJxOyBaNwXM))Fd=%EPX`2a z1cq{cBv`lufgja6FDpzRCQ(A7qQxPLrm&Fb$2~64RkEQA=oKKi=L3cmLB>UHa|2Ev zUmn^`QlK)e>u=m4He38{_0p}{QyciMIuCk|B5|37?Vt%V+;o9{2G<_?ZoN9=EWgBf zS@*b_kdnFgxq*iVYEMs{_p@9u^B2x5FYt6i9CBd#d^aGD4un8LpsT&T^nmE~)l8d7 zz)4#Zn2~pUwBCW=>^~m{SD6bx>)bRj(BB7JvTJpEyvY&q3EGc1BX$7?%*4IA^xTSD z00)4f78Vv;TU)nlKCn1}HM5S@cE6FdYQuC6DiG`$h01rm;QDA@>^X&rv+X$fMf*QG zIv!V)<&lz;x8DZ|tOnhR0q0v(67Gv7>9efRh2U#G*tHAnVa{pU`8g9C+D#Sg?C;-i zXnyj3)m5hI8_=b1lPe|L=F|DhVqjd?boD0e7R-*B8vJ-l@i2t6m)8`$%5$_(6L2+^Cwg-b&sSUvR_lK-COXgmKwf;~W#+{5!(Qk4EwQO*hoQOg_o5N`UhIvrcQaRA-4SA9 zVi6G$oA-m!%C+`$m0Zx8kh?#`ussf{$9oJe!L!b%J@A4E)xQiYt#u4m^$45pPsgU^ z$J;aFLf8viyZRv)>eQB%u4#=%aY&@w5`9-_;ZfW#GO9 z^cmJ@-gnv5zQfT3eg^5jbqQYXBlhlp;k21dymkn=U{^b2F23navaW}E>Q;!4tCio_ zY^<%@otnK*4#ChI@Wb3h@PkkA?JaCy?fI(a`Eo+IO8Q@=iTqSaBgr?zw}p?t88S1& zceFs^F|A0}dEOTS0OKuQu4P^4=hGZnO`iSp0c#%6q6G2hLAr!h&#mkEs;vZx(@{QE z*a!?#!^Bhum<0v~z5oy4`l1XVEOG=A2ISrOW$%i|qe}6$* z_Hxx`2!I!dc?h}{bDht$iG1&Qq*pb3G*97i$l`MUMEp#7>2%jm=5oB;L$~q} zmQ5(D>F)iDrI2C}pYx;Db2fBGU zZ8G&6<6kfi8S@f&aZ_}F>r@}{@k+}P#aZ)r9%SGjt$MLEUwilftTelA;j4-M@|(fP*#WotfRh=NMgsulV!KwG zi8bvi9rS{B{TG0-H8(fEzuXyfPGKk%3%G5xnf}J6tCtF5Fz`Cg9}c)ZB_n^m0_o4q zTDuMVOxf;}-^ryi6ZH7P3SeTsdd08T@GsyLk>7#?ZXMNiTWqN*kQHFy`72!|=kWM3NE`cX}mCjQHQ+o<$V)TZ96^nx=&8&!dk-xH-M_GsJ23w_H3&4TXfXn^aR?1BQY@AgFRZvvL;2g=dV(Vvty&x6&}7JW5*p@?=Eotd z)!(VDKDNU)s#a@sc_Z1}A$MYDMLUgwc^IOl!4z@lR4s;sqoVa%b{Ly*v_#=rVsLuI zpW1!&i!?vS(B5}=1X)>nMN(~TgJ{W3!WcO$T+&)ZTr?6u1`$B+0!VEzlRo@Ojc zq|wpT-0aP8*4+CqWO_j4G)_Ir==c`d0JTaCDq0xHB_a@gRFM^0WF-FXnYiy(>i4lP zx;n(xc9o#m$l!hmrE|oCqs2q>TbpK?^$@{FSZ{$B zqIrLj8;w(P7auD93I8(3eaYcEV))IgZM^~AFG<0=Im9}R5-Zd{>t}h zdylhjq@$pV8WVO%rOK*b>&d5u0*NGUn~E+DeU*ezXd)gC%I2i1Chdl?T!r>~236vL z=)qKm$y*9pr2HdWSFtn=RWtZ%Ep=|hK?wf`y|M93B4zk-LqI`rB>mJz|hO8jNf3B}XxHTu3lY$sS`m|>35B$0x9QCY^$|vMGxxX5JjUQGqc7~Td zSIx7~<@ja<)$AwTFz*3L%+T~mV#CrPh#!MQXb$bI=@sbGgQnOUM?=JZq~#D%wgkcT z@?mo!oGP2ha2#lM+?ZmMA*(T{M6yR$W}y z#4jeEsfa&qB@2XFDxrAo!Gs!rIPC6P&2tNPCk$5#!o$I#0R0(SbYVaYPlsdQU@`+H zjC;e$hve{JR$?(H4kda5pshsCU!UI(k6?uni-3pMN!rc zGt&vq=1wW+_x>uX?|pSF>O&0;uLOpR0{>`WOZLgn5D8v^#;n|%&s)C4ng^o`vg+4n zrBr1t@=ZEPN%X3%X6(Acy_$-#CGh&z>dc0T!4a9?98}pPZ$l$I_iiFQ{;jVPesgVN zkmnTDZ)h8KQY zR@n|==}umn9)-R{lLX%X{jB>OF|DM0Hfj=HX50`A&H_Md^bddwB`MPqz~WBk;5kan zvu2!kJ{nO8S|IpK|Gmhf9L}D=nhLEFGZ~MDm!1|YoBHI$!XZI_%3f-iMr9_|cS(L5 zHBvUZxIgm26(_WLDWP0jrjL~`m`)BUA7lS7{K*7A*_3G#bI^9WH>7v}uJ^c76m-mz6DjM<)#eGFLc!y&1{lh#nUHe@8WR_; z=-J;)$kgF9WG%NMZbPw-?Q$7PxuqxH>>YtA$vP7vuSG3~=Z4&oZ^I{zq^(jIQW!Mw z3KCCR(AS9OgRHvcwD1@dlRWa?fZBasnWrZP55Nfqkm->m5dq6kOt=^t zAfls#(oC9w@EMtYJO)5(ZrOQ_I((b$gVDXte#vC}H*gs#k)O9`JzL{F92zwRCFyJZ z{!pp+z+iOw>aHvrZXqiFNO8#E74DpJ<}mYEY^s}ky+0sLQH#SN+%2lTilM6djm^={ z8{BM-9HAGyb~A)x3nP77xJS3)t`uA8783?GdiqL_RQh11boV<|Npk!#Jdr8kvE{Tv z(^z3OvEaMKZwN_CAIpOP!{maO-gx?^Pkq77p5Zc{euoV;SF%sb))>0(>s~1geF|Ed zCHse=K3vk1jisiNRZ6&Q4isQIWSkd%$wn2?9fM=Uj{1G}Lbqt89`3r!!_p^D&ZY-i zx@~hX$2$l|#YaimK{PnUjKB{y_?TMQ%(`&2+_W?>r7;AY&=|hxM4tVVlfGg(%VR}U zlGra~%XwwHPdW=5`6;?YWk-c9*ij)|9i*g;$f1G@Sa69MzGGqd>TKP`T>356LcEg5 zCw445Wh^{G?7SavhIWm7lj{YGx6$E&ZDm(qPgVdD+V2gI!&e+~r0uthHR7qvdTLm% zq2NJ#)9F(JyG)gn^U46tvV0)iWmm^bo<+NN|GnBHI+B7RpY3!!Vq)gm8uw{;QSegT zvVwECU)24ayvu4KI+JBo@8Bt?@GBOQ#8B(2%4v*6b`c*fVbuEL1b{a_8V+Hz3ywsl zMM#U}0S@l~QBra49df7odR?J_5_Zq>DK`ph9*Z|@7dzcHv(Es^oJ|sa{8ilh zi{QeEUCi^EjwFTO%KHb9Iju#3Z=dwI4!caD|(fQ@V@e#C`!`GYW+_CsKf;Cch!kHBfnj4t>NaH z$Wx66=MJR8O8~S?((B~gAh^X33BM7|yTVAQxwroubHzO^4&|a^;xT$+r%5JL!}CP( zIjt>&W6|InNR?7;q;s0TWH3|Y`x?rk((usS883(;vSqKBhT{CF+pMP~Dx9vrBXviL zP6w!k`55pDV5o>)a6)AV7V~+350MaUo8S^v)S8x^;s=+UTI^O5XXHjnX?QNs1_${P zP2d-uS?mv}(0b6jlG@PcPuArTiGSbn41ER&8Ex}?4YaftH8pv>ihQ2Zf_tWM@S53v zYg(gDu+&h?FgyH6T3s78@WKB>9->Hry-<4R_?$ERVF)3?A>|?`l7!nH8WWB?rIpPmyu{xNBcGXx zr7flNRZ#^s;5Tg*NKcB&Qw$j-x~eZk~`z|@QNW&F`E!))8!*~1_B1e+JW zmlvyU_@$TM7p8Kc-X0uZBKxzK&qew-C&P+UpZ~}td2OT0j!|FKGPE(~J#te7a;5h%7Ug~fLaVBmL24Q^BPH{?<7uB3k z8^EBU#k+Lu(<-~Mt;7Uyn-xv|I@D1h4I9!Kp^}rN_|*}!;6%@a;zWATEN|GI%`>1` zoy!CCZgJd=`ExVh|0srQQ4r;kX-ylfOuefLs6wi#;O3G?TK0lRMZpUtSB<1C4@1EF zfZp{BMdt@ODM@5%D84I}=*|g2%b_N`D*ZTovQ_@{hNKeg4?hECN%=Oj`C(&0IpB$_ z${g#mj#u?td>&63qzHjy1?1A6FWo&RM)W+`HyNlZDU>vurBmybKY1Tb+X=1AC* z?{v<7n-ChF^30(LY9kkx+abSexk}C4BbNYnT#(gekUwoR7I|I0MZ~R}ph;r7NfCvQ zP88%`=Vgyo7lz}F3Pa%W`i;z_EQyGTrXpQQ`xPxN+~Q9%fq#JifTI#G;Cl*}!S#ke z#2-X5o5@vW=B%)zV9Gx{;1ZO?8I9 zG081V1+kjM8_13Gkc*Eno%MaaPmU$}E=gq0RGjB6Hd*#Fl!Qm%yuY7-!Nnl4a!Ari zgXUo;E%r=bovLuj{5*DG2Nzc%9+!`J_?`ozIt>aSK==zeO|X85Xxv@=o_1^g~C( zJNXWmEO&ga_b3wm+m;R^%JXT|m1TjW^?6Xp%YoDO1?{$Vh4{>`}(16j{tS zElC&j%k4)+*il%ahrZs!w4Y`rad`Et?}>4xMBDf>qC;`45`%b34KVIIuKe9JqLmX>W<6xx#?6nZmOIEMe0!k*!YVBxKY;x~cV=P4~hesF)D->mgFaCsU{|J1hJH(#S$9t2;})}GJKJs^W)Y~#@(yv{7+6vl0q zhsKDUx3WUu`9`jqeGOmB1KDr35ajP9%0?S+ut`VQT;ug}vW7F>3wPK5C3~W!A%@xT zzH+B6ReqF}?Gm&eDH7C6{T)qBXcSJ(i7J0D0mOf0sP6rGKjj5Kc_ESWv3pFXd;QTl z{e{gk8Zybo0WwfAwph*%;6m$NYF!qGOW5JyGcuh$#-s6drz`>Lrbk*@1$g+M9PQDe ztngT9g06^QsqF_vCUnWw4cvM%HmR9*kdf@bT=)u^rlYq`KKkvCC02`C=K0F$@eYOtJr|nGH*igmk$=bTczNgx*6{q+m`GV)lNoUR!ni%pJzpOWT;xoWu z{}r1m)LvUo7|AbV0s`EivitbYQtWTcKIhuKVD_V!x1rgq35hX16PZ0dfrjW&-N#wf zDXA-QP8NZy!k+^T&fQXKA41hNPrw;k9~KY~x4H?JLDr-mn27f_VKF^0%xePUUs9|{ zrUXg62xoER4`Cm5=K6hmm6samgYUCQTZ8~^OZhRJPz!IBw6r#%V)Mt61GEBQppfY<&no;<+6te+9UD;~vDVLl_pGnaW@T6#}C)9WN&!+qf;qdp)ik%>yc z{38_!l#hzOQo;TZ4$_t>6#SJ!qd*TZ-dyA1@;X9DZ5wo}NncR#Kr6ZrBwA9hBB~ zB0Su^?w3N^o2DTh94H2czzA<4agG_8X_iRf!$_qytYYzUjD3n>IZ5V0MrcFhpc4;a zwO=|`zb2t?97Y@Yiy3+6uw{e3kVq7n1lad?(f5vjjc25|xnwTs=T?WL2}7r#<|1|t zmrYA``*~Du5%w=t$B@JCi0>^)1%`hZTp}twylNshz1LdX8X*Vz#HUPmti*S3 z)uS`Q1uPKJXK8yUpFn^Nxl!=2? zW2-H9rNYPB!#Wz~aT@6E_RF#=^1CRpCY`A3@2Yjr3FrG4y*#3*CT+D8}By#h%L z^U_hbB>(|eNM@5oQslsjO}AR_cl{jWI^xT5r4)_j#0%L0$T8Ojora8bJSE!`jg27# zZ|=kp<9cm{_TSE5>x#MYc^ytt3-B)Aiuhu|I@$FIyQZ-Ub?n1q&f0>Q2kAd|)_z^3 zTvs+ztF_I2yAzujNkuokL7q;%c0rkqND?7@`}R#~z${x6EAdz{SN<$Pfqd;hfq|${ z_owPoN%GCzXie&2^(NC@>$-OwWbMRtdv!V^Bs`>R3sx;?93R$(_VrsFYCx)RKO2gzZ?5Lj$ zzhK!6b;8QVR};c5FZ3%EIXmwuH|~mrBa{+JqR%us50I*&70RMp@2VFBj|n&g&9m-6m9L9X)hz_#13a zBxyIrqWd>6P{(R?Kvm~wg6$CfY-VOByaWYdQ|P3V_z@{8?fdm51ra*F0K6RB%8^HS z2#OjDYkg9qxxtgg>{ycU4=ETuG ztF6t|G8i9{`1FM};#?Hae_TXFQ%+f8&4#wCfLdRxbM7tJtWCiU3oj%mXral={yauUHMyyV zH%|UDj4N;9ON|Z2=olJJR+BH5_m-dUl{&Q$s;7yj%$V_KTetl}1K)%?x<8vt3(u}jZ{srhG#K|Bnd_g=JJA7nW>Fp@ttqcqfgu+CT4;2E6$-q{&2cmqb z27Lk}2bLcy?ca|y`h`cWQhZ0LELFawIw&1!LLWovc%&1hbWy*;(bw9K?N3hYyqD~a z=^4dDG0TovLW&0>vq^XX`teL*2ui9W7f5!KOv_vXpcZiYDdf^68UWx-I@Tc9ysxmp zV{YO`G11D}{j=!;f)82)Oo4=x(+aJ^PRWU_RyVFxGFPAy%gRkw?vrQqVfBYTcv|>n=ifA_oDB$iWK7D z9~+2HF%43_xlMB)pOB%24U%>{jeSvHD(`9Xl=NmjwHcyO&cv5qAks-sOoK^`HGFC4 z4;r4Sp+|3Ifw=Bk^R!@F@w^51Dc+%w>n#vp3#WE^#6aAO zyDT5FAQg6N_SbOSxD9ffn%tgZEeO;$Va21y>eU)K%)m9nw@{??WzEc|tey0X-<#5B zY@czM`D*e1B%Qf?lFd;SS}dT(fhnWLRQVO#0@KjOGPl&MB`NT&r{{|31+GaH-FH*S z6?SDp=)Y#JsZzVU$HsS83+OsY#SMlir-&P}Vb-yaLlx(snDM;xR#KhL9lMCosE*sE zr&;Z+1g$AhBU%&VeN@_7>j_w|h2~)_(bN__LEFCK3++-2VYj+etN*`wc5y4!~`=S_L0CjVE>iq<(&lyZ z9BuTu7TX z3G)7tm!pwWCjCZLGJm4(!~2$Y>)@%7#?|>m;B$9k^>AUxZEfwR*(ml@jFvCB3fPCN z$gv^ooXAR*^=h9_vwXV3DM)pA-O)r<4+1@v@~392LDx`#u(D)$_SYk$E~-YnjFvXe zyeX}n01;VqOeDi1x5}4*h`xl$T`k$kJvcO`P+vq1X03oyArCbYU)(_)sN1v`G7(nPN9p$=zVd$z0C$tK1LiA#lNY82!a-}iL7v_q- z5(Ck0MgTka67P&0k#>RUO0Fhc)G@i3_)KqVWAZK>G`N&V2Gnd41|qQDqp&l+%01?; zO@}%Ey&A^yFvXnoj?&Cq#;@E+xj&5>0&Sa#0m0Apuk6T#P}ZYG$+QM{LgA#lsquzi z0hin#czUm5B&i8yX`uR;?|d|Vq2yM(S6zx$y0`rgow9SiQ0ZFIxz>8M8Lq6)cEdNwINot&@+p#@Y5^qxq zNh4&MLtvbT^}&WLQgs`mv4&fS3)><_J-fjoMrUe3X#T8C$2)~mQ9J9RYkLE7vc9pn zh^?}@^h%1z(?Cw3Zpk$Z3El)O*H9HEgvM_`1Sk;k?BZwBPO4Qe-e&!RFw9YvggAqNsi{wvEp5F^sN zJOtOI#C_D#f9}k6L-Yp~Mbae&V0I(G%B}mOvjw$EE+>gk5D%qw3ef|uMDz#q=3|e5 zEK_b!s!dHCA(VRnEL}Ok&urv`1t&}!2)9o& zlF@>*^w&jGo`Db+qy_6JLbnxz;P`2Xe3Qf)K;Cm6veEmk{+)OO%rbOS7c@tqDgwUw z$`|Alb~0GYt60rVDIY+X|Ak1aoeH|?vOAO*1k(?UQj(2e{SF&Dy4sOB7!ym9~vB7wR$v3V1}TbLaP3!yg?iY zkTc3m{nG!Fi>skb`X{37ZfIFwIhtxLL^$E;IyThO03J)-VHve*Us1-78p4@FoU?O)U4j>X^m+^Yd$ zLrH$U(^3HQZ~wLY6r5XujA}$N?A-Am<#FBj2zVS_~3kP6rS%Kgbwk zO#NBVF5Nx{=xBi+_MCG7NcwwMu36RF2b_S2r<`~@N!vhacG8rx`7`2T3wZYVOZ&bQ z_YnYrQoUUSbEbb=!c_lu^%Nklu-x3@(Wx9(vZ>#a{&TOal%dJiFa3M-28%9u9;|pp z=|5oj&mY)7DD9dHjIqBWYNn}JaL2BBvhU6`e|V>WeeRGZI;5g-f>_N`nwlC)r^4IF?t zan3nueNOz78&d(fQI{mbgiHz6N@>b?0A-tiLobRyM08RaZCXrIe&_~+@@HlnC=okK zEam1?Hv#H@&F;zsW_#)~Jr#a-+_q5h_ipLT*#ylQ_(SC) zvaKbxqv8xJj{COUl9$gF8f`(#S@_tiQkv%bx*;)jTdBVM+?1zcfmufD#`M>wUvmws z>mZpok3{H2&HC1z=bLgkg;1M*4I>LIJkLNjUzuyY@BB&t(U|^|%|o@~^2#W+yp_q( z;rY||909~(g$hO-zb7jJ5a;$|X%aUQspk-mvG%J4BBI74h--TtTL0$s7lWn|iKEZ# z1oN6FoePP802zWky7USTQry?S0rZibM3}SC%eN@4{Y)(1q;3I2MA;-v9R9?;|OVwjfLQb zPDKlVa?(}?7WnMA@tr2dT*OmKk_3dkp8-QA_G@5*3^{L4u0L*L{{T!*0qX%i4QZRt zq@0Mcqy@6STH^E4R8f3iYJd{}5(5>|gIxFlv`mPg?wl5$1U;q5VNU5nItDan^z~Sy zyCM2}(@^fWK2^(Q&mZbjS75D@#(f&}qE-)#2|5;LCH;497_R03DJL^0AwAv1!s2J) zwa+|Zp*6!I(eEOv!n7d=-Mk(4uMvupS<@OoMSip~8i0JaOBDqDm&6Tt!+yNbhDEcH zmC3z>=5Rd#Sy2_qiO_zb>}4SzjDRBw>n{NZNK|AJav|{(15AM@#5f=_#w0i9(L^AP z!P*Icl4-e58DuXY5D^DtoB)uTIx=AqBP53e5*wCoB2Z(SF~-CRtpGrrQb+*_kWvDG znc-E-hn5Ur3z8JtZD^;|<|2Tf00>E3XNOG5?J~+gcM6c|VPlCFe}a;N)ZPFv6Db9O zptGBRYokOY6)KBg`maX6L&4Dwt+C!}Pn@GMm^MW>WXPv5gi6od$ZLga<=la~=83O~2ClK}dPozUlx7ZZMu7 zgr}2c#&azPFsWu_x#f)!5o6eHr-+O(B+iM5$?FzU>`B%hvu0oriGTylaNcgGJf)ON z1waUrD4chMq)zlFGJ05KrfeOP%77C6<)i$%t8M=xO`{4xLxQ{UzLHFt|C|f6kog}? z$EH-};CY|lz*ZOxsk@jfKiOPhQYHUJFlEN0?|ohq$SY$-#T6DaJ5(wvn5er8TX?HR zZA!D|MU;DF(phLYQa7OB~?pyZTSi(jTIq zE8iDqU$2!yJ`nP?k7*9mLCE>z9c|+7@h@m98J11UR1CB>LKYomQsjt<;EaeErG$)9 z;EW*UkbqJy5Gsf;R^8pIMC1_sUN~^MCj(5^mYE(=C<4%?DPS}*IXWzdX48q(2GtA2-u#9DmFilC3T~Xh<;>t_)O(G| zg@DYPbn`ZQBfKZOTU(pbU1|oaB{65rU@4?gu+02ZsCB3p%=V&~TpBzJ8-Q=Zlz((& z7GhAktmc#qe^6(*b^(FA5^ojg2h-OqpfLnp;kD9t8w*X)@AfgWT^H!#O#_;!xvUyiPUBNx?mo9JJ+KNHfVTGisr``j93MPSII z`l2|+so;i)nAnlPIT1oTWxWX^ z66dV;&Rr@v%CFn=d~h15Io{@L&kw0{TytFxNSqR6gupog!-TPvQs8M%U+?N;R`d

    pE=hotahV+{{`C&(Y8biB0&lu2{fi|pvTv5y3?7eD)(OgkePMP z?QVd82~(88ijLd&oqJB5nlf|mwbxp^l*(#Xc&T3e)_Z1OE^%V`VW z2{LQ~GvN~r?hbfNSl;Q6ZruL->(9LMh2uM~S-SPzhqjw!80Z9iGmY!utIoE_gA5zr zU1&bX@W^%_1!HL6N3opD7|RO5ITf} z&@=QBYBfMgCqGS9792W+gp?3FNuBh)rlegL`!1%06esZ%qKFEWDlQ&%#PH<9Z+z|S zkNzE=e9)aPN85@flK@o>iwtGU0ctgX3hG|;Dea6J{9gh}goIFjDSg3Oli-vXW9bl# zVhU8-gargeip>s48|=%O#E8Ze-_u3*6Iu!A*y!bR8nB0l<}k2W{_DXGr1~7~_t%Ow z+#dysQgxqnlp#!WbDH}w4%_W++V1lC)p)hqU0iHem$?ceE+*$M^YUv|B`TU^I9S1pd8Zx zlybbfUs5r1tN=Ou9W%OLFO3EW1s;@&yxm>qaU;m8LQwRF#f6H>;jA%N2q_4Y3@MC% z<8v?mm;dPRPurCW+%gdP(_)d{dm*6A2`hU0Q`BPQv zSGrDs;&yjwpSh>+zIP^z6E$i91EI+X@f?CU^%HPwd{U5267KGxDhSwtY@U$nNeiJ= zU7-3pDMuwGthQzN-z17Oc;)XoGF8-Iw{279{6D!hj!g!GD@tsRPu1sE*?} z4ZE)E3bi|k_{<=$ADAVrvkwmiVooM}$E~^)at@&d4XU%b&m}7ofYR#(6%Js0l-g6a2 z04P@U55;*xlI!t^6mE5N;n{~%z6^aLCVDno!W7nHwCEDhT|KZo;>I)DGinseGVFM@ z8IF(e(r0hJ^zzNOzrXqZ_pY8kcnaK1M>m}cBi)^o2C4)nL6IuKXg_Pe0HIb1;Ow{s zz#LFXo~Fq*Tb`cktvk!JhgafWDo-{ccCZQbFlLO#lhdQy_wPP_`kqQ~cM*W9>NN(a zN`#WmYi%fYJ;j#xFoR7AREbsdgdjDNW-)Iq^yB&W!cuk5jK<{HnSJW#fBuiY^(M9xRLKbp@C+Lf5l)?L*iKm_UOEQndQ&%)AmQP&zb-BqG){KnwFHw6MMx z^b!^#9i@}dAw+5~p-1RZU4SAqqL6KLfeFNumls#-%d6exrCnax z`8kIGm_TR05z_>XzEj2Dgl2g6*y823l z!f)Sy`N`!&-#n2RfdB%c2Trci9;7PMK1d35#&s&z*=A6!tXb6q`=CZ25|j=U3er`n zV#97VZm$Gc)Cy2j>^45OcF&ne5sfG$1!xN9)A>uU-2ShB>(_6c#5}AL7PSQaiEW<_ zuj@yHlRsxG@Ba~R{!flp^Z#3Iz_pDCA*gM>`0D8&zWx4sdr#8RK|<-0JX1Jo2#t|* z9qhiA2~sT9BC zK#Wy%=p?}?rKV9siTy~eIf7R+q&XjO7mB)WJky&ecW=FL@ATQvZO`6)`|JM>+qX%g*I~NEdc@6_Phb4P&6_W8 z)_FC2NDjtx_!gdpNxcUw;9Q~^E$;^D?%cWmbN8P8f`rqv%iV6bN;<_baab#J_RTo0 zVLO;nfCbL3I<= z%FQaJjRJ{FkD!1%P$Pesdyv{!t?X)W?gpE-1E%cb#NG7n_r8~}*1TF_H^KokOj{8z z9jr)mx{8y=*=e30Ez?OF1jGbpig|Egf*W9PQ!6IsPFPbs8Igf%HhV3~xV}j>-Pe{s z%}VYF?Lt~g>|KJRFu3Lgv7ERHv=lh2CA)wqPDLJJTC~psgM{T`H*BAM=4HG3@a*lC zgL7JT{ec&v(EgRx2DBX2EPE8u010g2d0T($e~sB+e%F!{y5|%T)Td#+UY)5}wN4^X zZt`ADGGCa=kJ9=K3G%d9M)B40@$|3$=l>yvk$Fv5AVNSXUETSkF89y;7XJCa{GUGY z4?hBomxC+%<6!nb{5|{;Z}@Zf{F8jDSb6*LaeuMJqw@iAnL~0Q64B|9DQGD*VGhLV z)Nv>SZ9y*uWj!T>2Gt6OOMBSMC(G1T(9en-lo2i!V3q^O`Ji4}e{0mDnT*mbU#_1T z=D_cueA@1jlusQ>tM;L0J-f=lXaz+y9QLE;rbTL6-&Fk(5$1|SWvCzihxwSU$MT1X z4X(d_cxE5HmHSfFCw%skU);Y^E&xCJx&SbXU4MM@riUO=soH>ftsuS1eAVjuB|>^i zT12sng<9U7#QfRU@9aAK>ATyN>B5&c2Yl;yzcIY^MAJ>0NC;l*y4v<1pb==j0;IKI zESdwEe_qQ0>fJ4-5z^R}QcFw?6)J(Q)fpE;QCH#Y*HP*WC|qHPa&dB;LF|S~63|$t zYS9eMA`k?4fG3|oEBa+si7FkP>(%aZjnL!%i|OvOw@iF}u@+EM%r=r!OdS~-u7`u+ z#o4Kfa0rEwHS(gs1yBYRarcyPbflYYzI=40VM)`NL<1!-gkt88exXM}pS<^EdwHcX zK@`rI;&mvg5dYg9ZC9SaTz-*~iJ__%%Dre;``{N8rfi`?Pywk8F`INmMAZ5vkGlTt zx6Z+cAZaNfX$bY%QgIh|^&5*guJY4&-qVoarL|_HMyNsqM2q#cKpcAeZa0p8_2i-F zDW$GL00n^4c^=twdCLeY%}@ox)|sw8FA$RBG;Sv@Pmf-H{nd-j)$Z{F1Pv+XY0{9u zAc%wj4vdtkLaP&ool;J2-hAnWSN}%5^J3CC?FNsccV4>j>fc%1eE$6M;&O8a-DbZe zcl3#FB{rh$oLf3=$8_?-Gp~H{^xo&z!}8I^aIxNG-%YljcIU!r^hu%1lRGzG{JFcI z`O>Rj{>^)@{ZfDX<*l4N+S-R_+s$^&+Z>F^sd>V%lf3i1w!AW1P5H{FE7@IPxborL zhsU;g=(~p)&op1D?*c8rn{REQTf{ah+ptBix&Ri?S_hD@5bf$ewG-{33(;P*leCo3 zNk~l?&`T^7pk7m_vDesXT4>knq6>>fTrR_+52@1>iriLJqeygU5Q`RM*gSai{jdD% z&7b^%`Yr{hDnqd=Eo$IY!ulFS3j{$lP&#M_4O&_k7u%xJtRO@Q)wT%D3rJ!oDM{BO zb?7?jI_U~$DM^ab1qnf7&=@2NRccK@MO0N4<$|e5v8Sz*nP?k3Wsp=cf|R!vwJt(= z?xlLKMwKFKDoW=drSgIRNzIM56BUX|`6`H@Q&AU8w4G1uaafJ3)%NP_eEsP0<$E7I z`reyoZ@l5>msqVaPU6Lt%tA+raJn-CWl+12#bHn#>QuVG1g=tkF`)w{CE^D`FLGPL zQQ&_XIkA|Ba)MZ^ht3mw{jc^_#!R@M*M$J>5f}aOt&o-sy-R{7DfjVU9upCk78bP% z0*JV%ptK~m^^H)n#pB`y^|PD>QGy0VCW}WthmBc7ypLfjW?7GkHSG6B8ESQlYrCm{P$MJF*#DlEB-cJN=O=SaxeuEUlDE0h z@U<_!mIizT`{({N@X4dsY@4fZaV2Xs*u={Y>eD}lPJu*YzPt#Q4uj*nKzyy!b01wdC1q`ipBQ2({-#<@@ z+>55_fwgN{fnBsE05rmtB7VRmgF6gC+^uNVgR?V<-RX-H7k+h#u^fX3j?9uZ5J{QT zRb_OS`;pBonRSI^-+2>9k{NU0(!*P7vkK-=JFbxRMY&Hyj`{?NQ zv-d9Ed*8cW+yR;ypsfjTqp&q5e;o+b1!$fNN{L-jW%D&#VYz@Rwewg#58=0Z@w;)i8Iz1v!7*m@6nXD z>v5bMeFs6*xVU|Ka(cWtzIA-#Zb&zbi;3xC!ge!l^E7drVG3Jhv(e!~sM6t?c?(;^ zuiz`mYq70t*BDnmoN;*K<0Fhugloq}FaZ#_!&{Lp00xNwp(O`Mf*v>$bX3$36p7kF zL$wCdUbR#0iUFvERC)tz=n)e`FR_!5G{z7+jY<1nQm1{=ei8akVw$o17Jz9~HB3j? zoxk_(2VecY>05uI!9k8Clt&Z~Rc|YGLYL+p0}+?x(nF#ui%$ZeB?s`@FgQSp-DfP4 zfCBs@CFv7W$CM-$sX#(diCSa!SWRP!3Y2Zh&G;Rqyc()^jZmAEW@0k^vMdkw_-T;{RJqj|gpTJhZZr zYyaOb1OZTlq-jwECu{+_1Ep(GE5=LdmFzQbsa$4AFejz(b2th z=e23r3bz$FsI`a!bW{XWTGf=bAB4;umNDP2qQxkBw7MT01oZVu2~^az ziAoVMl>$QGfmuu2NmXRck5CLMd6Ojn_y6Lb-M$^&R-&VzR)tVaYVlVm()g>n{Y<0* z72yNahZh$7;%oOmc!!fS1x6c*BP%n%d?Z5MKeY|$F9Ab~%K;GCOhme%ger>JNE=21 z155img?KgQDMN)a7n;3(7e6uwunD9@T8F4|4Ev(NKJ2gmI;ck+Of37eVx4&jR6#&d zXG%4!hYC!Zzfsc+%qLupMX%K{_TT>_Ie2qE(0)0j>-^|Z`ol5)pUS3Tx7keNxI8`* z(z9t-EbtqPWM3L8Ko6xDiqgBJ!)`5@UisX!@fN=M;ke!M2pu;$4&liMPp0j*pN=%i zkPXEjkRnV#Ac8W1k*=ZwFO^n0XPv-Y5U6F-Ai{)2Y-mGGfWOQ3Ff+lEDXt<(M%A8rf`*MBABJKs9kgq zs)=sn`D(Sfx^ZLq+0P%p{`!l5{0HlI-&~2^AObN}9KL3_jfztO^8%jMztPhtP*bu{E!~UA@@`7CKA8^!U&ENhRA1c-MIVw3m<;t4TMCqYCqzpmZ54{LptI(S&9$O zR>!BepLzMU_n$n)ltom;^E8DJU{0Z!i#p69PB)jLbQijlE)cqlpfq+OMKw%Lhfb#B zIzNAN`Afh45B{X@9)0^QTK3%zY9bvy04iLHM;~L~b%bSXEruQPYK=H{F(nNz-#Grc z(~}d~jn6!nudW_%SC7Z-YFJ;5+ZB95-hdlm2N3b-#@$!%-2d#BH!cQDi`3svr+ql? z(;~%XT6Bw}r{=rSE{2>pqzf(Qsn9SyD1$KM+;Ji-!zUkyJh*M6O`11p+=OY3agAw{ zr^hy3+4z*>Q{<;8)d@}zmX=0fG5;!qtMp-*%R&L{1dFOxl^~KtgM>hhQW-wINT*r_ z!6oRQdjd#YXiO5jkWxsU#vqG@_Fd>Z={m#+4H{G$p+y7?vQc!?xc%N6AAaS3pWgen zEX2nFae=fDS2#n^n*5`VBY_tVg_mvy+Cw6wJSPfKszQSnse=Y+P>qN|QbOuAMokHQ zCtYId&_zj!F%@t=L@i}7sIt&ELXC{I;qjIJCvy$;Ksu@wit-jqmLO9~WA3?VC{#)m zflv=9>Y;Gcpw0RRQ}J4M_{4F{!*0ZscNeRxC+DlDXa4j8t2H#jGiU{f6NFFsqW}OP z07*naRG|cr=5WusW_soBm*X&pkFE)72AeQj_BmKgk-eG?)fu*&UuiE`dL{xzQGf{; zt3d8v z<7Ry^?A9?!2|L=E6gSsk2kfZ|bBPiVN{pSVWE*ZD`EUKxzxT^u{PcG7c=C0M?lcKO zpuz-Gg*qAt_Sf4dZ68Ymernh1uh2y&K!vL$!S3q8mtKGQYag!PwVa)c%1{^5+}#<1D4T+`5%mKAVW`yq$~kWhyJux=Qx?wnC@Nj}fJZ;` z_1O-kOu0NbHXa;hF^Qjx4EwdAF)*%OAG9pL1xA2q>u#XcFtupMU;V(w$+uJGldK3ld7iM;IGq zE!7}dT7{LMY4Yp?Wq9TFJE6yeCw{TT;+Icu-Rs|a zV|8_D;)#L~6%blfNnW1#;I%4Fh3{P_NEJqJS+P1q)376s@cawu(fdZ@Fj@#23<%%^ zQ`rr9y%?7FPnY-aZr^(d?P9Tes*j@plnUQ_U1IB>2~@IQ%X(|70JM~RE^yUBTT=v3 zQS*gDWNv>1NSMdTY2@i0sAf0e7%d}v5gP&!g?g6lV7p~^^V83L`0a049ztA{R$$Id zPSFE05!|P&Ip@*O&(^n|x%=qW-QnqD6(rDxoh*(;03*fV3K1#%g$5ST0rSej)+UC5 zOw))MRD`2#1K+(E?%kAM{CmIh-tBuo_@n=@8@CjICKAbn5)CQLGnh3%%-nV%bT(x3 zC>pn8etL0!q*$hyme1V2`Fs$kTYB#Mf!zyqdTILmh-d)R$H#0 zo=pkYrJ|zwC9B5)LZm_{^TPWScq#V=+opw5{WL#rhW7uH2LVkql65|Ez61Il# z06WO_=i+D?ZxN*x6$|d(5$X^rL_ST_=-O44ur3gKgbuP`>_wBrA`uP@9f~Vx>R9|Y zQ!ibTE@~g8?~r=NPE=Kpgi%ZL4TT2Km%FD=zw`C?zWRH7_~qdq zx?=7zc4eWDmktI6K8S&Z?Jco1KZZongqWaO9D%&+C3Q@ZU6ih47bQi+$U+1P+URbe zmfu^fSSKr@Xh`Y|#yJ!$!>_{s0La+pIcacm$$YA`7ZfsyppnE2QC(_u2?yvTF%Fh9 zZ8z;UoAvp{?&9+5=><1itamVnDAFQk6N#wZgoRJvwt(Q4R_Oh@l4V0&txM&_67CnaPiceamGDRx8hxy9DB`PnF%G%!*Vd)_I93cOKoYb^TtYjSN~Hpe zVRbmzRjUYs`> zh%I#?3Ky*Pe6ClkVv`ghf(r9`8ZM^og<$Gq=jLtrl|YAtD?-!al>^ZbyF6JG2{H*S zrRl%al1}A-avKsc|QG5d8dfH~x^{%l5<3(7(u6{+K87lON8Q7}JjA_M z(P4&ic)0sB_-Gz*J#9EpBG0`H_8?P z)ugrEk!x#Xx!#x^gTlPfm#LQ`R?-1Qn8jsP+))d;OlX1*FZrbwyj`NGi#b?G6*P^# zhCBXr!uoJqv@_R;v@@pN<)o_#&txPR-d zH_jh^f6V4?6zvqL_B1Ffh_EttOjzW*gd!FiR#JB$JH*nkwPE8oZ|Tk3{nN*z$cdO) z&aR+BQl#rT=Xi4R%I81*t#?0AV%iQVrB-#TOSm`?1YlwKwAX>Mrk6#nv=OT%IPNW7 zl~US@l?U6)rBo8G;uLA!dK;h+cG-86-@F|bOWAFeA?6+Jq>gezgGpqZreUpV@zSZD zbiOhn0^sgM77k(x?LANEquUrPZ7#QWpTG0mr#|!c`MD@5d>m7Zsty0m?+KHDQC@Fg^e2PoLbl`Gc?i@#A;jm!w*nLMtS|#Yt5{ zO~o{nUK|R~TZ&R;5?P6^M+v*2su}`RwAfQ>5;-ZXa2PnkX@(84WoK$PriFwAjVvBPF(EC{bx2WCANpQ9 z)n$po3)NerKsiN1sxk(h?H+&aUqATzS9o!bUSTQ{g-QvG3XMjUxL|F{r6Lgsu2CdX z0}6Uy%7Z~&q98PhaA{lCF$U3qE;1$W7n(YDiCsiWNI|+p)zTI~gF=M08c=xsgg~_> zz;nP}GJ#pvR7bgpfZA%|K~-cn_k;rCl+s+P80HhP&gN3tv{C`9Y{-+3Q})Tn)oy)u zzW(s>_~gm79hg~ZF-0gtlFXr*55XG0%SqKn4XiZTGJCqQhVtHG`V5dPCO^4l0*>ky zRQ!J?AOkL>Fay>)h#6`caJYVj!+=Zou}7Q5Yn&~Rgt$aJW>_$!5;V-rFF|zCR^Skk zf>hQ7LdsNMXjl~`s%7Je44MQ$#!|c8(amAFa1p>&1D#TOWt7I!+9Uzhy|mn}N&%__ z*1{Hos)VYF1Vpvz+a#$54a&S-Kg#1pps5Dh#L5DjeTN(nWdcAc&ZuyN-RPZm!W=Mo zzW8td*?;k$|JpB3;{`B+q6m;4-n>N7@Uk+O|Aq5`S+3l&noru=lZqcNaR2e&`C}d7 zCm+tWNc-d8^)o>VQjmGnDHu=H}6QJEa>)aGBI+8rgo^U#(ece(eI5 z`&XD1mb3Or;d|T|jg%qH7;Fv?q``$MMH^ob$(mr(t9Y>zfJ#tbKo%`cf*MjVKSOg! z-{^#OI-4gPvPl+NpEGaRs1V*P&ZMUKRRjS*mG0F$r%XEKBW$yK@i^i~^2g?YFKy~M znBnT>J@5nj;pyP@^a%LaGyLON27U5YuT4-l&%-c{BVvG4qt4JodmE)xdbKTV1<(>a z|NO~jBbS#$o+#3j;6yj9&acMp*rb{t*;|7e=kx}1(BDFlc~vZZOG}fVGE*v`LZN5@ zJalefAk7;>55KaVZC$p?8_POi6cakKBL{jWG6616PE2KI#AX9RFu*6|07O-Vs8cco z4DQh-sCd9gB3Xz@wG&YxJX^lFn9P^=o(+HVS8jjz#`cY`J*3=X?#wJL1L$CYD}*AM z0!paW5)pT4fp)8yQKrc^Tj_hfcmL?}=~afi!A-of@L^e}?CyN|wU^(zb&87}LUJbq zAU=z8TC(hw2~ae{?Dirpj~CM* zX4x$=!ws%bWou-t!<0{N-#dQsxvMwcW@$`N@1Tk$#$XtCd9@l|`^;+(-+5iZZ*>~S}ONMphPFqmp;L*+irw(f`w=&x{%OG=u{K5m(W3bgoT8K#7;vmRcl-1 z0TH1?>Lhm3b=vi@Tcoawsgo2DqN;?TB36I^56ej?dA!+kd->qaKmE$ZAN=3gtx()K z8QhB|UW?y9p)MK_Sq@%RB)SCE=o&<#Xly`3gana*VkZ@%l;!}bLkyClq$qtaT^G89 z7_^Is0bLYTXb2%7sHk|249k3k>O@-c=xP0KgO}!sHTxNF+m2 zg_{6LRYVLhGYugn2w@|}fhw@UcH3dKT3?)BtS>L8w?9C3WUGltQN&i*ZAt+1<{ zO}-8$;5Ik&3oUO}=fifTY9Z9da?OFYUdZ`k3ZUu;?xOH;+@IuZ zDFoQ|H-F=o|H(i8JHz^M?a@}6ukB4&KXwcMdix>U&qNvkBASID6A6tro!?&AKm5}3 z|LgC(y}0|?X%V(I!WJx~WtR9%uJ532vrce+-AR?4O^6t}N`eHHG+_l9t7B(r+Y3~c zB1*VMG$Zvnq@QE!7UB!$l%Rb85eqt~5VVHE-s1Jr z_)9_7F7bEnos#0+am%ET1`Z&s{=(HI+tkKD(1zqw!+r{K&LkjJ4lKe#NZ_j$TWjw@d2JaEf@Oi z^V_pCZmyU|2|*>mz`=xpK}^(vEIv&Zg`EKO5{oCQL`aZ6EwWFS7pv{IyL~IY`sx10 z$t&Oe=KB0m)|hh6qC`>9xD+_d74xH4hYJZ+7gy39Idd3n7~|>fkQT_hi41f#GxK1E zJcVIvyG1_k)BRUoe&=i7>XTY_DNuOP@|C!~kb>rB+5|!=TNjQ{Gc*O9x__~1Eearw zMkd-{R(fgZ2~oB39*0hxVh$($@;ID58A!<)c~Z?WgsSWS;N)&I-n-L3^WuwFZ~VaN zkn9XavEwp|jiN#eFwYqfdHQ61_jK{|zxahe{rz*gZpWR(g?L@2S+v4AOKp+h1_-p^ zv22t9HvJ}1qY-t;E*orl)L(9fU7qgWJ^9?Pe0h22&ci?Z_ORN-K2F0nX$Nr^aVUkZ z<+iDUYNAjpR5ek0X%y$AhOn1amkFvk#?~PzO`ZwtXG6MTfKw_2OD#C7PXYtYJ<~I7 z>pr=S$RqQPwvl|vng(2XUdyz}wxaFe128pfm-58{wZUE>5|GMIpsSsm3cH3Kv==0m zPBckv2(T2br2q{*G>Ik&!9yn@)dV2*k~-}cvFk&>h$)7cRFi9rwYm(bSkQ9QmWfvn z-+cFL|Mu!nzY3qwC8&Z9Rju3%1)?MHphsA|2bF${UizuJ$fS2`Nen z+9kxuK1r7(MU4SnL{v$!Og$15s%REKmHJU0rO<*}^)g*WdTHR=7~(T=sDz#b5DIWE zrM3h_ai>NVz)5i`B*c(2HanNeEW3~S?8(#J<$8O5wOy@kv%z)?NuWSGDdV@5*D1v+ zxj|%Pn_p%q;Bfm0sI*TBN=m(deXbm$<@*KNqk$}%e=>vFS^C^HB9P$PSMGz}y1%)l z1Bw+-xn&xIrVtXVYmiEnF7H3i`OvN{od-F<;fs5Q)4qG(7H^^;JF|d!? zQ7Ud9;kwC;Ca6?&zl0MMnNh?>6|ZUfY{`5*Y(H2F%ePV5XrJd7X&6A&NtbMYUxSdg z+d9jB{3^D9tDWgzfpJ?-+uVlTu0J`+4meeXPKpc5`c_2MQs~g6WgEL5FTHepxw74E zilL(ix-e5cz_4De;q}tiYhR_PZT*;MZ?*-dyfVWz&3g?BsB5)llMs-E5yg)Ws#36_ z+E5a;_e%iVaRYG041c$1l?_~W$z*nz!6&d6OyWC_>6l4}$L?3>oKTyPF_cBfGhE%w zX~a~i0p*#dGjx>|ry-`W@a$)2yUogPo!77u9$$UHHqoa6yD{UWSnz#jbn!6b+hdhR9#8&X!D=$3w=3A2)=@HGkO9F)u zCj!do!S*!(D)C#|oFyQqUVd2#PaMx;{;VGsZ3S`%gBvj~CDX{AZtg z;n_F;_>CuTzNJ(rgaIK)g;5+5gcMS#L0q6y5waBGjfy~6laVqtied%>OC&)^tDs^= zQnO$xnV8T)7iNXSGC2wjp4}$cKpS8KZRdF_)0+8;`HIs8Y$MYKc}s4Cmo!D`l5~lSUb-Z$L$CxzYL=9xKLAh-v{Y0N=!f9G zWC|*&#k@zn5k917}U}cVe6xe6OSsD&k{zQCSL3)q?T>HI#Von0uR-Q?#WIVcX0yAmw zOt$91^A5^9Ul#VdY?nhUsL$NpS&Jk<;{vhJ&&qSyrYVt1q=E{{f>Y))6$mtxiSz*H z+b=WM&PYUn7{fdS0aPc@8tCiX61WV_Rt=~C)tm#gJ`H7Pt4NV?vkMB0yY0npdk#)9 zAcPp!neD^lWb0OIuBFow`;EZUlC z%7NJqrA5hXaXTC0$p+M8PBgfW-~^4+@|4ukXZwGHXdaQrV8&zYV~Z6 zQc=ghv^c&p{SL@HWkz6iMyNo7)K3)&G-{4;P0b*-faV z0}e5k?l|H^c3Or_f~@0K^3J1Y$zgL70r4c(L3g+$}RC z2vs_bvCG*!b4Pjj|31PeQla4oTpBz7P_xzoAC8U`ZS0C^4yUfoOfQX9g zJ3wJ9j{!@Fh)`pDpvf$(R$LmgEeB~I+1N!WRS$sEHOiB#ktfR=N4LK4tAFdg`**(g zm9Gvyio`&N22h2?1STlF=sY2%_*E*SPPUA(&OvpCnqf(;Z)-%bR%8JtNG454(8UYo zI=hc06L2$fgblD=p#yPRBd=gr$XA$FVjHm?xkIsTY$DD!L`o?jl^7a~wPBNVl@6o{ zA&K@Pr6)k?1JFt6M0*JfhF-!#Vvm?KB#8kb$>O;5+|{&*{X$b0x@Bn%CR&nsi4>~j zpcWv41nbAAPv88L_x{cQ#wYKgkJt@Ji!udik@gcnqRw3cqClknEb@lP+9bFfe02v> z?Il)MP>CI5(nW`q&_zixbe;5(eUB6*1_=QvKm{?>3F@FjFr=BtSNctR{^xuy)`y^8 zUm_5()FW5}-a77~!K(Kppp#>SXX9$z?KZo`hUX6+J$?THS8EvIg56j>mmoCrY|G_Q z&e^Q=pcU0<%s>rO=ZPM3p<6_LG^2Em2CkuI*H$t?nYoJI#yO*WFo6>p%;bbZ{`zG0H}uS4f3z85#l1Gg=iuI(Y4oWT+SBde+==jJ3Y*14q}Qu!F@iZJ?5x@fKucN z(hg>(@M(?t%X$wqMv%7buqFoW0YRSvZMWN947;baU5X+MLYv10B*C22R zVC``w5JbFzh~?Y&%Oe|xG4F!S#ixe#E%Gm6eQ{kx`&q`hOVtMW90N5asUMsS%5={1 z{#w*%GmO`!2m%!`VxE1Dx@$YajCp@PIS157}7Xen3=Va2ND@RCu95Frr(s?bOc)F2uWl0-!a8iK?GM3x*N zz>~69M3IQ*|L!xUYKE9>Q-;5l3DVoXsgA%u?}UAUjT^y(sYH@^L6m%B@m zbPSgg>{Q31!R_Ksy&;prH)5(q0FJ!oysGXSycX!EI5#w%{vZGJktrzZ} zzx@LVeX+?SA5sx zpiPEbz2$)!Fq!)@7e0y1mT5F#AV9Z*yo#IoZs*LB!hd!Lh;RrkL6b)yF~(U=+(0S+Kdi3rJdC}<54 zRG6Y@g~DN49>O2(FZx}Ma5(I59zr%n5TXzigt>w4Mvt%Gc;{PHnR(9M{&3EzsyAQ; z4NAa?2Xx)4tjw&;Jp1fnt+g4euV1CyOVKdaRsa$q!KtMK9jOc*LqG_Sh}d}-WEe^e zz%G=Ufb{{PbO#dzZPZ;Mwn7D@=3;Bg#6+!oJJ8zNvepgCISHr^H57tH@Tw&_X=B_t zb9UsMCmT2OdcE1K$Fq~ui=*S|{t@PcTy`xmLw7*9C(8~cV>hhl83Kt~CSh`;R)RvU z#ujT|Kycm`9d2LaF&Dpw?cPw)hvVG}&TO3N_cI}_IQ zK|@QSVrg35y?~@7Ks(hzWuWxsUVCM#XsZIVB^U`*S~i8d+>^yrTGv`!rAmH+@C07*naR60i=56nwz z<9ZX!>=~}Yk2$u1#D8G5h3^+2{oKNUpXU1hxZgD((LqFK@BywF!Z2Ar`P7TIe&bj0 zuim;V;bkg<(#)n@u$pN3gC`EZ&EyxeSC9h^5g5mD4$2UHN@m5kiTT~ZtAA3RaBHOo+t<=TOD(s+f;If#C;n%pruFji%T(l+1uRvegjGiZWwab+*)vt%{q0 zQsg)bGQDhBb16m5CAdcG`p`v2g(`xQ%BYMA0Xvl#>F(O{L`A@(EQ4&#hzl`c_gr|> zuXAQ#cFD%ob&3KSk~D|6EtSple|0-(h2E>(_W`;4{p8UXXcG@*n(W%Ev!*O%kjr6;%9 zZO(aiM%4&2C&bMYc)r1{kAC!nMQ7$n6OB~5C%C#LT0%}DsgR3v*3E>6Czm&$d+Fqr zPn^8{2DShtOC>CXXLlkCXzoPz;-;CKxH2^SVtY7UB`b@TteDV2skUd#cIV{c;9$7& z{O!N-`~S(kH{O2xo8Ph37_>(=cs4ibdt;tFg%Dx6M7TAdu~)aOf&{Igg3774dYdZV z8eRoGv%7gK{g@^A?0G`oxXqqs*vLG2S|hEH*G%W0EVf_0b>kZFEL8& zMFUkNCNad6K`0?E#o(({S2QS#sVll*BxsVe&)IU$^E##Vba8aLIk^}goXp4PX_Lf@@U|9g zQE^NO5>g5c#q6Nd@_IWrS*PeOW7u;T!kz_0cj9Kj&jstlFCG24#PHUwPtb--{QXF`ECrdnUL1E@Ep4o~U?~?e?UX z9<#;uI{qZjGk1yepWxfi9Hn$1Ow+tsZ>}y6b2bJx=@2XE9dVkO3eD$X5n>FR898T_ zAPnxb46l%wEg$R|RC9WE7d{nT0x0^OrIsN|4Uph5SieBmtExw_pc(>VL_e@o0#GR7 zF?!cavCMPEW^`T6VNC1Q`towM*^Fr}(0MB`6$u)&8~T2^Si~6P(Dj2Z22kCXaKH{c zR0xQL<;}&}m?pb*^YC~6cKGUFt{#4P(Zy@YGO|gK?C$QOr3-3x9lgrWAZ36$jqode z>p6Y+p{~v+#?G?mcNX2xqSEi>Yi)^-}(s3-Yv4G#8>YZt4mrl z)+H`CFLSws5H-FoqmT>s=a?54!yQg{Oq2N%H*Z}ze)kO7FuTp>=4P<$M4?>DjJ%$3 z<@R!U^V-Gzhi>jZ6KXk&I6T2KZKh3d!eg2zhIo3mSsWgI@>f6e_4^-gF3#Bnv+U-> z5ZtUVE4Q$Ptdy^V2H^pkV)@pmq-QA3Cj_f(R z8!gcj@>FO5@Y(asH0Jrz(#C9syz+F3bWUHxC-~$(ySroOH?)$dqELa^fdz6GAW~B4 zV1)KyY@q*vIzR`?0$~9iAd%W34vZxj=t{R;?V`kv!-645=rl$Nkt$SixQZ$PxT;QM zuldl=Pv83L+h6|E>3gq(0E1`{ul*fU1^UyAdMTnwg)o6z9C=q1-zfp1&`AR{g6b*^ z5gNU82MZB>hptB-*>~sy`zV2o0V)iobs0-HuhzAzI@FDM|b@G&P5O90unQJ^zQ zVX_)sL2@>zLL=Z9N1xZ(Gdx*ZPphNT;}0KPJUI48CxvBRo`np;MB3!7>jt+k>SMGA zeyK~5*F{b0^sC={($#y`3cvT>lj~YTueBAL_06IyS~vhDxsu=$Faim*nkCykbx$94 z=e4(gff~Uch>or_tk?>4Vpl_GU#zDq`&IeoYZqT)|5u4S$)XEX10l1F8hO{k|28Su z4k3@ZrhNPys;gS!ha5BvomieW>+{X#lr{!7w)SH*fL&t1cc)4R(#)<4@C(ZMfAPnE z@DKjp=g0MtTM{ftH3sKXckh?u#~;5KVF0bfw9Zh<>g1f01r6qT*`5Exzy0d}@_*mG z96qw1L3rQEls&tNu;%Z}O71O3&XU4~mzdcKWiSDNGtIVHjlw7cMkh}OJiMgG*8)9hcZFEonqmWo@n(W*bwE=bM7ReMr4lNmfp%Fn40%F$qXQB<06Ck8cv~d_x1x>2VZE7Ft91P^ zUc1q+PS<%JD4yo55h=U6j8k5XeC|-6d+CMC_uq5NUJK*`F+gEX8VnGY4q&iM7NlIM z#SrFDEA=cFmu%G1n$;l=tL%X-CApBSn37z+5`dI!*TA;rS~s9)9%KKKtfh z{-vd)F}lw=n=pej2qM?EKE@XGRG$e&NRdr7h*lNVkpLy7!e?r~1$Dz@_Tc3FT*LL{ z@LPZP_wK*K{bwS=J=Fe(1fejEUl-EO0%GEthcif6#-=4Or} z4U}NnZT6hpMx>4B5k7gIJ#R2y9&@&E*9kgeRh%xko_MLW}#Gav(pwuX;MRcEp zN{JLL3WqS;#e;Xh@#Xtp`=TG+gBm4LVm6v11PBGvxu`>g0TKYAbd~rkq4qM6Qz6&T)D-fvcPvD>D=# z)pD`OgOZU_!hqgIL3bopfhxG$jMbddnC5x*F>M~4T^ya9J$RVUR!AAbo z8UwY|AWE~owjiJ}SGP}8sg|R-wBDX?Y2A9ZX}mp<&SQBo-^1}^?_+y>Ijc1RZr^u@ zn_KA>FuBdhB^WSN#MCx|kaj-JnJzDC8A^f3&}-;j0<@!6db){%0j1Q#R+^zYO56B- zrnan}q5lG;mJ~CmaWT+)U@UZ`z;y$shg4f9JCoC+`Od zfzdszP4|d*9&j0G~i$zYVpI?H{!na1oB#*XRinHmgY}%PSokVqa>?5M%|Vmi$H02`&D$ z08J+ys7)`xomA+a!Kz=|@`HV6M{+Y#+l|YSDmS1Kg)6hUvIWTE4GWR?1VD@Fts)v_ z?NlHa15j{AC>X;cU0H*cmi4Y=texF_M#11m9(yUA{jAT=VwAh$2KegYBF(c5eMU># zv~w2`^K5Rh3yVcJjVYyBC~lstsKV6xuoe0Gni6hHjW?ua{Ru79*jrQp1zgk^k_bZN zVu9rWh6NW3c3l>?E@~erJv4G!O=tHWe(&A8CvUvBdH>$}_3p0X8DtGnc1Jpdu#kB5;OdPl%NvV>Ys-V>(DxAH)<=gcw_bVi zq~sdWgE86s!QG4JZXNuM-#7&2 z?t7=0m)Z^Hu$16JRWl=N15Y}#o4G`X&sbfi>sP{!Tit`ZDUCU6@Q{0V%VwDgzL|V7 zJomzLA6z}0kIx#Bz2Mcoihi->_^c-R3wDao8XOb`uM4-{eR;fLfL6!#@n^L`Z);3l zVtq5vk^JN5@M!b$OD|rWe(LTwznyLFhJK#LE)KNvXr{`5AV_+yX#!>fG$tvjWpSEI zs)=4_%508>!!uOWounD^X|~uF44xjzC5tI!iO)LJSB%Pj=)2>?pl6KziyxT|yV4gTkCq)2tu+*Kt6=_F4N-gy5nzj*SkuVQmXF`5f&LrD)hi^3dIK=tD7 z^vI4>LPc6NK!O)-P*qBFYT*G>BSVxJBm@qDU6ejb-=pgoqx6wM83j`IM=cIsvGLLf zs{{d+iZG1QQ0-EC8%m86pha!Unr4hZ05jy-Hmi+Kd0ee8j?YdXJV*~t(!=wDs-sFx z3YX>ybRfflOxKW$pDB%hz*b(ae&ZA5vTfeVYvI~ixKOBKL3h6a%gMaTwQao&-30jsR4EY z1y$u%ZvAZNR&Rr%6v<;wDFH5`735saMDzZ^$`7eumlj)Ws}m)*!O(X>k*4+P;?Xpo zM>Q!jt`0Y0AvUy=-d##B0t}V!D|F9iH?QUY{=faB-}}8!pP#Y>%O$P^u=aVazetP;3e)skprzc;1u<5$MDqwD`k~-gi zzt}|v?JWw$+{Vo$LAoJun{(%`VTsh%IonF=zZ^rlb~>! zO4ea3O;f?>Y??)AB14s3P>)}W48?mXZZY?4>;9qJf>4SH-mLQW!(D*SovD6eYy*QI zFoU^g9{y^F!$rg_gWOzPY}TvgV%Q$OUL9{~O7q1q39I4k7eHH5bd`t`wm}AX1{aIs_iz5vD-E>_~)0uovk>x&-&h(}wB7H%AxecP?bv zch|2RUL6)!x@*@L*KhRQ6}h%p-u%eo6Q6tj&DZaJ@V&dR1@bjxKtfC96u(Z*b8whT z!Nrhb4l!sXAaf2;u0DJ)-@ciD>vtDlkLkTPbJ}dA?|}l6s!ZK-WwQgNDaQ;Ej?=ta z@ygZy%9Y{x($LW|a>~wR7C=wg))Q~uymIsQt$W93*qf_QkEcE|K)uay0ze55bq_*k zb^5lmq}9;hyy(mB*!?+Y2{t7;>~Q`1wfjdKOF1W(1eV@sKm<|b|D3D!bnE38!quz! zk54Y|-u3KmDE~utz#H+UAeaGH zn7cS~YO|X#Dk<3^4rTr2HN8kUnTvBMU|u7M%P73utUKbx&wcXMPrv%zFMsv!H(w9N ztBd7@Wv?r0 z=ny-NJz^h*1-o9mfnBE|NKla=A(qans7fYTM1|}_SZ~%3KYab@FaFof8{bB^g!Vp; zi-Rj^9tGLEm_l#~K!6pk-Xm&wW2KJry zy~GY(@TiCZQK+OA#xhA4C0RK2CFReOJ1Qz<0tTr$SP|KFTd0sPcX!XQmBeIjli4({ zFIJng703DX!-p3i+{4Kkk^{gnl+viXm1sgl3=Ye+*bp_lm)>V>*6s1->VFxw(EUOP zVB5?aguW(x_H^@p#PJN1v2WAQ6mho$jyC|g&tCFvw zDr}L2dTno4=H%Wk%42}7cfK9sH0)vkL8$~3lpvMFI8Ht{ZKdtSso?}0e4pEs-U9l| zGa{v{rHC+S;5=QdE>Gt1QjkQPp4{LF0KC<}s{_@1m;yT}6iRo*PE=3-#lQF;Uixln_nzPU`NQ{4W^{*nvJgTlVLeJ#N^>nJWNdXn%NtvlkpeKo7{cs^ zbyC&Xi8_IUc0IyP6`D=D_NeD7;?rq zTp3JkPH+Td5E@*}kh23~MTXM~bUd@JKmreh8wz+l!=)AqypU(hLMU!RH3{Q#=x<$- zs|V6A-Gu#uoiLqV-2L{QcfR(mhp)dieRzz^HAqN@K8Dgg$7nelAb}!65d$6OITdCz z8QtM-gp_W*4wX{jH+M4?@erI^AFu4T!e+c2Pshb!oX^MAaTj|zxH23pH7@m6fBVH3 zK7QlF_Z}VHUu`y?tw$a*f}7AK!^JGa#bMc)i5w-;0|=+0(~z@UmZLM9fscRYDs=PS z>&Konbjy?`pHYwqE(V1=jSywdAVQwI%gc2AYJYgmj_+T>4w#uHS85)?L1*K7c3zPi zFFg0)t+!!jmPuvG?8F=Pt9TA&hSeCkG;k8aS%^g-Xi~Lr%e=GF_Cs0@t7wK~I=poq z1EsR!Yng~?a&~_8dbrQaWQQU5GBXzW%2d;BZZ70B`t=((uKdc!j*h?Ko>hP}W))Ci za3*+!&6X7+g6Q+?l$mnpeYVuUgt$D}<+$sYKJLgKtY`b;d z3zLw9xT0_yN(-=(FO~u#4l&ZrZQRV$1nc$Q@#^Msc5K;<%2ihKE8W5O%vUP zA}%y5ov2DV%nRzOUG9gmgeTpSUf}r9J3?4%?3;6tF!rXb#Z>a zIlo*VpKVSr?a?tNLjoi)Dk()lwk3{GD$7cNmbu7m293J_wXGeG+5WmdZ5O#R69q6Q zVb-cZ`_4OeExpQmTb8Y=c(J!qY&WTYl=^+i2xPb$GCUC(HVa0_>{ftkGhi*$)wYmh z?-Z&Z>q#f)#uW5NyBDNF%IShwV2Aq%h_6w z)@P3=pOPOqes=6zf9l2mU!LwW$1_i7@3)3$f~tO~L;oXq{PH7g^Rv3>yKDS?4%w<& z4niGFitLE}(o*UpOZ5KH#o2%M+5Ug~^2wzq)iN}iel3JL zV7c^DahZ~@FH`WY>xu&i1~fE}0=1zzQDr>0)}_=9f-^Ve(8>ky=Gj}V`&q>yZwnKZ z8_=>JWj0&=w7_VZaV8y8er4<2+-|zLc6K-&YlddA_m}6%* zZ}!jM)IeYKaKUDE`PS=ie)#3Dt-kZt_~4Z04Z0vj94?hynt~t%ndTLvBS5L^YP*s3 zneq~8Y5~2>fI$rsoEaYBB381G5R#MU^L&xUeCc5kHkWqRYq!*4sf+9VYd2n4osJ)V zaB=_6<#={(LHfnPG-b8i4{9mRIZGFiCCx7GY6PeO07Pie&17~i^MQTrGcnt>J8!P@ z9578`v8*ddY1~VIFi-BC8S~tyNv7GZ-q3h3&+Cg2uBEjF=^(U#d9tzN$;z+4_}p;i zaC3U0uz)O{#iVIDp*kX!;p^1_fx4kI-X*p==VkUN%*w@SPnNamR(y%l7***;6DSg( zq6BO<7_M9e`?b%V*_Ax2Cx|&6SwI#LBXfc!y!^S}Jo?^yoM+@woi5RxZqX^siK4K~ zY?x;aqA4ZSRf>0yH!obj_0f-i^6jtv+iVVTx0yu?Db3=Jpk>li9iY1l0+8rhY=W2O zh7z>F{#p&PD2O1_$fCIlIy(ls=e4hVo+m#J;o$jOFMQ3E)`b3}H zC)fnbrBNDy$~xV0D-nne=!lNR_1Ea^oE>$b4!}?<0F)?UpbiX6gaNwnFnAcKJ-P$N z$Ud--vgoA?9HO&xiPTOQTBlzV2}#AFR0N@<%X@GByR)zU>H34$u|8rL3S$MH2}+DJ z2&u_nz z&o4G-=jmdN+6gLxf*_^Gq0>u?t1artAz3O--=(^<)pq&LFWt_&>I6En?yGpU+!HDk zr7njefVK7TF|WKWzcmou=G0IuK}7(%duC}1z_Of`W-+s4j+`A6ZKO>(UBbu5+%A!} zrn0h$>c^F!QhDAIpaD8S7S5$%=`xr^N^l`Xq^Lhp9SQ_i&qV#PHLukNDydg03JrqR z)6GFEg;|&)YhK&xh%`ds74(m%Mh*6AG*aM6g)QO&@1iO5dVM~w9uad80PY51sB2C! zpm0)Db)0k2prwc)YUpSNABpoX{O)J}$v^q~FFb!0HfPIlrD(2NX6=qS6yfok$SoP< zv6KEWJ{d6??D_{{e^vE93wGAOJ~3K~yKO|Iv>Uw>)!4eC+xD z#Q+5X*eg762fNt@2LM1D(`R11diJZE|NTqvg=?Q)2^BzAM?%qR^T#^iZubYE+*hk; z9{_;E&Bkdaa4p2BNTrxB;%;o-Z{y{%d5Bd7sPc~=bBFDTd%A5Cyt}7Q)H>N{2finW z#-~JTw%_8m?7$jKaR1Y0Xm<9K+lazgxkhy}HldyR;QIb=s0YFJKR@C4DMM_pzmFnf zQd+)Zv)N43I4p*Gxy?Z@u+(HJE+PbT%B{#ze`bkq%yvQBo&rsaRSE|I?N)n&3qZ^! zLCmtm6o)va%NK9nxbN$hV0Xc=%P&6u@Sw)1!!Y!^p0lNl zS<;kZRx4_>b&}ED&FmvDzx3S~U)sF$HUOo=Gpk2yD9R*OltOysSISo-L+m95bkV^ zpGk^}J1;lm#d@^O>*eQfzVhkU-uUJ>AHMPCJg&Na2E@Q0XSg9}_yk)a&oFb(?#X?VZR04&p9$Ci6Md#9_f!(JY}tlp&ZJ4HRP~kG zB)C!nI!HkQ4Uh%3tF2qZ0-;A-LI;Eaae*)}hR{(v2@93J5B-9%w-6y6B|xG{FhZCl z43o>`2pxuC;rM&+{Q3WJ@|7l}un(L!24#+%6sO~Kxn5}oFXwc0cJaZ3(|0~h_wS>xjiLd82BCN(-$QD{^Sz}+ zntxyH)b7v6P^oopZRcBC+js5}xBu}cef{kR&oYheJ5PN~KJ}%Yp`evu#61a(@RT-g zb6r69zp^|0)*0D@)MMM{AySk@?n$C?+bImY<+XfkyVO3l<7bWi#XuJ!xAi73Z3>{0McfCc6o6en07VBvJc-Lx40C9Q4nZKYMv>Q z*YnB2K}hrQAO7dR|KI&L|MdL)Va{Xee?U<@HTVO6?O)^ZgL>BeT*fa>81N&Eoa1=$ zJFhJ7-kbjH?YH#iuQ(MmY3hVZLbk+U+n}x4f`Xi>c}hIyh-dT7IE70b9CjL6AhO0J zB)rNNXj6;_Pz;=H!HmQ)?S#?AQ3OEDgD$~K;#zy6J{-}#q+w))OHOq4j}JOTy{bwT|pemClU zEjK4uN7u6(niw|!6*XVd01ojp3dej{AFuD|`eFWtFw z@&4P#tJQ^Lk&-wAS#j;b&6O4aH_MQ09z`Q1h#TQNev}0M@lP+NO@4IeLc)-Ia(A$U zcW!R(${J5*_j$6-$`@U{diCJp-3zx_RNX9RFpDQ9=5b`W7GHejrTbs~dNLD8&PCU2 zi-a?0rj_-)NHn@j5i89Op}Dg;{53CLz$iQ%ksnR%w%} zU*_sWr3hA4@-4p4Fz4iMvF{zeUajwq<7Lp>*ROu=3tu?@%xB(z^R3hGy|tb;>>+_u zo-K{yotX+rOXZ*V3}nfZ`{c;5j65=3Xr8RF1uVffwQVpq@EJbACb!8wmHq&Q5g|YU z0y&jXmy&tyfez?hdTIx%YX|AUUc!R1bmI`qL(~vFO6gxLLW-+^ zaHWeNR416?2n-QaLLe|`00NU?ZMd8*Se{qYW*o<98ZXyry*j&dZ*z2F500_gzzgH3 zNffvMFmsWjRMrr8tx(@uA~c7-1(nUyZJFsOEMAKboO>U&JeTiS0sD)x@5!3 zVFb#@CV^d~`(|~1x>=tR8B(aydx6=LA(T(^6l0%rAVXA;({h=Y%jqBe!QcO*fBX;6 zE*|7G2f7zpGihc&0r>ov<3}043vc^`-bNO&ipG zS0~-pAkdulS_o`@4q8p134el3DqxqbXLAbJ0)`r7v_GnCE%=PqJFLP;i*HsFgEd=O zKPqy7KZtMra~&zA`ig|%;_U3|bGKy}P#fYxP?1|hCn>>l(U@#{@~Gti%cXsdfubSg z;z#YmM(n~YZ&`Ua(O@|X#kh`9KKkm7;XudHSEt9{`SPC~|M{12?~z#0WpzMo)t$isIUp%~i zbNKMic<22y%aT&>-i1IGt=S@w<+~1e1e8?LTvhe>`1IDT#iu@VFt0C8PcPvGi|(y~ zmlprMfC%QqarAkz!$TdG{pNB6d&^W+m|JEh(wsL_xPI$)xN+0YFC`AsG%r>` z@&Y^}VBG8Ku>~8H{=uc-!`j}jhS8;%-b!4)B?{CK-MoMom@`ODbCPAZyf!@g@Z4?A zra8m1r&J}?3oTROWAZ8ctruUucl({y#XHGdBok$B30&akQ9y1M;4{nt;j*sV}-K1JHqe z?FEJa>7awiAi6+Ul09P2*faF(7TkpaJ^Kawfl+zTdF)+#*MS%cYDNeV6Ui#2$kYe1 z>GJ60&UemU|H}G}uVHfxom@3*jO^0I8r`xWJu1+miUI{N_)ZK|s_>TtXCylpg+{RS z0_!|>xgQXt#K@u7zLP%0LyA zD7!i;wS7|8#3wUE-2Gj1V{N_LR`z5kn1Q`S?0!bpo_c5d1>gJB_cmiI)Ekk3B%Tbj z+mxpjY%Y3wZ3x;q)eK$z$=h^(XvFjYiK3;|Lnv}Uq&nL(P-TBAfC{w|FGY1^7j)Ga zpj|zbkIPadpu&SdML-*4$Z5J3V%? zX(OCfSP~@IJ4Ju|PXL67hnzfgVtGpW?AERRPyXva`kl|ew%$D4IyT$8|I6`LH~s?& z1Acnnk}$EPRD;>Yoj?3LzjFD1e(=qsiyW`3fJXC>;`}5spnkbpA>W##vieBL9dMfG z)ANh$2g}1K!mV?)EvdKH-pXxmU}@Ch+N8g8h$_J3`Gnw%_w%Qh=dkmoR>~g?f`3hDb@V=+S2MCE&TFKH+Oh8 zD9tvZvyXk^_N|wPqYi(xt6e(vCtuPv|L zSiJSd!__JSOmkD^EJX44P_}5=LnpIVRL@$9&#p4-I24YBF(rQ^NpeZ$R|Jk!B@YLJTtI%`+&o9n+{Df zq15D{EsoCaC_PK}ifVP6LVT|bW9W9aqDkMCkgvosIp+{0<(x9EUSCqrTB=)eHhPu+ z00@^1o3n2+7FVy{c$elgTZSX_HSqsmn{h_PJ00#;-qk_nkMs^|i~pA7XO}AM-qg(yG|9&m&+t z&xVwd%`I^BiWIiODEbv z2k1g{i7<#R5qs$d#Gc&}?S=G`yCqA*VZWYBPmhKSVSvQiy|@Xi&e3?@K3ZY0Ya#gP205e(%ibOXx(XA zeW1CE4(vklZOUs~tls+%(DGXjG=U1+?yk=9AAPm)$9L_Ine$3xvDPeXB63a}o7X_D zi3Hz$e{bC_X}B#oEdb^2#|BH=Le$Cwuh>_wsa3$)zV-YYR|jcZvBcY^mk6NK%zSq2lYylgo=oX};_twHS>;4c%r~ zcGq%uIaLInqf)rZ`TVn=edT}rpZ?_b?O{&m(`J3`@M@ZoOIqzGW$ym9Oga8_96y6F z;QQUA9Y*%whhWZu5c+wZXQo9L7U}Ho{rc6jFCO0+RTc*hanhxC+lt#E#WbaGqDQY!D0xkH377X#D<=)K0BJ1UQh-#e~hYMQVRupA;9ie)I9#41W!we zw7l3}igKGV*%1Spbov$)1hn`8`@UvVC36%EDa^ByyG9GFgz18>$dA)veEw6q|JjIj?U&clD#MUR#;pKN@*_e);Y_JKAuP zpprUnkQoC#&>XER=d-TM;}?WLecY@*NS>P?>+Jz(jxWt&@WK-?Zacf0xd};XffEbJ zG=bSe5OX+;w3NMz3oxuM=R4Es*;)Vm^TTg^{`q&_KELFVaqgI7Pk_|9fMuF74SHTIs1idDh1I8AN#X{0Z3cvX%xyU%cinJ4i? zSI(K6DW##m{o>1azVlrh=OJ`ynhR{Lg}v^UA*|)SqE-pEnt-{t0++edDD-ms3-&*k z0N7~702nE3r1*jka?p+DuxxX(gTp}ra!!^r40$%Oz1u>%VRoOg_g%Ph>$&0f^P4*# zIFh?CXORp~m1krEiWhBtz-CeDgktO2Wq9w-$qO$&_x$Cj?tbIz^E`$a@-#^oigzD^ zAk&0`yeCrZMC)kB9j?IPgfJ6?i?r6LUc1aXoLKbzoU><>AaJBHQ92;Z+1Jw;1j7*C zKfXAOdidN+|ItgYtWHiIy#MC$_r87p@LsyO1chd9NpgZE#{^IC1j}YKJi|9;Be7A; zZX05BPi`}Orf1)2tpP=YrT#0e!CDL;f#^y@07xeqp@W10x{xq1ED;wHd&VAdkl}!R zufrj`Ub;T?L+CmUy=x?+2ns~YRh&jTJqbLI^L%l9{OvEDz3~;h`wp?vP9T;_z-R(? zu6do%v=2*;Jb=QI9xmru1%ehL3Q-sJ5IjW04k3Do5~6jHT^E;KT=xC22ty2gWE2;a z4kDnDP$B4bZetf*m@Ox%=2Tmu z7jU|fgnK4SsnH2>WO5d!zxlhL`RD)qk8j^P$kU}e4*KPKwE-cFyGNlV6L&Z786M_S z3;w?czUR+>JR=PF$-MUMx44Cl{P6AnT19J;JXm0sq%JzIKY647N56CHfBw_=FXmTA z?GVM2?I{#ss~5B#Pk~;_Bri^nOw)XNbcySS%cVx5@bO5@<_-@njZtQ`*LAp>LuinsD9+R9!MvbL9&Co66PMJd`~4ykDNvVB2Cm(-gB zO=TNBKZajggEHayy1Z9Mg4{w$v!jRnnFuczbW=;-zf zFNxAEYY|2j0kdkzDd%j;um>n5z2?GfPD07a7R$wDktor+#1J6e3kttnG#GqlfK8jL z&n;j3wHFcW!@HZa)9K)J&W|>jv`gxqy#q8>1scazYvM;9+jI5yXK7$vi}U-|wQZp8 zB_!akPLMs9TUHv;WM%*$Qq_AH%~VulpP5dN*OwRL?dPt1^0g~BZVn%O@BHj|P1jC3 zGa|VJA&?Th^z1Inq{0kf95WiQ9g;Fq`v2H_ zw`NPS<2>y9GFMgYz0a*r_w-yj7+^2}c$a91=0zYSSrSQyNz0bQWP~F~I&AsXPkyt0 zfq#SkfFk^8KR6tYkV(rCWWba~5F#)D27|eDPxt9Q*L|z1wKDy%)~dZv&tL?A0533B zOq}VncU7Ibtjd-7<(FS#y~g2T+b-J8^;V>{=%&yJQ%TYLk-g#Q-rerbo&M}eOrzxF zb&bc%8Ym#Tz$p&jY^_^RX9q_wzq-9R$Li9RAk9p~kRqwD=sLOygfKA# z#xWo$G+|gpxmYY-`P}QBmoB`OF)eiznxA zfAis6Z}pEKBN|eo4Ma~L#76TWv;VHMt zR>T6$0*WZGV2=16AlAvk;1W1VrnL!kAAxUv$7EquzrT>=% zN)Wb`IV3<8O~W=IgrvdS23^D1EX?O^*R%&sH*3SJ%?kfHg3yLRvor32-egvJu1I!) z>u4}1z+@Q4w2l4BRz7aI?BmnR?YG|d_aCmdgRNGGk&So|z_kd6O3HLWlfrSQ0%BAH zsZy|HX4QZ3%xT#bY7@Ka&+NEnUzq@kx=#Id-~R6wzC90cI!b-`HRZ^OK%4#Y3~bdD zmSYd1s#$Tb#?XE01|aU{37!N77(F>6G0=P3I1X!%J!DEom9SAZhkN(Oh&WdLAc zCZ|aQZK-b*t06*w4O~sFQbgMJ`mvKtp$@q4@{SOH# z==(7^QjAK%IRFeJKL6@L`o$Oj<-dL~p1iv1hgs;XD20E_Ve0=%a=-zK27|+7yB+=f zCdhHO5Ch;;MNH;}LxYSP18_jxCkUdH*=ERg%C+s80QkgGxCNHj&I;`d{^U<;0dY+t z6!(SIgzheCqHomWlpXgflXjYpvMX%P-|nbXB@ii&{_Xc;7tl=3|83>0?>Ra6Z3aI& zN9=(6X0_U^SIxn~>7tFfJ4-`*7)m`QrlRe4Ec z2pr7)YRgp5vJh%%zTWiC?Mt6nY&OU5y?HIoL5de)b_{DOG6y$}5yOB!pzU~c(rvD` zDMc_?6pOTg6giBx?(N>8oIH2`(b<_L6Vbf7m)S^UM}F@)v3`_u#6>!EW3(T!QI&)k~^$486plM8Qc9Frz9b2Dh6BLQX%T=&Dt!Q2(nb@xB{ z>9armqAMX1`5?C|bqKmU_oUfrzTe=meKD{qFb zwK!5#1I!W=2zPNpN;QwLiXxN?G)8f$(n^w%4g#K)1B7l~!|D9~CWXLZbSI-TYm}P% zCVC&!bw5h5qod>5i+5gm^>aV=AFQ5!>#g%|zWM0Of8y({_gi34j=?wT8@G+eQG8I0 zL?k^TrEHRtA%`GD^2J>8{>ItY{!RM&pW*Tm;u9n(FWQvH!~I?8|a+Upiwl6HdyWiJnNc+`D`)o7K^6S zS({4?#4;M+h^mT!wBi_wf|?uL!I2W;U_$TvRo`!iVc2fBSZ(m$qs#XnY(98^)e23( zti{knh?yuHh#*WPR;y8Me700Vw)E_k=A@?-vK#3#dHGc*bpI#o;da>o)PSLUvRh1^ zv1t{|sFsq?E*Hf={g_4MqrWP64U!jg?_PA?M%Mq*xON**YN!0xp}hX}l2T(q4RU~# zO9FEHYH6KKiCRSgsh&M6=ckgUxOaqd>vq&2FXx<-o%JCZgrsC%Rwl3wHe7F)=NLB9 z}|ha?R6c9!AeH{Ksk7!8mB zacF{xr{U_s-+BGj$IIb=`}6k?o9Bb~y^Eu9AXTD`0p_>fc~&4lyH5mDG0&iVGrsV*>lkq{pN-8ZsTdm^3m&&h_PPk=l zy}~Fmfgn47yqM-GMNm0Ko?QR}VsLfI)cC9vWNspq%rPNF#F5)^?U0+|-0#1wA5Q%J zV0dN4xw-XOd3?k$tZr`Z9xTjVbBRN;pbZU{9G?5D7J*IVP6+1W0??DWyM_Q&*ifAK z5}gfzz-R7CDhP(?adYpD7oL0Z|@el|NYGk1`J=q13+3FF38MLA0@+wFM08eV^+ z9XE>)zI7cAI*TLGk;ssnLEsoh*SP}A=kKe!aaZKzaxhHsHG%#V++jA$p^Zfm@ zuc^l$s+>(v7XlYE|gh`hVWijQD*etqDO!uC9?)v@<{gbmu0!S%22~T1X zrc9BbC#nc7!=m)09%UTx;JwS2UpV^g=YQ_aWUB`cqzy3lm>>ut#9?58-~e-|k|pAG zz%>^-I7KAYfIW9=719b3FtbXSy9*E?-CYFY33M9GJqSG)HL`FE9T+Wqa5WNs)HZkK zvy<0<^8RbD|I{!3;>CMkJNwqx){ovb09Uf%#zK~w9+j!rK11Ma_YS(s{ zSEc9PQV-p8Fh3S0zK zr$BPYx~W9Cp|q5)RIyhM7$h@-c0~f7TX>4pyO(c~6wHYES=6|Sq^k;q>LTXmNTOpG z;?t*(x9bZ^qIpsObOnVqiY9|qDuF6R&{rwj6v{|J;S=U?U~+)+;_j(w zLQ3N>j@>Mb#x7?JHPYa{q)a#`pMY`*_bisT1&NE_BQ@P3qL1og@cInqm@at?uMb-uBS*APUu(?og^Z zH`}eBZ|>eb?&h62CCC^}3eLeQ+*k?{{g$~SrsgOBfZT6=zY>52j+_vY$+Kti;C(t4 zCzKhfSdv;#eNr zt;EG&l2X{7(6bY(o9jFG?@=15=a8H0U2@V(i+m z9c;EZ7?W*=;rUlyeedGR$B3>=p7s0_Jfie^6E$ik3YjKRm?0{APi`MPy!^3O?!5l< zpMUF%zIx{!?dAl=ehZQ0u51%1P>5T0yevUX>E=N~Hg{fJZ(+Qlxm#2;M07+T*EMIk6B6nSrAHWZRX_u2A%W7G%po(8h3kUtg584M!a^In z!)A8U9G=ab(d0g24Mi-$9m!KnG1)fJOaPbGUd{;!^r8 zwL#M*4_j@47Or9tPf3Goh-~3SP1EQ}g0TZzXrKgY>)MF4)P~wRl_7W&(!9~G4YRJ9 zce8_8dpMuXyQT|G*EFF~1y!UCIY2QoRjV_M(PQ#4A;#zy+4kFQTrM}47yX0x)8mKn z=4#yB*m^~eN(V%mnNpw@3Cp2uw34h)b#OFC(^dQ25Ts89tnjR%Mu%we>31%ERmztM z&9h?C;wyUr&1C4HG zV;VP}`piay+jJRwV?yrtP-H5Tv+ zq@7}>Ut^u~~eC&HL)~ZQ51PJ`= zC$axSIerudltDK|cG9xf(~n^mlb z1&m;>rAx_^2MuPiUvDm$?%;H`=qAiv3btRIU}5RDOFm;foVDiwClwz|Qat$-D*K$b zp^<$RArv&ezO(zHLj^_QE~>!vRY?Y9vI7ML^{mYc+?YET!b+%7fS+B7&s6U7UGaQA zLS^Xt85oqzwgYa4AnWVve!K0O2A(Ji_u47hr$EIE#UJiD>oUayxs*!k_xUe4U?~1; zUKI?m*FN{!>@YldxEhj-)^7T~8_m+x9nK6>NBTrVo78AYxEHp3yKDOPseq3iyKBpV zqgR%vXMZji;9&yZoUy3QJKfdchCwt1ZMK`y(_+@0c-THZd%9XJKK<#t+T8!jSI)QV zFN6M6SKVJcvb7FAk=PH^+*cGzi5UR-y$n4>4$Hz z@1pTK!&$2COWMUenT?|#9I%;nd_$PniAAQz0oAdYI{MqMB*v^~`Mv2=5`b6Fg<$EUNydyAuc&Eg1+ zplK*ggc`)4meBX3n<*^CDE$Z5U;jU@zxx0B<41sH+KX9`aO|R16kS^|lsh8~fI*Dn z(v1>E)dJi~3vD1$`W9=$LKAPK>6&(iF8H0MJ6zh>;c?k&?hi1Ec`lUab-CM_y6Pn z@SptVe{_EN{+L!m1-kWeJL_8a9vlGx0cd~*KLYgsQpWcf27HY7R=@h2_V5a+#uEzg z4TkmDFAk2dC6k#-RcN8zvC)d6FRu|`qag$No{H+)E ze%>z28tlMeR!G=^8Zg{4YWav+0Vp>;&efXvYON|XxDetD4yP-`YAfEU1fYT|rRab= zV~Z&xu_svcos17pOTYa;_m7&Hw>}|2b3$yp9X6}O!^3Dvh3+Xc7|dXBOWdn4V-^c? z2fae)8nkU}&C0EED@#>QxhA+9QaET|dE@@0>$L30)OY>O&>|!=&!vrS)Lh_Ep1#27 z0pL`wo)NHT99Y%_R1NTQh?DtYDZ^@+WrKRr zl1^p<5i?k#Xy{WMHmTJaT!!8`BD4paWqR`~SFe8J=%;`B?l-=1aelF}I0jv~1wvpL zJduqWNd#d^CRB=^U##yO&tL!C$yfjMO!UwVBI*VRgq9F3`PiEy9o?CqJ-&|p=q8qu zMG3jjPxO8}@??H=_qj**<_HT!rqe+PCNGI?hv&SQI7>bR?r@_`Z=f@02r`d|R+N3= zFq6_N&8BpmdC{XSB7+vpY)n`jpgWLpz2(qKs}f<+E#w<4gelZUb1=EzdH&AD*T23U z+td56uFfxgT)|BR=9*OC3X6>sZiz6Xr9wh>iwv!cZaQ67-l^2gb`FDQq8-M)A zakY`q`f3GGXB`?dG@is%H3&V@0DM4$zjNh7E)@_FC9<%SyHt!pNO8|zU^Xw+>)4e5 z6*7-Y@eC43W>OeQAP{LBoYIDn$Z;4|n`F}WX&4X$N`1QVdFW0K-}vOOe(F=d_#0{Y z_~OCWFCM(Te)wKmUXJ}%`-p*VOr>v_!UH9UH(;Q)3?XR4=73=#-J#Bo!u%NBVsU!f z9Ugawhte#Z+9QlEHo`5!R&E1ri0iAgUE21#zj(U*;DMjLh3l^(ZO|;>ioqc*Wp0^Z z-2|w@oyZ=Onlyrj5J5tK&mun=R~F5c1SM&i%u<9lXhPl9VEpB_a zbq&fH>^-yQyYQeUv3Enrj{}t=!X1yBY{RA z;G=s_44$@WTp?}XsaSUxCs?DMJ^XCCUIj`h<f#jeuFju*V zB6ljTh+tXwbDJ#)bJ>tH=MxEsr(7Qn5uvEKcv2hsoAcq~17f4Ix9Jc&}> z5duRH(KyD5dn*TzTf#2`4!jC=P{#V~enDPfWet_A4J^$@* zL`Wc6EKtBHSE$~kXrY^JwyUEVe&cT+j1vF&&4=@&J3|zmAB=E16_P0%QDC6fI^6<} zvx2E)ZWINmBLK~EIhw6b@6Nk^$XC_BPzf$TEyVY(qQW?@4oaR=LZ;iT6S)WGg?7w!mL&TXZYVTudgoW0_5~{ zCQM{sf6^GKodha2m>nOpOsh9>iZvF!kCFsOr_J*03gcl&tq<-4QiJFSfO?Qj&@v>m zqtk=bc9)m&-t+etFaOx;-LI;-3|odac>p3HxtMzd=^{2t0^QKG?v_#u1oTkKqsQC3 zFTMDQzx&JY{m~c4C+Dp;0@%=-8QfhOIHQe?DuktOPmmeraL=J^o_!Cs1)8;4 zP(@jo#dxWO!;qr|w~QOGG*=;`FuTm|NsUdWs!je=0>B8~z?Um;f`s;N2&c2xKX>o- z@dY;@dmDQhQrJcttsjPQNGZ7`AIF?vQIQauCWrG85C#V001WmQO6bv7|hH2547a9t49LLg-p& z;JE{8~PjFEA$VT@x;fVc~7 zw9V6Tb+NfRAFs~s^4zYk`pc(jv-Ry3qp1c75)SYioKx?xPA(V<_@=B@kCw)U&P`t!f_TmSgg*IrmI--jhi z(`W!J_n80*Yv9Erl}bMT@Yv@ReAJiUyU+j30l(MdOnXh!7!@x3K95^mkH5h95h-XI z-2JSRA?x1cH1@DvK7Vrh+h4fHzW?GoH{I#|RUBGxO(ii=j0ueeWcLVrzAYxtyBNuQ zKtkMQxm=I2fBuC#^LgXijF#YNg2ZH28qH4Lhh=kEp?jy_eo;!BFjn6sf5=^M{Y;qZ zsHCF$YZ+5uutW0pE@p49di;E-XImar%UxuTbMa+G3^Qq}a6k6$(5*j|o$|jZ^XI$f z7m~D;qzN}yS8fMILGLOFAf(}Nc1>H zHML~!FgMR;B)=)<$vkx7;N)oY_SNRj{P`by?cJvz#G6ZTh?{sclPoRbF6Jhl-~vme z(vq7Q4K$B745KZ_%P_wB^7F@E_`;X})gNrnFJ_B{#hB87pxFT-G{i;wa5o|G8wHnkX+pxQB5=6{l?%UB36UA=` z0XxxF58H4@TjH1s9#Y(yk|(oah-plHKWzKqX1h%TkU}zvDVYxr1N*k^B$*(oCr=~e z)d?Og&)VWhJZTjOQcQ7A0dd2T|5%RRbgzIPRn(2w>pHpGLvj*4T9u)T` zplc-FklyF7=jpt(G}KxXwx6cA;qlLDYYQ;ZhJ`9ZVZTpbz@xatGbaR7Khb%$#c$KR&a{Q=~S1 z?Auv$dV1$<*~h^Ga)O2CmdV!AD6}a?Hd}Z%d}uBE_g>bX>G`ljU#3&`ZgUxc)doy8 zIg&kHXO4#owaVR$QYt)(lHL?*WF|~D^mKp*Mt2t%!UZw8t;aYzeD=m?0{yx7-@TmA zkH*v^W!IblMAh9xBM=B=95$Di_WZs1^Pf6-_syrS=Ja7qZPS<~PXcGZP3a&U97q#< z?6)Zjq>a(3lFS2iy-lY_^71D?@#Z(aHpUcGbA15HtxcYjTmV28Z#>7}?r@remhVTV z6V-W;T`5O(;9rU)7J}N~DUFCokts$=Vq!Z{ShF$8>;TU_ zfB#!wKfgG?eCZSSPhNig>A(GdFmF8#68rr68YNMXCNW?dMghTC)^5@xquctz-jDXu z{gcoB%HMtS5C5<2#f7x9hJut*zjkjJ^4lun3WJ+4m4tKM*@VM8Iy;cI({3h<1D(%ae(s*m51QlS+2NgLzF-&H zP8~?FaU3@>j^mJ`4L8=0?%w2#iP|!x*dlT4yhU5m@PnQ`!RTF@GjO zGc9@M3P>}HMCF>-vW@sI4A}E8OQpf>q;L%pS;LAwqgMU=$;e60Hx=OgHfUNbb+%Sg z_=mV1Pu*t)!t=VAau6p!M)+iKiiBW=J0OZ0p=qwBQD7CT0g>eQ+PRoVkn8c5^X zh~`EXAy*7LGs8fgB9hgXGFLxSuxe~wuB@g7ptOq{|tXO{f|6($PrTD!V@Z*}!P zeciys0dEZr*|><%JPpFI=sGZNSC^}s3yWLWP!ybiP|hW<%{3jJZ)drKGH%yyvF(D{ z=8aFi^k4tCzx%g-_NT_Uim9K?y3M-36-fO5VN5IIU(4~MFyP}xj4^~DBJSR{EzFvJ zB^dwHUpQL-pJ#7foU^^7-e%?QBo0TDvh3pRkDvBs6|{}pBoND#1g8NkT0>L8=^i%qU6{}h+a9Z!(XFqlrOH8pf#M|}<&&*1i(Ns! z4Zd5AOOf_S$QU%k%!`(NzjiS&U;0A|@hi#?dz$w5@gv9XBgS3kzmol9CG1_RmGssKOSoSG{&JO@o=sfwxb zQ@zM%AZ86tWE_3$ zeS2!ld)Pd&|5!8t03ZNKL_t)C_(_XfOM}G$X{4Eho{;O)EfnaWpfdIdUb+xFXU_UEncpZF8*` zXY0owY|kEy7mqhLm$q3pHo~nH0mX95Cq@y;3hyN{B^{Ey`pzP`^=!=pWU#+VeAXtl zr3)mbb~7l>I&;|oCSPBx->)PgT9`kQRcm&#_r-I}MMvdHSN44E5mun3$vZ3>8+kTx zXRM~Ut6JVYTUf!c{TGdecvj!jslC@E{2Hw(3Si^Xp5_0tD`Zo^a6NFzPB)M!is$VSjKP!&t7&1TuJu6t*(nrtOQmV8Ft>`` ze{`&VW|bYlbS2Zn<9GI~r!i6Bzq>(>;|Nudn~RI(_08<`t^%G6IU7*8;FFv*i=@9h zi{s@EY7@{j*baGPx_UvpkPw~z(kEZ-qYY!CG?qq5jB%(y6{!Il5c3{8eJB4eZo;?Q z@R=K9#Kh1oKfLVk@Ql5dj#g6{ZT5S!_Y6nP0Wl{=SmUF;1=$kdw$qKzVB+J)YjF1J zClAKqxu@qVK!H#QC4;-Uib}|;J)#Jkbvjt^jnCZq(rOjAV|K>@jnM-&j%m9|-H9$1 zx_oM|gyc55DlKx1?!anm_fDJB7hih(_|hFIS?=L#n8*ty%qth+09lFvJl_P?dc&Hw zDm*FkqU6U4k4gS;Lbcti;)r7y($P%YS+lkQm?I^mkbTXB!lo}3x-rFwgTrue+%1>G z`erlSec{E={>*z{{v#iHcoZ|Ef)O4vnh6pdk#d<%gwsqyu4VL)21b~L^x(1M zrC)mT6p@mdC%Ds%Hqy38OIYtl^3=TvVC$jr7;Icf>Te#eE+1SxdFS%c+v)MUe*OS% z2#siP7g!pjAv8g{%;HFhsZlq}H7P<731b{69aX7Krl3^C*WxDnP7@~U#H$tLULaE{ zV6y6={)3Y^eMS8-RReRE4Jg_*Ma8miNfzVdyE7>vUqPr?=fGZ6uzNE(0bsiYVOqm( z<0bpc+=r}Si7>oCH_wzLPun0Bp=YFAADrSk4L9%sl3*j4ch@S`kqa^&4g^mP67?5((bOb(h{ zF$Y?pbt;q$)+z!q4$GV6W!l`pM<{A39|%OlW{zxzAC`CGp} z#?@;1)Da!hv`w%sCG2hd0~~+V;Co*EzH9H}FMs@%g#q8b$m0jQ?{_sq2%F7DL_!Fv z>gH>+PKCqz#pCApfBnb*=RbJ-wX>nuQw=js<_x2ZaMJg@i87e+a|qxvjD16>Y8o9> zRUyOB_ZLquh~vYPd7xXO3LJ!)yHm38iMq?>cn z(jiQsZ9~E}gU7{*WHPEGOPF`ZcaN|7m?9FK**$a5sw-w9xd9pIq!~!$H|PO zxn`6sCfCL<&bLj|ed>)9e8bKjZQ%{WERIPi$(&?MZA2|aP-2Rgmw4`8^TNw_9=v^? z##P(ip}`W3Vq$SLcU>HGP=_b8L^DfZ!Wa#LKDvV^ckeyvLfVcy-K}KFXa+IFlqgNN=)kSnNTZdZW@e(* zNuisMgB^73(aF*B$pdQ-FV2^*z4+qlrPnUrxq%HqTr3$QB*KLW6+0ZW{!>2ZXhuOs9zMKz?)2a%e(67a>x;5{??FtFDJ3&BGlL-s8;Gi+pfi4C3@g;JWO18}-f91z)gaXH7}5T&~mNe4%A zx3bvU-C&N*q3KZzl;EApdSR9?=q$>d*goF9YqV=OY;4SFDh{DkbW+@9C8G2%X zODMc8cbLK9xgDLli|3Z8o*3YkEUmMK7#*6mwA>nqaz+f`tX-8IUgU|5V)@oMhFnqy&c`GhU=76G)V5I(3xl-U1aBNGK!8d)~iHF+lAQ zTn)$+4cxMI#kHO+V9gL$r=S8^^||LnGI9-v38vJyW%=f8^q7xOWP(!R1?4hgBqGuW z_Z}E&+qAv%xP?R@!Aw-$#Earsxk4{sJZrNsrKqzu3}$eKsgXtQC2W$FZDo&zRjM^m zNkKV|&XF5y#spdNKbvJ*$sxF+C)W_p7&hif3g^8lmVuc+UrbbS;PaXaP*jlX^WB5C z!>~C!yD&?KC-YW0f@Vd=Wi(f^WH%kjIr$({3Nzb-9Bl7Wqk?@FJtw`#-ACB7jJNXu z6$&k%%MSg-lzHHeV4gFu?m$w|oS93ZhTQQg_nU>ojVj`RTiQFhGM>e|_fee+3Vq)u z*p7viFGt+n*r>;mA-LfB>f*WnWd3W_lnZzNOd zl|XEc?r4kcjT4PUhe=8%8I#V@o;D1@HDs1qRfytuYuYNnni2g;3qQwE22?*wDn^|b z-(2il?+bIVC|UQ);4Gl;9y6^>!FsH+KCsq27vHY95dtZ#2Mj6NlPCS@-Nmb)xRd&u zC+BOGkX%#)i8y-3C6$_W61Ur7y=k6*VRmsA)|Y*BySJGV~4_gV@Vpk8iKzK4Y$ zmG4k_fu_4u2?r8w98-IE(mkSkN=R-gc}i|M;SMtvsF92VVxxM!_E8+}-97y5FaN^3fBNOK zfA^J!V$l)@r-Y{UIL0wbP&aoInn49Fo?8lwAd{Gd?nT}fNhsn%7a<9AiW@)`I-FM6 z8pT1RXX03<{A70r34mE4Kuak$g(9awQ=YlZ;dnN-E-=juO4g62_p}%-CUEP7L7g;; zWn|iF;XkwXS)KsyaF`=HT_)hOdOr!UQWrx2P`IUt2%(TFKv<3N2pA-}8!W23x(7(d z00YP6{8JmYqX2-TVySW-dt6_(t{%lG6IBrjAIyeXf$<>t3J z$f6g64wQ=oLBCO~&o zkUg}w4o(EhI^kGxckUva9Xlv{ei`9JrX^;*0nfLqL@rq=sF=3gu7;Tt@Zozr@tex; zlUR^H6Wo7Tl3qe9RWxn&pr=^qyEO!Re*d$3mm&e){<5Ol zzQ3(|VRuiFL789~qO2LJ`dvv3?76<>XP&HN&JH+WW+2e_>H2E8cenl28^_x}Ps{67 z(=N8#zUyXjgsQ7hKo`<5#6b|#r;rFkk{*9!JeH3QgV0c8)qRt8sI&}|)|z1CnQR?2IQ?7{#{j5&VD@J!aUxd^ zUnP(tBmtyIS+cljk0C`_vd1CML}+ANA;)-`2+xG=h|$da@%*s;Lu19nL?~v7kTkL^ zg;r84ZGj*OlORE$fo?R==)GUReYs0jWu7xXPG;Tvx`A$h5-E+W3`FDIx^-*Gs?0p+ zJKy;ZrSMTBQWIAcM`5@Hgab%6XsUDCTWI?vmjq^yRL$Dwf^l9F-`>HB+~p^dLo_XB zp3MAA?48na(mYaHZwG{E)xE@VC|wi7=Jm@j>-aj6dNPr5uSDKa(PdYL{c3ZtyQ(9r z1Qe0RTmk`|`R1yC?rv_(EiMgq_kCGHQ$ZH8}f`|~{a+i!nK+yJ`ikFQVD5bLs2G*u+-_zn$s*Oul-KlYt> z|H?D#FRxy8o#h$j20qw=p6&GmR6d(+$S0|JhQ%cr8k@ij?~A6v=K5|Fo}24+dajOA zhftJ`RU5!m%?}(k8~W|-n}}jYb2C*Znf)|HX0TqHa4nPlqKOlcj^26#JY_m+=9o-v zQ5f#1%CN{gU_ON?Gnt?u2@xwZIY%N&E@~itQS5dzAfwcg{AHOww(w@f*6x40&$KARL!;xEBn%z7!7;Nmrc~TcFKBO{m9ki{kSTrI%v`bf>D2v zvJy=qQ#0>PK_ccDs)A#TGqZi?5F|iUqezSr9ij@OElvPX2r{mk-rSs@?bdrW6r=r} zjV+p6Jkme*uHof3*pbEtF={~yK}=+={G^GJe@`TVqd~O=0UA^l73t+G>nrm!_dNcn zE4tTCy{Od?M5<$O;hm370|L}RMI9k}I3ZDX-bl>Ejva$ZNyssiQznfJCO8(y09aU@ z%e;mpgaW2$39Te4eSkpBFlCv9Oeewz8P7_QJZck8CYU!3#H^x*9EHi#AOs4vfSVEt zLz%$@VnbZ>_!DYk(IoF)0d?8cH(@9PjD;jBL?gslB&tp$qyZYIfe;`HDV(U2Mw<0{ zv>nGgqxFls>lee?d5kup0jy3)MafF@QlZRI34k!b&MaV(IuT%ON@N#_0H45a5-52o zQp_aXjisQmX2~1{fqb&aQ!4OOqA(F5lY-1rr)=dXY0IgfbN-66SCDXhO16GZ3%1B# z+TLRStvXPfJD%b~({mFcP5a6Dnta7KID0e!N;F%`ZQO>Egk72g$uf?`M1iIR-jqxV zEWIvj<-?ew#&N-cWjq{gXc$0a8c#_Wg0t4Ab3UChOl$qEWAeD5SEKrseMKhz0Y~VgWo2?! zSjRrw>>P70VYlCJCg79; zFo{Eul-*8H#3(8rLI;kM5H-i$uH*}(DZA$FwF5VF(0h=ZCaG!Qo^pX)nC&zbPOwz) zHe`W=ia<9`e1_n*wpf0TQm&`{N`#Cm8UqG{h7pb)>mNTp_xfu)5(2w2Mh!uTiCEY< zh!$l*#DhV-xX?Xvbn*4g%ObUd2cRM`N(fX{+Mo5^UauN98cC&r7NjImNf9co1NRpf zFw@ihaR%rQW{jA$Vj9GmF=d@2skCqwjml{gkesovSrVT!v&a;HsU2&Su9k|zx!GRW zjPNEzBN9zMt1U_a0;y;fwBIjhRu<}wOP&eQZ|&`M=Z~%&zwg5J4QY0%Y1pwP#oDzK zAc2V-MSCk*DR4-4YLzS~kSYV}T)DY3QuOb9{Nc`_xoa;xKfbkfjBD)<{}F#h{!PP?l%m6?+YDi9?su6!UiaCs$g~B3htxy$4 zbcjr_qNw0^~CZ2Y?a+sQ`tTzr+BsfF$#Lh+2+*3*on1AQKFA6U9%?^e1wb zqH1N)0IP*UAkxh0VcQ4h4^W22r_A~kcAz$6IDKW$h;oY8f%%W})3Uwt#KJng!(_72 z952qRP=4AI{D|`0NrbeRO`Xxay&U1R_dryYY(z`&9GWnQ!!4pPMVzz?^MKFys8h-r z3}R+S%$68ndO__Ulw$>n7eqcK2g9Wd>{Kbt&Jg;>fye~sthZwuP zj%c{^_?~~ITaKzNPy-@XFgsNhQ8po|sZ6T2*YQ{FFF^Y%H{cyKQuNSo z#tq8a^&~WLRK*!~bB>RUxBu=(kNv{$tv&PVz|YR5VFXM|mjUhjPe$HViZsDLlpTw( zC;(zELsRW;??wqr%ZK{2o>^0I;Y0#dfY?wi0s}5_cE}d5OqZRq*ooADns!<=vz1zV zE+2h@5hHD!zJWGAiOjn+Dlb~x&f@iy(TkP=Y!OVCwT+WGaBI6Zq02XPE%-Z*%w0aeQ*=BOA(-ftI>+!71IiA^s3F9a!`+RQg`M@# z7SmIOh>nIbx2$t>v(<1zB|w5kMJzN3dyWyKvG(T|%Eg6xZvE&XuLZ?|yLY)#ni#G8rx_SwK;VK%x>UV~U9-B%;t-MSbDO zIbts~-W|D~+Zc>jtI>lGo?PzwSHAS6!PTpf8eFJGOPv82>eOk%}|8xqoNTR24n4t&*4-L3xsWF&ezGngnb zT@wW;mk3B*pZ{xr&Xcbu<7x`=XZP058O*On%abuuDhOH#(X2pNUQ9s!|U7-?#H zYXjee1DUHvjFDJ5lBOOF_qU-HbCkBiSN>7vR#Ey5QjE(6o!Ruv-nd)Dp4bsPLhGR= zUn_^g2-7`}bR)U2gWW#m^Z-n+&~{?)3X%#^Z*Q&cUONvRl|X?~*cIKb>u?|LoMOi{>QJYsUD1VuzSxCubZvLk{z)Q1)qx3|`x{Pu78nVWGR= zuXS)yl`{E6Ct;51_eb@>!y(Fq-`h_U2j9bKlEi`kA2=FibtWLOKI$;o-kx7Mgoa}i zyz@*hSBJ=KaPtIIEm7Nk>N{N&9n=*-(5U1D#9$S2wL(Dbc?QtIwRd=zS$kOqE3*|=&JwlI!UGIxj-k~M58 zcOR8nU@}zb`~(Uz5t#{SUJFQwZBV3`Uh<5fV1}xSwiU;ucPqL8 z03ZNKL_t&p!V1z92fs>&zJmmAV2kG8KYQS1TeF(QUEbA zYh++A0n$Wipvu8(5N#SXL7Fk*NJiWHd#n3f zm%`pEhTCX%K?CB*r6=MTnrbAj=mFj|ze1xxjZPO}I6xy*1VYY1iQq^bfi0W4P3=l* zwMxb&&+;;@x1HHOmfdS8H4;Lv#_BQW!K`-9)FATGTKoy%H_AH^`_}F>7L{55nn7t} zg=I0=Wc%i4ha6`>b_pnBMpJe?Az@S5md;S6hqQ)fmNE9)UjwuWZHyn*OQSE>pcys9H2vVXz$heAM1$((ac z62i`0m-e?WtzUWt&A#)(MBWp728U)e9PO>?Xd6!90foi@Aue+z6iYFW>ew+kiJ}m4 zq$<^DpFNi)Q?>nH{=_Ff{)zANz8H?Sx;-DIA~*&@6CFFif_qNnpgrFLMqg9Ajc;)9 zOKS0)Kf_b}soFb6@+P^FU$=In8*uCM-K0E47OfP9MkLzEn;V?;qT zR<;A_RB`sVYRTKUeY@dE)8l)3K<1ET3r;zw8WnAo8|^=18%Biocjz@Lm(t)HwaKSlH zK^i=JU)8cd#{5dRKVR&xkA*r`D=OBJ7^5+IvqjPERD&uCNSTE-urPweI#3hb;UgzE z%hzNyAn!B=M+HSS(VIxQ<_257u9*;<2bN^*8fJAA zyAmKu{lyZUn(Er4q#zuG8mLprx-1Mp8A1}JJ2P9(FI0nV2d|9^;@aw3=j8IzJ@<^p zJ387WX$)snFnJ?!v6@G2TzUtABOwj}tOQXF(G^0%a3wqJN%S~J`-d0$_q_L8Hx>?E zefg!)#-=)_V!EG-sLV_nK~~(4M68UMLu6$yR^iC>f{55NgVicnSv0`8ge5!kBOuJi z5n^T`m!N7O(^t%h6h)F{Rx>F%S)WW)Coi`JYweAkE*Awg#R5bEV2Y4-L@+5qSttrB zRV8(%^>2G>Y(y&wRS1=aST-!xNUJ>=Zq$S8GFq*6u4=Q5un%h30Un|r@Dj7>>?tM^ zIl(zf>`}^)bV+1`#q4+$CqPYL;sS<%Sh8>0LIAU|M*x+UjpKB}`AIf+%I-Cz9|ZQv zDrNwyr)O^{l-RXkSl;aNpk-1AQDT?0n@LC`rF!3%4j_sE4yrW_&5=mb zIE=ijn(=Fl!9z=z)wN*Z28#=^L4O|b-oep$z9+jIZ+!fp{rC_4<{$pRuc{O7 zcE0tOPJisxPyCC2@}>Rpa7RD+-|P2(hW_QdUj4lf{MPsUoqzN^oP&sf4b2gPFgvJ7 z5N1dC&R@O!$gkzr`p_8A2@a*f4KC@nP=B;y1sl_)4zK9gG;+#JpbY?PxR(SZ-3=u zPtIO??v1Yw^MT)n19S7C{)!ZIL%X$y)4pW~g9U`B!c6sOZ>cx`@$Wb}H*@_DU%1{` zx@Ub@7esw@DN00))DWpx&j(JDaddGse7BI6}zw{;e#+iiEg%?{0IxUsgjboX5nA|<&c6HRNEDO=4Z{{a9|x7QzS zZ9oBMdKXX?ONzBeFjeoxegPtj+c3Ef$}Ykl2*@F%o3HJy;1$X*v`+o(&8CwZxkFPn z)bv+Ig=Y{5mP~BB-N^cxKG(sk(wxjWIik&6N=ZXR!3sC7tM$$5j^+N{?_NCp@@`%4 z&lGb_(}2W#Cexi$Qq`&oozgEKncZL8Ce|3G+bgPOOa;bc?e$z|rdRC^2@r{rG;AS) z5KuQfe`v8gKVOfBQH0SZp|_7U$)4tW)He1qaSW{Q+w>3Bl>LthC2(r+SiEb3Tv}%M z%xoW>0(G)hV~8;XmX?y6Y0FA6QrUA0ON-Z6cVcV^1S+cWcyn{-$l;Yc?tN(W%g>32 zV*r9Eq@@Cg4a7o{6ct1wBos}UM_X-pk}LunNa4mqxi;Qkp6{M`_|e%zi?6--<-w)P zA_A?L$^shdsAXw6mmp$cfRxl67cs>c7m<*Tg!Pj%jtWO+W=%p4tZDF*7Y6mg^YCynBj#Q&Y5SQ5=M2-9?TfL%(nV*(>|y*8uG&1>g={3j_}_hQzTb6^9lsYx@A>ZjPyhbw zKz#balV@Lj9nXL2ft8=P0%Vf=F+W2P(wm|h>kt(R#BQ(n-tYVH$3OnV3y0>$)lQ6o z^LsimI&xp$vXu{g)A9R9gR7G*#Z6nLTYcs$mtPs(+R~kQ@~OqWFJF3PH1%Y@w!p(+ z<5SPPnX7S|R-JnO9eEC4Lz{d5hn9EE^dGMO&S%zd|BKtTzj6a^YHwyG-J&_?RJCcE zvMfUg^>{E}^7nn)9qQ?iPn})v+!aEXA`3_~cord8i7&GxO)@3T^){BwxRQ2KW-iLu zRG|s$tLt@LEv?KKJtss?DL{xcPQ2bUkqHb|2U5x|nd2d8S)rV+M=F_8(xNB{*wEA+ zn(f;g4atm014eF72h@a%D3I_-6$P0dUm}DWexyur>Kt39o%Rt!C8luD~;#EY&gjN!hrH%@Rg~dbHouU~h-yg;9-e7jNv#@e}>)5q= z?NTd?g3v$$6(w4dzsymy(07R^*PA(sXBdv9of`8q&;WDkuroOgv;uT;N<2*pU87 z(Ssa_qBLXi0SGx^)A_U7*i7%Igk^_xqzsW9RWqN(WMd;~TP;xu3LzG&N>MW!(t0@9jP(E-$dL*t1@NaYDf>lmU;uAG zkiRDOM9y@9;0j`wgn*n+96562Jh4R;EPL1`UeII+B&UnXrRXFPu_T%AiT4F1M0MVk z4saB^E>N>`@$6SoZQ{(8*M9oghh~cBrM~~W9y{}MzjFV5M}Zf>_kQxD`ddGBCLMy1 z=YN+E>MR#LgvOHgy;A}Xz3YL0`tcun?D0pLbu`)|hI5>P_j=PKxlOBIdEt#$F!R1| z>)U75`sJ^jdl@rNe*28R9a#H6oA&kQ1^ty9@TYB7VytNz5%J!uh%^J&jKBBExw)?V z&aVX!EaNhwZagQOGIy-^Ts5@VxEBf$&oRG=a|o7+`YFCAW-Tj&GEO9&0wh!?u*#G-0AxdzvRKf>EKFO{T^Nao2?AA4 zGNoC4QJ5S|lf$tX8^H?;#7-M5v@ww;YEN$6_4OYTZ`H{AYA_h>?{|taRO51H))U42 z@TT*a+ciQ7k*PD&hxdq$NG8g}2vpItHAdwKi7>!joCH)=Y+^CDymGxP zbUYSII)Orz5=+U#H`z9!9M4c#vaF@OOks)Eg*jmWEoY9B7-@@!CQAn*+B8Ij`T6-F z)?%nRIu?--RUi?}sazXb;nS#1(3yo3Wh$I<{3Uv&Hzz9<@Nrbh@zLenGL~!85$FXV2N(+OT+04W#Hy|05Et)~p z64H#J9#gt!x|ggq2@#DJ)gcKaLgsI(S8<{c5k*j~fErpO)~vxrCLs>s*l-+4wb@jw zaeO7#*AX@$LvSz;hYhE-1T6MIp(X&&tm-HO>O@BUOTaLZ%Q?OdXf1wLScT-)M$fUD z36`80|Kv!s=YYh>r)>Hw5s?RsaZYLSVa{6&&Ns&(xh0h94746v<`l6x24?BzXJ@9m z2?SBj1SMFdVaiQz8-f7S8`Jzb(GtxgYqIl=^GWgoC)Oj8ja#O_NvM(GbL%gw|@R*46gfP)O+>0Pti~Q z;C=tsAANS^6W4XcRz6Ngwo*qhyV6Jdj2E7vG%vl z{M@CV`Fl?RIQw%y{rJzmK_tbu{8wN3olo2coc;M<+QZCUf9D^bcU|rFKk(?x901_z z+1I|bO?TdN&#|pHzPL%i%(pzbu=nDX(?g)Y_@O)N&zx-@eEj(RJpj0N_S}Eke3P}{ zYicu3KDD@asd@0k41m2$m;Uf#@#IrS?ga3}Jr8cK{`%mJwm(Ra6 zC?9>#-4FKx;PUBLpItY;(9#?L?0x=Eu3mV{E9^Y_-n-{7WNOgiJ3o0>{pl~R&p-U& zx32&I*028ZslBQFr`bVsPk(U9Apg4_edy`K0D!eCzjO-k|InQ$06h8NBk5y~4D?q% z_T=(B0N~=OSDv{JVE+Bzxx9P6e)R4+0K4bU{r0))O)vB>i5u{C9LKMd6p7m~_VGQ@*IyWm;!R_fdK^amea3O7)@$mH$s06}<1grc;- zXo$Pl*N-e5l13OPm}|47vQ0M?3b61!DUs`RP!y1W5aGOCC{*jZA!PWhy#>RgT7Z+N z==8@lk^gAbSl`K=(gfPS;VW`&-G`fQ8E^U3f!4Z%x4*78?ewghYxk>;I0~epq9{YC z_xHo0MStx0p*LP%6>U&=9Q($S=p39U2FDo2l^i`*Zd@y?{h&%3oj7TlP}iYb_}*-H zxI0t{szDSiBtonRL5D*eI()d_?+?bKsG2>k#9hj7l;nU}Ok$wa?&DHQF-Ib(`393w zVYZ=5!7EHkO-#kN5FLArhmhBW5jmnE#uk znTS$iugw_A_;WF_400S`%3e%H^#r3xIW0!F1CUwgE&nQoVN_#Q9#WNHK^Za)Ur|`L zfhY@?5u^i^9cflWxDMF}n->s<&>CP*g=62S6Nz?4&z^lLqF}G&Ly`^1#oS!gzoiIS0q4McfB$I_{-2es^8RoZNF{q$ykLIl3)?vtJA+OorIPjlE50YQtd~Y-qL>4&LUsMcSt(3 zA9&>C120}Yvo(0n;tV#2SnAJ=F|$;h9#->9eT)ZKI&}Z&`fq;q_C%TX%}8VX#s$56 z;G5t5000dB)3d9W0ib-azxC_Su44Jf4?VDW{Nn0!&#q39f@Yq4V&=-1Uwe57Svm4O zC(BD00hIH@i@$ohR?M70`S3~n-e=G5_Ln~V#L-7KE}R}#Pr8pdsXj$a(VaE>EFJt zm^u8tPrm!{!MU#v0CXPhZ~WpPU&bBB|HdOLcb&WZrcTR^ZosXf*7m8~u!~NyHNFAu z8+^K3H)gJ?%6s4GbW~MTT*2c})d6$8`^_ik2H!sa2QOT_S}n%TVxt`dVP(xso>pJb z;N%p~BnC8UVsNU0NB|e=+WW$hAMOrg)vO#@=`GIqf+ay38dX)*gUPBKA!$>GR>ch3 z3Llzpk+`tPOC$2E*bYf)kfNo&O)+;H$1WZL2T+dD^_#+3zy#(CmK zE%!M?*$Qom2_#mEovG-QO+6+dWo6URQ<0|T1W4&ru1H!3nY~hs1Yh>SUbV`Fdm^cl z(%bL`bV3!=NS4!o#h(fRnMCAo6U7 z8DXpq`cH=*vOd3tC|nS`LPbO!q#6u|vvcJgN4o24<#4ZIs6@m-vC-&>3xYVX49BuK zs|$z9)xCXi8DlhGvaY1xLBHQ0?(9QFV*nG_X;5`6freFcbiUi0Ul?p{s*2UUP8vU? ziqvU|_@$0XM2+f}(g4hEP+?_o>K12CI8p^-^Boc!J%OOsk*4kxr5a1GS5V=!5olBq zi4ubp0w}2@Jzy0zx{B`<{kfUl^$jSqhFB9^NsPUn(RQymcGtaw_4V<_Iz)-0T48e# zQIZ@^+=iqw#(A(hyG$?x!m4nVOyPa$Rb4%(cgIb=KRSG9=Aoy*Df~v-t>KzC~NTS3B5**Y*t}2mZg=RN~&Cpzz@f9?yz%ICf1EKKJg-D33 z@Jt;8;T0MhyKpOx;d~!11;c~u5QVUh~3S^#oju>z&2jn#If(T%Bl(M$c1F{OxmaCo|0BvnnrX1X0 zNhTa8Fe|Hcrj>#?QG?KOS}0LUa?Lp0u(A`Ty}ij-6N9*&>}+|lWk~=>oL>+GkRy@I zT(X4~M97(SqOfYgkyJ<^8~!I z2YKbfN(3mgvV(KP-kvh0`V3Bp8IH(_Wy}}_3&=7Z7CI*wZXq@*T}cX#(T{_U^*$N%jIzZ?94kG=NCKS+^Y#XtVxdw&^soqhGSDFDiD=i%fV;U|RYt_R=v_y2n1>HqnE`7e$E*C6C1c6biM(`$9Z&}Q`N=KXi} zfKk17yqE*#7K_!(!y|Xj%wN)Di@5e$4K#a8cYNr?<Kw*P@ldq z0Dz7CD_ETC0aGaf=#_IQ?|kCk2kqmgncMZ{^}7A}%cnPY0Sq@!Z7iMW1497yrHvZX zZPe^7AN|N()u%4h05DU|qdfk^{SVu>8~ebt8*nf;V1576L$h~b?*isd^fyke0RRr) z`N@ao($2T&g0|gp{6`MH>Uk0gX5-rI z-kNI(QZ{2+g~%DRR*A{P5THzO;8@A#>eg&%`b#t2UdM@JiM1*NK@)ZqTSgF|ps3m+ z!^So;l}<{t;N&hb2?}VA0HoPFe^2f7p4j|EfEpLbLLDammy`r8nyH+GCDV%NpvvqC z0E=>rEKmoE7EYeHo#_MW&!&MobO>H(6&#K)vo9Tmd1FgD6y5 z^M@=<&kW6k3d+lG!U)qd%vaYYjM$w`eQ15J8{$CetCk?78F|$M`2+8`SIviD`ab{I(npg^2GAlm$wuWLu7U#hzpJbh#WbIEFs{~a%cV8POO7tFQSgA zse?)}H`Cu>K%z>JNL)BXl?V|Y*AlcdbM)x?#dA<1h*Jh>67?kIgixBt-iCc7cz)zoN3P&ID$ z$O>LNtIn$i;v%u0oZr~kp6M;z{n&fYeBpDtzZ)6spopYog*rf14kRt;001BWNklb8uOdARW`&50;D*FA3D=6CU>1jQ)T^8O`*Z!?$$K6+dTjH|D_2gv6t=fe zlthHO0bs~$B!c$@2g&bb8c;Shn1hv2RT7`9Mw*6^k7M}H0l??Nd{+9%WM*LamfMT0$hR|k%udd6r|1+fjl|e$0G>=dB79#blwFc zeWctKsbH9?X%GWm)k8dU>4+eq@LIaMkm2U_H}*H*nC;ix?CkHag=#-GW4w6o?0@^N zpM3D{-~G+sB&Fwm?KAi%-~GvZ@!LQ3s&ihFN=1w&dhH8PfNhoP;d>Y77w-9yzyBTk zB!kfqm;(jpRH5u_7`rrBM}t)yxwF^I_J?O)8{+u7c>w+Tgj*Ub~!KC}8$2b}Q%mz*Ii)fj4fj@u_Dv=I^@u6YnoCpMLe(5pKr? znr?fiE-XEDS7!%H3+vZ*h|pjD=tKD2e>i;s-N)W{^ftd{qS=*?J%VRHbNT{0k3V_r zHv50A*7aW!QqW(hX5zj|9AR3%gZDnrKXUB;|NWOwZ;i{&?844iL?aQHS`AJ*II~fP z-!YkSfTXEG>KP(2jKkX1^|@-ie0ZhXFTG<52mmt&L5Lty5Z4CbS{@W3KwD2B!DYtM zo@U@{!Fh=R*$KK~rngD{ z9j77P;wjzUg_zzw-KvVLU%qP+pzlB>8xWW{s;%zCMW1~~#scRvbpACN-?!?z#DRIUom&Us7UUwm_0ez9G)JOZ zuR;MqG}Fg{p*$YfJ3C=%xm>wp_R8xUotdQ=lp&Y=SSXh?r3oQjCS*L^MJVtsL@> zgNkSX0zw03L|4^vb#3RNd+$1O&qLQKP0*hL5KdZQ+cPWRn^M zxJ2boIljp;P$IxjcsLWh8A(~l82@OMXHq~w+asH60ZuiBsmOdwyAsMNMlA(sO3H?_ zlugS`O)MsA^BGLp2EZh3;0Ah39vz@;l;`A{{Hyk9wg2XKAUk+d^IhUGevPCN2$0HAO*9$}*LAc7j+nHT(ngsFHRT3a zEnzBPYW#@{uPv;B%A)6qR2uKJTf`oZuU&a% zxO273`{Vt!INH)`h!{YMul)XR;s5;kzklK1{B;1p^XJZf_@Dm_{^L(QPeFv!({QDC z0BIOHE{H@R$G`2n|JjG%CyPt>EnIwVJ=}56$)nJ{7*W>)EFN3Ll}(_xbl>9O>{$Yu zE1P)FeTT5QzK7<@X8FLKz}EI|?zr7cm;VEfzo%bf^B~s#^=qSg4~q|-EH7Vtt234- zmdjJa8vWT5z5P?SRNUFUaQ@S{`>B43^?DaekKDC+kPGydZD(VE2bUf}ed}SOwPCf3<&%eTVGZc7Ja%~R z#h2dB)ur~A#0{XE{`m82NtxRwufWPAGTOPLz)yVmp8xx|&u&&HLU*~YodgjPB?uA3 z2m{l>G9oCEXoBupA;jLY1)VFHSw*7AU}Hblvb?f1yV&h{S4F8~bV|fdltL5-0+VEr zH>K(#)jQQRL)w=BvQakKo^>iIy9c&RYc3DlCjV)k%CmMNS{KJ$4*{`}O&p^60HTz5 zK@KW0#1KqzWa3v?YjYANX4c!X+2==Sk*Ci_IJm# zy_uDj{_3^u5Ju1*HwYds5F9hJ3XjIa5QGq#Cic6<%xr(OzabJC zEFqHfjVcFf7^A9LoSQEe=9|I5sO^-KYYa9A0AXbzv3h-?8k6cEF^tH@LP{#BdVl32#yvO7ToM? z*d2fv+5is0j2$-~x$~En)U;FUto$p%x$_sm28&Ii31CHXughhCQxRX9827B1daiJ}x`MYlUse~rS`7wb%bPR>)PpN=MAoQV%!P4tI#G%?t%zse))GV{DY7F(Jy@oN(}wf zuYLNTe-xkjKT`g68ecI8pyasQzy60Wt?hjAwb94!KluaqWADn=HOx{` zpc;Ph#jOuMcF*_S3!pjs;^iwK0DGGQ+&QzlS=-+;kM*y;SOdV)9p8W73;P- zMpvJ;@7Fd?-Sw^ye{dPYy-PzJY}JeB_dfaX1D|{tSl>(6v$lEa?z=zop{1$)_b#s8 z`BY93&Ta3R=Qcj}C?f^&5m40V`I)H2g&q9jAHVwg&LMP;*P&=a zuneZ48R@f#wki}X(d0!SmbavAyjE3`$bji^hER)2XSP^anm@EW?>l}RWZY;3iBb@4 zK*A)@07M`XqQWv0kWQsha|(b3Zj(`loH+-8&}J3b79ogbB`BoL!LyQ_n&j6+Nvu+C zgr?GrR=bfUa*QN_C9pI=pxA_FTvy{5YKnrWfQ2yZ!W7xR$m_@35e%h7t<0pSDK{X~ zpp29{rKH&=h8}#d>XjI%oAKR`J=#BhjF*?R+uhx-rGgh92tsg?ok9go)LQGN8FLuZ z&d$!Mmvq#SbIR<9l}R+*_u;>;b2D4}K}O1g7(H5E=j90Y%ezZ+h;$wfBh7w z4~mdc2?iAnJQ+_niNH`Q0AyGo*>cXwP$Ez4jZQ$hS`fL!U}9GQB+SHxnvvmr!n#s< zOGhr-6YR)2GQ~h*a*jCTk&cN8%n8GDW<3}_$mEO}PDBJwv=HJ%hG39uZ6b1%L{B1A zih@bw>`bvR=PsNdUcI#C-JB~>bbYtqDLSs~!WA{Jzp^wt*ov>buo;GqihjxJeVCu^ zEY8pD?+q@VzpN;H*(K+?y)?GP84@iHI9tNUzUJ{qoYw zS1+D^1D!s~9+lnR?5yjQoqop`0Q zh3|KJ#mOU!T<^U0!WY8Mbrfo1gGda)f;q00V_yW#>96QIZQ0Iu4og;Sa z805(pLaffgIrfeVA4&VApY8aSemCy#te-o38bCfZ(Pq4&g@O%~M@nQtrY~xOcoCrj4XO>aHi;-!xTrDi#jpig)3AoP z4IM!ulnEV1Y3_?Alb^)U-xTeW#QXypCkJZ&j0YUlr~KVqB+;t&Qi~je$vMq1fBHFf zY!S0UV3}xcx6jFcNMfLNQkPVHCSd^^?@4B~)ecHI1}RsVhzPDQCK8bclcurY@_Lwhua&P*Aqc5GcR^E^965|p55jPJw6&$xh^0|!NGsJ^ z_<&eB%bkE1wg@(eIw`2a4pb-?>^e#XxWn8@Ccf{0Jh3C!1$*TJt^@X<670dAjAca5 zv~-CrBis>raxUdvv3FVkfD^ES9cc$rI#A(5zgtV(*xfoezV?a>yW_#SR@?9j5h4$9 z_JqhOk*Yet<<-y}8;&tL=Q^E^h^R`Z@4xH+WADwnEjg|;v2X8)%ro5i)_|G;5EBV- z0!c^&D1j2mrl`RZ*^(%_mo3|?TkT;jyZvN8_{q}`@QdARx&7o`UXpsUiKYRSd(a~t&J%eJ5(R(jqJVKo30agKO*TPZZuaF{rfj;B*x`(Cmj~tlA1lL6kuxU~*6y?~m)M z3ZYp#bjWvn*J~3|DLj#;xHYkfCTL3sqMXP{oU=ZOre6Xn7Ma`yLwZ#6zxH#Rs7o`_ z_bugt()YF+fR%)Zp%KIe$|WpHBN032y!RpjG3JbkgW!GcS35NC`0ab0rXb4_CT72W zo>05wRArd#HcYuGwhrk zTZiLr2khHY5-NA%|GeGy){d-iHA7%F;PrYfLb3uM2pk(KiefUsd>_Y7bho!$Gl?Py zfh@M~1Bg+SuBw`)<^J44cXwE;h$V#9buF>iDShF6J!w#OC5k=HF^DVBM48mhi4!NU zzw{!8Im^s^;5PHcYz(qA=vE>W2QL5Cuu7ZYo{DqK9(%_12Z^W%I$clRsYFNwAW_(I zR&(W802(8h6x76c;_frsFI`By7j;mO2uZ2Rb*E_ zkqRs*D6n_j5g3sHSdlJ4r0CS4figwQhb9Sy@08?1)1a!@chz;On#QAQ7<6%Qe(BNo zt-R;nSHAP@z30ziIO>oqTse-CDGg8+RV2y{0nvy_$Uo1rK4u=1B5wFH(PwOGH0cxOuD*$f~omCENjabtlB~WU&aVY@8tR}fnZ9!i%%8{}Ezd#5)GII-?IMzOofIlEFwq+jRU|eN}e1dJ1M#`#D2xQ5u_^6s47r_ z3L}h0+fwZV!Rk!2w&fSvb5nL%v(v>M$tCl~u%ed#!+c=y+nQ@+;zf3lHu96);B0DB z_8~RZ^&&Wj(xF=_bZ2YprP1}5{CK0@xdxiRHE3!oI;spfg3I*~Oi?i9<4^gkgDn;wWi|G53T(0=R& z+|usEPMO{Orucv+TUgjCmOEAop)Pt|p{AMaEO!<^|A}|~-dERtaOKrWaaeq3Qh|gE z5E@ZJAOwa2UQ$J!);w1cPO~r&1OTEymB607RAJ}Zb~6b}D=YKMy`m(l5E3RPs+Isq zRt7eL!~zjHgzhq|W>$|TO2*8h+&U0u5I~b64x8Q6S~_iRfK6UGlFC*{h}B5OQ8cZ8 z4g^-OP*CAqbnJy1kSN5!K$+>qte0}L!*pw$XX;3_X4LE5@^m*3e$yIz%B(>nD^R$4 zupdSvF3X~BlwCtHuxL9I7+RkHWDX&$`3;- zMbRc3CmdFi6KGYztkjVLNn6u;XAoUx0B5_{TvH`PByDaoG!LZ8#E2m}A%zUay0Yw6 z4)w0D4K;LyIC}CPQH4a9d{ygwPZpMo-SvG0r&Pv>I$+dDuk=O7*TW%eFMwlIVm9V| z9jFReT{_&ETWCgOiNU#oAgnGwZ05|03KPUC^k&`~8Q~{!0Ywx-sal4yfE1~0nA*@O z(oaxPwQX1<1%dB5DoLvbq3})MB9g?Yl3&{lbE}I=6Op;YhcH)SSUc4sMnMr>p|Jtg z0^dk+b!&L?!~=uDaQ&t4Ljy_FWKIw$0)-|%Vq_NP$QlI>T8c7=nHq|miX15^JMyls zCUDVl!NerOBrz&G><`An$*|WeR_FTf{n#hR558~h?Ags%E>zoF>;V$;Y*o7QYs`S- zWK}2F7;PeH``WfjRs^UcGq52!UMWf{Dp`if3Xq6ufYyWts2taXM&dYzF`6;LZU}2Y zlW}y0mdRL3Fmfg>ajtTuxnv3)h)Iq5@1Sm4uh+WhT4OgE%B0>7YdN@326;+Z3=YNu zLdynmR);Nf_l?72@jcFI#8ZJFzzH!ESxT{{^k1N*`mneD5WE?n%FYrDI0p)dee%*$ z94{HE3L+z~6H(e2VDlnU0cQ}5=ac^Asc(?rCA%wD0>V@uC_R9=k-0Ev(*P*#)y4-X zNog1q50hiF^@<6E2(rXEy9=q>iHA#ZZFTlcF?Ad@u85_O6ZHDy-O+%O^pYc0)`{1> z@n{2a3Ww|m^5~sP_@3h@$BfvUtxGPj4P{AAqsV+3Z=kpPWh7*)@MnP zl5~rF!9;O!x%0_Sed4p9`=t{nk2ax-5@HjH$ay!J)MZ&TAu_wN?8F$;^!$eH?PBG3 z+TJ!8|98HU6()5E^)J9le`?vPgWcF#s{AS(anrzXVwW}EpV z9HOS&&<-lpTPvON3!gak2T#5FmoHr`7w;Lwl7cUVNkbiLu%hFG5;1&?8R)P%&}hh_ zfI3zcRyZq3BT#aPI@;V1;~>q-!lC)OE>CKN7z?JPn-|4m+<{ymD=DA~Ht0>s{^I z12Z>3GtNnE9z!y+Gf-z%5hLS3iML~e7Hy4@w6QaJX-}}Qv9itVS~@Qj8z4wjQ#8tG z;naZD_KAPfJE8~f=FHYDhAjt~V7IyZgv68<1~iIb@5aWdlBLY*l{g}Lsz@3lS977gRbUP} zDl`ZoI0tgKnTpMfX@@;^+~o0GMzg5B@a!Sog5_&F)zkEwoT%2KJr?gkZ0CbnKO`nF zGKDbG@7y{7turt)^!9~IsSBz^s)z!1Bq|O%sdY5*hYpvUH+EuGYU9Ln<3iaBgiu%H zeP>+pU1t_=T-^w}6~l+fq@BT7dfjra-yLpmNEo?dt_iVVWe5V-thKmGd12+q=Eg?U zh7qC6D6Gl=$V5?EPtpv~c7&BR5(tKKt3y(+KRB=&p-k-{8Eb{0N-;njPa62S4wZ^= z&9U@Na3LT@i4uhw>XZRy;uxgyG>SYw-}QH`hF2~*X-X<2{6wqnM9H%hg@81gFB-{8k`rp^gfLVcsqDo#&}JXes)IEt7BQU} zl9id?4&(nAERw5eu~W@yxNL^F`TWL`Fn&(nT`6JkYFhFDIOPE+>7HEtD;d)z5}e;w z7xvlCHWH3&Sw3aAUI12u!3K#;9SItG{qtq-sjki z8SELr2C|w^78?bok%1|PCt(fRzSeDT3uu)5y)v;jc;52I4T|9cCHym%)g9;$04x#S&@o4*sRGW|p$KX;x znNP(8i^-)D0nCMx2YIlClB`5Pp;S;#1|atN-Z?e0P$p<8$T^b;XSK>==3FsA%4Ar+ zQwfDHB_$bo?`Y0LCO3Aje0O;D8^CK0`@&t45=u;kL39jKM6oAaksOMqVduauhFEwn z5Gvxk-+kYI_?!R!`#a&!0Vg_s6y>*&mF$o;b!5&^k2me4u)hS$1Z7&%9;_KBjeSu(v;{#&tZpdStcm zDBuVxrUYidZklS+D@#@#2}BUR!x^NzlWgL;Q8BYQC+hB5B%?l`5U39Ld;c21)yho&)2*JB@vin1Jg z2aWcF#t7nARg>Ycv$DiZ6V;Xgj(H|c&Yvyeg{KOw1#Uxs2OYOTGA=eD(X-z4O6@eQ zS7Dwtk8y?&pZ7&agFF5FI-DbCg$E4}OY=4bWn+E-EcYdL>IjVa_5rb;oghpKf zOB4{lFTi>)s8lBeSCou0pRW$-o<(XxMR8e?Gg|q5iszG9e2#G+%2^+iK z!ZT46LBMqA$dT)>ysF7*5{(g_R77KhYnrOs+1=~$+^Gj1d2wqaj(5nhHVrJkKvs3Z zEG0-x;VeNw3@OVUP*O!C^-xQbFo}_bud-N;GA3AMB`DKyRE@@yxrN^R@{yG%4xM=S z{pY^(jq&-HP>qS;Cbc$Ar(24{M8+V8l1*te$(SjOdy^gZk|SiYY*vD8m>=Dg)HJz!+$(LTsKBXvQVZ1~)RZCC#=pwd~P`E-j6PHQ^VO9Ro_X z=mA9_GnZXLtF!cHa%mD&pLS6olY$OvgU$*EnX6z>Jr{X`$?gQZlzcO*2TGO=?2-xY zta#a!@IzS)RA`Chb>*e!s_m^_ z!Az4d-mZ2xfF`9bD2zH~*O&_?FcFhW=@}{Cmpr&&D-6swq>d~vh_cs2NeMKC!O4k1 zduard0xA&F_>0 zcAcF<;fOlEXhOJg_1b7OK77}q`Nd8ZXl}2_adR2hMDwf$Yj|7o9GueK@t`ZYD^S z!QSA|kwXQO1ULdS#~6voF{v_?1>(w*%bqYa>%QM<*mcG$OL*IDO!3x_)B}J1HC$qQ zIu3H>GH(Le06VyS>p8T6hqR?;pIQ;4)OGB4-0|Zpn`>8_Fkvp?Db!k&UdS<_uBFrC z#g&E4%cBq~DmpPz2pWQPy1h=fKN(dbfiy^921^7*)KwFDZgF{~Q+8uhNle6*97H2c zWTyzpIx4nmn~bLlG|2z~QI#PAjwGa{B%;jF_8HchMyB2)qEW!zqU>~o?As2V#h^aVv+9TrY}PO~k6!nNqt5Nz@orN0UL^q1ZO?=`*1DzJKXULeGUiiAdq;R@Q@*&hxD zW!EpSti1PAKR0~j{Ws3NFt~7GvT>vEu8A>f4a;3>0QJahAA&lC!U>$JQ#er%R!{{E z#{5^9Rzai`jWJ^Pgs`JJiJ_J-LaczwNZvp+k4BNLSb&oC)LQNN(QMUn3}Q~!zm@$m zdUqoCXM3H*}g>+ z4sL@S2yB-v%&G|y04t5yE}9mKvtXk)pEXrga16GKSK`LALP5e1f*6)=x)dNG6@j=E zaPg#wbsRKxztcT@?CAPrCysYIJlxs3lypuxKL(tiip0@!1Ooe%{+k>CrH2%`J@eVm{_;=#^yAKRRSh+$bA|kvZ1exi=DzR` z|Et-*?~reE%VxKEdSas$0*7m2~Oj9XGg0cNQoT5nWPMte(A2mR_6hcm^efwQdSc=QPo%=RJ-ds+$4=) z7B({?uar5ko?xfxA~Lm65|lMvj~SF@{%mDTi+z^zXk~jiWj7LMaYMtjxXqcPT>d5> zJQoBtivj6#ODdT8Gk=*(7o?xaiX!E^OF7O(Dg?)jm6c*+v#v$~&XSp&f~^N9!~BrGF+PKv(n7C*|0I$)@D*o3z`x;?RMN~Z#dfAB`ye#Ot+_C_T-%N z&e?D>k#i&(o#WDB>++Q_7%^Db38!*$3~`xq9YI2V_3+V#Fy6Sqtg#vtoNTU^_+j&u zCjTD{&6Ri4Ei&K4Jfi$Lr9Gt3iU6R(`Lvgc1PP*pNmECZb4!O$o?gBCp7~?P#<7`< z_H{f&;Q+;?0ePsBh?B-k!&);MXjBBH01}{qPM|UUCk@n?KO>eQ$-awwh+7h_#%5E) zHe?SN6KYEl<|HBs7Qv;E9ht}s*}sNH8wi~~6EjW!<_iKgUq>w4M$&_|9eZ0~P|*IhF2(5TC8?jt{W*W&j6Mw9pI zFaOMk4t2NpH=4I{m^*IC3V91{{-aMETio1TFIGSO*pbfW?)rg_Ej<3Q<4aoyzdU^W z*FSXpk;An1+USl73Rs7Z9RK`BPCRn=q0=-tzY}l&&28Gk$3A{yd41=`UwgRjKQ@ma zPBg%*)>{b2e~rVvX?q6&-ycCE)k2l1f(oPjzuPU!-(ihv-htY(5!Nfl=U5XIWtT*yuA5%B=r438 z;~J_E5s^t%FZ6wHZf<*PTP2FtTzHtnC8~l+9TrQ!aOBwDmCMm5$CaTnlX$I&sUEOh zfm-H63J~Qo!x3=pJD@5=oDy?Q)+XoeA;kskoq`D9v^UoSv#LrAECCWAL84O;6;YQ` zEhQ=#AxP=Vx#i{h#%6#p1QH+xK@fxqAdSpbh&OgdWq;x1L+`J4)`yo~@TE@*`ot`p z|{2C2_!NU!fI%M20%bfattt$ zI6@qWj8!J8`)xSV%-1x=M(jarfVLROK@N`r`Q$WhNK@p#^%KlmQ_AX`lter&*TVip zp2|!s#vCg)*&m;sb59_cfG_8>Q`YLW{&1=qM$Wfn9%ZKhxX5~KE=?Dlsu3Shr%CQa zJ|_F@0#Qyi&USwS4${DBw&}AKm0<$TUU{D5?0KQ~GtaC6X=+d3(5y|CcSDP4z;YSV ze3Akra6kt{4D|?XX;lfWS2$HfBASEPxj_U{VzGod265h|mB;PW-6qKKq^o${w z3`l+uEY9Ps{HUdHbW0!OpkGYt-E-HT`x6~rg`4;&j+w|uXcMc{W%KI+0RQa&`RYIY z_kIEY{7XbkAG+^;oVowA5Bzs8Tw#{?-h1j=xcGs)`(OUX8j&ir-|tsd#cWkD{w4wf zqn$5*edllByl>h@TVHzmPU;>nJpS&5wR0~$z5Z54Z|?AC-h;1w^~FnAc;d-p?_GcO zx#7YSH-GbXd;V71&2GTWx;JmH-Ex3;Ho4)Jtd!fF=~g=mS}U5SQltvIW(28eO%tiIl5nbyl15uoltCSw zC{)DsHcL=FoNP3&g{oRPx;j7K<3QsmmMx%AQ4v)Ei;x1IOs^j;g*LM^+Ua5DR#Fa8 zaGO?;NkO)gq)n`ECL^P{yV-kDVP$awA#$XuaO^z$5-unQjlm2kYF80E<1G``ZDD-6 z^>I9SkM8Jh5@lN_j}9|Jv%j^`UtVfP!-eI!YN(Ad;8k1I9cGT?pbW>ZER%7pq9&QD zE>=}N9CQw?PCyN^TP6x9m?SzORdTNA1T#hta_luz(qFeFUr7#Rn%MVwz;eZ|)^Y`C zw#1kXwHm7hnbwl(Rxo9{RyNo*4;OSM9pvD6Cgu+g+#rHvttsT%bmnBL2$YDt3S!j3 zQ0_YBE}VDuxR&T*2x~my~F_W6a_Al5Q2)M zrja`O`ISQisIm%31TiMKQp6TRrRDI)@`>LIME#10S-GekUSe${_ zs%WCwcF5;H}!Q9m{M zTVR3`_Qae-k@M=t$wMY?aR6z9T{a0M@Mb1rz`2B6_Bb?!0+7j8aI6J^n8bk@kxfs+ z;yX;r#EM=NQbf||ER)!gl4}~@jA(Q<>~Dmf&CRWK?sn@a0)i{K=)h5*O9!sT1Jq;Z zoha0KGG0xZy&TNAry_-PoD~MPxQYj-QUGv{r~o@S&MCsVQW$xVXZ9c`7RF$9nwWkD zoC+LKX<;9b6`%_)Zm;y4!S%E2&;P#|UUt5ADlE{*4QWI}rB_l&zD*!ilCu}j|JV0D zPW*NDAN|}AFiJaukUr5;@VJ z%FI>@*h<+rP=t~SBh?p-8Ql?9CMFdl*+|#<5SqP>t){A%jvneS&zGee2dx^@A_P=? zrj47Cspbw6WeuIo?aA}LO5!7_O+9TArD1T6l7u}IpYKZ90FH~Tc z3}l_P=ii{;$hU0f8$GZ=nqS1suA6qx_*_&snxP&n)h4`WU=UZ`yOu-oK<{ zp8XObcG=-GchdMzZI5G=Do9kfa%k@At2^HJV85DLdt4f9wc|0a2A5F{IJpY0_waahc|qbhIZ#-rT2jft*KxTX!kBGv*(qD3Ai8 z$~1Kvh1BwC)!s47Ero)OcWfV2MYIk&x3B>35F$Y#5gIi_lwK`+fJm8C9Wjf<7^M+6 zzp}!l5u!>&P9rI^V`7^hq9O#TYAXHp_3itPEuQ|!6R&*dsaWlq%R&;h8M*FURC{N$ zZ6d4+FcSa~Xe9Qm&WuFUdF5Pk+!V^mZ!Xwemp$(*#6qNtxGTOT)Tq34OAnN2#LmA3L!>?LnIkHM3Jc45Cx?MaRjZP70@76 zQTFY_Z?2}2gJHUw*&S2tADQ`soCIv}b<&8`7L{-9co?O}Z2g>E3r|U0-)EYOGi^f-v;V=FuaC?TaxH#O(~81QEvmpqOtO3f*G4CZ2rjexnCx62IuHsVN=%_- z)~C<`5d>rr0D>h!<)tdUnhvch|1_A8<9;+_sTeCV;a}!pOo67w57rKfZZS2$6L$oaaULWMO3R(6d*HAbz5gY}Ee=1bxF_a~b#gxziQ-?x1C z2U)!OPS8N&5E-5bP9zd>j3B!gHZf85wUS>~7;{HbSilpEzUA4qszHe`W`#Hu&ioYu zF}obSu}}aU*eI_Gb9^0fM=XKFi7&KUNMAR0FFm_+;W-Sib4gCYqNZOKnc#dT%O)&> z&9(c^pZ)>RJr|z2zq#S(*n1ukB7Hb$ZKBKC)yrb+5gA@!MNCdH=n~ zw=aHs3&7lmA6p(gw{~s}^jAK9qW;SH=ArkUe4qya*Un$~)*GSfb07K1<-xOSFN^>b z@BYBa2YUeU+DjL{xe4@Ee)a>)3ji?u)-%_yV(ziWm-nwU51pC=uz%&spIxee@;#59 zey9fkS6_VPo0~v?^^+f5Spa~+*PptUiv*VsKYC{I^7*fAfQafZNW{lO5JJM?oOTwMV6FK_J~=={RtKXv>RfDb-!$|?uX z9sbOtt2RnkUU>1D4FC&I{PZd|aO!aVwZFJ}>2*e7d9K_Wr9#U)!+P;>3Cu8z`iFo1 zu|tc%-m9B!2hKeF(Bnq{0P9zO=WPA{pSWl7;<>-Pp#X67ZrtX)KO8q8GcbSLZrhX)NC2>UQj?evjyT?L{-a+!{Lg>?m9y6;b1TQ{DvtJs zVDFiuBn(}Z7z)a;qa87ax?%rj+K&CEA|<;RWp{mZG8!K_d3^cEk}s%$8#kz2ir{-PX;=^i8k0?#k40m?s%2FniUfCNpF@~C*MjH{04Iz%u@jAj^{^qYXdg)2Jn9gT@Od()`iX}kSZzVZ0Hqp$Jn zAFMr-wnq2t#@Xb6Vf3P-3X3a#{ThW(JMM-?V^k+#fkYO;+)|h3OC1EI$Z#=eRW;qd z@6Pon`$K|=G)_z?-$5t}>Y)98XW`75-RHkg@K96dQ6Uy-Uv}$Lh=ho4S@>=@jEBq+yAq8mQN=@4vn7ieD$&BqiYrU0M_`2n zKnMh7g-_8NiKr)B%#DVF^({Gl;=XD$x_tKA5^ETo>LfNp@}2xbB@s?yRbhC57|O5$ zys5i@Q&mI5jrG|a)G#Oy@~K0+grCooe1CS^3r8&$JDX?hF2{`|@A!zUhi z-;?8w%R8^WxN-j3$%W?;tGXJ4)H!kt)vAu$o)u0>f`$o_OprmC7Run3!IdAj_8sRW zZljzdU7UZS>=;bL0y7B%K&m92vjvhF%``*HpqIHjRf$19 z5o}tCde_o>tg^4uB=wUDhpRD{+DL-=9*$EwGPl>8;u|2!o`WZD-GF5Dw=fR~Nfj~; zT$T(%o`R_*ytQv+GX2vZ?e>^Pi(z0tW`CmeWrF<4d&h+Z#YL3h zI-b4vO3>IeB_QfF@MKT+FW39$uf6mY-9D$=mrzY0fIBodUvx3^Jg5XbQ2}DWw`Ia|_DGx5!P9(_B>I`7F6l%2A6z>Dt#e_fc0U3)Bs}0#Jbnn<%s8t4KPMs;IH5UU~lIGoSmwd~xo+2lVOx`P+Z| zfj|BAcR#%Qh5zi=?%nlYiX);~+poC4yZ^;+ZRyJD&)>InVr~5@`X72^Y4Gx^U){$1 z$rDck=K-Mqp+}a6FJJuX7SLOM^1UY?8n2z(9zMD~8LbM5!9)cKpa$3D=1?XNEU`ABi-u1}mUuU-LAKGfg-y=SiD z&|Sas;L6EM*VYcNJT$uge}8w7-O;(9_~6{t@4b9>s5pG=Q)kL6m+gS{*~^1pJv5Jv z0f1A7=GQKt-vjo}oxcJA^B;X;_2K^DcBO?E9{=F#-np0lcms=P?*23|;|c6P^Ot!1 zr&jmBcj>u-0t=5ny1M(qi(lLT<_>@6(Yqh{?yEl-0_ZG`F8=OcOwIb8VZHdC)iW1g zyM)fE!yRnA@yINE?6E_8XV3l7I+pLb=jVX40Dwzp&t0-#KYr+a{fp0D-2aUu3%Icd z;LMSQ%dft$d-UWZqpQFD&Am4`^bf-gc!$mZ*E`(5%U*_>0FLPy2#HW=s{Q$1w`fNH z@n;|Soj<$$?MrLj@-RwnVhk$Yc`;Idwtdrd%WV}M60*>(f{Co$jW8hId65P&c8IBJ zHZHBz!^!gD)w$)8o!4;_SiKnSBdrV!3dY+}!$Rp+n=?&b>7xPlZA>8hD4e(*Ml&%h zC>4-O^~VgXQezNVTmTFu5f%1@FFQ0DsYVc41|laddTM12s6A=>d1jz*HFDoxh;7!D zA%H}PS?YRkYvb_Ao%+Bre+-3~dYjgYws5{XI4#r?hg?ajsG zcMU4DmWV8AL&*Rms4L12b;>v)7BS}e9bdz(1CX)p+y6QnV7ZfnzeR844c=!p>~_Y; zNGd$UU`ga5Qg9R<4y8X|^yd8Dc1jHoTWmWMc0peAtiBty&`QxY0?7sK|wG?d#lt@Sr$Z%yc{T~KJ7%NXB1R#dh)*%H& zC4#U4cSMO%rcgBWU&o zRs^q1s;N{m5oE6e#_x7WM-uJ_$@^ns7;-*|Q7!rAfF7bfd3$7%<044HuII#kdGWb$Sf zl|ZKc7t_aUDwLwx6^)V`?`} zEF)(@15F90IX`$>0GQxPB9pmKCB~9YrKRS>nBpk`fSA>M4D#8IwqK#nI9=QV_Q~;} z>;i$oQ^z1na^TL>*gqn1M~D4iBu_dDZI-?;kXH^Sv-z!jH0ghs)26mqOil#J&| z5DUXPb}SHrCvu%`@BjScXa4EWe|*wB{+XBm;&TrAqWm|%^^2E3c4B|9K0_-tx2HLO zbp!z0qia~4?*S<1C%fO-27tlZ&b8yq0MIMvF?z{B{qfHEt>xoAVBGAVEEa%;mGb)9 z@UD|{3v0vUE4cP@4K(|!M?ZdQ?JHB8{>@r{?pSa5;_UXlavtUJ58V5p{kdgOeSPlI z5CAp@SFy6#$J(gbfAFqPp05A=N@II1pgi%x`yR5rHU~gH=Eh*{!TD1dtYQ9Cf9vcy z0Knm6zxv?39r^b5@?5z%+InUK0QN3zt({(d-AkD3EMfnw+4RGWvzx0Yd%zGtb!FpV z^6>g=Uz)r7(@#G5(OZAI-C-9;o6oERz|O_ZD|a7C-yb>g8xLFHp*jm-egDeC3umx* z35%!uo6p?<=IXtNPyE8Y)gNAX-BbLS6!bUH2yjUh(FvRoDTPiE!ep<*UAWE9fBHoK zD_6h%{B@7zvQrGJ(8Pwhn3a2MS2;76h#ZlCM1e#TwCO#E3>`6BJ*G*sbM5+MG+M5Y z&K;VYpZ9|*1`*4OjDUh15~XeyZUcxEs%E`(?F^97qvv=P65SwY1uoWGh8P7M!6?w-R-SU@;b526s-`>^` zz#Qt@`;J#<$)22Uh=FhnaM9@&MNyAL#cCdzY&2=pY;SC?oH)UbViTS76hTC(;v;#G zcfM1U-I`3_6|F$joi#l`_(`_WZO!*t4`FuqH$M1VZU@lBTMtCJT=i5@3dp=Qg;Pjf z*ZppHZn50k922V~k$tGJDnit#IDBYj=gK}L3WObp5SkFZFP(SN1kbEcO3xL=sC9^S zbc@R?erY*uZxWy(zPSRgG*{#w`eKaY6uDyeoAz$%9%oVoKYz$=;xprwSnb#1`O!W!Tzj^Dt(M-<+`4VZh7` zoO1@OD7dz+g%NF#-3;>|e9F*(%Q+#rCP3;k5qmC`pzus3k$22aqSHx-DpwCD!>wj? zedE=y4Yyth*I&fo3gVbzbXqbNB03~xfN*zFx^p#HxS#|^DJdK@)MIIeKxEP+Uz#Xh zNf?UA1D?pD0WPbB8b>Hm|CO>@D9w}G2_vAO(u=gwDuNQJK%91%8oBPOdQT$I{#ms_($(P{lzbSB{bCw zfAaL=|N4(kuHgFlIs|3zpbd82ZVtZFHXdHb(G$I9zCV2NP#T3Ot1FrN9!xl8E0@3G?mfc+o5dg$?cJG(fvv~hJ8z;OK!zr4P5 z@4a96na+=v6!hcv#!XQu6S!ssQi3={N7Td+S)~q3z432+;t2ET>n~EHVXj*aCv_Er za)B0mH>$m+*)^LP2I&CEAWhOLAtr(diF)QnWVE|i#b!zFnm@AA={mN0;|k4o3*}s2 znnBj?bds1x36e8FEs2HFa-ql^3DaqYLh}jJ9#-;&d%fN`Hd2RK*W*Xt=%zmu)KnGw zvKdd-uU%U`d9rSz>r;oy$)qBZHtK3{ort)yC^}^g5edrP)>Rb&^Kg4-JQ{S$-Z<86 zT3rT=2t=+Zin3EPXClOpxXsD|wW-E!4E>#JvjKU`d^m8|O+;T~)TPC_*Dw?bA_xJY zfh!7f5Jl7I;Un`G%OZ{uV<0V?h^neP&XwJAJl^-dP>D)DS>_Q{6DEO{y2aArBb!?r zo?QsF!IimFnlOE{GFt~gfvKiZ?yGsHIxV@KLsPHw2oquyRqZb<*k|&hCK_wfxuS@o z%9`FDh9X35Vmx{J%+>FHSA&Hw%w6*BSvdxh#(5WmHlY{TuWb(QIkE7r4?Xt6a2tb7 z_T1D1PzlN2xY7JlLwXF5YkOD(nXG_{>K;{>< zdB85`1K3fRk{iIFq|{HI(V^DW0aPNSisOyFy(@zoFK=FcAzt}`4$ngOk&;{sg$r=Z zP6S|va8WLa?~kQ$+yxrTE+!SnS~p`%2E@W7YN6OED~wZi2W7=r%6SS?*Q@<6JvOcQ zXBIfks!e%y&NsjSFI7rJEYH%RrrE!`_R`a`@%_$Rtj3X@^QDgn8pkQy7^QW;fGFxf z9d(6s&U^2?C(vLpaNqvZKcN5ppZ@1-|I4Q*zI6ZK(WCMBiF+{oUPUtjd~=U)Y2$j( zJ@Vkn&Udyke{%Vlk%Gqc087VLadivmE#JR7JpVF)=IRz6y?+^7H}=t7-6|hE0c`KI znEKw8wXfpjqx}+FcMua84X=$)K6t8JYXbt~dVu8zPnB0LzqtJzTkU2LQu*uYc^3!<)}+VDZfA z$pfUIo3^ZWv3m0GYnL{Fxx)`1+CTgJoAvw1@sIYmzO)X^HG7BW&tU%&79Ku>E8m>y z{IJ^VAAjV?##8H9zUR;>BL&TsizDm#!l{1h`Ob|29zOhD;PTn&?z%y;NtEmIFd`tVh*7!hfXJ!CWZ3KASAJ%7aY3H??&VQj)^1N5 z4S__hvU((lAh0^9$q|bEkJy>~HnRc(6{ikDN(yF15K$)L80+2rjcQWu?;k#KwCt7@ zu{O#vIzgk#Q6f=P5~2u*DybOAnZ#)lIf*jgzx5R~y9_g03$~7=n(*drnACVo1o$K> z;Q%!aByeG=3a;oBMWapX;L#%;L*YQ}R!bu{Ei(`mTR2J89ogP9YA1F@9vr?g==yu|GQtj^b zk1Y%viFIVtOjKbFj6hIzJ?<^Rl@uG+5Ys|s3%E*ViB0>eZOV66-!mM0=7l4eBWdQT zT6YPib7V0GCK6Rnw>5c{N*a@n9%)vNM{6ACtxR=h+NC_$tpS;y9J8BSLxE>@$zdfJ zH(!(V6ePg)TnJTvzT*msO~YD*8nJ;!tDYgXVrdS&es?skV{A-srm36WT(8^djl;Hz zAc~MUi5j6q8Yna_s$W<-yu}_4u@MFUG3Q8o29<&*~rv3>>$@*vFPR4f~&?59x znBOe&#QfowEM(}i+4{s}6>xK~f^)zj)$VXeb!Uq<=91uK&hd(bG^4Etj10G9>hLgb z!~daH$X`iQa#rG%CTUuv%;4-RWEG&P^gxazB&Q-r1DMpOATK#?Ph?&bF&i_8larmV zjk7Qjn-E5dNvS6xsMK{c+G>WIyPH=AH!eEgTaR1UN#3MsrvR4k1o<5k@E}YLOg(Jg_bNp9(lI5qaf8*mI5p7+J_N1c;3P zmV8N&Q}`T>5n=(ngNHK6M-S0RD7<(FDqTJA_6O@PZd~}f?7r-~A=Z^cm#Gt*MyY{k zh$;M0Dy40s%IwRcEIZ8HG)*;`K!n}P|Kg7?|C7%={V%_dkA3{3zxay}UD?JV9jrUY z2hFg9E1k8`cU~U-!hLuD0x)=O_Zs@?%OC9i^dtBD;(Y*`^Utka1pw@C4RK=b`c?yA zZ)-UB-u|`cY5-V0`b+oE0RV>I`NmB?K>5J??tQ>^Ut9a~)bws%`2PC*PoDhcQ$R`) z9)9z$c7FB)Cx7J>0ATC-@147yop$)H&n8yS@LSK+K>dyHZGZBEr$2WZ0I+%OUp+q{ zWIDrea7E9&XMF8zw(rK)^QX`Jy(d;N9;_Wu`ZBMZtMUUZhZ0i!H)u0o`3P# z11SpoPo16rjfWrl4Pfup%`4V{_06;Q-1BoEKZMc#m3HIN#&e^Gp1{@Lwxo=sC%=$b zL;FvE`Sz|9{hO!GANc!@?D84!|K_JhW;eQ%1HI`_w{G!H9r-P7kiV4I|LKm;)k=T1 zn_=c-`hO9YiWa}~V)*?pU)_$Y(p?^m1nOcHy+b2oP~)X!aS9bgL9_rp6r}$jdvE%5 z$#vd`{eI6m-F=sLnH95OAwUoS2?-J)3KAj8mMzCJT~1U{r6eUTJ6q*@J|rpUQ>v0b zA^(7@l2j^o*>RLoVtI=sY9VQAfw+LgLIN|GecpNZyL9(?o+ls9>HFRR1_O|yC`#s; zshRif+kJcQewN>&^j=)yNfe^Fh+=>-M;(?NuBITi&zu=uek7dU5~5vN-r#g~B%&CK&SLqhG4hR8I@3Mn=SAo7IEh(RSVTaZc?eMg~h z=1QRySwjwig4E0)<^h)si4Jjz%yQ#GV}J-lV2GY|14UfKMG&%OY48kMiBgaZ1Y;=7 z#Z`+VNCqjKsE?NzG2;O!U~m#%2$e%DBLq~Zo9aG0b87R=*N*SqXhS?z)iU0&jqO;E z1FEi>;Pj}v@{NNVZ{4y^n#oiusm9gm?ah8RyYa1WOEn7BSYj2L3RPsRByu`!E}d!G z-CJ*d={M8z0NRIG^CTt+9&*GMT|}}fh=@yY5lUc)U_c1jq=_L&@eq}4(j*};2qlt4 z2tg_l5s8r^m4({2Cv~vJSAO@8tTlLD#ZjooG8$uAVN%s~J&rXh@dyesQlV;i=5+k# z7rwOrl|QUh1?;PdhblvsAr(WEP&3q&;IWoir>endd}e!mVJjY9d;QuU|Gu?H3?#%{ z7#nzWKq9lX0C}>H4loo4G>AY(!|4m4Fa!y)Ts(}~{>jT;Ge^Tg^2H!romI&=mK?~E zYkHUYqJWT;s;WZ7c*Ieqp7w2VXSsWIaqEqvYp>6DuIbS|w8x;*QpT`&CT=>j)fW)+ zMjC{%%KEQf(%BsRmy)~@g{Ln950F@5QN&`om6HcHIr^s*#Q#cTehBCbiWM4V}WjDaw;Z5b~KO_$&#ODfA#F*`dIh#n=cLzk9Kz3-J9LLce=ytX>rKKENBbgP2IalH)(S~fRUpioYFfwgy@(6=h!@U z=J6N%$r<=0c%1_JSb1z3kJIkP?zjGRyZ6;lyLtnUB(u1uO9hE!?Tlc>5Fr7K7ABBd zWN?KGHN(IkD4u4FAv3>6&QZ1}K~xbJ4`O3rop#@{7+Ig2788NS(2&s#@x?NN{J@b(#`L5viLf0ui1%z4Z_N!GHVAvmXNu z10L}qFT{tdWIo(!_@gLn4)gFq!QBUb$#*AIS_DIFZP{U+zRC(dWIMlu6@Anhe8`8t z!xgR1`4BAhaT%?o>mu7%M+yj{ig>Vq;^!IJHukXsLC9o>44^W_?F}=3y z>vK{Hf4a1;g;G_q(W+^+&+ji&9eT+3um1iC^pAXjey2^T{Ibl}W+G_Yo!hq`f8-JG zJF)S&uI6n5Lw+5D6l9u!$5F!|sqd;-yLAwUJCZVT@7~U1eMiR9nh;@-AP~zk5Q11C zR_HLaL_X?Xbp=u6=%&Dm(F0H(zC}bacj1bxQErfVNh8ZE&WDcGNmpq=>X2ML*3GkMh#TAyDyizKozII( zO(78*+|A4^xAq3dZMYfR9_Jr@bpM-QNwc<*%3+RTpF}rc0Q`9t6X=7&5)Sv<;Nwdl z`_z0f-+A?mgbI@N9q8^2nvq+|)nPBh2ZK68b}ksu_UMtdPsPb#W`Jk34B;>$NajCC zE>w$YG%~=Dw z-J93neq;aLZ{GXLzw!RaQ+pr!1r$FaYB%FXO*9K8Gq_Z!YDiE<7~y~^LM-_zia3lj zdhP~DhW;Z^B*XoOd>h3t_C&xZGlP+(Co`#6Y7~K>k_csyN`QmiZ_WpXA2K?UtCXIg z7>Jxqa!6OO;t!zA2~Z@1MKO4L%PQC>v*v^prpapZ$&JU88$N%n=MX;&U=H(?CBwiT zUQH<(LQd{WN}u-M|(9^A-?p?i_f9Wokf zK>L&OhkLNCajdV|55U#PVv>aRA0*Ta$$?Z`^qMON-lIhwmX| z3V!1ryjWof;LMp32C90HSdYe&DMDB-+iuaiWuJS75JCu~&2C=(FaFE_{)HcVez`nR z?D=Tb-oHHKgNoLFImhJOk52AAkOS~RaUKc6vxYVRBO-<<4v4?)uL?oT~?Zu39; z%s=|IZ||hO4>1L&$K&I!=7z*heE~S#XfB@hR1_c(9S{hh1GTt3rzir`Ec{L~IQpa6 zVSgQq#i3WusreLOrjW1~j%RlSf;zA$GuZf{> zRra45G$JHOqhu5~V-=h6sOuKm_aO#QJ+FT)P9%o6{OU+P+*j*QKZX~kle>5CUTl{# zYP9dGSQ9A_?v{0&^Ir#=(Kw7Ix;#XTa9hbdxw>1od;8w>@yE5-UNy_(FbZ5;od{Aj zs2XZa>dOveUMx%Op+$W_f zQx8pn75hG^V!BaRb){{qmdL=KU6(dS&3H0C+&fe?h>D6xawQp3vbJrf8};PWsrk*f zRbpoI`#?p7dHhpMII8>2Xy zOxk+~631rhYNm=LNa_+yj8>$m9CR=xOUXCSoUS%D`{QFH+zsYVCEzYl<_4q?Ow7pv z+r-gywzS)a{iDzRL^qoszV#}+ucP$VqpHy@285P41KeQZVsP;wCG9cy0775{&BY+W z#Ubh*Nu>lgdNg`Kw!{{pXX#@y$Plcv$ezd$eu-o~b*dEPv?OCIA-cp?v7D2{QH*!# zqq^D{J-zk(CojJ6x#n;F>i*rUx2|0|ymckryKVFR{&?ThT(yN~DHyhko*{@-tfM0u zSB3zBm{ng0EoF$6D5MV{9G95uiQn)!a67+e(;q~aCQ=)NTH%K z_uQO9iEB$0xIglfP3Vw78QOZ;=3&S*%3~>zS(LhTZ5#vizeolR)q9eIPw;vkP;TF0 z%IZlf!z0}WMI9MT210TD<*H?%tHeVJ3AvW4v=&f$Bv~3M1Fe80nzUccj`rsVJM;bB z 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�deBStkAJ+cOoX@)JqESrcS46Xx^ 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 q0MC6=B?U{F{@+O#)&D<x!T$rky75T> literal 0 HcmV?d00001 diff --git a/docs/src/tutorials/windows-kernel/building-windows-image/images/2024-03-16-12-37-56.png b/docs/src/tutorials/windows-kernel/building-windows-image/images/2024-03-16-12-37-56.png new file mode 100644 index 0000000000000000000000000000000000000000..9b0c0cb7c6dd2bb87830d08c8527c7ecc5918cc4 GIT binary patch literal 133899 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�bvoNWMtI-8#lNjDBf=R4MqjSF;c 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

`>QN{C)Ezy@+)=P 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