This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Allow symbol versioning to be disabled for libgfortran and libssp
- From: Jie Zhang <jie dot zhang at analog dot com>
- To: GCC Patches <gcc-patches at gcc dot gnu dot org>
- Date: Fri, 23 Jan 2009 15:39:31 +0800
- Subject: Allow symbol versioning to be disabled for libgfortran and libssp
Currently symbol versioning is enabled in libgfortran and libssp if this
feature is supported by linker. This patch addes --enable-symvers option
to configure scripts of libgfortran and libssp, such that symbol
versioning can be disabled at configure time when needed, as we can do
for libstdc++ and libgomp. Is it OK?
Jie
libgfortran/
* configure.ac: Add --enable-symvers.
* configure: Regenerate.
libssp/
* configure.ac: Add --enable-symvers.
* configure: Regenerate.
Index: libgfortran/configure.ac
===================================================================
--- libgfortran/configure.ac (revision 3093)
+++ libgfortran/configure.ac (working copy)
@@ -34,6 +34,17 @@ AC_MSG_RESULT($enable_intermodule)
AM_CONDITIONAL(onestep,[test x$onestep = x-onestep])
AC_SUBST(onestep)
+AC_MSG_CHECKING([for --enable-symvers])
+AC_ARG_ENABLE(symvers,
+[ --enable-symvers enables symbol versioning of the shared library ],
+[case "$enableval" in
+ yes) enable_symvers=yes ;;
+ no) enable_symvers=no ;;
+ *) AC_MSG_ERROR([Unknown argument to enable/disable symbol versioning]);;
+ esac],
+[enable_symvers=""])
+AC_MSG_RESULT($enable_symvers)
+
# Gets build, host, target, *_vendor, *_cpu, *_os, etc.
#
# You will slowly go insane if you do not grok the following fact: when
@@ -136,16 +147,20 @@ AC_SUBST(AM_CFLAGS)
AC_SUBST(CFLAGS)
# Check for symbol versioning (copied from libssp).
-AC_MSG_CHECKING([whether symbol versioning is supported])
-cat > conftest.map <<EOF
+if test "x$enable_symvers" == "xno"; then
+ gfortran_use_symver=no
+else
+ AC_MSG_CHECKING([whether symbol versioning is supported])
+ cat > conftest.map <<EOF
FOO_1.0 {
global: *foo*; bar; local: *;
};
EOF
-save_LDFLAGS="$LDFLAGS"
-LDFLAGS="$LDFLAGS -fPIC -shared -Wl,--version-script,./conftest.map"
-AC_TRY_LINK([int foo;],[],[gfortran_use_symver=yes],[gfortran_use_symver=no])
-LDFLAGS="$save_LDFLAGS"
+ save_LDFLAGS="$LDFLAGS"
+ LDFLAGS="$LDFLAGS -fPIC -shared -Wl,--version-script,./conftest.map"
+ AC_TRY_LINK([int foo;],[],[gfortran_use_symver=yes],[gfortran_use_symver=no])
+ LDFLAGS="$save_LDFLAGS"
+fi
AC_MSG_RESULT($gfortran_use_symver)
AM_CONDITIONAL(LIBGFOR_USE_SYMVER, [test "x$gfortran_use_symver" = xyes])
Index: libssp/configure.ac
===================================================================
--- libssp/configure.ac (revision 3093)
+++ libssp/configure.ac (working copy)
@@ -21,6 +21,17 @@ AC_ARG_ENABLE(version-specific-runtime-l
[version_specific_libs=no])
AC_MSG_RESULT($version_specific_libs)
+AC_MSG_CHECKING([for --enable-symvers])
+AC_ARG_ENABLE(symvers,
+[ --enable-symvers enables symbol versioning of the shared library ],
+[case "$enableval" in
+ yes) enable_symvers=yes ;;
+ no) enable_symvers=no ;;
+ *) AC_MSG_ERROR([Unknown argument to enable/disable symbol versioning]);;
+ esac],
+[enable_symvers=""])
+AC_MSG_RESULT($enable_symvers)
+
AM_MAINTAINER_MODE
GCC_NO_EXECUTABLES
@@ -71,22 +82,26 @@ if test x$ssp_hidden = xyes; then
AC_DEFINE([HAVE_HIDDEN_VISIBILITY],[1],[__attribute__((visibility ("hidden"))) supported])
fi
-AC_MSG_CHECKING([whether symbol versioning is supported])
-cat > conftest.map <<EOF
+if test "x$enable_symvers" == "xno"; then
+ ssp_use_symver=no
+else
+ AC_MSG_CHECKING([whether symbol versioning is supported])
+ cat > conftest.map <<EOF
FOO_1.0 {
global: *foo*; bar; local: *;
};
EOF
-save_LDFLAGS="$LDFLAGS"
-LDFLAGS="$LDFLAGS -fPIC -shared -Wl,--version-script,./conftest.map"
-if test x$gcc_no_link = xyes; then
- # If we cannot link, we cannot build shared libraries, so do not use
- # symbol versioning.
- ssp_use_symver=no
-else
- AC_TRY_LINK([int foo;],[],[ssp_use_symver=yes],[ssp_use_symver=no])
+ save_LDFLAGS="$LDFLAGS"
+ LDFLAGS="$LDFLAGS -fPIC -shared -Wl,--version-script,./conftest.map"
+ if test x$gcc_no_link = xyes; then
+ # If we cannot link, we cannot build shared libraries, so do not use
+ # symbol versioning.
+ ssp_use_symver=no
+ else
+ AC_TRY_LINK([int foo;],[],[ssp_use_symver=yes],[ssp_use_symver=no])
+ fi
+ LDFLAGS="$save_LDFLAGS"
fi
-LDFLAGS="$save_LDFLAGS"
AC_MSG_RESULT($ssp_use_symver)
AM_CONDITIONAL(LIBSSP_USE_SYMVER, [test "x$ssp_use_symver" = xyes])