This is the mail archive of the
java-patches@gcc.gnu.org
mailing list for the Java project.
Re: [PATCH,final respin] [4.5 regression] Fix PR42811: java.lang.ExceptionInInitializerError in ecj1 and associated issues.
On 03/20/2010 02:46 PM, Dave Korn wrote:
>> On 02/20/2010 06:36 PM, Dave Korn wrote:
>
>>> Bootstrapped and tested on i686-pc-cygwin; fixes PR42811 and doesn't cause
>>> any further regressions (there are some preexisting fails that this makes no
>>> difference to). OK for head?
>>
>> A couple of things:
>>
>> 1. Bounce the gc changes off gc@napali
>
> The GC changes have now been accepted upstream. During porting them, I
> developed a testcase, which (by your kind permission) I will submit as a
> separate patch shortly after this round of patches is accepted and checked in.
>
>> 2. Is it really necessary to make the main program depend on a symbol
>> in libgcj-noncore when BC compiling? Can't you make the libgcj
>> itself depend on libgcj-noncore?
>
> It turns out that I can, and I can do it without having to hack libtool or
> do anything else unsuitable (IMO) for stage 3. Bootstrapped, and test results
> posted(*), no regressions.
>
> pr42811-final.diff
> libjava/ChangeLog:
>
> * libjava/configure.ac (DLLTOOL): Call AC_CHECK_TOOL.
> (libgcj_sublib_core_extra_deps): New host-dependent configure var.
> (LIBGCJ_SUBLIB_CORE_EXTRA_DEPS): AC_SUBST it.
> * libjava/configure.host (libgcj_sublib_core_extra_deps): Define
> appropriately on Cygwin and MinGW.
> (libgcj_sublib_core_extra_deps): Add libgcj-noncore-dummy import
> stub library on Cygwin and MinGW.
> * libjava/Makefile.am (LIBJAVA_CORE_EXTRA): Import AC_SUBST'd
> LIBGCJ_SUBLIB_CORE_EXTRA_DEPS if building sublibs, else define empty.
> (libgcj_la_DEPENDENCIES): Use it.
> (DLL_VERSION): New makefile macro.
> (libgcj-noncore-dummy.dll.a): New build rule for dummy import stub
> library.
> (libgcj_noncore_la_LIBADD): Trim superfluous convenience libs.
> (AM_MAKEFLAGS): Add DLLTOOL recursive propagation.
> * libjava/libgcj-noncore-dummy.def: New file.
> * libjava/Makefile.in: Regenerate.
> * libjava/include/Makefile.in: Likewise.
> * libjava/testsuite/Makefile.in: Likewise.
> * libjava/configure: Likewise.
> * libjava/gcj/Makefile.in: Likewise.
>
> pr42811-uninit-mem-fix.diff:
> libjava/ChangeLog:
>
> * jvmti.cc (_Jv_GetJVMTIEnv): Avoid use of uninitialised memory.
>
> pr42811-boehm-gc-fixes.diff:
> boehm-gc/ChangeLog:
>
> * include/private/gc_priv.h (struct roots) [CYGWIN32]: Don't
> declare r_next member on Cygwin as on other windows hosts.
> (LOG_RT_SIZE) [CYGWIN32]: Don't define likewise.
> (RT_SIZE) [CYGWIN32]: Likewise.
> (struct _GC_arrays) [CYGWIN32]: Do declare _heap_bases[] member
> likewise.
> (GC_heap_bases) [CYGWIN32]: Do define likewise.
> (struct _SYSTEM_INFO) [CYGWIN32]: Do forward-declare likewise.
> (GC_sysinfo) [CYGWIN32]: Do declare extern likewise.
> (GC_n_heap_bases) [CYGWIN32]: Likewise.
> (GC_is_tmp_root) [CYGWIN32]: Do prototype likewise.
> * include/private/gcconfig.h (GC_win32_get_mem) [CYGWIN32]: Likewise.
> (GET_MEM) [CYGWIN32]: Do define likewise.
> * boehm-gc/ptr_chck.c (GC_is_visible) [CYGWIN32]: Do handle dynamic
> registration likewise.
> * boehm-gc/os_dep.c (GC_setpagesize) [CYGWIN32]: Do define likewise.
> (GC_no_win32_dlls) [CYGWIN32]: Define as constant false, unlike
> other windows hosts.
> (GC_sysinfo) [CYGWIN32]: Define as on other windows hosts.
> (GC_n_heap_bases) [CYGWIN32]: Likewise.
> (GLOBAL_ALLOC_TEST) [CYGWIN32]: Likewise.
> (GC_win32_get_mem) [CYGWIN32]: Likewise, but wrapping GC_unix_get_mem
> rather than GlobalAlloc/VirtualAlloc.
> (GC_win32_free_heap) [CYGWIN32]: Likewise, but wrapping free instead
> of GlobalFree (even though the function body is optimised away).
> * boehm-gc/mark_rts.c (add_roots_to_index) [CYGWIN32]: Define as on
> other windows hosts.
> (GC_add_roots_inner) [CYGWIN32]: Avoid overlapping or adjacent
> intervals likewise.
> (GC_clear_roots) [CYGWIN32]: Clear GC_root_index[] likewise.
> (GC_rebuild_root_index) [CYGWIN32]: Define as on other windows hosts.
> (GC_remove_tmp_roots) [CYGWIN32]: Call it likewise.
> (GC_remove_roots) [CYGWIN32]: Don't define, as on other windows hosts.
> (GC_is_tmp_root) [CYGWIN32]: Define, as on other windows hosts.
> (GC_cond_register_dynamic_libraries) [CYGWIN32]: Handle temporary
> roots and dynamic registration likewise.
> * boehm-gc/dyn_load.c (GC_has_static_roots) [CYGWIN32]: Define as on
> other windows hosts.
> (GC_register_has_static_roots_callback) [CYGWIN32]: Likewise.
> (GC_cond_add_roots) [CYGWIN32]: Likewise.
> (GC_register_main_static_data) [CYGWIN32]: Define to always return
> false, as on MSWINCE
> (HAVE_REGISTER_MAIN_STATIC_DATA) [CYGWIN32]: Define as on other
> windows hosts.
> (GC_warn_fb) [CYGWIN32]: Likewise.
> (GC_disallow_ignore_fb) [CYGWIN32]: Likewise.
> (GC_ignore_fb_mb) [CYGWIN32]: Likewise.
> (GC_ignore_fb) [CYGWIN32]: Likewise.
> (is_frame_buffer) [CYGWIN32]: Likewise.
> (GC_dump_meminfo) [CYGWIN32]: Likewise.
> (GC_wnt) [CYGWIN32]: Define to constant true.
> (GC_register_dynamic_libraries) [CYGWIN32]: Define as on other
> windows hosts.
>
> OK for HEAD?
OK, thanks.
Andrew.