This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Re: PATCH: Build shared libraries with -Bsymbolic-functions
On Fri, Jan 12, 2007 at 06:38:56AM -0800, H. J. Lu wrote:
> On Fri, Jan 12, 2007 at 08:57:42AM +0100, Paolo Bonzini wrote:
> >
> > >libjava will use -Bsymbolic on Linux, which is more aggresive than
> > >-Bsymbol-functions. It will bind global data references locally in
> > >additon to global function references. My patch will keep -Bsymbolic
> > >for libjava if it is set by libjava/configure.host.
> > >
> > >Here is an updated patch.
> >
> > The configury logic is fine by me, but please wait for approval at least
> > from the libjava and libstdc++ maintainers since I don't understand
> > fully the consequences of the -Bsymbolic stuff. Could it be considered
> > an ABI change, in that programs previously overriding some symbols will
> > break? (Sorry if the question is dumb).
>
> My change should allow programs to override functions which are
> overridable as specified in language standards. That is why I build
> libstdc++.so with --dynamic-list-cpp-new so that programs can override
> C++ operator new/delete. Programs depending on overriding function
> symbols, which aren't overridable in language standards, are broken.
> In theory, you can have a huge .o file containing all library
> functions which aren't overridable in language standard. You
> won't be able to override any of those functions when that .o file
> is linked in statically.
>
> Since I used -Bsymbolic-functions, it has no effect on data symbols.
>
I extended -Bsymbolic-functions to libffi, libjava, libmudflap,
libssp and libgcc. There are no regressions:
http://gcc.gnu.org/ml/gcc-testresults/2007-01/msg00511.html
http://gcc.gnu.org/ml/gcc-testresults/2007-01/msg00510.html
http://gcc.gnu.org/ml/gcc-testresults/2007-01/msg00509.html
If we apply -Bsymbolic-functions to all shared libraries on a system,
it will improve application startup time and overall runtime
performance.
H.J.
----
config/
2007-01-12 H.J. Lu <hongjiu.lu@intel.com>
* ld-symbolic.m4: New.
libffi/
2007-01-12 H.J. Lu <hongjiu.lu@intel.com>
* Makefile.am (ACLOCAL_AMFLAGS): Add -I ../config.
(libffi_la_LDFLAGS): Add $(extra_ldflags_libffi)
* Makefile.in: Regenerated.
* configure.ac: Use ACX_PROG_LD_GNU_SYMBOLIC. Set
extra_ldflags_libffi to $SYMBOLIC_LDFLAGS. Substitute
extra_ldflags_libffi.
* configure: Regenerated.
* aclocal.m4: Likewise.
libgcc/
2007-01-12 H.J. Lu <hongjiu.lu@intel.com>
* Makefile.in (extra_ldflags_libgcc): New.
(SHLIB_LINK): Add $(extra_ldflags_libgcc).
* configure.ac: Include ../config/lib-ld.m4 and
../config/ld-symbolic.m4. Usde ACX_PROG_LD_GNU_SYMBOLIC. Set
extra_ldflags_libgcc to $SYMBOLIC_LDFLAGS. Substitute
extra_ldflags_libgcc.
* configure: Regenerated.
libgfortran/
2007-01-12 H.J. Lu <hongjiu.lu@intel.com>
* configure.ac: Use ACX_PROG_LD_GNU_SYMBOLIC. Set
extra_ldflags_libgfortran to $SYMBOLIC_LDFLAGS if it isn't set.
* configure: Regenerated.
* aclocal.m4: Likewise.
* Makefile.in: Likewise.
libgomp/
2007-01-10 H.J. Lu <hongjiu.lu@intel.com>
* configure.ac: Use ACX_PROG_LD_GNU_SYMBOLIC. Add
$SYMBOLIC_LDFLAGS to OPT_LDFLAGS.
* configure: Regenerated.
* aclocal.m4: Likewise.
* Makefile.in: Likewise.
libjava/
2007-01-12 H.J. Lu <hongjiu.lu@intel.com>
* Makefile.am (libgcj_la_LDFLAGS): Add
$(LIBGCJ_LD_SYMBOLIC_FUNCTIONS).
(libgcj_tools_la_LDFLAGS): Likewise.
(libgcj_bc_la_LDFLAGS): Likewise.
* Makefile.in: Regenerated.
* configure.ac: Use ACX_PROG_LD_GNU_SYMBOLIC. Set
LIBGCJ_LD_SYMBOLIC_FUNCTIONS to $SYMBOLIC_LDFLAGS. Set
libgcj_ld_symbolic to $SYMBOLIC_LDFLAGS if it isn't set.
Substitute LIBGCJ_LD_SYMBOLIC_FUNCTIONS.
* configure: Regenerated.
* aclocal.m4: Likewise.
* gcj/Makefile.in: Likewise.
* include/Makefile.in: Likewise.
* testsuite/Makefile.in: Likewise.
libmudflap/
2007-01-12 H.J. Lu <hongjiu.lu@intel.com>
* Makefile.am (libmudflap_la_LDFLAGS): Add
$(extra_ldflags_libmudflap).
(libmudflapth_la_LDFLAGS): Likewise.
* Makefile.in: Regenerated.
* configure.ac: Use ACX_PROG_LD_GNU_SYMBOLIC. Set
extra_ldflags_libmudflap to $SYMBOLIC_LDFLAGS. Substitute
extra_ldflags_libmudflap.
* configure: Regenerated.
* aclocal.m4: Likewise.
libobjc/
2007-01-12 H.J. Lu <hongjiu.lu@intel.com>
* configure.ac: Use ACX_PROG_LD_GNU_SYMBOLIC. Set
extra_ldflags_libobjc to $SYMBOLIC_LDFLAGS if it isn't set.
* configure: Regenerated.
* aclocal.m4: Likewise.
libssp/
2007-01-12 H.J. Lu <hongjiu.lu@intel.com>
* Makefile.am (libssp_la_LDFLAGS): Add $(extra_ldflags_libssp).
* Makefile.in: Regenerated.
* configure.ac: Use ACX_PROG_LD_GNU_SYMBOLIC. Set
extra_ldflags_libssp to $SYMBOLIC_LDFLAGS. Substitute
extra_ldflags_libssp.
* configure: Regenerated.
* aclocal.m4: Likewise.
libstdc++-v3/
2007-01-12 H.J. Lu <hongjiu.lu@intel.com>
* configure.ac: Use ACX_PROG_LD_GNU_DYNAMIC_LIST_CPP_NEW. Add
$DYNAMIC_LIST_CPP_NEW_LDFLAGS to OPT_LDFLAGS.
* configure: Regenerated.
* aclocal.m4: Likewise.
* Makefile.in: Likewise.
* include/Makefile.in: Likewise.
* libmath/Makefile.in: Likewise.
* libsupc++/Makefile.in: Likewise.
* po/Makefile.in: Likewise.
* src/Makefile.in: Likewise.
* testsuite/Makefile.in: Likewise.
--- gcc/config/ld-symbolic.m4.symbolic 2007-01-12 07:45:01.000000000 -0800
+++ gcc/config/ld-symbolic.m4 2007-01-12 07:45:01.000000000 -0800
@@ -0,0 +1,45 @@
+dnl Copyright (C) 2007 Free Software Foundation, Inc.
+dnl This file is free software, distributed under the terms of the GNU
+dnl General Public License. As a special exception to the GNU General
+dnl Public License, this file may be distributed as part of a program
+dnl that contains a configuration script generated by Autoconf, under
+dnl the same distribution terms as the rest of that program.
+
+dnl Set SYMBOLIC_LDFLAGS to -Bsymbolic-functions for GNU linker if it
+dnl is supported.
+AC_DEFUN([ACX_PROG_LD_GNU_SYMBOLIC],
+[AC_CACHE_CHECK([if the GNU linker ($LD) supports -Bsymbolic-functions],
+acl_cv_prog_gnu_ld_symbolic, [
+acl_cv_prog_gnu_ld_symbolic=no
+AC_REQUIRE([AC_LIB_PROG_LD_GNU])
+if test x"$with_gnu_ld" = x"yes"; then
+ if $LD --help 2>&1 </dev/null | grep Bsymbolic-functions 1>&5; then
+ acl_cv_prog_gnu_ld_symbolic=yes
+ fi
+fi])
+if test x"$acl_cv_prog_gnu_ld_symbolic" = x"yes"; then
+ SYMBOLIC_LDFLAGS="-Wl,-Bsymbolic-functions"
+else
+ SYMBOLIC_LDFLAGS=''
+fi
+])
+
+dnl Set DYNAMIC_LIST_CPP_NEW_LDFLAGS to --dynamic-list-cpp-new for GNU
+dnl linker if it is supported.
+AC_DEFUN([ACX_PROG_LD_GNU_DYNAMIC_LIST_CPP_NEW],
+[AC_CACHE_CHECK([if the GNU linker ($LD) supports --dynamic-list-cpp-new],
+acl_cv_prog_gnu_ld_dynamic_list_cpp_new, [
+acl_cv_prog_gnu_ld_dynamic_list_cpp_new=no
+AC_REQUIRE([ACX_PROG_LD_GNU_SYMBOLIC])
+if test x"$with_gnu_ld" = x"yes" -a \
+ x"$acl_cv_prog_gnu_ld_symbolic" = x"yes"; then
+ if $LD --help 2>&1 </dev/null | grep dynamic-list-cpp-new 1>&5; then
+ acl_cv_prog_gnu_ld_dynamic_list_cpp_new=yes
+ fi
+fi])
+if test x"$acl_cv_prog_gnu_ld_dynamic_list_cpp_new" = x"yes"; then
+ DYNAMIC_LIST_CPP_NEW_LDFLAGS="$SYMBOLIC_LDFLAGS -Wl,--dynamic-list-cpp-new"
+else
+ DYNAMIC_LIST_CPP_NEW_LDFLAGS=''
+fi
+])
--- gcc/libffi/Makefile.am.symbolic 2006-12-14 09:01:37.000000000 -0800
+++ gcc/libffi/Makefile.am 2007-01-12 07:45:01.000000000 -0800
@@ -1,7 +1,7 @@
## Process this with automake to create Makefile.in
AUTOMAKE_OPTIONS = foreign subdir-objects
-ACLOCAL_AMFLAGS = -I ..
+ACLOCAL_AMFLAGS = -I .. -I ../config
SUBDIRS = include testsuite
@@ -157,7 +157,7 @@ nodist_libffi_convenience_la_SOURCES = $
AM_CFLAGS = -Wall -g -fexceptions
-libffi_la_LDFLAGS = -version-info `grep -v '^\#' $(srcdir)/libtool-version`
+libffi_la_LDFLAGS = -version-info `grep -v '^\#' $(srcdir)/libtool-version` $(extra_ldflags_libffi)
AM_CPPFLAGS = -I. -I$(top_srcdir)/include -Iinclude -I$(top_srcdir)/src
AM_CCASFLAGS = $(AM_CPPFLAGS)
--- gcc/libffi/Makefile.in.symbolic 2006-12-14 09:01:37.000000000 -0800
+++ gcc/libffi/Makefile.in 2007-01-12 07:45:01.000000000 -0800
@@ -69,7 +69,11 @@ DIST_COMMON = README $(am__configure_dep
$(top_srcdir)/configure ChangeLog
subdir = .
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/../libtool.m4 \
+am__aclocal_m4_deps = $(top_srcdir)/../config/depstand.m4 \
+ $(top_srcdir)/../config/ld-symbolic.m4 \
+ $(top_srcdir)/../config/lead-dot.m4 \
+ $(top_srcdir)/../config/lib-ld.m4 \
+ $(top_srcdir)/../config/multi.m4 $(top_srcdir)/../libtool.m4 \
$(top_srcdir)/acinclude.m4 $(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
@@ -318,6 +322,7 @@ build_os = @build_os@
build_vendor = @build_vendor@
datadir = @datadir@
exec_prefix = @exec_prefix@
+extra_ldflags_libffi = @extra_ldflags_libffi@
host = @host@
host_alias = @host_alias@
host_cpu = @host_cpu@
@@ -346,7 +351,7 @@ target_vendor = @target_vendor@
toolexecdir = @toolexecdir@
toolexeclibdir = @toolexeclibdir@
AUTOMAKE_OPTIONS = foreign subdir-objects
-ACLOCAL_AMFLAGS = -I ..
+ACLOCAL_AMFLAGS = -I .. -I ../config
SUBDIRS = include testsuite
EXTRA_DIST = LICENSE ChangeLog.v1 \
src/alpha/ffi.c src/alpha/osf.S src/alpha/ffitarget.h \
@@ -427,7 +432,7 @@ nodist_libffi_la_SOURCES = $(am__append_
libffi_convenience_la_SOURCES = $(libffi_la_SOURCES)
nodist_libffi_convenience_la_SOURCES = $(nodist_libffi_la_SOURCES)
AM_CFLAGS = -Wall -g -fexceptions
-libffi_la_LDFLAGS = -version-info `grep -v '^\#' $(srcdir)/libtool-version`
+libffi_la_LDFLAGS = -version-info `grep -v '^\#' $(srcdir)/libtool-version` $(extra_ldflags_libffi)
AM_CPPFLAGS = -I. -I$(top_srcdir)/include -Iinclude -I$(top_srcdir)/src
AM_CCASFLAGS = $(AM_CPPFLAGS)
all: fficonfig.h
@@ -1059,7 +1064,7 @@ distclean-tags:
distdir: $(DISTFILES)
$(am__remove_distdir)
mkdir $(distdir)
- $(mkdir_p) $(distdir)/.. $(distdir)/include $(distdir)/src/alpha $(distdir)/src/arm $(distdir)/src/cris $(distdir)/src/frv $(distdir)/src/m32r $(distdir)/src/m68k $(distdir)/src/mips $(distdir)/src/pa $(distdir)/src/powerpc $(distdir)/src/s390 $(distdir)/src/sh $(distdir)/src/sh64 $(distdir)/src/sparc $(distdir)/src/x86
+ $(mkdir_p) $(distdir)/.. $(distdir)/../config $(distdir)/include $(distdir)/src/alpha $(distdir)/src/arm $(distdir)/src/cris $(distdir)/src/frv $(distdir)/src/m32r $(distdir)/src/m68k $(distdir)/src/mips $(distdir)/src/pa $(distdir)/src/powerpc $(distdir)/src/s390 $(distdir)/src/sh $(distdir)/src/sh64 $(distdir)/src/sparc $(distdir)/src/x86
@srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
list='$(DISTFILES)'; for file in $$list; do \
--- gcc/libffi/configure.ac.symbolic 2006-12-14 09:01:37.000000000 -0800
+++ gcc/libffi/configure.ac 2007-01-12 07:45:01.000000000 -0800
@@ -276,6 +276,10 @@ esac
AC_SUBST(toolexecdir)
AC_SUBST(toolexeclibdir)
+ACX_PROG_LD_GNU_SYMBOLIC
+extra_ldflags_libffi=$SYMBOLIC_LDFLAGS
+AC_SUBST(extra_ldflags_libffi)
+
if test "${multilib}" = "yes"; then
multilib_arg="--enable-multilib"
else
--- gcc/libgcc/Makefile.in.symbolic 2007-01-06 07:57:28.000000000 -0800
+++ gcc/libgcc/Makefile.in 2007-01-12 09:08:29.000000000 -0800
@@ -38,6 +38,8 @@ SHELL = @SHELL@
enable_shared = @enable_shared@
decimal_float = @decimal_float@
+extra_ldflags_libgcc = @extra_ldflags_libgcc@
+
host_noncanonical = @host_noncanonical@
# List of extra object files that should be compiled for this target machine.
@@ -224,6 +226,8 @@ include $(srcdir)/empty.mk $(tmake_file)
# - we know how to build them
ifeq ($(SHLIB_LINK),)
enable_shared := no
+else
+ SHLIB_LINK := $(subst $(GCC_FOR_TARGET),$(GCC_FOR_TARGET) $(extra_ldflags_libgcc), $(SHLIB_LINK))
endif
ifeq ($(enable_shared),yes)
--- gcc/libgcc/configure.ac.symbolic 2007-01-06 07:57:28.000000000 -0800
+++ gcc/libgcc/configure.ac 2007-01-12 07:52:14.000000000 -0800
@@ -2,6 +2,8 @@ dnl Process this file with autoconf to p
sinclude(../config/acx.m4)
sinclude(../config/no-executables.m4)
+sinclude(../config/lib-ld.m4)
+sinclude(../config/ld-symbolic.m4)
AC_PREREQ(2.59)
AC_INIT([GNU C Runtime Library], 1.0,,[libgcc])
@@ -136,6 +138,11 @@ AC_SUBST(tmake_file)
AC_SUBST(extra_parts)
AC_SUBST(asm_hidden_op)
+# Substitute GNU linker -Bsymbolic-functions
+ACX_PROG_LD_GNU_SYMBOLIC
+extra_ldflags_libgcc=$SYMBOLIC_LDFLAGS
+AC_SUBST(extra_ldflags_libgcc)
+
# We need multilib support.
AC_CONFIG_FILES([Makefile])
AC_CONFIG_COMMANDS([default],
--- gcc/libgfortran/Makefile.in.symbolic 2007-01-12 07:42:03.000000000 -0800
+++ gcc/libgfortran/Makefile.in 2007-01-12 07:45:02.000000000 -0800
@@ -47,8 +47,10 @@ subdir = .
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/../config/lead-dot.m4 \
$(top_srcdir)/../config/multi.m4 \
- $(top_srcdir)/../config/stdint.m4 $(top_srcdir)/acinclude.m4 \
- $(top_srcdir)/../config/acx.m4 \
+ $(top_srcdir)/../config/stdint.m4 \
+ $(top_srcdir)/../config/lib-ld.m4 \
+ $(top_srcdir)/../config/ld-symbolic.m4 \
+ $(top_srcdir)/acinclude.m4 $(top_srcdir)/../config/acx.m4 \
$(top_srcdir)/../config/no-executables.m4 \
$(top_srcdir)/../libtool.m4 $(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
--- gcc/libgfortran/configure.ac.symbolic 2006-12-07 17:07:06.000000000 -0800
+++ gcc/libgfortran/configure.ac 2007-01-12 07:45:02.000000000 -0800
@@ -143,12 +143,17 @@ AC_SUBST(enable_static)
FC="$GFORTRAN"
AC_PROG_FC(gfortran)
+ACX_PROG_LD_GNU_SYMBOLIC
+
# extra LD Flags which are required for targets
case "${host}" in
*-darwin*)
# Darwin needs -single_module when linking libgfortran
extra_ldflags_libgfortran=-Wl,-single_module
;;
+ *)
+ extra_ldflags_libgfortran=$SYMBOLIC_LDFLAGS
+ ;;
esac
AC_SUBST(extra_ldflags_libgfortran)
--- gcc/libgomp/Makefile.in.symbolic 2007-01-12 07:42:03.000000000 -0800
+++ gcc/libgomp/Makefile.in 2007-01-12 07:45:02.000000000 -0800
@@ -53,8 +53,11 @@ am__aclocal_m4_deps = $(top_srcdir)/../c
$(top_srcdir)/../config/lead-dot.m4 \
$(top_srcdir)/../config/multi.m4 \
$(top_srcdir)/../config/stdint.m4 \
- $(top_srcdir)/../config/tls.m4 $(top_srcdir)/acinclude.m4 \
- $(top_srcdir)/../libtool.m4 $(top_srcdir)/configure.ac
+ $(top_srcdir)/../config/tls.m4 \
+ $(top_srcdir)/../config/lib-ld.m4 \
+ $(top_srcdir)/../config/ld-symbolic.m4 \
+ $(top_srcdir)/acinclude.m4 $(top_srcdir)/../libtool.m4 \
+ $(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \
@@ -163,7 +166,6 @@ FC = @FC@
FCFLAGS = @FCFLAGS@
GENINSRC_FALSE = @GENINSRC_FALSE@
GENINSRC_TRUE = @GENINSRC_TRUE@
-GREP = @GREP@
INSTALL_DATA = @INSTALL_DATA@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
@@ -206,8 +208,11 @@ USE_FORTRAN_TRUE = @USE_FORTRAN_TRUE@
VERSION = @VERSION@
XCFLAGS = @XCFLAGS@
XLDFLAGS = @XLDFLAGS@
+ac_ct_AR = @ac_ct_AR@
ac_ct_CC = @ac_ct_CC@
ac_ct_FC = @ac_ct_FC@
+ac_ct_RANLIB = @ac_ct_RANLIB@
+ac_ct_STRIP = @ac_ct_STRIP@
am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
am__include = @am__include@
@@ -223,9 +228,6 @@ build_os = @build_os@
build_vendor = @build_vendor@
config_path = @config_path@
datadir = @datadir@
-datarootdir = @datarootdir@
-docdir = @docdir@
-dvidir = @dvidir@
enable_shared = @enable_shared@
enable_static = @enable_static@
exec_prefix = @exec_prefix@
@@ -234,7 +236,6 @@ host_alias = @host_alias@
host_cpu = @host_cpu@
host_os = @host_os@
host_vendor = @host_vendor@
-htmldir = @htmldir@
includedir = @includedir@
infodir = @infodir@
install_sh = @install_sh@
@@ -242,16 +243,13 @@ libdir = @libdir@
libexecdir = @libexecdir@
libtool_VERSION = @libtool_VERSION@
link_gomp = @link_gomp@
-localedir = @localedir@
localstatedir = @localstatedir@
mandir = @mandir@
mkdir_p = @mkdir_p@
multi_basedir = @multi_basedir@
oldincludedir = @oldincludedir@
-pdfdir = @pdfdir@
prefix = @prefix@
program_transform_name = @program_transform_name@
-psdir = @psdir@
sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
sysconfdir = @sysconfdir@
--- gcc/libgomp/configure.ac.symbolic 2006-12-26 09:04:53.000000000 -0800
+++ gcc/libgomp/configure.ac 2007-01-12 07:45:02.000000000 -0800
@@ -331,6 +331,9 @@ AC_SUBST(OMP_LOCK_KIND)
AC_SUBST(OMP_NEST_LOCK_KIND)
CFLAGS="$save_CFLAGS"
+ACX_PROG_LD_GNU_SYMBOLIC
+OPT_LDFLAGS="$OPT_LDFLAGS $SYMBOLIC_LDFLAGS"
+
AC_CONFIG_FILES(omp.h omp_lib.h omp_lib.f90 libgomp_f.h)
AC_CONFIG_FILES(Makefile testsuite/Makefile libgomp.spec)
AC_OUTPUT
--- gcc/libjava/Makefile.am.symbolic 2007-01-11 09:29:13.000000000 -0800
+++ gcc/libjava/Makefile.am 2007-01-12 07:45:02.000000000 -0800
@@ -230,7 +230,8 @@ xlib_nat_files = $(xlib_nat_source_files
## The mysterious backslash in the grep pattern is consumed by make.
libgcj_la_LDFLAGS = -rpath $(toolexeclibdir) $(THREADLDFLAGS) $(THREADLIBS) \
$(LIBLTDL) $(SYS_ZLIBS) \
- -version-info `grep -v '^\#' $(srcdir)/libtool-version`
+ -version-info `grep -v '^\#' $(srcdir)/libtool-version` \
+ $(LIBGCJ_LD_SYMBOLIC_FUNCTIONS)
libgcj_la_LIBADD = \
classpath/native/fdlibm/libfdlibm.la \
java/lang/Object.lo \
@@ -256,7 +257,8 @@ EXTRA_libgcj_la_SOURCES = java/lang/Obje
libgcj_tools_la_SOURCES = classpath/tools/tools.zip
libgcj_tools_la_GCJFLAGS = $(AM_GCJFLAGS) -findirect-dispatch -fno-indirect-classes -fsource-filename=$(here)/classpath/tools/all-classes.lst
libgcj_tools_la_LDFLAGS = -rpath $(toolexeclibdir) \
- -version-info `grep -v '^\#' $(srcdir)/libtool-version`
+ -version-info `grep -v '^\#' $(srcdir)/libtool-version` \
+ $(LIBGCJ_LD_SYMBOLIC_FUNCTIONS)
libgcj_tools_la_DEPENDENCIES = libgcj.la libgcj.spec
libgcj_tools_la_LINK = $(LIBLINK)
@@ -299,7 +301,8 @@ lib_gnu_awt_xlib_la_LINK = $(LIBLINK)
##
## This lets us have one soname in BC objects and another in C++ ABI objects.
libgcj_bc_la_SOURCES = libgcj_bc.c
-libgcj_bc_la_LDFLAGS = -rpath $(toolexeclibdir) -no-static -version-info 1:0:0
+libgcj_bc_la_LDFLAGS = -rpath $(toolexeclibdir) -no-static -version-info 1:0:0 \
+ $(LIBGCJ_LD_SYMBOLIC_FUNCTIONS)
libgcj_bc_la_LIBADD = libgcj.la
libgcj_bc_la_DEPENDENCIES = libgcj.la
libgcj_bc_la_LINK = $(LIBLINK)
--- gcc/libjava/Makefile.in.symbolic 2007-01-12 07:42:03.000000000 -0800
+++ gcc/libjava/Makefile.in 2007-01-12 07:45:02.000000000 -0800
@@ -83,6 +83,7 @@ am__aclocal_m4_deps = $(top_srcdir)/../c
$(top_srcdir)/../config/gxx-include-dir.m4 \
$(top_srcdir)/../config/iconv.m4 \
$(top_srcdir)/../config/lcmessage.m4 \
+ $(top_srcdir)/../config/ld-symbolic.m4 \
$(top_srcdir)/../config/lead-dot.m4 \
$(top_srcdir)/../config/lib-ld.m4 \
$(top_srcdir)/../config/lib-link.m4 \
@@ -619,6 +620,7 @@ LIBGCJ_CFLAGS = @LIBGCJ_CFLAGS@
LIBGCJ_CXXFLAGS = @LIBGCJ_CXXFLAGS@
LIBGCJ_JAVAFLAGS = @LIBGCJ_JAVAFLAGS@
LIBGCJ_LD_SYMBOLIC = @LIBGCJ_LD_SYMBOLIC@
+LIBGCJ_LD_SYMBOLIC_FUNCTIONS = @LIBGCJ_LD_SYMBOLIC_FUNCTIONS@
LIBGCJ_SPEC = @LIBGCJ_SPEC@
LIBICONV = @LIBICONV@
LIBLTDL = @LIBLTDL@
@@ -872,7 +874,8 @@ xlib_nat_files = $(xlib_nat_source_files
# certain linuxthread functions get linked:
libgcj_la_LDFLAGS = -rpath $(toolexeclibdir) $(THREADLDFLAGS) $(THREADLIBS) \
$(LIBLTDL) $(SYS_ZLIBS) \
- -version-info `grep -v '^\#' $(srcdir)/libtool-version`
+ -version-info `grep -v '^\#' $(srcdir)/libtool-version` \
+ $(LIBGCJ_LD_SYMBOLIC_FUNCTIONS)
libgcj_la_LIBADD = \
classpath/native/fdlibm/libfdlibm.la \
@@ -896,7 +899,8 @@ EXTRA_libgcj_la_SOURCES = java/lang/Obje
libgcj_tools_la_SOURCES = classpath/tools/tools.zip
libgcj_tools_la_GCJFLAGS = $(AM_GCJFLAGS) -findirect-dispatch -fno-indirect-classes -fsource-filename=$(here)/classpath/tools/all-classes.lst
libgcj_tools_la_LDFLAGS = -rpath $(toolexeclibdir) \
- -version-info `grep -v '^\#' $(srcdir)/libtool-version`
+ -version-info `grep -v '^\#' $(srcdir)/libtool-version` \
+ $(LIBGCJ_LD_SYMBOLIC_FUNCTIONS)
libgcj_tools_la_DEPENDENCIES = libgcj.la libgcj.spec
libgcj_tools_la_LINK = $(LIBLINK)
@@ -923,7 +927,9 @@ lib_gnu_awt_xlib_la_LDFLAGS = ../libstdc
lib_gnu_awt_xlib_la_LINK = $(LIBLINK)
libgcj_bc_la_SOURCES = libgcj_bc.c
-libgcj_bc_la_LDFLAGS = -rpath $(toolexeclibdir) -no-static -version-info 1:0:0
+libgcj_bc_la_LDFLAGS = -rpath $(toolexeclibdir) -no-static -version-info 1:0:0 \
+ $(LIBGCJ_LD_SYMBOLIC_FUNCTIONS)
+
libgcj_bc_la_LIBADD = libgcj.la
libgcj_bc_la_DEPENDENCIES = libgcj.la
libgcj_bc_la_LINK = $(LIBLINK)
--- gcc/libjava/configure.ac.symbolic 2007-01-09 16:20:44.000000000 -0800
+++ gcc/libjava/configure.ac 2007-01-12 07:45:02.000000000 -0800
@@ -173,14 +173,22 @@ libgcj_javaflags=
. ${srcdir}/configure.host
+ACX_PROG_LD_GNU_SYMBOLIC
+libgcj_ld_symbolic_functions=$SYMBOLIC_LDFLAGS
+if test -z "$libgcj_ld_symbolic"; then
+ libgcj_ld_symbolic=$SYMBOLIC_LDFLAGS
+fi
+
LIBGCJ_CFLAGS="${libgcj_cflags}"
LIBGCJ_CXXFLAGS="${libgcj_cxxflags}"
LIBGCJ_JAVAFLAGS="${libgcj_javaflags}"
LIBGCJ_LD_SYMBOLIC="${libgcj_ld_symbolic}"
+LIBGCJ_LD_SYMBOLIC_FUNCTIONS="${libgcj_ld_symbolic_functions}"
AC_SUBST(LIBGCJ_CFLAGS)
AC_SUBST(LIBGCJ_CXXFLAGS)
AC_SUBST(LIBGCJ_JAVAFLAGS)
AC_SUBST(LIBGCJ_LD_SYMBOLIC)
+AC_SUBST(LIBGCJ_LD_SYMBOLIC_FUNCTIONS)
# Only use libltdl for non-newlib builds.
if test "x${with_newlib}" = "x" || test "x${with_newlib}" = "xno"; then
--- gcc/libjava/gcj/Makefile.in.symbolic 2007-01-09 16:20:35.000000000 -0800
+++ gcc/libjava/gcj/Makefile.in 2007-01-12 07:45:02.000000000 -0800
@@ -55,6 +55,7 @@ am__aclocal_m4_deps = $(top_srcdir)/../c
$(top_srcdir)/../config/no-executables.m4 \
$(top_srcdir)/../config/tls.m4 \
$(top_srcdir)/../config/unwind_ipinfo.m4 \
+ $(top_srcdir)/../config/ld-symbolic.m4 \
$(top_srcdir)/../libtool.m4 $(top_srcdir)/mingwld.m4 \
$(top_srcdir)/pkg.m4 $(top_srcdir)/shlibpath.m4 \
$(top_srcdir)/configure.ac
--- gcc/libjava/include/Makefile.in.symbolic 2007-01-09 16:20:20.000000000 -0800
+++ gcc/libjava/include/Makefile.in 2007-01-12 07:45:02.000000000 -0800
@@ -54,6 +54,7 @@ am__aclocal_m4_deps = $(top_srcdir)/../c
$(top_srcdir)/../config/no-executables.m4 \
$(top_srcdir)/../config/tls.m4 \
$(top_srcdir)/../config/unwind_ipinfo.m4 \
+ $(top_srcdir)/../config/ld-symbolic.m4 \
$(top_srcdir)/../libtool.m4 $(top_srcdir)/mingwld.m4 \
$(top_srcdir)/pkg.m4 $(top_srcdir)/shlibpath.m4 \
$(top_srcdir)/configure.ac
--- gcc/libjava/testsuite/Makefile.in.symbolic 2007-01-09 16:20:23.000000000 -0800
+++ gcc/libjava/testsuite/Makefile.in 2007-01-12 07:45:02.000000000 -0800
@@ -52,6 +52,7 @@ am__aclocal_m4_deps = $(top_srcdir)/../c
$(top_srcdir)/../config/no-executables.m4 \
$(top_srcdir)/../config/tls.m4 \
$(top_srcdir)/../config/unwind_ipinfo.m4 \
+ $(top_srcdir)/../config/ld-symbolic.m4 \
$(top_srcdir)/../libtool.m4 $(top_srcdir)/mingwld.m4 \
$(top_srcdir)/pkg.m4 $(top_srcdir)/shlibpath.m4 \
$(top_srcdir)/configure.ac
--- gcc/libmudflap/Makefile.am.symbolic 2006-11-18 06:27:15.000000000 -0800
+++ gcc/libmudflap/Makefile.am 2007-01-12 07:45:02.000000000 -0800
@@ -34,7 +34,7 @@ libmudflap_la_SOURCES = \
mf-hooks2.c
libmudflap_la_LIBADD =
libmudflap_la_DEPENDENCIES = $(libmudflap_la_LIBADD)
-libmudflap_la_LDFLAGS = -version-info `grep -v '^\#' $(srcdir)/libtool-version`
+libmudflap_la_LDFLAGS = -version-info `grep -v '^\#' $(srcdir)/libtool-version` $(extra_ldflags_libmudflap)
clean-local:
rm -f pth/*.o pth/*.lo
@@ -59,7 +59,7 @@ libmudflapth_la_LIBADD = \
pth/mf-hooks2.lo \
pth/mf-hooks3.lo
libmudflapth_la_DEPENDENCIES = $(libmudflapth_la_LIBADD)
-libmudflapth_la_LDFLAGS = -version-info `grep -v '^\#' $(srcdir)/libtool-version`
+libmudflapth_la_LDFLAGS = -version-info `grep -v '^\#' $(srcdir)/libtool-version` $(extra_ldflags_libmudflap)
# XXX hack alert
--- gcc/libmudflap/Makefile.in.symbolic 2006-11-18 06:27:15.000000000 -0800
+++ gcc/libmudflap/Makefile.in 2007-01-12 07:45:02.000000000 -0800
@@ -50,7 +50,10 @@ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/../config/acx.m4 \
$(top_srcdir)/../config/depstand.m4 \
$(top_srcdir)/../config/enable.m4 \
+ $(top_srcdir)/../config/ld-symbolic.m4 \
$(top_srcdir)/../config/lead-dot.m4 \
+ $(top_srcdir)/../config/lib-ld.m4 \
+ $(top_srcdir)/../config/multi.m4 \
$(top_srcdir)/../config/tls.m4 $(top_srcdir)/acinclude.m4 \
$(top_srcdir)/../libtool.m4 $(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
@@ -192,6 +195,7 @@ datadir = @datadir@
enable_shared = @enable_shared@
enable_static = @enable_static@
exec_prefix = @exec_prefix@
+extra_ldflags_libmudflap = @extra_ldflags_libmudflap@
host = @host@
host_alias = @host_alias@
host_cpu = @host_cpu@
@@ -241,7 +245,7 @@ libmudflap_la_SOURCES = \
libmudflap_la_LIBADD =
libmudflap_la_DEPENDENCIES = $(libmudflap_la_LIBADD)
-libmudflap_la_LDFLAGS = -version-info `grep -v '^\#' $(srcdir)/libtool-version`
+libmudflap_la_LDFLAGS = -version-info `grep -v '^\#' $(srcdir)/libtool-version` $(extra_ldflags_libmudflap)
libmudflapth_la_SOURCES =
libmudflapth_la_LIBADD = \
pth/mf-runtime.lo \
@@ -251,7 +255,7 @@ libmudflapth_la_LIBADD = \
pth/mf-hooks3.lo
libmudflapth_la_DEPENDENCIES = $(libmudflapth_la_LIBADD)
-libmudflapth_la_LDFLAGS = -version-info `grep -v '^\#' $(srcdir)/libtool-version`
+libmudflapth_la_LDFLAGS = -version-info `grep -v '^\#' $(srcdir)/libtool-version` $(extra_ldflags_libmudflap)
# XXX hack alert
# From libffi/Makefile.am
--- gcc/libmudflap/configure.ac.symbolic 2006-11-18 06:27:15.000000000 -0800
+++ gcc/libmudflap/configure.ac 2007-01-12 07:45:02.000000000 -0800
@@ -256,6 +256,9 @@ fi
AC_DEFINE_UNQUOTED([ENTRY_POINT], [$mudflap_cv_entry_point],
[Define to the name of the symbol used for the entry point.])
+ACX_PROG_LD_GNU_SYMBOLIC
+extra_ldflags_libmudflap=$SYMBOLIC_LDFLAGS
+AC_SUBST(extra_ldflags_libmudflap)
if test ${multilib} = yes; then
multilib_arg="--enable-multilib"
--- gcc/libobjc/configure.ac.symbolic 2006-11-18 06:27:04.000000000 -0800
+++ gcc/libobjc/configure.ac 2007-01-12 07:45:02.000000000 -0800
@@ -156,12 +156,17 @@ m4_define([_AC_ARG_VAR_PRECIOUS],[])
AC_PROG_CC
m4_rename([real_PRECIOUS],[_AC_ARG_VAR_PRECIOUS])
+ACX_PROG_LD_GNU_SYMBOLIC
+
# extra LD Flags which are required for targets
case "${host}" in
*-darwin*)
# Darwin needs -single_module when linking libobjc
extra_ldflags_libobjc=-Wl,-single_module
;;
+ *)
+ extra_ldflags_libobjc=$SYMBOLIC_LDFLAGS
+ ;;
esac
AC_SUBST(extra_ldflags_libobjc)
--- gcc/libssp/Makefile.am.symbolic 2006-11-18 06:27:24.000000000 -0800
+++ gcc/libssp/Makefile.am 2007-01-12 07:45:02.000000000 -0800
@@ -35,7 +35,7 @@ libssp_la_SOURCES = \
libssp_la_LIBADD =
libssp_la_DEPENDENCIES = $(version_dep) $(libssp_la_LIBADD)
libssp_la_LDFLAGS = -version-info `grep -v '^\#' $(srcdir)/libtool-version` \
- $(version_arg)
+ $(version_arg) $(extra_ldflags_libssp)
libssp_nonshared_la_SOURCES = \
ssp-local.c
--- gcc/libssp/Makefile.in.symbolic 2006-11-18 06:27:24.000000000 -0800
+++ gcc/libssp/Makefile.in 2007-01-12 07:45:02.000000000 -0800
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.9.5 from Makefile.am.
+# Makefile.in generated by automake 1.9.6 from Makefile.am.
# @configure_input@
# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -15,8 +15,6 @@
@SET_MAKE@
-SOURCES = $(libssp_la_SOURCES) $(libssp_nonshared_la_SOURCES)
-
srcdir = @srcdir@
top_srcdir = @top_srcdir@
VPATH = @srcdir@
@@ -52,7 +50,10 @@ subdir = .
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/../config/acx.m4 \
$(top_srcdir)/../config/depstand.m4 \
+ $(top_srcdir)/../config/ld-symbolic.m4 \
$(top_srcdir)/../config/lead-dot.m4 \
+ $(top_srcdir)/../config/lib-ld.m4 \
+ $(top_srcdir)/../config/multi.m4 \
$(top_srcdir)/../config/no-executables.m4 \
$(top_srcdir)/../libtool.m4 $(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
@@ -182,6 +183,7 @@ datadir = @datadir@
enable_shared = @enable_shared@
enable_static = @enable_static@
exec_prefix = @exec_prefix@
+extra_ldflags_libssp = @extra_ldflags_libssp@
host = @host@
host_alias = @host_alias@
host_cpu = @host_cpu@
@@ -234,7 +236,7 @@ libssp_la_SOURCES = \
libssp_la_LIBADD =
libssp_la_DEPENDENCIES = $(version_dep) $(libssp_la_LIBADD)
libssp_la_LDFLAGS = -version-info `grep -v '^\#' $(srcdir)/libtool-version` \
- $(version_arg)
+ $(version_arg) $(extra_ldflags_libssp)
libssp_nonshared_la_SOURCES = \
ssp-local.c
--- gcc/libssp/configure.ac.symbolic 2006-11-18 06:27:24.000000000 -0800
+++ gcc/libssp/configure.ac 2007-01-12 07:45:02.000000000 -0800
@@ -164,6 +164,10 @@ esac
AC_SUBST(toolexecdir)
AC_SUBST(toolexeclibdir)
+ACX_PROG_LD_GNU_SYMBOLIC
+extra_ldflags_libssp=$SYMBOLIC_LDFLAGS
+AC_SUBST(extra_ldflags_libssp)
+
if test ${multilib} = yes; then
multilib_arg="--enable-multilib"
else
--- gcc/libstdc++-v3/Makefile.in.symbolic 2006-11-18 06:27:00.000000000 -0800
+++ gcc/libstdc++-v3/Makefile.in 2007-01-12 07:45:02.000000000 -0800
@@ -50,6 +50,8 @@ am__aclocal_m4_deps = $(top_srcdir)/../c
$(top_srcdir)/../config/multi.m4 \
$(top_srcdir)/../config/no-executables.m4 \
$(top_srcdir)/../config/unwind_ipinfo.m4 \
+ $(top_srcdir)/../config/lib-ld.m4 \
+ $(top_srcdir)/../config/ld-symbolic.m4 \
$(top_srcdir)/../libtool.m4 $(top_srcdir)/crossconfig.m4 \
$(top_srcdir)/linkage.m4 $(top_srcdir)/acinclude.m4 \
$(top_srcdir)/../config/tls.m4 $(top_srcdir)/configure.ac
--- gcc/libstdc++-v3/configure.ac.symbolic 2006-11-18 06:27:00.000000000 -0800
+++ gcc/libstdc++-v3/configure.ac 2007-01-12 07:45:02.000000000 -0800
@@ -403,5 +403,8 @@ _EOF
SUBDIRS="$SUBDIRS"
])
+ACX_PROG_LD_GNU_DYNAMIC_LIST_CPP_NEW
+OPT_LDFLAGS="$OPT_LDFLAGS $DYNAMIC_LIST_CPP_NEW_LDFLAGS"
+
dnl And this actually makes things happen:
AC_OUTPUT
--- gcc/libstdc++-v3/include/Makefile.in.symbolic 2006-12-07 17:07:03.000000000 -0800
+++ gcc/libstdc++-v3/include/Makefile.in 2007-01-12 07:45:02.000000000 -0800
@@ -45,6 +45,8 @@ am__aclocal_m4_deps = $(top_srcdir)/../c
$(top_srcdir)/../config/multi.m4 \
$(top_srcdir)/../config/no-executables.m4 \
$(top_srcdir)/../config/unwind_ipinfo.m4 \
+ $(top_srcdir)/../config/lib-ld.m4 \
+ $(top_srcdir)/../config/ld-symbolic.m4 \
$(top_srcdir)/../libtool.m4 $(top_srcdir)/crossconfig.m4 \
$(top_srcdir)/linkage.m4 $(top_srcdir)/acinclude.m4 \
$(top_srcdir)/../config/tls.m4 $(top_srcdir)/configure.ac
--- gcc/libstdc++-v3/libmath/Makefile.in.symbolic 2006-11-18 06:26:24.000000000 -0800
+++ gcc/libstdc++-v3/libmath/Makefile.in 2007-01-12 07:45:02.000000000 -0800
@@ -45,6 +45,8 @@ am__aclocal_m4_deps = $(top_srcdir)/../c
$(top_srcdir)/../config/multi.m4 \
$(top_srcdir)/../config/no-executables.m4 \
$(top_srcdir)/../config/unwind_ipinfo.m4 \
+ $(top_srcdir)/../config/lib-ld.m4 \
+ $(top_srcdir)/../config/ld-symbolic.m4 \
$(top_srcdir)/../libtool.m4 $(top_srcdir)/crossconfig.m4 \
$(top_srcdir)/linkage.m4 $(top_srcdir)/acinclude.m4 \
$(top_srcdir)/../config/tls.m4 $(top_srcdir)/configure.ac
--- gcc/libstdc++-v3/libsupc++/Makefile.in.symbolic 2006-11-18 06:26:35.000000000 -0800
+++ gcc/libstdc++-v3/libsupc++/Makefile.in 2007-01-12 07:45:02.000000000 -0800
@@ -47,6 +47,8 @@ am__aclocal_m4_deps = $(top_srcdir)/../c
$(top_srcdir)/../config/multi.m4 \
$(top_srcdir)/../config/no-executables.m4 \
$(top_srcdir)/../config/unwind_ipinfo.m4 \
+ $(top_srcdir)/../config/lib-ld.m4 \
+ $(top_srcdir)/../config/ld-symbolic.m4 \
$(top_srcdir)/../libtool.m4 $(top_srcdir)/crossconfig.m4 \
$(top_srcdir)/linkage.m4 $(top_srcdir)/acinclude.m4 \
$(top_srcdir)/../config/tls.m4 $(top_srcdir)/configure.ac
--- gcc/libstdc++-v3/po/Makefile.in.symbolic 2006-11-18 06:27:00.000000000 -0800
+++ gcc/libstdc++-v3/po/Makefile.in 2007-01-12 07:45:02.000000000 -0800
@@ -45,6 +45,8 @@ am__aclocal_m4_deps = $(top_srcdir)/../c
$(top_srcdir)/../config/multi.m4 \
$(top_srcdir)/../config/no-executables.m4 \
$(top_srcdir)/../config/unwind_ipinfo.m4 \
+ $(top_srcdir)/../config/lib-ld.m4 \
+ $(top_srcdir)/../config/ld-symbolic.m4 \
$(top_srcdir)/../libtool.m4 $(top_srcdir)/crossconfig.m4 \
$(top_srcdir)/linkage.m4 $(top_srcdir)/acinclude.m4 \
$(top_srcdir)/../config/tls.m4 $(top_srcdir)/configure.ac
--- gcc/libstdc++-v3/src/Makefile.in.symbolic 2006-11-18 06:26:36.000000000 -0800
+++ gcc/libstdc++-v3/src/Makefile.in 2007-01-12 07:45:02.000000000 -0800
@@ -45,6 +45,8 @@ am__aclocal_m4_deps = $(top_srcdir)/../c
$(top_srcdir)/../config/multi.m4 \
$(top_srcdir)/../config/no-executables.m4 \
$(top_srcdir)/../config/unwind_ipinfo.m4 \
+ $(top_srcdir)/../config/lib-ld.m4 \
+ $(top_srcdir)/../config/ld-symbolic.m4 \
$(top_srcdir)/../libtool.m4 $(top_srcdir)/crossconfig.m4 \
$(top_srcdir)/linkage.m4 $(top_srcdir)/acinclude.m4 \
$(top_srcdir)/../config/tls.m4 $(top_srcdir)/configure.ac
--- gcc/libstdc++-v3/testsuite/Makefile.in.symbolic 2006-11-18 06:26:56.000000000 -0800
+++ gcc/libstdc++-v3/testsuite/Makefile.in 2007-01-12 07:45:02.000000000 -0800
@@ -45,6 +45,8 @@ am__aclocal_m4_deps = $(top_srcdir)/../c
$(top_srcdir)/../config/multi.m4 \
$(top_srcdir)/../config/no-executables.m4 \
$(top_srcdir)/../config/unwind_ipinfo.m4 \
+ $(top_srcdir)/../config/lib-ld.m4 \
+ $(top_srcdir)/../config/ld-symbolic.m4 \
$(top_srcdir)/../libtool.m4 $(top_srcdir)/crossconfig.m4 \
$(top_srcdir)/linkage.m4 $(top_srcdir)/acinclude.m4 \
$(top_srcdir)/../config/tls.m4 $(top_srcdir)/configure.ac