|
From: Nicholas N. <nj...@ca...> - 2004-09-11 13:17:13
|
CVS commit by nethercote:
Arch-abstraction:
- minor tweaks for handling client requests on PPC
M +11 -11 vg_scheduler.c 1.180
--- valgrind/coregrind/vg_scheduler.c #1.179:1.180
@@ -95,5 +95,5 @@ static Addr __libc_freeres_wrapper;
/* Forwards */
-static void do_client_request ( ThreadId tid );
+static void do_client_request ( ThreadId tid, UInt* args );
static void scheduler_sanity ( void );
static void do_pthread_cond_timedwait_TIMEOUT ( ThreadId tid );
@@ -877,5 +877,6 @@ VgSchedReturnCode do_scheduler ( Int* ex
if (trc == VG_TRC_EBP_JMP_CLIENTREQ) {
- UInt reqno = *(UInt*)(VG_(threads)[tid].arch.m_eax);
+ UInt* args = (UInt*)(ARCH_CLREQ_ARGS(VG_(threads)[tid].arch));
+ UInt reqno = args[0];
/* VG_(printf)("request 0x%x\n", reqno); */
@@ -889,5 +890,5 @@ VgSchedReturnCode do_scheduler ( Int* ex
}
- do_client_request(tid);
+ do_client_request(tid,args);
/* Following the request, we try and continue with the
same thread if still runnable. If not, go back to
@@ -2821,11 +2822,10 @@ void VG_(intercept_libc_freeres_wrapper)
*/
static
-void do_client_request ( ThreadId tid )
+void do_client_request ( ThreadId tid, UInt* arg )
{
- UInt* arg = (UInt*)(VG_(threads)[tid].arch.m_eax);
UInt req_no = arg[0];
if (0)
- VG_(printf)("req no = 0x%x\n", req_no);
+ VG_(printf)("req no = 0x%x, arg = %p\n", req_no, arg);
switch (req_no) {
@@ -3088,5 +3088,5 @@ void do_client_request ( ThreadId tid )
case VG_USERREQ__PRINTF: {
int count =
- VG_(vmessage)( Vg_ClientMsg, (char *)arg[1], (va_list)arg[2] );
+ VG_(vmessage)( Vg_ClientMsg, (char *)arg[1], (void*)arg[2] );
SET_CLREQ_RETVAL( tid, count );
break; }
@@ -3095,5 +3095,5 @@ void do_client_request ( ThreadId tid )
case VG_USERREQ__INTERNAL_PRINTF: {
int count =
- VG_(vmessage)( Vg_UserMsg, (char *)arg[1], (va_list)arg[2] );
+ VG_(vmessage)( Vg_UserMsg, (char *)arg[1], (void*)arg[2] );
SET_CLREQ_RETVAL( tid, count );
break; }
@@ -3102,5 +3102,5 @@ void do_client_request ( ThreadId tid )
ExeContext *e = VG_(get_ExeContext)( tid );
int count =
- VG_(vmessage)( Vg_ClientMsg, (char *)arg[1], (va_list)arg[2] );
+ VG_(vmessage)( Vg_ClientMsg, (char *)arg[1], (void*)arg[2] );
VG_(mini_stack_dump)(e->ips, VG_(clo_backtrace_size));
SET_CLREQ_RETVAL( tid, count );
@@ -3110,5 +3110,5 @@ void do_client_request ( ThreadId tid )
ExeContext *e = VG_(get_ExeContext)( tid );
int count =
- VG_(vmessage)( Vg_UserMsg, (char *)arg[1], (va_list)arg[2] );
+ VG_(vmessage)( Vg_UserMsg, (char *)arg[1], (void*)arg[2] );
VG_(mini_stack_dump)(e->ips, VG_(clo_backtrace_size));
SET_CLREQ_RETVAL( tid, count );
|