aboutsummaryrefslogtreecommitdiff
path: root/emulators
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
parentff2a2f614d24e052bb532556a485dcbfeef9bf6c (diff)
downloadports-5c09ab656d4cf412a7668ac5a02ed268a6ff2c3c.tar.gz
ports-5c09ab656d4cf412a7668ac5a02ed268a6ff2c3c.zip
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)
Notes
Notes: svn path=/head/; revision=69719
Diffstat (limited to 'emulators')
-rw-r--r--emulators/wine-devel/files/patch-context_i38651
-rw-r--r--emulators/wine/files/patch-context_i38651
2 files changed, 102 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
+ }
diff --git a/emulators/wine/files/patch-context_i386 b/emulators/wine/files/patch-context_i386
new file mode 100644
index 000000000000..10b35c7c7f52
--- /dev/null
+++ b/emulators/wine/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
+ }