* [patch libjava]: Do some fixes for windows native targets
@ 2011-04-05 6:52 Kai Tietz
2011-04-05 13:26 ` Tom Tromey
0 siblings, 1 reply; 6+ messages in thread
From: Kai Tietz @ 2011-04-05 6:52 UTC (permalink / raw)
To: GCC Patches, Java Patches
[-- Attachment #1: Type: text/plain, Size: 1462 bytes --]
Hello,
this patch fixes some issues in libjava for windows targets. It
addresses for now only 32-bit target, but for JNICALL definition I
introduced already logic for 64-bit windows target too as preparation.
One nit remains, but I am not quite sure how to approach it. In
ltmain.sh it is necessary to set valid_a_lib to yes, so that a
complete build is possible. This is a libtool issue and maybe Ralf
could take care here. If I understand correct, here should be module
instead of library used. But well, Ralf might know better.
ChangeLog
2011-04-05 Kai Tietz
* configure.ac (libgcj_ld_export_all): Set for windows
native targets to export-all-symbols.
(LIBGCJ_LD_EXPORT_ALL): Export libgcj_ld_export_all.
* Makefile.am (libgcj_la_LDFLAGS): Add LIBGCJ_LD_EXPORT_ALL.
* sysdep/i386/backtrace.h (MAIN_FUNC): Define for windows
native targets to DllMain.
* gcj/javaprims.h (JNICALL): Define it dependent
for different windows targets.
* include/jni_md.h: Likewise.
* java/lang/Class.h (_Jv_JNI_ToReflectedField): Mark
JNICALLS for friends.
(_Jv_JNI_ToReflectedMethod): Likewise.
* java/lang/reflect/Field.h (_Jv_JNI_ToReflectedField):
Likewise.
* java/lang/reflect/Constructor.h (_Jv_JNI_ToReflectedMethod):
Likewise.
* configure: Regenerated.
* Makefile.in: Regenerated.
* include/Makefile.in: Regenerated.
* testsuite/Makefile.in: Regenerated.
* gcj/Makefile.in: Regenerated.
Tested for i686-w64-mingw32. Ok for apply?
Regards,
Kai
[-- Attachment #2: fix_mingw_entry.txt --]
[-- Type: text/plain, Size: 11299 bytes --]
Index: gcc/libjava/sysdep/i386/backtrace.h
===================================================================
--- gcc.orig/libjava/sysdep/i386/backtrace.h 2011-04-01 16:27:18.407236300 +0200
+++ gcc/libjava/sysdep/i386/backtrace.h 2011-04-05 08:11:29.252778400 +0200
@@ -17,7 +17,10 @@ details. */
/* To allow this to link as a DLL. */
#define MAIN_FUNC dll_crt0__FP11per_process
extern "C" int MAIN_FUNC () __declspec(dllimport);
-#else /* !__CYGWIN__ */
+#elif defined (_WIN32)
+#define MAIN_FUNC DllMain
+extern "C" int __stdcall MAIN_FUNC (void *, unsigned long, void *);
+#else /* !__CYGWIN__ && !_WIN32 */
#define MAIN_FUNC main
extern int MAIN_FUNC (int, char **);
#endif /* ?__CYGWIN__ */
Index: gcc/libjava/configure
===================================================================
--- gcc.orig/libjava/configure 2011-04-04 19:21:27.211126500 +0200
+++ gcc/libjava/configure 2011-04-05 08:26:26.518716700 +0200
@@ -786,6 +786,7 @@ TOOLKIT
LIBGCJDEBUG
BUILD_SUBLIBS_FALSE
BUILD_SUBLIBS_TRUE
+LIBGCJ_LD_EXPORT_ALL
LIBGCJ_LD_SYMBOLIC_FUNCTIONS
LIBGCJ_LD_SYMBOLIC
LIBGCJ_SUBLIB_CORE_EXTRA_DEPS
@@ -5957,6 +5958,16 @@ if test -z "$libgcj_ld_symbolic"; then
libgcj_ld_symbolic=$SYMBOLIC_LDFLAGS
fi
+# for windows native targets enforce export of all symbols for shared libgcj.
+libgcj_ld_export_all=
+case "$host" in
+ *mingw*)
+ libgcj_ld_export_all=-Wl,--export-all-symbols
+ ;;
+ *)
+ ;;
+esac
+
LIBGCJ_CFLAGS="${libgcj_cflags}"
LIBGCJ_CXXFLAGS="${libgcj_cxxflags}"
LIBGCJ_JAVAFLAGS="${libgcj_javaflags}"
@@ -5964,6 +5975,8 @@ LIBGCJ_SUBLIB_LTFLAGS="${libgcj_sublib_l
LIBGCJ_SUBLIB_CORE_EXTRA_DEPS="${libgcj_sublib_core_extra_deps}"
LIBGCJ_LD_SYMBOLIC="${libgcj_ld_symbolic}"
LIBGCJ_LD_SYMBOLIC_FUNCTIONS="${libgcj_ld_symbolic_functions}"
+LIBGCJ_LD_EXPORT_ALL="${libgcj_ld_export_all}"
+
@@ -13346,7 +13359,7 @@ else
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
lt_status=$lt_dlunknown
cat > conftest.$ac_ext <<_LT_EOF
-#line 13349 "configure"
+#line 13362 "configure"
#include "confdefs.h"
#if HAVE_DLFCN_H
@@ -13452,7 +13465,7 @@ else
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
lt_status=$lt_dlunknown
cat > conftest.$ac_ext <<_LT_EOF
-#line 13455 "configure"
+#line 13468 "configure"
#include "confdefs.h"
#if HAVE_DLFCN_H
@@ -19445,7 +19458,7 @@ if test "${enable_sjlj_exceptions+set}"
enableval=$enable_sjlj_exceptions; :
else
cat > conftest.$ac_ext << EOF
-#line 19448 "configure"
+#line 19461 "configure"
struct S { ~S(); };
void bar();
void foo()
@@ -20540,6 +20553,9 @@ arm*linux*eabi)
*-*-cygwin)
extra_ldflags_libjava=-liconv
;;
+*-*-mingw*)
+ extra_ldflags_libjava=-lws2_32
+ ;;
esac
LIBMATHSPEC=
Index: gcc/libjava/configure.ac
===================================================================
--- gcc.orig/libjava/configure.ac 2011-04-04 19:21:27.176622100 +0200
+++ gcc/libjava/configure.ac 2011-04-05 08:21:51.178252900 +0200
@@ -214,6 +214,16 @@ if test -z "$libgcj_ld_symbolic"; then
libgcj_ld_symbolic=$SYMBOLIC_LDFLAGS
fi
+# for windows native targets enforce export of all symbols for shared libgcj.
+libgcj_ld_export_all=
+case "$host" in
+ *mingw*)
+ libgcj_ld_export_all=-Wl,--export-all-symbols
+ ;;
+ *)
+ ;;
+esac
+
LIBGCJ_CFLAGS="${libgcj_cflags}"
LIBGCJ_CXXFLAGS="${libgcj_cxxflags}"
LIBGCJ_JAVAFLAGS="${libgcj_javaflags}"
@@ -221,6 +231,7 @@ LIBGCJ_SUBLIB_LTFLAGS="${libgcj_sublib_l
LIBGCJ_SUBLIB_CORE_EXTRA_DEPS="${libgcj_sublib_core_extra_deps}"
LIBGCJ_LD_SYMBOLIC="${libgcj_ld_symbolic}"
LIBGCJ_LD_SYMBOLIC_FUNCTIONS="${libgcj_ld_symbolic_functions}"
+LIBGCJ_LD_EXPORT_ALL="${libgcj_ld_export_all}"
AC_SUBST(LIBGCJ_CFLAGS)
AC_SUBST(LIBGCJ_CXXFLAGS)
AC_SUBST(LIBGCJ_JAVAFLAGS)
@@ -228,6 +239,7 @@ AC_SUBST(LIBGCJ_SUBLIB_LTFLAGS)
AC_SUBST(LIBGCJ_SUBLIB_CORE_EXTRA_DEPS)
AC_SUBST(LIBGCJ_LD_SYMBOLIC)
AC_SUBST(LIBGCJ_LD_SYMBOLIC_FUNCTIONS)
+AC_SUBST(LIBGCJ_LD_EXPORT_ALL)
# Only use libltdl for non-newlib builds.
if test "x${with_newlib}" = "x" || test "x${with_newlib}" = "xno"; then
@@ -930,6 +942,9 @@ arm*linux*eabi)
*-*-cygwin)
extra_ldflags_libjava=-liconv
;;
+*-*-mingw*)
+ extra_ldflags_libjava=-lws2_32
+ ;;
esac
LIBMATHSPEC=
Index: gcc/libjava/gcj/javaprims.h
===================================================================
--- gcc.orig/libjava/gcj/javaprims.h 2011-04-01 16:27:18.343236300 +0200
+++ gcc/libjava/gcj/javaprims.h 2011-04-05 08:11:29.512811400 +0200
@@ -26,6 +26,15 @@ details. */
#undef FALSE
#define FALSE FALSE
+// JNI calling convention also defined in jni.h */
+#ifndef JNICALL
+ #if (defined (_WIN32) || defined (__WIN32__) || defined (WIN32)) && !defined (_WIN64)
+ #define JNICALL __stdcall
+ #else
+ #define JNICALL
+ #endif
+#endif
+
// To force selection of correct types that will mangle consistently
// across platforms.
extern "Java"
Index: gcc/libjava/include/jni_md.h
===================================================================
--- gcc.orig/libjava/include/jni_md.h 2011-04-01 16:27:18.353236300 +0200
+++ gcc/libjava/include/jni_md.h 2011-04-05 08:11:29.534314200 +0200
@@ -65,6 +65,15 @@ typedef struct _Jv_JavaVM JavaVM;
reused between non-nesting JNI calls. */ \
struct _Jv_JNI_LocalFrame *bottom_locals;
+/* JNI calling convention. Also defined in javaprims.h. */
+#ifndef JNICALL
+#if (defined (_WIN32) || defined (__WIN32__) || defined (WIN32)) \
+ && !defined (_WIN64)
+ #define JNICALL __stdcall
+ #else
+ #define JNICALL
+ #endif
+#endif
#else /* __GCJ_JNI_IMPL__ */
@@ -117,14 +126,17 @@ typedef uint16_t jchar;
/* Linkage and calling conventions. */
-#if defined (_WIN32) || defined (__WIN32__) || defined (WIN32)
+#if (defined (_WIN32) || defined (__WIN32__) || defined (WIN32)) \
+ && !defined (_WIN64)
#define JNIIMPORT __declspec(dllimport)
#define JNIEXPORT __declspec(dllexport)
-#define JNICALL __stdcall
+#ifndef JNICALL
+#define JNICALL __stdcall
+äendif
-#else /* !( _WIN32 || __WIN32__ || WIN32) */
+#else /* !( _WIN32 || __WIN32__ || WIN32) || _WIN64 */
#define JNIIMPORT
#if defined(__GNUC__) && __GNUC__ > 3
@@ -133,9 +145,11 @@ typedef uint16_t jchar;
#define JNIEXPORT
#endif
+#ifndef JNICALL
#define JNICALL
+#endif
-#endif /* !( _WIN32 || __WIN32__ || WIN32) */
+#endif /* !( _WIN32 || __WIN32__ || WIN32) || _WIN64 */
/* These defines apply to symbols in libgcj */
#ifdef __GCJ_DLL__
Index: gcc/libjava/java/lang/Class.h
===================================================================
--- gcc.orig/libjava/java/lang/Class.h 2011-04-01 16:27:18.355236300 +0200
+++ gcc/libjava/java/lang/Class.h 2011-04-05 08:11:29.562817800 +0200
@@ -251,10 +251,10 @@ bool _Jv_getInterfaceMethod(jclass, jcla
const _Jv_Utf8Const*,
const _Jv_Utf8Const*);
-jobject _Jv_JNI_ToReflectedField (_Jv_JNIEnv *, jclass, jfieldID,
- jboolean);
-jobject _Jv_JNI_ToReflectedMethod (_Jv_JNIEnv *, jclass, jmethodID,
- jboolean);
+jobject JNICALL _Jv_JNI_ToReflectedField (_Jv_JNIEnv *, jclass, jfieldID,
+ jboolean);
+jobject JNICALL _Jv_JNI_ToReflectedMethod (_Jv_JNIEnv *, jclass, jmethodID,
+ jboolean);
jfieldID _Jv_FromReflectedField (java::lang::reflect::Field *);
jmethodID _Jv_FromReflectedMethod (java::lang::reflect::Method *);
Index: gcc/libjava/java/lang/reflect/Constructor.h
===================================================================
--- gcc.orig/libjava/java/lang/reflect/Constructor.h 2011-04-01 16:27:18.356236300 +0200
+++ gcc/libjava/java/lang/reflect/Constructor.h 2011-04-05 08:11:29.583320400 +0200
@@ -11,7 +11,8 @@
jmethodID _Jv_FromReflectedConstructor (java::lang::reflect::Constructor *);
-jobject _Jv_JNI_ToReflectedMethod (_Jv_JNIEnv *, jclass, jmethodID, jboolean);
+jobject JNICALL _Jv_JNI_ToReflectedMethod (_Jv_JNIEnv *, jclass, jmethodID,
+ jboolean);
class java::lang::reflect::Constructor : public ::java::lang::reflect::AccessibleObject
{
@@ -58,7 +59,8 @@ public:
static ::java::lang::Class class$;
friend jmethodID (::_Jv_FromReflectedConstructor) (java::lang::reflect::Constructor *);
- friend jobject (::_Jv_JNI_ToReflectedMethod) (_Jv_JNIEnv *, jclass, jmethodID, jboolean);
+ friend jobject JNICALL (::_Jv_JNI_ToReflectedMethod) (_Jv_JNIEnv *, jclass,
+ jmethodID, jboolean);
friend class java::lang::Class;
};
Index: gcc/libjava/java/lang/reflect/Field.h
===================================================================
--- gcc.orig/libjava/java/lang/reflect/Field.h 2011-04-01 16:27:18.378236300 +0200
+++ gcc/libjava/java/lang/reflect/Field.h 2011-04-05 08:11:29.593321700 +0200
@@ -11,7 +11,8 @@
jfieldID _Jv_FromReflectedField (java::lang::reflect::Field *);
-jobject _Jv_JNI_ToReflectedField (_Jv_JNIEnv*, jclass, jfieldID, jboolean);
+jobject JNICALL _Jv_JNI_ToReflectedField (_Jv_JNIEnv*, jclass, jfieldID,
+ jboolean);
jobject _Jv_getFieldInternal (java::lang::reflect::Field *f, jclass c, jobject o);
class java::lang::reflect::Field : public ::java::lang::reflect::AccessibleObject
@@ -90,7 +91,8 @@ public:
static ::java::lang::Class class$;
friend jfieldID (::_Jv_FromReflectedField) (java::lang::reflect::Field *);
- friend jobject (::_Jv_JNI_ToReflectedField) (_Jv_JNIEnv*, jclass, jfieldID, jboolean);
+ friend jobject JNICALL (::_Jv_JNI_ToReflectedField) (_Jv_JNIEnv*, jclass,
+ jfieldID, jboolean);
friend class java::lang::Class;
friend jobject (::_Jv_getFieldInternal) (java::lang::reflect::Field *f, jclass c, jobject o);
};
Index: gcc/libjava/Makefile.am
===================================================================
--- gcc.orig/libjava/Makefile.am 2010-09-09 16:24:13.000000000 +0200
+++ gcc/libjava/Makefile.am 2011-04-05 08:16:14.049943100 +0200
@@ -492,7 +492,7 @@ xlib_nat_files = $(xlib_nat_source_files
libgcj_la_LDFLAGS = -rpath $(toolexeclibdir) $(THREADLDFLAGS) $(extra_ldflags) $(THREADLIBS) \
$(LIBLTDL) $(SYS_ZLIBS) $(LIBJAVA_LDFLAGS_NOUNDEF) \
-version-info `grep -v '^\#' $(srcdir)/libtool-version` \
- $(LIBGCJ_LD_SYMBOLIC_FUNCTIONS)
+ $(LIBGCJ_LD_SYMBOLIC_FUNCTIONS) $(LIBGCJ_LD_EXPORT_ALL)
libgcj_la_LIBADD = \
classpath/native/fdlibm/libfdlibm.la \
java/lang/Object.lo \
Index: gcc/libjava/Makefile.in
===================================================================
--- gcc.orig/libjava/Makefile.in 2011-04-01 16:27:18.000000000 +0200
+++ gcc/libjava/Makefile.in 2011-04-05 08:26:53.116094200 +0200
@@ -606,6 +606,7 @@ LIBGCJ_BC_SPEC = @LIBGCJ_BC_SPEC@
LIBGCJ_CFLAGS = @LIBGCJ_CFLAGS@
LIBGCJ_CXXFLAGS = @LIBGCJ_CXXFLAGS@
LIBGCJ_JAVAFLAGS = @LIBGCJ_JAVAFLAGS@
+LIBGCJ_LD_EXPORT_ALL = @LIBGCJ_LD_EXPORT_ALL@
LIBGCJ_LD_SYMBOLIC = @LIBGCJ_LD_SYMBOLIC@
LIBGCJ_LD_SYMBOLIC_FUNCTIONS = @LIBGCJ_LD_SYMBOLIC_FUNCTIONS@
LIBGCJ_SPEC = @LIBGCJ_SPEC@
@@ -1066,7 +1067,7 @@ xlib_nat_files = $(xlib_nat_source_files
libgcj_la_LDFLAGS = -rpath $(toolexeclibdir) $(THREADLDFLAGS) $(extra_ldflags) $(THREADLIBS) \
$(LIBLTDL) $(SYS_ZLIBS) $(LIBJAVA_LDFLAGS_NOUNDEF) \
-version-info `grep -v '^\#' $(srcdir)/libtool-version` \
- $(LIBGCJ_LD_SYMBOLIC_FUNCTIONS)
+ $(LIBGCJ_LD_SYMBOLIC_FUNCTIONS) $(LIBGCJ_LD_EXPORT_ALL)
libgcj_la_LIBADD = \
classpath/native/fdlibm/libfdlibm.la \
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [patch libjava]: Do some fixes for windows native targets
2011-04-05 6:52 [patch libjava]: Do some fixes for windows native targets Kai Tietz
@ 2011-04-05 13:26 ` Tom Tromey
2011-04-06 12:45 ` Kai Tietz
0 siblings, 1 reply; 6+ messages in thread
From: Tom Tromey @ 2011-04-05 13:26 UTC (permalink / raw)
To: Kai Tietz; +Cc: GCC Patches, Java Patches
>>>>> "Kai" == Kai Tietz <ktietz70@googlemail.com> writes:
Kai> this patch fixes some issues in libjava for windows targets. It
Kai> addresses for now only 32-bit target, but for JNICALL definition I
Kai> introduced already logic for 64-bit windows target too as preparation.
Most of this seems ok to me.
Kai> * java/lang/reflect/Field.h (_Jv_JNI_ToReflectedField):
Kai> Likewise.
Kai> * java/lang/reflect/Constructor.h (_Jv_JNI_ToReflectedMethod):
Kai> Likewise.
These headers are generated. You have to edit headers.txt and then
rebuild them.
Tom
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [patch libjava]: Do some fixes for windows native targets
2011-04-05 13:26 ` Tom Tromey
@ 2011-04-06 12:45 ` Kai Tietz
2011-04-06 14:39 ` Kai Tietz
0 siblings, 1 reply; 6+ messages in thread
From: Kai Tietz @ 2011-04-06 12:45 UTC (permalink / raw)
To: Tom Tromey; +Cc: GCC Patches, Java Patches
[-- Attachment #1: Type: text/plain, Size: 1755 bytes --]
2011/4/5 Tom Tromey <tromey@redhat.com>:
>>>>>> "Kai" == Kai Tietz <ktietz70@googlemail.com> writes:
>
> Kai> this patch fixes some issues in libjava for windows targets. It
> Kai> addresses for now only 32-bit target, but for JNICALL definition I
> Kai> introduced already logic for 64-bit windows target too as preparation.
>
> Most of this seems ok to me.
>
> Kai> * java/lang/reflect/Field.h (_Jv_JNI_ToReflectedField):
> Kai> Likewise.
> Kai> * java/lang/reflect/Constructor.h (_Jv_JNI_ToReflectedMethod):
> Kai> Likewise.
>
> These headers are generated. You have to edit headers.txt and then
> rebuild them.
>
> Tom
>
Hi Tom,
I added to headers.txt the changes and regenerate headers. Btw it is
a bit tricky to enable for libjava the maintainer-mode and then have a
successful configure for it ...
ChangeLog
2011-04-06 Kai Tietz
* configure.ac (libgcj_ld_export_all): Set for windows
native targets to export-all-symbols.
(LIBGCJ_LD_EXPORT_ALL): Export libgcj_ld_export_all.
* Makefile.am (libgcj_la_LDFLAGS): Add LIBGCJ_LD_EXPORT_ALL.
* sysdep/i386/backtrace.h (MAIN_FUNC): Define for windows
native targets to DllMain.
* gcj/javaprims.h (JNICALL): Define it dependent
for different windows targets.
* include/jni_md.h: Likewise.
* headers.txt (_Jv_JNI_ToReflectedField): Mark
JNICALLS for friends.
(_Jv_JNI_ToReflectedMethod): Likewise.
* java/lang/Class.h: Regenerated.
* java/lang/reflect/Field.h: Regenerated.
* java/lang/reflect/Constructor.h: Regenerated.
* configure: Regenerated.
* Makefile.in: Regenerated.
* include/Makefile.in: Regenerated.
* testsuite/Makefile.in: Regenerated.
* gcj/Makefile.in: Regenerated.
Ok for apply?
Regards,
Kai
[-- Attachment #2: java_w32.txt --]
[-- Type: text/plain, Size: 10227 bytes --]
Index: gcc-head/libjava/Makefile.am
===================================================================
--- gcc-head.orig/libjava/Makefile.am
+++ gcc-head/libjava/Makefile.am
@@ -492,7 +492,7 @@ xlib_nat_files = $(xlib_nat_source_files
libgcj_la_LDFLAGS = -rpath $(toolexeclibdir) $(THREADLDFLAGS) $(extra_ldflags) $(THREADLIBS) \
$(LIBLTDL) $(SYS_ZLIBS) $(LIBJAVA_LDFLAGS_NOUNDEF) \
-version-info `grep -v '^\#' $(srcdir)/libtool-version` \
- $(LIBGCJ_LD_SYMBOLIC_FUNCTIONS)
+ $(LIBGCJ_LD_SYMBOLIC_FUNCTIONS) $(LIBGCJ_LD_EXPORT_ALL)
libgcj_la_LIBADD = \
classpath/native/fdlibm/libfdlibm.la \
java/lang/Object.lo \
Index: gcc-head/libjava/configure.ac
===================================================================
--- gcc-head.orig/libjava/configure.ac
+++ gcc-head/libjava/configure.ac
@@ -214,6 +214,16 @@ if test -z "$libgcj_ld_symbolic"; then
libgcj_ld_symbolic=$SYMBOLIC_LDFLAGS
fi
+# for windows native targets enforce export of all symbols for shared libgcj.
+libgcj_ld_export_all=
+case "$host" in
+ *mingw*)
+ libgcj_ld_export_all=-Wl,--export-all-symbols
+ ;;
+ *)
+ ;;
+esac
+
LIBGCJ_CFLAGS="${libgcj_cflags}"
LIBGCJ_CXXFLAGS="${libgcj_cxxflags}"
LIBGCJ_JAVAFLAGS="${libgcj_javaflags}"
@@ -221,6 +231,7 @@ LIBGCJ_SUBLIB_LTFLAGS="${libgcj_sublib_l
LIBGCJ_SUBLIB_CORE_EXTRA_DEPS="${libgcj_sublib_core_extra_deps}"
LIBGCJ_LD_SYMBOLIC="${libgcj_ld_symbolic}"
LIBGCJ_LD_SYMBOLIC_FUNCTIONS="${libgcj_ld_symbolic_functions}"
+LIBGCJ_LD_EXPORT_ALL="${libgcj_ld_export_all}"
AC_SUBST(LIBGCJ_CFLAGS)
AC_SUBST(LIBGCJ_CXXFLAGS)
AC_SUBST(LIBGCJ_JAVAFLAGS)
@@ -228,6 +239,7 @@ AC_SUBST(LIBGCJ_SUBLIB_LTFLAGS)
AC_SUBST(LIBGCJ_SUBLIB_CORE_EXTRA_DEPS)
AC_SUBST(LIBGCJ_LD_SYMBOLIC)
AC_SUBST(LIBGCJ_LD_SYMBOLIC_FUNCTIONS)
+AC_SUBST(LIBGCJ_LD_EXPORT_ALL)
# Only use libltdl for non-newlib builds.
if test "x${with_newlib}" = "x" || test "x${with_newlib}" = "xno"; then
@@ -930,6 +942,9 @@ arm*linux*eabi)
*-*-cygwin)
extra_ldflags_libjava=-liconv
;;
+*-*-mingw*)
+ extra_ldflags_libjava=-lws2_32
+ ;;
esac
LIBMATHSPEC=
Index: gcc-head/libjava/gcj/javaprims.h
===================================================================
--- gcc-head.orig/libjava/gcj/javaprims.h
+++ gcc-head/libjava/gcj/javaprims.h
@@ -26,6 +26,15 @@ details. */
#undef FALSE
#define FALSE FALSE
+// JNI calling convention also defined in jni.h */
+#ifndef JNICALL
+ #if (defined (_WIN32) || defined (__WIN32__) || defined (WIN32)) && !defined (_WIN64)
+ #define JNICALL __stdcall
+ #else
+ #define JNICALL
+ #endif
+#endif
+
// To force selection of correct types that will mangle consistently
// across platforms.
extern "Java"
Index: gcc-head/libjava/headers.txt
===================================================================
--- gcc-head.orig/libjava/headers.txt
+++ gcc-head/libjava/headers.txt
@@ -41,26 +41,26 @@ friend jstring (::_Jv_AllocString) (jsiz
class java/lang/reflect/Constructor
prepend jmethodID _Jv_FromReflectedConstructor (java::lang::reflect::Constructor *);
-prepend jobject _Jv_JNI_ToReflectedMethod (_Jv_JNIEnv *, jclass, jmethodID, jboolean);
+prepend jobject JNICALL _Jv_JNI_ToReflectedMethod (_Jv_JNIEnv *, jclass, jmethodID, jboolean);
friend jmethodID (::_Jv_FromReflectedConstructor) (java::lang::reflect::Constructor *);
-friend jobject (::_Jv_JNI_ToReflectedMethod) (_Jv_JNIEnv *, jclass, jmethodID, jboolean);
+friend jobject JNICALL (::_Jv_JNI_ToReflectedMethod) (_Jv_JNIEnv *, jclass, jmethodID, jboolean);
friend class java::lang::Class;
class java/lang/reflect/Field
prepend jfieldID _Jv_FromReflectedField (java::lang::reflect::Field *);
-prepend jobject _Jv_JNI_ToReflectedField (_Jv_JNIEnv*, jclass, jfieldID, jboolean);
+prepend jobject JNICALL _Jv_JNI_ToReflectedField (_Jv_JNIEnv*, jclass, jfieldID, jboolean);
prepend jobject _Jv_getFieldInternal (java::lang::reflect::Field *f, jclass c, jobject o);
friend jfieldID (::_Jv_FromReflectedField) (java::lang::reflect::Field *);
-friend jobject (::_Jv_JNI_ToReflectedField) (_Jv_JNIEnv*, jclass, jfieldID, jboolean);
+friend jobject JNICALL (::_Jv_JNI_ToReflectedField) (_Jv_JNIEnv*, jclass, jfieldID, jboolean);
friend class java::lang::Class;
friend jobject (::_Jv_getFieldInternal) (java::lang::reflect::Field *f, jclass c, jobject o);
class java/lang/reflect/Method
prepend jmethodID _Jv_FromReflectedMethod (java::lang::reflect::Method *);
-prepend jobject _Jv_JNI_ToReflectedMethod (_Jv_JNIEnv *, jclass, jmethodID, jboolean);
+prepend jobject JNICALL _Jv_JNI_ToReflectedMethod (_Jv_JNIEnv *, jclass, jmethodID, jboolean);
prepend ::java::lang::reflect::Method *_Jv_GetReflectedMethod (jclass, _Jv_Utf8Const*, _Jv_Utf8Const*);
friend jmethodID (::_Jv_FromReflectedMethod) (java::lang::reflect::Method *);
-friend jobject (::_Jv_JNI_ToReflectedMethod) (_Jv_JNIEnv *, jclass, jmethodID, jboolean);
+friend jobject JNICALL (::_Jv_JNI_ToReflectedMethod) (_Jv_JNIEnv *, jclass, jmethodID, jboolean);
friend class java::lang::Class;
friend class java::io::ObjectInputStream;
friend java::lang::reflect::Method* ::_Jv_GetReflectedMethod (jclass, _Jv_Utf8Const*, _Jv_Utf8Const*);
Index: gcc-head/libjava/include/jni_md.h
===================================================================
--- gcc-head.orig/libjava/include/jni_md.h
+++ gcc-head/libjava/include/jni_md.h
@@ -65,6 +65,15 @@ typedef struct _Jv_JavaVM JavaVM;
reused between non-nesting JNI calls. */ \
struct _Jv_JNI_LocalFrame *bottom_locals;
+/* JNI calling convention. Also defined in javaprims.h. */
+#ifndef JNICALL
+#if (defined (_WIN32) || defined (__WIN32__) || defined (WIN32)) \
+ && !defined (_WIN64)
+ #define JNICALL __stdcall
+ #else
+ #define JNICALL
+ #endif
+#endif
#else /* __GCJ_JNI_IMPL__ */
@@ -117,14 +126,17 @@ typedef uint16_t jchar;
/* Linkage and calling conventions. */
-#if defined (_WIN32) || defined (__WIN32__) || defined (WIN32)
+#if (defined (_WIN32) || defined (__WIN32__) || defined (WIN32)) \
+ && !defined (_WIN64)
#define JNIIMPORT __declspec(dllimport)
#define JNIEXPORT __declspec(dllexport)
-#define JNICALL __stdcall
+#ifndef JNICALL
+#define JNICALL __stdcall
+äendif
-#else /* !( _WIN32 || __WIN32__ || WIN32) */
+#else /* !( _WIN32 || __WIN32__ || WIN32) || _WIN64 */
#define JNIIMPORT
#if defined(__GNUC__) && __GNUC__ > 3
@@ -133,9 +145,11 @@ typedef uint16_t jchar;
#define JNIEXPORT
#endif
+#ifndef JNICALL
#define JNICALL
+#endif
-#endif /* !( _WIN32 || __WIN32__ || WIN32) */
+#endif /* !( _WIN32 || __WIN32__ || WIN32) || _WIN64 */
/* These defines apply to symbols in libgcj */
#ifdef __GCJ_DLL__
Index: gcc-head/libjava/java/lang/Class.h
===================================================================
--- gcc-head.orig/libjava/java/lang/Class.h
+++ gcc-head/libjava/java/lang/Class.h
@@ -251,10 +251,10 @@ bool _Jv_getInterfaceMethod(jclass, jcla
const _Jv_Utf8Const*,
const _Jv_Utf8Const*);
-jobject _Jv_JNI_ToReflectedField (_Jv_JNIEnv *, jclass, jfieldID,
- jboolean);
-jobject _Jv_JNI_ToReflectedMethod (_Jv_JNIEnv *, jclass, jmethodID,
- jboolean);
+jobject JNICALL _Jv_JNI_ToReflectedField (_Jv_JNIEnv *, jclass, jfieldID,
+ jboolean);
+jobject JNICALL _Jv_JNI_ToReflectedMethod (_Jv_JNIEnv *, jclass, jmethodID,
+ jboolean);
jfieldID _Jv_FromReflectedField (java::lang::reflect::Field *);
jmethodID _Jv_FromReflectedMethod (java::lang::reflect::Method *);
Index: gcc-head/libjava/java/lang/reflect/Constructor.h
===================================================================
--- gcc-head.orig/libjava/java/lang/reflect/Constructor.h
+++ gcc-head/libjava/java/lang/reflect/Constructor.h
@@ -11,7 +11,7 @@
jmethodID _Jv_FromReflectedConstructor (java::lang::reflect::Constructor *);
-jobject _Jv_JNI_ToReflectedMethod (_Jv_JNIEnv *, jclass, jmethodID, jboolean);
+jobject JNICALL _Jv_JNI_ToReflectedMethod (_Jv_JNIEnv *, jclass, jmethodID, jboolean);
class java::lang::reflect::Constructor : public ::java::lang::reflect::AccessibleObject
{
@@ -58,7 +58,7 @@ public:
static ::java::lang::Class class$;
friend jmethodID (::_Jv_FromReflectedConstructor) (java::lang::reflect::Constructor *);
- friend jobject (::_Jv_JNI_ToReflectedMethod) (_Jv_JNIEnv *, jclass, jmethodID, jboolean);
+ friend jobject JNICALL (::_Jv_JNI_ToReflectedMethod) (_Jv_JNIEnv *, jclass, jmethodID, jboolean);
friend class java::lang::Class;
};
Index: gcc-head/libjava/java/lang/reflect/Field.h
===================================================================
--- gcc-head.orig/libjava/java/lang/reflect/Field.h
+++ gcc-head/libjava/java/lang/reflect/Field.h
@@ -11,7 +11,7 @@
jfieldID _Jv_FromReflectedField (java::lang::reflect::Field *);
-jobject _Jv_JNI_ToReflectedField (_Jv_JNIEnv*, jclass, jfieldID, jboolean);
+jobject JNICALL _Jv_JNI_ToReflectedField (_Jv_JNIEnv*, jclass, jfieldID, jboolean);
jobject _Jv_getFieldInternal (java::lang::reflect::Field *f, jclass c, jobject o);
class java::lang::reflect::Field : public ::java::lang::reflect::AccessibleObject
@@ -90,7 +90,7 @@ public:
static ::java::lang::Class class$;
friend jfieldID (::_Jv_FromReflectedField) (java::lang::reflect::Field *);
- friend jobject (::_Jv_JNI_ToReflectedField) (_Jv_JNIEnv*, jclass, jfieldID, jboolean);
+ friend jobject JNICALL (::_Jv_JNI_ToReflectedField) (_Jv_JNIEnv*, jclass, jfieldID, jboolean);
friend class java::lang::Class;
friend jobject (::_Jv_getFieldInternal) (java::lang::reflect::Field *f, jclass c, jobject o);
};
Index: gcc-head/libjava/sysdep/i386/backtrace.h
===================================================================
--- gcc-head.orig/libjava/sysdep/i386/backtrace.h
+++ gcc-head/libjava/sysdep/i386/backtrace.h
@@ -17,7 +17,10 @@ details. */
/* To allow this to link as a DLL. */
#define MAIN_FUNC dll_crt0__FP11per_process
extern "C" int MAIN_FUNC () __declspec(dllimport);
-#else /* !__CYGWIN__ */
+#elif defined (_WIN32)
+#define MAIN_FUNC DllMain
+extern "C" int __stdcall MAIN_FUNC (void *, unsigned long, void *);
+#else /* !__CYGWIN__ && !_WIN32 */
#define MAIN_FUNC main
extern int MAIN_FUNC (int, char **);
#endif /* ?__CYGWIN__ */
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [patch libjava]: Do some fixes for windows native targets
2011-04-06 12:45 ` Kai Tietz
@ 2011-04-06 14:39 ` Kai Tietz
2011-04-08 13:50 ` Tom Tromey
0 siblings, 1 reply; 6+ messages in thread
From: Kai Tietz @ 2011-04-06 14:39 UTC (permalink / raw)
To: Tom Tromey; +Cc: GCC Patches, Java Patches
[-- Attachment #1: Type: text/plain, Size: 2065 bytes --]
2011/4/6 Kai Tietz <ktietz70@googlemail.com>:
> 2011/4/5 Tom Tromey <tromey@redhat.com>:
>>>>>>> "Kai" == Kai Tietz <ktietz70@googlemail.com> writes:
>>
>> Kai> this patch fixes some issues in libjava for windows targets. It
>> Kai> addresses for now only 32-bit target, but for JNICALL definition I
>> Kai> introduced already logic for 64-bit windows target too as preparation.
>>
>> Most of this seems ok to me.
>>
>> Kai> * java/lang/reflect/Field.h (_Jv_JNI_ToReflectedField):
>> Kai> Likewise.
>> Kai> * java/lang/reflect/Constructor.h (_Jv_JNI_ToReflectedMethod):
>> Kai> Likewise.
>>
>> These headers are generated. You have to edit headers.txt and then
>> rebuild them.
>>
>> Tom
>>
>
> Hi Tom,
>
> I added to headers.txt the changes and regenerate headers. Btw it is
> a bit tricky to enable for libjava the maintainer-mode and then have a
> successful configure for it ...
>
> ChangeLog
>
> 2011-04-06 Kai Tietz
>
> * configure.ac (libgcj_ld_export_all): Set for windows
> native targets to export-all-symbols.
> (LIBGCJ_LD_EXPORT_ALL): Export libgcj_ld_export_all.
> * Makefile.am (libgcj_la_LDFLAGS): Add LIBGCJ_LD_EXPORT_ALL.
> * sysdep/i386/backtrace.h (MAIN_FUNC): Define for windows
> native targets to DllMain.
> * gcj/javaprims.h (JNICALL): Define it dependent
> for different windows targets.
> * include/jni_md.h: Likewise.
> * headers.txt (_Jv_JNI_ToReflectedField): Mark
> JNICALLS for friends.
> (_Jv_JNI_ToReflectedMethod): Likewise.
> * java/lang/Class.h: Regenerated.
> * java/lang/reflect/Field.h: Regenerated.
> * java/lang/reflect/Constructor.h: Regenerated.
> * configure: Regenerated.
> * Makefile.in: Regenerated.
> * include/Makefile.in: Regenerated.
> * testsuite/Makefile.in: Regenerated.
> * gcj/Makefile.in: Regenerated.
>
> Ok for apply?
>
> Regards,
> Kai
>
Sorry, found a typo. Updated patch attached.
Kai
[-- Attachment #2: java_w32.txt --]
[-- Type: text/plain, Size: 10226 bytes --]
Index: gcc-head/libjava/Makefile.am
===================================================================
--- gcc-head.orig/libjava/Makefile.am
+++ gcc-head/libjava/Makefile.am
@@ -492,7 +492,7 @@ xlib_nat_files = $(xlib_nat_source_files
libgcj_la_LDFLAGS = -rpath $(toolexeclibdir) $(THREADLDFLAGS) $(extra_ldflags) $(THREADLIBS) \
$(LIBLTDL) $(SYS_ZLIBS) $(LIBJAVA_LDFLAGS_NOUNDEF) \
-version-info `grep -v '^\#' $(srcdir)/libtool-version` \
- $(LIBGCJ_LD_SYMBOLIC_FUNCTIONS)
+ $(LIBGCJ_LD_SYMBOLIC_FUNCTIONS) $(LIBGCJ_LD_EXPORT_ALL)
libgcj_la_LIBADD = \
classpath/native/fdlibm/libfdlibm.la \
java/lang/Object.lo \
Index: gcc-head/libjava/configure.ac
===================================================================
--- gcc-head.orig/libjava/configure.ac
+++ gcc-head/libjava/configure.ac
@@ -214,6 +214,16 @@ if test -z "$libgcj_ld_symbolic"; then
libgcj_ld_symbolic=$SYMBOLIC_LDFLAGS
fi
+# for windows native targets enforce export of all symbols for shared libgcj.
+libgcj_ld_export_all=
+case "$host" in
+ *mingw*)
+ libgcj_ld_export_all=-Wl,--export-all-symbols
+ ;;
+ *)
+ ;;
+esac
+
LIBGCJ_CFLAGS="${libgcj_cflags}"
LIBGCJ_CXXFLAGS="${libgcj_cxxflags}"
LIBGCJ_JAVAFLAGS="${libgcj_javaflags}"
@@ -221,6 +231,7 @@ LIBGCJ_SUBLIB_LTFLAGS="${libgcj_sublib_l
LIBGCJ_SUBLIB_CORE_EXTRA_DEPS="${libgcj_sublib_core_extra_deps}"
LIBGCJ_LD_SYMBOLIC="${libgcj_ld_symbolic}"
LIBGCJ_LD_SYMBOLIC_FUNCTIONS="${libgcj_ld_symbolic_functions}"
+LIBGCJ_LD_EXPORT_ALL="${libgcj_ld_export_all}"
AC_SUBST(LIBGCJ_CFLAGS)
AC_SUBST(LIBGCJ_CXXFLAGS)
AC_SUBST(LIBGCJ_JAVAFLAGS)
@@ -228,6 +239,7 @@ AC_SUBST(LIBGCJ_SUBLIB_LTFLAGS)
AC_SUBST(LIBGCJ_SUBLIB_CORE_EXTRA_DEPS)
AC_SUBST(LIBGCJ_LD_SYMBOLIC)
AC_SUBST(LIBGCJ_LD_SYMBOLIC_FUNCTIONS)
+AC_SUBST(LIBGCJ_LD_EXPORT_ALL)
# Only use libltdl for non-newlib builds.
if test "x${with_newlib}" = "x" || test "x${with_newlib}" = "xno"; then
@@ -930,6 +942,9 @@ arm*linux*eabi)
*-*-cygwin)
extra_ldflags_libjava=-liconv
;;
+*-*-mingw*)
+ extra_ldflags_libjava=-lws2_32
+ ;;
esac
LIBMATHSPEC=
Index: gcc-head/libjava/gcj/javaprims.h
===================================================================
--- gcc-head.orig/libjava/gcj/javaprims.h
+++ gcc-head/libjava/gcj/javaprims.h
@@ -26,6 +26,15 @@ details. */
#undef FALSE
#define FALSE FALSE
+// JNI calling convention also defined in jni.h */
+#ifndef JNICALL
+ #if (defined (_WIN32) || defined (__WIN32__) || defined (WIN32)) && !defined (_WIN64)
+ #define JNICALL __stdcall
+ #else
+ #define JNICALL
+ #endif
+#endif
+
// To force selection of correct types that will mangle consistently
// across platforms.
extern "Java"
Index: gcc-head/libjava/headers.txt
===================================================================
--- gcc-head.orig/libjava/headers.txt
+++ gcc-head/libjava/headers.txt
@@ -41,26 +41,26 @@ friend jstring (::_Jv_AllocString) (jsiz
class java/lang/reflect/Constructor
prepend jmethodID _Jv_FromReflectedConstructor (java::lang::reflect::Constructor *);
-prepend jobject _Jv_JNI_ToReflectedMethod (_Jv_JNIEnv *, jclass, jmethodID, jboolean);
+prepend jobject JNICALL _Jv_JNI_ToReflectedMethod (_Jv_JNIEnv *, jclass, jmethodID, jboolean);
friend jmethodID (::_Jv_FromReflectedConstructor) (java::lang::reflect::Constructor *);
-friend jobject (::_Jv_JNI_ToReflectedMethod) (_Jv_JNIEnv *, jclass, jmethodID, jboolean);
+friend jobject JNICALL (::_Jv_JNI_ToReflectedMethod) (_Jv_JNIEnv *, jclass, jmethodID, jboolean);
friend class java::lang::Class;
class java/lang/reflect/Field
prepend jfieldID _Jv_FromReflectedField (java::lang::reflect::Field *);
-prepend jobject _Jv_JNI_ToReflectedField (_Jv_JNIEnv*, jclass, jfieldID, jboolean);
+prepend jobject JNICALL _Jv_JNI_ToReflectedField (_Jv_JNIEnv*, jclass, jfieldID, jboolean);
prepend jobject _Jv_getFieldInternal (java::lang::reflect::Field *f, jclass c, jobject o);
friend jfieldID (::_Jv_FromReflectedField) (java::lang::reflect::Field *);
-friend jobject (::_Jv_JNI_ToReflectedField) (_Jv_JNIEnv*, jclass, jfieldID, jboolean);
+friend jobject JNICALL (::_Jv_JNI_ToReflectedField) (_Jv_JNIEnv*, jclass, jfieldID, jboolean);
friend class java::lang::Class;
friend jobject (::_Jv_getFieldInternal) (java::lang::reflect::Field *f, jclass c, jobject o);
class java/lang/reflect/Method
prepend jmethodID _Jv_FromReflectedMethod (java::lang::reflect::Method *);
-prepend jobject _Jv_JNI_ToReflectedMethod (_Jv_JNIEnv *, jclass, jmethodID, jboolean);
+prepend jobject JNICALL _Jv_JNI_ToReflectedMethod (_Jv_JNIEnv *, jclass, jmethodID, jboolean);
prepend ::java::lang::reflect::Method *_Jv_GetReflectedMethod (jclass, _Jv_Utf8Const*, _Jv_Utf8Const*);
friend jmethodID (::_Jv_FromReflectedMethod) (java::lang::reflect::Method *);
-friend jobject (::_Jv_JNI_ToReflectedMethod) (_Jv_JNIEnv *, jclass, jmethodID, jboolean);
+friend jobject JNICALL (::_Jv_JNI_ToReflectedMethod) (_Jv_JNIEnv *, jclass, jmethodID, jboolean);
friend class java::lang::Class;
friend class java::io::ObjectInputStream;
friend java::lang::reflect::Method* ::_Jv_GetReflectedMethod (jclass, _Jv_Utf8Const*, _Jv_Utf8Const*);
Index: gcc-head/libjava/include/jni_md.h
===================================================================
--- gcc-head.orig/libjava/include/jni_md.h
+++ gcc-head/libjava/include/jni_md.h
@@ -65,6 +65,15 @@ typedef struct _Jv_JavaVM JavaVM;
reused between non-nesting JNI calls. */ \
struct _Jv_JNI_LocalFrame *bottom_locals;
+/* JNI calling convention. Also defined in javaprims.h. */
+#ifndef JNICALL
+#if (defined (_WIN32) || defined (__WIN32__) || defined (WIN32)) \
+ && !defined (_WIN64)
+ #define JNICALL __stdcall
+ #else
+ #define JNICALL
+ #endif
+#endif
#else /* __GCJ_JNI_IMPL__ */
@@ -117,14 +126,17 @@ typedef uint16_t jchar;
/* Linkage and calling conventions. */
-#if defined (_WIN32) || defined (__WIN32__) || defined (WIN32)
+#if (defined (_WIN32) || defined (__WIN32__) || defined (WIN32)) \
+ && !defined (_WIN64)
#define JNIIMPORT __declspec(dllimport)
#define JNIEXPORT __declspec(dllexport)
-#define JNICALL __stdcall
+#ifndef JNICALL
+#define JNICALL __stdcall
+#endif
-#else /* !( _WIN32 || __WIN32__ || WIN32) */
+#else /* !( _WIN32 || __WIN32__ || WIN32) || _WIN64 */
#define JNIIMPORT
#if defined(__GNUC__) && __GNUC__ > 3
@@ -133,9 +145,11 @@ typedef uint16_t jchar;
#define JNIEXPORT
#endif
+#ifndef JNICALL
#define JNICALL
+#endif
-#endif /* !( _WIN32 || __WIN32__ || WIN32) */
+#endif /* !( _WIN32 || __WIN32__ || WIN32) || _WIN64 */
/* These defines apply to symbols in libgcj */
#ifdef __GCJ_DLL__
Index: gcc-head/libjava/java/lang/Class.h
===================================================================
--- gcc-head.orig/libjava/java/lang/Class.h
+++ gcc-head/libjava/java/lang/Class.h
@@ -251,10 +251,10 @@ bool _Jv_getInterfaceMethod(jclass, jcla
const _Jv_Utf8Const*,
const _Jv_Utf8Const*);
-jobject _Jv_JNI_ToReflectedField (_Jv_JNIEnv *, jclass, jfieldID,
- jboolean);
-jobject _Jv_JNI_ToReflectedMethod (_Jv_JNIEnv *, jclass, jmethodID,
- jboolean);
+jobject JNICALL _Jv_JNI_ToReflectedField (_Jv_JNIEnv *, jclass, jfieldID,
+ jboolean);
+jobject JNICALL _Jv_JNI_ToReflectedMethod (_Jv_JNIEnv *, jclass, jmethodID,
+ jboolean);
jfieldID _Jv_FromReflectedField (java::lang::reflect::Field *);
jmethodID _Jv_FromReflectedMethod (java::lang::reflect::Method *);
Index: gcc-head/libjava/java/lang/reflect/Constructor.h
===================================================================
--- gcc-head.orig/libjava/java/lang/reflect/Constructor.h
+++ gcc-head/libjava/java/lang/reflect/Constructor.h
@@ -11,7 +11,7 @@
jmethodID _Jv_FromReflectedConstructor (java::lang::reflect::Constructor *);
-jobject _Jv_JNI_ToReflectedMethod (_Jv_JNIEnv *, jclass, jmethodID, jboolean);
+jobject JNICALL _Jv_JNI_ToReflectedMethod (_Jv_JNIEnv *, jclass, jmethodID, jboolean);
class java::lang::reflect::Constructor : public ::java::lang::reflect::AccessibleObject
{
@@ -58,7 +58,7 @@ public:
static ::java::lang::Class class$;
friend jmethodID (::_Jv_FromReflectedConstructor) (java::lang::reflect::Constructor *);
- friend jobject (::_Jv_JNI_ToReflectedMethod) (_Jv_JNIEnv *, jclass, jmethodID, jboolean);
+ friend jobject JNICALL (::_Jv_JNI_ToReflectedMethod) (_Jv_JNIEnv *, jclass, jmethodID, jboolean);
friend class java::lang::Class;
};
Index: gcc-head/libjava/java/lang/reflect/Field.h
===================================================================
--- gcc-head.orig/libjava/java/lang/reflect/Field.h
+++ gcc-head/libjava/java/lang/reflect/Field.h
@@ -11,7 +11,7 @@
jfieldID _Jv_FromReflectedField (java::lang::reflect::Field *);
-jobject _Jv_JNI_ToReflectedField (_Jv_JNIEnv*, jclass, jfieldID, jboolean);
+jobject JNICALL _Jv_JNI_ToReflectedField (_Jv_JNIEnv*, jclass, jfieldID, jboolean);
jobject _Jv_getFieldInternal (java::lang::reflect::Field *f, jclass c, jobject o);
class java::lang::reflect::Field : public ::java::lang::reflect::AccessibleObject
@@ -90,7 +90,7 @@ public:
static ::java::lang::Class class$;
friend jfieldID (::_Jv_FromReflectedField) (java::lang::reflect::Field *);
- friend jobject (::_Jv_JNI_ToReflectedField) (_Jv_JNIEnv*, jclass, jfieldID, jboolean);
+ friend jobject JNICALL (::_Jv_JNI_ToReflectedField) (_Jv_JNIEnv*, jclass, jfieldID, jboolean);
friend class java::lang::Class;
friend jobject (::_Jv_getFieldInternal) (java::lang::reflect::Field *f, jclass c, jobject o);
};
Index: gcc-head/libjava/sysdep/i386/backtrace.h
===================================================================
--- gcc-head.orig/libjava/sysdep/i386/backtrace.h
+++ gcc-head/libjava/sysdep/i386/backtrace.h
@@ -17,7 +17,10 @@ details. */
/* To allow this to link as a DLL. */
#define MAIN_FUNC dll_crt0__FP11per_process
extern "C" int MAIN_FUNC () __declspec(dllimport);
-#else /* !__CYGWIN__ */
+#elif defined (_WIN32)
+#define MAIN_FUNC DllMain
+extern "C" int __stdcall MAIN_FUNC (void *, unsigned long, void *);
+#else /* !__CYGWIN__ && !_WIN32 */
#define MAIN_FUNC main
extern int MAIN_FUNC (int, char **);
#endif /* ?__CYGWIN__ */
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [patch libjava]: Do some fixes for windows native targets
2011-04-06 14:39 ` Kai Tietz
@ 2011-04-08 13:50 ` Tom Tromey
2011-04-08 14:17 ` Kai Tietz
0 siblings, 1 reply; 6+ messages in thread
From: Tom Tromey @ 2011-04-08 13:50 UTC (permalink / raw)
To: Kai Tietz; +Cc: GCC Patches, Java Patches
>>>>> "Kai" == Kai Tietz <ktietz70@googlemail.com> writes:
Kai> I added to headers.txt the changes and regenerate headers. Btw it is
Kai> a bit tricky to enable for libjava the maintainer-mode and then have a
Kai> successful configure for it ...
[...]
Kai> Sorry, found a typo. Updated patch attached.
This is ok. Thanks.
Tom
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [patch libjava]: Do some fixes for windows native targets
2011-04-08 13:50 ` Tom Tromey
@ 2011-04-08 14:17 ` Kai Tietz
0 siblings, 0 replies; 6+ messages in thread
From: Kai Tietz @ 2011-04-08 14:17 UTC (permalink / raw)
To: Tom Tromey; +Cc: GCC Patches, Java Patches
2011/4/8 Tom Tromey <tromey@redhat.com>:
>>>>>> "Kai" == Kai Tietz <ktietz70@googlemail.com> writes:
>
> Kai> I added to headers.txt the changes and regenerate headers. Btw it is
> Kai> a bit tricky to enable for libjava the maintainer-mode and then have a
> Kai> successful configure for it ...
>
> [...]
>
> Kai> Sorry, found a typo. Updated patch attached.
>
> This is ok. Thanks.
>
> Tom
>
Applied at revision 172186.
Kai
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2011-04-08 14:17 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2011-04-05 6:52 [patch libjava]: Do some fixes for windows native targets Kai Tietz
2011-04-05 13:26 ` Tom Tromey
2011-04-06 12:45 ` Kai Tietz
2011-04-06 14:39 ` Kai Tietz
2011-04-08 13:50 ` Tom Tromey
2011-04-08 14:17 ` Kai Tietz
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).