From 698f8c2f01ea549d77d7dc3338a12e04c11057b9 Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Wed, 17 Apr 2024 14:02:58 +0200 Subject: Adding upstream version 1.64.0+dfsg1. Signed-off-by: Daniel Baumann --- vendor/psm/examples/replace_stack_1.rs | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 vendor/psm/examples/replace_stack_1.rs (limited to 'vendor/psm/examples/replace_stack_1.rs') diff --git a/vendor/psm/examples/replace_stack_1.rs b/vendor/psm/examples/replace_stack_1.rs new file mode 100644 index 000000000..af9e4b92c --- /dev/null +++ b/vendor/psm/examples/replace_stack_1.rs @@ -0,0 +1,33 @@ +extern crate psm; + +psm::psm_stack_manipulation! { + yes { + use std::alloc; + + const STACK_SIZE: usize = 4096 * 64; + const STACK_ALIGN: usize = 4096; + + fn main() { + println!("current stack pointer is {:p}", psm::stack_pointer()); + unsafe { + let new_stack = alloc::alloc(alloc::Layout::from_size_align(STACK_SIZE, STACK_ALIGN).unwrap()); + println!("new stack is between {:p} and {:p}", new_stack, new_stack.offset(STACK_SIZE as isize)); + psm::replace_stack(new_stack, STACK_SIZE, || { + println!("after replacement stack pointer is {:p}", psm::stack_pointer()); + ::std::process::exit(0); + }); + } + } + } + no { + fn main() { + eprintln!("Stack manipulation not supported by this target"); + } + } +} + +#[test] +fn run_example() { + // NOTE: intentionally out-of-processes, as the example exits with `process::exit(0)`. + main() +} -- cgit v1.2.3