From 119a12ff1b0517c5684796cb4a7c41feea2ab287 Mon Sep 17 00:00:00 2001 From: tromey Date: Mon, 3 Feb 2003 21:23:59 +0000 Subject: 2003-02-03 Ranjit Mathew * java/lang/natRuntime.cc (java::lang::Runtime::_load)): Take care of the fact that on Win32, JNI_OnLoad is an "stdcall" function and could also have been exported as "JNI_OnLoad@8" (MinGW) or "_JNI_OnLoad@8" (MSVC). git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@62348 138bc75d-0d04-0410-961f-82ee72b054a4 --- libjava/ChangeLog | 7 +++++++ libjava/java/lang/natRuntime.cc | 17 +++++++++++++++-- 2 files changed, 22 insertions(+), 2 deletions(-) (limited to 'libjava') diff --git a/libjava/ChangeLog b/libjava/ChangeLog index 11ba2edd366..8a5597a9833 100644 --- a/libjava/ChangeLog +++ b/libjava/ChangeLog @@ -1,3 +1,10 @@ +2003-02-03 Ranjit Mathew + + * java/lang/natRuntime.cc (java::lang::Runtime::_load)): Take care + of the fact that on Win32, JNI_OnLoad is an "stdcall" function and + could also have been exported as "JNI_OnLoad@8" (MinGW) or + "_JNI_OnLoad@8" (MSVC). + 2003-02-03 Ranjit Mathew * resolve.cc (_Jv_JNIMethod::ncode): Use stdcall calling diff --git a/libjava/java/lang/natRuntime.cc b/libjava/java/lang/natRuntime.cc index f74a1e76bcf..09f1e04f361 100644 --- a/libjava/java/lang/natRuntime.cc +++ b/libjava/java/lang/natRuntime.cc @@ -1,6 +1,6 @@ // natRuntime.cc - Implementation of native side of Runtime class. -/* Copyright (C) 1998, 1999, 2000, 2001, 2002 Free Software Foundation +/* Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003 Free Software Foundation This file is part of libgcj. @@ -241,6 +241,19 @@ java::lang::Runtime::_load (jstring path, jboolean do_search) add_library (h); void *onload = lt_dlsym (h, "JNI_OnLoad"); + +#ifdef WIN32 + // On Win32, JNI_OnLoad is an "stdcall" function taking two pointers + // (8 bytes) as arguments. It could also have been exported as + // "JNI_OnLoad@8" (MinGW) or "_JNI_OnLoad@8" (MSVC). + if (onload == NULL) + { + onload = lt_dlsym (h, "JNI_OnLoad@8"); + if (onload == NULL) + onload = lt_dlsym (h, "_JNI_OnLoad@8"); + } +#endif /* WIN32 */ + if (onload != NULL) { JavaVM *vm = _Jv_GetJavaVM (); @@ -249,7 +262,7 @@ java::lang::Runtime::_load (jstring path, jboolean do_search) // FIXME: what? return; } - jint vers = ((jint (*) (JavaVM *, void *)) onload) (vm, NULL); + jint vers = ((jint (JNICALL *) (JavaVM *, void *)) onload) (vm, NULL); if (vers != JNI_VERSION_1_1 && vers != JNI_VERSION_1_2 && vers != JNI_VERSION_1_4) { -- cgit v1.2.3