#interrupt #cargo-subcommand #cargo #llvm-ir #subcommand #plugin

bin+lib cargo-compiler-interrupts

将编译器中断集成到软件包的 Cargo 子命令

5 个稳定版本

4.0.1 2022 年 10 月 19 日
3.2.1 2021 年 8 月 4 日
3.2.0 2021 年 7 月 31 日
3.1.0 2021 年 7 月 24 日
3.0.1 2021 年 7 月 2 日

#316Cargo 插件

MIT 许可协议

74KB
1.5K SLoC

cargo-compiler-interrupts

crates.io docs.rs license

cargo-compiler-interrupts 提供了一种无缝的方式将 编译器中断 集成到任何 Rust 软件包中。有关更多信息,请查看编译器中断的 主要仓库

要求

  • 需要 Rust 1.45.0 或更高版本和 LLVM 9 或更高版本。两者必须具有相同的 LLVM 主版本。
  • 您可以通过运行 rustc -vVllvm-config --version 分别检查 Rust 工具链和 LLVM 工具链的 LLVM 版本。
  • 强烈推荐使用 Linux 或 macOS 的 x86-64 架构。其他架构和平台尚未测试。

安装

cargo-compiler-interrupts 可以通过 cargo install 安装。

cargo install cargo-compiler-interrupts

您还可以通过使用 --path 获取仓库并安装。

git clone https://github.com/bitslab/cargo-compiler-interrupts
cargo install --path ./cargo-compiler-interrupts

安装编译器中断库。

cargo-lib-ci install

入门指南

命令

  • cargo-lib-ci — 管理编译器中断库。
  • cargo-build-ci — 构建并集成编译器中断到软件包。
  • cargo-run-ci — 运行集成的二进制文件。您可以通过传递 --bin <BINARY> 指定要运行的二进制文件。
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 install 安装编译器中断库。
  • 在运行 cargo-build-ci 之前,将编译器中断 API 包作为你的 Rust 程序的依赖项,并注册编译器中断处理程序。编译器中断 API 通过 compiler-interrupts crate 提供。
fn interrupt_handler(ic: i64) {
    println!("Compiler interrupt called with instruction count: {}", ic);
}

unsafe {
    compiler_interrupts::register(1000, 1000, interrupt_handler);
}

有关更详细的使用和内部结构,请使用 --help 选项运行命令并查看 文档

贡献

所有问题报告、功能请求、拉取请求和 GitHub 星星都受到欢迎并非常感谢。与编译器中断库相关的问题应报告给 主仓库

作者

Quan Tran (@quanshousio)

致谢

许可证

cargo-compiler-interrupts 在 MIT 许可证下可用。有关更多信息,请参阅 LICENSE 文件。

依赖项

~13–25MB
~397K SLoC