Cherrypick from master 2005-12-11 09:15:20 UTC Jakub Bogusz <qboosh@pld-linux.org> '- can't use tab in gnat_ugn.texi':
gcc4-info.patch -> 1.12
gcc4-nodebug.patch -> 1.6
gcc4-nolocalefiles.patch -> 1.4
gcc4-optimize-la.pl -> 1.2
gcc4-pr17390.patch -> 1.1
gcc4-pr19505.patch -> 1.1
gcc4-pr19664_gnu_internal.patch -> 1.1
gcc4-pr19664_libstdc++.patch -> 1.1
gcc4-pr24419.patch -> 1.1
gcc4-pr24669.patch -> 1.1
gcc4-pr7776.patch -> 1.1
gcc4.spec -> 1.397
--- /dev/null
+--- gcc-4.0-20040919.orig/gcc/doc/cpp.texi 2004-09-17 10:22:36.000000000 +0200
++++ gcc-4.0-20040919/gcc/doc/cpp.texi 2004-09-26 10:58:58.166721432 +0200
+@@ -52,9 +52,9 @@
+ @set cppmanual
+
+ @ifinfo
+-@dircategory Programming
++@dircategory Programming Languages:
+ @direntry
+-* Cpp: (cpp). The GNU C preprocessor.
++* Cpp: (cpp). The GNU C preprocessor
+ @end direntry
+ @end ifinfo
+
+--- gcc-4.0-20040919.orig/gcc/doc/cppinternals.texi 2004-07-03 01:57:11.000000000 +0200
++++ gcc-4.0-20040919/gcc/doc/cppinternals.texi 2004-09-26 10:58:58.208715048 +0200
+@@ -3,9 +3,9 @@
+ @settitle The GNU C Preprocessor Internals
+
+ @ifinfo
+-@dircategory Programming
++@dircategory Programming Languages:
+ @direntry
+-* Cpplib: (cppinternals). Cpplib internals.
++* Cpplib: (cppinternals). Cpplib internals
+ @end direntry
+ @end ifinfo
+
+--- gcc-4.0-20040919.orig/gcc/doc/gcc.texi 2004-07-22 22:12:20.000000000 +0200
++++ gcc-4.0-20040919/gcc/doc/gcc.texi 2004-09-26 10:58:58.218713528 +0200
+@@ -62,9 +62,9 @@
+ funds for GNU development.
+ @end copying
+ @ifnottex
+-@dircategory Programming
++@dircategory Programming Languages:
+ @direntry
+-* gcc: (gcc). The GNU Compiler Collection.
++* gcc: (gcc). The GNU Compiler Collection
+ @end direntry
+ This file documents the use of the GNU compilers.
+ @sp 1
+--- gcc-4.0-20040919.orig/gcc/doc/gccint.texi 2004-05-24 00:54:29.000000000 +0200
++++ gcc-4.0-20040919/gcc/doc/gccint.texi 2004-09-26 10:58:58.222712920 +0200
+@@ -46,9 +46,9 @@
+ funds for GNU development.
+ @end copying
+ @ifnottex
+-@dircategory Programming
++@dircategory Programming Languages:
+ @direntry
+-* gccint: (gccint). Internals of the GNU Compiler Collection.
++* gccint: (gccint). Internals of the GNU Compiler Collection
+ @end direntry
+ This file documents the internals of the GNU compilers.
+ @sp 1
+--- gcc-4.0-20040919.orig/gcc/ada/gnat-style.texi 2004-09-01 13:51:52.000000000 +0200
++++ gcc-4.0-20040919/gcc/ada/gnat-style.texi 2004-09-26 10:58:58.342694680 +0200
+@@ -28,9 +28,9 @@
+ @setchapternewpage odd
+
+
+-@dircategory Programming
++@dircategory Programming Languages:
+ @direntry
+-* gnat-style: (gnat-style). GNAT Coding Style
++* gnat-style: (gnat-style). GNAT Coding Style
+ @end direntry
+
+ @macro syntax{element}
+--- gcc-4_1-branch/gcc/ada/gnat_ugn.texi.orig 2005-12-06 23:45:52.983574000 +0100
++++ gcc-4_1-branch/gcc/ada/gnat_ugn.texi 2005-12-11 02:35:45.580878360 +0100
+@@ -99,9 +99,9 @@
+ @end ifset
+
+ @settitle @value{EDITION} User's Guide @value{PLATFORM}
+-@dircategory GNU Ada tools
++@dircategory Programming Languages:
+ @direntry
+-* @value{EDITION} User's Guide (@value{FILE}) @value{PLATFORM}
++* GNAT User's Guide (gnat_ugn_unw). GNAT User's Guide
+ @end direntry
+
+ @include gcc-common.texi
+--- gcc-4.0-20040919.orig/gcc/fortran/gfortran.texi 2004-09-16 15:13:39.000000000 +0200
++++ gcc-4.0-20040919/gcc/fortran/gfortran.texi 2004-09-26 11:05:50.258074024 +0200
+@@ -62,9 +62,9 @@
+ @end copying
+
+ @ifinfo
+-@dircategory Programming
++@dircategory Programming Languages:
+ @direntry
+-* gfortran: (gfortran). The GNU Fortran 95 Compiler.
++* gfortran: (gfortran). The GNU Fortran 95 Compiler
+ @end direntry
+ This file documents the use and the internals of
+ the GNU Fortran 95 compiler, (@command{gfortran}).
+--- gcc-4.0-20050507/gcc/java/gcj.texi.orig 2005-05-07 00:53:37.000000000 +0200
++++ gcc-4.0-20050507/gcc/java/gcj.texi 2005-05-08 13:09:27.000000000 +0200
+@@ -50,30 +50,22 @@
+
+ @ifinfo
+ @format
+-@dircategory Programming
++@dircategory Programming Languages:
+ @direntry
+-* Gcj: (gcj). Ahead-of-time compiler for the Java language
++* Gcj: (gcj). Ahead-of-time compiler for the Java language
+ @end direntry
+
+-@dircategory Individual utilities
++@dircategory Programming tools:
+ @direntry
+-* gcjh: (gcj)Invoking gcjh.
+- Generate header files from Java class files
+-* gjnih: (gcj)Invoking gjnih.
+- Generate JNI header files from Java class files
+-* jv-scan: (gcj)Invoking jv-scan.
+- Print information about Java source files
+-* jcf-dump: (gcj)Invoking jcf-dump.
+- Print information about Java class files
+-* gij: (gcj)Invoking gij. GNU interpreter for Java bytecode
+-* gcj-dbtool: (gcj)Invoking gcj-dbtool.
+- Tool for manipulating class file databases.
+-* jv-convert: (gcj)Invoking jv-convert.
+- Convert file from one encoding to another
+-* grmic: (gcj)Invoking grmic.
+- Generate stubs for Remote Method Invocation.
+-* grmiregistry: (gcj)Invoking grmiregistry.
+- The remote object registry.
++* gcjh: (gcj)gcjh. Generate header files from Java class files
++* gjnih: (gcj)Invoking gjnih. Generate JNI header files from Java class files
++* jv-scan: (gcj)jv-scan. Print information about Java source files
++* jcf-dump: (gcj)jcf-dump. Print information about Java class files
++* gij: (gcj)gij. GNU interpreter for Java bytecode
++* jv-convert: (gcj)jv-convert. Convert file from one encoding to another
++* gcj-dbtool: (gcj)gcj-dbtool. Db tool.
++* grmic: (gcj)grmic. Generate stubs for Remote Method Invocation.
++* grmiregistry: (gcj)grmiregistry. The remote object registry.
+ @end direntry
+ @end format
+
+@@ -107,20 +99,20 @@
+ @file{.class} files.
+
+ @menu
+-* Copying:: The GNU General Public License
++* Copying:: The GNU General Public License
+ * GNU Free Documentation License::
+ How you can share and copy this manual
+-* Invoking gcj:: Compiler options supported by @command{gcj}
++* gcj:: Compiler options supported by @command{gcj}
+ * Compatibility:: Compatibility between gcj and other tools for Java
+-* Invoking gcjh:: Generate header files from class files
+-* Invoking gjnih:: Generate JNI header files from class files
+-* Invoking jv-scan:: Print information about source files
+-* Invoking jcf-dump:: Print information about class files
+-* Invoking gij:: Interpreting Java bytecodes
+-* Invoking gcj-dbtool:: Tool for manipulating class file databases.
+-* Invoking jv-convert:: Converting from one encoding to another
+-* Invoking grmic:: Generate stubs for Remote Method Invocation.
+-* Invoking grmiregistry:: The remote object registry.
++* gcjh:: Generate header files from class files
++* gjnih:: Generate JNI header files from class files
++* jv-scan:: Print information about source files
++* jcf-dump:: Print information about class files
++* gij:: Interpreting Java bytecodes
++* jv-convert:: Converting from one encoding to another
++* gcj-dbtool:: Db tool.
++* grmic:: Generate stubs for Remote Method Invocation.
++* grmiregistry:: The remote object registry.
+ * About CNI:: Description of the Compiled Native Interface
+ * System properties:: Modifying runtime behavior of the libgcj library
+ * Resources:: Where to look for more information
+@@ -132,7 +124,7 @@
+ @include fdl.texi
+
+
+-@node Invoking gcj
++@node gcj
+ @chapter Invoking gcj
+
+ @c man title gcj Ahead-of-time compiler for the Java language
+@@ -659,7 +651,7 @@
+ @end itemize
+
+
+-@node Invoking gcjh
++@node gcjh
+ @chapter Invoking gcjh
+
+ @c man title gcjh generate header files from Java class files
+@@ -775,7 +767,7 @@
+
+ @c man end
+
+-@node Invoking gjnih
++@node gjnih
+ @chapter Invoking gjnih
+
+ @c man title gjnih generate JNI header files from Java class files
+@@ -889,7 +881,7 @@
+
+ @c man end
+
+-@node Invoking jv-scan
++@node jv-scan
+ @chapter Invoking jv-scan
+
+ @c man title jv-scan print information about Java source file
+@@ -952,7 +944,7 @@
+
+ @c man end
+
+-@node Invoking jcf-dump
++@node jcf-dump
+ @chapter Invoking jcf-dump
+
+ @c man title jcf-dump print information about Java class files
+@@ -1012,7 +1004,7 @@
+
+ @c man end
+
+-@node Invoking gij
++@node gij
+ @chapter Invoking gij
+
+ @c man title gij GNU interpreter for Java bytecode
+@@ -1132,7 +1124,7 @@
+
+ @c man end
+
+-@node Invoking gcj-dbtool
++@node gcj-dbtool
+ @chapter Invoking gcj-dbtool.
+
+ @c man title gcj-dbtool Manipulate class file mapping databases for libgcj
+@@ -1223,7 +1215,7 @@
+
+ @c man end
+
+-@node Invoking jv-convert
++@node jv-convert
+ @chapter Invoking jv-convert
+
+ @c man title jv-convert Convert file from one encoding to another
+@@ -1282,7 +1274,7 @@
+
+ @c man end
+
+-@node Invoking grmic
++@node grmic
+ @chapter Invoking grmic
+
+ @c man title grmic Generate stubs for Remote Method Invocation
+@@ -1361,7 +1353,7 @@
+ @c man end
+
+
+-@node Invoking grmiregistry
++@node grmiregistry
+ @chapter Invoking grmiregistry
+
+ @c man title grmiregistry Remote object registry
+--- gcc-4_1-branch/gcc/ada/gnat_rm.texi.orig 2005-11-30 12:12:06.000000000 +0100
++++ gcc-4_1-branch/gcc/ada/gnat_rm.texi 2005-12-11 02:36:14.863426736 +0100
+@@ -26,9 +26,9 @@
+
+ @include gcc-common.texi
+
+-@dircategory GNU Ada tools
++@dircategory Programming Languages:
+ @direntry
+-* GNAT Reference Manual: (gnat_rm). Reference Manual for GNU Ada tools.
++* GNAT Reference Manual: (gnat_rm). Reference Manual for GNU Ada tools
+ @end direntry
+
+ @copying
+--- gcc-4_1-branch/fastjar/fastjar.texi.orig 2005-11-30 12:19:45.000000000 +0100
++++ gcc-4_1-branch/fastjar/fastjar.texi 2005-12-11 02:41:00.190050496 +0100
+@@ -17,17 +17,11 @@
+
+ @ifinfo
+ @format
+-@dircategory Programming
++@dircategory Programming tools:
+ @direntry
+-* fastjar: (fastjar). GNU jar utilities
+-@end direntry
+-
+-@dircategory Individual utilities
+-@direntry
+-* fastjar: (fastjar)Invoking fastjar.
+- An archive tool for Java archives
+-* grepjar: (fastjar)Invoking grepjar.
+- Search files in a jar file for a pattern
++* fastjar: (fastjar). GNU jar utilities
++* fastjar: (fastjar)fastjar. An archive tool for Java archives
++* grepjar: (fastjar)grepjar. Search files in a jar file for a pattern
+ @end direntry
+ @end format
+
+@@ -77,12 +71,12 @@
+ This manual describes how to use @command{fastjar} and @command{grepjar}.
+
+ @menu
+-* Invoking fastjar:: Options supported by @command{fastjar}
+-* Invoking grepjar:: Options supported by @command{grepjar}
++* fastjar:: Options supported by @command{fastjar}
++* grepjar:: Options supported by @command{grepjar}
+ * Copying:: The GNU General Public License
+ @end menu
+
+-@node Invoking fastjar
++@node fastjar
+ @chapter Invoking fastjar
+
+ @c man title fastjar archive tool for Java archives
+@@ -172,7 +166,7 @@
+
+ @c man end
+
+-@node Invoking grepjar
++@node grepjar
+ @chapter Invoking grepjar
+
+ @c man title grepjar search files in a jar file for a pattern
+--- gcc-4_1-branch/gcc/doc/install.texi.orig 2005-11-30 12:02:42.000000000 +0100
++++ gcc-4_1-branch/gcc/doc/install.texi 2005-12-11 02:44:22.598279768 +0100
+@@ -87,9 +87,9 @@
+ @ifinfo
+ @insertcopying
+ @end ifinfo
+-@dircategory Programming
++@dircategory Programming Languages:
+ @direntry
+-* gccinstall: (gccinstall). Installing the GNU Compiler Collection.
++* gccinstall: (gccinstall). Installing the GNU Compiler Collection
+ @end direntry
+
+ @c Part 3 Titlepage and Copyright
--- /dev/null
+--- gcc-4.1-20050522/gcc/Makefile.in.orig 2005-05-20 21:17:40.000000000 +0000
++++ gcc-4.1-20050522/gcc/Makefile.in 2005-05-26 10:49:01.000000000 +0000
+@@ -148,10 +148,10 @@
+ # TCFLAGS is used for compilations with the GCC just built.
+ XCFLAGS =
+ TCFLAGS =
+-CFLAGS = -g
+-STAGE1_CFLAGS = -g @stage1_cflags@
++CFLAGS =
++STAGE1_CFLAGS = @stage1_cflags@
+ STAGE1_CHECKING = -DENABLE_CHECKING -DENABLE_ASSERT_CHECKING
+-BOOT_CFLAGS = -g -O2
++BOOT_CFLAGS = -O2
+
+ # Flags to determine code coverage. When coverage is disabled, this will
+ # contain the optimization flags, as you normally want code coverage
+@@ -520,7 +520,7 @@
+
+ # Options to use when compiling libgcc2.a.
+ #
+-LIBGCC2_DEBUG_CFLAGS = -g
++LIBGCC2_DEBUG_CFLAGS =
+ LIBGCC2_CFLAGS = -O2 $(LIBGCC2_INCLUDES) $(GCC_CFLAGS) $(TARGET_LIBGCC2_CFLAGS) \
+ $(LIBGCC2_DEBUG_CFLAGS) $(GTHREAD_FLAGS) \
+ -DIN_LIBGCC2 -D__GCC_FLOAT_NOT_NEEDED @inhibit_libc@
+--- gcc-4.0-20040919/gcc/ada/Makefile.in.orig 2004-09-13 12:18:40.000000000 +0200
++++ gcc-4.0-20040919/gcc/ada/Makefile.in 2004-09-26 11:40:30.070894416 +0200
+@@ -73,7 +73,7 @@
+ # to the stage2 and stage3 compilations
+ # XCFLAGS is used for most compilations but not when using the GCC just built.
+ XCFLAGS =
+-CFLAGS = -g
++CFLAGS =
+ BOOT_CFLAGS = -O $(CFLAGS)
+ # These exists to be overridden by the x-* and t-* files, respectively.
+ X_CFLAGS =
+@@ -118,9 +118,9 @@
+ ADA_CFLAGS =
+ ADAFLAGS = -W -Wall -gnatpg -gnata
+ SOME_ADAFLAGS =-gnata
+-FORCE_DEBUG_ADAFLAGS = -g
++FORCE_DEBUG_ADAFLAGS =
+ GNATLIBFLAGS = -gnatpg -nostdinc
+-GNATLIBCFLAGS = -g -O2
++GNATLIBCFLAGS = -O2
+ GNATLIBCFLAGS_FOR_C = $(GNATLIBCFLAGS) $(TARGET_LIBGCC2_CFLAGS) -fexceptions \
+ -DIN_RTS
+ ALL_ADA_CFLAGS = $(X_ADA_CFLAGS) $(T_ADA_CFLAGS) $(ADA_CFLAGS)
+--- gcc/libada/Makefile.in.orig 2005-11-04 13:49:08.000000000 +0000
++++ gcc/libada/Makefile.in 2005-11-24 23:52:14.739531296 +0000
+@@ -54,7 +54,6 @@
+ include $(GCC_DIR)/libada-mk
+
+ TARGET_LIBGCC2_CFLAGS=
+-GNATLIBCFLAGS= -g -O2
+ # Get target-specific overrides for TARGET_LIBGCC2_CFLAGS
+ # and possibly GNATLIBCFLAGS. Currently this uses files
+ # in gcc/config. The 'subst' call is used to rerelativize them
+--- gcc-4.0-20040919/libffi/Makefile.am.orig 2004-08-30 17:42:59.000000000 +0200
++++ gcc-4.0-20040919/libffi/Makefile.am 2004-09-26 11:44:10.789340112 +0200
+@@ -138,7 +138,7 @@
+ libffi_convenience_la_SOURCES = $(libffi_la_SOURCES)
+ nodist_libffi_convenience_la_SOURCES = $(nodist_libffi_la_SOURCES)
+
+-AM_CFLAGS = -Wall -g -fexceptions
++AM_CFLAGS = -Wall -fexceptions
+
+ libffi_la_LDFLAGS = -version-info `grep -v '^\#' $(srcdir)/libtool-version`
+
+--- gcc-4.0-20040919/libffi/Makefile.in.orig 2004-09-19 19:47:04.000000000 +0200
++++ gcc-4.0-20040919/libffi/Makefile.in 2004-09-26 11:44:17.253357432 +0200
+@@ -385,7 +385,7 @@
+ nodist_libffi_la_SOURCES = $(am__append_1) $(am__append_2) $(am__append_3) $(am__append_4) $(am__append_5) $(am__append_6) $(am__append_7) $(am__append_8) $(am__append_9) $(am__append_10) $(am__append_11) $(am__append_12) $(am__append_13) $(am__append_14) $(am__append_15) $(am__append_16) $(am__append_17) $(am__append_18)
+ libffi_convenience_la_SOURCES = $(libffi_la_SOURCES)
+ nodist_libffi_convenience_la_SOURCES = $(nodist_libffi_la_SOURCES)
+-AM_CFLAGS = -Wall -g -fexceptions
++AM_CFLAGS = -Wall -fexceptions
+ libffi_la_LDFLAGS = -version-info `grep -v '^\#' $(srcdir)/libtool-version`
+ AM_CPPFLAGS = -I. -I$(top_srcdir)/include -Iinclude -I$(top_srcdir)/src
+ AM_CCASFLAGS = $(AM_CPPFLAGS)
+--- gcc-4.0-20040919/libjava/Makefile.am.orig 2004-09-10 10:22:58.000000000 +0200
++++ gcc-4.0-20040919/libjava/Makefile.am 2004-09-26 11:46:24.041082768 +0200
+@@ -179,7 +179,7 @@
+ ## Extra CFLAGS used for JNI C sources shared with GNU Classpath.
+ PEDANTIC_CFLAGS = -ansi -pedantic -Wall -Wno-long-long
+
+-JCFLAGS = -g
++JCFLAGS =
+ JC1FLAGS = @LIBGCJ_JAVAFLAGS@ $(GCJFLAGS)
+
+ LIBFFIINCS = @LIBFFIINCS@
+--- gcc-4.0-20040919/libjava/Makefile.in.orig 2004-09-19 19:47:04.000000000 +0200
++++ gcc-4.0-20040919/libjava/Makefile.in 2004-09-26 11:47:02.431246576 +0200
+@@ -4167,7 +4167,7 @@
+ @USING_GCC_FALSE@AM_CFLAGS = @LIBGCJ_CFLAGS@
+ @USING_GCC_TRUE@AM_CFLAGS = @LIBGCJ_CFLAGS@ $(WARNINGS)
+ PEDANTIC_CFLAGS = -ansi -pedantic -Wall -Wno-long-long
+-JCFLAGS = -g
++JCFLAGS =
+ JC1FLAGS = @LIBGCJ_JAVAFLAGS@ $(GCJFLAGS)
+ AM_CPPFLAGS = -I$(top_srcdir) -Iinclude -I$(top_srcdir)/include \
+ $(GCINCS) $(THREADINCS) $(INCLTDL) \
--- /dev/null
+--- gcc-4.0-20040919/libstdc++-v3/configure.orig 2004-09-03 20:09:37.000000000 +0200
++++ gcc-4.0-20040919/libstdc++-v3/configure 2004-09-26 11:29:06.830762704 +0200
+@@ -5752,7 +5752,7 @@
+ int j;
+ __locale_t loc;
+ __locale_t loc_dup;
+- loc = __newlocale(1 << LC_ALL, "de_DE", 0);
++ loc = __newlocale(1 << LC_ALL, "C", 0);
+ loc_dup = __duplocale(loc);
+ i = __strcoll_l(__one, __two, loc);
+ j = __strcoll_l(__one, __two, loc_dup);
--- /dev/null
+#!/usr/bin/perl
+
+sub trim
+{
+ my $string = shift;
+ $string =~ s/^\s+//;
+ $string =~ s/\s+$//;
+ return $string;
+}
+
+open(F, $ARGV[0]) or die("cannot open file: $ARGV[0]\n");
+@lines = <F>;
+close(F);
+
+@deps = ();
+
+foreach (@lines)
+{
+ if (/(^dependency_libs='(.*)')/)
+ {
+ @libs = split(/[\ \t\n]+/, trim($2));
+ @L = grep(/^-L.*gcc\/.*\/\d\.\d\.\d(\/32)*$/, @libs);
+ @l = grep(/^-l.*/, @libs);
+ $opt_L = join(' ', @L);
+ $opt_l = join(' ', @l);
+ print("dependency_libs='");
+ print($opt_L);
+ if (scalar(@L))
+ {
+ print(" ");
+ }
+ print($opt_l);
+ print("'\n");
+ }
+ elsif (/^libdir='(.*)'/)
+ {
+ print("libdir='$ARGV[1]'\n");
+ }
+ else
+ {
+ print($_);
+ }
+}
--- /dev/null
+--- gcc/gcc/Makefile.in 12 Oct 2005 12:38:00 -0000 1.1547
++++ gcc/gcc/Makefile.in 21 Oct 2005 11:22:39 -0000
+@@ -2375,7 +2376,7 @@ postreload.o : postreload.c $(CONFIG_H)
+ $(RTL_H) real.h $(FLAGS_H) $(EXPR_H) $(OPTABS_H) reload.h $(REGS_H) \
+ hard-reg-set.h insn-config.h $(BASIC_BLOCK_H) $(RECOG_H) output.h \
+ function.h toplev.h cselib.h $(TM_P_H) except.h $(TREE_H) $(MACHMODE_H) \
+- $(OBSTACK_H) timevar.h tree-pass.h
++ $(TARGET_H) $(OBSTACK_H) timevar.h tree-pass.h
+ postreload-gcse.o : postreload-gcse.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \
+ $(TM_H) $(RTL_H) $(REGS_H) hard-reg-set.h $(FLAGS_H) real.h insn-config.h \
+ $(RECOG_H) $(EXPR_H) $(BASIC_BLOCK_H) function.h output.h toplev.h \
+--- gcc/gcc/passes.c 11 Oct 2005 19:18:24 -0000 2.117
++++ gcc/gcc/passes.c 21 Oct 2005 11:22:40 -0000
+@@ -650,6 +650,7 @@ init_optimization_passes (void)
+ NEXT_PASS (pass_postreload_cse);
+ NEXT_PASS (pass_gcse2);
+ NEXT_PASS (pass_flow2);
++ NEXT_PASS (pass_machine_postreload);
+ NEXT_PASS (pass_stack_adjustments);
+ NEXT_PASS (pass_peephole2);
+ NEXT_PASS (pass_if_after_reload);
+--- gcc/gcc/postreload.c 5 Jul 2005 16:20:09 -0000 2.33
++++ gcc/gcc/postreload.c 21 Oct 2005 11:22:40 -0000
+@@ -41,6 +41,7 @@ Software Foundation, 51 Franklin Street,
+ #include "output.h"
+ #include "cselib.h"
+ #include "real.h"
++#include "target.h"
+ #include "toplev.h"
+ #include "except.h"
+ #include "tree.h"
+@@ -1599,3 +1600,33 @@ struct tree_opt_pass pass_postreload_cse
+ 'o' /* letter */
+ };
+
++/* Machine dependent postreload pass. */
++static bool
++gate_handle_machine_postreload (void)
++{
++ return targetm.machine_dependent_postreload != 0;
++}
++
++
++static void
++rest_of_handle_machine_postreload (void)
++{
++ targetm.machine_dependent_postreload ();
++}
++
++struct tree_opt_pass pass_machine_postreload =
++{
++ "mach-postreload", /* name */
++ gate_handle_machine_postreload, /* gate */
++ rest_of_handle_machine_postreload, /* execute */
++ NULL, /* sub */
++ NULL, /* next */
++ 0, /* static_pass_number */
++ TV_MACH_DEP_AFTER_RELOAD, /* tv_id */
++ 0, /* properties_required */
++ 0, /* properties_provided */
++ 0, /* properties_destroyed */
++ 0, /* todo_flags_start */
++ TODO_dump_func, /* todo_flags_finish */
++ 0 /* letter */
++};
+--- gcc/gcc/target-def.h 12 Oct 2005 20:54:48 -0000 1.134
++++ gcc/gcc/target-def.h 21 Oct 2005 11:22:40 -0000
+@@ -395,6 +395,7 @@ Foundation, 51 Franklin Street, Fifth Fl
+
+ #define TARGET_CC_MODES_COMPATIBLE default_cc_modes_compatible
+
++#define TARGET_MACHINE_DEPENDENT_AFTER_RELOAD 0
+ #define TARGET_MACHINE_DEPENDENT_REORG 0
+
+ #define TARGET_BUILD_BUILTIN_VA_LIST std_build_builtin_va_list
+@@ -587,6 +588,7 @@ Foundation, 51 Franklin Street, Fifth Fl
+ TARGET_DWARF_REGISTER_SPAN, \
+ TARGET_FIXED_CONDITION_CODE_REGS, \
+ TARGET_CC_MODES_COMPATIBLE, \
++ TARGET_MACHINE_DEPENDENT_AFTER_RELOAD, \
+ TARGET_MACHINE_DEPENDENT_REORG, \
+ TARGET_BUILD_BUILTIN_VA_LIST, \
+ TARGET_GIMPLIFY_VA_ARG_EXPR, \
+--- gcc/gcc/target.h 12 Oct 2005 20:54:48 -0000 1.145
++++ gcc/gcc/target.h 21 Oct 2005 11:22:40 -0000
+@@ -478,6 +478,10 @@ struct gcc_target
+ enum machine_mode (* cc_modes_compatible) (enum machine_mode,
+ enum machine_mode);
+
++ /* Do machine-dependent post-reload pass. Called after
++ flow2 pass. */
++ void (* machine_dependent_postreload) (void);
++
+ /* Do machine-dependent code transformations. Called just before
+ delayed-branch scheduling. */
+ void (* machine_dependent_reorg) (void);
+--- gcc/gcc/timevar.def 1 Aug 2005 07:47:23 -0000 1.54
++++ gcc/gcc/timevar.def 21 Oct 2005 11:22:40 -0000
+@@ -148,8 +148,9 @@ DEFTIMEVAR (TV_SCHED , "
+ DEFTIMEVAR (TV_LOCAL_ALLOC , "local alloc")
+ DEFTIMEVAR (TV_GLOBAL_ALLOC , "global alloc")
+ DEFTIMEVAR (TV_RELOAD_CSE_REGS , "reload CSE regs")
+-DEFTIMEVAR (TV_GCSE_AFTER_RELOAD , "load CSE after reload")
++DEFTIMEVAR (TV_GCSE_AFTER_RELOAD , "load CSE after reload")
+ DEFTIMEVAR (TV_FLOW2 , "flow 2")
++DEFTIMEVAR (TV_MACH_DEP_AFTER_RELOAD , "mach-dep after reload")
+ DEFTIMEVAR (TV_IFCVT2 , "if-conversion 2")
+ DEFTIMEVAR (TV_PEEPHOLE2 , "peephole 2")
+ DEFTIMEVAR (TV_RENAME_REGISTERS , "rename registers")
+--- gcc/gcc/tree-pass.h 11 Oct 2005 19:18:24 -0000 2.59
++++ gcc/gcc/tree-pass.h 21 Oct 2005 11:22:40 -0000
+@@ -352,6 +352,7 @@ extern struct tree_opt_pass pass_remove_
+ extern struct tree_opt_pass pass_postreload_cse;
+ extern struct tree_opt_pass pass_gcse2;
+ extern struct tree_opt_pass pass_flow2;
++extern struct tree_opt_pass pass_machine_postreload;
+ extern struct tree_opt_pass pass_stack_adjustments;
+ extern struct tree_opt_pass pass_peephole2;
+ extern struct tree_opt_pass pass_if_after_reload;
+--- gcc/gcc/config/i386/i386.c 19 Oct 2005 02:13:37 -0000 1.864
++++ gcc/gcc/config/i386/i386.c 21 Oct 2005 11:22:43 -0000
+@@ -860,6 +860,7 @@ static void x86_output_mi_thunk (FILE *,
+ HOST_WIDE_INT, tree);
+ static bool x86_can_output_mi_thunk (tree, HOST_WIDE_INT, HOST_WIDE_INT, tree);
+ static void x86_file_start (void);
++static void ix86_postreload (void);
+ static void ix86_reorg (void);
+ static bool ix86_expand_carry_flag_compare (enum rtx_code, rtx, rtx, rtx*);
+ static tree ix86_build_builtin_va_list (void);
+@@ -1062,6 +1063,9 @@ static void x86_64_elf_select_section (t
+ #undef TARGET_CC_MODES_COMPATIBLE
+ #define TARGET_CC_MODES_COMPATIBLE ix86_cc_modes_compatible
+
++#undef TARGET_MACHINE_DEPENDENT_AFTER_RELOAD
++#define TARGET_MACHINE_DEPENDENT_AFTER_RELOAD ix86_postreload
++
+ #undef TARGET_MACHINE_DEPENDENT_REORG
+ #define TARGET_MACHINE_DEPENDENT_REORG ix86_reorg
+
+@@ -16908,6 +16912,236 @@ min_insn_size (rtx insn)
+ return 2;
+ }
+
++/* Non-fcomi 387 FP compare sequences can not be CSE'd during cse1 pass.
++ This function implements elimination of redundant 387 FP compare
++ sequences. We look for a sequence of:
++
++ fucom(p), fcom(p), ficom(p), fcompp, ftst
++ fnstsw %ax
++ sahf or test %ax
++ j<cc>
++
++ After the FP compare sequence has been found, redundant instructions in
++ successor blocks are deleted:
++
++ a) fcom/fnstsw combination iff compare arguments
++ and AX reg were not modified.
++ b) sahf (test %ax) and fcom/fnstsw iff compare arguments up to compare
++ insn and CC reg were not modified.
++
++ This code is partially based on code from cse_condition_code_reg () and
++ cse_cc_succs () functions, as found in cse.c source file. */
++
++static void
++ix86_cse_i387_compares (void)
++{
++ rtx cc_reg = gen_rtx_REG (CCmode, FLAGS_REG);
++ rtx ax_reg;
++ basic_block bb;
++
++ FOR_EACH_BB (bb)
++ {
++ rtx last_insn;
++ rtx insn;
++ rtx cc_src_insn;
++ rtx cc_src;
++ rtx ax_src_insn;
++ rtx ax_src;
++
++ bool cc_src_clobbered_pred;
++
++ edge e;
++ edge_iterator ei;
++
++ last_insn = BB_END (bb);
++ if (!JUMP_P (last_insn))
++ continue;
++
++ /* Find CC setting insn. */
++ if (! reg_referenced_p (cc_reg, PATTERN (last_insn)))
++ continue;
++
++ cc_src_insn = NULL_RTX;
++ cc_src = NULL_RTX;
++ for (insn = PREV_INSN (last_insn);
++ insn && insn != PREV_INSN (BB_HEAD (bb));
++ insn = PREV_INSN (insn))
++ {
++ rtx set;
++
++ if (! INSN_P (insn))
++ continue;
++
++ set = single_set (insn);
++ if (set
++ && REG_P (SET_DEST (set))
++ && REGNO (SET_DEST (set)) == REGNO (cc_reg))
++ {
++ cc_src_insn = insn;
++ cc_src = SET_SRC (set);
++ break;
++ }
++ else if (reg_set_p (cc_reg, insn))
++ break;
++ }
++
++ if (! cc_src_insn)
++ continue;
++
++ /* Check if argument to CC setting insn (AX reg) has been
++ modified between CC setting insn and jump insn. */
++ cc_src_clobbered_pred
++ = modified_between_p (cc_src, cc_src_insn, NEXT_INSN (last_insn))
++ ? true : false;
++
++ /* Find AX setting insn. */
++ ax_reg = gen_rtx_REG (HImode, 0);
++
++ if (! reg_referenced_p (ax_reg, PATTERN (cc_src_insn)))
++ continue;
++
++ ax_src_insn = NULL_RTX;
++ ax_src = NULL_RTX;
++ for (insn = PREV_INSN (cc_src_insn);
++ insn && insn != PREV_INSN (BB_HEAD (bb));
++ insn = PREV_INSN (insn))
++ {
++ rtx set;
++
++ if (! INSN_P (insn))
++ continue;
++
++ set = single_set (insn);
++ if (set
++ && REG_P (SET_DEST (set))
++ && REGNO (SET_DEST (set)) == REGNO (ax_reg))
++ {
++ ax_src_insn = insn;
++ ax_src = SET_SRC (set);
++ break;
++ }
++ else if (reg_set_p (ax_reg, insn))
++ break;
++ }
++
++ if (! ax_src_insn)
++ continue;
++
++ if (! (GET_CODE (ax_src) == UNSPEC
++ && XINT (ax_src, 1) == UNSPEC_FNSTSW))
++ continue;
++
++ /* Leave this BB if input arguments to AX setting insn (compare)
++ have been modified between compare and jump insn. */
++ if (modified_between_p (ax_src, ax_src_insn, NEXT_INSN (last_insn)))
++ continue;
++
++ /* FP compare sequence has been found. Check successor blocks
++ for redundant insns. */
++ FOR_EACH_EDGE (e, ei, bb->succs)
++ {
++ rtx insn;
++ rtx end;
++
++ rtx delete_cc_src_insn = NULL_RTX;
++ rtx delete_ax_src_insn = NULL_RTX;
++ rtx maybe_delete_ax_src_insn = NULL_RTX;
++
++ bool cc_src_clobbered;
++ bool cc_reg_clobbered;
++
++ if (e->flags & EDGE_COMPLEX)
++ continue;
++
++ if (EDGE_COUNT (e->dest->preds) != 1
++ || e->dest == EXIT_BLOCK_PTR)
++ continue;
++
++ end = NEXT_INSN (BB_END (e->dest));
++
++ cc_src_clobbered = cc_src_clobbered_pred;
++ cc_reg_clobbered = false;
++
++ for (insn = BB_HEAD (e->dest); insn != end; insn = NEXT_INSN (insn))
++ {
++ rtx set;
++
++ if (! INSN_P (insn))
++ continue;
++
++ /* If compare arguments are modified, we have to
++ stop looking for a compare which uses it. */
++ if (modified_in_p (ax_src, insn)
++ && maybe_delete_ax_src_insn == NULL_RTX)
++ break;
++
++ set = single_set (insn);
++
++ /* A compare insn can be deleted if it sets AX_REG
++ from AX_SRC and where CC_SRC is not clobbered yet. */
++ if (set
++ && REG_P (SET_DEST (set))
++ && REGNO (SET_DEST (set)) == REGNO (ax_reg)
++ && rtx_equal_p (ax_src, SET_SRC (set)))
++ {
++ maybe_delete_ax_src_insn = insn;
++ if (!cc_src_clobbered)
++ {
++ delete_ax_src_insn = insn;
++ continue;
++ }
++ }
++
++ /* A CC setting insn can be deleted if it sets
++ CC_REG from CC_SRC, and CC is not clobbered yet.
++ In this case, compare insn should also be deleted. */
++ if (set
++ && REG_P (SET_DEST (set))
++ && REGNO (SET_DEST (set)) == REGNO (cc_reg)
++ && rtx_equal_p (cc_src, SET_SRC (set))
++ && !cc_reg_clobbered
++ /* There should be a compare insn present in front. */
++ && maybe_delete_ax_src_insn != NULL_RTX)
++ {
++ delete_ax_src_insn = maybe_delete_ax_src_insn;
++ delete_cc_src_insn = insn;
++ break;
++ }
++
++ if (modified_in_p (cc_src, insn))
++ cc_src_clobbered = true;
++
++ if (modified_in_p (cc_reg, insn))
++ cc_reg_clobbered = true;
++
++ /* No usable register remains unclobbered. */
++ if (cc_src_clobbered && cc_reg_clobbered)
++ break;
++ }
++
++ /* Delete comparison. */
++ if (delete_ax_src_insn)
++ {
++ gcc_assert (maybe_delete_ax_src_insn != NULL_RTX);
++ delete_insn (delete_ax_src_insn);
++ }
++
++ /* Delete CC setting instruction. */
++ if (delete_cc_src_insn)
++ delete_insn (delete_cc_src_insn);
++ }
++ }
++}
++
++/* Implement machine specific post-reload optimizations. */
++static void
++ix86_postreload (void)
++{
++ if (TARGET_80387 && !TARGET_CMOVE &&
++ !flag_trapping_math && flag_expensive_optimizations)
++ ix86_cse_i387_compares ();
++}
++
+ /* AMD K8 core mispredicts jumps when there are more than 3 jumps in 16 byte
+ window. */
+
+--- gcc/gcc/doc/tm.texi 12 Oct 2005 20:54:49 -0000 1.447
++++ gcc/gcc/doc/tm.texi 21 Oct 2005 11:29:35 -0000
+@@ -9300,6 +9300,15 @@ added to the @code{struct ce_if_block} s
+ by the @code{IFCVT_INIT_EXTRA_FIELDS} macro.
+ @end defmac
+
++@deftypefn {Target Hook} void TARGET_MACHINE_DEPENDENT_AFTER_RELOAD ()
++If non-null, this hook performs a target-specific pass over the
++instruction stream. The compiler will run it at all optimization levels,
++after instructions have been split in flow2 pass.
++
++You need not implement the hook if it has nothing to do. The default
++definition is null.
++@end deftypefn
++
+ @deftypefn {Target Hook} void TARGET_MACHINE_DEPENDENT_REORG ()
+ If non-null, this hook performs a target-specific pass over the
+ instruction stream. The compiler will run it at all optimization levels,
--- /dev/null
+The problem here is that have two basic block forwarders which go to the
+same basic block but destination of two different eh regions. We cannot
+forward both of these basic blocks to that other basic block.
+
+The way I fixed the issue is to make sure that if we removing
+a forwarder block which is coming in from a EH edge, make sure
+that the destination basic block have only one single predecessor.
+Yes this is too strong but there is no simple way to check if a basic
+block is the destination of a different eh region.
+
+--- gcc/gcc/tree-cfgcleanup.c 19 Aug 2005 18:52:55 -0000 2.7
++++ gcc/gcc/tree-cfgcleanup.c 24 Sep 2005 23:30:54 -0000
+@@ -392,7 +392,18 @@ remove_forwarder_block (basic_block bb,
+ return false;
+ }
+ }
+-
++ /* Check to make sure that we can remove a forwarder block for eh edges. */
++ FOR_EACH_EDGE (e, ei, bb->preds)
++ {
++ /* This check is too strong, we should also be checking eh regions
++ but this is much harder. */
++ if (e->flags & EDGE_EH)
++ {
++ if (!single_pred_p (dest))
++ return false;
++ }
++ }
++
+ /* Redirect the edges. */
+ for (ei = ei_start (bb->preds); (e = ei_safe_edge (ei)); )
+ {
--- /dev/null
+2005-10-31 Benjamin Kosnik <bkoz@redhat.com>
+
+ * src/mt_allocator.cc (__gnu_internal): Make hidden.
+ * src/pool_allocator.cc: Same.
+ * src/locale_init.cc (__gnu_internal): Same.
+ * src/locale.cc (__gnu_internal): Same.
+ * src/ios_init.cc (__gnu_internal): Same.
+ * src/globals_io.cc: Same.
+ * src/globals_locale.cc (__gnu_internal): Same.
+ * src/debug.cc (__gnu_internal): Same.
+ * src/ext-inst.cc (__gnu_internal): Same.
+
+*** gcc/libstdc++-v3/src/debug.cc 9 Sep 2005 10:14:33 -0000 1.15
+--- gcc/libstdc++-v3/src/debug.cc 28 Oct 2005 00:44:54 -0000
+*************** using namespace std;
+*** 41,47 ****
+--- 41,51 ----
+
+ namespace __gnu_internal
+ {
++ #pragma GCC visibility push(hidden)
++
+ static __glibcxx_mutex_define_initialized(iterator_base_mutex);
++
++ #pragma GCC visibility pop
+ } // namespace __gnu_internal
+
+ namespace __gnu_debug
+*** gcc/libstdc++-v3/src/ext-inst.cc 17 Aug 2005 02:14:21 -0000 1.8
+--- gcc/libstdc++-v3/src/ext-inst.cc 28 Oct 2005 00:44:54 -0000
+***************
+*** 1,6 ****
+ // Explicit instantiation file.
+
+! // Copyright (C) 2001, 2002, 2004 Free Software Foundation, Inc.
+ //
+ // This file is part of the GNU ISO C++ Library. This library is free
+ // software; you can redistribute it and/or modify it under the
+--- 1,6 ----
+ // Explicit instantiation file.
+
+! // Copyright (C) 2001, 2002, 2004, 2005 Free Software Foundation, Inc.
+ //
+ // This file is part of the GNU ISO C++ Library. This library is free
+ // software; you can redistribute it and/or modify it under the
+***************
+*** 36,42 ****
+--- 36,46 ----
+
+ namespace __gnu_internal
+ {
++ #pragma GCC visibility push(hidden)
++
+ const int min_len = __gnu_cxx::_Rope_constants::_S_max_rope_depth + 1;
++
++ #pragma GCC visibility pop
+ }
+
+ namespace __gnu_cxx
+*** gcc/libstdc++-v3/src/globals_io.cc 17 Aug 2005 02:14:22 -0000 1.3
+--- gcc/libstdc++-v3/src/globals_io.cc 28 Oct 2005 00:44:54 -0000
+***************
+*** 1,4 ****
+! // Copyright (C) 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
+ //
+ // This file is part of the GNU ISO C++ Library. This library is free
+ // software; you can redistribute it and/or modify it under the
+--- 1,4 ----
+! // Copyright (C) 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
+ //
+ // This file is part of the GNU ISO C++ Library. This library is free
+ // software; you can redistribute it and/or modify it under the
+*************** namespace std
+*** 76,81 ****
+--- 76,83 ----
+
+ namespace __gnu_internal
+ {
++ #pragma GCC visibility push(hidden)
++
+ using namespace std;
+ using namespace __gnu_cxx;
+
+*************** namespace __gnu_internal
+*** 126,129 ****
+--- 128,133 ----
+ _GLIBCXX_mutex_address_init ()
+ { __GTHREAD_MUTEX_INIT_FUNCTION (_GLIBCXX_mutex_address); }
+ #endif
++
++ #pragma GCC visibility pop
+ } // namespace __gnu_internal
+*** gcc/libstdc++-v3/src/globals_locale.cc 17 Aug 2005 02:14:22 -0000 1.4
+--- gcc/libstdc++-v3/src/globals_locale.cc 28 Oct 2005 00:44:54 -0000
+***************
+*** 1,4 ****
+! // Copyright (C) 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
+ //
+ // This file is part of the GNU ISO C++ Library. This library is free
+ // software; you can redistribute it and/or modify it under the
+--- 1,4 ----
+! // Copyright (C) 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
+ //
+ // This file is part of the GNU ISO C++ Library. This library is free
+ // software; you can redistribute it and/or modify it under the
+***************
+*** 45,50 ****
+--- 45,52 ----
+
+ namespace __gnu_internal
+ {
++ #pragma GCC visibility push(hidden)
++
+ using namespace std;
+
+ typedef char fake_locale_Impl[sizeof(locale::_Impl)]
+*************** namespace __gnu_internal
+*** 207,210 ****
+--- 209,214 ----
+ __attribute__ ((aligned(__alignof__(std::__timepunct_cache<wchar_t>))));
+ fake_time_cache_w timepunct_cache_w;
+ #endif
++
++ #pragma GCC visibility pop
+ } // namespace __gnu_internal
+*** gcc/libstdc++-v3/src/ios_init.cc 17 Aug 2005 02:14:22 -0000 1.8
+--- gcc/libstdc++-v3/src/ios_init.cc 28 Oct 2005 00:44:54 -0000
+***************
+*** 1,6 ****
+ // Iostreams base classes -*- C++ -*-
+
+! // Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004
+ // Free Software Foundation, Inc.
+ //
+ // This file is part of the GNU ISO C++ Library. This library is free
+--- 1,6 ----
+ // Iostreams base classes -*- C++ -*-
+
+! // Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005
+ // Free Software Foundation, Inc.
+ //
+ // This file is part of the GNU ISO C++ Library. This library is free
+***************
+*** 42,47 ****
+--- 42,49 ----
+
+ namespace __gnu_internal
+ {
++ #pragma GCC visibility push(hidden)
++
+ using namespace __gnu_cxx;
+
+ // Extern declarations for global objects in src/globals.cc.
+*************** namespace __gnu_internal
+*** 62,67 ****
+--- 64,71 ----
+ extern stdio_filebuf<wchar_t> buf_wcin;
+ extern stdio_filebuf<wchar_t> buf_wcerr;
+ #endif
++
++ #pragma GCC visibility pop
+ } // namespace __gnu_internal
+
+ namespace std
+*** gcc/libstdc++-v3/src/locale.cc 11 Oct 2005 06:19:13 -0000 1.112
+--- gcc/libstdc++-v3/src/locale.cc 28 Oct 2005 00:44:54 -0000
+***************
+*** 1,4 ****
+! // Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004
+ // Free Software Foundation, Inc.
+ //
+ // This file is part of the GNU ISO C++ Library. This library is free
+--- 1,4 ----
+! // Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005
+ // Free Software Foundation, Inc.
+ //
+ // This file is part of the GNU ISO C++ Library. This library is free
+***************
+*** 37,44 ****
+--- 37,48 ----
+
+ namespace __gnu_internal
+ {
++ #pragma GCC visibility push(hidden)
++
+ // Mutex object for cache access
+ static __glibcxx_mutex_define_initialized(locale_cache_mutex);
++
++ #pragma GCC visibility pop
+ }
+
+ namespace std
+*** gcc/libstdc++-v3/src/locale_init.cc 9 Sep 2005 10:14:34 -0000 1.17
+--- gcc/libstdc++-v3/src/locale_init.cc 28 Oct 2005 00:44:54 -0000
+***************
+*** 37,42 ****
+--- 37,44 ----
+
+ namespace __gnu_internal
+ {
++ #pragma GCC visibility push(hidden)
++
+ // Defined in globals.cc.
+ extern std::locale c_locale;
+ extern std::locale::_Impl c_locale_impl;
+*************** namespace __gnu_internal
+*** 91,96 ****
+--- 93,100 ----
+
+ // Mutex object for locale initialization.
+ static __glibcxx_mutex_define_initialized(locale_mutex);
++
++ #pragma GCC visibility pop
+ } // namespace __gnu_internal
+
+ namespace std
+*** gcc/libstdc++-v3/src/mt_allocator.cc 12 Sep 2005 04:49:10 -0000 1.13
+--- gcc/libstdc++-v3/src/mt_allocator.cc 28 Oct 2005 00:44:54 -0000
+***************
+*** 37,42 ****
+--- 37,44 ----
+
+ namespace __gnu_internal
+ {
++ #pragma GCC visibility push(hidden)
++
+ #ifdef __GTHREADS
+ struct __freelist
+ {
+*************** namespace __gnu_internal
+*** 74,79 ****
+--- 76,83 ----
+ freelist._M_thread_freelist = __tr;
+ }
+ #endif
++
++ #pragma GCC visibility pop
+ }
+
+ namespace __gnu_cxx
+*** gcc/libstdc++-v3/src/pool_allocator.cc 9 Sep 2005 10:14:34 -0000 1.6
+--- gcc/libstdc++-v3/src/pool_allocator.cc 28 Oct 2005 00:44:54 -0000
+***************
+*** 37,43 ****
+--- 37,47 ----
+
+ namespace __gnu_internal
+ {
++ #pragma GCC visibility push(hidden)
++
+ static __glibcxx_mutex_define_initialized(palloc_init_mutex);
++
++ #pragma GCC visibility pop
+ }
+
+ namespace __gnu_cxx
--- /dev/null
+--- gcc/libstdc++-v3/include/ext/algorithm.vis1~ 2005-10-31 21:15:57.000000000 +0100
++++ gcc/libstdc++-v3/include/ext/algorithm 2005-11-03 10:28:32.000000000 +0100
+@@ -1,6 +1,6 @@
+ // Algorithm extensions -*- C++ -*-
+
+-// Copyright (C) 2001, 2002, 2004 Free Software Foundation, Inc.
++// Copyright (C) 2001, 2002, 2004, 2005 Free Software Foundation, Inc.
+ //
+ // This file is part of the GNU ISO C++ Library. This library is free
+ // software; you can redistribute it and/or modify it under the
+@@ -62,6 +62,7 @@
+ #define _EXT_ALGORITHM 1
+
+ #pragma GCC system_header
++#pragma GCC visibility push(default)
+
+ #include <algorithm>
+
+@@ -523,4 +524,6 @@
+ }
+ } // namespace __gnu_cxx
+
++#pragma GCC visibility pop
++
+ #endif /* _EXT_ALGORITHM */
+--- gcc/libstdc++-v3/include/ext/array_allocator.h.vis1~ 2005-10-31 21:15:57.000000000 +0100
++++ gcc/libstdc++-v3/include/ext/array_allocator.h 2005-11-03 10:28:32.000000000 +0100
+@@ -34,6 +34,8 @@
+ #ifndef _ARRAY_ALLOCATOR_H
+ #define _ARRAY_ALLOCATOR_H 1
+
++#pragma GCC visibility push(default)
++
+ #include <cstddef>
+ #include <new>
+ #include <bits/functexcept.h>
+@@ -142,4 +144,6 @@
+ { return false; }
+ } // namespace __gnu_cxx
+
++#pragma GCC visibility pop
++
+ #endif
+--- gcc/libstdc++-v3/include/ext/bitmap_allocator.h.vis1~ 2005-10-31 21:15:57.000000000 +0100
++++ gcc/libstdc++-v3/include/ext/bitmap_allocator.h 2005-11-03 10:28:32.000000000 +0100
+@@ -34,6 +34,8 @@
+ #ifndef _BITMAP_ALLOCATOR_H
+ #define _BITMAP_ALLOCATOR_H 1
+
++#pragma GCC visibility push(default)
++
+ // For std::size_t, and ptrdiff_t.
+ #include <cstddef>
+
+@@ -1289,6 +1291,8 @@
+
+ }
+
++#pragma GCC visibility pop
++
+ #endif
+
+ // LocalWords: namespace GTHREADS bool const gthread endif Mutex mutex
+--- gcc/libstdc++-v3/include/ext/debug_allocator.h.vis1~ 2005-10-31 21:15:57.000000000 +0100
++++ gcc/libstdc++-v3/include/ext/debug_allocator.h 2005-11-03 10:28:32.000000000 +0100
+@@ -48,6 +48,8 @@
+ #ifndef _DEBUG_ALLOCATOR_H
+ #define _DEBUG_ALLOCATOR_H 1
+
++#pragma GCC visibility push(default)
++
+ #include <stdexcept>
+
+ namespace __gnu_cxx
+@@ -122,4 +124,6 @@
+ };
+ } // namespace __gnu_cxx
+
++#pragma GCC visibility pop
++
+ #endif
+--- gcc/libstdc++-v3/include/ext/functional.vis1~ 2005-10-31 21:15:57.000000000 +0100
++++ gcc/libstdc++-v3/include/ext/functional 2005-11-03 10:28:32.000000000 +0100
+@@ -1,6 +1,6 @@
+ // Functional extensions -*- C++ -*-
+
+-// Copyright (C) 2002, 2004 Free Software Foundation, Inc.
++// Copyright (C) 2002, 2004, 2005 Free Software Foundation, Inc.
+ //
+ // This file is part of the GNU ISO C++ Library. This library is free
+ // software; you can redistribute it and/or modify it under the
+@@ -62,6 +62,7 @@
+ #define _EXT_FUNCTIONAL 1
+
+ #pragma GCC system_header
++#pragma GCC visibility push(default)
+
+ #include <functional>
+
+@@ -421,5 +422,8 @@
+ mem_fun1_ref(_Ret (_Tp::*__f)(_Arg) const)
+ { return const_mem_fun1_ref_t<_Ret, _Tp, _Arg>(__f); }
+ } // namespace __gnu_cxx
++
++#pragma GCC visibility pop
++
+ #endif
+
+--- gcc/libstdc++-v3/include/ext/hash_map.vis1~ 2005-10-31 21:15:57.000000000 +0100
++++ gcc/libstdc++-v3/include/ext/hash_map 2005-11-03 10:30:29.000000000 +0100
+@@ -61,6 +61,8 @@
+ #ifndef _HASH_MAP
+ #define _HASH_MAP 1
+
++#pragma GCC visibility push(default)
++
+ #include <ext/hashtable.h>
+ #include <bits/concept_check.h>
+
+@@ -622,4 +624,6 @@
+ # include <debug/hash_map>
+ #endif
+
++#pragma GCC visibility pop
++
+ #endif
+--- gcc/libstdc++-v3/include/ext/hash_set.vis1~ 2005-10-31 21:15:57.000000000 +0100
++++ gcc/libstdc++-v3/include/ext/hash_set 2005-11-03 10:30:57.000000000 +0100
+@@ -61,6 +61,8 @@
+ #ifndef _HASH_SET
+ #define _HASH_SET 1
+
++#pragma GCC visibility push(default)
++
+ #include <ext/hashtable.h>
+ #include <bits/concept_check.h>
+
+@@ -588,4 +590,6 @@
+ # include <debug/hash_set>
+ #endif
+
++#pragma GCC visibility pop
++
+ #endif
+--- gcc/libstdc++-v3/include/ext/iterator.vis1~ 2005-10-31 21:15:57.000000000 +0100
++++ gcc/libstdc++-v3/include/ext/iterator 2005-11-03 10:28:34.000000000 +0100
+@@ -1,6 +1,6 @@
+ // HP/SGI iterator extensions -*- C++ -*-
+
+-// Copyright (C) 2001, 2002, 2004 Free Software Foundation, Inc.
++// Copyright (C) 2001, 2002, 2004, 2005 Free Software Foundation, Inc.
+ //
+ // This file is part of the GNU ISO C++ Library. This library is free
+ // software; you can redistribute it and/or modify it under the
+@@ -62,6 +62,7 @@
+ #define _EXT_ITERATOR 1
+
+ #pragma GCC system_header
++#pragma GCC visibility push(default)
+
+ #include <bits/concept_check.h>
+ #include <iterator>
+@@ -113,5 +114,7 @@
+ }
+ } // namespace __gnu_cxx
+
++#pragma GCC visibility pop
++
+ #endif
+
+--- gcc/libstdc++-v3/include/ext/malloc_allocator.h.vis1~ 2005-10-31 21:15:57.000000000 +0100
++++ gcc/libstdc++-v3/include/ext/malloc_allocator.h 2005-11-03 10:28:34.000000000 +0100
+@@ -1,6 +1,7 @@
+ // Allocator that wraps "C" malloc -*- C++ -*-
+
+-// Copyright (C) 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
++// Copyright (C) 2001, 2002, 2003, 2004, 2005
++// Free Software Foundation, Inc.
+ //
+ // This file is part of the GNU ISO C++ Library. This library is free
+ // software; you can redistribute it and/or modify it under the
+@@ -34,6 +35,8 @@
+ #ifndef _MALLOC_ALLOCATOR_H
+ #define _MALLOC_ALLOCATOR_H 1
+
++#pragma GCC visibility push(default)
++
+ #include <cstdlib>
+ #include <new>
+ #include <bits/functexcept.h>
+@@ -122,4 +125,6 @@
+ { return false; }
+ } // namespace __gnu_cxx
+
++#pragma GCC visibility pop
++
+ #endif
+--- gcc/libstdc++-v3/include/ext/memory.vis1~ 2005-10-31 21:15:57.000000000 +0100
++++ gcc/libstdc++-v3/include/ext/memory 2005-11-03 10:28:34.000000000 +0100
+@@ -1,6 +1,6 @@
+ // Memory extensions -*- C++ -*-
+
+-// Copyright (C) 2002, 2004 Free Software Foundation, Inc.
++// Copyright (C) 2002, 2004, 2005 Free Software Foundation, Inc.
+ //
+ // This file is part of the GNU ISO C++ Library. This library is free
+ // software; you can redistribute it and/or modify it under the
+@@ -62,6 +62,7 @@
+ #define _EXT_MEMORY 1
+
+ #pragma GCC system_header
++#pragma GCC visibility push(default)
+
+ #include <memory>
+ #include <bits/stl_tempbuf.h>
+@@ -194,5 +195,7 @@
+ };
+ } // namespace __gnu_cxx
+
++#pragma GCC visibility pop
++
+ #endif
+
+--- gcc/libstdc++-v3/include/ext/mt_allocator.h.vis1~ 2005-10-31 21:15:57.000000000 +0100
++++ gcc/libstdc++-v3/include/ext/mt_allocator.h 2005-11-03 10:28:34.000000000 +0100
+@@ -34,6 +34,8 @@
+ #ifndef _MT_ALLOCATOR_H
+ #define _MT_ALLOCATOR_H 1
+
++#pragma GCC visibility push(default)
++
+ #include <new>
+ #include <cstdlib>
+ #include <bits/functexcept.h>
+@@ -731,4 +733,6 @@
+ #undef __thread_default
+ } // namespace __gnu_cxx
+
++#pragma GCC visibility pop
++
+ #endif
+--- gcc/libstdc++-v3/include/ext/new_allocator.h.vis1~ 2005-10-31 21:15:57.000000000 +0100
++++ gcc/libstdc++-v3/include/ext/new_allocator.h 2005-11-03 10:28:34.000000000 +0100
+@@ -1,6 +1,6 @@
+ // Allocator that wraps operator new -*- C++ -*-
+
+-// Copyright (C) 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
++// Copyright (C) 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
+ //
+ // This file is part of the GNU ISO C++ Library. This library is free
+ // software; you can redistribute it and/or modify it under the
+@@ -34,6 +34,8 @@
+ #ifndef _NEW_ALLOCATOR_H
+ #define _NEW_ALLOCATOR_H 1
+
++#pragma GCC visibility push(default)
++
+ #include <new>
+ #include <bits/functexcept.h>
+
+@@ -118,4 +120,6 @@
+ { return false; }
+ } // namespace __gnu_cxx
+
++#pragma GCC visibility pop
++
+ #endif
+--- gcc/libstdc++-v3/include/ext/numeric.vis1~ 2005-10-31 21:15:57.000000000 +0100
++++ gcc/libstdc++-v3/include/ext/numeric 2005-11-03 10:28:34.000000000 +0100
+@@ -1,6 +1,6 @@
+ // Numeric extensions -*- C++ -*-
+
+-// Copyright (C) 2002, 2004 Free Software Foundation, Inc.
++// Copyright (C) 2002, 2004, 2005 Free Software Foundation, Inc.
+ //
+ // This file is part of the GNU ISO C++ Library. This library is free
+ // software; you can redistribute it and/or modify it under the
+@@ -62,6 +62,7 @@
+ #define _EXT_NUMERIC 1
+
+ #pragma GCC system_header
++#pragma GCC visibility push(default)
+
+ #include <bits/concept_check.h>
+ #include <numeric>
+@@ -146,5 +147,7 @@
+ }
+ } // namespace __gnu_cxx
+
++#pragma GCC visibility pop
++
+ #endif
+
+--- gcc/libstdc++-v3/include/ext/pod_char_traits.h.vis1~ 2005-10-31 21:15:57.000000000 +0100
++++ gcc/libstdc++-v3/include/ext/pod_char_traits.h 2005-11-03 10:28:34.000000000 +0100
+@@ -37,6 +37,8 @@
+ #ifndef _POD_CHAR_TRAITS_H
+ #define _POD_CHAR_TRAITS_H 1
+
++#pragma GCC visibility push(default)
++
+ #include <string>
+
+ namespace __gnu_cxx
+@@ -182,4 +184,6 @@
+ };
+ }
+
++#pragma GCC visibility pop
++
+ #endif
+--- gcc/libstdc++-v3/include/ext/pool_allocator.h.vis1~ 2005-10-31 21:15:57.000000000 +0100
++++ gcc/libstdc++-v3/include/ext/pool_allocator.h 2005-11-03 10:28:34.000000000 +0100
+@@ -1,6 +1,6 @@
+ // Allocators -*- C++ -*-
+
+-// Copyright (C) 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
++// Copyright (C) 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
+ //
+ // This file is part of the GNU ISO C++ Library. This library is free
+ // software; you can redistribute it and/or modify it under the
+@@ -47,6 +47,8 @@
+ #ifndef _POOL_ALLOCATOR_H
+ #define _POOL_ALLOCATOR_H 1
+
++#pragma GCC visibility push(default)
++
+ #include <bits/c++config.h>
+ #include <cstdlib>
+ #include <new>
+@@ -252,4 +254,6 @@
+ }
+ } // namespace __gnu_cxx
+
++#pragma GCC visibility pop
++
+ #endif
+--- gcc/libstdc++-v3/include/ext/rb_tree.vis1~ 2005-10-31 21:15:57.000000000 +0100
++++ gcc/libstdc++-v3/include/ext/rb_tree 2005-11-03 10:28:34.000000000 +0100
+@@ -1,6 +1,6 @@
+ // rb_tree extension -*- C++ -*-
+
+-// Copyright (C) 2002, 2003, 2004 Free Software Foundation, Inc.
++// Copyright (C) 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
+ //
+ // This file is part of the GNU ISO C++ Library. This library is free
+ // software; you can redistribute it and/or modify it under the
+@@ -62,6 +62,7 @@
+ #define _RB_TREE 1
+
+ #pragma GCC system_header
++#pragma GCC visibility push(default)
+
+ #include <bits/stl_tree.h>
+
+@@ -94,4 +95,6 @@
+ };
+ } // namespace __gnu_cxx
+
++#pragma GCC visibility pop
++
+ #endif
+--- gcc/libstdc++-v3/include/ext/rope.vis1~ 2005-10-31 21:15:57.000000000 +0100
++++ gcc/libstdc++-v3/include/ext/rope 2005-11-03 10:28:34.000000000 +0100
+@@ -48,6 +48,8 @@
+ #ifndef _ROPE
+ #define _ROPE 1
+
++#pragma GCC visibility push(default)
++
+ #include <bits/stl_algobase.h>
+ #include <bits/stl_construct.h>
+ #include <bits/stl_uninitialized.h>
+@@ -2898,4 +2900,6 @@
+
+ # include <ext/ropeimpl.h>
+
++#pragma GCC visibility pop
++
+ #endif
+--- gcc/libstdc++-v3/include/ext/slist.vis1~ 2005-10-31 21:15:57.000000000 +0100
++++ gcc/libstdc++-v3/include/ext/slist 2005-11-03 10:28:34.000000000 +0100
+@@ -49,6 +49,8 @@
+ #ifndef _SLIST
+ #define _SLIST 1
+
++#pragma GCC visibility push(default)
++
+ #include <bits/stl_algobase.h>
+ #include <bits/allocator.h>
+ #include <bits/stl_construct.h>
+@@ -1076,4 +1078,7 @@
+ };
+
+ } // namespace std
++
++#pragma GCC visibility pop
++
+ #endif
+--- gcc/libstdc++-v3/include/ext/stdio_filebuf.h.vis1~ 2005-10-31 21:15:57.000000000 +0100
++++ gcc/libstdc++-v3/include/ext/stdio_filebuf.h 2005-11-03 10:28:34.000000000 +0100
+@@ -1,6 +1,6 @@
+ // File descriptor layer for filebuf -*- C++ -*-
+
+-// Copyright (C) 2002, 2003, 2004 Free Software Foundation, Inc.
++// Copyright (C) 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
+ //
+ // This file is part of the GNU ISO C++ Library. This library is free
+ // software; you can redistribute it and/or modify it under the
+@@ -35,6 +35,7 @@
+ #define _STDIO_FILEBUF_H 1
+
+ #pragma GCC system_header
++#pragma GCC visibility push(default)
+
+ #include <fstream>
+
+@@ -158,4 +159,6 @@
+ }
+ } // namespace __gnu_cxx
+
++#pragma GCC visibility pop
++
+ #endif
+--- gcc/libstdc++-v3/include/ext/stdio_sync_filebuf.h.vis1~ 2005-10-31 21:15:57.000000000 +0100
++++ gcc/libstdc++-v3/include/ext/stdio_sync_filebuf.h 2005-11-03 10:28:34.000000000 +0100
+@@ -1,6 +1,6 @@
+ // Iostreams wrapper for stdio FILE* -*- C++ -*-
+
+-// Copyright (C) 2003, 2004 Free Software Foundation, Inc.
++// Copyright (C) 2003, 2004, 2005 Free Software Foundation, Inc.
+ //
+ // This file is part of the GNU ISO C++ Library. This library is free
+ // software; you can redistribute it and/or modify it under the
+@@ -35,6 +35,7 @@
+ #define _STDIO_SYNC_FILEBUF_H 1
+
+ #pragma GCC system_header
++#pragma GCC visibility push(default)
+
+ #include <streambuf>
+ #include <unistd.h>
+@@ -279,4 +280,6 @@
+ #endif
+ } // namespace __gnu_cxx
+
++#pragma GCC visibility pop
++
+ #endif
+--- gcc/libstdc++-v3/include/debug/bitset.vis1~ 2005-10-31 21:16:05.000000000 +0100
++++ gcc/libstdc++-v3/include/debug/bitset 2005-11-03 10:27:12.000000000 +0100
+@@ -31,6 +31,8 @@
+ #ifndef _GLIBCXX_DEBUG_BITSET
+ #define _GLIBCXX_DEBUG_BITSET
+
++#pragma GCC visibility push(default)
++
+ #include <bitset>
+ #include <debug/safe_sequence.h>
+ #include <debug/safe_iterator.h>
+@@ -318,4 +320,6 @@
+ { return __os << __x._M_base(); }
+ } // namespace __gnu_debug_def
+
++#pragma GCC visibility pop
++
+ #endif
+--- gcc/libstdc++-v3/include/debug/deque.vis1~ 2005-10-31 21:16:05.000000000 +0100
++++ gcc/libstdc++-v3/include/debug/deque 2005-11-03 10:28:26.000000000 +0100
+@@ -31,6 +31,8 @@
+ #ifndef _GLIBCXX_DEBUG_DEQUE
+ #define _GLIBCXX_DEBUG_DEQUE 1
+
++#pragma GCC visibility push(default)
++
+ #include <deque>
+ #include <debug/safe_sequence.h>
+ #include <debug/safe_iterator.h>
+@@ -383,4 +385,6 @@
+ { __lhs.swap(__rhs); }
+ } // namespace __gnu_debug_def
+
++#pragma GCC visibility pop
++
+ #endif
+--- gcc/libstdc++-v3/include/debug/hash_map.vis1~ 2005-10-31 21:16:05.000000000 +0100
++++ gcc/libstdc++-v3/include/debug/hash_map 2005-11-03 10:31:55.000000000 +0100
+@@ -31,8 +31,12 @@
+ #ifndef _GLIBCXX_DEBUG_HASH_MAP
+ #define _GLIBCXX_DEBUG_HASH_MAP 1
+
++#pragma GCC visibility push(default)
++
+ #include <ext/hash_map>
+ #include <debug/hash_map.h>
+ #include <debug/hash_multimap.h>
+
++#pragma GCC visibility pop
++
+ #endif
+--- gcc/libstdc++-v3/include/debug/hash_set.vis1~ 2005-10-31 21:16:05.000000000 +0100
++++ gcc/libstdc++-v3/include/debug/hash_set 2005-11-03 10:32:22.000000000 +0100
+@@ -31,8 +31,12 @@
+ #ifndef _GLIBCXX_DEBUG_HASH_SET
+ #define _GLIBCXX_DEBUG_HASH_SET 1
+
++#pragma GCC visibility push(default)
++
+ #include <ext/hash_set>
+ #include <debug/hash_set.h>
+ #include <debug/hash_multiset.h>
+
++#pragma GCC visibility pop
++
+ #endif
+--- gcc/libstdc++-v3/include/debug/list.vis1~ 2005-10-31 21:16:05.000000000 +0100
++++ gcc/libstdc++-v3/include/debug/list 2005-11-03 10:28:28.000000000 +0100
+@@ -31,6 +31,8 @@
+ #ifndef _GLIBCXX_DEBUG_LIST
+ #define _GLIBCXX_DEBUG_LIST 1
+
++#pragma GCC visibility push(default)
++
+ #include <list>
+ #include <bits/stl_algo.h>
+ #include <debug/safe_sequence.h>
+@@ -502,4 +504,6 @@
+ { __lhs.swap(__rhs); }
+ } // namespace __gnu_debug_def
+
++#pragma GCC visibility pop
++
+ #endif
+--- gcc/libstdc++-v3/include/debug/map.vis1~ 2005-10-31 21:16:05.000000000 +0100
++++ gcc/libstdc++-v3/include/debug/map 2005-11-03 10:28:28.000000000 +0100
+@@ -1,6 +1,6 @@
+ // Debugging map/multimap implementation -*- C++ -*-
+
+-// Copyright (C) 2003
++// Copyright (C) 2003, 2005
+ // Free Software Foundation, Inc.
+ //
+ // This file is part of the GNU ISO C++ Library. This library is free
+@@ -31,8 +31,12 @@
+ #ifndef _GLIBCXX_DEBUG_MAP
+ #define _GLIBCXX_DEBUG_MAP 1
+
++#pragma GCC visibility push(default)
++
+ #include <map>
+ #include <debug/map.h>
+ #include <debug/multimap.h>
+
++#pragma GCC visibility pop
++
+ #endif
+--- gcc/libstdc++-v3/include/debug/set.vis1~ 2005-10-31 21:16:05.000000000 +0100
++++ gcc/libstdc++-v3/include/debug/set 2005-11-03 10:28:28.000000000 +0100
+@@ -1,6 +1,6 @@
+ // Debugging set/multiset implementation -*- C++ -*-
+
+-// Copyright (C) 2003
++// Copyright (C) 2003, 2005
+ // Free Software Foundation, Inc.
+ //
+ // This file is part of the GNU ISO C++ Library. This library is free
+@@ -31,8 +31,12 @@
+ #ifndef _GLIBCXX_DEBUG_SET
+ #define _GLIBCXX_DEBUG_SET 1
+
++#pragma GCC visibility push(default)
++
+ #include <set>
+ #include <debug/set.h>
+ #include <debug/multiset.h>
+
++#pragma GCC visibility pop
++
+ #endif
+--- gcc/libstdc++-v3/include/debug/string.vis1~ 2005-10-31 21:16:05.000000000 +0100
++++ gcc/libstdc++-v3/include/debug/string 2005-11-03 10:28:30.000000000 +0100
+@@ -31,6 +31,8 @@
+ #ifndef _GLIBCXX_DEBUG_STRING
+ #define _GLIBCXX_DEBUG_STRING 1
+
++#pragma GCC visibility push(default)
++
+ #include <string>
+ #include <debug/safe_sequence.h>
+ #include <debug/safe_iterator.h>
+@@ -1015,4 +1017,6 @@
+
+ } // namespace __gnu_debug
+
++#pragma GCC visibility pop
++
+ #endif
+--- gcc/libstdc++-v3/include/debug/vector.vis1~ 2005-10-31 21:16:05.000000000 +0100
++++ gcc/libstdc++-v3/include/debug/vector 2005-11-03 10:28:32.000000000 +0100
+@@ -31,6 +31,8 @@
+ #ifndef _GLIBCXX_DEBUG_VECTOR
+ #define _GLIBCXX_DEBUG_VECTOR 1
+
++#pragma GCC visibility push(default)
++
+ #include <vector>
+ #include <utility>
+ #include <debug/safe_sequence.h>
+@@ -413,4 +415,6 @@
+ { __lhs.swap(__rhs); }
+ } // namespace __gnu_debug_def
+
++#pragma GCC visibility pop
++
+ #endif
+--- gcc/libstdc++-v3/include/tr1/array.vis1~ 2005-10-31 21:16:08.000000000 +0100
++++ gcc/libstdc++-v3/include/tr1/array 2005-11-03 10:28:38.000000000 +0100
+@@ -34,6 +34,8 @@
+ #ifndef _ARRAY
+ #define _ARRAY 1
+
++#pragma GCC visibility push(default)
++
+ #include <new>
+ #include <iterator>
+ #include <algorithm>
+@@ -231,4 +233,6 @@
+ } // namespace std::tr1
+ }
+
++#pragma GCC visibility pop
++
+ #endif
+--- gcc/libstdc++-v3/include/tr1/functional.vis1~ 2005-10-31 21:16:08.000000000 +0100
++++ gcc/libstdc++-v3/include/tr1/functional 2005-11-03 10:28:38.000000000 +0100
+@@ -36,6 +36,8 @@
+
+ #pragma GCC system_header
+
++#pragma GCC visibility push(default)
++
+ #include "../functional"
+ #include <typeinfo>
+ #include <tr1/type_traits>
+@@ -1270,4 +1272,6 @@
+ }
+ }
+
++#pragma GCC visibility pop
++
+ #endif
+--- gcc/libstdc++-v3/include/tr1/memory.vis1~ 2005-10-31 21:16:08.000000000 +0100
++++ gcc/libstdc++-v3/include/tr1/memory 2005-11-03 10:28:38.000000000 +0100
+@@ -30,6 +30,8 @@
+ #ifndef _TR1_MEMORY
+ #define _TR1_MEMORY 1
+
++#pragma GCC visibility push(default)
++
+ #include "../memory"
+ #include <functional> // std::less
+ #include <exception> // std::exception
+@@ -48,4 +50,6 @@
+
+ #include <tr1/boost_shared_ptr.h>
+
++#pragma GCC visibility pop
++
+ #endif
+--- gcc/libstdc++-v3/include/tr1/tuple.vis1~ 2005-10-31 21:16:08.000000000 +0100
++++ gcc/libstdc++-v3/include/tr1/tuple 2005-11-03 10:28:38.000000000 +0100
+@@ -36,6 +36,8 @@
+ #ifndef _TUPLE
+ #define _TUPLE 1
+
++#pragma GCC visibility push(default)
++
+ #include <tr1/utility>
+ #include <tr1/ref_fwd.h>
+
+@@ -272,4 +274,6 @@
+
+ #include <tr1/functional>
+
++#pragma GCC visibility pop
++
+ #endif
+--- gcc/libstdc++-v3/include/tr1/type_traits.vis1~ 2005-10-31 21:16:08.000000000 +0100
++++ gcc/libstdc++-v3/include/tr1/type_traits 2005-11-03 10:28:38.000000000 +0100
+@@ -34,6 +34,8 @@
+ #ifndef _TYPE_TRAITS
+ #define _TYPE_TRAITS 1
+
++#pragma GCC visibility push(default)
++
+ #include <bits/c++config.h>
+ #include <tr1/type_traits_fwd.h>
+
+@@ -703,4 +705,6 @@
+ }
+ }
+
++#pragma GCC visibility pop
++
+ #endif
+--- gcc/libstdc++-v3/include/tr1/unordered_map.vis1~ 2005-10-31 21:16:08.000000000 +0100
++++ gcc/libstdc++-v3/include/tr1/unordered_map 2005-11-03 10:28:38.000000000 +0100
+@@ -34,6 +34,8 @@
+ #ifndef GNU_LIBSTDCXX_TR1_UNORDERED_MAP_
+ #define GNU_LIBSTDCXX_TR1_UNORDERED_MAP_
+
++#pragma GCC visibility push(default)
++
+ #include <tr1/hashtable>
+ #include <tr1/functional>
+ #include <tr1/functional>
+@@ -167,4 +169,6 @@
+ }
+ }
+
++#pragma GCC visibility pop
++
+ #endif /* GNU_LIBSTDCXX_TR1_UNORDERED_MAP_ */
+--- gcc/libstdc++-v3/include/tr1/unordered_set.vis1~ 2005-10-31 21:16:08.000000000 +0100
++++ gcc/libstdc++-v3/include/tr1/unordered_set 2005-11-03 10:28:38.000000000 +0100
+@@ -34,6 +34,8 @@
+ #ifndef GNU_LIBSTDCXX_TR1_UNORDERED_SET_
+ #define GNU_LIBSTDCXX_TR1_UNORDERED_SET_
+
++#pragma GCC visibility push(default)
++
+ #include <tr1/hashtable>
+ #include <tr1/functional>
+ #include <memory>
+@@ -162,4 +164,6 @@
+ }
+ }
+
++#pragma GCC visibility pop
++
+ #endif /* GNU_LIBSTDCXX_TR1_UNORDERED_SET_ */
+--- gcc/libstdc++-v3/include/tr1/utility.vis1~ 2005-10-31 21:16:08.000000000 +0100
++++ gcc/libstdc++-v3/include/tr1/utility 2005-11-03 10:28:38.000000000 +0100
+@@ -34,6 +34,8 @@
+ #ifndef _TR1_UTILITY
+ #define _TR1_UTILITY 1
+
++#pragma GCC visibility push(default)
++
+ #include "../utility"
+
+ namespace std
+@@ -93,6 +95,8 @@
+ get(const pair<_Tp1, _Tp2>& __in)
+ { return __pair_get<_Int>::__const_get(__in); }
+ }
+-}
++}
++
++#pragma GCC visibility pop
+
+ #endif
+--- gcc/libstdc++-v3/include/std/std_algorithm.h.vis1~ 2005-10-31 21:16:10.000000000 +0100
++++ gcc/libstdc++-v3/include/std/std_algorithm.h 2005-11-03 10:28:34.000000000 +0100
+@@ -1,6 +1,6 @@
+ // <algorithm> -*- C++ -*-
+
+-// Copyright (C) 2001, 2002 Free Software Foundation, Inc.
++// Copyright (C) 2001, 2002, 2005 Free Software Foundation, Inc.
+ //
+ // This file is part of the GNU ISO C++ Library. This library is free
+ // software; you can redistribute it and/or modify it under the
+@@ -61,10 +61,13 @@
+ #define _GLIBCXX_ALGORITHM 1
+
+ #pragma GCC system_header
++#pragma GCC visibility push(default)
+
+ #include <bits/stl_algobase.h>
+ #include <bits/stl_construct.h>
+ #include <bits/stl_uninitialized.h>
+ #include <bits/stl_algo.h>
+
++#pragma GCC visibility pop
++
+ #endif /* _GLIBCXX_ALGORITHM */
+--- gcc/libstdc++-v3/include/std/std_bitset.h.vis1~ 2005-10-31 21:16:10.000000000 +0100
++++ gcc/libstdc++-v3/include/std/std_bitset.h 2005-11-03 10:28:34.000000000 +0100
+@@ -48,6 +48,7 @@
+ #define _GLIBCXX_BITSET 1
+
+ #pragma GCC system_header
++#pragma GCC visibility push(default)
+
+ #include <cstddef> // For size_t
+ #include <cstring> // For memset
+@@ -1300,4 +1301,6 @@
+ # include <debug/bitset>
+ #endif
+
++#pragma GCC visibility pop
++
+ #endif /* _GLIBCXX_BITSET */
+--- gcc/libstdc++-v3/include/std/std_complex.h.vis1~ 2005-10-31 21:16:10.000000000 +0100
++++ gcc/libstdc++-v3/include/std/std_complex.h 2005-11-03 10:28:34.000000000 +0100
+@@ -43,6 +43,7 @@
+ #define _GLIBCXX_COMPLEX 1
+
+ #pragma GCC system_header
++#pragma GCC visibility push(default)
+
+ #include <bits/c++config.h>
+ #include <bits/cpp_type_traits.h>
+@@ -1485,4 +1486,6 @@
+ : _M_value(__z.__rep()) { }
+ } // namespace std
+
++#pragma GCC visibility pop
++
+ #endif /* _GLIBCXX_COMPLEX */
+--- gcc/libstdc++-v3/include/std/std_deque.h.vis1~ 2005-10-31 21:16:10.000000000 +0100
++++ gcc/libstdc++-v3/include/std/std_deque.h 2005-11-03 10:28:34.000000000 +0100
+@@ -1,6 +1,6 @@
+ // <deque> -*- C++ -*-
+
+-// Copyright (C) 2001, 2002, 2003 Free Software Foundation, Inc.
++// Copyright (C) 2001, 2002, 2003, 2005 Free Software Foundation, Inc.
+ //
+ // This file is part of the GNU ISO C++ Library. This library is free
+ // software; you can redistribute it and/or modify it under the
+@@ -61,6 +61,7 @@
+ #define _GLIBCXX_DEQUE 1
+
+ #pragma GCC system_header
++#pragma GCC visibility push(default)
+
+ #include <bits/functexcept.h>
+ #include <bits/stl_algobase.h>
+@@ -77,4 +78,6 @@
+ # include <debug/deque>
+ #endif
+
++#pragma GCC visibility pop
++
+ #endif /* _GLIBCXX_DEQUE */
+--- gcc/libstdc++-v3/include/std/std_fstream.h.vis1~ 2005-10-31 21:16:10.000000000 +0100
++++ gcc/libstdc++-v3/include/std/std_fstream.h 2005-11-03 10:28:34.000000000 +0100
+@@ -40,6 +40,7 @@
+ #define _GLIBCXX_FSTREAM 1
+
+ #pragma GCC system_header
++#pragma GCC visibility push(default)
+
+ #include <istream>
+ #include <ostream>
+@@ -782,4 +783,6 @@
+ # include <bits/fstream.tcc>
+ #endif
+
++#pragma GCC visibility pop
++
+ #endif /* _GLIBCXX_FSTREAM */
+--- gcc/libstdc++-v3/include/std/std_functional.h.vis1~ 2005-10-31 21:16:10.000000000 +0100
++++ gcc/libstdc++-v3/include/std/std_functional.h 2005-11-03 10:28:34.000000000 +0100
+@@ -1,6 +1,6 @@
+ // <functional> -*- C++ -*-
+
+-// Copyright (C) 2001, 2002 Free Software Foundation, Inc.
++// Copyright (C) 2001, 2002, 2005 Free Software Foundation, Inc.
+ //
+ // This file is part of the GNU ISO C++ Library. This library is free
+ // software; you can redistribute it and/or modify it under the
+@@ -49,9 +49,12 @@
+ #define _GLIBCXX_FUNCTIONAL 1
+
+ #pragma GCC system_header
++#pragma GCC visibility push(default)
+
+ #include <bits/c++config.h>
+ #include <cstddef>
+ #include <bits/stl_function.h>
+
++#pragma GCC visibility pop
++
+ #endif /* _GLIBCXX_FUNCTIONAL */
+--- gcc/libstdc++-v3/include/std/std_iomanip.h.vis1~ 2005-10-31 21:16:10.000000000 +0100
++++ gcc/libstdc++-v3/include/std/std_iomanip.h 2005-11-03 10:28:34.000000000 +0100
+@@ -1,6 +1,6 @@
+ // Standard stream manipulators -*- C++ -*-
+
+-// Copyright (C) 1997, 1998, 1999, 2001, 2002, 2003
++// Copyright (C) 1997, 1998, 1999, 2001, 2002, 2003, 2005
+ // Free Software Foundation, Inc.
+ //
+ // This file is part of the GNU ISO C++ Library. This library is free
+@@ -40,6 +40,7 @@
+ #define _GLIBCXX_IOMANIP 1
+
+ #pragma GCC system_header
++#pragma GCC visibility push(default)
+
+ #include <bits/c++config.h>
+ #include <istream>
+@@ -296,4 +297,6 @@
+ #endif
+ } // namespace std
+
++#pragma GCC visibility pop
++
+ #endif /* _GLIBCXX_IOMANIP */
+--- gcc/libstdc++-v3/include/std/std_ios.h.vis1~ 2005-10-31 21:16:10.000000000 +0100
++++ gcc/libstdc++-v3/include/std/std_ios.h 2005-11-03 10:28:34.000000000 +0100
+@@ -1,6 +1,7 @@
+ // Iostreams base classes -*- C++ -*-
+
+-// Copyright (C) 1997, 1998, 1999, 2001, 2002 Free Software Foundation, Inc.
++// Copyright (C) 1997, 1998, 1999, 2001, 2002, 2005
++// Free Software Foundation, Inc.
+ //
+ // This file is part of the GNU ISO C++ Library. This library is free
+ // software; you can redistribute it and/or modify it under the
+@@ -39,6 +40,7 @@
+ #define _GLIBCXX_IOS 1
+
+ #pragma GCC system_header
++#pragma GCC visibility push(default)
+
+ #include <iosfwd>
+ #include <exception> // For ios_base::failure
+@@ -49,4 +51,6 @@
+ #include <streambuf>
+ #include <bits/basic_ios.h>
+
++#pragma GCC visibility pop
++
+ #endif /* _GLIBCXX_IOS */
+--- gcc/libstdc++-v3/include/std/std_iosfwd.h.vis1~ 2005-10-31 21:16:10.000000000 +0100
++++ gcc/libstdc++-v3/include/std/std_iosfwd.h 2005-11-03 10:28:34.000000000 +0100
+@@ -1,6 +1,6 @@
+ // Forwarding declarations -*- C++ -*-
+
+-// Copyright (C) 1997, 1998, 1999, 2001, 2002, 2003
++// Copyright (C) 1997, 1998, 1999, 2001, 2002, 2003, 2005
+ // Free Software Foundation, Inc.
+ //
+ // This file is part of the GNU ISO C++ Library. This library is free
+@@ -40,6 +40,7 @@
+ #define _GLIBCXX_IOSFWD 1
+
+ #pragma GCC system_header
++#pragma GCC visibility push(default)
+
+ #include <bits/c++config.h>
+ #include <bits/c++locale.h>
+@@ -164,4 +165,6 @@
+ /** @} */
+ } // namespace std
+
++#pragma GCC visibility pop
++
+ #endif /* _GLIBCXX_IOSFWD */
+--- gcc/libstdc++-v3/include/std/std_iostream.h.vis1~ 2005-10-31 21:16:10.000000000 +0100
++++ gcc/libstdc++-v3/include/std/std_iostream.h 2005-11-03 10:28:34.000000000 +0100
+@@ -1,6 +1,7 @@
+ // Standard iostream objects -*- C++ -*-
+
+-// Copyright (C) 1997, 1998, 1999, 2001, 2002 Free Software Foundation, Inc.
++// Copyright (C) 1997, 1998, 1999, 2001, 2002, 2005
++// Free Software Foundation, Inc.
+ //
+ // This file is part of the GNU ISO C++ Library. This library is free
+ // software; you can redistribute it and/or modify it under the
+@@ -39,6 +40,7 @@
+ #define _GLIBCXX_IOSTREAM 1
+
+ #pragma GCC system_header
++#pragma GCC visibility push(default)
+
+ #include <bits/c++config.h>
+ #include <ostream>
+@@ -76,4 +78,6 @@
+ static ios_base::Init __ioinit;
+ } // namespace std
+
++#pragma GCC visibility pop
++
+ #endif /* _GLIBCXX_IOSTREAM */
+--- gcc/libstdc++-v3/include/std/std_istream.h.vis1~ 2005-10-31 21:16:10.000000000 +0100
++++ gcc/libstdc++-v3/include/std/std_istream.h 2005-11-03 10:28:35.000000000 +0100
+@@ -40,6 +40,7 @@
+ #define _GLIBCXX_ISTREAM 1
+
+ #pragma GCC system_header
++#pragma GCC visibility push(default)
+
+ #include <ios>
+ #include <limits> // For numeric_limits
+@@ -819,4 +820,6 @@
+ # include <bits/istream.tcc>
+ #endif
+
++#pragma GCC visibility pop
++
+ #endif /* _GLIBCXX_ISTREAM */
+--- gcc/libstdc++-v3/include/std/std_iterator.h.vis1~ 2005-10-31 21:16:10.000000000 +0100
++++ gcc/libstdc++-v3/include/std/std_iterator.h 2005-11-03 10:28:35.000000000 +0100
+@@ -1,6 +1,6 @@
+ // <iterator> -*- C++ -*-
+
+-// Copyright (C) 2001, 2002 Free Software Foundation, Inc.
++// Copyright (C) 2001, 2002, 2005 Free Software Foundation, Inc.
+ //
+ // This file is part of the GNU ISO C++ Library. This library is free
+ // software; you can redistribute it and/or modify it under the
+@@ -61,6 +61,7 @@
+ #define _GLIBCXX_ITERATOR 1
+
+ #pragma GCC system_header
++#pragma GCC visibility push(default)
+
+ #include <bits/c++config.h>
+ #include <cstddef>
+@@ -72,4 +73,6 @@
+ #include <bits/stream_iterator.h>
+ #include <bits/streambuf_iterator.h>
+
++#pragma GCC visibility pop
++
+ #endif /* _GLIBCXX_ITERATOR */
+--- gcc/libstdc++-v3/include/std/std_limits.h.vis1~ 2005-10-31 21:16:10.000000000 +0100
++++ gcc/libstdc++-v3/include/std/std_limits.h 2005-11-03 10:28:35.000000000 +0100
+@@ -1,6 +1,7 @@
+ // The template and inlines for the -*- C++ -*- numeric_limits classes.
+
+-// Copyright (C) 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
++// Copyright (C) 1999, 2000, 2001, 2002, 2003, 2005
++// Free Software Foundation, Inc.
+ //
+ // This file is part of the GNU ISO C++ Library. This library is free
+ // software; you can redistribute it and/or modify it under the
+@@ -43,6 +44,7 @@
+ #define _GLIBCXX_NUMERIC_LIMITS 1
+
+ #pragma GCC system_header
++#pragma GCC visibility push(default)
+
+ #include <bits/c++config.h>
+
+@@ -1156,4 +1158,6 @@
+ #undef __glibcxx_digits
+ #undef __glibcxx_digits10
+
++#pragma GCC visibility pop
++
+ #endif // _GLIBCXX_NUMERIC_LIMITS
+--- gcc/libstdc++-v3/include/std/std_list.h.vis1~ 2005-10-31 21:16:10.000000000 +0100
++++ gcc/libstdc++-v3/include/std/std_list.h 2005-11-03 10:28:35.000000000 +0100
+@@ -1,6 +1,6 @@
+ // <list> -*- C++ -*-
+
+-// Copyright (C) 2001, 2002, 2003 Free Software Foundation, Inc.
++// Copyright (C) 2001, 2002, 2003, 2005 Free Software Foundation, Inc.
+ //
+ // This file is part of the GNU ISO C++ Library. This library is free
+ // software; you can redistribute it and/or modify it under the
+@@ -61,6 +61,7 @@
+ #define _GLIBCXX_LIST 1
+
+ #pragma GCC system_header
++#pragma GCC visibility push(default)
+
+ #include <bits/functexcept.h>
+ #include <bits/stl_algobase.h>
+@@ -77,5 +78,7 @@
+ # include <debug/list>
+ #endif
+
++#pragma GCC visibility pop
++
+ #endif /* _GLIBCXX_LIST */
+
+--- gcc/libstdc++-v3/include/std/std_locale.h.vis1~ 2005-10-31 21:16:10.000000000 +0100
++++ gcc/libstdc++-v3/include/std/std_locale.h 2005-11-03 10:28:35.000000000 +0100
+@@ -1,6 +1,7 @@
+ // Locale support -*- C++ -*-
+
+-// Copyright (C) 1997, 1998, 1999, 2002, 2003 Free Software Foundation, Inc.
++// Copyright (C) 1997, 1998, 1999, 2002, 2003, 2005
++// Free Software Foundation, Inc.
+ //
+ // This file is part of the GNU ISO C++ Library. This library is free
+ // software; you can redistribute it and/or modify it under the
+@@ -39,10 +40,13 @@
+ #define _GLIBCXX_LOCALE 1
+
+ #pragma GCC system_header
++#pragma GCC visibility push(default)
+
+ #include <bits/localefwd.h>
+ #include <bits/locale_classes.h>
+ #include <bits/locale_facets.h>
+ #include <bits/locale_facets.tcc>
+
++#pragma GCC visibility pop
++
+ #endif /* _GLIBCXX_LOCALE */
+--- gcc/libstdc++-v3/include/std/std_map.h.vis1~ 2005-10-31 21:16:10.000000000 +0100
++++ gcc/libstdc++-v3/include/std/std_map.h 2005-11-03 10:28:35.000000000 +0100
+@@ -1,6 +1,6 @@
+ // <map> -*- C++ -*-
+
+-// Copyright (C) 2001, 2002 Free Software Foundation, Inc.
++// Copyright (C) 2001, 2002, 2005 Free Software Foundation, Inc.
+ //
+ // This file is part of the GNU ISO C++ Library. This library is free
+ // software; you can redistribute it and/or modify it under the
+@@ -61,6 +61,7 @@
+ #define _GLIBCXX_MAP 1
+
+ #pragma GCC system_header
++#pragma GCC visibility push(default)
+
+ #include <bits/stl_tree.h>
+ #include <bits/stl_map.h>
+@@ -70,4 +71,6 @@
+ # include <debug/map>
+ #endif
+
++#pragma GCC visibility pop
++
+ #endif /* _GLIBCXX_MAP */
+--- gcc/libstdc++-v3/include/std/std_memory.h.vis1~ 2005-10-31 21:16:10.000000000 +0100
++++ gcc/libstdc++-v3/include/std/std_memory.h 2005-11-03 10:28:35.000000000 +0100
+@@ -1,6 +1,6 @@
+ // <memory> -*- C++ -*-
+
+-// Copyright (C) 2001, 2002, 2004 Free Software Foundation, Inc.
++// Copyright (C) 2001, 2002, 2004, 2005 Free Software Foundation, Inc.
+ //
+ // This file is part of the GNU ISO C++ Library. This library is free
+ // software; you can redistribute it and/or modify it under the
+@@ -49,6 +49,7 @@
+ #define _GLIBCXX_MEMORY 1
+
+ #pragma GCC system_header
++#pragma GCC visibility push(default)
+
+ #include <bits/stl_algobase.h>
+ #include <bits/allocator.h>
+@@ -370,4 +371,6 @@
+ };
+ } // namespace std
+
++#pragma GCC visibility pop
++
+ #endif /* _GLIBCXX_MEMORY */
+--- gcc/libstdc++-v3/include/std/std_numeric.h.vis1~ 2005-10-31 21:16:10.000000000 +0100
++++ gcc/libstdc++-v3/include/std/std_numeric.h 2005-11-03 10:28:35.000000000 +0100
+@@ -1,6 +1,6 @@
+ // <numeric> -*- C++ -*-
+
+-// Copyright (C) 2001, 2002 Free Software Foundation, Inc.
++// Copyright (C) 2001, 2002, 2005 Free Software Foundation, Inc.
+ //
+ // This file is part of the GNU ISO C++ Library. This library is free
+ // software; you can redistribute it and/or modify it under the
+@@ -61,6 +61,7 @@
+ #define _GLIBCXX_NUMERIC 1
+
+ #pragma GCC system_header
++#pragma GCC visibility push(default)
+
+ #include <bits/c++config.h>
+ #include <cstddef>
+@@ -68,4 +69,6 @@
+ #include <bits/stl_function.h>
+ #include <bits/stl_numeric.h>
+
++#pragma GCC visibility pop
++
+ #endif /* _GLIBCXX_NUMERIC */
+--- gcc/libstdc++-v3/include/std/std_ostream.h.vis1~ 2005-10-31 21:16:10.000000000 +0100
++++ gcc/libstdc++-v3/include/std/std_ostream.h 2005-11-03 10:28:35.000000000 +0100
+@@ -1,6 +1,6 @@
+ // Output streams -*- C++ -*-
+
+-// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003
++// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2005
+ // Free Software Foundation, Inc.
+ //
+ // This file is part of the GNU ISO C++ Library. This library is free
+@@ -40,6 +40,7 @@
+ #define _GLIBCXX_OSTREAM 1
+
+ #pragma GCC system_header
++#pragma GCC visibility push(default)
+
+ #include <ios>
+
+@@ -525,4 +526,6 @@
+ # include <bits/ostream.tcc>
+ #endif
+
++#pragma GCC visibility pop
++
+ #endif /* _GLIBCXX_OSTREAM */
+--- gcc/libstdc++-v3/include/std/std_queue.h.vis1~ 2005-10-31 21:16:10.000000000 +0100
++++ gcc/libstdc++-v3/include/std/std_queue.h 2005-11-03 10:28:35.000000000 +0100
+@@ -1,6 +1,6 @@
+ // <queue> -*- C++ -*-
+
+-// Copyright (C) 2001, 2002, 2003 Free Software Foundation, Inc.
++// Copyright (C) 2001, 2002, 2003, 2005 Free Software Foundation, Inc.
+ //
+ // This file is part of the GNU ISO C++ Library. This library is free
+ // software; you can redistribute it and/or modify it under the
+@@ -61,6 +61,7 @@
+ #define _GLIBCXX_QUEUE 1
+
+ #pragma GCC system_header
++#pragma GCC visibility push(default)
+
+ #include <bits/c++config.h>
+ #include <bits/functexcept.h>
+@@ -74,4 +75,6 @@
+ #include <vector>
+ #include <bits/stl_queue.h>
+
++#pragma GCC visibility pop
++
+ #endif /* _GLIBCXX_QUEUE */
+--- gcc/libstdc++-v3/include/std/std_set.h.vis1~ 2005-10-31 21:16:10.000000000 +0100
++++ gcc/libstdc++-v3/include/std/std_set.h 2005-11-03 10:28:35.000000000 +0100
+@@ -1,6 +1,6 @@
+ // <set> -*- C++ -*-
+
+-// Copyright (C) 2001, 2002 Free Software Foundation, Inc.
++// Copyright (C) 2001, 2002, 2005 Free Software Foundation, Inc.
+ //
+ // This file is part of the GNU ISO C++ Library. This library is free
+ // software; you can redistribute it and/or modify it under the
+@@ -61,7 +61,8 @@
+ #define _GLIBCXX_SET 1
+
+ #pragma GCC system_header
+-
++#pragma GCC visibility push(default)
++
+ #include <bits/stl_tree.h>
+ #include <bits/stl_set.h>
+ #include <bits/stl_multiset.h>
+@@ -70,4 +71,6 @@
+ # include <debug/set>
+ #endif
+
++#pragma GCC visibility pop
++
+ #endif /* _GLIBCXX_SET */
+--- gcc/libstdc++-v3/include/std/std_sstream.h.vis1~ 2005-10-31 21:16:10.000000000 +0100
++++ gcc/libstdc++-v3/include/std/std_sstream.h 2005-11-03 10:28:36.000000000 +0100
+@@ -40,6 +40,7 @@
+ #define _GLIBCXX_SSTREAM 1
+
+ #pragma GCC system_header
++#pragma GCC visibility push(default)
+
+ #include <istream>
+ #include <ostream>
+@@ -614,4 +615,6 @@
+ # include <bits/sstream.tcc>
+ #endif
+
++#pragma GCC visibility pop
++
+ #endif /* _GLIBCXX_SSTREAM */
+--- gcc/libstdc++-v3/include/std/std_stack.h.vis1~ 2005-10-31 21:16:10.000000000 +0100
++++ gcc/libstdc++-v3/include/std/std_stack.h 2005-11-03 10:28:36.000000000 +0100
+@@ -1,6 +1,6 @@
+ // <stack> -*- C++ -*-
+
+-// Copyright (C) 2001, 2002, 2003 Free Software Foundation, Inc.
++// Copyright (C) 2001, 2002, 2003, 2005 Free Software Foundation, Inc.
+ //
+ // This file is part of the GNU ISO C++ Library. This library is free
+ // software; you can redistribute it and/or modify it under the
+@@ -61,6 +61,7 @@
+ #define _GLIBCXX_STACK 1
+
+ #pragma GCC system_header
++#pragma GCC visibility push(default)
+
+ #include <bits/stl_algobase.h>
+ #include <bits/allocator.h>
+@@ -69,4 +70,6 @@
+ #include <deque>
+ #include <bits/stl_stack.h>
+
++#pragma GCC visibility pop
++
+ #endif /* _GLIBCXX_STACK */
+--- gcc/libstdc++-v3/include/std/std_stdexcept.h.vis1~ 2005-10-31 21:16:10.000000000 +0100
++++ gcc/libstdc++-v3/include/std/std_stdexcept.h 2005-11-03 10:28:36.000000000 +0100
+@@ -1,6 +1,6 @@
+ // Standard exception classes -*- C++ -*-
+
+-// Copyright (C) 2001, 2002 Free Software Foundation, Inc.
++// Copyright (C) 2001, 2002, 2005 Free Software Foundation, Inc.
+ //
+ // This file is part of the GNU ISO C++ Library. This library is free
+ // software; you can redistribute it and/or modify it under the
+@@ -39,6 +39,7 @@
+ #define _GLIBCXX_STDEXCEPT 1
+
+ #pragma GCC system_header
++#pragma GCC visibility push(default)
+
+ #include <exception>
+ #include <string>
+@@ -144,4 +145,6 @@
+ };
+ } // namespace std
+
++#pragma GCC visibility pop
++
+ #endif /* _GLIBCXX_STDEXCEPT */
+--- gcc/libstdc++-v3/include/std/std_streambuf.h.vis1~ 2005-10-31 21:16:10.000000000 +0100
++++ gcc/libstdc++-v3/include/std/std_streambuf.h 2005-11-03 10:28:37.000000000 +0100
+@@ -40,6 +40,7 @@
+ #define _GLIBXX_STREAMBUF 1
+
+ #pragma GCC system_header
++#pragma GCC visibility push(default)
+
+ #include <bits/c++config.h>
+ #include <iosfwd>
+@@ -806,4 +807,6 @@
+ # include <bits/streambuf.tcc>
+ #endif
+
++#pragma GCC visibility pop
++
+ #endif /* _GLIBCXX_STREAMBUF */
+--- gcc/libstdc++-v3/include/std/std_string.h.vis1~ 2005-10-31 21:16:10.000000000 +0100
++++ gcc/libstdc++-v3/include/std/std_string.h 2005-11-03 10:28:37.000000000 +0100
+@@ -40,6 +40,7 @@
+ #define _GLIBCXX_STRING 1
+
+ #pragma GCC system_header
++#pragma GCC visibility push(default)
+
+ #include <bits/c++config.h>
+ #include <bits/stringfwd.h>
+@@ -56,4 +57,6 @@
+ # include <bits/basic_string.tcc>
+ #endif
+
++#pragma GCC visibility pop
++
+ #endif /* _GLIBCXX_STRING */
+--- gcc/libstdc++-v3/include/std/std_utility.h.vis1~ 2005-10-31 21:16:10.000000000 +0100
++++ gcc/libstdc++-v3/include/std/std_utility.h 2005-11-03 10:28:37.000000000 +0100
+@@ -1,6 +1,6 @@
+ // <utility> -*- C++ -*-
+
+-// Copyright (C) 2001, 2002 Free Software Foundation, Inc.
++// Copyright (C) 2001, 2002, 2005 Free Software Foundation, Inc.
+ //
+ // This file is part of the GNU ISO C++ Library. This library is free
+ // software; you can redistribute it and/or modify it under the
+@@ -61,9 +61,12 @@
+ #define _GLIBCXX_UTILITY 1
+
+ #pragma GCC system_header
++#pragma GCC visibility push(default)
+
+ #include <bits/c++config.h>
+ #include <bits/stl_relops.h>
+ #include <bits/stl_pair.h>
+
++#pragma GCC visibility pop
++
+ #endif /* _GLIBCXX_UTILITY */
+--- gcc/libstdc++-v3/include/std/std_valarray.h.vis1~ 2005-10-31 21:16:10.000000000 +0100
++++ gcc/libstdc++-v3/include/std/std_valarray.h 2005-11-03 10:28:37.000000000 +0100
+@@ -1,6 +1,6 @@
+ // The template and inlines for the -*- C++ -*- valarray class.
+
+-// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2004
++// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2004, 2005
+ // Free Software Foundation, Inc.
+ //
+ // This file is part of the GNU ISO C++ Library. This library is free
+@@ -38,6 +38,7 @@
+ #define _GLIBCXX_VALARRAY 1
+
+ #pragma GCC system_header
++#pragma GCC visibility push(default)
+
+ #include <bits/c++config.h>
+ #include <cstddef>
+@@ -1007,4 +1008,6 @@
+
+ } // namespace std
+
++#pragma GCC visibility pop
++
+ #endif /* _GLIBCXX_VALARRAY */
+--- gcc/libstdc++-v3/include/std/std_vector.h.vis1~ 2005-10-31 21:16:10.000000000 +0100
++++ gcc/libstdc++-v3/include/std/std_vector.h 2005-11-03 10:28:37.000000000 +0100
+@@ -1,6 +1,6 @@
+ // <vector> -*- C++ -*-
+
+-// Copyright (C) 2001, 2002, 2003 Free Software Foundation, Inc.
++// Copyright (C) 2001, 2002, 2003, 2005 Free Software Foundation, Inc.
+ //
+ // This file is part of the GNU ISO C++ Library. This library is free
+ // software; you can redistribute it and/or modify it under the
+@@ -61,6 +61,7 @@
+ #define _GLIBCXX_VECTOR 1
+
+ #pragma GCC system_header
++#pragma GCC visibility push(default)
+
+ #include <bits/functexcept.h>
+ #include <bits/stl_algobase.h>
+@@ -78,5 +79,7 @@
+ # include <debug/vector>
+ #endif
+
++#pragma GCC visibility pop
++
+ #endif /* _GLIBCXX_VECTOR */
+
+--- gcc/libstdc++-v3/include/c_std/std_cassert.h.vis1~ 2005-10-31 21:16:11.000000000 +0100
++++ gcc/libstdc++-v3/include/c_std/std_cassert.h 2005-11-03 10:27:12.000000000 +0100
+@@ -45,5 +45,8 @@
+ // No include guards on this header...
+
+ #pragma GCC system_header
++#pragma GCC visibility push(default)
+
+ #include <assert.h>
++
++#pragma GCC visibility pop
+--- gcc/libstdc++-v3/include/c_std/std_cctype.h.vis1~ 2005-10-31 21:16:11.000000000 +0100
++++ gcc/libstdc++-v3/include/c_std/std_cctype.h 2005-11-03 10:27:12.000000000 +0100
+@@ -46,6 +46,7 @@
+ #define _GLIBCXX_CCTYPE 1
+
+ #pragma GCC system_header
++#pragma GCC visibility push(default)
+
+ #include <bits/c++config.h>
+ #include <ctype.h>
+@@ -82,4 +83,6 @@
+ using ::toupper;
+ }
+
++#pragma GCC visibility pop
++
+ #endif
+--- gcc/libstdc++-v3/include/c_std/std_cerrno.h.vis1~ 2005-10-31 21:16:11.000000000 +0100
++++ gcc/libstdc++-v3/include/c_std/std_cerrno.h 2005-11-03 10:27:12.000000000 +0100
+@@ -46,6 +46,7 @@
+ #define _GLIBCXX_CERRNO 1
+
+ #pragma GCC system_header
++#pragma GCC visibility push(default)
+
+ #include <errno.h>
+
+@@ -54,4 +55,6 @@
+ #define errno errno
+ #endif
+
++#pragma GCC visibility pop
++
+ #endif
+--- gcc/libstdc++-v3/include/c_std/std_cfloat.h.vis1~ 2005-10-31 21:16:11.000000000 +0100
++++ gcc/libstdc++-v3/include/c_std/std_cfloat.h 2005-11-03 10:27:12.000000000 +0100
+@@ -46,7 +46,10 @@
+ #define _GLIBCXX_CFLOAT 1
+
+ #pragma GCC system_header
++#pragma GCC visibility push(default)
+
+ #include <float.h>
+
++#pragma GCC visibility pop
++
+ #endif
+--- gcc/libstdc++-v3/include/c_std/std_climits.h.vis1~ 2005-10-31 21:16:11.000000000 +0100
++++ gcc/libstdc++-v3/include/c_std/std_climits.h 2005-11-03 10:27:12.000000000 +0100
+@@ -46,7 +46,9 @@
+ #define _GLIBCXX_CLIMITS 1
+
+ #pragma GCC system_header
++#pragma GCC visibility push(default)
+
+ #include <limits.h>
+
++#pragma GCC visibility pop
+ #endif
+--- gcc/libstdc++-v3/include/c_std/std_clocale.h.vis1~ 2005-10-31 21:16:11.000000000 +0100
++++ gcc/libstdc++-v3/include/c_std/std_clocale.h 2005-11-03 10:27:12.000000000 +0100
+@@ -46,6 +46,7 @@
+ #define _GLIBCXX_CLOCALE 1
+
+ #pragma GCC system_header
++#pragma GCC visibility push(default)
+
+ #include <locale.h>
+
+@@ -60,4 +61,6 @@
+ using ::localeconv;
+ }
+
++#pragma GCC visibility pop
++
+ #endif
+--- gcc/libstdc++-v3/include/c_std/std_cmath.h.vis1~ 2005-10-31 21:16:11.000000000 +0100
++++ gcc/libstdc++-v3/include/c_std/std_cmath.h 2005-11-03 10:27:12.000000000 +0100
+@@ -46,6 +46,7 @@
+ #define _GLIBCXX_CMATH 1
+
+ #pragma GCC system_header
++#pragma GCC visibility push(default)
+
+ #include <bits/c++config.h>
+ #include <bits/cpp_type_traits.h>
+@@ -575,4 +576,6 @@
+ # include <bits/cmath.tcc>
+ #endif
+
++#pragma GCC visibility pop
++
+ #endif
+--- gcc/libstdc++-v3/include/c_std/std_csetjmp.h.vis1~ 2005-10-31 21:16:11.000000000 +0100
++++ gcc/libstdc++-v3/include/c_std/std_csetjmp.h 2005-11-03 10:27:12.000000000 +0100
+@@ -46,6 +46,7 @@
+ #define _GLIBCXX_CSETJMP 1
+
+ #pragma GCC system_header
++#pragma GCC visibility push(default)
+
+ #include <setjmp.h>
+
+@@ -63,4 +64,6 @@
+ using ::longjmp;
+ }
+
++#pragma GCC visibility pop
++
+ #endif
+--- gcc/libstdc++-v3/include/c_std/std_csignal.h.vis1~ 2005-10-31 21:16:11.000000000 +0100
++++ gcc/libstdc++-v3/include/c_std/std_csignal.h 2005-11-03 10:27:12.000000000 +0100
+@@ -46,6 +46,7 @@
+ #define _GLIBCXX_CSIGNAL 1
+
+ #pragma GCC system_header
++#pragma GCC visibility push(default)
+
+ #include <signal.h>
+
+@@ -59,4 +60,6 @@
+ using ::raise;
+ }
+
++#pragma GCC visibility pop
++
+ #endif
+--- gcc/libstdc++-v3/include/c_std/std_cstdarg.h.vis1~ 2005-10-31 21:16:11.000000000 +0100
++++ gcc/libstdc++-v3/include/c_std/std_cstdarg.h 2005-11-03 10:27:12.000000000 +0100
+@@ -46,6 +46,7 @@
+ #define _GLIBCXX_CSTDARG 1
+
+ #pragma GCC system_header
++#pragma GCC visibility push(default)
+
+ #include <stdarg.h>
+
+@@ -59,4 +60,6 @@
+ using ::va_list;
+ }
+
++#pragma GCC visibility pop
++
+ #endif
+--- gcc/libstdc++-v3/include/c_std/std_cstddef.h.vis1~ 2005-10-31 21:16:11.000000000 +0100
++++ gcc/libstdc++-v3/include/c_std/std_cstddef.h 2005-11-03 10:27:12.000000000 +0100
+@@ -46,6 +46,7 @@
+ #define _GLIBCXX_CSTDDEF 1
+
+ #pragma GCC system_header
++#pragma GCC visibility push(default)
+
+ #include <stddef.h>
+
+@@ -55,4 +56,6 @@
+ using ::size_t;
+ }
+
++#pragma GCC visibility pop
++
+ #endif
+--- gcc/libstdc++-v3/include/c_std/std_cstdio.h.vis1~ 2005-10-31 21:16:11.000000000 +0100
++++ gcc/libstdc++-v3/include/c_std/std_cstdio.h 2005-11-03 10:27:12.000000000 +0100
+@@ -46,6 +46,7 @@
+ #define _GLIBCXX_CSTDIO 1
+
+ #pragma GCC system_header
++#pragma GCC visibility push(default)
+
+ #include <bits/c++config.h>
+ #include <cstddef>
+@@ -184,4 +185,6 @@
+ }
+ #endif
+
++#pragma GCC visibility pop
++
+ #endif
+--- gcc/libstdc++-v3/include/c_std/std_cstdlib.h.vis1~ 2005-10-31 21:16:11.000000000 +0100
++++ gcc/libstdc++-v3/include/c_std/std_cstdlib.h 2005-11-03 10:27:12.000000000 +0100
+@@ -46,6 +46,7 @@
+ #define _GLIBCXX_CSTDLIB 1
+
+ #pragma GCC system_header
++#pragma GCC visibility push(default)
+
+ #include <bits/c++config.h>
+ #include <cstddef>
+@@ -215,4 +216,6 @@
+ }
+ #endif
+
++#pragma GCC visibility pop
++
+ #endif
+--- gcc/libstdc++-v3/include/c_std/std_cstring.h.vis1~ 2005-10-31 21:16:11.000000000 +0100
++++ gcc/libstdc++-v3/include/c_std/std_cstring.h 2005-11-03 10:27:12.000000000 +0100
+@@ -46,6 +46,7 @@
+ #define _GLIBCXX_CSTRING 1
+
+ #pragma GCC system_header
++#pragma GCC visibility push(default)
+
+ #include <cstddef>
+
+@@ -126,4 +127,6 @@
+ { return __builtin_strstr(const_cast<const char*>(__s1), __s2); }
+ }
+
++#pragma GCC visibility pop
++
+ #endif
+--- gcc/libstdc++-v3/include/c_std/std_ctime.h.vis1~ 2005-10-31 21:16:11.000000000 +0100
++++ gcc/libstdc++-v3/include/c_std/std_ctime.h 2005-11-03 10:27:12.000000000 +0100
+@@ -46,6 +46,7 @@
+ #define _GLIBCXX_CTIME 1
+
+ #pragma GCC system_header
++#pragma GCC visibility push(default)
+
+ #include <cstddef>
+
+@@ -79,4 +80,6 @@
+ using ::strftime;
+ }
+
++#pragma GCC visibility pop
++
+ #endif
+--- gcc/libstdc++-v3/include/c_std/std_cwchar.h.vis1~ 2005-10-31 21:16:11.000000000 +0100
++++ gcc/libstdc++-v3/include/c_std/std_cwchar.h 2005-11-03 10:27:12.000000000 +0100
+@@ -46,6 +46,7 @@
+ #define _GLIBCXX_CWCHAR 1
+
+ #pragma GCC system_header
++#pragma GCC visibility push(default)
+
+ #include <bits/c++config.h>
+ #include <cstddef>
+@@ -271,4 +272,6 @@
+
+ #endif //_GLIBCXX_USE_WCHAR_T
+
++#pragma GCC visibility pop
++
+ #endif
+--- gcc/libstdc++-v3/include/c_std/std_cwctype.h.vis1~ 2005-10-31 21:16:11.000000000 +0100
++++ gcc/libstdc++-v3/include/c_std/std_cwctype.h 2005-11-03 10:27:12.000000000 +0100
+@@ -46,6 +46,7 @@
+ #define _GLIBCXX_CWCTYPE 1
+
+ #pragma GCC system_header
++#pragma GCC visibility push(default)
+
+ #include <bits/c++config.h>
+
+@@ -106,4 +107,6 @@
+ }
+ #endif //_GLIBCXX_USE_WCHAR_T
+
++#pragma GCC visibility pop
++
+ #endif
+--- gcc/libstdc++-v3/testsuite/20_util/memory/auto_ptr/assign_neg.cc.vis1~ 2005-10-31 21:19:34.000000000 +0100
++++ gcc/libstdc++-v3/testsuite/20_util/memory/auto_ptr/assign_neg.cc 2005-11-03 10:28:38.000000000 +0100
+@@ -46,5 +46,5 @@
+ test01();
+ return 0;
+ }
+-// { dg-error "candidates" "" { target *-*-* } 223 }
+-// { dg-error "std::auto_ptr" "" { target *-*-* } 353 }
++// { dg-error "candidates" "" { target *-*-* } 224 }
++// { dg-error "std::auto_ptr" "" { target *-*-* } 354 }
--- /dev/null
+
+ PR target/24419
+ * i386.c (pro_epilogue_adjust_stack): Add another argument to
+ indicate if memory should be clobbered or not. Adjust stack
+ pointer directly if memory shouldn't be clobbered.
+ (ix86_expand_prologue): Updated. Don't clobber member if
+ adjusting stack after registers have been saved on stack.
+ (ix86_expand_epilogue): Updated to call
+ pro_epilogue_adjust_stack with memory clobbered.
+
+ * i386.md: Don't convert stack pointer subtractions to push
+ when memory isn't clobbered if red zone is enabled.
+
+--- gcc/gcc/config/i386/i386.c 2005-10-18 17:26:40.000000000 -0700
++++ gcc/gcc/config/i386/i386.c 2005-10-18 20:35:19.000000000 -0700
+@@ -4761,22 +4761,38 @@ ix86_emit_save_regs_using_mov (rtx point
+ otherwise. */
+
+ static void
+-pro_epilogue_adjust_stack (rtx dest, rtx src, rtx offset, int style)
++pro_epilogue_adjust_stack (rtx dest, rtx src, rtx offset, int style,
++ bool clobber_memory)
+ {
+ rtx insn;
+
+ if (! TARGET_64BIT)
+- insn = emit_insn (gen_pro_epilogue_adjust_stack_1 (dest, src, offset));
++ {
++ if (clobber_memory)
++ insn = emit_insn (gen_pro_epilogue_adjust_stack_1 (dest, src,
++ offset));
++ else
++ insn = emit_insn (gen_addsi3 (dest, src, offset));
++ }
+ else if (x86_64_immediate_operand (offset, DImode))
+- insn = emit_insn (gen_pro_epilogue_adjust_stack_rex64 (dest, src, offset));
++ {
++ if (clobber_memory)
++ insn = emit_insn (gen_pro_epilogue_adjust_stack_rex64 (dest,
++ src,
++ offset));
++ else
++ insn = emit_insn (gen_adddi3 (dest, src, offset));
++ }
+ else
+ {
+ rtx r11;
+ /* r11 is used by indirect sibcall return as well, set before the
+ epilogue and used after the epilogue. ATM indirect sibcall
+ shouldn't be used together with huge frame sizes in one
+- function because of the frame_size check in sibcall.c. */
+- gcc_assert (style);
++ function because of the frame_size check in sibcall.c. If
++ huge frame size is used, memory should always be clobbered
++ when stack is adjusted. */
++ gcc_assert (style && clobber_memory);
+ r11 = gen_rtx_REG (DImode, FIRST_REX_INT_REG + 3 /* R11 */);
+ insn = emit_insn (gen_rtx_SET (DImode, r11, offset));
+ if (style < 0)
+@@ -4797,6 +4813,7 @@ ix86_expand_prologue (void)
+ bool pic_reg_used;
+ struct ix86_frame frame;
+ HOST_WIDE_INT allocate;
++ bool using_mov;
+
+ ix86_compute_frame_layout (&frame);
+
+@@ -4821,7 +4838,8 @@ ix86_expand_prologue (void)
+
+ /* When using red zone we may start register saving before allocating
+ the stack frame saving one cycle of the prologue. */
+- if (TARGET_RED_ZONE && frame.save_regs_using_mov)
++ using_mov = TARGET_RED_ZONE && frame.save_regs_using_mov;
++ if (using_mov)
+ ix86_emit_save_regs_using_mov (frame_pointer_needed ? hard_frame_pointer_rtx
+ : stack_pointer_rtx,
+ -frame.nregs * UNITS_PER_WORD);
+@@ -4830,7 +4848,7 @@ ix86_expand_prologue (void)
+ ;
+ else if (! TARGET_STACK_PROBE || allocate < CHECK_STACK_LIMIT)
+ pro_epilogue_adjust_stack (stack_pointer_rtx, stack_pointer_rtx,
+- GEN_INT (-allocate), -1);
++ GEN_INT (-allocate), -1, !using_mov);
+ else
+ {
+ /* Only valid for Win32. */
+@@ -5011,7 +5029,7 @@ ix86_expand_epilogue (int style)
+ emit_move_insn (hard_frame_pointer_rtx, tmp);
+
+ pro_epilogue_adjust_stack (stack_pointer_rtx, sa,
+- const0_rtx, style);
++ const0_rtx, style, true);
+ }
+ else
+ {
+@@ -5025,7 +5043,7 @@ ix86_expand_epilogue (int style)
+ pro_epilogue_adjust_stack (stack_pointer_rtx, stack_pointer_rtx,
+ GEN_INT (frame.to_allocate
+ + frame.nregs * UNITS_PER_WORD),
+- style);
++ style, true);
+ /* If not an i386, mov & pop is faster than "leave". */
+ else if (TARGET_USE_LEAVE || optimize_size
+ || !cfun->machine->use_fast_prologue_epilogue)
+@@ -5034,7 +5052,7 @@ ix86_expand_epilogue (int style)
+ {
+ pro_epilogue_adjust_stack (stack_pointer_rtx,
+ hard_frame_pointer_rtx,
+- const0_rtx, style);
++ const0_rtx, style, true);
+ if (TARGET_64BIT)
+ emit_insn (gen_popdi1 (hard_frame_pointer_rtx));
+ else
+@@ -5050,11 +5068,12 @@ ix86_expand_epilogue (int style)
+ gcc_assert (frame_pointer_needed);
+ pro_epilogue_adjust_stack (stack_pointer_rtx,
+ hard_frame_pointer_rtx,
+- GEN_INT (offset), style);
++ GEN_INT (offset), style, true);
+ }
+ else if (frame.to_allocate)
+ pro_epilogue_adjust_stack (stack_pointer_rtx, stack_pointer_rtx,
+- GEN_INT (frame.to_allocate), style);
++ GEN_INT (frame.to_allocate), style,
++ true);
+
+ for (regno = 0; regno < FIRST_PSEUDO_REGISTER; regno++)
+ if (ix86_save_reg (regno, false))
+--- gcc/gcc/config/i386/i386.md 2005-10-18 17:26:40.000000000 -0700
++++ gcc/gcc/config/i386/i386.md 2005-10-18 17:26:40.000000000 -0700
+@@ -19532,11 +19532,15 @@
+ (clobber (mem:BLK (scratch)))])])
+
+ ;; Convert esp subtractions to push.
++;; This conversion is safe only under assumption that unallocated stack is
++;; implicitly clobbered as specified by 32bit ABI (for signal handlers and such).
++;; This is not valid with red zone, but we can work harder and enable the
++;; optimization for functions that are not using it.
+ (define_peephole2
+ [(match_scratch:SI 0 "r")
+ (parallel [(set (reg:SI SP_REG) (plus:SI (reg:SI SP_REG) (const_int -4)))
+ (clobber (reg:CC FLAGS_REG))])]
+- "optimize_size || !TARGET_SUB_ESP_4"
++ "(optimize_size || !TARGET_SUB_ESP_4) && !TARGET_RED_ZONE"
+ [(clobber (match_dup 0))
+ (set (mem:SI (pre_dec:SI (reg:SI SP_REG))) (match_dup 0))])
+
+@@ -19544,7 +19548,7 @@
+ [(match_scratch:SI 0 "r")
+ (parallel [(set (reg:SI SP_REG) (plus:SI (reg:SI SP_REG) (const_int -8)))
+ (clobber (reg:CC FLAGS_REG))])]
+- "optimize_size || !TARGET_SUB_ESP_8"
++ "(optimize_size || !TARGET_SUB_ESP_8) && !TARGET_RED_ZONE"
+ [(clobber (match_dup 0))
+ (set (mem:SI (pre_dec:SI (reg:SI SP_REG))) (match_dup 0))
+ (set (mem:SI (pre_dec:SI (reg:SI SP_REG))) (match_dup 0))])
+@@ -19664,11 +19668,15 @@
+ (clobber (mem:BLK (scratch)))])])
+
+ ;; Convert esp subtractions to push.
++;; This conversion is safe only under assumption that unallocated stack is
++;; implicitly clobbered as specified by 32bit ABI (for signal handlers and such).
++;; This is not valid with red zone, but we can work harder and enable the
++;; optimization for functions that are not using it.
+ (define_peephole2
+ [(match_scratch:DI 0 "r")
+ (parallel [(set (reg:DI SP_REG) (plus:DI (reg:DI SP_REG) (const_int -8)))
+ (clobber (reg:CC FLAGS_REG))])]
+- "optimize_size || !TARGET_SUB_ESP_4"
++ "(optimize_size || !TARGET_SUB_ESP_4) && !TARGET_RED_ZONE"
+ [(clobber (match_dup 0))
+ (set (mem:DI (pre_dec:DI (reg:DI SP_REG))) (match_dup 0))])
+
+@@ -19676,7 +19684,7 @@
+ [(match_scratch:DI 0 "r")
+ (parallel [(set (reg:DI SP_REG) (plus:DI (reg:DI SP_REG) (const_int -16)))
+ (clobber (reg:CC FLAGS_REG))])]
+- "optimize_size || !TARGET_SUB_ESP_8"
++ "(optimize_size || !TARGET_SUB_ESP_8) && !TARGET_RED_ZONE"
+ [(clobber (match_dup 0))
+ (set (mem:DI (pre_dec:DI (reg:DI SP_REG))) (match_dup 0))
+ (set (mem:DI (pre_dec:DI (reg:DI SP_REG))) (match_dup 0))])
+
--- /dev/null
+--- gcc/gcc/config/i386/i386.c (revision 106482)
++++ gcc/gcc/config/i386/i386.c (working copy)
+@@ -5396,8 +5396,12 @@
+ if (parts.index && GET_CODE (parts.index) == SUBREG)
+ parts.index = SUBREG_REG (parts.index);
+
++ /* Penalize displacements a bit. */
++ if (parts.disp && parts.disp != const0_rtx)
++ cost++;
++
+ /* More complex memory references are better. */
+- if (parts.disp && parts.disp != const0_rtx)
++ if (parts.scale)
+ cost--;
+ if (parts.seg != SEG_DEFAULT)
+ cost--;
--- /dev/null
+Date: Tue, 14 Jun 2005 00:20:06 -0600 (MDT)
+From: Roger Sayle <roger at eyesopen dot com>
+Subject: [PATCH] PR 7776: Warn about if ("abc" < "xyz") ... (take 2)
+
+The following patch is a revised version of my proposed solution to
+PR middle-end/7776, which addresses Daniel Jacobowitz's concerns about
+the potential utility of testing string literals for equality/inequality
+with NULL.
+
+See http://gcc.gnu.org/ml/gcc-patches/2005-06/msg00369.html (and the
+following thread) for details and motivation.
+
+The following patch has been tested on i686-pc-linux-gnu with a full
+"make bootstrap", all default languages, and regression tested with a
+top-level "make -k check" with no new failures.
+
+Ok for mainline?
+
+2005-06-13 Roger Sayle <roger@eyesopen.com>
+
+ PR middle-end/7776
+ * common.opt (Wstring-literal-comparison): New command line option.
+ * c-opts.c (c_common_handle_option): Set it with -Wall.
+ * c-typeck.c (parser_build_binary_op): Issue warning if either
+ operand of a comparison operator is a string literal, except for
+ testing equality or inequality against NULL.
+
+ * gcc.dg/Wstring-literal-comparison-1.c: New test case.
+ * gcc.dg/Wstring-literal-comparison-2.c: Likewise.
+ * gcc.dg/Wstring-literal-comparison-3.c: Likewise.
+ * gcc.dg/Wstring-literal-comparison-4.c: Likewise.
+
+
+*** a/gcc/common.opt 4 Jun 2005 17:07:55 -0000 1.73
+--- b/gcc/common.opt 13 Jun 2005 16:59:28 -0000
+*************** Wstrict-aliasing=
+*** 117,122 ****
+--- 117,126 ----
+ Common Joined UInteger
+ Warn about code which might break strict aliasing rules
+
++ Wstring-literal-comparison
++ Common Var(warn_string_literal_comparison)
++ Warn about comparisons to constant string literals
++
+ Wswitch
+ Common Var(warn_switch)
+ Warn about enumerated switches, with no default, missing a case
+*** a/gcc/c-opts.c 25 May 2005 03:58:55 -0000 1.146
+--- b/gcc/c-opts.c 13 Jun 2005 16:59:29 -0000
+*************** c_common_handle_option (size_t scode, co
+*** 370,375 ****
+--- 370,376 ----
+ warn_sign_compare = value;
+ warn_switch = value;
+ warn_strict_aliasing = value;
++ warn_string_literal_comparison = value;
+
+ /* Only warn about unknown pragmas that are not in system
+ headers. */
+*** a/gcc/c-typeck.c 11 Jun 2005 19:47:01 -0000 1.453
+--- b/gcc/c-typeck.c 13 Jun 2005 16:59:31 -0000
+*************** parser_build_binary_op (enum tree_code c
+*** 2412,2417 ****
+--- 2412,2434 ----
+
+ }
+
++ /* Warn about comparisons against string literals, with the exception
++ of testing for equality or inequality of a string literal with NULL. */
++ if (code == EQ_EXPR || code == NE_EXPR)
++ {
++ if ((TREE_CODE (arg1.value) == STRING_CST
++ && !integer_zerop (arg2.value))
++ || (TREE_CODE (arg2.value) == STRING_CST
++ && !integer_zerop (arg1.value)))
++ warning (OPT_Wstring_literal_comparison,
++ "comparison with string literal");
++ }
++ else if (TREE_CODE_CLASS (code) == tcc_comparison
++ && (TREE_CODE (arg1.value) == STRING_CST
++ || TREE_CODE (arg2.value) == STRING_CST))
++ warning (OPT_Wstring_literal_comparison,
++ "comparison with string literal");
++
+ unsigned_conversion_warning (result.value, arg1.value);
+ unsigned_conversion_warning (result.value, arg2.value);
+ overflow_warning (result.value);
--- /dev/null
+#
+# TODO:
+# checking for XTestQueryExtension in -lXtst... no
+# configure: error: libXtst not found, required by java.awt.Robot
+# make[2]: *** [configure-target-libjava] Error 1
+#
+# Conditional build:
+%bcond_without ada # build without ADA support
+%bcond_without cxx # build without C++ support
+%bcond_without fortran # build without Fortran support
+%bcond_without java # build without Java support
+%bcond_without objc # build without Objective-C support
+%bcond_without objcxx # build without Objective-C++ support
+%bcond_with multilib # build with multilib support (it needs glibc[32&64]-devel)
+%bcond_with profiling # build with profiling
+%bcond_without bootstrap # omit 3-stage bootstrap
+%bcond_with tests # torture gcc
+
+%if %{with multilib}
+# the latest chrpath(64) can't handle 32-bit binaries :/
+%define _noautochrpath .*/lib/.*\\.so.*
+%endif
+
+%if %{without cxx}
+%undefine with_java
+%undefine with_objcxx
+%endif
+
+%if %{without objc}
+%undefine with_objcxx
+%endif
+
+%if %{without bootstrap}
+%undefine with_profiling
+%endif
+
+%ifnarch %{x8664} ppc64 s390x sparc64
+%undefine with_multilib
+%endif
+
+Summary: GNU Compiler Collection: the C compiler and shared files
+Summary(es): Colección de compiladores GNU: el compilador C y ficheros compartidos
+Summary(pl): Kolekcja kompilatorów GNU: kompilator C i pliki wspó³dzielone
+Summary(pt_BR): Coleção dos compiladores GNU: o compilador C e arquivos compartilhados
+Name: gcc
+Version: 4.2.0
+%define _snap 20051201r107828
+Release: 0.%{_snap}.0.1
+Epoch: 5
+License: GPL v2+
+Group: Development/Languages
+#Source0: ftp://gcc.gnu.org/pub/gcc/releases/gcc-%{version}/%{name}-%{version}.tar.bz2
+#Source0: ftp://gcc.gnu.org/pub/gcc/snapshots/4.1-%{_snap}/gcc-4.1-%{_snap}.tar.bz2
+Source0: gcc-4.2-%{_snap}.tar.bz2
+# Source0-md5: 38ca117c2cf381cc15a217710a3a7d11
+Source1: %{name}-optimize-la.pl
+Patch0: %{name}-info.patch
+Patch1: %{name}-nolocalefiles.patch
+Patch2: %{name}-nodebug.patch
+Patch3: %{name}-ada-link-new-libgnat.patch
+Patch4: %{name}-ada-link.patch
+Patch5: %{name}-alpha-ada_fix.patch
+# -fvisibility fixes...
+Patch6: %{name}-pr19664_gnu_internal.patch
+Patch7: %{name}-pr19664_libstdc++.patch
+
+#Patch9: %{name}-enable-java-awt-qt.patch NEEDS UPDATE
+# PRs
+Patch10: %{name}-pr7776.patch
+Patch11: %{name}-pr20297.patch
+Patch12: %{name}-pr22533.patch
+Patch13: %{name}-pr25180.patch
+#Patch14: %{name}-x87-mmx-switch.patch NEEDS UPDATE
+#Patch15: %{name}-x87-mmx-eh.patch NEEDS UPDATE
+Patch16: %{name}-pr23948.patch
+Patch17: %{name}-pr19505.patch
+Patch18: %{name}-pr24419.patch
+Patch19: %{name}-pr24669.patch
+Patch20: %{name}-pr17390.patch
+URL: http://gcc.gnu.org/
+#{?with_java:BuildRequires: QtGui-devel >= 4.0.1}
+%{?with_java:BuildRequires: alsa-lib-devel}
+BuildRequires: autoconf
+%{?with_tests:BuildRequires: autogen}
+BuildRequires: automake
+BuildRequires: binutils >= 2:2.15.94.0.1
+BuildRequires: bison
+%{?with_java:BuildRequires: cairo-devel >= 0.5.0}
+%{?with_java:BuildRequires: dssi}
+%{?with_tests:BuildRequires: dejagnu}
+BuildRequires: fileutils >= 4.0.41
+BuildRequires: flex
+%if %{with ada}
+BuildRequires: gcc(ada)
+BuildRequires: gcc-ada
+%endif
+BuildRequires: gettext-devel
+%if %{with multilib}
+BuildRequires: glibc-devel >= 6:2.3.4-1.5
+%ifarch %{x8664}
+BuildRequires: glibc-devel(i686)
+%endif
+%ifarch ppc64
+BuildRequires: glibc-devel(ppc)
+%endif
+%ifarch s390x
+BuildRequires: glibc-devel(s390)
+%endif
+%ifarch sparc64
+BuildRequires: glibc-devel(sparc)
+%endif
+%else
+BuildRequires: glibc-devel >= 2.2.5-20
+%endif
+#{?with_java:BuildRequires: gtk+2-devel >= 2.4.0}
+%if %{with fortran}
+BuildRequires: gmp-devel
+BuildRequires: libmpfr-devel
+%endif
+%{?with_java:BuildRequires: libxslt-devel}
+%{?with_java:BuildRequires: pango-devel}
+BuildRequires: perl-devel
+%{?with_java:BuildRequires: pkgconfig}
+BuildRequires: rpmbuild(macros) >= 1.211
+BuildRequires: texinfo >= 4.1
+BuildRequires: zlib-devel
+# AS_NEEDED directive for dynamic linker
+# http://sources.redhat.com/ml/glibc-cvs/2005-q1/msg00614.html
+# http://sources.redhat.com/ml/binutils/2005-01/msg00288.html
+Requires: binutils >= 2:2.16.90.0.1-0.3
+Requires: libgcc = %{epoch}:%{version}-%{release}
+Provides: cpp = %{epoch}:%{version}-%{release}
+%{?with_ada:Provides: gcc(ada)}
+%{?with_multilib:Provides: gcc(multilib)}
+Obsoletes: cpp
+Obsoletes: egcs-cpp
+Obsoletes: gcc-chill
+Obsoletes: gcc-cpp
+Obsoletes: gcc-ksi
+Obsoletes: gont
+Conflicts: glibc-devel < 2.2.5-20
+BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
+
+%define _slibdir /%{_lib}
+%if %{with multilib}
+# 32-bit environment on x86-64,ppc64,s390x,sparc64
+%define _slibdir32 /lib
+%define _libdir32 /usr/lib
+%endif
+
+%description
+A compiler aimed at integrating all the optimizations and features
+necessary for a high-performance and stable development environment.
+
+This package contains the C compiler and some files shared by various
+parts of the GNU Compiler Collection. In order to use another GCC
+compiler you will need to install the appropriate subpackage.
+
+%description -l es
+Un compilador que intenta integrar todas las optimalizaciones y
+características necesarias para un entorno de desarrollo eficaz y
+estable.
+
+Este paquete contiene el compilador de C y unos ficheros compartidos
+por varias partes de la colección de compiladores GNU (GCC). Para usar
+otro compilador de GCC será necesario que instale el subpaquete
+adecuado.
+
+%description -l pl
+Kompilator, posiadaj±cy du¿e mo¿liwo¶ci optymalizacyjne niezbêdne do
+wyprodukowania szybkiego i stabilnego kodu wynikowego.
+
+Ten pakiet zawiera kompilator C i pliki wspó³dzielone przez ró¿ne
+czê¶ci kolekcji kompilatorów GNU (GCC). ¯eby u¿ywaæ innego kompilatora
+z GCC, trzeba zainstalowaæ odpowiedni podpakiet.
+
+%description -l pt_BR
+Este pacote adiciona infraestrutura básica e suporte a linguagem C ao
+GNU Compiler Collection.
+
+%package -n libgcc
+Summary: Shared gcc library
+Summary(es): Biblioteca compartida de gcc
+Summary(pl): Biblioteka gcc
+Summary(pt_BR): Biblioteca runtime para o GCC
+License: GPL with unlimited link permission
+Group: Libraries
+Obsoletes: libgcc1
+
+%description -n libgcc
+Shared gcc library.
+
+%description -n libgcc -l es
+Biblioteca compartida de gcc.
+
+%description -n libgcc -l pl
+Biblioteka dynamiczna gcc.
+
+%description -n libgcc -l pt_BR
+Biblioteca runtime para o GCC.
+
+%package -n libmudflap
+Summary: GCC mudflap shared support library
+Summary(pl): Wspó³dzielona biblioteka wspomagaj±ca GCC mudflap
+License: GPL v2+ with unlimited link permission
+Group: Libraries
+
+%description -n libmudflap
+The libmudflap libraries are used by GCC for instrumenting pointer and
+array dereferencing operations.
+
+%description -n libmudflap -l pl
+Biblioteki libmudflap s± u¿ywane przez GCC do obs³ugi operacji
+dereferencji wspa¼ników i tablic.
+
+%package -n libmudflap-devel
+Summary: Development files for GCC mudflap library
+Summary(pl): Pliki programistyczne biblioteki GCC mudflap
+License: GPL v2+ with unlimited link permission
+Group: Development/Libraries
+Requires: libmudflap = %{epoch}:%{version}-%{release}
+
+%description -n libmudflap-devel
+The libmudflap libraries are used by GCC for instrumenting pointer and
+array dereferencing operations. This package contains development
+files.
+
+%description -n libmudflap-devel -l pl
+Biblioteki libmudflap s± u¿ywane przez GCC do obs³ugi operacji
+dereferencji wspa¼ników i tablic. Ten pakiet zawiera pliki
+programistyczne.
+
+%package -n libmudflap-static
+Summary: Static GCC mudflap library
+Summary(pl): Statyczna biblioteka GCC mudflap
+License: GPL v2+ with unlimited link permission
+Group: Development/Libraries
+Requires: libmudflap-devel = %{epoch}:%{version}-%{release}
+
+%description -n libmudflap-static
+The libmudflap libraries are used by GCC for instrumenting pointer and
+array dereferencing operations. This package contains static
+libraries.
+
+%description -n libmudflap-static -l pl
+Biblioteki libmudflap s± u¿ywane przez GCC do obs³ugi operacji
+dereferencji wspa¼ników i tablic. Ten pakiet zawiera biblioteki
+statyczne.
+
+%package ada
+Summary: Ada support for gcc
+Summary(es): Soporte de Ada para gcc
+Summary(pl): Obs³uga Ady do gcc
+Group: Development/Languages
+Requires: %{name} = %{epoch}:%{version}-%{release}
+Requires: libgnat = %{epoch}:%{version}-%{release}
+Obsoletes: gcc-gnat
+Obsoletes: gnat-devel
+
+%description ada
+This package adds experimental support for compiling Ada programs.
+
+%description ada -l es
+Este paquete añade soporte experimental para compilar programas en
+Ada.
+
+%description ada -l pl
+Ten pakiet dodaje eksperymentalne wsparcie dla kompilacji programów w
+Adzie.
+
+%package -n libgnat
+Summary: Ada standard libraries
+Summary(es): Bibliotecas estándares de Ada
+Summary(pl): Biblioteki standardowe dla Ady
+License: GPL v2+ with linking exception
+Group: Libraries
+Obsoletes: gnat
+Obsoletes: libgnat1
+
+%description -n libgnat
+This package contains shared libraries needed to run programs written
+in Ada.
+
+%description -n libgnat -l es
+Este paquete contiene las bibliotecas compartidas necesarias para
+ejecutar programas escritos en Ada.
+
+%description -n libgnat -l pl
+Ten pakiet zawiera biblioteki potrzebne do uruchamiania programów
+napisanych w Adzie.
+
+%package -n libgnat-static
+Summary: Static Ada standard libraries
+Summary(pl): Statyczne biblioteki standardowe dla Ady
+License: GPL v2+ with linking exception
+Group: Development/Libraries
+Obsoletes: gnat-static
+
+%description -n libgnat-static
+This package contains static libraries for programs written in Ada.
+
+%description -n libgnat-static -l pl
+Ten pakiet zawiera biblioteki statyczne dla programów napisanych w
+Adzie.
+
+%package c++
+Summary: C++ support for gcc
+Summary(es): Soporte de C++ para gcc
+Summary(pl): Obs³uga C++ dla gcc
+Summary(pt_BR): Suporte C++ para o gcc
+Group: Development/Languages
+Requires: %{name} = %{epoch}:%{version}-%{release}
+Obsoletes: egcc-c++
+Obsoletes: egcs-c++
+
+%description c++
+This package adds C++ support to the GNU Compiler Collection. It
+includes support for most of the current C++ specification, including
+templates and exception handling. It does not include a standard C++
+library, which is available separately.
+
+%description c++ -l de
+Dieses Paket enthält die C++-Unterstützung für den
+GNU-Compiler-Collection. Es unterstützt die aktuelle
+C++-Spezifikation, inkl. Templates und Ausnahmeverarbeitung. Eine
+C++-Standard-Library ist nicht enthalten - sie ist getrennt
+erhältlich.
+
+%description c++ -l es
+Este paquete añade soporte de C++ al GCC (colección de compiladores
+GNU). Ello incluye el soporte para la mayoría de la especificación
+actual de C++, incluyendo plantillas y manejo de excepciones. No
+incluye la biblioteca estándar de C++, la que es disponible separada.
+
+%description c++ -l fr
+Ce package ajoute un support C++ a la collection de compilateurs GNU.
+Il comprend un support pour la plupart des spécifications actuelles de
+C++, dont les modéles et la gestion des exceptions. Il ne comprend pas
+une bibliothéque C++ standard, qui est disponible séparément.
+
+%description c++ -l pl
+Ten pakiet dodaje obs³ugê C++ do kompilatora gcc. Ma wsparcie dla
+du¿ej ilo¶ci obecnych specyfikacji C++, nie zawiera natomiast
+standardowych bibliotek C++, które s± w oddzielnym pakiecie.
+
+%description c++ -l pt_BR
+Este pacote adiciona suporte C++ para o gcc.
+
+%description c++ -l tr
+Bu paket, GNU C derleyicisine C++ desteði ekler. 'Template'ler ve
+aykýrý durum iþleme gibi çoðu güncel C++ tanýmlarýna uyar. Standart
+C++ kitaplýðý bu pakette yer almaz.
+
+%package -n libstdc++
+Summary: GNU C++ library
+Summary(es): Biblioteca C++ de GNU
+Summary(pl): Biblioteki GNU C++
+Summary(pt_BR): Biblioteca C++ GNU
+License: GPL v2+ with free software exception
+Group: Libraries
+Obsoletes: libg++
+Obsoletes: libstdc++3
+
+%description -n libstdc++
+This is the GNU implementation of the standard C++ libraries, along
+with additional GNU tools. This package includes the shared libraries
+necessary to run C++ applications.
+
+%description -n libstdc++ -l de
+Dies ist die GNU-Implementierung der Standard-C++-Libraries mit
+weiteren GNU-Tools. Dieses Paket enthält die zum Ausführen von
+C++-Anwendungen erforderlichen gemeinsam genutzten Libraries.
+
+%description -n libstdc++ -l es
+Este es el soporte de las bibliotecas padrón del C++, junto con
+herramientas GNU adicionales. El paquete incluye las bibliotecas
+compartidas necesarias para ejecutar aplicaciones C++.
+
+%description -n libstdc++ -l fr
+Ceci est l'implémentation GNU des librairies C++ standard, ainsi que
+des outils GNU supplémentaires. Ce package comprend les librairies
+partagées nécessaires à l'exécution d'application C++.
+
+%description -n libstdc++ -l pl
+Pakiet ten zawiera biblioteki bêd±ce implementacj± standardowych
+bibliotek C++. Znajduj± siê w nim biblioteki dynamiczne niezbêdne do
+uruchomienia aplikacji napisanych w C++.
+
+%description -n libstdc++ -l pt_BR
+Este pacote é uma implementação da biblioteca padrão C++ v3, um
+subconjunto do padrão ISO 14882.
+
+%description -n libstdc++ -l tr
+Bu paket, standart C++ kitaplýklarýnýn GNU gerçeklemesidir ve C++
+uygulamalarýnýn koþturulmasý için gerekli kitaplýklarý içerir.
+
+%package -n libstdc++-devel
+Summary: Header files and documentation for C++ development
+Summary(de): Header-Dateien zur Entwicklung mit C++
+Summary(es): Ficheros de cabecera y documentación para desarrollo C++
+Summary(fr): Fichiers d'en-tête et biblitothèques pour développer en C++
+Summary(pl): Pliki nag³ówkowe i dokumentacja do biblioteki standardowej C++
+Summary(pt_BR): Arquivos de inclusão e bibliotecas para o desenvolvimento em C++
+Summary(tr): C++ ile program geliþtirmek için gerekli dosyalar
+License: GPL v2+ with free software exception
+Group: Development/Libraries
+Requires: %{name}-c++ = %{epoch}:%{version}-%{release}
+Requires: libstdc++ = %{epoch}:%{version}-%{release}
+Requires: glibc-devel
+Obsoletes: libg++-devel
+Obsoletes: libstdc++3-devel
+
+%description -n libstdc++-devel
+This is the GNU implementation of the standard C++ libraries. This
+package includes the header files needed for C++ development and
+library documentation.
+
+%description -n libstdc++-devel -l es
+Este es el soporte de las bibliotecas padrón del lenguaje C++. Este
+paquete incluye los archivos de inclusión y bibliotecas necesarios
+para desarrollo de programas en lenguaje C++.
+
+%description -n libstdc++-devel -l pl
+Pakiet ten zawiera biblioteki bêd±ce implementacj± standardowych
+bibliotek C++. Znajduj± siê w nim pliki nag³ówkowe wykorzystywane przy
+programowaniu w jêzyku C++ oraz dokumentacja biblioteki standardowej.
+
+%description -n libstdc++-devel -l pt_BR
+Este pacote inclui os arquivos de inclusão e bibliotecas necessárias
+para desenvolvimento de programas C++.
+
+%package -n libstdc++-static
+Summary: Static C++ standard library
+Summary(es): Biblioteca estándar estática de C++
+Summary(pl): Statyczna biblioteka standardowa C++
+License: GPL v2+ with free software exception
+Group: Development/Libraries
+Requires: libstdc++-devel = %{epoch}:%{version}-%{release}
+
+%description -n libstdc++-static
+Static C++ standard library.
+
+%description -n libstdc++-static -l es
+Biblioteca estándar estática de C++.
+
+%description -n libstdc++-static -l pl
+Statyczna biblioteka standardowa C++.
+
+%package fortran
+Summary: Fortran 95 support for gcc
+Summary(es): Soporte de Fortran 95 para gcc
+Summary(pl): Obs³uga Fortranu 95 dla gcc
+Summary(pt_BR): Suporte Fortran 95 para o GCC
+Group: Development/Languages/Fortran
+Requires: libgfortran = %{epoch}:%{version}-%{release}
+Provides: gcc-g77 = %{epoch}:%{version}-%{release}
+Obsoletes: egcs-g77
+Obsoletes: gcc-g77
+
+%description fortran
+This package adds support for compiling Fortran 95 programs with the
+GNU compiler.
+
+%description fortran -l es
+Este paquete añade soporte para compilar programas escritos en Fortran
+95 con el compilador GNU.
+
+%description fortran -l pl
+Ten pakiet dodaje obs³ugê Fortranu 95 do kompilatora gcc. Jest
+potrzebny do kompilowania programów pisanych w jêzyku Fortran 95.
+
+%description fortran -l pt_BR
+Suporte Fortran 95 para o GCC.
+
+%package -n libgfortran
+Summary: Fortran 95 Libraries
+Summary(es): Bibliotecas de Fortran 95
+Summary(pl): Biblioteki Fortranu 95
+License: LGPL v2+
+Group: Libraries
+Obsoletes: libg2c
+
+%description -n libgfortran
+Fortran 95 Libraries.
+
+%description -n libgfortran -l es
+Bibliotecas de Fortran 95.
+
+%description -n libgfortran -l pl
+Biblioteki Fortranu 95.
+
+%package -n libgfortran-static
+Summary: Static Fortran 95 Libraries
+Summary(es): Bibliotecas estáticas de Fortran 95
+Summary(pl): Statyczne Biblioteki Fortranu 95
+License: LGPL v2+
+Group: Development/Libraries
+Requires: libgfortran = %{epoch}:%{version}-%{release}
+Obsoletes: libg2c-static
+
+%description -n libgfortran-static
+Static Fortran 95 Libraries.
+
+%description -n libgfortran-static -l es
+Bibliotecas estáticas de Fortran 95.
+
+%description -n libgfortran-static -l pl
+Statyczne biblioteki Fortranu 95.
+
+%package java
+Summary: Java support for gcc
+Summary(es): Soporte de Java para gcc
+Summary(pl): Obs³uga Javy dla gcc
+Group: Development/Languages/Java
+Requires: %{name} = %{epoch}:%{version}-%{release}
+Requires: libgcj-devel = %{epoch}:%{version}-%{release}
+Provides: gcj = %{epoch}:%{version}-%{release}
+Provides: gcc-java-tools
+Obsoletes: fastjar
+Obsoletes: gcc-java-tools
+
+%description java
+This package adds experimental support for compiling Java(TM) programs
+and bytecode into native code. To use this you will also need the
+libgcj package.
+
+%description java -l es
+Este paquete añade soporte experimental para compilar programas
+Java(tm) y su bytecode en código nativo. Para usarlo también va a
+necesitar el paquete libgcj.
+
+%description java -l pl
+Ten pakiet dodaje mo¿liwo¶æ kompilowania programów w jêzyku Java(TM)
+oraz bajtkodu do kodu natywnego. Do u¿ywania go wymagany jest
+dodatkowo pakiet libgcj.
+
+%package -n libgcj
+Summary: Java Class Libraries
+Summary(es): Bibliotecas de clases de Java
+Summary(pl): Biblioteki Klas Javy
+License: GPL with limited linking exception
+Group: Libraries
+Obsoletes: libgcj3
+
+%description -n libgcj
+Java Class Libraries.
+
+%description -n libgcj -l es
+Bibliotecas de clases de Java.
+
+%description -n libgcj -l pl
+Biblioteki Klas Javy.
+
+%package -n libgcj-devel
+Summary: Development files for Java Class Libraries
+Summary(es): Ficheros de desarrollo para las bibliotecas de clases de Java
+Summary(pl): Pliki nag³ówkowe dla Bibliotek Klas Javy
+License: GPL with limited linking exception
+Group: Development/Libraries
+Requires: libgcj = %{epoch}:%{version}-%{release}
+Requires: zlib-devel
+Obsoletes: libgcj3-devel
+
+%description -n libgcj-devel
+Development files for Java Class Libraries.
+
+%description -n libgcj-devel -l es
+Ficheros de desarrollo para las bibliotecas de clases de Java.
+
+%description -n libgcj-devel -l pl
+Pliki nag³ówkowe dla Bibliotek Klas Javy.
+
+%package -n libgcj-static
+Summary: Static Java Class Libraries
+Summary(es): Bibliotecas estáticas de clases de Java
+Summary(pl): Statyczne Biblioteki Klas Javy
+License: GPL with limited linking exception
+Group: Development/Libraries
+Requires: libgcj-devel = %{epoch}:%{version}-%{release}
+Requires: libstdc++-devel = %{epoch}:%{version}-%{release}
+
+%description -n libgcj-static
+Static Java Class Libraries.
+
+%description -n libgcj-static -l es
+Bibliotecas estáticas de clases de Java.
+
+%description -n libgcj-static -l pl
+Statyczne Biblioteki Klas Javy.
+
+%package -n libffi
+Summary: Foreign Function Interface library
+Summary(es): Biblioteca de interfaz de funciones ajenas
+Summary(pl): Biblioteka zewnêtrznych wywo³añ funkcji
+License: BSD-like
+Group: Libraries
+
+%description -n libffi
+The libffi library provides a portable, high level programming
+interface to various calling conventions. This allows a programmer to
+call any function specified by a call interface description at run
+time.
+
+%description -n libffi -l es
+La biblioteca libffi provee una interfaz portable de programación de
+alto nivel para varias convenciones de llamada. Ello permite que un
+programador llame una función cualquiera especificada por una
+descripción de interfaz de llamada en el tiempo de ejecución.
+
+%description -n libffi -l pl
+Biblioteka libffi dostarcza przeno¶nego, wysokopoziomowego
+miêdzymordzia do ró¿nych konwencji wywo³añ funkcji. Pozwala to
+programi¶cie wywo³ywaæ dowolne funkcje podaj±c konwencjê wywo³ania w
+czasie wykonania.
+
+%package -n libffi-devel
+Summary: Development files for Foreign Function Interface library
+Summary(es): Ficheros de desarrollo para libffi
+Summary(pl): Pliki nag³ówkowe dla libffi
+License: BSD-like
+Group: Development/Libraries
+Requires: libffi = %{epoch}:%{version}-%{release}
+
+%description -n libffi-devel
+Development files for Foreign Function Interface library.
+
+%description -n libffi-devel -l es
+Ficheros de desarrollo para libffi.
+
+%description -n libffi-devel -l pl
+Pliki nag³ówkowe dla libffi.
+
+%package -n libffi-static
+Summary: Static Foreign Function Interface library
+Summary(es): Biblioteca libffi estática
+Summary(pl): Statyczna biblioteka libffi
+License: BSD-like
+Group: Development/Libraries
+Requires: libffi-devel = %{epoch}:%{version}-%{release}
+
+%description -n libffi-static
+Static Foreign Function Interface library.
+
+%description -n libffi-static -l es
+Biblioteca libffi estática.
+
+%description -n libffi-static -l pl
+Statyczna biblioteka libffi.
+
+%package objc
+Summary: Objective C support for gcc
+Summary(de): Objektive C-Unterstützung für gcc
+Summary(es): Soporte de Objective C para gcc
+Summary(fr): Gestion d'Objective C pour gcc
+Summary(pl): Obs³uga obiektowego C dla kompilatora gcc
+Summary(tr): gcc için Objective C desteði
+Group: Development/Languages
+Requires: %{name} = %{epoch}:%{version}-%{release}
+Requires: libobjc = %{epoch}:%{version}-%{release}
+Obsoletes: egcc-objc
+Obsoletes: egcs-objc
+
+%description objc
+This package adds Objective C support to the GNU Compiler Collection.
+Objective C is a object oriented derivative of the C language, mainly
+used on systems running NeXTSTEP. This package does not include the
+standard objective C object library.
+
+%description objc -l de
+Dieses Paket ergänzt den GNU-Compiler-Collection durch
+Objective-C-Support. Objective C ist ein objektorientiertes Derivat
+von C, das zur Hauptsache auf Systemen mit NeXTSTEP zum Einsatz kommt.
+Die Standard-Objective-C-Objekt-Library ist nicht Teil des Pakets.
+
+%description objc -l es
+Este paquete añade soporte de Objective C al GCC (colección de
+compiladores GNU). Objective C es un lenguaje orientado a objetos
+derivado de C, principalmente usado en sistemas que funcionan bajo
+NeXTSTEP. El paquete no incluye la biblioteca de objetos estándar de
+Objective C.
+
+%description objc -l fr
+Ce package ajoute un support Objective C a la collection de
+compilateurs GNU. L'Objective C est un langage orienté objetdérivé du
+langage C, principalement utilisé sur les systèmes NeXTSTEP. Ce
+package n'inclue pas la bibliothéque Objective C standard.
+
+%description objc -l pl
+Ten pakiet dodaje obs³ugê obiektowego C do kompilatora gcc. Obiektowe
+C (objc) jest zorientowan± obiektowo pochodn± jêzyka C, u¿ywan±
+g³ównie w systemach u¿ywaj±cych NeXTSTEP. W pakiecie nie ma
+standardowej biblioteki objc (która znajduje siê w osobnym pakiecie).
+
+%description objc -l tr
+Bu paket, GNU C derleyicisine Objective C desteði ekler. Objective C,
+C dilinin nesne yönelik bir türevidir ve NeXTSTEP altýnda çalýþan
+sistemlerde yaygýn olarak kullanýlýr. Standart Objective C nesne
+kitaplýðý bu pakette yer almaz.
+
+%package objc++
+Summary: Objective C++ support for gcc
+Summary(pl): Obs³uga jêzyka Objective C++ dla gcc
+Group: Development/Languages
+Requires: %{name}-c++ = %{epoch}:%{version}-%{release}
+Requires: %{name}-objc = %{epoch}:%{version}-%{release}
+
+%description objc++
+This package adds Objective C++ support to the GNU Compiler
+Collection.
+
+%description objc++ -l pl
+Ten pakiet dodaje obs³ugê jêzyka Objective C++ do zestawu
+kompilatorów GNU Compiler Collection.
+
+%package -n libobjc
+Summary: Objective C Libraries
+Summary(es): Bibliotecas de Objective C
+Summary(pl): Biblioteki Obiektowego C
+License: GPL v2+ with linking exception
+Group: Libraries
+Obsoletes: libobjc1
+
+%description -n libobjc
+Objective C Libraries.
+
+%description -n libobjc -l es
+Bibliotecas de Objective C.
+
+%description -n libobjc -l pl
+Biblioteki Obiektowego C.
+
+%package -n libobjc-static
+Summary: Static Objective C Libraries
+Summary(es): Bibliotecas estáticas de Objective C
+Summary(pl): Statyczne Biblioteki Obiektowego C
+License: GPL v2+ with linking exception
+Group: Development/Libraries
+Requires: libobjc = %{epoch}:%{version}-%{release}
+
+%description -n libobjc-static
+Static Objective C Libraries.
+
+%description -n libobjc-static -l es
+Bibliotecas estáticas de Objective C.
+
+%description -n libobjc-static -l pl
+Statyczne biblioteki Obiektowego C.
+
+%prep
+#setup -q -n gcc-%{version}
+%setup -q -n trunk
+
+%patch0 -p1
+%patch1 -p1
+%patch2 -p1
+%patch3 -p1
+%patch4 -p1
+%patch5 -p1
+
+# -fvisbility fixes...
+%patch6 -p1
+%patch7 -p1
+
+#patch9 -p1 NEEDS UPDATE
+# PRs
+%patch10 -p1
+%patch11 -p1
+%patch12 -p1
+%patch13 -p1
+%ifarch %{ix86} %{x8664}
+#patch14 -p1
+#patch15 -p1
+%endif
+%patch16 -p1
+%patch17 -p1
+%patch18 -p1
+%patch19 -p1
+%patch20 -p1
+
+# because we distribute modified version of gcc...
+perl -pi -e 's/(version.*)";/$1 (PLD Linux)";/' gcc/version.c
+perl -pi -e 's@(bug_report_url.*<URL:).*";@$1http://bugs.pld-linux.org/>";@' gcc/version.c
+
+mv ChangeLog ChangeLog.general
+
+%build
+cd gcc
+%{__autoconf}
+cd ..
+cd libjava/classpath
+%{__autoconf}
+cd ../..
+cp -f /usr/share/automake/config.sub .
+
+rm -rf obj-%{_target_platform}
+install -d obj-%{_target_platform}
+cd obj-%{_target_platform}
+
+CFLAGS="%{rpmcflags}" \
+CXXFLAGS="%{rpmcxxflags}" \
+TEXCONFIG=false \
+../configure \
+ --prefix=%{_prefix} \
+ --libdir=%{_libdir} \
+ --libexecdir=%{_libdir} \
+ --infodir=%{_infodir} \
+ --mandir=%{_mandir} \
+ --x-libraries=/usr/X11R6/%{_lib} \
+ --enable-shared \
+ --enable-threads=posix \
+ --enable-__cxa_atexit \
+ --enable-languages="c%{?with_cxx:,c++}%{?with_fortran:,f95}%{?with_objc:,objc}%{?with_objcxx:,obj-c++}%{?with_ada:,ada}%{?with_java:,java}" \
+ --enable-c99 \
+ --enable-long-long \
+ --%{?with_multilib:en}%{!?with_multilib:dis}able-multilib \
+ --enable-nls \
+ --disable-werror \
+ --with-gnu-as \
+ --with-gnu-ld \
+ --with-demangler-in-ld \
+ --with-system-zlib \
+ --with-slibdir=%{_slibdir} \
+ --without-x \
+ %{?with_fortran:--enable-cmath} \
+%if %{with java}
+ --enable-libgcj \
+ --enable-libgcj-multifile \
+ --enable-libgcj-database \
+ --enable-gtk-peer \
+ --enable-gtk-cairo \
+ --enable-jni \
+ --enable-xmlj \
+ --enable-alsa \
+ --enable-dssi \
+%endif
+ %{_target_platform}
+
+# not finished yet
+# --enable-java-awt=gtk \
+
+# horrible compile time hog with perfect tree checking
+# --enable-checking=all \
+
+cd ..
+
+%{__make} -C obj-%{_target_platform} \
+ %{?with_bootstrap:%{?with_profiling:profiled}bootstrap} \
+ GCJFLAGS="%{rpmcflags}" \
+ BOOT_CFLAGS="%{rpmcflags}" \
+ STAGE1_CFLAGS="%{rpmcflags} -O0" \
+ GNATLIBCFLAGS="%{rpmcflags}" \
+ LDFLAGS_FOR_TARGET="%{rpmldflags}" \
+ mandir=%{_mandir} \
+ infodir=%{_infodir}
+
+%{?with_tests:%{__make} -k -C obj-%{_target_platform} check 2>&1 ||:}
+
+%install
+rm -rf $RPM_BUILD_ROOT
+install -d $RPM_BUILD_ROOT{/lib,%{_aclocaldir},%{_datadir},%{_infodir}}
+
+cd obj-%{_target_platform}
+
+%{__make} -j1 install \
+ mandir=%{_mandir} \
+ infodir=%{_infodir} \
+ DESTDIR=$RPM_BUILD_ROOT
+
+install gcc/specs $RPM_BUILD_ROOT%{_libdir}/gcc/%{_target_platform}/%{version}
+
+%ifarch sparc64
+ln -sf %{_bindir}/sparc64-pld-linux-gcc \
+ $RPM_BUILD_ROOT%{_bindir}/sparc-pld-linux-gcc
+%endif
+
+ln -sf %{_bindir}/cpp $RPM_BUILD_ROOT/lib/cpp
+ln -sf gcc $RPM_BUILD_ROOT%{_bindir}/cc
+echo ".so gcc.1" > $RPM_BUILD_ROOT%{_mandir}/man1/cc.1
+
+libssp=$(cd $RPM_BUILD_ROOT%{_libdir}; echo libssp.so.*.*.*)
+mv $RPM_BUILD_ROOT{%{_libdir}/$libssp,%{_slibdir}}
+ln -sf %{_slibdir}/$libssp $RPM_BUILD_ROOT%{_libdir}/libssp.so
+%if %{with multilib}
+libssp=$($RPM_BUILD_ROOT%{_libdir32}; echo libssp.so.*.*.*`)
+mv $RPM_BUILD_ROOT{%{_libdir32}/$libssp,%{_slibdir32}}
+ln -sf %{_slibdir32}/$libssp $RPM_BUILD_ROOT%{_libdir32}/libssp.so
+%endif
+
+%if %{with fortran}
+ln -sf gfortran $RPM_BUILD_ROOT%{_bindir}/g95
+echo ".so gfortran.1" > $RPM_BUILD_ROOT%{_mandir}/man1/g95.1
+%endif
+
+%if %{with ada}
+# move ada shared libraries to proper place...
+mv -f $RPM_BUILD_ROOT%{_libdir}/gcc/*/*/adalib/*.so.1 \
+ $RPM_BUILD_ROOT%{_libdir}
+# check if symlink to be made is valid
+test -f $RPM_BUILD_ROOT%{_libdir}/libgnat-4.1.so.1
+ln -sf libgnat-4.1.so.1 $RPM_BUILD_ROOT%{_libdir}/libgnat-4.1.so
+ln -sf libgnarl-4.1.so.1 $RPM_BUILD_ROOT%{_libdir}/libgnarl-4.1.so
+ln -sf libgnat-4.1.so $RPM_BUILD_ROOT%{_libdir}/libgnat.so
+ln -sf libgnarl-4.1.so $RPM_BUILD_ROOT%{_libdir}/libgnarl.so
+%endif
+
+cd ..
+
+%if %{with java}
+install -d java-doc
+cp -f libjava/READ* java-doc
+cp -f fastjar/README java-doc/README.fastjar
+cp -f libffi/README java-doc/README.libffi
+cp -f libffi/LICENSE java-doc/LICENSE.libffi
+ln -sf %{_javadir}/libgcj-%{version}.jar $RPM_BUILD_ROOT%{_javadir}/libgcj.jar
+%endif
+%if %{with objc}
+cp -f libobjc/README gcc/objc/README.libobjc
+%endif
+
+# avoid -L poisoning in *.la - there should be only -L%{_libdir}/gcc/*/%{version}
+# normalize libdir, to avoid propagation of unnecessary RPATHs by libtool
+for f in libmudflap.la libmudflapth.la libssp.la \
+ %{?with_cxx:libstdc++.la libsupc++.la} \
+ %{?with_fortran:libgfortran.la libgfortranbegin.la} \
+ %{?with_java:libgcj.la libffi.la} \
+ %{?with_objc:libobjc.la};
+do
+ %{SOURCE1} $RPM_BUILD_ROOT%{_libdir}/$f %{_libdir} > $RPM_BUILD_ROOT%{_libdir}/$f.fixed
+ mv $RPM_BUILD_ROOT%{_libdir}/$f{.fixed,}
+%if %{with multilib}
+ %{SOURCE1} $RPM_BUILD_ROOT%{_libdir32}/$f %{_libdir32} > $RPM_BUILD_ROOT%{_libdir32}/$f.fixed
+ mv $RPM_BUILD_ROOT%{_libdir32}/$f{.fixed,}
+%endif
+done
+
+# include/ contains install-tools/include/* and headers that were fixed up
+# by fixincludes, we don't want former
+gccdir=$(echo $RPM_BUILD_ROOT%{_libdir}/gcc/*/*/)
+mkdir $gccdir/tmp
+
+# we have to save these however
+%{?with_java:mv $gccdir/include/{gcj,libffi/ffitarget.h,jawt.h,jawt_md.h,jni.h,jni_md.h,jvmpi.h} $gccdir/tmp}
+%{?with_objc:mv $gccdir/include/objc $gccdir/tmp}
+mv $gccdir/include/syslimits.h $gccdir/tmp
+rm -rf $gccdir/include
+mv $gccdir/tmp $gccdir/include
+cp $gccdir/install-tools/include/*.h $gccdir/include
+# but we don't want anything more from install-tools
+rm -rf $gccdir/install-tools
+
+%if %{with multilib}
+ln -sf %{_slibdir32}/libgcc_s.so.1 $gccdir/32/libgcc_s.so
+%endif
+ln -sf %{_slibdir}/libgcc_s.so.1 $gccdir/libgcc_s.so
+
+%find_lang gcc
+%{?with_cxx:%find_lang libstdc\+\+}
+
+# cvs snap doesn't contain (release does) below files,
+# so let's create dummy entries to satisfy %%files.
+[ ! -f NEWS ] && touch NEWS
+[ ! -f libgfortran/AUTHORS ] && touch libgfortran/AUTHORS
+[ ! -f libgfortran/README ] && touch libgfortran/README
+
+%clean
+rm -rf $RPM_BUILD_ROOT
+
+%post
+[ ! -x /usr/sbin/fix-info-dir ] || /usr/sbin/fix-info-dir -c %{_infodir} >/dev/null 2>&1
+
+%postun
+[ ! -x /usr/sbin/fix-info-dir ] || /usr/sbin/fix-info-dir -c %{_infodir} >/dev/null 2>&1
+
+%post ada
+[ ! -x /usr/sbin/fix-info-dir ] || /usr/sbin/fix-info-dir -c %{_infodir} >/dev/null 2>&1
+
+%postun ada
+[ ! -x /usr/sbin/fix-info-dir ] || /usr/sbin/fix-info-dir -c %{_infodir} >/dev/null 2>&1
+
+%post fortran
+[ ! -x /usr/sbin/fix-info-dir ] || /usr/sbin/fix-info-dir -c %{_infodir} >/dev/null 2>&1
+
+%postun fortran
+[ ! -x /usr/sbin/fix-info-dir ] || /usr/sbin/fix-info-dir -c %{_infodir} >/dev/null 2>&1
+
+%post java
+[ ! -x /usr/sbin/fix-info-dir ] || /usr/sbin/fix-info-dir -c %{_infodir} >/dev/null 2>&1
+
+%postun java
+[ ! -x /usr/sbin/fix-info-dir ] || /usr/sbin/fix-info-dir -c %{_infodir} >/dev/null 2>&1
+
+%post -p /sbin/ldconfig -n libgcc
+%postun -p /sbin/ldconfig -n libgcc
+%post -p /sbin/ldconfig -n libmudflap
+%postun -p /sbin/ldconfig -n libmudflap
+%post -p /sbin/ldconfig -n libgnat
+%postun -p /sbin/ldconfig -n libgnat
+%post -p /sbin/ldconfig -n libstdc++
+%postun -p /sbin/ldconfig -n libstdc++
+%post -p /sbin/ldconfig -n libgfortran
+%postun -p /sbin/ldconfig -n libgfortran
+%post -p /sbin/ldconfig -n libgcj
+%postun -p /sbin/ldconfig -n libgcj
+%post -p /sbin/ldconfig -n libffi
+%postun -p /sbin/ldconfig -n libffi
+%post -p /sbin/ldconfig -n libobjc
+%postun -p /sbin/ldconfig -n libobjc
+
+%files -f gcc.lang
+%defattr(644,root,root,755)
+%doc ChangeLog.general MAINTAINERS NEWS
+# bugs.html faq.html
+%doc gcc/{ChangeLog,ONEWS,README.Portability}
+%dir %{_libdir}/gcc
+%dir %{_libdir}/gcc/*
+%dir %{_libdir}/gcc/*/*
+%dir %{_libdir}/gcc/*/*/include
+
+%attr(755,root,root) %{_bindir}/*-gcc*
+%attr(755,root,root) %{_bindir}/gcc
+%attr(755,root,root) %{_bindir}/gccbug
+%attr(755,root,root) %{_bindir}/gcov
+%attr(755,root,root) %{_bindir}/cc
+%attr(755,root,root) %{_bindir}/cpp
+
+%{_includedir}/ssp
+
+%{_mandir}/man1/cc.1*
+%{_mandir}/man1/cpp.1*
+%{_mandir}/man1/gcc.1*
+%{_mandir}/man1/gcov.1*
+
+%{_infodir}/cpp*
+%{_infodir}/gcc*
+
+%attr(755,root,root) /lib/cpp
+
+%attr(755,root,root) %{_slibdir}/lib*.so
+%{_libdir}/libssp.la
+%attr(755,root,root) %{_libdir}/libssp.a
+%attr(755,root,root) %{_libdir}/libssp.so
+%{_libdir}/libssp_nonshared.a
+%{_libdir}/libssp_nonshared.la
+%if %{with multilib}
+%dir %{_libdir}/gcc/*/*/32
+%{_libdir}/gcc/*/*/32/libgcov.a
+%{_libdir}/gcc/*/*/32/libgcc.a
+%{_libdir}/gcc/*/*/32/libgcc_eh.a
+%{_libdir}/gcc/*/*/32/libgcc_s.so
+%{_libdir32}/libssp.la
+%attr(755,root,root) %{_libdir32}/libssp.a
+%attr(755,root,root) %{_libdir32}/libssp.so
+%{_libdir32}/libssp_nonshared.a
+%{_libdir32}/libssp_nonshared.la
+%endif
+%{_libdir}/gcc/*/*/libgcov.a
+%{_libdir}/gcc/*/*/libgcc.a
+%{_libdir}/gcc/*/*/libgcc_eh.a
+%{_libdir}/gcc/*/*/libgcc_s.so
+%{_libdir}/gcc/*/*/specs
+%if %{with multilib}
+%{_libdir}/gcc/*/*/32/crt*.o
+%endif
+%{_libdir}/gcc/*/*/crt*.o
+%attr(755,root,root) %{_libdir}/gcc/*/*/cc1
+%attr(755,root,root) %{_libdir}/gcc/*/*/collect2
+
+%{_libdir}/gcc/*/*/include/*.h
+
+%files -n libgcc
+%defattr(644,root,root,755)
+%if %{with multilib}
+%attr(755,root,root) %{_slibdir32}/lib*.so.*
+%endif
+%attr(755,root,root) %{_slibdir}/lib*.so.*
+
+%files -n libmudflap
+%defattr(644,root,root,755)
+%if %{with multilib}
+%attr(755,root,root) %{_libdir32}/libmudflap*.so.*.*.*
+%endif
+%attr(755,root,root) %{_libdir}/libmudflap*.so.*.*.*
+
+%files -n libmudflap-devel
+%defattr(644,root,root,755)
+%{_includedir}/mf-runtime.h
+%if %{with multilib}
+%{_libdir32}/libmudflap*.la
+%attr(755,root,root) %{_libdir32}/libmudflap*.so
+%endif
+%{_libdir}/libmudflap*.la
+%attr(755,root,root) %{_libdir}/libmudflap*.so
+
+%files -n libmudflap-static
+%defattr(644,root,root,755)
+%if %{with multilib}
+%{_libdir32}/libmudflap*.a
+%endif
+%{_libdir}/libmudflap*.a
+
+%if %{with ada}
+%files ada
+%defattr(644,root,root,755)
+%doc gcc/ada/ChangeLog
+%attr(755,root,root) %{_bindir}/gnat*
+%attr(755,root,root) %{_bindir}/gpr*
+%attr(755,root,root) %{_libdir}/libgnarl*.so
+%attr(755,root,root) %{_libdir}/libgnat*.so
+%attr(755,root,root) %{_libdir}/gcc/*/*/gnat1
+%{_libdir}/gcc/*/*/adainclude
+%dir %{_libdir}/gcc/*/*/adalib
+%{_libdir}/gcc/*/*/adalib/*.ali
+%{_libdir}/gcc/*/*/adalib/g-trasym.o
+%{_libdir}/gcc/*/*/adalib/libgccprefix.a
+%ifarch %{ix86}
+%{_libdir}/gcc/*/*/adalib/libgmem.a
+%endif
+%{_infodir}/gnat*
+
+%files -n libgnat
+%defattr(644,root,root,755)
+%attr(755,root,root) %{_libdir}/libgnarl*.so.1
+%attr(755,root,root) %{_libdir}/libgnat*.so.1
+
+%files -n libgnat-static
+%defattr(644,root,root,755)
+%{_libdir}/gcc/*/*/adalib/libgnarl.a
+%{_libdir}/gcc/*/*/adalib/libgnat.a
+%endif
+
+%if %{with cxx}
+%files c++
+%defattr(644,root,root,755)
+%doc gcc/cp/{ChangeLog,NEWS}
+%attr(755,root,root) %{_bindir}/g++
+%attr(755,root,root) %{_bindir}/*-g++
+%attr(755,root,root) %{_bindir}/c++
+%attr(755,root,root) %{_bindir}/*-c++
+%attr(755,root,root) %{_libdir}/gcc/*/*/cc1plus
+%if %{with multilib}
+%{_libdir32}/libsupc++.a
+%{_libdir32}/libsupc++.la
+%endif
+%{_libdir}/libsupc++.a
+%{_libdir}/libsupc++.la
+%{_mandir}/man1/g++.1*
+
+%files -n libstdc++ -f libstdc++.lang
+%defattr(644,root,root,755)
+%doc libstdc++-v3/{ChangeLog,README}
+%if %{with multilib}
+%attr(755,root,root) %{_libdir32}/libstdc++.so.*.*.*
+%endif
+%attr(755,root,root) %{_libdir}/libstdc++.so.*.*.*
+
+%files -n libstdc++-devel
+%defattr(644,root,root,755)
+%doc libstdc++-v3/docs/html
+%dir %{_includedir}/c++
+%{_includedir}/c++/%{version}
+%if %{with java}
+%exclude %{_includedir}/c++/%{version}/java
+%exclude %{_includedir}/c++/%{version}/javax
+%exclude %{_includedir}/c++/%{version}/gcj
+%exclude %{_includedir}/c++/%{version}/gnu
+%endif
+%ifnarch sparc
+%exclude %{_includedir}/c++/%{version}/*/bits/stdc++.h.gch
+%endif
+%if %{with multilib}
+%{_libdir32}/libstdc++.la
+%attr(755,root,root) %{_libdir32}/libstdc++.so
+%endif
+%{_libdir}/libstdc++.la
+%attr(755,root,root) %{_libdir}/libstdc++.so
+
+%files -n libstdc++-static
+%defattr(644,root,root,755)
+%if %{with multilib}
+%{_libdir32}/libstdc++.a
+%endif
+%{_libdir}/libstdc++.a
+%endif
+
+%if %{with fortran}
+%files fortran
+%defattr(644,root,root,755)
+%doc gcc/fortran/ChangeLog
+%attr(755,root,root) %{_bindir}/g95
+%attr(755,root,root) %{_bindir}/gfortran
+%attr(755,root,root) %{_bindir}/*-gfortran
+%{_infodir}/gfortran*
+%attr(755,root,root) %{_libdir}/gcc/*/*/f951
+%if %{with multilib}
+%{_libdir32}/libgfortranbegin.a
+%{_libdir32}/libgfortranbegin.la
+%{_libdir32}/libgfortran.la
+%attr(755,root,root) %{_libdir32}/libgfortran.so
+%endif
+%{_libdir}/libgfortranbegin.a
+%{_libdir}/libgfortranbegin.la
+%{_libdir}/libgfortran.la
+%attr(755,root,root) %{_libdir}/libgfortran.so
+%{_mandir}/man1/g95.1*
+%{_mandir}/man1/gfortran.1*
+
+%files -n libgfortran
+%defattr(644,root,root,755)
+%doc libgfortran/{AUTHORS,README,ChangeLog}
+%if %{with multilib}
+%attr(755,root,root) %{_libdir32}/libgfortran.so.*.*.*
+%endif
+%attr(755,root,root) %{_libdir}/libgfortran.so.*.*.*
+
+%files -n libgfortran-static
+%defattr(644,root,root,755)
+%if %{with multilib}
+%{_libdir32}/libgfortran.a
+%endif
+%{_libdir}/libgfortran.a
+%endif
+
+%if %{with java}
+%files java
+%defattr(644,root,root,755)
+%doc gcc/java/ChangeLog java-doc/*
+%attr(755,root,root) %{_bindir}/fastjar
+%attr(755,root,root) %{_bindir}/gcj*
+%attr(755,root,root) %{_bindir}/gjnih
+%attr(755,root,root) %{_bindir}/grepjar
+%attr(755,root,root) %{_bindir}/grmi*
+%attr(755,root,root) %{_bindir}/jcf-dump
+%attr(755,root,root) %{_bindir}/jv-*
+%attr(755,root,root) %{_bindir}/*-gcj*
+%attr(755,root,root) %{_libdir}/gcc/*/*/jc1
+%attr(755,root,root) %{_libdir}/gcc/*/*/jvgenmain
+%{_infodir}/fastjar*
+%{_infodir}/gcj*
+%{_mandir}/man1/fastjar*
+%{_mandir}/man1/gcj*
+%{_mandir}/man1/gjnih*
+%{_mandir}/man1/grepjar*
+%{_mandir}/man1/grmi*
+%{_mandir}/man1/jcf-*
+%{_mandir}/man1/jv-*
+
+%files -n libgcj
+%defattr(644,root,root,755)
+%doc libjava/{ChangeLog,LIBGCJ_LICENSE,NEWS,README,THANKS}
+%attr(755,root,root) %{_bindir}/addr2name.awk
+%attr(755,root,root) %{_bindir}/gij
+%dir %{_libdir}/classpath
+%attr(755,root,root) %{_libdir}/classpath/libgjsmalsa.so.*.*.*
+%attr(755,root,root) %{_libdir}/classpath/libgjsmdssi.so.*.*.*
+%dir %{_libdir}/gcj-%{version}
+%{_libdir}/gcj-%{version}/classmap.db
+%attr(755,root,root) %{_libdir}/lib*cj*.so.*.*.*
+%attr(755,root,root) %{_libdir}/libgij.so.*.*.*
+%{_libdir}/logging.properties
+%{_javadir}/libgcj*.jar
+%{_mandir}/man1/gij*
+
+%files -n libgcj-devel
+%defattr(644,root,root,755)
+%{_includedir}/c++/%{version}/java
+%{_includedir}/c++/%{version}/javax
+%{_includedir}/c++/%{version}/gcj
+%{_includedir}/c++/%{version}/gnu
+%{_libdir}/classpath/libgjsmalsa.la
+%attr(755,root,root) %{_libdir}/classpath/libgjsmalsa.so
+%{_libdir}/classpath/libgjsmdssi.la
+%attr(755,root,root) %{_libdir}/classpath/libgjsmdssi.so
+%{_libdir}/gcc/*/*/include/gcj
+%{_libdir}/gcc/*/*/include/jawt.h
+%{_libdir}/gcc/*/*/include/jawt_md.h
+%{_libdir}/gcc/*/*/include/jni.h
+%{_libdir}/gcc/*/*/include/jvmpi.h
+%dir %{_libdir}/security
+%{_libdir}/security/*
+%{_libdir}/lib*cj.spec
+%{_libdir}/lib*cj*.la
+%attr(755,root,root) %{_libdir}/lib*cj*.so
+%{_libdir}/libgij.la
+%attr(755,root,root) %{_libdir}/libgij.so
+%{_pkgconfigdir}/libgcj.pc
+
+%files -n libgcj-static
+%defattr(644,root,root,755)
+%{_libdir}/lib*cj*.a
+%{_libdir}/libgij.a
+
+%files -n libffi
+%defattr(644,root,root,755)
+%doc libffi/{ChangeLog,ChangeLog.libgcj,LICENSE,README}
+%attr(755,root,root) %{_libdir}/libffi.so.*.*.*
+
+%files -n libffi-devel
+%defattr(644,root,root,755)
+%{_libdir}/gcc/*/*/include/ffitarget.h
+%attr(755,root,root) %{_libdir}/libffi.so
+%{_libdir}/libffi.la
+%{_includedir}/ffi.h
+
+%files -n libffi-static
+%defattr(644,root,root,755)
+%{_libdir}/libffi.a
+%endif
+
+%if %{with objc}
+%files objc
+%defattr(644,root,root,755)
+%doc gcc/objc/README
+%attr(755,root,root) %{_libdir}/gcc/*/*/cc1obj
+%if %{with multilib}
+%attr(755,root,root) %{_libdir32}/libobjc.so
+%{_libdir32}/libobjc.la
+%endif
+%attr(755,root,root) %{_libdir}/libobjc.so
+%{_libdir}/libobjc.la
+%{_libdir}/gcc/*/*/include/objc
+
+%files -n libobjc
+%defattr(644,root,root,755)
+%doc libobjc/{ChangeLog,README*}
+%if %{with multilib}
+%attr(755,root,root) %{_libdir32}/libobjc.so.*.*.*
+%endif
+%attr(755,root,root) %{_libdir}/libobjc.so.*.*.*
+
+%files -n libobjc-static
+%defattr(644,root,root,755)
+%if %{with multilib}
+%{_libdir32}/libobjc.a
+%endif
+%{_libdir}/libobjc.a
+%endif
+
+%if %{with objcxx}
+%files objc++
+%defattr(644,root,root,755)
+%doc gcc/objcp/ChangeLog
+%attr(755,root,root) %{_libdir}/gcc/*/*/cc1objplus
+%endif