]> git.pld-linux.org Git - packages/gcc4.git/blame - gcc4-ldbl-default-libstdc++.patch
- added from gcc/
[packages/gcc4.git] / gcc4-ldbl-default-libstdc++.patch
CommitLineData
4ada39a3
AM
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@@ -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.317241 seconds and 4 git commands to generate.