This is the mail archive of the libstdc++@gcc.gnu.org mailing list for the libstdc++ 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]

Patch for target library build failures when unable to link


Sometimes when building the compiler you cannot link while building
runtime libraries.  This is always the case on certain "generic"
targets such as powerpc-eabi (which by design do not link unless an
option such as -msim is passed); it may also arise in some compiler
bootstrap sequences.

Builds in such circumstances are currently broken in libssp and
libstdc++-v3.  The libssp breakage is P2 regression 25035; I'm not
aware of a PR for the libstdc++-v3 breakage, but it's also a
regression.

This patch fixes these build failures.  If you can't link then you
can't build shared libraries, so I think it is safe to disable symbol
versioning in this case.  The hardwired selection of available
functions for libssp is like that present for many targets in
libstdc++-v3/crossconfig.m4, and if required cases for specific
targets with mempcpy can be added in libssp.

This patch doesn't leave libssp perfect regarding cross-compilation,
since there remains an execution test for vsnprintf which should have
defaults depending on the target when cross-compiling, as many targets
will have working vsnprintf.  It does, however, fix the build failures
at least for powerpc-none-eabispe on which I tested (there may be
other libssp build failures in other configurations for other
reasons).

Tested by building a cross-compiler for powerpc-none-eabispe.  OK to
commit (to mainline and 4.1 branch)?

libssp:
2006-09-29  Joseph S. Myers  <joseph@codesourcery.com>

	PR other/25035
	* configure.ac (AC_EXEEXT): Remove.
	(GCC_NO_EXECUTABLES): Call.
	(ssp_use_symver): Default to no if unable to link.
	(AC_CHECK_FUNCS): Hardwire results if unable to link.
	* aclocal.m4, configure, Makefile.in: Regenerate.

libstdc++-v3:
2006-09-29  Joseph S. Myers  <joseph@codesourcery.com>

	* acinclude.m4 (enable_symvers): Default to no if unable to link.
	* configure: Regenerate.

Index: libstdc++-v3/acinclude.m4
===================================================================
--- libstdc++-v3/acinclude.m4	(revision 117274)
+++ libstdc++-v3/acinclude.m4	(working copy)
@@ -2158,7 +2158,7 @@
 
 # Turn a 'yes' into a suitable default.
 if test x$enable_symvers = xyes ; then
-  if test $enable_shared = no || test "x$LD" = x ; then
+  if test $enable_shared = no || test "x$LD" = x || test x$gcc_no_link = xyes; then
     enable_symvers=no
   else
     if test $with_gnu_ld = yes ; then
Index: libssp/configure.ac
===================================================================
--- libssp/configure.ac	(revision 117274)
+++ libssp/configure.ac	(working copy)
@@ -22,8 +22,9 @@
 AC_MSG_RESULT($version_specific_libs)
 
 AM_MAINTAINER_MODE
-AC_EXEEXT
 
+GCC_NO_EXECUTABLES
+
 AM_ENABLE_MULTILIB(, ..)
 
 target_alias=${target_alias-$host_alias}
@@ -78,14 +79,27 @@
 EOF
 save_LDFLAGS="$LDFLAGS"
 LDFLAGS="$LDFLAGS -fPIC -shared -Wl,--version-script,./conftest.map"
-AC_TRY_LINK([int foo;],[],[ssp_use_symver=yes],[ssp_use_symver=no])
+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"
 AC_MSG_RESULT($ssp_use_symver)
 AM_CONDITIONAL(LIBSSP_USE_SYMVER, [test "x$ssp_use_symver" = xyes])
 
 AC_CHECK_HEADERS(alloca.h paths.h syslog.h string.h unistd.h fcntl.h stdio.h limits.h)
 
-AC_CHECK_FUNCS(mempcpy strncpy strncat)
+if test x$gcc_no_link = xyes; then
+  # Presume the ISO C functions are available; add target-specific
+  # configuration here if required.
+  AC_DEFINE(HAVE_STRNCPY)
+  AC_DEFINE(HAVE_STRNCAT)
+else
+  AC_CHECK_FUNCS(mempcpy strncpy strncat)
+fi
 
 AC_MSG_CHECKING([whether vsnprintf is usable])
 AC_RUN_IFELSE(AC_LANG_PROGRAM([


-- 
Joseph S. Myers
joseph@codesourcery.com


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