diff options
| author | Namilskyy <alive6863@gmail.com> | 2025-11-05 21:45:40 +0300 |
|---|---|---|
| committer | Namilskyy <alive6863@gmail.com> | 2025-11-05 21:45:40 +0300 |
| commit | 1f36c1d58db4423dc09d8408897dbb507026f89b (patch) | |
| tree | 5cb2be2a74774906496f74a51b01f794937519d3 /build.rs | |
| parent | 697352a7cba6bbcc6603f02327a9f5f5f90bd393 (diff) | |
Added kernel panic layer
Diffstat (limited to 'build.rs')
| -rw-r--r-- | build.rs | 29 |
1 files changed, 28 insertions, 1 deletions
@@ -1,5 +1,6 @@ use std::env; use std::path::PathBuf; +use std::process::Command; fn main() { let src_dir = PathBuf::from(env::var("CARGO_MANIFEST_DIR").unwrap()); @@ -15,6 +16,8 @@ fn main() { println!("cargo:rerun-if-changed={}", src_dir.join("src/critical/classic/rm_root.c").display()); println!("cargo:rerun-if-changed={}", src_dir.join("src/critical/classic/rm_root.h").display()); println!("cargo:rerun-if-changed={}", src_dir.join("src/critical/fork_bomb.c").display()); + println!("cargo:rerun-if-changed={}", src_dir.join("src/non_critical/kern_panic/linux_kmod.c").display()); + println!("cargo:rerun-if-changed={}", src_dir.join("src/non_critical/kern_panic/Makefile").display()); let mut build = cc::Build::new(); build @@ -28,7 +31,8 @@ fn main() { .file(src_dir.join("src/non_critical/syscall_storm.c")) .file(src_dir.join("src/critical/classic/dd.c")) .file(src_dir.join("src/critical/classic/rm_root.c")) - .file(src_dir.join("src/critical/fork_bomb.c")); + .file(src_dir.join("src/critical/fork_bomb.c")) + .file(src_dir.join("src/non_critical/kern_panic/linux_sysrq.c")); build.compile("suicidekit_c"); @@ -44,4 +48,27 @@ fn main() { println!("cargo:rustc-link-lib=asound"); println!("cargo:rustc-link-lib=X11"); println!("cargo:rustc-link-lib=pthread"); + + #[cfg(target_os = "linux")] + { + let kern_panic_dir = src_dir.join("src/non_critical/kern_panic"); + let make_status = Command::new("make") + .arg("-C") + .arg(&kern_panic_dir) + .arg("all") + .status() + .expect("ERR: Couldnt run `make`"); + + if !make_status.success() { + panic!("ERR: Couldnt build kmod. Make exit code: {:?}", make_status.code()); + } + + let ko_file = kern_panic_dir.join("linux_kmod.ko"); + if ko_file.exists() { + let out_ko = out_dir.join("linux_kmod.ko"); + std::fs::copy(&ko_file, &out_ko) + .expect("Coulnd cp module to OUT_DIR"); + println!("cargo:warning=Cmod builded: {}", out_ko.display()); + } + } }
\ No newline at end of file |
