]> git.ipfire.org Git - thirdparty/valgrind.git/commitdiff
At clone(), always start the child off with a copy of the parent's GDT.
authorJulian Seward <jseward@acm.org>
Tue, 31 May 2005 13:08:03 +0000 (13:08 +0000)
committerJulian Seward <jseward@acm.org>
Tue, 31 May 2005 13:08:03 +0000 (13:08 +0000)
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@3823

coregrind/m_syscalls/syscalls-x86-linux.c

index ec8a255cf370d60593a3329c08c899b7dd7ca6b7..275829cd9e7804ba9042da1a1fc6f79b62fd1b26 100644 (file)
@@ -412,7 +412,7 @@ static Int do_clone(ThreadId ptid,
       clone flags of 0xF00, and it seems to rely on the assumption
       that the child inherits a copy of the parent's GDT. Hence that
       is passed as an arg to setup_child. */
-   setup_child( &ctst->arch, &ptst->arch, VG_(clo_support_elan3) );
+   setup_child( &ctst->arch, &ptst->arch, True /*VG_(clo_support_elan3)*/ );
 
    VGP_SET_SYSCALL_RESULT(ctst->arch, 0);
    if (esp != 0)
@@ -1035,14 +1035,12 @@ PRE(sys_clone, Special)
       - The Quadrics Elan3 driver specifies clone flags of 0xF00.
       Everything else is rejected. 
    */
-   if (!VG_(clo_support_elan3)
-       && (cloneflags == 0x100011 || cloneflags == 0x1200011
-                                  || cloneflags == 0x7D0F00)) {
-      /* OK */
-   }
-   else 
-   if (VG_(clo_support_elan3) && cloneflags == 0xF00) {
-      /* OK */
+   if (
+          (cloneflags == 0x100011 || cloneflags == 0x1200011
+                                  || cloneflags == 0x7D0F00
+                                  || cloneflags == 0xF00
+                                  || cloneflags == 0xF21)) {
+     /* OK */
    }
    else {
       /* Nah.  We don't like it.  Go away. */