[ros-diffs] [hyperion] 37614: modified include/psdk/rpc.h Implemented RPC exception handling macros with PSEH 2.0 modified base/services/rpcss/rpcss.rbuild modified dll/win32/rpcrt4/rpcrt4.rbuild RPC proxy stubs now depend on pseh. We should really add pseh as a link dependency automatically in rbuild, but, eh modified tools/rbuild/backend/mingw/modulehandler.cpp Compile RPC proxy stubs with -fno-unit-at-a-time due to a GCC bug. See also http://gcc.gnu.org/bugzilla/show_bug.cgi?id=17982 and http://gcc.gnu.org/bugzilla/show_bug.cgi?id=38054

hyperion at svn.reactos.org hyperion at svn.reactos.org
Mon Nov 24 14:05:41 CET 2008


Author: hyperion
Date: Mon Nov 24 07:05:40 2008
New Revision: 37614

URL: http://svn.reactos.org/svn/reactos?rev=37614&view=rev
Log:
modified   include/psdk/rpc.h
   Implemented RPC exception handling macros with PSEH 2.0

modified   base/services/rpcss/rpcss.rbuild
modified   dll/win32/rpcrt4/rpcrt4.rbuild
   RPC proxy stubs now depend on pseh. We should really add pseh as a link dependency automatically in rbuild, but, eh

modified   tools/rbuild/backend/mingw/modulehandler.cpp
   Compile RPC proxy stubs with -fno-unit-at-a-time due to a GCC bug. See also http://gcc.gnu.org/bugzilla/show_bug.cgi?id=17982 and http://gcc.gnu.org/bugzilla/show_bug.cgi?id=38054

Modified:
    trunk/reactos/base/services/rpcss/rpcss.rbuild
    trunk/reactos/dll/win32/rpcrt4/rpcrt4.rbuild
    trunk/reactos/include/psdk/rpc.h
    trunk/reactos/tools/rbuild/backend/mingw/modulehandler.cpp

Modified: trunk/reactos/base/services/rpcss/rpcss.rbuild
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/base/services/rpcss/rpcss.rbuild?rev=37614&r1=37613&r2=37614&view=diff
==============================================================================
--- trunk/reactos/base/services/rpcss/rpcss.rbuild [iso-8859-1] (original)
+++ trunk/reactos/base/services/rpcss/rpcss.rbuild [iso-8859-1] Mon Nov 24 07:05:40 2008
@@ -9,6 +9,7 @@
 	<library>rpcrt4</library>
 	<library>kernel32</library>
 	<library>advapi32</library>
+	<library>pseh</library>
 	<file>epmp.c</file>
 	<file>irotp.c</file>
 	<file>rpcss_main.c</file>

Modified: trunk/reactos/dll/win32/rpcrt4/rpcrt4.rbuild
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/rpcrt4/rpcrt4.rbuild?rev=37614&r1=37613&r2=37614&view=diff
==============================================================================
--- trunk/reactos/dll/win32/rpcrt4/rpcrt4.rbuild [iso-8859-1] (original)
+++ trunk/reactos/dll/win32/rpcrt4/rpcrt4.rbuild [iso-8859-1] Mon Nov 24 07:05:40 2008
@@ -17,6 +17,7 @@
 	<library>iphlpapi</library>
 	<library>ws2_32</library>
 	<library>ntdll</library>
+	<library>pseh</library>
 	<file>cproxy.c</file>
 	<file>cpsf.c</file>
 	<file>cstub.c</file>

Modified: trunk/reactos/include/psdk/rpc.h
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/include/psdk/rpc.h?rev=37614&r1=37613&r2=37614&view=diff
==============================================================================
--- trunk/reactos/include/psdk/rpc.h [iso-8859-1] (original)
+++ trunk/reactos/include/psdk/rpc.h [iso-8859-1] Mon Nov 24 07:05:40 2008
@@ -12,10 +12,7 @@
 #endif
 
 #ifdef __GNUC__
-    #ifndef _SEH_NO_NATIVE_NLG
-        /* FIXME ReactOS SEH support, we need remove this when gcc support native seh */
-        #include  <libs/pseh/pseh.h>
-    #endif
+#include  <pseh/pseh2.h>
 #endif
 
 #ifndef __RPC_H__
@@ -137,33 +134,14 @@
         #define RpcExceptionCode() GetExceptionCode()
         #define RpcAbnormalTermination() AbnormalTermination()
     #else
-        /* FIXME ReactOS SEH support, we need remove this when gcc support native seh */
-
-        #ifdef _SEH_NO_NATIVE_NLG
-            /* hack for  _SEH_NO_NATIVE_NLG */
-                #define RpcTryExcept if (1) {
-                #define RpcExcept(expr) } else {
-                #define RpcEndExcept }
-                #define RpcTryFinally
-                #define RpcFinally
-                #define RpcEndFinally
-                #define RpcExceptionCode() 0
-        #else
-            #define RpcTryExcept _SEH_TRY {
-            #define RpcExcept(expr) } _SEH_HANDLE { \
-                                      if (expr) \
-                                      {
-            #define RpcEndExcept } \
-                                 } \
-                                 _SEH_END;
-
-            #define RpcTryFinally
-            #define RpcFinally
-            #define RpcEndFinally
-            #define RpcExceptionCode() _SEH_GetExceptionCode()
-
-            /* #define RpcAbnormalTermination() abort() */
-        #endif
+        #define RpcTryExcept _SEH2_TRY
+        #define RpcExcept(expr) _SEH2_EXCEPT((expr))
+        #define RpcEndExcept _SEH2_END;
+        #define RpcTryFinally _SEH2_TRY
+        #define RpcFinally _SEH2_FINALLY
+        #define RpcEndFinally _SEH2_END;
+        #define RpcExceptionCode() _SEH2_GetExceptionCode()
+        #define RpcAbnormalTermination() (_SEH2_GetExceptionCode() != 0)
     #endif
 #endif
 

Modified: trunk/reactos/tools/rbuild/backend/mingw/modulehandler.cpp
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/tools/rbuild/backend/mingw/modulehandler.cpp?rev=37614&r1=37613&r2=37614&view=diff
==============================================================================
--- trunk/reactos/tools/rbuild/backend/mingw/modulehandler.cpp [iso-8859-1] (original)
+++ trunk/reactos/tools/rbuild/backend/mingw/modulehandler.cpp [iso-8859-1] Mon Nov 24 07:05:40 2008
@@ -1096,7 +1096,7 @@
                       "\t$(Q)$(WIDL_TARGET) $($(module_name)_WIDLFLAGS) -h -H $(INTERMEDIATE)$(SEP)$(source_dir)$(SEP)$(source_name_noext)_s.h -s -S $(INTERMEDIATE)$(SEP)$(source_dir)$(SEP)$(source_name_noext)_s.c $(source)\n"
                       "$(INTERMEDIATE)$(SEP)$(source_dir)$(SEP)$(source_name_noext)_s.o: $(INTERMEDIATE)$(SEP)$(source_dir)$(SEP)$(source_name_noext)_s.c $(INTERMEDIATE)$(SEP)$(source_dir)$(SEP)$(source_name_noext)_s.h$(dependencies) | $(INTERMEDIATE)$(SEP)$(source_dir)\n"
                       "\t$(ECHO_CC)\n"
-                      "\t${gcc} -o $@ $($(module_name)_CFLAGS)$(compiler_flags) -c $<\n",
+                      "\t${gcc} -o $@ $($(module_name)_CFLAGS)$(compiler_flags) -fno-unit-at-a-time -c $<\n",
                       "$(INTERMEDIATE)$(SEP)$(source_dir)$(SEP)$(source_name_noext)_s.h",
                       "$(INTERMEDIATE)$(SEP)$(source_dir)$(SEP)$(source_name_noext)_s.c",
                       "$(INTERMEDIATE)$(SEP)$(source_dir)$(SEP)$(source_name_noext)_s.o",
@@ -1107,7 +1107,7 @@
                       "\t$(Q)$(WIDL_TARGET) $($(module_name)_WIDLFLAGS) -h -H $(INTERMEDIATE)$(SEP)$(source_dir)$(SEP)$(source_name_noext)_c.h -c -C $(INTERMEDIATE)$(SEP)$(source_dir)$(SEP)$(source_name_noext)_c.c $(source)\n"
                       "$(INTERMEDIATE)$(SEP)$(source_dir)$(SEP)$(source_name_noext)_c.o: $(INTERMEDIATE)$(SEP)$(source_dir)$(SEP)$(source_name_noext)_c.c $(INTERMEDIATE)$(SEP)$(source_dir)$(SEP)$(source_name_noext)_c.h$(dependencies) | $(INTERMEDIATE)$(SEP)$(source_dir)\n"
                       "\t$(ECHO_CC)\n"
-                      "\t${gcc} -o $@ $($(module_name)_CFLAGS)$(compiler_flags) -c $<\n",
+                      "\t${gcc} -o $@ $($(module_name)_CFLAGS)$(compiler_flags) -fno-unit-at-a-time -c $<\n",
                       "$(INTERMEDIATE)$(SEP)$(source_dir)$(SEP)$(source_name_noext)_c.h",
                       "$(INTERMEDIATE)$(SEP)$(source_dir)$(SEP)$(source_name_noext)_c.c",
                       "$(INTERMEDIATE)$(SEP)$(source_dir)$(SEP)$(source_name_noext)_c.o",



More information about the Ros-diffs mailing list