]> git.pld-linux.org Git - packages/gcc.git/blame - gcc-ldbl-default-libstdc++.patch
- oops, non-standard allocator reverted. rebuild.
[packages/gcc.git] / gcc-ldbl-default-libstdc++.patch
CommitLineData
9ef3e4ba
PS
12006-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
86402d83 1529@@ -186,9 +186,12 @@
9ef3e4ba
PS
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");
86402d83 1535 known_versions.push_back("GLIBCXX_3.4.8");
9ef3e4ba
PS
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();
86402d83 1542@@ -224,9 +227,7 @@
9ef3e4ba
PS
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 }
86402d83 1553@@ -370,7 +371,7 @@
9ef3e4ba
PS
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.248337 seconds and 4 git commands to generate.