Skip to content

Commit

Permalink
sim: Increase jmpbuf size
Browse files Browse the repository at this point in the history
Increase the size of the jmpbuf to accomodate other architectures.
Unfortunately, the size of this is not available in the libc crate.
Increase this so encompass any platforms we wish to support, including
aarch64 on both Linux and MacOS.

Increasing an array beyond 32 means there is no default offered, so
implement this manually.

Signed-off-by: David Brown <david.brown@linaro.org>
  • Loading branch information
d3zd3z committed Jun 26, 2024
1 parent d6a5a73 commit a706317
Show file tree
Hide file tree
Showing 2 changed files with 15 additions and 5 deletions.
16 changes: 14 additions & 2 deletions sim/mcuboot-sys/src/api.rs
Original file line number Diff line number Diff line change
Expand Up @@ -90,7 +90,7 @@ impl Default for FlashContext {
}

#[repr(C)]
#[derive(Debug, Default)]
#[derive(Debug)]
pub struct CSimContext {
pub flash_counter: libc::c_int,
pub jumped: libc::c_int,
Expand All @@ -99,7 +99,19 @@ pub struct CSimContext {
// NOTE: Always leave boot_jmpbuf declaration at the end; this should
// store a "jmp_buf" which is arch specific and not defined by libc crate.
// The size below is enough to store data on a x86_64 machine.
pub boot_jmpbuf: [u64; 16],
pub boot_jmpbuf: [u64; 48],
}

impl Default for CSimContext {
fn default() -> Self {
CSimContext {
flash_counter: 0,
jumped: 0,
c_asserts: 0,
c_catch_asserts: 0,
boot_jmpbuf: [0; 48],
}
}
}

pub struct CSimContextPtr {
Expand Down
4 changes: 1 addition & 3 deletions sim/mcuboot-sys/src/c.rs
Original file line number Diff line number Diff line change
Expand Up @@ -81,10 +81,8 @@ pub fn boot_go(multiflash: &mut SimMultiFlash, areadesc: &AreaDesc,
None => 0,
Some(ref c) => **c as libc::c_int
},
jumped: 0,
c_asserts: 0,
c_catch_asserts: if catch_asserts { 1 } else { 0 },
boot_jmpbuf: [0; 16],
.. Default::default()
};
let mut rsp = api::BootRsp {
br_hdr: std::ptr::null(),
Expand Down

0 comments on commit a706317

Please sign in to comment.