configure.ac: Check for Sun symbol versioning.
authorRainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
Fri, 2 Jul 2010 10:15:09 +0000 (10:15 +0000)
committerRainer Orth <ro@gcc.gnu.org>
Fri, 2 Jul 2010 10:15:09 +0000 (10:15 +0000)
* configure.ac: Check for Sun symbol versioning.
Check for memmove.
* configure: Regenerate.
* config.h.in: Regenerate.

* Makefile.am [LIBSSP_USE_SYMVER]: Protect version_arg,
version_dep with LIBSSP_USE_SYMVER_GNU.
[LIBSSP_USE_SYMVER_SUN]: Handle Sun symbol versioning.
* Makefile.in: Regenerate.

* ssp.map: Reformat.

* memmove-chk.c: Change guard to HAVE_MEMMOVE.

From-SVN: r161699

libssp/ChangeLog
libssp/Makefile.am
libssp/Makefile.in
libssp/config.h.in
libssp/configure
libssp/configure.ac
libssp/memmove-chk.c
libssp/ssp.map

index 1745d5b5f07acc851c29079e5c4bae42aafb455d..e947735b7a6981c3f548df9585942f45b5ba1dab 100644 (file)
@@ -1,3 +1,19 @@
+2010-07-02  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
+
+       * configure.ac: Check for Sun symbol versioning.
+       Check for memmove.
+       * configure: Regenerate.
+       * config.h.in: Regenerate.
+
+       * Makefile.am [LIBSSP_USE_SYMVER]: Protect version_arg,
+       version_dep with LIBSSP_USE_SYMVER_GNU.
+       [LIBSSP_USE_SYMVER_SUN]: Handle Sun symbol versioning.
+       * Makefile.in: Regenerate.
+
+       * ssp.map: Reformat.
+
+       * memmove-chk.c: Change guard to HAVE_MEMMOVE.
+
 2010-05-04  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
 
        PR other/43620
index 7b6e946508454083b9b104be9d4ead1b932bcb02..e25bd8458ce27df51427cdaa8c6cfe75da9341fa 100644 (file)
@@ -1,6 +1,6 @@
 ## Makefile for the toplevel directory of the libssp library.
 ##
-## Copyright (C) 2005
+## Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010
 ## Free Software Foundation, Inc.
 ##
 
@@ -12,8 +12,23 @@ MAINT_CHARSET = latin1
 gcc_version := $(shell cat $(top_srcdir)/../gcc/BASE-VER)
 
 if LIBSSP_USE_SYMVER
+if LIBSSP_USE_SYMVER_GNU
 version_arg = -Wl,--version-script=$(srcdir)/ssp.map
 version_dep = $(srcdir)/ssp.map
+endif
+if LIBSSP_USE_SYMVER_SUN
+version_arg = -Wl,-M,ssp.map-sun
+version_dep = ssp.map-sun
+ssp.map-sun : $(srcdir)/ssp.map \
+               $(top_srcdir)/../contrib/make_sunver.pl \
+               $(libssp_la_OBJECTS) $(libssp_la_LIBADD)
+       perl $(top_srcdir)/../contrib/make_sunver.pl \
+         $(srcdir)/ssp.map \
+         $(libssp_la_OBJECTS:%.lo=.libs/%.o) \
+        `echo $(libssp_la_LIBADD) | \
+           sed 's,/\([^/.]*\)\.la,/.libs/\1.a,g'` \
+        > $@ || (rm -f $@ ; exit 1)
+endif
 else
 version_arg =
 version_dep =
index e70d622b3f689429704a11cb8768ff034a0a4997..d9f952fd50c6df61fe019e2cafec11b9adda0858 100644 (file)
@@ -250,9 +250,11 @@ MAINT_CHARSET = latin1
 # May be used by various substitution variables.
 gcc_version := $(shell cat $(top_srcdir)/../gcc/BASE-VER)
 @LIBSSP_USE_SYMVER_FALSE@version_arg = 
-@LIBSSP_USE_SYMVER_TRUE@version_arg = -Wl,--version-script=$(srcdir)/ssp.map
+@LIBSSP_USE_SYMVER_GNU_TRUE@@LIBSSP_USE_SYMVER_TRUE@version_arg = -Wl,--version-script=$(srcdir)/ssp.map
+@LIBSSP_USE_SYMVER_SUN_TRUE@@LIBSSP_USE_SYMVER_TRUE@version_arg = -Wl,-M,ssp.map-sun
 @LIBSSP_USE_SYMVER_FALSE@version_dep = 
-@LIBSSP_USE_SYMVER_TRUE@version_dep = $(srcdir)/ssp.map
+@LIBSSP_USE_SYMVER_GNU_TRUE@@LIBSSP_USE_SYMVER_TRUE@version_dep = $(srcdir)/ssp.map
+@LIBSSP_USE_SYMVER_SUN_TRUE@@LIBSSP_USE_SYMVER_TRUE@version_dep = ssp.map-sun
 AM_CFLAGS = -Wall
 toolexeclib_LTLIBRARIES = libssp.la libssp_nonshared.la
 libsubincludedir = $(libdir)/gcc/$(target_noncanonical)/$(gcc_version)/include
@@ -694,6 +696,15 @@ uninstall-am: uninstall-nobase_libsubincludeHEADERS \
        uninstall-am uninstall-nobase_libsubincludeHEADERS \
        uninstall-toolexeclibLTLIBRARIES
 
+@LIBSSP_USE_SYMVER_SUN_TRUE@@LIBSSP_USE_SYMVER_TRUE@ssp.map-sun : $(srcdir)/ssp.map \
+@LIBSSP_USE_SYMVER_SUN_TRUE@@LIBSSP_USE_SYMVER_TRUE@           $(top_srcdir)/../contrib/make_sunver.pl \
+@LIBSSP_USE_SYMVER_SUN_TRUE@@LIBSSP_USE_SYMVER_TRUE@           $(libssp_la_OBJECTS) $(libssp_la_LIBADD)
+@LIBSSP_USE_SYMVER_SUN_TRUE@@LIBSSP_USE_SYMVER_TRUE@   perl $(top_srcdir)/../contrib/make_sunver.pl \
+@LIBSSP_USE_SYMVER_SUN_TRUE@@LIBSSP_USE_SYMVER_TRUE@     $(srcdir)/ssp.map \
+@LIBSSP_USE_SYMVER_SUN_TRUE@@LIBSSP_USE_SYMVER_TRUE@     $(libssp_la_OBJECTS:%.lo=.libs/%.o) \
+@LIBSSP_USE_SYMVER_SUN_TRUE@@LIBSSP_USE_SYMVER_TRUE@    `echo $(libssp_la_LIBADD) | \
+@LIBSSP_USE_SYMVER_SUN_TRUE@@LIBSSP_USE_SYMVER_TRUE@       sed 's,/\([^/.]*\)\.la,/.libs/\1.a,g'` \
+@LIBSSP_USE_SYMVER_SUN_TRUE@@LIBSSP_USE_SYMVER_TRUE@    > $@ || (rm -f $@ ; exit 1)
 
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
index d55c0f18b8654aff2d65dd495161b6301f62342a..2815ce7c4d58c0330af68ba8d1f55afdf8717199 100644 (file)
@@ -21,6 +21,9 @@
 /* Define to 1 if you have the <malloc.h> header file. */
 #undef HAVE_MALLOC_H
 
+/* Define to 1 if you have the `memmove' function. */
+#undef HAVE_MEMMOVE
+
 /* Define to 1 if you have the <memory.h> header file. */
 #undef HAVE_MEMORY_H
 
index d5e83844f016f9cd58dc23717e99c633cef2cc5c..7722c9541488e3a2ca42b3ee03b6400c60f2bf22 100755 (executable)
@@ -625,6 +625,10 @@ LIBTOOL
 ssp_have_usable_vsnprintf
 EGREP
 GREP
+LIBSSP_USE_SYMVER_SUN_FALSE
+LIBSSP_USE_SYMVER_SUN_TRUE
+LIBSSP_USE_SYMVER_GNU_FALSE
+LIBSSP_USE_SYMVER_GNU_TRUE
 LIBSSP_USE_SYMVER_FALSE
 LIBSSP_USE_SYMVER_TRUE
 CPP
@@ -4093,18 +4097,18 @@ fi
 
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether symbol versioning is supported" >&5
 $as_echo_n "checking whether symbol versioning is supported... " >&6; }
-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
+  save_LDFLAGS="$LDFLAGS"
+  LDFLAGS="$LDFLAGS -fPIC -shared -Wl,--version-script,./conftest.map"
+  cat > conftest.map <<EOF
+FOO_1.0 {
+  global: *foo*; bar; local: *;
+};
+EOF
   if test x$gcc_no_link = xyes; then
   as_fn_error "Link tests are not allowed after GCC_NO_EXECUTABLES." "$LINENO" 5
 fi
@@ -4120,17 +4124,48 @@ main ()
 }
 _ACEOF
 if ac_fn_c_try_link "$LINENO"; then :
-  ssp_use_symver=yes
+  ssp_use_symver=gnu
 else
   ssp_use_symver=no
 fi
 rm -f core conftest.err conftest.$ac_objext \
     conftest$ac_exeext conftest.$ac_ext
+  if test x$ssp_use_symver = xno; then
+    LDFLAGS="$save_LDFLAGS"
+    LDFLAGS="$LDFLAGS -fPIC -shared -Wl,-M,./conftest.map"
+    # Sun ld cannot handle wildcards and treats all entries as undefined.
+    cat > conftest.map <<EOF
+FOO_1.0 {
+  global: foo; local: *;
+};
+EOF
+    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.  */
+int foo;
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ssp_use_symver=sun
+else
+  ssp_use_symver=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+  fi
+  LDFLAGS="$save_LDFLAGS"
 fi
-LDFLAGS="$save_LDFLAGS"
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ssp_use_symver" >&5
 $as_echo "$ssp_use_symver" >&6; }
- if test "x$ssp_use_symver" = xyes; then
+ if test "x$ssp_use_symver" != xno; then
   LIBSSP_USE_SYMVER_TRUE=
   LIBSSP_USE_SYMVER_FALSE='#'
 else
@@ -4138,6 +4173,22 @@ else
   LIBSSP_USE_SYMVER_FALSE=
 fi
 
+ if test "x$ssp_use_symver" = xgnu; then
+  LIBSSP_USE_SYMVER_GNU_TRUE=
+  LIBSSP_USE_SYMVER_GNU_FALSE='#'
+else
+  LIBSSP_USE_SYMVER_GNU_TRUE='#'
+  LIBSSP_USE_SYMVER_GNU_FALSE=
+fi
+
+ if test "x$ssp_use_symver" = xsun; then
+  LIBSSP_USE_SYMVER_SUN_TRUE=
+  LIBSSP_USE_SYMVER_SUN_FALSE='#'
+else
+  LIBSSP_USE_SYMVER_SUN_TRUE='#'
+  LIBSSP_USE_SYMVER_SUN_FALSE=
+fi
+
 
 
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5
@@ -4423,7 +4474,7 @@ if test x$gcc_no_link = xyes; then
   $as_echo "#define HAVE_STRNCAT 1" >>confdefs.h
 
 else
-  for ac_func in mempcpy strncpy strncat
+  for ac_func in memmove mempcpy strncpy strncat
 do :
   as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
 ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
@@ -10591,7 +10642,7 @@ else
   lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
   lt_status=$lt_dlunknown
   cat > conftest.$ac_ext <<_LT_EOF
-#line 10594 "configure"
+#line 10645 "configure"
 #include "confdefs.h"
 
 #if HAVE_DLFCN_H
@@ -10697,7 +10748,7 @@ else
   lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
   lt_status=$lt_dlunknown
   cat > conftest.$ac_ext <<_LT_EOF
-#line 10700 "configure"
+#line 10751 "configure"
 #include "confdefs.h"
 
 #if HAVE_DLFCN_H
@@ -11096,6 +11147,14 @@ if test -z "${LIBSSP_USE_SYMVER_TRUE}" && test -z "${LIBSSP_USE_SYMVER_FALSE}";
   as_fn_error "conditional \"LIBSSP_USE_SYMVER\" was never defined.
 Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
+if test -z "${LIBSSP_USE_SYMVER_GNU_TRUE}" && test -z "${LIBSSP_USE_SYMVER_GNU_FALSE}"; then
+  as_fn_error "conditional \"LIBSSP_USE_SYMVER_GNU\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${LIBSSP_USE_SYMVER_SUN_TRUE}" && test -z "${LIBSSP_USE_SYMVER_SUN_FALSE}"; then
+  as_fn_error "conditional \"LIBSSP_USE_SYMVER_SUN\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
 
 : ${CONFIG_STATUS=./config.status}
 ac_write_fail=0
index 8192167a32d0a5ad7c9aee90d4915af244376aca..005e3bd2260cf7b2cebbdf2fa998d4396e920998 100644 (file)
@@ -72,23 +72,36 @@ if test x$ssp_hidden = xyes; then
 fi
 
 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"
+  cat > conftest.map <<EOF
+FOO_1.0 {
+  global: *foo*; bar; local: *;
+};
+EOF
+  AC_TRY_LINK([int foo;],[],[ssp_use_symver=gnu],[ssp_use_symver=no])
+  if test x$ssp_use_symver = xno; then
+    LDFLAGS="$save_LDFLAGS"
+    LDFLAGS="$LDFLAGS -fPIC -shared -Wl,-M,./conftest.map"
+    # Sun ld cannot handle wildcards and treats all entries as undefined.
+    cat > conftest.map <<EOF
+FOO_1.0 {
+  global: foo; local: *;
+};
+EOF
+    AC_TRY_LINK([int foo;],[],[ssp_use_symver=sun],[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])
+AM_CONDITIONAL(LIBSSP_USE_SYMVER, [test "x$ssp_use_symver" != xno])
+AM_CONDITIONAL(LIBSSP_USE_SYMVER_GNU, [test "x$ssp_use_symver" = xgnu])
+AM_CONDITIONAL(LIBSSP_USE_SYMVER_SUN, [test "x$ssp_use_symver" = xsun])
 
 AC_CHECK_HEADERS(alloca.h malloc.h paths.h syslog.h string.h unistd.h fcntl.h stdio.h limits.h)
 
@@ -98,7 +111,7 @@ if test x$gcc_no_link = xyes; then
   AC_DEFINE(HAVE_STRNCPY)
   AC_DEFINE(HAVE_STRNCAT)
 else
-  AC_CHECK_FUNCS(mempcpy strncpy strncat)
+  AC_CHECK_FUNCS(memmove mempcpy strncpy strncat)
 fi
 
 AC_MSG_CHECKING([whether vsnprintf is usable])
index 3e2904a3b0ddca10f5b85e4077d468b72cfcaaee..c28e1b59f2f7e17ffef6ec039f80e6cbb31673b2 100644 (file)
@@ -1,5 +1,5 @@
 /* Checking memmove.
-   Copyright (C) 2005, 2009 Free Software Foundation, Inc.
+   Copyright (C) 2005, 2009, 2010 Free Software Foundation, Inc.
 
 This file is part of GCC.
 
@@ -40,7 +40,7 @@ see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
 
 extern void __chk_fail (void) __attribute__((__noreturn__));
 
-#ifdef HAVE_MEMPCPY
+#ifdef HAVE_MEMMOVE
 void *
 __memmove_chk (void *dest, const void *src, size_t len, size_t slen)
 {
index 76c233562a7477292322479dd8fb1b6b25509527..34de964e368420a755f8d47c7fde5e616470f6b6 100644 (file)
@@ -1,9 +1,22 @@
 LIBSSP_1.0 {
   global:
-    __stack_chk_fail; __stack_chk_guard; __chk_fail;
-    __gets_chk; __memcpy_chk; __memmove_chk; __mempcpy_chk; __memset_chk;
-    __snprintf_chk; __sprintf_chk; __stpcpy_chk; __strcat_chk; __strcpy_chk;
-    __strncat_chk; __strncpy_chk; __vsnprintf_chk; __vsprintf_chk;
+    __stack_chk_fail;
+    __stack_chk_guard;
+    __chk_fail;
+    __gets_chk;
+    __memcpy_chk;
+    __memmove_chk;
+    __mempcpy_chk;
+    __memset_chk;
+    __snprintf_chk;
+    __sprintf_chk;
+    __stpcpy_chk;
+    __strcat_chk;
+    __strcpy_chk;
+    __strncat_chk;
+    __strncpy_chk;
+    __vsnprintf_chk;
+    __vsprintf_chk;
   local:
     *;
 };