|
From: <sv...@va...> - 2005-05-31 13:08:11
|
Author: sewardj
Date: 2005-05-31 14:08:03 +0100 (Tue, 31 May 2005)
New Revision: 3823
Modified:
trunk/coregrind/m_syscalls/syscalls-x86-linux.c
Log:
At clone(), always start the child off with a copy of the parent's GDT.
Modified: trunk/coregrind/m_syscalls/syscalls-x86-linux.c
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/coregrind/m_syscalls/syscalls-x86-linux.c 2005-05-31 10:12:06 U=
TC (rev 3822)
+++ trunk/coregrind/m_syscalls/syscalls-x86-linux.c 2005-05-31 13:08:03 U=
TC (rev 3823)
@@ -412,7 +412,7 @@
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)*=
/ );
=20
VGP_SET_SYSCALL_RESULT(ctst->arch, 0);
if (esp !=3D 0)
@@ -1035,15 +1035,13 @@
- The Quadrics Elan3 driver specifies clone flags of 0xF00.
Everything else is rejected.=20
*/
- if (!VG_(clo_support_elan3)
- && (cloneflags =3D=3D 0x100011 || cloneflags =3D=3D 0x1200011
- || cloneflags =3D=3D 0x7D0F00)) {
- /* OK */
+ if (
+ (cloneflags =3D=3D 0x100011 || cloneflags =3D=3D 0x1200011
+ || cloneflags =3D=3D 0x7D0F00
+ || cloneflags =3D=3D 0xF00
+ || cloneflags =3D=3D 0xF21)) {
+ /* OK */
}
- else=20
- if (VG_(clo_support_elan3) && cloneflags =3D=3D 0xF00) {
- /* OK */
- }
else {
/* Nah. We don't like it. Go away. */
goto reject;
|