* [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).