From e92935497568357df110cb28ed45c15145e371ab Mon Sep 17 00:00:00 2001 From: Elnath Date: Fri, 18 Apr 2025 19:57:47 +0200 Subject: [PATCH] Added an example C program to debug --- build.rs | 19 +++++++++++++------ src/prog.c | 7 +++++++ 2 files changed, 20 insertions(+), 6 deletions(-) create mode 100644 src/prog.c diff --git a/build.rs b/build.rs index 509006c..3da1b16 100644 --- a/build.rs +++ b/build.rs @@ -1,14 +1,21 @@ use std::process::Command; fn main() { - let test_prog_exe_path = &format!("{}/prog", std::env::var("OUT_DIR").unwrap()); - let test_prog_obj_path = &format!("{}.o", test_prog_exe_path); + let assembly_exe_path = &format!("{}/asmprog", std::env::var("OUT_DIR").unwrap()); + let assembly_obj_path = &format!("{}.o", assembly_exe_path); Command::new("nasm") - .args(&["-f", "elf64", "src/prog.nasm", "-o", test_prog_obj_path]) + .args(&["-f", "elf64", "src/prog.nasm", "-o", assembly_obj_path]) .spawn().expect("nasm build failed"); Command::new("ld") - .args(&[test_prog_obj_path, "-o", test_prog_exe_path]) + .args(&[assembly_obj_path, "-o", assembly_exe_path]) .spawn().expect("linking failed"); println!("cargo:rerun-if-changed=src/prog.nasm"); - println!("cargo:rustc-env=TEST_PROG_PATH={}", test_prog_exe_path); -} \ No newline at end of file + + let c_exe_path = &format!("{}/cprog", std::env::var("OUT_DIR").unwrap()); + Command::new("gcc") + .args(&["-o", c_exe_path, "src/prog.c"]) + .spawn().expect("C program compilation failed"); + println!("cargo:rerun-if-changed=src/prog.c"); + + println!("cargo:rustc-env=TEST_PROG_PATH={}", assembly_exe_path); +} diff --git a/src/prog.c b/src/prog.c new file mode 100644 index 0000000..e5d645e --- /dev/null +++ b/src/prog.c @@ -0,0 +1,7 @@ +#include +#include + +int main() { + printf("Hello world\n"); + return 0; +}