This is the mail archive of the
libstdc++@gcc.gnu.org
mailing list for the libstdc++ project.
Re: [RFC PATCH] Optionally use -mlong-double-128 by default on {powerpc{,64},s390{,x},sparc,alpha}-linux
On Mon, Jan 30, 2006 at 01:39:00PM -0500, Jakub Jelinek wrote:
> > > Are any objects of those classes ever created inside of libstdc++.so.6
> > > or just in user code and passed over to libstdc++ routines?
> >
> > Created inside libstdc++.
>
> Unfortunately, as I figured out today, versioning everything that
> (transitively) references those virtual tables is almost impossible.
> With a script and -ffunction-section -fdata-section compiled libstdc++.a
> I was tracing the the relocation dependence graphs and it would mean
> versioning half of libstdc++.so.
Here is an updated patch that has the (IMO) right abilist in both
--without-long-double-128 (identical to unpatched) and
--with-long-double-128 configured trunk gcc (4.1 patch is very similar,
though there are tiny little details in the surrounding code that cause
many rejects).
--- gcc/config/rs6000/linux.h.jj 2006-01-26 16:36:57.000000000 +0100
+++ gcc/config/rs6000/linux.h 2006-01-31 14:21:37.000000000 +0100
@@ -120,3 +120,8 @@
#endif
#define POWERPC_LINUX
+
+/* ppc linux has 128-bit long double support in glibc 2.4 and later. */
+#ifdef TARGET_DEFAULT_LONG_DOUBLE_128
+#define RS6000_DEFAULT_LONG_DOUBLE_SIZE 128
+#endif
--- gcc/config/rs6000/linux64.h.jj 2006-01-26 16:36:57.000000000 +0100
+++ gcc/config/rs6000/linux64.h 2006-01-31 14:21:51.000000000 +0100
@@ -569,3 +569,8 @@ while (0)
#endif
#define POWERPC_LINUX
+
+/* ppc{32,64} linux has 128-bit long double support in glibc 2.4 and later. */
+#ifdef TARGET_DEFAULT_LONG_DOUBLE_128
+#define RS6000_DEFAULT_LONG_DOUBLE_SIZE 128
+#endif
--- gcc/configure.ac.jj 2006-01-31 11:20:41.000000000 +0100
+++ gcc/configure.ac 2006-01-31 14:20:26.000000000 +0100
@@ -3197,6 +3197,39 @@ if test x$gcc_cv_libc_provides_ssp = xye
[Define if your target C library provides stack protector support])
fi
+# Check if TFmode long double should be used by default or not.
+# Some glibc targets used DFmode long double, but with glibc 2.4
+# and later they can use TFmode.
+case "$target" in
+ powerpc*-*-*gnu* | \
+ sparc*-*-linux* | \
+ s390*-*-linux* | \
+ alpha*-*-linux*)
+ AC_ARG_WITH(long-double-128,
+[ --with-long-double-128 Use 128-bit long double by default.],
+ gcc_cv_target_ldbl128="$with_long_double_128",
+ [gcc_cv_target_ldbl128=no
+ if test x$host != x$target || test "x$TARGET_SYSTEM_ROOT" != x; then
+ if test "x$with_sysroot" = x; then
+ glibc_header_dir="${exec_prefix}/${target_noncanonical}/sys-include"
+ elif test "x$with_sysroot" = xyes; then
+ glibc_header_dir="${exec_prefix}/${target_noncanonical}/sys-root/usr/include"
+ else
+ glibc_header_dir="${with_sysroot}/usr/include"
+ fi
+ else
+ glibc_header_dir=/usr/include
+ fi
+ grep '^[ ]*#[ ]*define[ ][ ]*__LONG_DOUBLE_MATH_OPTIONAL' \
+ $glibc_header_dir/bits/wordsize.h > /dev/null 2>&1 \
+ && gcc_cv_target_ldbl128=yes])
+ ;;
+esac
+if test x$gcc_cv_target_ldbl128 = xyes; then
+ AC_DEFINE(TARGET_DEFAULT_LONG_DOUBLE_128, 1,
+ [Define if TFmode long double should be the default])
+fi
+
# Find out what GC implementation we want, or may, use.
AC_ARG_WITH(gc,
[ --with-gc={page,zone} choose the garbage collection mechanism to use
--- gcc/configure.jj 2006-01-31 11:20:41.000000000 +0100
+++ gcc/configure 2006-01-31 14:21:03.000000000 +0100
@@ -932,6 +932,7 @@ Optional Packages:
--with-libiconv-prefix[=DIR] search for libiconv in DIR/include and DIR/lib
--without-libiconv-prefix don't search for libiconv in includedir and libdir
--with-system-libunwind use installed libunwind
+ --with-long-double-128 Use 128-bit long double by default.
--with-gc={page,zone} choose the garbage collection mechanism to use
with the compiler
--with-system-zlib use installed libz
@@ -7642,7 +7643,7 @@ if test "${gcc_cv_prog_makeinfo_modern+s
else
ac_prog_version=`$MAKEINFO --version 2>&1 |
sed -n 's/^.*GNU texinfo.* \([0-9][0-9.]*\).*$/\1/p'`
- echo "configure:7645: version of makeinfo is $ac_prog_version" >&5
+ echo "configure:7646: version of makeinfo is $ac_prog_version" >&5
case $ac_prog_version in
'') gcc_cv_prog_makeinfo_modern=no;;
4.[4-9]*)
@@ -15693,6 +15694,46 @@ _ACEOF
fi
+# Check if TFmode long double should be used by default or not.
+# Some glibc targets used DFmode long double, but with glibc 2.4
+# and later they can use TFmode.
+case "$target" in
+ powerpc*-*-*gnu* | \
+ sparc*-*-linux* | \
+ s390*-*-linux* | \
+ alpha*-*-linux*)
+
+# Check whether --with-long-double-128 or --without-long-double-128 was given.
+if test "${with_long_double_128+set}" = set; then
+ withval="$with_long_double_128"
+ gcc_cv_target_ldbl128="$with_long_double_128"
+else
+ gcc_cv_target_ldbl128=no
+ if test x$host != x$target || test "x$TARGET_SYSTEM_ROOT" != x; then
+ if test "x$with_sysroot" = x; then
+ glibc_header_dir="${exec_prefix}/${target_noncanonical}/sys-include"
+ elif test "x$with_sysroot" = xyes; then
+ glibc_header_dir="${exec_prefix}/${target_noncanonical}/sys-root/usr/include"
+ else
+ glibc_header_dir="${with_sysroot}/usr/include"
+ fi
+ else
+ glibc_header_dir=/usr/include
+ fi
+ grep '^ *#[ ]*define[ ][ ]*__LONG_DOUBLE_MATH_OPTIONAL' \
+ $glibc_header_dir/bits/wordsize.h > /dev/null 2>&1 \
+ && gcc_cv_target_ldbl128=yes
+fi;
+ ;;
+esac
+if test x$gcc_cv_target_ldbl128 = xyes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define TARGET_DEFAULT_LONG_DOUBLE_128 1
+_ACEOF
+
+fi
+
# Find out what GC implementation we want, or may, use.
# Check whether --with-gc or --without-gc was given.
--- gcc/config.in.jj 2005-12-27 17:31:45.000000000 +0100
+++ gcc/config.in 2006-01-31 14:20:26.000000000 +0100
@@ -1283,6 +1283,12 @@
#endif
+/* Define if TFmode long double should be the default */
+#ifndef USED_FOR_TARGET
+#undef TARGET_DEFAULT_LONG_DOUBLE_128
+#endif
+
+
/* Define if your target C library provides stack protector support */
#ifndef USED_FOR_TARGET
#undef TARGET_LIBC_PROVIDES_SSP
--- libstdc++-v3/libmath/stubs.c.jj 2005-11-12 18:07:17.000000000 +0100
+++ libstdc++-v3/libmath/stubs.c 2006-01-31 14:20:26.000000000 +0100
@@ -453,3 +453,87 @@ tanhl(long double x)
return tanh((double) x);
}
#endif
+
+#if defined(_GLIBCXX_SYMVER) && defined(PIC) \
+ && defined(_GLIBCXX_LONG_DOUBLE_COMPAT)
+
+#define _GLIBCXX_MATHL_WRAPPER0(name, argdecl, args) \
+double \
+__ ## name ## l_wrapper argdecl \
+{ \
+ return name args; \
+} \
+asm (".symver __ " #name "l_wrapper, " #name "l@GLIBCXX_3.4")
+#define _GLIBCXX_MATHL_WRAPPER(name) \
+ _GLIBCXX_MATHL_WRAPPER0 (name, (double x), (x))
+#define _GLIBCXX_MATHL_WRAPPER2(name) \
+ _GLIBCXX_MATHL_WRAPPER0 (name, (double x, double y), (x, y))
+
+#ifdef HAVE_ACOSL
+_GLIBCXX_MATHL_WRAPPER (acos);
+#endif
+#ifdef HAVE_ASINL
+_GLIBCXX_MATHL_WRAPPER (asin);
+#endif
+#ifdef HAVE_ATAN2L
+_GLIBCXX_MATHL_WRAPPER2 (atan2);
+#endif
+#ifdef HAVE_ATANL
+_GLIBCXX_MATHL_WRAPPER (atan);
+#endif
+#ifdef HAVE_CEILL
+_GLIBCXX_MATHL_WRAPPER (ceil);
+#endif
+#ifdef HAVE_COSHL
+_GLIBCXX_MATHL_WRAPPER (cosh);
+#endif
+#ifdef HAVE_COSL
+_GLIBCXX_MATHL_WRAPPER (cos);
+#endif
+#ifdef HAVE_EXPL
+_GLIBCXX_MATHL_WRAPPER (exp);
+#endif
+#ifdef HAVE_FLOORL
+_GLIBCXX_MATHL_WRAPPER (floor);
+#endif
+#ifdef HAVE_FMODL
+_GLIBCXX_MATHL_WRAPPER2 (fmod);
+#endif
+#ifdef HAVE_FREXPL
+_GLIBCXX_MATHL_WRAPPER0 (frexp, (double x, int *y), (x, y));
+#endif
+#ifdef HAVE_HYPOTL
+_GLIBCXX_MATHL_WRAPPER (hypot);
+#endif
+#ifdef HAVE_LDEXPL
+_GLIBCXX_MATHL_WRAPPER0 (ldexp, (double x, int y), (x, y));
+#endif
+#ifdef HAVE_LOG10L
+_GLIBCXX_MATHL_WRAPPER (log10);
+#endif
+#ifdef HAVE_LOGL
+_GLIBCXX_MATHL_WRAPPER (log);
+#endif
+#ifdef HAVE_MODL
+_GLIBCXX_MATHL_WRAPPER0 (mod, (double x, double *y), (x, y));
+#endif
+#ifdef HAVE_POWL
+_GLIBCXX_MATHL_WRAPPER2 (pow);
+#endif
+#ifdef HAVE_SINHL
+_GLIBCXX_MATHL_WRAPPER (sinh);
+#endif
+#ifdef HAVE_SINL
+_GLIBCXX_MATHL_WRAPPER (sin);
+#endif
+#ifdef HAVE_SQRTL
+_GLIBCXX_MATHL_WRAPPER (sqrt);
+#endif
+#ifdef HAVE_TANHL
+_GLIBCXX_MATHL_WRAPPER (tanh);
+#endif
+#ifdef HAVE_TANL
+_GLIBCXX_MATHL_WRAPPER (tan);
+#endif
+
+#endif // _GLIBCXX_LONG_DOUBLE_COMPAT
--- libstdc++-v3/include/bits/locale_facets.h.jj 2005-12-27 17:31:47.000000000 +0100
+++ libstdc++-v3/include/bits/locale_facets.h 2006-01-31 14:20:26.000000000 +0100
@@ -2111,6 +2111,14 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
ios_base::iostate& __err, void*& __v) const
{ return this->do_get(__in, __end, __io, __err, __v); }
+#if defined _GLIBCXX_LONG_DOUBLE_COMPAT && defined __LONG_DOUBLE_128__
+ private:
+ iter_type
+ __get(iter_type __in, iter_type __end, ios_base& __io,
+ ios_base::iostate& __err, double& __v) const
+ { return this->__do_get(__in, __end, __io, __err, __v); }
+#endif
+
protected:
/// Destructor.
virtual ~num_get() { }
@@ -2176,13 +2184,25 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
do_get(iter_type, iter_type, ios_base&, ios_base::iostate& __err,
double&) const;
+#if defined _GLIBCXX_LONG_DOUBLE_COMPAT && defined __LONG_DOUBLE_128__
+ virtual iter_type
+ __do_get(iter_type, iter_type, ios_base&, ios_base::iostate& __err,
+ double&) const;
+#else
virtual iter_type
do_get(iter_type, iter_type, ios_base&, ios_base::iostate& __err,
long double&) const;
+#endif
virtual iter_type
do_get(iter_type, iter_type, ios_base&, ios_base::iostate& __err,
void*&) const;
+
+#if defined _GLIBCXX_LONG_DOUBLE_COMPAT && defined __LONG_DOUBLE_128__
+ virtual iter_type
+ do_get(iter_type, iter_type, ios_base&, ios_base::iostate& __err,
+ long double&) const;
+#endif
//@}
};
@@ -2375,6 +2395,13 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
const void* __v) const
{ return this->do_put(__s, __f, __fill, __v); }
+#if defined _GLIBCXX_LONG_DOUBLE_COMPAT && defined __LONG_DOUBLE_128__
+ private:
+ iter_type
+ __put(iter_type __s, ios_base& __f, char_type __fill, double __v) const
+ { return this->__do_put(__s, __f, __fill, __v); }
+#endif
+
protected:
template<typename _ValueT>
iter_type
@@ -2438,11 +2465,21 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
virtual iter_type
do_put(iter_type, ios_base&, char_type __fill, double __v) const;
+#if defined _GLIBCXX_LONG_DOUBLE_COMPAT && defined __LONG_DOUBLE_128__
+ virtual iter_type
+ __do_put(iter_type, ios_base&, char_type __fill, double __v) const;
+#else
virtual iter_type
do_put(iter_type, ios_base&, char_type __fill, long double __v) const;
+#endif
virtual iter_type
do_put(iter_type, ios_base&, char_type __fill, const void* __v) const;
+
+#if defined _GLIBCXX_LONG_DOUBLE_COMPAT && defined __LONG_DOUBLE_128__
+ virtual iter_type
+ do_put(iter_type, ios_base&, char_type __fill, long double __v) const;
+#endif
//@}
};
@@ -4052,6 +4089,14 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
ios_base::iostate& __err, string_type& __digits) const
{ return this->do_get(__s, __end, __intl, __io, __err, __digits); }
+#if defined _GLIBCXX_LONG_DOUBLE_COMPAT && defined __LONG_DOUBLE_128__
+ private:
+ iter_type
+ __get(iter_type __s, iter_type __end, bool __intl, ios_base& __io,
+ ios_base::iostate& __err, double& __units) const
+ { return this->__do_get(__s, __end, __intl, __io, __err, __units); }
+#endif
+
protected:
/// Destructor.
virtual
@@ -4064,9 +4109,15 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
* value. This function is a hook for derived classes to change the
* value returned. @see get() for details.
*/
+#if defined _GLIBCXX_LONG_DOUBLE_COMPAT && defined __LONG_DOUBLE_128__
+ virtual iter_type
+ __do_get(iter_type __s, iter_type __end, bool __intl, ios_base& __io,
+ ios_base::iostate& __err, double& __units) const;
+#else
virtual iter_type
do_get(iter_type __s, iter_type __end, bool __intl, ios_base& __io,
ios_base::iostate& __err, long double& __units) const;
+#endif
/**
* @brief Read and parse a monetary value.
@@ -4079,6 +4130,12 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
do_get(iter_type __s, iter_type __end, bool __intl, ios_base& __io,
ios_base::iostate& __err, string_type& __digits) const;
+#if defined _GLIBCXX_LONG_DOUBLE_COMPAT && defined __LONG_DOUBLE_128__
+ virtual iter_type
+ do_get(iter_type __s, iter_type __end, bool __intl, ios_base& __io,
+ ios_base::iostate& __err, long double& __units) const;
+#endif
+
template<bool _Intl>
iter_type
_M_extract(iter_type __s, iter_type __end, ios_base& __io,
@@ -4168,6 +4225,14 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
char_type __fill, const string_type& __digits) const
{ return this->do_put(__s, __intl, __io, __fill, __digits); }
+#if defined _GLIBCXX_LONG_DOUBLE_COMPAT && defined __LONG_DOUBLE_128__
+ private:
+ iter_type
+ __put(iter_type __s, bool __intl, ios_base& __io,
+ char_type __fill, double __units) const
+ { return this->__do_put(__s, __intl, __io, __fill, __units); }
+#endif
+
protected:
/// Destructor.
virtual
@@ -4191,9 +4256,15 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
* @param units Place to store result of parsing.
* @return Iterator after writing.
*/
+#if defined _GLIBCXX_LONG_DOUBLE_COMPAT && defined __LONG_DOUBLE_128__
+ virtual iter_type
+ __do_put(iter_type __s, bool __intl, ios_base& __io, char_type __fill,
+ double __units) const;
+#else
virtual iter_type
do_put(iter_type __s, bool __intl, ios_base& __io, char_type __fill,
long double __units) const;
+#endif
/**
* @brief Format and output a monetary value.
@@ -4217,6 +4288,12 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
do_put(iter_type __s, bool __intl, ios_base& __io, char_type __fill,
const string_type& __digits) const;
+#if defined _GLIBCXX_LONG_DOUBLE_COMPAT && defined __LONG_DOUBLE_128__
+ virtual iter_type
+ do_put(iter_type __s, bool __intl, ios_base& __io, char_type __fill,
+ long double __units) const;
+#endif
+
template<bool _Intl>
iter_type
_M_insert(iter_type __s, ios_base& __io, char_type __fill,
--- libstdc++-v3/libsupc++/Makefile.am.jj 2006-01-03 09:24:34.000000000 +0100
+++ libstdc++-v3/libsupc++/Makefile.am 2006-01-31 14:20:26.000000000 +0100
@@ -66,12 +66,11 @@ sources = \
new_opvnt.cc \
pure.cc \
tinfo.cc \
- tinfo2.cc \
vec.cc \
vterminate.cc
-libsupc___la_SOURCES = $(sources) $(c_sources)
-libsupc__convenience_la_SOURCES = $(sources) $(c_sources)
+libsupc___la_SOURCES = $(sources) tinfo2.cc $(c_sources)
+libsupc__convenience_la_SOURCES = $(sources) tinfo3.cc $(c_sources)
glibcxxinstalldir = $(gxx_include_dir)
glibcxxinstall_HEADERS = $(headers)
@@ -86,7 +85,8 @@ AM_CXXFLAGS = \
$(LIBSUPCXX_PICFLAGS) \
$(WARN_CXXFLAGS) \
$(OPTIMIZE_CXXFLAGS) \
- $(CONFIG_CXXFLAGS)
+ $(CONFIG_CXXFLAGS) \
+ $(SYMVER_CXXFLAGS)
AM_MAKEFLAGS = \
"gxx_include_dir=$(gxx_include_dir)"
--- libstdc++-v3/libsupc++/Makefile.in.jj 2006-01-03 09:24:34.000000000 +0100
+++ libstdc++-v3/libsupc++/Makefile.in 2006-01-31 14:29:17.000000000 +0100
@@ -69,16 +69,16 @@ am__libsupc___la_SOURCES_DIST = del_op.c
eh_personality.cc eh_term_handler.cc eh_terminate.cc \
eh_throw.cc eh_type.cc eh_unex_handler.cc guard.cc \
new_handler.cc new_op.cc new_opnt.cc new_opv.cc new_opvnt.cc \
- pure.cc tinfo.cc tinfo2.cc vec.cc vterminate.cc cp-demangle.c
+ pure.cc tinfo.cc vec.cc vterminate.cc tinfo2.cc cp-demangle.c
am__objects_1 = del_op.lo del_opnt.lo del_opv.lo del_opvnt.lo \
eh_alloc.lo eh_arm.lo eh_aux_runtime.lo eh_call.lo eh_catch.lo \
eh_exception.lo eh_globals.lo eh_personality.lo \
eh_term_handler.lo eh_terminate.lo eh_throw.lo eh_type.lo \
eh_unex_handler.lo guard.lo new_handler.lo new_op.lo \
- new_opnt.lo new_opv.lo new_opvnt.lo pure.lo tinfo.lo tinfo2.lo \
- vec.lo vterminate.lo
+ new_opnt.lo new_opv.lo new_opvnt.lo pure.lo tinfo.lo vec.lo \
+ vterminate.lo
@GLIBCXX_HOSTED_TRUE@am__objects_2 = cp-demangle.lo
-am_libsupc___la_OBJECTS = $(am__objects_1) $(am__objects_2)
+am_libsupc___la_OBJECTS = $(am__objects_1) tinfo2.lo $(am__objects_2)
libsupc___la_OBJECTS = $(am_libsupc___la_OBJECTS)
libsupc__convenience_la_LIBADD =
am__libsupc__convenience_la_SOURCES_DIST = del_op.cc del_opnt.cc \
@@ -87,9 +87,10 @@ am__libsupc__convenience_la_SOURCES_DIST
eh_globals.cc eh_personality.cc eh_term_handler.cc \
eh_terminate.cc eh_throw.cc eh_type.cc eh_unex_handler.cc \
guard.cc new_handler.cc new_op.cc new_opnt.cc new_opv.cc \
- new_opvnt.cc pure.cc tinfo.cc tinfo2.cc vec.cc vterminate.cc \
+ new_opvnt.cc pure.cc tinfo.cc vec.cc vterminate.cc tinfo3.cc \
cp-demangle.c
-am_libsupc__convenience_la_OBJECTS = $(am__objects_1) $(am__objects_2)
+am_libsupc__convenience_la_OBJECTS = $(am__objects_1) tinfo3.lo \
+ $(am__objects_2)
libsupc__convenience_la_OBJECTS = \
$(am_libsupc__convenience_la_OBJECTS)
DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir)
@@ -211,6 +212,7 @@ SECTION_LDFLAGS = @SECTION_LDFLAGS@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
STRIP = @STRIP@
+SYMVER_CXXFLAGS = @SYMVER_CXXFLAGS@
SYMVER_FILE = @SYMVER_FILE@
TOPLEVEL_INCLUDES = @TOPLEVEL_INCLUDES@
USE_NLS = @USE_NLS@
@@ -337,12 +339,11 @@ sources = \
new_opvnt.cc \
pure.cc \
tinfo.cc \
- tinfo2.cc \
vec.cc \
vterminate.cc
-libsupc___la_SOURCES = $(sources) $(c_sources)
-libsupc__convenience_la_SOURCES = $(sources) $(c_sources)
+libsupc___la_SOURCES = $(sources) tinfo2.cc $(c_sources)
+libsupc__convenience_la_SOURCES = $(sources) tinfo3.cc $(c_sources)
glibcxxinstalldir = $(gxx_include_dir)
glibcxxinstall_HEADERS = $(headers)
@@ -356,7 +357,8 @@ AM_CXXFLAGS = \
$(LIBSUPCXX_PICFLAGS) \
$(WARN_CXXFLAGS) \
$(OPTIMIZE_CXXFLAGS) \
- $(CONFIG_CXXFLAGS)
+ $(CONFIG_CXXFLAGS) \
+ $(SYMVER_CXXFLAGS)
AM_MAKEFLAGS = \
"gxx_include_dir=$(gxx_include_dir)"
--- libstdc++-v3/libsupc++/tinfo3.cc.jj 2006-01-31 14:20:26.000000000 +0100
+++ libstdc++-v3/libsupc++/tinfo3.cc 2006-01-31 14:20:26.000000000 +0100
@@ -0,0 +1,18 @@
+#include "../config.h"
+
+#include "tinfo2.cc"
+
+#if defined(_GLIBCXX_SYMVER) && defined(PIC) \
+ && defined(_GLIBCXX_LONG_DOUBLE_COMPAT)
+
+#define _CXXABI_LDBL_SYMVER(dbl, ldbl) \
+ asm (".symver " #dbl "," #ldbl "@CXXABI_1.3"); \
+ asm (".symver " #ldbl "," #ldbl "@@CXXABI_LDBL_1.3")
+_CXXABI_LDBL_SYMVER (_ZTIPKd, _ZTIPKe);
+_CXXABI_LDBL_SYMVER (_ZTIPd, _ZTIPe);
+_CXXABI_LDBL_SYMVER (_ZTId, _ZTIe);
+_CXXABI_LDBL_SYMVER (_ZTSPKd, _ZTSPKe);
+_CXXABI_LDBL_SYMVER (_ZTSPd, _ZTSPe);
+_CXXABI_LDBL_SYMVER (_ZTSd, _ZTSe);
+
+#endif // _GLIBCXX_LONG_DOUBLE_COMPAT
--- libstdc++-v3/scripts/as_symver_filter.jj 2006-01-31 14:20:26.000000000 +0100
+++ libstdc++-v3/scripts/as_symver_filter 2006-01-31 14:20:26.000000000 +0100
@@ -0,0 +1,26 @@
+#!/bin/sh
+# Assembly filter put in between cc1 and as that allows to pretend
+# that .symver symbol, symbol@@SYMBOLVER is supported by replacing
+# all occurences of symbol except symbol@ with a unique symbol name.
+# In addition to this, it handles two artificial assembly directives:
+# .endchunk_start and .endchunk_end.
+# These surround a block of assembly that is placed at the end of
+# the assembly file.
+
+# First argument is the original assembly file (*.sv).
+# Second argument is a temporary file for sed script (*.se).
+# Third argument is either a name of the output assembly file (*.s)
+# or -, in which case the output is stdout.
+LC_ALL=C
+export LC_ALL
+sed -n -e 's/^.*[^ ]*\.symver[ ][ ]*\([A-Za-z0-9_.][A-Za-z0-9_.]*\)[ ]*,[ ]*\1@@.*$/\1/p' \
+ "$1" | \
+sed -e 's/^.*$/s~^&$~_U&~;s~^&[^A-Za-z0-9_.@]~_U\&~;s~\\([^A-Za-z0-9_.]\\)&$~\\1_U&~;s~\\([^A-Za-z0-9_.]\\)&\\([^A-Za-z0-9_.@]\\)~\\1_U&\\2~g;/' \
+ > "$2"
+echo '/^[ ]*\.endchunk_start[ ]*$/,/^[ ]*\.endchunk_end[ ]*$/{/^[ ]*\.endchunk_\(start\|end\)[ ]*$/!H;d};$G' \
+ >> "$2"
+if [ "x$3" = "x-" ]; then
+ sed -f "$2" "$1"
+else
+ sed -f "$2" "$1" > "$3"
+fi
--- libstdc++-v3/src/complex_io.cc.jj 2005-12-27 17:31:49.000000000 +0100
+++ libstdc++-v3/src/complex_io.cc 2006-01-31 14:24:07.000000000 +0100
@@ -92,3 +92,20 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
#endif //_GLIBCXX_USE_WCHAR_T
_GLIBCXX_END_NAMESPACE
+
+#if defined(_GLIBCXX_SYMVER) && defined(PIC) \
+ && defined(_GLIBCXX_LONG_DOUBLE_COMPAT)
+
+#define _GLIBCXX_LDBL_SYMVER(dbl, ldbl) \
+ asm (".symver " #dbl "," #ldbl "@GLIBCXX_3.4"); \
+ asm (".symver " #ldbl "," #ldbl "@@GLIBCXX_LDBL_3.4")
+_GLIBCXX_LDBL_SYMVER (_ZStlsIdcSt11char_traitsIcEERSt13basic_ostreamIT0_T1_ES6_RKSt7complexIT_E,
+ _ZStlsIecSt11char_traitsIcEERSt13basic_ostreamIT0_T1_ES6_RKSt7complexIT_E);
+_GLIBCXX_LDBL_SYMVER (_ZStlsIdwSt11char_traitsIwEERSt13basic_ostreamIT0_T1_ES6_RKSt7complexIT_E,
+ _ZStlsIewSt11char_traitsIwEERSt13basic_ostreamIT0_T1_ES6_RKSt7complexIT_E);
+_GLIBCXX_LDBL_SYMVER (_ZStrsIdcSt11char_traitsIcEERSt13basic_istreamIT0_T1_ES6_RSt7complexIT_E,
+ _ZStrsIecSt11char_traitsIcEERSt13basic_istreamIT0_T1_ES6_RSt7complexIT_E);
+_GLIBCXX_LDBL_SYMVER (_ZStrsIdwSt11char_traitsIwEERSt13basic_istreamIT0_T1_ES6_RSt7complexIT_E,
+ _ZStrsIewSt11char_traitsIwEERSt13basic_istreamIT0_T1_ES6_RSt7complexIT_E);
+
+#endif // _GLIBCXX_LONG_DOUBLE_COMPAT
--- libstdc++-v3/src/limits.cc.jj 2005-12-27 17:31:49.000000000 +0100
+++ libstdc++-v3/src/limits.cc 2006-01-31 14:25:06.000000000 +0100
@@ -448,3 +448,36 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
const float_round_style numeric_limits<long double>::round_style;
_GLIBCXX_END_NAMESPACE
+
+#if defined(_GLIBCXX_SYMVER) && defined(PIC) \
+ && defined(_GLIBCXX_LONG_DOUBLE_COMPAT)
+
+#define _GLIBCXX_NUM_LIM_SYMVER(member, len) \
+ asm (".symver _ZNSt14numeric_limitsIdE" #len #member "E," \
+ "_ZNSt14numeric_limitsIeE" #len #member "E@GLIBCXX_3.4"); \
+ asm (".symver _ZNSt14numeric_limitsIeE" #len #member "E," \
+ "_ZNSt14numeric_limitsIeE" #len #member "E@@GLIBCXX_LDBL_3.4")
+_GLIBCXX_NUM_LIM_SYMVER (is_specialized, 14);
+_GLIBCXX_NUM_LIM_SYMVER (digits, 6);
+_GLIBCXX_NUM_LIM_SYMVER (digits10, 8);
+_GLIBCXX_NUM_LIM_SYMVER (is_signed, 9);
+_GLIBCXX_NUM_LIM_SYMVER (is_integer, 10);
+_GLIBCXX_NUM_LIM_SYMVER (is_exact, 8);
+_GLIBCXX_NUM_LIM_SYMVER (radix, 5);
+_GLIBCXX_NUM_LIM_SYMVER (min_exponent, 12);
+_GLIBCXX_NUM_LIM_SYMVER (min_exponent10, 14);
+_GLIBCXX_NUM_LIM_SYMVER (max_exponent, 12);
+_GLIBCXX_NUM_LIM_SYMVER (max_exponent10, 14);
+_GLIBCXX_NUM_LIM_SYMVER (has_infinity, 12);
+_GLIBCXX_NUM_LIM_SYMVER (has_quiet_NaN, 13);
+_GLIBCXX_NUM_LIM_SYMVER (has_signaling_NaN, 17);
+_GLIBCXX_NUM_LIM_SYMVER (has_denorm, 10);
+_GLIBCXX_NUM_LIM_SYMVER (has_denorm_loss, 15);
+_GLIBCXX_NUM_LIM_SYMVER (is_iec559, 9);
+_GLIBCXX_NUM_LIM_SYMVER (is_bounded, 10);
+_GLIBCXX_NUM_LIM_SYMVER (is_modulo, 9);
+_GLIBCXX_NUM_LIM_SYMVER (traps, 5);
+_GLIBCXX_NUM_LIM_SYMVER (tinyness_before, 15);
+_GLIBCXX_NUM_LIM_SYMVER (round_style, 11);
+
+#endif // _GLIBCXX_LONG_DOUBLE_COMPAT
--- libstdc++-v3/src/Makefile.am.jj 2006-01-03 09:24:34.000000000 +0100
+++ libstdc++-v3/src/Makefile.am 2006-01-31 14:20:26.000000000 +0100
@@ -33,10 +33,15 @@ libstdc++-symbols.ver: ${glibcxx_srcdir
$(port_specific_symbol_files)
cp ${glibcxx_srcdir}/$(SYMVER_FILE) ./libstdc++-symbols.ver
if test "x$(port_specific_symbol_files)" != x; then \
- sed -n '1,/DO NOT DELETE/p' $@ > tmp.top; \
- sed -n '/DO NOT DELETE/,$$p' $@ > tmp.bottom; \
- cat tmp.top $(port_specific_symbol_files) tmp.bottom > $@; \
- rm tmp.top tmp.bottom; \
+ if grep '^# Appended to version file.' \
+ $(port_specific_symbol_files) /dev/null > /dev/null 2>&1; then \
+ cat $(port_specific_symbol_files) >> $@; \
+ else \
+ sed -n '1,/DO NOT DELETE/p' $@ > tmp.top; \
+ sed -n '/DO NOT DELETE/,$$p' $@ > tmp.bottom; \
+ cat tmp.top $(port_specific_symbol_files) tmp.bottom > $@; \
+ rm tmp.top tmp.bottom; \
+ fi; \
fi
if ENABLE_SYMVERS_GNU
@@ -202,7 +207,8 @@ AM_CXXFLAGS = \
-fno-implicit-templates \
$(WARN_CXXFLAGS) \
$(OPTIMIZE_CXXFLAGS) \
- $(CONFIG_CXXFLAGS)
+ $(CONFIG_CXXFLAGS) \
+ $(SYMVER_CXXFLAGS)
# libstdc++ libtool notes
--- libstdc++-v3/src/Makefile.in.jj 2006-01-03 09:24:34.000000000 +0100
+++ libstdc++-v3/src/Makefile.in 2006-01-31 14:29:18.000000000 +0100
@@ -189,6 +189,7 @@ SECTION_LDFLAGS = @SECTION_LDFLAGS@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
STRIP = @STRIP@
+SYMVER_CXXFLAGS = @SYMVER_CXXFLAGS@
SYMVER_FILE = @SYMVER_FILE@
TOPLEVEL_INCLUDES = @TOPLEVEL_INCLUDES@
USE_NLS = @USE_NLS@
@@ -381,7 +382,8 @@ AM_CXXFLAGS = \
-fno-implicit-templates \
$(WARN_CXXFLAGS) \
$(OPTIMIZE_CXXFLAGS) \
- $(CONFIG_CXXFLAGS)
+ $(CONFIG_CXXFLAGS) \
+ $(SYMVER_CXXFLAGS)
# libstdc++ libtool notes
@@ -681,10 +683,15 @@ uninstall-am: uninstall-info-am uninstal
@ENABLE_SYMVERS_TRUE@ $(port_specific_symbol_files)
@ENABLE_SYMVERS_TRUE@ cp ${glibcxx_srcdir}/$(SYMVER_FILE) ./libstdc++-symbols.ver
@ENABLE_SYMVERS_TRUE@ if test "x$(port_specific_symbol_files)" != x; then \
-@ENABLE_SYMVERS_TRUE@ sed -n '1,/DO NOT DELETE/p' $@ > tmp.top; \
-@ENABLE_SYMVERS_TRUE@ sed -n '/DO NOT DELETE/,$$p' $@ > tmp.bottom; \
-@ENABLE_SYMVERS_TRUE@ cat tmp.top $(port_specific_symbol_files) tmp.bottom > $@; \
-@ENABLE_SYMVERS_TRUE@ rm tmp.top tmp.bottom; \
+@ENABLE_SYMVERS_TRUE@ if grep '^# Appended to version file.' \
+@ENABLE_SYMVERS_TRUE@ $(port_specific_symbol_files) /dev/null > /dev/null 2>&1; then \
+@ENABLE_SYMVERS_TRUE@ cat $(port_specific_symbol_files) >> $@; \
+@ENABLE_SYMVERS_TRUE@ else \
+@ENABLE_SYMVERS_TRUE@ sed -n '1,/DO NOT DELETE/p' $@ > tmp.top; \
+@ENABLE_SYMVERS_TRUE@ sed -n '/DO NOT DELETE/,$$p' $@ > tmp.bottom; \
+@ENABLE_SYMVERS_TRUE@ cat tmp.top $(port_specific_symbol_files) tmp.bottom > $@; \
+@ENABLE_SYMVERS_TRUE@ rm tmp.top tmp.bottom; \
+@ENABLE_SYMVERS_TRUE@ fi; \
@ENABLE_SYMVERS_TRUE@ fi
@ENABLE_SYMVERS_DARWIN_TRUE@@ENABLE_SYMVERS_TRUE@libstdc++-symbols.explist : libstdc++-symbols.ver \
@ENABLE_SYMVERS_DARWIN_TRUE@@ENABLE_SYMVERS_TRUE@ ${glibcxx_srcdir}/scripts/make_exports.pl \
--- libstdc++-v3/src/istream-inst.cc.jj 2006-01-03 09:24:34.000000000 +0100
+++ libstdc++-v3/src/istream-inst.cc 2006-01-31 14:24:32.000000000 +0100
@@ -96,3 +96,15 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
#endif
_GLIBCXX_END_NAMESPACE
+
+#if defined(_GLIBCXX_SYMVER) && defined(PIC) \
+ && defined(_GLIBCXX_LONG_DOUBLE_COMPAT)
+
+#define _GLIBCXX_LDBL_SYMVER(dbl, ldbl) \
+ asm (".symver " #dbl "," #ldbl "@GLIBCXX_3.4"); \
+ asm (".symver " #ldbl "," #ldbl "@@GLIBCXX_LDBL_3.4")
+_GLIBCXX_LDBL_SYMVER (_ZNSirsERd, _ZNSirsERe);
+_GLIBCXX_LDBL_SYMVER (_ZNSt13basic_istreamIwSt11char_traitsIwEErsERd,
+ _ZNSt13basic_istreamIwSt11char_traitsIwEErsERe);
+
+#endif // _GLIBCXX_LONG_DOUBLE_COMPAT
--- libstdc++-v3/src/locale-inst.cc.jj 2005-12-27 17:31:49.000000000 +0100
+++ libstdc++-v3/src/locale-inst.cc 2006-01-31 14:26:55.000000000 +0100
@@ -37,6 +37,7 @@
// Instantiation configuration.
#ifndef C
# define C char
+# define Cc "c"
#endif
_GLIBCXX_BEGIN_NAMESPACE(std)
@@ -48,6 +49,30 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
template struct __moneypunct_cache<C, true>;
template class moneypunct_byname<C, false>;
template class moneypunct_byname<C, true>;
+#ifdef _GLIBCXX_LONG_DOUBLE_COMPAT
+ template<typename _CharT, typename _InIter>
+ _InIter
+ money_get<_CharT, _InIter>::
+ __do_get(iter_type __beg, iter_type __end, bool __intl, ios_base& __io,
+ ios_base::iostate& __err, double& __units) const
+ {
+ string __str;
+ if (__intl)
+ __beg = _M_extract<true>(__beg, __end, __io, __err, __str);
+ else
+ __beg = _M_extract<false>(__beg, __end, __io, __err, __str);
+ std::__convert_to_v(__str.c_str(), __units, __err, _S_get_c_locale());
+ return __beg;
+ }
+ template<typename _CharT, typename _OutIter>
+ _OutIter
+ money_put<_CharT, _OutIter>::
+ __do_put(iter_type __s, bool __intl, ios_base& __io, char_type __fill,
+ double __units) const
+ {
+ return this->do_put(__s, __intl, __io, __fill, (long double) __units);
+ }
+#endif
template class money_get<C, istreambuf_iterator<C> >;
template class money_put<C, ostreambuf_iterator<C> >;
template
@@ -78,6 +103,26 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
template class numpunct<C>;
template struct __numpunct_cache<C>;
template class numpunct_byname<C>;
+#ifdef _GLIBCXX_LONG_DOUBLE_COMPAT
+ template<typename _CharT, typename _InIter>
+ _InIter
+ num_get<_CharT, _InIter>::
+ __do_get(iter_type __beg, iter_type __end, ios_base& __io,
+ ios_base::iostate& __err, double& __v) const
+ {
+ string __xtrc;
+ __xtrc.reserve(32);
+ __beg = _M_extract_float(__beg, __end, __io, __err, __xtrc);
+ std::__convert_to_v(__xtrc.c_str(), __v, __err, _S_get_c_locale());
+ return __beg;
+ }
+
+ template<typename _CharT, typename _OutIter>
+ _OutIter
+ num_put<_CharT, _OutIter>::
+ __do_put(iter_type __s, ios_base& __io, char_type __fill, double __v) const
+ { return _M_insert_float(__s, __io, __fill, char(), __v); }
+#endif
template class num_get<C, istreambuf_iterator<C> >;
template class num_put<C, ostreambuf_iterator<C> >;
template
@@ -315,3 +360,64 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
#endif
_GLIBCXX_END_NAMESPACE
+
+#if defined(_GLIBCXX_SYMVER) && defined(PIC) \
+ && defined(_GLIBCXX_LONG_DOUBLE_COMPAT)
+
+#define _GLIBCXX_LDBLS_SYMVER(dbl, ldbl) \
+ asm (".symver " dbl "," ldbl "@GLIBCXX_3.4"); \
+ asm (".symver " ldbl "," ldbl "@@GLIBCXX_LDBL_3.4")
+#define _GLIBCXX_LDBL_SYM(ldbl) \
+ asm (".weak _W" ldbl "\n" \
+ ".set _W" ldbl ", " ldbl "\n" \
+ ".symver " ldbl ", " ldbl "@@GLIBCXX_LDBL_3.4")
+#if __LONG_MAX__ == 2147483647L
+#define _GLIBCXX_LDBL_VTABLE_ENTRY_SIZE 4
+#else
+#define _GLIBCXX_LDBL_VTABLE_ENTRY_SIZE 8
+#endif
+#define _GLIBCXX_LDBL_VTABLE_2(ldbl, size, entsize) \
+ asm ("\n.endchunk_start\n" \
+ ".weak _V" ldbl "\n" \
+ ".set _V" ldbl ", " ldbl "\n" \
+ ".size _V" ldbl ", " #size "*" #entsize "\n" \
+ ".symver _V" ldbl ", " ldbl "@GLIBCXX_3.4\n" \
+ ".symver " ldbl ", " ldbl "@@GLIBCXX_LDBL_3.4\n" \
+ ".type " ldbl ", @object\n" \
+ ".endchunk_end\n")
+#define _GLIBCXX_LDBL_VTABLE_1(ldbl, size, entsize) \
+ _GLIBCXX_LDBL_VTABLE_2 (ldbl, size, entsize)
+#define _GLIBCXX_LDBL_VTABLE(ldbl, size) \
+ _GLIBCXX_LDBL_VTABLE_1 (ldbl, size, _GLIBCXX_LDBL_VTABLE_ENTRY_SIZE)
+_GLIBCXX_LDBL_SYM ("_ZNKSt9money_getI"Cc"St19istreambuf_iteratorI"Cc"St11char_traitsI"Cc"EEE5__getES3_S3_bRSt8ios_baseRSt12_Ios_IostateRd");
+_GLIBCXX_LDBL_SYM ("_ZNKSt9money_getI"Cc"St19istreambuf_iteratorI"Cc"St11char_traitsI"Cc"EEE8__do_getES3_S3_bRSt8ios_baseRSt12_Ios_IostateRd");
+_GLIBCXX_LDBL_SYM ("_ZNKSt9money_putI"Cc"St19ostreambuf_iteratorI"Cc"St11char_traitsI"Cc"EEE5__putES3_bRSt8ios_base"Cc"d");
+_GLIBCXX_LDBL_SYM ("_ZNKSt9money_putI"Cc"St19ostreambuf_iteratorI"Cc"St11char_traitsI"Cc"EEE8__do_putES3_bRSt8ios_base"Cc"d");
+_GLIBCXX_LDBL_SYM ("_ZNKSt7num_getI"Cc"St19istreambuf_iteratorI"Cc"St11char_traitsI"Cc"EEE5__getES3_S3_RSt8ios_baseRSt12_Ios_IostateRd");
+_GLIBCXX_LDBL_SYM ("_ZNKSt7num_getI"Cc"St19istreambuf_iteratorI"Cc"St11char_traitsI"Cc"EEE8__do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRd");
+_GLIBCXX_LDBL_SYM ("_ZNKSt7num_putI"Cc"St19ostreambuf_iteratorI"Cc"St11char_traitsI"Cc"EEE5__putES3_RSt8ios_base"Cc"d");
+_GLIBCXX_LDBL_SYM ("_ZNKSt7num_putI"Cc"St19ostreambuf_iteratorI"Cc"St11char_traitsI"Cc"EEE8__do_putES3_RSt8ios_base"Cc"d");
+_GLIBCXX_LDBLS_SYMVER ("_W_ZNKSt7num_getI"Cc"St19istreambuf_iteratorI"Cc"St11char_traitsI"Cc"EEE5__getES3_S3_RSt8ios_baseRSt12_Ios_IostateRd",
+ "_ZNKSt7num_getI"Cc"St19istreambuf_iteratorI"Cc"St11char_traitsI"Cc"EEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRe");
+_GLIBCXX_LDBLS_SYMVER ("_W_ZNKSt7num_getI"Cc"St19istreambuf_iteratorI"Cc"St11char_traitsI"Cc"EEE8__do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRd",
+ "_ZNKSt7num_getI"Cc"St19istreambuf_iteratorI"Cc"St11char_traitsI"Cc"EEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRe");
+_GLIBCXX_LDBLS_SYMVER ("_ZNKSt7num_putI"Cc"St19ostreambuf_iteratorI"Cc"St11char_traitsI"Cc"EEE15_M_insert_floatIdEES3_S3_RSt8ios_base"Cc"cT_",
+ "_ZNKSt7num_putI"Cc"St19ostreambuf_iteratorI"Cc"St11char_traitsI"Cc"EEE15_M_insert_floatIeEES3_S3_RSt8ios_base"Cc"cT_");
+_GLIBCXX_LDBLS_SYMVER ("_W_ZNKSt7num_putI"Cc"St19ostreambuf_iteratorI"Cc"St11char_traitsI"Cc"EEE5__putES3_RSt8ios_base"Cc"d",
+ "_ZNKSt7num_putI"Cc"St19ostreambuf_iteratorI"Cc"St11char_traitsI"Cc"EEE3putES3_RSt8ios_base"Cc"e");
+_GLIBCXX_LDBLS_SYMVER ("_W_ZNKSt7num_putI"Cc"St19ostreambuf_iteratorI"Cc"St11char_traitsI"Cc"EEE8__do_putES3_RSt8ios_base"Cc"d",
+ "_ZNKSt7num_putI"Cc"St19ostreambuf_iteratorI"Cc"St11char_traitsI"Cc"EEE6do_putES3_RSt8ios_base"Cc"e");
+_GLIBCXX_LDBLS_SYMVER ("_W_ZNKSt9money_getI"Cc"St19istreambuf_iteratorI"Cc"St11char_traitsI"Cc"EEE5__getES3_S3_bRSt8ios_baseRSt12_Ios_IostateRd",
+ "_ZNKSt9money_getI"Cc"St19istreambuf_iteratorI"Cc"St11char_traitsI"Cc"EEE3getES3_S3_bRSt8ios_baseRSt12_Ios_IostateRe");
+_GLIBCXX_LDBLS_SYMVER ("_W_ZNKSt9money_getI"Cc"St19istreambuf_iteratorI"Cc"St11char_traitsI"Cc"EEE8__do_getES3_S3_bRSt8ios_baseRSt12_Ios_IostateRd",
+ "_ZNKSt9money_getI"Cc"St19istreambuf_iteratorI"Cc"St11char_traitsI"Cc"EEE6do_getES3_S3_bRSt8ios_baseRSt12_Ios_IostateRe");
+_GLIBCXX_LDBLS_SYMVER ("_W_ZNKSt9money_putI"Cc"St19ostreambuf_iteratorI"Cc"St11char_traitsI"Cc"EEE5__putES3_bRSt8ios_base"Cc"d",
+ "_ZNKSt9money_putI"Cc"St19ostreambuf_iteratorI"Cc"St11char_traitsI"Cc"EEE3putES3_bRSt8ios_base"Cc"e");
+_GLIBCXX_LDBLS_SYMVER ("_W_ZNKSt9money_putI"Cc"St19ostreambuf_iteratorI"Cc"St11char_traitsI"Cc"EEE8__do_putES3_bRSt8ios_base"Cc"d",
+ "_ZNKSt9money_putI"Cc"St19ostreambuf_iteratorI"Cc"St11char_traitsI"Cc"EEE6do_putES3_bRSt8ios_base"Cc"e");
+_GLIBCXX_LDBL_VTABLE ("_ZTVSt7num_getI"Cc"St19istreambuf_iteratorI"Cc"St11char_traitsI"Cc"EEE", 15);
+_GLIBCXX_LDBL_VTABLE ("_ZTVSt7num_putI"Cc"St19ostreambuf_iteratorI"Cc"St11char_traitsI"Cc"EEE", 12);
+_GLIBCXX_LDBL_VTABLE ("_ZTVSt9money_getI"Cc"St19istreambuf_iteratorI"Cc"St11char_traitsI"Cc"EEE", 6);
+_GLIBCXX_LDBL_VTABLE ("_ZTVSt9money_putI"Cc"St19ostreambuf_iteratorI"Cc"St11char_traitsI"Cc"EEE", 6);
+
+#endif // _GLIBCXX_LONG_DOUBLE_COMPAT
--- libstdc++-v3/src/ostream-inst.cc.jj 2006-01-03 09:24:34.000000000 +0100
+++ libstdc++-v3/src/ostream-inst.cc 2006-01-31 14:26:08.000000000 +0100
@@ -97,3 +97,15 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
#endif
_GLIBCXX_END_NAMESPACE
+
+#if defined(_GLIBCXX_SYMVER) && defined(PIC) \
+ && defined(_GLIBCXX_LONG_DOUBLE_COMPAT)
+
+#define _GLIBCXX_LDBL_SYMVER(dbl, ldbl) \
+ asm (".symver " #dbl "," #ldbl "@GLIBCXX_3.4"); \
+ asm (".symver " #ldbl "," #ldbl "@@GLIBCXX_LDBL_3.4")
+_GLIBCXX_LDBL_SYMVER (_ZNSolsEd, _ZNSolsEe);
+_GLIBCXX_LDBL_SYMVER (_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEd,
+ _ZNSt13basic_ostreamIwSt11char_traitsIwEElsEe);
+
+#endif // _GLIBCXX_LONG_DOUBLE_COMPAT
--- libstdc++-v3/src/wlocale-inst.cc.jj 2005-11-12 18:07:30.000000000 +0100
+++ libstdc++-v3/src/wlocale-inst.cc 2006-01-31 14:26:46.000000000 +0100
@@ -35,5 +35,6 @@
#ifdef _GLIBCXX_USE_WCHAR_T
#define C wchar_t
+#define Cc "w"
#include "locale-inst.cc"
#endif
--- libstdc++-v3/config/locale/gnu/c_locale.cc.jj 2005-12-27 17:31:51.000000000 +0100
+++ libstdc++-v3/config/locale/gnu/c_locale.cc 2006-01-31 14:27:49.000000000 +0100
@@ -135,3 +135,14 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
const char* const* const locale::_S_categories = __gnu_cxx::category_names;
_GLIBCXX_END_NAMESPACE
+
+#if defined(_GLIBCXX_SYMVER) && defined(PIC) \
+ && defined(_GLIBCXX_LONG_DOUBLE_COMPAT)
+
+#define _GLIBCXX_LDBL_SYMVER(dbl, ldbl) \
+ asm (".symver " #dbl "," #ldbl "@GLIBCXX_3.4"); \
+ asm (".symver " #ldbl "," #ldbl "@@GLIBCXX_LDBL_3.4")
+_GLIBCXX_LDBL_SYMVER (_ZSt14__convert_to_vIdEvPKcRT_RSt12_Ios_IostateRKP15__locale_struct,
+ _ZSt14__convert_to_vIeEvPKcRT_RSt12_Ios_IostateRKP15__locale_struct);
+
+#endif // _GLIBCXX_LONG_DOUBLE_COMPAT
--- libstdc++-v3/config/locale/generic/c_locale.cc.jj 2005-12-27 17:31:51.000000000 +0100
+++ libstdc++-v3/config/locale/generic/c_locale.cc 2006-01-31 14:28:08.000000000 +0100
@@ -171,3 +171,14 @@ _GLIBCXX_BEGIN_NAMESPACE(std)
const char* const* const locale::_S_categories = __gnu_cxx::category_names;
_GLIBCXX_END_NAMESPACE
+
+#if defined(_GLIBCXX_SYMVER) && defined(PIC) \
+ && defined(_GLIBCXX_LONG_DOUBLE_COMPAT)
+
+#define _GLIBCXX_LDBL_SYMVER(dbl, ldbl) \
+ asm (".symver " #dbl "," #ldbl "@GLIBCXX_3.4"); \
+ asm (".symver " #ldbl "," #ldbl "@@GLIBCXX_LDBL_3.4")
+_GLIBCXX_LDBL_SYMVER (_ZSt14__convert_to_vIdEvPKcRT_RSt12_Ios_IostateRKP15__locale_struct,
+ _ZSt14__convert_to_vIeEvPKcRT_RSt12_Ios_IostateRKP15__locale_struct);
+
+#endif // _GLIBCXX_LONG_DOUBLE_COMPAT
--- libstdc++-v3/config/os/gnu-linux/ldbl-extra.ver.jj 2006-01-31 14:20:26.000000000 +0100
+++ libstdc++-v3/config/os/gnu-linux/ldbl-extra.ver 2006-01-31 14:20:26.000000000 +0100
@@ -0,0 +1,39 @@
+# Appended to version file.
+
+GLIBCXX_LDBL_3.4 {
+ _ZNSt14numeric_limitsIe*;
+ _ZNKSt7num_getI[cw]St19istreambuf_iteratorI[cw]St11char_traitsI[cw]EEE3getES3_S3_RSt8ios_baseRSt12_Ios_IostateRe;
+ _ZNKSt7num_getI[cw]St19istreambuf_iteratorI[cw]St11char_traitsI[cw]EEE5__getES3_S3_RSt8ios_baseRSt12_Ios_IostateRd;
+ _ZNKSt7num_getI[cw]St19istreambuf_iteratorI[cw]St11char_traitsI[cw]EEE6do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRe;
+ _ZNKSt7num_getI[cw]St19istreambuf_iteratorI[cw]St11char_traitsI[cw]EEE8__do_getES3_S3_RSt8ios_baseRSt12_Ios_IostateRd;
+ _ZTVSt7num_getI[cw]St19istreambuf_iteratorI[cw]St11char_traitsI[cw]EEE;
+ _ZNKSt7num_putI[cw]St19ostreambuf_iteratorI[cw]St11char_traitsI[cw]EEE15_M_insert_floatIeEES3_S3_RSt8ios_base[cw]cT_;
+ _ZNKSt7num_putI[cw]St19ostreambuf_iteratorI[cw]St11char_traitsI[cw]EEE3putES3_RSt8ios_base[cw]e;
+ _ZNKSt7num_putI[cw]St19ostreambuf_iteratorI[cw]St11char_traitsI[cw]EEE5__putES3_RSt8ios_base[cw]d;
+ _ZNKSt7num_putI[cw]St19ostreambuf_iteratorI[cw]St11char_traitsI[cw]EEE6do_putES3_RSt8ios_base[cw]e;
+ _ZNKSt7num_putI[cw]St19ostreambuf_iteratorI[cw]St11char_traitsI[cw]EEE8__do_putES3_RSt8ios_base[cw]d;
+ _ZTVSt7num_putI[cw]St19ostreambuf_iteratorI[cw]St11char_traitsI[cw]EEE;
+ _ZNKSt9money_getI[cw]St19istreambuf_iteratorI[cw]St11char_traitsI[cw]EEE3getES3_S3_bRSt8ios_baseRSt12_Ios_IostateRe;
+ _ZNKSt9money_getI[cw]St19istreambuf_iteratorI[cw]St11char_traitsI[cw]EEE5__getES3_S3_bRSt8ios_baseRSt12_Ios_IostateRd;
+ _ZNKSt9money_getI[cw]St19istreambuf_iteratorI[cw]St11char_traitsI[cw]EEE6do_getES3_S3_bRSt8ios_baseRSt12_Ios_IostateRe;
+ _ZNKSt9money_getI[cw]St19istreambuf_iteratorI[cw]St11char_traitsI[cw]EEE8__do_getES3_S3_bRSt8ios_baseRSt12_Ios_IostateRd;
+ _ZTVSt9money_getI[cw]St19istreambuf_iteratorI[cw]St11char_traitsI[cw]EEE;
+ _ZNKSt9money_putI[cw]St19ostreambuf_iteratorI[cw]St11char_traitsI[cw]EEE3putES3_bRSt8ios_base[cw]e;
+ _ZNKSt9money_putI[cw]St19ostreambuf_iteratorI[cw]St11char_traitsI[cw]EEE5__putES3_bRSt8ios_base[cw]d;
+ _ZNKSt9money_putI[cw]St19ostreambuf_iteratorI[cw]St11char_traitsI[cw]EEE6do_putES3_bRSt8ios_base[cw]e;
+ _ZNKSt9money_putI[cw]St19ostreambuf_iteratorI[cw]St11char_traitsI[cw]EEE8__do_putES3_bRSt8ios_base[cw]d;
+ _ZTVSt9money_putI[cw]St19ostreambuf_iteratorI[cw]St11char_traitsI[cw]EEE;
+ _ZNSirsERe;
+ _ZNSolsEe;
+ _ZNSt13basic_istreamIwSt11char_traitsIwEErsERe;
+ _ZNSt13basic_ostreamIwSt11char_traitsIwEElsEe;
+ _ZSt14__convert_to_vIeEvPKcRT_RSt12_Ios_IostateRKP15__locale_struct;
+ _ZStlsIe[cw]St11char_traitsI[cw]EERSt13basic_ostreamIT0_T1_ES6_RKSt7complexIT_E;
+ _ZStrsIe[cw]St11char_traitsI[cw]EERSt13basic_istreamIT0_T1_ES6_RSt7complexIT_E;
+};
+
+CXXABI_LDBL_1.3 {
+ _ZT[IS]e;
+ _ZT[IS]Pe;
+ _ZT[IS]PKe;
+};
--- libstdc++-v3/configure.jj 2006-01-31 14:06:41.000000000 +0100
+++ libstdc++-v3/configure 2006-01-31 14:22:48.000000000 +0100
@@ -309,7 +309,7 @@ ac_includes_default="\
# include <unistd.h>
#endif"
-ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS libtool_VERSION multi_basedir build build_cpu build_vendor build_os host host_cpu host_vendor host_os target target_cpu target_vendor target_os INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA CYGPATH_W PACKAGE VERSION ACLOCAL AUTOCONF AUTOMAKE AUTOHEADER MAKEINFO install_sh STRIP ac_ct_STRIP INSTALL_STRIP_PROGRAM mkdir_p AWK SET_MAKE am__leading_dot AMTAR am__tar am__untar glibcxx_builddir glibcxx_srcdir toplevel_srcdir CC ac_ct_CC EXEEXT OBJEXT CXX ac_ct_CXX CFLAGS CXXFLAGS LN_S AS ac_ct_AS AR ac_ct_AR RANLIB ac_ct_RANLIB MAINTAINER_MODE_TRUE MAINTAINER_MODE_FALSE MAINT LIBTOOL CXXCPP CPPFLAGS enable_shared enable_static GLIBCXX_HOSTED_TRUE GLIBCXX_HOSTED_FALSE GLIBCXX_BUILD_PCH_TRUE GLIBCXX_BUILD_PCH_FALSE glibcxx_PCHFLAGS CSTDIO_H BASIC_FILE_H BASIC_FILE_CC CPP EGREP check_msgfmt glibcxx_MOFILES glibcxx_POFILES glibcxx_localedir USE_NLS CLOCALE_H CMESSAGES_H CCODECVT_CC CCOLLATE_CC CCTYPE_CC CMESSAGES_CC CMONEY_CC CNUMERIC_CC CTIME_H CTIME_CC CLOCALE_CC CLOCALE_INTERNAL_H ALLOCATOR_H ALLOCATOR_NAME C_INCLUDE_DIR GLIBCXX_C_HEADERS_C_TRUE GLIBCXX_C_HEADERS_C_FALSE GLIBCXX_C_HEADERS_C_STD_TRUE GLIBCXX_C_HEADERS_C_STD_FALSE GLIBCXX_C_HEADERS_COMPATIBILITY_TRUE GLIBCXX_C_HEADERS_COMPATIBILITY_FALSE DEBUG_FLAGS GLIBCXX_BUILD_DEBUG_TRUE GLIBCXX_BUILD_DEBUG_FALSE EXTRA_CXX_FLAGS glibcxx_thread_h WERROR SECTION_FLAGS SECTION_LDFLAGS OPT_LDFLAGS LIBMATHOBJS LIBICONV SYMVER_FILE port_specific_symbol_files ENABLE_SYMVERS_TRUE ENABLE_SYMVERS_FALSE ENABLE_SYMVERS_GNU_TRUE ENABLE_SYMVERS_GNU_FALSE ENABLE_SYMVERS_GNU_NAMESPACE_TRUE ENABLE_SYMVERS_GNU_NAMESPACE_FALSE ENABLE_SYMVERS_DARWIN_TRUE ENABLE_SYMVERS_DARWIN_FALSE baseline_dir ATOMICITY_SRCDIR ATOMIC_WORD_SRCDIR CPU_DEFINES_SRCDIR ABI_TWEAKS_SRCDIR OS_INC_SRCDIR glibcxx_prefixdir gxx_include_dir glibcxx_toolexecdir glibcxx_toolexeclibdir GLIBCXX_INCLUDES TOPLEVEL_INCLUDES OPTIMIZE_CXXFLAGS WARN_FLAGS LIBSUPCXX_PICFLAGS LIBOBJS LTLIBOBJS'
+ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS libtool_VERSION multi_basedir build build_cpu build_vendor build_os host host_cpu host_vendor host_os target target_cpu target_vendor target_os INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA CYGPATH_W PACKAGE VERSION ACLOCAL AUTOCONF AUTOMAKE AUTOHEADER MAKEINFO install_sh STRIP ac_ct_STRIP INSTALL_STRIP_PROGRAM mkdir_p AWK SET_MAKE am__leading_dot AMTAR am__tar am__untar glibcxx_builddir glibcxx_srcdir toplevel_srcdir CC ac_ct_CC EXEEXT OBJEXT CXX ac_ct_CXX CFLAGS CXXFLAGS LN_S AS ac_ct_AS AR ac_ct_AR RANLIB ac_ct_RANLIB MAINTAINER_MODE_TRUE MAINTAINER_MODE_FALSE MAINT LIBTOOL CXXCPP CPPFLAGS enable_shared enable_static GLIBCXX_HOSTED_TRUE GLIBCXX_HOSTED_FALSE GLIBCXX_BUILD_PCH_TRUE GLIBCXX_BUILD_PCH_FALSE glibcxx_PCHFLAGS CSTDIO_H BASIC_FILE_H BASIC_FILE_CC CPP EGREP check_msgfmt glibcxx_MOFILES glibcxx_POFILES glibcxx_localedir USE_NLS CLOCALE_H CMESSAGES_H CCODECVT_CC CCOLLATE_CC CCTYPE_CC CMESSAGES_CC CMONEY_CC CNUMERIC_CC CTIME_H CTIME_CC CLOCALE_CC CLOCALE_INTERNAL_H ALLOCATOR_H ALLOCATOR_NAME C_INCLUDE_DIR GLIBCXX_C_HEADERS_C_TRUE GLIBCXX_C_HEADERS_C_FALSE GLIBCXX_C_HEADERS_C_STD_TRUE GLIBCXX_C_HEADERS_C_STD_FALSE GLIBCXX_C_HEADERS_COMPATIBILITY_TRUE GLIBCXX_C_HEADERS_COMPATIBILITY_FALSE DEBUG_FLAGS GLIBCXX_BUILD_DEBUG_TRUE GLIBCXX_BUILD_DEBUG_FALSE EXTRA_CXX_FLAGS glibcxx_thread_h WERROR SECTION_FLAGS SECTION_LDFLAGS OPT_LDFLAGS LIBMATHOBJS LIBICONV SYMVER_FILE port_specific_symbol_files ENABLE_SYMVERS_TRUE ENABLE_SYMVERS_FALSE ENABLE_SYMVERS_GNU_TRUE ENABLE_SYMVERS_GNU_FALSE ENABLE_SYMVERS_GNU_NAMESPACE_TRUE ENABLE_SYMVERS_GNU_NAMESPACE_FALSE ENABLE_SYMVERS_DARWIN_TRUE ENABLE_SYMVERS_DARWIN_FALSE baseline_dir SYMVER_CXXFLAGS ATOMICITY_SRCDIR ATOMIC_WORD_SRCDIR CPU_DEFINES_SRCDIR ABI_TWEAKS_SRCDIR OS_INC_SRCDIR glibcxx_prefixdir gxx_include_dir glibcxx_toolexecdir glibcxx_toolexeclibdir GLIBCXX_INCLUDES TOPLEVEL_INCLUDES OPTIMIZE_CXXFLAGS WARN_FLAGS LIBSUPCXX_PICFLAGS LIBOBJS LTLIBOBJS'
ac_subst_files=''
# Initialize some variables set by options.
@@ -89646,6 +89646,77 @@ done
+SYMVER_CXXFLAGS=
+case "$target" in
+ powerpc*-*-*gnu* | \
+ sparc*-*-linux* | \
+ s390*-*-linux* | \
+ alpha*-*-linux*)
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+#if !defined __LONG_DOUBLE_128__ || (defined (__sparc__) && defined (__arch64__))
+#error no need for long double compatibility
+#endif
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ { ac_try='test -z "$ac_c_werror_flag"
+ || test ! -s conftest.err'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; } &&
+ { ac_try='test -s conftest.$ac_objext'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_ldbl_compat=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ac_ldbl_compat=no
+fi
+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
+ if test "$ac_ldbl_compat" = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define _GLIBCXX_LONG_DOUBLE_COMPAT 1
+_ACEOF
+
+ port_specific_symbol_files="\$(top_srcdir)/config/os/gnu-linux/ldbl-extra.ver"
+ $CC $CFLAGS -dumpspecs \
+ | sed '/^\*invoke_as:/{N;s/%{!S:-o %|.s |/%{!S:-o %{DPIC:%g.sv |/;a\
+ as_symver_filter %g.sv %g.se %|.s ;:%|.s } |
+;}' > as_symver_specs
+ SYMVER_CXXFLAGS="-specs=\$(top_builddir)/as_symver_specs -B\$(top_srcdir)/scripts/"
+ fi
+esac
+
+
# Propagate the target-specific source directories through the build chain.
ATOMICITY_SRCDIR=config/${atomicity_dir}
ATOMIC_WORD_SRCDIR=config/${atomic_word_dir}
@@ -90819,6 +90890,7 @@ s,@ENABLE_SYMVERS_GNU_NAMESPACE_FALSE@,$
s,@ENABLE_SYMVERS_DARWIN_TRUE@,$ENABLE_SYMVERS_DARWIN_TRUE,;t t
s,@ENABLE_SYMVERS_DARWIN_FALSE@,$ENABLE_SYMVERS_DARWIN_FALSE,;t t
s,@baseline_dir@,$baseline_dir,;t t
+s,@SYMVER_CXXFLAGS@,$SYMVER_CXXFLAGS,;t t
s,@ATOMICITY_SRCDIR@,$ATOMICITY_SRCDIR,;t t
s,@ATOMIC_WORD_SRCDIR@,$ATOMIC_WORD_SRCDIR,;t t
s,@CPU_DEFINES_SRCDIR@,$CPU_DEFINES_SRCDIR,;t t
--- libstdc++-v3/configure.ac.jj 2006-01-26 16:36:02.000000000 +0100
+++ libstdc++-v3/configure.ac 2006-01-31 14:20:26.000000000 +0100
@@ -287,6 +287,30 @@ GLIBCXX_ENABLE_SYMVERS([yes])
# This depends on GLIBCXX_ENABLE_SYMVERS and GLIBCXX_IS_NATIVE.
GLIBCXX_CONFIGURE_TESTSUITE
+SYMVER_CXXFLAGS=
+case "$target" in
+ powerpc*-*-*gnu* | \
+ sparc*-*-linux* | \
+ s390*-*-linux* | \
+ alpha*-*-linux*)
+ AC_TRY_COMPILE(, [
+#if !defined __LONG_DOUBLE_128__ || (defined (__sparc__) && defined (__arch64__))
+#error no need for long double compatibility
+#endif
+ ], [ac_ldbl_compat=yes], [ac_ldbl_compat=no])
+ if test "$ac_ldbl_compat" = yes; then
+ AC_DEFINE([_GLIBCXX_LONG_DOUBLE_COMPAT],1,
+ [Define if compatibility should be provided for -mlong-double-64.])
+ port_specific_symbol_files="\$(top_srcdir)/config/os/gnu-linux/ldbl-extra.ver"
+ $CC $CFLAGS -dumpspecs \
+ | sed '/^\*invoke_as:/{N;s/%{!S:-o %|.s |/%{!S:-o %{DPIC:%g.sv |/;a\
+ as_symver_filter %g.sv %g.se %|.s ;:%|.s } |
+;}' > as_symver_specs
+ SYMVER_CXXFLAGS="-specs=\$(top_builddir)/as_symver_specs -B\$(top_srcdir)/scripts/"
+ fi
+esac
+AC_SUBST(SYMVER_CXXFLAGS)
+
# Propagate the target-specific source directories through the build chain.
ATOMICITY_SRCDIR=config/${atomicity_dir}
ATOMIC_WORD_SRCDIR=config/${atomic_word_dir}
--- libstdc++-v3/config.h.in.jj 2006-01-31 14:06:41.000000000 +0100
+++ libstdc++-v3/config.h.in 2006-01-31 14:20:26.000000000 +0100
@@ -661,6 +661,9 @@
/* Define to 1 if a full hosted library is built, or 0 if freestanding. */
#undef _GLIBCXX_HOSTED
+/* Define if compatibility should be provided for -mlong-double-64. */
+#undef _GLIBCXX_LONG_DOUBLE_COMPAT
+
/* Define if ptrdiff_t is int. */
#undef _GLIBCXX_PTRDIFF_T_IS_INT
--- libstdc++-v3/Makefile.in.jj 2005-12-27 17:31:55.000000000 +0100
+++ libstdc++-v3/Makefile.in 2006-01-31 14:29:18.000000000 +0100
@@ -187,6 +187,7 @@ SECTION_LDFLAGS = @SECTION_LDFLAGS@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
STRIP = @STRIP@
+SYMVER_CXXFLAGS = @SYMVER_CXXFLAGS@
SYMVER_FILE = @SYMVER_FILE@
TOPLEVEL_INCLUDES = @TOPLEVEL_INCLUDES@
USE_NLS = @USE_NLS@
Jakub
- References:
- [RFC PATCH] Optionally use -mlong-double-128 by default on {powerpc{,64},s390{,x},sparc,alpha}-linux
- Re: [RFC PATCH] Optionally use -mlong-double-128 by default on {powerpc{,64},s390{,x},sparc,alpha}-linux
- Re: [RFC PATCH] Optionally use -mlong-double-128 by default on {powerpc{,64},s390{,x},sparc,alpha}-linux