This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

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])
 

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]