]> git.pld-linux.org Git - packages/gcc.git/blob - gcc-ldbl-default-libstdc++.patch
475d15a569cf5426a705f5d3a405df3e4c8a1fce
[packages/gcc.git] / gcc-ldbl-default-libstdc++.patch
1 2006-02-07  Jakub Jelinek  <jakub@redhat.com>
2             Benjamin Kosnik  <bkoz@redhat.com>
3
4         * configure.ac (_GLIBCXX_LONG_DOUBLE_COMPAT): New check.
5         If true, set also port_specific_symbol_files and create
6         as_symver_specs.
7         (GLIBCXX_LDBL_COMPAT): New GLIBCXX_CONDITIONAL.
8         * configure: Rebuilt.
9         * config.h.in: Rebuilt.
10         * config/os/gnu-linux/ldbl-extra.ver: New file.
11         * config/linker-map.gnu: Make sure no __float128 symbols are
12         exported.
13         * include/bits/c++config (_GLIBCXX_LONG_DOUBLE_COMPAT,
14         _GLIBCXX_LDBL_NAMESPACE, _GLIBCXX_BEGIN_LDBL_NAMESPACE,
15         _GLIBCXX_END_LDBL_NAMESPACE): Define.
16         * include/bits/localefwd.h: Use them to conditionally scope facets.
17         * include/bits/locale_facets.h: Surround std::{money,num}_{get,put}
18         with _GLIBCXX_BEGIN_LDBL_NAMESPACE and _GLIBCXX_END_LDBL_NAMESPACE.
19         [_GLIBCXX_LONG_DOUBLE_COMPAT] (std::money_get): Add __do_get method.
20         [_GLIBCXX_LONG_DOUBLE_COMPAT] (std::money_put): Add __do_put method.
21         [_GLIBCXX_LONG_DOUBLE_COMPAT] (std::num_get): Add __do_get method.
22         [_GLIBCXX_LONG_DOUBLE_COMPAT] (std::num_put): Add __do_put method.
23         * include/bits/locale_facets.tcc: Surround std::{money,num}_{get,put}
24         with _GLIBCXX_BEGIN_LDBL_NAMESPACE and _GLIBCXX_END_LDBL_NAMESPACE.
25         (std::money_get::__do_get, std::money_put::__do_put,
26         std::num_get::__do_get, std::num_put::__do_put): New
27         specializations.
28         * include/Makefile.am: Conditionally define
29         _GLIBCXX_LONG_DOUBLE_COMPAT in c++config.
30         * include/Makefile.in: Regenerate.
31         * src/locale.cc [_GLIBCXX_LONG_DOUBLE_COMPAT] (_GLIBCXX_LOC_ID,
32         _GLIBCXX_SYNC_ID): Define, use them.
33         * src/compatibility-ldbl.cc: New file.
34         * src/complex_io.cc [_GLIBCXX_LONG_DOUBLE_COMPAT]: Add compatibility
35         symbols.
36         * src/limits.cc [_GLIBCXX_LONG_DOUBLE_COMPAT]: Likewise.
37         * src/locale.cc [_GLIBCXX_LONG_DOUBLE_COMPAT]: Likewise.
38         * src/locale-inst.cc [_GLIBCXX_LONG_DOUBLE_COMPAT]: Likewise.   
39         * src/locale-misc-inst.cc [_GLIBCXX_LONG_DOUBLE_COMPAT]: Likewise.
40         * src/istream-inst.cc [_GLIBCXX_LONG_DOUBLE_COMPAT]: Likewise.
41         * src/ostream-inst.cc [_GLIBCXX_LONG_DOUBLE_COMPAT]: Likewise.
42         * src/locale.cc [_GLIBCXX_LONG_DOUBLE_COMPAT]: Likewise.
43         * src/wlocale-inst.cc [_GLIBCXX_LONG_DOUBLE_COMPAT]: Likewise.
44         * src/compatibility.cc [_GLIBCXX_LONG_DOUBLE_COMPAT]: Likewise.
45         * config/locale/generic/c_locale.cc [_GLIBCXX_LONG_DOUBLE_COMPAT]:
46         Likewise.
47         * config/locale/gnu/c_locale.cc [_GLIBCXX_LONG_DOUBLE_COMPAT]:
48         Likewise.
49         * src/Makefile.am (libstdc++-symbol.ver): Append instead of
50         insert in the middle if port specific symbol file requests it.
51         (ldbl_compat_sources): New variable.
52         (sources): Use it.
53         (compatibility-ldbl.lo, compatibility-ldbl.o): New rules.
54         * src/Makefile.in: Rebuilt.
55         * testsuite/testsuite_abi.cc: Recognize GLIBCXX_LDBL_3.4,
56         GLIBCXX_LDBL_3.4.7, CXXABI_LDBL_1.3.    
57
58 --- libstdc++-v3/configure.ac.jj        2006-02-02 16:38:33.000000000 +0100
59 +++ libstdc++-v3/configure.ac   2006-02-10 14:53:36.000000000 +0100
60 @@ -281,6 +281,25 @@ fi
61  # This depends on GLIBCXX CHECK_LINKER_FEATURES, but without it assumes no.
62  GLIBCXX_ENABLE_SYMVERS([yes])
63  
64 +ac_ldbl_compat=no
65 +case "$target" in
66 +  powerpc*-*-*gnu* | \
67 +  sparc*-*-linux* | \
68 +  s390*-*-linux* | \
69 +  alpha*-*-linux*)
70 +  AC_TRY_COMPILE(, [
71 +#if !defined __LONG_DOUBLE_128__ || (defined(__sparc__) && defined(__arch64__))
72 +#error no need for long double compatibility
73 +#endif
74 +  ], [ac_ldbl_compat=yes], [ac_ldbl_compat=no])
75 +  if test "$ac_ldbl_compat" = yes; then
76 +    AC_DEFINE([_GLIBCXX_LONG_DOUBLE_COMPAT],1,
77 +             [Define if compatibility should be provided for -mlong-double-64.])
78 +    port_specific_symbol_files="\$(top_srcdir)/config/os/gnu-linux/ldbl-extra.ver"
79 +  fi
80 +esac
81 +GLIBCXX_CONDITIONAL(GLIBCXX_LDBL_COMPAT, test $ac_ldbl_compat = yes)
82 +
83  # This depends on GLIBCXX_ENABLE_SYMVERS and GLIBCXX_IS_NATIVE.
84  GLIBCXX_CONFIGURE_TESTSUITE
85  
86 --- libstdc++-v3/src/locale.cc.jj       2006-02-02 16:38:25.000000000 +0100
87 +++ libstdc++-v3/src/locale.cc  2006-02-10 14:57:26.000000000 +0100
88 @@ -1,4 +1,4 @@
89 -// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005
90 +// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006
91  // Free Software Foundation, Inc.
92  //
93  // This file is part of the GNU ISO C++ Library.  This library is free
94 @@ -41,6 +41,21 @@ namespace __gnu_internal
95    static __glibcxx_mutex_define_initialized(locale_cache_mutex);
96  }
97  
98 +// XXX GLIBCXX_ABI Deprecated
99 +#ifdef _GLIBCXX_LONG_DOUBLE_COMPAT
100 +# define _GLIBCXX_LOC_ID(mangled) extern std::locale::id mangled
101 +_GLIBCXX_LOC_ID (_ZNSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE);
102 +_GLIBCXX_LOC_ID (_ZNSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE);
103 +_GLIBCXX_LOC_ID (_ZNSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE);
104 +_GLIBCXX_LOC_ID (_ZNSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE);
105 +# ifdef _GLIBCXX_USE_WCHAR_T
106 +_GLIBCXX_LOC_ID (_ZNSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE);
107 +_GLIBCXX_LOC_ID (_ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE);
108 +_GLIBCXX_LOC_ID (_ZNSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE);
109 +_GLIBCXX_LOC_ID (_ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE);
110 +# endif
111 +#endif
112 +
113  namespace std 
114  {
115    // Definitions for static const data members of locale.
116 @@ -398,9 +413,29 @@ namespace std 
117    locale::id::_M_id() const
118    {
119      if (!_M_index)
120 -      _M_index = 1 + __gnu_cxx::__exchange_and_add(&_S_refcount, 1);
121 +      {
122 +       // XXX GLIBCXX_ABI Deprecated
123 +#ifdef _GLIBCXX_LONG_DOUBLE_COMPAT
124 +       locale::id *f = 0;
125 +# define _GLIBCXX_SYNC_ID(facet, mangled) \
126 +       if (this == &::mangled)                         \
127 +         f = &facet::id
128 +       _GLIBCXX_SYNC_ID (num_get<char>, _ZNSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE);
129 +       _GLIBCXX_SYNC_ID (num_put<char>, _ZNSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE);
130 +       _GLIBCXX_SYNC_ID (money_get<char>, _ZNSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE);
131 +       _GLIBCXX_SYNC_ID (money_put<char>, _ZNSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE);
132 +# ifdef _GLIBCXX_USE_WCHAR_T
133 +       _GLIBCXX_SYNC_ID (num_get<wchar_t>, _ZNSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE);
134 +       _GLIBCXX_SYNC_ID (num_put<wchar_t>, _ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE);
135 +       _GLIBCXX_SYNC_ID (money_get<wchar_t>, _ZNSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE);
136 +       _GLIBCXX_SYNC_ID (money_put<wchar_t>, _ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE);
137 +# endif
138 +       if (f)
139 +         _M_index = 1 + f->_M_id();
140 +       else
141 +#endif
142 +         _M_index = 1 + __gnu_cxx::__exchange_and_add(&_S_refcount, 1);
143 +      }
144      return _M_index - 1;
145    }
146  } // namespace std
147 -
148 -
149 --- libstdc++-v3/src/ostream-inst.cc.jj 2006-02-02 16:38:25.000000000 +0100
150 +++ libstdc++-v3/src/ostream-inst.cc    2006-02-10 14:53:36.000000000 +0100
151 @@ -1,6 +1,6 @@
152  // Explicit instantiation file.
153  
154 -// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002
155 +// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2006
156  // Free Software Foundation, Inc.
157  //
158  // This file is part of the GNU ISO C++ Library.  This library is free
159 @@ -74,3 +74,19 @@ namespace std
160    template wostream& operator<<(wostream&, _Setw);
161  #endif
162  } // namespace std
163 +
164 +// XXX GLIBCXX_ABI Deprecated
165 +#ifdef _GLIBCXX_LONG_DOUBLE_COMPAT
166 +
167 +#define _GLIBCXX_LDBL_COMPAT(dbl, ldbl) \
168 +  extern "C" void ldbl (void) __attribute__ ((alias (#dbl), weak))
169 +_GLIBCXX_LDBL_COMPAT (_ZNSolsEd, _ZNSolsEe);
170 +_GLIBCXX_LDBL_COMPAT (_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEd,
171 +                     _ZNSt13basic_ostreamIwSt11char_traitsIwEElsEe);
172 +// These 2 are in GCC 4.2+ only so far
173 +// _GLIBCXX_LDBL_COMPAT (_ZNSo9_M_insertIdEERSoT_,
174 +//                      _ZNSo9_M_insertIeEERSoT_);
175 +// _GLIBCXX_LDBL_COMPAT (_ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertIdEERS2_T_,
176 +//                      _ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertIeEERS2_T_);
177 +
178 +#endif // _GLIBCXX_LONG_DOUBLE_COMPAT
179 --- libstdc++-v3/src/locale-inst.cc.jj  2006-02-02 16:38:25.000000000 +0100
180 +++ libstdc++-v3/src/locale-inst.cc     2006-02-10 14:53:36.000000000 +0100
181 @@ -1,6 +1,6 @@
182  // Locale support -*- C++ -*-
183  
184 -// Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004
185 +// Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2006
186  // Free Software Foundation, Inc.
187  //
188  // This file is part of the GNU ISO C++ Library.  This library is free
189 @@ -37,6 +37,7 @@
190  // Instantiation configuration.
191  #ifndef C
192  # define C char
193 +# define C_is_char
194  #endif
195  
196  namespace std
197 @@ -48,6 +49,7 @@ namespace std
198    template struct __moneypunct_cache<C, true>;
199    template class moneypunct_byname<C, false>;
200    template class moneypunct_byname<C, true>;
201 +_GLIBCXX_BEGIN_LDBL_NAMESPACE
202    template class money_get<C, istreambuf_iterator<C> >;
203    template class money_put<C, ostreambuf_iterator<C> >;
204    template
205 @@ -73,11 +75,13 @@ namespace std
206      money_put<C, ostreambuf_iterator<C> >::
207      _M_insert<false>(ostreambuf_iterator<C>, ios_base&, C, 
208                      const string_type&) const;
209 +_GLIBCXX_END_LDBL_NAMESPACE
210  
211    // numpunct, numpunct_byname, num_get, and num_put
212    template class numpunct<C>;
213    template struct __numpunct_cache<C>;
214    template class numpunct_byname<C>;
215 +_GLIBCXX_BEGIN_LDBL_NAMESPACE
216    template class num_get<C, istreambuf_iterator<C> >;
217    template class num_put<C, ostreambuf_iterator<C> >; 
218    template
219 @@ -161,7 +165,8 @@ namespace std
220      num_put<C, ostreambuf_iterator<C> >::
221      _M_insert_float(ostreambuf_iterator<C>, ios_base&, C, char, 
222                     long double) const;
223 -  
224 +_GLIBCXX_END_LDBL_NAMESPACE
225 +
226    // time_get and time_put
227    template class __timepunct<C>;
228    template struct __timepunct_cache<C>;
229 @@ -314,3 +319,44 @@ namespace std
230                   ios_base::fmtflags, bool);
231  #endif
232  } // namespace std
233 +
234 +// XXX GLIBCXX_ABI Deprecated
235 +#if defined _GLIBCXX_LONG_DOUBLE_COMPAT && defined C_is_char
236 +
237 +#define _GLIBCXX_LDBL_COMPAT(dbl, ldbl) \
238 +  extern "C" void ldbl (void) __attribute__ ((alias (#dbl), weak))
239 +
240 +_GLIBCXX_LDBL_COMPAT(_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIjEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_,
241 +                    _ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIjEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_);
242 +_GLIBCXX_LDBL_COMPAT(_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIlEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_,
243 +                    _ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIlEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_);
244 +_GLIBCXX_LDBL_COMPAT(_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intImEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_,
245 +                    _ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intImEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_);
246 +_GLIBCXX_LDBL_COMPAT(_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intItEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_,
247 +                    _ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intItEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_);
248 +_GLIBCXX_LDBL_COMPAT(_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIxEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_,
249 +                    _ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIxEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_);
250 +_GLIBCXX_LDBL_COMPAT(_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIyEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_,
251 +                    _ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIyEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_);
252 +_GLIBCXX_LDBL_COMPAT(_ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE13_M_insert_intIlEES4_S4_RSt8ios_basecT_,
253 +                    _ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE13_M_insert_intIlEES3_S3_RSt8ios_basecT_);
254 +_GLIBCXX_LDBL_COMPAT(_ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE13_M_insert_intImEES4_S4_RSt8ios_basecT_,
255 +                    _ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE13_M_insert_intImEES3_S3_RSt8ios_basecT_);
256 +_GLIBCXX_LDBL_COMPAT(_ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE13_M_insert_intIxEES4_S4_RSt8ios_basecT_,
257 +                    _ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE13_M_insert_intIxEES3_S3_RSt8ios_basecT_);
258 +_GLIBCXX_LDBL_COMPAT(_ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE13_M_insert_intIyEES4_S4_RSt8ios_basecT_,
259 +                    _ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE13_M_insert_intIyEES3_S3_RSt8ios_basecT_);
260 +_GLIBCXX_LDBL_COMPAT(_ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE15_M_insert_floatIdEES4_S4_RSt8ios_baseccT_,
261 +                    _ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE15_M_insert_floatIdEES3_S3_RSt8ios_baseccT_);
262 +_GLIBCXX_LDBL_COMPAT(_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE15_M_insert_floatIdEES3_S3_RSt8ios_baseccT_,
263 +                    _ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE15_M_insert_floatIeEES3_S3_RSt8ios_baseccT_);
264 +_GLIBCXX_LDBL_COMPAT(_ZNKSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE10_M_extractILb0EEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRSs,
265 +                    _ZNKSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE10_M_extractILb0EEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRSs);
266 +_GLIBCXX_LDBL_COMPAT(_ZNKSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE10_M_extractILb1EEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRSs,
267 +                    _ZNKSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE10_M_extractILb1EEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRSs);
268 +_GLIBCXX_LDBL_COMPAT(_ZNKSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE9_M_insertILb0EEES4_S4_RSt8ios_basecRKSs,
269 +                    _ZNKSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE9_M_insertILb0EEES3_S3_RSt8ios_basecRKSs);
270 +_GLIBCXX_LDBL_COMPAT(_ZNKSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE9_M_insertILb1EEES4_S4_RSt8ios_basecRKSs,
271 +                    _ZNKSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE9_M_insertILb1EEES3_S3_RSt8ios_basecRKSs);
272 +
273 +#endif // _GLIBCXX_LONG_DOUBLE_COMPAT
274 --- libstdc++-v3/src/compatibility.cc.jj        2006-02-02 16:38:25.000000000 +0100
275 +++ libstdc++-v3/src/compatibility.cc   2006-02-10 14:57:29.000000000 +0100
276 @@ -1,6 +1,6 @@
277  // Compatibility symbols for previous versions -*- C++ -*-
278  
279 -// Copyright (C) 2005
280 +// Copyright (C) 2005, 2006
281  // Free Software Foundation, Inc.
282  //
283  // This file is part of the GNU ISO C++ Library.  This library is free
284 @@ -49,6 +49,7 @@
285  #include <istream>
286  #include <fstream>
287  #include <sstream>
288 +#include <cmath>
289  
290  namespace std
291  {
292 @@ -362,6 +363,107 @@ namespace std
293  
294  #endif
295  
296 +// gcc-4.1.0
297 +#ifdef _GLIBCXX_LONG_DOUBLE_COMPAT
298 +#define _GLIBCXX_MATHL_WRAPPER(name, argdecl, args, ver) \
299 +extern "C" double                                              \
300 +__ ## name ## l_wrapper argdecl                                        \
301 +{                                                              \
302 +  return name args;                                            \
303 +}                                                              \
304 +asm (".symver __" #name "l_wrapper, " #name "l@" #ver)
305 +
306 +#define _GLIBCXX_MATHL_WRAPPER1(name, ver) \
307 +  _GLIBCXX_MATHL_WRAPPER (name, (double x), (x), ver)
308 +
309 +#define _GLIBCXX_MATHL_WRAPPER2(name, ver) \
310 +  _GLIBCXX_MATHL_WRAPPER (name, (double x, double y), (x, y), ver)
311 +
312 +#ifdef _GLIBCXX_HAVE_ACOSL
313 +_GLIBCXX_MATHL_WRAPPER1 (acos, GLIBCXX_3.4.3);
314 +#endif
315 +#ifdef _GLIBCXX_HAVE_ASINL
316 +_GLIBCXX_MATHL_WRAPPER1 (asin, GLIBCXX_3.4.3);
317 +#endif
318 +#ifdef _GLIBCXX_HAVE_ATAN2L
319 +_GLIBCXX_MATHL_WRAPPER2 (atan2, GLIBCXX_3.4);
320 +#endif
321 +#ifdef _GLIBCXX_HAVE_ATANL
322 +_GLIBCXX_MATHL_WRAPPER1 (atan, GLIBCXX_3.4.3);
323 +#endif
324 +#ifdef _GLIBCXX_HAVE_CEILL
325 +_GLIBCXX_MATHL_WRAPPER1 (ceil, GLIBCXX_3.4.3);
326 +#endif
327 +#ifdef _GLIBCXX_HAVE_COSHL
328 +_GLIBCXX_MATHL_WRAPPER1 (cosh, GLIBCXX_3.4);
329 +#endif
330 +#ifdef _GLIBCXX_HAVE_COSL
331 +_GLIBCXX_MATHL_WRAPPER1 (cos, GLIBCXX_3.4);
332 +#endif
333 +#ifdef _GLIBCXX_HAVE_EXPL
334 +_GLIBCXX_MATHL_WRAPPER1 (exp, GLIBCXX_3.4);
335 +#endif
336 +#ifdef _GLIBCXX_HAVE_FLOORL
337 +_GLIBCXX_MATHL_WRAPPER1 (floor, GLIBCXX_3.4.3);
338 +#endif
339 +#ifdef _GLIBCXX_HAVE_FMODL
340 +_GLIBCXX_MATHL_WRAPPER2 (fmod, GLIBCXX_3.4.3);
341 +#endif
342 +#ifdef _GLIBCXX_HAVE_FREXPL
343 +_GLIBCXX_MATHL_WRAPPER (frexp, (double x, int *y), (x, y), GLIBCXX_3.4.3);
344 +#endif
345 +#ifdef _GLIBCXX_HAVE_HYPOTL
346 +_GLIBCXX_MATHL_WRAPPER2 (hypot, GLIBCXX_3.4);
347 +#endif
348 +#ifdef _GLIBCXX_HAVE_LDEXPL
349 +_GLIBCXX_MATHL_WRAPPER (ldexp, (double x, int y), (x, y), GLIBCXX_3.4.3);
350 +#endif
351 +#ifdef _GLIBCXX_HAVE_LOG10L
352 +_GLIBCXX_MATHL_WRAPPER1 (log10, GLIBCXX_3.4);
353 +#endif
354 +#ifdef _GLIBCXX_HAVE_LOGL
355 +_GLIBCXX_MATHL_WRAPPER1 (log, GLIBCXX_3.4);
356 +#endif
357 +#ifdef _GLIBCXX_HAVE_MODFL
358 +_GLIBCXX_MATHL_WRAPPER (modf, (double x, double *y), (x, y), GLIBCXX_3.4.3);
359 +#endif
360 +#ifdef _GLIBCXX_HAVE_POWL
361 +_GLIBCXX_MATHL_WRAPPER2 (pow, GLIBCXX_3.4);
362 +#endif
363 +#ifdef _GLIBCXX_HAVE_SINHL
364 +_GLIBCXX_MATHL_WRAPPER1 (sinh, GLIBCXX_3.4);
365 +#endif
366 +#ifdef _GLIBCXX_HAVE_SINL
367 +_GLIBCXX_MATHL_WRAPPER1 (sin, GLIBCXX_3.4);
368 +#endif
369 +#ifdef _GLIBCXX_HAVE_SQRTL
370 +_GLIBCXX_MATHL_WRAPPER1 (sqrt, GLIBCXX_3.4);
371 +#endif
372 +#ifdef _GLIBCXX_HAVE_TANHL
373 +_GLIBCXX_MATHL_WRAPPER1 (tanh, GLIBCXX_3.4);
374 +#endif
375 +#ifdef _GLIBCXX_HAVE_TANL
376 +_GLIBCXX_MATHL_WRAPPER1 (tan, GLIBCXX_3.4);
377 +#endif
378 +#endif // _GLIBCXX_LONG_DOUBLE_COMPAT
379 +
380 +#ifdef _GLIBCXX_LONG_DOUBLE_COMPAT
381 +extern void *_ZTVN10__cxxabiv123__fundamental_type_infoE[];
382 +extern void *_ZTVN10__cxxabiv119__pointer_type_infoE[];
383 +extern __attribute__((used, weak)) const char _ZTSe[2] = "e";
384 +extern __attribute__((used, weak)) const char _ZTSPe[3] = "Pe";
385 +extern __attribute__((used, weak)) const char _ZTSPKe[4] = "PKe";
386 +extern __attribute__((used, weak)) const void *_ZTIe[2]
387 +  = { (void *) &_ZTVN10__cxxabiv123__fundamental_type_infoE[2],
388 +      (void *) _ZTSe };
389 +extern __attribute__((used, weak)) const void *_ZTIPe[4]
390 +  = { (void *) &_ZTVN10__cxxabiv119__pointer_type_infoE[2],
391 +      (void *) _ZTSPe, (void *) 0L, (void *) _ZTIe };
392 +extern __attribute__((used, weak)) const void *_ZTIPKe[4]
393 +  = { (void *) &_ZTVN10__cxxabiv119__pointer_type_infoE[2],
394 +      (void *) _ZTSPKe, (void *) 1L, (void *) _ZTIe };
395 +#endif // _GLIBCXX_LONG_DOUBLE_COMPAT
396 +
397  #ifdef __APPLE__
398  #if (defined(__ppc__) || defined (__ppc64__)) && defined (PIC)
399  /* __eprintf shouldn't have been made visible from libstdc++, or
400 --- libstdc++-v3/src/limits.cc.jj       2006-02-02 16:38:25.000000000 +0100
401 +++ libstdc++-v3/src/limits.cc  2006-02-10 14:53:36.000000000 +0100
402 @@ -1,6 +1,6 @@
403  // Static data members of -*- C++ -*- numeric_limits classes
404  
405 -// Copyright (C) 1999, 2001, 2002 Free Software Foundation, Inc.
406 +// Copyright (C) 1999, 2001, 2002, 2006 Free Software Foundation, Inc.
407  //
408  // This file is part of the GNU ISO C++ Library.  This library is free
409  // software; you can redistribute it and/or modify it under the
410 @@ -447,3 +447,34 @@ namespace std 
411    const bool numeric_limits<long double>::tinyness_before;
412    const float_round_style numeric_limits<long double>::round_style;
413  } // namespace std
414 +
415 +// XXX GLIBCXX_ABI Deprecated
416 +#ifdef _GLIBCXX_LONG_DOUBLE_COMPAT
417 +
418 +#define _GLIBCXX_NUM_LIM_COMPAT(type, member, len) \
419 +  extern "C" type _ZNSt14numeric_limitsIeE ## len ## member ## E \
420 +  __attribute__ ((alias ("_ZNSt14numeric_limitsIdE" #len #member "E")))
421 +_GLIBCXX_NUM_LIM_COMPAT (bool, is_specialized, 14);
422 +_GLIBCXX_NUM_LIM_COMPAT (int, digits, 6);
423 +_GLIBCXX_NUM_LIM_COMPAT (int, digits10, 8);
424 +_GLIBCXX_NUM_LIM_COMPAT (bool, is_signed, 9);
425 +_GLIBCXX_NUM_LIM_COMPAT (bool, is_integer, 10);
426 +_GLIBCXX_NUM_LIM_COMPAT (bool, is_exact, 8);
427 +_GLIBCXX_NUM_LIM_COMPAT (int, radix, 5);
428 +_GLIBCXX_NUM_LIM_COMPAT (int, min_exponent, 12);
429 +_GLIBCXX_NUM_LIM_COMPAT (int, min_exponent10, 14);
430 +_GLIBCXX_NUM_LIM_COMPAT (int, max_exponent, 12);
431 +_GLIBCXX_NUM_LIM_COMPAT (int, max_exponent10, 14);
432 +_GLIBCXX_NUM_LIM_COMPAT (bool, has_infinity, 12);
433 +_GLIBCXX_NUM_LIM_COMPAT (bool, has_quiet_NaN, 13);
434 +_GLIBCXX_NUM_LIM_COMPAT (bool, has_signaling_NaN, 17);
435 +_GLIBCXX_NUM_LIM_COMPAT (std::float_denorm_style, has_denorm, 10);
436 +_GLIBCXX_NUM_LIM_COMPAT (bool, has_denorm_loss, 15);
437 +_GLIBCXX_NUM_LIM_COMPAT (bool, is_iec559, 9);
438 +_GLIBCXX_NUM_LIM_COMPAT (bool, is_bounded, 10);
439 +_GLIBCXX_NUM_LIM_COMPAT (bool, is_modulo, 9);
440 +_GLIBCXX_NUM_LIM_COMPAT (bool, traps, 5);
441 +_GLIBCXX_NUM_LIM_COMPAT (bool, tinyness_before, 15);
442 +_GLIBCXX_NUM_LIM_COMPAT (std::float_round_style, round_style, 11);
443 +
444 +#endif // _GLIBCXX_LONG_DOUBLE_COMPAT
445 --- libstdc++-v3/src/compatibility-ldbl.cc.jj   2006-02-10 14:53:36.000000000 +0100
446 +++ libstdc++-v3/src/compatibility-ldbl.cc      2006-02-10 14:53:36.000000000 +0100
447 @@ -0,0 +1,73 @@
448 +// Compatibility symbols for -mlong-double-64 compatibility -*- C++ -*-
449 +
450 +// Copyright (C) 2006
451 +// Free Software Foundation, Inc.
452 +//
453 +// This file is part of the GNU ISO C++ Library.  This library is free
454 +// software; you can redistribute it and/or modify it under the
455 +// terms of the GNU General Public License as published by the
456 +// Free Software Foundation; either version 2, or (at your option)
457 +// any later version.
458 +
459 +// This library is distributed in the hope that it will be useful,
460 +// but WITHOUT ANY WARRANTY; without even the implied warranty of
461 +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
462 +// GNU General Public License for more details.
463 +
464 +// You should have received a copy of the GNU General Public License along
465 +// with this library; see the file COPYING.  If not, write to the Free
466 +// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
467 +// USA.
468 +
469 +// As a special exception, you may use this file as part of a free software
470 +// library without restriction.  Specifically, if other files instantiate
471 +// templates or use macros or inline functions from this file, or you compile
472 +// this file and link it with other files to produce an executable, this
473 +// file does not by itself cause the resulting executable to be covered by
474 +// the GNU General Public License.  This exception does not however
475 +// invalidate any other reasons why the executable file might be covered by
476 +// the GNU General Public License.
477 +
478 +#include <locale>
479 +
480 +#ifdef _GLIBCXX_LONG_DOUBLE_COMPAT
481 +
482 +#ifdef __LONG_DOUBLE_128__
483 +#error "compatibility-ldbl.cc must be compiled with -mlong-double-64"
484 +#endif
485 +
486 +namespace std
487 +{
488 +#define C char
489 +  template class num_get<C, istreambuf_iterator<C> >;
490 +  template class num_put<C, ostreambuf_iterator<C> >;
491 +  template class money_get<C, istreambuf_iterator<C> >;
492 +  template class money_put<C, ostreambuf_iterator<C> >;
493 +  template const num_put<C>& use_facet<num_put<C> >(const locale&);
494 +  template const num_get<C>& use_facet<num_get<C> >(const locale&);
495 +  template const money_put<C>& use_facet<money_put<C> >(const locale&);
496 +  template const money_get<C>& use_facet<money_get<C> >(const locale&);
497 +  template bool has_facet<num_put<C> >(const locale&);
498 +  template bool has_facet<num_get<C> >(const locale&);
499 +  template bool has_facet<money_put<C> >(const locale&);
500 +  template bool has_facet<money_get<C> >(const locale&);
501 +#undef C
502 +#ifdef _GLIBCXX_USE_WCHAR_T
503 +#define C wchar_t
504 +  template class num_get<C, istreambuf_iterator<C> >;
505 +  template class num_put<C, ostreambuf_iterator<C> >;
506 +  template class money_get<C, istreambuf_iterator<C> >;
507 +  template class money_put<C, ostreambuf_iterator<C> >;
508 +  template const num_put<C>& use_facet<num_put<C> >(const locale&);
509 +  template const num_get<C>& use_facet<num_get<C> >(const locale&);
510 +  template const money_put<C>& use_facet<money_put<C> >(const locale&);
511 +  template const money_get<C>& use_facet<money_get<C> >(const locale&);
512 +  template bool has_facet<num_put<C> >(const locale&);
513 +  template bool has_facet<num_get<C> >(const locale&);
514 +  template bool has_facet<money_put<C> >(const locale&);
515 +  template bool has_facet<money_get<C> >(const locale&);
516 +#undef C
517 +#endif
518 +}
519 +
520 +#endif
521 --- libstdc++-v3/src/Makefile.am.jj     2006-02-02 16:38:25.000000000 +0100
522 +++ libstdc++-v3/src/Makefile.am        2006-02-10 14:53:36.000000000 +0100
523 @@ -35,10 +35,15 @@ libstdc++-symbol.ver:  ${glibcxx_srcdir}
524                 $(port_specific_symbol_files)
525         cp ${glibcxx_srcdir}/$(SYMVER_MAP) ./libstdc++-symbol.ver
526         if test "x$(port_specific_symbol_files)" != x; then \
527 -         sed -n '1,/DO NOT DELETE/p' $@ > tmp.top; \
528 -         sed -n '/DO NOT DELETE/,$$p' $@ > tmp.bottom; \
529 -         cat tmp.top $(port_specific_symbol_files) tmp.bottom > $@; \
530 -         rm tmp.top tmp.bottom; \
531 +         if grep '^# Appended to version file.' \
532 +              $(port_specific_symbol_files) /dev/null > /dev/null 2>&1; then \
533 +           cat $(port_specific_symbol_files) >> $@; \
534 +         else \
535 +           sed -n '1,/DO NOT DELETE/p' $@ > tmp.top; \
536 +           sed -n '/DO NOT DELETE/,$$p' $@ > tmp.bottom; \
537 +           cat tmp.top $(port_specific_symbol_files) tmp.bottom > $@; \
538 +           rm tmp.top tmp.bottom; \
539 +         fi; \
540         fi
541  
542  if ENABLE_SYMVERS_GNU
543 @@ -113,6 +118,12 @@ c++locale.cc: ${glibcxx_srcdir}/$(CLOCAL
544  basic_file.cc: ${glibcxx_srcdir}/$(BASIC_FILE_CC)
545         $(LN_S) ${glibcxx_srcdir}/$(BASIC_FILE_CC) ./$@ || true
546  
547 +if GLIBCXX_LDBL_COMPAT
548 +ldbl_compat_sources = compatibility-ldbl.cc
549 +else
550 +ldbl_compat_sources =
551 +endif
552 +
553  # Sources present in the src directory.
554  sources = \
555         bitmap_allocator.cc \
556 @@ -160,7 +171,8 @@ sources = \
557         wlocale-inst.cc \
558         wstring-inst.cc \
559         ${host_sources} \
560 -       ${host_sources_extra}
561 +       ${host_sources_extra} \
562 +       ${ldbl_compat_sources}
563  
564  VPATH = $(top_srcdir)/src:$(top_srcdir)
565  
566 @@ -191,6 +203,15 @@ concept-inst.lo: concept-inst.cc
567  concept-inst.o: concept-inst.cc
568         $(CXXCOMPILE) -D_GLIBCXX_CONCEPT_CHECKS -fimplicit-templates -c $<
569  
570 +if GLIBCXX_LDBL_COMPAT
571 +# Use special rules for compatibility-ldbl.cc compilation, as we need to
572 +# pass -mlong-double-64.
573 +compatibility-ldbl.lo: compatibility-ldbl.cc
574 +       $(LTCXXCOMPILE) -mlong-double-64 -c $<
575 +compatibility-ldbl.o: compatibility-ldbl.cc
576 +       $(CXXCOMPILE) -mlong-double-64 -c $<
577 +endif
578 +
579  # AM_CXXFLAGS needs to be in each subdirectory so that it can be
580  # modified in a per-library or per-sub-library way.  Need to manually
581  # set this option because CONFIG_CXXFLAGS has to be after
582 --- libstdc++-v3/src/Makefile.in.jj     2006-02-02 16:38:25.000000000 +0100
583 +++ libstdc++-v3/src/Makefile.in        2006-02-10 14:53:36.000000000 +0100
584 @@ -59,11 +59,27 @@ am__strip_dir = `echo $$p | sed -e 's|^.
585  am__installdirs = "$(DESTDIR)$(toolexeclibdir)"
586  toolexeclibLTLIBRARIES_INSTALL = $(INSTALL)
587  LTLIBRARIES = $(toolexeclib_LTLIBRARIES)
588 +am__libstdc___la_SOURCES_DIST = bitmap_allocator.cc pool_allocator.cc \
589 +       mt_allocator.cc codecvt.cc compatibility.cc complex_io.cc \
590 +       ctype.cc debug.cc debug_list.cc functexcept.cc \
591 +       globals_locale.cc globals_io.cc ios.cc ios_failure.cc \
592 +       ios_init.cc ios_locale.cc limits.cc list.cc locale.cc \
593 +       locale_init.cc locale_facets.cc localename.cc stdexcept.cc \
594 +       strstream.cc tree.cc allocator-inst.cc concept-inst.cc \
595 +       fstream-inst.cc ext-inst.cc ios-inst.cc iostream-inst.cc \
596 +       istream-inst.cc istream.cc locale-inst.cc locale-misc-inst.cc \
597 +       misc-inst.cc ostream-inst.cc sstream-inst.cc streambuf-inst.cc \
598 +       streambuf.cc string-inst.cc valarray-inst.cc wlocale-inst.cc \
599 +       wstring-inst.cc atomicity.cc codecvt_members.cc \
600 +       collate_members.cc ctype_members.cc messages_members.cc \
601 +       monetary_members.cc numeric_members.cc time_members.cc \
602 +       basic_file.cc c++locale.cc compatibility-ldbl.cc
603  am__objects_1 = atomicity.lo codecvt_members.lo collate_members.lo \
604         ctype_members.lo messages_members.lo monetary_members.lo \
605         numeric_members.lo time_members.lo
606  am__objects_2 = basic_file.lo c++locale.lo
607 -am__objects_3 = bitmap_allocator.lo pool_allocator.lo mt_allocator.lo \
608 +@GLIBCXX_LDBL_COMPAT_TRUE@am__objects_3 = compatibility-ldbl.lo
609 +am__objects_4 = bitmap_allocator.lo pool_allocator.lo mt_allocator.lo \
610         codecvt.lo compatibility.lo complex_io.lo ctype.lo debug.lo \
611         debug_list.lo functexcept.lo globals_locale.lo globals_io.lo \
612         ios.lo ios_failure.lo ios_init.lo ios_locale.lo limits.lo \
613 @@ -74,8 +90,9 @@ am__objects_3 = bitmap_allocator.lo pool
614         locale-inst.lo locale-misc-inst.lo misc-inst.lo \
615         ostream-inst.lo sstream-inst.lo streambuf-inst.lo streambuf.lo \
616         string-inst.lo valarray-inst.lo wlocale-inst.lo \
617 -       wstring-inst.lo $(am__objects_1) $(am__objects_2)
618 -am_libstdc___la_OBJECTS = $(am__objects_3)
619 +       wstring-inst.lo $(am__objects_1) $(am__objects_2) \
620 +       $(am__objects_3)
621 +am_libstdc___la_OBJECTS = $(am__objects_4)
622  libstdc___la_OBJECTS = $(am_libstdc___la_OBJECTS)
623  DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir)
624  depcomp =
625 @@ -84,7 +101,7 @@ CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_IN
626         $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
627  CXXLD = $(CXX)
628  SOURCES = $(libstdc___la_SOURCES)
629 -DIST_SOURCES = $(libstdc___la_SOURCES)
630 +DIST_SOURCES = $(am__libstdc___la_SOURCES_DIST)
631  ETAGS = etags
632  CTAGS = ctags
633  DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
634 @@ -152,6 +169,8 @@ GLIBCXX_C_HEADERS_C_TRUE = @GLIBCXX_C_HE
635  GLIBCXX_HOSTED_FALSE = @GLIBCXX_HOSTED_FALSE@
636  GLIBCXX_HOSTED_TRUE = @GLIBCXX_HOSTED_TRUE@
637  GLIBCXX_INCLUDES = @GLIBCXX_INCLUDES@
638 +GLIBCXX_LDBL_COMPAT_FALSE = @GLIBCXX_LDBL_COMPAT_FALSE@
639 +GLIBCXX_LDBL_COMPAT_TRUE = @GLIBCXX_LDBL_COMPAT_TRUE@
640  INSTALL_DATA = @INSTALL_DATA@
641  INSTALL_PROGRAM = @INSTALL_PROGRAM@
642  INSTALL_SCRIPT = @INSTALL_SCRIPT@
643 @@ -302,6 +321,8 @@ host_sources_extra = \
644         basic_file.cc \
645         c++locale.cc
646  
647 +@GLIBCXX_LDBL_COMPAT_FALSE@ldbl_compat_sources = 
648 +@GLIBCXX_LDBL_COMPAT_TRUE@ldbl_compat_sources = compatibility-ldbl.cc
649  
650  # Sources present in the src directory.
651  sources = \
652 @@ -350,7 +371,8 @@ sources = \
653         wlocale-inst.cc \
654         wstring-inst.cc \
655         ${host_sources} \
656 -       ${host_sources_extra}
657 +       ${host_sources_extra} \
658 +       ${ldbl_compat_sources}
659  
660  libstdc___la_SOURCES = $(sources)
661  libstdc___la_LIBADD = \
662 @@ -677,10 +699,15 @@ libstdc++-symbol.ver:  ${glibcxx_srcdir}
663                 $(port_specific_symbol_files)
664         cp ${glibcxx_srcdir}/$(SYMVER_MAP) ./libstdc++-symbol.ver
665         if test "x$(port_specific_symbol_files)" != x; then \
666 -         sed -n '1,/DO NOT DELETE/p' $@ > tmp.top; \
667 -         sed -n '/DO NOT DELETE/,$$p' $@ > tmp.bottom; \
668 -         cat tmp.top $(port_specific_symbol_files) tmp.bottom > $@; \
669 -         rm tmp.top tmp.bottom; \
670 +         if grep '^# Appended to version file.' \
671 +              $(port_specific_symbol_files) /dev/null > /dev/null 2>&1; then \
672 +           cat $(port_specific_symbol_files) >> $@; \
673 +         else \
674 +           sed -n '1,/DO NOT DELETE/p' $@ > tmp.top; \
675 +           sed -n '/DO NOT DELETE/,$$p' $@ > tmp.bottom; \
676 +           cat tmp.top $(port_specific_symbol_files) tmp.bottom > $@; \
677 +           rm tmp.top tmp.bottom; \
678 +         fi; \
679         fi
680  @ENABLE_SYMVERS_DARWIN_EXPORT_TRUE@@ENABLE_SYMVERS_GNU_FALSE@libstdc++-symbol.explist : libstdc++-symbol.ver \
681  @ENABLE_SYMVERS_DARWIN_EXPORT_TRUE@@ENABLE_SYMVERS_GNU_FALSE@          ${glibcxx_srcdir}/scripts/make_exports.pl \
682 @@ -733,6 +760,13 @@ concept-inst.lo: concept-inst.cc
683  concept-inst.o: concept-inst.cc
684         $(CXXCOMPILE) -D_GLIBCXX_CONCEPT_CHECKS -fimplicit-templates -c $<
685  
686 +# Use special rules for compatibility-ldbl.cc compilation, as we need to
687 +# pass -mlong-double-64.
688 +@GLIBCXX_LDBL_COMPAT_TRUE@compatibility-ldbl.lo: compatibility-ldbl.cc
689 +@GLIBCXX_LDBL_COMPAT_TRUE@     $(LTCXXCOMPILE) -mlong-double-64 -c $<
690 +@GLIBCXX_LDBL_COMPAT_TRUE@compatibility-ldbl.o: compatibility-ldbl.cc
691 +@GLIBCXX_LDBL_COMPAT_TRUE@     $(CXXCOMPILE) -mlong-double-64 -c $<
692 +
693  # Added bits to build debug library.
694  @GLIBCXX_BUILD_DEBUG_TRUE@all-local: build_debug
695  @GLIBCXX_BUILD_DEBUG_TRUE@install-data-local: install_debug
696 --- libstdc++-v3/src/locale-misc-inst.cc.jj     2006-02-02 16:38:25.000000000 +0100
697 +++ libstdc++-v3/src/locale-misc-inst.cc        2006-02-10 14:57:35.000000000 +0100
698 @@ -1,6 +1,7 @@
699  // Locale support -*- C++ -*-
700  
701 -// Copyright (C) 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
702 +// Copyright (C) 1999, 2000, 2001, 2002, 2003, 2006
703 +// Free Software Foundation, Inc.
704  //
705  // This file is part of the GNU ISO C++ Library.  This library is free
706  // software; you can redistribute it and/or modify it under the
707 @@ -47,0 +49,16 @@
708 +
709 +// XXX GLIBCXX_ABI Deprecated
710 +#if defined _GLIBCXX_LONG_DOUBLE_COMPAT
711 +
712 +#define _GLIBCXX_LDBL_COMPAT(dbl, ldbl) \
713 +  extern "C" void ldbl (void) __attribute__ ((alias (#dbl), weak))
714 +
715 +# if _GLIBCXX_C_LOCALE_GNU
716 +_GLIBCXX_LDBL_COMPAT(_ZSt16__convert_from_vIdEiPciPKcT_RKP15__locale_structi,
717 +                    _ZSt16__convert_from_vIeEiPciPKcT_RKP15__locale_structi);
718 +# else
719 +_GLIBCXX_LDBL_COMPAT(_ZSt16__convert_from_vIdEiPciPKcT_RKPii,
720 +                    _ZSt16__convert_from_vIeEiPciPKcT_RKPii);
721 +# endif
722 +
723 +#endif // _GLIBCXX_LONG_DOUBLE_COMPAT
724 --- libstdc++-v3/src/istream-inst.cc.jj 2006-02-02 16:38:25.000000000 +0100
725 +++ libstdc++-v3/src/istream-inst.cc    2006-02-10 14:53:36.000000000 +0100
726 @@ -1,6 +1,6 @@
727  // Explicit instantiation file.
728  
729 -// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002
730 +// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2006
731  // Free Software Foundation, Inc.
732  //
733  // This file is part of the GNU ISO C++ Library.  This library is free
734 @@ -68,3 +68,19 @@ namespace std
735    template wistream& operator>>(wistream&, _Setw);
736  #endif
737  } // namespace std
738 +
739 +// XXX GLIBCXX_ABI Deprecated
740 +#ifdef _GLIBCXX_LONG_DOUBLE_COMPAT
741 +
742 +#define _GLIBCXX_LDBL_COMPAT(dbl, ldbl) \
743 +  extern "C" void ldbl (void) __attribute__ ((alias (#dbl), weak))
744 +_GLIBCXX_LDBL_COMPAT (_ZNSirsERd, _ZNSirsERe);
745 +_GLIBCXX_LDBL_COMPAT (_ZNSt13basic_istreamIwSt11char_traitsIwEErsERd,
746 +                     _ZNSt13basic_istreamIwSt11char_traitsIwEErsERe);
747 +// These 2 are in GCC 4.2+ only so far
748 +// _GLIBCXX_LDBL_COMPAT (_ZNSi10_M_extractIdEERSiRT_,
749 +//                      _ZNSi10_M_extractIeEERSiRT_);
750 +// _GLIBCXX_LDBL_COMPAT (_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIdEERS2_RT_,
751 +//                      _ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIeEERS2_RT_);
752 +
753 +#endif // _GLIBCXX_LONG_DOUBLE_COMPAT
754 --- libstdc++-v3/src/complex_io.cc.jj   2006-02-02 16:38:25.000000000 +0100
755 +++ libstdc++-v3/src/complex_io.cc      2006-02-10 14:53:36.000000000 +0100
756 @@ -1,6 +1,6 @@
757  // The template and inlines for the -*- C++ -*- complex number classes.
758  
759 -// Copyright (C) 2000, 2001 Free Software Foundation, Inc.
760 +// Copyright (C) 2000, 2001, 2006 Free Software Foundation, Inc.
761  //
762  // This file is part of the GNU ISO C++ Library.  This library is free
763  // software; you can redistribute it and/or modify it under the
764 @@ -91,3 +91,20 @@ namespace std
765                 const complex<long double>&);
766  #endif //_GLIBCXX_USE_WCHAR_T
767  } // namespace std
768 +
769 +// XXX GLIBCXX_ABI Deprecated
770 +#ifdef _GLIBCXX_LONG_DOUBLE_COMPAT
771 +
772 +#define _GLIBCXX_LDBL_COMPAT(dbl, ldbl) \
773 +  extern "C" void ldbl (void) __attribute__ ((alias (#dbl), weak))
774 +
775 +_GLIBCXX_LDBL_COMPAT (_ZStlsIdcSt11char_traitsIcEERSt13basic_ostreamIT0_T1_ES6_RKSt7complexIT_E,
776 +                     _ZStlsIecSt11char_traitsIcEERSt13basic_ostreamIT0_T1_ES6_RKSt7complexIT_E);
777 +_GLIBCXX_LDBL_COMPAT (_ZStlsIdwSt11char_traitsIwEERSt13basic_ostreamIT0_T1_ES6_RKSt7complexIT_E,
778 +                     _ZStlsIewSt11char_traitsIwEERSt13basic_ostreamIT0_T1_ES6_RKSt7complexIT_E);
779 +_GLIBCXX_LDBL_COMPAT (_ZStrsIdcSt11char_traitsIcEERSt13basic_istreamIT0_T1_ES6_RSt7complexIT_E,
780 +                     _ZStrsIecSt11char_traitsIcEERSt13basic_istreamIT0_T1_ES6_RSt7complexIT_E);
781 +_GLIBCXX_LDBL_COMPAT (_ZStrsIdwSt11char_traitsIwEERSt13basic_istreamIT0_T1_ES6_RSt7complexIT_E,
782 +                     _ZStrsIewSt11char_traitsIwEERSt13basic_istreamIT0_T1_ES6_RSt7complexIT_E);
783 +
784 +#endif // _GLIBCXX_LONG_DOUBLE_COMPAT
785 --- libstdc++-v3/src/wlocale-inst.cc.jj 2006-02-02 16:38:25.000000000 +0100
786 +++ libstdc++-v3/src/wlocale-inst.cc    2006-02-10 14:53:36.000000000 +0100
787 @@ -1,6 +1,7 @@
788  // Locale support -*- C++ -*-
789  
790 -// Copyright (C) 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
791 +// Copyright (C) 1999, 2000, 2001, 2002, 2003, 2006
792 +// Free Software Foundation, Inc.
793  //
794  // This file is part of the GNU ISO C++ Library.  This library is free
795  // software; you can redistribute it and/or modify it under the
796 @@ -36,4 +37,45 @@
797  #ifdef _GLIBCXX_USE_WCHAR_T
798  #define C wchar_t
799  #include "locale-inst.cc"
800 +
801 +// XXX GLIBCXX_ABI Deprecated
802 +#if defined _GLIBCXX_LONG_DOUBLE_COMPAT
803 +
804 +#define _GLIBCXX_LDBL_COMPAT(dbl, ldbl) \
805 +  extern "C" void ldbl (void) __attribute__ ((alias (#dbl), weak))
806 +
807 +_GLIBCXX_LDBL_COMPAT(_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intIjEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_,
808 +                    _ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intIjEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_);
809 +_GLIBCXX_LDBL_COMPAT(_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intIlEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_,
810 +                    _ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intIlEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_);
811 +_GLIBCXX_LDBL_COMPAT(_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intImEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_,
812 +                    _ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intImEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_);
813 +_GLIBCXX_LDBL_COMPAT(_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intItEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_,
814 +                    _ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intItEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_);
815 +_GLIBCXX_LDBL_COMPAT(_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intIxEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_,
816 +                    _ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intIxEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_);
817 +_GLIBCXX_LDBL_COMPAT(_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intIyEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_,
818 +                    _ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intIyEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_);
819 +_GLIBCXX_LDBL_COMPAT(_ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE13_M_insert_intIlEES4_S4_RSt8ios_basewT_,
820 +                    _ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE13_M_insert_intIlEES3_S3_RSt8ios_basewT_);
821 +_GLIBCXX_LDBL_COMPAT(_ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE13_M_insert_intImEES4_S4_RSt8ios_basewT_,
822 +                    _ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE13_M_insert_intImEES3_S3_RSt8ios_basewT_);
823 +_GLIBCXX_LDBL_COMPAT(_ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE13_M_insert_intIxEES4_S4_RSt8ios_basewT_,
824 +                    _ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE13_M_insert_intIxEES3_S3_RSt8ios_basewT_);
825 +_GLIBCXX_LDBL_COMPAT(_ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE13_M_insert_intIyEES4_S4_RSt8ios_basewT_,
826 +                    _ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE13_M_insert_intIyEES3_S3_RSt8ios_basewT_);
827 +_GLIBCXX_LDBL_COMPAT(_ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE15_M_insert_floatIdEES4_S4_RSt8ios_basewcT_,
828 +                    _ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE15_M_insert_floatIdEES3_S3_RSt8ios_basewcT_);
829 +_GLIBCXX_LDBL_COMPAT(_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE15_M_insert_floatIdEES3_S3_RSt8ios_basewcT_,
830 +                    _ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE15_M_insert_floatIeEES3_S3_RSt8ios_basewcT_);
831 +_GLIBCXX_LDBL_COMPAT(_ZNKSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE10_M_extractILb0EEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRSs,
832 +                    _ZNKSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE10_M_extractILb0EEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRSs);
833 +_GLIBCXX_LDBL_COMPAT(_ZNKSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE10_M_extractILb1EEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRSs,
834 +                    _ZNKSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE10_M_extractILb1EEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRSs);
835 +_GLIBCXX_LDBL_COMPAT(_ZNKSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE9_M_insertILb0EEES4_S4_RSt8ios_basewRKSbIwS3_SaIwEE,
836 +                    _ZNKSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE9_M_insertILb0EEES3_S3_RSt8ios_basewRKSbIwS2_SaIwEE);
837 +_GLIBCXX_LDBL_COMPAT(_ZNKSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE9_M_insertILb1EEES4_S4_RSt8ios_basewRKSbIwS3_SaIwEE,
838 +                    _ZNKSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE9_M_insertILb1EEES3_S3_RSt8ios_basewRKSbIwS2_SaIwEE);
839 +
840 +#endif // _GLIBCXX_LONG_DOUBLE_COMPAT
841  #endif
842 --- libstdc++-v3/config/linker-map.gnu.jj       2006-02-02 16:38:25.000000000 +0100
843 +++ libstdc++-v3/config/linker-map.gnu  2006-02-10 14:53:36.000000000 +0100
844 @@ -1,6 +1,6 @@
845  ## Linker script for GNU ld 2.13.91+ only.
846  ##
847 -## Copyright (C) 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
848 +## Copyright (C) 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
849  ##
850  ## This file is part of the libstdc++ version 3 distribution.
851  ##
852 @@ -44,7 +44,10 @@ GLIBCXX_3.4 {
853        std::basic_[j-n]*;
854        std::basic_o[a-e]*;
855  #     std::basic_ofstream;
856 -      std::basic_o[g-z]*;
857 +#     std::basic_o[g-z]*;
858 +      std::basic_o[g-r]*;
859 +      std::basic_ostr[a-d]*;
860 +      std::basic_ostr[f-z]*;
861        std::basic_[p-r]*;
862        std::basic_streambuf*;
863  #     std::basic_string
864 @@ -88,7 +91,14 @@ GLIBCXX_3.4 {
865        std::locale::_[J-Ra-z]*;
866        std::locale::_S_normalize_category*;
867        std::locale::_[T-Za-z]*;
868 -      std::[A-Zm-r]*;
869 +#     std::[A-Zm-r]*;
870 +      std::[A-Zmp-r]*;
871 +      std::n[^u]*;
872 +      std::nu[^m]*;
873 +      std::num[^e]*;
874 +      std::ostrstream*;
875 +      std::out_of_range*;
876 +      std::overflow_error*;
877        std::set_new_handler*;
878        std::set_terminate*;
879        std::set_unexpected*;
880 @@ -256,7 +266,7 @@ GLIBCXX_3.4 {
881      _ZNSi[0-9][a-h]*;
882      _ZNSi[0-9][j-z]*;
883      _ZNSi6ignoreE[il][il];
884 -    _ZNSirsE*;
885 +    _ZNSirsE*[^g];
886  
887      # std::basic_istream<wchar_t>
888      _ZNSt13basic_istreamIwSt11char_traitsIwEEC*;
889 @@ -265,7 +275,7 @@ GLIBCXX_3.4 {
890      _ZNSt13basic_istreamIwSt11char_traitsIwEE[0-9][a-h]*;
891      _ZNSt13basic_istreamIwSt11char_traitsIwEE[0-9][j-z]*;
892      _ZNSt13basic_istreamIwSt11char_traitsIwEE6ignoreE[il][ijlm];
893 -    _ZNSt13basic_istreamIwSt11char_traitsIwEErsE*;
894 +    _ZNSt13basic_istreamIwSt11char_traitsIwEErsE*[^g];
895  
896      # std::istream operators and inserters
897      _ZSt7getlineI[cw]St11char_traitsI[cw]ESaI[cw]EERSt13basic_istream*;
898 @@ -277,6 +287,37 @@ GLIBCXX_3.4 {
899      _ZStrsIe[cw]St11char_traitsI[cw]EERSt13basic_istream*;
900      _ZStrsIf[cw]St11char_traitsI[cw]EERSt13basic_istream*;
901  
902 +    # std::basic_ostream<char>
903 +    _ZNSoC*;
904 +    _ZNSoD*;
905 +    _ZNKSo6sentrycvbEv;
906 +    _ZNSo8_M_write*;
907 +    _ZNSo[0-9][a-z]*;
908 +    _ZNSolsE*[^g];
909 +
910 +    # std::basic_ostream<wchar_t>
911 +    _ZNSt13basic_ostreamIwSt11char_traitsIwEEC*;
912 +    _ZNSt13basic_ostreamIwSt11char_traitsIwEED*;
913 +    _ZNKSt13basic_ostreamIwSt11char_traitsIwEE[0-9][a-z]*;
914 +    _ZNSt13basic_ostreamIwSt11char_traitsIwEE3putEw;
915 +    _ZNSt13basic_ostreamIwSt11char_traitsIwEE5flushEv;
916 +    _ZNSt13basic_ostreamIwSt11char_traitsIwEE5seekpE*;
917 +    _ZNSt13basic_ostreamIwSt11char_traitsIwEE5tellpEv;
918 +    _ZNSt13basic_ostreamIwSt11char_traitsIwEE5writeEPKw*;
919 +    _ZNSt13basic_ostreamIwSt11char_traitsIwEE6sentry*;
920 +    _ZNSt13basic_ostreamIwSt11char_traitsIwEE8_M_write*;
921 +    _ZNSt13basic_ostreamIwSt11char_traitsIwEElsE*[^g];
922 +
923 +    # std::ostream operators and inserters
924 +    _ZSt4end[ls]I[cw]St11char_traitsI[cw]EERSt13basic_ostream*;
925 +    _ZSt5flushI[cw]St11char_traitsI[cw]EERSt13basic_ostream*;
926 +    _ZStlsI[cw]St11char_traitsI[cw]EERSt13basic_ostream*;
927 +    _ZStlsI[cw]St11char_traitsI[cw]ESaI[cw]EERSt13basic_ostream*;
928 +    _ZStlsISt11char_traitsI[cw]EERSt13basic_ostream*;
929 +    _ZStlsId[cw]St11char_traitsI[cw]EERSt13basic_ostream*;
930 +    _ZStlsIe[cw]St11char_traitsI[cw]EERSt13basic_ostream*;
931 +    _ZStlsIf[cw]St11char_traitsI[cw]EERSt13basic_ostream*;
932 +
933      # std::locale destructors
934      _ZNSt6localeD*;
935         
936 @@ -292,14 +333,23 @@ GLIBCXX_3.4 {
937      _ZNSt8ios_base4InitD*;
938  
939      # bool std::has_facet 
940 -    _ZSt9has_facet*;
941 +    _ZSt9has_facetIS*;
942  
943      # std::num_get
944      _ZNKSt7num_getI[cw]St19istreambuf_iteratorI[cw]St11char_traitsI[cw]EEE*;
945  
946 +    # std::num_put
947 +    _ZNKSt7num_putI[cw]St19ostreambuf_iteratorI[cw]St11char_traitsI[cw]EEE*;
948 +
949      # std::money_get
950      _ZNKSt9money_getI[cw]St19istreambuf_iteratorI[cw]St11char_traitsI[cw]EEE*;
951  
952 +    # std::money_put
953 +    _ZNKSt9money_putI[cw]St19ostreambuf_iteratorI[cw]St11char_traitsI[cw]EEE*;
954 +
955 +    # std::numeric_limits
956 +    _ZNSt14numeric_limitsI[^g]*;
957 +
958      # std::_Rb_tree
959      _ZSt18_Rb_tree_decrementPKSt18_Rb_tree_node_base;
960      _ZSt18_Rb_tree_decrementPSt18_Rb_tree_node_base;
961 @@ -327,7 +377,7 @@ GLIBCXX_3.4 {
962      _ZNSt12__basic_fileIcED*;
963  
964      # std::__convert_to_v
965 -    _ZSt14__convert_to_v*;
966 +    _ZSt14__convert_to_vI[^g]*;
967  
968      # __gnu_cxx::stdio_sync_filebuf
969      _ZTVN9__gnu_cxx18stdio_sync_filebufI[cw]St11char_traitsI[cw]EEE;
970 @@ -399,7 +449,8 @@ GLIBCXX_3.4 {
971      _ZTSN9__gnu_cxx13stdio_filebufI[cw]St11char_traitsI[cw]EEE;
972  
973      # function-scope static objects requires a guard variable.
974 -    _ZGVNSt*;
975 +    _ZGVNSt[^1]*;
976 +    _ZGVNSt1[^7]*;
977  
978      # virtual function thunks
979      _ZThn8_NS*;
980 @@ -659,9 +710,9 @@ CXXABI_1.3 {
981      _ZTVN10__cxxabiv121__vmi_class_type_infoE;
982  
983      # typeinfo structure (and some names)
984 -    _ZTI[a-z];
985 -    _ZTIP[a-z];
986 -    _ZTIPK[a-z];
987 +    _ZTI[a-fh-z];
988 +    _ZTIP[a-fh-z];
989 +    _ZTIPK[a-fh-z];
990      _ZTIN10__cxxabiv117__array_type_infoE;
991      _ZTIN10__cxxabiv117__class_type_infoE;
992      _ZTIN10__cxxabiv116__enum_type_infoE;
993 @@ -674,9 +725,9 @@ CXXABI_1.3 {
994      _ZTIN10__cxxabiv121__vmi_class_type_infoE;
995  
996      # typeinfo name
997 -    _ZTS[a-z];
998 -    _ZTSP[a-z];
999 -    _ZTSPK[a-z];
1000 +    _ZTS[a-fh-z];
1001 +    _ZTSP[a-fh-z];
1002 +    _ZTSPK[a-fh-z];
1003      _ZTSN10__cxxabiv117__array_type_infoE;
1004      _ZTSN10__cxxabiv117__class_type_infoE;
1005      _ZTSN10__cxxabiv116__enum_type_infoE;
1006 --- libstdc++-v3/config/locale/gnu/c_locale.cc.jj       2006-02-02 16:38:25.000000000 +0100
1007 +++ libstdc++-v3/config/locale/gnu/c_locale.cc  2006-02-10 14:53:36.000000000 +0100
1008 @@ -1,6 +1,6 @@
1009  // Wrapper for underlying C-language localization -*- C++ -*-
1010  
1011 -// Copyright (C) 2001, 2002, 2003, 2004, 2005 
1012 +// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006
1013  // Free Software Foundation, Inc.
1014  //
1015  // This file is part of the GNU ISO C++ Library.  This library is free
1016 @@ -132,3 +132,10 @@ namespace std
1017  {
1018    const char* const* const locale::_S_categories = __gnu_cxx::category_names;
1019  }  // namespace std
1020 +
1021 +// XXX GLIBCXX_ABI Deprecated
1022 +#ifdef _GLIBCXX_LONG_DOUBLE_COMPAT
1023 +#define _GLIBCXX_LDBL_COMPAT(dbl, ldbl) \
1024 +  extern "C" void ldbl (void) __attribute__ ((alias (#dbl)))
1025 +_GLIBCXX_LDBL_COMPAT(_ZSt14__convert_to_vIdEvPKcRT_RSt12_Ios_IostateRKP15__locale_struct, _ZSt14__convert_to_vIeEvPKcRT_RSt12_Ios_IostateRKP15__locale_struct);
1026 +#endif // _GLIBCXX_LONG_DOUBLE_COMPAT
1027 --- libstdc++-v3/config/locale/generic/c_locale.cc.jj   2006-02-02 16:38:26.000000000 +0100
1028 +++ libstdc++-v3/config/locale/generic/c_locale.cc      2006-02-10 14:57:36.000000000 +0100
1029 @@ -1,6 +1,6 @@
1030  // Wrapper for underlying C-language localization -*- C++ -*-
1031  
1032 -// Copyright (C) 2001, 2002, 2003, 2004, 2005
1033 +// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006
1034  // Free Software Foundation, Inc.
1035  //
1036  // This file is part of the GNU ISO C++ Library.  This library is free
1037 @@ -168,3 +168,10 @@ namespace std
1038  {
1039    const char* const* const locale::_S_categories = __gnu_cxx::category_names;
1040  }  // namespace std
1041 +
1042 +// XXX GLIBCXX_ABI Deprecated
1043 +#ifdef _GLIBCXX_LONG_DOUBLE_COMPAT
1044 +#define _GLIBCXX_LDBL_COMPAT(dbl, ldbl) \
1045 +  extern "C" void ldbl (void) __attribute__ ((alias (#dbl)))
1046 +_GLIBCXX_LDBL_COMPAT(_ZSt14__convert_to_vIdEvPKcRT_RSt12_Ios_IostateRKPi, _ZSt14__convert_to_vIeEvPKcRT_RSt12_Ios_IostateRKPi);
1047 +#endif // _GLIBCXX_LONG_DOUBLE_COMPAT
1048 --- libstdc++-v3/config/os/gnu-linux/ldbl-extra.ver.jj  2006-02-10 14:53:36.000000000 +0100
1049 +++ libstdc++-v3/config/os/gnu-linux/ldbl-extra.ver     2006-02-10 14:57:37.000000000 +0100
1050 @@ -0,0 +1,19 @@
1051 +# Appended to version file.
1052 +
1053 +GLIBCXX_LDBL_3.4 {
1054 +  _ZNSt14numeric_limitsIg*;
1055 +  _ZNSirsERg;
1056 +  _ZNSolsEg;
1057 +  _ZNSt13basic_istreamIwSt11char_traitsIwEErsERg;
1058 +  _ZNSt13basic_ostreamIwSt11char_traitsIwEElsEg;
1059 +  _ZSt14__convert_to_vIgEvPKcRT_RSt12_Ios_IostateRKP*;
1060 +  _ZStlsIg[cw]St11char_traitsI[cw]EERSt13basic_ostreamIT0_T1_ES6_RKSt7complexIT_E;
1061 +  _ZStrsIg[cw]St11char_traitsI[cw]EERSt13basic_istreamIT0_T1_ES6_RSt7complexIT_E;
1062 +  *__gnu_cxx_ldbl128*;
1063 +};
1064 +
1065 +CXXABI_LDBL_1.3 {
1066 +  _ZT[IS]g;
1067 +  _ZT[IS]Pg;
1068 +  _ZT[IS]PKg;
1069 +};
1070 --- libstdc++-v3/config.h.in.jj 2006-02-02 16:38:36.000000000 +0100
1071 +++ libstdc++-v3/config.h.in    2006-02-10 14:53:36.000000000 +0100
1072 @@ -658,6 +658,9 @@
1073  /* Define to 1 if a full hosted library is built, or 0 if freestanding. */
1074  #undef _GLIBCXX_HOSTED
1075  
1076 +/* Define if compatibility should be provided for -mlong-double-64. */
1077 +#undef _GLIBCXX_LONG_DOUBLE_COMPAT
1078 +
1079  /* Define if ptrdiff_t is int. */
1080  #undef _GLIBCXX_PTRDIFF_T_IS_INT
1081  
1082 --- libstdc++-v3/include/Makefile.am.jj 2006-02-02 16:38:32.000000000 +0100
1083 +++ libstdc++-v3/include/Makefile.am    2006-02-10 15:12:14.000000000 +0100
1084 @@ -825,13 +825,18 @@ ${host_builddir}/c++config.h: ${top_buil
1085                                 ${glibcxx_srcdir}/include/bits/c++config \
1086                                 stamp-${host_alias} \
1087                                 ${toplevel_srcdir}/gcc/DATESTAMP
1088 -       @cat ${glibcxx_srcdir}/include/bits/c++config > $@ ;\
1089 +       @ldbl_compat='' ;\
1090 +       grep "^[        ]*#[    ]*define[       ][      ]*_GLIBCXX_LONG_DOUBLE_COMPAT[  ][      ]*1[    ]*$$" \
1091 +       ${CONFIG_HEADER} > /dev/null 2>&1 \
1092 +       && ldbl_compat='s,^#undef _GLIBCXX_LONG_DOUBLE_COMPAT$$,#define _GLIBCXX_LONG_DOUBLE_COMPAT 1,' ;\
1093 +       sed -e "$$ldbl_compat" ${glibcxx_srcdir}/include/bits/c++config > $@ ;\
1094         sed -e 's/^/#define __GLIBCXX__ /' \
1095 -            < ${toplevel_srcdir}/gcc/DATESTAMP >> $@ ;\
1096 +           < ${toplevel_srcdir}/gcc/DATESTAMP >> $@ ;\
1097         sed -e 's/HAVE_/_GLIBCXX_HAVE_/g' \
1098             -e 's/PACKAGE/_GLIBCXX_PACKAGE/g' \
1099             -e 's/VERSION/_GLIBCXX_VERSION/g' \
1100             -e 's/WORDS_/_GLIBCXX_WORDS_/g' \
1101 +           -e '/[      ]_GLIBCXX_LONG_DOUBLE_COMPAT[   ]/d' \
1102             < ${CONFIG_HEADER} >> $@ ;\
1103         echo "#endif // _CXXCONFIG_" >>$@
1104  
1105 --- libstdc++-v3/include/bits/c++config.jj      2006-02-02 16:38:32.000000000 +0100
1106 +++ libstdc++-v3/include/bits/c++config 2006-02-10 15:17:28.000000000 +0100
1107 @@ -1,6 +1,6 @@
1108  // Predefined symbols and macros -*- C++ -*-
1109  
1110 -// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005
1111 +// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006
1112  // Free Software Foundation, Inc.
1113  //
1114  // This file is part of the GNU ISO C++ Library.  This library is free
1115 @@ -65,6 +65,26 @@ namespace std
1116  # define _GLIBCXX_STD std
1117  #endif
1118  
1119 +/* Define if compatibility should be provided for -mlong-double-64. */
1120 +#undef _GLIBCXX_LONG_DOUBLE_COMPAT
1121 +
1122 +// XXX GLIBCXX_ABI Deprecated
1123 +// Namespace associations for long double 128 mode.
1124 +#if defined _GLIBCXX_LONG_DOUBLE_COMPAT && defined __LONG_DOUBLE_128__
1125 +# define _GLIBCXX_LDBL_NAMESPACE __gnu_cxx_ldbl128::
1126 +# define _GLIBCXX_BEGIN_LDBL_NAMESPACE namespace __gnu_cxx_ldbl128 {
1127 +# define _GLIBCXX_END_LDBL_NAMESPACE }
1128 +namespace std
1129 +{
1130 +  namespace __gnu_cxx_ldbl128 { }
1131 +  using namespace __gnu_cxx_ldbl128 __attribute__((__strong__));
1132 +}
1133 +#else
1134 +# define _GLIBCXX_LDBL_NAMESPACE
1135 +# define _GLIBCXX_BEGIN_LDBL_NAMESPACE
1136 +# define _GLIBCXX_END_LDBL_NAMESPACE
1137 +#endif
1138 +
1139  // Allow use of "export template." This is currently not a feature
1140  // that g++ supports.
1141  // #define _GLIBCXX_EXPORT_TEMPLATE 1
1142 --- libstdc++-v3/include/bits/localefwd.h.jj    2006-02-02 16:38:32.000000000 +0100
1143 +++ libstdc++-v3/include/bits/localefwd.h       2006-02-10 15:17:54.000000000 +0100
1144 @@ -129,10 +129,12 @@ namespace std
1145      class codecvt_byname;
1146  
1147    // 22.2.2 and 22.2.3 numeric
1148 +_GLIBCXX_BEGIN_LDBL_NAMESPACE
1149    template<typename _CharT, typename _InIter = istreambuf_iterator<_CharT> >
1150      class num_get;
1151    template<typename _CharT, typename _OutIter = ostreambuf_iterator<_CharT> >
1152      class num_put;
1153 +_GLIBCXX_END_LDBL_NAMESPACE
1154    template<typename _CharT> class numpunct;
1155    template<typename _CharT> class numpunct_byname;
1156  
1157 @@ -155,10 +157,12 @@ namespace std
1158  
1159    // 22.2.6 money
1160    class money_base;
1161 +_GLIBCXX_BEGIN_LDBL_NAMESPACE
1162    template<typename _CharT, typename _InIter =  istreambuf_iterator<_CharT> >
1163      class money_get;
1164    template<typename _CharT, typename _OutIter = ostreambuf_iterator<_CharT> >
1165      class money_put;
1166 +_GLIBCXX_END_LDBL_NAMESPACE
1167    template<typename _CharT, bool _Intl = false>
1168      class moneypunct;
1169    template<typename _CharT, bool _Intl = false>
1170 --- libstdc++-v3/include/bits/locale_facets.h.jj        2006-02-02 16:38:32.000000000 +0100
1171 +++ libstdc++-v3/include/bits/locale_facets.h   2006-02-10 14:53:36.000000000 +0100
1172 @@ -1,6 +1,6 @@
1173  // Locale support -*- C++ -*-
1174  
1175 -// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005
1176 +// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006
1177  // Free Software Foundation, Inc.
1178  //
1179  // This file is part of the GNU ISO C++ Library.  This library is free
1180 @@ -1910,6 +1910,7 @@ namespace std
1181        ~numpunct_byname() { }
1182      };
1183  
1184 +_GLIBCXX_BEGIN_LDBL_NAMESPACE
1185    /**
1186     *  @brief  Facet for parsing number strings.
1187     *
1188 @@ -2176,13 +2177,27 @@ namespace std
1189        do_get(iter_type, iter_type, ios_base&, ios_base::iostate& __err,
1190              double&) const;
1191  
1192 +      // XXX GLIBCXX_ABI Deprecated
1193 +#if defined _GLIBCXX_LONG_DOUBLE_COMPAT && defined __LONG_DOUBLE_128__
1194 +      virtual iter_type
1195 +      __do_get(iter_type, iter_type, ios_base&, ios_base::iostate& __err,
1196 +              double&) const;
1197 +#else
1198        virtual iter_type
1199        do_get(iter_type, iter_type, ios_base&, ios_base::iostate& __err,
1200              long double&) const;
1201 +#endif
1202  
1203        virtual iter_type
1204        do_get(iter_type, iter_type, ios_base&, ios_base::iostate& __err,
1205              void*&) const;
1206 +
1207 +      // XXX GLIBCXX_ABI Deprecated
1208 +#if defined _GLIBCXX_LONG_DOUBLE_COMPAT && defined __LONG_DOUBLE_128__
1209 +      virtual iter_type
1210 +      do_get(iter_type, iter_type, ios_base&, ios_base::iostate& __err,
1211 +            long double&) const;
1212 +#endif
1213        //@}
1214      };
1215  
1216 @@ -2438,17 +2453,30 @@ namespace std
1217        virtual iter_type
1218        do_put(iter_type, ios_base&, char_type __fill, double __v) const;
1219  
1220 +      // XXX GLIBCXX_ABI Deprecated
1221 +#if defined _GLIBCXX_LONG_DOUBLE_COMPAT && defined __LONG_DOUBLE_128__
1222 +      virtual iter_type
1223 +      __do_put(iter_type, ios_base&, char_type __fill, double __v) const;
1224 +#else
1225        virtual iter_type
1226        do_put(iter_type, ios_base&, char_type __fill, long double __v) const;
1227 +#endif
1228  
1229        virtual iter_type
1230        do_put(iter_type, ios_base&, char_type __fill, const void* __v) const;
1231 +
1232 +      // XXX GLIBCXX_ABI Deprecated
1233 +#if defined _GLIBCXX_LONG_DOUBLE_COMPAT && defined __LONG_DOUBLE_128__
1234 +      virtual iter_type
1235 +      do_put(iter_type, ios_base&, char_type __fill, long double __v) const;
1236 +#endif
1237        //@}
1238      };
1239  
1240    template <typename _CharT, typename _OutIter>
1241      locale::id num_put<_CharT, _OutIter>::id;
1242  
1243 +_GLIBCXX_END_LDBL_NAMESPACE
1244  
1245    /**
1246     *  @brief  Facet for localized string comparison.
1247 @@ -3953,6 +3981,7 @@ namespace std
1248    template<typename _CharT, bool _Intl>
1249      const bool moneypunct_byname<_CharT, _Intl>::intl;
1250  
1251 +_GLIBCXX_BEGIN_LDBL_NAMESPACE
1252    /**
1253     *  @brief  Facet for parsing monetary amounts.
1254     *
1255 @@ -4064,9 +4093,16 @@ namespace std
1256         *  value.  This function is a hook for derived classes to change the
1257         *  value returned.  @see get() for details.
1258         */
1259 +      // XXX GLIBCXX_ABI Deprecated
1260 +#if defined _GLIBCXX_LONG_DOUBLE_COMPAT && defined __LONG_DOUBLE_128__
1261 +      virtual iter_type
1262 +      __do_get(iter_type __s, iter_type __end, bool __intl, ios_base& __io,
1263 +              ios_base::iostate& __err, double& __units) const;
1264 +#else
1265        virtual iter_type
1266        do_get(iter_type __s, iter_type __end, bool __intl, ios_base& __io,
1267              ios_base::iostate& __err, long double& __units) const;
1268 +#endif
1269  
1270        /**
1271         *  @brief  Read and parse a monetary value.
1272 @@ -4079,6 +4115,13 @@ namespace std
1273        do_get(iter_type __s, iter_type __end, bool __intl, ios_base& __io,
1274              ios_base::iostate& __err, string_type& __digits) const;
1275  
1276 +      // XXX GLIBCXX_ABI Deprecated
1277 +#if defined _GLIBCXX_LONG_DOUBLE_COMPAT && defined __LONG_DOUBLE_128__
1278 +      virtual iter_type
1279 +      do_get(iter_type __s, iter_type __end, bool __intl, ios_base& __io,
1280 +            ios_base::iostate& __err, long double& __units) const;
1281 +#endif
1282 +
1283        template<bool _Intl>
1284          iter_type
1285          _M_extract(iter_type __s, iter_type __end, ios_base& __io,
1286 @@ -4191,9 +4234,16 @@ namespace std
1287         *  @param  units  Place to store result of parsing.
1288         *  @return  Iterator after writing.
1289         */
1290 +      // XXX GLIBCXX_ABI Deprecated
1291 +#if defined _GLIBCXX_LONG_DOUBLE_COMPAT && defined __LONG_DOUBLE_128__
1292 +      virtual iter_type
1293 +      __do_put(iter_type __s, bool __intl, ios_base& __io, char_type __fill,
1294 +              double __units) const;
1295 +#else
1296        virtual iter_type
1297        do_put(iter_type __s, bool __intl, ios_base& __io, char_type __fill,
1298              long double __units) const;
1299 +#endif
1300  
1301        /**
1302         *  @brief  Format and output a monetary value.
1303 @@ -4217,6 +4267,13 @@ namespace std
1304        do_put(iter_type __s, bool __intl, ios_base& __io, char_type __fill,
1305              const string_type& __digits) const;
1306  
1307 +      // XXX GLIBCXX_ABI Deprecated
1308 +#if defined _GLIBCXX_LONG_DOUBLE_COMPAT && defined __LONG_DOUBLE_128__
1309 +      virtual iter_type
1310 +      do_put(iter_type __s, bool __intl, ios_base& __io, char_type __fill,
1311 +            long double __units) const;
1312 +#endif
1313 +
1314        template<bool _Intl>
1315          iter_type
1316          _M_insert(iter_type __s, ios_base& __io, char_type __fill,
1317 @@ -4226,6 +4283,8 @@ namespace std
1318    template<typename _CharT, typename _OutIter>
1319      locale::id money_put<_CharT, _OutIter>::id;
1320  
1321 +_GLIBCXX_END_LDBL_NAMESPACE
1322 +
1323    /**
1324     *  @brief  Messages facet base class providing catalog typedef.
1325     */
1326 --- libstdc++-v3/include/bits/locale_facets.tcc.jj      2006-02-02 16:38:32.000000000 +0100
1327 +++ libstdc++-v3/include/bits/locale_facets.tcc 2006-02-10 14:53:36.000000000 +0100
1328 @@ -1,6 +1,6 @@
1329  // Locale support -*- C++ -*-
1330  
1331 -// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005
1332 +// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006
1333  // Free Software Foundation, Inc.
1334  //
1335  // This file is part of the GNU ISO C++ Library.  This library is free
1336 @@ -272,6 +272,8 @@ namespace std
1337    __verify_grouping(const char* __grouping, size_t __grouping_size,
1338                     const string& __grouping_tmp);
1339  
1340 +_GLIBCXX_BEGIN_LDBL_NAMESPACE
1341 +
1342    template<typename _CharT, typename _InIter>
1343      _InIter
1344      num_get<_CharT, _InIter>::
1345 @@ -446,6 +448,8 @@ namespace std
1346        return __beg;
1347      }
1348  
1349 +_GLIBCXX_END_LDBL_NAMESPACE
1350 +
1351    template<typename _ValueT>
1352      struct __to_unsigned_type
1353      { typedef _ValueT __type; };
1354 @@ -460,6 +464,8 @@ namespace std
1355      { typedef unsigned long long __type; };
1356  #endif
1357  
1358 +_GLIBCXX_BEGIN_LDBL_NAMESPACE
1359 +
1360    template<typename _CharT, typename _InIter>
1361      template<typename _ValueT>
1362        _InIter
1363 @@ -772,6 +778,21 @@ namespace std
1364        return __beg;
1365      }
1366  
1367 +#if defined _GLIBCXX_LONG_DOUBLE_COMPAT && defined __LONG_DOUBLE_128__
1368 +  template<typename _CharT, typename _InIter>
1369 +    _InIter
1370 +    num_get<_CharT, _InIter>::
1371 +    __do_get(iter_type __beg, iter_type __end, ios_base& __io,
1372 +            ios_base::iostate& __err, double& __v) const
1373 +    {
1374 +      string __xtrc;
1375 +      __xtrc.reserve(32);
1376 +      __beg = _M_extract_float(__beg, __end, __io, __err, __xtrc);
1377 +      std::__convert_to_v(__xtrc.c_str(), __v, __err, _S_get_c_locale());
1378 +      return __beg;
1379 +    }
1380 +#endif
1381 +
1382    template<typename _CharT, typename _InIter>
1383      _InIter
1384      num_get<_CharT, _InIter>::
1385 @@ -822,6 +843,8 @@ namespace std
1386        __len = static_cast<int>(__w);
1387      }
1388  
1389 +_GLIBCXX_END_LDBL_NAMESPACE
1390 +
1391    // Forwarding functions to peel signed from unsigned integer types and
1392    // either cast or compute the absolute value for the former, depending
1393    // on __basefield.
1394 @@ -911,6 +934,8 @@ namespace std
1395        return __bufend - __buf;
1396      }
1397  
1398 +_GLIBCXX_BEGIN_LDBL_NAMESPACE
1399 +
1400    template<typename _CharT, typename _OutIter>
1401      void
1402      num_put<_CharT, _OutIter>::
1403 @@ -1233,6 +1258,14 @@ namespace std
1404      do_put(iter_type __s, ios_base& __io, char_type __fill, double __v) const
1405      { return _M_insert_float(__s, __io, __fill, char(), __v); }
1406  
1407 +#if defined _GLIBCXX_LONG_DOUBLE_COMPAT && defined __LONG_DOUBLE_128__
1408 +  template<typename _CharT, typename _OutIter>
1409 +    _OutIter
1410 +    num_put<_CharT, _OutIter>::
1411 +    __do_put(iter_type __s, ios_base& __io, char_type __fill, double __v) const
1412 +    { return _M_insert_float(__s, __io, __fill, char(), __v); }
1413 +#endif
1414 +
1415    template<typename _CharT, typename _OutIter>
1416      _OutIter
1417      num_put<_CharT, _OutIter>::
1418 @@ -1474,6 +1507,23 @@ namespace std
1419         return __beg;
1420        }
1421  
1422 +#if defined _GLIBCXX_LONG_DOUBLE_COMPAT && defined __LONG_DOUBLE_128__
1423 +  template<typename _CharT, typename _InIter>
1424 +    _InIter
1425 +    money_get<_CharT, _InIter>::
1426 +    __do_get(iter_type __beg, iter_type __end, bool __intl, ios_base& __io,
1427 +            ios_base::iostate& __err, double& __units) const
1428 +    {
1429 +      string __str;
1430 +      if (__intl)
1431 +       __beg = _M_extract<true>(__beg, __end, __io, __err, __str);
1432 +      else
1433 +       __beg = _M_extract<false>(__beg, __end, __io, __err, __str);
1434 +      std::__convert_to_v(__str.c_str(), __units, __err, _S_get_c_locale());
1435 +      return __beg;
1436 +    }
1437 +#endif
1438 +
1439    template<typename _CharT, typename _InIter>
1440      _InIter
1441      money_get<_CharT, _InIter>::
1442 @@ -1678,7 +1728,18 @@ namespace std
1443         __io.width(0);
1444         return __s;    
1445        }
1446 -  
1447 +
1448 +#if defined _GLIBCXX_LONG_DOUBLE_COMPAT && defined __LONG_DOUBLE_128__
1449 +  template<typename _CharT, typename _OutIter>
1450 +    _OutIter
1451 +    money_put<_CharT, _OutIter>::
1452 +    __do_put(iter_type __s, bool __intl, ios_base& __io, char_type __fill,
1453 +            double __units) const
1454 +    {
1455 +      return this->do_put(__s, __intl, __io, __fill, (long double) __units);
1456 +    }
1457 +#endif
1458 +
1459    template<typename _CharT, typename _OutIter>
1460      _OutIter
1461      money_put<_CharT, _OutIter>::
1462 @@ -1726,6 +1787,7 @@ namespace std
1463      { return __intl ? _M_insert<true>(__s, __io, __fill, __digits)
1464                     : _M_insert<false>(__s, __io, __fill, __digits); }
1465  
1466 +_GLIBCXX_END_LDBL_NAMESPACE
1467  
1468    // NB: Not especially useful. Without an ios_base object or some
1469    // kind of locale reference, we are left clawing at the air where
1470 @@ -2511,12 +2573,12 @@ namespace std
1471    extern template class moneypunct<char, true>;
1472    extern template class moneypunct_byname<char, false>;
1473    extern template class moneypunct_byname<char, true>;
1474 -  extern template class money_get<char>;
1475 -  extern template class money_put<char>;
1476 +  extern template class _GLIBCXX_LDBL_NAMESPACE money_get<char>;
1477 +  extern template class _GLIBCXX_LDBL_NAMESPACE money_put<char>;
1478    extern template class numpunct<char>;
1479    extern template class numpunct_byname<char>;
1480 -  extern template class num_get<char>;
1481 -  extern template class num_put<char>;
1482 +  extern template class _GLIBCXX_LDBL_NAMESPACE num_get<char>;
1483 +  extern template class _GLIBCXX_LDBL_NAMESPACE num_put<char>;
1484    extern template class __timepunct<char>;
1485    extern template class time_put<char>;
1486    extern template class time_put_byname<char>;
1487 @@ -2638,12 +2700,12 @@ namespace std
1488    extern template class moneypunct<wchar_t, true>;
1489    extern template class moneypunct_byname<wchar_t, false>;
1490    extern template class moneypunct_byname<wchar_t, true>;
1491 -  extern template class money_get<wchar_t>;
1492 -  extern template class money_put<wchar_t>;
1493 +  extern template class _GLIBCXX_LDBL_NAMESPACE money_get<wchar_t>;
1494 +  extern template class _GLIBCXX_LDBL_NAMESPACE money_put<wchar_t>;
1495    extern template class numpunct<wchar_t>;
1496    extern template class numpunct_byname<wchar_t>;
1497 -  extern template class num_get<wchar_t>;
1498 -  extern template class num_put<wchar_t>;
1499 +  extern template class _GLIBCXX_LDBL_NAMESPACE num_get<wchar_t>;
1500 +  extern template class _GLIBCXX_LDBL_NAMESPACE num_put<wchar_t>;
1501    extern template class __timepunct<wchar_t>;
1502    extern template class time_put<wchar_t>;
1503    extern template class time_put_byname<wchar_t>;
1504 --- libstdc++-v3/include/Makefile.in.jj 2006-02-02 16:38:32.000000000 +0100
1505 +++ libstdc++-v3/include/Makefile.in    2006-02-10 15:13:22.000000000 +0100
1506 @@ -1203,13 +1203,18 @@ ${host_builddir}/c++config.h: ${top_buil
1507                                 ${glibcxx_srcdir}/include/bits/c++config \
1508                                 stamp-${host_alias} \
1509                                 ${toplevel_srcdir}/gcc/DATESTAMP
1510 -       @cat ${glibcxx_srcdir}/include/bits/c++config > $@ ;\
1511 +       @ldbl_compat='' ;\
1512 +       grep "^[        ]*#[    ]*define[       ][      ]*_GLIBCXX_LONG_DOUBLE_COMPAT[  ][      ]*1[    ]*$$" \
1513 +       ${CONFIG_HEADER} > /dev/null 2>&1 \
1514 +       && ldbl_compat='s,^#undef _GLIBCXX_LONG_DOUBLE_COMPAT$$,#define _GLIBCXX_LONG_DOUBLE_COMPAT 1,' ;\
1515 +       sed -e "$$ldbl_compat" ${glibcxx_srcdir}/include/bits/c++config > $@ ;\
1516         sed -e 's/^/#define __GLIBCXX__ /' \
1517 -            < ${toplevel_srcdir}/gcc/DATESTAMP >> $@ ;\
1518 +           < ${toplevel_srcdir}/gcc/DATESTAMP >> $@ ;\
1519         sed -e 's/HAVE_/_GLIBCXX_HAVE_/g' \
1520             -e 's/PACKAGE/_GLIBCXX_PACKAGE/g' \
1521             -e 's/VERSION/_GLIBCXX_VERSION/g' \
1522             -e 's/WORDS_/_GLIBCXX_WORDS_/g' \
1523 +           -e '/[      ]_GLIBCXX_LONG_DOUBLE_COMPAT[   ]/d' \
1524             < ${CONFIG_HEADER} >> $@ ;\
1525         echo "#endif // _CXXCONFIG_" >>$@
1526  
1527 --- libstdc++-v3/testsuite/testsuite_abi.cc.jj  2006-02-02 16:39:16.000000000 +0100
1528 +++ libstdc++-v3/testsuite/testsuite_abi.cc     2006-02-10 14:57:38.000000000 +0100
1529 @@ -186,9 +186,12 @@
1530        known_versions.push_back("GLIBCXX_3.4.5");
1531        known_versions.push_back("GLIBCXX_3.4.6");
1532        known_versions.push_back("GLIBCXX_3.4.7");
1533 +      known_versions.push_back("GLIBCXX_LDBL_3.4");
1534 +      known_versions.push_back("GLIBCXX_LDBL_3.4.7");
1535        known_versions.push_back("GLIBCXX_3.4.8");
1536        known_versions.push_back("CXXABI_1.3");
1537        known_versions.push_back("CXXABI_1.3.1");
1538 +      known_versions.push_back("CXXABI_LDBL_1.3");
1539      }
1540    compat_list::iterator begin = known_versions.begin();
1541    compat_list::iterator end = known_versions.end();
1542 @@ -224,9 +227,7 @@
1543           // New version labels are ok. The rest are not.
1544           compat_list::iterator it2 = find(begin, end, test.name);
1545           if (it2 != end)
1546 -           {
1547 -             test.version_status = symbol::compatible;
1548 -           }
1549 +           test.version_status = symbol::compatible;
1550           else
1551             test.version_status = symbol::incompatible;
1552         }
1553 @@ -370,7 +371,7 @@
1554           added_names.erase(it);
1555         }
1556        else
1557 -         missing_names.push_back(what);
1558 +       missing_names.push_back(what);
1559      }
1560  
1561    // Check missing names for compatibility.
1562 --- libstdc++-v3/configure.jj   2006-02-02 16:38:28.000000000 +0100
1563 +++ libstdc++-v3/configure      2006-02-10 14:53:36.000000000 +0100
1564 @@ -309,7 +309,7 @@ ac_includes_default="\
1565  # include <unistd.h>
1566  #endif"
1567  
1568 -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_MAP port_specific_symbol_files ENABLE_SYMVERS_GNU_TRUE ENABLE_SYMVERS_GNU_FALSE ENABLE_SYMVERS_DARWIN_EXPORT_TRUE ENABLE_SYMVERS_DARWIN_EXPORT_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'
1569 +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_MAP port_specific_symbol_files ENABLE_SYMVERS_GNU_TRUE ENABLE_SYMVERS_GNU_FALSE ENABLE_SYMVERS_DARWIN_EXPORT_TRUE ENABLE_SYMVERS_DARWIN_EXPORT_FALSE GLIBCXX_LDBL_COMPAT_TRUE GLIBCXX_LDBL_COMPAT_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'
1570  ac_subst_files=''
1571  
1572  # Initialize some variables set by options.
1573 @@ -87881,6 +87881,72 @@ echo "${ECHO_T}$glibcxx_ptrdiff_t_is_i" 
1574  echo "$as_me: versioning on shared library symbols is $enable_symvers" >&6;}
1575  
1576  
1577 +ac_ldbl_compat=no
1578 +case "$target" in
1579 +  powerpc*-*-*gnu* | \
1580 +  sparc*-*-linux* | \
1581 +  s390*-*-linux* | \
1582 +  alpha*-*-linux*)
1583 +  cat >conftest.$ac_ext <<_ACEOF
1584 +/* confdefs.h.  */
1585 +_ACEOF
1586 +cat confdefs.h >>conftest.$ac_ext
1587 +cat >>conftest.$ac_ext <<_ACEOF
1588 +/* end confdefs.h.  */
1589 +
1590 +int
1591 +main ()
1592 +{
1593 +
1594 +#if !defined __LONG_DOUBLE_128__ || (defined(__sparc__) && defined(__arch64__))
1595 +#error no need for long double compatibility
1596 +#endif
1597 +
1598 +  ;
1599 +  return 0;
1600 +}
1601 +_ACEOF
1602 +rm -f conftest.$ac_objext
1603 +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
1604 +  (eval $ac_compile) 2>conftest.er1
1605 +  ac_status=$?
1606 +  grep -v '^ *+' conftest.er1 >conftest.err
1607 +  rm -f conftest.er1
1608 +  cat conftest.err >&5
1609 +  echo "$as_me:$LINENO: \$? = $ac_status" >&5
1610 +  (exit $ac_status); } &&
1611 +        { ac_try='test -z "$ac_c_werror_flag"
1612 +                        || test ! -s conftest.err'
1613 +  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
1614 +  (eval $ac_try) 2>&5
1615 +  ac_status=$?
1616 +  echo "$as_me:$LINENO: \$? = $ac_status" >&5
1617 +  (exit $ac_status); }; } &&
1618 +        { ac_try='test -s conftest.$ac_objext'
1619 +  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
1620 +  (eval $ac_try) 2>&5
1621 +  ac_status=$?
1622 +  echo "$as_me:$LINENO: \$? = $ac_status" >&5
1623 +  (exit $ac_status); }; }; then
1624 +  ac_ldbl_compat=yes
1625 +else
1626 +  echo "$as_me: failed program was:" >&5
1627 +sed 's/^/| /' conftest.$ac_ext >&5
1628 +
1629 +ac_ldbl_compat=no
1630 +fi
1631 +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
1632 +  if test "$ac_ldbl_compat" = yes; then
1633 +
1634 +cat >>confdefs.h <<\_ACEOF
1635 +#define _GLIBCXX_LONG_DOUBLE_COMPAT 1
1636 +_ACEOF
1637 +
1638 +    port_specific_symbol_files="\$(top_srcdir)/config/os/gnu-linux/ldbl-extra.ver"
1639 +  fi
1640 +esac
1641 +
1642 +
1643  # This depends on GLIBCXX_ENABLE_SYMVERS and GLIBCXX_IS_NATIVE.
1644  
1645    if $GLIBCXX_IS_NATIVE ; then
1646 @@ -88733,6 +88799,17 @@ fi
1647  
1648  
1649  
1650 +if test $ac_ldbl_compat = yes; then
1651 +  GLIBCXX_LDBL_COMPAT_TRUE=
1652 +  GLIBCXX_LDBL_COMPAT_FALSE='#'
1653 +else
1654 +  GLIBCXX_LDBL_COMPAT_TRUE='#'
1655 +  GLIBCXX_LDBL_COMPAT_FALSE=
1656 +fi
1657 +
1658 +
1659 +
1660 +
1661  cat >confcache <<\_ACEOF
1662  # This file is a shell script that caches the results of configure
1663  # tests run on this system so they can be shared between configure
1664 @@ -89088,6 +89165,13 @@ echo "$as_me: error: conditional \"ENABL
1665  Usually this means the macro was only invoked conditionally." >&2;}
1666     { (exit 1); exit 1; }; }
1667  fi
1668 +if test -z "${GLIBCXX_LDBL_COMPAT_TRUE}" && test -z "${GLIBCXX_LDBL_COMPAT_FALSE}"; then
1669 +  { { echo "$as_me:$LINENO: error: conditional \"GLIBCXX_LDBL_COMPAT\" was never defined.
1670 +Usually this means the macro was only invoked conditionally." >&5
1671 +echo "$as_me: error: conditional \"GLIBCXX_LDBL_COMPAT\" was never defined.
1672 +Usually this means the macro was only invoked conditionally." >&2;}
1673 +   { (exit 1); exit 1; }; }
1674 +fi
1675  
1676  : ${CONFIG_STATUS=./config.status}
1677  ac_clean_files_save=$ac_clean_files
1678 @@ -89758,6 +89842,8 @@ s,@ENABLE_SYMVERS_GNU_TRUE@,$ENABLE_SYMV
1679  s,@ENABLE_SYMVERS_GNU_FALSE@,$ENABLE_SYMVERS_GNU_FALSE,;t t
1680  s,@ENABLE_SYMVERS_DARWIN_EXPORT_TRUE@,$ENABLE_SYMVERS_DARWIN_EXPORT_TRUE,;t t
1681  s,@ENABLE_SYMVERS_DARWIN_EXPORT_FALSE@,$ENABLE_SYMVERS_DARWIN_EXPORT_FALSE,;t t
1682 +s,@GLIBCXX_LDBL_COMPAT_TRUE@,$GLIBCXX_LDBL_COMPAT_TRUE,;t t
1683 +s,@GLIBCXX_LDBL_COMPAT_FALSE@,$GLIBCXX_LDBL_COMPAT_FALSE,;t t
1684  s,@baseline_dir@,$baseline_dir,;t t
1685  s,@ATOMICITY_SRCDIR@,$ATOMICITY_SRCDIR,;t t
1686  s,@ATOMIC_WORD_SRCDIR@,$ATOMIC_WORD_SRCDIR,;t t
This page took 0.18957 seconds and 3 git commands to generate.