summaryrefslogtreecommitdiffstats
path: root/rsdos
diff options
context:
space:
mode:
authorsalmonik <salmonik@tuta.io>2026-08-02 16:06:40 +0200
committersalmonik <salmonik@tuta.io>2026-08-02 16:06:40 +0200
commita459dd3fb267bfba24c3fad1e3dc789bf50ee20b (patch)
treef2d541f442d9fec5cf6ecb210c5b89710870ecfb /rsdos
parentv0.5.5: on-screen boot markers for disk/fs stage (diff)
downloadrs-dos-a459dd3fb267bfba24c3fad1e3dc789bf50ee20b.tar.gz
rs-dos-a459dd3fb267bfba24c3fad1e3dc789bf50ee20b.zip
v0.5.6: fault dumps carry kernel image base + stack backtrace
- fault_dump prints img= (kernel image base) on the serial line and the on-screen band, so a real-hardware repro can be resolved against the PDB without serial - backtrace: rbp-chain walk then a raw scan of the stack above the interrupted rsp; both filter to the .text range (PE-header parse via memory::text_range) so only code addresses are collected - on-screen boot marker shows the kernel image range at every boot - crash.log now records img= + bt= lines alongside rip/rsp
Diffstat (limited to 'rsdos')
-rw-r--r--rsdos/src/main.rs8
1 files changed, 8 insertions, 0 deletions
diff --git a/rsdos/src/main.rs b/rsdos/src/main.rs
index 4fe89c9..60acc4e 100644
--- a/rsdos/src/main.rs
+++ b/rsdos/src/main.rs
@@ -197,6 +197,14 @@ pub unsafe extern "efiapi" fn efi_main(image_handle: Handle, system_table: *mut
197 cols, 197 cols,
198 rows 198 rows
199 )); 199 ));
200 if let Some((ib, ie)) = rsnix::memory::kernel_image_range() {
201 rsnix::gop::boot_marker(&alloc::format!(
202 "rsnix: img 0x{:x}-0x{:x} ({} KiB)",
203 ib,
204 ie,
205 (ie - ib) / 1024
206 ));
207 }
200 208
201 // ExitBootServices — we now own the machine 209 // ExitBootServices — we now own the machine
202 if unsafe { (bs.exit_boot_services)(image_handle, map_key) } != EFI_SUCCESS { 210 if unsafe { (bs.exit_boot_services)(image_handle, map_key) } != EFI_SUCCESS {