summaryrefslogtreecommitdiffstats
path: root/meta/packages/gcc/gcc-4.1.1/ppc-gcc-41-20060515.patch
diff options
context:
space:
mode:
Diffstat (limited to 'meta/packages/gcc/gcc-4.1.1/ppc-gcc-41-20060515.patch')
-rw-r--r--meta/packages/gcc/gcc-4.1.1/ppc-gcc-41-20060515.patch2225
1 files changed, 2225 insertions, 0 deletions
diff --git a/meta/packages/gcc/gcc-4.1.1/ppc-gcc-41-20060515.patch b/meta/packages/gcc/gcc-4.1.1/ppc-gcc-41-20060515.patch
new file mode 100644
index 0000000000..166e79c7e9
--- /dev/null
+++ b/meta/packages/gcc/gcc-4.1.1/ppc-gcc-41-20060515.patch
@@ -0,0 +1,2225 @@
1diff -urpN -X /home/bergner/cvs/dontdiff gcc-41-20060515.orig/gcc/ChangeLog gcc-41-20060515/gcc/ChangeLog
2--- gcc-41-20060515.orig/gcc/ChangeLog 2006-05-15 11:14:20.000000000 -0500
3+++ gcc-41-20060515/gcc/ChangeLog 2006-05-15 14:00:27.693964000 -0500
4@@ -724,6 +724,51 @@
5 * reload1.c (choose_reload_regs): Added call of regno_clobbered_p
6 with new meaning of SETS.
7
8+2006-02-14 Jakub Jelinek <jakub@redhat.com>
9+ Aldy Hernandez <aldyh@redhat.com>
10+
11+ PR target/25864
12+ * configure.ac: Add --with{out}-long-double-128 configure option.
13+ (TARGET_DEFAULT_LONG_DOUBLE_128): New test.
14+ * configure: Rebuilt.
15+ * config.in: Rebuilt.
16+ * doc/install.texi (Options specification): Document
17+ --with-long-double-128.
18+
19+ * config.gcc (sparc-*-linux*): Add sparc/t-linux to tmake_file.
20+ (sparc64-*-linux*): Likewise.
21+ * config/sparc/t-linux64 (SHLIB_MAPFILES): Removed.
22+ * config/sparc/t-linux: New file.
23+ * config/sparc/libgcc-sparc-glibc.ver (__fixtfdi, __fixunstfdi,
24+ __floatditf): Export at GCC_LDBL_3.0 if -m32 -mlong-double-128.
25+ (__divtc3, __multc3, __powitf2): Export at GCC_LDBL_4.0.0 if
26+ -m32 -mlong-double-128.
27+
28+ * config.gcc (alpha*-*-linux*): Add alpha/t-linux to tmake_file.
29+ * config/alpha/t-linux: New file.
30+ * config/alpha/libgcc-alpha-ldbl.ver: New file.
31+
32+ * config/sparc/linux.h (TARGET_OS_CPP_BUILTINS): Define
33+ __LONG_DOUBLE_128__ if TARGET_LONG_DOUBLE_128.
34+ (CPP_SUBTARGET_SPEC): Don't add -D__LONG_DOUBLE_128__ here.
35+ * config/sparc/linux64.h (TARGET_OS_CPP_BUILTINS): Define
36+ __LONG_DOUBLE_128__ if TARGET_LONG_DOUBLE_128 and TARGET_ARCH32.
37+ (CPP_ARCH32_SPEC): Remove.
38+
39+ * config/s390/s390.c (override_options): Handle
40+ TARGET_DEFAULT_LONG_DOUBLE_128.
41+
42+ * config/alpha/alpha.c (override_options): Handle
43+ TARGET_DEFAULT_LONG_DOUBLE_128.
44+
45+ * config/sparc/sparc.c (sparc_override_options): Handle
46+ TARGET_DEFAULT_LONG_DOUBLE_128.
47+
48+ * config/rs6000/linux.h [TARGET_DEFAULT_LONG_DOUBLE_128]
49+ (RS6000_DEFAULT_LONG_DOUBLE_SIZE): Define to 128.
50+ * config/rs6000/linux64.h [TARGET_DEFAULT_LONG_DOUBLE_128]
51+ (RS6000_DEFAULT_LONG_DOUBLE_SIZE): Define to 128.
52+
53 2006-02-19 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
54
55 * doc/install.texi: Add missing `@samp'.
56diff -urpN -X /home/bergner/cvs/dontdiff gcc-41-20060515.orig/gcc/config/alpha/alpha.c gcc-41-20060515/gcc/config/alpha/alpha.c
57--- gcc-41-20060515.orig/gcc/config/alpha/alpha.c 2006-05-15 11:13:49.000000000 -0500
58+++ gcc-41-20060515/gcc/config/alpha/alpha.c 2006-05-15 13:47:27.566272961 -0500
59@@ -516,6 +516,11 @@ override_options (void)
60 REAL_MODE_FORMAT (DFmode) = &vax_g_format;
61 REAL_MODE_FORMAT (TFmode) = NULL;
62 }
63+
64+#ifdef TARGET_DEFAULT_LONG_DOUBLE_128
65+ if (!(target_flags_explicit & MASK_LONG_DOUBLE_128))
66+ target_flags |= MASK_LONG_DOUBLE_128;
67+#endif
68 }
69
70 /* Returns 1 if VALUE is a mask that contains full bytes of zero or ones. */
71diff -urpN -X /home/bergner/cvs/dontdiff gcc-41-20060515.orig/gcc/config/alpha/libgcc-alpha-ldbl.ver gcc-41-20060515/gcc/config/alpha/libgcc-alpha-ldbl.ver
72--- gcc-41-20060515.orig/gcc/config/alpha/libgcc-alpha-ldbl.ver 1969-12-31 18:00:00.000000000 -0600
73+++ gcc-41-20060515/gcc/config/alpha/libgcc-alpha-ldbl.ver 2006-05-15 13:47:27.566272961 -0500
74@@ -0,0 +1,32 @@
75+%ifdef __LONG_DOUBLE_128__
76+
77+# long double 128 bit support in libgcc_s.so.1 is only available
78+# when configured with --with-long-double-128. Make sure all the
79+# symbols are available at @@GCC_LDBL_* versions to make it clear
80+# there is a configurable symbol set.
81+
82+%exclude {
83+ __fixtfdi
84+ __fixunstfdi
85+ __floatditf
86+
87+ __divtc3
88+ __multc3
89+ __powitf2
90+}
91+
92+%inherit GCC_LDBL_3.0 GCC_3.0
93+GCC_LDBL_3.0 {
94+ __fixtfdi
95+ __fixunstfdi
96+ __floatditf
97+}
98+
99+%inherit GCC_LDBL_4.0.0 GCC_4.0.0
100+GCC_LDBL_4.0.0 {
101+ __divtc3
102+ __multc3
103+ __powitf2
104+}
105+
106+%endif
107diff -urpN -X /home/bergner/cvs/dontdiff gcc-41-20060515.orig/gcc/config/alpha/t-linux gcc-41-20060515/gcc/config/alpha/t-linux
108--- gcc-41-20060515.orig/gcc/config/alpha/t-linux 1969-12-31 18:00:00.000000000 -0600
109+++ gcc-41-20060515/gcc/config/alpha/t-linux 2006-05-15 13:47:27.567272807 -0500
110@@ -0,0 +1 @@
111+SHLIB_MAPFILES += $(srcdir)/config/alpha/libgcc-alpha-ldbl.ver
112diff -urpN -X /home/bergner/cvs/dontdiff gcc-41-20060515.orig/gcc/config/rs6000/linux64.h gcc-41-20060515/gcc/config/rs6000/linux64.h
113--- gcc-41-20060515.orig/gcc/config/rs6000/linux64.h 2006-05-15 11:14:02.000000000 -0500
114+++ gcc-41-20060515/gcc/config/rs6000/linux64.h 2006-05-15 13:47:27.568272653 -0500
115@@ -570,3 +570,8 @@ while (0)
116 #endif
117
118 #define POWERPC_LINUX
119+
120+/* ppc{32,64} linux has 128-bit long double support in glibc 2.4 and later. */
121+#ifdef TARGET_DEFAULT_LONG_DOUBLE_128
122+#define RS6000_DEFAULT_LONG_DOUBLE_SIZE 128
123+#endif
124diff -urpN -X /home/bergner/cvs/dontdiff gcc-41-20060515.orig/gcc/config/rs6000/linux.h gcc-41-20060515/gcc/config/rs6000/linux.h
125--- gcc-41-20060515.orig/gcc/config/rs6000/linux.h 2006-05-15 11:14:02.000000000 -0500
126+++ gcc-41-20060515/gcc/config/rs6000/linux.h 2006-05-15 13:47:27.567272807 -0500
127@@ -120,3 +120,8 @@
128 #endif
129
130 #define POWERPC_LINUX
131+
132+/* ppc linux has 128-bit long double support in glibc 2.4 and later. */
133+#ifdef TARGET_DEFAULT_LONG_DOUBLE_128
134+#define RS6000_DEFAULT_LONG_DOUBLE_SIZE 128
135+#endif
136diff -urpN -X /home/bergner/cvs/dontdiff gcc-41-20060515.orig/gcc/config/s390/s390.c gcc-41-20060515/gcc/config/s390/s390.c
137--- gcc-41-20060515.orig/gcc/config/s390/s390.c 2006-05-15 11:13:50.000000000 -0500
138+++ gcc-41-20060515/gcc/config/s390/s390.c 2006-05-15 13:47:27.574271730 -0500
139@@ -1415,6 +1415,11 @@ override_options (void)
140 }
141 else if (s390_stack_guard)
142 error ("-mstack-guard implies use of -mstack-size");
143+
144+#ifdef TARGET_DEFAULT_LONG_DOUBLE_128
145+ if (!(target_flags_explicit & MASK_LONG_DOUBLE_128))
146+ target_flags |= MASK_LONG_DOUBLE_128;
147+#endif
148 }
149
150 /* Map for smallest class containing reg regno. */
151diff -urpN -X /home/bergner/cvs/dontdiff gcc-41-20060515.orig/gcc/config/sparc/libgcc-sparc-glibc.ver gcc-41-20060515/gcc/config/sparc/libgcc-sparc-glibc.ver
152--- gcc-41-20060515.orig/gcc/config/sparc/libgcc-sparc-glibc.ver 2006-05-15 11:13:55.000000000 -0500
153+++ gcc-41-20060515/gcc/config/sparc/libgcc-sparc-glibc.ver 2006-05-15 13:47:27.574271730 -0500
154@@ -26,3 +26,36 @@ GLIBC_VER {
155 __frame_state_for
156 __register_frame_info_table
157 }
158+
159+%if !defined (__arch64__) && defined (__LONG_DOUBLE_128__)
160+
161+# long double 128 bit support from 32-bit libgcc_s.so.1 is only available
162+# when configured with --with-long-double-128. Make sure all the
163+# symbols are available at @@GCC_LDBL_* versions to make it clear
164+# there is a configurable symbol set.
165+
166+%exclude {
167+ __fixtfdi
168+ __fixunstfdi
169+ __floatditf
170+
171+ __divtc3
172+ __multc3
173+ __powitf2
174+}
175+
176+%inherit GCC_LDBL_3.0 GCC_3.0
177+GCC_LDBL_3.0 {
178+ __fixtfdi
179+ __fixunstfdi
180+ __floatditf
181+}
182+
183+%inherit GCC_LDBL_4.0.0 GCC_4.0.0
184+GCC_LDBL_4.0.0 {
185+ __divtc3
186+ __multc3
187+ __powitf2
188+}
189+
190+%endif
191diff -urpN -X /home/bergner/cvs/dontdiff gcc-41-20060515.orig/gcc/config/sparc/linux64.h gcc-41-20060515/gcc/config/sparc/linux64.h
192--- gcc-41-20060515.orig/gcc/config/sparc/linux64.h 2006-05-15 11:13:55.000000000 -0500
193+++ gcc-41-20060515/gcc/config/sparc/linux64.h 2006-05-15 13:47:27.576271422 -0500
194@@ -20,22 +20,24 @@ along with GCC; see the file COPYING. I
195 the Free Software Foundation, 51 Franklin Street, Fifth Floor,
196 Boston, MA 02110-1301, USA. */
197
198-#define TARGET_OS_CPP_BUILTINS() \
199- do \
200- { \
201- builtin_define_std ("unix"); \
202- builtin_define_std ("linux"); \
203- builtin_define ("_LONGLONG"); \
204- builtin_define ("__gnu_linux__"); \
205- builtin_assert ("system=linux"); \
206- builtin_assert ("system=unix"); \
207- builtin_assert ("system=posix"); \
208- if (flag_pic) \
209- { \
210- builtin_define ("__PIC__"); \
211- builtin_define ("__pic__"); \
212- } \
213- } \
214+#define TARGET_OS_CPP_BUILTINS() \
215+ do \
216+ { \
217+ builtin_define_std ("unix"); \
218+ builtin_define_std ("linux"); \
219+ builtin_define ("_LONGLONG"); \
220+ builtin_define ("__gnu_linux__"); \
221+ builtin_assert ("system=linux"); \
222+ builtin_assert ("system=unix"); \
223+ builtin_assert ("system=posix"); \
224+ if (flag_pic) \
225+ { \
226+ builtin_define ("__PIC__"); \
227+ builtin_define ("__pic__"); \
228+ } \
229+ if (TARGET_ARCH32 && TARGET_LONG_DOUBLE_128) \
230+ builtin_define ("__LONG_DOUBLE_128__"); \
231+ } \
232 while (0)
233
234 /* Don't assume anything about the header files. */
235@@ -59,13 +61,6 @@ Boston, MA 02110-1301, USA. */
236 #undef ASM_CPU_DEFAULT_SPEC
237 #define ASM_CPU_DEFAULT_SPEC "-Av9a"
238
239-#ifdef SPARC_BI_ARCH
240-
241-#undef CPP_ARCH32_SPEC
242-#define CPP_ARCH32_SPEC "%{mlong-double-128:-D__LONG_DOUBLE_128__}"
243-
244-#endif
245-
246 /* Provide a STARTFILE_SPEC appropriate for GNU/Linux. Here we add
247 the GNU/Linux magical crtbegin.o file (see crtstuff.c) which
248 provides part of the support for getting C++ file-scope static
249diff -urpN -X /home/bergner/cvs/dontdiff gcc-41-20060515.orig/gcc/config/sparc/linux.h gcc-41-20060515/gcc/config/sparc/linux.h
250--- gcc-41-20060515.orig/gcc/config/sparc/linux.h 2006-05-15 11:13:55.000000000 -0500
251+++ gcc-41-20060515/gcc/config/sparc/linux.h 2006-05-15 13:47:27.575271576 -0500
252@@ -23,17 +23,19 @@ Boston, MA 02110-1301, USA. */
253 #define TARGET_OS_CPP_BUILTINS() \
254 do \
255 { \
256- builtin_define_std ("unix"); \
257- builtin_define_std ("linux"); \
258- builtin_define ("__gnu_linux__"); \
259- builtin_assert ("system=linux"); \
260- builtin_assert ("system=unix"); \
261- builtin_assert ("system=posix"); \
262- if (flag_pic) \
263- { \
264- builtin_define ("__PIC__"); \
265- builtin_define ("__pic__"); \
266- } \
267+ builtin_define_std ("unix"); \
268+ builtin_define_std ("linux"); \
269+ builtin_define ("__gnu_linux__"); \
270+ builtin_assert ("system=linux"); \
271+ builtin_assert ("system=unix"); \
272+ builtin_assert ("system=posix"); \
273+ if (flag_pic) \
274+ { \
275+ builtin_define ("__PIC__"); \
276+ builtin_define ("__pic__"); \
277+ } \
278+ if (TARGET_LONG_DOUBLE_128) \
279+ builtin_define ("__LONG_DOUBLE_128__"); \
280 } \
281 while (0)
282
283@@ -100,8 +102,7 @@ Boston, MA 02110-1301, USA. */
284
285 #undef CPP_SUBTARGET_SPEC
286 #define CPP_SUBTARGET_SPEC \
287-"%{posix:-D_POSIX_SOURCE} \
288-%{pthread:-D_REENTRANT} %{mlong-double-128:-D__LONG_DOUBLE_128__}"
289+"%{posix:-D_POSIX_SOURCE} %{pthread:-D_REENTRANT}"
290
291 #undef LIB_SPEC
292 #define LIB_SPEC \
293diff -urpN -X /home/bergner/cvs/dontdiff gcc-41-20060515.orig/gcc/config/sparc/sparc.c gcc-41-20060515/gcc/config/sparc/sparc.c
294--- gcc-41-20060515.orig/gcc/config/sparc/sparc.c 2006-05-15 11:13:55.000000000 -0500
295+++ gcc-41-20060515/gcc/config/sparc/sparc.c 2006-05-15 13:47:27.581270653 -0500
296@@ -790,6 +790,11 @@ sparc_override_options (void)
297 sparc_costs = &ultrasparc3_costs;
298 break;
299 };
300+
301+#ifdef TARGET_DEFAULT_LONG_DOUBLE_128
302+ if (!(target_flags_explicit & MASK_LONG_DOUBLE_128))
303+ target_flags |= MASK_LONG_DOUBLE_128;
304+#endif
305 }
306
307 #ifdef SUBTARGET_ATTRIBUTE_TABLE
308diff -urpN -X /home/bergner/cvs/dontdiff gcc-41-20060515.orig/gcc/config/sparc/t-linux gcc-41-20060515/gcc/config/sparc/t-linux
309--- gcc-41-20060515.orig/gcc/config/sparc/t-linux 1969-12-31 18:00:00.000000000 -0600
310+++ gcc-41-20060515/gcc/config/sparc/t-linux 2006-05-15 13:47:27.582270499 -0500
311@@ -0,0 +1,5 @@
312+# Override t-slibgcc-elf-ver to export some libgcc symbols with
313+# the symbol versions that glibc used.
314+# Avoid the t-linux version file.
315+SHLIB_MAPFILES = $(srcdir)/libgcc-std.ver \
316+ $(srcdir)/config/sparc/libgcc-sparc-glibc.ver
317diff -urpN -X /home/bergner/cvs/dontdiff gcc-41-20060515.orig/gcc/config/sparc/t-linux64 gcc-41-20060515/gcc/config/sparc/t-linux64
318--- gcc-41-20060515.orig/gcc/config/sparc/t-linux64 2006-05-15 11:13:55.000000000 -0500
319+++ gcc-41-20060515/gcc/config/sparc/t-linux64 2006-05-15 13:47:27.582270499 -0500
320@@ -8,12 +8,6 @@ INSTALL_LIBGCC = install-multilib
321 EXTRA_MULTILIB_PARTS=crtbegin.o crtend.o crtbeginS.o crtendS.o crtbeginT.o \
322 crtfastmath.o
323
324-# Override t-slibgcc-elf-ver to export some libgcc symbols with
325-# the symbol versions that glibc used.
326-# Avoid the t-linux version file.
327-SHLIB_MAPFILES = $(srcdir)/libgcc-std.ver \
328- $(srcdir)/config/sparc/libgcc-sparc-glibc.ver
329-
330 CRTSTUFF_T_CFLAGS = `if test x$$($(GCC_FOR_TARGET) $(MULTILIB_CFLAGS) \
331 -print-multi-os-directory) \
332 = x../lib64; then echo -mcmodel=medany; fi`
333diff -urpN -X /home/bergner/cvs/dontdiff gcc-41-20060515.orig/gcc/config.gcc gcc-41-20060515/gcc/config.gcc
334--- gcc-41-20060515.orig/gcc/config.gcc 2006-05-15 11:14:20.000000000 -0500
335+++ gcc-41-20060515/gcc/config.gcc 2006-05-15 13:47:27.555274654 -0500
336@@ -568,7 +568,7 @@ alpha*-*-unicosmk*)
337 alpha*-*-linux*)
338 tm_file="${tm_file} alpha/elf.h alpha/linux.h alpha/linux-elf.h"
339 target_cpu_default="MASK_GAS"
340- tmake_file="${tmake_file} alpha/t-crtfm alpha/t-alpha alpha/t-ieee"
341+ tmake_file="${tmake_file} alpha/t-crtfm alpha/t-alpha alpha/t-ieee alpha/t-linux"
342 ;;
343 alpha*-*-gnu*)
344 target_cpu_default="MASK_GAS"
345@@ -2056,7 +2056,7 @@ sparc-*-elf*)
346 sparc-*-linux*) # SPARC's running GNU/Linux, libc6
347 tm_file="${tm_file} dbxelf.h elfos.h svr4.h sparc/sysv4.h sparc/linux.h"
348 extra_options="${extra_options} sparc/long-double-switch.opt"
349- tmake_file="${tmake_file} sparc/t-crtfm"
350+ tmake_file="${tmake_file} sparc/t-linux sparc/t-crtfm"
351 ;;
352 sparc-*-rtems*)
353 tm_file="${tm_file} dbxelf.h elfos.h svr4.h sparc/sysv4.h sparc/sp-elf.h sparc/rtemself.h rtems.h"
354@@ -2175,7 +2175,7 @@ sparc64-*-freebsd*|ultrasparc-*-freebsd*
355 sparc64-*-linux*) # 64-bit SPARC's running GNU/Linux
356 tm_file="sparc/biarch64.h ${tm_file} dbxelf.h elfos.h svr4.h sparc/sysv4.h sparc/linux64.h"
357 extra_options="${extra_options} sparc/long-double-switch.opt"
358- tmake_file="${tmake_file} sparc/t-linux64 sparc/t-crtfm"
359+ tmake_file="${tmake_file} sparc/t-linux sparc/t-linux64 sparc/t-crtfm"
360 ;;
361 sparc64-*-netbsd*)
362 tm_file="sparc/biarch64.h ${tm_file}"
363diff -urpN -X /home/bergner/cvs/dontdiff gcc-41-20060515.orig/gcc/config.in gcc-41-20060515/gcc/config.in
364--- gcc-41-20060515.orig/gcc/config.in 2006-05-15 11:14:20.000000000 -0500
365+++ gcc-41-20060515/gcc/config.in 2006-05-15 13:47:27.559274038 -0500
366@@ -1277,6 +1277,12 @@
367 #endif
368
369
370+/* Define if TFmode long double should be the default */
371+#ifndef USED_FOR_TARGET
372+#undef TARGET_DEFAULT_LONG_DOUBLE_128
373+#endif
374+
375+
376 /* Define if your target C library provides stack protector support */
377 #ifndef USED_FOR_TARGET
378 #undef TARGET_LIBC_PROVIDES_SSP
379diff -urpN -X /home/bergner/cvs/dontdiff gcc-41-20060515.orig/gcc/configure gcc-41-20060515/gcc/configure
380--- gcc-41-20060515.orig/gcc/configure 2006-05-15 11:14:19.000000000 -0500
381+++ gcc-41-20060515/gcc/configure 2006-05-15 13:47:27.594268652 -0500
382@@ -931,6 +931,7 @@ Optional Packages:
383 --with-libiconv-prefix[=DIR] search for libiconv in DIR/include and DIR/lib
384 --without-libiconv-prefix don't search for libiconv in includedir and libdir
385 --with-system-libunwind use installed libunwind
386+ --with-long-double-128 Use 128-bit long double by default.
387 --with-gc={page,zone} choose the garbage collection mechanism to use
388 with the compiler
389 --with-system-zlib use installed libz
390@@ -7492,7 +7493,7 @@ if test "${gcc_cv_prog_makeinfo_modern+s
391 else
392 ac_prog_version=`$MAKEINFO --version 2>&1 |
393 sed -n 's/^.*GNU texinfo.* \([0-9][0-9.]*\).*$/\1/p'`
394- echo "configure:7495: version of makeinfo is $ac_prog_version" >&5
395+ echo "configure:7496: version of makeinfo is $ac_prog_version" >&5
396 case $ac_prog_version in
397 '') gcc_cv_prog_makeinfo_modern=no;;
398 4.[2-9]*)
399@@ -16213,6 +16214,46 @@ _ACEOF
400
401 fi
402
403+# Check if TFmode long double should be used by default or not.
404+# Some glibc targets used DFmode long double, but with glibc 2.4
405+# and later they can use TFmode.
406+case "$target" in
407+ powerpc*-*-*gnu* | \
408+ sparc*-*-linux* | \
409+ s390*-*-linux* | \
410+ alpha*-*-linux*)
411+
412+# Check whether --with-long-double-128 or --without-long-double-128 was given.
413+if test "${with_long_double_128+set}" = set; then
414+ withval="$with_long_double_128"
415+ gcc_cv_target_ldbl128="$with_long_double_128"
416+else
417+ gcc_cv_target_ldbl128=no
418+ if test x$host != x$target || test "x$TARGET_SYSTEM_ROOT" != x; then
419+ if test "x$with_sysroot" = x; then
420+ glibc_header_dir="${exec_prefix}/${target_noncanonical}/sys-include"
421+ elif test "x$with_sysroot" = xyes; then
422+ glibc_header_dir="${exec_prefix}/${target_noncanonical}/sys-root/usr/include"
423+ else
424+ glibc_header_dir="${with_sysroot}/usr/include"
425+ fi
426+ else
427+ glibc_header_dir=/usr/include
428+ fi
429+ grep '^ *#[ ]*define[ ][ ]*__LONG_DOUBLE_MATH_OPTIONAL' \
430+ $glibc_header_dir/bits/wordsize.h > /dev/null 2>&1 \
431+ && gcc_cv_target_ldbl128=yes
432+fi;
433+ ;;
434+esac
435+if test x$gcc_cv_target_ldbl128 = xyes; then
436+
437+cat >>confdefs.h <<\_ACEOF
438+#define TARGET_DEFAULT_LONG_DOUBLE_128 1
439+_ACEOF
440+
441+fi
442+
443 # Find out what GC implementation we want, or may, use.
444
445 # Check whether --with-gc or --without-gc was given.
446diff -urpN -X /home/bergner/cvs/dontdiff gcc-41-20060515.orig/gcc/configure.ac gcc-41-20060515/gcc/configure.ac
447--- gcc-41-20060515.orig/gcc/configure.ac 2006-05-15 11:14:20.000000000 -0500
448+++ gcc-41-20060515/gcc/configure.ac 2006-05-15 13:47:27.597400000 -0500
449@@ -3130,6 +3130,39 @@ if test x$gcc_cv_libc_provides_ssp = xye
450 [Define if your target C library provides stack protector support])
451 fi
452
453+# Check if TFmode long double should be used by default or not.
454+# Some glibc targets used DFmode long double, but with glibc 2.4
455+# and later they can use TFmode.
456+case "$target" in
457+ powerpc*-*-*gnu* | \
458+ sparc*-*-linux* | \
459+ s390*-*-linux* | \
460+ alpha*-*-linux*)
461+ AC_ARG_WITH(long-double-128,
462+[ --with-long-double-128 Use 128-bit long double by default.],
463+ gcc_cv_target_ldbl128="$with_long_double_128",
464+ [gcc_cv_target_ldbl128=no
465+ if test x$host != x$target || test "x$TARGET_SYSTEM_ROOT" != x; then
466+ if test "x$with_sysroot" = x; then
467+ glibc_header_dir="${exec_prefix}/${target_noncanonical}/sys-include"
468+ elif test "x$with_sysroot" = xyes; then
469+ glibc_header_dir="${exec_prefix}/${target_noncanonical}/sys-root/usr/include"
470+ else
471+ glibc_header_dir="${with_sysroot}/usr/include"
472+ fi
473+ else
474+ glibc_header_dir=/usr/include
475+ fi
476+ grep '^[ ]*#[ ]*define[ ][ ]*__LONG_DOUBLE_MATH_OPTIONAL' \
477+ $glibc_header_dir/bits/wordsize.h > /dev/null 2>&1 \
478+ && gcc_cv_target_ldbl128=yes])
479+ ;;
480+esac
481+if test x$gcc_cv_target_ldbl128 = xyes; then
482+ AC_DEFINE(TARGET_DEFAULT_LONG_DOUBLE_128, 1,
483+ [Define if TFmode long double should be the default])
484+fi
485+
486 # Find out what GC implementation we want, or may, use.
487 AC_ARG_WITH(gc,
488 [ --with-gc={page,zone} choose the garbage collection mechanism to use
489diff -urpN -X /home/bergner/cvs/dontdiff gcc-41-20060515.orig/gcc/doc/install.texi gcc-41-20060515/gcc/doc/install.texi
490--- gcc-41-20060515.orig/gcc/doc/install.texi 2006-05-15 11:10:10.000000000 -0500
491+++ gcc-41-20060515/gcc/doc/install.texi 2006-05-15 13:47:27.600399538 -0500
492@@ -1224,6 +1224,14 @@ error message.
493 All support for systems which have been obsoleted in one release of GCC
494 is removed entirely in the next major release, unless someone steps
495 forward to maintain the port.
496+
497+@item --with-long-double-128
498+Specify if @code{long double} type should be 128-bit by default on selected
499+GNU/Linux architectures. If using @code{--without-long-double-128},
500+@code{long double} will be by default 64-bit, the same as @code{double} type.
501+When neither of these configure options are used, the default will be
502+128-bit @code{long double} when built against GNU C Library 2.4 and later,
503+64-bit @code{long double} otherwise.
504 @end table
505
506 @subheading Cross-Compiler-Specific Options
507diff -urpN -X /home/bergner/cvs/dontdiff gcc-41-20060515.orig/libstdc++-v3/ChangeLog gcc-41-20060515/libstdc++-v3/ChangeLog
508--- gcc-41-20060515.orig/libstdc++-v3/ChangeLog 2006-05-15 11:15:42.000000000 -0500
509+++ gcc-41-20060515/libstdc++-v3/ChangeLog 2006-05-15 14:02:07.401662657 -0500
510@@ -153,6 +153,64 @@
511 Likewise.
512 * docs/html/ext/pb_assoc/tree_assoc_cntnr_node_iterator.html: Likewise.
513
514+2006-02-07 Jakub Jelinek <jakub@redhat.com>
515+ Benjamin Kosnik <bkoz@redhat.com>
516+
517+ PR target/25864
518+ * configure.ac (_GLIBCXX_LONG_DOUBLE_COMPAT): New check.
519+ If true, set also port_specific_symbol_files and create
520+ as_symver_specs.
521+ (GLIBCXX_LDBL_COMPAT): New GLIBCXX_CONDITIONAL.
522+ * configure: Rebuilt.
523+ * config.h.in: Rebuilt.
524+ * config/os/gnu-linux/ldbl-extra.ver: New file.
525+ * config/linker-map.gnu: Make sure no __float128 symbols are
526+ exported.
527+ * include/bits/c++config (_GLIBCXX_LONG_DOUBLE_COMPAT,
528+ _GLIBCXX_LDBL_NAMESPACE, _GLIBCXX_BEGIN_LDBL_NAMESPACE,
529+ _GLIBCXX_END_LDBL_NAMESPACE): Define.
530+ * include/bits/localefwd.h: Use them to conditionally scope facets.
531+ * include/bits/locale_facets.h: Surround std::{money,num}_{get,put}
532+ with _GLIBCXX_BEGIN_LDBL_NAMESPACE and _GLIBCXX_END_LDBL_NAMESPACE.
533+ [_GLIBCXX_LONG_DOUBLE_COMPAT] (std::money_get): Add __do_get method.
534+ [_GLIBCXX_LONG_DOUBLE_COMPAT] (std::money_put): Add __do_put method.
535+ [_GLIBCXX_LONG_DOUBLE_COMPAT] (std::num_get): Add __do_get method.
536+ [_GLIBCXX_LONG_DOUBLE_COMPAT] (std::num_put): Add __do_put method.
537+ * include/bits/locale_facets.tcc: Surround std::{money,num}_{get,put}
538+ with _GLIBCXX_BEGIN_LDBL_NAMESPACE and _GLIBCXX_END_LDBL_NAMESPACE.
539+ (std::money_get::__do_get, std::money_put::__do_put,
540+ std::num_get::__do_get, std::num_put::__do_put): New
541+ specializations.
542+ * include/Makefile.am: Conditionally define
543+ _GLIBCXX_LONG_DOUBLE_COMPAT in c++config.
544+ * include/Makefile.in: Regenerate.
545+ * src/locale.cc [_GLIBCXX_LONG_DOUBLE_COMPAT] (_GLIBCXX_LOC_ID,
546+ _GLIBCXX_SYNC_ID): Define, use them.
547+ * src/compatibility-ldbl.cc: New file.
548+ * src/complex_io.cc [_GLIBCXX_LONG_DOUBLE_COMPAT]: Add compatibility
549+ symbols.
550+ * src/limits.cc [_GLIBCXX_LONG_DOUBLE_COMPAT]: Likewise.
551+ * src/locale.cc [_GLIBCXX_LONG_DOUBLE_COMPAT]: Likewise.
552+ * src/locale-inst.cc [_GLIBCXX_LONG_DOUBLE_COMPAT]: Likewise.
553+ * src/locale-misc-inst.cc [_GLIBCXX_LONG_DOUBLE_COMPAT]: Likewise.
554+ * src/istream-inst.cc [_GLIBCXX_LONG_DOUBLE_COMPAT]: Likewise.
555+ * src/ostream-inst.cc [_GLIBCXX_LONG_DOUBLE_COMPAT]: Likewise.
556+ * src/locale.cc [_GLIBCXX_LONG_DOUBLE_COMPAT]: Likewise.
557+ * src/wlocale-inst.cc [_GLIBCXX_LONG_DOUBLE_COMPAT]: Likewise.
558+ * src/compatibility.cc [_GLIBCXX_LONG_DOUBLE_COMPAT]: Likewise.
559+ * config/locale/generic/c_locale.cc [_GLIBCXX_LONG_DOUBLE_COMPAT]:
560+ Likewise.
561+ * config/locale/gnu/c_locale.cc [_GLIBCXX_LONG_DOUBLE_COMPAT]:
562+ Likewise.
563+ * src/Makefile.am (libstdc++-symbol.ver): Append instead of
564+ insert in the middle if port specific symbol file requests it.
565+ (ldbl_compat_sources): New variable.
566+ (sources): Use it.
567+ (compatibility-ldbl.lo, compatibility-ldbl.o): New rules.
568+ * src/Makefile.in: Rebuilt.
569+ * testsuite/testsuite_abi.cc: Recognize GLIBCXX_LDBL_3.4,
570+ GLIBCXX_LDBL_3.4.7, CXXABI_LDBL_1.3.
571+
572 2006-02-07 Paolo Carlini <pcarlini@suse.de>
573
574 * include/tr1/hashtable: Trivial formatting fixes.
575diff -urpN -X /home/bergner/cvs/dontdiff gcc-41-20060515.orig/libstdc++-v3/config/linker-map.gnu gcc-41-20060515/libstdc++-v3/config/linker-map.gnu
576--- gcc-41-20060515.orig/libstdc++-v3/config/linker-map.gnu 2006-05-15 11:15:41.000000000 -0500
577+++ gcc-41-20060515/libstdc++-v3/config/linker-map.gnu 2006-05-15 13:47:27.603399076 -0500
578@@ -1,6 +1,6 @@
579 ## Linker script for GNU ld 2.13.91+ only.
580 ##
581-## Copyright (C) 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
582+## Copyright (C) 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
583 ##
584 ## This file is part of the libstdc++ version 3 distribution.
585 ##
586@@ -44,7 +44,10 @@ GLIBCXX_3.4 {
587 std::basic_[j-n]*;
588 std::basic_o[a-e]*;
589 # std::basic_ofstream;
590- std::basic_o[g-z]*;
591+# std::basic_o[g-z]*;
592+ std::basic_o[g-r]*;
593+ std::basic_ostr[a-d]*;
594+ std::basic_ostr[f-z]*;
595 std::basic_[p-r]*;
596 std::basic_streambuf*;
597 # std::basic_string
598@@ -88,7 +91,14 @@ GLIBCXX_3.4 {
599 std::locale::_[J-Ra-z]*;
600 std::locale::_S_normalize_category*;
601 std::locale::_[T-Za-z]*;
602- std::[A-Zm-r]*;
603+# std::[A-Zm-r]*;
604+ std::[A-Zmp-r]*;
605+ std::n[^u]*;
606+ std::nu[^m]*;
607+ std::num[^e]*;
608+ std::ostrstream*;
609+ std::out_of_range*;
610+ std::overflow_error*;
611 std::set_new_handler*;
612 std::set_terminate*;
613 std::set_unexpected*;
614@@ -256,7 +266,7 @@ GLIBCXX_3.4 {
615 _ZNSi[0-9][a-h]*;
616 _ZNSi[0-9][j-z]*;
617 _ZNSi6ignoreE[il][il];
618- _ZNSirsE*;
619+ _ZNSirsE*[^g];
620
621 # std::basic_istream<wchar_t>
622 _ZNSt13basic_istreamIwSt11char_traitsIwEEC*;
623@@ -265,7 +275,7 @@ GLIBCXX_3.4 {
624 _ZNSt13basic_istreamIwSt11char_traitsIwEE[0-9][a-h]*;
625 _ZNSt13basic_istreamIwSt11char_traitsIwEE[0-9][j-z]*;
626 _ZNSt13basic_istreamIwSt11char_traitsIwEE6ignoreE[il][ijlm];
627- _ZNSt13basic_istreamIwSt11char_traitsIwEErsE*;
628+ _ZNSt13basic_istreamIwSt11char_traitsIwEErsE*[^g];
629
630 # std::istream operators and inserters
631 _ZSt7getlineI[cw]St11char_traitsI[cw]ESaI[cw]EERSt13basic_istream*;
632@@ -277,6 +287,37 @@ GLIBCXX_3.4 {
633 _ZStrsIe[cw]St11char_traitsI[cw]EERSt13basic_istream*;
634 _ZStrsIf[cw]St11char_traitsI[cw]EERSt13basic_istream*;
635
636+ # std::basic_ostream<char>
637+ _ZNSoC*;
638+ _ZNSoD*;
639+ _ZNKSo6sentrycvbEv;
640+ _ZNSo8_M_write*;
641+ _ZNSo[0-9][a-z]*;
642+ _ZNSolsE*[^g];
643+
644+ # std::basic_ostream<wchar_t>
645+ _ZNSt13basic_ostreamIwSt11char_traitsIwEEC*;
646+ _ZNSt13basic_ostreamIwSt11char_traitsIwEED*;
647+ _ZNKSt13basic_ostreamIwSt11char_traitsIwEE[0-9][a-z]*;
648+ _ZNSt13basic_ostreamIwSt11char_traitsIwEE3putEw;
649+ _ZNSt13basic_ostreamIwSt11char_traitsIwEE5flushEv;
650+ _ZNSt13basic_ostreamIwSt11char_traitsIwEE5seekpE*;
651+ _ZNSt13basic_ostreamIwSt11char_traitsIwEE5tellpEv;
652+ _ZNSt13basic_ostreamIwSt11char_traitsIwEE5writeEPKw*;
653+ _ZNSt13basic_ostreamIwSt11char_traitsIwEE6sentry*;
654+ _ZNSt13basic_ostreamIwSt11char_traitsIwEE8_M_write*;
655+ _ZNSt13basic_ostreamIwSt11char_traitsIwEElsE*[^g];
656+
657+ # std::ostream operators and inserters
658+ _ZSt4end[ls]I[cw]St11char_traitsI[cw]EERSt13basic_ostream*;
659+ _ZSt5flushI[cw]St11char_traitsI[cw]EERSt13basic_ostream*;
660+ _ZStlsI[cw]St11char_traitsI[cw]EERSt13basic_ostream*;
661+ _ZStlsI[cw]St11char_traitsI[cw]ESaI[cw]EERSt13basic_ostream*;
662+ _ZStlsISt11char_traitsI[cw]EERSt13basic_ostream*;
663+ _ZStlsId[cw]St11char_traitsI[cw]EERSt13basic_ostream*;
664+ _ZStlsIe[cw]St11char_traitsI[cw]EERSt13basic_ostream*;
665+ _ZStlsIf[cw]St11char_traitsI[cw]EERSt13basic_ostream*;
666+
667 # std::locale destructors
668 _ZNSt6localeD*;
669
670@@ -292,14 +333,23 @@ GLIBCXX_3.4 {
671 _ZNSt8ios_base4InitD*;
672
673 # bool std::has_facet
674- _ZSt9has_facet*;
675+ _ZSt9has_facetIS*;
676
677 # std::num_get
678 _ZNKSt7num_getI[cw]St19istreambuf_iteratorI[cw]St11char_traitsI[cw]EEE*;
679
680+ # std::num_put
681+ _ZNKSt7num_putI[cw]St19ostreambuf_iteratorI[cw]St11char_traitsI[cw]EEE*;
682+
683 # std::money_get
684 _ZNKSt9money_getI[cw]St19istreambuf_iteratorI[cw]St11char_traitsI[cw]EEE*;
685
686+ # std::money_put
687+ _ZNKSt9money_putI[cw]St19ostreambuf_iteratorI[cw]St11char_traitsI[cw]EEE*;
688+
689+ # std::numeric_limits
690+ _ZNSt14numeric_limitsI[^g]*;
691+
692 # std::_Rb_tree
693 _ZSt18_Rb_tree_decrementPKSt18_Rb_tree_node_base;
694 _ZSt18_Rb_tree_decrementPSt18_Rb_tree_node_base;
695@@ -327,7 +377,7 @@ GLIBCXX_3.4 {
696 _ZNSt12__basic_fileIcED*;
697
698 # std::__convert_to_v
699- _ZSt14__convert_to_v*;
700+ _ZSt14__convert_to_vI[^g]*;
701
702 # __gnu_cxx::stdio_sync_filebuf
703 _ZTVN9__gnu_cxx18stdio_sync_filebufI[cw]St11char_traitsI[cw]EEE;
704@@ -399,7 +449,8 @@ GLIBCXX_3.4 {
705 _ZTSN9__gnu_cxx13stdio_filebufI[cw]St11char_traitsI[cw]EEE;
706
707 # function-scope static objects requires a guard variable.
708- _ZGVNSt*;
709+ _ZGVNSt[^1]*;
710+ _ZGVNSt1[^7]*;
711
712 # virtual function thunks
713 _ZThn8_NS*;
714@@ -665,9 +716,9 @@ CXXABI_1.3 {
715 _ZTVN10__cxxabiv121__vmi_class_type_infoE;
716
717 # typeinfo structure (and some names)
718- _ZTI[a-z];
719- _ZTIP[a-z];
720- _ZTIPK[a-z];
721+ _ZTI[a-fh-z];
722+ _ZTIP[a-fh-z];
723+ _ZTIPK[a-fh-z];
724 _ZTIN10__cxxabiv117__array_type_infoE;
725 _ZTIN10__cxxabiv117__class_type_infoE;
726 _ZTIN10__cxxabiv116__enum_type_infoE;
727@@ -680,9 +731,9 @@ CXXABI_1.3 {
728 _ZTIN10__cxxabiv121__vmi_class_type_infoE;
729
730 # typeinfo name
731- _ZTS[a-z];
732- _ZTSP[a-z];
733- _ZTSPK[a-z];
734+ _ZTS[a-fh-z];
735+ _ZTSP[a-fh-z];
736+ _ZTSPK[a-fh-z];
737 _ZTSN10__cxxabiv117__array_type_infoE;
738 _ZTSN10__cxxabiv117__class_type_infoE;
739 _ZTSN10__cxxabiv116__enum_type_infoE;
740diff -urpN -X /home/bergner/cvs/dontdiff gcc-41-20060515.orig/libstdc++-v3/config/locale/generic/c_locale.cc gcc-41-20060515/libstdc++-v3/config/locale/generic/c_locale.cc
741--- gcc-41-20060515.orig/libstdc++-v3/config/locale/generic/c_locale.cc 2006-05-15 11:15:39.000000000 -0500
742+++ gcc-41-20060515/libstdc++-v3/config/locale/generic/c_locale.cc 2006-05-15 13:47:27.605398768 -0500
743@@ -1,6 +1,6 @@
744 // Wrapper for underlying C-language localization -*- C++ -*-
745
746-// Copyright (C) 2001, 2002, 2003, 2004, 2005
747+// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006
748 // Free Software Foundation, Inc.
749 //
750 // This file is part of the GNU ISO C++ Library. This library is free
751@@ -168,3 +168,10 @@ namespace std
752 {
753 const char* const* const locale::_S_categories = __gnu_cxx::category_names;
754 } // namespace std
755+
756+// XXX GLIBCXX_ABI Deprecated
757+#ifdef _GLIBCXX_LONG_DOUBLE_COMPAT
758+#define _GLIBCXX_LDBL_COMPAT(dbl, ldbl) \
759+ extern "C" void ldbl (void) __attribute__ ((alias (#dbl)))
760+_GLIBCXX_LDBL_COMPAT(_ZSt14__convert_to_vIdEvPKcRT_RSt12_Ios_IostateRKPi, _ZSt14__convert_to_vIeEvPKcRT_RSt12_Ios_IostateRKPi);
761+#endif // _GLIBCXX_LONG_DOUBLE_COMPAT
762diff -urpN -X /home/bergner/cvs/dontdiff gcc-41-20060515.orig/libstdc++-v3/config/locale/gnu/c_locale.cc gcc-41-20060515/libstdc++-v3/config/locale/gnu/c_locale.cc
763--- gcc-41-20060515.orig/libstdc++-v3/config/locale/gnu/c_locale.cc 2006-05-15 11:15:39.000000000 -0500
764+++ gcc-41-20060515/libstdc++-v3/config/locale/gnu/c_locale.cc 2006-05-15 13:47:27.606398615 -0500
765@@ -1,6 +1,6 @@
766 // Wrapper for underlying C-language localization -*- C++ -*-
767
768-// Copyright (C) 2001, 2002, 2003, 2004, 2005
769+// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006
770 // Free Software Foundation, Inc.
771 //
772 // This file is part of the GNU ISO C++ Library. This library is free
773@@ -132,3 +132,10 @@ namespace std
774 {
775 const char* const* const locale::_S_categories = __gnu_cxx::category_names;
776 } // namespace std
777+
778+// XXX GLIBCXX_ABI Deprecated
779+#ifdef _GLIBCXX_LONG_DOUBLE_COMPAT
780+#define _GLIBCXX_LDBL_COMPAT(dbl, ldbl) \
781+ extern "C" void ldbl (void) __attribute__ ((alias (#dbl)))
782+_GLIBCXX_LDBL_COMPAT(_ZSt14__convert_to_vIdEvPKcRT_RSt12_Ios_IostateRKP15__locale_struct, _ZSt14__convert_to_vIeEvPKcRT_RSt12_Ios_IostateRKP15__locale_struct);
783+#endif // _GLIBCXX_LONG_DOUBLE_COMPAT
784diff -urpN -X /home/bergner/cvs/dontdiff gcc-41-20060515.orig/libstdc++-v3/config/os/gnu-linux/ldbl-extra.ver gcc-41-20060515/libstdc++-v3/config/os/gnu-linux/ldbl-extra.ver
785--- gcc-41-20060515.orig/libstdc++-v3/config/os/gnu-linux/ldbl-extra.ver 1969-12-31 18:00:00.000000000 -0600
786+++ gcc-41-20060515/libstdc++-v3/config/os/gnu-linux/ldbl-extra.ver 2006-05-15 13:47:27.606398615 -0500
787@@ -0,0 +1,19 @@
788+# Appended to version file.
789+
790+GLIBCXX_LDBL_3.4 {
791+ _ZNSt14numeric_limitsIg*;
792+ _ZNSirsERg;
793+ _ZNSolsEg;
794+ _ZNSt13basic_istreamIwSt11char_traitsIwEErsERg;
795+ _ZNSt13basic_ostreamIwSt11char_traitsIwEElsEg;
796+ _ZSt14__convert_to_vIgEvPKcRT_RSt12_Ios_IostateRKP*;
797+ _ZStlsIg[cw]St11char_traitsI[cw]EERSt13basic_ostreamIT0_T1_ES6_RKSt7complexIT_E;
798+ _ZStrsIg[cw]St11char_traitsI[cw]EERSt13basic_istreamIT0_T1_ES6_RSt7complexIT_E;
799+ *__gnu_cxx_ldbl128*;
800+};
801+
802+CXXABI_LDBL_1.3 {
803+ _ZT[IS]g;
804+ _ZT[IS]Pg;
805+ _ZT[IS]PKg;
806+};
807diff -urpN -X /home/bergner/cvs/dontdiff gcc-41-20060515.orig/libstdc++-v3/config.h.in gcc-41-20060515/libstdc++-v3/config.h.in
808--- gcc-41-20060515.orig/libstdc++-v3/config.h.in 2006-05-15 11:15:42.000000000 -0500
809+++ gcc-41-20060515/libstdc++-v3/config.h.in 2006-05-15 13:47:27.601399384 -0500
810@@ -658,6 +658,9 @@
811 /* Define to 1 if a full hosted library is built, or 0 if freestanding. */
812 #undef _GLIBCXX_HOSTED
813
814+/* Define if compatibility should be provided for -mlong-double-64. */
815+#undef _GLIBCXX_LONG_DOUBLE_COMPAT
816+
817 /* Define if ptrdiff_t is int. */
818 #undef _GLIBCXX_PTRDIFF_T_IS_INT
819
820diff -urpN -X /home/bergner/cvs/dontdiff gcc-41-20060515.orig/libstdc++-v3/configure gcc-41-20060515/libstdc++-v3/configure
821--- gcc-41-20060515.orig/libstdc++-v3/configure 2006-05-15 11:15:42.000000000 -0500
822+++ gcc-41-20060515/libstdc++-v3/configure 2006-05-15 13:47:27.664389689 -0500
823@@ -309,7 +309,7 @@ ac_includes_default="\
824 # include <unistd.h>
825 #endif"
826
827-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'
828+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'
829 ac_subst_files=''
830
831 # Initialize some variables set by options.
832@@ -87959,6 +87959,72 @@ echo "${ECHO_T}$glibcxx_ptrdiff_t_is_i"
833 echo "$as_me: versioning on shared library symbols is $enable_symvers" >&6;}
834
835
836+ac_ldbl_compat=no
837+case "$target" in
838+ powerpc*-*-*gnu* | \
839+ sparc*-*-linux* | \
840+ s390*-*-linux* | \
841+ alpha*-*-linux*)
842+ cat >conftest.$ac_ext <<_ACEOF
843+/* confdefs.h. */
844+_ACEOF
845+cat confdefs.h >>conftest.$ac_ext
846+cat >>conftest.$ac_ext <<_ACEOF
847+/* end confdefs.h. */
848+
849+int
850+main ()
851+{
852+
853+#if !defined __LONG_DOUBLE_128__ || (defined(__sparc__) && defined(__arch64__))
854+#error no need for long double compatibility
855+#endif
856+
857+ ;
858+ return 0;
859+}
860+_ACEOF
861+rm -f conftest.$ac_objext
862+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
863+ (eval $ac_compile) 2>conftest.er1
864+ ac_status=$?
865+ grep -v '^ *+' conftest.er1 >conftest.err
866+ rm -f conftest.er1
867+ cat conftest.err >&5
868+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
869+ (exit $ac_status); } &&
870+ { ac_try='test -z "$ac_c_werror_flag"
871+ || test ! -s conftest.err'
872+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
873+ (eval $ac_try) 2>&5
874+ ac_status=$?
875+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
876+ (exit $ac_status); }; } &&
877+ { ac_try='test -s conftest.$ac_objext'
878+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
879+ (eval $ac_try) 2>&5
880+ ac_status=$?
881+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
882+ (exit $ac_status); }; }; then
883+ ac_ldbl_compat=yes
884+else
885+ echo "$as_me: failed program was:" >&5
886+sed 's/^/| /' conftest.$ac_ext >&5
887+
888+ac_ldbl_compat=no
889+fi
890+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext
891+ if test "$ac_ldbl_compat" = yes; then
892+
893+cat >>confdefs.h <<\_ACEOF
894+#define _GLIBCXX_LONG_DOUBLE_COMPAT 1
895+_ACEOF
896+
897+ port_specific_symbol_files="\$(top_srcdir)/config/os/gnu-linux/ldbl-extra.ver"
898+ fi
899+esac
900+
901+
902 # This depends on GLIBCXX_ENABLE_SYMVERS and GLIBCXX_IS_NATIVE.
903
904 if $GLIBCXX_IS_NATIVE ; then
905@@ -88811,6 +88877,17 @@ fi
906
907
908
909+if test $ac_ldbl_compat = yes; then
910+ GLIBCXX_LDBL_COMPAT_TRUE=
911+ GLIBCXX_LDBL_COMPAT_FALSE='#'
912+else
913+ GLIBCXX_LDBL_COMPAT_TRUE='#'
914+ GLIBCXX_LDBL_COMPAT_FALSE=
915+fi
916+
917+
918+
919+
920 cat >confcache <<\_ACEOF
921 # This file is a shell script that caches the results of configure
922 # tests run on this system so they can be shared between configure
923@@ -89166,6 +89243,13 @@ echo "$as_me: error: conditional \"ENABL
924 Usually this means the macro was only invoked conditionally." >&2;}
925 { (exit 1); exit 1; }; }
926 fi
927+if test -z "${GLIBCXX_LDBL_COMPAT_TRUE}" && test -z "${GLIBCXX_LDBL_COMPAT_FALSE}"; then
928+ { { echo "$as_me:$LINENO: error: conditional \"GLIBCXX_LDBL_COMPAT\" was never defined.
929+Usually this means the macro was only invoked conditionally." >&5
930+echo "$as_me: error: conditional \"GLIBCXX_LDBL_COMPAT\" was never defined.
931+Usually this means the macro was only invoked conditionally." >&2;}
932+ { (exit 1); exit 1; }; }
933+fi
934
935 : ${CONFIG_STATUS=./config.status}
936 ac_clean_files_save=$ac_clean_files
937@@ -89836,6 +89920,8 @@ s,@ENABLE_SYMVERS_GNU_TRUE@,$ENABLE_SYMV
938 s,@ENABLE_SYMVERS_GNU_FALSE@,$ENABLE_SYMVERS_GNU_FALSE,;t t
939 s,@ENABLE_SYMVERS_DARWIN_EXPORT_TRUE@,$ENABLE_SYMVERS_DARWIN_EXPORT_TRUE,;t t
940 s,@ENABLE_SYMVERS_DARWIN_EXPORT_FALSE@,$ENABLE_SYMVERS_DARWIN_EXPORT_FALSE,;t t
941+s,@GLIBCXX_LDBL_COMPAT_TRUE@,$GLIBCXX_LDBL_COMPAT_TRUE,;t t
942+s,@GLIBCXX_LDBL_COMPAT_FALSE@,$GLIBCXX_LDBL_COMPAT_FALSE,;t t
943 s,@baseline_dir@,$baseline_dir,;t t
944 s,@ATOMICITY_SRCDIR@,$ATOMICITY_SRCDIR,;t t
945 s,@ATOMIC_WORD_SRCDIR@,$ATOMIC_WORD_SRCDIR,;t t
946diff -urpN -X /home/bergner/cvs/dontdiff gcc-41-20060515.orig/libstdc++-v3/configure.ac gcc-41-20060515/libstdc++-v3/configure.ac
947--- gcc-41-20060515.orig/libstdc++-v3/configure.ac 2006-05-15 11:15:42.000000000 -0500
948+++ gcc-41-20060515/libstdc++-v3/configure.ac 2006-05-15 13:47:27.665389535 -0500
949@@ -281,6 +281,25 @@ fi
950 # This depends on GLIBCXX CHECK_LINKER_FEATURES, but without it assumes no.
951 GLIBCXX_ENABLE_SYMVERS([yes])
952
953+ac_ldbl_compat=no
954+case "$target" in
955+ powerpc*-*-*gnu* | \
956+ sparc*-*-linux* | \
957+ s390*-*-linux* | \
958+ alpha*-*-linux*)
959+ AC_TRY_COMPILE(, [
960+#if !defined __LONG_DOUBLE_128__ || (defined(__sparc__) && defined(__arch64__))
961+#error no need for long double compatibility
962+#endif
963+ ], [ac_ldbl_compat=yes], [ac_ldbl_compat=no])
964+ if test "$ac_ldbl_compat" = yes; then
965+ AC_DEFINE([_GLIBCXX_LONG_DOUBLE_COMPAT],1,
966+ [Define if compatibility should be provided for -mlong-double-64.])
967+ port_specific_symbol_files="\$(top_srcdir)/config/os/gnu-linux/ldbl-extra.ver"
968+ fi
969+esac
970+GLIBCXX_CONDITIONAL(GLIBCXX_LDBL_COMPAT, test $ac_ldbl_compat = yes)
971+
972 # This depends on GLIBCXX_ENABLE_SYMVERS and GLIBCXX_IS_NATIVE.
973 GLIBCXX_CONFIGURE_TESTSUITE
974
975diff -urpN -X /home/bergner/cvs/dontdiff gcc-41-20060515.orig/libstdc++-v3/include/bits/c++config gcc-41-20060515/libstdc++-v3/include/bits/c++config
976--- gcc-41-20060515.orig/libstdc++-v3/include/bits/c++config 2006-05-15 11:14:38.000000000 -0500
977+++ gcc-41-20060515/libstdc++-v3/include/bits/c++config 2006-05-15 13:47:27.668389073 -0500
978@@ -1,6 +1,6 @@
979 // Predefined symbols and macros -*- C++ -*-
980
981-// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005
982+// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006
983 // Free Software Foundation, Inc.
984 //
985 // This file is part of the GNU ISO C++ Library. This library is free
986@@ -65,6 +65,26 @@ namespace std
987 # define _GLIBCXX_STD std
988 #endif
989
990+/* Define if compatibility should be provided for -mlong-double-64. */
991+#undef _GLIBCXX_LONG_DOUBLE_COMPAT
992+
993+// XXX GLIBCXX_ABI Deprecated
994+// Namespace associations for long double 128 mode.
995+#if defined _GLIBCXX_LONG_DOUBLE_COMPAT && defined __LONG_DOUBLE_128__
996+# define _GLIBCXX_LDBL_NAMESPACE __gnu_cxx_ldbl128::
997+# define _GLIBCXX_BEGIN_LDBL_NAMESPACE namespace __gnu_cxx_ldbl128 {
998+# define _GLIBCXX_END_LDBL_NAMESPACE }
999+namespace std
1000+{
1001+ namespace __gnu_cxx_ldbl128 { }
1002+ using namespace __gnu_cxx_ldbl128 __attribute__((__strong__));
1003+}
1004+#else
1005+# define _GLIBCXX_LDBL_NAMESPACE
1006+# define _GLIBCXX_BEGIN_LDBL_NAMESPACE
1007+# define _GLIBCXX_END_LDBL_NAMESPACE
1008+#endif
1009+
1010 // Allow use of "export template." This is currently not a feature
1011 // that g++ supports.
1012 // #define _GLIBCXX_EXPORT_TEMPLATE 1
1013diff -urpN -X /home/bergner/cvs/dontdiff gcc-41-20060515.orig/libstdc++-v3/include/bits/locale_facets.h gcc-41-20060515/libstdc++-v3/include/bits/locale_facets.h
1014--- gcc-41-20060515.orig/libstdc++-v3/include/bits/locale_facets.h 2006-05-15 11:14:38.000000000 -0500
1015+++ gcc-41-20060515/libstdc++-v3/include/bits/locale_facets.h 2006-05-15 13:47:27.673388304 -0500
1016@@ -1,6 +1,6 @@
1017 // Locale support -*- C++ -*-
1018
1019-// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005
1020+// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006
1021 // Free Software Foundation, Inc.
1022 //
1023 // This file is part of the GNU ISO C++ Library. This library is free
1024@@ -1910,6 +1910,7 @@ namespace std
1025 ~numpunct_byname() { }
1026 };
1027
1028+_GLIBCXX_BEGIN_LDBL_NAMESPACE
1029 /**
1030 * @brief Facet for parsing number strings.
1031 *
1032@@ -2176,13 +2177,27 @@ namespace std
1033 do_get(iter_type, iter_type, ios_base&, ios_base::iostate& __err,
1034 double&) const;
1035
1036+ // XXX GLIBCXX_ABI Deprecated
1037+#if defined _GLIBCXX_LONG_DOUBLE_COMPAT && defined __LONG_DOUBLE_128__
1038+ virtual iter_type
1039+ __do_get(iter_type, iter_type, ios_base&, ios_base::iostate& __err,
1040+ double&) const;
1041+#else
1042 virtual iter_type
1043 do_get(iter_type, iter_type, ios_base&, ios_base::iostate& __err,
1044 long double&) const;
1045+#endif
1046
1047 virtual iter_type
1048 do_get(iter_type, iter_type, ios_base&, ios_base::iostate& __err,
1049 void*&) const;
1050+
1051+ // XXX GLIBCXX_ABI Deprecated
1052+#if defined _GLIBCXX_LONG_DOUBLE_COMPAT && defined __LONG_DOUBLE_128__
1053+ virtual iter_type
1054+ do_get(iter_type, iter_type, ios_base&, ios_base::iostate& __err,
1055+ long double&) const;
1056+#endif
1057 //@}
1058 };
1059
1060@@ -2438,17 +2453,30 @@ namespace std
1061 virtual iter_type
1062 do_put(iter_type, ios_base&, char_type __fill, double __v) const;
1063
1064+ // XXX GLIBCXX_ABI Deprecated
1065+#if defined _GLIBCXX_LONG_DOUBLE_COMPAT && defined __LONG_DOUBLE_128__
1066+ virtual iter_type
1067+ __do_put(iter_type, ios_base&, char_type __fill, double __v) const;
1068+#else
1069 virtual iter_type
1070 do_put(iter_type, ios_base&, char_type __fill, long double __v) const;
1071+#endif
1072
1073 virtual iter_type
1074 do_put(iter_type, ios_base&, char_type __fill, const void* __v) const;
1075+
1076+ // XXX GLIBCXX_ABI Deprecated
1077+#if defined _GLIBCXX_LONG_DOUBLE_COMPAT && defined __LONG_DOUBLE_128__
1078+ virtual iter_type
1079+ do_put(iter_type, ios_base&, char_type __fill, long double __v) const;
1080+#endif
1081 //@}
1082 };
1083
1084 template <typename _CharT, typename _OutIter>
1085 locale::id num_put<_CharT, _OutIter>::id;
1086
1087+_GLIBCXX_END_LDBL_NAMESPACE
1088
1089 /**
1090 * @brief Facet for localized string comparison.
1091@@ -3953,6 +3981,7 @@ namespace std
1092 template<typename _CharT, bool _Intl>
1093 const bool moneypunct_byname<_CharT, _Intl>::intl;
1094
1095+_GLIBCXX_BEGIN_LDBL_NAMESPACE
1096 /**
1097 * @brief Facet for parsing monetary amounts.
1098 *
1099@@ -4064,9 +4093,16 @@ namespace std
1100 * value. This function is a hook for derived classes to change the
1101 * value returned. @see get() for details.
1102 */
1103+ // XXX GLIBCXX_ABI Deprecated
1104+#if defined _GLIBCXX_LONG_DOUBLE_COMPAT && defined __LONG_DOUBLE_128__
1105+ virtual iter_type
1106+ __do_get(iter_type __s, iter_type __end, bool __intl, ios_base& __io,
1107+ ios_base::iostate& __err, double& __units) const;
1108+#else
1109 virtual iter_type
1110 do_get(iter_type __s, iter_type __end, bool __intl, ios_base& __io,
1111 ios_base::iostate& __err, long double& __units) const;
1112+#endif
1113
1114 /**
1115 * @brief Read and parse a monetary value.
1116@@ -4079,6 +4115,13 @@ namespace std
1117 do_get(iter_type __s, iter_type __end, bool __intl, ios_base& __io,
1118 ios_base::iostate& __err, string_type& __digits) const;
1119
1120+ // XXX GLIBCXX_ABI Deprecated
1121+#if defined _GLIBCXX_LONG_DOUBLE_COMPAT && defined __LONG_DOUBLE_128__
1122+ virtual iter_type
1123+ do_get(iter_type __s, iter_type __end, bool __intl, ios_base& __io,
1124+ ios_base::iostate& __err, long double& __units) const;
1125+#endif
1126+
1127 template<bool _Intl>
1128 iter_type
1129 _M_extract(iter_type __s, iter_type __end, ios_base& __io,
1130@@ -4191,9 +4234,16 @@ namespace std
1131 * @param units Place to store result of parsing.
1132 * @return Iterator after writing.
1133 */
1134+ // XXX GLIBCXX_ABI Deprecated
1135+#if defined _GLIBCXX_LONG_DOUBLE_COMPAT && defined __LONG_DOUBLE_128__
1136+ virtual iter_type
1137+ __do_put(iter_type __s, bool __intl, ios_base& __io, char_type __fill,
1138+ double __units) const;
1139+#else
1140 virtual iter_type
1141 do_put(iter_type __s, bool __intl, ios_base& __io, char_type __fill,
1142 long double __units) const;
1143+#endif
1144
1145 /**
1146 * @brief Format and output a monetary value.
1147@@ -4217,6 +4267,13 @@ namespace std
1148 do_put(iter_type __s, bool __intl, ios_base& __io, char_type __fill,
1149 const string_type& __digits) const;
1150
1151+ // XXX GLIBCXX_ABI Deprecated
1152+#if defined _GLIBCXX_LONG_DOUBLE_COMPAT && defined __LONG_DOUBLE_128__
1153+ virtual iter_type
1154+ do_put(iter_type __s, bool __intl, ios_base& __io, char_type __fill,
1155+ long double __units) const;
1156+#endif
1157+
1158 template<bool _Intl>
1159 iter_type
1160 _M_insert(iter_type __s, ios_base& __io, char_type __fill,
1161@@ -4226,6 +4283,8 @@ namespace std
1162 template<typename _CharT, typename _OutIter>
1163 locale::id money_put<_CharT, _OutIter>::id;
1164
1165+_GLIBCXX_END_LDBL_NAMESPACE
1166+
1167 /**
1168 * @brief Messages facet base class providing catalog typedef.
1169 */
1170diff -urpN -X /home/bergner/cvs/dontdiff gcc-41-20060515.orig/libstdc++-v3/include/bits/locale_facets.tcc gcc-41-20060515/libstdc++-v3/include/bits/locale_facets.tcc
1171--- gcc-41-20060515.orig/libstdc++-v3/include/bits/locale_facets.tcc 2006-05-15 11:14:38.000000000 -0500
1172+++ gcc-41-20060515/libstdc++-v3/include/bits/locale_facets.tcc 2006-05-15 13:47:27.676387842 -0500
1173@@ -1,6 +1,6 @@
1174 // Locale support -*- C++ -*-
1175
1176-// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005
1177+// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006
1178 // Free Software Foundation, Inc.
1179 //
1180 // This file is part of the GNU ISO C++ Library. This library is free
1181@@ -272,6 +272,8 @@ namespace std
1182 __verify_grouping(const char* __grouping, size_t __grouping_size,
1183 const string& __grouping_tmp);
1184
1185+_GLIBCXX_BEGIN_LDBL_NAMESPACE
1186+
1187 template<typename _CharT, typename _InIter>
1188 _InIter
1189 num_get<_CharT, _InIter>::
1190@@ -446,6 +448,8 @@ namespace std
1191 return __beg;
1192 }
1193
1194+_GLIBCXX_END_LDBL_NAMESPACE
1195+
1196 template<typename _ValueT>
1197 struct __to_unsigned_type
1198 { typedef _ValueT __type; };
1199@@ -460,6 +464,8 @@ namespace std
1200 { typedef unsigned long long __type; };
1201 #endif
1202
1203+_GLIBCXX_BEGIN_LDBL_NAMESPACE
1204+
1205 template<typename _CharT, typename _InIter>
1206 template<typename _ValueT>
1207 _InIter
1208@@ -772,6 +778,21 @@ namespace std
1209 return __beg;
1210 }
1211
1212+#if defined _GLIBCXX_LONG_DOUBLE_COMPAT && defined __LONG_DOUBLE_128__
1213+ template<typename _CharT, typename _InIter>
1214+ _InIter
1215+ num_get<_CharT, _InIter>::
1216+ __do_get(iter_type __beg, iter_type __end, ios_base& __io,
1217+ ios_base::iostate& __err, double& __v) const
1218+ {
1219+ string __xtrc;
1220+ __xtrc.reserve(32);
1221+ __beg = _M_extract_float(__beg, __end, __io, __err, __xtrc);
1222+ std::__convert_to_v(__xtrc.c_str(), __v, __err, _S_get_c_locale());
1223+ return __beg;
1224+ }
1225+#endif
1226+
1227 template<typename _CharT, typename _InIter>
1228 _InIter
1229 num_get<_CharT, _InIter>::
1230@@ -822,6 +843,8 @@ namespace std
1231 __len = static_cast<int>(__w);
1232 }
1233
1234+_GLIBCXX_END_LDBL_NAMESPACE
1235+
1236 // Forwarding functions to peel signed from unsigned integer types and
1237 // either cast or compute the absolute value for the former, depending
1238 // on __basefield.
1239@@ -911,6 +934,8 @@ namespace std
1240 return __bufend - __buf;
1241 }
1242
1243+_GLIBCXX_BEGIN_LDBL_NAMESPACE
1244+
1245 template<typename _CharT, typename _OutIter>
1246 void
1247 num_put<_CharT, _OutIter>::
1248@@ -1233,6 +1258,14 @@ namespace std
1249 do_put(iter_type __s, ios_base& __io, char_type __fill, double __v) const
1250 { return _M_insert_float(__s, __io, __fill, char(), __v); }
1251
1252+#if defined _GLIBCXX_LONG_DOUBLE_COMPAT && defined __LONG_DOUBLE_128__
1253+ template<typename _CharT, typename _OutIter>
1254+ _OutIter
1255+ num_put<_CharT, _OutIter>::
1256+ __do_put(iter_type __s, ios_base& __io, char_type __fill, double __v) const
1257+ { return _M_insert_float(__s, __io, __fill, char(), __v); }
1258+#endif
1259+
1260 template<typename _CharT, typename _OutIter>
1261 _OutIter
1262 num_put<_CharT, _OutIter>::
1263@@ -1474,6 +1507,23 @@ namespace std
1264 return __beg;
1265 }
1266
1267+#if defined _GLIBCXX_LONG_DOUBLE_COMPAT && defined __LONG_DOUBLE_128__
1268+ template<typename _CharT, typename _InIter>
1269+ _InIter
1270+ money_get<_CharT, _InIter>::
1271+ __do_get(iter_type __beg, iter_type __end, bool __intl, ios_base& __io,
1272+ ios_base::iostate& __err, double& __units) const
1273+ {
1274+ string __str;
1275+ if (__intl)
1276+ __beg = _M_extract<true>(__beg, __end, __io, __err, __str);
1277+ else
1278+ __beg = _M_extract<false>(__beg, __end, __io, __err, __str);
1279+ std::__convert_to_v(__str.c_str(), __units, __err, _S_get_c_locale());
1280+ return __beg;
1281+ }
1282+#endif
1283+
1284 template<typename _CharT, typename _InIter>
1285 _InIter
1286 money_get<_CharT, _InIter>::
1287@@ -1678,7 +1728,18 @@ namespace std
1288 __io.width(0);
1289 return __s;
1290 }
1291-
1292+
1293+#if defined _GLIBCXX_LONG_DOUBLE_COMPAT && defined __LONG_DOUBLE_128__
1294+ template<typename _CharT, typename _OutIter>
1295+ _OutIter
1296+ money_put<_CharT, _OutIter>::
1297+ __do_put(iter_type __s, bool __intl, ios_base& __io, char_type __fill,
1298+ double __units) const
1299+ {
1300+ return this->do_put(__s, __intl, __io, __fill, (long double) __units);
1301+ }
1302+#endif
1303+
1304 template<typename _CharT, typename _OutIter>
1305 _OutIter
1306 money_put<_CharT, _OutIter>::
1307@@ -1726,6 +1787,7 @@ namespace std
1308 { return __intl ? _M_insert<true>(__s, __io, __fill, __digits)
1309 : _M_insert<false>(__s, __io, __fill, __digits); }
1310
1311+_GLIBCXX_END_LDBL_NAMESPACE
1312
1313 // NB: Not especially useful. Without an ios_base object or some
1314 // kind of locale reference, we are left clawing at the air where
1315@@ -2511,12 +2573,12 @@ namespace std
1316 extern template class moneypunct<char, true>;
1317 extern template class moneypunct_byname<char, false>;
1318 extern template class moneypunct_byname<char, true>;
1319- extern template class money_get<char>;
1320- extern template class money_put<char>;
1321+ extern template class _GLIBCXX_LDBL_NAMESPACE money_get<char>;
1322+ extern template class _GLIBCXX_LDBL_NAMESPACE money_put<char>;
1323 extern template class numpunct<char>;
1324 extern template class numpunct_byname<char>;
1325- extern template class num_get<char>;
1326- extern template class num_put<char>;
1327+ extern template class _GLIBCXX_LDBL_NAMESPACE num_get<char>;
1328+ extern template class _GLIBCXX_LDBL_NAMESPACE num_put<char>;
1329 extern template class __timepunct<char>;
1330 extern template class time_put<char>;
1331 extern template class time_put_byname<char>;
1332@@ -2638,12 +2700,12 @@ namespace std
1333 extern template class moneypunct<wchar_t, true>;
1334 extern template class moneypunct_byname<wchar_t, false>;
1335 extern template class moneypunct_byname<wchar_t, true>;
1336- extern template class money_get<wchar_t>;
1337- extern template class money_put<wchar_t>;
1338+ extern template class _GLIBCXX_LDBL_NAMESPACE money_get<wchar_t>;
1339+ extern template class _GLIBCXX_LDBL_NAMESPACE money_put<wchar_t>;
1340 extern template class numpunct<wchar_t>;
1341 extern template class numpunct_byname<wchar_t>;
1342- extern template class num_get<wchar_t>;
1343- extern template class num_put<wchar_t>;
1344+ extern template class _GLIBCXX_LDBL_NAMESPACE num_get<wchar_t>;
1345+ extern template class _GLIBCXX_LDBL_NAMESPACE num_put<wchar_t>;
1346 extern template class __timepunct<wchar_t>;
1347 extern template class time_put<wchar_t>;
1348 extern template class time_put_byname<wchar_t>;
1349diff -urpN -X /home/bergner/cvs/dontdiff gcc-41-20060515.orig/libstdc++-v3/include/bits/localefwd.h gcc-41-20060515/libstdc++-v3/include/bits/localefwd.h
1350--- gcc-41-20060515.orig/libstdc++-v3/include/bits/localefwd.h 2006-05-15 11:14:38.000000000 -0500
1351+++ gcc-41-20060515/libstdc++-v3/include/bits/localefwd.h 2006-05-15 13:47:27.676387842 -0500
1352@@ -129,10 +129,12 @@ namespace std
1353 class codecvt_byname;
1354
1355 // 22.2.2 and 22.2.3 numeric
1356+_GLIBCXX_BEGIN_LDBL_NAMESPACE
1357 template<typename _CharT, typename _InIter = istreambuf_iterator<_CharT> >
1358 class num_get;
1359 template<typename _CharT, typename _OutIter = ostreambuf_iterator<_CharT> >
1360 class num_put;
1361+_GLIBCXX_END_LDBL_NAMESPACE
1362 template<typename _CharT> class numpunct;
1363 template<typename _CharT> class numpunct_byname;
1364
1365@@ -155,10 +157,12 @@ namespace std
1366
1367 // 22.2.6 money
1368 class money_base;
1369+_GLIBCXX_BEGIN_LDBL_NAMESPACE
1370 template<typename _CharT, typename _InIter = istreambuf_iterator<_CharT> >
1371 class money_get;
1372 template<typename _CharT, typename _OutIter = ostreambuf_iterator<_CharT> >
1373 class money_put;
1374+_GLIBCXX_END_LDBL_NAMESPACE
1375 template<typename _CharT, bool _Intl = false>
1376 class moneypunct;
1377 template<typename _CharT, bool _Intl = false>
1378diff -urpN -X /home/bergner/cvs/dontdiff gcc-41-20060515.orig/libstdc++-v3/include/Makefile.am gcc-41-20060515/libstdc++-v3/include/Makefile.am
1379--- gcc-41-20060515.orig/libstdc++-v3/include/Makefile.am 2006-05-15 11:14:39.000000000 -0500
1380+++ gcc-41-20060515/libstdc++-v3/include/Makefile.am 2006-05-15 13:47:27.666389381 -0500
1381@@ -825,13 +825,18 @@ ${host_builddir}/c++config.h: ${top_buil
1382 ${glibcxx_srcdir}/include/bits/c++config \
1383 stamp-${host_alias} \
1384 ${toplevel_srcdir}/gcc/DATESTAMP
1385- @cat ${glibcxx_srcdir}/include/bits/c++config > $@ ;\
1386+ @ldbl_compat='' ;\
1387+ grep "^[ ]*#[ ]*define[ ][ ]*_GLIBCXX_LONG_DOUBLE_COMPAT[ ][ ]*1[ ]*$$" \
1388+ ${CONFIG_HEADER} > /dev/null 2>&1 \
1389+ && ldbl_compat='s,^#undef _GLIBCXX_LONG_DOUBLE_COMPAT$$,#define _GLIBCXX_LONG_DOUBLE_COMPAT 1,' ;\
1390+ sed -e "$$ldbl_compat" ${glibcxx_srcdir}/include/bits/c++config > $@ ;\
1391 sed -e 's/^/#define __GLIBCXX__ /' \
1392- < ${toplevel_srcdir}/gcc/DATESTAMP >> $@ ;\
1393+ < ${toplevel_srcdir}/gcc/DATESTAMP >> $@ ;\
1394 sed -e 's/HAVE_/_GLIBCXX_HAVE_/g' \
1395 -e 's/PACKAGE/_GLIBCXX_PACKAGE/g' \
1396 -e 's/VERSION/_GLIBCXX_VERSION/g' \
1397 -e 's/WORDS_/_GLIBCXX_WORDS_/g' \
1398+ -e '/[ ]_GLIBCXX_LONG_DOUBLE_COMPAT[ ]/d' \
1399 < ${CONFIG_HEADER} >> $@ ;\
1400 echo "#endif // _CXXCONFIG_" >>$@
1401
1402diff -urpN -X /home/bergner/cvs/dontdiff gcc-41-20060515.orig/libstdc++-v3/include/Makefile.in gcc-41-20060515/libstdc++-v3/include/Makefile.in
1403--- gcc-41-20060515.orig/libstdc++-v3/include/Makefile.in 2006-05-15 11:14:39.000000000 -0500
1404+++ gcc-41-20060515/libstdc++-v3/include/Makefile.in 2006-05-15 13:47:27.668389073 -0500
1405@@ -1203,13 +1203,18 @@ ${host_builddir}/c++config.h: ${top_buil
1406 ${glibcxx_srcdir}/include/bits/c++config \
1407 stamp-${host_alias} \
1408 ${toplevel_srcdir}/gcc/DATESTAMP
1409- @cat ${glibcxx_srcdir}/include/bits/c++config > $@ ;\
1410+ @ldbl_compat='' ;\
1411+ grep "^[ ]*#[ ]*define[ ][ ]*_GLIBCXX_LONG_DOUBLE_COMPAT[ ][ ]*1[ ]*$$" \
1412+ ${CONFIG_HEADER} > /dev/null 2>&1 \
1413+ && ldbl_compat='s,^#undef _GLIBCXX_LONG_DOUBLE_COMPAT$$,#define _GLIBCXX_LONG_DOUBLE_COMPAT 1,' ;\
1414+ sed -e "$$ldbl_compat" ${glibcxx_srcdir}/include/bits/c++config > $@ ;\
1415 sed -e 's/^/#define __GLIBCXX__ /' \
1416- < ${toplevel_srcdir}/gcc/DATESTAMP >> $@ ;\
1417+ < ${toplevel_srcdir}/gcc/DATESTAMP >> $@ ;\
1418 sed -e 's/HAVE_/_GLIBCXX_HAVE_/g' \
1419 -e 's/PACKAGE/_GLIBCXX_PACKAGE/g' \
1420 -e 's/VERSION/_GLIBCXX_VERSION/g' \
1421 -e 's/WORDS_/_GLIBCXX_WORDS_/g' \
1422+ -e '/[ ]_GLIBCXX_LONG_DOUBLE_COMPAT[ ]/d' \
1423 < ${CONFIG_HEADER} >> $@ ;\
1424 echo "#endif // _CXXCONFIG_" >>$@
1425
1426diff -urpN -X /home/bergner/cvs/dontdiff gcc-41-20060515.orig/libstdc++-v3/src/compatibility.cc gcc-41-20060515/libstdc++-v3/src/compatibility.cc
1427--- gcc-41-20060515.orig/libstdc++-v3/src/compatibility.cc 2006-05-15 11:14:42.000000000 -0500
1428+++ gcc-41-20060515/libstdc++-v3/src/compatibility.cc 2006-05-15 13:47:27.681387073 -0500
1429@@ -1,6 +1,6 @@
1430 // Compatibility symbols for previous versions -*- C++ -*-
1431
1432-// Copyright (C) 2005
1433+// Copyright (C) 2005, 2006
1434 // Free Software Foundation, Inc.
1435 //
1436 // This file is part of the GNU ISO C++ Library. This library is free
1437@@ -49,6 +49,7 @@
1438 #include <istream>
1439 #include <fstream>
1440 #include <sstream>
1441+#include <cmath>
1442
1443 namespace std
1444 {
1445@@ -362,6 +363,107 @@ namespace std
1446
1447 #endif
1448
1449+// gcc-4.1.0
1450+#ifdef _GLIBCXX_LONG_DOUBLE_COMPAT
1451+#define _GLIBCXX_MATHL_WRAPPER(name, argdecl, args, ver) \
1452+extern "C" double \
1453+__ ## name ## l_wrapper argdecl \
1454+{ \
1455+ return name args; \
1456+} \
1457+asm (".symver __" #name "l_wrapper, " #name "l@" #ver)
1458+
1459+#define _GLIBCXX_MATHL_WRAPPER1(name, ver) \
1460+ _GLIBCXX_MATHL_WRAPPER (name, (double x), (x), ver)
1461+
1462+#define _GLIBCXX_MATHL_WRAPPER2(name, ver) \
1463+ _GLIBCXX_MATHL_WRAPPER (name, (double x, double y), (x, y), ver)
1464+
1465+#ifdef _GLIBCXX_HAVE_ACOSL
1466+_GLIBCXX_MATHL_WRAPPER1 (acos, GLIBCXX_3.4.3);
1467+#endif
1468+#ifdef _GLIBCXX_HAVE_ASINL
1469+_GLIBCXX_MATHL_WRAPPER1 (asin, GLIBCXX_3.4.3);
1470+#endif
1471+#ifdef _GLIBCXX_HAVE_ATAN2L
1472+_GLIBCXX_MATHL_WRAPPER2 (atan2, GLIBCXX_3.4);
1473+#endif
1474+#ifdef _GLIBCXX_HAVE_ATANL
1475+_GLIBCXX_MATHL_WRAPPER1 (atan, GLIBCXX_3.4.3);
1476+#endif
1477+#ifdef _GLIBCXX_HAVE_CEILL
1478+_GLIBCXX_MATHL_WRAPPER1 (ceil, GLIBCXX_3.4.3);
1479+#endif
1480+#ifdef _GLIBCXX_HAVE_COSHL
1481+_GLIBCXX_MATHL_WRAPPER1 (cosh, GLIBCXX_3.4);
1482+#endif
1483+#ifdef _GLIBCXX_HAVE_COSL
1484+_GLIBCXX_MATHL_WRAPPER1 (cos, GLIBCXX_3.4);
1485+#endif
1486+#ifdef _GLIBCXX_HAVE_EXPL
1487+_GLIBCXX_MATHL_WRAPPER1 (exp, GLIBCXX_3.4);
1488+#endif
1489+#ifdef _GLIBCXX_HAVE_FLOORL
1490+_GLIBCXX_MATHL_WRAPPER1 (floor, GLIBCXX_3.4.3);
1491+#endif
1492+#ifdef _GLIBCXX_HAVE_FMODL
1493+_GLIBCXX_MATHL_WRAPPER2 (fmod, GLIBCXX_3.4.3);
1494+#endif
1495+#ifdef _GLIBCXX_HAVE_FREXPL
1496+_GLIBCXX_MATHL_WRAPPER (frexp, (double x, int *y), (x, y), GLIBCXX_3.4.3);
1497+#endif
1498+#ifdef _GLIBCXX_HAVE_HYPOTL
1499+_GLIBCXX_MATHL_WRAPPER2 (hypot, GLIBCXX_3.4);
1500+#endif
1501+#ifdef _GLIBCXX_HAVE_LDEXPL
1502+_GLIBCXX_MATHL_WRAPPER (ldexp, (double x, int y), (x, y), GLIBCXX_3.4.3);
1503+#endif
1504+#ifdef _GLIBCXX_HAVE_LOG10L
1505+_GLIBCXX_MATHL_WRAPPER1 (log10, GLIBCXX_3.4);
1506+#endif
1507+#ifdef _GLIBCXX_HAVE_LOGL
1508+_GLIBCXX_MATHL_WRAPPER1 (log, GLIBCXX_3.4);
1509+#endif
1510+#ifdef _GLIBCXX_HAVE_MODFL
1511+_GLIBCXX_MATHL_WRAPPER (modf, (double x, double *y), (x, y), GLIBCXX_3.4.3);
1512+#endif
1513+#ifdef _GLIBCXX_HAVE_POWL
1514+_GLIBCXX_MATHL_WRAPPER2 (pow, GLIBCXX_3.4);
1515+#endif
1516+#ifdef _GLIBCXX_HAVE_SINHL
1517+_GLIBCXX_MATHL_WRAPPER1 (sinh, GLIBCXX_3.4);
1518+#endif
1519+#ifdef _GLIBCXX_HAVE_SINL
1520+_GLIBCXX_MATHL_WRAPPER1 (sin, GLIBCXX_3.4);
1521+#endif
1522+#ifdef _GLIBCXX_HAVE_SQRTL
1523+_GLIBCXX_MATHL_WRAPPER1 (sqrt, GLIBCXX_3.4);
1524+#endif
1525+#ifdef _GLIBCXX_HAVE_TANHL
1526+_GLIBCXX_MATHL_WRAPPER1 (tanh, GLIBCXX_3.4);
1527+#endif
1528+#ifdef _GLIBCXX_HAVE_TANL
1529+_GLIBCXX_MATHL_WRAPPER1 (tan, GLIBCXX_3.4);
1530+#endif
1531+#endif // _GLIBCXX_LONG_DOUBLE_COMPAT
1532+
1533+#ifdef _GLIBCXX_LONG_DOUBLE_COMPAT
1534+extern void *_ZTVN10__cxxabiv123__fundamental_type_infoE[];
1535+extern void *_ZTVN10__cxxabiv119__pointer_type_infoE[];
1536+extern __attribute__((used, weak)) const char _ZTSe[2] = "e";
1537+extern __attribute__((used, weak)) const char _ZTSPe[3] = "Pe";
1538+extern __attribute__((used, weak)) const char _ZTSPKe[4] = "PKe";
1539+extern __attribute__((used, weak)) const void *_ZTIe[2]
1540+ = { (void *) &_ZTVN10__cxxabiv123__fundamental_type_infoE[2],
1541+ (void *) _ZTSe };
1542+extern __attribute__((used, weak)) const void *_ZTIPe[4]
1543+ = { (void *) &_ZTVN10__cxxabiv119__pointer_type_infoE[2],
1544+ (void *) _ZTSPe, (void *) 0L, (void *) _ZTIe };
1545+extern __attribute__((used, weak)) const void *_ZTIPKe[4]
1546+ = { (void *) &_ZTVN10__cxxabiv119__pointer_type_infoE[2],
1547+ (void *) _ZTSPKe, (void *) 1L, (void *) _ZTIe };
1548+#endif // _GLIBCXX_LONG_DOUBLE_COMPAT
1549+
1550 #ifdef __APPLE__
1551 #if (defined(__ppc__) || defined (__ppc64__)) && defined (PIC)
1552 /* __eprintf shouldn't have been made visible from libstdc++, or
1553diff -urpN -X /home/bergner/cvs/dontdiff gcc-41-20060515.orig/libstdc++-v3/src/compatibility-ldbl.cc gcc-41-20060515/libstdc++-v3/src/compatibility-ldbl.cc
1554--- gcc-41-20060515.orig/libstdc++-v3/src/compatibility-ldbl.cc 1969-12-31 18:00:00.000000000 -0600
1555+++ gcc-41-20060515/libstdc++-v3/src/compatibility-ldbl.cc 2006-05-15 13:47:27.680387227 -0500
1556@@ -0,0 +1,73 @@
1557+// Compatibility symbols for -mlong-double-64 compatibility -*- C++ -*-
1558+
1559+// Copyright (C) 2006
1560+// Free Software Foundation, Inc.
1561+//
1562+// This file is part of the GNU ISO C++ Library. This library is free
1563+// software; you can redistribute it and/or modify it under the
1564+// terms of the GNU General Public License as published by the
1565+// Free Software Foundation; either version 2, or (at your option)
1566+// any later version.
1567+
1568+// This library is distributed in the hope that it will be useful,
1569+// but WITHOUT ANY WARRANTY; without even the implied warranty of
1570+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
1571+// GNU General Public License for more details.
1572+
1573+// You should have received a copy of the GNU General Public License along
1574+// with this library; see the file COPYING. If not, write to the Free
1575+// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
1576+// USA.
1577+
1578+// As a special exception, you may use this file as part of a free software
1579+// library without restriction. Specifically, if other files instantiate
1580+// templates or use macros or inline functions from this file, or you compile
1581+// this file and link it with other files to produce an executable, this
1582+// file does not by itself cause the resulting executable to be covered by
1583+// the GNU General Public License. This exception does not however
1584+// invalidate any other reasons why the executable file might be covered by
1585+// the GNU General Public License.
1586+
1587+#include <locale>
1588+
1589+#ifdef _GLIBCXX_LONG_DOUBLE_COMPAT
1590+
1591+#ifdef __LONG_DOUBLE_128__
1592+#error "compatibility-ldbl.cc must be compiled with -mlong-double-64"
1593+#endif
1594+
1595+namespace std
1596+{
1597+#define C char
1598+ template class num_get<C, istreambuf_iterator<C> >;
1599+ template class num_put<C, ostreambuf_iterator<C> >;
1600+ template class money_get<C, istreambuf_iterator<C> >;
1601+ template class money_put<C, ostreambuf_iterator<C> >;
1602+ template const num_put<C>& use_facet<num_put<C> >(const locale&);
1603+ template const num_get<C>& use_facet<num_get<C> >(const locale&);
1604+ template const money_put<C>& use_facet<money_put<C> >(const locale&);
1605+ template const money_get<C>& use_facet<money_get<C> >(const locale&);
1606+ template bool has_facet<num_put<C> >(const locale&);
1607+ template bool has_facet<num_get<C> >(const locale&);
1608+ template bool has_facet<money_put<C> >(const locale&);
1609+ template bool has_facet<money_get<C> >(const locale&);
1610+#undef C
1611+#ifdef _GLIBCXX_USE_WCHAR_T
1612+#define C wchar_t
1613+ template class num_get<C, istreambuf_iterator<C> >;
1614+ template class num_put<C, ostreambuf_iterator<C> >;
1615+ template class money_get<C, istreambuf_iterator<C> >;
1616+ template class money_put<C, ostreambuf_iterator<C> >;
1617+ template const num_put<C>& use_facet<num_put<C> >(const locale&);
1618+ template const num_get<C>& use_facet<num_get<C> >(const locale&);
1619+ template const money_put<C>& use_facet<money_put<C> >(const locale&);
1620+ template const money_get<C>& use_facet<money_get<C> >(const locale&);
1621+ template bool has_facet<num_put<C> >(const locale&);
1622+ template bool has_facet<num_get<C> >(const locale&);
1623+ template bool has_facet<money_put<C> >(const locale&);
1624+ template bool has_facet<money_get<C> >(const locale&);
1625+#undef C
1626+#endif
1627+}
1628+
1629+#endif
1630diff -urpN -X /home/bergner/cvs/dontdiff gcc-41-20060515.orig/libstdc++-v3/src/complex_io.cc gcc-41-20060515/libstdc++-v3/src/complex_io.cc
1631--- gcc-41-20060515.orig/libstdc++-v3/src/complex_io.cc 2006-05-15 11:14:42.000000000 -0500
1632+++ gcc-41-20060515/libstdc++-v3/src/complex_io.cc 2006-05-15 13:47:27.681387073 -0500
1633@@ -1,6 +1,6 @@
1634 // The template and inlines for the -*- C++ -*- complex number classes.
1635
1636-// Copyright (C) 2000, 2001 Free Software Foundation, Inc.
1637+// Copyright (C) 2000, 2001, 2006 Free Software Foundation, Inc.
1638 //
1639 // This file is part of the GNU ISO C++ Library. This library is free
1640 // software; you can redistribute it and/or modify it under the
1641@@ -91,3 +91,20 @@ namespace std
1642 const complex<long double>&);
1643 #endif //_GLIBCXX_USE_WCHAR_T
1644 } // namespace std
1645+
1646+// XXX GLIBCXX_ABI Deprecated
1647+#ifdef _GLIBCXX_LONG_DOUBLE_COMPAT
1648+
1649+#define _GLIBCXX_LDBL_COMPAT(dbl, ldbl) \
1650+ extern "C" void ldbl (void) __attribute__ ((alias (#dbl), weak))
1651+
1652+_GLIBCXX_LDBL_COMPAT (_ZStlsIdcSt11char_traitsIcEERSt13basic_ostreamIT0_T1_ES6_RKSt7complexIT_E,
1653+ _ZStlsIecSt11char_traitsIcEERSt13basic_ostreamIT0_T1_ES6_RKSt7complexIT_E);
1654+_GLIBCXX_LDBL_COMPAT (_ZStlsIdwSt11char_traitsIwEERSt13basic_ostreamIT0_T1_ES6_RKSt7complexIT_E,
1655+ _ZStlsIewSt11char_traitsIwEERSt13basic_ostreamIT0_T1_ES6_RKSt7complexIT_E);
1656+_GLIBCXX_LDBL_COMPAT (_ZStrsIdcSt11char_traitsIcEERSt13basic_istreamIT0_T1_ES6_RSt7complexIT_E,
1657+ _ZStrsIecSt11char_traitsIcEERSt13basic_istreamIT0_T1_ES6_RSt7complexIT_E);
1658+_GLIBCXX_LDBL_COMPAT (_ZStrsIdwSt11char_traitsIwEERSt13basic_istreamIT0_T1_ES6_RSt7complexIT_E,
1659+ _ZStrsIewSt11char_traitsIwEERSt13basic_istreamIT0_T1_ES6_RSt7complexIT_E);
1660+
1661+#endif // _GLIBCXX_LONG_DOUBLE_COMPAT
1662diff -urpN -X /home/bergner/cvs/dontdiff gcc-41-20060515.orig/libstdc++-v3/src/istream-inst.cc gcc-41-20060515/libstdc++-v3/src/istream-inst.cc
1663--- gcc-41-20060515.orig/libstdc++-v3/src/istream-inst.cc 2006-05-15 11:14:42.000000000 -0500
1664+++ gcc-41-20060515/libstdc++-v3/src/istream-inst.cc 2006-05-15 13:47:27.682386919 -0500
1665@@ -1,6 +1,6 @@
1666 // Explicit instantiation file.
1667
1668-// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002
1669+// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2006
1670 // Free Software Foundation, Inc.
1671 //
1672 // This file is part of the GNU ISO C++ Library. This library is free
1673@@ -68,3 +68,19 @@ namespace std
1674 template wistream& operator>>(wistream&, _Setw);
1675 #endif
1676 } // namespace std
1677+
1678+// XXX GLIBCXX_ABI Deprecated
1679+#ifdef _GLIBCXX_LONG_DOUBLE_COMPAT
1680+
1681+#define _GLIBCXX_LDBL_COMPAT(dbl, ldbl) \
1682+ extern "C" void ldbl (void) __attribute__ ((alias (#dbl), weak))
1683+_GLIBCXX_LDBL_COMPAT (_ZNSirsERd, _ZNSirsERe);
1684+_GLIBCXX_LDBL_COMPAT (_ZNSt13basic_istreamIwSt11char_traitsIwEErsERd,
1685+ _ZNSt13basic_istreamIwSt11char_traitsIwEErsERe);
1686+// These 2 are in GCC 4.2+ only so far
1687+// _GLIBCXX_LDBL_COMPAT (_ZNSi10_M_extractIdEERSiRT_,
1688+// _ZNSi10_M_extractIeEERSiRT_);
1689+// _GLIBCXX_LDBL_COMPAT (_ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIdEERS2_RT_,
1690+// _ZNSt13basic_istreamIwSt11char_traitsIwEE10_M_extractIeEERS2_RT_);
1691+
1692+#endif // _GLIBCXX_LONG_DOUBLE_COMPAT
1693diff -urpN -X /home/bergner/cvs/dontdiff gcc-41-20060515.orig/libstdc++-v3/src/limits.cc gcc-41-20060515/libstdc++-v3/src/limits.cc
1694--- gcc-41-20060515.orig/libstdc++-v3/src/limits.cc 2006-05-15 11:14:42.000000000 -0500
1695+++ gcc-41-20060515/libstdc++-v3/src/limits.cc 2006-05-15 13:47:27.683386765 -0500
1696@@ -1,6 +1,6 @@
1697 // Static data members of -*- C++ -*- numeric_limits classes
1698
1699-// Copyright (C) 1999, 2001, 2002 Free Software Foundation, Inc.
1700+// Copyright (C) 1999, 2001, 2002, 2006 Free Software Foundation, Inc.
1701 //
1702 // This file is part of the GNU ISO C++ Library. This library is free
1703 // software; you can redistribute it and/or modify it under the
1704@@ -447,3 +447,34 @@ namespace std
1705 const bool numeric_limits<long double>::tinyness_before;
1706 const float_round_style numeric_limits<long double>::round_style;
1707 } // namespace std
1708+
1709+// XXX GLIBCXX_ABI Deprecated
1710+#ifdef _GLIBCXX_LONG_DOUBLE_COMPAT
1711+
1712+#define _GLIBCXX_NUM_LIM_COMPAT(type, member, len) \
1713+ extern "C" type _ZNSt14numeric_limitsIeE ## len ## member ## E \
1714+ __attribute__ ((alias ("_ZNSt14numeric_limitsIdE" #len #member "E")))
1715+_GLIBCXX_NUM_LIM_COMPAT (bool, is_specialized, 14);
1716+_GLIBCXX_NUM_LIM_COMPAT (int, digits, 6);
1717+_GLIBCXX_NUM_LIM_COMPAT (int, digits10, 8);
1718+_GLIBCXX_NUM_LIM_COMPAT (bool, is_signed, 9);
1719+_GLIBCXX_NUM_LIM_COMPAT (bool, is_integer, 10);
1720+_GLIBCXX_NUM_LIM_COMPAT (bool, is_exact, 8);
1721+_GLIBCXX_NUM_LIM_COMPAT (int, radix, 5);
1722+_GLIBCXX_NUM_LIM_COMPAT (int, min_exponent, 12);
1723+_GLIBCXX_NUM_LIM_COMPAT (int, min_exponent10, 14);
1724+_GLIBCXX_NUM_LIM_COMPAT (int, max_exponent, 12);
1725+_GLIBCXX_NUM_LIM_COMPAT (int, max_exponent10, 14);
1726+_GLIBCXX_NUM_LIM_COMPAT (bool, has_infinity, 12);
1727+_GLIBCXX_NUM_LIM_COMPAT (bool, has_quiet_NaN, 13);
1728+_GLIBCXX_NUM_LIM_COMPAT (bool, has_signaling_NaN, 17);
1729+_GLIBCXX_NUM_LIM_COMPAT (std::float_denorm_style, has_denorm, 10);
1730+_GLIBCXX_NUM_LIM_COMPAT (bool, has_denorm_loss, 15);
1731+_GLIBCXX_NUM_LIM_COMPAT (bool, is_iec559, 9);
1732+_GLIBCXX_NUM_LIM_COMPAT (bool, is_bounded, 10);
1733+_GLIBCXX_NUM_LIM_COMPAT (bool, is_modulo, 9);
1734+_GLIBCXX_NUM_LIM_COMPAT (bool, traps, 5);
1735+_GLIBCXX_NUM_LIM_COMPAT (bool, tinyness_before, 15);
1736+_GLIBCXX_NUM_LIM_COMPAT (std::float_round_style, round_style, 11);
1737+
1738+#endif // _GLIBCXX_LONG_DOUBLE_COMPAT
1739diff -urpN -X /home/bergner/cvs/dontdiff gcc-41-20060515.orig/libstdc++-v3/src/locale.cc gcc-41-20060515/libstdc++-v3/src/locale.cc
1740--- gcc-41-20060515.orig/libstdc++-v3/src/locale.cc 2006-05-15 11:14:42.000000000 -0500
1741+++ gcc-41-20060515/libstdc++-v3/src/locale.cc 2006-05-15 14:06:44.932155273 -0500
1742@@ -41,6 +41,21 @@ namespace __gnu_internal
1743 static __glibcxx_mutex_define_initialized(locale_cache_mutex);
1744 }
1745
1746+// XXX GLIBCXX_ABI Deprecated
1747+#ifdef _GLIBCXX_LONG_DOUBLE_COMPAT
1748+# define _GLIBCXX_LOC_ID(mangled) extern std::locale::id mangled
1749+_GLIBCXX_LOC_ID (_ZNSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE);
1750+_GLIBCXX_LOC_ID (_ZNSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE);
1751+_GLIBCXX_LOC_ID (_ZNSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE);
1752+_GLIBCXX_LOC_ID (_ZNSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE);
1753+# ifdef _GLIBCXX_USE_WCHAR_T
1754+_GLIBCXX_LOC_ID (_ZNSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE);
1755+_GLIBCXX_LOC_ID (_ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE);
1756+_GLIBCXX_LOC_ID (_ZNSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE);
1757+_GLIBCXX_LOC_ID (_ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE);
1758+# endif
1759+#endif
1760+
1761 namespace std
1762 {
1763 // Definitions for static const data members of locale.
1764@@ -397,9 +412,29 @@ namespace std
1765 locale::id::_M_id() const
1766 {
1767 if (!_M_index)
1768- _M_index = 1 + __gnu_cxx::__exchange_and_add(&_S_refcount, 1);
1769+ {
1770+ // XXX GLIBCXX_ABI Deprecated
1771+#ifdef _GLIBCXX_LONG_DOUBLE_COMPAT
1772+ locale::id *f = 0;
1773+# define _GLIBCXX_SYNC_ID(facet, mangled) \
1774+ if (this == &::mangled) \
1775+ f = &facet::id
1776+ _GLIBCXX_SYNC_ID (num_get<char>, _ZNSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE);
1777+ _GLIBCXX_SYNC_ID (num_put<char>, _ZNSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE);
1778+ _GLIBCXX_SYNC_ID (money_get<char>, _ZNSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE2idE);
1779+ _GLIBCXX_SYNC_ID (money_put<char>, _ZNSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE2idE);
1780+# ifdef _GLIBCXX_USE_WCHAR_T
1781+ _GLIBCXX_SYNC_ID (num_get<wchar_t>, _ZNSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE);
1782+ _GLIBCXX_SYNC_ID (num_put<wchar_t>, _ZNSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE);
1783+ _GLIBCXX_SYNC_ID (money_get<wchar_t>, _ZNSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE2idE);
1784+ _GLIBCXX_SYNC_ID (money_put<wchar_t>, _ZNSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE2idE);
1785+# endif
1786+ if (f)
1787+ _M_index = 1 + f->_M_id();
1788+ else
1789+#endif
1790+ _M_index = 1 + __gnu_cxx::__exchange_and_add(&_S_refcount, 1);
1791+ }
1792 return _M_index - 1;
1793 }
1794 } // namespace std
1795-
1796-
1797diff -urpN -X /home/bergner/cvs/dontdiff gcc-41-20060515.orig/libstdc++-v3/src/locale-inst.cc gcc-41-20060515/libstdc++-v3/src/locale-inst.cc
1798--- gcc-41-20060515.orig/libstdc++-v3/src/locale-inst.cc 2006-05-15 11:14:42.000000000 -0500
1799+++ gcc-41-20060515/libstdc++-v3/src/locale-inst.cc 2006-05-15 13:47:27.684386611 -0500
1800@@ -1,6 +1,6 @@
1801 // Locale support -*- C++ -*-
1802
1803-// Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004
1804+// Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2006
1805 // Free Software Foundation, Inc.
1806 //
1807 // This file is part of the GNU ISO C++ Library. This library is free
1808@@ -37,6 +37,7 @@
1809 // Instantiation configuration.
1810 #ifndef C
1811 # define C char
1812+# define C_is_char
1813 #endif
1814
1815 namespace std
1816@@ -48,6 +49,7 @@ namespace std
1817 template struct __moneypunct_cache<C, true>;
1818 template class moneypunct_byname<C, false>;
1819 template class moneypunct_byname<C, true>;
1820+_GLIBCXX_BEGIN_LDBL_NAMESPACE
1821 template class money_get<C, istreambuf_iterator<C> >;
1822 template class money_put<C, ostreambuf_iterator<C> >;
1823 template
1824@@ -73,11 +75,13 @@ namespace std
1825 money_put<C, ostreambuf_iterator<C> >::
1826 _M_insert<false>(ostreambuf_iterator<C>, ios_base&, C,
1827 const string_type&) const;
1828+_GLIBCXX_END_LDBL_NAMESPACE
1829
1830 // numpunct, numpunct_byname, num_get, and num_put
1831 template class numpunct<C>;
1832 template struct __numpunct_cache<C>;
1833 template class numpunct_byname<C>;
1834+_GLIBCXX_BEGIN_LDBL_NAMESPACE
1835 template class num_get<C, istreambuf_iterator<C> >;
1836 template class num_put<C, ostreambuf_iterator<C> >;
1837 template
1838@@ -161,7 +165,8 @@ namespace std
1839 num_put<C, ostreambuf_iterator<C> >::
1840 _M_insert_float(ostreambuf_iterator<C>, ios_base&, C, char,
1841 long double) const;
1842-
1843+_GLIBCXX_END_LDBL_NAMESPACE
1844+
1845 // time_get and time_put
1846 template class __timepunct<C>;
1847 template struct __timepunct_cache<C>;
1848@@ -314,3 +319,44 @@ namespace std
1849 ios_base::fmtflags, bool);
1850 #endif
1851 } // namespace std
1852+
1853+// XXX GLIBCXX_ABI Deprecated
1854+#if defined _GLIBCXX_LONG_DOUBLE_COMPAT && defined C_is_char
1855+
1856+#define _GLIBCXX_LDBL_COMPAT(dbl, ldbl) \
1857+ extern "C" void ldbl (void) __attribute__ ((alias (#dbl), weak))
1858+
1859+_GLIBCXX_LDBL_COMPAT(_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIjEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_,
1860+ _ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIjEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_);
1861+_GLIBCXX_LDBL_COMPAT(_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIlEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_,
1862+ _ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIlEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_);
1863+_GLIBCXX_LDBL_COMPAT(_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intImEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_,
1864+ _ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intImEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_);
1865+_GLIBCXX_LDBL_COMPAT(_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intItEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_,
1866+ _ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intItEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_);
1867+_GLIBCXX_LDBL_COMPAT(_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIxEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_,
1868+ _ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIxEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_);
1869+_GLIBCXX_LDBL_COMPAT(_ZNKSt17__gnu_cxx_ldbl1287num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIyEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_,
1870+ _ZNKSt7num_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE14_M_extract_intIyEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_);
1871+_GLIBCXX_LDBL_COMPAT(_ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE13_M_insert_intIlEES4_S4_RSt8ios_basecT_,
1872+ _ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE13_M_insert_intIlEES3_S3_RSt8ios_basecT_);
1873+_GLIBCXX_LDBL_COMPAT(_ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE13_M_insert_intImEES4_S4_RSt8ios_basecT_,
1874+ _ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE13_M_insert_intImEES3_S3_RSt8ios_basecT_);
1875+_GLIBCXX_LDBL_COMPAT(_ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE13_M_insert_intIxEES4_S4_RSt8ios_basecT_,
1876+ _ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE13_M_insert_intIxEES3_S3_RSt8ios_basecT_);
1877+_GLIBCXX_LDBL_COMPAT(_ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE13_M_insert_intIyEES4_S4_RSt8ios_basecT_,
1878+ _ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE13_M_insert_intIyEES3_S3_RSt8ios_basecT_);
1879+_GLIBCXX_LDBL_COMPAT(_ZNKSt17__gnu_cxx_ldbl1287num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE15_M_insert_floatIdEES4_S4_RSt8ios_baseccT_,
1880+ _ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE15_M_insert_floatIdEES3_S3_RSt8ios_baseccT_);
1881+_GLIBCXX_LDBL_COMPAT(_ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE15_M_insert_floatIdEES3_S3_RSt8ios_baseccT_,
1882+ _ZNKSt7num_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE15_M_insert_floatIeEES3_S3_RSt8ios_baseccT_);
1883+_GLIBCXX_LDBL_COMPAT(_ZNKSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE10_M_extractILb0EEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRSs,
1884+ _ZNKSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE10_M_extractILb0EEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRSs);
1885+_GLIBCXX_LDBL_COMPAT(_ZNKSt17__gnu_cxx_ldbl1289money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE10_M_extractILb1EEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRSs,
1886+ _ZNKSt9money_getIcSt19istreambuf_iteratorIcSt11char_traitsIcEEE10_M_extractILb1EEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRSs);
1887+_GLIBCXX_LDBL_COMPAT(_ZNKSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE9_M_insertILb0EEES4_S4_RSt8ios_basecRKSs,
1888+ _ZNKSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE9_M_insertILb0EEES3_S3_RSt8ios_basecRKSs);
1889+_GLIBCXX_LDBL_COMPAT(_ZNKSt17__gnu_cxx_ldbl1289money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE9_M_insertILb1EEES4_S4_RSt8ios_basecRKSs,
1890+ _ZNKSt9money_putIcSt19ostreambuf_iteratorIcSt11char_traitsIcEEE9_M_insertILb1EEES3_S3_RSt8ios_basecRKSs);
1891+
1892+#endif // _GLIBCXX_LONG_DOUBLE_COMPAT
1893diff -urpN -X /home/bergner/cvs/dontdiff gcc-41-20060515.orig/libstdc++-v3/src/locale-misc-inst.cc gcc-41-20060515/libstdc++-v3/src/locale-misc-inst.cc
1894--- gcc-41-20060515.orig/libstdc++-v3/src/locale-misc-inst.cc 2006-05-15 11:14:42.000000000 -0500
1895+++ gcc-41-20060515/libstdc++-v3/src/locale-misc-inst.cc 2006-05-15 13:47:27.685386457 -0500
1896@@ -1,6 +1,7 @@
1897 // Locale support -*- C++ -*-
1898
1899-// Copyright (C) 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
1900+// Copyright (C) 1999, 2000, 2001, 2002, 2003, 2006
1901+// Free Software Foundation, Inc.
1902 //
1903 // This file is part of the GNU ISO C++ Library. This library is free
1904 // software; you can redistribute it and/or modify it under the
1905@@ -45,3 +46,19 @@ namespace std
1906 __convert_from_v(char*, const int, const char*, long double,
1907 const __c_locale&, int);
1908 } // namespace std
1909+
1910+// XXX GLIBCXX_ABI Deprecated
1911+#if defined _GLIBCXX_LONG_DOUBLE_COMPAT
1912+
1913+#define _GLIBCXX_LDBL_COMPAT(dbl, ldbl) \
1914+ extern "C" void ldbl (void) __attribute__ ((alias (#dbl), weak))
1915+
1916+# if _GLIBCXX_C_LOCALE_GNU
1917+_GLIBCXX_LDBL_COMPAT(_ZSt16__convert_from_vIdEiPciPKcT_RKP15__locale_structi,
1918+ _ZSt16__convert_from_vIeEiPciPKcT_RKP15__locale_structi);
1919+# else
1920+_GLIBCXX_LDBL_COMPAT(_ZSt16__convert_from_vIdEiPciPKcT_RKPii,
1921+ _ZSt16__convert_from_vIeEiPciPKcT_RKPii);
1922+# endif
1923+
1924+#endif // _GLIBCXX_LONG_DOUBLE_COMPAT
1925diff -urpN -X /home/bergner/cvs/dontdiff gcc-41-20060515.orig/libstdc++-v3/src/Makefile.am gcc-41-20060515/libstdc++-v3/src/Makefile.am
1926--- gcc-41-20060515.orig/libstdc++-v3/src/Makefile.am 2006-05-15 11:14:42.000000000 -0500
1927+++ gcc-41-20060515/libstdc++-v3/src/Makefile.am 2006-05-15 13:47:27.677387688 -0500
1928@@ -35,10 +35,15 @@ libstdc++-symbol.ver: ${glibcxx_srcdir}
1929 $(port_specific_symbol_files)
1930 cp ${glibcxx_srcdir}/$(SYMVER_MAP) ./libstdc++-symbol.ver
1931 if test "x$(port_specific_symbol_files)" != x; then \
1932- sed -n '1,/DO NOT DELETE/p' $@ > tmp.top; \
1933- sed -n '/DO NOT DELETE/,$$p' $@ > tmp.bottom; \
1934- cat tmp.top $(port_specific_symbol_files) tmp.bottom > $@; \
1935- rm tmp.top tmp.bottom; \
1936+ if grep '^# Appended to version file.' \
1937+ $(port_specific_symbol_files) /dev/null > /dev/null 2>&1; then \
1938+ cat $(port_specific_symbol_files) >> $@; \
1939+ else \
1940+ sed -n '1,/DO NOT DELETE/p' $@ > tmp.top; \
1941+ sed -n '/DO NOT DELETE/,$$p' $@ > tmp.bottom; \
1942+ cat tmp.top $(port_specific_symbol_files) tmp.bottom > $@; \
1943+ rm tmp.top tmp.bottom; \
1944+ fi; \
1945 fi
1946
1947 if ENABLE_SYMVERS_GNU
1948@@ -113,6 +118,12 @@ c++locale.cc: ${glibcxx_srcdir}/$(CLOCAL
1949 basic_file.cc: ${glibcxx_srcdir}/$(BASIC_FILE_CC)
1950 $(LN_S) ${glibcxx_srcdir}/$(BASIC_FILE_CC) ./$@ || true
1951
1952+if GLIBCXX_LDBL_COMPAT
1953+ldbl_compat_sources = compatibility-ldbl.cc
1954+else
1955+ldbl_compat_sources =
1956+endif
1957+
1958 # Sources present in the src directory.
1959 sources = \
1960 bitmap_allocator.cc \
1961@@ -160,7 +171,8 @@ sources = \
1962 wlocale-inst.cc \
1963 wstring-inst.cc \
1964 ${host_sources} \
1965- ${host_sources_extra}
1966+ ${host_sources_extra} \
1967+ ${ldbl_compat_sources}
1968
1969 VPATH = $(top_srcdir)/src:$(top_srcdir)
1970
1971@@ -191,6 +203,15 @@ concept-inst.lo: concept-inst.cc
1972 concept-inst.o: concept-inst.cc
1973 $(CXXCOMPILE) -D_GLIBCXX_CONCEPT_CHECKS -fimplicit-templates -c $<
1974
1975+if GLIBCXX_LDBL_COMPAT
1976+# Use special rules for compatibility-ldbl.cc compilation, as we need to
1977+# pass -mlong-double-64.
1978+compatibility-ldbl.lo: compatibility-ldbl.cc
1979+ $(LTCXXCOMPILE) -mlong-double-64 -c $<
1980+compatibility-ldbl.o: compatibility-ldbl.cc
1981+ $(CXXCOMPILE) -mlong-double-64 -c $<
1982+endif
1983+
1984 # AM_CXXFLAGS needs to be in each subdirectory so that it can be
1985 # modified in a per-library or per-sub-library way. Need to manually
1986 # set this option because CONFIG_CXXFLAGS has to be after
1987diff -urpN -X /home/bergner/cvs/dontdiff gcc-41-20060515.orig/libstdc++-v3/src/Makefile.in gcc-41-20060515/libstdc++-v3/src/Makefile.in
1988--- gcc-41-20060515.orig/libstdc++-v3/src/Makefile.in 2006-05-15 11:14:42.000000000 -0500
1989+++ gcc-41-20060515/libstdc++-v3/src/Makefile.in 2006-05-15 13:47:27.679387380 -0500
1990@@ -59,11 +59,27 @@ am__strip_dir = `echo $$p | sed -e 's|^.
1991 am__installdirs = "$(DESTDIR)$(toolexeclibdir)"
1992 toolexeclibLTLIBRARIES_INSTALL = $(INSTALL)
1993 LTLIBRARIES = $(toolexeclib_LTLIBRARIES)
1994+am__libstdc___la_SOURCES_DIST = bitmap_allocator.cc pool_allocator.cc \
1995+ mt_allocator.cc codecvt.cc compatibility.cc complex_io.cc \
1996+ ctype.cc debug.cc debug_list.cc functexcept.cc \
1997+ globals_locale.cc globals_io.cc ios.cc ios_failure.cc \
1998+ ios_init.cc ios_locale.cc limits.cc list.cc locale.cc \
1999+ locale_init.cc locale_facets.cc localename.cc stdexcept.cc \
2000+ strstream.cc tree.cc allocator-inst.cc concept-inst.cc \
2001+ fstream-inst.cc ext-inst.cc ios-inst.cc iostream-inst.cc \
2002+ istream-inst.cc istream.cc locale-inst.cc locale-misc-inst.cc \
2003+ misc-inst.cc ostream-inst.cc sstream-inst.cc streambuf-inst.cc \
2004+ streambuf.cc string-inst.cc valarray-inst.cc wlocale-inst.cc \
2005+ wstring-inst.cc atomicity.cc codecvt_members.cc \
2006+ collate_members.cc ctype_members.cc messages_members.cc \
2007+ monetary_members.cc numeric_members.cc time_members.cc \
2008+ basic_file.cc c++locale.cc compatibility-ldbl.cc
2009 am__objects_1 = atomicity.lo codecvt_members.lo collate_members.lo \
2010 ctype_members.lo messages_members.lo monetary_members.lo \
2011 numeric_members.lo time_members.lo
2012 am__objects_2 = basic_file.lo c++locale.lo
2013-am__objects_3 = bitmap_allocator.lo pool_allocator.lo mt_allocator.lo \
2014+@GLIBCXX_LDBL_COMPAT_TRUE@am__objects_3 = compatibility-ldbl.lo
2015+am__objects_4 = bitmap_allocator.lo pool_allocator.lo mt_allocator.lo \
2016 codecvt.lo compatibility.lo complex_io.lo ctype.lo debug.lo \
2017 debug_list.lo functexcept.lo globals_locale.lo globals_io.lo \
2018 ios.lo ios_failure.lo ios_init.lo ios_locale.lo limits.lo \
2019@@ -74,8 +90,9 @@ am__objects_3 = bitmap_allocator.lo pool
2020 locale-inst.lo locale-misc-inst.lo misc-inst.lo \
2021 ostream-inst.lo sstream-inst.lo streambuf-inst.lo streambuf.lo \
2022 string-inst.lo valarray-inst.lo wlocale-inst.lo \
2023- wstring-inst.lo $(am__objects_1) $(am__objects_2)
2024-am_libstdc___la_OBJECTS = $(am__objects_3)
2025+ wstring-inst.lo $(am__objects_1) $(am__objects_2) \
2026+ $(am__objects_3)
2027+am_libstdc___la_OBJECTS = $(am__objects_4)
2028 libstdc___la_OBJECTS = $(am_libstdc___la_OBJECTS)
2029 DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir)
2030 depcomp =
2031@@ -84,7 +101,7 @@ CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_IN
2032 $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
2033 CXXLD = $(CXX)
2034 SOURCES = $(libstdc___la_SOURCES)
2035-DIST_SOURCES = $(libstdc___la_SOURCES)
2036+DIST_SOURCES = $(am__libstdc___la_SOURCES_DIST)
2037 ETAGS = etags
2038 CTAGS = ctags
2039 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
2040@@ -152,6 +169,8 @@ GLIBCXX_C_HEADERS_C_TRUE = @GLIBCXX_C_HE
2041 GLIBCXX_HOSTED_FALSE = @GLIBCXX_HOSTED_FALSE@
2042 GLIBCXX_HOSTED_TRUE = @GLIBCXX_HOSTED_TRUE@
2043 GLIBCXX_INCLUDES = @GLIBCXX_INCLUDES@
2044+GLIBCXX_LDBL_COMPAT_FALSE = @GLIBCXX_LDBL_COMPAT_FALSE@
2045+GLIBCXX_LDBL_COMPAT_TRUE = @GLIBCXX_LDBL_COMPAT_TRUE@
2046 INSTALL_DATA = @INSTALL_DATA@
2047 INSTALL_PROGRAM = @INSTALL_PROGRAM@
2048 INSTALL_SCRIPT = @INSTALL_SCRIPT@
2049@@ -302,6 +321,8 @@ host_sources_extra = \
2050 basic_file.cc \
2051 c++locale.cc
2052
2053+@GLIBCXX_LDBL_COMPAT_FALSE@ldbl_compat_sources =
2054+@GLIBCXX_LDBL_COMPAT_TRUE@ldbl_compat_sources = compatibility-ldbl.cc
2055
2056 # Sources present in the src directory.
2057 sources = \
2058@@ -350,7 +371,8 @@ sources = \
2059 wlocale-inst.cc \
2060 wstring-inst.cc \
2061 ${host_sources} \
2062- ${host_sources_extra}
2063+ ${host_sources_extra} \
2064+ ${ldbl_compat_sources}
2065
2066 libstdc___la_SOURCES = $(sources)
2067 libstdc___la_LIBADD = \
2068@@ -677,10 +699,15 @@ libstdc++-symbol.ver: ${glibcxx_srcdir}
2069 $(port_specific_symbol_files)
2070 cp ${glibcxx_srcdir}/$(SYMVER_MAP) ./libstdc++-symbol.ver
2071 if test "x$(port_specific_symbol_files)" != x; then \
2072- sed -n '1,/DO NOT DELETE/p' $@ > tmp.top; \
2073- sed -n '/DO NOT DELETE/,$$p' $@ > tmp.bottom; \
2074- cat tmp.top $(port_specific_symbol_files) tmp.bottom > $@; \
2075- rm tmp.top tmp.bottom; \
2076+ if grep '^# Appended to version file.' \
2077+ $(port_specific_symbol_files) /dev/null > /dev/null 2>&1; then \
2078+ cat $(port_specific_symbol_files) >> $@; \
2079+ else \
2080+ sed -n '1,/DO NOT DELETE/p' $@ > tmp.top; \
2081+ sed -n '/DO NOT DELETE/,$$p' $@ > tmp.bottom; \
2082+ cat tmp.top $(port_specific_symbol_files) tmp.bottom > $@; \
2083+ rm tmp.top tmp.bottom; \
2084+ fi; \
2085 fi
2086 @ENABLE_SYMVERS_DARWIN_EXPORT_TRUE@@ENABLE_SYMVERS_GNU_FALSE@libstdc++-symbol.explist : libstdc++-symbol.ver \
2087 @ENABLE_SYMVERS_DARWIN_EXPORT_TRUE@@ENABLE_SYMVERS_GNU_FALSE@ ${glibcxx_srcdir}/scripts/make_exports.pl \
2088@@ -733,6 +760,13 @@ concept-inst.lo: concept-inst.cc
2089 concept-inst.o: concept-inst.cc
2090 $(CXXCOMPILE) -D_GLIBCXX_CONCEPT_CHECKS -fimplicit-templates -c $<
2091
2092+# Use special rules for compatibility-ldbl.cc compilation, as we need to
2093+# pass -mlong-double-64.
2094+@GLIBCXX_LDBL_COMPAT_TRUE@compatibility-ldbl.lo: compatibility-ldbl.cc
2095+@GLIBCXX_LDBL_COMPAT_TRUE@ $(LTCXXCOMPILE) -mlong-double-64 -c $<
2096+@GLIBCXX_LDBL_COMPAT_TRUE@compatibility-ldbl.o: compatibility-ldbl.cc
2097+@GLIBCXX_LDBL_COMPAT_TRUE@ $(CXXCOMPILE) -mlong-double-64 -c $<
2098+
2099 # Added bits to build debug library.
2100 @GLIBCXX_BUILD_DEBUG_TRUE@all-local: build_debug
2101 @GLIBCXX_BUILD_DEBUG_TRUE@install-data-local: install_debug
2102diff -urpN -X /home/bergner/cvs/dontdiff gcc-41-20060515.orig/libstdc++-v3/src/ostream-inst.cc gcc-41-20060515/libstdc++-v3/src/ostream-inst.cc
2103--- gcc-41-20060515.orig/libstdc++-v3/src/ostream-inst.cc 2006-05-15 11:14:42.000000000 -0500
2104+++ gcc-41-20060515/libstdc++-v3/src/ostream-inst.cc 2006-05-15 13:47:27.685386457 -0500
2105@@ -1,6 +1,6 @@
2106 // Explicit instantiation file.
2107
2108-// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002
2109+// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2006
2110 // Free Software Foundation, Inc.
2111 //
2112 // This file is part of the GNU ISO C++ Library. This library is free
2113@@ -74,3 +74,19 @@ namespace std
2114 template wostream& operator<<(wostream&, _Setw);
2115 #endif
2116 } // namespace std
2117+
2118+// XXX GLIBCXX_ABI Deprecated
2119+#ifdef _GLIBCXX_LONG_DOUBLE_COMPAT
2120+
2121+#define _GLIBCXX_LDBL_COMPAT(dbl, ldbl) \
2122+ extern "C" void ldbl (void) __attribute__ ((alias (#dbl), weak))
2123+_GLIBCXX_LDBL_COMPAT (_ZNSolsEd, _ZNSolsEe);
2124+_GLIBCXX_LDBL_COMPAT (_ZNSt13basic_ostreamIwSt11char_traitsIwEElsEd,
2125+ _ZNSt13basic_ostreamIwSt11char_traitsIwEElsEe);
2126+// These 2 are in GCC 4.2+ only so far
2127+// _GLIBCXX_LDBL_COMPAT (_ZNSo9_M_insertIdEERSoT_,
2128+// _ZNSo9_M_insertIeEERSoT_);
2129+// _GLIBCXX_LDBL_COMPAT (_ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertIdEERS2_T_,
2130+// _ZNSt13basic_ostreamIwSt11char_traitsIwEE9_M_insertIeEERS2_T_);
2131+
2132+#endif // _GLIBCXX_LONG_DOUBLE_COMPAT
2133diff -urpN -X /home/bergner/cvs/dontdiff gcc-41-20060515.orig/libstdc++-v3/src/wlocale-inst.cc gcc-41-20060515/libstdc++-v3/src/wlocale-inst.cc
2134--- gcc-41-20060515.orig/libstdc++-v3/src/wlocale-inst.cc 2006-05-15 11:14:42.000000000 -0500
2135+++ gcc-41-20060515/libstdc++-v3/src/wlocale-inst.cc 2006-05-15 13:47:27.686386303 -0500
2136@@ -1,6 +1,7 @@
2137 // Locale support -*- C++ -*-
2138
2139-// Copyright (C) 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
2140+// Copyright (C) 1999, 2000, 2001, 2002, 2003, 2006
2141+// Free Software Foundation, Inc.
2142 //
2143 // This file is part of the GNU ISO C++ Library. This library is free
2144 // software; you can redistribute it and/or modify it under the
2145@@ -36,4 +37,45 @@
2146 #ifdef _GLIBCXX_USE_WCHAR_T
2147 #define C wchar_t
2148 #include "locale-inst.cc"
2149+
2150+// XXX GLIBCXX_ABI Deprecated
2151+#if defined _GLIBCXX_LONG_DOUBLE_COMPAT
2152+
2153+#define _GLIBCXX_LDBL_COMPAT(dbl, ldbl) \
2154+ extern "C" void ldbl (void) __attribute__ ((alias (#dbl), weak))
2155+
2156+_GLIBCXX_LDBL_COMPAT(_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intIjEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_,
2157+ _ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intIjEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_);
2158+_GLIBCXX_LDBL_COMPAT(_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intIlEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_,
2159+ _ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intIlEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_);
2160+_GLIBCXX_LDBL_COMPAT(_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intImEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_,
2161+ _ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intImEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_);
2162+_GLIBCXX_LDBL_COMPAT(_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intItEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_,
2163+ _ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intItEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_);
2164+_GLIBCXX_LDBL_COMPAT(_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intIxEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_,
2165+ _ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intIxEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_);
2166+_GLIBCXX_LDBL_COMPAT(_ZNKSt17__gnu_cxx_ldbl1287num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intIyEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRT_,
2167+ _ZNKSt7num_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE14_M_extract_intIyEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRT_);
2168+_GLIBCXX_LDBL_COMPAT(_ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE13_M_insert_intIlEES4_S4_RSt8ios_basewT_,
2169+ _ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE13_M_insert_intIlEES3_S3_RSt8ios_basewT_);
2170+_GLIBCXX_LDBL_COMPAT(_ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE13_M_insert_intImEES4_S4_RSt8ios_basewT_,
2171+ _ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE13_M_insert_intImEES3_S3_RSt8ios_basewT_);
2172+_GLIBCXX_LDBL_COMPAT(_ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE13_M_insert_intIxEES4_S4_RSt8ios_basewT_,
2173+ _ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE13_M_insert_intIxEES3_S3_RSt8ios_basewT_);
2174+_GLIBCXX_LDBL_COMPAT(_ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE13_M_insert_intIyEES4_S4_RSt8ios_basewT_,
2175+ _ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE13_M_insert_intIyEES3_S3_RSt8ios_basewT_);
2176+_GLIBCXX_LDBL_COMPAT(_ZNKSt17__gnu_cxx_ldbl1287num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE15_M_insert_floatIdEES4_S4_RSt8ios_basewcT_,
2177+ _ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE15_M_insert_floatIdEES3_S3_RSt8ios_basewcT_);
2178+_GLIBCXX_LDBL_COMPAT(_ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE15_M_insert_floatIdEES3_S3_RSt8ios_basewcT_,
2179+ _ZNKSt7num_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE15_M_insert_floatIeEES3_S3_RSt8ios_basewcT_);
2180+_GLIBCXX_LDBL_COMPAT(_ZNKSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE10_M_extractILb0EEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRSs,
2181+ _ZNKSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE10_M_extractILb0EEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRSs);
2182+_GLIBCXX_LDBL_COMPAT(_ZNKSt17__gnu_cxx_ldbl1289money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE10_M_extractILb1EEES4_S4_S4_RSt8ios_baseRSt12_Ios_IostateRSs,
2183+ _ZNKSt9money_getIwSt19istreambuf_iteratorIwSt11char_traitsIwEEE10_M_extractILb1EEES3_S3_S3_RSt8ios_baseRSt12_Ios_IostateRSs);
2184+_GLIBCXX_LDBL_COMPAT(_ZNKSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE9_M_insertILb0EEES4_S4_RSt8ios_basewRKSbIwS3_SaIwEE,
2185+ _ZNKSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE9_M_insertILb0EEES3_S3_RSt8ios_basewRKSbIwS2_SaIwEE);
2186+_GLIBCXX_LDBL_COMPAT(_ZNKSt17__gnu_cxx_ldbl1289money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE9_M_insertILb1EEES4_S4_RSt8ios_basewRKSbIwS3_SaIwEE,
2187+ _ZNKSt9money_putIwSt19ostreambuf_iteratorIwSt11char_traitsIwEEE9_M_insertILb1EEES3_S3_RSt8ios_basewRKSbIwS2_SaIwEE);
2188+
2189+#endif // _GLIBCXX_LONG_DOUBLE_COMPAT
2190 #endif
2191diff -urpN -X /home/bergner/cvs/dontdiff gcc-41-20060515.orig/libstdc++-v3/testsuite/testsuite_abi.cc gcc-41-20060515/libstdc++-v3/testsuite/testsuite_abi.cc
2192--- gcc-41-20060515.orig/libstdc++-v3/testsuite/testsuite_abi.cc 2006-05-15 11:15:38.000000000 -0500
2193+++ gcc-41-20060515/libstdc++-v3/testsuite/testsuite_abi.cc 2006-05-15 14:14:57.231341148 -0500
2194@@ -187,8 +187,11 @@ check_version(symbol& test, bool added)
2195 known_versions.push_back("GLIBCXX_3.4.6");
2196 known_versions.push_back("GLIBCXX_3.4.7");
2197 known_versions.push_back("GLIBCXX_3.4.8");
2198+ known_versions.push_back("GLIBCXX_LDBL_3.4");
2199+ known_versions.push_back("GLIBCXX_LDBL_3.4.7");
2200 known_versions.push_back("CXXABI_1.3");
2201 known_versions.push_back("CXXABI_1.3.1");
2202+ known_versions.push_back("CXXABI_LDBL_1.3");
2203 }
2204 compat_list::iterator begin = known_versions.begin();
2205 compat_list::iterator end = known_versions.end();
2206@@ -224,9 +227,7 @@ check_version(symbol& test, bool added)
2207 // New version labels are ok. The rest are not.
2208 compat_list::iterator it2 = find(begin, end, test.name);
2209 if (it2 != end)
2210- {
2211- test.version_status = symbol::compatible;
2212- }
2213+ test.version_status = symbol::compatible;
2214 else
2215 test.version_status = symbol::incompatible;
2216 }
2217@@ -370,7 +371,7 @@ compare_symbols(const char* baseline_fil
2218 added_names.erase(it);
2219 }
2220 else
2221- missing_names.push_back(what);
2222+ missing_names.push_back(what);
2223 }
2224
2225 // Check missing names for compatibility.