Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 29 Oct 2008 09:11:58 GMT
From:      Peter Wemm <peter@FreeBSD.org>
To:        Perforce Change Reviews <perforce@freebsd.org>
Subject:   PERFORCE change 152143 for review
Message-ID:  <200810290911.m9T9Bw2q087035@repoman.freebsd.org>

next in thread | raw e-mail | index | archive | help
http://perforce.freebsd.org/chv.cgi?CH=152143

Change 152143 by peter@peter_overcee on 2008/10/29 09:11:54

	Complete getSyscallStatusFromGuestState() for amd64.
	Fix 8th argument in getSyscallArgsFromGuestState() for amd64.
	Rough syscall abi notes added.

Affected files ...

.. //depot/projects/valgrind/coregrind/m_syswrap/syswrap-main.c#9 edit

Differences ...

==== //depot/projects/valgrind/coregrind/m_syswrap/syswrap-main.c#9 (text+ko) ====

@@ -63,6 +63,9 @@
    AIX:
    ppc32  r2  r3   r4   r5   r6   r7   r8   r9   r10  r3(res),r4(err)
    ppc64  r2  r3   r4   r5   r6   r7   r8   r9   r10  r3(res),r4(err)
+   FreeBSD:
+   x86    eax esp  esp  esp  esp  esp  esp  esp  esp  eax+edx+eflags.c
+   amd64  rax rdi  rsi  rdx  r10  r8   r9   rsp  rsp  rax+rdx+rflags.c
 */
 
 /* This is the top level of the system-call handler module.  All
@@ -286,7 +289,7 @@
 static
 Bool eq_SyscallStatus ( SyscallStatus* s1, SyscallStatus* s2 )
 {
-//VG_(printf)( "eq_SyscallStatus: what %d %d res %ld %ld res2 %ld %ld err %ld %ld\n", s1->what, s2->what, s1->sres.res, s2->sres.res, s1->sres.res2, s2->sres.res2, s1->sres.err, s2->sres.err);
+//VG_(printf)( "eq_SyscallStatus: what %d %d res %ld %ld res2 %ld %ld err %ld %ld isError %d %d\n", s1->what, s2->what, s1->sres.res, s2->sres.res, s1->sres.res2, s2->sres.res2, s1->sres.err, s2->sres.err, s1->sres.isError, s2->sres.isError);
    return s1->what == s2->what 
           && s1->sres.res == s2->sres.res
 #if defined(VGO_freebsd)
@@ -357,7 +360,7 @@
       canonical->arg5  = gst->guest_R9;
       canonical->arg6  = argv[1];
       canonical->arg7  = argv[2];
-      canonical->arg8  = argv[2];
+      canonical->arg8  = argv[3];
       break;
    }
 
@@ -561,8 +564,7 @@
 #elif defined(VGP_amd64_freebsd)
    VexGuestAMD64State* gst = (VexGuestAMD64State*)gst_vanilla;
    canonical->what = SsComplete;
-   canonical->sres.res  = (UWord)gst->guest_RAX;
-   canonical->sres.res2 = (UWord)gst->guest_RDX;
+   canonical->sres = VG_(mk_SysRes_amd64_freebsd)( gst->guest_RAX, gst->guest_RDX, LibVEX_GuestAMD64_get_rflags(gst));
 
 #  else
 #    error "getSyscallStatusFromGuestState: unknown arch"



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200810290911.m9T9Bw2q087035>