Skip to content

Commit f28c8d0

Browse files
author
ro
committed
* 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. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@161699 138bc75d-0d04-0410-961f-82ee72b054a4
1 parent fbb7f7a commit f28c8d0

File tree

8 files changed

+163
-33
lines changed

8 files changed

+163
-33
lines changed

libssp/ChangeLog

+16
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,19 @@
1+
2010-07-02 Rainer Orth <[email protected]>
2+
3+
* configure.ac: Check for Sun symbol versioning.
4+
Check for memmove.
5+
* configure: Regenerate.
6+
* config.h.in: Regenerate.
7+
8+
* Makefile.am [LIBSSP_USE_SYMVER]: Protect version_arg,
9+
version_dep with LIBSSP_USE_SYMVER_GNU.
10+
[LIBSSP_USE_SYMVER_SUN]: Handle Sun symbol versioning.
11+
* Makefile.in: Regenerate.
12+
13+
* ssp.map: Reformat.
14+
15+
* memmove-chk.c: Change guard to HAVE_MEMMOVE.
16+
117
2010-05-04 Ralf Wildenhues <[email protected]>
218

319
PR other/43620

libssp/Makefile.am

+16-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
## Makefile for the toplevel directory of the libssp library.
22
##
3-
## Copyright (C) 2005
3+
## Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010
44
## Free Software Foundation, Inc.
55
##
66

@@ -12,8 +12,23 @@ MAINT_CHARSET = latin1
1212
gcc_version := $(shell cat $(top_srcdir)/../gcc/BASE-VER)
1313

1414
if LIBSSP_USE_SYMVER
15+
if LIBSSP_USE_SYMVER_GNU
1516
version_arg = -Wl,--version-script=$(srcdir)/ssp.map
1617
version_dep = $(srcdir)/ssp.map
18+
endif
19+
if LIBSSP_USE_SYMVER_SUN
20+
version_arg = -Wl,-M,ssp.map-sun
21+
version_dep = ssp.map-sun
22+
ssp.map-sun : $(srcdir)/ssp.map \
23+
$(top_srcdir)/../contrib/make_sunver.pl \
24+
$(libssp_la_OBJECTS) $(libssp_la_LIBADD)
25+
perl $(top_srcdir)/../contrib/make_sunver.pl \
26+
$(srcdir)/ssp.map \
27+
$(libssp_la_OBJECTS:%.lo=.libs/%.o) \
28+
`echo $(libssp_la_LIBADD) | \
29+
sed 's,/\([^/.]*\)\.la,/.libs/\1.a,g'` \
30+
> $@ || (rm -f $@ ; exit 1)
31+
endif
1732
else
1833
version_arg =
1934
version_dep =

libssp/Makefile.in

+13-2
Original file line numberDiff line numberDiff line change
@@ -250,9 +250,11 @@ MAINT_CHARSET = latin1
250250
# May be used by various substitution variables.
251251
gcc_version := $(shell cat $(top_srcdir)/../gcc/BASE-VER)
252252
@LIBSSP_USE_SYMVER_FALSE@version_arg =
253-
@LIBSSP_USE_SYMVER_TRUE@version_arg = -Wl,--version-script=$(srcdir)/ssp.map
253+
@LIBSSP_USE_SYMVER_GNU_TRUE@@LIBSSP_USE_SYMVER_TRUE@version_arg = -Wl,--version-script=$(srcdir)/ssp.map
254+
@LIBSSP_USE_SYMVER_SUN_TRUE@@LIBSSP_USE_SYMVER_TRUE@version_arg = -Wl,-M,ssp.map-sun
254255
@LIBSSP_USE_SYMVER_FALSE@version_dep =
255-
@LIBSSP_USE_SYMVER_TRUE@version_dep = $(srcdir)/ssp.map
256+
@LIBSSP_USE_SYMVER_GNU_TRUE@@LIBSSP_USE_SYMVER_TRUE@version_dep = $(srcdir)/ssp.map
257+
@LIBSSP_USE_SYMVER_SUN_TRUE@@LIBSSP_USE_SYMVER_TRUE@version_dep = ssp.map-sun
256258
AM_CFLAGS = -Wall
257259
toolexeclib_LTLIBRARIES = libssp.la libssp_nonshared.la
258260
libsubincludedir = $(libdir)/gcc/$(target_noncanonical)/$(gcc_version)/include
@@ -694,6 +696,15 @@ uninstall-am: uninstall-nobase_libsubincludeHEADERS \
694696
uninstall-am uninstall-nobase_libsubincludeHEADERS \
695697
uninstall-toolexeclibLTLIBRARIES
696698

699+
@LIBSSP_USE_SYMVER_SUN_TRUE@@[email protected] : $(srcdir)/ssp.map \
700+
@LIBSSP_USE_SYMVER_SUN_TRUE@@LIBSSP_USE_SYMVER_TRUE@ $(top_srcdir)/../contrib/make_sunver.pl \
701+
@LIBSSP_USE_SYMVER_SUN_TRUE@@LIBSSP_USE_SYMVER_TRUE@ $(libssp_la_OBJECTS) $(libssp_la_LIBADD)
702+
@LIBSSP_USE_SYMVER_SUN_TRUE@@LIBSSP_USE_SYMVER_TRUE@ perl $(top_srcdir)/../contrib/make_sunver.pl \
703+
@LIBSSP_USE_SYMVER_SUN_TRUE@@LIBSSP_USE_SYMVER_TRUE@ $(srcdir)/ssp.map \
704+
@LIBSSP_USE_SYMVER_SUN_TRUE@@LIBSSP_USE_SYMVER_TRUE@ $(libssp_la_OBJECTS:%.lo=.libs/%.o) \
705+
@LIBSSP_USE_SYMVER_SUN_TRUE@@LIBSSP_USE_SYMVER_TRUE@ `echo $(libssp_la_LIBADD) | \
706+
@LIBSSP_USE_SYMVER_SUN_TRUE@@LIBSSP_USE_SYMVER_TRUE@ sed 's,/\([^/.]*\)\.la,/.libs/\1.a,g'` \
707+
@LIBSSP_USE_SYMVER_SUN_TRUE@@LIBSSP_USE_SYMVER_TRUE@ > $@ || (rm -f $@ ; exit 1)
697708

698709
# Tell versions [3.59,3.63) of GNU make to not export all variables.
699710
# Otherwise a system limit (for SysV at least) may be exceeded.

libssp/config.h.in

+3
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,9 @@
2121
/* Define to 1 if you have the <malloc.h> header file. */
2222
#undef HAVE_MALLOC_H
2323

24+
/* Define to 1 if you have the `memmove' function. */
25+
#undef HAVE_MEMMOVE
26+
2427
/* Define to 1 if you have the <memory.h> header file. */
2528
#undef HAVE_MEMORY_H
2629

libssp/configure

+72-13
Original file line numberDiff line numberDiff line change
@@ -625,6 +625,10 @@ LIBTOOL
625625
ssp_have_usable_vsnprintf
626626
EGREP
627627
GREP
628+
LIBSSP_USE_SYMVER_SUN_FALSE
629+
LIBSSP_USE_SYMVER_SUN_TRUE
630+
LIBSSP_USE_SYMVER_GNU_FALSE
631+
LIBSSP_USE_SYMVER_GNU_TRUE
628632
LIBSSP_USE_SYMVER_FALSE
629633
LIBSSP_USE_SYMVER_TRUE
630634
CPP
@@ -4093,18 +4097,18 @@ fi
40934097

40944098
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether symbol versioning is supported" >&5
40954099
$as_echo_n "checking whether symbol versioning is supported... " >&6; }
4096-
cat > conftest.map <<EOF
4097-
FOO_1.0 {
4098-
global: *foo*; bar; local: *;
4099-
};
4100-
EOF
4101-
save_LDFLAGS="$LDFLAGS"
4102-
LDFLAGS="$LDFLAGS -fPIC -shared -Wl,--version-script,./conftest.map"
41034100
if test x$gcc_no_link = xyes; then
41044101
# If we cannot link, we cannot build shared libraries, so do not use
41054102
# symbol versioning.
41064103
ssp_use_symver=no
41074104
else
4105+
save_LDFLAGS="$LDFLAGS"
4106+
LDFLAGS="$LDFLAGS -fPIC -shared -Wl,--version-script,./conftest.map"
4107+
cat > conftest.map <<EOF
4108+
FOO_1.0 {
4109+
global: *foo*; bar; local: *;
4110+
};
4111+
EOF
41084112
if test x$gcc_no_link = xyes; then
41094113
as_fn_error "Link tests are not allowed after GCC_NO_EXECUTABLES." "$LINENO" 5
41104114
fi
@@ -4120,24 +4124,71 @@ main ()
41204124
}
41214125
_ACEOF
41224126
if ac_fn_c_try_link "$LINENO"; then :
4123-
ssp_use_symver=yes
4127+
ssp_use_symver=gnu
41244128
else
41254129
ssp_use_symver=no
41264130
fi
41274131
rm -f core conftest.err conftest.$ac_objext \
41284132
conftest$ac_exeext conftest.$ac_ext
4133+
if test x$ssp_use_symver = xno; then
4134+
LDFLAGS="$save_LDFLAGS"
4135+
LDFLAGS="$LDFLAGS -fPIC -shared -Wl,-M,./conftest.map"
4136+
# Sun ld cannot handle wildcards and treats all entries as undefined.
4137+
cat > conftest.map <<EOF
4138+
FOO_1.0 {
4139+
global: foo; local: *;
4140+
};
4141+
EOF
4142+
if test x$gcc_no_link = xyes; then
4143+
as_fn_error "Link tests are not allowed after GCC_NO_EXECUTABLES." "$LINENO" 5
4144+
fi
4145+
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
4146+
/* end confdefs.h. */
4147+
int foo;
4148+
int
4149+
main ()
4150+
{
4151+
4152+
;
4153+
return 0;
4154+
}
4155+
_ACEOF
4156+
if ac_fn_c_try_link "$LINENO"; then :
4157+
ssp_use_symver=sun
4158+
else
4159+
ssp_use_symver=no
4160+
fi
4161+
rm -f core conftest.err conftest.$ac_objext \
4162+
conftest$ac_exeext conftest.$ac_ext
4163+
fi
4164+
LDFLAGS="$save_LDFLAGS"
41294165
fi
4130-
LDFLAGS="$save_LDFLAGS"
41314166
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ssp_use_symver" >&5
41324167
$as_echo "$ssp_use_symver" >&6; }
4133-
if test "x$ssp_use_symver" = xyes; then
4168+
if test "x$ssp_use_symver" != xno; then
41344169
LIBSSP_USE_SYMVER_TRUE=
41354170
LIBSSP_USE_SYMVER_FALSE='#'
41364171
else
41374172
LIBSSP_USE_SYMVER_TRUE='#'
41384173
LIBSSP_USE_SYMVER_FALSE=
41394174
fi
41404175

4176+
if test "x$ssp_use_symver" = xgnu; then
4177+
LIBSSP_USE_SYMVER_GNU_TRUE=
4178+
LIBSSP_USE_SYMVER_GNU_FALSE='#'
4179+
else
4180+
LIBSSP_USE_SYMVER_GNU_TRUE='#'
4181+
LIBSSP_USE_SYMVER_GNU_FALSE=
4182+
fi
4183+
4184+
if test "x$ssp_use_symver" = xsun; then
4185+
LIBSSP_USE_SYMVER_SUN_TRUE=
4186+
LIBSSP_USE_SYMVER_SUN_FALSE='#'
4187+
else
4188+
LIBSSP_USE_SYMVER_SUN_TRUE='#'
4189+
LIBSSP_USE_SYMVER_SUN_FALSE=
4190+
fi
4191+
41414192

41424193

41434194
{ $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
44234474
$as_echo "#define HAVE_STRNCAT 1" >>confdefs.h
44244475

44254476
else
4426-
for ac_func in mempcpy strncpy strncat
4477+
for ac_func in memmove mempcpy strncpy strncat
44274478
do :
44284479
as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
44294480
ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
@@ -10591,7 +10642,7 @@ else
1059110642
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
1059210643
lt_status=$lt_dlunknown
1059310644
cat > conftest.$ac_ext <<_LT_EOF
10594-
#line 10594 "configure"
10645+
#line 10645 "configure"
1059510646
#include "confdefs.h"
1059610647
1059710648
#if HAVE_DLFCN_H
@@ -10697,7 +10748,7 @@ else
1069710748
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
1069810749
lt_status=$lt_dlunknown
1069910750
cat > conftest.$ac_ext <<_LT_EOF
10700-
#line 10700 "configure"
10751+
#line 10751 "configure"
1070110752
#include "confdefs.h"
1070210753
1070310754
#if HAVE_DLFCN_H
@@ -11096,6 +11147,14 @@ if test -z "${LIBSSP_USE_SYMVER_TRUE}" && test -z "${LIBSSP_USE_SYMVER_FALSE}";
1109611147
as_fn_error "conditional \"LIBSSP_USE_SYMVER\" was never defined.
1109711148
Usually this means the macro was only invoked conditionally." "$LINENO" 5
1109811149
fi
11150+
if test -z "${LIBSSP_USE_SYMVER_GNU_TRUE}" && test -z "${LIBSSP_USE_SYMVER_GNU_FALSE}"; then
11151+
as_fn_error "conditional \"LIBSSP_USE_SYMVER_GNU\" was never defined.
11152+
Usually this means the macro was only invoked conditionally." "$LINENO" 5
11153+
fi
11154+
if test -z "${LIBSSP_USE_SYMVER_SUN_TRUE}" && test -z "${LIBSSP_USE_SYMVER_SUN_FALSE}"; then
11155+
as_fn_error "conditional \"LIBSSP_USE_SYMVER_SUN\" was never defined.
11156+
Usually this means the macro was only invoked conditionally." "$LINENO" 5
11157+
fi
1109911158
1110011159
: ${CONFIG_STATUS=./config.status}
1110111160
ac_write_fail=0

libssp/configure.ac

+24-11
Original file line numberDiff line numberDiff line change
@@ -72,23 +72,36 @@ if test x$ssp_hidden = xyes; then
7272
fi
7373

7474
AC_MSG_CHECKING([whether symbol versioning is supported])
75-
cat > conftest.map <<EOF
76-
FOO_1.0 {
77-
global: *foo*; bar; local: *;
78-
};
79-
EOF
80-
save_LDFLAGS="$LDFLAGS"
81-
LDFLAGS="$LDFLAGS -fPIC -shared -Wl,--version-script,./conftest.map"
8275
if test x$gcc_no_link = xyes; then
8376
# If we cannot link, we cannot build shared libraries, so do not use
8477
# symbol versioning.
8578
ssp_use_symver=no
8679
else
87-
AC_TRY_LINK([int foo;],[],[ssp_use_symver=yes],[ssp_use_symver=no])
80+
save_LDFLAGS="$LDFLAGS"
81+
LDFLAGS="$LDFLAGS -fPIC -shared -Wl,--version-script,./conftest.map"
82+
cat > conftest.map <<EOF
83+
FOO_1.0 {
84+
global: *foo*; bar; local: *;
85+
};
86+
EOF
87+
AC_TRY_LINK([int foo;],[],[ssp_use_symver=gnu],[ssp_use_symver=no])
88+
if test x$ssp_use_symver = xno; then
89+
LDFLAGS="$save_LDFLAGS"
90+
LDFLAGS="$LDFLAGS -fPIC -shared -Wl,-M,./conftest.map"
91+
# Sun ld cannot handle wildcards and treats all entries as undefined.
92+
cat > conftest.map <<EOF
93+
FOO_1.0 {
94+
global: foo; local: *;
95+
};
96+
EOF
97+
AC_TRY_LINK([int foo;],[],[ssp_use_symver=sun],[ssp_use_symver=no])
98+
fi
99+
LDFLAGS="$save_LDFLAGS"
88100
fi
89-
LDFLAGS="$save_LDFLAGS"
90101
AC_MSG_RESULT($ssp_use_symver)
91-
AM_CONDITIONAL(LIBSSP_USE_SYMVER, [test "x$ssp_use_symver" = xyes])
102+
AM_CONDITIONAL(LIBSSP_USE_SYMVER, [test "x$ssp_use_symver" != xno])
103+
AM_CONDITIONAL(LIBSSP_USE_SYMVER_GNU, [test "x$ssp_use_symver" = xgnu])
104+
AM_CONDITIONAL(LIBSSP_USE_SYMVER_SUN, [test "x$ssp_use_symver" = xsun])
92105

93106
AC_CHECK_HEADERS(alloca.h malloc.h paths.h syslog.h string.h unistd.h fcntl.h stdio.h limits.h)
94107

@@ -98,7 +111,7 @@ if test x$gcc_no_link = xyes; then
98111
AC_DEFINE(HAVE_STRNCPY)
99112
AC_DEFINE(HAVE_STRNCAT)
100113
else
101-
AC_CHECK_FUNCS(mempcpy strncpy strncat)
114+
AC_CHECK_FUNCS(memmove mempcpy strncpy strncat)
102115
fi
103116

104117
AC_MSG_CHECKING([whether vsnprintf is usable])

libssp/memmove-chk.c

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/* Checking memmove.
2-
Copyright (C) 2005, 2009 Free Software Foundation, Inc.
2+
Copyright (C) 2005, 2009, 2010 Free Software Foundation, Inc.
33
44
This file is part of GCC.
55
@@ -40,7 +40,7 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
4040

4141
extern void __chk_fail (void) __attribute__((__noreturn__));
4242

43-
#ifdef HAVE_MEMPCPY
43+
#ifdef HAVE_MEMMOVE
4444
void *
4545
__memmove_chk (void *dest, const void *src, size_t len, size_t slen)
4646
{

libssp/ssp.map

+17-4
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,22 @@
11
LIBSSP_1.0 {
22
global:
3-
__stack_chk_fail; __stack_chk_guard; __chk_fail;
4-
__gets_chk; __memcpy_chk; __memmove_chk; __mempcpy_chk; __memset_chk;
5-
__snprintf_chk; __sprintf_chk; __stpcpy_chk; __strcat_chk; __strcpy_chk;
6-
__strncat_chk; __strncpy_chk; __vsnprintf_chk; __vsprintf_chk;
3+
__stack_chk_fail;
4+
__stack_chk_guard;
5+
__chk_fail;
6+
__gets_chk;
7+
__memcpy_chk;
8+
__memmove_chk;
9+
__mempcpy_chk;
10+
__memset_chk;
11+
__snprintf_chk;
12+
__sprintf_chk;
13+
__stpcpy_chk;
14+
__strcat_chk;
15+
__strcpy_chk;
16+
__strncat_chk;
17+
__strncpy_chk;
18+
__vsnprintf_chk;
19+
__vsprintf_chk;
720
local:
821
*;
922
};

0 commit comments

Comments
 (0)