From ca6d1176f717cfb0ba3e0ea1a930aa3d33905a9e Mon Sep 17 00:00:00 2001 From: Rainer Orth Date: Fri, 2 Jul 2010 10:15:09 +0000 Subject: [PATCH] configure.ac: Check for Sun symbol versioning. * 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 | 16 +++++++++ libssp/Makefile.am | 17 ++++++++- libssp/Makefile.in | 15 ++++++-- libssp/config.h.in | 3 ++ libssp/configure | 85 +++++++++++++++++++++++++++++++++++++------- libssp/configure.ac | 35 ++++++++++++------ libssp/memmove-chk.c | 4 +-- libssp/ssp.map | 21 ++++++++--- 8 files changed, 163 insertions(+), 33 deletions(-) diff --git a/libssp/ChangeLog b/libssp/ChangeLog index 1745d5b5f07a..e947735b7a69 100644 --- a/libssp/ChangeLog +++ b/libssp/ChangeLog @@ -1,3 +1,19 @@ +2010-07-02 Rainer Orth + + * 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 PR other/43620 diff --git a/libssp/Makefile.am b/libssp/Makefile.am index 7b6e94650845..e25bd8458ce2 100644 --- a/libssp/Makefile.am +++ b/libssp/Makefile.am @@ -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 = diff --git a/libssp/Makefile.in b/libssp/Makefile.in index e70d622b3f68..d9f952fd50c6 100644 --- a/libssp/Makefile.in +++ b/libssp/Makefile.in @@ -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. diff --git a/libssp/config.h.in b/libssp/config.h.in index d55c0f18b865..2815ce7c4d58 100644 --- a/libssp/config.h.in +++ b/libssp/config.h.in @@ -21,6 +21,9 @@ /* Define to 1 if you have the 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 header file. */ #undef HAVE_MEMORY_H diff --git a/libssp/configure b/libssp/configure index d5e83844f016..7722c9541488 100755 --- a/libssp/configure +++ b/libssp/configure @@ -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 < conftest.map < conftest.map <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 diff --git a/libssp/configure.ac b/libssp/configure.ac index 8192167a32d0..005e3bd2260c 100644 --- a/libssp/configure.ac +++ b/libssp/configure.ac @@ -72,23 +72,36 @@ if test x$ssp_hidden = xyes; then fi AC_MSG_CHECKING([whether symbol versioning is supported]) -cat > conftest.map < conftest.map < conftest.map <