mirror of
https://github.com/rust-lang/rust.git
synced 2024-11-25 16:24:46 +00:00
rt: Fix alignment of new stack segments
This commit is contained in:
parent
ab4f35c1f1
commit
23df4de86d
@ -596,10 +596,8 @@ rust_task::new_stack(size_t stk_sz, void *args_addr, size_t args_sz) {
|
||||
stk_seg *stk_seg = new_stk(sched, this, stk_sz + args_sz);
|
||||
|
||||
uint8_t *new_sp = (uint8_t*)stk_seg->end;
|
||||
size_t sizeof_retaddr = sizeof(void*);
|
||||
// Make enough room on the new stack to hold the old stack pointer
|
||||
// in addition to the function arguments
|
||||
new_sp = align_down(new_sp - (args_sz + sizeof_retaddr));
|
||||
// Push the function arguments to the new stack
|
||||
new_sp = align_down(new_sp - args_sz);
|
||||
memcpy(new_sp, args_addr, args_sz);
|
||||
record_stack_limit();
|
||||
return new_sp;
|
||||
|
Loading…
Reference in New Issue
Block a user