diff --git a/cmd/readvar/src/lib.rs b/cmd/readvar/src/lib.rs index 4d077a814..f7781058e 100644 --- a/cmd/readvar/src/lib.rs +++ b/cmd/readvar/src/lib.rs @@ -135,14 +135,19 @@ fn readvar(context: &mut ExecutionContext) -> Result<()> { n == v || n.ends_with(&suffix) } - if let Some(ref variable) = subargs.variable { + if let Some(variable) = &subargs.variable { let m = if variable.contains("::") { match_exact } else { match_suffix }; + let mut found = false; for (n, v) in hubris.qualified_variables().filter(|&(n, _)| m(n, variable)) { readvar_dump(hubris, core, v, n, &subargs)?; + found = true; + } + if !found { + bail!("variable '{variable}' not found; use \"-l\" to list"); } } else { bail!("expected variable (use \"-l\" to list)"); diff --git a/humility-core/src/core.rs b/humility-core/src/core.rs index 66c27444b..765650397 100644 --- a/humility-core/src/core.rs +++ b/humility-core/src/core.rs @@ -148,47 +148,47 @@ impl Core for UnattachedCore { } fn read_8(&mut self, _addr: u32, _data: &mut [u8]) -> Result<()> { - bail!("Unimplemented when unattached!"); + bail!("Core::read_8 unimplemented when unattached!"); } fn read_reg(&mut self, _reg: ARMRegister) -> Result { - bail!("Unimplemented when unattached!"); + bail!("Core::read_reg unimplemented when unattached!"); } fn write_reg(&mut self, _reg: ARMRegister, _value: u32) -> Result<()> { - bail!("Unimplemented when unattached!"); + bail!("Core::write_reg unimplemented when unattached!"); } fn write_word_32(&mut self, _addr: u32, _data: u32) -> Result<()> { - bail!("Unimplemented when unattached!"); + bail!("Core::write_word_32 unimplemented when unattached!"); } fn write_8(&mut self, _addr: u32, _data: &[u8]) -> Result<()> { - bail!("Unimplemented when unattached!"); + bail!("Core::write_8 unimplemented when unattached!"); } fn halt(&mut self) -> Result<()> { - bail!("Unimplemented when unattached!"); + bail!("Core::halt unimplemented when unattached!"); } fn run(&mut self) -> Result<()> { - bail!("Unimplemented when unattached!"); + bail!("Core::run unimplemented when unattached!"); } fn step(&mut self) -> Result<()> { - bail!("Unimplemented when unattached!"); + bail!("Core::step unimplemented when unattached!"); } fn init_swv(&mut self) -> Result<()> { - bail!("Unimplemented when unattached!"); + bail!("Core::init_swv unimplemented when unattached!"); } fn read_swv(&mut self) -> Result> { - bail!("Unimplemented when unattached!"); + bail!("Core::read_swv unimplemented when unattached!"); } fn load(&mut self, _path: &Path) -> Result<()> { - bail!("Unimplemented when unattached!"); + bail!("Core::load unimplemented when unattached!"); } fn reset(&mut self) -> Result<()> { diff --git a/humility-net-core/src/lib.rs b/humility-net-core/src/lib.rs index 6b044774c..42654b914 100644 --- a/humility-net-core/src/lib.rs +++ b/humility-net-core/src/lib.rs @@ -221,7 +221,8 @@ impl NetCore { // least one task associated with it. If this task is the // supervisor, then that's bad news. let region = ram[p - 1].clone(); - let Some(&task) = region.tasks.iter().find(|t| t.task() != 0) else { + let Some(&task) = region.tasks.iter().find(|t| t.task() != 0) + else { bail!("supervisor memory cannot be read using dump facilities"); }; diff --git a/tests/cmd/readvar-ticks/readvar-ticks.extern-regions.stderr b/tests/cmd/readvar-ticks/readvar-ticks.extern-regions.stderr index da2ede4a0..c37c83ff5 100644 --- a/tests/cmd/readvar-ticks/readvar-ticks.extern-regions.stderr +++ b/tests/cmd/readvar-ticks/readvar-ticks.extern-regions.stderr @@ -1 +1,2 @@ humility: attached to dump +humility readvar failed: variable 'TICKS' not found; use "-l" to list diff --git a/tests/cmd/readvar-ticks/readvar-ticks.extern-regions.toml b/tests/cmd/readvar-ticks/readvar-ticks.extern-regions.toml index e1c38e887..2789b8362 100644 --- a/tests/cmd/readvar-ticks/readvar-ticks.extern-regions.toml +++ b/tests/cmd/readvar-ticks/readvar-ticks.extern-regions.toml @@ -7,4 +7,4 @@ fs.base = "../cores" bin.name = "humility" args = "-d hubris.core.extern-regions readvar TICKS" - +status.code = 1 # Hand-edit: no TICKS variable is present in this image diff --git a/tests/cmd/readvar-ticks/readvar-ticks.task.net.stderr b/tests/cmd/readvar-ticks/readvar-ticks.task.net.stderr index da2ede4a0..c37c83ff5 100644 --- a/tests/cmd/readvar-ticks/readvar-ticks.task.net.stderr +++ b/tests/cmd/readvar-ticks/readvar-ticks.task.net.stderr @@ -1 +1,2 @@ humility: attached to dump +humility readvar failed: variable 'TICKS' not found; use "-l" to list diff --git a/tests/cmd/readvar-ticks/readvar-ticks.task.net.toml b/tests/cmd/readvar-ticks/readvar-ticks.task.net.toml index 37c27a5ba..cd296c8f2 100644 --- a/tests/cmd/readvar-ticks/readvar-ticks.task.net.toml +++ b/tests/cmd/readvar-ticks/readvar-ticks.task.net.toml @@ -7,4 +7,4 @@ fs.base = "../cores" bin.name = "humility" args = "-d hubris.core.task.net readvar TICKS" - +status.code = 1 # Hand-edit: no TICKS variable is present in this image