summaryrefslogtreecommitdiff
path: root/emulators/wine-devel
diff options
context:
space:
mode:
authorAlfred Perlstein <alfred@FreeBSD.org>2002-11-08 08:08:04 +0000
committerAlfred Perlstein <alfred@FreeBSD.org>2002-11-08 08:08:04 +0000
commit5c09ab656d4cf412a7668ac5a02ed268a6ff2c3c (patch)
tree9f0ae1c9dc37bb2eeb7cabbd517dd6ab9f61d5e2 /emulators/wine-devel
parentAnd update to 1.0.13 (submitted at the end of october while the (diff)
Make context_i386.c work on 5.x as well as 4.x by using the DBREG_DRX
macro to access the fields of 'struct dbreg' instead of accessing them directly. Because the macro is buggy on older versions of FreeBSD as it lacks proper macro argument parens, use an extra pointer as a workaround so that we'll work on pre-patched versions of FreeBSD. Reviewed by: gerald (maintainer)
Diffstat (limited to 'emulators/wine-devel')
-rw-r--r--emulators/wine-devel/files/patch-context_i38651
1 files changed, 51 insertions, 0 deletions
diff --git a/emulators/wine-devel/files/patch-context_i386 b/emulators/wine-devel/files/patch-context_i386
new file mode 100644
index 000000000000..10b35c7c7f52
--- /dev/null
+++ b/emulators/wine-devel/files/patch-context_i386
@@ -0,0 +1,51 @@
+--- server/context_i386.c.orig Wed Aug 14 13:59:03 2002
++++ server/context_i386.c Thu Nov 7 14:54:01 2002
+@@ -371,14 +371,15 @@
+ {
+ #ifdef PTRACE_GETDBREGS
+ struct dbreg dbregs;
+- if (ptrace( PTRACE_GETDBREGS, pid, (caddr_t) &dbregs, 0 ) == -1)
++ struct dbreg *dbregs_ptr = &dbregs; /* ptr to workaround buggy macro */
++ if (ptrace( PTRACE_GETDBREGS, pid, (caddr_t) dbregs_ptr, 0 ) == -1)
+ goto error;
+- context->Dr0 = dbregs.dr0;
+- context->Dr1 = dbregs.dr1;
+- context->Dr2 = dbregs.dr2;
+- context->Dr3 = dbregs.dr3;
+- context->Dr6 = dbregs.dr6;
+- context->Dr7 = dbregs.dr7;
++ context->Dr0 = DBREG_DRX(dbregs_ptr, 0);
++ context->Dr1 = DBREG_DRX(dbregs_ptr, 1);
++ context->Dr2 = DBREG_DRX(dbregs_ptr, 2);
++ context->Dr3 = DBREG_DRX(dbregs_ptr, 3);
++ context->Dr6 = DBREG_DRX(dbregs_ptr, 6);
++ context->Dr7 = DBREG_DRX(dbregs_ptr, 7);
+ #endif
+ }
+ if (flags & CONTEXT_FLOATING_POINT)
+@@ -437,15 +438,16 @@
+ {
+ #ifdef PTRACE_SETDBREGS
+ struct dbreg dbregs;
+- dbregs.dr0 = context->Dr0;
+- dbregs.dr1 = context->Dr1;
+- dbregs.dr2 = context->Dr2;
+- dbregs.dr3 = context->Dr3;
+- dbregs.dr4 = 0;
+- dbregs.dr5 = 0;
+- dbregs.dr6 = context->Dr6;
+- dbregs.dr7 = context->Dr7;
+- if (ptrace( PTRACE_SETDBREGS, pid, (caddr_t) &dbregs, 0 ) == -1)
++ struct dbreg *dbregs_ptr = &dbregs; /* ptr to workaround buggy macro */
++ DBREG_DRX(dbregs_ptr, 0) = context->Dr0;
++ DBREG_DRX(dbregs_ptr, 1) = context->Dr1;
++ DBREG_DRX(dbregs_ptr, 2) = context->Dr2;
++ DBREG_DRX(dbregs_ptr, 3) = context->Dr3;
++ DBREG_DRX(dbregs_ptr, 4) = 0;
++ DBREG_DRX(dbregs_ptr, 5) = 0;
++ DBREG_DRX(dbregs_ptr, 6) = context->Dr6;
++ DBREG_DRX(dbregs_ptr, 7) = context->Dr7;
++ if (ptrace( PTRACE_SETDBREGS, pid, (caddr_t) dbregs_ptr, 0 ) == -1)
+ goto error;
+ #endif
+ }