Alexandre Julliard : ntdll: Changed some Solaris defines so that we can access the signal error code.

Alexandre Julliard julliard at wine.codeweavers.com
Wed Mar 14 07:25:27 CDT 2007


Module: wine
Branch: master
Commit: 7d12fbcc5bfd50ee986d94efb4307277c0900913
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=7d12fbcc5bfd50ee986d94efb4307277c0900913

Author: Alexandre Julliard <julliard at winehq.org>
Date:   Wed Mar 14 09:53:59 2007 +0100

ntdll: Changed some Solaris defines so that we can access the signal error code.

---

 dlls/ntdll/signal_i386.c |   35 ++++++++++++++++++-----------------
 1 files changed, 18 insertions(+), 17 deletions(-)

diff --git a/dlls/ntdll/signal_i386.c b/dlls/ntdll/signal_i386.c
index 0c32374..edfa5ea 100644
--- a/dlls/ntdll/signal_i386.c
+++ b/dlls/ntdll/signal_i386.c
@@ -59,11 +59,15 @@
 #include "thread.h"
 #include "wine/library.h"
 #include "ntdll_misc.h"
+#include "wine/exception.h"
+#include "wine/debug.h"
 
 #ifdef HAVE_VALGRIND_MEMCHECK_H
 #include <valgrind/memcheck.h>
 #endif
 
+#undef ERR  /* Solaris needs to define this */
+
 /***********************************************************************
  * signal context platform-specific definitions
  */
@@ -196,10 +200,7 @@ typedef struct sigcontext SIGCONTEXT;
 #ifdef _SCO_DS
 #include <sys/regset.h>
 #endif
-/* Solaris kludge */
-#undef ERR
 #include <sys/ucontext.h>
-#undef ERR
 typedef struct ucontext SIGCONTEXT;
 
 #ifdef _SCO_DS
@@ -232,6 +233,9 @@ typedef struct ucontext SIGCONTEXT;
 #else
 #define ESP_sig(context)     ((context)->uc_mcontext.gregs[ESP])
 #endif
+#ifdef ERR
+#define ERROR_sig(context)   ((context)->uc_mcontext.gregs[ERR])
+#endif
 #ifdef TRAPNO
 #define TRAP_sig(context)     ((context)->uc_mcontext.gregs[TRAPNO])
 #endif
@@ -286,9 +290,6 @@ typedef ucontext_t SIGCONTEXT;
 
 #endif /* __APPLE__ */
 
-#include "wine/exception.h"
-#include "wine/debug.h"
-
 WINE_DEFAULT_DEBUG_CHANNEL(seh);
 
 typedef int (*wine_signal_handler)(unsigned int sig);
@@ -899,10 +900,10 @@ static EXCEPTION_RECORD *setup_exception( SIGCONTEXT *sigcontext, raise_func fun
     if ((char *)stack >= (char *)get_signal_stack() &&
         (char *)stack < (char *)get_signal_stack() + signal_stack_size)
     {
-        ERR( "nested exception on signal stack in thread %04x eip %08x esp %08x stack %p-%p\n",
-             GetCurrentThreadId(), (unsigned int) EIP_sig(sigcontext),
-             (unsigned int) ESP_sig(sigcontext), NtCurrentTeb()->Tib.StackLimit,
-             NtCurrentTeb()->Tib.StackBase );
+        WINE_ERR( "nested exception on signal stack in thread %04x eip %08x esp %08x stack %p-%p\n",
+                  GetCurrentThreadId(), (unsigned int) EIP_sig(sigcontext),
+                  (unsigned int) ESP_sig(sigcontext), NtCurrentTeb()->Tib.StackLimit,
+                  NtCurrentTeb()->Tib.StackBase );
         server_abort_thread(1);
     }
 
@@ -913,10 +914,10 @@ static EXCEPTION_RECORD *setup_exception( SIGCONTEXT *sigcontext, raise_func fun
         UINT diff = (char *)NtCurrentTeb()->Tib.StackLimit - (char *)stack;
         if (diff < 4096)
         {
-            ERR( "stack overflow %u bytes in thread %04x eip %08x esp %08x stack %p-%p\n",
-                 diff, GetCurrentThreadId(), (unsigned int) EIP_sig(sigcontext),
-                 (unsigned int) ESP_sig(sigcontext), NtCurrentTeb()->Tib.StackLimit,
-                 NtCurrentTeb()->Tib.StackBase );
+            WINE_ERR( "stack overflow %u bytes in thread %04x eip %08x esp %08x stack %p-%p\n",
+                      diff, GetCurrentThreadId(), (unsigned int) EIP_sig(sigcontext),
+                      (unsigned int) ESP_sig(sigcontext), NtCurrentTeb()->Tib.StackLimit,
+                      NtCurrentTeb()->Tib.StackBase );
             server_abort_thread(1);
         }
         else WARN( "exception outside of stack limits in thread %04x eip %08x esp %08x stack %p-%p\n",
@@ -1165,7 +1166,7 @@ static void segv_handler( int signal, siginfo_t *siginfo, void *sigcontext )
         rec->ExceptionCode = EXCEPTION_DATATYPE_MISALIGNMENT;
         break;
     default:
-        ERR( "Got unexpected trap %d\n", get_trap_code(context) );
+        WINE_ERR( "Got unexpected trap %d\n", get_trap_code(context) );
         /* fall through */
     case TRAP_x86_NMI:       /* NMI interrupt */
     case TRAP_x86_DNA:       /* Device not available exception */
@@ -1243,7 +1244,7 @@ static void fpe_handler( int signal, siginfo_t *siginfo, void *sigcontext )
         rec->ExceptionInformation[0] = 0;
         break;
     default:
-        ERR( "Got unexpected trap %d\n", get_trap_code(context) );
+        WINE_ERR( "Got unexpected trap %d\n", get_trap_code(context) );
         rec->ExceptionCode = EXCEPTION_FLT_INVALID_OPERATION;
         break;
     }
@@ -1485,7 +1486,7 @@ void __wine_enter_vm86( CONTEXT *context )
             break;
         case VM86_SIGNAL: /* cannot happen because vm86_enter handles this case */
         default:
-            ERR( "unhandled result from vm86 mode %x\n", res );
+            WINE_ERR( "unhandled result from vm86 mode %x\n", res );
             continue;
         }
         __regs_RtlRaiseException( &rec, context );




More information about the wine-cvs mailing list