thread handling fix for BSD and Solaris
Pierre Beyssac
pb at fasterix.frmug.org
Sat Aug 10 12:12:07 CDT 2002
Hi,
Here's a patch to fix a EFAULT error returned by ptrace calls in
server/context_i386.c, causing tons of "file_set_error: Bad address"
errors.
Two arguments to ptrace were reversed.
This is tested on FreeBSD and checked with NetBSD and Solaris
ptrace(2) manual pages.
--- wine-20020804.orig/server/context_i386.c Sun Mar 10 01:18:36 2002
+++ wine-20020804/server/context_i386.c Sat Aug 10 19:07:31 2002
@@ -224,7 +224,7 @@
if (flags & CONTEXT_FULL)
{
struct regs regs;
- if (ptrace( PTRACE_GETREGS, pid, 0, (int) ®s ) == -1) goto error;
+ if (ptrace( PTRACE_GETREGS, pid, (int) ®s, 0 ) == -1) goto error;
if (flags & CONTEXT_INTEGER)
{
context->Eax = regs.r_eax;
@@ -259,7 +259,7 @@
{
/* we can use context->FloatSave directly as it is using the */
/* correct structure (the same as fsave/frstor) */
- if (ptrace( PTRACE_GETFPREGS, pid, 0, (int) &context->FloatSave ) == -1) goto error;
+ if (ptrace( PTRACE_GETFPREGS, pid, (int) &context->FloatSave, 0 ) == -1) goto error;
context->FloatSave.Cr0NpxState = 0; /* FIXME */
}
return;
@@ -332,7 +332,7 @@
if (flags & CONTEXT_FULL)
{
struct reg regs;
- if (ptrace( PTRACE_GETREGS, pid, 0, (int) ®s ) == -1) goto error;
+ if (ptrace( PTRACE_GETREGS, pid, (caddr_t) ®s, 0 ) == -1) goto error;
if (flags & CONTEXT_INTEGER)
{
context->Eax = regs.r_eax;
@@ -367,7 +367,7 @@
{
/* we can use context->FloatSave directly as it is using the */
/* correct structure (the same as fsave/frstor) */
- if (ptrace( PTRACE_GETFPREGS, pid, 0, (int) &context->FloatSave ) == -1) goto error;
+ if (ptrace( PTRACE_GETFPREGS, pid, (caddr_t) &context->FloatSave, 0 ) == -1) goto error;
context->FloatSave.Cr0NpxState = 0; /* FIXME */
}
return;
@@ -423,7 +423,7 @@
{
/* we can use context->FloatSave directly as it is using the */
/* correct structure (the same as fsave/frstor) */
- if (ptrace( PTRACE_SETFPREGS, pid, 0, (int) &context->FloatSave ) == -1) goto error;
+ if (ptrace( PTRACE_SETFPREGS, pid, (caddr_t) &context->FloatSave, 0 ) == -1) goto error;
}
return;
error:
--
Pierre Beyssac pb at fasterix.frmug.org pb at fasterix.freenix.org
Free domains: http://www.eu.org/ or mail dns-manager at EU.org
More information about the wine-devel
mailing list