diff --git a/src/backend/eval.rs b/src/backend/eval.rs index 950a5a1..1218507 100644 --- a/src/backend/eval.rs +++ b/src/backend/eval.rs @@ -52,11 +52,10 @@ impl Backend { } } - #[cfg(target_family = "unix")] fn link(object_file: &Path, executable_path: &Path) -> Result<(), EvalError> { - use std::{os::unix::prelude::PermissionsExt, path::PathBuf}; + use std::path::PathBuf; - let output = std::process::Command::new("gcc") + let output = std::process::Command::new("clang") .arg( PathBuf::from(env!("CARGO_MANIFEST_DIR")) .join("runtime") @@ -67,16 +66,13 @@ impl Backend { .arg(executable_path) .output()?; - if output.stderr.is_empty() { - let mut perms = std::fs::metadata(executable_path)?.permissions(); - perms.set_mode(perms.mode() | 0o100); // user execute bit - std::fs::set_permissions(executable_path, perms)?; - Ok(()) - } else { - Err(EvalError::IO( + if !output.stderr.is_empty() { + return Err(EvalError::IO( std::string::String::from_utf8_lossy(&output.stderr).to_string(), - )) + )); } + + Ok(()) } }