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