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