Skip to content

Commit 7f63b96

Browse files
committed
Making change to make sure the memmove_test is pass
1 parent e696847 commit 7f63b96

File tree

2 files changed

+21
-24
lines changed

2 files changed

+21
-24
lines changed

crates/libmwemu/src/emu/mod.rs

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -79,11 +79,8 @@ pub struct Emu {
7979
pub threads: Vec<ThreadContext>,
8080
pub current_thread_id: usize, // Index into threads vec
8181
pub global_locks: GlobalLocks, // Critical section lock tracking
82-
<<<<<<<
83-
pub instruction_cache: InstructionCache
84-
=======
82+
pub instruction_cache: InstructionCache,
8583
pub definitions: HashMap<u64, Definition>,
8684
pub stored_contexts: HashMap<String, StoredContext>,
8785
pub entropy: f64,
88-
>>>>>>>
8986
}

crates/libmwemu/src/tests/memmove_test.rs

Lines changed: 20 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
use crate::{tests::helpers, *};
2-
2+
use crate::maps::mem64::Permission;
33
// RUST_LOG=debug cargo test --target x86_64-apple-darwin --features log_mem_write memmove_non_overlapping_copy
44
// RUST_LOG=debug cargo test --target x86_64-apple-darwin --features log_mem_write memmove_non_overlapping_copy
55

@@ -343,12 +343,12 @@ fn setup_memmove_emulator() -> (emu::Emu, u64, usize) {
343343
// Set up stack
344344
let stack_addr = 0x1000000;
345345
let stack_size = 0x10000;
346-
emu.maps.create_map("stack", stack_addr, stack_size);
346+
emu.maps.create_map("stack", stack_addr, stack_size, Permission::READ_WRITE);
347347
emu.regs_mut().rsp = stack_addr + stack_size / 2;
348348

349349
// Load memmove code at address 0x400000
350350
let code_addr = 0x400000;
351-
emu.maps.create_map("code", code_addr, memmove_code_len as u64 + 0x100);
351+
emu.maps.create_map("code", code_addr, memmove_code_len as u64 + 0x100, Permission::READ_WRITE_EXECUTE);
352352
emu.maps.write_bytes(code_addr, memmove_code);
353353

354354
(emu, code_addr, memmove_code_len)
@@ -363,8 +363,8 @@ fn memmove_non_overlapping_copy() {
363363
let src_addr = 0x500000;
364364
let dest_addr = 0x600000;
365365

366-
emu.maps.create_map("src", src_addr, 0x1000);
367-
emu.maps.create_map("dest", dest_addr, 0x1000);
366+
emu.maps.create_map("src", src_addr, 0x1000, Permission::READ_WRITE);
367+
emu.maps.create_map("dest", dest_addr, 0x1000, Permission::READ_WRITE);
368368

369369
// Initialize source with pattern
370370
let test_pattern = b"Hello, World! This is a test pattern.";
@@ -415,7 +415,7 @@ fn memmove_overlapping_forward() {
415415
let overlap_dest = 0x700010; // 16 bytes overlap
416416
let test_data: Vec<u8> = (0..64).collect();
417417

418-
emu.maps.create_map("overlap", overlap_src, 0x100);
418+
emu.maps.create_map("overlap", overlap_src, 0x100, Permission::READ_WRITE);
419419
emu.maps.write_bytes(overlap_src, test_data.clone());
420420

421421
// Set up for overlapping copy
@@ -447,7 +447,7 @@ fn memmove_overlapping_backward() {
447447
let overlap_dest = 0x800000;
448448
let test_data: Vec<u8> = (0..64).collect();
449449

450-
emu.maps.create_map("overlap2", 0x800000, 0x100);
450+
emu.maps.create_map("overlap2", 0x800000, 0x100, Permission::READ_WRITE);
451451
emu.maps.write_bytes(overlap_src, test_data.clone());
452452

453453
// Set up for backward overlapping copy
@@ -479,8 +479,8 @@ fn memmove_large_buffer() {
479479
let large_dest = 0xA00000;
480480
let large_size = 0x2000; // 8KB
481481

482-
emu.maps.create_map("large_src", large_src, large_size);
483-
emu.maps.create_map("large_dest", large_dest, large_size);
482+
emu.maps.create_map("large_src", large_src, large_size, Permission::READ_WRITE);
483+
emu.maps.create_map("large_dest", large_dest, large_size, Permission::READ_WRITE);
484484

485485
// Fill with pattern
486486
let mut pattern = Vec::new();
@@ -516,8 +516,8 @@ fn memmove_zero_length() {
516516
let src_addr = 0x500000;
517517
let dest_addr = 0x600000;
518518

519-
emu.maps.create_map("src", src_addr, 0x100);
520-
emu.maps.create_map("dest", dest_addr, 0x100);
519+
emu.maps.create_map("src", src_addr, 0x100, Permission::READ_WRITE);
520+
emu.maps.create_map("dest", dest_addr, 0x100, Permission::READ_WRITE);
521521

522522
emu.regs_mut().rdx = dest_addr;
523523
emu.regs_mut().rcx = src_addr;
@@ -546,8 +546,8 @@ fn memmove_unaligned_addresses() {
546546
let unaligned_dest = 0xC00007;
547547
let test_data = b"Unaligned test data";
548548

549-
emu.maps.create_map("unaligned_src", 0xB00000, 0x100);
550-
emu.maps.create_map("unaligned_dest", 0xC00000, 0x100);
549+
emu.maps.create_map("unaligned_src", 0xB00000, 0x100, Permission::READ_WRITE);
550+
emu.maps.create_map("unaligned_dest", 0xC00000, 0x100, Permission::READ_WRITE);
551551
emu.maps.write_bytes(unaligned_src, test_data.to_vec());
552552

553553
emu.regs_mut().rdx = unaligned_dest;
@@ -577,8 +577,8 @@ fn memmove_exact_page_boundary() {
577577
let page_boundary = 0xD00000;
578578
let test_size = 0x1000; // Exactly one page
579579

580-
emu.maps.create_map("page1", page_boundary - 0x800, 0x1000);
581-
emu.maps.create_map("page2", page_boundary + 0x800, 0x1000);
580+
emu.maps.create_map("page1", page_boundary - 0x800, 0x1000, Permission::READ_WRITE);
581+
emu.maps.create_map("page2", page_boundary + 0x800, 0x1000, Permission::READ_WRITE);
582582

583583
// Create pattern that crosses page boundary
584584
let pattern: Vec<u8> = (0..test_size).map(|i| (i % 256) as u8).collect();
@@ -611,8 +611,8 @@ fn memmove_alignment_boundary_sizes() {
611611
let src_base = 0x1000000 + (i * 0x10000) as u64;
612612
let dest_base = src_base + 0x8000;
613613

614-
emu.maps.create_map(&format!("test_src_{}", i), src_base, 0x1000);
615-
emu.maps.create_map(&format!("test_dest_{}", i), dest_base, 0x1000);
614+
emu.maps.create_map(&format!("test_src_{}", i), src_base, 0x1000, Permission::READ_WRITE);
615+
emu.maps.create_map(&format!("test_dest_{}", i), dest_base, 0x1000, Permission::READ_WRITE);
616616

617617
let pattern: Vec<u8> = (0..size).map(|j| ((i + j) % 256) as u8).collect();
618618
emu.maps.write_bytes(src_base, pattern.clone());
@@ -645,7 +645,7 @@ fn memmove_stress_overlapping_patterns() {
645645
let base_addr = 0x2000000;
646646
let buffer_size = 0x1000;
647647

648-
emu.maps.create_map("stress_buffer", base_addr, buffer_size * 2);
648+
emu.maps.create_map("stress_buffer", base_addr, buffer_size * 2, Permission::READ_WRITE);
649649

650650
// Initialize with a recognizable pattern
651651
let original_pattern: Vec<u8> = (0..buffer_size)
@@ -694,8 +694,8 @@ fn memmove_performance_threshold_boundary() {
694694
let src_addr = 0x3000000 + (i * 0x100000) as u64;
695695
let dest_addr = src_addr + 0x80000;
696696

697-
emu.maps.create_map(&format!("perf_src_{}", i), src_addr, size + 0x1000);
698-
emu.maps.create_map(&format!("perf_dest_{}", i), dest_addr, size + 0x1000);
697+
emu.maps.create_map(&format!("perf_src_{}", i), src_addr, size + 0x1000, Permission::READ_WRITE);
698+
emu.maps.create_map(&format!("perf_dest_{}", i), dest_addr, size + 0x1000, Permission::READ_WRITE);
699699

700700
// Create a pattern that's easy to verify
701701
let mut pattern = Vec::with_capacity(size as usize);

0 commit comments

Comments
 (0)