Commit 22a4778a by Rainer Orth Committed by Rainer Orth

configure.ac (ANONVERSCRIPT): Handle sun style.

	* configure.ac (ANONVERSCRIPT): Handle sun style.
	Define ANONVERSCRIPT_GNU, ANONVERSCRIPT_SUN automake conditionals.
	* configure: Regenerate.

	* Makefile.am [ANONVERSCRIPT]: Protect GNU section with
	ANONVERSCRIPT_GNU.
	Introduce per-library $(lib)_la_version_arg, $(lib)_la_version_dep
	variables.
	[ANONVERSCRIPT_GNU] (version_arg): Default ld arg for version map.
	(version_dep): Likewise for dependency.
	Use them to set the per-library variables.
	[!ANONVERSCRIPT]: Provide them vor the unversioned case.
	[ANONVERSCRIPT_SUN]: Handle Sun symbol versioning.
	(libgcj_la_DEPENDENCIES): Unconditionally use
	$(libgcj_la_version_dep).
	(libgcj_la_LINK): Add $(libgcj_la_version_arg).
	(libgcj_noncore_la_DEPENDENCIES): Unconditionally use
	$(libgcj_la_version_dep).
	(libgcj_tools_la_LIBADD): Move -lm ...
	(libgcj_tools_la_LDFLAGS): ... here.
	(libgcj_tools_la_DEPENDENCIES): Add
	$(libgcj_tools_la_version_dep).
	(libgcj_tools_la_LINK): Add $(libgcj_tools_la_version_arg).
	(lib_gnu_awt_xlib_la_DEPENDENCIES): Add
	$(lib_gnu_awt_xlib_la_version_dep).
	(lib_gnu_awt_xlib_la_LINK): Add
	$(lib_gnu_awt_xlib_la_version_arg).
	(libgcj_bc_la_DEPENDENCIES): Add $(libgcj_bc_la_version_dep).
	(libgcj_bc_la_LINK): $(libgcj_bc_la_version_arg).
	[ANONVERSCRIPT && ANONVERSCRIPT_SUN] (%.ver-sun): New pattern rule.
	* Makefile.in: Regenerate.

	* libgcj.ver: Reformat.

From-SVN: r161843
parent 6d28b933
2010-07-05 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
* configure.ac (ANONVERSCRIPT): Handle sun style.
Define ANONVERSCRIPT_GNU, ANONVERSCRIPT_SUN automake conditionals.
* configure: Regenerate.
* Makefile.am [ANONVERSCRIPT]: Protect GNU section with
ANONVERSCRIPT_GNU.
Introduce per-library $(lib)_la_version_arg, $(lib)_la_version_dep
variables.
[ANONVERSCRIPT_GNU] (version_arg): Default ld arg for version map.
(version_dep): Likewise for dependency.
Use them to set the per-library variables.
[!ANONVERSCRIPT]: Provide them vor the unversioned case.
[ANONVERSCRIPT_SUN]: Handle Sun symbol versioning.
(libgcj_la_DEPENDENCIES): Unconditionally use
$(libgcj_la_version_dep).
(libgcj_la_LINK): Add $(libgcj_la_version_arg).
(libgcj_noncore_la_DEPENDENCIES): Unconditionally use
$(libgcj_la_version_dep).
(libgcj_tools_la_LIBADD): Move -lm ...
(libgcj_tools_la_LDFLAGS): ... here.
(libgcj_tools_la_DEPENDENCIES): Add
$(libgcj_tools_la_version_dep).
(libgcj_tools_la_LINK): Add $(libgcj_tools_la_version_arg).
(lib_gnu_awt_xlib_la_DEPENDENCIES): Add
$(lib_gnu_awt_xlib_la_version_dep).
(lib_gnu_awt_xlib_la_LINK): Add
$(lib_gnu_awt_xlib_la_version_arg).
(libgcj_bc_la_DEPENDENCIES): Add $(libgcj_bc_la_version_dep).
(libgcj_bc_la_LINK): $(libgcj_bc_la_version_arg).
[ANONVERSCRIPT && ANONVERSCRIPT_SUN] (%.ver-sun): New pattern rule.
* Makefile.in: Regenerate.
* libgcj.ver: Reformat.
2010-06-10 Peter O'Gorman <peter@pogma.com>
* configure.ac: Set SYSTEMSPEC so that -allow_stack_execute is not
......
......@@ -291,7 +291,45 @@ extra_ldflags_libjava = @extra_ldflags_libjava@
extra_ldflags = @extra_ldflags@
if ANONVERSCRIPT
extra_ldflags_libjava += -Wl,--version-script=$(srcdir)/libgcj.ver
if ANONVERSCRIPT_GNU
version_arg = -Wl,--version-script=$(srcdir)/libgcj.ver
libgcj_la_version_arg = $(version_arg)
libgcj_tools_la_version_arg = $(version_arg)
lib_gnu_awt_xlib_la_version_arg = $(version_arg)
libgcj_bc_la_version_arg = $(version_arg)
version_dep = $(srcdir)/libgcj.ver
libgcj_la_version_dep = $(version_dep)
libgcj_tools_la_version_dep = $(version_dep)
lib_gnu_awt_xlib_la_version_dep = $(version_dep)
libgcj_bc_la_version_dep = $(version_dep)
endif
if ANONVERSCRIPT_SUN
libgcj_la_version_arg = -Wl,-M,libgcj.ver-sun
libgcj_tools_la_version_arg = -Wl,-M,libgcj_tools.ver-sun
lib_gnu_awt_xlib_la_version_arg = -Wl,-M,lib_gnu_awt_xlib.ver-sun
libgcj_bc_la_version_arg = -Wl,-M,libgcj_bc.ver-sun
libgcj_la_version_dep = libgcj.ver-sun
libgcj_tools_la_version_dep = libgcj_tools.ver-sun
lib_gnu_awt_xlib_la_version_dep = lib_gnu_awt_xlib.ver-sun
libgcj_bc_la_version_dep = libgcj_bc.ver-sun
# The pattern rule necessary to build the *.ver-sun mapfiles is at the end
# of the file, see below.
endif
else
version_arg =
libgcj_la_version_arg = $(version_arg)
libgcj_tools_la_version_arg = $(version_arg)
lib_gnu_awt_xlib_la_version_arg = $(version_arg)
libgcj_bc_la_version_arg = $(version_arg)
version_dep =
libgcj_la_version_dep = $(version_dep)
libgcj_tools_la_version_dep = $(version_dep)
lib_gnu_awt_xlib_la_version_dep = $(version_dep)
libgcj_bc_la_version_dep = $(version_dep)
endif
LTLDFLAGS = $(shell $(top_srcdir)/../libtool-ldflags $(LDFLAGS))
......@@ -463,11 +501,9 @@ libgcj_la_DEPENDENCIES = libgcj-$(gcc_version).jar \
java/process-$(PLATFORM).lo \
$(ALL_PACKAGE_SOURCE_FILES_LO) \
$(LIBLTDL) $(libgcj_la_LIBADD) \
$(LIBJAVA_CORE_EXTRA)
if ANONVERSCRIPT
libgcj_la_DEPENDENCIES += $(srcdir)/libgcj.ver
endif
libgcj_la_LINK = $(LIBLINK) $(libgcj_la_LDFLAGS)
$(LIBJAVA_CORE_EXTRA) \
$(libgcj_la_version_dep)
libgcj_la_LINK = $(LIBLINK) $(libgcj_la_LDFLAGS) $(libgcj_la_version_arg)
## A hack to make sure the various gcj-related macros, like
## LTGCJCOMPILE, are defined by automake. This is never actually
......@@ -490,10 +526,7 @@ libgcj_noncore_la_SOURCES =
libgcj_noncore_la_LDFLAGS = $(libgcj_la_LDFLAGS)
libgcj_noncore_la_LIBADD = $(libgcj_noncore_la_LIBADD_SUBOBJECTS) libgcj.la
libgcj_noncore_la_DEPENDENCIES = libgcj-$(gcc_version).jar $(LIBLTDL) \
$(libgcj_noncore_la_LIBADD) libgcj.la
if ANONVERSCRIPT
libgcj_noncore_la_DEPENDENCIES += $(srcdir)/libgcj.ver
endif
$(libgcj_noncore_la_LIBADD) libgcj.la $(libgcj_la_version_dep)
libgcj_noncore_la_LINK = $(libgcj_la_LINK)
endif # BUILD_SUBLIBS
......@@ -509,13 +542,15 @@ libgcj_tools_la_GCJFLAGS = $(AM_GCJFLAGS) -findirect-dispatch \
-fsource-filename=$(here)/classpath/tools/all-classes.lst
libgcj_tools_la_LDFLAGS = -rpath $(toolexeclibdir) \
-version-info `grep -v '^\#' $(srcdir)/libtool-version` \
$(LIBGCJ_LD_SYMBOLIC_FUNCTIONS) $(LIBJAVA_LDFLAGS_NOUNDEF)
libgcj_tools_la_LIBADD = libgcj.la -lm
libgcj_tools_la_DEPENDENCIES = libgcj.la libgcj.spec
$(LIBGCJ_LD_SYMBOLIC_FUNCTIONS) $(LIBJAVA_LDFLAGS_NOUNDEF) -lm
libgcj_tools_la_LIBADD = libgcj.la
libgcj_tools_la_DEPENDENCIES = libgcj.la libgcj.spec \
$(libgcj_tools_la_version_dep)
if BUILD_SUBLIBS
libgcj_tools_la_DEPENDENCIES += libgcj-noncore.la
endif
libgcj_tools_la_LINK = $(LIBLINK) $(libgcj_tools_la_LDFLAGS)
libgcj_tools_la_LINK = $(LIBLINK) $(libgcj_tools_la_LDFLAGS) \
$(libgcj_tools_la_version_arg)
## libjvm.so
libjvm_la_SOURCES = jni-libjvm.cc
......@@ -543,6 +578,7 @@ lib_gnu_awt_xlib_la_SOURCES = $(xlib_nat_source_files)
lib_gnu_awt_xlib_la_LIBADD = gnu/awt/xlib.lo gnu/gcj/xlib.lo
lib_gnu_awt_xlib_la_DEPENDENCIES = libgcj-$(gcc_version).jar \
libgcj.la libgcj.spec \
$(lib_gnu_awt_xlib_la_version_dep) \
$(lib_gnu_awt_xlib_la_LIBADD)
if BUILD_SUBLIBS
lib_gnu_awt_xlib_la_DEPENDENCIES += libgcj-noncore.la
......@@ -558,7 +594,8 @@ lib_gnu_awt_xlib_la_LDFLAGS = ../libstdc++-v3/src/libstdc++.la \
@X_PRE_LIBS@ @X_LIBS@ -lX11 @X_EXTRA_LIBS@ \
-rpath $(toolexeclibdir) $(LIBJAVA_LDFLAGS_NOUNDEF) \
-version-info `grep -v '^\#' $(srcdir)/libtool-version` $(LIBGCJ_LD_SYMBOLIC)
lib_gnu_awt_xlib_la_LINK = $(LIBLINK) $(lib_gnu_awt_xlib_la_LDFLAGS)
lib_gnu_awt_xlib_la_LINK = $(LIBLINK) $(lib_gnu_awt_xlib_la_LDFLAGS) \
$(lib_gnu_awt_xlib_la_version_arg)
## Support for libgcj_bc: dummy shared library.
##
......@@ -567,8 +604,9 @@ lib_gnu_awt_xlib_la_LINK = $(LIBLINK) $(lib_gnu_awt_xlib_la_LDFLAGS)
libgcj_bc_la_SOURCES = libgcj_bc.c
libgcj_bc_la_LDFLAGS = -rpath $(toolexeclibdir) -no-static -version-info 1:0:0 \
$(LIBGCJ_LD_SYMBOLIC_FUNCTIONS) $(LIBJAVA_LDFLAGS_NOUNDEF)
libgcj_bc_la_DEPENDENCIES = libgcj.la
libgcj_bc_la_LINK = $(LIBLINK) $(libgcj_bc_la_LDFLAGS)
libgcj_bc_la_DEPENDENCIES = libgcj.la $(libgcj_bc_la_version_dep)
libgcj_bc_la_LINK = $(LIBLINK) $(libgcj_bc_la_LDFLAGS) \
$(libgcj_bc_la_version_arg)
## This is specific to Linux/{Free,Net,Open}BSD/Hurd and perhaps few others.
## USE_LIBGCJ_BC shouldn't be set on other targets.
libgcj_bc_dummy_LINK = $(CC) -L$(here)/.libs $(CFLAGS) $(LDFLAGS) -shared \
......@@ -1574,3 +1612,22 @@ distclean-multi:
$(MULTICLEAN) $(AM_MAKEFLAGS) DO=distclean multi-clean
maintainer-clean-multi:
$(MULTICLEAN) $(AM_MAKEFLAGS) DO=maintainer-clean multi-clean
if ANONVERSCRIPT
if ANONVERSCRIPT_SUN
# This must be at the end of the Makefile, otherwise .SECONDEXPANSION
# causes expansion of filenames with $ in their names, which breaks the build.
# .SECONDEXPANSION is necessary to allow the use of automatic variables ($@
# in this case) in the requisites of pattern rules.
.SECONDEXPANSION:
%.ver-sun : $(srcdir)/libgcj.ver \
$(top_srcdir)/../contrib/make_sunver.pl \
$$($$(basename $$@)_la_OBJECTS) $$($$(basename $$@)_la_LIBADD)
perl $(top_srcdir)/../contrib/make_sunver.pl \
$(srcdir)/libgcj.ver \
`echo $($(basename $@)_la_OBJECTS) $($(basename $@)_la_LIBADD) | \
sed 's,\([^/ ]*\)\.l\([ao]\),.libs/\1.\2,g'` \
> $@ || (rm -f $@ ; exit 1)
endif
endif
......@@ -632,6 +632,10 @@ python_mod_dir
here
LD_FINISH_STATIC_SPEC
LD_START_STATIC_SPEC
ANONVERSCRIPT_SUN_FALSE
ANONVERSCRIPT_SUN_TRUE
ANONVERSCRIPT_GNU_FALSE
ANONVERSCRIPT_GNU_TRUE
ANONVERSCRIPT_FALSE
ANONVERSCRIPT_TRUE
SYSDEP_SOURCES
......@@ -13345,7 +13349,7 @@ else
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
lt_status=$lt_dlunknown
cat > conftest.$ac_ext <<_LT_EOF
#line 13348 "configure"
#line 13352 "configure"
#include "confdefs.h"
#if HAVE_DLFCN_H
......@@ -13451,7 +13455,7 @@ else
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
lt_status=$lt_dlunknown
cat > conftest.$ac_ext <<_LT_EOF
#line 13454 "configure"
#line 13458 "configure"
#include "confdefs.h"
#if HAVE_DLFCN_H
......@@ -19430,7 +19434,7 @@ if test "${enable_sjlj_exceptions+set}" = set; then :
enableval=$enable_sjlj_exceptions; :
else
cat > conftest.$ac_ext << EOF
#line 19433 "configure"
#line 19437 "configure"
struct S { ~S(); };
void bar();
void foo()
......@@ -24380,7 +24384,7 @@ rm -f core conftest.err conftest.$ac_objext \
CFLAGS="$chktls_save_CFLAGS"
if test "X$thread_CFLAGS" != Xfailed; then
CFLAGS="$thread_CFLAGS $chktls_save_CFLAGS"
if test "$cross_compiling" = yes; then :
if test "$cross_compiling" = yes; then :
{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
as_fn_error "cannot run test program while cross compiling
......@@ -24488,7 +24492,8 @@ if test "${libjava_cv_anon_version_script+set}" = set; then :
else
save_CFLAGS="$CFLAGS"; save_LDFLAGS="$LDFLAGS"
libjava_cv_anon_version_script=no
CFLAGS="$CFLAGS -fPIC"; LDFLAGS="$LDFLAGS -shared -Wl,--version-script,conftest.map"
CFLAGS="$CFLAGS -fPIC";
LDFLAGS="$LDFLAGS -shared -Wl,--version-script,conftest.map"
echo '{ global: globalsymb*; local: *; };' > conftest.map
if test x$gcc_no_link = xyes; then
as_fn_error "Link tests are not allowed after GCC_NO_EXECUTABLES." "$LINENO" 5
......@@ -24505,16 +24510,45 @@ main ()
}
_ACEOF
if ac_fn_c_try_link "$LINENO"; then :
libjava_cv_anon_version_script=yes
libjava_cv_anon_version_script=gnu
fi
rm -f core conftest.err conftest.$ac_objext \
conftest$ac_exeext conftest.$ac_ext
if test x$libjava_cv_anon_version_script = xno; then
case "$target_os" in
solaris2*)
LDFLAGS="$save_LDFLAGS"
LDFLAGS="$LDFLAGS -shared -Wl,-M,conftest.map"
# Sun ld doesn't understand wildcards here.
echo '{ global: globalsymbol; local: *; };' > conftest.map
if test x$gcc_no_link = xyes; then
as_fn_error "Link tests are not allowed after GCC_NO_EXECUTABLES." "$LINENO" 5
fi
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
void globalsymbol (void) {} void localsymbol (void) {}
int
main ()
{
;
return 0;
}
_ACEOF
if ac_fn_c_try_link "$LINENO"; then :
libjava_cv_anon_version_script=sun
fi
rm -f core conftest.err conftest.$ac_objext \
conftest$ac_exeext conftest.$ac_ext
;;
esac
fi
CFLAGS="$save_CFLAGS"; LDFLAGS="$save_LDFLAGS"
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libjava_cv_anon_version_script" >&5
$as_echo "$libjava_cv_anon_version_script" >&6; }
if test "$libjava_cv_anon_version_script" = yes; then
if test "$libjava_cv_anon_version_script" != no; then
ANONVERSCRIPT_TRUE=
ANONVERSCRIPT_FALSE='#'
else
......@@ -24522,6 +24556,22 @@ else
ANONVERSCRIPT_FALSE=
fi
if test "$libjava_cv_anon_version_script" = gnu; then
ANONVERSCRIPT_GNU_TRUE=
ANONVERSCRIPT_GNU_FALSE='#'
else
ANONVERSCRIPT_GNU_TRUE='#'
ANONVERSCRIPT_GNU_FALSE=
fi
if test "$libjava_cv_anon_version_script" = sun; then
ANONVERSCRIPT_SUN_TRUE=
ANONVERSCRIPT_SUN_FALSE='#'
else
ANONVERSCRIPT_SUN_TRUE='#'
ANONVERSCRIPT_SUN_FALSE=
fi
# Check if linker supports static linking on a per library basis
LD_START_STATIC_SPEC=
......@@ -25061,6 +25111,14 @@ if test -z "${ANONVERSCRIPT_TRUE}" && test -z "${ANONVERSCRIPT_FALSE}"; then
as_fn_error "conditional \"ANONVERSCRIPT\" was never defined.
Usually this means the macro was only invoked conditionally." "$LINENO" 5
fi
if test -z "${ANONVERSCRIPT_GNU_TRUE}" && test -z "${ANONVERSCRIPT_GNU_FALSE}"; then
as_fn_error "conditional \"ANONVERSCRIPT_GNU\" was never defined.
Usually this means the macro was only invoked conditionally." "$LINENO" 5
fi
if test -z "${ANONVERSCRIPT_SUN_TRUE}" && test -z "${ANONVERSCRIPT_SUN_FALSE}"; then
as_fn_error "conditional \"ANONVERSCRIPT_SUN\" was never defined.
Usually this means the macro was only invoked conditionally." "$LINENO" 5
fi
if test -z "${INSTALL_AOT_RPM_TRUE}" && test -z "${INSTALL_AOT_RPM_FALSE}"; then
as_fn_error "conditional \"INSTALL_AOT_RPM\" was never defined.
Usually this means the macro was only invoked conditionally." "$LINENO" 5
......
......@@ -1767,13 +1767,28 @@ AC_CACHE_CHECK([whether ld supports anonymous version scripts],
[libjava_cv_anon_version_script],
[save_CFLAGS="$CFLAGS"; save_LDFLAGS="$LDFLAGS"
libjava_cv_anon_version_script=no
CFLAGS="$CFLAGS -fPIC"; LDFLAGS="$LDFLAGS -shared -Wl,--version-script,conftest.map"
CFLAGS="$CFLAGS -fPIC";
LDFLAGS="$LDFLAGS -shared -Wl,--version-script,conftest.map"
echo '{ global: globalsymb*; local: *; };' > conftest.map
AC_TRY_LINK(void globalsymbol (void) {} void localsymbol (void) {},,
[libjava_cv_anon_version_script=yes], [])
[libjava_cv_anon_version_script=gnu], [])
if test x$libjava_cv_anon_version_script = xno; then
case "$target_os" in
solaris2*)
LDFLAGS="$save_LDFLAGS"
LDFLAGS="$LDFLAGS -shared -Wl,-M,conftest.map"
# Sun ld doesn't understand wildcards here.
echo '{ global: globalsymbol; local: *; };' > conftest.map
AC_TRY_LINK(void globalsymbol (void) {} void localsymbol (void) {},,
[libjava_cv_anon_version_script=sun], [])
;;
esac
fi
CFLAGS="$save_CFLAGS"; LDFLAGS="$save_LDFLAGS"
])
AM_CONDITIONAL(ANONVERSCRIPT, test "$libjava_cv_anon_version_script" = yes)
AM_CONDITIONAL(ANONVERSCRIPT, test "$libjava_cv_anon_version_script" != no)
AM_CONDITIONAL(ANONVERSCRIPT_GNU, test "$libjava_cv_anon_version_script" = gnu)
AM_CONDITIONAL(ANONVERSCRIPT_SUN, test "$libjava_cv_anon_version_script" = sun)
# Check if linker supports static linking on a per library basis
LD_START_STATIC_SPEC=
......
......@@ -2,6 +2,12 @@
# symbols in libgcj.so.
{
global: Jv*; _Jv_*; __gcj_personality_v0; __gcj_personality_sj0; _Z*;
local: *;
global:
Jv*;
_Jv_*;
__gcj_personality_v0;
__gcj_personality_sj0;
_Z*;
local:
*;
};
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