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