/* For tracking memory events, indicate the entire frame has been
allocated. */
- VG_TRACK( new_mem_stack_signal, addr - VGA_STACK_REDZONE_SIZE, size );
+ VG_TRACK( new_mem_stack_signal, addr - VGA_STACK_REDZONE_SIZE,
+ size + VGA_STACK_REDZONE_SIZE );
return True;
}
size = restore_rt_sigframe(tst, (struct rt_sigframe *)rsp, &sigNo);
- VG_TRACK( die_mem_stack_signal, rsp - VGA_STACK_REDZONE_SIZE, size );
+ VG_TRACK( die_mem_stack_signal, rsp - VGA_STACK_REDZONE_SIZE,
+ size + VGA_STACK_REDZONE_SIZE );
if (VG_(clo_trace_signals))
VG_(message)(
/* For tracking memory events, indicate the entire frame has been
allocated. */
- VG_TRACK( new_mem_stack_signal, addr - VGA_STACK_REDZONE_SIZE, size );
+ VG_TRACK( new_mem_stack_signal, addr - VGA_STACK_REDZONE_SIZE,
+ size + VGA_STACK_REDZONE_SIZE );
return True;
}
else
size = restore_rt_sigframe(tst, (struct rt_sigframe *)esp, &sigNo);
- VG_TRACK( die_mem_stack_signal, esp - VGA_STACK_REDZONE_SIZE, size );
+ VG_TRACK( die_mem_stack_signal, esp - VGA_STACK_REDZONE_SIZE,
+ size + VGA_STACK_REDZONE_SIZE );
if (VG_(clo_trace_signals))
VG_(message)(
VG_(threads)[tid].altstack.ss_sp = ss->ss_sp;
VG_(threads)[tid].altstack.ss_size = ss->ss_size;
VG_(threads)[tid].altstack.ss_flags = 0;
-
- VG_TRACK( new_mem_stack_signal,
- ss->ss_sp + ss->ss_size - VGA_STACK_REDZONE_SIZE,
- VGA_STACK_REDZONE_SIZE );
}
}
SET_SYSCALL_RETVAL(tid, 0);
VG_TRACK( pre_deliver_signal, tid, sigNo, /*alt_stack*/True );
} else {
- esp_top_of_frame = STACK_PTR(tst->arch);
+ esp_top_of_frame = STACK_PTR(tst->arch) - VGA_STACK_REDZONE_SIZE;
/* Signal delivery to tools */
VG_TRACK( pre_deliver_signal, tid, sigNo, /*alt_stack*/False );