Adds an opt-in diagnostic that emits one tracing line per guest store overlapping any armed byte address, naming the writer (tid, pc, lr) plus old/new u32 lanes. Mirrors the --pc-probe / --branch-probe shape; pc/lr are stamped from worker_prologue via a thread-local Cell, so default runs (empty watch set) take a single is_empty() check on each write. Lockstep digest preserved (instructions=100000003 across reruns, sylpheed_n50m.json golden byte-identical). Diagnostic infra only; no functional change. Used to identify producers of dispatch-state writes for the audit-017 / audit-019 hunt.
32 lines
676 B
Rust
32 lines
676 B
Rust
pub mod access;
|
|
pub mod heap;
|
|
pub mod mmio;
|
|
pub mod page_table;
|
|
|
|
mod platform;
|
|
|
|
use thiserror::Error;
|
|
|
|
pub use access::MemoryAccess;
|
|
pub use heap::{set_writer_ctx, GuestMemory, HeapType};
|
|
pub use mmio::MmioRegion;
|
|
pub use page_table::PageEntry;
|
|
|
|
#[derive(Debug, Error)]
|
|
pub enum MemoryError {
|
|
#[error("Failed to allocate guest address space: {0}")]
|
|
AllocationFailed(String),
|
|
|
|
#[error("Invalid guest address: {0:#010x}")]
|
|
InvalidAddress(u32),
|
|
|
|
#[error("MMIO access at {0:#010x}")]
|
|
MmioAccess(u32),
|
|
|
|
#[error("Protection violation at {0:#010x}")]
|
|
ProtectionViolation(u32),
|
|
|
|
#[error("Out of memory in heap {0:?}")]
|
|
OutOfMemory(HeapType),
|
|
}
|