## Finish up, print out any results, etc. `exitcode' is program's exit
## code. The shadow (if the `shadow_regs' need is set) can be found with
-## VG_(get_shadow_archreg)(R_EBX), since %ebx holds the argument to the
-## exit() syscall.
+## VG_(get_exit_status_shadow)().
void, fini, Int exitcode
tracked by the tool, and one of the specialised cases (eg. new_mem_stack_4)
isn't used in preference */
REGPARM(1)
-void VG_(unknown_esp_update)(Addr new_ESP)
+void VG_(unknown_esp_update)(Addr new_SP)
{
- Addr old_ESP = VG_(get_archreg)(R_ESP);
- Int delta = (Int)new_ESP - (Int)old_ESP;
+ Addr old_SP = VG_(get_archreg)(R_STACK_PTR);
+ Int delta = (Int)new_SP - (Int)old_SP;
if (delta < -(VG_HUGE_DELTA) || VG_HUGE_DELTA < delta) {
/* %esp has changed by more than HUGE_DELTA. We take this to mean
happening. */
if (VG_(clo_verbosity) > 1)
VG_(message)(Vg_UserMsg, "Warning: client switching stacks? "
- "%%esp: %p --> %p", old_ESP, new_ESP);
+ "%%esp: %p --> %p", old_SP, new_SP);
} else if (delta < 0) {
- VG_TRACK( new_mem_stack, new_ESP, -delta );
+ VG_TRACK( new_mem_stack, new_SP, -delta );
} else if (delta > 0) {
- VG_TRACK( die_mem_stack, old_ESP, delta );
+ VG_TRACK( die_mem_stack, old_SP, delta );
}
}
void VG_(set_return_from_syscall_shadow) ( ThreadId tid, UInt ret_shadow )
{
- VG_(set_thread_shadow_archreg)(tid, R_EAX, ret_shadow);
+ VG_(set_thread_shadow_archreg)(tid, R_SYSCALL_RET, ret_shadow);
}
UInt VG_(get_exit_status_shadow) ( void )
{
- return VG_(get_shadow_archreg)(R_EBX);
+ return VG_(get_shadow_archreg)(R_SYSCALL_ARG1);
}
void VG_(intercept_libc_freeres_wrapper)(Addr addr)