From 433c3114d52b4473e1ed598e0fb44d446bf2201a Mon Sep 17 00:00:00 2001 From: Shadow Cat Date: Thu, 11 Jun 2026 22:06:19 -0400 Subject: [PATCH] fixes --- src/arch/x86_64/encode.rs | 1 + src/arch/x86_64/test/bin.rs | 16 ++++++++-------- src/backend/container/pe/mod.rs | 3 ++- 3 files changed, 11 insertions(+), 9 deletions(-) diff --git a/src/arch/x86_64/encode.rs b/src/arch/x86_64/encode.rs index 435729c..d8e77ab 100644 --- a/src/arch/x86_64/encode.rs +++ b/src/arch/x86_64/encode.rs @@ -76,6 +76,7 @@ impl Code { if src > u32::MAX as u64 { return Err("cannot move 64 bit immediate into memory".into()); } + let src = src as u32; self.bytes.extend([rex(1, dst.reg, 0, 0), 0xc7]); self.modrm_regdisp(dst.reg, dst.disp); diff --git a/src/arch/x86_64/test/bin.rs b/src/arch/x86_64/test/bin.rs index 72141ce..074a2a4 100644 --- a/src/arch/x86_64/test/bin.rs +++ b/src/arch/x86_64/test/bin.rs @@ -5,7 +5,7 @@ use crate::{ use std::{fs::OpenOptions, io::Write, os::unix::fs::OpenOptionsExt, process::Command}; pub fn run() { - if let Err(err) = linux() { + if let Err(err) = windows() { println!("{err:?}"); } } @@ -109,13 +109,13 @@ fn windows() -> Result<(), CompilerMsg> { let path = "./x86_64_test.exe"; write(path, &binary); - let mut cmd = Command::new("wine"); - cmd.arg("x86_64_test"); - let mut proc = cmd.spawn().expect("failed to run"); - let status = proc.wait().expect("failed to wait"); - if let Some(code) = status.code() { - std::process::exit(code); - } + // let mut cmd = Command::new("wine"); + // cmd.arg("x86_64_test"); + // let mut proc = cmd.spawn().expect("failed to run"); + // let status = proc.wait().expect("failed to wait"); + // if let Some(code) = status.code() { + // std::process::exit(code); + // } Ok(()) } diff --git a/src/backend/container/pe/mod.rs b/src/backend/container/pe/mod.rs index 3e9385e..ce7f136 100644 --- a/src/backend/container/pe/mod.rs +++ b/src/backend/container/pe/mod.rs @@ -3,7 +3,7 @@ mod header; mod import; use super::*; -use crate::backend::{LibImport, LinkedProgram}; +use crate::backend::LinkedProgram; use data_dir::*; use header::*; @@ -48,6 +48,7 @@ pub fn create(program: &LinkedProgram) -> Vec { let code_start = data.pos(); data.extend(&program.code); + println!("entry: 0x{:x}", (code_start as u64 + program.entry.unwrap()) as u32); if !program.imports.is_empty() { let import_rva = import::encode(&mut data, &program.imports, code_start);