Commit 6a92b6c7 by Dave Korn Committed by Dave Korn

cygming.h (TARGET_USE_JCR_SECTION): Enable.

gcc/ChangeLog

	* config/i386/cygming.h (TARGET_USE_JCR_SECTION): Enable.
	* config/i386/cygwin.h (LIBGCJ_SONAME): Define.
	* config/i386/mingw32.h (LIBGCJ_SONAME): Likewise.

libjava/ChangeLog

	* configure.host (enable_libgcj_sublibs_default): New variable,
	set for Cygwin and MinGW.
	* configure.ac (--enable-libgcj-sublibs): New command-line switch.
	(BUILD_SUBLIBS): New AM_CONDITIONAL relating to it.
	(libgcj_spec_lgcj_override): New variable, define if building sublibs.
	(libgcj_spec_lgcj_bc_override): Likewise for when USE_LIBGCJ_BC.
	(LIBGCJ_SPEC_LGCJ): New variable to abstract "-lgcj" from specs.
	(LIBGCJ_SPEC_LGCJ_BC): Likewise for when USE_LIBGCJ_BC.
	(LIBGCJ_SPEC): Use them.
	* configure: Regenerate.
	* Makefile.am (LOWER_PACKAGE_FILES_LO): New variable.
	(ALL_PACKAGE_SOURCE_FILES_LO): Likewise.
	(NONCORE_PACKAGE_SOURCE_FILES_LO): Likewise.
	(CORE_PACKAGE_SOURCE_FILES_LO): Likewise.
	(toolexeclib_LTLIBRARIES): Add libgcj-noncore.la if building sublibs.
	(libgcj_noncore_la_LIBADD_SUBOBJECTS): New variable.
	(libgcj_la_LIBADD_SUBOBJECTS): Likewise.
	(libgcj_la_LDFLAGS_NOUNDEF): Likewise.
	(libgij_la_LDFLAGS): Add DLL-related options.
	(libgcj_la_LDFLAGS): Use libgcj_la_LDFLAGS_NOUNDEF and
	libgcj_la_LIBADD_SUBOBJECTS.
	(libgcj_la_DEPENDENCIES): Adjust to match.
	(libgcj_noncore_la_SOURCES, libgcj_noncore_la_LDFLAGS,
	libgcj_noncore_la_LIBADD, libgcj_noncore_la_DEPENDENCIES,
	libgcj_noncore_la_LINK): New automake variables for sublibrary.
	(libgcj_tools_la_LDFLAGS): Add DLL-related flags.
	(libgcj_tools_la_LIBADD): New variable.
	(libjvm_la_LDFLAGS): Add DLL-related flags.
	(lib_gnu_awt_xlib_la_LDFLAGS): Likewise.
	(libgcj_bc_la_LDFLAGS): Likewise.
	(libgij_la_DEPENDENCIES): Add dependency on libgcj-noncore.la when
	building sublibs.
	(libgcj_tools_la_DEPENDENCIES, libjvm_la_DEPENDENCIES,
	lib_gnu_awt_xlib_la_DEPENDENCIES, jv_convert_DEPENDENCIES,
	gcj_dbtool_DEPENDENCIES, gc_analyze_DEPENDENCIES, ecjx_DEPENDENCIES):
	Likewise.
	* Makefile.in: Regenerate.
	* sysdep/i386/backtrace.h (MAIN_FUNC): New #define for main function,
	set appropriately for Cygwin on that platform or to "main" elsewhere.
	(fallback_backtrace): Use it to limit stack unwind.

libjava/libltdl/ChangeLog:

	* ltdl.h (LT_SCOPE): Change conditional to avoid breaking
	auto-export during libgcj DLL linking.
	* Makefile.am (libltdl_la_LDFLAGS): Remove -bindir switch.
	* Makefile.in: Regenerate.

From-SVN: r152041
parent 502a1e45
2009-09-22 Dave Korn <dave.korn.cygwin@gmail.com>
* config/i386/cygming.h (TARGET_USE_JCR_SECTION): Enable.
* config/i386/cygwin.h (LIBGCJ_SONAME): Define.
* config/i386/mingw32.h (LIBGCJ_SONAME): Likewise.
2009-09-22 Alexandre Oliva <aoliva@redhat.com>
PR debug/41295
......
......@@ -383,7 +383,7 @@ do { \
/* FIXME: SUPPORTS_WEAK && TARGET_HAVE_NAMED_SECTIONS is true,
but for .jcr section to work we also need crtbegin and crtend
objects. */
#define TARGET_USE_JCR_SECTION 0
#define TARGET_USE_JCR_SECTION 1
/* Decide whether it is safe to use a local alias for a virtual function
when constructing thunks. */
......
......@@ -267,3 +267,7 @@ while (0)
#define LIBGCC_EH_EXTN "-sjlj"
#endif
#define LIBGCC_SONAME "cyggcc_s" LIBGCC_EH_EXTN "-1.dll"
/* We should find a way to not have to update this manually. */
#define LIBGCJ_SONAME "cyggcj" /*LIBGCC_EH_EXTN*/ "-11.dll"
......@@ -221,3 +221,7 @@ __enable_execute_stack (void *addr) \
#define LIBGCC_EH_EXTN "_sjlj"
#endif
#define LIBGCC_SONAME "libgcc_s" LIBGCC_EH_EXTN "-1.dll"
/* We should find a way to not have to update this manually. */
#define LIBGCJ_SONAME "cyggcj" /*LIBGCC_EH_EXTN*/ "-11.dll"
2009-09-22 Dave Korn <dave.korn.cygwin@gmail.com>
* configure.host (enable_libgcj_sublibs_default): New variable,
set for Cygwin and MinGW.
* configure.ac (--enable-libgcj-sublibs): New command-line switch.
(BUILD_SUBLIBS): New AM_CONDITIONAL relating to it.
(libgcj_spec_lgcj_override): New variable, define if building sublibs.
(libgcj_spec_lgcj_bc_override): Likewise for when USE_LIBGCJ_BC.
(LIBGCJ_SPEC_LGCJ): New variable to abstract "-lgcj" from specs.
(LIBGCJ_SPEC_LGCJ_BC): Likewise for when USE_LIBGCJ_BC.
(LIBGCJ_SPEC): Use them.
* configure: Regenerate.
* Makefile.am (LOWER_PACKAGE_FILES_LO): New variable.
(ALL_PACKAGE_SOURCE_FILES_LO): Likewise.
(NONCORE_PACKAGE_SOURCE_FILES_LO): Likewise.
(CORE_PACKAGE_SOURCE_FILES_LO): Likewise.
(toolexeclib_LTLIBRARIES): Add libgcj-noncore.la if building sublibs.
(libgcj_noncore_la_LIBADD_SUBOBJECTS): New variable.
(libgcj_la_LIBADD_SUBOBJECTS): Likewise.
(libgcj_la_LDFLAGS_NOUNDEF): Likewise.
(libgij_la_LDFLAGS): Add DLL-related options.
(libgcj_la_LDFLAGS): Use libgcj_la_LDFLAGS_NOUNDEF and
libgcj_la_LIBADD_SUBOBJECTS.
(libgcj_la_DEPENDENCIES): Adjust to match.
(libgcj_noncore_la_SOURCES, libgcj_noncore_la_LDFLAGS,
libgcj_noncore_la_LIBADD, libgcj_noncore_la_DEPENDENCIES,
libgcj_noncore_la_LINK): New automake variables for sublibrary.
(libgcj_tools_la_LDFLAGS): Add DLL-related flags.
(libgcj_tools_la_LIBADD): New variable.
(libjvm_la_LDFLAGS): Add DLL-related flags.
(lib_gnu_awt_xlib_la_LDFLAGS): Likewise.
(libgcj_bc_la_LDFLAGS): Likewise.
(libgij_la_DEPENDENCIES): Add dependency on libgcj-noncore.la when
building sublibs.
(libgcj_tools_la_DEPENDENCIES, libjvm_la_DEPENDENCIES,
lib_gnu_awt_xlib_la_DEPENDENCIES, jv_convert_DEPENDENCIES,
gcj_dbtool_DEPENDENCIES, gc_analyze_DEPENDENCIES, ecjx_DEPENDENCIES):
Likewise.
* Makefile.in: Regenerate.
* sysdep/i386/backtrace.h (MAIN_FUNC): New #define for main function,
set appropriately for Cygwin on that platform or to "main" elsewhere.
(fallback_backtrace): Use it to limit stack unwind.
2009-09-16 Jonathan Yong <jon_y@users.sourceforge.net>
* gnu/java/security/jce/prng/natVMSecureRandomWin32.cc: Correct
......
......@@ -206,6 +206,7 @@ AC_EXEEXT
# libgcj_cflags - host specific C compiler flags
# libgcj_cxxflags - host specific C++ compiler flags
# libgcj_javaflags - host specific Java compiler flags
# and a number of others; see the list at the start of the file.
libgcj_cflags=
libgcj_cxxflags=
......@@ -237,6 +238,26 @@ fi
AC_CONFIG_HEADERS([include/config.h gcj/libgcj-config.h])
# Possibly build libgcj as many sub-libraries.
AC_ARG_ENABLE(libgcj-sublibs,
AS_HELP_STRING([--enable-libgcj-sublibs],
[build libgcj as many sub-libraries]))
if test -z "$enable_libgcj_sublibs"; then
enable_libgcj_sublibs=$enable_libgcj_sublibs_default
fi
AM_CONDITIONAL(BUILD_SUBLIBS, test "$enable_libgcj_sublibs" = yes)
if test "$enable_libgcj_sublibs" = yes ; then
# In theory we could make do with only one override and simply
# tag "_bc" onto the end of it when we use it to generate the
# spec, but that's an ugly thing to do when there are multiple
# words in the string and you're relying on the ordering to
# append the correct one.
libgcj_spec_lgcj_override="-lgcj-noncore -lgcj"
libgcj_spec_lgcj_bc_override="-lgcj-noncore -lgcj_bc"
fi
# See if the user has requested runtime debugging.
LIBGCJDEBUG="disable"
AC_SUBST(LIBGCJDEBUG)
......@@ -897,6 +918,9 @@ arm*linux*eabi)
LIBSTDCXXSPEC=-lstdc++
LIBGCJTESTSPEC="-L`${PWDCMD-pwd}`/.libs -L`${PWDCMD-pwd}`/../libstdc++-v3/src/.libs -rpath `${PWDCMD-pwd}`/.libs:`${PWDCMD-pwd}`/../libstdc++-v3/src/.libs -lstdc++"
;;
*-*-cygwin)
extra_ldflags_libjava=-liconv
;;
esac
AC_SUBST(extra_ldflags_libjava)
AC_SUBST(extra_gij_ldflags)
......@@ -1075,9 +1099,17 @@ AC_CONFIG_LINKS(sysdep/locks.h:sysdep/$sysdeps_dir/locks.h)
AC_CONFIG_LINKS(sysdep/backtrace.h:$fallback_backtrace_h)
AC_CONFIG_LINKS(sysdep/descriptor.h:$descriptor_h)
LIBGCJ_SPEC="%{s-bc-abi:} -lgcj"
LIBGCJ_SPEC_LGCJ=-lgcj
LIBGCJ_SPEC_LGCJ_BC=-lgcj_bc
if test x"$libgcj_spec_lgcj_override" != x ; then
LIBGCJ_SPEC_LGCJ=$libgcj_spec_lgcj_override
fi
if test x"$libgcj_spec_lgcj_bc_override" != x ; then
LIBGCJ_SPEC_LGCJ_BC=$libgcj_spec_lgcj_bc_override
fi
LIBGCJ_SPEC="%{s-bc-abi:} $LIBGCJ_SPEC_LGCJ"
if test "$use_libgcj_bc" = yes; then
LIBGCJ_SPEC="%{static|static-libgcj|!s-bc-abi:-lgcj;:-lgcj_bc}"
LIBGCJ_SPEC="%{static|static-libgcj|!s-bc-abi:$LIBGCJ_SPEC_LGCJ;:$LIBGCJ_SPEC_LGCJ_BC}"
LIBGCJ_BC_SPEC="%{findirect-dispatch:-fPIC}"
fi
AC_SUBST(LIBGCJ_SPEC)
......
......@@ -23,6 +23,9 @@
# default.
# enable_hash_synchronization_default If hash synchronization should be
# enabled by default.
# enable_libgcj_sublibs_default Whether to build libgcj as a bunch of
# separate shared libraries or in one
# monolithic one.
# sysdeps_dir Directory containing system-dependent headers
# slow_pthread_self The synchronization code should try to avoid
# pthread_self calls by caching thread IDs in a hashtable
......@@ -41,6 +44,7 @@ libgcj_javaflags=
libgcj_interpreter=
enable_java_net_default=yes
enable_hash_synchronization_default=no
enable_libgcj_sublibs_default=no
sysdeps_dir=generic
slow_pthread_self=
can_unwind_signal=no
......@@ -341,6 +345,8 @@ case "${host}" in
fallback_backtrace_h=sysdep/i386/backtrace.h
# We need a frame pointer on Windows, so override BACKTRACESPEC
BACKTRACESPEC=
# Win32 DLLs are limited to 64k exported symbols each.
enable_libgcj_sublibs_default=yes
;;
esac
......
2009-09-22 Dave Korn <dave.korn.cygwin@gmail.com>
* ltdl.h (LT_SCOPE): Change conditional to avoid breaking
auto-export during libgcj DLL linking.
* Makefile.am (libltdl_la_LDFLAGS): Remove -bindir switch.
* Makefile.in: Regenerate.
2009-08-24 Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
* configure.ac (AC_PREREQ): Bump to 2.64. Remove FIXME.
......
......@@ -22,7 +22,7 @@ endif
CLEANFILES = libltdl.la libltdlc.la
libltdl_la_SOURCES = ltdl.c
libltdl_la_LDFLAGS = -no-undefined -bindir "$(bindir)" -version-info 4:1:1
libltdl_la_LDFLAGS = -no-undefined -version-info 4:1:1
libltdl_la_LIBADD = $(LIBADD_DL)
libltdlc_la_SOURCES = ltdl.c
......
......@@ -249,7 +249,7 @@ INCLUDES = $(GCINCS)
@CONVENIENCE_LTDL_TRUE@noinst_LTLIBRARIES = libltdlc.la
CLEANFILES = libltdl.la libltdlc.la
libltdl_la_SOURCES = ltdl.c
libltdl_la_LDFLAGS = -no-undefined -bindir "$(bindir)" -version-info 4:1:1
libltdl_la_LDFLAGS = -no-undefined -version-info 4:1:1
libltdl_la_LIBADD = $(LIBADD_DL)
libltdlc_la_SOURCES = ltdl.c
libltdlc_la_LIBADD = $(LIBADD_DL)
......
......@@ -128,7 +128,7 @@ LT_BEGIN_C_DECLS
ridiculous implementation of data symbol exporting. */
#ifndef LT_SCOPE
# ifdef __WINDOWS__
# ifdef DLL_EXPORT /* defined by libtool (if required) */
# ifdef LIBLTDL_DLL_EXPORT /* don't define or ld disables auto-export. */
# define LT_SCOPE __declspec(dllexport)
# endif
# ifdef LIBLTDL_DLL_IMPORT /* define if linking with this dll */
......
......@@ -13,7 +13,14 @@ details. */
#include <java-stack.h>
extern int main (int, char **);
#ifdef __CYGWIN__
/* To allow this to link as a DLL. */
#define MAIN_FUNC dll_crt0__FP11per_process
extern "C" int MAIN_FUNC () __declspec(dllimport);
#else /* !__CYGWIN__ */
#define MAIN_FUNC main
extern int MAIN_FUNC (int, char **);
#endif /* ?__CYGWIN__ */
/* The context used to keep track of our position while unwinding through
the call stack. */
......@@ -104,7 +111,7 @@ fallback_backtrace (_Unwind_Trace_Fn trace_fn, _Jv_UnwindState *state)
const char **, bool))_Jv_RunMain;
if (ctx.meth_addr == (_Jv_uintptr_t)jv_runmain
|| ctx.meth_addr == (_Jv_uintptr_t)_Jv_ThreadStart
|| (ctx.meth_addr - (_Jv_uintptr_t)main) < 16)
|| (ctx.meth_addr - (_Jv_uintptr_t)MAIN_FUNC) < 16)
break;
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment