This is the mail archive of the
java-patches@gcc.gnu.org
mailing list for the Java project.
WIN-08.1: win32 patch to prims.cc
- From: Adam Megacz <patches at lists dot megacz dot com>
- To: java-patches at gcc dot gnu dot org
- Date: 31 Jan 2002 20:31:00 -0800
- Subject: WIN-08.1: win32 patch to prims.cc
- Organization: Myself
Added an #undef STRICT after #include<windows.h> to prevent naming
conflicts in cni.h's inclusions.
2002-01-31 Adam Megacz <adam@xwt.org>
* prims.cc
(_Jv_CreateJavaVM): We now use WIN32 instead of
USE_WIN32_SIGNALLING and USE_WINSOCK.
(win32_exception_handler): Now throws an exception out of
the signal handler; assumes SJLJ
Also added #undef STRICT after #include<windows.h>
Index: prims.cc
===================================================================
RCS file: /cvs/gcc/gcc/libjava/prims.cc,v
retrieving revision 1.66
diff -u -r1.66 prims.cc
--- prims.cc 2001/12/16 22:28:35 1.66
+++ prims.cc 2002/02/01 04:35:12
@@ -10,14 +10,15 @@
#include <config.h>
-#ifdef USE_WIN32_SIGNALLING
+#ifdef WIN32
#include <windows.h>
-#endif /* USE_WIN32_SIGNALLING */
+#undef STRICT
+#endif /* WIN32 */
-#ifdef USE_WINSOCK
+#ifdef WIN32
#undef __INSIDE_CYGWIN__
#include <winsock.h>
-#endif /* USE_WINSOCK */
+#endif /* WIN32 */
#include <stdlib.h>
#include <stdarg.h>
@@ -730,28 +731,19 @@
}
}
-#ifdef USE_WIN32_SIGNALLING
+#ifdef WIN32
extern "C" int* win32_get_restart_frame (void *);
LONG CALLBACK
win32_exception_handler (LPEXCEPTION_POINTERS e)
{
- int* setjmp_buf;
- if (e->ExceptionRecord->ExceptionCode == EXCEPTION_ACCESS_VIOLATION)
- setjmp_buf = win32_get_restart_frame (nullp);
+ if (e->ExceptionRecord->ExceptionCode == EXCEPTION_ACCESS_VIOLATION)
+ _Jv_ThrowNullPointerException();
else if (e->ExceptionRecord->ExceptionCode == EXCEPTION_INT_DIVIDE_BY_ZERO)
- setjmp_buf = win32_get_restart_frame (arithexception);
+ throw new java::lang::ArithmeticException;
else
return EXCEPTION_CONTINUE_SEARCH;
-
- e->ContextRecord->Ebp = setjmp_buf[0];
- // FIXME: Why does i386-signal.h increment the PC here, do we need to do it?
- e->ContextRecord->Eip = setjmp_buf[1];
- // FIXME: Is this the stack pointer? Do we need it?
- e->ContextRecord->Esp = setjmp_buf[2];
-
- return EXCEPTION_CONTINUE_EXECUTION;
}
#endif
@@ -962,14 +954,11 @@
LTDL_SET_PRELOADED_SYMBOLS ();
#endif
-#ifdef USE_WINSOCK
+#ifdef WIN32
// Initialise winsock for networking
WSADATA data;
if (WSAStartup (MAKEWORD (1, 1), &data))
MessageBox (NULL, "Error initialising winsock library.", "Error", MB_OK | MB_ICONEXCLAMATION);
-#endif /* USE_WINSOCK */
-
-#ifdef USE_WIN32_SIGNALLING
// Install exception handler
SetUnhandledExceptionFilter (win32_exception_handler);
#elif defined(HAVE_SIGACTION)