Darwin/i386 Signal support

Pierre d'Herbemont stegefin at free.fr
Mon Aug 23 15:18:33 CDT 2004


Hello!

This patch add signal handling support for Darwin/i386. It is untested.

Pierre.

ChangeLog:
- Add signal support for Darwin/i386
-------------- next part --------------
Index: dlls/ntdll/signal_i386.c
===================================================================
RCS file: /home/wine/wine/dlls/ntdll/signal_i386.c,v
retrieving revision 1.86
diff -u -r1.86 signal_i386.c
--- dlls/ntdll/signal_i386.c	4 Aug 2004 19:08:19 -0000	1.86
+++ dlls/ntdll/signal_i386.c	23 Aug 2004 20:16:08 -0000
@@ -213,7 +213,7 @@
 #define HANDLER_DEF(name) void name( int __signal, int code, SIGCONTEXT *__context )
 #define HANDLER_CONTEXT __context
 
-#endif  /* FreeBSD */
+#endif  /* *BSD */
 
 #if defined(__svr4__) || defined(_SCO_DS) || defined(__sun)
 
@@ -293,6 +293,19 @@
 
 #endif /* __CYGWIN__ */
 
+#ifdef __APPLE__
+# include <sys/ucontext.h>
+# include <sys/types.h>
+# include <signal.h>
+
+typedef siginfo_t siginfo;
+typedef struct ucontext SIGCONTEXT;
+
+# define HANDLER_DEF(name) void name( int __signal, siginfo *__siginfo, SIGCONTEXT *__context )
+# define HANDLER_CONTEXT (__context)
+
+#endif /* __APPLE__ */
+
 #if defined(linux) || defined(__NetBSD__) || defined(__FreeBSD__) ||\
     defined(__OpenBSD__) || defined(__EMX__) || defined(__CYGWIN__)
 
@@ -376,6 +389,28 @@
 
 #endif  /* svr4 || SCO_DS */
 
+#ifdef __APPLE__
+#define EAX_sig(context)     ((context)->uc_mcontext.sc_eax)
+#define EBX_sig(context)     ((context)->uc_mcontext.sc_ebx)
+#define ECX_sig(context)     ((context)->uc_mcontext.sc_ecx)
+#define EDX_sig(context)     ((context)->uc_mcontext.sc_edx)
+#define ESI_sig(context)     ((context)->uc_mcontext.sc_esi)
+#define EDI_sig(context)     ((context)->uc_mcontext.sc_edi)
+#define EBP_sig(context)     ((context)->uc_mcontext.sc_ebp)
+
+#define CS_sig(context)      ((context)->uc_mcontext.sc_cs)
+#define DS_sig(context)      ((context)->uc_mcontext.sc_ds)
+#define ES_sig(context)      ((context)->uc_mcontext.sc_es)
+#define FS_sig(context)      ((context)->uc_mcontext.sc_fs)
+#define GS_sig(context)      ((context)->uc_mcontext.sc_gs)
+#define SS_sig(context)      ((context)->uc_mcontext.sc_ss)
+
+#define EFL_sig(context)     ((context)->uc_mcontext.sc_eflags)
+
+#define EIP_sig(context)     (*((unsigned long*)&(context)->uc_mcontext.sc_eip))
+#define ESP_sig(context)     (*((unsigned long*)&(context)->uc_mcontext.sc_esp))
+
+#endif /* __APPLE__ */
 
 /* exception code definitions (already defined by FreeBSD/NetBSD) */
 #if !defined(__FreeBSD__) && !defined(__NetBSD__) /* FIXME: other BSDs? */


More information about the wine-patches mailing list