Plumb the right %EIP and %EBP values through to VG_(get_ExeContext)
now that we have the additional complication of multiple threads.
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@64 a5019735-40e9-0310-863c-91ae7b9d1cf9
diff --git a/vg_include.h b/vg_include.h
index 5735b1c..6d7c4c3 100644
--- a/vg_include.h
+++ b/vg_include.h
@@ -1024,7 +1024,8 @@
/* Take a snapshot of the client's stack. Search our collection of
ExeContexts to see if we already have it, and if not, allocate a
new one. Either way, return a pointer to the context. */
-extern ExeContext* VG_(get_ExeContext) ( Bool skip_top_frame );
+extern ExeContext* VG_(get_ExeContext) ( Bool skip_top_frame,
+ Addr eip, Addr ebp );
/* Print an ExeContext. */
extern void VG_(pp_ExeContext) ( ExeContext* );
@@ -1052,10 +1053,13 @@
extern void VG_(record_address_error) ( Addr a, Int size,
Bool isWrite );
extern void VG_(record_jump_error) ( Addr a );
-extern void VG_(record_param_err) ( Addr a,
+
+extern void VG_(record_param_err) ( ThreadState* tst,
+ Addr a,
Bool isWriteLack,
Char* msg );
-extern void VG_(record_user_err) ( Addr a, Bool isWriteLack );
+extern void VG_(record_user_err) ( ThreadState* tst,
+ Addr a, Bool isWriteLack );
/* The classification of a faulting address. */
@@ -1084,7 +1088,7 @@
extern Bool VG_(client_perm_maybe_describe)( Addr a, AddrInfo* ai );
-extern UInt VG_(handle_client_request) ( UInt* arg_block );
+extern UInt VG_(handle_client_request) ( ThreadState* tst, UInt* arg_block );
extern void VG_(delete_client_stack_blocks_following_ESP_change) ( void );
@@ -1150,11 +1154,16 @@
/* These are called from the scheduler, when it intercepts a user
request. */
-extern void* VG_(client_malloc) ( UInt size, VgAllocKind kind );
-extern void* VG_(client_memalign) ( UInt align, UInt size );
-extern void VG_(client_free) ( void* ptrV, VgAllocKind kind );
-extern void* VG_(client_calloc) ( UInt nmemb, UInt size1 );
-extern void* VG_(client_realloc) ( void* ptrV, UInt size_new );
+extern void* VG_(client_malloc) ( ThreadState* tst,
+ UInt size, VgAllocKind kind );
+extern void* VG_(client_memalign) ( ThreadState* tst,
+ UInt align, UInt size );
+extern void VG_(client_free) ( ThreadState* tst,
+ void* ptrV, VgAllocKind kind );
+extern void* VG_(client_calloc) ( ThreadState* tst,
+ UInt nmemb, UInt size1 );
+extern void* VG_(client_realloc) ( ThreadState* tst,
+ void* ptrV, UInt size_new );
/* ---------------------------------------------------------------------
@@ -1342,7 +1351,7 @@
/* Is this address within some small distance below %ESP? Used only
for the --workaround-gcc296-bugs kludge. */
-extern Bool VG_(is_just_below_ESP)( Addr aa );
+extern Bool VG_(is_just_below_ESP)( Addr esp, Addr aa );
/* Nasty kludgery to deal with applications which switch stacks,
like netscape. */