PERFORCE change 125473 for review

Peter Wemm peter at FreeBSD.org
Mon Aug 20 17:41:44 PDT 2007


http://perforce.freebsd.org/chv.cgi?CH=125473

Change 125473 by peter at peter_cheese on 2007/08/21 00:41:28

	Remove nargs and indir_sysno stuff.  We don't need it for
	reconstructing the args on the stack anymore and it removes one
	infrastructural difference to the linux version.

Affected files ...

.. //depot/projects/valgrind/coregrind/Makefile.am#3 edit
.. //depot/projects/valgrind/coregrind/m_syswrap/makeargsize.sh#2 delete
.. //depot/projects/valgrind/coregrind/m_syswrap/makeargsize6.sh#3 delete
.. //depot/projects/valgrind/coregrind/m_syswrap/priv_types_n_macros.h#3 edit
.. //depot/projects/valgrind/coregrind/m_syswrap/sysargcount.c#3 delete
.. //depot/projects/valgrind/coregrind/m_syswrap/syscall-x86-freebsd.S#3 edit
.. //depot/projects/valgrind/coregrind/m_syswrap/syswrap-main.c#4 edit

Differences ...

==== //depot/projects/valgrind/coregrind/Makefile.am#3 (text+ko) ====

@@ -209,8 +209,7 @@
 	m_dispatch/dispatch-x86-freebsd.S \
 	m_sigframe/sigframe-x86-freebsd.c \
 	m_syswrap/syscall-x86-freebsd.S \
-	m_syswrap/syswrap-x86-freebsd.c \
-	m_syswrap/sysargcount.c
+	m_syswrap/syswrap-x86-freebsd.c
 
 libcoregrind_x86_freebsd_a_CPPFLAGS = $(AM_CPPFLAGS_X86_FREEBSD)
 libcoregrind_x86_freebsd_a_CFLAGS = $(AM_CFLAGS_X86_FREEBSD)

==== //depot/projects/valgrind/coregrind/m_syswrap/priv_types_n_macros.h#3 (text+ko) ====

@@ -60,8 +60,6 @@
 #ifdef VGO_freebsd
       UWord arg7;
       UWord arg8;
-      Word indir_sysno;	/* -1 if indirect syscall() or __syscall() */
-      UWord nargs;
 #endif
    }
    SyscallArgs;

==== //depot/projects/valgrind/coregrind/m_syswrap/syscall-x86-freebsd.S#3 (text+ko) ====

@@ -81,8 +81,6 @@
 #ifdef VGO_freebsd
       UWord arg7;		// 28
       UWord arg8;		// 32
-      Word indir_sysno; 	// 36 (-1 if indirect syscall() or __syscall())
-      UWord nargs;		// 40
 #endif
 				   
 */

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

@@ -318,11 +318,6 @@
    the platform-specific in-guest-state format to the canonical
    formats, and back. */
 
-#if defined(VGP_x86_freebsd)
-extern int sysargcount[];	/* HACK! HACK! */
-extern int numsysargcount;	/* HACK! HACK! */
-#endif
-
 static 
 void getSyscallArgsFromGuestState ( /*OUT*/SyscallArgs*       canonical,
                                     /*IN*/ VexGuestArchState* gst_vanilla )
@@ -374,25 +369,21 @@
    switch (gst->guest_EAX) {
    default:
       canonical->sysno = gst->guest_EAX;
-      canonical->indir_sysno = -1;
       break;
    case 198:
       canonical->sysno = argv[1];
-      canonical->indir_sysno = 198;
       argv += 2;
       break;
    case 0:
       canonical->sysno = argv[1];
-      canonical->indir_sysno = 0;
       argv += 1;
       break;
    }
-   if (canonical->sysno < numsysargcount)
-      canonical->nargs = sysargcount[canonical->sysno];
-   else
-      canonical->nargs = 0;
-   memset(&canonical->arg1, 0xfe, (char *)&canonical->indir_sysno - (char *)&canonical->arg1);
-   memcpy(&canonical->arg1, &argv[1], canonical->nargs * sizeof(UWord));
+   /*
+    * Blindly copy 8 arguments from the stack. Valgrind checks
+    * for initialized-ness elsewhere.
+    */
+   memcpy(&canonical->arg1, &argv[1], 8 * sizeof(UWord));
 
 #else
 #  error "getSyscallArgsFromGuestState: unknown arch"
@@ -445,7 +436,6 @@
 
 #elif defined(VGP_x86_freebsd) || defined(VGP_amd64_freebsd)
    /* Nothing.  Uses args passed out of band. */
-#endif
 
 #else
 #  error "putSyscallArgsIntoGuestState: unknown arch"


More information about the p4-projects mailing list