Added server_abort_thread to replace SYSDEPS_AbortThread.
Removed no longer used SIGNAL_Block and SIGNAL_Reset.
Moved some internal ntdll definitions to ntdll_misc.h.

diff --git a/dlls/ntdll/ntdll_misc.h b/dlls/ntdll/ntdll_misc.h
index 73e830b..2878b6e 100644
--- a/dlls/ntdll/ntdll_misc.h
+++ b/dlls/ntdll/ntdll_misc.h
@@ -47,10 +47,16 @@
                                                  const LARGE_INTEGER *timeout );
 
 /* init routines */
-extern void wine_server_init_process(void);
-extern void wine_server_init_thread(void);
+extern BOOL SIGNAL_Init(void);
 extern void thread_init(void);
 
+/* server support */
+extern void server_init_process(void);
+extern void server_init_thread(void);
+extern void DECLSPEC_NORETURN server_protocol_error( const char *err, ... );
+extern void DECLSPEC_NORETURN server_protocol_perror( const char *err );
+extern void DECLSPEC_NORETURN server_abort_thread( int status );
+
 /* module handling */
 extern BOOL MODULE_GetSystemDirectory( UNICODE_STRING *sysdir );
 extern void RELAY_InitDebugLists(void);
diff --git a/dlls/ntdll/server.c b/dlls/ntdll/server.c
index 54f6966..f68eea6 100644
--- a/dlls/ntdll/server.c
+++ b/dlls/ntdll/server.c
@@ -53,6 +53,7 @@
 #include "ntstatus.h"
 #include "thread.h"
 #include "wine/library.h"
+#include "wine/pthread.h"
 #include "wine/server.h"
 #include "winerror.h"
 #include "ntdll_misc.h"
@@ -110,6 +111,21 @@
     exit(1);
 }
 
+
+/***********************************************************************
+ *           server_abort_thread
+ */
+void server_abort_thread( int status )
+{
+    sigprocmask( SIG_BLOCK, &block_set, NULL );
+    close( NtCurrentTeb()->wait_fd[0] );
+    close( NtCurrentTeb()->wait_fd[1] );
+    close( NtCurrentTeb()->reply_fd );
+    close( NtCurrentTeb()->request_fd );
+    wine_pthread_abort_thread( status );
+}
+
+
 /***********************************************************************
  *           server_protocol_error
  */
@@ -121,7 +137,7 @@
     fprintf( stderr, "wine client error:%lx: ", GetCurrentThreadId() );
     vfprintf( stderr, err, args );
     va_end( args );
-    SYSDEPS_AbortThread(1);
+    server_abort_thread(1);
 }
 
 
@@ -132,7 +148,7 @@
 {
     fprintf( stderr, "wine client error:%lx: ", GetCurrentThreadId() );
     perror( err );
-    SYSDEPS_AbortThread(1);
+    server_abort_thread(1);
 }
 
 
@@ -167,7 +183,7 @@
     }
 
     if (ret >= 0) server_protocol_error( "partial write %d\n", ret );
-    if (errno == EPIPE) SYSDEPS_AbortThread(0);
+    if (errno == EPIPE) server_abort_thread(0);
     server_protocol_perror( "sendmsg" );
 }
 
@@ -195,7 +211,7 @@
         server_protocol_perror("read");
     }
     /* the server closed the connection; time to die... */
-    SYSDEPS_AbortThread(0);
+    server_abort_thread(0);
 }
 
 
@@ -274,7 +290,7 @@
         if ((ret = sendmsg( fd_socket, &msghdr, 0 )) == sizeof(data)) return;
         if (ret >= 0) server_protocol_error( "partial write %d\n", ret );
         if (errno == EINTR) continue;
-        if (errno == EPIPE) SYSDEPS_AbortThread(0);
+        if (errno == EPIPE) server_abort_thread(0);
         server_protocol_perror( "sendmsg" );
     }
 }
@@ -333,7 +349,7 @@
         server_protocol_perror("recvmsg");
     }
     /* the server closed the connection; time to die... */
-    SYSDEPS_AbortThread(0);
+    server_abort_thread(0);
 }
 
 
@@ -600,11 +616,11 @@
 
 
 /***********************************************************************
- *           wine_server_init_process
+ *           server_init_process
  *
  * Start the server and create the initial socket pair.
  */
-void wine_server_init_process(void)
+void server_init_process(void)
 {
     int size;
     char *oldcwd;
@@ -646,11 +662,11 @@
 
 
 /***********************************************************************
- *           wine_server_init_thread
+ *           server_init_thread
  *
  * Send an init thread request. Return 0 if OK.
  */
-void wine_server_init_thread(void)
+void server_init_thread(void)
 {
     TEB *teb = NtCurrentTeb();
     int version, ret;
diff --git a/dlls/ntdll/signal_i386.c b/dlls/ntdll/signal_i386.c
index b3e90a4..0696c97 100644
--- a/dlls/ntdll/signal_i386.c
+++ b/dlls/ntdll/signal_i386.c
@@ -663,7 +663,7 @@
         ERR( "nested exception on signal stack in thread %04lx eip %08lx esp %08lx stack %p-%p\n",
              GetCurrentThreadId(), EIP_sig(sigcontext), ESP_sig(sigcontext),
              NtCurrentTeb()->Tib.StackLimit, NtCurrentTeb()->Tib.StackBase );
-        SYSDEPS_AbortThread(1);
+        server_abort_thread(1);
     }
 
     if ((char *)(stack - 1) < (char *)NtCurrentTeb()->Tib.StackLimit + 4096 ||
@@ -675,7 +675,7 @@
             ERR( "stack overflow %u bytes in thread %04lx eip %08lx esp %08lx stack %p-%p\n",
                  diff, GetCurrentThreadId(), EIP_sig(sigcontext), ESP_sig(sigcontext),
                  NtCurrentTeb()->Tib.StackLimit, NtCurrentTeb()->Tib.StackBase );
-            SYSDEPS_AbortThread(1);
+            server_abort_thread(1);
         }
         else WARN( "exception outside of stack limits in thread %04lx eip %08lx esp %08lx stack %p-%p\n",
                    GetCurrentThreadId(), EIP_sig(sigcontext), ESP_sig(sigcontext),
@@ -1057,7 +1057,7 @@
 static HANDLER_DEF(term_handler)
 {
     init_handler( HANDLER_CONTEXT );
-    SYSDEPS_AbortThread(0);
+    server_abort_thread(0);
 }
 
 
@@ -1178,46 +1178,6 @@
 }
 
 
-/**********************************************************************
- *		SIGNAL_Block
- *
- * Block the async signals.
- */
-void SIGNAL_Block(void)
-{
-    sigset_t block_set;
-
-    sigemptyset( &block_set );
-    sigaddset( &block_set, SIGIO );
-    sigaddset( &block_set, SIGHUP );
-    sigaddset( &block_set, SIGUSR1 );
-    sigaddset( &block_set, SIGUSR2 );
-    sigprocmask( SIG_BLOCK, &block_set, NULL );
-}
-
-
-/**********************************************************************
- *		SIGNAL_Reset
- *
- * Restore the default handlers.
- */
-void SIGNAL_Reset(void)
-{
-    signal( SIGINT, SIG_DFL );
-    signal( SIGFPE, SIG_DFL );
-    signal( SIGSEGV, SIG_DFL );
-    signal( SIGILL, SIG_DFL );
-    signal( SIGABRT, SIG_DFL );
-    signal( SIGTERM, SIG_DFL );
-#ifdef SIGBUS
-    signal( SIGBUS, SIG_DFL );
-#endif
-#ifdef SIGTRAP
-    signal( SIGTRAP, SIG_DFL );
-#endif
-}
-
-
 #ifdef __HAVE_VM86
 /**********************************************************************
  *		__wine_enter_vm86   (NTDLL.@)
diff --git a/dlls/ntdll/signal_powerpc.c b/dlls/ntdll/signal_powerpc.c
index 291a42a..9760840 100644
--- a/dlls/ntdll/signal_powerpc.c
+++ b/dlls/ntdll/signal_powerpc.c
@@ -572,7 +572,7 @@
  */
 static HANDLER_DEF(term_handler)
 {
-    SYSDEPS_AbortThread(0);
+    server_abort_thread(0);
 }
 
 
@@ -650,47 +650,6 @@
 
 
 /**********************************************************************
- *		SIGNAL_Block
- *
- * Block the async signals.
- */
-void SIGNAL_Block(void)
-{
-    sigset_t block_set;
-
-    sigemptyset( &block_set );
-    sigaddset( &block_set, SIGALRM );
-    sigaddset( &block_set, SIGIO );
-    sigaddset( &block_set, SIGHUP );
-    sigaddset( &block_set, SIGUSR1 );
-    sigaddset( &block_set, SIGUSR2 );
-    sigprocmask( SIG_BLOCK, &block_set, NULL );
-}
-
-
-/**********************************************************************
- *		SIGNAL_Reset
- *
- * Restore the default handlers.
- */
-void SIGNAL_Reset(void)
-{
-    signal( SIGINT, SIG_DFL );
-    signal( SIGFPE, SIG_DFL );
-    signal( SIGSEGV, SIG_DFL );
-    signal( SIGILL, SIG_DFL );
-    signal( SIGABRT, SIG_DFL );
-    signal( SIGTERM, SIG_DFL );
-#ifdef SIGBUS
-    signal( SIGBUS, SIG_DFL );
-#endif
-#ifdef SIGTRAP
-    signal( SIGTRAP, SIG_DFL );
-#endif
-}
-
-
-/**********************************************************************
  *              __wine_enter_vm86   (NTDLL.@)
  */
 void __wine_enter_vm86( CONTEXT *context )
diff --git a/dlls/ntdll/signal_sparc.c b/dlls/ntdll/signal_sparc.c
index e4ac740..fd4affe 100644
--- a/dlls/ntdll/signal_sparc.c
+++ b/dlls/ntdll/signal_sparc.c
@@ -376,7 +376,7 @@
  */
 static HANDLER_DEF(term_handler)
 {
-    SYSDEPS_AbortThread(0);
+    server_abort_thread(0);
 }
 
 
@@ -448,43 +448,6 @@
 
 
 /**********************************************************************
- *		SIGNAL_Block
- *
- * Block the async signals.
- */
-void SIGNAL_Block(void)
-{
-    sigset_t block_set;
-
-    sigemptyset( &block_set );
-    sigaddset( &block_set, SIGALRM );
-    sigaddset( &block_set, SIGIO );
-    sigaddset( &block_set, SIGHUP );
-    sigaddset( &block_set, SIGUSR1 );
-    sigaddset( &block_set, SIGUSR2 );
-    sigprocmask( SIG_BLOCK, &block_set, NULL );
-}
-
-
-/**********************************************************************
- *		SIGNAL_Reset
- *
- * Restore the default handlers.
- */
-void SIGNAL_Reset(void)
-{
-    signal( SIGINT, SIG_DFL );
-    signal( SIGFPE, SIG_DFL );
-    signal( SIGSEGV, SIG_DFL );
-    signal( SIGILL, SIG_DFL );
-    signal( SIGBUS, SIG_DFL );
-    signal( SIGTRAP, SIG_DFL );
-    signal( SIGABRT, SIG_DFL );
-    signal( SIGTERM, SIG_DFL );
-}
-
-
-/**********************************************************************
  *		__wine_enter_vm86
  */
 void __wine_enter_vm86( CONTEXT *context )
diff --git a/dlls/ntdll/sync.c b/dlls/ntdll/sync.c
index 5a0383d..8a9b111 100644
--- a/dlls/ntdll/sync.c
+++ b/dlls/ntdll/sync.c
@@ -496,7 +496,7 @@
         server_protocol_perror("wakeup read");
     }
     /* the server closed the connection; time to die... */
-    SYSDEPS_AbortThread(0);
+    server_abort_thread(0);
 }
 
 
diff --git a/dlls/ntdll/sysdeps.c b/dlls/ntdll/sysdeps.c
index 4bb0830..466e450 100644
--- a/dlls/ntdll/sysdeps.c
+++ b/dlls/ntdll/sysdeps.c
@@ -87,21 +87,6 @@
 
 
 /***********************************************************************
- *           SYSDEPS_AbortThread
- *
- * Same as SYSDEPS_ExitThread, but must not do anything that requires a server call.
- */
-void SYSDEPS_AbortThread( int status )
-{
-    SIGNAL_Block();
-    close( NtCurrentTeb()->wait_fd[0] );
-    close( NtCurrentTeb()->wait_fd[1] );
-    close( NtCurrentTeb()->reply_fd );
-    close( NtCurrentTeb()->request_fd );
-    wine_pthread_abort_thread( status );
-}
-
-/***********************************************************************
  *           SYSDEPS_GetUnixTid
  *
  * Get the Unix tid of the current thread.
diff --git a/dlls/ntdll/thread.c b/dlls/ntdll/thread.c
index f64b1f3..2b08024 100644
--- a/dlls/ntdll/thread.c
+++ b/dlls/ntdll/thread.c
@@ -42,7 +42,6 @@
 static RTL_USER_PROCESS_PARAMETERS params;  /* default parameters if no parent */
 static RTL_BITMAP tls_bitmap;
 static LIST_ENTRY tls_links;
-static struct debug_info info;  /* debug info for initial thread */
 
 
 /***********************************************************************
@@ -96,9 +95,10 @@
     TEB *teb;
     void *addr;
     ULONG size;
+    static struct debug_info debug_info;  /* debug info for initial thread */
 
-    info.str_pos = info.strings;
-    info.out_pos = info.output;
+    debug_info.str_pos = debug_info.strings;
+    debug_info.out_pos = debug_info.output;
 
     peb.ProcessParameters = &params;
     peb.TlsBitmap         = &tls_bitmap;
@@ -115,14 +115,14 @@
     teb->reply_fd      = -1;
     teb->wait_fd[0]    = -1;
     teb->wait_fd[1]    = -1;
-    teb->debug_info    = &info;
+    teb->debug_info    = &debug_info;
     InsertHeadList( &tls_links, &teb->TlsLinks );
 
     SYSDEPS_SetCurThread( teb );
 
     /* setup the server connection */
-    wine_server_init_process();
-    wine_server_init_thread();
+    server_init_process();
+    server_init_thread();
 
     /* create a memory view for the TEB */
     NtAllocateVirtualMemory( GetCurrentProcess(), &addr, teb, &size,
@@ -155,7 +155,7 @@
 
     SYSDEPS_SetCurThread( teb );
     SIGNAL_Init();
-    wine_server_init_thread();
+    server_init_thread();
 
     /* allocate a memory view for the stack */
     size = info->stack_size;
@@ -359,7 +359,7 @@
     if (self)
     {
         if (last) exit( exit_code );
-        else SYSDEPS_AbortThread( exit_code );
+        else server_abort_thread( exit_code );
     }
     return ret;
 }