Crate cargo_compiler_interrupts
source · [−]Expand description
cargo-compiler-interrupts
provides you a seamless way to integrate the
Compiler Interrupts to any Rust packages.
Check out the Compiler Interrupts main repository for more info.
Requirements
- Rust 1.45.0 - 1.64.0 and LLVM 9 - 14 are required. Both must have the same LLVM version. Later LLVM versions are currently not supported due to the new LLVM pass manager.
- You can check the LLVM version from Rust and LLVM toolchains by running
rustc -vV
andllvm-config --version
respectively. - x86-64 architecture with Linux or macOS is highly recommended. Other architectures and platforms have not been tested and not guaranteed to work.
Installation
cargo-compiler-interrupts
can be installed via cargo install
.
cargo install cargo-compiler-interrupts
You can also fetch the repo and install using --path
.
git clone https://github.com/bitslab/cargo-compiler-interrupts
cargo install --path ./cargo-compiler-interrupts
Getting started
cargo-compiler-interrupts
provides three binaries:
cargo-lib-ci install # install the CI library
cargo-build-ci # build and integrate CI to the binary
cargo-run-ci # run the CI-integrated binary
cargo-lib-ci
— manage the Compiler Interrupts library.cargo-build-ci
— build and integrate the Compiler Interrupts to the package.cargo-run-ci
— run the integrated binary. You can specify which binary to run by passing--bin <BINARY>
.
Run cargo-lib-ci install
to install the Compiler Interrupts library first.
Before running cargo-build-ci
, add the Compiler Interrupts API package as the dependency for
your Cargo package and registers the Compiler Interrupts handler in your program.
Compiler Interrupts API is provided through the compiler-interrupts
package.
fn interrupt_handler(ic: i64) {
println!("Compiler interrupt called with instruction count: {}", ic);
}
unsafe {
compiler_interrupts::register(1000, 1000, interrupt_handler);
}
For more detailed usages and internals, run the command with --help
option and
check out the documentation.
Contribution
All issue reports, feature requests, pull requests and GitHub stars are welcomed and much appreciated. Issues relating to the Compiler Interrupts library should be reported to the main repository.
Author
Quan Tran (@quanshousio)
Acknowledgements
- My advisor Jakob Eriksson for the enormous support for this project.
- Nilanjana Basu for implementing the Compiler Interrupts.
License
cargo-compiler-interrupts
is available under the MIT license.
See the LICENSE file for more info.