public inbox for git-commits@fedoraproject.org
help / color / mirror / Atom feed
From: Jakub Jelinek <jakub@fedoraproject.org>
To: git-commits@fedoraproject.org
Subject: [rpms/gcc] rhel-f41-base: 4.3.0-0.2
Date: Mon, 29 Jun 2026 12:23:32 GMT	[thread overview]
Message-ID: <178273581230.1.7521480350724808096.rpms-gcc-3daebbc6176a@fedoraproject.org> (raw)

A new commit has been pushed.

Repo   : rpms/gcc
Branch : rhel-f41-base
Commit : 3daebbc6176a0b10cf7c70fe42613e9594b39f44
Author : Jakub Jelinek <jakub@fedoraproject.org>
Date   : 2007-12-12T20:33:17+00:00
Stats  : +2895/-18452 in 99 file(s)
URL    : https://src.fedoraproject.org/rpms/gcc/c/3daebbc6176a0b10cf7c70fe42613e9594b39f44?branch=rhel-f41-base

Log:
4.3.0-0.2

---
diff --git a/.cvsignore b/.cvsignore
index d742735..614a962 100644
--- a/.cvsignore
+++ b/.cvsignore
@@ -1 +1 @@
-gcc-4.1.2-20071124.tar.bz2
+gcc-4.3.0-20071212.tar.bz2

diff --git a/gcc41-ada-pr18302.patch b/gcc41-ada-pr18302.patch
deleted file mode 100644
index 9e98b97..0000000
--- a/gcc41-ada-pr18302.patch
+++ /dev/null
@@ -1,19 +0,0 @@
---- gcc/testsuite/ada/acats/run_all.sh	26 Apr 2004 21:15:54 -0000	1.18
-+++ gcc/testsuite/ada/acats/run_all.sh	17 Feb 2005 14:24:49 -0000
-@@ -11,9 +11,16 @@
- 
- gccflags="-O2"
- gnatflags="-gnatws"
-+timeout=120
- 
- target_run () {
-+  sh -c "(sleep $timeout; kill \$\$) &
-+x=\$!
- $*
-+s=\$?
-+kill \$x
-+exit \$s
-+"
- }
- 
- # End of customization section.

diff --git a/gcc41-ada-tweaks.patch b/gcc41-ada-tweaks.patch
deleted file mode 100644
index 992ed65..0000000
--- a/gcc41-ada-tweaks.patch
+++ /dev/null
@@ -1,67 +0,0 @@
-2004-10-04  Jakub Jelinek  <jakub@redhat.com>
-
-	* gnat_ugn.texi: Add : and . to direntry.
-	* gnat-style.texi: Change dircategory to GNU Ada tools.
-
-2005-02-08  Jakub Jelinek  <jakub@redhat.com>
-
-	* Makefile.in (gnatlib-shared-default): Disallow dlopening of
-	libgnat.so.
-
---- gcc/ada/gnat-style.texi	(.../gcc-4_0-branch)	(revision 107266)
-+++ gcc/ada/gnat-style.texi	(.../redhat/gcc-4_0-branch)	(revision 107414)
-@@ -28,7 +28,7 @@
- @setchapternewpage odd
- 
- 
--@dircategory Programming
-+@dircategory GNU Ada tools
- @direntry
- * gnat-style: (gnat-style).      GNAT Coding Style
- @end direntry
---- gcc/ada/Makefile.in	(.../gcc-4_0-branch)	(revision 107266)
-+++ gcc/ada/Makefile.in	(.../redhat/gcc-4_0-branch)	(revision 107414)
-@@ -1316,7 +1316,7 @@
-   LIBRARY_VERSION := $(LIB_VERSION)
- endif
- 
--ifeq ($(strip $(filter-out powerpc% linux%,$(arch) $(osys))),)
-+ifeq ($(strip $(filter-out powerpc% ppc% linux%,$(arch) $(osys))),)
-   LIBGNAT_TARGET_PAIRS = \
-   a-intnam.ads<a-intnam-linux.ads \
-   s-inmaop.adb<s-inmaop-posix.adb \
-@@ -1862,7 +1862,7 @@
- 	     THREAD_KIND="$(THREAD_KIND)" \
-              gnatlib
- 	$(RM) rts/libgna*$(soext)
--	cd rts; ../../xgcc -B../../ -shared $(TARGET_LIBGCC2_CFLAGS) \
-+	cd rts; ../../xgcc -B../../ -shared -Wl,-z,nodlopen $(TARGET_LIBGCC2_CFLAGS) \
- 		-o libgnat$(hyphen)$(LIBRARY_VERSION)$(soext) \
- 		$(GNATRTL_NONTASKING_OBJS) $(LIBGNAT_OBJS) \
- 		$(SO_OPTS)libgnat$(hyphen)$(LIBRARY_VERSION)$(soext) \
---- gcc/ada/gnat_ugn.texi	(.../gcc-4_0-branch)	(revision 107266)
-+++ gcc/ada/gnat_ugn.texi	(.../redhat/gcc-4_0-branch)	(revision 107414)
-@@ -101,7 +101,7 @@
- @settitle @value{EDITION} User's Guide @value{PLATFORM}
- @dircategory GNU Ada tools
- @direntry
--* @value{EDITION} User's Guide (@value{FILE}) @value{PLATFORM}
-+* @value{EDITION} User's Guide: (@value{FILE}). User's Guide for GNU Ada Tools.
- @end direntry
- 
- @include gcc-common.texi
---- gcc/ada/link.c	(.../gcc-4_0-branch)	(revision 107266)
-+++ gcc/ada/link.c	(.../redhat/gcc-4_0-branch)	(revision 107414)
-@@ -164,9 +164,9 @@
- 
- #elif defined (linux)
- const char *__gnat_object_file_option = "";
--const char *__gnat_run_path_option = "-Wl,-rpath,";
--char __gnat_shared_libgnat_default = STATIC;
--int __gnat_link_max = 8192;
-+const char *__gnat_run_path_option = "";
-+char __gnat_shared_libgnat_default = SHARED;
-+int __gnat_link_max = 131072;
- unsigned char __gnat_objlist_file_supported = 1;
- unsigned char __gnat_using_gnu_linker = 1;
- const char *__gnat_object_library_extension = ".a";

diff --git a/gcc41-artificial-attrib.patch b/gcc41-artificial-attrib.patch
deleted file mode 100644
index c1b1dd8..0000000
--- a/gcc41-artificial-attrib.patch
+++ /dev/null
@@ -1,4198 +0,0 @@
-2007-09-23  Jakub Jelinek  <jakub@redhat.com>
-
-	* tree.h (block_nonartificial_location): New prototype.
-	* tree.c (block_nonartificial_location): New function.
-	* dwarf2out.c (gen_subprogram_die): Add DW_AT_artificial
-	if artificial attribute is present on abstract inline decl.
-	* c-common.c (handle_artificial_attribute): New function.
-	(c_common_attribute_table): Add artificial attribute.
-	* final.c (override_filename, override_linenum): New variables.
-	(final_scan_insn): For DBX_DEBUG or SDB_DEBUG, set override_filename
-	and override_linenum if inside of a block inlined from
-	__attribute__((__artificial__)) function.
-	(notice_source_line): Honor override_filename and override_linenum.
-	* doc/extend.texi: Document __attribute__((__artificial__)).
-	* config/i386/emmintrin.h: Add __artificial__ attribute to
-	all __always_inline__ functions.
-	* config/i386/mmintrin.h: Likewise.
-	* config/i386/mm3dnow.h: Likewise.
-	* config/i386/pmmintrin.h: Likewise.
-	* config/i386/ammintrin.h: Likewise.
-	* config/i386/xmmintrin.h: Likewise.
-
---- gcc/doc/extend.texi.jj	2007-09-25 12:23:05.000000000 +0200
-+++ gcc/doc/extend.texi	2007-09-25 15:04:15.000000000 +0200
-@@ -1589,7 +1589,8 @@ attributes are currently defined for fun
- @code{section}, @code{constructor}, @code{destructor}, @code{used},
- @code{unused}, @code{deprecated}, @code{weak}, @code{malloc},
- @code{alias}, @code{warn_unused_result}, @code{nonnull},
--@code{gnu_inline} and @code{externally_visible}.  Several other
-+@code{gnu_inline}, @code{externally_visible} and @code{artificial}.
-+Several other
- attributes are defined for functions on particular target systems.  Other
- attributes, including @code{section} are supported for variables declarations
- (@pxref{Variable Attributes}) and for types (@pxref{Type Attributes}).
-@@ -1671,6 +1672,14 @@ In C++, this attribute does not depend o
- but it still requires the @code{inline} keyword to enable its special
- behavior.
- 
-+@cindex @code{artificial} function attribute
-+@item artificial
-+This attribute is useful for small inline wrappers which if possible
-+should appear during debugging as a unit, depending on the debug
-+info format it will either mean marking the function as artificial
-+or using the caller location for all instructions within the inlined
-+body.
-+
- @cindex @code{flatten} function attribute
- @item flatten
- Generally, inlining into a function is limited.  For a function marked with
---- gcc/tree.c.jj	2007-04-03 13:18:26.000000000 +0200
-+++ gcc/tree.c	2007-09-25 15:01:49.000000000 +0200
-@@ -7638,4 +7638,40 @@ empty_body_p (tree stmt)
-   return true;
- }
- 
-+/* If BLOCK is inlined from an __attribute__((__artificial__))
-+   routine, return pointer to location from where it has been
-+   called.  */
-+location_t *
-+block_nonartificial_location (tree block)
-+{
-+  location_t *ret = NULL;
-+
-+  while (block && TREE_CODE (block) == BLOCK
-+	 && BLOCK_ABSTRACT_ORIGIN (block))
-+    {
-+      tree ao = BLOCK_ABSTRACT_ORIGIN (block);
-+
-+      while (TREE_CODE (ao) == BLOCK && BLOCK_ABSTRACT_ORIGIN (ao))
-+	ao = BLOCK_ABSTRACT_ORIGIN (ao);
-+
-+      if (TREE_CODE (ao) == FUNCTION_DECL)
-+	{
-+	  /* If AO is an artificial inline, point RET to the
-+	     call site locus at which it has been inlined and continue
-+	     the loop, in case AO's caller is also an artificial
-+	     inline.  */
-+	  if (DECL_DECLARED_INLINE_P (ao)
-+	      && lookup_attribute ("artificial", DECL_ATTRIBUTES (ao)))
-+	    ret = &BLOCK_SOURCE_LOCATION (block);
-+	  else
-+	    break;
-+	}
-+      else if (TREE_CODE (ao) != BLOCK)
-+	break;
-+
-+      block = BLOCK_SUPERCONTEXT (block);
-+    }
-+  return ret;
-+}
-+
- #include "gt-tree.h"
---- gcc/tree.h.jj	2007-09-25 12:20:12.000000000 +0200
-+++ gcc/tree.h	2007-09-25 15:02:37.000000000 +0200
-@@ -4270,6 +4270,8 @@ extern tree build_addr (tree, tree);
- extern bool fields_compatible_p (tree, tree);
- extern tree find_compatible_field (tree, tree);
- 
-+extern location_t *block_nonartificial_location (tree);
-+
- /* In function.c */
- extern void expand_main_function (void);
- extern void init_dummy_function_start (void);
---- gcc/final.c.jj	2007-02-20 22:39:12.000000000 +0100
-+++ gcc/final.c	2007-09-25 15:01:49.000000000 +0200
-@@ -141,6 +141,10 @@ static int high_function_linenum;
- /* Filename of last NOTE.  */
- static const char *last_filename;
- 
-+/* Override filename and line number.  */
-+static const char *override_filename;
-+static int override_linenum;
-+
- /* Whether to force emission of a line note before the next insn.  */
- static bool force_source_line = false;
-   
-@@ -1822,6 +1826,18 @@ final_scan_insn (rtx insn, FILE *file, i
- 	      /* Mark this block as output.  */
- 	      TREE_ASM_WRITTEN (NOTE_BLOCK (insn)) = 1;
- 	    }
-+	  if (write_symbols == DBX_DEBUG
-+	      || write_symbols == SDB_DEBUG)
-+	    {
-+	      location_t *locus_ptr
-+		= block_nonartificial_location (NOTE_BLOCK (insn));
-+
-+	      if (locus_ptr != NULL)
-+		{
-+		  override_filename = LOCATION_FILE (*locus_ptr);
-+		  override_linenum = LOCATION_LINE (*locus_ptr);
-+		}
-+	    }
- 	  break;
- 
- 	case NOTE_INSN_BLOCK_END:
-@@ -1841,6 +1857,24 @@ final_scan_insn (rtx insn, FILE *file, i
- 
- 	      (*debug_hooks->end_block) (high_block_linenum, n);
- 	    }
-+	  if (write_symbols == DBX_DEBUG
-+	      || write_symbols == SDB_DEBUG)
-+	    {
-+	      tree outer_block = BLOCK_SUPERCONTEXT (NOTE_BLOCK (insn));
-+	      location_t *locus_ptr
-+		= block_nonartificial_location (outer_block);
-+
-+	      if (locus_ptr != NULL)
-+		{
-+		  override_filename = LOCATION_FILE (*locus_ptr);
-+		  override_linenum = LOCATION_LINE (*locus_ptr);
-+		}
-+	      else
-+		{
-+		  override_filename = NULL;
-+		  override_linenum = 0;
-+		}
-+	    }
- 	  break;
- 
- 	case NOTE_INSN_DELETED_LABEL:
-@@ -2521,8 +2555,19 @@ final_scan_insn (rtx insn, FILE *file, i
- static bool
- notice_source_line (rtx insn)
- {
--  const char *filename = insn_file (insn);
--  int linenum = insn_line (insn);
-+  const char *filename;
-+  int linenum;
-+
-+  if (override_filename)
-+    {
-+      filename = override_filename;
-+      linenum = override_linenum;
-+    }
-+  else
-+    {
-+      filename = insn_file (insn);
-+      linenum = insn_line (insn);
-+    }
- 
-   if (filename
-       && (force_source_line
---- gcc/dwarf2out.c.jj	2007-04-03 13:13:27.000000000 +0200
-+++ gcc/dwarf2out.c	2007-09-25 15:01:49.000000000 +0200
-@@ -11667,6 +11667,10 @@ gen_subprogram_die (tree decl, dw_die_re
-             add_AT_unsigned (subr_die, DW_AT_inline, DW_INL_not_inlined);
- 	}
- 
-+      if (DECL_DECLARED_INLINE_P (decl)
-+	  && lookup_attribute ("artificial", DECL_ATTRIBUTES (decl)))
-+	add_AT_flag (subr_die, DW_AT_artificial, 1);
-+
-       equate_decl_number_to_die (decl, subr_die);
-     }
-   else if (!DECL_EXTERNAL (decl))
---- gcc/c-common.c.jj	2007-03-27 15:40:15.000000000 +0200
-+++ gcc/c-common.c	2007-09-25 15:01:49.000000000 +0200
-@@ -505,8 +505,8 @@ static tree handle_noreturn_attribute (t
- static tree handle_noinline_attribute (tree *, tree, tree, int, bool *);
- static tree handle_always_inline_attribute (tree *, tree, tree, int,
- 					    bool *);
--static tree handle_gnu_inline_attribute (tree *, tree, tree, int,
--					 bool *);
-+static tree handle_gnu_inline_attribute (tree *, tree, tree, int, bool *);
-+static tree handle_artificial_attribute (tree *, tree, tree, int, bool *);
- static tree handle_flatten_attribute (tree *, tree, tree, int, bool *);
- static tree handle_used_attribute (tree *, tree, tree, int, bool *);
- static tree handle_unused_attribute (tree *, tree, tree, int, bool *);
-@@ -577,6 +577,8 @@ const struct attribute_spec c_common_att
- 			      handle_always_inline_attribute },
-   { "gnu_inline",             0, 0, true,  false, false,
- 			      handle_gnu_inline_attribute },
-+  { "artificial",             0, 0, true,  false, false,
-+			      handle_artificial_attribute },
-   { "flatten",                0, 0, true,  false, false,
-                               handle_flatten_attribute },
-   { "used",                   0, 0, true,  false, false,
-@@ -4180,6 +4182,29 @@ handle_gnu_inline_attribute (tree *node,
-   return NULL_TREE;
- }
- 
-+/* Handle an "artificial" attribute; arguments as in
-+   struct attribute_spec.handler.  */
-+
-+static tree
-+handle_artificial_attribute (tree *node, tree name,
-+			     tree ARG_UNUSED (args),
-+			     int ARG_UNUSED (flags),
-+			     bool *no_add_attrs)
-+{
-+  if (TREE_CODE (*node) == FUNCTION_DECL && DECL_DECLARED_INLINE_P (*node))
-+    {
-+      /* Do nothing else, just set the attribute.  We'll get at
-+	 it later with lookup_attribute.  */
-+    }
-+  else
-+    {
-+      warning (OPT_Wattributes, "%qE attribute ignored", name);
-+      *no_add_attrs = true;
-+    }
-+
-+  return NULL_TREE;
-+}
-+
- /* Handle a "flatten" attribute; arguments as in
-    struct attribute_spec.handler.  */
- 
---- gcc/config/i386/mmintrin.h.jj	2007-03-27 15:40:18.000000000 +0200
-+++ gcc/config/i386/mmintrin.h	2007-09-25 15:06:30.000000000 +0200
-@@ -43,26 +43,26 @@ typedef short __v4hi __attribute__ ((__v
- typedef char __v8qi __attribute__ ((__vector_size__ (8)));
- 
- /* Empty the multimedia state.  */
--static __inline void __attribute__((__always_inline__))
-+static __inline void __attribute__((__always_inline__, __artificial__))
- _mm_empty (void)
- {
-   __builtin_ia32_emms ();
- }
- 
--static __inline void __attribute__((__always_inline__))
-+static __inline void __attribute__((__always_inline__, __artificial__))
- _m_empty (void)
- {
-   _mm_empty ();
- }
- 
- /* Convert I to a __m64 object.  The integer is zero-extended to 64-bits.  */
--static __inline __m64  __attribute__((__always_inline__))
-+static __inline __m64  __attribute__((__always_inline__, __artificial__))
- _mm_cvtsi32_si64 (int __i)
- {
-   return (__m64) __builtin_ia32_vec_init_v2si (__i, 0);
- }
- 
--static __inline __m64  __attribute__((__always_inline__))
-+static __inline __m64  __attribute__((__always_inline__, __artificial__))
- _m_from_int (int __i)
- {
-   return _mm_cvtsi32_si64 (__i);
-@@ -72,26 +72,26 @@ _m_from_int (int __i)
- /* Convert I to a __m64 object.  */
- 
- /* Intel intrinsic.  */
--static __inline __m64  __attribute__((__always_inline__))
-+static __inline __m64  __attribute__((__always_inline__, __artificial__))
- _m_from_int64 (long long __i)
- {
-   return (__m64) __i;
- }
- 
--static __inline __m64  __attribute__((__always_inline__))
-+static __inline __m64  __attribute__((__always_inline__, __artificial__))
- _mm_cvtsi64_m64 (long long __i)
- {
-   return (__m64) __i;
- }
- 
- /* Microsoft intrinsic.  */
--static __inline __m64  __attribute__((__always_inline__))
-+static __inline __m64  __attribute__((__always_inline__, __artificial__))
- _mm_cvtsi64x_si64 (long long __i)
- {
-   return (__m64) __i;
- }
- 
--static __inline __m64  __attribute__((__always_inline__))
-+static __inline __m64  __attribute__((__always_inline__, __artificial__))
- _mm_set_pi64x (long long __i)
- {
-   return (__m64) __i;
-@@ -99,13 +99,13 @@ _mm_set_pi64x (long long __i)
- #endif
- 
- /* Convert the lower 32 bits of the __m64 object into an integer.  */
--static __inline int __attribute__((__always_inline__))
-+static __inline int __attribute__((__always_inline__, __artificial__))
- _mm_cvtsi64_si32 (__m64 __i)
- {
-   return __builtin_ia32_vec_ext_v2si ((__v2si)__i, 0);
- }
- 
--static __inline int __attribute__((__always_inline__))
-+static __inline int __attribute__((__always_inline__, __artificial__))
- _m_to_int (__m64 __i)
- {
-   return _mm_cvtsi64_si32 (__i);
-@@ -115,20 +115,20 @@ _m_to_int (__m64 __i)
- /* Convert the __m64 object to a 64bit integer.  */
- 
- /* Intel intrinsic.  */
--static __inline long long __attribute__((__always_inline__))
-+static __inline long long __attribute__((__always_inline__, __artificial__))
- _m_to_int64 (__m64 __i)
- {
-   return (long long)__i;
- }
- 
--static __inline long long __attribute__((__always_inline__))
-+static __inline long long __attribute__((__always_inline__, __artificial__))
- _mm_cvtm64_si64 (__m64 __i)
- {
-   return (long long)__i;
- }
- 
- /* Microsoft intrinsic.  */
--static __inline long long __attribute__((__always_inline__))
-+static __inline long long __attribute__((__always_inline__, __artificial__))
- _mm_cvtsi64_si64x (__m64 __i)
- {
-   return (long long)__i;
-@@ -138,13 +138,13 @@ _mm_cvtsi64_si64x (__m64 __i)
- /* Pack the four 16-bit values from M1 into the lower four 8-bit values of
-    the result, and the four 16-bit values from M2 into the upper four 8-bit
-    values of the result, all with signed saturation.  */
--static __inline __m64 __attribute__((__always_inline__))
-+static __inline __m64 __attribute__((__always_inline__, __artificial__))
- _mm_packs_pi16 (__m64 __m1, __m64 __m2)
- {
-   return (__m64) __builtin_ia32_packsswb ((__v4hi)__m1, (__v4hi)__m2);
- }
- 
--static __inline __m64 __attribute__((__always_inline__))
-+static __inline __m64 __attribute__((__always_inline__, __artificial__))
- _m_packsswb (__m64 __m1, __m64 __m2)
- {
-   return _mm_packs_pi16 (__m1, __m2);
-@@ -153,13 +153,13 @@ _m_packsswb (__m64 __m1, __m64 __m2)
- /* Pack the two 32-bit values from M1 in to the lower two 16-bit values of
-    the result, and the two 32-bit values from M2 into the upper two 16-bit
-    values of the result, all with signed saturation.  */
--static __inline __m64 __attribute__((__always_inline__))
-+static __inline __m64 __attribute__((__always_inline__, __artificial__))
- _mm_packs_pi32 (__m64 __m1, __m64 __m2)
- {
-   return (__m64) __builtin_ia32_packssdw ((__v2si)__m1, (__v2si)__m2);
- }
- 
--static __inline __m64 __attribute__((__always_inline__))
-+static __inline __m64 __attribute__((__always_inline__, __artificial__))
- _m_packssdw (__m64 __m1, __m64 __m2)
- {
-   return _mm_packs_pi32 (__m1, __m2);
-@@ -168,13 +168,13 @@ _m_packssdw (__m64 __m1, __m64 __m2)
- /* Pack the four 16-bit values from M1 into the lower four 8-bit values of
-    the result, and the four 16-bit values from M2 into the upper four 8-bit
-    values of the result, all with unsigned saturation.  */
--static __inline __m64 __attribute__((__always_inline__))
-+static __inline __m64 __attribute__((__always_inline__, __artificial__))
- _mm_packs_pu16 (__m64 __m1, __m64 __m2)
- {
-   return (__m64) __builtin_ia32_packuswb ((__v4hi)__m1, (__v4hi)__m2);
- }
- 
--static __inline __m64 __attribute__((__always_inline__))
-+static __inline __m64 __attribute__((__always_inline__, __artificial__))
- _m_packuswb (__m64 __m1, __m64 __m2)
- {
-   return _mm_packs_pu16 (__m1, __m2);
-@@ -182,13 +182,13 @@ _m_packuswb (__m64 __m1, __m64 __m2)
- 
- /* Interleave the four 8-bit values from the high half of M1 with the four
-    8-bit values from the high half of M2.  */
--static __inline __m64 __attribute__((__always_inline__))
-+static __inline __m64 __attribute__((__always_inline__, __artificial__))
- _mm_unpackhi_pi8 (__m64 __m1, __m64 __m2)
- {
-   return (__m64) __builtin_ia32_punpckhbw ((__v8qi)__m1, (__v8qi)__m2);
- }
- 
--static __inline __m64 __attribute__((__always_inline__))
-+static __inline __m64 __attribute__((__always_inline__, __artificial__))
- _m_punpckhbw (__m64 __m1, __m64 __m2)
- {
-   return _mm_unpackhi_pi8 (__m1, __m2);
-@@ -196,13 +196,13 @@ _m_punpckhbw (__m64 __m1, __m64 __m2)
- 
- /* Interleave the two 16-bit values from the high half of M1 with the two
-    16-bit values from the high half of M2.  */
--static __inline __m64 __attribute__((__always_inline__))
-+static __inline __m64 __attribute__((__always_inline__, __artificial__))
- _mm_unpackhi_pi16 (__m64 __m1, __m64 __m2)
- {
-   return (__m64) __builtin_ia32_punpckhwd ((__v4hi)__m1, (__v4hi)__m2);
- }
- 
--static __inline __m64 __attribute__((__always_inline__))
-+static __inline __m64 __attribute__((__always_inline__, __artificial__))
- _m_punpckhwd (__m64 __m1, __m64 __m2)
- {
-   return _mm_unpackhi_pi16 (__m1, __m2);
-@@ -210,13 +210,13 @@ _m_punpckhwd (__m64 __m1, __m64 __m2)
- 
- /* Interleave the 32-bit value from the high half of M1 with the 32-bit
-    value from the high half of M2.  */
--static __inline __m64 __attribute__((__always_inline__))
-+static __inline __m64 __attribute__((__always_inline__, __artificial__))
- _mm_unpackhi_pi32 (__m64 __m1, __m64 __m2)
- {
-   return (__m64) __builtin_ia32_punpckhdq ((__v2si)__m1, (__v2si)__m2);
- }
- 
--static __inline __m64 __attribute__((__always_inline__))
-+static __inline __m64 __attribute__((__always_inline__, __artificial__))
- _m_punpckhdq (__m64 __m1, __m64 __m2)
- {
-   return _mm_unpackhi_pi32 (__m1, __m2);
-@@ -224,13 +224,13 @@ _m_punpckhdq (__m64 __m1, __m64 __m2)
- 
- /* Interleave the four 8-bit values from the low half of M1 with the four
-    8-bit values from the low half of M2.  */
--static __inline __m64 __attribute__((__always_inline__))
-+static __inline __m64 __attribute__((__always_inline__, __artificial__))
- _mm_unpacklo_pi8 (__m64 __m1, __m64 __m2)
- {
-   return (__m64) __builtin_ia32_punpcklbw ((__v8qi)__m1, (__v8qi)__m2);
- }
- 
--static __inline __m64 __attribute__((__always_inline__))
-+static __inline __m64 __attribute__((__always_inline__, __artificial__))
- _m_punpcklbw (__m64 __m1, __m64 __m2)
- {
-   return _mm_unpacklo_pi8 (__m1, __m2);
-@@ -238,13 +238,13 @@ _m_punpcklbw (__m64 __m1, __m64 __m2)
- 
- /* Interleave the two 16-bit values from the low half of M1 with the two
-    16-bit values from the low half of M2.  */
--static __inline __m64 __attribute__((__always_inline__))
-+static __inline __m64 __attribute__((__always_inline__, __artificial__))
- _mm_unpacklo_pi16 (__m64 __m1, __m64 __m2)
- {
-   return (__m64) __builtin_ia32_punpcklwd ((__v4hi)__m1, (__v4hi)__m2);
- }
- 
--static __inline __m64 __attribute__((__always_inline__))
-+static __inline __m64 __attribute__((__always_inline__, __artificial__))
- _m_punpcklwd (__m64 __m1, __m64 __m2)
- {
-   return _mm_unpacklo_pi16 (__m1, __m2);
-@@ -252,59 +252,59 @@ _m_punpcklwd (__m64 __m1, __m64 __m2)
- 
- /* Interleave the 32-bit value from the low half of M1 with the 32-bit
-    value from the low half of M2.  */
--static __inline __m64 __attribute__((__always_inline__))
-+static __inline __m64 __attribute__((__always_inline__, __artificial__))
- _mm_unpacklo_pi32 (__m64 __m1, __m64 __m2)
- {
-   return (__m64) __builtin_ia32_punpckldq ((__v2si)__m1, (__v2si)__m2);
- }
- 
--static __inline __m64 __attribute__((__always_inline__))
-+static __inline __m64 __attribute__((__always_inline__, __artificial__))
- _m_punpckldq (__m64 __m1, __m64 __m2)
- {
-   return _mm_unpacklo_pi32 (__m1, __m2);
- }
- 
- /* Add the 8-bit values in M1 to the 8-bit values in M2.  */
--static __inline __m64 __attribute__((__always_inline__))
-+static __inline __m64 __attribute__((__always_inline__, __artificial__))
- _mm_add_pi8 (__m64 __m1, __m64 __m2)
- {
-   return (__m64) __builtin_ia32_paddb ((__v8qi)__m1, (__v8qi)__m2);
- }
- 
--static __inline __m64 __attribute__((__always_inline__))
-+static __inline __m64 __attribute__((__always_inline__, __artificial__))
- _m_paddb (__m64 __m1, __m64 __m2)
- {
-   return _mm_add_pi8 (__m1, __m2);
- }
- 
- /* Add the 16-bit values in M1 to the 16-bit values in M2.  */
--static __inline __m64 __attribute__((__always_inline__))
-+static __inline __m64 __attribute__((__always_inline__, __artificial__))
- _mm_add_pi16 (__m64 __m1, __m64 __m2)
- {
-   return (__m64) __builtin_ia32_paddw ((__v4hi)__m1, (__v4hi)__m2);
- }
- 
--static __inline __m64 __attribute__((__always_inline__))
-+static __inline __m64 __attribute__((__always_inline__, __artificial__))
- _m_paddw (__m64 __m1, __m64 __m2)
- {
-   return _mm_add_pi16 (__m1, __m2);
- }
- 
- /* Add the 32-bit values in M1 to the 32-bit values in M2.  */
--static __inline __m64 __attribute__((__always_inline__))
-+static __inline __m64 __attribute__((__always_inline__, __artificial__))
- _mm_add_pi32 (__m64 __m1, __m64 __m2)
- {
-   return (__m64) __builtin_ia32_paddd ((__v2si)__m1, (__v2si)__m2);
- }
- 
--static __inline __m64 __attribute__((__always_inline__))
-+static __inline __m64 __attribute__((__always_inline__, __artificial__))
- _m_paddd (__m64 __m1, __m64 __m2)
- {
-   return _mm_add_pi32 (__m1, __m2);
- }
- 
- /* Add the 64-bit values in M1 to the 64-bit values in M2.  */
--static __inline __m64 __attribute__((__always_inline__))
-+static __inline __m64 __attribute__((__always_inline__, __artificial__))
- _mm_add_si64 (__m64 __m1, __m64 __m2)
- {
-   return (__m64) __builtin_ia32_paddq ((long long)__m1, (long long)__m2);
-@@ -312,13 +312,13 @@ _mm_add_si64 (__m64 __m1, __m64 __m2)
- 
- /* Add the 8-bit values in M1 to the 8-bit values in M2 using signed
-    saturated arithmetic.  */
--static __inline __m64 __attribute__((__always_inline__))
-+static __inline __m64 __attribute__((__always_inline__, __artificial__))
- _mm_adds_pi8 (__m64 __m1, __m64 __m2)
- {
-   return (__m64) __builtin_ia32_paddsb ((__v8qi)__m1, (__v8qi)__m2);
- }
- 
--static __inline __m64 __attribute__((__always_inline__))
-+static __inline __m64 __attribute__((__always_inline__, __artificial__))
- _m_paddsb (__m64 __m1, __m64 __m2)
- {
-   return _mm_adds_pi8 (__m1, __m2);
-@@ -326,13 +326,13 @@ _m_paddsb (__m64 __m1, __m64 __m2)
- 
- /* Add the 16-bit values in M1 to the 16-bit values in M2 using signed
-    saturated arithmetic.  */
--static __inline __m64 __attribute__((__always_inline__))
-+static __inline __m64 __attribute__((__always_inline__, __artificial__))
- _mm_adds_pi16 (__m64 __m1, __m64 __m2)
- {
-   return (__m64) __builtin_ia32_paddsw ((__v4hi)__m1, (__v4hi)__m2);
- }
- 
--static __inline __m64 __attribute__((__always_inline__))
-+static __inline __m64 __attribute__((__always_inline__, __artificial__))
- _m_paddsw (__m64 __m1, __m64 __m2)
- {
-   return _mm_adds_pi16 (__m1, __m2);
-@@ -340,13 +340,13 @@ _m_paddsw (__m64 __m1, __m64 __m2)
- 
- /* Add the 8-bit values in M1 to the 8-bit values in M2 using unsigned
-    saturated arithmetic.  */
--static __inline __m64 __attribute__((__always_inline__))
-+static __inline __m64 __attribute__((__always_inline__, __artificial__))
- _mm_adds_pu8 (__m64 __m1, __m64 __m2)
- {
-   return (__m64) __builtin_ia32_paddusb ((__v8qi)__m1, (__v8qi)__m2);
- }
- 
--static __inline __m64 __attribute__((__always_inline__))
-+static __inline __m64 __attribute__((__always_inline__, __artificial__))
- _m_paddusb (__m64 __m1, __m64 __m2)
- {
-   return _mm_adds_pu8 (__m1, __m2);
-@@ -354,59 +354,59 @@ _m_paddusb (__m64 __m1, __m64 __m2)
- 
- /* Add the 16-bit values in M1 to the 16-bit values in M2 using unsigned
-    saturated arithmetic.  */
--static __inline __m64 __attribute__((__always_inline__))
-+static __inline __m64 __attribute__((__always_inline__, __artificial__))
- _mm_adds_pu16 (__m64 __m1, __m64 __m2)
- {
-   return (__m64) __builtin_ia32_paddusw ((__v4hi)__m1, (__v4hi)__m2);
- }
- 
--static __inline __m64 __attribute__((__always_inline__))
-+static __inline __m64 __attribute__((__always_inline__, __artificial__))
- _m_paddusw (__m64 __m1, __m64 __m2)
- {
-   return _mm_adds_pu16 (__m1, __m2);
- }
- 
- /* Subtract the 8-bit values in M2 from the 8-bit values in M1.  */
--static __inline __m64 __attribute__((__always_inline__))
-+static __inline __m64 __attribute__((__always_inline__, __artificial__))
- _mm_sub_pi8 (__m64 __m1, __m64 __m2)
- {
-   return (__m64) __builtin_ia32_psubb ((__v8qi)__m1, (__v8qi)__m2);
- }
- 
--static __inline __m64 __attribute__((__always_inline__))
-+static __inline __m64 __attribute__((__always_inline__, __artificial__))
- _m_psubb (__m64 __m1, __m64 __m2)
- {
-   return _mm_sub_pi8 (__m1, __m2);
- }
- 
- /* Subtract the 16-bit values in M2 from the 16-bit values in M1.  */
--static __inline __m64 __attribute__((__always_inline__))
-+static __inline __m64 __attribute__((__always_inline__, __artificial__))
- _mm_sub_pi16 (__m64 __m1, __m64 __m2)
- {
-   return (__m64) __builtin_ia32_psubw ((__v4hi)__m1, (__v4hi)__m2);
- }
- 
--static __inline __m64 __attribute__((__always_inline__))
-+static __inline __m64 __attribute__((__always_inline__, __artificial__))
- _m_psubw (__m64 __m1, __m64 __m2)
- {
-   return _mm_sub_pi16 (__m1, __m2);
- }
- 
- /* Subtract the 32-bit values in M2 from the 32-bit values in M1.  */
--static __inline __m64 __attribute__((__always_inline__))
-+static __inline __m64 __attribute__((__always_inline__, __artificial__))
- _mm_sub_pi32 (__m64 __m1, __m64 __m2)
- {
-   return (__m64) __builtin_ia32_psubd ((__v2si)__m1, (__v2si)__m2);
- }
- 
--static __inline __m64 __attribute__((__always_inline__))
-+static __inline __m64 __attribute__((__always_inline__, __artificial__))
- _m_psubd (__m64 __m1, __m64 __m2)
- {
-   return _mm_sub_pi32 (__m1, __m2);
- }
- 
- /* Add the 64-bit values in M1 to the 64-bit values in M2.  */
--static __inline __m64 __attribute__((__always_inline__))
-+static __inline __m64 __attribute__((__always_inline__, __artificial__))
- _mm_sub_si64 (__m64 __m1, __m64 __m2)
- {
-   return (__m64) __builtin_ia32_psubq ((long long)__m1, (long long)__m2);
-@@ -414,13 +414,13 @@ _mm_sub_si64 (__m64 __m1, __m64 __m2)
- 
- /* Subtract the 8-bit values in M2 from the 8-bit values in M1 using signed
-    saturating arithmetic.  */
--static __inline __m64 __attribute__((__always_inline__))
-+static __inline __m64 __attribute__((__always_inline__, __artificial__))
- _mm_subs_pi8 (__m64 __m1, __m64 __m2)
- {
-   return (__m64) __builtin_ia32_psubsb ((__v8qi)__m1, (__v8qi)__m2);
- }
- 
--static __inline __m64 __attribute__((__always_inline__))
-+static __inline __m64 __attribute__((__always_inline__, __artificial__))
- _m_psubsb (__m64 __m1, __m64 __m2)
- {
-   return _mm_subs_pi8 (__m1, __m2);
-@@ -428,13 +428,13 @@ _m_psubsb (__m64 __m1, __m64 __m2)
- 
- /* Subtract the 16-bit values in M2 from the 16-bit values in M1 using
-    signed saturating arithmetic.  */
--static __inline __m64 __attribute__((__always_inline__))
-+static __inline __m64 __attribute__((__always_inline__, __artificial__))
- _mm_subs_pi16 (__m64 __m1, __m64 __m2)
- {
-   return (__m64) __builtin_ia32_psubsw ((__v4hi)__m1, (__v4hi)__m2);
- }
- 
--static __inline __m64 __attribute__((__always_inline__))
-+static __inline __m64 __attribute__((__always_inline__, __artificial__))
- _m_psubsw (__m64 __m1, __m64 __m2)
- {
-   return _mm_subs_pi16 (__m1, __m2);
-@@ -442,13 +442,13 @@ _m_psubsw (__m64 __m1, __m64 __m2)
- 
- /* Subtract the 8-bit values in M2 from the 8-bit values in M1 using
-    unsigned saturating arithmetic.  */
--static __inline __m64 __attribute__((__always_inline__))
-+static __inline __m64 __attribute__((__always_inline__, __artificial__))
- _mm_subs_pu8 (__m64 __m1, __m64 __m2)
- {
-   return (__m64) __builtin_ia32_psubusb ((__v8qi)__m1, (__v8qi)__m2);
- }
- 
--static __inline __m64 __attribute__((__always_inline__))
-+static __inline __m64 __attribute__((__always_inline__, __artificial__))
- _m_psubusb (__m64 __m1, __m64 __m2)
- {
-   return _mm_subs_pu8 (__m1, __m2);
-@@ -456,13 +456,13 @@ _m_psubusb (__m64 __m1, __m64 __m2)
- 
- /* Subtract the 16-bit values in M2 from the 16-bit values in M1 using
-    unsigned saturating arithmetic.  */
--static __inline __m64 __attribute__((__always_inline__))
-+static __inline __m64 __attribute__((__always_inline__, __artificial__))
- _mm_subs_pu16 (__m64 __m1, __m64 __m2)
- {
-   return (__m64) __builtin_ia32_psubusw ((__v4hi)__m1, (__v4hi)__m2);
- }
- 
--static __inline __m64 __attribute__((__always_inline__))
-+static __inline __m64 __attribute__((__always_inline__, __artificial__))
- _m_psubusw (__m64 __m1, __m64 __m2)
- {
-   return _mm_subs_pu16 (__m1, __m2);
-@@ -471,13 +471,13 @@ _m_psubusw (__m64 __m1, __m64 __m2)
- /* Multiply four 16-bit values in M1 by four 16-bit values in M2 producing
-    four 32-bit intermediate results, which are then summed by pairs to
-    produce two 32-bit results.  */
--static __inline __m64 __attribute__((__always_inline__))
-+static __inline __m64 __attribute__((__always_inline__, __artificial__))
- _mm_madd_pi16 (__m64 __m1, __m64 __m2)
- {
-   return (__m64) __builtin_ia32_pmaddwd ((__v4hi)__m1, (__v4hi)__m2);
- }
- 
--static __inline __m64 __attribute__((__always_inline__))
-+static __inline __m64 __attribute__((__always_inline__, __artificial__))
- _m_pmaddwd (__m64 __m1, __m64 __m2)
- {
-   return _mm_madd_pi16 (__m1, __m2);
-@@ -485,13 +485,13 @@ _m_pmaddwd (__m64 __m1, __m64 __m2)
- 
- /* Multiply four signed 16-bit values in M1 by four signed 16-bit values in
-    M2 and produce the high 16 bits of the 32-bit results.  */
--static __inline __m64 __attribute__((__always_inline__))
-+static __inline __m64 __attribute__((__always_inline__, __artificial__))
- _mm_mulhi_pi16 (__m64 __m1, __m64 __m2)
- {
-   return (__m64) __builtin_ia32_pmulhw ((__v4hi)__m1, (__v4hi)__m2);
- }
- 
--static __inline __m64 __attribute__((__always_inline__))
-+static __inline __m64 __attribute__((__always_inline__, __artificial__))
- _m_pmulhw (__m64 __m1, __m64 __m2)
- {
-   return _mm_mulhi_pi16 (__m1, __m2);
-@@ -499,226 +499,226 @@ _m_pmulhw (__m64 __m1, __m64 __m2)
- 
- /* Multiply four 16-bit values in M1 by four 16-bit values in M2 and produce
-    the low 16 bits of the results.  */
--static __inline __m64 __attribute__((__always_inline__))
-+static __inline __m64 __attribute__((__always_inline__, __artificial__))
- _mm_mullo_pi16 (__m64 __m1, __m64 __m2)
- {
-   return (__m64) __builtin_ia32_pmullw ((__v4hi)__m1, (__v4hi)__m2);
- }
- 
--static __inline __m64 __attribute__((__always_inline__))
-+static __inline __m64 __attribute__((__always_inline__, __artificial__))
- _m_pmullw (__m64 __m1, __m64 __m2)
- {
-   return _mm_mullo_pi16 (__m1, __m2);
- }
- 
- /* Shift four 16-bit values in M left by COUNT.  */
--static __inline __m64 __attribute__((__always_inline__))
-+static __inline __m64 __attribute__((__always_inline__, __artificial__))
- _mm_sll_pi16 (__m64 __m, __m64 __count)
- {
-   return (__m64) __builtin_ia32_psllw ((__v4hi)__m, (long long)__count);
- }
- 
--static __inline __m64 __attribute__((__always_inline__))
-+static __inline __m64 __attribute__((__always_inline__, __artificial__))
- _m_psllw (__m64 __m, __m64 __count)
- {
-   return _mm_sll_pi16 (__m, __count);
- }
- 
--static __inline __m64 __attribute__((__always_inline__))
-+static __inline __m64 __attribute__((__always_inline__, __artificial__))
- _mm_slli_pi16 (__m64 __m, int __count)
- {
-   return (__m64) __builtin_ia32_psllw ((__v4hi)__m, __count);
- }
- 
--static __inline __m64 __attribute__((__always_inline__))
-+static __inline __m64 __attribute__((__always_inline__, __artificial__))
- _m_psllwi (__m64 __m, int __count)
- {
-   return _mm_slli_pi16 (__m, __count);
- }
- 
- /* Shift two 32-bit values in M left by COUNT.  */
--static __inline __m64 __attribute__((__always_inline__))
-+static __inline __m64 __attribute__((__always_inline__, __artificial__))
- _mm_sll_pi32 (__m64 __m, __m64 __count)
- {
-   return (__m64) __builtin_ia32_pslld ((__v2si)__m, (long long)__count);
- }
- 
--static __inline __m64 __attribute__((__always_inline__))
-+static __inline __m64 __attribute__((__always_inline__, __artificial__))
- _m_pslld (__m64 __m, __m64 __count)
- {
-   return _mm_sll_pi32 (__m, __count);
- }
- 
--static __inline __m64 __attribute__((__always_inline__))
-+static __inline __m64 __attribute__((__always_inline__, __artificial__))
- _mm_slli_pi32 (__m64 __m, int __count)
- {
-   return (__m64) __builtin_ia32_pslld ((__v2si)__m, __count);
- }
- 
--static __inline __m64 __attribute__((__always_inline__))
-+static __inline __m64 __attribute__((__always_inline__, __artificial__))
- _m_pslldi (__m64 __m, int __count)
- {
-   return _mm_slli_pi32 (__m, __count);
- }
- 
- /* Shift the 64-bit value in M left by COUNT.  */
--static __inline __m64 __attribute__((__always_inline__))
-+static __inline __m64 __attribute__((__always_inline__, __artificial__))
- _mm_sll_si64 (__m64 __m, __m64 __count)
- {
-   return (__m64) __builtin_ia32_psllq ((long long)__m, (long long)__count);
- }
- 
--static __inline __m64 __attribute__((__always_inline__))
-+static __inline __m64 __attribute__((__always_inline__, __artificial__))
- _m_psllq (__m64 __m, __m64 __count)
- {
-   return _mm_sll_si64 (__m, __count);
- }
- 
--static __inline __m64 __attribute__((__always_inline__))
-+static __inline __m64 __attribute__((__always_inline__, __artificial__))
- _mm_slli_si64 (__m64 __m, int __count)
- {
-   return (__m64) __builtin_ia32_psllq ((long long)__m, (long long)__count);
- }
- 
--static __inline __m64 __attribute__((__always_inline__))
-+static __inline __m64 __attribute__((__always_inline__, __artificial__))
- _m_psllqi (__m64 __m, int __count)
- {
-   return _mm_slli_si64 (__m, __count);
- }
- 
- /* Shift four 16-bit values in M right by COUNT; shift in the sign bit.  */
--static __inline __m64 __attribute__((__always_inline__))
-+static __inline __m64 __attribute__((__always_inline__, __artificial__))
- _mm_sra_pi16 (__m64 __m, __m64 __count)
- {
-   return (__m64) __builtin_ia32_psraw ((__v4hi)__m, (long long)__count);
- }
- 
--static __inline __m64 __attribute__((__always_inline__))
-+static __inline __m64 __attribute__((__always_inline__, __artificial__))
- _m_psraw (__m64 __m, __m64 __count)
- {
-   return _mm_sra_pi16 (__m, __count);
- }
- 
--static __inline __m64 __attribute__((__always_inline__))
-+static __inline __m64 __attribute__((__always_inline__, __artificial__))
- _mm_srai_pi16 (__m64 __m, int __count)
- {
-   return (__m64) __builtin_ia32_psraw ((__v4hi)__m, __count);
- }
- 
--static __inline __m64 __attribute__((__always_inline__))
-+static __inline __m64 __attribute__((__always_inline__, __artificial__))
- _m_psrawi (__m64 __m, int __count)
- {
-   return _mm_srai_pi16 (__m, __count);
- }
- 
- /* Shift two 32-bit values in M right by COUNT; shift in the sign bit.  */
--static __inline __m64 __attribute__((__always_inline__))
-+static __inline __m64 __attribute__((__always_inline__, __artificial__))
- _mm_sra_pi32 (__m64 __m, __m64 __count)
- {
-   return (__m64) __builtin_ia32_psrad ((__v2si)__m, (long long)__count);
- }
- 
--static __inline __m64 __attribute__((__always_inline__))
-+static __inline __m64 __attribute__((__always_inline__, __artificial__))
- _m_psrad (__m64 __m, __m64 __count)
- {
-   return _mm_sra_pi32 (__m, __count);
- }
- 
--static __inline __m64 __attribute__((__always_inline__))
-+static __inline __m64 __attribute__((__always_inline__, __artificial__))
- _mm_srai_pi32 (__m64 __m, int __count)
- {
-   return (__m64) __builtin_ia32_psrad ((__v2si)__m, __count);
- }
- 
--static __inline __m64 __attribute__((__always_inline__))
-+static __inline __m64 __attribute__((__always_inline__, __artificial__))
- _m_psradi (__m64 __m, int __count)
- {
-   return _mm_srai_pi32 (__m, __count);
- }
- 
- /* Shift four 16-bit values in M right by COUNT; shift in zeros.  */
--static __inline __m64 __attribute__((__always_inline__))
-+static __inline __m64 __attribute__((__always_inline__, __artificial__))
- _mm_srl_pi16 (__m64 __m, __m64 __count)
- {
-   return (__m64) __builtin_ia32_psrlw ((__v4hi)__m, (long long)__count);
- }
- 
--static __inline __m64 __attribute__((__always_inline__))
-+static __inline __m64 __attribute__((__always_inline__, __artificial__))
- _m_psrlw (__m64 __m, __m64 __count)
- {
-   return _mm_srl_pi16 (__m, __count);
- }
- 
--static __inline __m64 __attribute__((__always_inline__))
-+static __inline __m64 __attribute__((__always_inline__, __artificial__))
- _mm_srli_pi16 (__m64 __m, int __count)
- {
-   return (__m64) __builtin_ia32_psrlw ((__v4hi)__m, __count);
- }
- 
--static __inline __m64 __attribute__((__always_inline__))
-+static __inline __m64 __attribute__((__always_inline__, __artificial__))
- _m_psrlwi (__m64 __m, int __count)
- {
-   return _mm_srli_pi16 (__m, __count);
- }
- 
- /* Shift two 32-bit values in M right by COUNT; shift in zeros.  */
--static __inline __m64 __attribute__((__always_inline__))
-+static __inline __m64 __attribute__((__always_inline__, __artificial__))
- _mm_srl_pi32 (__m64 __m, __m64 __count)
- {
-   return (__m64) __builtin_ia32_psrld ((__v2si)__m, (long long)__count);
- }
- 
--static __inline __m64 __attribute__((__always_inline__))
-+static __inline __m64 __attribute__((__always_inline__, __artificial__))
- _m_psrld (__m64 __m, __m64 __count)
- {
-   return _mm_srl_pi32 (__m, __count);
- }
- 
--static __inline __m64 __attribute__((__always_inline__))
-+static __inline __m64 __attribute__((__always_inline__, __artificial__))
- _mm_srli_pi32 (__m64 __m, int __count)
- {
-   return (__m64) __builtin_ia32_psrld ((__v2si)__m, __count);
- }
- 
--static __inline __m64 __attribute__((__always_inline__))
-+static __inline __m64 __attribute__((__always_inline__, __artificial__))
- _m_psrldi (__m64 __m, int __count)
- {
-   return _mm_srli_pi32 (__m, __count);
- }
- 
- /* Shift the 64-bit value in M left by COUNT; shift in zeros.  */
--static __inline __m64 __attribute__((__always_inline__))
-+static __inline __m64 __attribute__((__always_inline__, __artificial__))
- _mm_srl_si64 (__m64 __m, __m64 __count)
- {
-   return (__m64) __builtin_ia32_psrlq ((long long)__m, (long long)__count);
- }
- 
--static __inline __m64 __attribute__((__always_inline__))
-+static __inline __m64 __attribute__((__always_inline__, __artificial__))
- _m_psrlq (__m64 __m, __m64 __count)
- {
-   return _mm_srl_si64 (__m, __count);
- }
- 
--static __inline __m64 __attribute__((__always_inline__))
-+static __inline __m64 __attribute__((__always_inline__, __artificial__))
- _mm_srli_si64 (__m64 __m, int __count)
- {
-   return (__m64) __builtin_ia32_psrlq ((long long)__m, (long long)__count);
- }
- 
--static __inline __m64 __attribute__((__always_inline__))
-+static __inline __m64 __attribute__((__always_inline__, __artificial__))
- _m_psrlqi (__m64 __m, int __count)
- {
-   return _mm_srli_si64 (__m, __count);
- }
- 
- /* Bit-wise AND the 64-bit values in M1 and M2.  */
--static __inline __m64 __attribute__((__always_inline__))
-+static __inline __m64 __attribute__((__always_inline__, __artificial__))
- _mm_and_si64 (__m64 __m1, __m64 __m2)
- {
-   return __builtin_ia32_pand (__m1, __m2);
- }
- 
--static __inline __m64 __attribute__((__always_inline__))
-+static __inline __m64 __attribute__((__always_inline__, __artificial__))
- _m_pand (__m64 __m1, __m64 __m2)
- {
-   return _mm_and_si64 (__m1, __m2);
-@@ -726,39 +726,39 @@ _m_pand (__m64 __m1, __m64 __m2)
- 
- /* Bit-wise complement the 64-bit value in M1 and bit-wise AND it with the
-    64-bit value in M2.  */
--static __inline __m64 __attribute__((__always_inline__))
-+static __inline __m64 __attribute__((__always_inline__, __artificial__))
- _mm_andnot_si64 (__m64 __m1, __m64 __m2)
- {
-   return __builtin_ia32_pandn (__m1, __m2);
- }
- 
--static __inline __m64 __attribute__((__always_inline__))
-+static __inline __m64 __attribute__((__always_inline__, __artificial__))
- _m_pandn (__m64 __m1, __m64 __m2)
- {
-   return _mm_andnot_si64 (__m1, __m2);
- }
- 
- /* Bit-wise inclusive OR the 64-bit values in M1 and M2.  */
--static __inline __m64 __attribute__((__always_inline__))
-+static __inline __m64 __attribute__((__always_inline__, __artificial__))
- _mm_or_si64 (__m64 __m1, __m64 __m2)
- {
-   return __builtin_ia32_por (__m1, __m2);
- }
- 
--static __inline __m64 __attribute__((__always_inline__))
-+static __inline __m64 __attribute__((__always_inline__, __artificial__))
- _m_por (__m64 __m1, __m64 __m2)
- {
-   return _mm_or_si64 (__m1, __m2);
- }
- 
- /* Bit-wise exclusive OR the 64-bit values in M1 and M2.  */
--static __inline __m64 __attribute__((__always_inline__))
-+static __inline __m64 __attribute__((__always_inline__, __artificial__))
- _mm_xor_si64 (__m64 __m1, __m64 __m2)
- {
-   return __builtin_ia32_pxor (__m1, __m2);
- }
- 
--static __inline __m64 __attribute__((__always_inline__))
-+static __inline __m64 __attribute__((__always_inline__, __artificial__))
- _m_pxor (__m64 __m1, __m64 __m2)
- {
-   return _mm_xor_si64 (__m1, __m2);
-@@ -766,25 +766,25 @@ _m_pxor (__m64 __m1, __m64 __m2)
- 
- /* Compare eight 8-bit values.  The result of the comparison is 0xFF if the
-    test is true and zero if false.  */
--static __inline __m64 __attribute__((__always_inline__))
-+static __inline __m64 __attribute__((__always_inline__, __artificial__))
- _mm_cmpeq_pi8 (__m64 __m1, __m64 __m2)
- {
-   return (__m64) __builtin_ia32_pcmpeqb ((__v8qi)__m1, (__v8qi)__m2);
- }
- 
--static __inline __m64 __attribute__((__always_inline__))
-+static __inline __m64 __attribute__((__always_inline__, __artificial__))
- _m_pcmpeqb (__m64 __m1, __m64 __m2)
- {
-   return _mm_cmpeq_pi8 (__m1, __m2);
- }
- 
--static __inline __m64 __attribute__((__always_inline__))
-+static __inline __m64 __attribute__((__always_inline__, __artificial__))
- _mm_cmpgt_pi8 (__m64 __m1, __m64 __m2)
- {
-   return (__m64) __builtin_ia32_pcmpgtb ((__v8qi)__m1, (__v8qi)__m2);
- }
- 
--static __inline __m64 __attribute__((__always_inline__))
-+static __inline __m64 __attribute__((__always_inline__, __artificial__))
- _m_pcmpgtb (__m64 __m1, __m64 __m2)
- {
-   return _mm_cmpgt_pi8 (__m1, __m2);
-@@ -792,25 +792,25 @@ _m_pcmpgtb (__m64 __m1, __m64 __m2)
- 
- /* Compare four 16-bit values.  The result of the comparison is 0xFFFF if
-    the test is true and zero if false.  */
--static __inline __m64 __attribute__((__always_inline__))
-+static __inline __m64 __attribute__((__always_inline__, __artificial__))
- _mm_cmpeq_pi16 (__m64 __m1, __m64 __m2)
- {
-   return (__m64) __builtin_ia32_pcmpeqw ((__v4hi)__m1, (__v4hi)__m2);
- }
- 
--static __inline __m64 __attribute__((__always_inline__))
-+static __inline __m64 __attribute__((__always_inline__, __artificial__))
- _m_pcmpeqw (__m64 __m1, __m64 __m2)
- {
-   return _mm_cmpeq_pi16 (__m1, __m2);
- }
- 
--static __inline __m64 __attribute__((__always_inline__))
-+static __inline __m64 __attribute__((__always_inline__, __artificial__))
- _mm_cmpgt_pi16 (__m64 __m1, __m64 __m2)
- {
-   return (__m64) __builtin_ia32_pcmpgtw ((__v4hi)__m1, (__v4hi)__m2);
- }
- 
--static __inline __m64 __attribute__((__always_inline__))
-+static __inline __m64 __attribute__((__always_inline__, __artificial__))
- _m_pcmpgtw (__m64 __m1, __m64 __m2)
- {
-   return _mm_cmpgt_pi16 (__m1, __m2);
-@@ -818,53 +818,53 @@ _m_pcmpgtw (__m64 __m1, __m64 __m2)
- 
- /* Compare two 32-bit values.  The result of the comparison is 0xFFFFFFFF if
-    the test is true and zero if false.  */
--static __inline __m64 __attribute__((__always_inline__))
-+static __inline __m64 __attribute__((__always_inline__, __artificial__))
- _mm_cmpeq_pi32 (__m64 __m1, __m64 __m2)
- {
-   return (__m64) __builtin_ia32_pcmpeqd ((__v2si)__m1, (__v2si)__m2);
- }
- 
--static __inline __m64 __attribute__((__always_inline__))
-+static __inline __m64 __attribute__((__always_inline__, __artificial__))
- _m_pcmpeqd (__m64 __m1, __m64 __m2)
- {
-   return _mm_cmpeq_pi32 (__m1, __m2);
- }
- 
--static __inline __m64 __attribute__((__always_inline__))
-+static __inline __m64 __attribute__((__always_inline__, __artificial__))
- _mm_cmpgt_pi32 (__m64 __m1, __m64 __m2)
- {
-   return (__m64) __builtin_ia32_pcmpgtd ((__v2si)__m1, (__v2si)__m2);
- }
- 
--static __inline __m64 __attribute__((__always_inline__))
-+static __inline __m64 __attribute__((__always_inline__, __artificial__))
- _m_pcmpgtd (__m64 __m1, __m64 __m2)
- {
-   return _mm_cmpgt_pi32 (__m1, __m2);
- }
- 
- /* Creates a 64-bit zero.  */
--static __inline __m64 __attribute__((__always_inline__))
-+static __inline __m64 __attribute__((__always_inline__, __artificial__))
- _mm_setzero_si64 (void)
- {
-   return (__m64)0LL;
- }
- 
- /* Creates a vector of two 32-bit values; I0 is least significant.  */
--static __inline __m64 __attribute__((__always_inline__))
-+static __inline __m64 __attribute__((__always_inline__, __artificial__))
- _mm_set_pi32 (int __i1, int __i0)
- {
-   return (__m64) __builtin_ia32_vec_init_v2si (__i0, __i1);
- }
- 
- /* Creates a vector of four 16-bit values; W0 is least significant.  */
--static __inline __m64 __attribute__((__always_inline__))
-+static __inline __m64 __attribute__((__always_inline__, __artificial__))
- _mm_set_pi16 (short __w3, short __w2, short __w1, short __w0)
- {
-   return (__m64) __builtin_ia32_vec_init_v4hi (__w0, __w1, __w2, __w3);
- }
- 
- /* Creates a vector of eight 8-bit values; B0 is least significant.  */
--static __inline __m64 __attribute__((__always_inline__))
-+static __inline __m64 __attribute__((__always_inline__, __artificial__))
- _mm_set_pi8 (char __b7, char __b6, char __b5, char __b4,
- 	     char __b3, char __b2, char __b1, char __b0)
- {
-@@ -873,19 +873,19 @@ _mm_set_pi8 (char __b7, char __b6, char 
- }
- 
- /* Similar, but with the arguments in reverse order.  */
--static __inline __m64 __attribute__((__always_inline__))
-+static __inline __m64 __attribute__((__always_inline__, __artificial__))
- _mm_setr_pi32 (int __i0, int __i1)
- {
-   return _mm_set_pi32 (__i1, __i0);
- }
- 
--static __inline __m64 __attribute__((__always_inline__))
-+static __inline __m64 __attribute__((__always_inline__, __artificial__))
- _mm_setr_pi16 (short __w0, short __w1, short __w2, short __w3)
- {
-   return _mm_set_pi16 (__w3, __w2, __w1, __w0);
- }
- 
--static __inline __m64 __attribute__((__always_inline__))
-+static __inline __m64 __attribute__((__always_inline__, __artificial__))
- _mm_setr_pi8 (char __b0, char __b1, char __b2, char __b3,
- 	      char __b4, char __b5, char __b6, char __b7)
- {
-@@ -893,21 +893,21 @@ _mm_setr_pi8 (char __b0, char __b1, char
- }
- 
- /* Creates a vector of two 32-bit values, both elements containing I.  */
--static __inline __m64 __attribute__((__always_inline__))
-+static __inline __m64 __attribute__((__always_inline__, __artificial__))
- _mm_set1_pi32 (int __i)
- {
-   return _mm_set_pi32 (__i, __i);
- }
- 
- /* Creates a vector of four 16-bit values, all elements containing W.  */
--static __inline __m64 __attribute__((__always_inline__))
-+static __inline __m64 __attribute__((__always_inline__, __artificial__))
- _mm_set1_pi16 (short __w)
- {
-   return _mm_set_pi16 (__w, __w, __w, __w);
- }
- 
- /* Creates a vector of eight 8-bit values, all elements containing B.  */
--static __inline __m64 __attribute__((__always_inline__))
-+static __inline __m64 __attribute__((__always_inline__, __artificial__))
- _mm_set1_pi8 (char __b)
- {
-   return _mm_set_pi8 (__b, __b, __b, __b, __b, __b, __b, __b);
---- gcc/config/i386/pmmintrin.h.jj	2007-06-26 13:38:46.000000000 +0200
-+++ gcc/config/i386/pmmintrin.h	2007-09-25 15:01:52.000000000 +0200
-@@ -48,79 +48,79 @@
- #define _MM_GET_DENORMALS_ZERO_MODE() \
-   (_mm_getcsr() & _MM_DENORMALS_ZERO_MASK)
- 
--static __inline __m128 __attribute__((__always_inline__))
-+static __inline __m128 __attribute__((__always_inline__, __artificial__))
- _mm_addsub_ps (__m128 __X, __m128 __Y)
- {
-   return (__m128) __builtin_ia32_addsubps ((__v4sf)__X, (__v4sf)__Y);
- }
- 
--static __inline __m128 __attribute__((__always_inline__))
-+static __inline __m128 __attribute__((__always_inline__, __artificial__))
- _mm_hadd_ps (__m128 __X, __m128 __Y)
- {
-   return (__m128) __builtin_ia32_haddps ((__v4sf)__X, (__v4sf)__Y);
- }
- 
--static __inline __m128 __attribute__((__always_inline__))
-+static __inline __m128 __attribute__((__always_inline__, __artificial__))
- _mm_hsub_ps (__m128 __X, __m128 __Y)
- {
-   return (__m128) __builtin_ia32_hsubps ((__v4sf)__X, (__v4sf)__Y);
- }
- 
--static __inline __m128 __attribute__((__always_inline__))
-+static __inline __m128 __attribute__((__always_inline__, __artificial__))
- _mm_movehdup_ps (__m128 __X)
- {
-   return (__m128) __builtin_ia32_movshdup ((__v4sf)__X);
- }
- 
--static __inline __m128 __attribute__((__always_inline__))
-+static __inline __m128 __attribute__((__always_inline__, __artificial__))
- _mm_moveldup_ps (__m128 __X)
- {
-   return (__m128) __builtin_ia32_movsldup ((__v4sf)__X);
- }
- 
--static __inline __m128d __attribute__((__always_inline__))
-+static __inline __m128d __attribute__((__always_inline__, __artificial__))
- _mm_addsub_pd (__m128d __X, __m128d __Y)
- {
-   return (__m128d) __builtin_ia32_addsubpd ((__v2df)__X, (__v2df)__Y);
- }
- 
--static __inline __m128d __attribute__((__always_inline__))
-+static __inline __m128d __attribute__((__always_inline__, __artificial__))
- _mm_hadd_pd (__m128d __X, __m128d __Y)
- {
-   return (__m128d) __builtin_ia32_haddpd ((__v2df)__X, (__v2df)__Y);
- }
- 
--static __inline __m128d __attribute__((__always_inline__))
-+static __inline __m128d __attribute__((__always_inline__, __artificial__))
- _mm_hsub_pd (__m128d __X, __m128d __Y)
- {
-   return (__m128d) __builtin_ia32_hsubpd ((__v2df)__X, (__v2df)__Y);
- }
- 
--static __inline __m128d __attribute__((__always_inline__))
-+static __inline __m128d __attribute__((__always_inline__, __artificial__))
- _mm_loaddup_pd (double const *__P)
- {
-   return _mm_load1_pd (__P);
- }
- 
--static __inline __m128d __attribute__((__always_inline__))
-+static __inline __m128d __attribute__((__always_inline__, __artificial__))
- _mm_movedup_pd (__m128d __X)
- {
-   return _mm_shuffle_pd (__X, __X, _MM_SHUFFLE2 (0,0));
- }
- 
--static __inline __m128i __attribute__((__always_inline__))
-+static __inline __m128i __attribute__((__always_inline__, __artificial__))
- _mm_lddqu_si128 (__m128i const *__P)
- {
-   return (__m128i) __builtin_ia32_lddqu ((char const *)__P);
- }
- 
--static __inline void __attribute__((__always_inline__))
-+static __inline void __attribute__((__always_inline__, __artificial__))
- _mm_monitor (void const * __P, unsigned int __E, unsigned int __H)
- {
-   __builtin_ia32_monitor (__P, __E, __H);
- }
- 
--static __inline void __attribute__((__always_inline__))
-+static __inline void __attribute__((__always_inline__, __artificial__))
- _mm_mwait (unsigned int __E, unsigned int __H)
- {
-   __builtin_ia32_mwait (__E, __H);
---- gcc/config/i386/mm3dnow.h.jj	2007-02-20 22:38:59.000000000 +0100
-+++ gcc/config/i386/mm3dnow.h	2007-09-25 15:01:52.000000000 +0200
-@@ -1,4 +1,4 @@
--/* Copyright (C) 2004 Free Software Foundation, Inc.
-+/* Copyright (C) 2004, 2007 Free Software Foundation, Inc.
- 
-    This file is part of GCC.
- 
---- gcc/config/i386/xmmintrin.h.jj	2007-06-26 13:38:46.000000000 +0200
-+++ gcc/config/i386/xmmintrin.h	2007-09-25 15:06:47.000000000 +0200
-@@ -88,7 +88,7 @@ enum _mm_hint
- #define _MM_FLUSH_ZERO_OFF    0x0000
- 
- /* Create a vector of zeros.  */
--static __inline __m128 __attribute__((__always_inline__))
-+static __inline __m128 __attribute__((__always_inline__, __artificial__))
- _mm_setzero_ps (void)
- {
-   return __extension__ (__m128){ 0.0f, 0.0f, 0.0f, 0.0f };
-@@ -98,55 +98,55 @@ _mm_setzero_ps (void)
-    floating-point) values of A and B; the upper three SPFP values are
-    passed through from A.  */
- 
--static __inline __m128 __attribute__((__always_inline__))
-+static __inline __m128 __attribute__((__always_inline__, __artificial__))
- _mm_add_ss (__m128 __A, __m128 __B)
- {
-   return (__m128) __builtin_ia32_addss ((__v4sf)__A, (__v4sf)__B);
- }
- 
--static __inline __m128 __attribute__((__always_inline__))
-+static __inline __m128 __attribute__((__always_inline__, __artificial__))
- _mm_sub_ss (__m128 __A, __m128 __B)
- {
-   return (__m128) __builtin_ia32_subss ((__v4sf)__A, (__v4sf)__B);
- }
- 
--static __inline __m128 __attribute__((__always_inline__))
-+static __inline __m128 __attribute__((__always_inline__, __artificial__))
- _mm_mul_ss (__m128 __A, __m128 __B)
- {
-   return (__m128) __builtin_ia32_mulss ((__v4sf)__A, (__v4sf)__B);
- }
- 
--static __inline __m128 __attribute__((__always_inline__))
-+static __inline __m128 __attribute__((__always_inline__, __artificial__))
- _mm_div_ss (__m128 __A, __m128 __B)
- {
-   return (__m128) __builtin_ia32_divss ((__v4sf)__A, (__v4sf)__B);
- }
- 
--static __inline __m128 __attribute__((__always_inline__))
-+static __inline __m128 __attribute__((__always_inline__, __artificial__))
- _mm_sqrt_ss (__m128 __A)
- {
-   return (__m128) __builtin_ia32_sqrtss ((__v4sf)__A);
- }
- 
--static __inline __m128 __attribute__((__always_inline__))
-+static __inline __m128 __attribute__((__always_inline__, __artificial__))
- _mm_rcp_ss (__m128 __A)
- {
-   return (__m128) __builtin_ia32_rcpss ((__v4sf)__A);
- }
- 
--static __inline __m128 __attribute__((__always_inline__))
-+static __inline __m128 __attribute__((__always_inline__, __artificial__))
- _mm_rsqrt_ss (__m128 __A)
- {
-   return (__m128) __builtin_ia32_rsqrtss ((__v4sf)__A);
- }
- 
--static __inline __m128 __attribute__((__always_inline__))
-+static __inline __m128 __attribute__((__always_inline__, __artificial__))
- _mm_min_ss (__m128 __A, __m128 __B)
- {
-   return (__m128) __builtin_ia32_minss ((__v4sf)__A, (__v4sf)__B);
- }
- 
--static __inline __m128 __attribute__((__always_inline__))
-+static __inline __m128 __attribute__((__always_inline__, __artificial__))
- _mm_max_ss (__m128 __A, __m128 __B)
- {
-   return (__m128) __builtin_ia32_maxss ((__v4sf)__A, (__v4sf)__B);
-@@ -154,55 +154,55 @@ _mm_max_ss (__m128 __A, __m128 __B)
- 
- /* Perform the respective operation on the four SPFP values in A and B.  */
- 
--static __inline __m128 __attribute__((__always_inline__))
-+static __inline __m128 __attribute__((__always_inline__, __artificial__))
- _mm_add_ps (__m128 __A, __m128 __B)
- {
-   return (__m128) __builtin_ia32_addps ((__v4sf)__A, (__v4sf)__B);
- }
- 
--static __inline __m128 __attribute__((__always_inline__))
-+static __inline __m128 __attribute__((__always_inline__, __artificial__))
- _mm_sub_ps (__m128 __A, __m128 __B)
- {
-   return (__m128) __builtin_ia32_subps ((__v4sf)__A, (__v4sf)__B);
- }
- 
--static __inline __m128 __attribute__((__always_inline__))
-+static __inline __m128 __attribute__((__always_inline__, __artificial__))
- _mm_mul_ps (__m128 __A, __m128 __B)
- {
-   return (__m128) __builtin_ia32_mulps ((__v4sf)__A, (__v4sf)__B);
- }
- 
--static __inline __m128 __attribute__((__always_inline__))
-+static __inline __m128 __attribute__((__always_inline__, __artificial__))
- _mm_div_ps (__m128 __A, __m128 __B)
- {
-   return (__m128) __builtin_ia32_divps ((__v4sf)__A, (__v4sf)__B);
- }
- 
--static __inline __m128 __attribute__((__always_inline__))
-+static __inline __m128 __attribute__((__always_inline__, __artificial__))
- _mm_sqrt_ps (__m128 __A)
- {
-   return (__m128) __builtin_ia32_sqrtps ((__v4sf)__A);
- }
- 
--static __inline __m128 __attribute__((__always_inline__))
-+static __inline __m128 __attribute__((__always_inline__, __artificial__))
- _mm_rcp_ps (__m128 __A)
- {
-   return (__m128) __builtin_ia32_rcpps ((__v4sf)__A);
- }
- 
--static __inline __m128 __attribute__((__always_inline__))
-+static __inline __m128 __attribute__((__always_inline__, __artificial__))
- _mm_rsqrt_ps (__m128 __A)
- {
-   return (__m128) __builtin_ia32_rsqrtps ((__v4sf)__A);
- }
- 
--static __inline __m128 __attribute__((__always_inline__))
-+static __inline __m128 __attribute__((__always_inline__, __artificial__))
- _mm_min_ps (__m128 __A, __m128 __B)
- {
-   return (__m128) __builtin_ia32_minps ((__v4sf)__A, (__v4sf)__B);
- }
- 
--static __inline __m128 __attribute__((__always_inline__))
-+static __inline __m128 __attribute__((__always_inline__, __artificial__))
- _mm_max_ps (__m128 __A, __m128 __B)
- {
-   return (__m128) __builtin_ia32_maxps ((__v4sf)__A, (__v4sf)__B);
-@@ -210,25 +210,25 @@ _mm_max_ps (__m128 __A, __m128 __B)
- 
- /* Perform logical bit-wise operations on 128-bit values.  */
- 
--static __inline __m128 __attribute__((__always_inline__))
-+static __inline __m128 __attribute__((__always_inline__, __artificial__))
- _mm_and_ps (__m128 __A, __m128 __B)
- {
-   return __builtin_ia32_andps (__A, __B);
- }
- 
--static __inline __m128 __attribute__((__always_inline__))
-+static __inline __m128 __attribute__((__always_inline__, __artificial__))
- _mm_andnot_ps (__m128 __A, __m128 __B)
- {
-   return __builtin_ia32_andnps (__A, __B);
- }
- 
--static __inline __m128 __attribute__((__always_inline__))
-+static __inline __m128 __attribute__((__always_inline__, __artificial__))
- _mm_or_ps (__m128 __A, __m128 __B)
- {
-   return __builtin_ia32_orps (__A, __B);
- }
- 
--static __inline __m128 __attribute__((__always_inline__))
-+static __inline __m128 __attribute__((__always_inline__, __artificial__))
- _mm_xor_ps (__m128 __A, __m128 __B)
- {
-   return __builtin_ia32_xorps (__A, __B);
-@@ -238,25 +238,25 @@ _mm_xor_ps (__m128 __A, __m128 __B)
-    comparison is true, place a mask of all ones in the result, otherwise a
-    mask of zeros.  The upper three SPFP values are passed through from A.  */
- 
--static __inline __m128 __attribute__((__always_inline__))
-+static __inline __m128 __attribute__((__always_inline__, __artificial__))
- _mm_cmpeq_ss (__m128 __A, __m128 __B)
- {
-   return (__m128) __builtin_ia32_cmpeqss ((__v4sf)__A, (__v4sf)__B);
- }
- 
--static __inline __m128 __attribute__((__always_inline__))
-+static __inline __m128 __attribute__((__always_inline__, __artificial__))
- _mm_cmplt_ss (__m128 __A, __m128 __B)
- {
-   return (__m128) __builtin_ia32_cmpltss ((__v4sf)__A, (__v4sf)__B);
- }
- 
--static __inline __m128 __attribute__((__always_inline__))
-+static __inline __m128 __attribute__((__always_inline__, __artificial__))
- _mm_cmple_ss (__m128 __A, __m128 __B)
- {
-   return (__m128) __builtin_ia32_cmpless ((__v4sf)__A, (__v4sf)__B);
- }
- 
--static __inline __m128 __attribute__((__always_inline__))
-+static __inline __m128 __attribute__((__always_inline__, __artificial__))
- _mm_cmpgt_ss (__m128 __A, __m128 __B)
- {
-   return (__m128) __builtin_ia32_movss ((__v4sf) __A,
-@@ -266,7 +266,7 @@ _mm_cmpgt_ss (__m128 __A, __m128 __B)
- 								__A));
- }
- 
--static __inline __m128 __attribute__((__always_inline__))
-+static __inline __m128 __attribute__((__always_inline__, __artificial__))
- _mm_cmpge_ss (__m128 __A, __m128 __B)
- {
-   return (__m128) __builtin_ia32_movss ((__v4sf) __A,
-@@ -276,25 +276,25 @@ _mm_cmpge_ss (__m128 __A, __m128 __B)
- 								__A));
- }
- 
--static __inline __m128 __attribute__((__always_inline__))
-+static __inline __m128 __attribute__((__always_inline__, __artificial__))
- _mm_cmpneq_ss (__m128 __A, __m128 __B)
- {
-   return (__m128) __builtin_ia32_cmpneqss ((__v4sf)__A, (__v4sf)__B);
- }
- 
--static __inline __m128 __attribute__((__always_inline__))
-+static __inline __m128 __attribute__((__always_inline__, __artificial__))
- _mm_cmpnlt_ss (__m128 __A, __m128 __B)
- {
-   return (__m128) __builtin_ia32_cmpnltss ((__v4sf)__A, (__v4sf)__B);
- }
- 
--static __inline __m128 __attribute__((__always_inline__))
-+static __inline __m128 __attribute__((__always_inline__, __artificial__))
- _mm_cmpnle_ss (__m128 __A, __m128 __B)
- {
-   return (__m128) __builtin_ia32_cmpnless ((__v4sf)__A, (__v4sf)__B);
- }
- 
--static __inline __m128 __attribute__((__always_inline__))
-+static __inline __m128 __attribute__((__always_inline__, __artificial__))
- _mm_cmpngt_ss (__m128 __A, __m128 __B)
- {
-   return (__m128) __builtin_ia32_movss ((__v4sf) __A,
-@@ -304,7 +304,7 @@ _mm_cmpngt_ss (__m128 __A, __m128 __B)
- 								 __A));
- }
- 
--static __inline __m128 __attribute__((__always_inline__))
-+static __inline __m128 __attribute__((__always_inline__, __artificial__))
- _mm_cmpnge_ss (__m128 __A, __m128 __B)
- {
-   return (__m128) __builtin_ia32_movss ((__v4sf) __A,
-@@ -314,13 +314,13 @@ _mm_cmpnge_ss (__m128 __A, __m128 __B)
- 								 __A));
- }
- 
--static __inline __m128 __attribute__((__always_inline__))
-+static __inline __m128 __attribute__((__always_inline__, __artificial__))
- _mm_cmpord_ss (__m128 __A, __m128 __B)
- {
-   return (__m128) __builtin_ia32_cmpordss ((__v4sf)__A, (__v4sf)__B);
- }
- 
--static __inline __m128 __attribute__((__always_inline__))
-+static __inline __m128 __attribute__((__always_inline__, __artificial__))
- _mm_cmpunord_ss (__m128 __A, __m128 __B)
- {
-   return (__m128) __builtin_ia32_cmpunordss ((__v4sf)__A, (__v4sf)__B);
-@@ -330,73 +330,73 @@ _mm_cmpunord_ss (__m128 __A, __m128 __B)
-    element, if the comparison is true, place a mask of all ones in the
-    result, otherwise a mask of zeros.  */
- 
--static __inline __m128 __attribute__((__always_inline__))
-+static __inline __m128 __attribute__((__always_inline__, __artificial__))
- _mm_cmpeq_ps (__m128 __A, __m128 __B)
- {
-   return (__m128) __builtin_ia32_cmpeqps ((__v4sf)__A, (__v4sf)__B);
- }
- 
--static __inline __m128 __attribute__((__always_inline__))
-+static __inline __m128 __attribute__((__always_inline__, __artificial__))
- _mm_cmplt_ps (__m128 __A, __m128 __B)
- {
-   return (__m128) __builtin_ia32_cmpltps ((__v4sf)__A, (__v4sf)__B);
- }
- 
--static __inline __m128 __attribute__((__always_inline__))
-+static __inline __m128 __attribute__((__always_inline__, __artificial__))
- _mm_cmple_ps (__m128 __A, __m128 __B)
- {
-   return (__m128) __builtin_ia32_cmpleps ((__v4sf)__A, (__v4sf)__B);
- }
- 
--static __inline __m128 __attribute__((__always_inline__))
-+static __inline __m128 __attribute__((__always_inline__, __artificial__))
- _mm_cmpgt_ps (__m128 __A, __m128 __B)
- {
-   return (__m128) __builtin_ia32_cmpgtps ((__v4sf)__A, (__v4sf)__B);
- }
- 
--static __inline __m128 __attribute__((__always_inline__))
-+static __inline __m128 __attribute__((__always_inline__, __artificial__))
- _mm_cmpge_ps (__m128 __A, __m128 __B)
- {
-   return (__m128) __builtin_ia32_cmpgeps ((__v4sf)__A, (__v4sf)__B);
- }
- 
--static __inline __m128 __attribute__((__always_inline__))
-+static __inline __m128 __attribute__((__always_inline__, __artificial__))
- _mm_cmpneq_ps (__m128 __A, __m128 __B)
- {
-   return (__m128) __builtin_ia32_cmpneqps ((__v4sf)__A, (__v4sf)__B);
- }
- 
--static __inline __m128 __attribute__((__always_inline__))
-+static __inline __m128 __attribute__((__always_inline__, __artificial__))
- _mm_cmpnlt_ps (__m128 __A, __m128 __B)
- {
-   return (__m128) __builtin_ia32_cmpnltps ((__v4sf)__A, (__v4sf)__B);
- }
- 
--static __inline __m128 __attribute__((__always_inline__))
-+static __inline __m128 __attribute__((__always_inline__, __artificial__))
- _mm_cmpnle_ps (__m128 __A, __m128 __B)
- {
-   return (__m128) __builtin_ia32_cmpnleps ((__v4sf)__A, (__v4sf)__B);
- }
- 
--static __inline __m128 __attribute__((__always_inline__))
-+static __inline __m128 __attribute__((__always_inline__, __artificial__))
- _mm_cmpngt_ps (__m128 __A, __m128 __B)
- {
-   return (__m128) __builtin_ia32_cmpngtps ((__v4sf)__A, (__v4sf)__B);
- }
- 
--static __inline __m128 __attribute__((__always_inline__))
-+static __inline __m128 __attribute__((__always_inline__, __artificial__))
- _mm_cmpnge_ps (__m128 __A, __m128 __B)
- {
-   return (__m128) __builtin_ia32_cmpngeps ((__v4sf)__A, (__v4sf)__B);
- }
- 
--static __inline __m128 __attribute__((__always_inline__))
-+static __inline __m128 __attribute__((__always_inline__, __artificial__))
- _mm_cmpord_ps (__m128 __A, __m128 __B)
- {
-   return (__m128) __builtin_ia32_cmpordps ((__v4sf)__A, (__v4sf)__B);
- }
- 
--static __inline __m128 __attribute__((__always_inline__))
-+static __inline __m128 __attribute__((__always_inline__, __artificial__))
- _mm_cmpunord_ps (__m128 __A, __m128 __B)
- {
-   return (__m128) __builtin_ia32_cmpunordps ((__v4sf)__A, (__v4sf)__B);
-@@ -405,73 +405,73 @@ _mm_cmpunord_ps (__m128 __A, __m128 __B)
- /* Compare the lower SPFP values of A and B and return 1 if true
-    and 0 if false.  */
- 
--static __inline int __attribute__((__always_inline__))
-+static __inline int __attribute__((__always_inline__, __artificial__))
- _mm_comieq_ss (__m128 __A, __m128 __B)
- {
-   return __builtin_ia32_comieq ((__v4sf)__A, (__v4sf)__B);
- }
- 
--static __inline int __attribute__((__always_inline__))
-+static __inline int __attribute__((__always_inline__, __artificial__))
- _mm_comilt_ss (__m128 __A, __m128 __B)
- {
-   return __builtin_ia32_comilt ((__v4sf)__A, (__v4sf)__B);
- }
- 
--static __inline int __attribute__((__always_inline__))
-+static __inline int __attribute__((__always_inline__, __artificial__))
- _mm_comile_ss (__m128 __A, __m128 __B)
- {
-   return __builtin_ia32_comile ((__v4sf)__A, (__v4sf)__B);
- }
- 
--static __inline int __attribute__((__always_inline__))
-+static __inline int __attribute__((__always_inline__, __artificial__))
- _mm_comigt_ss (__m128 __A, __m128 __B)
- {
-   return __builtin_ia32_comigt ((__v4sf)__A, (__v4sf)__B);
- }
- 
--static __inline int __attribute__((__always_inline__))
-+static __inline int __attribute__((__always_inline__, __artificial__))
- _mm_comige_ss (__m128 __A, __m128 __B)
- {
-   return __builtin_ia32_comige ((__v4sf)__A, (__v4sf)__B);
- }
- 
--static __inline int __attribute__((__always_inline__))
-+static __inline int __attribute__((__always_inline__, __artificial__))
- _mm_comineq_ss (__m128 __A, __m128 __B)
- {
-   return __builtin_ia32_comineq ((__v4sf)__A, (__v4sf)__B);
- }
- 
--static __inline int __attribute__((__always_inline__))
-+static __inline int __attribute__((__always_inline__, __artificial__))
- _mm_ucomieq_ss (__m128 __A, __m128 __B)
- {
-   return __builtin_ia32_ucomieq ((__v4sf)__A, (__v4sf)__B);
- }
- 
--static __inline int __attribute__((__always_inline__))
-+static __inline int __attribute__((__always_inline__, __artificial__))
- _mm_ucomilt_ss (__m128 __A, __m128 __B)
- {
-   return __builtin_ia32_ucomilt ((__v4sf)__A, (__v4sf)__B);
- }
- 
--static __inline int __attribute__((__always_inline__))
-+static __inline int __attribute__((__always_inline__, __artificial__))
- _mm_ucomile_ss (__m128 __A, __m128 __B)
- {
-   return __builtin_ia32_ucomile ((__v4sf)__A, (__v4sf)__B);
- }
- 
--static __inline int __attribute__((__always_inline__))
-+static __inline int __attribute__((__always_inline__, __artificial__))
- _mm_ucomigt_ss (__m128 __A, __m128 __B)
- {
-   return __builtin_ia32_ucomigt ((__v4sf)__A, (__v4sf)__B);
- }
- 
--static __inline int __attribute__((__always_inline__))
-+static __inline int __attribute__((__always_inline__, __artificial__))
- _mm_ucomige_ss (__m128 __A, __m128 __B)
- {
-   return __builtin_ia32_ucomige ((__v4sf)__A, (__v4sf)__B);
- }
- 
--static __inline int __attribute__((__always_inline__))
-+static __inline int __attribute__((__always_inline__, __artificial__))
- _mm_ucomineq_ss (__m128 __A, __m128 __B)
- {
-   return __builtin_ia32_ucomineq ((__v4sf)__A, (__v4sf)__B);
-@@ -479,13 +479,13 @@ _mm_ucomineq_ss (__m128 __A, __m128 __B)
- 
- /* Convert the lower SPFP value to a 32-bit integer according to the current
-    rounding mode.  */
--static __inline int __attribute__((__always_inline__))
-+static __inline int __attribute__((__always_inline__, __artificial__))
- _mm_cvtss_si32 (__m128 __A)
- {
-   return __builtin_ia32_cvtss2si ((__v4sf) __A);
- }
- 
--static __inline int __attribute__((__always_inline__))
-+static __inline int __attribute__((__always_inline__, __artificial__))
- _mm_cvt_ss2si (__m128 __A)
- {
-   return _mm_cvtss_si32 (__A);
-@@ -496,14 +496,14 @@ _mm_cvt_ss2si (__m128 __A)
-    current rounding mode.  */
- 
- /* Intel intrinsic.  */
--static __inline long long __attribute__((__always_inline__))
-+static __inline long long __attribute__((__always_inline__, __artificial__))
- _mm_cvtss_si64 (__m128 __A)
- {
-   return __builtin_ia32_cvtss2si64 ((__v4sf) __A);
- }
- 
- /* Microsoft intrinsic.  */
--static __inline long long __attribute__((__always_inline__))
-+static __inline long long __attribute__((__always_inline__, __artificial__))
- _mm_cvtss_si64x (__m128 __A)
- {
-   return __builtin_ia32_cvtss2si64 ((__v4sf) __A);
-@@ -512,26 +512,26 @@ _mm_cvtss_si64x (__m128 __A)
- 
- /* Convert the two lower SPFP values to 32-bit integers according to the
-    current rounding mode.  Return the integers in packed form.  */
--static __inline __m64 __attribute__((__always_inline__))
-+static __inline __m64 __attribute__((__always_inline__, __artificial__))
- _mm_cvtps_pi32 (__m128 __A)
- {
-   return (__m64) __builtin_ia32_cvtps2pi ((__v4sf) __A);
- }
- 
--static __inline __m64 __attribute__((__always_inline__))
-+static __inline __m64 __attribute__((__always_inline__, __artificial__))
- _mm_cvt_ps2pi (__m128 __A)
- {
-   return _mm_cvtps_pi32 (__A);
- }
- 
- /* Truncate the lower SPFP value to a 32-bit integer.  */
--static __inline int __attribute__((__always_inline__))
-+static __inline int __attribute__((__always_inline__, __artificial__))
- _mm_cvttss_si32 (__m128 __A)
- {
-   return __builtin_ia32_cvttss2si ((__v4sf) __A);
- }
- 
--static __inline int __attribute__((__always_inline__))
-+static __inline int __attribute__((__always_inline__, __artificial__))
- _mm_cvtt_ss2si (__m128 __A)
- {
-   return _mm_cvttss_si32 (__A);
-@@ -541,14 +541,14 @@ _mm_cvtt_ss2si (__m128 __A)
- /* Truncate the lower SPFP value to a 32-bit integer.  */
- 
- /* Intel intrinsic.  */
--static __inline long long __attribute__((__always_inline__))
-+static __inline long long __attribute__((__always_inline__, __artificial__))
- _mm_cvttss_si64 (__m128 __A)
- {
-   return __builtin_ia32_cvttss2si64 ((__v4sf) __A);
- }
- 
- /* Microsoft intrinsic.  */
--static __inline long long __attribute__((__always_inline__))
-+static __inline long long __attribute__((__always_inline__, __artificial__))
- _mm_cvttss_si64x (__m128 __A)
- {
-   return __builtin_ia32_cvttss2si64 ((__v4sf) __A);
-@@ -557,26 +557,26 @@ _mm_cvttss_si64x (__m128 __A)
- 
- /* Truncate the two lower SPFP values to 32-bit integers.  Return the
-    integers in packed form.  */
--static __inline __m64 __attribute__((__always_inline__))
-+static __inline __m64 __attribute__((__always_inline__, __artificial__))
- _mm_cvttps_pi32 (__m128 __A)
- {
-   return (__m64) __builtin_ia32_cvttps2pi ((__v4sf) __A);
- }
- 
--static __inline __m64 __attribute__((__always_inline__))
-+static __inline __m64 __attribute__((__always_inline__, __artificial__))
- _mm_cvtt_ps2pi (__m128 __A)
- {
-   return _mm_cvttps_pi32 (__A);
- }
- 
- /* Convert B to a SPFP value and insert it as element zero in A.  */
--static __inline __m128 __attribute__((__always_inline__))
-+static __inline __m128 __attribute__((__always_inline__, __artificial__))
- _mm_cvtsi32_ss (__m128 __A, int __B)
- {
-   return (__m128) __builtin_ia32_cvtsi2ss ((__v4sf) __A, __B);
- }
- 
--static __inline __m128 __attribute__((__always_inline__))
-+static __inline __m128 __attribute__((__always_inline__, __artificial__))
- _mm_cvt_si2ss (__m128 __A, int __B)
- {
-   return _mm_cvtsi32_ss (__A, __B);
-@@ -586,14 +586,14 @@ _mm_cvt_si2ss (__m128 __A, int __B)
- /* Convert B to a SPFP value and insert it as element zero in A.  */
- 
- /* Intel intrinsic.  */
--static __inline __m128 __attribute__((__always_inline__))
-+static __inline __m128 __attribute__((__always_inline__, __artificial__))
- _mm_cvtsi64_ss (__m128 __A, long long __B)
- {
-   return (__m128) __builtin_ia32_cvtsi642ss ((__v4sf) __A, __B);
- }
- 
- /* Microsoft intrinsic.  */
--static __inline __m128 __attribute__((__always_inline__))
-+static __inline __m128 __attribute__((__always_inline__, __artificial__))
- _mm_cvtsi64x_ss (__m128 __A, long long __B)
- {
-   return (__m128) __builtin_ia32_cvtsi642ss ((__v4sf) __A, __B);
-@@ -602,20 +602,20 @@ _mm_cvtsi64x_ss (__m128 __A, long long _
- 
- /* Convert the two 32-bit values in B to SPFP form and insert them
-    as the two lower elements in A.  */
--static __inline __m128 __attribute__((__always_inline__))
-+static __inline __m128 __attribute__((__always_inline__, __artificial__))
- _mm_cvtpi32_ps (__m128 __A, __m64 __B)
- {
-   return (__m128) __builtin_ia32_cvtpi2ps ((__v4sf) __A, (__v2si)__B);
- }
- 
--static __inline __m128 __attribute__((__always_inline__))
-+static __inline __m128 __attribute__((__always_inline__, __artificial__))
- _mm_cvt_pi2ps (__m128 __A, __m64 __B)
- {
-   return _mm_cvtpi32_ps (__A, __B);
- }
- 
- /* Convert the four signed 16-bit values in A to SPFP form.  */
--static __inline __m128 __attribute__((__always_inline__))
-+static __inline __m128 __attribute__((__always_inline__, __artificial__))
- _mm_cvtpi16_ps (__m64 __A)
- {
-   __v4hi __sign;
-@@ -641,7 +641,7 @@ _mm_cvtpi16_ps (__m64 __A)
- }
- 
- /* Convert the four unsigned 16-bit values in A to SPFP form.  */
--static __inline __m128 __attribute__((__always_inline__))
-+static __inline __m128 __attribute__((__always_inline__, __artificial__))
- _mm_cvtpu16_ps (__m64 __A)
- {
-   __v2si __hisi, __losi;
-@@ -661,7 +661,7 @@ _mm_cvtpu16_ps (__m64 __A)
- }
- 
- /* Convert the low four signed 8-bit values in A to SPFP form.  */
--static __inline __m128 __attribute__((__always_inline__))
-+static __inline __m128 __attribute__((__always_inline__, __artificial__))
- _mm_cvtpi8_ps (__m64 __A)
- {
-   __v8qi __sign;
-@@ -678,7 +678,7 @@ _mm_cvtpi8_ps (__m64 __A)
- }
- 
- /* Convert the low four unsigned 8-bit values in A to SPFP form.  */
--static __inline __m128 __attribute__((__always_inline__))
-+static __inline __m128 __attribute__((__always_inline__, __artificial__))
- _mm_cvtpu8_ps(__m64 __A)
- {
-   __A = (__m64) __builtin_ia32_punpcklbw ((__v8qi)__A, (__v8qi)0LL);
-@@ -686,7 +686,7 @@ _mm_cvtpu8_ps(__m64 __A)
- }
- 
- /* Convert the four signed 32-bit values in A and B to SPFP form.  */
--static __inline __m128 __attribute__((__always_inline__))
-+static __inline __m128 __attribute__((__always_inline__, __artificial__))
- _mm_cvtpi32x2_ps(__m64 __A, __m64 __B)
- {
-   __v4sf __zero = (__v4sf) _mm_setzero_ps ();
-@@ -696,7 +696,7 @@ _mm_cvtpi32x2_ps(__m64 __A, __m64 __B)
- }
- 
- /* Convert the four SPFP values in A to four signed 16-bit integers.  */
--static __inline __m64 __attribute__((__always_inline__))
-+static __inline __m64 __attribute__((__always_inline__, __artificial__))
- _mm_cvtps_pi16(__m128 __A)
- {
-   __v4sf __hisf = (__v4sf)__A;
-@@ -707,7 +707,7 @@ _mm_cvtps_pi16(__m128 __A)
- }
- 
- /* Convert the four SPFP values in A to four signed 8-bit integers.  */
--static __inline __m64 __attribute__((__always_inline__))
-+static __inline __m64 __attribute__((__always_inline__, __artificial__))
- _mm_cvtps_pi8(__m128 __A)
- {
-   __v4hi __tmp = (__v4hi) _mm_cvtps_pi16 (__A);
-@@ -716,7 +716,7 @@ _mm_cvtps_pi8(__m128 __A)
- 
- /* Selects four specific SPFP values from A and B based on MASK.  */
- #if 0
--static __inline __m128 __attribute__((__always_inline__))
-+static __inline __m128 __attribute__((__always_inline__, __artificial__))
- _mm_shuffle_ps (__m128 __A, __m128 __B, int __mask)
- {
-   return (__m128) __builtin_ia32_shufps ((__v4sf)__A, (__v4sf)__B, __mask);
-@@ -728,14 +728,14 @@ _mm_shuffle_ps (__m128 __A, __m128 __B, 
- 
- 
- /* Selects and interleaves the upper two SPFP values from A and B.  */
--static __inline __m128 __attribute__((__always_inline__))
-+static __inline __m128 __attribute__((__always_inline__, __artificial__))
- _mm_unpackhi_ps (__m128 __A, __m128 __B)
- {
-   return (__m128) __builtin_ia32_unpckhps ((__v4sf)__A, (__v4sf)__B);
- }
- 
- /* Selects and interleaves the lower two SPFP values from A and B.  */
--static __inline __m128 __attribute__((__always_inline__))
-+static __inline __m128 __attribute__((__always_inline__, __artificial__))
- _mm_unpacklo_ps (__m128 __A, __m128 __B)
- {
-   return (__m128) __builtin_ia32_unpcklps ((__v4sf)__A, (__v4sf)__B);
-@@ -743,28 +743,28 @@ _mm_unpacklo_ps (__m128 __A, __m128 __B)
- 
- /* Sets the upper two SPFP values with 64-bits of data loaded from P;
-    the lower two values are passed through from A.  */
--static __inline __m128 __attribute__((__always_inline__))
-+static __inline __m128 __attribute__((__always_inline__, __artificial__))
- _mm_loadh_pi (__m128 __A, __m64 const *__P)
- {
-   return (__m128) __builtin_ia32_loadhps ((__v4sf)__A, (__v2si *)__P);
- }
- 
- /* Stores the upper two SPFP values of A into P.  */
--static __inline void __attribute__((__always_inline__))
-+static __inline void __attribute__((__always_inline__, __artificial__))
- _mm_storeh_pi (__m64 *__P, __m128 __A)
- {
-   __builtin_ia32_storehps ((__v2si *)__P, (__v4sf)__A);
- }
- 
- /* Moves the upper two values of B into the lower two values of A.  */
--static __inline __m128 __attribute__((__always_inline__))
-+static __inline __m128 __attribute__((__always_inline__, __artificial__))
- _mm_movehl_ps (__m128 __A, __m128 __B)
- {
-   return (__m128) __builtin_ia32_movhlps ((__v4sf)__A, (__v4sf)__B);
- }
- 
- /* Moves the lower two values of B into the upper two values of A.  */
--static __inline __m128 __attribute__((__always_inline__))
-+static __inline __m128 __attribute__((__always_inline__, __artificial__))
- _mm_movelh_ps (__m128 __A, __m128 __B)
- {
-   return (__m128) __builtin_ia32_movlhps ((__v4sf)__A, (__v4sf)__B);
-@@ -772,146 +772,146 @@ _mm_movelh_ps (__m128 __A, __m128 __B)
- 
- /* Sets the lower two SPFP values with 64-bits of data loaded from P;
-    the upper two values are passed through from A.  */
--static __inline __m128 __attribute__((__always_inline__))
-+static __inline __m128 __attribute__((__always_inline__, __artificial__))
- _mm_loadl_pi (__m128 __A, __m64 const *__P)
- {
-   return (__m128) __builtin_ia32_loadlps ((__v4sf)__A, (__v2si *)__P);
- }
- 
- /* Stores the lower two SPFP values of A into P.  */
--static __inline void __attribute__((__always_inline__))
-+static __inline void __attribute__((__always_inline__, __artificial__))
- _mm_storel_pi (__m64 *__P, __m128 __A)
- {
-   __builtin_ia32_storelps ((__v2si *)__P, (__v4sf)__A);
- }
- 
- /* Creates a 4-bit mask from the most significant bits of the SPFP values.  */
--static __inline int __attribute__((__always_inline__))
-+static __inline int __attribute__((__always_inline__, __artificial__))
- _mm_movemask_ps (__m128 __A)
- {
-   return __builtin_ia32_movmskps ((__v4sf)__A);
- }
- 
- /* Return the contents of the control register.  */
--static __inline unsigned int __attribute__((__always_inline__))
-+static __inline unsigned int __attribute__((__always_inline__, __artificial__))
- _mm_getcsr (void)
- {
-   return __builtin_ia32_stmxcsr ();
- }
- 
- /* Read exception bits from the control register.  */
--static __inline unsigned int __attribute__((__always_inline__))
-+static __inline unsigned int __attribute__((__always_inline__, __artificial__))
- _MM_GET_EXCEPTION_STATE (void)
- {
-   return _mm_getcsr() & _MM_EXCEPT_MASK;
- }
- 
--static __inline unsigned int __attribute__((__always_inline__))
-+static __inline unsigned int __attribute__((__always_inline__, __artificial__))
- _MM_GET_EXCEPTION_MASK (void)
- {
-   return _mm_getcsr() & _MM_MASK_MASK;
- }
- 
--static __inline unsigned int __attribute__((__always_inline__))
-+static __inline unsigned int __attribute__((__always_inline__, __artificial__))
- _MM_GET_ROUNDING_MODE (void)
- {
-   return _mm_getcsr() & _MM_ROUND_MASK;
- }
- 
--static __inline unsigned int __attribute__((__always_inline__))
-+static __inline unsigned int __attribute__((__always_inline__, __artificial__))
- _MM_GET_FLUSH_ZERO_MODE (void)
- {
-   return _mm_getcsr() & _MM_FLUSH_ZERO_MASK;
- }
- 
- /* Set the control register to I.  */
--static __inline void __attribute__((__always_inline__))
-+static __inline void __attribute__((__always_inline__, __artificial__))
- _mm_setcsr (unsigned int __I)
- {
-   __builtin_ia32_ldmxcsr (__I);
- }
- 
- /* Set exception bits in the control register.  */
--static __inline void __attribute__((__always_inline__))
-+static __inline void __attribute__((__always_inline__, __artificial__))
- _MM_SET_EXCEPTION_STATE(unsigned int __mask)
- {
-   _mm_setcsr((_mm_getcsr() & ~_MM_EXCEPT_MASK) | __mask);
- }
- 
--static __inline void __attribute__((__always_inline__))
-+static __inline void __attribute__((__always_inline__, __artificial__))
- _MM_SET_EXCEPTION_MASK (unsigned int __mask)
- {
-   _mm_setcsr((_mm_getcsr() & ~_MM_MASK_MASK) | __mask);
- }
- 
--static __inline void __attribute__((__always_inline__))
-+static __inline void __attribute__((__always_inline__, __artificial__))
- _MM_SET_ROUNDING_MODE (unsigned int __mode)
- {
-   _mm_setcsr((_mm_getcsr() & ~_MM_ROUND_MASK) | __mode);
- }
- 
--static __inline void __attribute__((__always_inline__))
-+static __inline void __attribute__((__always_inline__, __artificial__))
- _MM_SET_FLUSH_ZERO_MODE (unsigned int __mode)
- {
-   _mm_setcsr((_mm_getcsr() & ~_MM_FLUSH_ZERO_MASK) | __mode);
- }
- 
- /* Create a vector with element 0 as F and the rest zero.  */
--static __inline __m128 __attribute__((__always_inline__))
-+static __inline __m128 __attribute__((__always_inline__, __artificial__))
- _mm_set_ss (float __F)
- {
-   return __extension__ (__m128)(__v4sf){ __F, 0, 0, 0 };
- }
- 
- /* Create a vector with all four elements equal to F.  */
--static __inline __m128 __attribute__((__always_inline__))
-+static __inline __m128 __attribute__((__always_inline__, __artificial__))
- _mm_set1_ps (float __F)
- {
-   return __extension__ (__m128)(__v4sf){ __F, __F, __F, __F };
- }
- 
--static __inline __m128 __attribute__((__always_inline__))
-+static __inline __m128 __attribute__((__always_inline__, __artificial__))
- _mm_set_ps1 (float __F)
- {
-   return _mm_set1_ps (__F);
- }
- 
- /* Create a vector with element 0 as *P and the rest zero.  */
--static __inline __m128 __attribute__((__always_inline__))
-+static __inline __m128 __attribute__((__always_inline__, __artificial__))
- _mm_load_ss (float const *__P)
- {
-   return _mm_set_ss (*__P);
- }
- 
- /* Create a vector with all four elements equal to *P.  */
--static __inline __m128 __attribute__((__always_inline__))
-+static __inline __m128 __attribute__((__always_inline__, __artificial__))
- _mm_load1_ps (float const *__P)
- {
-   return _mm_set1_ps (*__P);
- }
- 
--static __inline __m128 __attribute__((__always_inline__))
-+static __inline __m128 __attribute__((__always_inline__, __artificial__))
- _mm_load_ps1 (float const *__P)
- {
-   return _mm_load1_ps (__P);
- }
- 
- /* Load four SPFP values from P.  The address must be 16-byte aligned.  */
--static __inline __m128 __attribute__((__always_inline__))
-+static __inline __m128 __attribute__((__always_inline__, __artificial__))
- _mm_load_ps (float const *__P)
- {
-   return (__m128) *(__v4sf *)__P;
- }
- 
- /* Load four SPFP values from P.  The address need not be 16-byte aligned.  */
--static __inline __m128 __attribute__((__always_inline__))
-+static __inline __m128 __attribute__((__always_inline__, __artificial__))
- _mm_loadu_ps (float const *__P)
- {
-   return (__m128) __builtin_ia32_loadups (__P);
- }
- 
- /* Load four SPFP values in reverse order.  The address must be aligned.  */
--static __inline __m128 __attribute__((__always_inline__))
-+static __inline __m128 __attribute__((__always_inline__, __artificial__))
- _mm_loadr_ps (float const *__P)
- {
-   __v4sf __tmp = *(__v4sf *)__P;
-@@ -919,48 +919,48 @@ _mm_loadr_ps (float const *__P)
- }
- 
- /* Create the vector [Z Y X W].  */
--static __inline __m128 __attribute__((__always_inline__))
-+static __inline __m128 __attribute__((__always_inline__, __artificial__))
- _mm_set_ps (const float __Z, const float __Y, const float __X, const float __W)
- {
-   return __extension__ (__m128)(__v4sf){ __W, __X, __Y, __Z };
- }
- 
- /* Create the vector [W X Y Z].  */
--static __inline __m128 __attribute__((__always_inline__))
-+static __inline __m128 __attribute__((__always_inline__, __artificial__))
- _mm_setr_ps (float __Z, float __Y, float __X, float __W)
- {
-   return __extension__ (__m128)(__v4sf){ __Z, __Y, __X, __W };
- }
- 
- /* Stores the lower SPFP value.  */
--static __inline void __attribute__((__always_inline__))
-+static __inline void __attribute__((__always_inline__, __artificial__))
- _mm_store_ss (float *__P, __m128 __A)
- {
-   *__P = __builtin_ia32_vec_ext_v4sf ((__v4sf)__A, 0);
- }
- 
--static __inline float __attribute__((__always_inline__))
-+static __inline float __attribute__((__always_inline__, __artificial__))
- _mm_cvtss_f32 (__m128 __A)
- {
-   return __builtin_ia32_vec_ext_v4sf ((__v4sf)__A, 0);
- }
- 
- /* Store four SPFP values.  The address must be 16-byte aligned.  */
--static __inline void __attribute__((__always_inline__))
-+static __inline void __attribute__((__always_inline__, __artificial__))
- _mm_store_ps (float *__P, __m128 __A)
- {
-   *(__v4sf *)__P = (__v4sf)__A;
- }
- 
- /* Store four SPFP values.  The address need not be 16-byte aligned.  */
--static __inline void __attribute__((__always_inline__))
-+static __inline void __attribute__((__always_inline__, __artificial__))
- _mm_storeu_ps (float *__P, __m128 __A)
- {
-   __builtin_ia32_storeups (__P, (__v4sf)__A);
- }
- 
- /* Store the lower SPFP value across four words.  */
--static __inline void __attribute__((__always_inline__))
-+static __inline void __attribute__((__always_inline__, __artificial__))
- _mm_store1_ps (float *__P, __m128 __A)
- {
-   __v4sf __va = (__v4sf)__A;
-@@ -968,14 +968,14 @@ _mm_store1_ps (float *__P, __m128 __A)
-   _mm_storeu_ps (__P, __tmp);
- }
- 
--static __inline void __attribute__((__always_inline__))
-+static __inline void __attribute__((__always_inline__, __artificial__))
- _mm_store_ps1 (float *__P, __m128 __A)
- {
-   _mm_store1_ps (__P, __A);
- }
- 
- /* Store four SPFP values in reverse order.  The address must be aligned.  */
--static __inline void __attribute__((__always_inline__))
-+static __inline void __attribute__((__always_inline__, __artificial__))
- _mm_storer_ps (float *__P, __m128 __A)
- {
-   __v4sf __va = (__v4sf)__A;
-@@ -984,7 +984,7 @@ _mm_storer_ps (float *__P, __m128 __A)
- }
- 
- /* Sets the low SPFP value of A from the low value of B.  */
--static __inline __m128 __attribute__((__always_inline__))
-+static __inline __m128 __attribute__((__always_inline__, __artificial__))
- _mm_move_ss (__m128 __A, __m128 __B)
- {
-   return (__m128) __builtin_ia32_movss ((__v4sf)__A, (__v4sf)__B);
-@@ -992,13 +992,13 @@ _mm_move_ss (__m128 __A, __m128 __B)
- 
- /* Extracts one of the four words of A.  The selector N must be immediate.  */
- #if 0
--static __inline int __attribute__((__always_inline__))
-+static __inline int __attribute__((__always_inline__, __artificial__))
- _mm_extract_pi16 (__m64 const __A, int const __N)
- {
-   return __builtin_ia32_vec_ext_v4hi ((__v4hi)__A, __N);
- }
- 
--static __inline int __attribute__((__always_inline__))
-+static __inline int __attribute__((__always_inline__, __artificial__))
- _m_pextrw (__m64 const __A, int const __N)
- {
-   return _mm_extract_pi16 (__A, __N);
-@@ -1011,13 +1011,13 @@ _m_pextrw (__m64 const __A, int const __
- /* Inserts word D into one of four words of A.  The selector N must be
-    immediate.  */
- #if 0
--static __inline __m64 __attribute__((__always_inline__))
-+static __inline __m64 __attribute__((__always_inline__, __artificial__))
- _mm_insert_pi16 (__m64 const __A, int const __D, int const __N)
- {
-   return (__m64) __builtin_ia32_vec_set_v4hi ((__v4hi)__A, __D, __N);
- }
- 
--static __inline __m64 __attribute__((__always_inline__))
-+static __inline __m64 __attribute__((__always_inline__, __artificial__))
- _m_pinsrw (__m64 const __A, int const __D, int const __N)
- {
-   return _mm_insert_pi16 (__A, __D, __N);
-@@ -1029,65 +1029,65 @@ _m_pinsrw (__m64 const __A, int const __
- #endif
- 
- /* Compute the element-wise maximum of signed 16-bit values.  */
--static __inline __m64 __attribute__((__always_inline__))
-+static __inline __m64 __attribute__((__always_inline__, __artificial__))
- _mm_max_pi16 (__m64 __A, __m64 __B)
- {
-   return (__m64) __builtin_ia32_pmaxsw ((__v4hi)__A, (__v4hi)__B);
- }
- 
--static __inline __m64 __attribute__((__always_inline__))
-+static __inline __m64 __attribute__((__always_inline__, __artificial__))
- _m_pmaxsw (__m64 __A, __m64 __B)
- {
-   return _mm_max_pi16 (__A, __B);
- }
- 
- /* Compute the element-wise maximum of unsigned 8-bit values.  */
--static __inline __m64 __attribute__((__always_inline__))
-+static __inline __m64 __attribute__((__always_inline__, __artificial__))
- _mm_max_pu8 (__m64 __A, __m64 __B)
- {
-   return (__m64) __builtin_ia32_pmaxub ((__v8qi)__A, (__v8qi)__B);
- }
- 
--static __inline __m64 __attribute__((__always_inline__))
-+static __inline __m64 __attribute__((__always_inline__, __artificial__))
- _m_pmaxub (__m64 __A, __m64 __B)
- {
-   return _mm_max_pu8 (__A, __B);
- }
- 
- /* Compute the element-wise minimum of signed 16-bit values.  */
--static __inline __m64 __attribute__((__always_inline__))
-+static __inline __m64 __attribute__((__always_inline__, __artificial__))
- _mm_min_pi16 (__m64 __A, __m64 __B)
- {
-   return (__m64) __builtin_ia32_pminsw ((__v4hi)__A, (__v4hi)__B);
- }
- 
--static __inline __m64 __attribute__((__always_inline__))
-+static __inline __m64 __attribute__((__always_inline__, __artificial__))
- _m_pminsw (__m64 __A, __m64 __B)
- {
-   return _mm_min_pi16 (__A, __B);
- }
- 
- /* Compute the element-wise minimum of unsigned 8-bit values.  */
--static __inline __m64 __attribute__((__always_inline__))
-+static __inline __m64 __attribute__((__always_inline__, __artificial__))
- _mm_min_pu8 (__m64 __A, __m64 __B)
- {
-   return (__m64) __builtin_ia32_pminub ((__v8qi)__A, (__v8qi)__B);
- }
- 
--static __inline __m64 __attribute__((__always_inline__))
-+static __inline __m64 __attribute__((__always_inline__, __artificial__))
- _m_pminub (__m64 __A, __m64 __B)
- {
-   return _mm_min_pu8 (__A, __B);
- }
- 
- /* Create an 8-bit mask of the signs of 8-bit values.  */
--static __inline int __attribute__((__always_inline__))
-+static __inline int __attribute__((__always_inline__, __artificial__))
- _mm_movemask_pi8 (__m64 __A)
- {
-   return __builtin_ia32_pmovmskb ((__v8qi)__A);
- }
- 
--static __inline int __attribute__((__always_inline__))
-+static __inline int __attribute__((__always_inline__, __artificial__))
- _m_pmovmskb (__m64 __A)
- {
-   return _mm_movemask_pi8 (__A);
-@@ -1095,13 +1095,13 @@ _m_pmovmskb (__m64 __A)
- 
- /* Multiply four unsigned 16-bit values in A by four unsigned 16-bit values
-    in B and produce the high 16 bits of the 32-bit results.  */
--static __inline __m64 __attribute__((__always_inline__))
-+static __inline __m64 __attribute__((__always_inline__, __artificial__))
- _mm_mulhi_pu16 (__m64 __A, __m64 __B)
- {
-   return (__m64) __builtin_ia32_pmulhuw ((__v4hi)__A, (__v4hi)__B);
- }
- 
--static __inline __m64 __attribute__((__always_inline__))
-+static __inline __m64 __attribute__((__always_inline__, __artificial__))
- _m_pmulhuw (__m64 __A, __m64 __B)
- {
-   return _mm_mulhi_pu16 (__A, __B);
-@@ -1110,13 +1110,13 @@ _m_pmulhuw (__m64 __A, __m64 __B)
- /* Return a combination of the four 16-bit values in A.  The selector
-    must be an immediate.  */
- #if 0
--static __inline __m64 __attribute__((__always_inline__))
-+static __inline __m64 __attribute__((__always_inline__, __artificial__))
- _mm_shuffle_pi16 (__m64 __A, int __N)
- {
-   return (__m64) __builtin_ia32_pshufw ((__v4hi)__A, __N);
- }
- 
--static __inline __m64 __attribute__((__always_inline__))
-+static __inline __m64 __attribute__((__always_inline__, __artificial__))
- _m_pshufw (__m64 __A, int __N)
- {
-   return _mm_shuffle_pi16 (__A, __N);
-@@ -1130,39 +1130,39 @@ _m_pshufw (__m64 __A, int __N)
- /* Conditionally store byte elements of A into P.  The high bit of each
-    byte in the selector N determines whether the corresponding byte from
-    A is stored.  */
--static __inline void __attribute__((__always_inline__))
-+static __inline void __attribute__((__always_inline__, __artificial__))
- _mm_maskmove_si64 (__m64 __A, __m64 __N, char *__P)
- {
-   __builtin_ia32_maskmovq ((__v8qi)__A, (__v8qi)__N, __P);
- }
- 
--static __inline void __attribute__((__always_inline__))
-+static __inline void __attribute__((__always_inline__, __artificial__))
- _m_maskmovq (__m64 __A, __m64 __N, char *__P)
- {
-   _mm_maskmove_si64 (__A, __N, __P);
- }
- 
- /* Compute the rounded averages of the unsigned 8-bit values in A and B.  */
--static __inline __m64 __attribute__((__always_inline__))
-+static __inline __m64 __attribute__((__always_inline__, __artificial__))
- _mm_avg_pu8 (__m64 __A, __m64 __B)
- {
-   return (__m64) __builtin_ia32_pavgb ((__v8qi)__A, (__v8qi)__B);
- }
- 
--static __inline __m64 __attribute__((__always_inline__))
-+static __inline __m64 __attribute__((__always_inline__, __artificial__))
- _m_pavgb (__m64 __A, __m64 __B)
- {
-   return _mm_avg_pu8 (__A, __B);
- }
- 
- /* Compute the rounded averages of the unsigned 16-bit values in A and B.  */
--static __inline __m64 __attribute__((__always_inline__))
-+static __inline __m64 __attribute__((__always_inline__, __artificial__))
- _mm_avg_pu16 (__m64 __A, __m64 __B)
- {
-   return (__m64) __builtin_ia32_pavgw ((__v4hi)__A, (__v4hi)__B);
- }
- 
--static __inline __m64 __attribute__((__always_inline__))
-+static __inline __m64 __attribute__((__always_inline__, __artificial__))
- _m_pavgw (__m64 __A, __m64 __B)
- {
-   return _mm_avg_pu16 (__A, __B);
-@@ -1171,13 +1171,13 @@ _m_pavgw (__m64 __A, __m64 __B)
- /* Compute the sum of the absolute differences of the unsigned 8-bit
-    values in A and B.  Return the value in the lower 16-bit word; the
-    upper words are cleared.  */
--static __inline __m64 __attribute__((__always_inline__))
-+static __inline __m64 __attribute__((__always_inline__, __artificial__))
- _mm_sad_pu8 (__m64 __A, __m64 __B)
- {
-   return (__m64) __builtin_ia32_psadbw ((__v8qi)__A, (__v8qi)__B);
- }
- 
--static __inline __m64 __attribute__((__always_inline__))
-+static __inline __m64 __attribute__((__always_inline__, __artificial__))
- _m_psadbw (__m64 __A, __m64 __B)
- {
-   return _mm_sad_pu8 (__A, __B);
-@@ -1186,7 +1186,7 @@ _m_psadbw (__m64 __A, __m64 __B)
- /* Loads one cache line from address P to a location "closer" to the
-    processor.  The selector I specifies the type of prefetch operation.  */
- #if 0
--static __inline void __attribute__((__always_inline__))
-+static __inline void __attribute__((__always_inline__, __artificial__))
- _mm_prefetch (void *__P, enum _mm_hint __I)
- {
-   __builtin_prefetch (__P, 0, __I);
-@@ -1197,14 +1197,14 @@ _mm_prefetch (void *__P, enum _mm_hint _
- #endif
- 
- /* Stores the data in A to the address P without polluting the caches.  */
--static __inline void __attribute__((__always_inline__))
-+static __inline void __attribute__((__always_inline__, __artificial__))
- _mm_stream_pi (__m64 *__P, __m64 __A)
- {
-   __builtin_ia32_movntq ((unsigned long long *)__P, (unsigned long long)__A);
- }
- 
- /* Likewise.  The address must be 16-byte aligned.  */
--static __inline void __attribute__((__always_inline__))
-+static __inline void __attribute__((__always_inline__, __artificial__))
- _mm_stream_ps (float *__P, __m128 __A)
- {
-   __builtin_ia32_movntps (__P, (__v4sf)__A);
-@@ -1212,7 +1212,7 @@ _mm_stream_ps (float *__P, __m128 __A)
- 
- /* Guarantees that every preceding store is globally visible before
-    any subsequent store.  */
--static __inline void __attribute__((__always_inline__))
-+static __inline void __attribute__((__always_inline__, __artificial__))
- _mm_sfence (void)
- {
-   __builtin_ia32_sfence ();
-@@ -1221,7 +1221,7 @@ _mm_sfence (void)
- /* The execution of the next instruction is delayed by an implementation
-    specific amount of time.  The instruction does not modify the
-    architectural state.  */
--static __inline void __attribute__((__always_inline__))
-+static __inline void __attribute__((__always_inline__, __artificial__))
- _mm_pause (void)
- {
-   __asm__ __volatile__ ("rep; nop" : : );
---- gcc/config/i386/ammintrin.h.jj	2007-06-26 13:38:46.000000000 +0200
-+++ gcc/config/i386/ammintrin.h	2007-09-25 15:05:56.000000000 +0200
-@@ -37,19 +37,19 @@
- /* We need definitions from the SSE3, SSE2 and SSE header files*/
- #include <pmmintrin.h>
- 
--static __inline void __attribute__((__always_inline__))
-+static __inline void __attribute__((__always_inline__, __artificial__))
- _mm_stream_sd (double * __P, __m128d __Y)
- {
-   __builtin_ia32_movntsd (__P, (__v2df) __Y);
- }
- 
--static __inline void __attribute__((__always_inline__))
-+static __inline void __attribute__((__always_inline__, __artificial__))
- _mm_stream_ss (float * __P, __m128 __Y)
- {
-   __builtin_ia32_movntss (__P, (__v4sf) __Y);
- }
- 
--static __inline __m128i __attribute__((__always_inline__))
-+static __inline __m128i __attribute__((__always_inline__, __artificial__))
- _mm_extract_si64 (__m128i __X, __m128i __Y)
- {
-   return (__m128i) __builtin_ia32_extrq ((__v2di) __X, (__v16qi) __Y);
-@@ -58,7 +58,7 @@ _mm_extract_si64 (__m128i __X, __m128i _
- #define _mm_extracti_si64(X, I, L) \
- ((__m128i) __builtin_ia32_extrqi ((__v2di)(X), I, L))
- 
--static __inline __m128i __attribute__((__always_inline__))
-+static __inline __m128i __attribute__((__always_inline__, __artificial__))
- _mm_insert_si64 (__m128i __X,__m128i __Y)
- {
-   return (__m128i) __builtin_ia32_insertq ((__v2di)__X, (__v2di)__Y);
---- gcc/config/i386/emmintrin.h.jj	2007-06-26 13:38:46.000000000 +0200
-+++ gcc/config/i386/emmintrin.h	2007-09-25 15:06:19.000000000 +0200
-@@ -54,89 +54,89 @@ typedef double __m128d __attribute__ ((_
-  (((fp1) << 1) | (fp0))
- 
- /* Create a vector with element 0 as F and the rest zero.  */
--static __inline __m128d __attribute__((__always_inline__))
-+static __inline __m128d __attribute__((__always_inline__, __artificial__))
- _mm_set_sd (double __F)
- {
-   return __extension__ (__m128d){ __F, 0 };
- }
- 
- /* Create a vector with both elements equal to F.  */
--static __inline __m128d __attribute__((__always_inline__))
-+static __inline __m128d __attribute__((__always_inline__, __artificial__))
- _mm_set1_pd (double __F)
- {
-   return __extension__ (__m128d){ __F, __F };
- }
- 
--static __inline __m128d __attribute__((__always_inline__))
-+static __inline __m128d __attribute__((__always_inline__, __artificial__))
- _mm_set_pd1 (double __F)
- {
-   return _mm_set1_pd (__F);
- }
- 
- /* Create a vector with the lower value X and upper value W.  */
--static __inline __m128d __attribute__((__always_inline__))
-+static __inline __m128d __attribute__((__always_inline__, __artificial__))
- _mm_set_pd (double __W, double __X)
- {
-   return __extension__ (__m128d){ __X, __W };
- }
- 
- /* Create a vector with the lower value W and upper value X.  */
--static __inline __m128d __attribute__((__always_inline__))
-+static __inline __m128d __attribute__((__always_inline__, __artificial__))
- _mm_setr_pd (double __W, double __X)
- {
-   return __extension__ (__m128d){ __W, __X };
- }
- 
- /* Create a vector of zeros.  */
--static __inline __m128d __attribute__((__always_inline__))
-+static __inline __m128d __attribute__((__always_inline__, __artificial__))
- _mm_setzero_pd (void)
- {
-   return __extension__ (__m128d){ 0.0, 0.0 };
- }
- 
- /* Sets the low DPFP value of A from the low value of B.  */
--static __inline __m128d __attribute__((__always_inline__))
-+static __inline __m128d __attribute__((__always_inline__, __artificial__))
- _mm_move_sd (__m128d __A, __m128d __B)
- {
-   return (__m128d) __builtin_ia32_movsd ((__v2df)__A, (__v2df)__B);
- }
- 
- /* Load two DPFP values from P.  The address must be 16-byte aligned.  */
--static __inline __m128d __attribute__((__always_inline__))
-+static __inline __m128d __attribute__((__always_inline__, __artificial__))
- _mm_load_pd (double const *__P)
- {
-   return *(__m128d *)__P;
- }
- 
- /* Load two DPFP values from P.  The address need not be 16-byte aligned.  */
--static __inline __m128d __attribute__((__always_inline__))
-+static __inline __m128d __attribute__((__always_inline__, __artificial__))
- _mm_loadu_pd (double const *__P)
- {
-   return __builtin_ia32_loadupd (__P);
- }
- 
- /* Create a vector with all two elements equal to *P.  */
--static __inline __m128d __attribute__((__always_inline__))
-+static __inline __m128d __attribute__((__always_inline__, __artificial__))
- _mm_load1_pd (double const *__P)
- {
-   return _mm_set1_pd (*__P);
- }
- 
- /* Create a vector with element 0 as *P and the rest zero.  */
--static __inline __m128d __attribute__((__always_inline__))
-+static __inline __m128d __attribute__((__always_inline__, __artificial__))
- _mm_load_sd (double const *__P)
- {
-   return _mm_set_sd (*__P);
- }
- 
--static __inline __m128d __attribute__((__always_inline__))
-+static __inline __m128d __attribute__((__always_inline__, __artificial__))
- _mm_load_pd1 (double const *__P)
- {
-   return _mm_load1_pd (__P);
- }
- 
- /* Load two DPFP values in reverse order.  The address must be aligned.  */
--static __inline __m128d __attribute__((__always_inline__))
-+static __inline __m128d __attribute__((__always_inline__, __artificial__))
- _mm_loadr_pd (double const *__P)
- {
-   __m128d __tmp = _mm_load_pd (__P);
-@@ -144,40 +144,40 @@ _mm_loadr_pd (double const *__P)
- }
- 
- /* Store two DPFP values.  The address must be 16-byte aligned.  */
--static __inline void __attribute__((__always_inline__))
-+static __inline void __attribute__((__always_inline__, __artificial__))
- _mm_store_pd (double *__P, __m128d __A)
- {
-   *(__m128d *)__P = __A;
- }
- 
- /* Store two DPFP values.  The address need not be 16-byte aligned.  */
--static __inline void __attribute__((__always_inline__))
-+static __inline void __attribute__((__always_inline__, __artificial__))
- _mm_storeu_pd (double *__P, __m128d __A)
- {
-   __builtin_ia32_storeupd (__P, __A);
- }
- 
- /* Stores the lower DPFP value.  */
--static __inline void __attribute__((__always_inline__))
-+static __inline void __attribute__((__always_inline__, __artificial__))
- _mm_store_sd (double *__P, __m128d __A)
- {
-   *__P = __builtin_ia32_vec_ext_v2df (__A, 0);
- }
- 
--static __inline double __attribute__((__always_inline__))
-+static __inline double __attribute__((__always_inline__, __artificial__))
- _mm_cvtsd_f64 (__m128d __A)
- {
-   return __builtin_ia32_vec_ext_v2df (__A, 0);
- }
- 
--static __inline void __attribute__((__always_inline__))
-+static __inline void __attribute__((__always_inline__, __artificial__))
- _mm_storel_pd (double *__P, __m128d __A)
- {
-   _mm_store_sd (__P, __A);
- }
- 
- /* Stores the upper DPFP value.  */
--static __inline void __attribute__((__always_inline__))
-+static __inline void __attribute__((__always_inline__, __artificial__))
- _mm_storeh_pd (double *__P, __m128d __A)
- {
-   *__P = __builtin_ia32_vec_ext_v2df (__A, 1);
-@@ -185,26 +185,26 @@ _mm_storeh_pd (double *__P, __m128d __A)
- 
- /* Store the lower DPFP value across two words.
-    The address must be 16-byte aligned.  */
--static __inline void __attribute__((__always_inline__))
-+static __inline void __attribute__((__always_inline__, __artificial__))
- _mm_store1_pd (double *__P, __m128d __A)
- {
-   _mm_store_pd (__P, __builtin_ia32_shufpd (__A, __A, _MM_SHUFFLE2 (0,0)));
- }
- 
--static __inline void __attribute__((__always_inline__))
-+static __inline void __attribute__((__always_inline__, __artificial__))
- _mm_store_pd1 (double *__P, __m128d __A)
- {
-   _mm_store1_pd (__P, __A);
- }
- 
- /* Store two DPFP values in reverse order.  The address must be aligned.  */
--static __inline void __attribute__((__always_inline__))
-+static __inline void __attribute__((__always_inline__, __artificial__))
- _mm_storer_pd (double *__P, __m128d __A)
- {
-   _mm_store_pd (__P, __builtin_ia32_shufpd (__A, __A, _MM_SHUFFLE2 (0,1)));
- }
- 
--static __inline int __attribute__((__always_inline__))
-+static __inline int __attribute__((__always_inline__, __artificial__))
- _mm_cvtsi128_si32 (__m128i __A)
- {
-   return __builtin_ia32_vec_ext_v4si ((__v4si)__A, 0);
-@@ -212,221 +212,221 @@ _mm_cvtsi128_si32 (__m128i __A)
- 
- #ifdef __x86_64__
- /* Intel intrinsic.  */
--static __inline long long __attribute__((__always_inline__))
-+static __inline long long __attribute__((__always_inline__, __artificial__))
- _mm_cvtsi128_si64 (__m128i __A)
- {
-   return __builtin_ia32_vec_ext_v2di ((__v2di)__A, 0);
- }
- 
- /* Microsoft intrinsic.  */
--static __inline long long __attribute__((__always_inline__))
-+static __inline long long __attribute__((__always_inline__, __artificial__))
- _mm_cvtsi128_si64x (__m128i __A)
- {
-   return __builtin_ia32_vec_ext_v2di ((__v2di)__A, 0);
- }
- #endif
- 
--static __inline __m128d __attribute__((__always_inline__))
-+static __inline __m128d __attribute__((__always_inline__, __artificial__))
- _mm_add_pd (__m128d __A, __m128d __B)
- {
-   return (__m128d)__builtin_ia32_addpd ((__v2df)__A, (__v2df)__B);
- }
- 
--static __inline __m128d __attribute__((__always_inline__))
-+static __inline __m128d __attribute__((__always_inline__, __artificial__))
- _mm_add_sd (__m128d __A, __m128d __B)
- {
-   return (__m128d)__builtin_ia32_addsd ((__v2df)__A, (__v2df)__B);
- }
- 
--static __inline __m128d __attribute__((__always_inline__))
-+static __inline __m128d __attribute__((__always_inline__, __artificial__))
- _mm_sub_pd (__m128d __A, __m128d __B)
- {
-   return (__m128d)__builtin_ia32_subpd ((__v2df)__A, (__v2df)__B);
- }
- 
--static __inline __m128d __attribute__((__always_inline__))
-+static __inline __m128d __attribute__((__always_inline__, __artificial__))
- _mm_sub_sd (__m128d __A, __m128d __B)
- {
-   return (__m128d)__builtin_ia32_subsd ((__v2df)__A, (__v2df)__B);
- }
- 
--static __inline __m128d __attribute__((__always_inline__))
-+static __inline __m128d __attribute__((__always_inline__, __artificial__))
- _mm_mul_pd (__m128d __A, __m128d __B)
- {
-   return (__m128d)__builtin_ia32_mulpd ((__v2df)__A, (__v2df)__B);
- }
- 
--static __inline __m128d __attribute__((__always_inline__))
-+static __inline __m128d __attribute__((__always_inline__, __artificial__))
- _mm_mul_sd (__m128d __A, __m128d __B)
- {
-   return (__m128d)__builtin_ia32_mulsd ((__v2df)__A, (__v2df)__B);
- }
- 
--static __inline __m128d __attribute__((__always_inline__))
-+static __inline __m128d __attribute__((__always_inline__, __artificial__))
- _mm_div_pd (__m128d __A, __m128d __B)
- {
-   return (__m128d)__builtin_ia32_divpd ((__v2df)__A, (__v2df)__B);
- }
- 
--static __inline __m128d __attribute__((__always_inline__))
-+static __inline __m128d __attribute__((__always_inline__, __artificial__))
- _mm_div_sd (__m128d __A, __m128d __B)
- {
-   return (__m128d)__builtin_ia32_divsd ((__v2df)__A, (__v2df)__B);
- }
- 
--static __inline __m128d __attribute__((__always_inline__))
-+static __inline __m128d __attribute__((__always_inline__, __artificial__))
- _mm_sqrt_pd (__m128d __A)
- {
-   return (__m128d)__builtin_ia32_sqrtpd ((__v2df)__A);
- }
- 
- /* Return pair {sqrt (A[0), B[1]}.  */
--static __inline __m128d __attribute__((__always_inline__))
-+static __inline __m128d __attribute__((__always_inline__, __artificial__))
- _mm_sqrt_sd (__m128d __A, __m128d __B)
- {
-   __v2df __tmp = __builtin_ia32_movsd ((__v2df)__A, (__v2df)__B);
-   return (__m128d)__builtin_ia32_sqrtsd ((__v2df)__tmp);
- }
- 
--static __inline __m128d __attribute__((__always_inline__))
-+static __inline __m128d __attribute__((__always_inline__, __artificial__))
- _mm_min_pd (__m128d __A, __m128d __B)
- {
-   return (__m128d)__builtin_ia32_minpd ((__v2df)__A, (__v2df)__B);
- }
- 
--static __inline __m128d __attribute__((__always_inline__))
-+static __inline __m128d __attribute__((__always_inline__, __artificial__))
- _mm_min_sd (__m128d __A, __m128d __B)
- {
-   return (__m128d)__builtin_ia32_minsd ((__v2df)__A, (__v2df)__B);
- }
- 
--static __inline __m128d __attribute__((__always_inline__))
-+static __inline __m128d __attribute__((__always_inline__, __artificial__))
- _mm_max_pd (__m128d __A, __m128d __B)
- {
-   return (__m128d)__builtin_ia32_maxpd ((__v2df)__A, (__v2df)__B);
- }
- 
--static __inline __m128d __attribute__((__always_inline__))
-+static __inline __m128d __attribute__((__always_inline__, __artificial__))
- _mm_max_sd (__m128d __A, __m128d __B)
- {
-   return (__m128d)__builtin_ia32_maxsd ((__v2df)__A, (__v2df)__B);
- }
- 
--static __inline __m128d __attribute__((__always_inline__))
-+static __inline __m128d __attribute__((__always_inline__, __artificial__))
- _mm_and_pd (__m128d __A, __m128d __B)
- {
-   return (__m128d)__builtin_ia32_andpd ((__v2df)__A, (__v2df)__B);
- }
- 
--static __inline __m128d __attribute__((__always_inline__))
-+static __inline __m128d __attribute__((__always_inline__, __artificial__))
- _mm_andnot_pd (__m128d __A, __m128d __B)
- {
-   return (__m128d)__builtin_ia32_andnpd ((__v2df)__A, (__v2df)__B);
- }
- 
--static __inline __m128d __attribute__((__always_inline__))
-+static __inline __m128d __attribute__((__always_inline__, __artificial__))
- _mm_or_pd (__m128d __A, __m128d __B)
- {
-   return (__m128d)__builtin_ia32_orpd ((__v2df)__A, (__v2df)__B);
- }
- 
--static __inline __m128d __attribute__((__always_inline__))
-+static __inline __m128d __attribute__((__always_inline__, __artificial__))
- _mm_xor_pd (__m128d __A, __m128d __B)
- {
-   return (__m128d)__builtin_ia32_xorpd ((__v2df)__A, (__v2df)__B);
- }
- 
--static __inline __m128d __attribute__((__always_inline__))
-+static __inline __m128d __attribute__((__always_inline__, __artificial__))
- _mm_cmpeq_pd (__m128d __A, __m128d __B)
- {
-   return (__m128d)__builtin_ia32_cmpeqpd ((__v2df)__A, (__v2df)__B);
- }
- 
--static __inline __m128d __attribute__((__always_inline__))
-+static __inline __m128d __attribute__((__always_inline__, __artificial__))
- _mm_cmplt_pd (__m128d __A, __m128d __B)
- {
-   return (__m128d)__builtin_ia32_cmpltpd ((__v2df)__A, (__v2df)__B);
- }
- 
--static __inline __m128d __attribute__((__always_inline__))
-+static __inline __m128d __attribute__((__always_inline__, __artificial__))
- _mm_cmple_pd (__m128d __A, __m128d __B)
- {
-   return (__m128d)__builtin_ia32_cmplepd ((__v2df)__A, (__v2df)__B);
- }
- 
--static __inline __m128d __attribute__((__always_inline__))
-+static __inline __m128d __attribute__((__always_inline__, __artificial__))
- _mm_cmpgt_pd (__m128d __A, __m128d __B)
- {
-   return (__m128d)__builtin_ia32_cmpgtpd ((__v2df)__A, (__v2df)__B);
- }
- 
--static __inline __m128d __attribute__((__always_inline__))
-+static __inline __m128d __attribute__((__always_inline__, __artificial__))
- _mm_cmpge_pd (__m128d __A, __m128d __B)
- {
-   return (__m128d)__builtin_ia32_cmpgepd ((__v2df)__A, (__v2df)__B);
- }
- 
--static __inline __m128d __attribute__((__always_inline__))
-+static __inline __m128d __attribute__((__always_inline__, __artificial__))
- _mm_cmpneq_pd (__m128d __A, __m128d __B)
- {
-   return (__m128d)__builtin_ia32_cmpneqpd ((__v2df)__A, (__v2df)__B);
- }
- 
--static __inline __m128d __attribute__((__always_inline__))
-+static __inline __m128d __attribute__((__always_inline__, __artificial__))
- _mm_cmpnlt_pd (__m128d __A, __m128d __B)
- {
-   return (__m128d)__builtin_ia32_cmpnltpd ((__v2df)__A, (__v2df)__B);
- }
- 
--static __inline __m128d __attribute__((__always_inline__))
-+static __inline __m128d __attribute__((__always_inline__, __artificial__))
- _mm_cmpnle_pd (__m128d __A, __m128d __B)
- {
-   return (__m128d)__builtin_ia32_cmpnlepd ((__v2df)__A, (__v2df)__B);
- }
- 
--static __inline __m128d __attribute__((__always_inline__))
-+static __inline __m128d __attribute__((__always_inline__, __artificial__))
- _mm_cmpngt_pd (__m128d __A, __m128d __B)
- {
-   return (__m128d)__builtin_ia32_cmpngtpd ((__v2df)__A, (__v2df)__B);
- }
- 
--static __inline __m128d __attribute__((__always_inline__))
-+static __inline __m128d __attribute__((__always_inline__, __artificial__))
- _mm_cmpnge_pd (__m128d __A, __m128d __B)
- {
-   return (__m128d)__builtin_ia32_cmpngepd ((__v2df)__A, (__v2df)__B);
- }
- 
--static __inline __m128d __attribute__((__always_inline__))
-+static __inline __m128d __attribute__((__always_inline__, __artificial__))
- _mm_cmpord_pd (__m128d __A, __m128d __B)
- {
-   return (__m128d)__builtin_ia32_cmpordpd ((__v2df)__A, (__v2df)__B);
- }
- 
--static __inline __m128d __attribute__((__always_inline__))
-+static __inline __m128d __attribute__((__always_inline__, __artificial__))
- _mm_cmpunord_pd (__m128d __A, __m128d __B)
- {
-   return (__m128d)__builtin_ia32_cmpunordpd ((__v2df)__A, (__v2df)__B);
- }
- 
--static __inline __m128d __attribute__((__always_inline__))
-+static __inline __m128d __attribute__((__always_inline__, __artificial__))
- _mm_cmpeq_sd (__m128d __A, __m128d __B)
- {
-   return (__m128d)__builtin_ia32_cmpeqsd ((__v2df)__A, (__v2df)__B);
- }
- 
--static __inline __m128d __attribute__((__always_inline__))
-+static __inline __m128d __attribute__((__always_inline__, __artificial__))
- _mm_cmplt_sd (__m128d __A, __m128d __B)
- {
-   return (__m128d)__builtin_ia32_cmpltsd ((__v2df)__A, (__v2df)__B);
- }
- 
--static __inline __m128d __attribute__((__always_inline__))
-+static __inline __m128d __attribute__((__always_inline__, __artificial__))
- _mm_cmple_sd (__m128d __A, __m128d __B)
- {
-   return (__m128d)__builtin_ia32_cmplesd ((__v2df)__A, (__v2df)__B);
- }
- 
--static __inline __m128d __attribute__((__always_inline__))
-+static __inline __m128d __attribute__((__always_inline__, __artificial__))
- _mm_cmpgt_sd (__m128d __A, __m128d __B)
- {
-   return (__m128d) __builtin_ia32_movsd ((__v2df) __A,
-@@ -436,7 +436,7 @@ _mm_cmpgt_sd (__m128d __A, __m128d __B)
- 								 __A));
- }
- 
--static __inline __m128d __attribute__((__always_inline__))
-+static __inline __m128d __attribute__((__always_inline__, __artificial__))
- _mm_cmpge_sd (__m128d __A, __m128d __B)
- {
-   return (__m128d) __builtin_ia32_movsd ((__v2df) __A,
-@@ -446,25 +446,25 @@ _mm_cmpge_sd (__m128d __A, __m128d __B)
- 								 __A));
- }
- 
--static __inline __m128d __attribute__((__always_inline__))
-+static __inline __m128d __attribute__((__always_inline__, __artificial__))
- _mm_cmpneq_sd (__m128d __A, __m128d __B)
- {
-   return (__m128d)__builtin_ia32_cmpneqsd ((__v2df)__A, (__v2df)__B);
- }
- 
--static __inline __m128d __attribute__((__always_inline__))
-+static __inline __m128d __attribute__((__always_inline__, __artificial__))
- _mm_cmpnlt_sd (__m128d __A, __m128d __B)
- {
-   return (__m128d)__builtin_ia32_cmpnltsd ((__v2df)__A, (__v2df)__B);
- }
- 
--static __inline __m128d __attribute__((__always_inline__))
-+static __inline __m128d __attribute__((__always_inline__, __artificial__))
- _mm_cmpnle_sd (__m128d __A, __m128d __B)
- {
-   return (__m128d)__builtin_ia32_cmpnlesd ((__v2df)__A, (__v2df)__B);
- }
- 
--static __inline __m128d __attribute__((__always_inline__))
-+static __inline __m128d __attribute__((__always_inline__, __artificial__))
- _mm_cmpngt_sd (__m128d __A, __m128d __B)
- {
-   return (__m128d) __builtin_ia32_movsd ((__v2df) __A,
-@@ -474,7 +474,7 @@ _mm_cmpngt_sd (__m128d __A, __m128d __B)
- 								  __A));
- }
- 
--static __inline __m128d __attribute__((__always_inline__))
-+static __inline __m128d __attribute__((__always_inline__, __artificial__))
- _mm_cmpnge_sd (__m128d __A, __m128d __B)
- {
-   return (__m128d) __builtin_ia32_movsd ((__v2df) __A,
-@@ -484,85 +484,85 @@ _mm_cmpnge_sd (__m128d __A, __m128d __B)
- 								  __A));
- }
- 
--static __inline __m128d __attribute__((__always_inline__))
-+static __inline __m128d __attribute__((__always_inline__, __artificial__))
- _mm_cmpord_sd (__m128d __A, __m128d __B)
- {
-   return (__m128d)__builtin_ia32_cmpordsd ((__v2df)__A, (__v2df)__B);
- }
- 
--static __inline __m128d __attribute__((__always_inline__))
-+static __inline __m128d __attribute__((__always_inline__, __artificial__))
- _mm_cmpunord_sd (__m128d __A, __m128d __B)
- {
-   return (__m128d)__builtin_ia32_cmpunordsd ((__v2df)__A, (__v2df)__B);
- }
- 
--static __inline int __attribute__((__always_inline__))
-+static __inline int __attribute__((__always_inline__, __artificial__))
- _mm_comieq_sd (__m128d __A, __m128d __B)
- {
-   return __builtin_ia32_comisdeq ((__v2df)__A, (__v2df)__B);
- }
- 
--static __inline int __attribute__((__always_inline__))
-+static __inline int __attribute__((__always_inline__, __artificial__))
- _mm_comilt_sd (__m128d __A, __m128d __B)
- {
-   return __builtin_ia32_comisdlt ((__v2df)__A, (__v2df)__B);
- }
- 
--static __inline int __attribute__((__always_inline__))
-+static __inline int __attribute__((__always_inline__, __artificial__))
- _mm_comile_sd (__m128d __A, __m128d __B)
- {
-   return __builtin_ia32_comisdle ((__v2df)__A, (__v2df)__B);
- }
- 
--static __inline int __attribute__((__always_inline__))
-+static __inline int __attribute__((__always_inline__, __artificial__))
- _mm_comigt_sd (__m128d __A, __m128d __B)
- {
-   return __builtin_ia32_comisdgt ((__v2df)__A, (__v2df)__B);
- }
- 
--static __inline int __attribute__((__always_inline__))
-+static __inline int __attribute__((__always_inline__, __artificial__))
- _mm_comige_sd (__m128d __A, __m128d __B)
- {
-   return __builtin_ia32_comisdge ((__v2df)__A, (__v2df)__B);
- }
- 
--static __inline int __attribute__((__always_inline__))
-+static __inline int __attribute__((__always_inline__, __artificial__))
- _mm_comineq_sd (__m128d __A, __m128d __B)
- {
-   return __builtin_ia32_comisdneq ((__v2df)__A, (__v2df)__B);
- }
- 
--static __inline int __attribute__((__always_inline__))
-+static __inline int __attribute__((__always_inline__, __artificial__))
- _mm_ucomieq_sd (__m128d __A, __m128d __B)
- {
-   return __builtin_ia32_ucomisdeq ((__v2df)__A, (__v2df)__B);
- }
- 
--static __inline int __attribute__((__always_inline__))
-+static __inline int __attribute__((__always_inline__, __artificial__))
- _mm_ucomilt_sd (__m128d __A, __m128d __B)
- {
-   return __builtin_ia32_ucomisdlt ((__v2df)__A, (__v2df)__B);
- }
- 
--static __inline int __attribute__((__always_inline__))
-+static __inline int __attribute__((__always_inline__, __artificial__))
- _mm_ucomile_sd (__m128d __A, __m128d __B)
- {
-   return __builtin_ia32_ucomisdle ((__v2df)__A, (__v2df)__B);
- }
- 
--static __inline int __attribute__((__always_inline__))
-+static __inline int __attribute__((__always_inline__, __artificial__))
- _mm_ucomigt_sd (__m128d __A, __m128d __B)
- {
-   return __builtin_ia32_ucomisdgt ((__v2df)__A, (__v2df)__B);
- }
- 
--static __inline int __attribute__((__always_inline__))
-+static __inline int __attribute__((__always_inline__, __artificial__))
- _mm_ucomige_sd (__m128d __A, __m128d __B)
- {
-   return __builtin_ia32_ucomisdge ((__v2df)__A, (__v2df)__B);
- }
- 
--static __inline int __attribute__((__always_inline__))
-+static __inline int __attribute__((__always_inline__, __artificial__))
- _mm_ucomineq_sd (__m128d __A, __m128d __B)
- {
-   return __builtin_ia32_ucomisdneq ((__v2df)__A, (__v2df)__B);
-@@ -570,25 +570,25 @@ _mm_ucomineq_sd (__m128d __A, __m128d __
- 
- /* Create a vector of Qi, where i is the element number.  */
- 
--static __inline __m128i __attribute__((__always_inline__))
-+static __inline __m128i __attribute__((__always_inline__, __artificial__))
- _mm_set_epi64x (long long __q1, long long __q0)
- {
-   return __extension__ (__m128i)(__v2di){ __q0, __q1 };
- }
- 
--static __inline __m128i __attribute__((__always_inline__))
-+static __inline __m128i __attribute__((__always_inline__, __artificial__))
- _mm_set_epi64 (__m64 __q1,  __m64 __q0)
- {
-   return _mm_set_epi64x ((long long)__q1, (long long)__q0);
- }
- 
--static __inline __m128i __attribute__((__always_inline__))
-+static __inline __m128i __attribute__((__always_inline__, __artificial__))
- _mm_set_epi32 (int __q3, int __q2, int __q1, int __q0)
- {
-   return __extension__ (__m128i)(__v4si){ __q0, __q1, __q2, __q3 };
- }
- 
--static __inline __m128i __attribute__((__always_inline__))
-+static __inline __m128i __attribute__((__always_inline__, __artificial__))
- _mm_set_epi16 (short __q7, short __q6, short __q5, short __q4,
- 	       short __q3, short __q2, short __q1, short __q0)
- {
-@@ -596,7 +596,7 @@ _mm_set_epi16 (short __q7, short __q6, s
-     __q0, __q1, __q2, __q3, __q4, __q5, __q6, __q7 };
- }
- 
--static __inline __m128i __attribute__((__always_inline__))
-+static __inline __m128i __attribute__((__always_inline__, __artificial__))
- _mm_set_epi8 (char __q15, char __q14, char __q13, char __q12,
- 	      char __q11, char __q10, char __q09, char __q08,
- 	      char __q07, char __q06, char __q05, char __q04,
-@@ -610,31 +610,31 @@ _mm_set_epi8 (char __q15, char __q14, ch
- 
- /* Set all of the elements of the vector to A.  */
- 
--static __inline __m128i __attribute__((__always_inline__))
-+static __inline __m128i __attribute__((__always_inline__, __artificial__))
- _mm_set1_epi64x (long long __A)
- {
-   return _mm_set_epi64x (__A, __A);
- }
- 
--static __inline __m128i __attribute__((__always_inline__))
-+static __inline __m128i __attribute__((__always_inline__, __artificial__))
- _mm_set1_epi64 (__m64 __A)
- {
-   return _mm_set_epi64 (__A, __A);
- }
- 
--static __inline __m128i __attribute__((__always_inline__))
-+static __inline __m128i __attribute__((__always_inline__, __artificial__))
- _mm_set1_epi32 (int __A)
- {
-   return _mm_set_epi32 (__A, __A, __A, __A);
- }
- 
--static __inline __m128i __attribute__((__always_inline__))
-+static __inline __m128i __attribute__((__always_inline__, __artificial__))
- _mm_set1_epi16 (short __A)
- {
-   return _mm_set_epi16 (__A, __A, __A, __A, __A, __A, __A, __A);
- }
- 
--static __inline __m128i __attribute__((__always_inline__))
-+static __inline __m128i __attribute__((__always_inline__, __artificial__))
- _mm_set1_epi8 (char __A)
- {
-   return _mm_set_epi8 (__A, __A, __A, __A, __A, __A, __A, __A,
-@@ -644,26 +644,26 @@ _mm_set1_epi8 (char __A)
- /* Create a vector of Qi, where i is the element number.
-    The parameter order is reversed from the _mm_set_epi* functions.  */
- 
--static __inline __m128i __attribute__((__always_inline__))
-+static __inline __m128i __attribute__((__always_inline__, __artificial__))
- _mm_setr_epi64 (__m64 __q0, __m64 __q1)
- {
-   return _mm_set_epi64 (__q1, __q0);
- }
- 
--static __inline __m128i __attribute__((__always_inline__))
-+static __inline __m128i __attribute__((__always_inline__, __artificial__))
- _mm_setr_epi32 (int __q0, int __q1, int __q2, int __q3)
- {
-   return _mm_set_epi32 (__q3, __q2, __q1, __q0);
- }
- 
--static __inline __m128i __attribute__((__always_inline__))
-+static __inline __m128i __attribute__((__always_inline__, __artificial__))
- _mm_setr_epi16 (short __q0, short __q1, short __q2, short __q3,
- 	        short __q4, short __q5, short __q6, short __q7)
- {
-   return _mm_set_epi16 (__q7, __q6, __q5, __q4, __q3, __q2, __q1, __q0);
- }
- 
--static __inline __m128i __attribute__((__always_inline__))
-+static __inline __m128i __attribute__((__always_inline__, __artificial__))
- _mm_setr_epi8 (char __q00, char __q01, char __q02, char __q03,
- 	       char __q04, char __q05, char __q06, char __q07,
- 	       char __q08, char __q09, char __q10, char __q11,
-@@ -675,134 +675,134 @@ _mm_setr_epi8 (char __q00, char __q01, c
- 
- /* Create a vector with element 0 as *P and the rest zero.  */
- 
--static __inline __m128i __attribute__((__always_inline__))
-+static __inline __m128i __attribute__((__always_inline__, __artificial__))
- _mm_load_si128 (__m128i const *__P)
- {
-   return *__P;
- }
- 
--static __inline __m128i __attribute__((__always_inline__))
-+static __inline __m128i __attribute__((__always_inline__, __artificial__))
- _mm_loadu_si128 (__m128i const *__P)
- {
-   return (__m128i) __builtin_ia32_loaddqu ((char const *)__P);
- }
- 
--static __inline __m128i __attribute__((__always_inline__))
-+static __inline __m128i __attribute__((__always_inline__, __artificial__))
- _mm_loadl_epi64 (__m128i const *__P)
- {
-   return _mm_set_epi64 ((__m64)0LL, *(__m64 *)__P);
- }
- 
--static __inline void __attribute__((__always_inline__))
-+static __inline void __attribute__((__always_inline__, __artificial__))
- _mm_store_si128 (__m128i *__P, __m128i __B)
- {
-   *__P = __B;
- }
- 
--static __inline void __attribute__((__always_inline__))
-+static __inline void __attribute__((__always_inline__, __artificial__))
- _mm_storeu_si128 (__m128i *__P, __m128i __B)
- {
-   __builtin_ia32_storedqu ((char *)__P, (__v16qi)__B);
- }
- 
--static __inline void __attribute__((__always_inline__))
-+static __inline void __attribute__((__always_inline__, __artificial__))
- _mm_storel_epi64 (__m128i *__P, __m128i __B)
- {
-   *(long long *)__P = __builtin_ia32_vec_ext_v2di ((__v2di)__B, 0);
- }
- 
--static __inline __m64 __attribute__((__always_inline__))
-+static __inline __m64 __attribute__((__always_inline__, __artificial__))
- _mm_movepi64_pi64 (__m128i __B)
- {
-   return (__m64) __builtin_ia32_vec_ext_v2di ((__v2di)__B, 0);
- }
- 
--static __inline __m128i __attribute__((__always_inline__))
-+static __inline __m128i __attribute__((__always_inline__, __artificial__))
- _mm_movpi64_epi64 (__m64 __A)
- {
-   return _mm_set_epi64 ((__m64)0LL, __A);
- }
- 
--static __inline __m128i __attribute__((__always_inline__))
-+static __inline __m128i __attribute__((__always_inline__, __artificial__))
- _mm_move_epi64 (__m128i __A)
- {
-   return _mm_set_epi64 ((__m64)0LL, _mm_movepi64_pi64 (__A));
- }
- 
- /* Create a vector of zeros.  */
--static __inline __m128i __attribute__((__always_inline__))
-+static __inline __m128i __attribute__((__always_inline__, __artificial__))
- _mm_setzero_si128 (void)
- {
-   return __extension__ (__m128i)(__v4si){ 0, 0, 0, 0 };
- }
- 
--static __inline __m128d __attribute__((__always_inline__))
-+static __inline __m128d __attribute__((__always_inline__, __artificial__))
- _mm_cvtepi32_pd (__m128i __A)
- {
-   return (__m128d)__builtin_ia32_cvtdq2pd ((__v4si) __A);
- }
- 
--static __inline __m128 __attribute__((__always_inline__))
-+static __inline __m128 __attribute__((__always_inline__, __artificial__))
- _mm_cvtepi32_ps (__m128i __A)
- {
-   return (__m128)__builtin_ia32_cvtdq2ps ((__v4si) __A);
- }
- 
--static __inline __m128i __attribute__((__always_inline__))
-+static __inline __m128i __attribute__((__always_inline__, __artificial__))
- _mm_cvtpd_epi32 (__m128d __A)
- {
-   return (__m128i)__builtin_ia32_cvtpd2dq ((__v2df) __A);
- }
- 
--static __inline __m64 __attribute__((__always_inline__))
-+static __inline __m64 __attribute__((__always_inline__, __artificial__))
- _mm_cvtpd_pi32 (__m128d __A)
- {
-   return (__m64)__builtin_ia32_cvtpd2pi ((__v2df) __A);
- }
- 
--static __inline __m128 __attribute__((__always_inline__))
-+static __inline __m128 __attribute__((__always_inline__, __artificial__))
- _mm_cvtpd_ps (__m128d __A)
- {
-   return (__m128)__builtin_ia32_cvtpd2ps ((__v2df) __A);
- }
- 
--static __inline __m128i __attribute__((__always_inline__))
-+static __inline __m128i __attribute__((__always_inline__, __artificial__))
- _mm_cvttpd_epi32 (__m128d __A)
- {
-   return (__m128i)__builtin_ia32_cvttpd2dq ((__v2df) __A);
- }
- 
--static __inline __m64 __attribute__((__always_inline__))
-+static __inline __m64 __attribute__((__always_inline__, __artificial__))
- _mm_cvttpd_pi32 (__m128d __A)
- {
-   return (__m64)__builtin_ia32_cvttpd2pi ((__v2df) __A);
- }
- 
--static __inline __m128d __attribute__((__always_inline__))
-+static __inline __m128d __attribute__((__always_inline__, __artificial__))
- _mm_cvtpi32_pd (__m64 __A)
- {
-   return (__m128d)__builtin_ia32_cvtpi2pd ((__v2si) __A);
- }
- 
--static __inline __m128i __attribute__((__always_inline__))
-+static __inline __m128i __attribute__((__always_inline__, __artificial__))
- _mm_cvtps_epi32 (__m128 __A)
- {
-   return (__m128i)__builtin_ia32_cvtps2dq ((__v4sf) __A);
- }
- 
--static __inline __m128i __attribute__((__always_inline__))
-+static __inline __m128i __attribute__((__always_inline__, __artificial__))
- _mm_cvttps_epi32 (__m128 __A)
- {
-   return (__m128i)__builtin_ia32_cvttps2dq ((__v4sf) __A);
- }
- 
--static __inline __m128d __attribute__((__always_inline__))
-+static __inline __m128d __attribute__((__always_inline__, __artificial__))
- _mm_cvtps_pd (__m128 __A)
- {
-   return (__m128d)__builtin_ia32_cvtps2pd ((__v4sf) __A);
- }
- 
--static __inline int __attribute__((__always_inline__))
-+static __inline int __attribute__((__always_inline__, __artificial__))
- _mm_cvtsd_si32 (__m128d __A)
- {
-   return __builtin_ia32_cvtsd2si ((__v2df) __A);
-@@ -810,21 +810,21 @@ _mm_cvtsd_si32 (__m128d __A)
- 
- #ifdef __x86_64__
- /* Intel intrinsic.  */
--static __inline long long __attribute__((__always_inline__))
-+static __inline long long __attribute__((__always_inline__, __artificial__))
- _mm_cvtsd_si64 (__m128d __A)
- {
-   return __builtin_ia32_cvtsd2si64 ((__v2df) __A);
- }
- 
- /* Microsoft intrinsic.  */
--static __inline long long __attribute__((__always_inline__))
-+static __inline long long __attribute__((__always_inline__, __artificial__))
- _mm_cvtsd_si64x (__m128d __A)
- {
-   return __builtin_ia32_cvtsd2si64 ((__v2df) __A);
- }
- #endif
- 
--static __inline int __attribute__((__always_inline__))
-+static __inline int __attribute__((__always_inline__, __artificial__))
- _mm_cvttsd_si32 (__m128d __A)
- {
-   return __builtin_ia32_cvttsd2si ((__v2df) __A);
-@@ -832,27 +832,27 @@ _mm_cvttsd_si32 (__m128d __A)
- 
- #ifdef __x86_64__
- /* Intel intrinsic.  */
--static __inline long long __attribute__((__always_inline__))
-+static __inline long long __attribute__((__always_inline__, __artificial__))
- _mm_cvttsd_si64 (__m128d __A)
- {
-   return __builtin_ia32_cvttsd2si64 ((__v2df) __A);
- }
- 
- /* Microsoft intrinsic.  */
--static __inline long long __attribute__((__always_inline__))
-+static __inline long long __attribute__((__always_inline__, __artificial__))
- _mm_cvttsd_si64x (__m128d __A)
- {
-   return __builtin_ia32_cvttsd2si64 ((__v2df) __A);
- }
- #endif
- 
--static __inline __m128 __attribute__((__always_inline__))
-+static __inline __m128 __attribute__((__always_inline__, __artificial__))
- _mm_cvtsd_ss (__m128 __A, __m128d __B)
- {
-   return (__m128)__builtin_ia32_cvtsd2ss ((__v4sf) __A, (__v2df) __B);
- }
- 
--static __inline __m128d __attribute__((__always_inline__))
-+static __inline __m128d __attribute__((__always_inline__, __artificial__))
- _mm_cvtsi32_sd (__m128d __A, int __B)
- {
-   return (__m128d)__builtin_ia32_cvtsi2sd ((__v2df) __A, __B);
-@@ -860,21 +860,21 @@ _mm_cvtsi32_sd (__m128d __A, int __B)
- 
- #ifdef __x86_64__
- /* Intel intrinsic.  */
--static __inline __m128d __attribute__((__always_inline__))
-+static __inline __m128d __attribute__((__always_inline__, __artificial__))
- _mm_cvtsi64_sd (__m128d __A, long long __B)
- {
-   return (__m128d)__builtin_ia32_cvtsi642sd ((__v2df) __A, __B);
- }
- 
- /* Microsoft intrinsic.  */
--static __inline __m128d __attribute__((__always_inline__))
-+static __inline __m128d __attribute__((__always_inline__, __artificial__))
- _mm_cvtsi64x_sd (__m128d __A, long long __B)
- {
-   return (__m128d)__builtin_ia32_cvtsi642sd ((__v2df) __A, __B);
- }
- #endif
- 
--static __inline __m128d __attribute__((__always_inline__))
-+static __inline __m128d __attribute__((__always_inline__, __artificial__))
- _mm_cvtss_sd (__m128d __A, __m128 __B)
- {
-   return (__m128d)__builtin_ia32_cvtss2sd ((__v2df) __A, (__v4sf)__B);
-@@ -882,242 +882,242 @@ _mm_cvtss_sd (__m128d __A, __m128 __B)
- 
- #define _mm_shuffle_pd(__A, __B, __C) ((__m128d)__builtin_ia32_shufpd ((__v2df)__A, (__v2df)__B, (__C)))
- 
--static __inline __m128d __attribute__((__always_inline__))
-+static __inline __m128d __attribute__((__always_inline__, __artificial__))
- _mm_unpackhi_pd (__m128d __A, __m128d __B)
- {
-   return (__m128d)__builtin_ia32_unpckhpd ((__v2df)__A, (__v2df)__B);
- }
- 
--static __inline __m128d __attribute__((__always_inline__))
-+static __inline __m128d __attribute__((__always_inline__, __artificial__))
- _mm_unpacklo_pd (__m128d __A, __m128d __B)
- {
-   return (__m128d)__builtin_ia32_unpcklpd ((__v2df)__A, (__v2df)__B);
- }
- 
--static __inline __m128d __attribute__((__always_inline__))
-+static __inline __m128d __attribute__((__always_inline__, __artificial__))
- _mm_loadh_pd (__m128d __A, double const *__B)
- {
-   return (__m128d)__builtin_ia32_loadhpd ((__v2df)__A, __B);
- }
- 
--static __inline __m128d __attribute__((__always_inline__))
-+static __inline __m128d __attribute__((__always_inline__, __artificial__))
- _mm_loadl_pd (__m128d __A, double const *__B)
- {
-   return (__m128d)__builtin_ia32_loadlpd ((__v2df)__A, __B);
- }
- 
--static __inline int __attribute__((__always_inline__))
-+static __inline int __attribute__((__always_inline__, __artificial__))
- _mm_movemask_pd (__m128d __A)
- {
-   return __builtin_ia32_movmskpd ((__v2df)__A);
- }
- 
--static __inline __m128i __attribute__((__always_inline__))
-+static __inline __m128i __attribute__((__always_inline__, __artificial__))
- _mm_packs_epi16 (__m128i __A, __m128i __B)
- {
-   return (__m128i)__builtin_ia32_packsswb128 ((__v8hi)__A, (__v8hi)__B);
- }
- 
--static __inline __m128i __attribute__((__always_inline__))
-+static __inline __m128i __attribute__((__always_inline__, __artificial__))
- _mm_packs_epi32 (__m128i __A, __m128i __B)
- {
-   return (__m128i)__builtin_ia32_packssdw128 ((__v4si)__A, (__v4si)__B);
- }
- 
--static __inline __m128i __attribute__((__always_inline__))
-+static __inline __m128i __attribute__((__always_inline__, __artificial__))
- _mm_packus_epi16 (__m128i __A, __m128i __B)
- {
-   return (__m128i)__builtin_ia32_packuswb128 ((__v8hi)__A, (__v8hi)__B);
- }
- 
--static __inline __m128i __attribute__((__always_inline__))
-+static __inline __m128i __attribute__((__always_inline__, __artificial__))
- _mm_unpackhi_epi8 (__m128i __A, __m128i __B)
- {
-   return (__m128i)__builtin_ia32_punpckhbw128 ((__v16qi)__A, (__v16qi)__B);
- }
- 
--static __inline __m128i __attribute__((__always_inline__))
-+static __inline __m128i __attribute__((__always_inline__, __artificial__))
- _mm_unpackhi_epi16 (__m128i __A, __m128i __B)
- {
-   return (__m128i)__builtin_ia32_punpckhwd128 ((__v8hi)__A, (__v8hi)__B);
- }
- 
--static __inline __m128i __attribute__((__always_inline__))
-+static __inline __m128i __attribute__((__always_inline__, __artificial__))
- _mm_unpackhi_epi32 (__m128i __A, __m128i __B)
- {
-   return (__m128i)__builtin_ia32_punpckhdq128 ((__v4si)__A, (__v4si)__B);
- }
- 
--static __inline __m128i __attribute__((__always_inline__))
-+static __inline __m128i __attribute__((__always_inline__, __artificial__))
- _mm_unpackhi_epi64 (__m128i __A, __m128i __B)
- {
-   return (__m128i)__builtin_ia32_punpckhqdq128 ((__v2di)__A, (__v2di)__B);
- }
- 
--static __inline __m128i __attribute__((__always_inline__))
-+static __inline __m128i __attribute__((__always_inline__, __artificial__))
- _mm_unpacklo_epi8 (__m128i __A, __m128i __B)
- {
-   return (__m128i)__builtin_ia32_punpcklbw128 ((__v16qi)__A, (__v16qi)__B);
- }
- 
--static __inline __m128i __attribute__((__always_inline__))
-+static __inline __m128i __attribute__((__always_inline__, __artificial__))
- _mm_unpacklo_epi16 (__m128i __A, __m128i __B)
- {
-   return (__m128i)__builtin_ia32_punpcklwd128 ((__v8hi)__A, (__v8hi)__B);
- }
- 
--static __inline __m128i __attribute__((__always_inline__))
-+static __inline __m128i __attribute__((__always_inline__, __artificial__))
- _mm_unpacklo_epi32 (__m128i __A, __m128i __B)
- {
-   return (__m128i)__builtin_ia32_punpckldq128 ((__v4si)__A, (__v4si)__B);
- }
- 
--static __inline __m128i __attribute__((__always_inline__))
-+static __inline __m128i __attribute__((__always_inline__, __artificial__))
- _mm_unpacklo_epi64 (__m128i __A, __m128i __B)
- {
-   return (__m128i)__builtin_ia32_punpcklqdq128 ((__v2di)__A, (__v2di)__B);
- }
- 
--static __inline __m128i __attribute__((__always_inline__))
-+static __inline __m128i __attribute__((__always_inline__, __artificial__))
- _mm_add_epi8 (__m128i __A, __m128i __B)
- {
-   return (__m128i)__builtin_ia32_paddb128 ((__v16qi)__A, (__v16qi)__B);
- }
- 
--static __inline __m128i __attribute__((__always_inline__))
-+static __inline __m128i __attribute__((__always_inline__, __artificial__))
- _mm_add_epi16 (__m128i __A, __m128i __B)
- {
-   return (__m128i)__builtin_ia32_paddw128 ((__v8hi)__A, (__v8hi)__B);
- }
- 
--static __inline __m128i __attribute__((__always_inline__))
-+static __inline __m128i __attribute__((__always_inline__, __artificial__))
- _mm_add_epi32 (__m128i __A, __m128i __B)
- {
-   return (__m128i)__builtin_ia32_paddd128 ((__v4si)__A, (__v4si)__B);
- }
- 
--static __inline __m128i __attribute__((__always_inline__))
-+static __inline __m128i __attribute__((__always_inline__, __artificial__))
- _mm_add_epi64 (__m128i __A, __m128i __B)
- {
-   return (__m128i)__builtin_ia32_paddq128 ((__v2di)__A, (__v2di)__B);
- }
- 
--static __inline __m128i __attribute__((__always_inline__))
-+static __inline __m128i __attribute__((__always_inline__, __artificial__))
- _mm_adds_epi8 (__m128i __A, __m128i __B)
- {
-   return (__m128i)__builtin_ia32_paddsb128 ((__v16qi)__A, (__v16qi)__B);
- }
- 
--static __inline __m128i __attribute__((__always_inline__))
-+static __inline __m128i __attribute__((__always_inline__, __artificial__))
- _mm_adds_epi16 (__m128i __A, __m128i __B)
- {
-   return (__m128i)__builtin_ia32_paddsw128 ((__v8hi)__A, (__v8hi)__B);
- }
- 
--static __inline __m128i __attribute__((__always_inline__))
-+static __inline __m128i __attribute__((__always_inline__, __artificial__))
- _mm_adds_epu8 (__m128i __A, __m128i __B)
- {
-   return (__m128i)__builtin_ia32_paddusb128 ((__v16qi)__A, (__v16qi)__B);
- }
- 
--static __inline __m128i __attribute__((__always_inline__))
-+static __inline __m128i __attribute__((__always_inline__, __artificial__))
- _mm_adds_epu16 (__m128i __A, __m128i __B)
- {
-   return (__m128i)__builtin_ia32_paddusw128 ((__v8hi)__A, (__v8hi)__B);
- }
- 
--static __inline __m128i __attribute__((__always_inline__))
-+static __inline __m128i __attribute__((__always_inline__, __artificial__))
- _mm_sub_epi8 (__m128i __A, __m128i __B)
- {
-   return (__m128i)__builtin_ia32_psubb128 ((__v16qi)__A, (__v16qi)__B);
- }
- 
--static __inline __m128i __attribute__((__always_inline__))
-+static __inline __m128i __attribute__((__always_inline__, __artificial__))
- _mm_sub_epi16 (__m128i __A, __m128i __B)
- {
-   return (__m128i)__builtin_ia32_psubw128 ((__v8hi)__A, (__v8hi)__B);
- }
- 
--static __inline __m128i __attribute__((__always_inline__))
-+static __inline __m128i __attribute__((__always_inline__, __artificial__))
- _mm_sub_epi32 (__m128i __A, __m128i __B)
- {
-   return (__m128i)__builtin_ia32_psubd128 ((__v4si)__A, (__v4si)__B);
- }
- 
--static __inline __m128i __attribute__((__always_inline__))
-+static __inline __m128i __attribute__((__always_inline__, __artificial__))
- _mm_sub_epi64 (__m128i __A, __m128i __B)
- {
-   return (__m128i)__builtin_ia32_psubq128 ((__v2di)__A, (__v2di)__B);
- }
- 
--static __inline __m128i __attribute__((__always_inline__))
-+static __inline __m128i __attribute__((__always_inline__, __artificial__))
- _mm_subs_epi8 (__m128i __A, __m128i __B)
- {
-   return (__m128i)__builtin_ia32_psubsb128 ((__v16qi)__A, (__v16qi)__B);
- }
- 
--static __inline __m128i __attribute__((__always_inline__))
-+static __inline __m128i __attribute__((__always_inline__, __artificial__))
- _mm_subs_epi16 (__m128i __A, __m128i __B)
- {
-   return (__m128i)__builtin_ia32_psubsw128 ((__v8hi)__A, (__v8hi)__B);
- }
- 
--static __inline __m128i __attribute__((__always_inline__))
-+static __inline __m128i __attribute__((__always_inline__, __artificial__))
- _mm_subs_epu8 (__m128i __A, __m128i __B)
- {
-   return (__m128i)__builtin_ia32_psubusb128 ((__v16qi)__A, (__v16qi)__B);
- }
- 
--static __inline __m128i __attribute__((__always_inline__))
-+static __inline __m128i __attribute__((__always_inline__, __artificial__))
- _mm_subs_epu16 (__m128i __A, __m128i __B)
- {
-   return (__m128i)__builtin_ia32_psubusw128 ((__v8hi)__A, (__v8hi)__B);
- }
- 
--static __inline __m128i __attribute__((__always_inline__))
-+static __inline __m128i __attribute__((__always_inline__, __artificial__))
- _mm_madd_epi16 (__m128i __A, __m128i __B)
- {
-   return (__m128i)__builtin_ia32_pmaddwd128 ((__v8hi)__A, (__v8hi)__B);
- }
- 
--static __inline __m128i __attribute__((__always_inline__))
-+static __inline __m128i __attribute__((__always_inline__, __artificial__))
- _mm_mulhi_epi16 (__m128i __A, __m128i __B)
- {
-   return (__m128i)__builtin_ia32_pmulhw128 ((__v8hi)__A, (__v8hi)__B);
- }
- 
--static __inline __m128i __attribute__((__always_inline__))
-+static __inline __m128i __attribute__((__always_inline__, __artificial__))
- _mm_mullo_epi16 (__m128i __A, __m128i __B)
- {
-   return (__m128i)__builtin_ia32_pmullw128 ((__v8hi)__A, (__v8hi)__B);
- }
- 
--static __inline __m64 __attribute__((__always_inline__))
-+static __inline __m64 __attribute__((__always_inline__, __artificial__))
- _mm_mul_su32 (__m64 __A, __m64 __B)
- {
-   return (__m64)__builtin_ia32_pmuludq ((__v2si)__A, (__v2si)__B);
- }
- 
--static __inline __m128i __attribute__((__always_inline__))
-+static __inline __m128i __attribute__((__always_inline__, __artificial__))
- _mm_mul_epu32 (__m128i __A, __m128i __B)
- {
-   return (__m128i)__builtin_ia32_pmuludq128 ((__v4si)__A, (__v4si)__B);
- }
- 
- #if 0
--static __inline __m128i __attribute__((__always_inline__))
-+static __inline __m128i __attribute__((__always_inline__, __artificial__))
- _mm_slli_epi16 (__m128i __A, int __B)
- {
-   return (__m128i)__builtin_ia32_psllwi128 ((__v8hi)__A, __B);
- }
- 
--static __inline __m128i __attribute__((__always_inline__))
-+static __inline __m128i __attribute__((__always_inline__, __artificial__))
- _mm_slli_epi32 (__m128i __A, int __B)
- {
-   return (__m128i)__builtin_ia32_pslldi128 ((__v4si)__A, __B);
- }
- 
--static __inline __m128i __attribute__((__always_inline__))
-+static __inline __m128i __attribute__((__always_inline__, __artificial__))
- _mm_slli_epi64 (__m128i __A, int __B)
- {
-   return (__m128i)__builtin_ia32_psllqi128 ((__v2di)__A, __B);
-@@ -1132,13 +1132,13 @@ _mm_slli_epi64 (__m128i __A, int __B)
- #endif
- 
- #if 0
--static __inline __m128i __attribute__((__always_inline__))
-+static __inline __m128i __attribute__((__always_inline__, __artificial__))
- _mm_srai_epi16 (__m128i __A, int __B)
- {
-   return (__m128i)__builtin_ia32_psrawi128 ((__v8hi)__A, __B);
- }
- 
--static __inline __m128i __attribute__((__always_inline__))
-+static __inline __m128i __attribute__((__always_inline__, __artificial__))
- _mm_srai_epi32 (__m128i __A, int __B)
- {
-   return (__m128i)__builtin_ia32_psradi128 ((__v4si)__A, __B);
-@@ -1151,13 +1151,13 @@ _mm_srai_epi32 (__m128i __A, int __B)
- #endif
- 
- #if 0
--static __m128i __attribute__((__always_inline__))
-+static __m128i __attribute__((__always_inline__, __artificial__))
- _mm_srli_si128 (__m128i __A, int __B)
- {
-   return ((__m128i)__builtin_ia32_psrldqi128 (__A, __B * 8));
- }
- 
--static __m128i __attribute__((__always_inline__))
-+static __m128i __attribute__((__always_inline__, __artificial__))
- _mm_srli_si128 (__m128i __A, int __B)
- {
-   return ((__m128i)__builtin_ia32_pslldqi128 (__A, __B * 8));
-@@ -1170,19 +1170,19 @@ _mm_srli_si128 (__m128i __A, int __B)
- #endif
- 
- #if 0
--static __inline __m128i __attribute__((__always_inline__))
-+static __inline __m128i __attribute__((__always_inline__, __artificial__))
- _mm_srli_epi16 (__m128i __A, int __B)
- {
-   return (__m128i)__builtin_ia32_psrlwi128 ((__v8hi)__A, __B);
- }
- 
--static __inline __m128i __attribute__((__always_inline__))
-+static __inline __m128i __attribute__((__always_inline__, __artificial__))
- _mm_srli_epi32 (__m128i __A, int __B)
- {
-   return (__m128i)__builtin_ia32_psrldi128 ((__v4si)__A, __B);
- }
- 
--static __inline __m128i __attribute__((__always_inline__))
-+static __inline __m128i __attribute__((__always_inline__, __artificial__))
- _mm_srli_epi64 (__m128i __A, int __B)
- {
-   return (__m128i)__builtin_ia32_psrlqi128 ((__v2di)__A, __B);
-@@ -1196,140 +1196,140 @@ _mm_srli_epi64 (__m128i __A, int __B)
-   ((__m128i)__builtin_ia32_psrlqi128 ((__v4si)(__A), __B))
- #endif
- 
--static __inline __m128i __attribute__((__always_inline__))
-+static __inline __m128i __attribute__((__always_inline__, __artificial__))
- _mm_sll_epi16 (__m128i __A, __m128i __B)
- {
-   return (__m128i)__builtin_ia32_psllw128((__v8hi)__A, (__v8hi)__B);
- }
- 
--static __inline __m128i __attribute__((__always_inline__))
-+static __inline __m128i __attribute__((__always_inline__, __artificial__))
- _mm_sll_epi32 (__m128i __A, __m128i __B)
- {
-   return (__m128i)__builtin_ia32_pslld128((__v4si)__A, (__v4si)__B);
- }
- 
--static __inline __m128i __attribute__((__always_inline__))
-+static __inline __m128i __attribute__((__always_inline__, __artificial__))
- _mm_sll_epi64 (__m128i __A, __m128i __B)
- {
-   return (__m128i)__builtin_ia32_psllq128((__v2di)__A, (__v2di)__B);
- }
- 
--static __inline __m128i __attribute__((__always_inline__))
-+static __inline __m128i __attribute__((__always_inline__, __artificial__))
- _mm_sra_epi16 (__m128i __A, __m128i __B)
- {
-   return (__m128i)__builtin_ia32_psraw128 ((__v8hi)__A, (__v8hi)__B);
- }
- 
--static __inline __m128i __attribute__((__always_inline__))
-+static __inline __m128i __attribute__((__always_inline__, __artificial__))
- _mm_sra_epi32 (__m128i __A, __m128i __B)
- {
-   return (__m128i)__builtin_ia32_psrad128 ((__v4si)__A, (__v4si)__B);
- }
- 
--static __inline __m128i __attribute__((__always_inline__))
-+static __inline __m128i __attribute__((__always_inline__, __artificial__))
- _mm_srl_epi16 (__m128i __A, __m128i __B)
- {
-   return (__m128i)__builtin_ia32_psrlw128 ((__v8hi)__A, (__v8hi)__B);
- }
- 
--static __inline __m128i __attribute__((__always_inline__))
-+static __inline __m128i __attribute__((__always_inline__, __artificial__))
- _mm_srl_epi32 (__m128i __A, __m128i __B)
- {
-   return (__m128i)__builtin_ia32_psrld128 ((__v4si)__A, (__v4si)__B);
- }
- 
--static __inline __m128i __attribute__((__always_inline__))
-+static __inline __m128i __attribute__((__always_inline__, __artificial__))
- _mm_srl_epi64 (__m128i __A, __m128i __B)
- {
-   return (__m128i)__builtin_ia32_psrlq128 ((__v2di)__A, (__v2di)__B);
- }
- 
--static __inline __m128i __attribute__((__always_inline__))
-+static __inline __m128i __attribute__((__always_inline__, __artificial__))
- _mm_and_si128 (__m128i __A, __m128i __B)
- {
-   return (__m128i)__builtin_ia32_pand128 ((__v2di)__A, (__v2di)__B);
- }
- 
--static __inline __m128i __attribute__((__always_inline__))
-+static __inline __m128i __attribute__((__always_inline__, __artificial__))
- _mm_andnot_si128 (__m128i __A, __m128i __B)
- {
-   return (__m128i)__builtin_ia32_pandn128 ((__v2di)__A, (__v2di)__B);
- }
- 
--static __inline __m128i __attribute__((__always_inline__))
-+static __inline __m128i __attribute__((__always_inline__, __artificial__))
- _mm_or_si128 (__m128i __A, __m128i __B)
- {
-   return (__m128i)__builtin_ia32_por128 ((__v2di)__A, (__v2di)__B);
- }
- 
--static __inline __m128i __attribute__((__always_inline__))
-+static __inline __m128i __attribute__((__always_inline__, __artificial__))
- _mm_xor_si128 (__m128i __A, __m128i __B)
- {
-   return (__m128i)__builtin_ia32_pxor128 ((__v2di)__A, (__v2di)__B);
- }
- 
--static __inline __m128i __attribute__((__always_inline__))
-+static __inline __m128i __attribute__((__always_inline__, __artificial__))
- _mm_cmpeq_epi8 (__m128i __A, __m128i __B)
- {
-   return (__m128i)__builtin_ia32_pcmpeqb128 ((__v16qi)__A, (__v16qi)__B);
- }
- 
--static __inline __m128i __attribute__((__always_inline__))
-+static __inline __m128i __attribute__((__always_inline__, __artificial__))
- _mm_cmpeq_epi16 (__m128i __A, __m128i __B)
- {
-   return (__m128i)__builtin_ia32_pcmpeqw128 ((__v8hi)__A, (__v8hi)__B);
- }
- 
--static __inline __m128i __attribute__((__always_inline__))
-+static __inline __m128i __attribute__((__always_inline__, __artificial__))
- _mm_cmpeq_epi32 (__m128i __A, __m128i __B)
- {
-   return (__m128i)__builtin_ia32_pcmpeqd128 ((__v4si)__A, (__v4si)__B);
- }
- 
--static __inline __m128i __attribute__((__always_inline__))
-+static __inline __m128i __attribute__((__always_inline__, __artificial__))
- _mm_cmplt_epi8 (__m128i __A, __m128i __B)
- {
-   return (__m128i)__builtin_ia32_pcmpgtb128 ((__v16qi)__B, (__v16qi)__A);
- }
- 
--static __inline __m128i __attribute__((__always_inline__))
-+static __inline __m128i __attribute__((__always_inline__, __artificial__))
- _mm_cmplt_epi16 (__m128i __A, __m128i __B)
- {
-   return (__m128i)__builtin_ia32_pcmpgtw128 ((__v8hi)__B, (__v8hi)__A);
- }
- 
--static __inline __m128i __attribute__((__always_inline__))
-+static __inline __m128i __attribute__((__always_inline__, __artificial__))
- _mm_cmplt_epi32 (__m128i __A, __m128i __B)
- {
-   return (__m128i)__builtin_ia32_pcmpgtd128 ((__v4si)__B, (__v4si)__A);
- }
- 
--static __inline __m128i __attribute__((__always_inline__))
-+static __inline __m128i __attribute__((__always_inline__, __artificial__))
- _mm_cmpgt_epi8 (__m128i __A, __m128i __B)
- {
-   return (__m128i)__builtin_ia32_pcmpgtb128 ((__v16qi)__A, (__v16qi)__B);
- }
- 
--static __inline __m128i __attribute__((__always_inline__))
-+static __inline __m128i __attribute__((__always_inline__, __artificial__))
- _mm_cmpgt_epi16 (__m128i __A, __m128i __B)
- {
-   return (__m128i)__builtin_ia32_pcmpgtw128 ((__v8hi)__A, (__v8hi)__B);
- }
- 
--static __inline __m128i __attribute__((__always_inline__))
-+static __inline __m128i __attribute__((__always_inline__, __artificial__))
- _mm_cmpgt_epi32 (__m128i __A, __m128i __B)
- {
-   return (__m128i)__builtin_ia32_pcmpgtd128 ((__v4si)__A, (__v4si)__B);
- }
- 
- #if 0
--static __inline int __attribute__((__always_inline__))
-+static __inline int __attribute__((__always_inline__, __artificial__))
- _mm_extract_epi16 (__m128i const __A, int const __N)
- {
-   return __builtin_ia32_vec_ext_v8hi ((__v8hi)__A, __N);
- }
- 
--static __inline __m128i __attribute__((__always_inline__))
-+static __inline __m128i __attribute__((__always_inline__, __artificial__))
- _mm_insert_epi16 (__m128i const __A, int const __D, int const __N)
- {
-   return (__m128i) __builtin_ia32_vec_set_v8hi ((__v8hi)__A, __D, __N);
-@@ -1341,37 +1341,37 @@ _mm_insert_epi16 (__m128i const __A, int
-   ((__m128i) __builtin_ia32_vec_set_v8hi ((__v8hi)(A), (D), (N)))
- #endif
- 
--static __inline __m128i __attribute__((__always_inline__))
-+static __inline __m128i __attribute__((__always_inline__, __artificial__))
- _mm_max_epi16 (__m128i __A, __m128i __B)
- {
-   return (__m128i)__builtin_ia32_pmaxsw128 ((__v8hi)__A, (__v8hi)__B);
- }
- 
--static __inline __m128i __attribute__((__always_inline__))
-+static __inline __m128i __attribute__((__always_inline__, __artificial__))
- _mm_max_epu8 (__m128i __A, __m128i __B)
- {
-   return (__m128i)__builtin_ia32_pmaxub128 ((__v16qi)__A, (__v16qi)__B);
- }
- 
--static __inline __m128i __attribute__((__always_inline__))
-+static __inline __m128i __attribute__((__always_inline__, __artificial__))
- _mm_min_epi16 (__m128i __A, __m128i __B)
- {
-   return (__m128i)__builtin_ia32_pminsw128 ((__v8hi)__A, (__v8hi)__B);
- }
- 
--static __inline __m128i __attribute__((__always_inline__))
-+static __inline __m128i __attribute__((__always_inline__, __artificial__))
- _mm_min_epu8 (__m128i __A, __m128i __B)
- {
-   return (__m128i)__builtin_ia32_pminub128 ((__v16qi)__A, (__v16qi)__B);
- }
- 
--static __inline int __attribute__((__always_inline__))
-+static __inline int __attribute__((__always_inline__, __artificial__))
- _mm_movemask_epi8 (__m128i __A)
- {
-   return __builtin_ia32_pmovmskb128 ((__v16qi)__A);
- }
- 
--static __inline __m128i __attribute__((__always_inline__))
-+static __inline __m128i __attribute__((__always_inline__, __artificial__))
- _mm_mulhi_epu16 (__m128i __A, __m128i __B)
- {
-   return (__m128i)__builtin_ia32_pmulhuw128 ((__v8hi)__A, (__v8hi)__B);
-@@ -1381,67 +1381,67 @@ _mm_mulhi_epu16 (__m128i __A, __m128i __
- #define _mm_shufflelo_epi16(__A, __B) ((__m128i)__builtin_ia32_pshuflw ((__v8hi)__A, __B))
- #define _mm_shuffle_epi32(__A, __B) ((__m128i)__builtin_ia32_pshufd ((__v4si)__A, __B))
- 
--static __inline void __attribute__((__always_inline__))
-+static __inline void __attribute__((__always_inline__, __artificial__))
- _mm_maskmoveu_si128 (__m128i __A, __m128i __B, char *__C)
- {
-   __builtin_ia32_maskmovdqu ((__v16qi)__A, (__v16qi)__B, __C);
- }
- 
--static __inline __m128i __attribute__((__always_inline__))
-+static __inline __m128i __attribute__((__always_inline__, __artificial__))
- _mm_avg_epu8 (__m128i __A, __m128i __B)
- {
-   return (__m128i)__builtin_ia32_pavgb128 ((__v16qi)__A, (__v16qi)__B);
- }
- 
--static __inline __m128i __attribute__((__always_inline__))
-+static __inline __m128i __attribute__((__always_inline__, __artificial__))
- _mm_avg_epu16 (__m128i __A, __m128i __B)
- {
-   return (__m128i)__builtin_ia32_pavgw128 ((__v8hi)__A, (__v8hi)__B);
- }
- 
--static __inline __m128i __attribute__((__always_inline__))
-+static __inline __m128i __attribute__((__always_inline__, __artificial__))
- _mm_sad_epu8 (__m128i __A, __m128i __B)
- {
-   return (__m128i)__builtin_ia32_psadbw128 ((__v16qi)__A, (__v16qi)__B);
- }
- 
--static __inline void __attribute__((__always_inline__))
-+static __inline void __attribute__((__always_inline__, __artificial__))
- _mm_stream_si32 (int *__A, int __B)
- {
-   __builtin_ia32_movnti (__A, __B);
- }
- 
--static __inline void __attribute__((__always_inline__))
-+static __inline void __attribute__((__always_inline__, __artificial__))
- _mm_stream_si128 (__m128i *__A, __m128i __B)
- {
-   __builtin_ia32_movntdq ((__v2di *)__A, (__v2di)__B);
- }
- 
--static __inline void __attribute__((__always_inline__))
-+static __inline void __attribute__((__always_inline__, __artificial__))
- _mm_stream_pd (double *__A, __m128d __B)
- {
-   __builtin_ia32_movntpd (__A, (__v2df)__B);
- }
- 
--static __inline void __attribute__((__always_inline__))
-+static __inline void __attribute__((__always_inline__, __artificial__))
- _mm_clflush (void const *__A)
- {
-   __builtin_ia32_clflush (__A);
- }
- 
--static __inline void __attribute__((__always_inline__))
-+static __inline void __attribute__((__always_inline__, __artificial__))
- _mm_lfence (void)
- {
-   __builtin_ia32_lfence ();
- }
- 
--static __inline void __attribute__((__always_inline__))
-+static __inline void __attribute__((__always_inline__, __artificial__))
- _mm_mfence (void)
- {
-   __builtin_ia32_mfence ();
- }
- 
--static __inline __m128i __attribute__((__always_inline__))
-+static __inline __m128i __attribute__((__always_inline__, __artificial__))
- _mm_cvtsi32_si128 (int __A)
- {
-   return _mm_set_epi32 (0, 0, 0, __A);
-@@ -1449,14 +1449,14 @@ _mm_cvtsi32_si128 (int __A)
- 
- #ifdef __x86_64__
- /* Intel intrinsic.  */
--static __inline __m128i __attribute__((__always_inline__))
-+static __inline __m128i __attribute__((__always_inline__, __artificial__))
- _mm_cvtsi64_si128 (long long __A)
- {
-   return _mm_set_epi64x (0, __A);
- }
- 
- /* Microsoft intrinsic.  */
--static __inline __m128i __attribute__((__always_inline__))
-+static __inline __m128i __attribute__((__always_inline__, __artificial__))
- _mm_cvtsi64x_si128 (long long __A)
- {
-   return _mm_set_epi64x (0, __A);
-@@ -1465,37 +1465,37 @@ _mm_cvtsi64x_si128 (long long __A)
- 
- /* Casts between various SP, DP, INT vector types.  Note that these do no
-    conversion of values, they just change the type.  */
--static __inline __m128 __attribute__((__always_inline__))
-+static __inline __m128 __attribute__((__always_inline__, __artificial__))
- _mm_castpd_ps(__m128d __A)
- {
-   return (__m128) __A;
- }
- 
--static __inline __m128i __attribute__((__always_inline__))
-+static __inline __m128i __attribute__((__always_inline__, __artificial__))
- _mm_castpd_si128(__m128d __A)
- {
-   return (__m128i) __A;
- }
- 
--static __inline __m128d __attribute__((__always_inline__))
-+static __inline __m128d __attribute__((__always_inline__, __artificial__))
- _mm_castps_pd(__m128 __A)
- {
-   return (__m128d) __A;
- }
- 
--static __inline __m128i __attribute__((__always_inline__))
-+static __inline __m128i __attribute__((__always_inline__, __artificial__))
- _mm_castps_si128(__m128 __A)
- {
-   return (__m128i) __A;
- }
- 
--static __inline __m128 __attribute__((__always_inline__))
-+static __inline __m128 __attribute__((__always_inline__, __artificial__))
- _mm_castsi128_ps(__m128i __A)
- {
-   return (__m128) __A;
- }
- 
--static __inline __m128d __attribute__((__always_inline__))
-+static __inline __m128d __attribute__((__always_inline__, __artificial__))
- _mm_castsi128_pd(__m128i __A)
- {
-   return (__m128d) __A;

diff --git a/gcc41-build-id.patch b/gcc41-build-id.patch
deleted file mode 100644
index 4e162e6..0000000
--- a/gcc41-build-id.patch
+++ /dev/null
@@ -1,74 +0,0 @@
-2007-07-22  Roland McGrath  <roland@redhat.com>
-
-	* config/rs6000/sysv4.h (LINK_EH_SPEC): Add --build-id for
-	non-relocatable link.
-	* config/linux.h (LINK_EH_SPEC): Likewise.
-	* config/sparc/linux.h (LINK_EH_SPEC): Likewise.
-	* config/sparc/linux64.h (LINK_EH_SPEC): Likewise.
-	* config/alpha/elf.h (LINK_EH_SPEC): Likewise.
-	* config/ia64/linux.h (LINK_EH_SPEC): Likewise.
-
---- gcc/config/rs6000/sysv4.h.~1~
-+++ gcc/config/rs6000/sysv4.h
-@@ -1044,7 +1044,7 @@ extern int fixuplabelno;
-   %{!dynamic-linker:-dynamic-linker /lib/ld.so.1}}}"
- 
- #if defined(HAVE_LD_EH_FRAME_HDR)
--# define LINK_EH_SPEC "%{!static:--eh-frame-hdr} "
-+# define LINK_EH_SPEC "%{!static:--eh-frame-hdr} %{!r:--build-id} "
- #endif
- 
- #define CPP_OS_LINUX_SPEC "-D__unix__ -D__gnu_linux__ -D__linux__ \
---- gcc/config/linux.h.~1~
-+++ gcc/config/linux.h
-@@ -85,7 +85,7 @@ Boston, MA 02110-1301, USA.  */
-     } while (0)
- 
- #if defined(HAVE_LD_EH_FRAME_HDR)
--#define LINK_EH_SPEC "%{!static:--eh-frame-hdr} "
-+#define LINK_EH_SPEC "%{!static:--eh-frame-hdr} %{!r:--build-id} "
- #endif
- 
- /* Define this so we can compile MS code for use with WINE.  */
---- gcc/config/sparc/linux64.h.~1~
-+++ gcc/config/sparc/linux64.h
-@@ -316,7 +316,7 @@ do {									\
- #define DITF_CONVERSION_LIBFUNCS 1
- 
- #if defined(HAVE_LD_EH_FRAME_HDR)
--#define LINK_EH_SPEC "%{!static:--eh-frame-hdr} "
-+#define LINK_EH_SPEC "%{!static:--eh-frame-hdr} %{!r:--build-id} "
- #endif
- \f
- #ifdef HAVE_AS_TLS
---- gcc/config/sparc/linux.h.~1~
-+++ gcc/config/sparc/linux.h
-@@ -188,7 +188,7 @@ do {									\
- #define DITF_CONVERSION_LIBFUNCS 1
- 
- #if defined(HAVE_LD_EH_FRAME_HDR)
--#define LINK_EH_SPEC "%{!static:--eh-frame-hdr} "
-+#define LINK_EH_SPEC "%{!static:--eh-frame-hdr} %{!r:--build-id} "
- #endif
- \f
- #ifdef HAVE_AS_TLS
---- gcc/config/alpha/elf.h.~1~
-+++ gcc/config/alpha/elf.h
-@@ -453,5 +453,5 @@ extern int alpha_this_gpdisp_sequence_nu
-    I imagine that other systems will catch up.  In the meantime, it
-    doesn't harm to make sure that the data exists to be used later.  */
- #if defined(HAVE_LD_EH_FRAME_HDR)
--#define LINK_EH_SPEC "%{!static:--eh-frame-hdr} "
-+#define LINK_EH_SPEC "%{!static:--eh-frame-hdr} %{!r:--build-id} "
- #endif
---- gcc/config/ia64/linux.h.~1~
-+++ gcc/config/ia64/linux.h
-@@ -56,7 +56,7 @@ do {						\
-    Signalize that because we have fde-glibc, we don't need all C shared libs
-    linked against -lgcc_s.  */
- #undef LINK_EH_SPEC
--#define LINK_EH_SPEC ""
-+#define LINK_EH_SPEC "%{!r:--build-id} "
- 
- #define MD_UNWIND_SUPPORT "config/ia64/linux-unwind.h"
- 

diff --git a/gcc41-c++-builtin-redecl.patch b/gcc41-c++-builtin-redecl.patch
deleted file mode 100644
index 77655ad..0000000
--- a/gcc41-c++-builtin-redecl.patch
+++ /dev/null
@@ -1,102 +0,0 @@
-2007-10-02  Jakub Jelinek  <jakub@redhat.com>
-
-	* decl.c (duplicate_decls): When redeclaring a builtin function,
-	keep the merged decl builtin whenever types match, even if new
-	decl defines a function.
-
-	* gcc.dg/builtins-65.c: New test.
-	* g++.dg/ext/builtin10.C: New test.
-
---- gcc/cp/decl.c.jj	2007-10-01 22:11:09.000000000 +0200
-+++ gcc/cp/decl.c	2007-10-02 11:39:46.000000000 +0200
-@@ -1988,23 +1988,21 @@ duplicate_decls (tree newdecl, tree oldd
- 	  DECL_ARGUMENTS (olddecl) = DECL_ARGUMENTS (newdecl);
- 	  DECL_RESULT (olddecl) = DECL_RESULT (newdecl);
- 	}
-+      /* If redeclaring a builtin function, it stays built in.  */
-+      if (types_match && DECL_BUILT_IN (olddecl))
-+	{
-+	  DECL_BUILT_IN_CLASS (newdecl) = DECL_BUILT_IN_CLASS (olddecl);
-+	  DECL_FUNCTION_CODE (newdecl) = DECL_FUNCTION_CODE (olddecl);
-+	  /* If we're keeping the built-in definition, keep the rtl,
-+	     regardless of declaration matches.  */
-+	  COPY_DECL_RTL (olddecl, newdecl);
-+	}
-       if (new_defines_function)
- 	/* If defining a function declared with other language
- 	   linkage, use the previously declared language linkage.  */
- 	SET_DECL_LANGUAGE (newdecl, DECL_LANGUAGE (olddecl));
-       else if (types_match)
- 	{
--	  /* If redeclaring a builtin function, and not a definition,
--	     it stays built in.  */
--	  if (DECL_BUILT_IN (olddecl))
--	    {
--	      DECL_BUILT_IN_CLASS (newdecl) = DECL_BUILT_IN_CLASS (olddecl);
--	      DECL_FUNCTION_CODE (newdecl) = DECL_FUNCTION_CODE (olddecl);
--	      /* If we're keeping the built-in definition, keep the rtl,
--		 regardless of declaration matches.  */
--	      COPY_DECL_RTL (olddecl, newdecl);
--	    }
--
- 	  DECL_RESULT (newdecl) = DECL_RESULT (olddecl);
- 	  /* Don't clear out the arguments if we're redefining a function.  */
- 	  if (DECL_ARGUMENTS (olddecl))
---- gcc/testsuite/gcc.dg/builtins-65.c.jj	2007-10-02 11:23:51.000000000 +0200
-+++ gcc/testsuite/gcc.dg/builtins-65.c	2007-10-02 11:24:12.000000000 +0200
-@@ -0,0 +1,25 @@
-+/* { dg-do compile } */
-+/* { dg-options "-O2" } */
-+
-+typedef __SIZE_TYPE__ size_t;
-+extern void __chk_fail (void);
-+extern int snprintf (char *, size_t, const char *, ...);
-+extern inline __attribute__((gnu_inline, always_inline)) int snprintf (char *a, size_t b, const char *fmt, ...)
-+{
-+  if (__builtin_object_size (a, 0) != -1UL && __builtin_object_size (a, 0) < b)
-+    __chk_fail ();
-+  return __builtin_snprintf (a, b, fmt, __builtin_va_arg_pack ());
-+}
-+extern int snprintf (char *, size_t, const char *, ...) __asm ("mysnprintf");
-+
-+char buf[10];
-+
-+int
-+main (void)
-+{
-+  snprintf (buf, 10, "%d%d\n", 10, 10);
-+  return 0;
-+}
-+
-+/* { dg-final { scan-assembler "mysnprintf" } } */
-+/* { dg-final { scan-assembler-not "__chk_fail" } } */
---- gcc/testsuite/g++.dg/ext/builtin10.C.jj	2007-10-02 11:19:45.000000000 +0200
-+++ gcc/testsuite/g++.dg/ext/builtin10.C	2007-10-02 11:23:26.000000000 +0200
-@@ -0,0 +1,27 @@
-+// { dg-do compile }
-+// { dg-options "-O2" }
-+
-+typedef __SIZE_TYPE__ size_t;
-+extern "C" {
-+extern void __chk_fail (void);
-+extern int snprintf (char *, size_t, const char *, ...);
-+extern inline __attribute__((gnu_inline, always_inline)) int snprintf (char *a, size_t b, const char *fmt, ...)
-+{
-+  if (__builtin_object_size (a, 0) != -1UL && __builtin_object_size (a, 0) < b)
-+    __chk_fail ();
-+  return __builtin_snprintf (a, b, fmt, __builtin_va_arg_pack ());
-+}
-+extern int snprintf (char *, size_t, const char *, ...) __asm ("mysnprintf");
-+}
-+
-+char buf[10];
-+
-+int
-+main (void)
-+{
-+  snprintf (buf, 10, "%d%d\n", 10, 10);
-+  return 0;
-+}
-+
-+// { dg-final { scan-assembler "mysnprintf" } }
-+// { dg-final { scan-assembler-not "__chk_fail" } }

diff --git a/gcc41-c++-gnu-inline-redecl.patch b/gcc41-c++-gnu-inline-redecl.patch
deleted file mode 100644
index c213cef..0000000
--- a/gcc41-c++-gnu-inline-redecl.patch
+++ /dev/null
@@ -1,65 +0,0 @@
-2007-10-01  Alexandre Oliva  <aoliva@redhat.com>
-
-	* decl.c (duplicate_decls): Preserve linkage flags for mere
-	redeclarations of gnu_inline definitions.
-
-	* g++.dg/ext/gnu-inline-global-redecl.C: New.
-
---- gcc/cp/decl.c.orig	2007-09-28 00:02:33.000000000 -0300
-+++ gcc/cp/decl.c	2007-10-01 16:33:10.000000000 -0300
-@@ -1846,24 +1846,24 @@ duplicate_decls (tree newdecl, tree oldd
-   new_template = NULL_TREE;
-   if (DECL_LANG_SPECIFIC (newdecl) && DECL_LANG_SPECIFIC (olddecl))
-     {
--      bool old_decl_gnu_inline;
-+      bool new_redefines_gnu_inline = false;
- 
--      if ((DECL_INTERFACE_KNOWN (olddecl)
--	   && TREE_CODE (olddecl) == FUNCTION_DECL)
--	  || (TREE_CODE (olddecl) == TEMPLATE_DECL
--	      && TREE_CODE (DECL_TEMPLATE_RESULT (olddecl)) == FUNCTION_DECL))
-+      if (new_defines_function
-+	  && ((DECL_INTERFACE_KNOWN (olddecl)
-+	       && TREE_CODE (olddecl) == FUNCTION_DECL)
-+	      || (TREE_CODE (olddecl) == TEMPLATE_DECL
-+		  && (TREE_CODE (DECL_TEMPLATE_RESULT (olddecl))
-+		      == FUNCTION_DECL))))
- 	{
- 	  tree fn = olddecl;
- 
- 	  if (TREE_CODE (fn) == TEMPLATE_DECL)
- 	    fn = DECL_TEMPLATE_RESULT (olddecl);
- 
--	  old_decl_gnu_inline = GNU_INLINE_P (fn) && DECL_INITIAL (fn);
-+	  new_redefines_gnu_inline = GNU_INLINE_P (fn) && DECL_INITIAL (fn);
- 	}
--      else
--	old_decl_gnu_inline = false;
- 
--      if (!old_decl_gnu_inline)
-+      if (!new_redefines_gnu_inline)
- 	{
- 	  DECL_INTERFACE_KNOWN (newdecl) |= DECL_INTERFACE_KNOWN (olddecl);
- 	  DECL_NOT_REALLY_EXTERN (newdecl) |= DECL_NOT_REALLY_EXTERN (olddecl);
---- gcc/testsuite/g++.dg/ext/gnu-inline-global-redecl.C	1970-01-01 00:00:00.000000000 +0000
-+++ gcc/testsuite/g++.dg/ext/gnu-inline-global-redecl.C	2007-10-01 16:45:49.000000000 -0300
-@@ -0,0 +1,19 @@
-+/* Test __attribute__((gnu_inline)).
-+
-+   Check that we don't get out-of-line definitions for extern inline
-+   gnu_inline functions, regardless of redeclaration.
-+
-+ */
-+
-+/* { dg-do link } */
-+/* { dg-options "-O" } */ // such that static functions are optimized out
-+
-+#include "gnu-inline-common.h"
-+
-+decl(extern, fn)
-+gnuindef(fn, 0)
-+decl(extern, fn)
-+
-+int main () {
-+  fn ();
-+}

diff --git a/gcc41-c++-guard-visibility.patch b/gcc41-c++-guard-visibility.patch
deleted file mode 100644
index 971100b..0000000
--- a/gcc41-c++-guard-visibility.patch
+++ /dev/null
@@ -1,36 +0,0 @@
-2007-09-06  Jason Merrill  <jason@redhat.com>
-
-	* g++.dg/ext/visibility/guard1.C: New test.
-
---- gcc/testsuite/g++.dg/ext/visibility/guard1.C	(revision 0)
-+++ gcc/testsuite/g++.dg/ext/visibility/guard1.C	(revision 128226)
-@@ -0,0 +1,29 @@
-+// { dg-options "-fvisibility=hidden" }
-+// { dg-require-visibility "" }
-+// { dg-final { scan-not-hidden "_ZGVZN5otherclEvE4s_cd" } }
-+
-+extern "C" int printf (const char *, ...);
-+
-+#define DLLEXPORT __attribute__ ((visibility("default")))
-+
-+struct class_data
-+{
-+  int apple;
-+  class_data() { printf("non trivial ctor\n"); }
-+};
-+
-+struct DLLEXPORT other
-+{
-+  class_data* operator ()()
-+  {
-+    static class_data s_cd;
-+    return &s_cd;
-+  }
-+};
-+
-+int main()
-+{
-+  other aFoo;
-+  aFoo();
-+  return 0;
-+}

diff --git a/gcc41-debug-fortran-array.patch b/gcc41-debug-fortran-array.patch
deleted file mode 100644
index 69764cb..0000000
--- a/gcc41-debug-fortran-array.patch
+++ /dev/null
@@ -1,33 +0,0 @@
-2007-12-10  Jakub Jelinek  <jakub@redhat.com>
-
-	* dwarf2out.c (gen_array_type_die, gen_descr_array_type_die): For
-	Fortran multi-dimensional arrays use DW_AT_ordering
-	DW_ORD_col_major.
-
---- gcc/dwarf2out.c	(revision 130741)
-+++ gcc/dwarf2out.c	(revision 130742)
-@@ -11636,6 +11636,12 @@ gen_array_type_die (tree type, dw_die_re
-       add_AT_flag (array_die, DW_AT_GNU_vector, 1);
-     }
- 
-+  /* For Fortran multidimensional arrays use DW_ORD_col_major ordering.  */
-+  if (is_fortran ()
-+      && TREE_CODE (type) == ARRAY_TYPE
-+      && TREE_CODE (TREE_TYPE (type)) == ARRAY_TYPE)
-+    add_AT_unsigned (array_die, DW_AT_ordering, DW_ORD_col_major);
-+
- #if 0
-   /* We default the array ordering.  SDB will probably do
-      the right things even if DW_AT_ordering is not present.  It's not even
-@@ -11787,6 +11793,11 @@ gen_descr_array_type_die (tree type, str
-   add_name_attribute (array_die, type_tag (type));
-   equate_type_number_to_die (type, array_die);
- 
-+  /* For Fortran multidimensional arrays use DW_ORD_col_major ordering.  */
-+  if (is_fortran ()
-+      && info->ndimensions >= 2)
-+    add_AT_unsigned (array_die, DW_AT_ordering, DW_ORD_col_major);
-+
-   if (info->data_location)
-     add_descr_info_field (array_die, DW_AT_data_location, info->data_location,
- 			  info->base_decl);

diff --git a/gcc41-dsohandle.patch b/gcc41-dsohandle.patch
deleted file mode 100644
index fb5a8e5..0000000
--- a/gcc41-dsohandle.patch
+++ /dev/null
@@ -1,22 +0,0 @@
-2006-05-12  Jakub Jelinek  <jakub@redhat.com>
-
-	* crtstuff.c (__dso_handle): Make __dso_handle const.
-
---- gcc/crtstuff.c.jj	2005-11-16 10:02:51.000000000 +0100
-+++ gcc/crtstuff.c	2006-05-12 18:28:18.000000000 +0200
-@@ -226,12 +226,12 @@ STATIC void *__JCR_LIST__[]
-    dynamic linker takes care of this.  */
- 
- #ifdef HAVE_GAS_HIDDEN
--extern void *__dso_handle __attribute__ ((__visibility__ ("hidden")));
-+extern void *const __dso_handle __attribute__ ((__visibility__ ("hidden")));
- #endif
- #ifdef CRTSTUFFS_O
--void *__dso_handle = &__dso_handle;
-+void *const __dso_handle = (void *) &__dso_handle;
- #else
--void *__dso_handle = 0;
-+void *const __dso_handle = 0;
- #endif
- 
- /* The __cxa_finalize function may not be available so we use only a

diff --git a/gcc41-error-attrib.patch b/gcc41-error-attrib.patch
deleted file mode 100644
index a306821..0000000
--- a/gcc41-error-attrib.patch
+++ /dev/null
@@ -1,295 +0,0 @@
-2007-09-23  Jakub Jelinek  <jakub@redhat.com>
-
-	* expr.c (expand_expr_real_1) <case CALL_EXPR>: Use get_callee_fndecl
-	instead of checking CALL_EXPR_FN directly to test for builtins.
-	If error or warning attributes are present, print
-	error resp. warning.
-	* c-common.c (handle_error_attribute): New function.
-	(c_common_attribute_table): Add error and warning
-	attributes.
-	* doc/extend.texi: Document error and warning attributes.
-
-	* gcc.dg/va-arg-pack-len-1.c: Use error and warning
-	attributes.
-	* gcc.dg/va-arg-pack-len-2.c: New test.
-	* g++.dg/ext/va-arg-pack-len-1.C: Use error and warning
-	attributes.
-	* g++.dg/ext/va-arg-pack-len-2.C: New test.
-
---- gcc/doc/extend.texi.jj	2007-09-25 15:04:15.000000000 +0200
-+++ gcc/doc/extend.texi	2007-09-25 15:32:22.000000000 +0200
-@@ -1589,8 +1589,8 @@ attributes are currently defined for fun
- @code{section}, @code{constructor}, @code{destructor}, @code{used},
- @code{unused}, @code{deprecated}, @code{weak}, @code{malloc},
- @code{alias}, @code{warn_unused_result}, @code{nonnull},
--@code{gnu_inline}, @code{externally_visible} and @code{artificial}.
--Several other
-+@code{gnu_inline}, @code{externally_visible}, @code{artificial},
-+@code{error} and @code{warning}.  Several other
- attributes are defined for functions on particular target systems.  Other
- attributes, including @code{section} are supported for variables declarations
- (@pxref{Variable Attributes}) and for types (@pxref{Type Attributes}).
-@@ -1688,6 +1688,30 @@ Whether the function itself is considere
- the current inlining parameters.  The @code{flatten} attribute only works
- reliably in unit-at-a-time mode.
- 
-+@item error ("@var{message}")
-+@cindex @code{error} function attribute
-+If this attribute is used on a function declaration and a call to such a function
-+is not eliminated through dead code elimination or other optimizations, an error
-+which will include @var{message} will be diagnosed.  This is useful
-+for compile time checking, especially together with @code{__builtin_constant_p}
-+and inline functions where checking the inline function arguments is not
-+possible through @code{extern char [(condition) ? 1 : -1];} tricks.
-+While it is possible to leave the function undefined and thus invoke
-+a link failure, when using this attribute the problem will be diagnosed
-+earlier and with exact location of the call even in presence of inline
-+functions or when not emitting debugging information.
-+
-+@item warning ("@var{message}")
-+@cindex @code{warning} function attribute
-+If this attribute is used on a function declaration and a call to such a function
-+is not eliminated through dead code elimination or other optimizations, a warning
-+which will include @var{message} will be diagnosed.  This is useful
-+for compile time checking, especially together with @code{__builtin_constant_p}
-+and inline functions.  While it is possible to define the function with
-+a message in @code{.gnu.warning*} section, when using this attribute the problem
-+will be diagnosed earlier and with exact location of the call even in presence
-+of inline functions or when not emitting debugging information.
-+
- @item cdecl
- @cindex functions that do pop the argument stack on the 386
- @opindex mrtd
---- gcc/expr.c.jj	2007-09-25 14:58:40.000000000 +0200
-+++ gcc/expr.c	2007-09-25 15:19:15.000000000 +0200
-@@ -7513,19 +7513,31 @@ expand_expr_real_1 (tree exp, rtx target
- 	 inlining.  */
-       if (CALL_EXPR_VA_ARG_PACK (exp))
- 	error ("invalid use of %<__builtin_va_arg_pack ()%>");
--      /* Check for a built-in function.  */
--      if (TREE_CODE (TREE_OPERAND (exp, 0)) == ADDR_EXPR
--	  && (TREE_CODE (TREE_OPERAND (TREE_OPERAND (exp, 0), 0))
--	      == FUNCTION_DECL)
--	  && DECL_BUILT_IN (TREE_OPERAND (TREE_OPERAND (exp, 0), 0)))
--	{
--	  if (DECL_BUILT_IN_CLASS (TREE_OPERAND (TREE_OPERAND (exp, 0), 0))
--	      == BUILT_IN_FRONTEND)
--	    return lang_hooks.expand_expr (exp, original_target,
--					   tmode, modifier,
--					   alt_rtl);
--	  else
--	    return expand_builtin (exp, target, subtarget, tmode, ignore);
-+      {
-+	tree fndecl = get_callee_fndecl (exp), attr;
-+
-+	if (fndecl
-+	    && (attr = lookup_attribute ("error",
-+					 DECL_ATTRIBUTES (fndecl))) != NULL)
-+	  error ("call to %qs declared with attribute error: %s",
-+		 lang_hooks.decl_printable_name (fndecl, 1),
-+		 TREE_STRING_POINTER (TREE_VALUE (TREE_VALUE (attr))));
-+	if (fndecl
-+	    && (attr = lookup_attribute ("warning",
-+					 DECL_ATTRIBUTES (fndecl))) != NULL)
-+	  warning (0, "call to %qs declared with attribute warning: %s",
-+		   lang_hooks.decl_printable_name (fndecl, 1),
-+		   TREE_STRING_POINTER (TREE_VALUE (TREE_VALUE (attr))));
-+
-+	/* Check for a built-in function.  */
-+	if (fndecl && DECL_BUILT_IN (fndecl))
-+	  {
-+	    if (DECL_BUILT_IN_CLASS (fndecl) == BUILT_IN_FRONTEND)
-+	      return lang_hooks.expand_expr (exp, original_target,
-+					     tmode, modifier, alt_rtl);
-+	    else
-+	      return expand_builtin (exp, target, subtarget, tmode, ignore);
-+	  }
- 	}
- 
-       return expand_call (exp, target, ignore);
---- gcc/c-common.c.jj	2007-09-25 15:01:49.000000000 +0200
-+++ gcc/c-common.c	2007-09-25 15:24:34.000000000 +0200
-@@ -508,6 +508,7 @@ static tree handle_always_inline_attribu
- static tree handle_gnu_inline_attribute (tree *, tree, tree, int, bool *);
- static tree handle_artificial_attribute (tree *, tree, tree, int, bool *);
- static tree handle_flatten_attribute (tree *, tree, tree, int, bool *);
-+static tree handle_error_attribute (tree *, tree, tree, int, bool *);
- static tree handle_used_attribute (tree *, tree, tree, int, bool *);
- static tree handle_unused_attribute (tree *, tree, tree, int, bool *);
- static tree handle_externally_visible_attribute (tree *, tree, tree, int,
-@@ -641,6 +642,10 @@ const struct attribute_spec c_common_att
- 			      handle_warn_unused_result_attribute },
-   { "sentinel",               0, 1, false, true, true,
- 			      handle_sentinel_attribute },
-+  { "warning",		      1, 1, true,  false, false,
-+			      handle_error_attribute },
-+  { "error",		      1, 1, true,  false, false,
-+			      handle_error_attribute },
-   { NULL,                     0, 0, false, false, false, NULL }
- };
- 
-@@ -4226,6 +4231,26 @@ handle_flatten_attribute (tree *node, tr
-   return NULL_TREE;
- }
- 
-+/* Handle a "warning" or "error" attribute; arguments as in
-+   struct attribute_spec.handler.  */
-+
-+static tree
-+handle_error_attribute (tree *node, tree name, tree args,
-+			int ARG_UNUSED (flags), bool *no_add_attrs)
-+{
-+  if (TREE_CODE (*node) == FUNCTION_DECL
-+      || TREE_CODE (TREE_VALUE (args)) == STRING_CST)
-+    /* Do nothing else, just set the attribute.  We'll get at
-+       it later with lookup_attribute.  */
-+    ;
-+  else
-+    {
-+      warning (OPT_Wattributes, "%qE attribute ignored", name);
-+      *no_add_attrs = true;
-+    }
-+
-+  return NULL_TREE;
-+}
- 
- /* Handle a "used" attribute; arguments as in
-    struct attribute_spec.handler.  */
---- gcc/testsuite/gcc.dg/va-arg-pack-len-1.c.jj	2007-09-25 12:23:05.000000000 +0200
-+++ gcc/testsuite/gcc.dg/va-arg-pack-len-1.c	2007-09-25 15:16:03.000000000 +0200
-@@ -3,8 +3,10 @@
- 
- #include <stdarg.h>
- 
--extern int warn_open_missing_mode (void);
--extern int warn_open_too_many_arguments (void);
-+extern int error_open_missing_mode (void)
-+  __attribute__((__error__ ("open with O_CREAT needs 3 arguments, only 2 were given")));
-+extern int warn_open_too_many_arguments (void)
-+  __attribute__((__warning__ ("open called with more than 3 arguments")));
- extern void abort (void);
- 
- char expected_char;
-@@ -83,7 +85,7 @@ myopen (const char *path, int oflag, ...
-     {
-       if ((oflag & 0x40) != 0 && __builtin_va_arg_pack_len () < 1)
- 	{
--	  warn_open_missing_mode ();
-+	  error_open_missing_mode ();
- 	  return myopen2 (path, oflag);
- 	}
-       return myopenva (path, oflag, __builtin_va_arg_pack ());
---- gcc/testsuite/gcc.dg/va-arg-pack-len-2.c.jj	2007-09-25 15:16:03.000000000 +0200
-+++ gcc/testsuite/gcc.dg/va-arg-pack-len-2.c	2007-09-25 15:16:03.000000000 +0200
-@@ -0,0 +1,42 @@
-+/* { dg-do compile } */
-+/* { dg-options "-O2" } */
-+
-+#include <stdarg.h>
-+
-+extern int error_open_missing_mode (void)
-+  __attribute__((__error__ ("open with O_CREAT needs 3 arguments, only 2 were given")));
-+extern int warn_open_too_many_arguments (void)
-+  __attribute__((__warning__ ("open called with more than 3 arguments")));
-+
-+extern int myopen2 (const char *path, int oflag);
-+extern int myopenva (const char *path, int oflag, ...);
-+
-+extern inline __attribute__((always_inline, gnu_inline)) int
-+myopen (const char *path, int oflag, ...)
-+{
-+  if (__builtin_va_arg_pack_len () > 1)
-+    warn_open_too_many_arguments ();	/* { dg-warning "called with more than 3" } */
-+
-+  if (__builtin_constant_p (oflag))
-+    {
-+      if ((oflag & 0x40) != 0 && __builtin_va_arg_pack_len () < 1)
-+	{
-+	  error_open_missing_mode ();	/* { dg-error "needs 3 arguments, only 2 were given" } */
-+	  return myopen2 (path, oflag);
-+	}
-+      return myopenva (path, oflag, __builtin_va_arg_pack ());
-+    }
-+
-+  if (__builtin_va_arg_pack_len () < 1)
-+    return myopen2 (path, oflag);
-+
-+  return myopenva (path, oflag, __builtin_va_arg_pack ());
-+}
-+
-+int
-+main (void)
-+{
-+  myopen ("h", 0x43);
-+  myopen ("i", 0x43, 0644, 0655);
-+  return 0;
-+}
---- gcc/testsuite/g++.dg/ext/va-arg-pack-len-1.C.jj	2007-09-25 12:23:05.000000000 +0200
-+++ gcc/testsuite/g++.dg/ext/va-arg-pack-len-1.C	2007-09-25 15:16:03.000000000 +0200
-@@ -3,8 +3,10 @@
- 
- #include <stdarg.h>
- 
--extern "C" int warn_open_missing_mode (void);
--extern "C" int warn_open_too_many_arguments (void);
-+extern "C" int error_open_missing_mode (void)
-+  __attribute__((__error__ ("open with O_CREAT needs 3 arguments, only 2 were given")));
-+extern "C" int warn_open_too_many_arguments (void)
-+  __attribute__((__warning__ ("open called with more than 3 arguments")));
- extern "C" void abort (void);
- 
- char expected_char;
-@@ -83,7 +85,7 @@ myopen (const char *path, int oflag, ...
-     {
-       if ((oflag & 0x40) != 0 && __builtin_va_arg_pack_len () < 1)
- 	{
--	  warn_open_missing_mode ();
-+	  error_open_missing_mode ();
- 	  return myopen2 (path, oflag);
- 	}
-       return myopenva (path, oflag, __builtin_va_arg_pack ());
---- gcc/testsuite/g++.dg/ext/va-arg-pack-len-2.C.jj	2007-09-25 15:16:03.000000000 +0200
-+++ gcc/testsuite/g++.dg/ext/va-arg-pack-len-2.C	2007-09-25 15:16:03.000000000 +0200
-@@ -0,0 +1,42 @@
-+// { dg-do compile }
-+// { dg-options "-O2" }
-+
-+#include <stdarg.h>
-+
-+extern int error_open_missing_mode (void)
-+  __attribute__((__error__ ("open with O_CREAT needs 3 arguments, only 2 were given")));
-+extern int warn_open_too_many_arguments (void)
-+  __attribute__((__warning__ ("open called with more than 3 arguments")));
-+
-+extern int myopen2 (const char *path, int oflag);
-+extern int myopenva (const char *path, int oflag, ...);
-+
-+extern inline __attribute__((always_inline, gnu_inline)) int
-+myopen (const char *path, int oflag, ...)
-+{
-+  if (__builtin_va_arg_pack_len () > 1)
-+    warn_open_too_many_arguments ();	// { dg-warning "called with more than 3" }
-+
-+  if (__builtin_constant_p (oflag))
-+    {
-+      if ((oflag & 0x40) != 0 && __builtin_va_arg_pack_len () < 1)
-+	{
-+	  error_open_missing_mode ();	// { dg-error "needs 3 arguments, only 2 were given" }
-+	  return myopen2 (path, oflag);
-+	}
-+      return myopenva (path, oflag, __builtin_va_arg_pack ());
-+    }
-+
-+  if (__builtin_va_arg_pack_len () < 1)
-+    return myopen2 (path, oflag);
-+
-+  return myopenva (path, oflag, __builtin_va_arg_pack ());
-+}
-+
-+int
-+main (void)
-+{
-+  myopen ("h", 0x43);
-+  myopen ("i", 0x43, 0644, 0655);
-+  return 0;
-+}

diff --git a/gcc41-gnuc-rh-release.patch b/gcc41-gnuc-rh-release.patch
deleted file mode 100644
index a755c48..0000000
--- a/gcc41-gnuc-rh-release.patch
+++ /dev/null
@@ -1,50 +0,0 @@
-2004-10-19  Jakub Jelinek  <jakub@redhat.com>
-
-	* c-cppbuiltin.c (define__GNUC__): Also define __GNUC_RH_RELEASE__.
-
---- gcc/c-cppbuiltin.c.jj	2004-10-07 21:27:38.000000000 +0200
-+++ gcc/c-cppbuiltin.c	2004-10-19 11:41:50.000000000 +0200
-@@ -257,13 +257,13 @@ define__GNUC__ (void)
- {
-   /* The format of the version string, enforced below, is
-      ([^0-9]*-)?[0-9]+[.][0-9]+([.][0-9]+)?([- ].*)?  */
--  const char *q, *v = version_string;
-+  const char *q, *v = version_string, *vstart, *vend;
- 
-   while (*v && !ISDIGIT (*v))
-     v++;
-   gcc_assert (*v && (v <= version_string || v[-1] == '-'));
- 
--  q = v;
-+  vstart = q = v;
-   while (ISDIGIT (*v))
-     v++;
-   builtin_define_with_value_n ("__GNUC__", q, v - q);
-@@ -289,6 +289,27 @@ define__GNUC__ (void)
-     builtin_define_with_value_n ("__GNUC_PATCHLEVEL__", "0", 1);
- 
-   gcc_assert (!*v || *v == ' ' || *v == '-');
-+
-+  vend = v;
-+  v = strchr (v, '(');
-+  if (v != NULL && strncmp (v + 1, "Red Hat ", 8) == 0)
-+    {
-+      v += 9;
-+      if (strncmp (v, "Linux ", 6) == 0)
-+	v += 6;
-+
-+      gcc_assert (strncmp (v, vstart, vend - vstart) == 0);
-+      gcc_assert (v[vend - vstart] == '-');
-+
-+      v += vend - vstart + 1;
-+      q = v;
-+      gcc_assert (ISDIGIT (*v));
-+      while (ISDIGIT (*v))
-+	v++;
-+      builtin_define_with_value_n ("__GNUC_RH_RELEASE__", q, v - q);
-+
-+      gcc_assert (!*v || *v == ')' || *v == '.');
-+    }
- }
- 
- /* Define macros used by <stdint.h>.  Currently only defines limits

diff --git a/gcc41-hash-style-gnu.patch b/gcc41-hash-style-gnu.patch
deleted file mode 100644
index 54afa16..0000000
--- a/gcc41-hash-style-gnu.patch
+++ /dev/null
@@ -1,136 +0,0 @@
-2006-07-11  Jakub Jelinek  <jakub@redhat.com>
-
-	* config/i386/linux.h (LINK_SPEC): Add --hash-style=gnu.
-	* config/i386/linux64.h (LINK_SPEC): Likewise.
-	* config/rs6000/sysv4.h (LINK_OS_LINUX_SPEC): Likewise.
-	* config/rs6000/linux64.h (LINK_OS_LINUX_SPEC32,
-	LINK_OS_LINUX_SPEC64): Likewise.
-	* config/s390/linux.h (LINK_SPEC): Likewise.
-	* config/ia64/linux.h (LINK_SPEC): Likewise.
-	* config/sparc/linux.h (LINK_SPEC): Likewise.
-	* config/sparc/linux64.h (LINK_SPEC, LINK_ARCH32_SPEC,
-	LINK_ARCH64_SPEC): Likewise.
-	* config/alpha/linux-elf.h (LINK_SPEC): Likewise.
-
---- gcc/config/rs6000/sysv4.h.jj	2006-07-11 10:54:00.000000000 +0200
-+++ gcc/config/rs6000/sysv4.h	2006-07-11 12:51:39.000000000 +0200
-@@ -1039,7 +1039,7 @@ extern int fixuplabelno;
- 
- #define LINK_START_LINUX_SPEC ""
- 
--#define LINK_OS_LINUX_SPEC "-m elf32ppclinux %{!shared: %{!static: \
-+#define LINK_OS_LINUX_SPEC "-m elf32ppclinux --hash-style=gnu %{!shared: %{!static: \
-   %{rdynamic:-export-dynamic} \
-   %{!dynamic-linker:-dynamic-linker /lib/ld.so.1}}}"
- 
---- gcc/config/rs6000/linux64.h.jj	2006-07-11 10:54:00.000000000 +0200
-+++ gcc/config/rs6000/linux64.h	2006-07-11 12:52:14.000000000 +0200
-@@ -337,11 +337,11 @@ extern int dot_symbols;
- #undef	LINK_OS_DEFAULT_SPEC
- #define LINK_OS_DEFAULT_SPEC "%(link_os_linux)"
- 
--#define LINK_OS_LINUX_SPEC32 "-m elf32ppclinux %{!shared: %{!static: \
-+#define LINK_OS_LINUX_SPEC32 "-m elf32ppclinux --hash-style=gnu %{!shared: %{!static: \
-   %{rdynamic:-export-dynamic} \
-   %{!dynamic-linker:-dynamic-linker /lib/ld.so.1}}}"
- 
--#define LINK_OS_LINUX_SPEC64 "-m elf64ppc %{!shared: %{!static: \
-+#define LINK_OS_LINUX_SPEC64 "-m elf64ppc --hash-style=gnu %{!shared: %{!static: \
-   %{rdynamic:-export-dynamic} \
-   %{!dynamic-linker:-dynamic-linker /lib64/ld64.so.1}}}"
- 
---- gcc/config/alpha/linux-elf.h.jj	2006-07-11 10:54:01.000000000 +0200
-+++ gcc/config/alpha/linux-elf.h	2006-07-11 12:53:48.000000000 +0200
-@@ -29,7 +29,7 @@ Boston, MA 02110-1301, USA.  */
- 
- #define ELF_DYNAMIC_LINKER	"/lib/ld-linux.so.2"
- 
--#define LINK_SPEC "-m elf64alpha %{G*} %{relax:-relax}		\
-+#define LINK_SPEC "-m elf64alpha --hash-style=gnu %{G*} %{relax:-relax}	\
-   %{O*:-O3} %{!O*:-O1}						\
-   %{shared:-shared}						\
-   %{!shared:							\
---- gcc/config/s390/linux.h.jj	2006-07-11 10:54:02.000000000 +0200
-+++ gcc/config/s390/linux.h	2006-07-11 12:52:39.000000000 +0200
-@@ -79,7 +79,7 @@ Software Foundation, 51 Franklin Street,
- 
- #undef  LINK_SPEC
- #define LINK_SPEC \
--  "%{m31:-m elf_s390}%{m64:-m elf64_s390} \
-+  "%{m31:-m elf_s390}%{m64:-m elf64_s390} --hash-style=gnu \
-    %{shared:-shared} \
-    %{!shared: \
-       %{static:-static} \
---- gcc/config/sparc/linux.h.jj	2006-07-11 10:54:03.000000000 +0200
-+++ gcc/config/sparc/linux.h	2006-07-11 12:54:16.000000000 +0200
-@@ -127,7 +127,7 @@ Boston, MA 02110-1301, USA.  */
- /* If ELF is the default format, we should not use /lib/elf.  */
- 
- #undef  LINK_SPEC
--#define LINK_SPEC "-m elf32_sparc -Y P,/usr/lib %{shared:-shared} \
-+#define LINK_SPEC "-m elf32_sparc --hash-style=gnu -Y P,/usr/lib %{shared:-shared} \
-   %{!mno-relax:%{!r:-relax}} \
-   %{!shared: \
-     %{!ibcs: \
---- gcc/config/sparc/linux64.h.jj	2006-07-11 10:54:03.000000000 +0200
-+++ gcc/config/sparc/linux64.h	2006-07-11 12:55:10.000000000 +0200
-@@ -157,7 +157,7 @@ Boston, MA 02110-1301, USA.  */
-   { "link_arch_default", LINK_ARCH_DEFAULT_SPEC },	  \
-   { "link_arch",	 LINK_ARCH_SPEC },
-     
--#define LINK_ARCH32_SPEC "-m elf32_sparc -Y P,/usr/lib %{shared:-shared} \
-+#define LINK_ARCH32_SPEC "-m elf32_sparc --hash-style=gnu -Y P,/usr/lib %{shared:-shared} \
-   %{!shared: \
-     %{!ibcs: \
-       %{!static: \
-@@ -166,7 +166,7 @@ Boston, MA 02110-1301, USA.  */
-         %{static:-static}}} \
- "
- 
--#define LINK_ARCH64_SPEC "-m elf64_sparc -Y P,/usr/lib64 %{shared:-shared} \
-+#define LINK_ARCH64_SPEC "-m elf64_sparc --hash-style=gnu -Y P,/usr/lib64 %{shared:-shared} \
-   %{!shared: \
-     %{!ibcs: \
-       %{!static: \
-@@ -247,7 +247,7 @@ Boston, MA 02110-1301, USA.  */
- #else /* !SPARC_BI_ARCH */
- 
- #undef LINK_SPEC
--#define LINK_SPEC "-m elf64_sparc -Y P,/usr/lib64 %{shared:-shared} \
-+#define LINK_SPEC "-m elf64_sparc --hash-style=gnu -Y P,/usr/lib64 %{shared:-shared} \
-   %{!shared: \
-     %{!ibcs: \
-       %{!static: \
---- gcc/config/i386/linux.h.jj	2006-07-11 10:54:05.000000000 +0200
-+++ gcc/config/i386/linux.h	2006-07-11 12:44:45.000000000 +0200
-@@ -113,7 +113,7 @@ Boston, MA 02110-1301, USA.  */
-   { "dynamic_linker", DYNAMIC_LINKER }
- 
- #undef	LINK_SPEC
--#define LINK_SPEC "-m %(link_emulation) %{shared:-shared} \
-+#define LINK_SPEC "-m %(link_emulation) --hash-style=gnu %{shared:-shared} \
-   %{!shared: \
-     %{!ibcs: \
-       %{!static: \
---- gcc/config/i386/linux64.h.jj	2006-07-11 10:54:04.000000000 +0200
-+++ gcc/config/i386/linux64.h	2006-07-11 12:45:02.000000000 +0200
-@@ -55,7 +55,7 @@ Boston, MA 02110-1301, USA.  */
-    done.  */
- 
- #undef	LINK_SPEC
--#define LINK_SPEC "%{!m32:-m elf_x86_64} %{m32:-m elf_i386} \
-+#define LINK_SPEC "%{!m32:-m elf_x86_64} %{m32:-m elf_i386} --hash-style=gnu \
-   %{shared:-shared} \
-   %{!shared: \
-     %{!static: \
---- gcc/config/ia64/linux.h.jj	2006-07-11 10:54:06.000000000 +0200
-+++ gcc/config/ia64/linux.h	2006-07-11 12:48:19.000000000 +0200
-@@ -40,7 +40,7 @@ do {						\
-    linux.h file.  */
- 
- #undef LINK_SPEC
--#define LINK_SPEC "\
-+#define LINK_SPEC "--hash-style=gnu \
-   %{shared:-shared} \
-   %{!shared: \
-     %{!static: \

diff --git a/gcc41-ia64-libunwind.patch b/gcc41-ia64-libunwind.patch
deleted file mode 100644
index e4fdd61..0000000
--- a/gcc41-ia64-libunwind.patch
+++ /dev/null
@@ -1,538 +0,0 @@
-2004-11-27  Jakub Jelinek  <jakub@redhat.com>
-
-	* config.gcc (ia64*-*-linux*): If native and libelf is installed,
-	use ia64/t-glibc-no-libunwind instead of the other t-*unwind*
-	fragments.
-	* config/ia64/t-glibc-no-libunwind: New file.
-	* config/ia64/change-symver.c: New file.
-	* config/ia64/unwind-ia64.c: If USE_SYMVER_GLOBAL and SHARED,
-	define _Unwind_* to __symverglobal_Unwind_*.
-	(alias): Undefine.
-	(symverglobal): Define.  Use it on _Unwind_*.
-	* config/ia64/mkmap-symver-multi.awk: New file.
-	* config/ia64/libgcc-ia64-no-libunwind.ver: New file.
-
---- gcc/config.gcc.jj	2004-10-04 08:55:44.000000000 -0400
-+++ gcc/config.gcc	2004-11-13 05:23:50.000000000 -0500
-@@ -1185,9 +1185,16 @@ ia64*-*-freebsd*)
- 	;;
- ia64*-*-linux*)
- 	tm_file="${tm_file} dbxelf.h elfos.h svr4.h linux.h ia64/sysv4.h ia64/linux.h"
--	tmake_file="${tmake_file} ia64/t-ia64 t-libunwind ia64/t-glibc"
--	if test x$with_system_libunwind != xyes ; then
--		tmake_file="${tmake_file} t-libunwind-elf ia64/t-glibc-libunwind"
-+	tmake_file="${tmake_file} ia64/t-ia64"
-+	if test x${target} = x${host} && test x${target} = x${build} \
-+	   && grep gelf_getverdef /usr/include/gelf.h > /dev/null 2>&1 \
-+	   && test -f /usr/lib/libelf.so; then
-+		tmake_file="${tmake_file} ia64/t-glibc-no-libunwind"
-+	else
-+		tmake_file="${tmake_file} t-libunwind ia64/t-glibc"
-+		if test x$with_system_libunwind != xyes ; then
-+			tmake_file="${tmake_file} t-libunwind-elf ia64/t-glibc-libunwind"
-+		fi
- 	fi
- 	target_cpu_default="MASK_GNU_AS|MASK_GNU_LD"
- 	extra_parts="crtbegin.o crtend.o crtbeginS.o crtendS.o crtfastmath.o"
---- gcc/config/ia64/t-glibc-no-libunwind.jj	2004-02-18 10:27:36.000000000 -0500
-+++ gcc/config/ia64/t-glibc-no-libunwind	2004-11-15 09:56:33.000000000 -0500
-@@ -0,0 +1,30 @@
-+# Don't use system libunwind library on IA-64 GLIBC based system,
-+# but make _Unwind_* symbols unversioned, so that created programs
-+# are usable even when libgcc_s uses libunwind.
-+LIB2ADDEH += $(srcdir)/config/ia64/fde-glibc.c
-+SHLIB_MAPFILES += $(srcdir)/config/ia64/libgcc-ia64-no-libunwind.ver
-+SHLIB_MKMAP = $(srcdir)/config/ia64/mkmap-symver-multi.awk
-+
-+SHLIB_LINK = $(GCC_FOR_TARGET) $(LIBGCC2_CFLAGS) -shared -nodefaultlibs \
-+	-Wl,--soname=$(SHLIB_SONAME) \
-+	-Wl,--version-script=$(SHLIB_MAP) \
-+	-o $(SHLIB_DIR)/$(SHLIB_SONAME).tmp @multilib_flags@ $(SHLIB_OBJS) -lc && \
-+	rm -f $(SHLIB_DIR)/$(SHLIB_SOLINK) && \
-+	if [ -f $(SHLIB_DIR)/$(SHLIB_SONAME) ]; then \
-+	  mv -f $(SHLIB_DIR)/$(SHLIB_SONAME) \
-+		$(SHLIB_DIR)/$(SHLIB_SONAME).backup; \
-+	else true; fi && \
-+	gcc -O2 -o $(SHLIB_DIR)/$(SHLIB_SONAME).tweak \
-+	  $(srcdir)/config/ia64/change-symver.c -lelf && \
-+	$(SHLIB_DIR)/$(SHLIB_SONAME).tweak $(SHLIB_DIR)/$(SHLIB_SONAME).tmp \
-+	GCC_3.4.2 _GLOBAL_ \
-+	_Unwind_GetGR _Unwind_RaiseException _Unwind_GetRegionStart _Unwind_SetIP \
-+	_Unwind_GetIP _Unwind_GetLanguageSpecificData _Unwind_Resume \
-+	_Unwind_DeleteException _Unwind_SetGR _Unwind_ForcedUnwind \
-+	_Unwind_Backtrace _Unwind_FindEnclosingFunction _Unwind_GetCFA \
-+	_Unwind_Resume_or_Rethrow _Unwind_GetBSP && \
-+	rm -f $(SHLIB_DIR)/$(SHLIB_SONAME).tweak && \
-+	mv $(SHLIB_DIR)/$(SHLIB_SONAME).tmp $(SHLIB_DIR)/$(SHLIB_SONAME) && \
-+	$(LN_S) $(SHLIB_SONAME) $(SHLIB_DIR)/$(SHLIB_SOLINK)
-+
-+TARGET_LIBGCC2_CFLAGS += -DUSE_SYMVER_GLOBAL
---- gcc/config/ia64/change-symver.c.jj	2004-02-18 10:27:36.000000000 -0500
-+++ gcc/config/ia64/change-symver.c	2004-11-13 05:23:50.000000000 -0500
-@@ -0,0 +1,211 @@
-+#define _GNU_SOURCE 1
-+#define _FILE_OFFSET_BITS 64
-+#include <endian.h>
-+#include <errno.h>
-+#include <error.h>
-+#include <fcntl.h>
-+#include <fnmatch.h>
-+#include <gelf.h>
-+#include <stdlib.h>
-+#include <string.h>
-+#include <unistd.h>
-+
-+int
-+compute_veridx (const char *name, Elf *elf, Elf_Data *verd, GElf_Shdr *verd_shdr)
-+{
-+  if (strcmp (name, "_GLOBAL_") == 0)
-+    return 1;
-+
-+  int cnt;
-+  size_t offset = 0;
-+  for (cnt = verd_shdr->sh_info; --cnt >= 0; )
-+    {
-+      GElf_Verdef defmem;
-+      GElf_Verdef *def;
-+      GElf_Verdaux auxmem;
-+      GElf_Verdaux *aux;
-+      unsigned int auxoffset;
-+
-+      /* Get the data at the next offset.  */
-+      def = gelf_getverdef (verd, offset, &defmem);
-+      if (def == NULL)
-+	break;
-+
-+      auxoffset = offset + def->vd_aux;
-+      aux = gelf_getverdaux (verd, auxoffset, &auxmem);
-+      if (aux == NULL)
-+	break;
-+
-+      if (strcmp (name, elf_strptr (elf, verd_shdr->sh_link,
-+		  aux->vda_name)) == 0)
-+	return def->vd_ndx;
-+
-+      /* Find the next offset.  */
-+      offset += def->vd_next;
-+    }
-+
-+  return -1;
-+}
-+
-+int
-+main (int argc, char **argv)
-+{
-+  if (argc < 4)
-+    error (1, 0, "Usage: change_symver library from_symver to_symver symbol...\nExample: change_symver libfoo.so FOO_1.0 *global* bar baz");
-+
-+  const char *fname = argv[1];
-+
-+  /* Open the file.  */
-+  int fd;
-+  fd = open (fname, O_RDWR);
-+  if (fd == -1)
-+    error (1, errno, fname);
-+
-+  elf_version (EV_CURRENT);
-+
-+  /* Now get the ELF descriptor.  */
-+  Elf *elf = elf_begin (fd, ELF_C_READ_MMAP, NULL);
-+  if (elf == NULL || elf_kind (elf) != ELF_K_ELF)
-+    error (1, 0, "Couldn't open %s: %s", fname, elf_errmsg (-1));
-+
-+  size_t shstrndx;
-+  /* Get the section header string table index.  */
-+  if (elf_getshstrndx (elf, &shstrndx) < 0)
-+    error (1, 0, "cannot get shstrndx from %s", fname);
-+
-+  GElf_Ehdr ehdr_mem;
-+  GElf_Ehdr *ehdr;
-+
-+  /* We need the ELF header in a few places.  */
-+  ehdr = gelf_getehdr (elf, &ehdr_mem);
-+  if (ehdr == NULL)
-+    error (1, 0, "couldn't get ELF headers %s: %s", fname, elf_errmsg (-1));
-+
-+  Elf_Scn *scn = NULL;
-+  GElf_Shdr shdr_mem, verd_shdr, ver_shdr, dynsym_shdr;
-+  Elf_Data *ver = NULL, *verd = NULL, *dynsym = NULL;
-+
-+  while ((scn = elf_nextscn (elf, scn)) != NULL)
-+    {
-+      GElf_Shdr *shdr = gelf_getshdr (scn, &shdr_mem);
-+
-+      if (shdr == NULL)
-+	error (1, 0, "couldn't get shdr from %s", fname);
-+
-+      if ((shdr->sh_flags & SHF_ALLOC) != 0)
-+	{
-+	  const char *name = elf_strptr (elf, shstrndx, shdr->sh_name);
-+	  Elf_Data **p;
-+
-+	  if (strcmp (name, ".gnu.version") == 0)
-+	    {
-+	      p = &ver;
-+	      ver_shdr = *shdr;
-+	    }
-+	  else if (strcmp (name, ".gnu.version_d") == 0)
-+	    {
-+	      p = &verd;
-+	      verd_shdr = *shdr;
-+	    }
-+	  else if (strcmp (name, ".dynsym") == 0)
-+	    {
-+	      p = &dynsym;
-+	      dynsym_shdr = *shdr;
-+	    }
-+	  else
-+	    continue;
-+
-+	  if (*p != NULL)
-+	    error (1, 0, "Two %s sections in %s", name, fname);
-+	  *p = elf_getdata (scn, NULL);
-+	  if (*p == NULL || elf_getdata (scn, *p) != NULL)
-+	    error (1, 0, "No data or non-contiguous data in %s section in %s",
-+		   name, fname);
-+	}
-+    }
-+
-+  if (ver == NULL || verd == NULL || dynsym == NULL)
-+    error (1, 0, "Couldn't find one of the needed sections in %s", fname);
-+
-+  int from_idx = compute_veridx (argv[2], elf, verd, &verd_shdr);
-+  if (from_idx == -1)
-+    error (1, 0, "Could not find symbol version %s in %s", argv[2], fname);
-+
-+  int to_idx = compute_veridx (argv[3], elf, verd, &verd_shdr);
-+  if (to_idx == -1)
-+    error (1, 0, "Could not find symbol version %s in %s", argv[3], fname);
-+
-+  if (dynsym_shdr.sh_entsize != gelf_fsize (elf, ELF_T_SYM, 1, ehdr->e_version)
-+      || dynsym_shdr.sh_size % dynsym_shdr.sh_entsize
-+      || ver_shdr.sh_entsize != 2
-+      || (ver_shdr.sh_size & 1)
-+      || dynsym_shdr.sh_size / dynsym_shdr.sh_entsize != ver_shdr.sh_size / 2)
-+    error (1, 0, "Unexpected sh_size or sh_entsize in %s", fname);
-+
-+  size_t nentries = ver_shdr.sh_size / 2;
-+  size_t cnt;
-+  GElf_Versym array[nentries];
-+  for (cnt = 0; cnt < nentries; ++cnt)
-+    {
-+      GElf_Versym vsymmem;
-+      GElf_Versym *vsym;
-+
-+      vsym = gelf_getversym (ver, cnt, &vsymmem);
-+      if (vsym == NULL)
-+	error (1, 0, "gelt_getversym failed in %s: %s", fname, elf_errmsg (-1));
-+
-+      array[cnt] = *vsym;
-+      if (*vsym != from_idx)
-+	continue;
-+
-+      GElf_Sym sym_mem;
-+      GElf_Sym *sym;
-+      sym = gelf_getsym (dynsym, cnt, &sym_mem);
-+      if (sym == NULL)
-+	error (1, 0, "gelt_getsym failed in %s: %s", fname, elf_errmsg (-1));
-+
-+      const char *name = elf_strptr (elf, dynsym_shdr.sh_link, sym->st_name);
-+
-+      int argn;
-+      for (argn = 4; argn < argc; ++argn)
-+	if (fnmatch (argv[argn], name, 0) == 0)
-+	  {
-+	    array[cnt] = to_idx;
-+	    break;
-+	  }
-+    }
-+
-+  if (sizeof (array[0]) != 2)
-+    abort ();
-+
-+#if __BYTE_ORDER == __LITTLE_ENDIAN
-+  if (ehdr->e_ident[EI_DATA] == ELFDATA2LSB)
-+    ;
-+  else if (ehdr->e_ident[EI_DATA] == ELFDATA2MSB)
-+#elif __BYTE_ORDER == __BIG_ENDIAN
-+  if (ehdr->e_ident[EI_DATA] == ELFDATA2MSB)
-+    ;
-+  else if (ehdr->e_ident[EI_DATA] == ELFDATA2LSB)
-+#else
-+# error Unsupported endianity
-+#endif
-+    {
-+      for (cnt = 0; cnt < nentries; ++cnt)
-+	array[cnt] = ((array[cnt] & 0xff) << 8) | ((array[cnt] & 0xff00) >> 8);
-+    }
-+  else
-+    error (1, 0, "Unknown EI_DATA %d in %s", ehdr->e_ident[EI_DATA], fname);
-+
-+  if (elf_end (elf) != 0)
-+    error (1, 0, "couldn't close %s: %s", fname, elf_errmsg (-1));
-+
-+  if (lseek (fd, ver_shdr.sh_offset, SEEK_SET) != (off_t) ver_shdr.sh_offset)
-+    error (1, 0, "failed to seek to %zd in %s", (size_t) ver_shdr.sh_offset,
-+	   fname);
-+
-+  if (write (fd, array, 2 * nentries) != (ssize_t) (2 * nentries))
-+    error (1, 0, "failed to write .gnu.version section into %s", fname);
-+
-+  close (fd);
-+  return 0;
-+}
---- gcc/config/ia64/unwind-ia64.c.jj	2004-10-04 08:55:57.000000000 -0400
-+++ gcc/config/ia64/unwind-ia64.c	2004-11-15 09:07:45.000000000 -0500
-@@ -51,6 +51,51 @@
- #define UNW_FLAG_UHANDLER(x)	((x) & 0x0000000200000000L)
- #define UNW_LENGTH(x)		((x) & 0x00000000ffffffffL)
- 
-+#if defined (USE_SYMVER_GLOBAL) && defined (SHARED)
-+extern _Unwind_Reason_Code __symverglobal_Unwind_Backtrace
-+  (_Unwind_Trace_Fn, void *);
-+extern void __symverglobal_Unwind_DeleteException
-+  (struct _Unwind_Exception *);
-+extern void * __symverglobal_Unwind_FindEnclosingFunction (void *);
-+extern _Unwind_Reason_Code __symverglobal_Unwind_ForcedUnwind
-+  (struct _Unwind_Exception *, _Unwind_Stop_Fn, void *);
-+extern _Unwind_Word __symverglobal_Unwind_GetCFA
-+  (struct _Unwind_Context *);
-+extern _Unwind_Word __symverglobal_Unwind_GetBSP
-+  (struct _Unwind_Context *);
-+extern _Unwind_Word __symverglobal_Unwind_GetGR
-+  (struct _Unwind_Context *, int );
-+extern _Unwind_Ptr __symverglobal_Unwind_GetIP (struct _Unwind_Context *);
-+extern void *__symverglobal_Unwind_GetLanguageSpecificData
-+  (struct _Unwind_Context *);
-+extern _Unwind_Ptr __symverglobal_Unwind_GetRegionStart
-+  (struct _Unwind_Context *);
-+extern _Unwind_Reason_Code __symverglobal_Unwind_RaiseException
-+  (struct _Unwind_Exception *);
-+extern void __symverglobal_Unwind_Resume (struct _Unwind_Exception *);
-+extern _Unwind_Reason_Code __symverglobal_Unwind_Resume_or_Rethrow
-+   (struct _Unwind_Exception *);
-+extern void __symverglobal_Unwind_SetGR
-+  (struct _Unwind_Context *, int, _Unwind_Word);
-+extern void __symverglobal_Unwind_SetIP
-+  (struct _Unwind_Context *, _Unwind_Ptr);
-+#define _Unwind_Backtrace __symverglobal_Unwind_Backtrace
-+#define _Unwind_DeleteException __symverglobal_Unwind_DeleteException
-+#define _Unwind_FindEnclosingFunction __symverglobal_Unwind_FindEnclosingFunction
-+#define _Unwind_ForcedUnwind __symverglobal_Unwind_ForcedUnwind
-+#define _Unwind_GetBSP __symverglobal_Unwind_GetBSP
-+#define _Unwind_GetCFA __symverglobal_Unwind_GetCFA
-+#define _Unwind_GetGR __symverglobal_Unwind_GetGR
-+#define _Unwind_GetIP __symverglobal_Unwind_GetIP
-+#define _Unwind_GetLanguageSpecificData __symverglobal_Unwind_GetLanguageSpecificData
-+#define _Unwind_GetRegionStart __symverglobal_Unwind_GetRegionStart
-+#define _Unwind_RaiseException __symverglobal_Unwind_RaiseException
-+#define _Unwind_Resume __symverglobal_Unwind_Resume
-+#define _Unwind_Resume_or_Rethrow __symverglobal_Unwind_Resume_or_Rethrow
-+#define _Unwind_SetGR __symverglobal_Unwind_SetGR
-+#define _Unwind_SetIP __symverglobal_Unwind_SetIP
-+#endif
-+
- enum unw_application_register
- {
-   UNW_AR_BSP,
-@@ -2402,4 +2447,44 @@ alias (_Unwind_SetGR);
- alias (_Unwind_SetIP);
- #endif
- 
-+#if defined (USE_SYMVER_GLOBAL) && defined (SHARED)
-+#undef alias
-+#define symverglobal(name, version) \
-+__typeof (__symverglobal##name) __symverlocal##name		\
-+  __attribute__ ((alias ("__symverglobal" #name)));		\
-+__asm__ (".symver __symverglobal" #name"," #name "@@GCC_3.4.2");\
-+__asm__ (".symver __symverlocal" #name"," #name "@" #version)
-+
-+#undef _Unwind_Backtrace
-+#undef _Unwind_DeleteException
-+#undef _Unwind_FindEnclosingFunction
-+#undef _Unwind_ForcedUnwind
-+#undef _Unwind_GetBSP
-+#undef _Unwind_GetCFA
-+#undef _Unwind_GetGR
-+#undef _Unwind_GetIP
-+#undef _Unwind_GetLanguageSpecificData
-+#undef _Unwind_GetRegionStart
-+#undef _Unwind_RaiseException
-+#undef _Unwind_Resume
-+#undef _Unwind_Resume_or_Rethrow
-+#undef _Unwind_SetGR
-+#undef _Unwind_SetIP
-+symverglobal (_Unwind_Backtrace, GCC_3.3);
-+symverglobal (_Unwind_DeleteException, GCC_3.0);
-+symverglobal (_Unwind_FindEnclosingFunction, GCC_3.3);
-+symverglobal (_Unwind_ForcedUnwind, GCC_3.0);
-+symverglobal (_Unwind_GetBSP, GCC_3.3.2);
-+symverglobal (_Unwind_GetCFA, GCC_3.3);
-+symverglobal (_Unwind_GetGR, GCC_3.0);
-+symverglobal (_Unwind_GetIP, GCC_3.0);
-+symverglobal (_Unwind_GetLanguageSpecificData, GCC_3.0);
-+symverglobal (_Unwind_GetRegionStart, GCC_3.0);
-+symverglobal (_Unwind_RaiseException, GCC_3.0);
-+symverglobal (_Unwind_Resume, GCC_3.0);
-+symverglobal (_Unwind_Resume_or_Rethrow, GCC_3.3);
-+symverglobal (_Unwind_SetGR, GCC_3.0);
-+symverglobal (_Unwind_SetIP, GCC_3.0);
-+#endif
-+
- #endif
---- gcc/config/ia64/mkmap-symver-multi.awk.jj	2004-02-18 10:27:36.000000000 -0500
-+++ gcc/config/ia64/mkmap-symver-multi.awk	2004-11-15 09:46:50.000000000 -0500
-@@ -0,0 +1,133 @@
-+# Generate an ELF symbol version map a-la Solaris and GNU ld.
-+#	Contributed by Richard Henderson <rth@cygnus.com>
-+#
-+# This file is part of GCC.
-+#
-+# GCC is free software; you can redistribute it and/or modify it under
-+# the terms of the GNU General Public License as published by the Free
-+# Software Foundation; either version 2, or (at your option) any later
-+# version.
-+#
-+# GCC is distributed in the hope that it will be useful, but WITHOUT
-+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
-+# or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public
-+# License for more details.
-+#
-+# You should have received a copy of the GNU General Public License
-+# along with GCC; see the file COPYING.  If not, write to the Free
-+# Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA
-+# 02110-1301, USA.
-+
-+BEGIN {
-+  state = "nm";
-+  sawsymbol = 0;
-+}
-+
-+# Remove comment and blank lines.
-+/^ *#/ || /^ *$/ {
-+  next;
-+}
-+
-+# We begin with nm input.  Collect the set of symbols that are present
-+# so that we can not emit them into the final version script -- Solaris
-+# complains at us if we do.
-+
-+state == "nm" && /^%%/ {
-+  state = "ver";
-+  next;
-+}
-+
-+state == "nm" && ($1 == "U" || $2 == "U") {
-+  next;
-+}
-+
-+state == "nm" && NF == 3 {
-+  if ($3 ~ /^[^@]*@GCC_[0-9.]*$/) {
-+    def[$3] = 1
-+    tl=$3
-+    sub(/^.*@/,"",tl)
-+    ver[$3] = tl
-+  } else {
-+    sub(/@@?GCC_[0-9.]*$/,"",$3)
-+    def[$3] = 1;
-+  }
-+  sawsymbol = 1;
-+  next;
-+}
-+
-+state == "nm" {
-+  next;
-+}
-+
-+# Now we process a simplified variant of the Solaris symbol version
-+# script.  We have one symbol per line, no semicolons, simple markers
-+# for beginning and ending each section, and %inherit markers for
-+# describing version inheritence.  A symbol may appear in more than
-+# one symbol version, and the last seen takes effect.
-+
-+NF == 3 && $1 == "%inherit" {
-+  inherit[$2] = $3;
-+  next;
-+}
-+
-+NF == 2 && $2 == "{" {
-+  libs[$1] = 1;
-+  thislib = $1;
-+  next;
-+}
-+
-+$1 == "}" {
-+  thislib = "";
-+  next;
-+}
-+
-+{
-+  ver[$1] = thislib;
-+  next;
-+}
-+
-+END {
-+  if (!sawsymbol)
-+    {
-+      print "No symbols seen -- broken or mis-installed nm?" | "cat 1>&2";
-+      exit 1;
-+    }
-+  for (l in libs)
-+    output(l);
-+}
-+
-+function output(lib) {
-+  if (done[lib])
-+    return;
-+  done[lib] = 1;
-+  if (inherit[lib])
-+    output(inherit[lib]);
-+
-+  empty=1
-+  for (sym in ver)
-+    if ((ver[sym] == lib) && (sym in def))
-+      {
-+	if (empty)
-+	  {
-+	    printf("%s {\n", lib);
-+	    printf("  global:\n");
-+	    empty = 0;
-+	  }
-+	symp = sym;
-+	sub(/@GCC_[0-9.]*$/,"",symp);
-+	printf("\t%s;\n", symp);
-+	if (dotsyms)
-+	  printf("\t.%s;\n", symp);
-+      }
-+
-+  if (empty)
-+    {
-+      for (l in libs)
-+	if (inherit[l] == lib)
-+	  inherit[l] = inherit[lib];
-+    }
-+  else if (inherit[lib])
-+    printf("} %s;\n", inherit[lib]);
-+  else
-+    printf ("\n  local:\n\t*;\n};\n");
-+}
---- gcc/config/ia64/libgcc-ia64-no-libunwind.ver.jj	2004-02-18 10:27:36.000000000 -0500
-+++ gcc/config/ia64/libgcc-ia64-no-libunwind.ver	2004-11-15 09:19:56.000000000 -0500
-@@ -0,0 +1,17 @@
-+GCC_3.4.2 {
-+  _Unwind_GetGR
-+  _Unwind_RaiseException
-+  _Unwind_GetRegionStart
-+  _Unwind_SetIP
-+  _Unwind_GetIP
-+  _Unwind_GetLanguageSpecificData
-+  _Unwind_Resume
-+  _Unwind_DeleteException
-+  _Unwind_SetGR
-+  _Unwind_ForcedUnwind
-+  _Unwind_Backtrace
-+  _Unwind_FindEnclosingFunction
-+  _Unwind_GetCFA
-+  _Unwind_Resume_or_Rethrow
-+  _Unwind_GetBSP
-+}

diff --git a/gcc41-ice-hack.patch b/gcc41-ice-hack.patch
deleted file mode 100644
index 00b5362..0000000
--- a/gcc41-ice-hack.patch
+++ /dev/null
@@ -1,316 +0,0 @@
-2004-01-23  Jakub Jelinek  <jakub@redhat.com>
-
-	* system.h (ICE_EXIT_CODE): Define.
-	* gcc.c (execute): Don't free first string early, but at the end
-	of the function.  Call retry_ice if compiler exited with
-	ICE_EXIT_CODE.
-	(retry_ice): New function.
-	* diagnostic.c (diagnostic_count_diagnostic,
-	diagnostic_action_after_output, error_recursion): Exit with
-	ICE_EXIT_CODE instead of FATAL_EXIT_CODE.
-
---- gcc/system.h.jj	2004-01-19 17:29:30.000000000 +0100
-+++ gcc/system.h	2004-01-21 11:53:41.000000000 +0100
-@@ -153,6 +153,10 @@ extern int errno;
- # endif
- #endif
- 
-+#ifndef ICE_EXIT_CODE
-+# define ICE_EXIT_CODE 27
-+#endif
-+
- #ifdef HAVE_UNISTD_H
- # include <unistd.h>
- #endif
---- gcc/gcc.c.jj	2004-01-21 11:45:20.000000000 +0100
-+++ gcc/gcc.c	2004-01-21 11:56:46.000000000 +0100
-@@ -346,6 +346,9 @@ static void init_gcc_specs (struct obsta
- #if defined(HAVE_TARGET_OBJECT_SUFFIX) || defined(HAVE_TARGET_EXECUTABLE_SUFFIX)
- static const char *convert_filename (const char *, int, int);
- #endif
-+#if !(defined (__MSDOS__) || defined (OS2) || defined (VMS))
-+static void retry_ice (const char *prog, const char **argv);
-+#endif
- 
- static const char *if_exists_spec_function (int, const char **);
- static const char *if_exists_else_spec_function (int, const char **);
-@@ -2841,7 +2844,7 @@ execute (void)
- 	    }
- 	}
- 
--      if (string != commands[i].prog)
-+      if (i && string != commands[i].prog)
- 	free ((void *) string);
-     }
- 
-@@ -2897,6 +2900,16 @@ See %s for instructions.",
- 	else if (WIFEXITED (status)
- 		 && WEXITSTATUS (status) >= MIN_FATAL_STATUS)
- 	  {
-+#if !(defined (__MSDOS__) || defined (OS2) || defined (VMS))
-+	    /* For ICEs in cc1, cc1obj, cc1plus see if it is
-+	       reproducible or not.  */
-+	    char *p;
-+	    if (WEXITSTATUS (status) == ICE_EXIT_CODE
-+		&& i == 0
-+		&& (p = strrchr (commands[0].argv[0], DIR_SEPARATOR))
-+		&& ! strncmp (p + 1, "cc1", 3))
-+	      retry_ice (commands[0].prog, commands[0].argv);
-+#endif
- 	    if (WEXITSTATUS (status) > greatest_status)
- 	      greatest_status = WEXITSTATUS (status);
- 	    ret_code = -1;
-@@ -2917,6 +2930,9 @@ See %s for instructions.",
- 	  }
-       }
- 
-+    if (commands[0].argv[0] != commands[0].prog)
-+      free ((PTR) commands[0].argv[0]);
-+
-     return ret_code;
-   }
- }
-@@ -5898,6 +5914,224 @@ give_switch (int switchnum, int omit_fir
-   switches[switchnum].validated = 1;
- }
- \f
-+#if !(defined (__MSDOS__) || defined (OS2) || defined (VMS))
-+#define RETRY_ICE_ATTEMPTS 2
-+
-+static void
-+retry_ice (const char *prog, const char **argv)
-+{
-+  int nargs, out_arg = -1, quiet = 0, attempt;
-+  int pid, retries, sleep_interval;
-+  const char **new_argv;
-+  char *temp_filenames[RETRY_ICE_ATTEMPTS * 2 + 2];
-+
-+  if (input_filename == NULL || ! strcmp (input_filename, "-"))
-+    return;
-+
-+  for (nargs = 0; argv[nargs] != NULL; ++nargs)
-+    /* Only retry compiler ICEs, not preprocessor ones.  */
-+    if (! strcmp (argv[nargs], "-E"))
-+      return;
-+    else if (argv[nargs][0] == '-' && argv[nargs][1] == 'o')
-+      {
-+	if (out_arg == -1)
-+	  out_arg = nargs;
-+	else
-+	  return;
-+      }
-+    /* If the compiler is going to output any time information,
-+       it might varry between invocations.  */
-+    else if (! strcmp (argv[nargs], "-quiet"))
-+      quiet = 1;
-+    else if (! strcmp (argv[nargs], "-ftime-report"))
-+      return;
-+
-+  if (out_arg == -1 || !quiet)
-+    return;
-+
-+  memset (temp_filenames, '\0', sizeof (temp_filenames));
-+  new_argv = alloca ((nargs + 3) * sizeof (const char *));
-+  memcpy (new_argv, argv, (nargs + 1) * sizeof (const char *));
-+  new_argv[nargs++] = "-frandom-seed=0";
-+  new_argv[nargs] = NULL;
-+  if (new_argv[out_arg][2] == '\0')
-+    new_argv[out_arg + 1] = "-";
-+  else
-+    new_argv[out_arg] = "-o-";
-+
-+  for (attempt = 0; attempt < RETRY_ICE_ATTEMPTS + 1; ++attempt)
-+    {
-+      int fd = -1;
-+      int status;
-+
-+      temp_filenames[attempt * 2] = make_temp_file (".out");
-+      temp_filenames[attempt * 2 + 1] = make_temp_file (".err");
-+
-+      if (attempt == RETRY_ICE_ATTEMPTS)
-+        {
-+	  int i;
-+	  int fd1, fd2;
-+	  struct stat st1, st2;
-+	  size_t n, len;
-+	  char *buf;
-+
-+	  buf = xmalloc (8192);
-+
-+	  for (i = 0; i < 2; ++i)
-+	    {
-+	      fd1 = open (temp_filenames[i], O_RDONLY);
-+	      fd2 = open (temp_filenames[2 + i], O_RDONLY);
-+
-+	      if (fd1 < 0 || fd2 < 0)
-+		{
-+		  i = -1;
-+		  close (fd1);
-+		  close (fd2);
-+		  break;
-+		}
-+
-+	      if (fstat (fd1, &st1) < 0 || fstat (fd2, &st2) < 0)
-+		{
-+		  i = -1;
-+		  close (fd1);
-+		  close (fd2);
-+		  break;
-+		}
-+
-+	      if (st1.st_size != st2.st_size)
-+		{
-+		  close (fd1);
-+		  close (fd2);
-+		  break;
-+		}
-+
-+	      len = 0;
-+	      for (n = st1.st_size; n; n -= len)
-+		{
-+		  len = n;
-+		  if (len > 4096)
-+		    len = 4096;
-+
-+		  if (read (fd1, buf, len) != (int) len
-+		      || read (fd2, buf + 4096, len) != (int) len)
-+		    {
-+		      i = -1;
-+		      break;
-+		    }
-+
-+		  if (memcmp (buf, buf + 4096, len) != 0)
-+		    break;
-+		}
-+
-+	      close (fd1);
-+	      close (fd2);
-+
-+	      if (n)
-+		break;
-+	    }
-+
-+	  free (buf);
-+	  if (i == -1)
-+	    break;
-+
-+	  if (i != 2)
-+	    {
-+	      notice ("The bug is not reproducible, so it is likely a hardware or OS problem.\n");
-+	      break;
-+	    }
-+
-+          fd = open (temp_filenames[attempt * 2], O_RDWR);
-+	  if (fd < 0)
-+	    break;
-+	  write (fd, "//", 2);
-+	  for (i = 0; i < nargs; i++)
-+	    {
-+	      write (fd, " ", 1);
-+	      write (fd, new_argv[i], strlen (new_argv[i]));
-+	    }
-+	  write (fd, "\n", 1);
-+	  new_argv[nargs] = "-E";
-+	  new_argv[nargs + 1] = NULL;
-+        }
-+
-+      /* Fork a subprocess; wait and retry if it fails.  */
-+      sleep_interval = 1;
-+      pid = -1;
-+      for (retries = 0; retries < 4; retries++)
-+	{
-+	  pid = fork ();
-+	  if (pid >= 0)
-+	    break;
-+	  sleep (sleep_interval);
-+	  sleep_interval *= 2;
-+	}
-+
-+      if (pid < 0)
-+	break;
-+      else if (pid == 0)
-+	{
-+	  if (attempt != RETRY_ICE_ATTEMPTS)
-+	    fd = open (temp_filenames[attempt * 2], O_RDWR);
-+	  if (fd < 0)
-+	    exit (-1);
-+	  if (fd != 1)
-+	    {
-+	      close (1);
-+	      dup (fd);
-+	      close (fd);
-+	    }
-+
-+	  fd = open (temp_filenames[attempt * 2 + 1], O_RDWR);
-+	  if (fd < 0)
-+	    exit (-1);
-+	  if (fd != 2)
-+	    {
-+	      close (2);
-+	      dup (fd);
-+	      close (fd);
-+	    }
-+
-+	  if (prog == new_argv[0])
-+	    execvp (prog, (char *const *) new_argv);
-+	  else
-+	    execv (new_argv[0], (char *const *) new_argv);
-+	  exit (-1);
-+	}
-+
-+      if (waitpid (pid, &status, 0) < 0)
-+	break;
-+
-+      if (attempt < RETRY_ICE_ATTEMPTS
-+	  && (! WIFEXITED (status) || WEXITSTATUS (status) != ICE_EXIT_CODE))
-+	{
-+	  notice ("The bug is not reproducible, so it is likely a hardware or OS problem.\n");
-+	  break;
-+	}
-+      else if (attempt == RETRY_ICE_ATTEMPTS)
-+	{
-+	  close (fd);
-+	  if (WIFEXITED (status)
-+	      && WEXITSTATUS (status) == SUCCESS_EXIT_CODE)
-+	    {
-+	      notice ("Preprocessed source stored into %s file, please attach this to your bugreport.\n",
-+		      temp_filenames[attempt * 2]);
-+	      /* Make sure it is not deleted.  */
-+	      free (temp_filenames[attempt * 2]);
-+	      temp_filenames[attempt * 2] = NULL;
-+	      break;
-+	    }
-+	}
-+    }
-+
-+  for (attempt = 0; attempt < RETRY_ICE_ATTEMPTS * 2 + 2; attempt++)
-+    if (temp_filenames[attempt])
-+      {
-+	unlink (temp_filenames[attempt]);
-+	free (temp_filenames[attempt]);
-+      }
-+}
-+#endif
-+\f
- /* Search for a file named NAME trying various prefixes including the
-    user's -B prefix and some standard ones.
-    Return the absolute file name found.  If nothing is found, return NAME.  */
---- gcc/diagnostic.c.jj	2003-10-01 12:09:21.000000000 +0200
-+++ gcc/diagnostic.c	2004-01-21 11:54:47.000000000 +0100
-@@ -237,14 +237,14 @@ diagnostic_action_after_output (diagnost
-       fnotice (stderr, "Please submit a full bug report,\n"
- 	       "with preprocessed source if appropriate.\n"
- 	       "See %s for instructions.\n", bug_report_url);
--      exit (FATAL_EXIT_CODE);
-+      exit (ICE_EXIT_CODE);
- 
-     case DK_FATAL:
-       if (context->abort_on_error)
- 	real_abort ();
- 
-       fnotice (stderr, "compilation terminated.\n");
--      exit (FATAL_EXIT_CODE);
-+      exit (ICE_EXIT_CODE);
- 
-     default:
-       gcc_unreachable ();

diff --git a/gcc41-java-arm1.patch b/gcc41-java-arm1.patch
deleted file mode 100644
index 54858eb..0000000
--- a/gcc41-java-arm1.patch
+++ /dev/null
@@ -1,957 +0,0 @@
-2007-05-18  Aurelien Jarno  <aurelien@aurel32.net>
-
-	* src/arm/ffi.c (ffi_prep_closure_loc): Renamed and ajusted
-	from (ffi_prep_closure): ... this.
-	(FFI_INIT_TRAMPOLINE): Adjust.
-
-2005-12-31  Phil Blundell  <pb@reciva.com>
-
-	* src/arm/ffi.c (ffi_prep_incoming_args_SYSV, 
-        ffi_closure_SYSV_inner, ffi_prep_closure): New, add closure support.
-	* src/arm/sysv.S(ffi_closure_SYSV): Likewise.
-	* src/arm/ffitarget.h (FFI_TRAMPOLINE_SIZE): Likewise.
-	(FFI_CLOSURES): Enable closure support.
-
-2007-07-03  Andrew Haley  <aph@hedges.billgatliff.com>
-
-        * testsuite/libffi.call/cls_multi_ushort.c,
-        testsuite/libffi.call/cls_align_uint16.c,
-        testsuite/libffi.call/nested_struct1.c,
-        testsuite/libffi.call/nested_struct3.c,
-        testsuite/libffi.call/cls_7_1_byte.c,
-        testsuite/libffi.call/cls_double.c,
-        testsuite/libffi.call/cls_sint.c,
-        testsuite/libffi.call/cls_20byte1.c,
-        testsuite/libffi.call/cls_multi_sshortchar.c,
-        testsuite/libffi.call/cls_align_sint64.c,
-        testsuite/libffi.call/cls_3byte2.c,
-        testsuite/libffi.call/cls_multi_schar.c,
-        testsuite/libffi.call/cls_multi_uchar.c,
-        testsuite/libffi.call/cls_19byte.c,
-        testsuite/libffi.call/cls_9byte1.c,
-        testsuite/libffi.call/cls_align_float.c,
-        testsuite/libffi.call/closure_fn1.c,
-        testsuite/libffi.call/problem1.c,
-        testsuite/libffi.call/closure_fn3.c,
-        testsuite/libffi.call/cls_sshort.c,
-        testsuite/libffi.call/closure_fn5.c,
-        testsuite/libffi.call/cls_align_double.c,
-        testsuite/libffi.call/cls_2byte.c,
-        testsuite/libffi.call/nested_struct.c,
-        testsuite/libffi.call/cls_4byte.c,
-        testsuite/libffi.call/cls_6byte.c,
-        testsuite/libffi.call/cls_8byte.c,
-        testsuite/libffi.call/cls_multi_sshort.c,
-        testsuite/libffi.call/cls_align_uint32.c,
-        testsuite/libffi.call/cls_align_sint16.c,
-        testsuite/libffi.call/cls_float.c,
-        testsuite/libffi.call/cls_20byte.c,
-        testsuite/libffi.call/cls_5_1_byte.c,
-        testsuite/libffi.call/nested_struct2.c,
-        testsuite/libffi.call/cls_24byte.c,
-        testsuite/libffi.call/cls_64byte.c,
-        testsuite/libffi.call/cls_uint.c,
-        testsuite/libffi.call/cls_multi_ushortchar.c,
-        testsuite/libffi.call/cls_schar.c,
-        testsuite/libffi.call/cls_uchar.c,
-        testsuite/libffi.call/cls_align_uint64.c,
-        testsuite/libffi.call/cls_ulonglong.c,
-        testsuite/libffi.call/cls_align_longdouble.c,
-        testsuite/libffi.call/cls_1_1byte.c,
-        testsuite/libffi.call/cls_12byte.c,
-        testsuite/libffi.call/cls_3_1byte.c,
-        testsuite/libffi.call/cls_3byte1.c,
-        testsuite/libffi.call/cls_4_1byte.c,
-        testsuite/libffi.call/cls_6_1_byte.c,
-        testsuite/libffi.call/cls_16byte.c,
-        testsuite/libffi.call/cls_18byte.c,
-        testsuite/libffi.call/closure_fn0.c,
-        testsuite/libffi.call/cls_9byte2.c,
-        testsuite/libffi.call/closure_fn2.c,
-        testsuite/libffi.call/closure_fn4.c,
-        testsuite/libffi.call/cls_ushort.c,
-        testsuite/libffi.call/closure_fn6.c,
-        testsuite/libffi.call/cls_5byte.c,
-        testsuite/libffi.call/cls_align_pointer.c,
-        testsuite/libffi.call/cls_7byte.c,
-        testsuite/libffi.call/cls_align_sint32.c,
-        testsuite/libffi.special/unwindtest.cc: Enable for ARM.
-
---- libffi/src/arm/ffitarget.h.jj	2007-09-06 14:05:09.000000000 +0200
-+++ libffi/src/arm/ffitarget.h	2007-09-06 14:07:30.000000000 +0200
-@@ -40,7 +40,8 @@ typedef enum ffi_abi {
- 
- /* ---- Definitions for closures ----------------------------------------- */
- 
--#define FFI_CLOSURES 0
-+#define FFI_CLOSURES 1
-+#define FFI_TRAMPOLINE_SIZE 20
- #define FFI_NATIVE_RAW_API 0
- 
- #endif
---- libffi/src/arm/ffi.c.jj	2007-09-06 14:05:09.000000000 +0200
-+++ libffi/src/arm/ffi.c	2007-09-06 14:07:30.000000000 +0200
-@@ -168,3 +168,122 @@ void ffi_call(ffi_cif *cif, void (*fn)()
-       break;
-     }
- }
-+
-+/** private members **/
-+
-+static void ffi_prep_incoming_args_SYSV (char *stack, void **ret,
-+					 void** args, ffi_cif* cif);
-+
-+void ffi_closure_SYSV (ffi_closure *);
-+
-+/* This function is jumped to by the trampoline */
-+
-+unsigned int
-+ffi_closure_SYSV_inner (closure, respp, args)
-+     ffi_closure *closure;
-+     void **respp;
-+     void *args;
-+{
-+  // our various things...
-+  ffi_cif       *cif;
-+  void         **arg_area;
-+
-+  cif         = closure->cif;
-+  arg_area    = (void**) alloca (cif->nargs * sizeof (void*));  
-+
-+  /* this call will initialize ARG_AREA, such that each
-+   * element in that array points to the corresponding 
-+   * value on the stack; and if the function returns
-+   * a structure, it will re-set RESP to point to the
-+   * structure return address.  */
-+
-+  ffi_prep_incoming_args_SYSV(args, respp, arg_area, cif);
-+
-+  (closure->fun) (cif, *respp, arg_area, closure->user_data);
-+
-+  return cif->flags;
-+}
-+
-+/*@-exportheader@*/
-+static void 
-+ffi_prep_incoming_args_SYSV(char *stack, void **rvalue,
-+			    void **avalue, ffi_cif *cif)
-+/*@=exportheader@*/
-+{
-+  register unsigned int i;
-+  register void **p_argv;
-+  register char *argp;
-+  register ffi_type **p_arg;
-+
-+  argp = stack;
-+
-+  if ( cif->flags == FFI_TYPE_STRUCT ) {
-+    *rvalue = *(void **) argp;
-+    argp += 4;
-+  }
-+
-+  p_argv = avalue;
-+
-+  for (i = cif->nargs, p_arg = cif->arg_types; (i != 0); i--, p_arg++)
-+    {
-+      size_t z;
-+
-+      /* Align if necessary */
-+      if ((sizeof(int) - 1) & (unsigned) argp) {
-+	argp = (char *) ALIGN(argp, sizeof(int));
-+      }
-+
-+      z = (*p_arg)->size;
-+
-+      /* because we're little endian, this is what it turns into.   */
-+
-+      *p_argv = (void*) argp;
-+
-+      p_argv++;
-+      argp += z;
-+    }
-+  
-+  return;
-+}
-+
-+/* How to make a trampoline.  */
-+
-+#define FFI_INIT_TRAMPOLINE(TRAMP,FUN,CTX) \
-+({ unsigned char *__tramp = (unsigned char*)(TRAMP); \
-+   unsigned int  __fun = (unsigned int)(FUN); \
-+   unsigned int  __ctx = (unsigned int)(CTX); \
-+   *(unsigned int*) &__tramp[0] = 0xe92d000f; /* stmfd sp!, {r0-r3} */	\
-+   *(unsigned int*) &__tramp[4] = 0xe59f0000; /* ldr r0, [pc] */ \
-+   *(unsigned int*) &__tramp[8] = 0xe59ff000; /* ldr pc, [pc] */ \
-+   *(unsigned int*) &__tramp[12] = __ctx; \
-+   *(unsigned int*) &__tramp[16] = __fun; \
-+   register unsigned long _beg __asm ("a1") = (unsigned long) (&__tramp[0]);	\
-+   register unsigned long _end __asm ("a2") = (unsigned long) (&__tramp[19]);	\
-+   register unsigned long _flg __asm ("a3") = 0;			\
-+   __asm __volatile ("swi 0x9f0002		@ sys_cacheflush"	\
-+	   		    : "=r" (_beg)				\
-+	   		    : "0" (_beg), "r" (_end), "r" (_flg));	\
-+ })
-+
-+
-+/* the cif must already be prep'ed */
-+
-+ffi_status
-+ffi_prep_closure_loc (ffi_closure* closure,
-+		      ffi_cif* cif,
-+		      void (*fun)(ffi_cif*,void*,void**,void*),
-+		      void *user_data,
-+		      void *codeloc)
-+{
-+  FFI_ASSERT (cif->abi == FFI_SYSV);
-+
-+  FFI_INIT_TRAMPOLINE (&closure->tramp[0], \
-+		       &ffi_closure_SYSV,  \
-+		       codeloc);
-+    
-+  closure->cif  = cif;
-+  closure->user_data = user_data;
-+  closure->fun  = fun;
-+
-+  return FFI_OK;
-+}
---- libffi/src/arm/sysv.S.jj	2007-09-06 14:05:09.000000000 +0200
-+++ libffi/src/arm/sysv.S	2007-09-06 14:08:26.000000000 +0200
-@@ -207,6 +207,54 @@ LSYM(Lepilogue):
- .ffi_call_SYSV_end:
-         .size    CNAME(ffi_call_SYSV),.ffi_call_SYSV_end-CNAME(ffi_call_SYSV)
- 
-+/*
-+	unsigned int FFI_HIDDEN
-+	ffi_closure_SYSV_inner (closure, respp, args)
-+	     ffi_closure *closure;
-+	     void **respp;
-+  	     void *args;
-+*/
-+
-+ARM_FUNC_START ffi_closure_SYSV
-+	add	ip, sp, #16
-+	stmfd	sp!, {ip, lr}
-+	add	r2, sp, #8
-+	sub	sp, sp, #16
-+	str	sp, [sp, #8]
-+	add	r1, sp, #8
-+	bl	ffi_closure_SYSV_inner
-+	cmp	r0, #FFI_TYPE_INT
-+	beq	.Lretint
-+	cmp	r0, #FFI_TYPE_FLOAT
-+	beq	.Lretfloat
-+	cmp	r0, #FFI_TYPE_DOUBLE
-+	beq	.Lretdouble
-+	cmp	r0, #FFI_TYPE_LONGDOUBLE
-+	beq	.Lretlongdouble
-+	cmp	r0, #FFI_TYPE_SINT64
-+	beq	.Lretlonglong
-+.Lclosure_epilogue:
-+	add	sp, sp, #16
-+	ldmfd	sp, {sp, pc}
-+.Lretint:
-+	ldr	r0, [sp]
-+	b	.Lclosure_epilogue
-+.Lretlonglong:
-+	ldr	r0, [sp]
-+	ldr	r1, [sp, #4]
-+	b	.Lclosure_epilogue
-+.Lretfloat:
-+	ldfs	f0, [sp]
-+	b	.Lclosure_epilogue
-+.Lretdouble:
-+	ldfd	f0, [sp]
-+	b	.Lclosure_epilogue
-+.Lretlongdouble:
-+	ldfd	f0, [sp]
-+	b	.Lclosure_epilogue
-+.ffi_closure_SYSV_end:
-+        .size    CNAME(ffi_closure_SYSV),.ffi_closure_SYSV_end-CNAME(ffi_closure_SYSV)
-+
- #if defined __ELF__ && defined __linux__
- 	.section	.note.GNU-stack,"",@progbits
- #endif
---- libffi/testsuite/libffi.call/cls_multi_ushort.c.jj	2007-09-06 14:05:09.000000000 +0200
-+++ libffi/testsuite/libffi.call/cls_multi_ushort.c	2007-09-06 14:07:30.000000000 +0200
-@@ -4,7 +4,7 @@
-    PR:		PR13221.
-    Originator:	<andreast@gcc.gnu.org> 20031129  */
- 
--/* { dg-do run { xfail mips64*-*-* arm*-*-* strongarm*-*-* xscale*-*-* } } */
-+/* { dg-do run { xfail mips64*-*-* } } */
- #include "ffitest.h"
- 
- unsigned short test_func_fn(unsigned short a1, unsigned short a2)
---- libffi/testsuite/libffi.call/cls_align_uint16.c.jj	2007-09-06 14:05:09.000000000 +0200
-+++ libffi/testsuite/libffi.call/cls_align_uint16.c	2007-09-06 14:07:30.000000000 +0200
-@@ -4,7 +4,7 @@
-    PR:		none.
-    Originator:	<hos@tamanegi.org> 20031203	 */
- 
--/* { dg-do run { xfail mips64*-*-* arm*-*-* strongarm*-*-* xscale*-*-* } } */
-+/* { dg-do run { xfail mips64*-*-* } } */
- #include "ffitest.h"
- 
- typedef struct cls_struct_align {
---- libffi/testsuite/libffi.call/nested_struct1.c.jj	2007-09-06 14:05:09.000000000 +0200
-+++ libffi/testsuite/libffi.call/nested_struct1.c	2007-09-06 14:07:30.000000000 +0200
-@@ -5,7 +5,7 @@
-    PR:		none.
-    Originator:	<andreast@gcc.gnu.org> 20030828	 */
- 
--/* { dg-do run { xfail mips64*-*-* arm*-*-* strongarm*-*-* xscale*-*-* } } */
-+/* { dg-do run { xfail mips64*-*-* } } */
- #include "ffitest.h"
- 
- typedef struct cls_struct_16byte1 {
---- libffi/testsuite/libffi.call/nested_struct3.c.jj	2007-09-06 14:05:09.000000000 +0200
-+++ libffi/testsuite/libffi.call/nested_struct3.c	2007-09-06 14:07:30.000000000 +0200
-@@ -6,7 +6,7 @@
-    PR:		none.
-    Originator:	<andreast@gcc.gnu.org> 20030911	 */
- 
--/* { dg-do run { xfail mips64*-*-* arm*-*-* strongarm*-*-* xscale*-*-* } } */
-+/* { dg-do run { xfail mips64*-*-* } } */
- #include "ffitest.h"
- 
- typedef struct A {
---- libffi/testsuite/libffi.call/cls_7_1_byte.c.jj	2007-09-06 14:05:09.000000000 +0200
-+++ libffi/testsuite/libffi.call/cls_7_1_byte.c	2007-09-06 14:07:30.000000000 +0200
-@@ -5,7 +5,7 @@
-    PR:		none.
-    Originator:	<andreast@gcc.gnu.org> 20050708	 */
- 
--/* { dg-do run { xfail mips64*-*-* arm*-*-* strongarm*-*-* xscale*-*-* } } */
-+/* { dg-do run { xfail mips64*-*-* } } */
- #include "ffitest.h"
- 
- typedef struct cls_struct_7byte {
---- libffi/testsuite/libffi.call/cls_double.c.jj	2007-09-06 14:05:09.000000000 +0200
-+++ libffi/testsuite/libffi.call/cls_double.c	2007-09-06 14:07:30.000000000 +0200
-@@ -4,7 +4,7 @@
-    PR:		none.
-    Originator:	<andreast@gcc.gnu.org> 20030828	 */
- 
--/* { dg-do run { xfail mips64*-*-* arm*-*-* strongarm*-*-* xscale*-*-* } } */
-+/* { dg-do run { xfail mips64*-*-* } } */
- #include "ffitest.h"
- 
- static void cls_ret_double_fn(ffi_cif* cif __UNUSED__, void* resp, void** args,
---- libffi/testsuite/libffi.call/cls_sint.c.jj	2007-09-06 14:05:09.000000000 +0200
-+++ libffi/testsuite/libffi.call/cls_sint.c	2007-09-06 14:07:33.000000000 +0200
-@@ -4,7 +4,7 @@
-    PR:		none.
-    Originator:	<andreast@gcc.gnu.org> 20031108	 */
- 
--/* { dg-do run { xfail mips64*-*-* arm*-*-* strongarm*-*-* xscale*-*-* } } */
-+/* { dg-do run { xfail mips64*-*-* } } */
- #include "ffitest.h"
- 
- static void cls_ret_sint_fn(ffi_cif* cif __UNUSED__, void* resp, void** args,
---- libffi/testsuite/libffi.call/cls_20byte1.c.jj	2007-09-06 14:05:09.000000000 +0200
-+++ libffi/testsuite/libffi.call/cls_20byte1.c	2007-09-06 14:07:34.000000000 +0200
-@@ -5,7 +5,9 @@
-    PR:		none.
-    Originator:	<andreast@gcc.gnu.org> 20030828	 */
- 
--/* { dg-do run { xfail mips64*-*-* arm*-*-* strongarm*-*-* xscale*-*-* } } */
-+
-+
-+/* { dg-do run { xfail mips64*-*-* } } */
- #include "ffitest.h"
- 
- typedef struct cls_struct_20byte {
---- libffi/testsuite/libffi.call/cls_multi_sshortchar.c.jj	2007-09-06 14:05:09.000000000 +0200
-+++ libffi/testsuite/libffi.call/cls_multi_sshortchar.c	2007-09-06 14:07:34.000000000 +0200
-@@ -4,7 +4,7 @@
-    PR:		PR13221.
-    Originator:	<andreast@gcc.gnu.org> 20031129  */
- 
--/* { dg-do run { xfail mips64*-*-* arm*-*-* strongarm*-*-* xscale*-*-* } } */
-+/* { dg-do run { xfail mips64*-*-* } } */
- #include "ffitest.h"
- 
- signed short test_func_fn(signed char a1, signed short a2,
---- libffi/testsuite/libffi.call/cls_align_sint64.c.jj	2007-09-06 14:05:09.000000000 +0200
-+++ libffi/testsuite/libffi.call/cls_align_sint64.c	2007-09-06 14:07:34.000000000 +0200
-@@ -4,7 +4,7 @@
-    PR:		none.
-    Originator:	<hos@tamanegi.org> 20031203	 */
- 
--/* { dg-do run { xfail mips64*-*-* arm*-*-* strongarm*-*-* xscale*-*-* } } */
-+/* { dg-do run { xfail mips64*-*-* } } */
- #include "ffitest.h"
- 
- typedef struct cls_struct_align {
---- libffi/testsuite/libffi.call/cls_3byte2.c.jj	2007-09-06 14:05:09.000000000 +0200
-+++ libffi/testsuite/libffi.call/cls_3byte2.c	2007-09-06 14:07:34.000000000 +0200
-@@ -6,7 +6,7 @@
-    PR:		none.
-    Originator:	<andreast@gcc.gnu.org> 20030828	 */
- 
--/* { dg-do run { xfail mips64*-*-* arm*-*-* strongarm*-*-* xscale*-*-* } } */
-+/* { dg-do run { xfail mips64*-*-* } } */
- #include "ffitest.h"
- 
- typedef struct cls_struct_3byte_1 {
---- libffi/testsuite/libffi.call/cls_multi_schar.c.jj	2007-09-06 14:05:09.000000000 +0200
-+++ libffi/testsuite/libffi.call/cls_multi_schar.c	2007-09-06 14:07:34.000000000 +0200
-@@ -4,7 +4,7 @@
-    PR:		PR13221.
-    Originator:	<hos@tamanegi.org> 20031129  */
- 
--/* { dg-do run { xfail mips64*-*-* arm*-*-* strongarm*-*-* xscale*-*-* } } */
-+/* { dg-do run { xfail mips64*-*-* } } */
- #include "ffitest.h"
- 
- signed char test_func_fn(signed char a1, signed char a2)
---- libffi/testsuite/libffi.call/cls_multi_uchar.c.jj	2007-09-06 14:05:09.000000000 +0200
-+++ libffi/testsuite/libffi.call/cls_multi_uchar.c	2007-09-06 14:07:34.000000000 +0200
-@@ -4,7 +4,7 @@
-    PR:		PR13221.
-    Originator:	<andreast@gcc.gnu.org> 20031129  */
- 
--/* { dg-do run { xfail mips64*-*-* arm*-*-* strongarm*-*-* xscale*-*-* } } */
-+/* { dg-do run { xfail mips64*-*-* } } */
- #include "ffitest.h"
- 
- unsigned char test_func_fn(unsigned char a1, unsigned char a2,
---- libffi/testsuite/libffi.call/cls_19byte.c.jj	2007-09-06 14:05:09.000000000 +0200
-+++ libffi/testsuite/libffi.call/cls_19byte.c	2007-09-06 14:07:34.000000000 +0200
-@@ -5,7 +5,7 @@
-    PR:		none.
-    Originator:	<andreast@gcc.gnu.org> 20030915	 */
- 
--/* { dg-do run { xfail mips64*-*-* arm*-*-* strongarm*-*-* xscale*-*-* } } */
-+/* { dg-do run { xfail mips64*-*-* } } */
- #include "ffitest.h"
- 
- typedef struct cls_struct_19byte {
---- libffi/testsuite/libffi.call/cls_9byte1.c.jj	2007-09-06 14:05:09.000000000 +0200
-+++ libffi/testsuite/libffi.call/cls_9byte1.c	2007-09-06 14:07:34.000000000 +0200
-@@ -7,7 +7,7 @@
-    PR:		none.
-    Originator:	<andreast@gcc.gnu.org> 20030914	 */
- 
--/* { dg-do run { xfail mips64*-*-* arm*-*-* strongarm*-*-* xscale*-*-* } } */
-+/* { dg-do run { xfail mips64*-*-* } } */
- #include "ffitest.h"
- 
- typedef struct cls_struct_9byte {
---- libffi/testsuite/libffi.call/cls_align_float.c.jj	2007-09-06 14:05:09.000000000 +0200
-+++ libffi/testsuite/libffi.call/cls_align_float.c	2007-09-06 14:07:34.000000000 +0200
-@@ -4,7 +4,7 @@
-    PR:		none.
-    Originator:	<hos@tamanegi.org> 20031203	 */
- 
--/* { dg-do run { xfail mips64*-*-* arm*-*-* strongarm*-*-* xscale*-*-* } } */
-+/* { dg-do run { xfail mips64*-*-* } } */
- #include "ffitest.h"
- 
- typedef struct cls_struct_align {
---- libffi/testsuite/libffi.call/closure_fn1.c.jj	2007-09-06 14:05:09.000000000 +0200
-+++ libffi/testsuite/libffi.call/closure_fn1.c	2007-09-06 14:07:34.000000000 +0200
-@@ -6,7 +6,7 @@
-    PR:		none.
-    Originator:	<andreast@gcc.gnu.org> 20030828	 */
- 
--/* { dg-do run { xfail mips64*-*-* arm*-*-* strongarm*-*-* xscale*-*-* } } */
-+/* { dg-do run { xfail mips64*-*-* } } */
- #include "ffitest.h"
- 
- 
---- libffi/testsuite/libffi.call/problem1.c.jj	2007-09-06 14:05:09.000000000 +0200
-+++ libffi/testsuite/libffi.call/problem1.c	2007-09-06 14:07:34.000000000 +0200
-@@ -4,7 +4,7 @@
-    PR:		none.
-    Originator:	<andreast@gcc.gnu.org> 20030828	 */
- 
--/* { dg-do run { xfail mips64*-*-* arm*-*-* strongarm*-*-* xscale*-*-* } } */
-+/* { dg-do run { xfail mips64*-*-* } } */
- #include "ffitest.h"
- 
- typedef struct my_ffi_struct {
---- libffi/testsuite/libffi.call/closure_fn3.c.jj	2007-09-06 14:05:09.000000000 +0200
-+++ libffi/testsuite/libffi.call/closure_fn3.c	2007-09-06 14:07:34.000000000 +0200
-@@ -6,7 +6,7 @@
-    PR:		none.
-    Originator:	<andreast@gcc.gnu.org> 20030828	 */
- 
--/* { dg-do run { xfail mips64*-*-* arm*-*-* strongarm*-*-* xscale*-*-* } } */
-+/* { dg-do run { xfail mips64*-*-* } } */
- #include "ffitest.h"
- 
- static void closure_test_fn3(ffi_cif* cif __UNUSED__, void* resp, void** args,
---- libffi/testsuite/libffi.call/cls_sshort.c.jj	2007-09-06 14:05:09.000000000 +0200
-+++ libffi/testsuite/libffi.call/cls_sshort.c	2007-09-06 14:07:34.000000000 +0200
-@@ -4,7 +4,7 @@
-    PR:		none.
-    Originator:	<andreast@gcc.gnu.org> 20031108	 */
- 
--/* { dg-do run { xfail mips64*-*-* arm*-*-* strongarm*-*-* xscale*-*-* } } */
-+/* { dg-do run { xfail mips64*-*-* } } */
- #include "ffitest.h"
- 
- static void cls_ret_sshort_fn(ffi_cif* cif __UNUSED__, void* resp, void** args,
---- libffi/testsuite/libffi.call/closure_fn5.c.jj	2007-09-06 14:05:09.000000000 +0200
-+++ libffi/testsuite/libffi.call/closure_fn5.c	2007-09-06 14:07:34.000000000 +0200
-@@ -6,7 +6,7 @@
-    PR:		none.
-    Originator:	<andreast@gcc.gnu.org> 20031026	 */
- 
--/* { dg-do run { xfail mips64*-*-* arm*-*-* strongarm*-*-* xscale*-*-* } } */
-+/* { dg-do run { xfail mips64*-*-* } } */
- #include "ffitest.h"
- 
- static void
---- libffi/testsuite/libffi.call/cls_align_double.c.jj	2007-09-06 14:05:09.000000000 +0200
-+++ libffi/testsuite/libffi.call/cls_align_double.c	2007-09-06 14:07:34.000000000 +0200
-@@ -4,7 +4,9 @@
-    PR:		none.
-    Originator:	<hos@tamanegi.org> 20031203	 */
- 
--/* { dg-do run { xfail mips64*-*-* arm*-*-* strongarm*-*-* xscale*-*-* } } */
-+
-+
-+/* { dg-do run { xfail mips64*-*-* } } */
- #include "ffitest.h"
- 
- typedef struct cls_struct_align {
---- libffi/testsuite/libffi.call/cls_2byte.c.jj	2007-09-06 14:05:09.000000000 +0200
-+++ libffi/testsuite/libffi.call/cls_2byte.c	2007-09-06 14:07:34.000000000 +0200
-@@ -6,7 +6,7 @@
-    PR:		none.
-    Originator:	<andreast@gcc.gnu.org> 20030828	 */
- 
--/* { dg-do run { xfail mips64*-*-* arm*-*-* strongarm*-*-* xscale*-*-* } } */
-+/* { dg-do run { xfail mips64*-*-* } } */
- #include "ffitest.h"
- 
- typedef struct cls_struct_2byte {
---- libffi/testsuite/libffi.call/nested_struct.c.jj	2007-09-06 14:05:09.000000000 +0200
-+++ libffi/testsuite/libffi.call/nested_struct.c	2007-09-06 14:07:34.000000000 +0200
-@@ -5,7 +5,7 @@
-    PR:		none.
-    Originator:	<andreast@gcc.gnu.org> 20030828	 */
- 
--/* { dg-do run { xfail mips64*-*-* arm*-*-* strongarm*-*-* xscale*-*-* } } */
-+/* { dg-do run { xfail mips64*-*-* } } */
- #include "ffitest.h"
- 
- typedef struct cls_struct_16byte1 {
---- libffi/testsuite/libffi.call/cls_4byte.c.jj	2007-09-06 14:05:09.000000000 +0200
-+++ libffi/testsuite/libffi.call/cls_4byte.c	2007-09-06 14:07:35.000000000 +0200
-@@ -5,7 +5,7 @@
-    PR:		none.
-    Originator:	<andreast@gcc.gnu.org> 20030828	 */
- 
--/* { dg-do run { xfail mips64*-*-* arm*-*-* strongarm*-*-* xscale*-*-* } } */
-+/* { dg-do run { xfail mips64*-*-* } } */
- 
- #include "ffitest.h"
- 
---- libffi/testsuite/libffi.call/cls_6byte.c.jj	2007-09-06 14:05:09.000000000 +0200
-+++ libffi/testsuite/libffi.call/cls_6byte.c	2007-09-06 14:07:35.000000000 +0200
-@@ -5,7 +5,8 @@
-    PR:		none.
-    Originator:	<andreast@gcc.gnu.org> 20030828	 */
- 
--/* { dg-do run { xfail mips64*-*-* arm*-*-* strongarm*-*-* xscale*-*-* } } */
-+
-+/* { dg-do run { xfail mips64*-*-* } } */
- #include "ffitest.h"
- 
- typedef struct cls_struct_6byte {
---- libffi/testsuite/libffi.call/cls_8byte.c.jj	2007-09-06 14:05:09.000000000 +0200
-+++ libffi/testsuite/libffi.call/cls_8byte.c	2007-09-06 14:07:35.000000000 +0200
-@@ -5,7 +5,7 @@
-    PR:		none.
-    Originator:	<andreast@gcc.gnu.org> 20030828	 */
- 
--/* { dg-do run { xfail mips64*-*-* arm*-*-* strongarm*-*-* xscale*-*-* } } */
-+/* { dg-do run { xfail mips64*-*-* } } */
- #include "ffitest.h"
- 
- typedef struct cls_struct_8byte {
---- libffi/testsuite/libffi.call/cls_multi_sshort.c.jj	2007-09-06 14:05:09.000000000 +0200
-+++ libffi/testsuite/libffi.call/cls_multi_sshort.c	2007-09-06 14:07:35.000000000 +0200
-@@ -4,7 +4,7 @@
-    PR:		PR13221.
-    Originator:	<andreast@gcc.gnu.org> 20031129  */
- 
--/* { dg-do run { xfail mips64*-*-* arm*-*-* strongarm*-*-* xscale*-*-* } } */
-+/* { dg-do run { xfail mips64*-*-* } } */
- #include "ffitest.h"
- 
- signed short test_func_fn(signed short a1, signed short a2)
---- libffi/testsuite/libffi.call/cls_align_uint32.c.jj	2007-09-06 14:05:09.000000000 +0200
-+++ libffi/testsuite/libffi.call/cls_align_uint32.c	2007-09-06 14:07:35.000000000 +0200
-@@ -4,7 +4,7 @@
-    PR:		none.
-    Originator:	<hos@tamanegi.org> 20031203	 */
- 
--/* { dg-do run { xfail mips64*-*-* arm*-*-* strongarm*-*-* xscale*-*-* } } */
-+/* { dg-do run { xfail mips64*-*-* } } */
- #include "ffitest.h"
- 
- typedef struct cls_struct_align {
---- libffi/testsuite/libffi.call/cls_align_sint16.c.jj	2007-09-06 14:05:09.000000000 +0200
-+++ libffi/testsuite/libffi.call/cls_align_sint16.c	2007-09-06 14:07:35.000000000 +0200
-@@ -4,7 +4,7 @@
-    PR:		none.
-    Originator:	<hos@tamanegi.org> 20031203	 */
- 
--/* { dg-do run { xfail mips64*-*-* arm*-*-* strongarm*-*-* xscale*-*-* } } */
-+/* { dg-do run { xfail mips64*-*-* } } */
- #include "ffitest.h"
- 
- typedef struct cls_struct_align {
---- libffi/testsuite/libffi.call/cls_float.c.jj	2007-09-06 14:05:09.000000000 +0200
-+++ libffi/testsuite/libffi.call/cls_float.c	2007-09-06 14:07:35.000000000 +0200
-@@ -4,7 +4,7 @@
-    PR:		none.
-    Originator:	<andreast@gcc.gnu.org> 20030828	 */
- 
--/* { dg-do run { xfail mips64*-*-* arm*-*-* strongarm*-*-* xscale*-*-* } } */
-+/* { dg-do run { xfail mips64*-*-* } } */
- #include "ffitest.h"
- 
- static void cls_ret_float_fn(ffi_cif* cif __UNUSED__, void* resp, void** args,
---- libffi/testsuite/libffi.call/cls_20byte.c.jj	2007-09-06 14:05:09.000000000 +0200
-+++ libffi/testsuite/libffi.call/cls_20byte.c	2007-09-06 14:07:35.000000000 +0200
-@@ -5,7 +5,7 @@
-    PR:		none.
-    Originator:	<andreast@gcc.gnu.org> 20030828	 */
- 
--/* { dg-do run { xfail mips64*-*-* arm*-*-* strongarm*-*-* xscale*-*-* } } */
-+/* { dg-do run { xfail mips64*-*-* } } */
- #include "ffitest.h"
- 
- typedef struct cls_struct_20byte {
---- libffi/testsuite/libffi.call/cls_5_1_byte.c.jj	2007-09-06 14:05:09.000000000 +0200
-+++ libffi/testsuite/libffi.call/cls_5_1_byte.c	2007-09-06 14:07:35.000000000 +0200
-@@ -5,7 +5,7 @@
-    PR:		none.
-    Originator:	<andreast@gcc.gnu.org> 20050708	 */
- 
--/* { dg-do run { xfail mips64*-*-* arm*-*-* strongarm*-*-* xscale*-*-* } } */
-+/* { dg-do run { xfail mips64*-*-* } } */
- #include "ffitest.h"
- 
- typedef struct cls_struct_5byte {
---- libffi/testsuite/libffi.call/nested_struct2.c.jj	2007-09-06 14:05:09.000000000 +0200
-+++ libffi/testsuite/libffi.call/nested_struct2.c	2007-09-06 14:07:35.000000000 +0200
-@@ -6,7 +6,7 @@
-    PR:		none.
-    Originator:	<andreast@gcc.gnu.org> 20030911	 */
- 
--/* { dg-do run { xfail mips64*-*-* arm*-*-* strongarm*-*-* xscale*-*-* } } */
-+/* { dg-do run { xfail mips64*-*-* } } */
- #include "ffitest.h"
- 
- typedef struct A {
---- libffi/testsuite/libffi.call/cls_24byte.c.jj	2007-09-06 14:05:09.000000000 +0200
-+++ libffi/testsuite/libffi.call/cls_24byte.c	2007-09-06 14:07:35.000000000 +0200
-@@ -5,7 +5,7 @@
-    PR:		none.
-    Originator:	<andreast@gcc.gnu.org> 20030828	 */
- 
--/* { dg-do run { xfail mips64*-*-* arm*-*-* strongarm*-*-* xscale*-*-* } } */
-+/* { dg-do run { xfail mips64*-*-* } } */
- #include "ffitest.h"
- 
- typedef struct cls_struct_24byte {
---- libffi/testsuite/libffi.call/cls_64byte.c.jj	2007-09-06 14:05:09.000000000 +0200
-+++ libffi/testsuite/libffi.call/cls_64byte.c	2007-09-06 14:07:37.000000000 +0200
-@@ -6,7 +6,7 @@
-    PR:		none.
-    Originator:	<andreast@gcc.gnu.org> 20030828	 */
- 
--/* { dg-do run { xfail mips64*-*-* arm*-*-* strongarm*-*-* xscale*-*-* } } */
-+/* { dg-do run { xfail mips64*-*-* } } */
- #include "ffitest.h"
- 
- typedef struct cls_struct_64byte {
---- libffi/testsuite/libffi.call/cls_uint.c.jj	2007-09-06 14:05:09.000000000 +0200
-+++ libffi/testsuite/libffi.call/cls_uint.c	2007-09-06 14:07:37.000000000 +0200
-@@ -4,7 +4,7 @@
-    PR:		none.
-    Originator:	<andreast@gcc.gnu.org> 20030828	 */
- 
--/* { dg-do run { xfail mips64*-*-* arm*-*-* strongarm*-*-* xscale*-*-* } } */
-+/* { dg-do run { xfail mips64*-*-* } } */
- #include "ffitest.h"
- 
- static void cls_ret_uint_fn(ffi_cif* cif __UNUSED__, void* resp, void** args,
---- libffi/testsuite/libffi.call/cls_multi_ushortchar.c.jj	2007-09-06 14:05:09.000000000 +0200
-+++ libffi/testsuite/libffi.call/cls_multi_ushortchar.c	2007-09-06 14:07:37.000000000 +0200
-@@ -4,7 +4,7 @@
-    PR:		PR13221.
-    Originator:	<andreast@gcc.gnu.org> 20031129  */
- 
--/* { dg-do run { xfail mips64*-*-* arm*-*-* strongarm*-*-* xscale*-*-* } } */
-+/* { dg-do run { xfail mips64*-*-* } } */
- #include "ffitest.h"
- 
- unsigned short test_func_fn(unsigned char a1, unsigned short a2,
---- libffi/testsuite/libffi.call/cls_schar.c.jj	2007-09-06 14:05:09.000000000 +0200
-+++ libffi/testsuite/libffi.call/cls_schar.c	2007-09-06 14:07:37.000000000 +0200
-@@ -4,7 +4,9 @@
-    PR:		none.
-    Originator:	<andreast@gcc.gnu.org> 20031108	 */
- 
--/* { dg-do run { xfail mips64*-*-* arm*-*-* strongarm*-*-* xscale*-*-* } } */
-+
-+
-+/* { dg-do run { xfail mips64*-*-* } } */
- #include "ffitest.h"
- 
- static void cls_ret_schar_fn(ffi_cif* cif __UNUSED__, void* resp, void** args,
---- libffi/testsuite/libffi.call/cls_uchar.c.jj	2007-09-06 14:05:09.000000000 +0200
-+++ libffi/testsuite/libffi.call/cls_uchar.c	2007-09-06 14:07:37.000000000 +0200
-@@ -4,7 +4,7 @@
-    PR:		none.
-    Originator:	<andreast@gcc.gnu.org> 20030828	 */
- 
--/* { dg-do run { xfail mips64*-*-* arm*-*-* strongarm*-*-* xscale*-*-* } } */
-+/* { dg-do run { xfail mips64*-*-* } } */
- #include "ffitest.h"
- 
- static void cls_ret_uchar_fn(ffi_cif* cif __UNUSED__, void* resp, void** args,
---- libffi/testsuite/libffi.call/cls_align_uint64.c.jj	2007-09-06 14:05:09.000000000 +0200
-+++ libffi/testsuite/libffi.call/cls_align_uint64.c	2007-09-06 14:07:37.000000000 +0200
-@@ -4,7 +4,8 @@
-    PR:		none.
-    Originator:	<hos@tamanegi.org> 20031203	 */
- 
--/* { dg-do run { xfail mips64*-*-* arm*-*-* strongarm*-*-* xscale*-*-* } } */
-+
-+/* { dg-do run { xfail mips64*-*-* } } */
- #include "ffitest.h"
- 
- typedef struct cls_struct_align {
---- libffi/testsuite/libffi.call/cls_ulonglong.c.jj	2007-09-06 14:05:09.000000000 +0200
-+++ libffi/testsuite/libffi.call/cls_ulonglong.c	2007-09-06 14:07:37.000000000 +0200
-@@ -4,7 +4,7 @@
-    PR:		none.
-    Originator:	<andreast@gcc.gnu.org> 20030828	 */
- 
--/* { dg-do run { xfail mips64*-*-* arm*-*-* strongarm*-*-* xscale*-*-* } } */
-+/* { dg-do run { xfail mips64*-*-* } } */
- #include "ffitest.h"
- 
- static void cls_ret_ulonglong_fn(ffi_cif* cif __UNUSED__, void* resp,
---- libffi/testsuite/libffi.call/cls_align_longdouble.c.jj	2007-09-06 14:05:09.000000000 +0200
-+++ libffi/testsuite/libffi.call/cls_align_longdouble.c	2007-09-06 14:07:37.000000000 +0200
-@@ -4,7 +4,7 @@
-    PR:		none.
-    Originator:	<hos@tamanegi.org> 20031203	 */
- 
--/* { dg-do run { xfail mips64*-*-* arm*-*-* strongarm*-*-* xscale*-*-* } } */
-+/* { dg-do run { xfail mips64*-*-* } } */
- 
- #include "ffitest.h"
- 
---- libffi/testsuite/libffi.call/cls_1_1byte.c.jj	2007-09-06 14:05:09.000000000 +0200
-+++ libffi/testsuite/libffi.call/cls_1_1byte.c	2007-09-06 14:07:37.000000000 +0200
-@@ -6,7 +6,9 @@
-    PR:		none.
-    Originator:	<andreast@gcc.gnu.org> 20030902	 */
- 
--/* { dg-do run { xfail mips64*-*-* arm*-*-* strongarm*-*-* xscale*-*-* } } */
-+
-+
-+/* { dg-do run { xfail mips64*-*-* } } */
- #include "ffitest.h"
- 
- typedef struct cls_struct_1_1byte {
---- libffi/testsuite/libffi.call/cls_12byte.c.jj	2007-09-06 14:05:09.000000000 +0200
-+++ libffi/testsuite/libffi.call/cls_12byte.c	2007-09-06 14:07:37.000000000 +0200
-@@ -4,7 +4,7 @@
-    PR:		none.
-    Originator:	<andreast@gcc.gnu.org> 20030828	 */
- 
--/* { dg-do run { xfail mips64*-*-* arm*-*-* strongarm*-*-* xscale*-*-* } } */
-+/* { dg-do run { xfail mips64*-*-* } } */
- #include "ffitest.h"
- 
- typedef struct cls_struct_12byte {
---- libffi/testsuite/libffi.call/cls_3_1byte.c.jj	2007-09-06 14:05:09.000000000 +0200
-+++ libffi/testsuite/libffi.call/cls_3_1byte.c	2007-09-06 14:07:37.000000000 +0200
-@@ -6,7 +6,7 @@
-    PR:		none.
-    Originator:	<andreast@gcc.gnu.org> 20030902	 */
- 
--/* { dg-do run { xfail mips64*-*-* arm*-*-* strongarm*-*-* xscale*-*-* } } */
-+/* { dg-do run { xfail mips64*-*-* } } */
- #include "ffitest.h"
- 
- typedef struct cls_struct_3_1byte {
---- libffi/testsuite/libffi.call/cls_3byte1.c.jj	2007-09-06 14:05:09.000000000 +0200
-+++ libffi/testsuite/libffi.call/cls_3byte1.c	2007-09-06 14:07:37.000000000 +0200
-@@ -6,7 +6,7 @@
-    PR:		none.
-    Originator:	<andreast@gcc.gnu.org> 20030828	 */
- 
--/* { dg-do run { xfail mips64*-*-* arm*-*-* strongarm*-*-* xscale*-*-* } } */
-+/* { dg-do run { xfail mips64*-*-* } } */
- #include "ffitest.h"
- 
- typedef struct cls_struct_3byte {
---- libffi/testsuite/libffi.call/cls_4_1byte.c.jj	2007-09-06 14:05:09.000000000 +0200
-+++ libffi/testsuite/libffi.call/cls_4_1byte.c	2007-09-06 14:07:37.000000000 +0200
-@@ -6,7 +6,7 @@
-    PR:		none.
-    Originator:	<andreast@gcc.gnu.org> 20030902	 */
- 
--/* { dg-do run { xfail mips64*-*-* arm*-*-* strongarm*-*-* xscale*-*-* } } */
-+/* { dg-do run { xfail mips64*-*-* } } */
- #include "ffitest.h"
- 
- typedef struct cls_struct_4_1byte {
---- libffi/testsuite/libffi.call/cls_6_1_byte.c.jj	2007-09-06 14:05:09.000000000 +0200
-+++ libffi/testsuite/libffi.call/cls_6_1_byte.c	2007-09-06 14:07:37.000000000 +0200
-@@ -5,7 +5,7 @@
-    PR:		none.
-    Originator:	<andreast@gcc.gnu.org> 20050708	 */
- 
--/* { dg-do run { xfail mips64*-*-* arm*-*-* strongarm*-*-* xscale*-*-* } } */
-+/* { dg-do run { xfail mips64*-*-* } } */
- #include "ffitest.h"
- 
- typedef struct cls_struct_6byte {
---- libffi/testsuite/libffi.call/cls_16byte.c.jj	2007-09-06 14:05:09.000000000 +0200
-+++ libffi/testsuite/libffi.call/cls_16byte.c	2007-09-06 14:07:37.000000000 +0200
-@@ -5,7 +5,7 @@
-    PR:		none.
-    Originator:	<andreast@gcc.gnu.org> 20030828	 */
- 
--/* { dg-do run { xfail mips64*-*-* arm*-*-* strongarm*-*-* xscale*-*-* } } */
-+/* { dg-do run { xfail mips64*-*-* } } */
- #include "ffitest.h"
- 
- typedef struct cls_struct_16byte {
---- libffi/testsuite/libffi.call/cls_18byte.c.jj	2007-09-06 14:05:09.000000000 +0200
-+++ libffi/testsuite/libffi.call/cls_18byte.c	2007-09-06 14:07:37.000000000 +0200
-@@ -5,7 +5,7 @@
-    PR:		none.
-    Originator:	<andreast@gcc.gnu.org> 20030915	 */
- 
--/* { dg-do run { xfail mips64*-*-* arm*-*-* strongarm*-*-* xscale*-*-* } } */
-+/* { dg-do run { xfail mips64*-*-* } } */
- #include "ffitest.h"
- 
- typedef struct cls_struct_18byte {
---- libffi/testsuite/libffi.call/closure_fn0.c.jj	2007-09-06 14:05:09.000000000 +0200
-+++ libffi/testsuite/libffi.call/closure_fn0.c	2007-09-06 14:07:37.000000000 +0200
-@@ -6,7 +6,10 @@
-    PR:		none.
-    Originator:	<andreast@gcc.gnu.org> 20030828	 */
- 
--/* { dg-do run { xfail mips64*-*-* arm*-*-* strongarm*-*-* xscale*-*-* } } */
-+
-+
-+
-+/* { dg-do run { xfail mips64*-*-* } } */
- #include "ffitest.h"
- 
- static void
---- libffi/testsuite/libffi.call/cls_9byte2.c.jj	2007-09-06 14:05:09.000000000 +0200
-+++ libffi/testsuite/libffi.call/cls_9byte2.c	2007-09-06 14:07:37.000000000 +0200
-@@ -7,7 +7,7 @@
-    PR:		none.
-    Originator:	<andreast@gcc.gnu.org> 20030914	 */
- 
--/* { dg-do run { xfail mips64*-*-* arm*-*-* strongarm*-*-* xscale*-*-* } } */
-+/* { dg-do run { xfail mips64*-*-* } } */
- #include "ffitest.h"
- 
- typedef struct cls_struct_9byte {
---- libffi/testsuite/libffi.call/closure_fn2.c.jj	2007-09-06 14:05:09.000000000 +0200
-+++ libffi/testsuite/libffi.call/closure_fn2.c	2007-09-06 14:07:37.000000000 +0200
-@@ -6,7 +6,7 @@
-    PR:		none.
-    Originator:	<andreast@gcc.gnu.org> 20030828	 */
- 
--/* { dg-do run { xfail mips64*-*-* arm*-*-* strongarm*-*-* xscale*-*-* } } */
-+/* { dg-do run { xfail mips64*-*-* } } */
- #include "ffitest.h"
- 
- static void closure_test_fn2(ffi_cif* cif __UNUSED__, void* resp, void** args,
---- libffi/testsuite/libffi.call/closure_fn4.c.jj	2007-09-06 14:05:09.000000000 +0200
-+++ libffi/testsuite/libffi.call/closure_fn4.c	2007-09-06 14:07:37.000000000 +0200
-@@ -6,7 +6,7 @@
-    PR:		none.
-    Originator:	<andreast@gcc.gnu.org> 20031026	 */
- 
--/* { dg-do run { xfail mips64*-*-* arm*-*-* strongarm*-*-* xscale*-*-* } } */
-+/* { dg-do run { xfail mips64*-*-* } } */
- 
- #include "ffitest.h"
- 
---- libffi/testsuite/libffi.call/cls_ushort.c.jj	2007-09-06 14:05:09.000000000 +0200
-+++ libffi/testsuite/libffi.call/cls_ushort.c	2007-09-06 14:07:37.000000000 +0200
-@@ -4,7 +4,7 @@
-    PR:		none.
-    Originator:	<andreast@gcc.gnu.org> 20030828	 */
- 
--/* { dg-do run { xfail mips64*-*-* arm*-*-* strongarm*-*-* xscale*-*-* } } */
-+/* { dg-do run { xfail mips64*-*-* } } */
- #include "ffitest.h"
- 
- static void cls_ret_ushort_fn(ffi_cif* cif __UNUSED__, void* resp, void** args,
---- libffi/testsuite/libffi.call/cls_5byte.c.jj	2007-09-06 14:05:09.000000000 +0200
-+++ libffi/testsuite/libffi.call/cls_5byte.c	2007-09-06 14:07:38.000000000 +0200
-@@ -5,7 +5,7 @@
-    PR:		none.
-    Originator:	<andreast@gcc.gnu.org> 20030828	 */
- 
--/* { dg-do run { xfail mips64*-*-* arm*-*-* strongarm*-*-* xscale*-*-* } } */
-+/* { dg-do run { xfail mips64*-*-* } } */
- #include "ffitest.h"
- 
- typedef struct cls_struct_5byte {
---- libffi/testsuite/libffi.call/cls_align_pointer.c.jj	2007-09-06 14:05:09.000000000 +0200
-+++ libffi/testsuite/libffi.call/cls_align_pointer.c	2007-09-06 14:07:38.000000000 +0200
-@@ -4,7 +4,7 @@
-    PR:		none.
-    Originator:	<hos@tamanegi.org> 20031203	 */
- 
--/* { dg-do run { xfail mips64*-*-* arm*-*-* strongarm*-*-* xscale*-*-* } } */
-+/* { dg-do run { xfail mips64*-*-* } } */
- #include "ffitest.h"
- 
- typedef struct cls_struct_align {
---- libffi/testsuite/libffi.call/cls_7byte.c.jj	2007-09-06 14:05:09.000000000 +0200
-+++ libffi/testsuite/libffi.call/cls_7byte.c	2007-09-06 14:07:38.000000000 +0200
-@@ -5,7 +5,7 @@
-    PR:		none.
-    Originator:	<andreast@gcc.gnu.org> 20030828	 */
- 
--/* { dg-do run { xfail mips64*-*-* arm*-*-* strongarm*-*-* xscale*-*-* } } */
-+/* { dg-do run { xfail mips64*-*-* } } */
- #include "ffitest.h"
- 
- typedef struct cls_struct_7byte {
---- libffi/testsuite/libffi.call/cls_align_sint32.c.jj	2007-09-06 14:05:09.000000000 +0200
-+++ libffi/testsuite/libffi.call/cls_align_sint32.c	2007-09-06 14:07:38.000000000 +0200
-@@ -4,7 +4,7 @@
-    PR:		none.
-    Originator:	<hos@tamanegi.org> 20031203	 */
- 
--/* { dg-do run { xfail mips64*-*-* arm*-*-* strongarm*-*-* xscale*-*-* } } */
-+/* { dg-do run { xfail mips64*-*-* } } */
- #include "ffitest.h"
- 
- typedef struct cls_struct_align {
---- libffi/testsuite/libffi.special/unwindtest.cc.jj	2007-09-06 14:05:09.000000000 +0200
-+++ libffi/testsuite/libffi.special/unwindtest.cc	2007-09-06 14:07:39.000000000 +0200
-@@ -4,7 +4,7 @@
-    PR:		none.
-    Originator:	Jeff Sturm <jsturm@one-point.com>  */
- 
--/* { dg-do run { xfail mips64*-*-* arm*-*-* strongarm*-*-* xscale*-*-* } } */
-+/* { dg-do run { xfail mips64*-*-* } } */
- #include "ffitestcxx.h"
- 
- void

diff --git a/gcc41-java-arm2.patch b/gcc41-java-arm2.patch
deleted file mode 100644
index 16ffccc..0000000
--- a/gcc41-java-arm2.patch
+++ /dev/null
@@ -1,114 +0,0 @@
-2007-07-13  Andrew Haley  <aph@redhat.com>
-
-	* libgcj.ver: Add __gcj_personality_sj0.
-
-2007-07-11  Andrew Haley  <aph@redhat.com>
-
-	* configure.host (arm*-linux-gnu): New.
-	* sysdep/arm/locks.h: New.
-
---- libjava/configure.host	(revision 126621)
-+++ libjava/configure.host	(revision 126623)
-@@ -82,6 +82,10 @@ case "${host}" in
- 	enable_getenv_properties_default=no
- 	enable_main_args_default=no
- 	;;
-+  arm*-linux-gnu)
-+	libgcj_interpreter=yes
-+	sysdeps_dir=arm
-+	;;
-   mips-tx39-*|mipstx39-unknown-*)
- 	libgcj_flags="${libgcj_flags} -G 0"
- 	LDFLAGS="$LDFLAGS -Tjmr3904dram.ld"
---- libjava/libgcj.ver	(revision 126621)
-+++ libjava/libgcj.ver	(revision 126623)
-@@ -2,6 +2,6 @@
- # symbols in libgcj.so.
- 
- {
--  global: Jv*; _Jv_*; __gcj_personality_v0; _Z*;
-+  global: Jv*; _Jv_*; __gcj_personality_v0; __gcj_personality_sj0; _Z*;
-   local: *;
- };
---- libjava/sysdep/arm/locks.h	(revision 0)
-+++ libjava/sysdep/arm/locks.h	(revision 126623)
-@@ -0,0 +1,79 @@
-+// locks.h - Thread synchronization primitives. ARM implementation.
-+
-+/* Copyright (C) 2007  Free Software Foundation
-+
-+   This file is part of libgcj.
-+
-+This software is copyrighted work licensed under the terms of the
-+Libgcj License.  Please consult the file "LIBGCJ_LICENSE" for
-+details.  */
-+
-+#ifndef __SYSDEP_LOCKS_H__
-+#define __SYSDEP_LOCKS_H__
-+
-+typedef size_t obj_addr_t;	/* Integer type big enough for object	*/
-+				/* address.				*/
-+
-+/* Atomic compare and exchange.  These sequences are not actually
-+   atomic; there is a race if *ADDR != OLD_VAL and we are preempted
-+   between the two swaps.  However, they are very close to atomic, and
-+   are the best that a pre-ARMv6 implementation can do without
-+   operating system support.  LinuxThreads has been using these
-+   sequences for many years.  */
-+
-+inline static bool
-+compare_and_swap(volatile obj_addr_t *addr,
-+		 obj_addr_t old_val,
-+		 obj_addr_t new_val)
-+{
-+  volatile obj_addr_t result, tmp;
-+  __asm__ ("\n"
-+	   "0:	ldr	%[tmp],[%[addr]]\n"
-+	   "	cmp	%[tmp],%[old_val]\n"
-+	   "	movne	%[result],#0\n"
-+	   "	bne	1f\n"
-+	   "	swp	%[result],%[new_val],[%[addr]]\n"
-+	   "	cmp	%[tmp],%[result]\n"
-+	   "	swpne	%[tmp],%[result],[%[addr]]\n"
-+	   "	bne	0b\n"
-+	   "	mov	%[result],#1\n"
-+	   "1:"
-+	   : [result] "=&r" (result), [tmp] "=&r" (tmp)
-+	   : [addr] "r" (addr), [new_val] "r" (new_val), [old_val] "r" (old_val)
-+	   : "cc", "memory");
-+
-+  return result;
-+}
-+
-+inline static void
-+release_set(volatile obj_addr_t *addr, obj_addr_t new_val)
-+{
-+  __asm__ __volatile__("" : : : "memory");
-+  *(addr) = new_val;
-+}
-+
-+inline static bool
-+compare_and_swap_release(volatile obj_addr_t *addr,
-+		  				     obj_addr_t old,
-+						     obj_addr_t new_val)
-+{
-+  return compare_and_swap(addr, old, new_val);
-+}
-+
-+// Ensure that subsequent instructions do not execute on stale
-+// data that was loaded from memory before the barrier.
-+inline static void
-+read_barrier()
-+{
-+  __asm__ __volatile__("" : : : "memory");
-+}
-+
-+// Ensure that prior stores to memory are completed with respect to other
-+// processors.
-+inline static void
-+write_barrier()
-+{
-+  __asm__ __volatile__("" : : : "memory");
-+}
-+
-+#endif

diff --git a/gcc41-java-arm3.patch b/gcc41-java-arm3.patch
deleted file mode 100644
index ac12ca1..0000000
--- a/gcc41-java-arm3.patch
+++ /dev/null
@@ -1,33 +0,0 @@
-2007-07-15  Andrew Haley  <aph@redhat.com>
-
-	* unwind-sjlj.c (_Unwind_GetIPInfo): Check for context->fc != NULL
-	before looking in the context.
-
-	* configure.host: 
-	arm*-linux-gnu -> arm*-linux*.
-
---- gcc/unwind-sjlj.c	(revision 126657)
-+++ gcc/unwind-sjlj.c	(revision 126659)
-@@ -222,7 +222,10 @@ _Unwind_Ptr
- _Unwind_GetIPInfo (struct _Unwind_Context *context, int *ip_before_insn)
- {
-   *ip_before_insn = 0;
--  return context->fc->call_site + 1;
-+  if (context->fc != NULL)
-+    return context->fc->call_site + 1;
-+  else
-+    return 0;
- }
- 
- /* Set the return landing pad index in CONTEXT.  */
---- libjava/configure.host	(revision 126657)
-+++ libjava/configure.host	(revision 126659)
-@@ -82,7 +82,7 @@ case "${host}" in
- 	enable_getenv_properties_default=no
- 	enable_main_args_default=no
- 	;;
--  arm*-linux-gnu)
-+  arm*-linux*)
- 	libgcj_interpreter=yes
- 	sysdeps_dir=arm
- 	;;

diff --git a/gcc41-java-arm4.patch b/gcc41-java-arm4.patch
deleted file mode 100644
index e6e2947..0000000
--- a/gcc41-java-arm4.patch
+++ /dev/null
@@ -1,138 +0,0 @@
-2007-09-04  Andrew Haley  <aph@redhat.com>
-
-	* decl.c (java_init_decl_processing): Call "__cxa_end_cleanup"
-	when using the ARM EABI.
-
-2007-08-29  Andrew Haley  <aph@redhat.com>
-
-        * config/arm/libgcc-bpabi.ver: Add _Unwind_Backtrace as GCC_4.3.0.
-
-2007-08-08  Andrew Haley  <aph@redhat.com>
-
-	* config/arm/libunwind.S (UNWIND_WRAPPER _Unwind_Backtrace): New.
-	* config/arm/unwind-arm.h (__gnu_Unwind_Backtrace): New.
-	* config/arm/unwind-arm.c (__gnu_Unwind_Backtrace): New.
-
---- gcc/java/decl.c	(revision 128085)
-+++ gcc/java/decl.c	(revision 128088)
-@@ -1075,7 +1075,10 @@ java_init_decl_processing (void)
-   eh_personality_libfunc = init_one_libfunc (USING_SJLJ_EXCEPTIONS
-                                              ? "__gcj_personality_sj0"
-                                              : "__gcj_personality_v0");
--  default_init_unwind_resume_libfunc ();
-+  if (targetm.arm_eabi_unwinder)
-+    unwind_resume_libfunc = init_one_libfunc ("__cxa_end_cleanup");
-+  else
-+    default_init_unwind_resume_libfunc ();
- 
-   lang_eh_runtime_type = do_nothing;
- 
---- gcc/config/arm/libunwind.S	(revision 128085)
-+++ gcc/config/arm/libunwind.S	(revision 128088)
-@@ -237,5 +237,6 @@ UNWIND_WRAPPER _Unwind_RaiseException 1
- UNWIND_WRAPPER _Unwind_Resume 1
- UNWIND_WRAPPER _Unwind_Resume_or_Rethrow 1
- UNWIND_WRAPPER _Unwind_ForcedUnwind 3
-+UNWIND_WRAPPER _Unwind_Backtrace 2
- 
--#endif  /* __symbian__ */
-+#endif  /* ndef __symbian__ */
---- gcc/config/arm/libgcc-bpabi.ver	(revision 128085)
-+++ gcc/config/arm/libgcc-bpabi.ver	(revision 128088)
-@@ -81,3 +81,11 @@ GCC_3.5 {
-   # GNU-specific entry point.
-   __gnu_unwind_frame
- }
-+
-+%exclude {
-+  _Unwind_Backtrace
-+}
-+%inherit GCC_4.3.0 GCC_4.2.0
-+GCC_4.3.0 {
-+  _Unwind_Backtrace
-+}
---- gcc/config/arm/unwind-arm.c	(revision 128085)
-+++ gcc/config/arm/unwind-arm.c	(revision 128088)
-@@ -950,6 +950,66 @@ _Unwind_DeleteException (_Unwind_Excepti
- }
- 
- 
-+/* Perform stack backtrace through unwind data.  */
-+_Unwind_Reason_Code
-+__gnu_Unwind_Backtrace(_Unwind_Trace_Fn trace, void * trace_argument,
-+		       phase2_vrs * entry_vrs);
-+_Unwind_Reason_Code
-+__gnu_Unwind_Backtrace(_Unwind_Trace_Fn trace, void * trace_argument,
-+		       phase2_vrs * entry_vrs)
-+{
-+  phase1_vrs saved_vrs;
-+  _Unwind_Reason_Code code;
-+
-+  _Unwind_Control_Block ucb;
-+  _Unwind_Control_Block *ucbp = &ucb;
-+
-+  /* Set the pc to the call site.  */
-+  entry_vrs->core.r[R_PC] = entry_vrs->core.r[R_LR];
-+
-+  /* Save the core registers.  */
-+  saved_vrs.core = entry_vrs->core;
-+  /* Set demand-save flags.  */
-+  saved_vrs.demand_save_flags = ~(_uw) 0;
-+  
-+  do
-+    {
-+      /* Find the entry for this routine.  */
-+      if (get_eit_entry (ucbp, saved_vrs.core.r[R_PC]) != _URC_OK)
-+	{
-+	  code = _URC_FAILURE;
-+	  break;
-+	}
-+
-+      /* The dwarf unwinder assumes the context structure holds things
-+	 like the function and LSDA pointers.  The ARM implementation
-+	 caches these in the exception header (UCB).  To avoid
-+	 rewriting everything we make the virtual IP register point at
-+	 the UCB.  */
-+      _Unwind_SetGR((_Unwind_Context *)&saved_vrs, 12, (_Unwind_Ptr) ucbp);
-+
-+      /* Call trace function.  */
-+      if ((*trace) ((_Unwind_Context *) &saved_vrs, trace_argument) 
-+	  != _URC_NO_REASON)
-+	{
-+	  code = _URC_FAILURE;
-+	  break;
-+	}
-+
-+      /* Call the pr to decide what to do.  */
-+      code = ((personality_routine) UCB_PR_ADDR (ucbp))
-+	(_US_VIRTUAL_UNWIND_FRAME | _US_FORCE_UNWIND, 
-+	 ucbp, (void *) &saved_vrs);
-+    }
-+  while (code != _URC_END_OF_STACK
-+	 && code != _URC_FAILURE);
-+
-+ finish:
-+  restore_non_core_regs (&saved_vrs);
-+  return code;
-+}
-+
-+
- /* Common implementation for ARM ABI defined personality routines.
-    ID is the index of the personality routine, other arguments are as defined
-    by __aeabi_unwind_cpp_pr{0,1,2}.  */
---- gcc/config/arm/unwind-arm.h	(revision 128085)
-+++ gcc/config/arm/unwind-arm.h	(revision 128088)
-@@ -205,6 +205,13 @@ extern "C" {
- 	_Unwind_Control_Block *, struct _Unwind_Context *, void *);
-   _Unwind_Reason_Code _Unwind_ForcedUnwind (_Unwind_Control_Block *,
- 					    _Unwind_Stop_Fn, void *);
-+  /* @@@ Use unwind data to perform a stack backtrace.  The trace callback
-+     is called for every stack frame in the call chain, but no cleanup
-+     actions are performed.  */
-+  typedef _Unwind_Reason_Code (*_Unwind_Trace_Fn) (_Unwind_Context *, void *);
-+  _Unwind_Reason_Code _Unwind_Backtrace(_Unwind_Trace_Fn,
-+					void*);
-+
-   _Unwind_Word _Unwind_GetCFA (struct _Unwind_Context *);
-   void _Unwind_Complete(_Unwind_Control_Block *ucbp);
-   void _Unwind_DeleteException (_Unwind_Exception *);

diff --git a/gcc41-java-arm5.patch b/gcc41-java-arm5.patch
deleted file mode 100644
index c5c5b73..0000000
--- a/gcc41-java-arm5.patch
+++ /dev/null
@@ -1,280 +0,0 @@
-2007-09-04  Andrew Haley  <aph@redhat.com>
-
-	* src/arm/sysv.S (UNWIND): New.
-	(Whole file): Conditionally compile unwinder directives.
-	* src/arm/sysv.S: Add unwinder directives.
-
-	* src/arm/ffi.c (ffi_prep_args): Align structs by at least 4 bytes.
-	Only treat r0 as a struct address if we're actually returning a
-	struct by address.
-	Only copy the bytes that are actually within a struct.
-	(ffi_prep_cif_machdep): A Composite Type not larger than 4 bytes
-	is returned in r0, not passed by address.
-	(ffi_call): Allocate a word-sized temporary for the case where
-	a composite is returned in r0.
-	(ffi_prep_incoming_args_SYSV): Align as necessary.
-
-2007-08-05  Steven Newbury  <s_j_newbury@yahoo.co.uk>
-
-	* src/arm/ffi.c (FFI_INIT_TRAMPOLINE): Use __clear_cache instead of 
-	directly using the sys_cacheflush syscall.
-
-2007-07-27  Andrew Haley  <aph@redhat.com>
-
-	* src/arm/sysv.S (ffi_closure_SYSV): Add soft-float.
-
---- libffi/src/arm/ffi.c	(revision 128092)
-+++ libffi/src/arm/ffi.c	(revision 128093)
-@@ -40,7 +40,7 @@ void ffi_prep_args(char *stack, extended
- 
-   argp = stack;
- 
--  if ( ecif->cif->rtype->type == FFI_TYPE_STRUCT ) {
-+  if ( ecif->cif->flags == FFI_TYPE_STRUCT ) {
-     *(void **) argp = ecif->rvalue;
-     argp += 4;
-   }
-@@ -58,6 +58,9 @@ void ffi_prep_args(char *stack, extended
- 	argp = (char *) ALIGN(argp, (*p_arg)->alignment);
-       }
- 
-+      if ((*p_arg)->type == FFI_TYPE_STRUCT)
-+	argp = (char *) ALIGN(argp, 4);
-+
- 	  z = (*p_arg)->size;
- 	  if (z < sizeof(int))
- 	    {
-@@ -81,7 +84,7 @@ void ffi_prep_args(char *stack, extended
- 		  break;
- 		  
- 		case FFI_TYPE_STRUCT:
--		  *(unsigned int *) argp = (unsigned int)*(UINT32 *)(* p_argv);
-+		  memcpy(argp, *p_argv, (*p_arg)->size);
- 		  break;
- 
- 		default:
-@@ -115,7 +118,6 @@ ffi_status ffi_prep_cif_machdep(ffi_cif 
-   switch (cif->rtype->type)
-     {
-     case FFI_TYPE_VOID:
--    case FFI_TYPE_STRUCT:
-     case FFI_TYPE_FLOAT:
-     case FFI_TYPE_DOUBLE:
-       cif->flags = (unsigned) cif->rtype->type;
-@@ -126,6 +128,17 @@ ffi_status ffi_prep_cif_machdep(ffi_cif 
-       cif->flags = (unsigned) FFI_TYPE_SINT64;
-       break;
- 
-+    case FFI_TYPE_STRUCT:
-+      if (cif->rtype->size <= 4)
-+	/* A Composite Type not larger than 4 bytes is returned in r0.  */
-+	cif->flags = (unsigned)FFI_TYPE_INT;
-+      else
-+	/* A Composite Type larger than 4 bytes, or whose size cannot
-+	   be determined statically ... is stored in memory at an
-+	   address passed [in r0].  */
-+	cif->flags = (unsigned)FFI_TYPE_STRUCT;
-+      break;
-+
-     default:
-       cif->flags = FFI_TYPE_INT;
-       break;
-@@ -141,21 +154,27 @@ void ffi_call(ffi_cif *cif, void (*fn)()
- {
-   extended_cif ecif;
- 
-+  int small_struct = (cif->flags == FFI_TYPE_INT 
-+		      && cif->rtype->type == FFI_TYPE_STRUCT);
-+
-   ecif.cif = cif;
-   ecif.avalue = avalue;
-+
-+  unsigned int temp;
-   
-   /* If the return value is a struct and we don't have a return	*/
-   /* value address then we need to make one		        */
- 
-   if ((rvalue == NULL) && 
--      (cif->rtype->type == FFI_TYPE_STRUCT))
-+      (cif->flags == FFI_TYPE_STRUCT))
-     {
-       ecif.rvalue = alloca(cif->rtype->size);
-     }
-+  else if (small_struct)
-+    ecif.rvalue = &temp;
-   else
-     ecif.rvalue = rvalue;
--    
--  
-+
-   switch (cif->abi) 
-     {
-     case FFI_SYSV:
-@@ -167,6 +186,8 @@ void ffi_call(ffi_cif *cif, void (*fn)()
-       FFI_ASSERT(0);
-       break;
-     }
-+  if (small_struct)
-+    memcpy (rvalue, &temp, cif->rtype->size);
- }
- 
- /** private members **/
-@@ -228,9 +249,12 @@ ffi_prep_incoming_args_SYSV(char *stack,
-     {
-       size_t z;
- 
-+      size_t alignment = (*p_arg)->alignment;
-+      if (alignment < 4)
-+	alignment = 4;
-       /* Align if necessary */
--      if ((sizeof(int) - 1) & (unsigned) argp) {
--	argp = (char *) ALIGN(argp, sizeof(int));
-+      if ((alignment - 1) & (unsigned) argp) {
-+	argp = (char *) ALIGN(argp, alignment);
-       }
- 
-       z = (*p_arg)->size;
-@@ -248,21 +272,16 @@ ffi_prep_incoming_args_SYSV(char *stack,
- 
- /* How to make a trampoline.  */
- 
--#define FFI_INIT_TRAMPOLINE(TRAMP,FUN,CTX) \
--({ unsigned char *__tramp = (unsigned char*)(TRAMP); \
--   unsigned int  __fun = (unsigned int)(FUN); \
--   unsigned int  __ctx = (unsigned int)(CTX); \
-+#define FFI_INIT_TRAMPOLINE(TRAMP,FUN,CTX)				\
-+({ unsigned char *__tramp = (unsigned char*)(TRAMP);			\
-+   unsigned int  __fun = (unsigned int)(FUN);				\
-+   unsigned int  __ctx = (unsigned int)(CTX);				\
-    *(unsigned int*) &__tramp[0] = 0xe92d000f; /* stmfd sp!, {r0-r3} */	\
--   *(unsigned int*) &__tramp[4] = 0xe59f0000; /* ldr r0, [pc] */ \
--   *(unsigned int*) &__tramp[8] = 0xe59ff000; /* ldr pc, [pc] */ \
--   *(unsigned int*) &__tramp[12] = __ctx; \
--   *(unsigned int*) &__tramp[16] = __fun; \
--   register unsigned long _beg __asm ("a1") = (unsigned long) (&__tramp[0]);	\
--   register unsigned long _end __asm ("a2") = (unsigned long) (&__tramp[19]);	\
--   register unsigned long _flg __asm ("a3") = 0;			\
--   __asm __volatile ("swi 0x9f0002		@ sys_cacheflush"	\
--	   		    : "=r" (_beg)				\
--	   		    : "0" (_beg), "r" (_end), "r" (_flg));	\
-+   *(unsigned int*) &__tramp[4] = 0xe59f0000; /* ldr r0, [pc] */	\
-+   *(unsigned int*) &__tramp[8] = 0xe59ff000; /* ldr pc, [pc] */	\
-+   *(unsigned int*) &__tramp[12] = __ctx;				\
-+   *(unsigned int*) &__tramp[16] = __fun;				\
-+   __clear_cache((&__tramp[0]), (&__tramp[19]));			\
-  })
- 
- 
---- libffi/src/arm/sysv.S	(revision 128092)
-+++ libffi/src/arm/sysv.S	(revision 128093)
-@@ -82,6 +82,14 @@
- # define call_reg(x)	mov	lr, pc ; mov	pc, x
- #endif
- 
-+/* Conditionally compile unwinder directives.  */
-+#ifdef __ARM_EABI__
-+#define UNWIND
-+#else
-+#define UNWIND @
-+#endif	
-+
-+	
- #if defined(__thumb__) && !defined(__THUMB_INTERWORK__)
- .macro	ARM_FUNC_START name
- 	.text
-@@ -92,6 +100,7 @@
- 	bx	pc
- 	nop
- 	.arm
-+	UNWIND .fnstart
- /* A hook to tell gdb that we've switched to ARM mode.  Also used to call
-    directly from other local arm routines.  */
- _L__\name:		
-@@ -102,6 +111,7 @@ _L__\name:		
- 	.align 0
- 	.arm
- 	ENTRY(\name)
-+	UNWIND .fnstart
- .endm
- #endif
- 
-@@ -134,8 +144,11 @@ _L__\name:		
- ARM_FUNC_START ffi_call_SYSV
- 	@ Save registers
-         stmfd	sp!, {r0-r3, fp, lr}
-+	UNWIND .save	{r0-r3, fp, lr}
- 	mov	fp, sp
- 
-+	UNWIND .setfp	fp, sp
-+
- 	@ Make room for all of the new args.
- 	sub	sp, fp, r2
- 
-@@ -205,6 +218,7 @@ LSYM(Lepilogue):
- 	RETLDM	"r0-r3,fp"
- 
- .ffi_call_SYSV_end:
-+	UNWIND .fnend
-         .size    CNAME(ffi_call_SYSV),.ffi_call_SYSV_end-CNAME(ffi_call_SYSV)
- 
- /*
-@@ -216,21 +230,40 @@ LSYM(Lepilogue):
- */
- 
- ARM_FUNC_START ffi_closure_SYSV
-+	UNWIND .pad #16
- 	add	ip, sp, #16
- 	stmfd	sp!, {ip, lr}
-+	UNWIND .save	{r0, lr}
- 	add	r2, sp, #8
-+	.pad #16
- 	sub	sp, sp, #16
- 	str	sp, [sp, #8]
- 	add	r1, sp, #8
- 	bl	ffi_closure_SYSV_inner
- 	cmp	r0, #FFI_TYPE_INT
- 	beq	.Lretint
-+
- 	cmp	r0, #FFI_TYPE_FLOAT
-+#ifdef __SOFTFP__
-+	beq	.Lretint
-+#else
- 	beq	.Lretfloat
-+#endif
-+
- 	cmp	r0, #FFI_TYPE_DOUBLE
-+#ifdef __SOFTFP__
-+	beq	.Lretlonglong
-+#else
- 	beq	.Lretdouble
-+#endif
-+
- 	cmp	r0, #FFI_TYPE_LONGDOUBLE
-+#ifdef __SOFTFP__
-+	beq	.Lretlonglong
-+#else
- 	beq	.Lretlongdouble
-+#endif
-+
- 	cmp	r0, #FFI_TYPE_SINT64
- 	beq	.Lretlonglong
- .Lclosure_epilogue:
-@@ -243,6 +276,8 @@ ARM_FUNC_START ffi_closure_SYSV
- 	ldr	r0, [sp]
- 	ldr	r1, [sp, #4]
- 	b	.Lclosure_epilogue
-+
-+#ifndef __SOFTFP__
- .Lretfloat:
- 	ldfs	f0, [sp]
- 	b	.Lclosure_epilogue
-@@ -252,6 +287,9 @@ ARM_FUNC_START ffi_closure_SYSV
- .Lretlongdouble:
- 	ldfd	f0, [sp]
- 	b	.Lclosure_epilogue
-+#endif
-+
- .ffi_closure_SYSV_end:
-+	UNWIND .fnend
-         .size    CNAME(ffi_closure_SYSV),.ffi_closure_SYSV_end-CNAME(ffi_closure_SYSV)
- 

diff --git a/gcc41-java-arm6.patch b/gcc41-java-arm6.patch
deleted file mode 100644
index 221b1ab..0000000
--- a/gcc41-java-arm6.patch
+++ /dev/null
@@ -1,932 +0,0 @@
-2007-09-04  Andrew Haley  <aph@redhat.com>
-
-	PR java/27908
-	* testsuite/libjava.lang/PR27908.java
-	({run1,run2,run3}.isRunning): New Method.
-	(main): Fix race condition.
-
-2007-08-29  Andrew Haley  <aph@redhat.com>
-
-	* gnu/classpath/natVMStackWalker.cc (VMStackWalker::getCallingClass):
-	Make sure we're not sibcalled.
-	(GET_CALLING_CLASS): Define for ARM EABI.
-
-2007-08-22  Andrew Haley  <aph@redhat.com>
-
-	* configure.host (BACKTRACESPEC): Add arm*-linux*.
-
-2007-08-22  Andrew Haley  <aph@redhat.com>
-
-	* configure.ac (LIBSTDCXXSPEC): New.
-	* configure.host: Add arm*-linux* to pthread test.
-	* configure.ac (LIBGCJTESTSPEC): Add path to libstdc++ for ARM
-	EABI.
-	* testsuite/libjava.jni/jni.exp (gcj_jni_compile_c_to_so): Use
-	-fexceptions for ARM EABI.
-	* testsuite/lib/libjava.exp (libjava_arguments): Add libgcj-test.spec.
-	(libjava_invoke): Log the invocation.
-
-2007-08-15  Andrew Haley  <aph@redhat.com>
-
-	* configure.ac (extra_ldflags): Define.
-	* Makefile.am: Use extra_ldflags for all executables.
-
-2007-08-14  Andrew Haley  <aph@redhat.com>
-
-	* sysdep/arm/backtrace.h: Remove stubs for _Unwind_GetIPInfo,
-	_Unwind_GetRegionStart, and _Unwind_Backtrace.
-
-2007-07-27  Andrew Haley  <aph@redhat.com>
-
-	* gnu/classpath/natVMStackWalker.cc (GET_CALLING_CLASS): Stub for
-	ARM EABI.
-	* exception.cc (get_exception_header_from_ue): New.
-	(get_ttype_entry): ARM EABI version.
-	(PERSONALITY_FUNCTION): Add ARM EABI code.
-	* sysdep/arm/backtrace.h: New file.
-	* stacktrace.cc (_URC_NORMAL_STOP): New.
-	* configure.ac (extra_ldflags_libjava): Add libsupc++.la for ARM
-	EABI.
-	* configure.host (BACKTRACESPEC): Add arm/backtrace.h.
-
---- libjava/testsuite/Makefile.in.jj	2007-09-06 14:06:13.000000000 +0200
-+++ libjava/testsuite/Makefile.in	2007-09-06 17:20:42.000000000 +0200
-@@ -160,6 +160,7 @@ LIBLTDL = @LIBLTDL@
- LIBMAGIC = @LIBMAGIC@
- LIBOBJS = @LIBOBJS@
- LIBS = @LIBS@
-+LIBSTDCXXSPEC = @LIBSTDCXXSPEC@
- LIBTOOL = @LIBTOOL@
- LN_S = @LN_S@
- LTLIBICONV = @LTLIBICONV@
-@@ -264,6 +265,7 @@ build_vendor = @build_vendor@
- datadir = @datadir@
- dbexecdir = @dbexecdir@
- exec_prefix = @exec_prefix@
-+extra_ldflags = @extra_ldflags@
- extra_ldflags_libjava = @extra_ldflags_libjava@
- gxx_include_dir = @gxx_include_dir@
- here = @here@
---- libjava/testsuite/libjava.jni/jni.exp.jj	2007-09-06 14:06:13.000000000 +0200
-+++ libjava/testsuite/libjava.jni/jni.exp	2007-09-06 17:20:42.000000000 +0200
-@@ -29,6 +29,10 @@ proc gcj_jni_compile_c_to_so {file {opti
-   set name [file rootname $filename]
-   set soname lib${name}.${so_extension}
- 
-+  if { [istarget "*arm-*eabi*"] } {
-+      lappend options "additional_flags=-fexceptions"
-+  }
-+
-   lappend options "additional_flags=${so_flag} -fPIC"
-   # Find the generated header.
-   lappend options "additional_flags=-I. -I.. -I$srcdir/$subdir"
---- libjava/testsuite/lib/libjava.exp.jj	2007-09-06 14:06:13.000000000 +0200
-+++ libjava/testsuite/lib/libjava.exp	2007-09-06 17:20:42.000000000 +0200
-@@ -379,6 +379,7 @@ proc libjava_arguments {{mode compile}} 
-     if {$mode == "link"} {
- 	global wrapper_file wrap_compile_flags
- 	lappend args "additional_flags=$wrap_compile_flags"
-+	lappend args "additional_flags=-specs=libgcj-test.spec"
- 	lappend args "libs=$wrapper_file"
- 	lappend args "libs=$libjava"
- 	lappend args debug
---- libjava/configure.jj	2007-09-06 14:06:15.000000000 +0200
-+++ libjava/configure	2007-09-06 17:27:04.000000000 +0200
-@@ -310,7 +310,7 @@ ac_includes_default="\
- # include <unistd.h>
- #endif"
- 
--ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS build build_cpu build_vendor build_os build_subdir host_subdir target_subdir libgcj_basedir host host_cpu host_vendor host_os target target_cpu target_vendor target_os target_noncanonical LN_S mkinstalldirs JAVA_MAINTAINER_MODE_TRUE JAVA_MAINTAINER_MODE_FALSE CC ac_ct_CC EXEEXT OBJEXT CXX ac_ct_CXX CFLAGS CXXFLAGS LDFLAGS INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA CYGPATH_W PACKAGE VERSION ACLOCAL AUTOCONF AUTOMAKE AUTOHEADER MAKEINFO install_sh STRIP ac_ct_STRIP INSTALL_STRIP_PROGRAM mkdir_p AWK SET_MAKE am__leading_dot AMTAR am__tar am__untar DEPDIR am__include am__quote AMDEP_TRUE AMDEP_FALSE AMDEPBACKSLASH CCDEPMODE am__fastdepCC_TRUE am__fastdepCC_FALSE CXXDEPMODE am__fastdepCXX_TRUE am__fastdepCXX_FALSE AS ac_ct_AS LD ac_ct_LD AR ac_ct_AR RANLIB ac_ct_RANLIB JAR ZIP UNZIP MAINTAINER_MODE_TRUE MAINTAINER_MODE_FALSE MAINT LIBGCJ_CFLAGS LIBGCJ_CXXFLAGS LIBGCJ_JAVAFLAGS LIBGCJ_LD_SYMBOLIC LIBGCJDEBUG TOOLKIT XLIB_AWT_TRUE XLIB_AWT_FALSE X_AWT_TRUE X_AWT_FALSE GCJ_FOR_ECJX GCJH host_exeext INCLTDL LIBLTDL DIRLTDL LIBTOOL CXXCPP CPPFLAGS GCJ GCJFLAGS GCJDEPMODE am__fastdepGCJ_TRUE am__fastdepGCJ_FALSE subdirs TESTSUBDIR_TRUE TESTSUBDIR_FALSE ECJ_BUILD_JAR ECJ_JAR BUILD_ECJ1_TRUE BUILD_ECJ1_FALSE INSTALL_ECJ_JAR_TRUE INSTALL_ECJ_JAR_FALSE JAVA_HOME_SET_TRUE JAVA_HOME_SET_FALSE JAVA_HOME INTERPRETER LIBFFI LIBFFIINCS PLATFORM CPP EGREP USING_WIN32_PLATFORM_TRUE USING_WIN32_PLATFORM_FALSE USING_POSIX_PLATFORM_TRUE USING_POSIX_PLATFORM_FALSE USING_DARWIN_CRT_TRUE USING_DARWIN_CRT_FALSE SYSTEMSPEC LIBGCJTESTSPEC ZLIBSPEC ZLIBTESTSPEC X_CFLAGS X_PRE_LIBS X_LIBS X_EXTRA_LIBS extra_ldflags_libjava GCLIBS GCINCS GCDEPS GCSPEC JC1GCSPEC GCTESTSPEC USING_BOEHMGC_TRUE USING_BOEHMGC_FALSE USING_NOGC_TRUE USING_NOGC_FALSE THREADLIBS THREADINCS THREADDEPS THREADSPEC THREADSTARTFILESPEC THREADLDFLAGS THREADCXXFLAGS USING_POSIX_THREADS_TRUE USING_POSIX_THREADS_FALSE USING_WIN32_THREADS_TRUE USING_WIN32_THREADS_FALSE USING_NO_THREADS_TRUE USING_NO_THREADS_FALSE USE_LIBGCJ_BC_TRUE USE_LIBGCJ_BC_FALSE LIBGCJ_SPEC HASH_SYNC_SPEC USING_GCC_TRUE USING_GCC_FALSE LIBICONV LTLIBICONV LIBMAGIC PKG_CONFIG GTK_CFLAGS GTK_LIBS GLIB_CFLAGS GLIB_LIBS LIBART_CFLAGS LIBART_LIBS CLASSPATH_SEPARATOR ac_ct_GCJ ZLIBS SYS_ZLIBS ZINCS DIVIDESPEC CHECKREFSPEC EXCEPTIONSPEC BACKTRACESPEC IEEESPEC NATIVE_TRUE NATIVE_FALSE ENABLE_SHARED_TRUE ENABLE_SHARED_FALSE NEEDS_DATA_START_TRUE NEEDS_DATA_START_FALSE GCC_UNWIND_INCLUDE toolexecdir toolexecmainlibdir toolexeclibdir dbexecdir GCJVERSION gxx_include_dir libstdcxx_incdir ALLOCA PERL SYSDEP_SOURCES ANONVERSCRIPT_TRUE ANONVERSCRIPT_FALSE LD_START_STATIC_SPEC LD_FINISH_STATIC_SPEC here LIBOBJS LTLIBOBJS'
-+ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS build build_cpu build_vendor build_os build_subdir host_subdir target_subdir libgcj_basedir host host_cpu host_vendor host_os target target_cpu target_vendor target_os target_noncanonical LN_S mkinstalldirs JAVA_MAINTAINER_MODE_TRUE JAVA_MAINTAINER_MODE_FALSE CC ac_ct_CC EXEEXT OBJEXT CXX ac_ct_CXX CFLAGS CXXFLAGS LDFLAGS INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA CYGPATH_W PACKAGE VERSION ACLOCAL AUTOCONF AUTOMAKE AUTOHEADER MAKEINFO install_sh STRIP ac_ct_STRIP INSTALL_STRIP_PROGRAM mkdir_p AWK SET_MAKE am__leading_dot AMTAR am__tar am__untar DEPDIR am__include am__quote AMDEP_TRUE AMDEP_FALSE AMDEPBACKSLASH CCDEPMODE am__fastdepCC_TRUE am__fastdepCC_FALSE CXXDEPMODE am__fastdepCXX_TRUE am__fastdepCXX_FALSE AS ac_ct_AS LD ac_ct_LD AR ac_ct_AR RANLIB ac_ct_RANLIB JAR ZIP UNZIP MAINTAINER_MODE_TRUE MAINTAINER_MODE_FALSE MAINT LIBGCJ_CFLAGS LIBGCJ_CXXFLAGS LIBGCJ_JAVAFLAGS LIBGCJ_LD_SYMBOLIC LIBGCJDEBUG TOOLKIT XLIB_AWT_TRUE XLIB_AWT_FALSE X_AWT_TRUE X_AWT_FALSE GCJ_FOR_ECJX GCJH host_exeext INCLTDL LIBLTDL DIRLTDL LIBTOOL CXXCPP CPPFLAGS GCJ GCJFLAGS GCJDEPMODE am__fastdepGCJ_TRUE am__fastdepGCJ_FALSE subdirs TESTSUBDIR_TRUE TESTSUBDIR_FALSE ECJ_BUILD_JAR ECJ_JAR BUILD_ECJ1_TRUE BUILD_ECJ1_FALSE INSTALL_ECJ_JAR_TRUE INSTALL_ECJ_JAR_FALSE JAVA_HOME_SET_TRUE JAVA_HOME_SET_FALSE JAVA_HOME INTERPRETER LIBFFI LIBFFIINCS PLATFORM CPP EGREP USING_WIN32_PLATFORM_TRUE USING_WIN32_PLATFORM_FALSE USING_POSIX_PLATFORM_TRUE USING_POSIX_PLATFORM_FALSE USING_DARWIN_CRT_TRUE USING_DARWIN_CRT_FALSE SYSTEMSPEC ZLIBSPEC ZLIBTESTSPEC X_CFLAGS X_PRE_LIBS X_LIBS X_EXTRA_LIBS extra_ldflags_libjava extra_ldflags LIBSTDCXXSPEC LIBGCJTESTSPEC GCLIBS GCINCS GCDEPS GCSPEC JC1GCSPEC GCTESTSPEC USING_BOEHMGC_TRUE USING_BOEHMGC_FALSE USING_NOGC_TRUE USING_NOGC_FALSE THREADLIBS THREADINCS THREADDEPS THREADSPEC THREADSTARTFILESPEC THREADLDFLAGS THREADCXXFLAGS USING_POSIX_THREADS_TRUE USING_POSIX_THREADS_FALSE USING_WIN32_THREADS_TRUE USING_WIN32_THREADS_FALSE USING_NO_THREADS_TRUE USING_NO_THREADS_FALSE USE_LIBGCJ_BC_TRUE USE_LIBGCJ_BC_FALSE LIBGCJ_SPEC HASH_SYNC_SPEC USING_GCC_TRUE USING_GCC_FALSE LIBICONV LTLIBICONV LIBMAGIC PKG_CONFIG GTK_CFLAGS GTK_LIBS GLIB_CFLAGS GLIB_LIBS LIBART_CFLAGS LIBART_LIBS CLASSPATH_SEPARATOR ac_ct_GCJ ZLIBS SYS_ZLIBS ZINCS DIVIDESPEC CHECKREFSPEC EXCEPTIONSPEC BACKTRACESPEC IEEESPEC NATIVE_TRUE NATIVE_FALSE ENABLE_SHARED_TRUE ENABLE_SHARED_FALSE NEEDS_DATA_START_TRUE NEEDS_DATA_START_FALSE GCC_UNWIND_INCLUDE toolexecdir toolexecmainlibdir toolexeclibdir dbexecdir GCJVERSION gxx_include_dir libstdcxx_incdir ALLOCA PERL SYSDEP_SOURCES ANONVERSCRIPT_TRUE ANONVERSCRIPT_FALSE LD_START_STATIC_SPEC LD_FINISH_STATIC_SPEC here LIBOBJS LTLIBOBJS'
- ac_subst_files=''
- 
- # Initialize some variables set by options.
-@@ -7640,9 +7640,6 @@ case "${host}" in
- esac
- 
- 
--LIBGCJTESTSPEC="-L`${PWDCMD-pwd}`/.libs -rpath `${PWDCMD-pwd}`/.libs"
--
--
- 
- # Check whether --with-system-zlib or --without-system-zlib was given.
- if test "${with_system_zlib+set}" = set; then
-@@ -9126,6 +9123,9 @@ fi
- # FIXME: this should be _libs on some hosts.
- libsubdir=.libs
- 
-+LIBGCJTESTSPEC="-L`${PWDCMD-pwd}`/.libs -rpath `${PWDCMD-pwd}`/.libs"
-+
-+LIBSTDCXXSPEC=
- # extra LD Flags which are required for targets
- case "${host}" in
- *-*-darwin[0-7].*)
-@@ -9134,9 +9134,21 @@ case "${host}" in
-     # on Darwin -single_module speeds up loading of the dynamic libraries.
-     extra_ldflags_libjava=-Wl,-single_module
-     ;;
-+arm*linux*eabi)
-+    # Some of the ARM unwinder code is actually in libstdc++.  We
-+    # could in principle replicate it in libgcj, but it's better to
-+    # have a dependency on libstdc++.
-+    extra_ldflags='-L$(here)/../libstdc++-v3/src -lstdc++'
-+    LIBSTDCXXSPEC=-lstdc++
-+    LIBGCJTESTSPEC="-L`${PWDCMD-pwd}`/.libs -L`${PWDCMD-pwd}`/../libstdc++-v3/src/.libs -rpath `${PWDCMD-pwd}`/.libs:`${PWDCMD-pwd}`/../libstdc++-v3/src/.libs -lstdc++"
-+    ;;
- esac
- 
- 
-+
-+
-+
-+
- # Allow the GC to be disabled.  Can be useful when debugging.
- echo "$as_me:$LINENO: checking for garbage collector to use" >&5
- echo $ECHO_N "checking for garbage collector to use... $ECHO_C" >&6
-@@ -18024,7 +18036,6 @@ s,@USING_POSIX_PLATFORM_FALSE@,$USING_PO
- s,@USING_DARWIN_CRT_TRUE@,$USING_DARWIN_CRT_TRUE,;t t
- s,@USING_DARWIN_CRT_FALSE@,$USING_DARWIN_CRT_FALSE,;t t
- s,@SYSTEMSPEC@,$SYSTEMSPEC,;t t
--s,@LIBGCJTESTSPEC@,$LIBGCJTESTSPEC,;t t
- s,@ZLIBSPEC@,$ZLIBSPEC,;t t
- s,@ZLIBTESTSPEC@,$ZLIBTESTSPEC,;t t
- s,@X_CFLAGS@,$X_CFLAGS,;t t
-@@ -18032,6 +18043,9 @@ s,@X_PRE_LIBS@,$X_PRE_LIBS,;t t
- s,@X_LIBS@,$X_LIBS,;t t
- s,@X_EXTRA_LIBS@,$X_EXTRA_LIBS,;t t
- s,@extra_ldflags_libjava@,$extra_ldflags_libjava,;t t
-+s,@extra_ldflags@,$extra_ldflags,;t t
-+s,@LIBSTDCXXSPEC@,$LIBSTDCXXSPEC,;t t
-+s,@LIBGCJTESTSPEC@,$LIBGCJTESTSPEC,;t t
- s,@GCLIBS@,$GCLIBS,;t t
- s,@GCINCS@,$GCINCS,;t t
- s,@GCDEPS@,$GCDEPS,;t t
---- libjava/Makefile.in.jj	2007-09-06 14:06:15.000000000 +0200
-+++ libjava/Makefile.in	2007-09-06 17:28:51.000000000 +0200
-@@ -627,6 +627,7 @@ LIBLTDL = @LIBLTDL@
- LIBMAGIC = @LIBMAGIC@
- LIBOBJS = @LIBOBJS@
- LIBS = @LIBS@
-+LIBSTDCXXSPEC = @LIBSTDCXXSPEC@
- LIBTOOL = @LIBTOOL@
- LN_S = @LN_S@
- LTLIBICONV = @LTLIBICONV@
-@@ -731,6 +732,7 @@ build_vendor = @build_vendor@
- datadir = @datadir@
- dbexecdir = @dbexecdir@
- exec_prefix = @exec_prefix@
-+extra_ldflags = @extra_ldflags@
- extra_ldflags_libjava = @extra_ldflags_libjava@ $(am__append_5)
- gxx_include_dir = @gxx_include_dir@
- here = @here@
-@@ -812,7 +814,7 @@ GCJLINK = $(LIBTOOL) --tag=GCJ --mode=li
- 
- GCJ_FOR_ECJX_LINK = $(GCJ_FOR_ECJX) -o $@
- LIBLINK = $(LIBTOOL) --tag=CXX --mode=link $(CXX) -L$(here) $(JC1FLAGS) \
--          $(LDFLAGS) $(extra_ldflags_libjava) -o $@
-+          $(LDFLAGS) $(extra_ldflags_libjava) $(extra_ldflags) -o $@
- 
- WARNINGS = -Wextra -Wall
- AM_CXXFLAGS = \
-@@ -872,7 +874,7 @@ xlib_nat_files = $(xlib_nat_source_files
- 
- # Include THREADLIBS here to ensure that the correct version of
- # certain linuxthread functions get linked:
--libgcj_la_LDFLAGS = -rpath $(toolexeclibdir) $(THREADLDFLAGS) $(THREADLIBS) \
-+libgcj_la_LDFLAGS = -rpath $(toolexeclibdir) $(THREADLDFLAGS) $(extra_ldflags) $(THREADLIBS) \
- 	$(LIBLTDL) $(SYS_ZLIBS) \
- 	-version-info `grep -v '^\#' $(srcdir)/libtool-version`
- 
-@@ -7784,7 +7786,7 @@ NM = nm
- 
- jv_convert_SOURCES = 
- jv_convert_LDFLAGS = --main=gnu.gcj.convert.Convert \
--	-rpath $(toolexeclibdir) -shared-libgcc $(THREADLDFLAGS)
-+	-rpath $(toolexeclibdir) -shared-libgcc $(THREADLDFLAGS) $(extra_ldflags)
- 
- jv_convert_LINK = $(GCJLINK)
- jv_convert_LDADD = -L$(here)/.libs libgcj.la
-@@ -7800,7 +7802,7 @@ gcj_dbtool_LDADD = gnu/gcj/tools/gcj_dbt
- gcj_dbtool_DEPENDENCIES = gnu/gcj/tools/gcj_dbtool.lo libgcj.la libgcj.spec
- gij_SOURCES = 
- gij_LDFLAGS = -rpath $(libdir)/gcj-$(gcc_version) -rpath $(toolexeclibdir) \
--	-shared-libgcc $(THREADLDFLAGS)
-+	-shared-libgcc $(THREADLDFLAGS) $(extra_ldflags)
- 
- gij_LINK = $(GCJLINK)
- gij_LDADD = -L$(here)/.libs libgij.la
-@@ -7820,91 +7822,91 @@ ECJX_BASE_FLAGS = -findirect-dispatch \
- @NATIVE_TRUE@ecjx_DEPENDENCIES = libgcj.la libgcj.spec
- gappletviewer_SOURCES = 
- gappletviewer_LDFLAGS = --main=gnu.classpath.tools.appletviewer.Main \
--	-rpath $(toolexeclibdir) -shared-libgcc $(THREADLDFLAGS)
-+	-rpath $(toolexeclibdir) -shared-libgcc $(THREADLDFLAGS) $(extra_ldflags)
- 
- gappletviewer_LINK = $(GCJLINK)
- gappletviewer_LDADD = -L$(here)/.libs libgcj-tools.la
- gappletviewer_DEPENDENCIES = libgcj-tools.la
- gjarsigner_SOURCES = 
- gjarsigner_LDFLAGS = --main=gnu.classpath.tools.jarsigner.Main \
--	-rpath $(toolexeclibdir) -shared-libgcc $(THREADLDFLAGS)
-+	-rpath $(toolexeclibdir) -shared-libgcc $(THREADLDFLAGS) $(extra_ldflags)
- 
- gjarsigner_LINK = $(GCJLINK)
- gjarsigner_LDADD = -L$(here)/.libs libgcj-tools.la
- gjarsigner_DEPENDENCIES = libgcj-tools.la
- gkeytool_SOURCES = 
- gkeytool_LDFLAGS = --main=gnu.classpath.tools.keytool.Main \
--	-rpath $(toolexeclibdir) -shared-libgcc $(THREADLDFLAGS)
-+	-rpath $(toolexeclibdir) -shared-libgcc $(THREADLDFLAGS) $(extra_ldflags)
- 
- gkeytool_LINK = $(GCJLINK)
- gkeytool_LDADD = -L$(here)/.libs libgcj-tools.la
- gkeytool_DEPENDENCIES = libgcj-tools.la
- gjar_SOURCES = 
- gjar_LDFLAGS = --main=gnu.classpath.tools.jar.Main \
--	-rpath $(toolexeclibdir) -shared-libgcc $(THREADLDFLAGS)
-+	-rpath $(toolexeclibdir) -shared-libgcc $(THREADLDFLAGS) $(extra_ldflags)
- 
- gjar_LINK = $(GCJLINK)
- gjar_LDADD = -L$(here)/.libs libgcj-tools.la
- gjar_DEPENDENCIES = libgcj-tools.la
- gjavah_SOURCES = 
- gjavah_LDFLAGS = --main=gnu.classpath.tools.javah.Main \
--	-rpath $(toolexeclibdir) -shared-libgcc $(THREADLDFLAGS)
-+	-rpath $(toolexeclibdir) -shared-libgcc $(THREADLDFLAGS) $(extra_ldflags)
- 
- gjavah_LINK = $(GCJLINK)
- gjavah_LDADD = -L$(here)/.libs libgcj-tools.la
- gjavah_DEPENDENCIES = libgcj-tools.la
- gcjh_SOURCES = 
- gcjh_LDFLAGS = --main=gnu.classpath.tools.javah.GcjhMain \
--	-rpath $(toolexeclibdir) -shared-libgcc $(THREADLDFLAGS)
-+	-rpath $(toolexeclibdir) -shared-libgcc $(THREADLDFLAGS) $(extra_ldflags)
- 
- gcjh_LINK = $(GCJLINK)
- gcjh_LDADD = -L$(here)/.libs libgcj-tools.la
- gcjh_DEPENDENCIES = libgcj-tools.la
- gnative2ascii_SOURCES = 
- gnative2ascii_LDFLAGS = --main=gnu.classpath.tools.native2ascii.Native2ASCII \
--	-rpath $(toolexeclibdir) -shared-libgcc $(THREADLDFLAGS)
-+	-rpath $(toolexeclibdir) -shared-libgcc $(THREADLDFLAGS) $(extra_ldflags)
- 
- gnative2ascii_LINK = $(GCJLINK)
- gnative2ascii_LDADD = -L$(here)/.libs libgcj-tools.la
- gnative2ascii_DEPENDENCIES = libgcj-tools.la
- gorbd_SOURCES = 
- gorbd_LDFLAGS = --main=gnu.classpath.tools.orbd.Main \
--	-rpath $(toolexeclibdir) -shared-libgcc $(THREADLDFLAGS)
-+	-rpath $(toolexeclibdir) -shared-libgcc $(THREADLDFLAGS) $(extra_ldflags)
- 
- gorbd_LINK = $(GCJLINK)
- gorbd_LDADD = -L$(here)/.libs libgcj-tools.la
- gorbd_DEPENDENCIES = libgcj-tools.la
- grmid_SOURCES = 
- grmid_LDFLAGS = --main=gnu.classpath.tools.rmid.Main \
--	-rpath $(toolexeclibdir) -shared-libgcc $(THREADLDFLAGS)
-+	-rpath $(toolexeclibdir) -shared-libgcc $(THREADLDFLAGS) $(extra_ldflags)
- 
- grmid_LINK = $(GCJLINK)
- grmid_LDADD = -L$(here)/.libs libgcj-tools.la
- grmid_DEPENDENCIES = libgcj-tools.la
- gserialver_SOURCES = 
- gserialver_LDFLAGS = --main=gnu.classpath.tools.serialver.SerialVer \
--	-rpath $(toolexeclibdir) -shared-libgcc $(THREADLDFLAGS)
-+	-rpath $(toolexeclibdir) -shared-libgcc $(THREADLDFLAGS) $(extra_ldflags)
- 
- gserialver_LINK = $(GCJLINK)
- gserialver_LDADD = -L$(here)/.libs libgcj-tools.la
- gserialver_DEPENDENCIES = libgcj-tools.la
- gtnameserv_SOURCES = 
- gtnameserv_LDFLAGS = --main=gnu.classpath.tools.tnameserv.Main \
--	-rpath $(toolexeclibdir) -shared-libgcc $(THREADLDFLAGS)
-+	-rpath $(toolexeclibdir) -shared-libgcc $(THREADLDFLAGS) $(extra_ldflags)
- 
- gtnameserv_LINK = $(GCJLINK)
- gtnameserv_LDADD = -L$(here)/.libs libgcj-tools.la
- gtnameserv_DEPENDENCIES = libgcj-tools.la
- grmic_SOURCES = 
- grmic_LDFLAGS = --main=gnu.classpath.tools.rmic.Main \
--	-rpath $(toolexeclibdir) -shared-libgcc $(THREADLDFLAGS)
-+	-rpath $(toolexeclibdir) -shared-libgcc $(THREADLDFLAGS) $(extra_ldflags)
- 
- grmic_LINK = $(GCJLINK)
- grmic_LDADD = -L$(here)/.libs libgcj-tools.la
- grmic_DEPENDENCIES = libgcj-tools.la
- grmiregistry_SOURCES = 
- grmiregistry_LDFLAGS = --main=gnu.classpath.tools.rmiregistry.Main \
--	-rpath $(toolexeclibdir) -shared-libgcc $(THREADLDFLAGS)
-+	-rpath $(toolexeclibdir) -shared-libgcc $(THREADLDFLAGS) $(extra_ldflags)
- 
- grmiregistry_LINK = $(GCJLINK)
- grmiregistry_LDADD = -L$(here)/.libs libgcj-tools.la
---- libjava/gcj/Makefile.in.jj	2007-09-06 14:06:15.000000000 +0200
-+++ libjava/gcj/Makefile.in	2007-09-06 17:20:42.000000000 +0200
-@@ -172,6 +172,7 @@ LIBLTDL = @LIBLTDL@
- LIBMAGIC = @LIBMAGIC@
- LIBOBJS = @LIBOBJS@
- LIBS = @LIBS@
-+LIBSTDCXXSPEC = @LIBSTDCXXSPEC@
- LIBTOOL = @LIBTOOL@
- LN_S = @LN_S@
- LTLIBICONV = @LTLIBICONV@
-@@ -276,6 +277,7 @@ build_vendor = @build_vendor@
- datadir = @datadir@
- dbexecdir = @dbexecdir@
- exec_prefix = @exec_prefix@
-+extra_ldflags = @extra_ldflags@
- extra_ldflags_libjava = @extra_ldflags_libjava@
- gxx_include_dir = @gxx_include_dir@
- here = @here@
---- libjava/include/Makefile.in.jj	2007-09-06 14:06:15.000000000 +0200
-+++ libjava/include/Makefile.in	2007-09-06 17:20:42.000000000 +0200
-@@ -171,6 +171,7 @@ LIBLTDL = @LIBLTDL@
- LIBMAGIC = @LIBMAGIC@
- LIBOBJS = @LIBOBJS@
- LIBS = @LIBS@
-+LIBSTDCXXSPEC = @LIBSTDCXXSPEC@
- LIBTOOL = @LIBTOOL@
- LN_S = @LN_S@
- LTLIBICONV = @LTLIBICONV@
-@@ -275,6 +276,7 @@ build_vendor = @build_vendor@
- datadir = @datadir@
- dbexecdir = @dbexecdir@
- exec_prefix = @exec_prefix@
-+extra_ldflags = @extra_ldflags@
- extra_ldflags_libjava = @extra_ldflags_libjava@
- gxx_include_dir = @gxx_include_dir@
- here = @here@
---- libjava/configure.ac.jj	2007-09-06 14:06:15.000000000 +0200
-+++ libjava/configure.ac	2007-09-06 17:20:42.000000000 +0200
-@@ -777,9 +777,6 @@ case "${host}" in
- esac
- AC_SUBST(SYSTEMSPEC)
- 
--LIBGCJTESTSPEC="-L`${PWDCMD-pwd}`/.libs -rpath `${PWDCMD-pwd}`/.libs"
--AC_SUBST(LIBGCJTESTSPEC)
--
- AC_ARG_WITH(system-zlib,
-   AS_HELP_STRING([--with-system-zlib],
-                  [use installed libz]))
-@@ -793,6 +790,9 @@ AC_PATH_XTRA
- # FIXME: this should be _libs on some hosts.
- libsubdir=.libs
- 
-+LIBGCJTESTSPEC="-L`${PWDCMD-pwd}`/.libs -rpath `${PWDCMD-pwd}`/.libs"
-+
-+LIBSTDCXXSPEC=
- # extra LD Flags which are required for targets
- case "${host}" in
- *-*-darwin[[0-7]].*)
-@@ -801,8 +801,20 @@ case "${host}" in
-     # on Darwin -single_module speeds up loading of the dynamic libraries.
-     extra_ldflags_libjava=-Wl,-single_module
-     ;;
-+arm*linux*eabi)
-+    # Some of the ARM unwinder code is actually in libstdc++.  We
-+    # could in principle replicate it in libgcj, but it's better to
-+    # have a dependency on libstdc++.
-+    extra_ldflags='-L$(here)/../libstdc++-v3/src -lstdc++'
-+    LIBSTDCXXSPEC=-lstdc++
-+    LIBGCJTESTSPEC="-L`${PWDCMD-pwd}`/.libs -L`${PWDCMD-pwd}`/../libstdc++-v3/src/.libs -rpath `${PWDCMD-pwd}`/.libs:`${PWDCMD-pwd}`/../libstdc++-v3/src/.libs -lstdc++"
-+    ;;
- esac
- AC_SUBST(extra_ldflags_libjava)
-+AC_SUBST(extra_ldflags)
-+AC_SUBST(LIBSTDCXXSPEC)
-+
-+AC_SUBST(LIBGCJTESTSPEC)
- 
- # Allow the GC to be disabled.  Can be useful when debugging.
- AC_MSG_CHECKING([for garbage collector to use])
---- libjava/libgcj.spec.in.jj	2007-09-06 14:06:15.000000000 +0200
-+++ libjava/libgcj.spec.in	2007-09-06 17:20:42.000000000 +0200
-@@ -7,6 +7,6 @@
- *startfile: @THREADSTARTFILESPEC@ %(startfileorig)
- 
- %rename lib liborig
--*lib: @LD_START_STATIC_SPEC@ @LIBGCJ_SPEC@ @LD_FINISH_STATIC_SPEC@ -lm @LIBICONV@ @GCSPEC@ @THREADSPEC@ @ZLIBSPEC@ @SYSTEMSPEC@ %(libgcc) %(liborig)
-+*lib: @LD_START_STATIC_SPEC@ @LIBGCJ_SPEC@ @LD_FINISH_STATIC_SPEC@ -lm @LIBICONV@ @GCSPEC@ @THREADSPEC@ @ZLIBSPEC@ @SYSTEMSPEC@ %(libgcc) @LIBSTDCXXSPEC@ %(liborig)
- 
- *jc1: @HASH_SYNC_SPEC@ @DIVIDESPEC@ @CHECKREFSPEC@ @JC1GCSPEC@ @EXCEPTIONSPEC@ @BACKTRACESPEC@ @IEEESPEC@ -fkeep-inline-functions
---- libjava/stacktrace.cc.jj	2007-09-06 14:06:16.000000000 +0200
-+++ libjava/stacktrace.cc	2007-09-06 17:20:42.000000000 +0200
-@@ -39,6 +39,10 @@ using namespace java::lang::reflect;
- using namespace java::util;
- using namespace gnu::gcj::runtime;
- 
-+#ifdef __ARM_EABI_UNWINDER__
-+#define _URC_NORMAL_STOP _URC_FAILURE
-+#endif
-+
- // Maps ncode values to their containing native class.
- // NOTE: Currently this Map contradicts class GC for native classes. This map
- // (and the "new class stack") will need to use WeakReferences in order to 
---- libjava/configure.host.jj	2007-09-06 17:11:05.000000000 +0200
-+++ libjava/configure.host	2007-09-06 17:20:42.000000000 +0200
-@@ -85,6 +85,7 @@ case "${host}" in
-   arm*-linux*)
- 	libgcj_interpreter=yes
- 	sysdeps_dir=arm
-+	fallback_backtrace_h=sysdep/arm/backtrace.h
- 	;;
-   mips-tx39-*|mipstx39-unknown-*)
- 	libgcj_flags="${libgcj_flags} -G 0"
-@@ -258,6 +259,12 @@ EOF
- 	sysdeps_dir=x86-64
- 	DIVIDESPEC=-f%{m32:no-}%{!m32:%{!m64:no-}}%{m64:}use-divide-subroutine
- 	;;
-+  arm*-linux* )
-+	slow_pthread_self=no
-+	can_unwind_signal=no
-+	CHECKREFSPEC=-fcheck-references
-+	DIVIDESPEC=-fuse-divide-subroutine
-+	;;
-   mips*-*-linux* )
-   	sysdeps_dir=mips
-   	can_unwind_signal=yes
---- libjava/Makefile.am.jj	2007-09-06 14:06:16.000000000 +0200
-+++ libjava/Makefile.am	2007-09-06 17:28:27.000000000 +0200
-@@ -100,6 +100,7 @@ endif
- GCJ_WITH_FLAGS = $(GCJ) --encoding=UTF-8 -Wno-deprecated
- 
- extra_ldflags_libjava = @extra_ldflags_libjava@
-+extra_ldflags = @extra_ldflags@
- 
- if ANONVERSCRIPT
- extra_ldflags_libjava += -Wl,--version-script=$(srcdir)/libgcj.ver
-@@ -110,7 +111,7 @@ GCJLINK = $(LIBTOOL) --tag=GCJ --mode=li
- GCJ_FOR_ECJX = @GCJ_FOR_ECJX@
- GCJ_FOR_ECJX_LINK = $(GCJ_FOR_ECJX) -o $@
- LIBLINK = $(LIBTOOL) --tag=CXX --mode=link $(CXX) -L$(here) $(JC1FLAGS) \
--          $(LDFLAGS) $(extra_ldflags_libjava) -o $@
-+          $(LDFLAGS) $(extra_ldflags_libjava) $(extra_ldflags) -o $@
- 
- GCC_UNWIND_INCLUDE = @GCC_UNWIND_INCLUDE@
- 
-@@ -232,7 +233,7 @@ xlib_nat_files = $(xlib_nat_source_files
- # Include THREADLIBS here to ensure that the correct version of
- # certain linuxthread functions get linked:
- ## The mysterious backslash in the grep pattern is consumed by make.
--libgcj_la_LDFLAGS = -rpath $(toolexeclibdir) $(THREADLDFLAGS) $(THREADLIBS) \
-+libgcj_la_LDFLAGS = -rpath $(toolexeclibdir) $(THREADLDFLAGS) $(extra_ldflags) $(THREADLIBS) \
- 	$(LIBLTDL) $(SYS_ZLIBS) \
- 	-version-info `grep -v '^\#' $(srcdir)/libtool-version`
- libgcj_la_LIBADD = \
-@@ -614,7 +615,7 @@ jv_convert_SOURCES =
- ## need this because we are explicitly using libtool to link using the
- ## `.la' file.
- jv_convert_LDFLAGS = --main=gnu.gcj.convert.Convert \
--	-rpath $(toolexeclibdir) -shared-libgcc $(THREADLDFLAGS)
-+	-rpath $(toolexeclibdir) -shared-libgcc $(THREADLDFLAGS) $(extra_ldflags)
- jv_convert_LINK = $(GCJLINK)
- ## We don't explicitly link in the libraries we need; libgcj.la brings
- ## in all dependencies.  We need the -L so that gcj can find libgcj
-@@ -635,7 +636,7 @@ gnu/gcj/tools/gcj_dbtool/natMain.cc
- ## need this because we are explicitly using libtool to link using the
- ## `.la' file.
- gcj_dbtool_LDFLAGS = --main=gnu.gcj.tools.gcj_dbtool.Main \
--	-rpath $(toolexeclibdir) -shared-libgcc $(THREADLDFLAGS)
-+	-rpath $(toolexeclibdir) -shared-libgcc $(THREADLDFLAGS) $(extra_ldflags)
- gcj_dbtool_LINK = $(GCJLINK)
- ## We don't explicitly link in the libraries we need; libgcj.la brings
- ## in all dependencies.  We need the -L so that gcj can find libgcj
-@@ -654,7 +655,7 @@ gij_SOURCES = 
- ## need this because we are explicitly using libtool to link using the
- ## `.la' file.
- gij_LDFLAGS = -rpath $(libdir)/gcj-$(gcc_version) -rpath $(toolexeclibdir) \
--	-shared-libgcc $(THREADLDFLAGS)
-+	-shared-libgcc $(THREADLDFLAGS) $(extra_ldflags)
- gij_LINK = $(GCJLINK)
- ## See jv_convert_LDADD.
- gij_LDADD = -L$(here)/.libs libgij.la
-@@ -698,7 +699,7 @@ endif !NATIVE
- ## This is a dummy definition.
- gappletviewer_SOURCES =
- gappletviewer_LDFLAGS = --main=gnu.classpath.tools.appletviewer.Main \
--	-rpath $(toolexeclibdir) -shared-libgcc $(THREADLDFLAGS)
-+	-rpath $(toolexeclibdir) -shared-libgcc $(THREADLDFLAGS) $(extra_ldflags)
- gappletviewer_LINK = $(GCJLINK)
- ## See jv_convert_LDADD.
- gappletviewer_LDADD = -L$(here)/.libs libgcj-tools.la
-@@ -707,7 +708,7 @@ gappletviewer_DEPENDENCIES = libgcj-tool
- ## This is a dummy definition.
- gjarsigner_SOURCES =
- gjarsigner_LDFLAGS = --main=gnu.classpath.tools.jarsigner.Main \
--	-rpath $(toolexeclibdir) -shared-libgcc $(THREADLDFLAGS)
-+	-rpath $(toolexeclibdir) -shared-libgcc $(THREADLDFLAGS) $(extra_ldflags)
- gjarsigner_LINK = $(GCJLINK)
- ## See jv_convert_LDADD.
- gjarsigner_LDADD = -L$(here)/.libs libgcj-tools.la
-@@ -716,7 +717,7 @@ gjarsigner_DEPENDENCIES = libgcj-tools.l
- ## This is a dummy definition.
- gkeytool_SOURCES =
- gkeytool_LDFLAGS = --main=gnu.classpath.tools.keytool.Main \
--	-rpath $(toolexeclibdir) -shared-libgcc $(THREADLDFLAGS)
-+	-rpath $(toolexeclibdir) -shared-libgcc $(THREADLDFLAGS) $(extra_ldflags)
- gkeytool_LINK = $(GCJLINK)
- ## See jv_convert_LDADD.
- gkeytool_LDADD = -L$(here)/.libs libgcj-tools.la
-@@ -725,7 +726,7 @@ gkeytool_DEPENDENCIES = libgcj-tools.la
- ## This is a dummy definition.
- gjar_SOURCES =
- gjar_LDFLAGS = --main=gnu.classpath.tools.jar.Main \
--	-rpath $(toolexeclibdir) -shared-libgcc $(THREADLDFLAGS)
-+	-rpath $(toolexeclibdir) -shared-libgcc $(THREADLDFLAGS) $(extra_ldflags)
- gjar_LINK = $(GCJLINK)
- ## See jv_convert_LDADD.
- gjar_LDADD = -L$(here)/.libs libgcj-tools.la
-@@ -734,7 +735,7 @@ gjar_DEPENDENCIES = libgcj-tools.la
- ## This is a dummy definition.
- gjavah_SOURCES =
- gjavah_LDFLAGS = --main=gnu.classpath.tools.javah.Main \
--	-rpath $(toolexeclibdir) -shared-libgcc $(THREADLDFLAGS)
-+	-rpath $(toolexeclibdir) -shared-libgcc $(THREADLDFLAGS) $(extra_ldflags)
- gjavah_LINK = $(GCJLINK)
- ## See jv_convert_LDADD.
- gjavah_LDADD = -L$(here)/.libs libgcj-tools.la
-@@ -743,7 +744,7 @@ gjavah_DEPENDENCIES = libgcj-tools.la
- ## This is a dummy definition.
- gcjh_SOURCES =
- gcjh_LDFLAGS = --main=gnu.classpath.tools.javah.GcjhMain \
--	-rpath $(toolexeclibdir) -shared-libgcc $(THREADLDFLAGS)
-+	-rpath $(toolexeclibdir) -shared-libgcc $(THREADLDFLAGS) $(extra_ldflags)
- gcjh_LINK = $(GCJLINK)
- ## See jv_convert_LDADD.
- gcjh_LDADD = -L$(here)/.libs libgcj-tools.la
-@@ -752,7 +753,7 @@ gcjh_DEPENDENCIES = libgcj-tools.la
- ## This is a dummy definition.
- gnative2ascii_SOURCES =
- gnative2ascii_LDFLAGS = --main=gnu.classpath.tools.native2ascii.Native2ASCII \
--	-rpath $(toolexeclibdir) -shared-libgcc $(THREADLDFLAGS)
-+	-rpath $(toolexeclibdir) -shared-libgcc $(THREADLDFLAGS) $(extra_ldflags)
- gnative2ascii_LINK = $(GCJLINK)
- ## See jv_convert_LDADD.
- gnative2ascii_LDADD = -L$(here)/.libs libgcj-tools.la
-@@ -761,7 +762,7 @@ gnative2ascii_DEPENDENCIES = libgcj-tool
- ## This is a dummy definition.
- gorbd_SOURCES =
- gorbd_LDFLAGS = --main=gnu.classpath.tools.orbd.Main \
--	-rpath $(toolexeclibdir) -shared-libgcc $(THREADLDFLAGS)
-+	-rpath $(toolexeclibdir) -shared-libgcc $(THREADLDFLAGS) $(extra_ldflags)
- gorbd_LINK = $(GCJLINK)
- ## See jv_convert_LDADD.
- gorbd_LDADD = -L$(here)/.libs libgcj-tools.la
-@@ -770,7 +771,7 @@ gorbd_DEPENDENCIES = libgcj-tools.la
- ## This is a dummy definition.
- grmid_SOURCES =
- grmid_LDFLAGS = --main=gnu.classpath.tools.rmid.Main \
--	-rpath $(toolexeclibdir) -shared-libgcc $(THREADLDFLAGS)
-+	-rpath $(toolexeclibdir) -shared-libgcc $(THREADLDFLAGS) $(extra_ldflags)
- grmid_LINK = $(GCJLINK)
- ## See jv_convert_LDADD.
- grmid_LDADD = -L$(here)/.libs libgcj-tools.la
-@@ -779,7 +780,7 @@ grmid_DEPENDENCIES = libgcj-tools.la
- ## This is a dummy definition.
- gserialver_SOURCES =
- gserialver_LDFLAGS = --main=gnu.classpath.tools.serialver.SerialVer \
--	-rpath $(toolexeclibdir) -shared-libgcc $(THREADLDFLAGS)
-+	-rpath $(toolexeclibdir) -shared-libgcc $(THREADLDFLAGS) $(extra_ldflags)
- gserialver_LINK = $(GCJLINK)
- ## See jv_convert_LDADD.
- gserialver_LDADD = -L$(here)/.libs libgcj-tools.la
-@@ -788,7 +789,7 @@ gserialver_DEPENDENCIES = libgcj-tools.l
- ## This is a dummy definition.
- gtnameserv_SOURCES =
- gtnameserv_LDFLAGS = --main=gnu.classpath.tools.tnameserv.Main \
--	-rpath $(toolexeclibdir) -shared-libgcc $(THREADLDFLAGS)
-+	-rpath $(toolexeclibdir) -shared-libgcc $(THREADLDFLAGS) $(extra_ldflags)
- gtnameserv_LINK = $(GCJLINK)
- ## See jv_convert_LDADD.
- gtnameserv_LDADD = -L$(here)/.libs libgcj-tools.la
-@@ -797,7 +798,7 @@ gtnameserv_DEPENDENCIES = libgcj-tools.l
- ## This is a dummy definition.
- grmic_SOURCES =
- grmic_LDFLAGS = --main=gnu.classpath.tools.rmic.Main \
--	-rpath $(toolexeclibdir) -shared-libgcc $(THREADLDFLAGS)
-+	-rpath $(toolexeclibdir) -shared-libgcc $(THREADLDFLAGS) $(extra_ldflags)
- grmic_LINK = $(GCJLINK)
- ## See jv_convert_LDADD.
- grmic_LDADD = -L$(here)/.libs libgcj-tools.la
-@@ -806,7 +807,7 @@ grmic_DEPENDENCIES = libgcj-tools.la
- ## This is a dummy definition.
- grmiregistry_SOURCES =
- grmiregistry_LDFLAGS = --main=gnu.classpath.tools.rmiregistry.Main \
--	-rpath $(toolexeclibdir) -shared-libgcc $(THREADLDFLAGS)
-+	-rpath $(toolexeclibdir) -shared-libgcc $(THREADLDFLAGS) $(extra_ldflags)
- grmiregistry_LINK = $(GCJLINK)
- ## See jv_convert_LDADD.
- grmiregistry_LDADD = -L$(here)/.libs libgcj-tools.la
---- libjava/exception.cc.jj	2007-09-06 14:06:15.000000000 +0200
-+++ libjava/exception.cc	2007-09-06 17:20:42.000000000 +0200
-@@ -58,6 +58,21 @@ struct java_exception_header
-   _Unwind_Exception unwindHeader;
- };
- 
-+#ifdef __ARM_EABI_UNWINDER__
-+// This is the exception class we report -- "GNUCJAVA".
-+
-+const _Unwind_Exception_Class __gcj_exception_class
-+  = {'G', 'N', 'U', 'C', 'J', 'A', 'V', 'A'};
-+
-+static inline java_exception_header *
-+get_exception_header_from_ue (_Unwind_Exception *exc)
-+{
-+  return reinterpret_cast<java_exception_header *>(exc + 1) - 1;
-+}
-+
-+extern "C" void __cxa_begin_cleanup (_Unwind_Exception*);
-+
-+#else // !__ARM_EABI_UNWINDER__
- // This is the exception class we report -- "GNUCJAVA".
- const _Unwind_Exception_Class __gcj_exception_class
- = ((((((((_Unwind_Exception_Class) 'G' 
-@@ -75,6 +90,7 @@ get_exception_header_from_ue (_Unwind_Ex
- {
-   return reinterpret_cast<java_exception_header *>(exc + 1) - 1;
- }
-+#endif // !__ARM_EABI_UNWINDER__
- 
- /* Perform a throw, Java style. Throw will unwind through this call,
-    so there better not be any handlers or exception thrown here. */
-@@ -89,7 +105,8 @@ _Jv_Throw (jthrowable value)
-     value = new java::lang::NullPointerException ();
-   xh->value = value;
- 
--  xh->unwindHeader.exception_class = __gcj_exception_class;
-+  memcpy (&xh->unwindHeader.exception_class, &__gcj_exception_class,
-+	  sizeof xh->unwindHeader.exception_class);
-   xh->unwindHeader.exception_cleanup = NULL;
- 
-   /* We're happy with setjmp/longjmp exceptions or region-based
-@@ -159,6 +176,21 @@ parse_lsda_header (_Unwind_Context *cont
-   return p;
- }
- 
-+#ifdef __ARM_EABI_UNWINDER__
-+
-+static void **
-+get_ttype_entry(_Unwind_Context *, lsda_header_info* info, _Unwind_Word i)
-+{
-+  _Unwind_Ptr ptr;
-+
-+  ptr = (_Unwind_Ptr) (info->TType - (i * 4));
-+  ptr = _Unwind_decode_target2(ptr);
-+  
-+  return reinterpret_cast<void **>(ptr);
-+}
-+
-+#else
-+
- static void **
- get_ttype_entry (_Unwind_Context *context, lsda_header_info *info, long i)
- {
-@@ -170,6 +202,7 @@ get_ttype_entry (_Unwind_Context *contex
-   return reinterpret_cast<void **>(ptr);
- }
- 
-+#endif
- 
- // Using a different personality function name causes link failures
- // when trying to mix code using different exception handling models.
-@@ -180,12 +213,33 @@ get_ttype_entry (_Unwind_Context *contex
- #define PERSONALITY_FUNCTION	__gcj_personality_v0
- #endif
- 
-+#ifdef __ARM_EABI_UNWINDER__
-+
-+#define CONTINUE_UNWINDING \
-+  do								\
-+    {								\
-+      if (__gnu_unwind_frame(ue_header, context) != _URC_OK)	\
-+	return _URC_FAILURE;					\
-+      return _URC_CONTINUE_UNWIND;				\
-+    }								\
-+  while (0)
-+
-+extern "C" _Unwind_Reason_Code
-+PERSONALITY_FUNCTION (_Unwind_State state,
-+		      struct _Unwind_Exception* ue_header,
-+		      struct _Unwind_Context* context)
-+#else
-+
-+#define CONTINUE_UNWINDING return _URC_CONTINUE_UNWIND
-+
- extern "C" _Unwind_Reason_Code
- PERSONALITY_FUNCTION (int version,
- 		      _Unwind_Action actions,
- 		      _Unwind_Exception_Class exception_class,
- 		      struct _Unwind_Exception *ue_header,
- 		      struct _Unwind_Context *context)
-+
-+#endif
- {
-   java_exception_header *xh = get_exception_header_from_ue (ue_header);
- 
-@@ -197,16 +251,56 @@ PERSONALITY_FUNCTION (int version,
-   int handler_switch_value;
-   bool saw_cleanup;
-   bool saw_handler;
-+  bool foreign_exception;
-   int ip_before_insn = 0;
- 
-+#ifdef __ARM_EABI_UNWINDER__
-+  _Unwind_Action actions;
-+
-+  switch (state & _US_ACTION_MASK)
-+    {
-+    case _US_VIRTUAL_UNWIND_FRAME:
-+      actions = _UA_SEARCH_PHASE;
-+      break;
-+
-+    case _US_UNWIND_FRAME_STARTING:
-+      actions = _UA_CLEANUP_PHASE;
-+      if (!(state & _US_FORCE_UNWIND)
-+	  && ue_header->barrier_cache.sp == _Unwind_GetGR(context, 13))
-+	actions |= _UA_HANDLER_FRAME;
-+      break;
-+
-+    case _US_UNWIND_FRAME_RESUME:
-+      CONTINUE_UNWINDING;
-+      break;
-+
-+    default:
-+      std::abort();
-+    }
-+  actions |= state & _US_FORCE_UNWIND;
-+
-+  // We don't know which runtime we're working with, so can't check this.
-+  // However the ABI routines hide this from us, and we don't actually need
-+  // to know.
-+  foreign_exception = false;
-+
-+  // The dwarf unwinder assumes the context structure holds things like the
-+  // function and LSDA pointers.  The ARM implementation caches these in
-+  // the exception header (UCB).  To avoid rewriting everything we make the
-+  // virtual IP register point at the UCB.
-+  ip = (_Unwind_Ptr) ue_header;
-+  _Unwind_SetGR(context, 12, ip);
- 
-+#else
-   // Interface version check.
-   if (version != 1)
-     return _URC_FATAL_PHASE1_ERROR;
-+  foreign_exception = exception_class != __gcj_exception_class;
-+#endif
- 
-   // Shortcut for phase 2 found handler for domestic exception.
-   if (actions == (_UA_CLEANUP_PHASE | _UA_HANDLER_FRAME)
--      && exception_class == __gcj_exception_class)
-+      && !foreign_exception)
-     {
-       handler_switch_value = xh->handlerSwitchValue;
-       landing_pad = xh->landingPad;
-@@ -227,17 +321,17 @@ PERSONALITY_FUNCTION (int version,
- 
-   // If no LSDA, then there are no handlers or cleanups.
-   if (! language_specific_data)
--    return _URC_CONTINUE_UNWIND;
-+    CONTINUE_UNWINDING;
- 
-   // Parse the LSDA header.
-   p = parse_lsda_header (context, language_specific_data, &info);
- #ifdef HAVE_GETIPINFO
-   ip = _Unwind_GetIPInfo (context, &ip_before_insn);
--  if (! ip_before_insn)
--    --ip;
- #else
-   ip = _Unwind_GetIP (context) - 1;
- #endif
-+  if (! ip_before_insn)
-+    --ip;
-   landing_pad = 0;
-   action_record = 0;
-   handler_switch_value = 0;
-@@ -296,7 +390,7 @@ PERSONALITY_FUNCTION (int version,
-   // If ip is not present in the table, C++ would call terminate.
-   // ??? It is perhaps better to tweek the LSDA so that no-action
-   // is mapped to no-entry for Java.
--  return _URC_CONTINUE_UNWIND;
-+  CONTINUE_UNWINDING;
- 
-  found_something:
-   saw_cleanup = false;
-@@ -334,7 +428,7 @@ PERSONALITY_FUNCTION (int version,
- 	  // During forced unwinding, we only run cleanups.  With a
- 	  // foreign exception class, we have no class info to match.
- 	  else if ((actions & _UA_FORCE_UNWIND)
--	      || exception_class != __gcj_exception_class)
-+		   || foreign_exception)
- 	    ;
- 
- 	  else if (ar_filter > 0)
-@@ -374,15 +468,15 @@ PERSONALITY_FUNCTION (int version,
-     }
- 
-   if (! saw_handler && ! saw_cleanup)
--    return _URC_CONTINUE_UNWIND;
-+	CONTINUE_UNWINDING;
- 
-   if (actions & _UA_SEARCH_PHASE)
-     {
-       if (! saw_handler)
--	return _URC_CONTINUE_UNWIND;
-+	CONTINUE_UNWINDING;
- 
-       // For domestic exceptions, we cache data from phase 1 for phase 2.
--      if (exception_class == __gcj_exception_class)
-+      if (! foreign_exception)
-         {
-           xh->handlerSwitchValue = handler_switch_value;
-           xh->landingPad = landing_pad;
-@@ -396,5 +490,9 @@ PERSONALITY_FUNCTION (int version,
-   _Unwind_SetGR (context, __builtin_eh_return_data_regno (1),
- 		 handler_switch_value);
-   _Unwind_SetIP (context, landing_pad);
-+#ifdef __ARM_EABI_UNWINDER__
-+  if (saw_cleanup)
-+    __cxa_begin_cleanup(ue_header);
-+#endif
-   return _URC_INSTALL_CONTEXT;
- }
---- libjava/gnu/classpath/natVMStackWalker.cc.jj	2007-09-06 14:06:15.000000000 +0200
-+++ libjava/gnu/classpath/natVMStackWalker.cc	2007-09-06 17:20:42.000000000 +0200
-@@ -19,6 +19,7 @@ details.  */
- #include <java/lang/ClassLoader.h>
- #include <java/lang/Class.h>
- 
-+#ifndef __ARM_EABI_UNWINDER__
- // Return the class of the method that contains PC.
- // This is a macro not a function, since defining it as one would
- // introduce an extra frame on the stack.  */
-@@ -44,6 +45,11 @@ details.  */
- 									\
-   klass;								\
-  })
-+#else // __ARM_EABI_UNWINDER__
-+// ARM EABI doesn't support _Unwind_FindEnclosingFunction.
-+#define GET_CALLING_CLASS(PC)				\
-+  (_Jv_StackTrace::GetStackWalkerCallingClass ())
-+#endif
- 
- JArray<jclass> *
- gnu::classpath::VMStackWalker::getClassContext(void)
-@@ -59,14 +65,18 @@ jclass
- gnu::classpath::VMStackWalker::getCallingClass(void)
- {
-   _Jv_InitClass (&::gnu::classpath::VMStackWalker::class$);
--  return _Jv_StackTrace::GetStackWalkerCallingClass ();
-+  jclass result = _Jv_StackTrace::GetStackWalkerCallingClass ();
-+  __asm__ __volatile__ ("" : : "g" (result));
-+  return result;
- }
- 
- jclass
- gnu::classpath::VMStackWalker::getCallingClass(::gnu::gcj::RawData *pc)
- {
-   _Jv_InitClass (&::gnu::classpath::VMStackWalker::class$);
--  return GET_CALLING_CLASS(pc);
-+  jclass result = GET_CALLING_CLASS(pc);
-+  __asm__ __volatile__ ("" : : "g" (result));
-+  return result;
- }
- 
- ::java::lang::ClassLoader *
---- libjava/sysdep/arm/backtrace.h.jj	2007-09-06 17:20:42.000000000 +0200
-+++ libjava/sysdep/arm/backtrace.h	2007-09-06 17:20:42.000000000 +0200
-@@ -0,0 +1,35 @@
-+// backtrace.h - Fallback backtrace implementation. ARM implementation.
-+
-+/* Copyright (C) 2005, 2006  Free Software Foundation
-+
-+   This file is part of libgcj.
-+
-+This software is copyrighted work licensed under the terms of the
-+Libgcj License.  Please consult the file "LIBGCJ_LICENSE" for
-+details.  */
-+
-+#ifndef __SYSDEP_BACKTRACE_H__
-+#define __SYSDEP_BACKTRACE_H__
-+
-+#include <java-stack.h>
-+
-+extern "C"
-+{
-+/* Unwind through the call stack calling TRACE_FN with STATE for every stack
-+   frame.  Returns the reason why the unwinding was stopped.  */
-+#ifdef __ARM_EABI_UNWINDER__
-+
-+#define _Unwind_FindEnclosingFunction(PC) \
-+  (PC)
-+
-+_Unwind_Reason_Code
-+fallback_backtrace (_Unwind_Reason_Code (*)(struct _Unwind_Context*, void*), _Jv_UnwindState *)
-+#else
-+_Unwind_Reason_Code
-+fallback_backtrace (_Unwind_Trace_Fn, _Jv_UnwindState *)
-+#endif
-+{
-+  return _URC_NO_REASON;
-+}
-+}
-+#endif

diff --git a/gcc41-java-arm7.patch b/gcc41-java-arm7.patch
deleted file mode 100644
index 4cce530..0000000
--- a/gcc41-java-arm7.patch
+++ /dev/null
@@ -1,32 +0,0 @@
-2007-09-07  Andrew Haley  <aph@redhat.com>
-
-	* configure.in (noconfigdirs): Remove target-libffi and
-	target-libjava.
-	* configure: Regenerate.
-
---- configure.in	(revision 128249)
-+++ configure.in	(revision 128250)
-@@ -501,8 +501,8 @@ case "${target}" in
-     noconfigdirs="$noconfigdirs target-libffi target-qthreads"
-     ;;
-   arm*-*-linux-gnueabi)
--    noconfigdirs="$noconfigdirs target-libffi target-qthreads"
--    noconfigdirs="$noconfigdirs target-libjava target-libobjc"
-+    noconfigdirs="$noconfigdirs target-qthreads"
-+    noconfigdirs="$noconfigdirs target-libobjc"
-     ;;
-   arm*-*-symbianelf*)
-     noconfigdirs="$noconfigdirs ${libgcj} target-libiberty"
---- configure	(revision 128249)
-+++ configure	(revision 128250)
-@@ -1293,8 +1293,8 @@ case "${target}" in
-     noconfigdirs="$noconfigdirs target-libffi target-qthreads"
-     ;;
-   arm*-*-linux-gnueabi)
--    noconfigdirs="$noconfigdirs target-libffi target-qthreads"
--    noconfigdirs="$noconfigdirs target-libjava target-libobjc"
-+    noconfigdirs="$noconfigdirs target-qthreads"
-+    noconfigdirs="$noconfigdirs target-libobjc"
-     ;;
-   arm*-*-symbianelf*)
-     noconfigdirs="$noconfigdirs ${libgcj} target-libiberty"

diff --git a/gcc41-java-arm8.patch b/gcc41-java-arm8.patch
deleted file mode 100644
index 4820731..0000000
--- a/gcc41-java-arm8.patch
+++ /dev/null
@@ -1,65 +0,0 @@
-2007-07-13  Andrew Haley  <aph@redhat.com>
-
-	* testsuite/libjava.jvmti/jvmti-interp.exp: Likewise.
-	* testsuite/libjava.jni/jni.exp: Use -fdollars-in-identifiers.
-	* testsuite/libjava.jni/cni.exp: Use -fdollars-in-identifiers.
-	* testsuite/libjava.jvmti/jvmti.exp (gcj_jvmti_compile_cxx_to_o): Likewise.
-
---- libjava/testsuite/libjava.cni/cni.exp	(revision 126621)
-+++ libjava/testsuite/libjava.cni/cni.exp	(revision 126622)
-@@ -10,7 +10,7 @@
-   set oname ${name}.o
- 
-   # Find the generated header.
--  lappend options "additional_flags=-I. -I.. -I$srcdir/$subdir"
-+  lappend options "additional_flags=-I. -I.. -I$srcdir/$subdir -fdollars-in-identifiers"
-   # Find libgcj headers.
-   lappend options "additional_flags=-I$srcdir/.."
- 
---- libjava/testsuite/libjava.jvmti/jvmti-interp.exp	(revision 126621)
-+++ libjava/testsuite/libjava.jvmti/jvmti-interp.exp	(revision 126622)
-@@ -47,7 +47,7 @@
- 
-   # Find jni.h and jni_md.h.
-   lappend options "additional_flags=-I$srcdir/../include  \
--                   -I$srcdir/../classpath/include"
-+                   -I$srcdir/../classpath/include -fdollars-in-identifiers"
- 
-   # Append C++ options
-   lappend options "additional_flags=$options_cxx"
---- libjava/testsuite/libjava.jvmti/jvmti.exp	(revision 126621)
-+++ libjava/testsuite/libjava.jvmti/jvmti.exp	(revision 126622)
-@@ -11,11 +11,11 @@
-   set oname ${name}.o
- 
-   # Find the generated header.
--  lappend options "additional_flags=-g -I. -I.."
-+  lappend options "additional_flags=-g -I. -I.. -fdollars-in-identifiers"
-   # Find libgcj headers.
-   lappend options "additional_flags=-I$srcdir/.."
-   # Find jvmti.h, jvmti_md.h, jvmti-int.h, jvm.h requirements
--  lappend options "additional_flags=-I$srcdir/../include -I$srcdir/../classpath/include -I$objdir/../include -I$objdir/../../boehm-gc/include"
-+  lappend options "additional_flags=-I$srcdir/../include -I$srcdir/../classpath/include -I$objdir/../include -I$objdir/../../boehm-gc/include "
- 
-   set x [libjava_prune_warnings \
- 	   [target_compile $file $oname object $options]]
---- libjava/testsuite/libjava.jni/jni.exp	(revision 126621)
-+++ libjava/testsuite/libjava.jni/jni.exp	(revision 126622)
-@@ -31,7 +31,7 @@
- 
-   lappend options "additional_flags=${so_flag} -fPIC"
-   # Find the generated header.
--  lappend options "additional_flags=-I. -I.. -I$srcdir/$subdir"
-+  lappend options "additional_flags=-I. -I.. -I$srcdir/$subdir -fdollars-in-identifiers"
- 
-   # Ensure that the generated header has correct prototypes.
-   set cfile [file rootname $file].c
-@@ -219,7 +219,7 @@
-   lappend options "additional_flags=-I. -I.. -I$srcdir/$subdir"
- 
-   # Find jni.h and jni_md.h.
--  lappend options "additional_flags=-I$srcdir/../include -I$srcdir/../classpath/include"
-+  lappend options "additional_flags=-I$srcdir/../include -I$srcdir/../classpath/include -fdollars-in-identifiers"
- 
-   # Append C++ options
-   lappend options "additional_flags=$options_cxx"

diff --git a/gcc41-java-bogus-debugline.patch b/gcc41-java-bogus-debugline.patch
deleted file mode 100644
index 9cbdb0b..0000000
--- a/gcc41-java-bogus-debugline.patch
+++ /dev/null
@@ -1,36 +0,0 @@
-2007-03-16  Andrew Haley  <aph@redhat.com>
-
-	* class.c (push_class): Don't bogusly guess the source filename.
-	* jcf-parse.c (give_name_to_class): Don't set input_location from
-	DECL_ARTIFICIAL decls.
-
---- gcc/java/class.c        (revision 122746)
-+++ gcc/java/class.c        (working copy)
-@@ -426,8 +426,7 @@
-   tree decl, signature;
-   location_t saved_loc = input_location;
- #ifndef USE_MAPPED_LOCATION
--  tree source_name = identifier_subst (class_name, "", '.', '/', ".java");
--  input_filename = IDENTIFIER_POINTER (source_name);
-+  input_filename = "<unknown>";
-   input_line = 0;
- #endif
-   CLASS_P (class_type) = 1;
---- gcc/java/jcf-parse.c    (revision 122746)
-+++ gcc/java/jcf-parse.c    (working copy)
-@@ -1221,9 +1221,12 @@ give_name_to_class (JCF *jcf, int i)
- 	main_input_filename = sfname;
-       }
- #else
--      input_location = DECL_SOURCE_LOCATION (TYPE_NAME (this_class));
--      if (main_input_filename == NULL && jcf == main_jcf)
--	main_input_filename = input_filename;
-+      if (! DECL_ARTIFICIAL (TYPE_NAME (this_class)))
-+	{
-+	  input_location = DECL_SOURCE_LOCATION (TYPE_NAME (this_class));
-+	  if (main_input_filename == NULL && jcf == main_jcf)
-+	    main_input_filename = input_filename;
-+	}
- #endif
- 
-       jcf->cpool.data[i].t = this_class;

diff --git a/gcc41-java-libdotdotlib.patch b/gcc41-java-libdotdotlib.patch
deleted file mode 100644
index 5d2c0d3..0000000
--- a/gcc41-java-libdotdotlib.patch
+++ /dev/null
@@ -1,48 +0,0 @@
-2006-07-20  Jakub Jelinek  <jakub@redhat.com>
-
-	* configure.ac (toolexeclibdir, dbexecdir): Canonicalize /lib/../lib
-	to /lib.
-	* configure: Rebuilt.
-
---- libjava/configure.ac.jj	2006-07-20 14:01:02.000000000 +0200
-+++ libjava/configure.ac	2006-07-20 16:36:31.000000000 +0200
-@@ -1262,6 +1262,7 @@ case ${version_specific_libs} in
-     multi_os_directory=`$CC -print-multi-os-directory`
-     case $multi_os_directory in
-       .) toolexeclibdir=$toolexecmainlibdir ;; # Avoid trailing /.
-+      ../lib*) toolexeclibdir='$(subst /lib/../lib,/lib,'$toolexecmainlibdir/$multi_os_directory')' ;;
-       *) toolexeclibdir=$toolexecmainlibdir/$multi_os_directory ;;
-     esac
-     ;;
-@@ -1278,6 +1279,10 @@ case $multi_os_directory in
-    dbexecdir='$(libdir)/gcj-$(gcc_version)' # Avoid /.
-    ac_configure_args="$ac_configure_args --with-native-libdir=\$\(libdir\)/gcj-`cat $srcdir/../gcc/BASE-VER`"
-    ;;
-+  ../lib*)
-+   dbexecdir='$(subst /lib/../lib,/lib,$(libdir)/'$multi_os_directory'/gcj-$(gcc_version))'
-+   ac_configure_args="$ac_configure_args --with-native-libdir=\$\(libdir\)/$multi_os_directory/gcj-`cat $srcdir/../gcc/BASE-VER`"
-+   ;;
-   *)
-    dbexecdir='$(libdir)/'$multi_os_directory'/gcj-$(gcc_version)'
-    ac_configure_args="$ac_configure_args --with-native-libdir=\$\(libdir\)/$multi_os_directory/gcj-`cat $srcdir/../gcc/BASE-VER`"
---- libjava/configure.jj	2006-07-20 14:01:02.000000000 +0200
-+++ libjava/configure	2006-07-20 16:45:24.000000000 +0200
-@@ -14863,6 +14864,7 @@ case ${version_specific_libs} in
-     multi_os_directory=`$CC -print-multi-os-directory`
-     case $multi_os_directory in
-       .) toolexeclibdir=$toolexecmainlibdir ;; # Avoid trailing /.
-+      ../lib*) toolexeclibdir='$(subst /lib/../lib,/lib,'$toolexecmainlibdir/$multi_os_directory')' ;;
-       *) toolexeclibdir=$toolexecmainlibdir/$multi_os_directory ;;
-     esac
-     ;;
-@@ -14879,6 +14881,10 @@ case $multi_os_directory in
-    dbexecdir='$(libdir)/gcj-$(gcc_version)' # Avoid /.
-    ac_configure_args="$ac_configure_args --with-native-libdir=\$\(libdir\)/gcj-`cat $srcdir/../gcc/BASE-VER`"
-    ;;
-+  ../lib*)
-+   dbexecdir='$(subst /lib/../lib,/lib,$(libdir)/'$multi_os_directory'/gcj-$(gcc_version))'
-+   ac_configure_args="$ac_configure_args --with-native-libdir=\$\(libdir\)/$multi_os_directory/gcj-`cat $srcdir/../gcc/BASE-VER`"
-+   ;;
-   *)
-    dbexecdir='$(libdir)/'$multi_os_directory'/gcj-$(gcc_version)'
-    ac_configure_args="$ac_configure_args --with-native-libdir=\$\(libdir\)/$multi_os_directory/gcj-`cat $srcdir/../gcc/BASE-VER`"

diff --git a/gcc41-java-nomulti.patch b/gcc41-java-nomulti.patch
deleted file mode 100644
index 3a6554d..0000000
--- a/gcc41-java-nomulti.patch
+++ /dev/null
@@ -1,25 +0,0 @@
---- libjava/configure.ac.jj	2004-08-16 21:13:29.000000000 +0200
-+++ libjava/configure.ac	2004-08-21 11:44:59.020755542 +0200
-@@ -367,6 +367,10 @@ use_gtk_awt=""
- TOOLKIT=
- AC_SUBST(TOOLKIT)
- 
-+if test -n "${with_multisubdir}"; then
-+  peerlibs=no
-+fi
-+
- for peer in $peerlibs ; do
-   case $peer in
-     xlib)
---- libjava/configure.jj	2004-08-16 21:22:14.000000000 +0200
-+++ libjava/configure	2004-08-21 11:45:16.260738060 +0200
-@@ -4118,6 +4118,9 @@ use_gtk_awt=""
- # The default toolkit to use is the first one specified.
- TOOLKIT=
- 
-+if test -n "${with_multisubdir}"; then
-+  peerlibs=no
-+fi
- 
- for peer in $peerlibs ; do
-   case $peer in

diff --git a/gcc41-java-slow_pthread_self.patch b/gcc41-java-slow_pthread_self.patch
deleted file mode 100644
index de160be..0000000
--- a/gcc41-java-slow_pthread_self.patch
+++ /dev/null
@@ -1,15 +0,0 @@
-2005-05-20  Jakub Jelinek  <jakub@redhat.com>
-
-	* configure.host (slow_pthread_self): Set to empty unconditionally
-	on Linux targets.
-
---- libjava/configure.host	(.../gcc-4_0-branch)	(revision 107266)
-+++ libjava/configure.host	(.../redhat/gcc-4_0-branch)	(revision 107414)
-@@ -174,6 +174,7 @@
-   sh-linux* | sh[34]*-linux*)
-   	can_unwind_signal=yes
- 	libgcj_ld_symbolic='-Wl,-Bsymbolic'
-+	slow_pthread_self=
- 	if test x$slow_pthread_self = xyes \
- 	   && test x$cross_compiling != xyes; then
- 	  cat > conftest.c <<EOF

diff --git a/gcc41-jdwp.patch b/gcc41-jdwp.patch
deleted file mode 100644
index 35e4b7b..0000000
--- a/gcc41-jdwp.patch
+++ /dev/null
@@ -1,242 +0,0 @@
-2007-09-24  Keith Seitz  <keiths@redhat.com>
-
-	* include/jvm.h (struct natThread): Add new field 'frame'.
-	* include/java-interp.h (_Jv_Frame): Use _Jv_ThreadStackPeek,
-	_Jv_ThreadStackPop, and _Jv_ThreadStackPush instead of
-	java.lang.Thread.frame.
-	(~_Jv_Frame): Use _Jv_ThreadStackPop.
-	* java/lang/natThread.cc (_Jv_ThreadStackPeek): New function.
-	(_Jv_ThreadStackPush): New function.
-	(_Jv_ThreadStackPop): New function.
-	* java/lang/Thread.java (frame): Remove field to restore
-	C++ ABI compatibility.
-	* gnu/classpath/jdwp/natVMVirtualMachine.cc (getFrames): Use
-	_Jv_ThreadStackPeek.
-	(getFrame): Likewise.
-	* gnu/classpath/jdwp/natVMFrame.cc (getFrameDepth): Likewise.
-	* jvmti.cc (getLocalFrame): Likewise.
-	(_Jv_JVMTI_GetFrameCount): Likewise.
-	(_Jv_JVMTI_GetThreadState): Likewise.
-	(_Jv_JVMTI_GetStackTrace): Likewise.
-	* interpret.cc (_Jv_ReportJVMTIExceptionThrow): Likewise.
-	* headers.txt (java/lang/Thread.h): Prepend declarations
-	for _Jv_ThreadStackPeek, _Jv_ThreadStackPush, and _Jv_ThreadStackPop.
-	Add as friend functions.
-	* jni.cc (_Jv_JNIMethod::call): Push a frame onto the stack when
-	calling a JNI method.
-
---- libjava/interpret.cc	(revision 128603)
-+++ libjava/interpret.cc	(working copy)
-@@ -1709,7 +1709,7 @@
- _Jv_ReportJVMTIExceptionThrow (jthrowable ex)
- {
-   jthread thread = ::java::lang::Thread::currentThread ();
--  _Jv_Frame *frame = reinterpret_cast<_Jv_Frame *> (thread->frame);
-+  _Jv_Frame *frame = _Jv_ThreadStackPeek (thread);
-   jmethodID throw_meth = frame->self->get_method ();
-   jlocation throw_loc = -1;
-   if (frame->frame_type == frame_interpreter)
---- libjava/include/java-interp.h	(revision 128603)
-+++ libjava/include/java-interp.h	(working copy)
-@@ -391,14 +391,14 @@
-   {
-     self = s;
-     frame_type = type;
--    next = (_Jv_Frame *) thr->frame;
--    thr->frame = (gnu::gcj::RawData *) this;
-+    next = _Jv_ThreadStackPeek (thr);
-+    _Jv_ThreadStackPush (thr, this);
-     thread = thr;
-   }
- 
-   ~_Jv_Frame ()
-   {
--    thread->frame = (gnu::gcj::RawData *) next;
-+    _Jv_ThreadStackPop (thread);
-   }
- 
-   int depth ()
---- libjava/include/jvm.h	(revision 128603)
-+++ libjava/include/jvm.h	(working copy)
-@@ -34,6 +34,8 @@
- 
- #include <sysdep/locks.h>
- 
-+class _Jv_Frame;
-+
- /* Macro for possible unused arguments.  */
- #define MAYBE_UNUSED __attribute__((__unused__))
- 
-@@ -767,6 +769,12 @@
- 
-   // Each thread has its own JNI object.
-   _Jv_JNIEnv *jni_env;
-+
-+  // Describes the topmost frame in the thread's composite
-+  // (interp + JNI) stack. Added here to maintain C++ ABI
-+  // compatibility with previous versions. Newer versions
-+  // of gcj put this in java/lang/Thread.java.
-+  _Jv_Frame *frame;
- };
- 
- #endif /* __JAVA_JVM_H__ */
---- libjava/jni.cc	(revision 128603)
-+++ libjava/jni.cc	(working copy)
-@@ -2343,6 +2343,10 @@
-   // Copy over passed-in arguments.
-   memcpy (&real_args[offset], args, _this->args_raw_size);
- 
-+  // Add a frame to the composite (interpreted + JNI) call stack
-+  java::lang::Thread *thread = java::lang::Thread::currentThread ();
-+  _Jv_NativeFrame nat_frame (_this, thread);
-+
-   // The actual call to the JNI function.
- #if FFI_NATIVE_RAW_API
-   ffi_raw_call (&_this->jni_cif, (void (*)()) _this->function,
---- libjava/jvmti.cc	(revision 128603)
-+++ libjava/jvmti.cc	(working copy)
-@@ -228,7 +228,7 @@
-   THREAD_CHECK_VALID (thread);
-   THREAD_CHECK_IS_ALIVE (thread);
-   
--  _Jv_Frame *frame = reinterpret_cast<_Jv_Frame *> (thread->frame);
-+  _Jv_Frame *frame = _Jv_ThreadStackPeek (thread);
-   
-   for (int i = 0; i < depth; i++)
-     {    
-@@ -516,7 +516,7 @@
-   THREAD_CHECK_VALID (thread);
-   THREAD_CHECK_IS_ALIVE (thread);
-    
--  _Jv_Frame *frame = reinterpret_cast<_Jv_Frame *> (thread->frame);
-+  _Jv_Frame *frame = _Jv_ThreadStackPeek (thread);
-   (*frame_count) = frame->depth ();
-   return JVMTI_ERROR_NONE;
- }
-@@ -543,7 +543,7 @@
-       if (thread->isInterrupted ())
- 	state |= JVMTI_THREAD_STATE_INTERRUPTED;
- 
--      _Jv_Frame *frame = reinterpret_cast<_Jv_Frame *> (thread->frame);
-+      _Jv_Frame *frame = _Jv_ThreadStackPeek (thread);
-       if (frame != NULL && frame->frame_type == frame_native)
- 	state |= JVMTI_THREAD_STATE_IN_NATIVE;
- 
-@@ -1273,7 +1273,7 @@
-   ILLEGAL_ARGUMENT (start_depth >= (*frame_count));
-   ILLEGAL_ARGUMENT (start_depth < (-(*frame_count)));
-   
--  _Jv_Frame *frame = reinterpret_cast<_Jv_Frame *> (thread->frame);
-+  _Jv_Frame *frame = _Jv_ThreadStackPeek (thread);
- 
-   // If start_depth is negative use this to determine at what depth to start
-   // the trace by adding it to the length of the call stack.  This allows the
---- libjava/headers.txt	(revision 128603)
-+++ libjava/headers.txt	(working copy)
-@@ -6,6 +6,7 @@
- 
- class java/lang/Thread
- prepend class _Jv_JNIEnv;
-+prepend class _Jv_Frame;
- prepend #define _JV_NOT_OWNER 1
- prepend #define _JV_INTERRUPTED 2
- prepend _Jv_JNIEnv * _Jv_GetCurrentJNIEnv ();
-@@ -17,6 +18,9 @@
- prepend jint _Jv_DetachCurrentThread ();
- prepend struct _Jv_Thread_t;
- prepend _Jv_Thread_t* _Jv_ThreadGetData (java::lang::Thread* thread);
-+prepend _Jv_Frame *_Jv_ThreadStackPeek (java::lang::Thread *thread);
-+prepend void _Jv_ThreadStackPush (java::lang::Thread *thread, _Jv_Frame *frame);
-+prepend void _Jv_ThreadStackPop (java::lang::Thread *thread);
- friend _Jv_JNIEnv * ::_Jv_GetCurrentJNIEnv ();
- friend void ::_Jv_SetCurrentJNIEnv (_Jv_JNIEnv *env);
- friend void ::_Jv_ThreadRun (java::lang::Thread* thread);
-@@ -24,6 +28,9 @@
- friend java::lang::Thread* ::_Jv_AttachCurrentThread (jstring name, java::lang::ThreadGroup* group);
- friend java::lang::Thread* ::_Jv_AttachCurrentThreadAsDaemon (jstring name, java::lang::ThreadGroup* group);
- friend jint (::_Jv_DetachCurrentThread) ();
-+friend _Jv_Frame *::_Jv_ThreadStackPeek (java::lang::Thread *thread);
-+friend void ::_Jv_ThreadStackPush (java::lang::Thread *thread, _Jv_Frame *frame);
-+friend void ::_Jv_ThreadStackPop (java::lang::Thread *thread);
- 
- class java/lang/String
- prepend jchar* _Jv_GetStringChars (jstring str);
---- libjava/gnu/classpath/jdwp/natVMFrame.cc	(revision 128603)
-+++ libjava/gnu/classpath/jdwp/natVMFrame.cc	(working copy)
-@@ -181,7 +181,7 @@
- getFrameDepth (_Jv_Frame *frame)
- {
-   jint depth = 0;
--  _Jv_Frame *top_frame = (_Jv_Frame *) frame->thread->frame;
-+  _Jv_Frame *top_frame = _Jv_ThreadStackPeek (frame->thread);
-   jint num_frames = VMVirtualMachine::getFrameCount (frame->thread);
-   
-   while (frame != top_frame)
---- libjava/gnu/classpath/jdwp/natVMVirtualMachine.cc	(revision 128603)
-+++ libjava/gnu/classpath/jdwp/natVMVirtualMachine.cc	(working copy)
-@@ -553,7 +553,7 @@
-      
-   frame_list = new ::java::util::ArrayList (num_frames);
-   
--  _Jv_Frame *vm_frame = reinterpret_cast<_Jv_Frame *> (thread->frame);
-+  _Jv_Frame *vm_frame = _Jv_ThreadStackPeek (thread);
-   
-   // Take start frames off the top of the stack
-   while (vm_frame != NULL && start > 0)
-@@ -584,7 +584,7 @@
- {
-   using namespace gnu::classpath::jdwp::exception;
-   
--  _Jv_Frame *vm_frame = (_Jv_Frame *) thread->frame;
-+  _Jv_Frame *vm_frame = _Jv_ThreadStackPeek (thread);
-   jint depth = 0;
-   _Jv_Frame *frame = reinterpret_cast<_Jv_Frame *> (frameID); 
-   
---- libjava/java/lang/Thread.java	(revision 128603)
-+++ libjava/java/lang/Thread.java	(working copy)
-@@ -186,9 +186,6 @@
-   // This describes the top-most interpreter frame for this thread.
-   RawData interp_frame;
-   
--  // This describes the top most frame in the composite (interp + JNI) stack
--  RawData frame;
--
-   // Current state.
-   volatile int state;
- 
---- libjava/java/lang/natThread.cc	(revision 128603)
-+++ libjava/java/lang/natThread.cc	(working copy)
-@@ -15,6 +15,7 @@
- #include <gcj/cni.h>
- #include <jvm.h>
- #include <java-threads.h>
-+#include <java-interp.h>
- 
- #include <gnu/gcj/RawDataManaged.h>
- #include <java/lang/Thread.h>
-@@ -525,3 +526,25 @@
- 
-   return 0;
- }
-+
-+_Jv_Frame *
-+_Jv_ThreadStackPeek (java::lang::Thread *thread)
-+{
-+  struct natThread *nt = (natThread *) thread->data;
-+  return nt->frame;
-+}
-+
-+void
-+_Jv_ThreadStackPush (java::lang::Thread *thread, _Jv_Frame *frame)
-+{
-+  struct natThread *nt = (natThread *) thread->data;
-+  nt->frame = frame;
-+}
-+
-+void
-+_Jv_ThreadStackPop (java::lang::Thread *thread)
-+{
-+  struct natThread *nt = (natThread *) thread->data;
-+  _Jv_Frame *next = nt->frame->next;
-+  nt->frame = next;
-+}

diff --git a/gcc41-libjava-visibility.patch b/gcc41-libjava-visibility.patch
deleted file mode 100644
index 763ecc3..0000000
--- a/gcc41-libjava-visibility.patch
+++ /dev/null
@@ -1,145 +0,0 @@
-2007-03-29  Andrew Haley  <aph@redhat.com>
-
-	* jvgenmain.c (main): Change main to use class$, not class$$.
-	(do_mangle_classname): Likewise.
-	* class.c (hide): New function.
-	(add_field): Hide everything that shouldn't be visible outside a
-	DSO.
-	(build_static_class_ref): Likewise.
-	(build_classdollar_field): Likewise.
-	(make_class_data): Likewise.
-	(layout_class_method): Likewise.
-	* expr.c (special_method_p): New function.
-
---- gcc/java/class.c	(revision 122746)
-+++ gcc/java/class.c	(working copy)
-@@ -689,6 +688,13 @@
-   return fntype;
- }
- 
-+static void
-+hide (tree decl)
-+{
-+  DECL_VISIBILITY (decl) = VISIBILITY_HIDDEN;
-+  DECL_VISIBILITY_SPECIFIED (decl) = 1;
-+}
-+
- tree
- add_method_1 (tree this_class, int access_flags, tree name, tree function_type)
- {
-@@ -799,6 +805,10 @@
-       /* Always make field externally visible.  This is required so
- 	 that native methods can always access the field.  */
-       TREE_PUBLIC (field) = 1;
-+      /* Hide everything that shouldn't be visible outside a DSO.  */
-+      if (flag_indirect_classes
-+	  || (FIELD_PRIVATE (field)))
-+	hide (field);
-       /* Considered external unless we are compiling it into this
- 	 object file.  */
-       DECL_EXTERNAL (field) = (is_compiled_class (class) != 2);
-@@ -956,7 +966,11 @@
-       decl = build_decl (VAR_DECL, decl_name, class_type_node);
-       TREE_STATIC (decl) = 1;
-       if (! flag_indirect_classes)
--	TREE_PUBLIC (decl) = 1;
-+	{
-+	  TREE_PUBLIC (decl) = 1;
-+	  if (CLASS_PRIVATE (TYPE_NAME (type)))
-+	    hide (decl);
-+	}
-       DECL_IGNORED_P (decl) = 1;
-       DECL_ARTIFICIAL (decl) = 1;
-       if (is_compiled_class (type) == 1)
-@@ -995,6 +1009,7 @@
-       TREE_CONSTANT (decl) = 1;
-       TREE_READONLY (decl) = 1;
-       TREE_PUBLIC (decl) = 1;
-+      hide (decl);
-       DECL_IGNORED_P (decl) = 1;
-       DECL_ARTIFICIAL (decl) = 1;
-       MAYBE_CREATE_VAR_LANG_DECL_SPECIFIC (decl);
-@@ -1640,6 +1655,10 @@
- 
-       TREE_PUBLIC (dtable_decl) = 1;
-       DECL_INITIAL (dtable_decl) = dtable;
-+      /* The only dispatch table exported from a DSO is the dispatch
-+	 table for java.lang.Class.  */
-+      if (DECL_NAME (type_decl) != id_class)
-+	hide (dtable_decl);
-       if (! flag_indirect_classes)
- 	rest_of_decl_compilation (dtable_decl, 1, 0);
-       /* Maybe we're compiling Class as the first class.  If so, set
-@@ -2509,6 +2528,12 @@
- 
-   TREE_PUBLIC (method_decl) = 1;
- 
-+  if (flag_indirect_classes
-+      || (METHOD_PRIVATE (method_decl) && METHOD_STATIC (method_decl)
-+	  && ! METHOD_NATIVE (method_decl)
-+	  && ! special_method_p (method_decl)))
-+    hide (method_decl);
-+
-   /* Considered external unless it is being compiled into this object
-      file, or it was already flagged as external.  */
-   if (!DECL_EXTERNAL (method_decl))
---- gcc/java/jvgenmain.c	(revision 122746)
-+++ gcc/java/jvgenmain.c	(working copy)
-@@ -143,8 +143,8 @@
-     fprintf (stream, "   JvRunMainName (\"%s\", argc, argv);\n", classname);
-   else
-     {
--      fprintf (stream, "   extern void *%s;\n", mangled_classname);
--      fprintf (stream, "   JvRunMain (%s, argc, argv);\n", mangled_classname);
-+      fprintf (stream, "   extern char %s;\n", mangled_classname);
-+      fprintf (stream, "   JvRunMain (&%s, argc, argv);\n", mangled_classname);
-     }
-   fprintf (stream, "}\n");
-   if (stream != stdout && fclose (stream) != 0)
-@@ -176,7 +176,7 @@
- 	count++;
-     }
-   append_gpp_mangled_name (&ptr [-count], count);
--  obstack_grow (mangle_obstack, "7class$$E", strlen ("7class$$E"));
-+  obstack_grow (mangle_obstack, "6class$E", strlen ("6class$E"));
-   obstack_1grow (mangle_obstack, '\0');
-   return obstack_finish (mangle_obstack);
- }
---- gcc/java/expr.c	(revision 122746)
-+++ gcc/java/expr.c	(working copy)
-@@ -2121,6 +2121,25 @@
- 
-    {NULL, NULL, NULL, NULL, 0, NULL}};
- 
-+/* True if this method is special, i.e. it's a private method that
-+   should be exported fro a DSO.  */
-+
-+bool
-+special_method_p (tree candidate_method)
-+{
-+  tree context = DECL_NAME (TYPE_NAME (DECL_CONTEXT (candidate_method)));
-+  tree method = DECL_NAME (candidate_method);
-+  rewrite_rule *p;
-+
-+  for (p = rules; p->classname; p++)
-+    {
-+      if (get_identifier (p->classname) == context
-+	  && get_identifier (p->method) == method)
-+	return true;
-+    }
-+  return false;
-+}
-+
- /* Scan the rules list for replacements for *METHOD_P and replace the
-    args accordingly.  If the rewrite results in an access to a private
-    method, update SPECIAL.*/
---- gcc/java/java-tree.h	(revision 122746)
-+++ gcc/java/java-tree.h	(working copy)
-@@ -1171,6 +1171,7 @@
- extern void initialize_builtins (void);
- 
- extern tree lookup_name (tree);
-+extern bool special_method_p (tree);
- extern void maybe_rewrite_invocation (tree *, tree *, tree *, tree *);
- extern tree build_known_method_ref (tree, tree, tree, tree, tree, tree);
- extern tree build_class_init (tree, tree);

diff --git a/gcc41-omp-outer-ctx.patch b/gcc41-omp-outer-ctx.patch
deleted file mode 100644
index 7f0b1f6..0000000
--- a/gcc41-omp-outer-ctx.patch
+++ /dev/null
@@ -1,133 +0,0 @@
-2007-12-03  Jakub Jelinek  <jakub@redhat.com>
-
-	* omp-low.c (lookup_decl_in_outer_ctx): Allow calling this
-	with !ctx->is_nested.
-	(maybe_lookup_decl_in_outer_ctx): Look up in outer contexts
-	even if !ctx->is_nested.
-	(lower_copyprivate_clauses, lower_send_clauses,
-	lower_send_shared_vars): Call lookup_decl_in_outer_ctx
-	unconditionally.
-
-	* testsuite/libgomp.c/private-1.c: New test.
-
---- gcc/omp-low.c	(revision 130589)
-+++ gcc/omp-low.c	(revision 130590)
-@@ -1518,12 +1518,10 @@ lookup_decl_in_outer_ctx (tree decl, omp
-   tree t;
-   omp_context *up;
- 
--  gcc_assert (ctx->is_nested);
--
-   for (up = ctx->outer, t = NULL; up && t == NULL; up = up->outer)
-     t = maybe_lookup_decl (decl, up);
- 
--  gcc_assert (t || is_global_var (decl));
-+  gcc_assert (!ctx->is_nested || t || is_global_var (decl));
- 
-   return t ? t : decl;
- }
-@@ -1538,9 +1536,8 @@ maybe_lookup_decl_in_outer_ctx (tree dec
-   tree t = NULL;
-   omp_context *up;
- 
--  if (ctx->is_nested)
--    for (up = ctx->outer, t = NULL; up && t == NULL; up = up->outer)
--      t = maybe_lookup_decl (decl, up);
-+  for (up = ctx->outer, t = NULL; up && t == NULL; up = up->outer)
-+    t = maybe_lookup_decl (decl, up);
- 
-   return t ? t : decl;
- }
-@@ -2012,7 +2009,7 @@ lower_copyprivate_clauses (tree clauses,
-       by_ref = use_pointer_for_field (var, false);
- 
-       ref = build_sender_ref (var, ctx);
--      x = (ctx->is_nested) ? lookup_decl_in_outer_ctx (var, ctx) : var;
-+      x = lookup_decl_in_outer_ctx (var, ctx);
-       x = by_ref ? build_fold_addr_expr (x) : x;
-       x = build_gimple_modify_stmt (ref, x);
-       gimplify_and_add (x, slist);
-@@ -2053,9 +2050,8 @@ lower_send_clauses (tree clauses, tree *
- 	  continue;
- 	}
- 
--      var = val = OMP_CLAUSE_DECL (c);
--      if (ctx->is_nested)
--	var = lookup_decl_in_outer_ctx (val, ctx);
-+      val = OMP_CLAUSE_DECL (c);
-+      var = lookup_decl_in_outer_ctx (val, ctx);
- 
-       if (OMP_CLAUSE_CODE (c) != OMP_CLAUSE_COPYIN
- 	  && is_global_var (var))
-@@ -2127,13 +2123,10 @@ lower_send_shared_vars (tree *ilist, tre
-       if (!nvar || !DECL_HAS_VALUE_EXPR_P (nvar))
- 	continue;
- 
--      var = ovar;
--
-       /* If CTX is a nested parallel directive.  Find the immediately
- 	 enclosing parallel or workshare construct that contains a
- 	 mapping for OVAR.  */
--      if (ctx->is_nested)
--	var = lookup_decl_in_outer_ctx (ovar, ctx);
-+      var = lookup_decl_in_outer_ctx (ovar, ctx);
- 
-       if (use_pointer_for_field (ovar, true))
- 	{
---- libgomp/testsuite/libgomp.c/private-1.c	(revision 0)
-+++ libgomp/testsuite/libgomp.c/private-1.c	(revision 130590)
-@@ -0,0 +1,54 @@
-+extern void abort (void);
-+
-+int a = 18;
-+
-+void
-+f1 (int i, int j, int k)
-+{
-+  int l = 6, m = 7, n = 8;
-+#pragma omp parallel private(j, m) shared(k, n) firstprivate(i, l) \
-+	    num_threads(1)
-+  {
-+    j = 6;
-+    m = 5;
-+    if (++a != 19 || ++i != 9 || j != 6 || ++l != 7 || m != 5 || ++n != 9)
-+      #pragma omp atomic
-+	k++;
-+  }
-+  if (a != 19 || i != 8 || j != 26 || k != 0 || l != 6 || m != 7 || n != 9)
-+    abort ();
-+}
-+
-+int v1 = 1, v2 = 2, v5 = 5;
-+int err;
-+
-+void
-+f2 (void)
-+{
-+  int v3 = 3;
-+#pragma omp sections private (v1) firstprivate (v2)
-+  {
-+  #pragma omp section
-+    {
-+      int v4 = 4;
-+      v1 = 7;
-+      #pragma omp parallel num_threads(1) firstprivate(v1, v2, v3, v4)
-+	{
-+	  if (++v1 != 8 || ++v2 != 3 || ++v3 != 4 || ++v4 != 5 || ++v5 != 6)
-+	    err = 1;
-+	}
-+      if (v1 != 7 || v2 != 2 || v3 != 3 || v4 != 4 || v5 != 6)
-+	abort ();
-+      if (err)
-+	abort ();
-+    }
-+  }
-+}
-+
-+int
-+main (void)
-+{
-+  f1 (8, 26, 0);
-+  f2 ();
-+  return 0;
-+}

diff --git a/gcc41-ppc32-retaddr.patch b/gcc41-ppc32-retaddr.patch
deleted file mode 100644
index e9ae1bc..0000000
--- a/gcc41-ppc32-retaddr.patch
+++ /dev/null
@@ -1,86 +0,0 @@
-2005-11-28  Jakub Jelinek  <jakub@redhat.com>
-
-	* config/rs6000/rs6000.c (rs6000_return_addr): If COUNT == 0,
-	read word RETURN_ADDRESS_OFFSET bytes above arg_pointer_rtx
-	instead of doing an extran indirection from frame_pointer_rtx.
-
-	* gcc.dg/20051128-1.c: New test.
-
---- gcc/config/rs6000/rs6000.c.jj	2005-11-26 14:38:01.000000000 +0100
-+++ gcc/config/rs6000/rs6000.c	2005-11-28 20:32:18.000000000 +0100
-@@ -13166,17 +13166,22 @@ rs6000_return_addr (int count, rtx frame
-      don't try to be too clever here.  */
-   if (count != 0 || (DEFAULT_ABI != ABI_AIX && flag_pic))
-     {
-+      rtx x;
-       cfun->machine->ra_needs_full_frame = 1;
- 
--      return
--	gen_rtx_MEM
--	  (Pmode,
--	   memory_address
--	   (Pmode,
--	    plus_constant (copy_to_reg
--			   (gen_rtx_MEM (Pmode,
--					 memory_address (Pmode, frame))),
--			   RETURN_ADDRESS_OFFSET)));
-+      if (count == 0)
-+	{
-+	  gcc_assert (frame == frame_pointer_rtx);
-+	  x = arg_pointer_rtx;
-+	}
-+      else
-+	{
-+	  x = memory_address (Pmode, frame);
-+	  x = copy_to_reg (gen_rtx_MEM (Pmode, x));
-+	}
-+
-+      x = plus_constant (x, RETURN_ADDRESS_OFFSET);
-+      return gen_rtx_MEM (Pmode, memory_address (Pmode, x));
-     }
- 
-   cfun->machine->ra_need_lr = 1;
---- gcc/testsuite/gcc.dg/20051128-1.c.jj	2005-10-10 11:21:41.096999000 +0200
-+++ gcc/testsuite/gcc.dg/20051128-1.c	2005-11-28 12:30:57.000000000 +0100
-@@ -0,0 +1,41 @@
-+/* { dg-do run } */
-+/* { dg-options "-O2 -fpic" } */
-+
-+extern void exit (int);
-+extern void abort (void);
-+
-+int b;
-+
-+struct A
-+{
-+  void *pad[147];
-+  void *ra, *h;
-+  long o;
-+};
-+
-+void
-+__attribute__((noinline))
-+foo (struct A *a, void *x)
-+{
-+  __builtin_memset (a, 0, sizeof (a));
-+  if (!b)
-+    exit (0);
-+}
-+
-+void
-+__attribute__((noinline))
-+bar (void)
-+{
-+  struct A a;
-+
-+  __builtin_unwind_init ();
-+  foo (&a, __builtin_return_address (0));
-+}
-+
-+int
-+main (void)
-+{
-+  bar ();
-+  abort ();
-+  return 0;
-+}

diff --git a/gcc41-ppc64-ia64-GNU-stack.patch b/gcc41-ppc64-ia64-GNU-stack.patch
deleted file mode 100644
index 655f0fe..0000000
--- a/gcc41-ppc64-ia64-GNU-stack.patch
+++ /dev/null
@@ -1,86 +0,0 @@
-2007-08-27  Jakub Jelinek  <jakub@redhat.com>
-
-	* config/rs6000/rs6000.c (rs6000_elf_end_indicate_exec_stack): New.
-	* config/rs6000/linux64.h (TARGET_ASM_FILE_END): Use
-	rs6000_elf_end_indicate_exec_stack.
-	* config/ia64/ia64.c (ia64_linux_file_end): new.
-	* config/ia64/linux.h (TARGET_ASM_FILE_END): Use ia64_linux_file_end.
-
---- gcc/config/rs6000/rs6000.c.jj	2007-06-27 12:10:19.000000000 +0200
-+++ gcc/config/rs6000/rs6000.c	2007-08-27 19:27:24.000000000 +0200
-@@ -638,6 +638,7 @@ static void rs6000_file_start (void);
- static unsigned int rs6000_elf_section_type_flags (tree, const char *, int);
- static void rs6000_elf_asm_out_constructor (rtx, int);
- static void rs6000_elf_asm_out_destructor (rtx, int);
-+static void rs6000_elf_end_indicate_exec_stack (void) ATTRIBUTE_UNUSED;
- static void rs6000_elf_select_section (tree, int, unsigned HOST_WIDE_INT);
- static void rs6000_elf_unique_section (tree, int);
- static void rs6000_elf_select_rtx_section (enum machine_mode, rtx,
-@@ -18896,6 +18897,20 @@ rs6000_elf_declare_function_name (FILE *
-     }
-   ASM_OUTPUT_LABEL (file, name);
- }
-+
-+static void
-+rs6000_elf_end_indicate_exec_stack (void)
-+{
-+  if (TARGET_32BIT)
-+    file_end_indicate_exec_stack ();
-+  else
-+    {
-+      int saved_trampolines_created = trampolines_created;
-+      trampolines_created = 0;
-+      file_end_indicate_exec_stack ();
-+      trampolines_created = saved_trampolines_created;
-+    }
-+}
- #endif
- 
- #if TARGET_XCOFF
---- gcc/config/rs6000/linux64.h.jj	2006-11-08 17:53:15.000000000 +0100
-+++ gcc/config/rs6000/linux64.h	2007-08-27 19:25:09.000000000 +0200
-@@ -549,7 +549,7 @@ while (0)
- #undef DRAFT_V4_STRUCT_RET
- #define DRAFT_V4_STRUCT_RET (!TARGET_64BIT)
- 
--#define TARGET_ASM_FILE_END file_end_indicate_exec_stack
-+#define TARGET_ASM_FILE_END rs6000_elf_end_indicate_exec_stack
- 
- #define TARGET_POSIX_IO
- 
---- gcc/config/ia64/linux.h.jj	2006-07-14 18:00:58.000000000 +0200
-+++ gcc/config/ia64/linux.h	2007-08-27 19:21:12.000000000 +0200
-@@ -5,7 +5,7 @@
- 
- #define TARGET_VERSION fprintf (stderr, " (IA-64) Linux");
- 
--#define TARGET_ASM_FILE_END file_end_indicate_exec_stack
-+#define TARGET_ASM_FILE_END ia64_linux_file_end
- 
- /* This is for -profile to use -lc_p instead of -lc.  */
- #undef CC1_SPEC
---- gcc/config/ia64/ia64.c.jj	2007-01-05 23:54:11.000000000 +0100
-+++ gcc/config/ia64/ia64.c	2007-08-27 19:21:43.000000000 +0200
-@@ -246,6 +246,8 @@ static void ia64_hpux_add_extern_decl (t
-      ATTRIBUTE_UNUSED;
- static void ia64_hpux_file_end (void)
-      ATTRIBUTE_UNUSED;
-+static void ia64_linux_file_end (void)
-+     ATTRIBUTE_UNUSED;
- static void ia64_init_libfuncs (void)
-      ATTRIBUTE_UNUSED;
- static void ia64_hpux_init_libfuncs (void)
-@@ -9096,4 +9098,13 @@ ia64_invalid_binary_op (int op ATTRIBUTE
-   return NULL;
- }
- 
-+static void
-+ia64_linux_file_end (void)
-+{
-+  int saved_trampolines_created = trampolines_created;
-+  trampolines_created = 0;
-+  file_end_indicate_exec_stack ();
-+  trampolines_created = saved_trampolines_created;
-+}
-+
- #include "gt-ia64.h"

diff --git a/gcc41-ppc64-m32-m64-multilib-only.patch b/gcc41-ppc64-m32-m64-multilib-only.patch
deleted file mode 100644
index 00dbeac..0000000
--- a/gcc41-ppc64-m32-m64-multilib-only.patch
+++ /dev/null
@@ -1,22 +0,0 @@
---- gcc/config/rs6000/t-linux64	2003-06-03 05:11:45.000000000 -0400
-+++ gcc/config/rs6000/t-linux64	2003-06-11 17:07:16.000000000 -0400
-@@ -4,13 +4,13 @@ LIB2FUNCS_EXTRA = tramp.S $(srcdir)/conf
- # Modify the shared lib version file
- SHLIB_MKMAP_OPTS = -v dotsyms=1
- 
--MULTILIB_OPTIONS        = m64/m32 msoft-float
--MULTILIB_DIRNAMES       = 64 32 nof
-+MULTILIB_OPTIONS        = m64/m32
-+MULTILIB_DIRNAMES       = 64 32
- MULTILIB_EXTRA_OPTS     = fPIC mstrict-align
--MULTILIB_EXCEPTIONS     = m64/msoft-float
--MULTILIB_EXCLUSIONS     = m64/!m32/msoft-float
--MULTILIB_OSDIRNAMES	= ../lib64 ../lib nof
--MULTILIB_MATCHES        = $(MULTILIB_MATCHES_FLOAT)
-+MULTILIB_EXCEPTIONS     =
-+MULTILIB_EXCLUSIONS     =
-+MULTILIB_OSDIRNAMES	= ../lib64 ../lib
-+MULTILIB_MATCHES        =
- 
- TARGET_LIBGCC2_CFLAGS = -mno-minimal-toc -fPIC
- 

diff --git a/gcc41-pr20297-test.patch b/gcc41-pr20297-test.patch
deleted file mode 100644
index 5be2012..0000000
--- a/gcc41-pr20297-test.patch
+++ /dev/null
@@ -1,62 +0,0 @@
-2006-04-06  Jakub Jelinek  <jakub@redhat.com>
-
-	PR middle-end/20297
-	* gcc.dg/visibility-11.c: Moved to...
-	* gcc.target/i386/visibility-1.c: ... here.  Only run on
-	32-bit linux and bsds.
-
---- gcc/testsuite/gcc.dg/visibility-11.c.jj	2006-03-24 17:07:15.000000000 +0100
-+++ gcc/testsuite/gcc.dg/visibility-11.c	2006-03-28 14:59:27.000000000 +0200
-@@ -1,24 +0,0 @@
--/* PR middle-end/20297 */
--/* The memcpy FUNCTION_DECL built in the middle-end for block moves got
--   hidden visibility from the first push, so the call didn't use the PLT.  */
--
--/* { dg-do compile { target i?86-*-* x86_64-*-* } } */
--/* { dg-require-visibility "" } */
--/* { dg-options "-Os -fpic" }
--/* { dg-final { scan-assembler "memcpy@PLT" } } */
--
--#pragma GCC visibility push(hidden)
--#pragma GCC visibility push(default)
--extern void* memcpy (void *, const void *, __SIZE_TYPE__);
--#pragma GCC visibility pop
--
--struct a { int a[1024]; };
--
--extern void *bar (struct a *, struct a *, int);
--
--void *
--foo (struct a *a, struct a *b, int c)
--{
--  struct a cc = *b;
--  return bar (a, &cc, 4 * c);
--}
---- gcc/testsuite/gcc.target/i386/visibility-1.c.jj	2006-03-28 14:30:17.000000000 +0200
-+++ gcc/testsuite/gcc.target/i386/visibility-1.c	2006-03-28 14:58:48.000000000 +0200
-@@ -0,0 +1,25 @@
-+/* PR middle-end/20297 */
-+/* The memcpy FUNCTION_DECL built in the middle-end for block moves got
-+   hidden visibility from the first push, so the call didn't use the PLT.  */
-+
-+/* { dg-do compile { target { { *-*-linux* *-*-*bsd* *-*-solaris2* *-*-elf* *-*-gnu* *-*-sysv[45]* } && ilp32 } } } */
-+/* { dg-require-effective-target fpic } */
-+/* { dg-require-visibility "" } */
-+/* { dg-options "-Os -fpic" } */
-+/* { dg-final { scan-assembler "memcpy@PLT" } } */
-+
-+#pragma GCC visibility push(hidden)
-+#pragma GCC visibility push(default)
-+extern void* memcpy (void *, const void *, __SIZE_TYPE__);
-+#pragma GCC visibility pop
-+
-+struct a { int a[1024]; };
-+
-+extern void *bar (struct a *, struct a *, int);
-+
-+void *
-+foo (struct a *a, struct a *b, int c)
-+{
-+  struct a cc = *b;
-+  return bar (a, &cc, 4 * c);
-+}

diff --git a/gcc41-pr20880.patch b/gcc41-pr20880.patch
deleted file mode 100644
index be72a81..0000000
--- a/gcc41-pr20880.patch
+++ /dev/null
@@ -1,59 +0,0 @@
-2006-11-24  Paul Thomas  <pault@gcc.gnu.org>
-
-	PR fortran/20880
-	* parse.c (parse_interface): Error if procedure name is that of
-	encompassing scope.
-
-	* gfortran.dg/interface_3a.f90: New test.
-
---- gcc/fortran/parse.c	(revision 119172)
-+++ gcc/fortran/parse.c	(revision 119173)
-@@ -1694,6 +1694,7 @@ parse_interface (void)
-   gfc_interface_info save;
-   gfc_state_data s1, s2;
-   gfc_statement st;
-+  locus proc_locus;
- 
-   accept_statement (ST_INTERFACE);
- 
-@@ -1781,6 +1782,7 @@ loop:
-   accept_statement (st);
-   prog_unit = gfc_new_block;
-   prog_unit->formal_ns = gfc_current_ns;
-+  proc_locus = gfc_current_locus;
- 
- decl:
-   /* Read data declaration statements.  */
-@@ -1796,8 +1798,15 @@ decl:
- 
-   current_interface = save;
-   gfc_add_interface (prog_unit);
--
-   pop_state ();
-+
-+  if (current_interface.ns
-+	&& current_interface.ns->proc_name
-+	&& strcmp (current_interface.ns->proc_name->name,
-+		   prog_unit->name) == 0)
-+    gfc_error ("INTERFACE procedure '%s' at %L has the same name as the "
-+	       "enclosing procedure", prog_unit->name, &proc_locus);
-+
-   goto loop;
- 
- done:
---- gcc/testsuite/gfortran.dg/interface_3a.f90
-+++ gcc/testsuite/gfortran.dg/interface_3a.f90
-@@ -0,0 +1,13 @@
-+! { dg-do compile }
-+! Contributed by Joost VandeVondele  <jv244@cam.ac.uk>
-+!
-+! This was found whilst investigating => segfault
-+subroutine thy_sub (a)
-+  interface 
-+    subroutine thy_sub (a) ! { dg-error "enclosing procedure" }
-+      real a
-+    end subroutine
-+  end interface
-+  real a
-+  print *, a
-+end subroutine

diff --git a/gcc41-pr23848.patch b/gcc41-pr23848.patch
deleted file mode 100644
index 1fef579..0000000
--- a/gcc41-pr23848.patch
+++ /dev/null
@@ -1,225 +0,0 @@
-2007-11-15  Jakub Jelinek  <jakub@redhat.com>
-
-	PR middle-end/23848
-	* tree-ssa-ccp.c (optimize_stack_restore): New function.
-	(execute_fold_all_builtins): Call optimize_stack_restore for
-	BUILT_IN_STACK_RESTORE.
-
-	* gcc.dg/tree-ssa/pr23848-1.c: New test.
-	* gcc.dg/tree-ssa/pr23848-2.c: New test.
-	* gcc.dg/tree-ssa/pr23848-3.c: New test.
-	* gcc.dg/tree-ssa/pr23848-4.c: New test.
-
---- gcc/tree-ssa-ccp.c	(revision 130205)
-+++ gcc/tree-ssa-ccp.c	(revision 130206)
-@@ -2394,6 +2394,75 @@ fold_stmt_inplace (tree stmt)
-   return changed;
- }
- \f
-+/* Try to optimize out __builtin_stack_restore.  Optimize it out
-+   if there is another __builtin_stack_restore in the same basic
-+   block and no calls or ASM_EXPRs are in between, or if this block's
-+   only outgoing edge is to EXIT_BLOCK and there are no calls or
-+   ASM_EXPRs after this __builtin_stack_restore.  */
-+
-+static tree
-+optimize_stack_restore (basic_block bb, tree call, block_stmt_iterator i)
-+{
-+  tree stack_save, stmt, callee;
-+
-+  if (TREE_CODE (call) != CALL_EXPR
-+      || TREE_OPERAND (call, 1) == NULL_TREE
-+      || TREE_CHAIN (TREE_OPERAND (call, 1)) != NULL_TREE
-+      || TREE_CODE (TREE_VALUE (TREE_OPERAND (call, 1))) != SSA_NAME
-+      || !POINTER_TYPE_P (TREE_TYPE (TREE_VALUE (TREE_OPERAND (call, 1)))))
-+    return NULL_TREE;
-+
-+  for (bsi_next (&i); !bsi_end_p (i); bsi_next (&i))
-+    {
-+      tree call;
-+
-+      stmt = bsi_stmt (i);
-+      if (TREE_CODE (stmt) == ASM_EXPR)
-+	return NULL_TREE;
-+      call = get_call_expr_in (stmt);
-+      if (call == NULL)
-+	continue;
-+
-+      callee = get_callee_fndecl (call);
-+      if (!callee || DECL_BUILT_IN_CLASS (callee) != BUILT_IN_NORMAL)
-+	return NULL_TREE;
-+
-+      if (DECL_FUNCTION_CODE (callee) == BUILT_IN_STACK_RESTORE)
-+	break;
-+    }
-+
-+  if (bsi_end_p (i)
-+      && (! single_succ_p (bb)
-+	  || single_succ_edge (bb)->dest != EXIT_BLOCK_PTR))
-+    return NULL_TREE;
-+
-+  stack_save = SSA_NAME_DEF_STMT (TREE_VALUE (TREE_OPERAND (call, 1)));
-+  if (TREE_CODE (stack_save) != MODIFY_EXPR
-+      || TREE_OPERAND (stack_save, 0)
-+	 != TREE_VALUE (TREE_OPERAND (call, 1))
-+      || TREE_CODE (TREE_OPERAND (stack_save, 1)) != CALL_EXPR
-+      || tree_could_throw_p (stack_save)
-+      || !has_single_use (TREE_VALUE (TREE_OPERAND (call, 1))))
-+    return NULL_TREE;
-+
-+  callee = get_callee_fndecl (TREE_OPERAND (stack_save, 1));
-+  if (!callee
-+      || DECL_BUILT_IN_CLASS (callee) != BUILT_IN_NORMAL
-+      || DECL_FUNCTION_CODE (callee) != BUILT_IN_STACK_SAVE
-+      || TREE_OPERAND (TREE_OPERAND (stack_save, 1), 1) != NULL_TREE)
-+    return NULL_TREE;
-+
-+  stmt = stack_save;
-+  if (!set_rhs (&stmt,
-+		build_int_cst (TREE_TYPE (TREE_VALUE (TREE_OPERAND (call,
-+								    1))), 0)))
-+    return NULL_TREE;
-+  gcc_assert (stmt == stack_save);
-+  mark_new_vars_to_rename (stmt);
-+
-+  return integer_zero_node;
-+}
-+\f
- /* Convert EXPR into a GIMPLE value suitable for substitution on the
-    RHS of an assignment.  Insert the necessary statements before
-    iterator *SI_P.  */
-@@ -2469,6 +2538,12 @@ execute_fold_all_builtins (void)
- 		result = integer_zero_node;
- 		break;
- 
-+	      case BUILT_IN_STACK_RESTORE:
-+		result = optimize_stack_restore (bb, *stmtp, i);
-+		if (result)
-+		  break;
-+		/* FALLTHRU */
-+
- 	      default:
- 		bsi_next (&i);
- 		continue;
---- gcc/testsuite/gcc.dg/tree-ssa/pr23848-1.c	(revision 0)
-+++ gcc/testsuite/gcc.dg/tree-ssa/pr23848-1.c	(revision 130206)
-@@ -0,0 +1,32 @@
-+/* PR middle-end/23848 */
-+/* { dg-do compile } */
-+/* { dg-options "-O2 -fdump-tree-optimized" } */
-+
-+void bar1 (char *, int);
-+void foo1 (int size)
-+{
-+  char temp[size];
-+  temp[size-1] = '\0';
-+  bar1 (temp, size);
-+}
-+
-+void bar2 (char *, char *, char *, char *, int);
-+void foo2 (int size)
-+{
-+  char temp[size];
-+  temp[size-1] = '\0';
-+  {
-+    char temp2[size];
-+    {
-+      char temp3[size];
-+      {
-+	char temp4[size];
-+	bar2 (temp, temp2, temp3, temp4, size);
-+      }
-+    }
-+  }
-+}
-+
-+/* { dg-final { scan-tree-dump-not "__builtin_stack_save" "optimized"} } */
-+/* { dg-final { scan-tree-dump-not "__builtin_stack_restore" "optimized"} } */
-+/* { dg-final { cleanup-tree-dump "optimized" } } */
---- gcc/testsuite/gcc.dg/tree-ssa/pr23848-2.c	(revision 0)
-+++ gcc/testsuite/gcc.dg/tree-ssa/pr23848-2.c	(revision 130206)
-@@ -0,0 +1,25 @@
-+/* PR middle-end/23848 */
-+/* { dg-do compile } */
-+/* { dg-options "-O2 -fdump-tree-optimized" } */
-+
-+void bar (char *, char *, char *, char *, int);
-+void foo (int size)
-+{
-+  char temp[size];
-+  temp[size-1] = '\0';
-+  {
-+    char temp2[size];
-+    {
-+      char temp3[size];
-+      {
-+	char temp4[size];
-+	bar (temp, temp2, temp3, temp4, size);
-+      }
-+    }
-+    bar (temp, temp2, (char *) 0, (char *) 0, size);
-+  }
-+}
-+
-+/* { dg-final { scan-tree-dump-times "__builtin_stack_save" 1 "optimized"} } */
-+/* { dg-final { scan-tree-dump-times "__builtin_stack_restore" 1 "optimized"} } */
-+/* { dg-final { cleanup-tree-dump "optimized" } } */
---- gcc/testsuite/gcc.dg/tree-ssa/pr23848-3.c	(revision 0)
-+++ gcc/testsuite/gcc.dg/tree-ssa/pr23848-3.c	(revision 130206)
-@@ -0,0 +1,28 @@
-+/* PR middle-end/23848 */
-+/* { dg-do compile } */
-+/* { dg-options "-O2 -fdump-tree-optimized" } */
-+
-+void bar (int, char *, char *, char *, char *, int);
-+void foo (int size)
-+{
-+  int i;
-+  for (i = 0; i < size; i++)
-+    {
-+      char temp[size];
-+      temp[size-1] = '\0';
-+      {
-+	char temp2[size];
-+	{
-+	  char temp3[size];
-+	  {
-+	    char temp4[size];
-+	    bar (i, temp, temp2, temp3, temp4, size);
-+	  }
-+	}
-+      }
-+    }
-+}
-+
-+/* { dg-final { scan-tree-dump-times "__builtin_stack_save" 1 "optimized"} } */
-+/* { dg-final { scan-tree-dump-times "__builtin_stack_restore" 1 "optimized"} } */
-+/* { dg-final { cleanup-tree-dump "optimized" } } */
---- gcc/testsuite/gcc.dg/tree-ssa/pr23848-4.c	(revision 0)
-+++ gcc/testsuite/gcc.dg/tree-ssa/pr23848-4.c	(revision 130206)
-@@ -0,0 +1,25 @@
-+/* PR middle-end/23848 */
-+/* { dg-do compile } */
-+/* { dg-options "-O2 -fdump-tree-optimized" } */
-+
-+void bar (char *, char *, char *, char *, int);
-+void foo (int size)
-+{
-+  char temp[size];
-+  temp[size-1] = '\0';
-+  {
-+    char temp2[size];
-+    {
-+      char temp3[size];
-+      {
-+	char temp4[size];
-+	bar (temp, temp2, temp3, temp4, size);
-+      }
-+    }
-+    __asm __volatile ("" : : "r" (&temp[0]), "r" (&temp2[0]) : "memory");
-+  }
-+}
-+
-+/* { dg-final { scan-tree-dump-times "__builtin_stack_save" 1 "optimized"} } */
-+/* { dg-final { scan-tree-dump-times "__builtin_stack_restore" 1 "optimized"} } */
-+/* { dg-final { cleanup-tree-dump "optimized" } } */

diff --git a/gcc41-pr27898.patch b/gcc41-pr27898.patch
deleted file mode 100644
index 86bf862..0000000
--- a/gcc41-pr27898.patch
+++ /dev/null
@@ -1,92 +0,0 @@
-2006-07-06  Alexandre Oliva  <aoliva@redhat.com>
-
-	PR c/27898
-	* c-typeck.c (tagged_types_tu_compatible_p): Enable exact
-	matches between anonymous union fields.
-
-2006-08-18  Jakub Jelinek  <jakub@redhat.com>
-
-	PR c/27898
-	* gcc.dg/pr27898.c: New test.
-
---- gcc/testsuite/gcc.dg/pr27898.c.jj	2006-08-18 09:19:33.000000000 +0200
-+++ gcc/testsuite/gcc.dg/pr27898.c	2006-08-18 09:19:27.000000000 +0200
-@@ -0,0 +1,8 @@
-+/* PR c/27898 */
-+/* { dg-do compile } */
-+/* { dg-options "--combine" } */
-+/* { dg-additional-sources "pr27898.c" } */
-+
-+union u { struct { int i; }; };
-+
-+extern int foo (union u *);
---- gcc/c-typeck.c.jj	2006-08-17 09:55:11.000000000 +0200
-+++ gcc/c-typeck.c	2006-08-18 09:14:15.000000000 +0200
-@@ -1072,11 +1072,12 @@ tagged_types_tu_compatible_p (tree t1, t
- 	  {
- 	    int result;
- 	    
--	    
--	    if (DECL_NAME (s1) == NULL
--	        || DECL_NAME (s1) != DECL_NAME (s2))
-+	    if (DECL_NAME (s1) != DECL_NAME (s2))
- 	      break;
- 	    result = comptypes_internal (TREE_TYPE (s1), TREE_TYPE (s2));
-+
-+	    if (result != 1 && !DECL_NAME (s1))
-+	      break;
- 	    if (result == 0)
- 	      {
- 		tu->val = 0;
-@@ -1103,28 +1104,31 @@ tagged_types_tu_compatible_p (tree t1, t
- 	  {
- 	    bool ok = false;
- 
--	    if (DECL_NAME (s1) != NULL)
--	      for (s2 = TYPE_FIELDS (t2); s2; s2 = TREE_CHAIN (s2))
--		if (DECL_NAME (s1) == DECL_NAME (s2))
--		  {
--		    int result;
--		    result = comptypes_internal (TREE_TYPE (s1), TREE_TYPE (s2));
--		    if (result == 0)
--		      {
--			tu->val = 0;
--			return 0;
--		      }
--		    if (result == 2)
--		      needs_warning = true;
--
--		    if (TREE_CODE (s1) == FIELD_DECL
--			&& simple_cst_equal (DECL_FIELD_BIT_OFFSET (s1),
--					     DECL_FIELD_BIT_OFFSET (s2)) != 1)
--		      break;
-+	    for (s2 = TYPE_FIELDS (t2); s2; s2 = TREE_CHAIN (s2))
-+	      if (DECL_NAME (s1) == DECL_NAME (s2))
-+		{
-+		  int result;
-+
-+		  result = comptypes_internal (TREE_TYPE (s1), TREE_TYPE (s2));
- 
--		    ok = true;
-+		  if (result != 1 && !DECL_NAME (s1))
-+		    continue;
-+		  if (result == 0)
-+		    {
-+		      tu->val = 0;
-+		      return 0;
-+		    }
-+		  if (result == 2)
-+		    needs_warning = true;
-+
-+		  if (TREE_CODE (s1) == FIELD_DECL
-+		      && simple_cst_equal (DECL_FIELD_BIT_OFFSET (s1),
-+					   DECL_FIELD_BIT_OFFSET (s2)) != 1)
- 		    break;
--		  }
-+
-+		  ok = true;
-+		  break;
-+		}
- 	    if (!ok)
- 	      {
- 		tu->val = 0;

diff --git a/gcc41-pr28690.patch b/gcc41-pr28690.patch
deleted file mode 100644
index b1c2cc1..0000000
--- a/gcc41-pr28690.patch
+++ /dev/null
@@ -1,155 +0,0 @@
-2007-06-26  Jakub Jelinek  <jakub@redhat.com>
-
-	* defaults.h (TARGET_INDEX_OPERAND_FIRST): Define.
-	* config/rs6000/rs6000.h (TARGET_INDEX_OPERAND_FIRST): Define.
-	* optabs.c (emit_cmp_and_jump_insns): Don't call swap_operand
-	twice.
-	* rtlanal.c (commutative_operand_precedence): Only prefer
-	REG_POINTER and MEM_POINTER operands over REG and MEM operands
-	if TARGET_INDEX_OPERAND_FIRST.
-	(swap_commutative_operands_p): Only sort on REGNO if
-	TARGET_INDEX_OPERAND_FIRST.
-	* tree-ssa-address.c (gen_addr_rtx): Only use simplify_gen_binary
-	instead of gen_rtx_PLUS if TARGET_INDEX_OPERAND_FIRST.
-
-2007-06-20  Peter Bergner  <bergner@vnet.ibm.com>
-
-	PR middle-end/28690
-	* optabs.c (emit_cmp_and_jump_insns): Allow EQ compares.
-	* rtlanal.c (commutative_operand_precedence): Prefer both REG_POINTER
-	and MEM_POINTER operands over REG and MEM operands.
-	(swap_commutative_operands_p): In case of a tie, sort on REGNO.
-	* tree-ssa-address.c (gen_addr_rtx): Use simplify_gen_binary
-	instead of gen_rtx_PLUS.
-
---- gcc/defaults.h.jj	2007-02-20 22:39:12.000000000 +0100
-+++ gcc/defaults.h	2007-06-26 00:32:16.000000000 +0200
-@@ -785,6 +785,10 @@ Software Foundation, 51 Franklin Street,
- #define TARGET_C99_FUNCTIONS 0
- #endif
- 
-+#ifndef TARGET_INDEX_OPERAND_FIRST
-+#define TARGET_INDEX_OPERAND_FIRST 0
-+#endif
-+
- /* Indicate that CLZ and CTZ are undefined at zero.  */
- #ifndef CLZ_DEFINED_VALUE_AT_ZERO
- #define CLZ_DEFINED_VALUE_AT_ZERO(MODE, VALUE)  0
---- gcc/config/rs6000/rs6000.h.jj	2007-02-20 22:39:00.000000000 +0100
-+++ gcc/config/rs6000/rs6000.h	2007-06-26 00:33:32.000000000 +0200
-@@ -57,6 +57,8 @@
- #define PPC405_ERRATUM77 0
- #endif
- 
-+#define TARGET_INDEX_OPERAND_FIRST (rs6000_cpu == PROCESSOR_POWER6)
-+
- /* Common ASM definitions used by ASM_SPEC among the various targets
-    for handling -mcpu=xxx switches.  */
- #define ASM_CPU_SPEC \
---- gcc/optabs.c.jj	2007-02-20 22:39:12.000000000 +0100
-+++ gcc/optabs.c	2007-06-26 00:30:27.000000000 +0200
-@@ -3673,12 +3673,16 @@ emit_cmp_and_jump_insns (rtx x, rtx y, e
-   /* Swap operands and condition to ensure canonical RTL.  */
-   if (swap_commutative_operands_p (x, y))
-     {
--      /* If we're not emitting a branch, this means some caller
--         is out of sync.  */
--      gcc_assert (label);
-+      enum rtx_code swapped_comparison = swap_condition (comparison);
-+
-+      /* If we're not emitting a branch, callers are required to pass
-+	 operands in an order conforming to canonical RTL.  We relax this
-+	 for commutative comparsions so callers using EQ don't need to do
-+	 swapping by hand.  */
-+      gcc_assert (label || swapped_comparison == comparison);
- 
-       op0 = y, op1 = x;
--      comparison = swap_condition (comparison);
-+      comparison = swapped_comparison;
-     }
- 
- #ifdef HAVE_cc0
---- gcc/rtlanal.c.jj	2007-02-20 22:39:12.000000000 +0100
-+++ gcc/rtlanal.c	2007-06-26 00:28:56.000000000 +0200
-@@ -2890,9 +2890,9 @@ commutative_operand_precedence (rtx op)
-   
-   /* Constants always come the second operand.  Prefer "nice" constants.  */
-   if (code == CONST_INT)
--    return -7;
-+    return -10;
-   if (code == CONST_DOUBLE)
--    return -6;
-+    return -9;
-   op = avoid_constant_pool_reference (op);
-   code = GET_CODE (op);
- 
-@@ -2900,26 +2900,31 @@ commutative_operand_precedence (rtx op)
-     {
-     case RTX_CONST_OBJ:
-       if (code == CONST_INT)
--        return -5;
-+	return -8;
-       if (code == CONST_DOUBLE)
--        return -4;
--      return -3;
-+	return -7;
-+      return -6;
- 
-     case RTX_EXTRA:
-       /* SUBREGs of objects should come second.  */
-       if (code == SUBREG && OBJECT_P (SUBREG_REG (op)))
--        return -2;
-+	return -5;
- 
-       if (!CONSTANT_P (op))
-         return 0;
-       else
- 	/* As for RTX_CONST_OBJ.  */
--	return -3;
-+	return -6;
- 
-     case RTX_OBJ:
-       /* Complex expressions should be the first, so decrease priority
-          of objects.  */
--      return -1;
-+      if (!TARGET_INDEX_OPERAND_FIRST)
-+	return -1;
-+      if (REG_P (op))
-+	return (REG_POINTER (op)) ? -1 : -3;
-+      else
-+	return (MEM_P (op) && MEM_POINTER (op)) ? -2 : -4;
- 
-     case RTX_COMM_ARITH:
-       /* Prefer operands that are themselves commutative to be first.
-@@ -2949,8 +2954,16 @@ commutative_operand_precedence (rtx op)
- int
- swap_commutative_operands_p (rtx x, rtx y)
- {
--  return (commutative_operand_precedence (x)
--	  < commutative_operand_precedence (y));
-+  int result = (commutative_operand_precedence (x)
-+		- commutative_operand_precedence (y));
-+  if (!TARGET_INDEX_OPERAND_FIRST || result)
-+    return result < 0;
-+
-+  /* Group together equal REGs to do more simplification.  */
-+  if (REG_P (x) && REG_P (y))
-+    return REGNO (x) > REGNO (y);
-+
-+  return 0;
- }
- 
- /* Return 1 if X is an autoincrement side effect and the register is
---- gcc/tree-ssa-address.c.jj	2007-02-20 22:39:12.000000000 +0100
-+++ gcc/tree-ssa-address.c	2007-06-26 00:29:49.000000000 +0200
-@@ -124,7 +124,9 @@ gen_addr_rtx (rtx symbol, rtx base, rtx 
-   if (base)
-     {
-       if (*addr)
--	*addr = gen_rtx_PLUS (Pmode, *addr, base);
-+	*addr = (TARGET_INDEX_OPERAND_FIRST
-+		 ? simplify_gen_binary (PLUS, Pmode, base, *addr)
-+		 : gen_rtx_PLUS (Pmode, *addr, base));
-       else
- 	*addr = base;
-     }

diff --git a/gcc41-pr28755.patch b/gcc41-pr28755.patch
deleted file mode 100644
index d6bb90a..0000000
--- a/gcc41-pr28755.patch
+++ /dev/null
@@ -1,230 +0,0 @@
-2007-09-23  Jakub Jelinek  <jakub@redhat.com>
-
-	PR middle-end/28755
-	* expr.c (expand_constructor): New function.
-	(expand_expr_real_1) <case CONSTRUCTOR>: Call it.
-	(expand_expr_real_1) <case ARRAY_REF>: Call it if VALUE is
-	CONSTRUCTOR.
-
-	* gcc.dg/pr28755.c: New test.
-
---- gcc/expr.c	(revision 128684)
-+++ gcc/expr.c	(revision 128685)
-@@ -6435,6 +6435,89 @@ expand_expr_addr_expr (tree exp, rtx tar
-   return result;
- }
- 
-+/* Generate code for computing CONSTRUCTOR EXP.
-+   An rtx for the computed value is returned.  If AVOID_TEMP_MEM
-+   is TRUE, instead of creating a temporary variable in memory
-+   NULL is returned and the caller needs to handle it differently.  */
-+
-+static rtx
-+expand_constructor (tree exp, rtx target, enum expand_modifier modifier,
-+		    bool avoid_temp_mem)
-+{
-+  tree type = TREE_TYPE (exp);
-+  enum machine_mode mode = TYPE_MODE (type);
-+
-+  /* Try to avoid creating a temporary at all.  This is possible
-+     if all of the initializer is zero.
-+     FIXME: try to handle all [0..255] initializers we can handle
-+     with memset.  */
-+  if (TREE_STATIC (exp)
-+      && !TREE_ADDRESSABLE (exp)
-+      && target != 0 && mode == BLKmode
-+      && all_zeros_p (exp))
-+    {
-+      clear_storage (target, expr_size (exp), BLOCK_OP_NORMAL);
-+      return target;
-+    }
-+
-+  /* All elts simple constants => refer to a constant in memory.  But
-+     if this is a non-BLKmode mode, let it store a field at a time
-+     since that should make a CONST_INT or CONST_DOUBLE when we
-+     fold.  Likewise, if we have a target we can use, it is best to
-+     store directly into the target unless the type is large enough
-+     that memcpy will be used.  If we are making an initializer and
-+     all operands are constant, put it in memory as well.
-+
-+     FIXME: Avoid trying to fill vector constructors piece-meal.
-+     Output them with output_constant_def below unless we're sure
-+     they're zeros.  This should go away when vector initializers
-+     are treated like VECTOR_CST instead of arrays.  */
-+  if ((TREE_STATIC (exp)
-+       && ((mode == BLKmode
-+	    && ! (target != 0 && safe_from_p (target, exp, 1)))
-+		  || TREE_ADDRESSABLE (exp)
-+		  || (host_integerp (TYPE_SIZE_UNIT (type), 1)
-+		      && (! MOVE_BY_PIECES_P
-+				     (tree_low_cst (TYPE_SIZE_UNIT (type), 1),
-+				      TYPE_ALIGN (type)))
-+		      && ! mostly_zeros_p (exp))))
-+      || ((modifier == EXPAND_INITIALIZER || modifier == EXPAND_CONST_ADDRESS)
-+	  && TREE_CONSTANT (exp)))
-+    {
-+      rtx constructor;
-+
-+      if (avoid_temp_mem)
-+	return NULL_RTX;
-+
-+      constructor = output_constant_def (exp, 1);
-+
-+      if (modifier != EXPAND_CONST_ADDRESS
-+	  && modifier != EXPAND_INITIALIZER
-+	  && modifier != EXPAND_SUM)
-+	constructor = validize_mem (constructor);
-+
-+      return constructor;
-+    }
-+
-+  /* Handle calls that pass values in multiple non-contiguous
-+     locations.  The Irix 6 ABI has examples of this.  */
-+  if (target == 0 || ! safe_from_p (target, exp, 1)
-+      || GET_CODE (target) == PARALLEL || modifier == EXPAND_STACK_PARM)
-+    {
-+      if (avoid_temp_mem)
-+	return NULL_RTX;
-+
-+      target
-+	= assign_temp (build_qualified_type (type, (TYPE_QUALS (type)
-+						    | (TREE_READONLY (exp)
-+						       * TYPE_QUAL_CONST))),
-+		       0, TREE_ADDRESSABLE (exp), 1);
-+    }
-+
-+  store_constructor (exp, target, 0, int_expr_size (exp));
-+  return target;
-+}
-+
- 
- /* expand_expr: generate code for computing expression EXP.
-    An rtx for the computed value is returned.  The value is never null.
-@@ -6899,71 +6982,7 @@ expand_expr_real_1 (tree exp, rtx target
- 	  return const0_rtx;
- 	}
- 
--      /* Try to avoid creating a temporary at all.  This is possible
--	 if all of the initializer is zero.
--	 FIXME: try to handle all [0..255] initializers we can handle
--	 with memset.  */
--      else if (TREE_STATIC (exp)
--	       && !TREE_ADDRESSABLE (exp)
--	       && target != 0 && mode == BLKmode
--	       && all_zeros_p (exp))
--	{
--	  clear_storage (target, expr_size (exp), BLOCK_OP_NORMAL);
--	  return target;
--	}
--
--      /* All elts simple constants => refer to a constant in memory.  But
--	 if this is a non-BLKmode mode, let it store a field at a time
--	 since that should make a CONST_INT or CONST_DOUBLE when we
--	 fold.  Likewise, if we have a target we can use, it is best to
--	 store directly into the target unless the type is large enough
--	 that memcpy will be used.  If we are making an initializer and
--	 all operands are constant, put it in memory as well.
--
--	FIXME: Avoid trying to fill vector constructors piece-meal.
--	Output them with output_constant_def below unless we're sure
--	they're zeros.  This should go away when vector initializers
--	are treated like VECTOR_CST instead of arrays.
--      */
--      else if ((TREE_STATIC (exp)
--		&& ((mode == BLKmode
--		     && ! (target != 0 && safe_from_p (target, exp, 1)))
--		    || TREE_ADDRESSABLE (exp)
--		    || (host_integerp (TYPE_SIZE_UNIT (type), 1)
--			&& (! MOVE_BY_PIECES_P
--			    (tree_low_cst (TYPE_SIZE_UNIT (type), 1),
--			     TYPE_ALIGN (type)))
--			&& ! mostly_zeros_p (exp))))
--	       || ((modifier == EXPAND_INITIALIZER
--		    || modifier == EXPAND_CONST_ADDRESS)
--		   && TREE_CONSTANT (exp)))
--	{
--	  rtx constructor = output_constant_def (exp, 1);
--
--	  if (modifier != EXPAND_CONST_ADDRESS
--	      && modifier != EXPAND_INITIALIZER
--	      && modifier != EXPAND_SUM)
--	    constructor = validize_mem (constructor);
--
--	  return constructor;
--	}
--      else
--	{
--	  /* Handle calls that pass values in multiple non-contiguous
--	     locations.  The Irix 6 ABI has examples of this.  */
--	  if (target == 0 || ! safe_from_p (target, exp, 1)
--	      || GET_CODE (target) == PARALLEL
--	      || modifier == EXPAND_STACK_PARM)
--	    target
--	      = assign_temp (build_qualified_type (type,
--						   (TYPE_QUALS (type)
--						    | (TREE_READONLY (exp)
--						       * TYPE_QUAL_CONST))),
--			     0, TREE_ADDRESSABLE (exp), 1);
--
--	  store_constructor (exp, target, 0, int_expr_size (exp));
--	  return target;
--	}
-+      return expand_constructor (exp, target, modifier, false);
- 
-     case MISALIGNED_INDIRECT_REF:
-     case ALIGN_INDIRECT_REF:
-@@ -7105,10 +7124,25 @@ expand_expr_real_1 (tree exp, rtx target
- 					      field, value)
- 		      if (tree_int_cst_equal (field, index))
- 			{
--			  if (!TREE_SIDE_EFFECTS (value))
--			    return expand_expr (fold (value), target, tmode,
--						modifier);
--			  break;
-+			  if (TREE_SIDE_EFFECTS (value))
-+			    break;
-+
-+			  if (TREE_CODE (value) == CONSTRUCTOR)
-+			    {
-+			      /* If VALUE is a CONSTRUCTOR, this
-+				 optimization is only useful if
-+				 this doesn't store the CONSTRUCTOR
-+				 into memory.  If it does, it is more
-+				 efficient to just load the data from
-+				 the array directly.  */
-+			      rtx ret = expand_constructor (value, target,
-+							    modifier, true);
-+			      if (ret == NULL_RTX)
-+				break;
-+			    }
-+
-+			  return expand_expr (fold (value), target, tmode,
-+					      modifier);
- 			}
- 		  }
- 		else if(TREE_CODE (init) == STRING_CST)
---- gcc/testsuite/gcc.dg/pr28755.c	(revision 0)
-+++ gcc/testsuite/gcc.dg/pr28755.c	(revision 128685)
-@@ -0,0 +1,22 @@
-+/* PR middle-end/28755 */
-+/* { dg-do compile } */
-+/* { dg-options "-Os" } */
-+/* { dg-final { scan-assembler-times "2112543726\|7deadbee" 2 } } */
-+
-+struct S
-+{
-+  void *s1;
-+  unsigned s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12, s13, s14;
-+};
-+
-+const struct S array[] = {
-+  { (void *) 0, 60, 640, 2112543726, 39682, 48, 16, 33, 10, 96, 2, 0, 0, 4 },
-+  { (void *) 0, 60, 2112543726, 192, 18251, 16, 33, 10, 96, 2, 0, 0, 4, 212 }
-+};
-+
-+void
-+foo (struct S *x)
-+{
-+  x[0] = array[0];
-+  x[5] = array[1];
-+}

diff --git a/gcc41-pr29225.patch b/gcc41-pr29225.patch
deleted file mode 100644
index 995cd8c..0000000
--- a/gcc41-pr29225.patch
+++ /dev/null
@@ -1,50 +0,0 @@
-2007-11-13  Jakub Jelinek  <jakub@redhat.com>
-
-	PR c++/29225
-	* call.c (build_new_op): Call resolve_args before calling
-	build_over_call.
-
-	* g++.dg/template/crash72.C: New test.
-
---- gcc/cp/call.c	(revision 130125)
-+++ gcc/cp/call.c	(revision 130126)
-@@ -3918,7 +3918,10 @@ build_new_op (enum tree_code code, int f
- 	  if (overloaded_p)
- 	    *overloaded_p = true;
- 
--	  result = build_over_call (cand, LOOKUP_NORMAL);
-+	  if (resolve_args (arglist) == error_mark_node)
-+	    result = error_mark_node;
-+	  else
-+	    result = build_over_call (cand, LOOKUP_NORMAL);
- 	}
-       else
- 	{
---- gcc/testsuite/g++.dg/template/crash72.C	(revision 0)
-+++ gcc/testsuite/g++.dg/template/crash72.C	(revision 130126)
-@@ -0,0 +1,25 @@
-+// PR c++/29225
-+// { dg-do compile }
-+
-+template <typename L, typename R> bool operator< (L x, R y);
-+struct T { int t (); };
-+class S {};
-+
-+struct U
-+{
-+   typedef int (T::* M) ();
-+   M m;
-+
-+   bool operator() (S &x)
-+   {
-+     T a;
-+     return (a.*m) < x;	// { dg-error "invalid use of non-static member" }
-+   }
-+};
-+
-+void foo (S &x)
-+{
-+  U m;
-+  m.m = &T::t;
-+  m (x);
-+}

diff --git a/gcc41-pr29712.patch b/gcc41-pr29712.patch
deleted file mode 100644
index ea130c8..0000000
--- a/gcc41-pr29712.patch
+++ /dev/null
@@ -1,55 +0,0 @@
-2007-01-15  Paul Thomas  <pault@gcc.gnu.org>
-
-	PR fortran/29712
-	* resolve.c (resolve_function): Only a reference to the final
-	dimension of an assumed size array is an error in an inquiry
-	function.
-
-	* gfortran.dg/bound_2.f90: Reinstate commented out line.
-	* gfortran.dg/initialization_1.f90: Change warning.
-
---- gcc/fortran/resolve.c	(revision 120789)
-+++ gcc/fortran/resolve.c	(revision 120790)
-@@ -1498,10 +1498,16 @@ resolve_function (gfc_expr * expr)
- 	    
-       for (arg = expr->value.function.actual; arg; arg = arg->next)
- 	{
--	  if (inquiry && arg->next != NULL && arg->next->expr
--		&& arg->next->expr->expr_type != EXPR_CONSTANT)
--	    break;
--	  
-+	  if (inquiry && arg->next != NULL && arg->next->expr)
-+	    {
-+	      if (arg->next->expr->expr_type != EXPR_CONSTANT)
-+		break;
-+
-+	      if ((int)mpz_get_si (arg->next->expr->value.integer)
-+			< arg->expr->rank)
-+		break;
-+	    }
-+
- 	  if (arg->expr != NULL
- 		&& arg->expr->rank > 0
- 		&& resolve_assumed_size_actual (arg->expr))
---- gcc/testsuite/gfortran.dg/initialization_1.f90	(revision 120789)
-+++ gcc/testsuite/gfortran.dg/initialization_1.f90	(revision 120790)
-@@ -27,7 +27,7 @@ contains
-     integer :: l1 = len (ch1)     ! { dg-warning "assumed character length variable" }
- 
- ! These are warnings because they are gfortran extensions.
--    integer :: m3 = size (x, 1)   ! { dg-warning "upper bound in the last dimension" }
-+    integer :: m3 = size (x, 1)   ! { dg-warning "Evaluation of nonstandard initialization" }
-     integer :: m4(2) = shape (z)  ! { dg-warning "Evaluation of nonstandard initialization" }
- 
- ! This does not depend on non-constant properties.
---- gcc/testsuite/gfortran.dg/bound_2.f90	(revision 120789)
-+++ gcc/testsuite/gfortran.dg/bound_2.f90	(revision 120790)
-@@ -194,7 +194,7 @@ contains
-   subroutine foo (x,n)
-     integer :: x(7,n,2,*), n
- 
--    !if (ubound(x,1) /= 7 .or. ubound(x,2) /= 4 .or. ubound(x,3) /= 2) call abort
-+    if (ubound(x,1) /= 7 .or. ubound(x,2) /= 4 .or. ubound(x,3) /= 2) call abort
-   end subroutine foo
- 
-   subroutine jackal (b, c)

diff --git a/gcc41-pr30293.patch b/gcc41-pr30293.patch
deleted file mode 100644
index eb8549a..0000000
--- a/gcc41-pr30293.patch
+++ /dev/null
@@ -1,180 +0,0 @@
-2007-11-23  Jakub Jelinek  <jakub@redhat.com>
-
-	PR c++/30293
-	PR c++/30294
-	* decl.c (cp_finish_decl): Disallow variable or field
-	definitions if extern "Java" aggregates.
-	(grokparms): Disallow parameters with extern "Java"
-	aggregates.
-	(check_function_type): Disallow function return values
-	with extern "Java" aggregates.
-	* init.c (build_new_1): Disallow placement new with
-	extern "Java" aggregates.
-
-	* g++.dg/ext/java-2.C: New test.
-
---- gcc/cp/decl.c.jj	2007-11-19 17:46:41.000000000 +0100
-+++ gcc/cp/decl.c	2007-11-22 13:34:52.000000000 +0100
-@@ -5349,6 +5349,20 @@ cp_finish_decl (tree decl, tree init, bo
- 	     is *not* defined.  */
- 	  && (!DECL_EXTERNAL (decl) || init))
- 	{
-+	  if (TYPE_FOR_JAVA (type) && IS_AGGR_TYPE (type))
-+	    {
-+	      tree jclass
-+		= IDENTIFIER_GLOBAL_VALUE (get_identifier ("jclass"));
-+	      /* Allow libjava/prims.cc define primitive classes.  */
-+	      if (init != NULL_TREE
-+		  || jclass == NULL_TREE
-+		  || TREE_CODE (jclass) != TYPE_DECL
-+		  || !POINTER_TYPE_P (TREE_TYPE (jclass))
-+		  || !same_type_ignoring_top_level_qualifiers_p
-+					(type, TREE_TYPE (TREE_TYPE (jclass))))
-+		error ("Java object %qD not allocated with %<new%>", decl);
-+	      init = NULL_TREE;
-+	    }
- 	  if (init)
- 	    {
- 	      DECL_NONTRIVIALLY_INITIALIZED_P (decl) = 1;
-@@ -5419,6 +5433,9 @@ cp_finish_decl (tree decl, tree init, bo
-       else if (TREE_CODE (type) == ARRAY_TYPE)
- 	layout_type (type);
-     }
-+  else if (TREE_CODE (decl) == FIELD_DECL
-+	   && TYPE_FOR_JAVA (type) && IS_AGGR_TYPE (type))
-+    error ("non-static data member %qD has Java class type", decl);
- 
-   /* Add this declaration to the statement-tree.  This needs to happen
-      after the call to check_initializer so that the DECL_EXPR for a
-@@ -8993,6 +9010,16 @@ grokparms (cp_parameter_declarator *firs
- 	  TREE_TYPE (decl) = error_mark_node;
- 	}
- 
-+      if (type != error_mark_node
-+	  && TYPE_FOR_JAVA (type)
-+	  && IS_AGGR_TYPE (type))
-+	{
-+	  error ("parameter %qD has Java class type", decl);
-+	  type = error_mark_node;
-+	  TREE_TYPE (decl) = error_mark_node;
-+	  init = NULL_TREE;
-+	}
-+
-       if (type != error_mark_node)
- 	{
- 	  /* Top-level qualifiers on the parameters are
-@@ -10465,11 +10492,15 @@ check_function_type (tree decl, tree cur
- 
-   if (dependent_type_p (return_type))
-     return;
--  if (!COMPLETE_OR_VOID_TYPE_P (return_type))
-+  if (!COMPLETE_OR_VOID_TYPE_P (return_type)
-+      || (TYPE_FOR_JAVA (return_type) && IS_AGGR_TYPE (return_type)))
-     {
-       tree args = TYPE_ARG_TYPES (fntype);
--	  
--      error ("return type %q#T is incomplete", return_type);
-+
-+      if (!COMPLETE_OR_VOID_TYPE_P (return_type))
-+	error ("return type %q#T is incomplete", return_type);
-+      else
-+	error ("return type has Java class type %q#T", return_type);
- 
-       /* Make it return void instead.  */
-       if (TREE_CODE (fntype) == METHOD_TYPE)
---- gcc/cp/init.c.jj	2007-09-20 21:26:48.000000000 +0200
-+++ gcc/cp/init.c	2007-11-22 10:49:47.000000000 +0100
-@@ -1786,6 +1786,11 @@ build_new_1 (tree placement, tree type, 
- 		    (alloc_fn,
- 		     build_tree_list (NULL_TREE, class_addr)));
-     }
-+  else if (TYPE_FOR_JAVA (elt_type))
-+    {
-+      error ("Java class %q#T object allocated using placement new", elt_type);
-+      return error_mark_node;
-+    }
-   else
-     {
-       tree fnname;
---- gcc/testsuite/g++.dg/ext/java-2.C.jj	2007-11-22 10:55:10.000000000 +0100
-+++ gcc/testsuite/g++.dg/ext/java-2.C	2007-11-22 10:54:59.000000000 +0100
-@@ -0,0 +1,79 @@
-+// PR c++/30293
-+// PR c++/30294
-+// { dg-do compile }
-+// { dg-options "" }
-+
-+extern "Java" {
-+typedef __java_byte jbyte;
-+namespace java {
-+namespace lang {
-+  class Object {};
-+  class Class {};
-+}
-+}
-+typedef struct java::lang::Object* jobject;
-+typedef java::lang::Class *jclass;
-+}
-+extern "C" jobject _Jv_AllocObject (jclass);
-+
-+extern "Java" {
-+  struct A { static java::lang::Class class$; };
-+}
-+
-+struct B {
-+  A a;		// { dg-error "has Java class type" }
-+};
-+
-+void* operator new (__SIZE_TYPE__, void*) throw();
-+char buf[1024];
-+
-+A a;		// { dg-error "not allocated with" }
-+A b = A ();	// { dg-error "not allocated with" }
-+A *c = new ((void *) buf) A ();	// { dg-error "using placement new" }
-+A *d = new A ();
-+jbyte e = 6;
-+
-+const A fn1 ()	// { dg-error "return type has Java class type" }
-+{
-+  A a;		// { dg-error "not allocated with" }
-+  return a;
-+}
-+
-+A fn2 ()	// { dg-error "return type has Java class type" }
-+{
-+  A a;		// { dg-error "not allocated with" }
-+  return a;
-+}
-+
-+A *fn3 ()
-+{
-+  return new A ();
-+}
-+
-+A &fn4 ()
-+{
-+  return *c;
-+}
-+
-+jbyte fn5 ()
-+{
-+  return 7;
-+}
-+
-+void fn6 (A x)	// { dg-error "has Java class type" }
-+{
-+}
-+
-+void fn7 (const A x)	// { dg-error "has Java class type" }
-+{
-+}
-+
-+void fn8 (A *x)
-+{
-+  (void) x;
-+}
-+
-+void fn9 (jbyte x)
-+{
-+  (void) x;
-+}

diff --git a/gcc41-pr30988.patch b/gcc41-pr30988.patch
deleted file mode 100644
index fc26668..0000000
--- a/gcc41-pr30988.patch
+++ /dev/null
@@ -1,103 +0,0 @@
-2007-11-18  Jakub Jelinek  <jakub@redhat.com>
-
-	PR c++/30988
-	* semantics.c (finish_call_expr): Set
-	current_function_returns_abnormally if fn is noreturn FUNCTION_DECL
-	or OVERLOAD with all noreturn functions.
-
-	* g++.dg/warn/noreturn-4.C: New test.
-	* g++.dg/warn/noreturn-5.C: New test.
-	* g++.dg/warn/noreturn-6.C: New test.
-	* g++.dg/warn/noreturn-7.C: New test.
-
---- gcc/cp/semantics.c	(revision 130279)
-+++ gcc/cp/semantics.c	(revision 130280)
-@@ -1846,6 +1846,20 @@ finish_call_expr (tree fn, tree args, bo
- 	{
- 	  result = build_nt_call_list (fn, args);
- 	  KOENIG_LOOKUP_P (result) = koenig_p;
-+	  if (cfun)
-+	    {
-+	      do
-+		{
-+		  tree fndecl = OVL_CURRENT (fn);
-+		  if (TREE_CODE (fndecl) != FUNCTION_DECL
-+		      || !TREE_THIS_VOLATILE (fndecl))
-+		    break;
-+		  fn = OVL_NEXT (fn);
-+		}
-+	      while (fn);
-+	      if (!fn)
-+		current_function_returns_abnormally = 1;
-+	    }
- 	  return result;
- 	}
-       if (!BASELINK_P (fn)
---- gcc/testsuite/g++.dg/warn/noreturn-4.C	(revision 0)
-+++ gcc/testsuite/g++.dg/warn/noreturn-4.C	(revision 130280)
-@@ -0,0 +1,13 @@
-+// PR c++/30988
-+// { dg-do compile }
-+// { dg-options "-O2 -Wall" }
-+
-+void f (const char *) __attribute__ ((noreturn));
-+
-+template <typename T> struct A
-+{
-+  int g ()
-+  {
-+    f (__FUNCTION__);
-+  }
-+};
---- gcc/testsuite/g++.dg/warn/noreturn-5.C	(revision 0)
-+++ gcc/testsuite/g++.dg/warn/noreturn-5.C	(revision 130280)
-@@ -0,0 +1,15 @@
-+// PR c++/30988
-+// { dg-do compile }
-+// { dg-options "-O2 -Wall" }
-+
-+void f (const char *) __attribute__ ((noreturn));
-+void f (int) __attribute__ ((noreturn));
-+void f (double) __attribute__ ((noreturn));
-+
-+template <typename T> struct A
-+{
-+  int g ()
-+  {
-+    f ((T) 0);
-+  }
-+};
---- gcc/testsuite/g++.dg/warn/noreturn-6.C	(revision 0)
-+++ gcc/testsuite/g++.dg/warn/noreturn-6.C	(revision 130280)
-@@ -0,0 +1,13 @@
-+// PR c++/30988
-+// { dg-do compile }
-+// { dg-options "-O2 -Wall" }
-+
-+void f (const char *);
-+
-+template <typename T> struct A
-+{
-+  int g ()
-+  {
-+    f (__FUNCTION__);
-+  }	// { dg-warning "no return statement in function returning non-void" }
-+};
---- gcc/testsuite/g++.dg/warn/noreturn-7.C	(revision 0)
-+++ gcc/testsuite/g++.dg/warn/noreturn-7.C	(revision 130280)
-@@ -0,0 +1,15 @@
-+// PR c++/30988
-+// { dg-do compile }
-+// { dg-options "-O2 -Wall" }
-+
-+void f (const char *) __attribute__ ((noreturn));
-+void f (int);
-+void f (double) __attribute__ ((noreturn));
-+
-+template <typename T> struct A
-+{
-+  int g ()
-+  {
-+    f ((T) 0);
-+  }	// { dg-warning "no return statement in function returning non-void" }
-+};

diff --git a/gcc41-pr32121.patch b/gcc41-pr32121.patch
deleted file mode 100644
index 6bf332d..0000000
--- a/gcc41-pr32121.patch
+++ /dev/null
@@ -1,132 +0,0 @@
-2007-10-12  Jakub Jelinek  <jakub@redhat.com>
-
-	PR c++/32121
-	* parser.c (cp_parser_compound_statement): Handle label-declarations
-	at the beginning of the compound statement.
-	(cp_parser_block_declaration): Issue diagnostics about __label__
-	not at the beginning of a block.
-
-	* g++.dg/ext/label4.C: Adjust error regexp.
-	* g++.dg/ext/label7.C: New test.
-	* g++.dg/ext/label8.C: New test.
-	* g++.dg/ext/label9.C: New test.
-
---- gcc/cp/parser.c	(revision 129252)
-+++ gcc/cp/parser.c	(revision 129253)
-@@ -6821,6 +6821,15 @@ cp_parser_expression_statement (cp_parse
-    compound-statement:
-      { statement-seq [opt] }
- 
-+   GNU extension:
-+
-+   compound-statement:
-+     { label-declaration-seq [opt] statement-seq [opt] }
-+
-+   label-declaration-seq:
-+     label-declaration
-+     label-declaration-seq label-declaration
-+
-    Returns a tree representing the statement.  */
- 
- static tree
-@@ -6834,6 +6843,9 @@ cp_parser_compound_statement (cp_parser 
-     return error_mark_node;
-   /* Begin the compound-statement.  */
-   compound_stmt = begin_compound_stmt (in_try ? BCS_TRY_BLOCK : 0);
-+  /* If the next keyword is `__label__' we have a label declaration.  */
-+  while (cp_lexer_next_token_is_keyword (parser->lexer, RID_LABEL))
-+    cp_parser_label_declaration (parser);
-   /* Parse an (optional) statement-seq.  */
-   cp_parser_statement_seq_opt (parser, in_statement_expr);
-   /* Finish the compound-statement.  */
-@@ -7711,7 +7723,6 @@ cp_parser_declaration (cp_parser* parser
- 
-    block-declaration:
-      __extension__ block-declaration
--     label-declaration
- 
-    C++0x Extension:
- 
-@@ -7772,12 +7783,16 @@ cp_parser_block_declaration (cp_parser *
- 	cp_parser_using_declaration (parser,
- 				     /*access_declaration_p=*/false);
-     }
--  /* If the next keyword is `__label__' we have a label declaration.  */
-+  /* If the next keyword is `__label__' we have a misplaced label
-+     declaration.  */
-   else if (token1->keyword == RID_LABEL)
-     {
--      if (statement_p)
--	cp_parser_commit_to_tentative_parse (parser);
--      cp_parser_label_declaration (parser);
-+      cp_lexer_consume_token (parser->lexer);
-+      error ("%<__label__%> not at the beginning of a block");
-+      cp_parser_skip_to_end_of_statement (parser);
-+      /* If the next token is now a `;', consume it.  */
-+      if (cp_lexer_next_token_is (parser->lexer, CPP_SEMICOLON))
-+	cp_lexer_consume_token (parser->lexer);
-     }
-   /* If the next token is `static_assert' we have a static assertion.  */
-   else if (token1->keyword == RID_STATIC_ASSERT)
-
---- gcc/testsuite/g++.dg/ext/label9.C	(revision 0)
-+++ gcc/testsuite/g++.dg/ext/label9.C	(revision 129253)
-@@ -0,0 +1,10 @@
-+// PR c++/32121
-+// { dg-do compile }
-+
-+int f (void)
-+{
-+  while (1)
-+    __label__ a;	// { dg-error "not at the beginning" }
-+  for (;;)
-+    __label__ b;	// { dg-error "not at the beginning" }
-+}
---- gcc/testsuite/g++.dg/ext/label4.C	(revision 129252)
-+++ gcc/testsuite/g++.dg/ext/label4.C	(revision 129253)
-@@ -3,4 +3,4 @@
- 
- // { dg-do compile }
- 
--__label__ *l;  // { dg-error "before" }
-+__label__ *l;  // { dg-error "not at the beginning of" }
---- gcc/testsuite/g++.dg/ext/label7.C	(revision 0)
-+++ gcc/testsuite/g++.dg/ext/label7.C	(revision 129253)
-@@ -0,0 +1,12 @@
-+// PR c++/32121
-+// { dg-do compile }
-+
-+int f (void)
-+{
-+  a:;
-+  __label__ a;	// { dg-error "not at the beginning" }
-+  int b;
-+  __label__ c;	// { dg-error "not at the beginning" }
-+  a:;		// { dg-error "duplicate label" }
-+  c:;
-+}
---- gcc/testsuite/g++.dg/ext/label8.C	(revision 0)
-+++ gcc/testsuite/g++.dg/ext/label8.C	(revision 129253)
-@@ -0,0 +1,22 @@
-+// PR c++/32121
-+// { dg-do compile }
-+
-+int f (void)
-+{
-+  __label__ a, b;
-+  __label__ c;
-+  a:;
-+  b:;
-+  c:;
-+  {
-+    __label__ d;
-+    d:;
-+    if (0)
-+      {
-+	__label__ e;
-+	__label__ f;
-+	f:;
-+	e:;
-+      }
-+  }
-+}

diff --git a/gcc41-pr32139.patch b/gcc41-pr32139.patch
deleted file mode 100644
index 84e8ffb..0000000
--- a/gcc41-pr32139.patch
+++ /dev/null
@@ -1,58 +0,0 @@
-2007-06-01  Jakub Jelinek  <jakub@redhat.com>
-
-	PR tree-optimization/32139
-	* c-typeck.c (common_pointer_type): Set TYPE_READONLY
-	and TYPE_VOLATILE on the merged pointed to FUNCTION_TYPE
-	only if both pointed_to_1 and pointed_to_2 are TYPE_READONLY
-	resp. TYPE_VOLATILE.
-
-	* gcc.c-torture/compile/20070531-1.c: New test.
-
---- gcc/c-typeck.c.jj	2007-04-25 10:13:52.000000000 +0200
-+++ gcc/c-typeck.c	2007-06-01 10:51:53.000000000 +0200
-@@ -499,6 +499,7 @@ common_pointer_type (tree t1, tree t2)
-   tree pointed_to_1, mv1;
-   tree pointed_to_2, mv2;
-   tree target;
-+  int type_quals;
- 
-   /* Save time if the two types are the same.  */
- 
-@@ -526,10 +527,19 @@ common_pointer_type (tree t1, tree t2)
-   if (TREE_CODE (mv2) != ARRAY_TYPE)
-     mv2 = TYPE_MAIN_VARIANT (pointed_to_2);
-   target = composite_type (mv1, mv2);
--  t1 = build_pointer_type (c_build_qualified_type
--			   (target,
--			    TYPE_QUALS (pointed_to_1) |
--			    TYPE_QUALS (pointed_to_2)));
-+  type_quals = TYPE_QUALS (pointed_to_1) | TYPE_QUALS (pointed_to_2);
-+  if (TREE_CODE (pointed_to_1) == FUNCTION_TYPE)
-+    {
-+      /* TYPE_READONLY and TYPE_VOLATILE on FUNCTION_TYPE should be
-+	 logically ANDed, not ORed, as if one function is
-+	 __attribute__((const)) and the other is not, the common type
-+	 must be conservatively not __attribute__((const))
-+	 and similarly for __attribute__((noreturn)).  */
-+      type_quals &= ~(TYPE_QUAL_CONST | TYPE_QUAL_VOLATILE);
-+      type_quals |= (TYPE_QUALS (pointed_to_1) & TYPE_QUALS (pointed_to_2))
-+		    & (TYPE_QUAL_CONST | TYPE_QUAL_VOLATILE);
-+    }
-+  t1 = build_pointer_type (c_build_qualified_type (target, type_quals));
-   return build_type_attribute_variant (t1, attributes);
- }
- 
---- gcc/testsuite/gcc.c-torture/compile/20070531-1.c.jj	2007-05-31 13:47:22.000000000 +0200
-+++ gcc/testsuite/gcc.c-torture/compile/20070531-1.c	2007-06-01 10:57:15.000000000 +0200
-@@ -0,0 +1,11 @@
-+/* PR tree-optimization/32139 */
-+int foo (void);
-+int bar (void) __attribute__ ((const));
-+
-+int
-+test (int x)
-+{
-+  int a = (x == 10000 ? foo : bar) ();
-+  int b = (x == 10000 ? foo : bar) ();
-+  return a + b;
-+}

diff --git a/gcc41-pr32241.patch b/gcc41-pr32241.patch
deleted file mode 100644
index a3dfe3c..0000000
--- a/gcc41-pr32241.patch
+++ /dev/null
@@ -1,91 +0,0 @@
-2007-11-10  Jakub Jelinek  <jakub@redhat.com>
-
-	PR c++/32241
-	* pt.c (tsubst_copy_and_build) <case COMPONENT_REF>: If object_type
-	is not scalar type, let finish_class_member_access_expr handle
-	diagnostics.  Pass BIT_NOT_EXPR argument to
-	finish_pseudo_destructor_expr.  Handle SCOPE_REF properly.
-
-	* g++.dg/template/pseudodtor3.C: New test.
-
---- gcc/cp/pt.c	(revision 130065)
-+++ gcc/cp/pt.c	(revision 130066)
-@@ -11004,15 +11004,23 @@ tsubst_copy_and_build (tree t,
- 
- 	if (object_type && !CLASS_TYPE_P (object_type))
- 	  {
--	    if (TREE_CODE (member) == BIT_NOT_EXPR)
--	      return finish_pseudo_destructor_expr (object,
--						    NULL_TREE,
--						    object_type);
--	    else if (TREE_CODE (member) == SCOPE_REF
--		     && (TREE_CODE (TREE_OPERAND (member, 1)) == BIT_NOT_EXPR))
--	      return finish_pseudo_destructor_expr (object,
--						    object,
--						    object_type);
-+	    if (SCALAR_TYPE_P (object_type))
-+	      {
-+		tree s = NULL_TREE;
-+		tree dtor = member;
-+
-+		if (TREE_CODE (dtor) == SCOPE_REF)
-+		  {
-+		    s = TREE_OPERAND (dtor, 0);
-+		    dtor = TREE_OPERAND (dtor, 1);
-+		  }
-+		if (TREE_CODE (dtor) == BIT_NOT_EXPR)
-+		  {
-+		    dtor = TREE_OPERAND (dtor, 0);
-+		    if (TYPE_P (dtor))
-+		      return finish_pseudo_destructor_expr (object, s, dtor);
-+		  }
-+	      }
- 	  }
- 	else if (TREE_CODE (member) == SCOPE_REF
- 		 && TREE_CODE (TREE_OPERAND (member, 1)) == TEMPLATE_ID_EXPR)
---- gcc/testsuite/g++.dg/template/pseudodtor3.C	(revision 0)
-+++ gcc/testsuite/g++.dg/template/pseudodtor3.C	(revision 130066)
-@@ -0,0 +1,43 @@
-+// PR c++/32241
-+// { dg-do compile }
-+
-+struct A
-+{
-+  typedef int T;
-+  T &foo ();
-+  A () { foo.~T (); }	// { dg-error "does not have class type|expected" }
-+};
-+
-+template <typename T> struct B
-+{
-+  T &foo ();
-+  B () { foo.~T (); }	// { dg-error "invalid use of member" }
-+};
-+
-+B<int> b;
-+
-+template <typename T, typename S> struct C
-+{
-+  T t;
-+  C () { t.~S (); }	// { dg-error "is not of type" }
-+};
-+
-+C<int, long int> c;
-+
-+template <typename T> struct D
-+{
-+  T t;
-+  typedef long int U;
-+  D () { t.~U (); }	// { dg-error "is not of type" }
-+};
-+
-+D<int> d;
-+
-+template <typename T> struct E
-+{
-+  T &foo ();
-+  typedef long int U;
-+  E () { foo.~U (); }	// { dg-error "is not of type" }
-+};
-+
-+E<int> e;

diff --git a/gcc41-pr32384.patch b/gcc41-pr32384.patch
deleted file mode 100644
index 983068f..0000000
--- a/gcc41-pr32384.patch
+++ /dev/null
@@ -1,108 +0,0 @@
-2007-11-01  Jakub Jelinek  <jakub@redhat.com>
-
-	PR c++/32384
-	* parser.c (cp_parser_postfix_dot_deref_expression): If
-	POSTFIX_EXPRESSION is type dependent, try to parse it as pseudo dtor
-	first and if that succeeds and type is SCALAR_TYPE_P, create
-	PSEUDO_DTOR_EXPR.
-
-	* g++.dg/template/pseudodtor1.C: New test.
-	* g++.dg/template/pseudodtor2.C: New test.
-
---- gcc/cp/parser.c	(revision 129835)
-+++ gcc/cp/parser.c	(revision 129836)
-@@ -4850,8 +4850,10 @@ cp_parser_postfix_dot_deref_expression (
-   pseudo_destructor_p = false;
- 
-   /* If the SCOPE is a scalar type, then, if this is a valid program,
--     we must be looking at a pseudo-destructor-name.  */
--  if (scope && SCALAR_TYPE_P (scope))
-+     we must be looking at a pseudo-destructor-name.  If POSTFIX_EXPRESSION
-+     is type dependent, it can be pseudo-destructor-name or something else.
-+     Try to parse it as pseudo-destructor-name first.  */
-+  if ((scope && SCALAR_TYPE_P (scope)) || dependent_p)
-     {
-       tree s;
-       tree type;
-@@ -4860,7 +4862,12 @@ cp_parser_postfix_dot_deref_expression (
-       /* Parse the pseudo-destructor-name.  */
-       s = NULL_TREE;
-       cp_parser_pseudo_destructor_name (parser, &s, &type);
--      if (cp_parser_parse_definitely (parser))
-+      if (dependent_p
-+	  && (cp_parser_error_occurred (parser)
-+	      || TREE_CODE (type) != TYPE_DECL
-+	      || !SCALAR_TYPE_P (TREE_TYPE (type))))
-+	cp_parser_abort_tentative_parse (parser);
-+      else if (cp_parser_parse_definitely (parser))
- 	{
- 	  pseudo_destructor_p = true;
- 	  postfix_expression
---- gcc/testsuite/g++.dg/template/pseudodtor1.C	(revision 0)
-+++ gcc/testsuite/g++.dg/template/pseudodtor1.C	(revision 129836)
-@@ -0,0 +1,44 @@
-+// PR c++/32384
-+// { dg-do compile }
-+
-+struct A
-+{
-+  typedef int T;
-+  T foo ();
-+
-+  A () { foo ().~T (); }
-+};
-+
-+template<typename> struct B
-+{
-+  typedef int T;
-+  T foo ();
-+
-+  B () { foo ().~T (); }
-+};
-+
-+template<typename T> struct C
-+{
-+  T t;
-+  C () { t.~T (); }
-+};
-+
-+template<typename S> struct D
-+{
-+  typedef int T;
-+  S foo ();
-+
-+  D () { foo ().~T(); }
-+};
-+
-+struct Z
-+{
-+  Z () {}
-+  ~Z () {}
-+};
-+
-+A a;
-+B<int> b;
-+C<int> c1;
-+C<Z> c2;
-+D<int> d;
---- gcc/testsuite/g++.dg/template/pseudodtor2.C	(revision 0)
-+++ gcc/testsuite/g++.dg/template/pseudodtor2.C	(revision 129836)
-@@ -0,0 +1,18 @@
-+// PR c++/32384
-+// { dg-do compile }
-+
-+template<typename S> struct D
-+{
-+  typedef int T;
-+  S foo ();
-+
-+  D () { foo ().~T(); }		// { dg-error "is not of type" }
-+};
-+
-+struct Z
-+{
-+  Z () {}
-+  ~Z () {}
-+};
-+
-+D<Z> d;

diff --git a/gcc41-pr32694.patch b/gcc41-pr32694.patch
deleted file mode 100644
index 4b172e4..0000000
--- a/gcc41-pr32694.patch
+++ /dev/null
@@ -1,46 +0,0 @@
-2007-09-25  Jakub Jelinek  <jakub@redhat.com>
-
-	PR tree-optimization/32694
-	2006-11-08  Roger Sayle  <roger@eyesopen.com>
-	* tree-ssa-propagate.c (set_rhs): Verify tcc_comparison the same way
-	as tcc_binary.
-
-	* gcc.c-torture/compile/20070925-1.c: New test.
-
---- gcc/tree-ssa-propagate.c.jj	2007-09-23 19:43:36.000000000 +0200
-+++ gcc/tree-ssa-propagate.c	2007-09-25 09:30:50.000000000 +0200
-@@ -570,7 +570,8 @@ set_rhs (tree *stmt_p, tree expr)
-   ssa_op_iter iter;
- 
-   /* Verify the constant folded result is valid gimple.  */
--  if (TREE_CODE_CLASS (code) == tcc_binary)
-+  if (TREE_CODE_CLASS (code) == tcc_binary
-+      || TREE_CODE_CLASS (code) == tcc_comparison)
-     {
-       if (!is_gimple_val (TREE_OPERAND (expr, 0))
- 	  || !is_gimple_val (TREE_OPERAND (expr, 1)))
---- gcc/testsuite/gcc.c-torture/compile/20070925-1.c.jj	2007-09-25 09:28:37.000000000 +0200
-+++ gcc/testsuite/gcc.c-torture/compile/20070925-1.c	2007-09-25 09:29:41.000000000 +0200
-@@ -0,0 +1,22 @@
-+/* PR tree-optimization/32694 */
-+
-+typedef signed long long int WordS64;
-+typedef unsigned long long int Word64;
-+
-+int
-+foo (Word64 * p)
-+{
-+  while (1)
-+    {
-+      WordS64 c = 0x1llu;
-+      WordS64 x = *p;
-+      if (c >= 0)
-+	{
-+	  if (x > (WordS64) 0x7FFFFFFFFFFFFFFFll - c)
-+	    return 6;
-+	}
-+      else if (x < (WordS64) 0x8000000000000000ll - c)
-+	return 7;
-+      p++;
-+    }
-+}

diff --git a/gcc41-pr33136.patch b/gcc41-pr33136.patch
deleted file mode 100644
index ed389aa..0000000
--- a/gcc41-pr33136.patch
+++ /dev/null
@@ -1,230 +0,0 @@
-2007-10-15  Jakub Jelinek  <jakub@redhat.com>
-
-	PR tree-optimization/33136
-	* opts.c (decode_options): Don't enable flag_ipa_type_escape.
-
-	* gcc.c-torture/execute/20070824-1.c: New test.
-	* gcc.dg/pr33136-1.c: New test.
-	* gcc.dg/pr33136-2.c: New test.
-	* gcc.dg/pr33136-3.c: New test.
-
---- gcc/opts.c	(revision 129365)
-+++ gcc/opts.c	(revision 129366)
-@@ -473,7 +473,6 @@ decode_options (unsigned int argc, const
-       flag_cse_skip_blocks = 1;
-       flag_gcse = 1;
-       flag_expensive_optimizations = 1;
--      flag_ipa_type_escape = 1;
-       flag_strength_reduce = 1;
-       flag_rerun_cse_after_loop = 1;
-       flag_rerun_loop_opt = 1;
---- gcc/testsuite/gcc.c-torture/execute/20070824-1.c	(revision 0)
-+++ gcc/testsuite/gcc.c-torture/execute/20070824-1.c	(revision 129366)
-@@ -0,0 +1,24 @@
-+/* PR tree-optimization/33136 */
-+
-+extern void abort (void);
-+
-+struct S
-+{
-+  struct S *a;
-+  int b;
-+};
-+
-+int
-+main (void)
-+{
-+  struct S *s = (struct S *) 0, **p, *n;
-+  for (p = &s; *p; p = &(*p)->a);
-+  n = (struct S *) __builtin_alloca (sizeof (*n));
-+  n->a = *p;
-+  n->b = 1;
-+  *p = n;
-+
-+  if (!s)
-+    abort ();
-+  return 0;
-+}
---- gcc/testsuite/gcc.dg/pr33136-1.c	(revision 0)
-+++ gcc/testsuite/gcc.dg/pr33136-1.c	(revision 129366)
-@@ -0,0 +1,54 @@
-+/* PR tree-optimization/33136 */
-+/* { dg-do run } */
-+/* { dg-options "-O2" } */
-+
-+extern void abort (void);
-+
-+struct S
-+{
-+  struct S *a;
-+  int b;
-+  float f;
-+};
-+
-+static struct S s;
-+
-+static int *
-+__attribute__((noinline, const))
-+foo (void)
-+{
-+  return &s.b;
-+}
-+
-+float
-+__attribute__((noinline))
-+bar (float *f)
-+{
-+  s.f = 1.0;
-+  *f = 4.0;
-+  return s.f;
-+}
-+
-+int
-+__attribute__((noinline))
-+baz (int *x)
-+{
-+  s.b = 1;
-+  *x = 4;
-+  return s.b;
-+}
-+
-+int
-+t (void)
-+{
-+  float f = 8.0;
-+  return bar (&f) + baz (foo ());
-+}
-+
-+int
-+main (void)
-+{
-+  if (t () != 5)
-+    abort ();
-+  return 0;
-+}
---- gcc/testsuite/gcc.dg/pr33136-3.c	(revision 0)
-+++ gcc/testsuite/gcc.dg/pr33136-3.c	(revision 129366)
-@@ -0,0 +1,60 @@
-+/* PR tree-optimization/33136 */
-+/* { dg-do run } */
-+/* { dg-options "-O2" } */
-+
-+extern void abort (void);
-+
-+struct S
-+{
-+  void *a;
-+  int b[3];
-+  double *c;
-+};
-+static double d, e;
-+
-+static struct S s;
-+
-+static int *
-+__attribute__((noinline, const))
-+foo (void)
-+{
-+  return (int *) &s.b;
-+}
-+
-+double *
-+__attribute__((noinline))
-+bar (double **f)
-+{
-+  s.c = &d;
-+  *f = &e;
-+  /* As nothing ever takes the address of any double * field in struct S,
-+     the write to *f can't alias with the s.c field.  */
-+  return s.c;
-+}
-+
-+int
-+__attribute__((noinline))
-+baz (int *x)
-+{
-+  s.b[0] = 1;
-+  *x = 4;
-+  /* Function foo takes address of an int array field in struct S,
-+     so *x can alias with the s.b field (and it does in this testcase).  */
-+  return s.b[0];
-+}
-+
-+int
-+__attribute__((noinline))
-+t (void)
-+{
-+  double *f = (double *) 0;
-+  return 10 * (bar (&f) != &d) + baz (foo ());
-+}
-+
-+int
-+main (void)
-+{
-+  if (t () != 4)
-+    abort ();
-+  return 0;
-+}
---- gcc/testsuite/gcc.dg/pr33136-2.c	(revision 0)
-+++ gcc/testsuite/gcc.dg/pr33136-2.c	(revision 129366)
-@@ -0,0 +1,60 @@
-+/* PR tree-optimization/33136 */
-+/* { dg-do run } */
-+/* { dg-options "-O2" } */
-+
-+extern void abort (void);
-+
-+struct S
-+{
-+  void *a;
-+  int b;
-+  int *c;
-+};
-+static int d, e;
-+
-+static struct S s;
-+
-+static int *
-+__attribute__((noinline, const))
-+foo (void)
-+{
-+  return &s.b;
-+}
-+
-+int *
-+__attribute__((noinline))
-+bar (int **f)
-+{
-+  s.c = &d;
-+  *f = &e;
-+  /* As nothing ever takes the address of any int * field in struct S,
-+     the write to *f can't alias with the s.c field.  */
-+  return s.c;
-+}
-+
-+int
-+__attribute__((noinline))
-+baz (int *x)
-+{
-+  s.b = 1;
-+  *x = 4;
-+  /* Function foo takes address of an int field in struct S,
-+     so *x can alias with the s.b field (and it does in this testcase).  */
-+  return s.b;
-+}
-+
-+int
-+__attribute__((noinline))
-+t (void)
-+{
-+  int *f = (int *) 0;
-+  return 10 * (bar (&f) != &d) + baz (foo ());
-+}
-+
-+int
-+main (void)
-+{
-+  if (t () != 4)
-+    abort ();
-+  return 0;
-+}

diff --git a/gcc41-pr33238.patch b/gcc41-pr33238.patch
deleted file mode 100644
index 2ec285a..0000000
--- a/gcc41-pr33238.patch
+++ /dev/null
@@ -1,194 +0,0 @@
-2007-09-20  Jakub Jelinek  <jakub@redhat.com>
-
-	PR c/33238
-	PR c/27301
-	* gimplify.c (gimplify_vla_decl): New function.
-	(gimplify_decl_expr): Move VLA decl handling to gimplify_vla_decl.
-	Call it.
-	(gimplify_target_expr): Handle variable length TARGET_EXPRs.
-
-	* gcc.c-torture/execute/20070919-1.c: New test.
-	* gcc.dg/pr33238.c: New test.
-	* gcc.dg/pr27301.c: New test.
-
---- gcc/gimplify.c	(revision 128628)
-+++ gcc/gimplify.c	(revision 128629)
-@@ -1144,6 +1144,42 @@ gimplify_return_expr (tree stmt, tree *p
-   return GS_ALL_DONE;
- }
- 
-+static void
-+gimplify_vla_decl (tree decl, tree *stmt_p)
-+{
-+  /* This is a variable-sized decl.  Simplify its size and mark it
-+     for deferred expansion.  Note that mudflap depends on the format
-+     of the emitted code: see mx_register_decls().  */
-+  tree t, args, addr, ptr_type;
-+
-+  gimplify_one_sizepos (&DECL_SIZE (decl), stmt_p);
-+  gimplify_one_sizepos (&DECL_SIZE_UNIT (decl), stmt_p);
-+
-+  /* All occurrences of this decl in final gimplified code will be
-+     replaced by indirection.  Setting DECL_VALUE_EXPR does two
-+     things: First, it lets the rest of the gimplifier know what
-+     replacement to use.  Second, it lets the debug info know
-+     where to find the value.  */
-+  ptr_type = build_pointer_type (TREE_TYPE (decl));
-+  addr = create_tmp_var (ptr_type, get_name (decl));
-+  DECL_IGNORED_P (addr) = 0;
-+  t = build_fold_indirect_ref (addr);
-+  SET_DECL_VALUE_EXPR (decl, t);
-+  DECL_HAS_VALUE_EXPR_P (decl) = 1;
-+
-+  args = tree_cons (NULL, DECL_SIZE_UNIT (decl), NULL);
-+  t = built_in_decls[BUILT_IN_ALLOCA];
-+  t = build_function_call_expr (t, args);
-+  t = fold_convert (ptr_type, t);
-+  t = build2 (MODIFY_EXPR, void_type_node, addr, t);
-+
-+  gimplify_and_add (t, stmt_p);
-+
-+  /* Indicate that we need to restore the stack level when the
-+     enclosing BIND_EXPR is exited.  */
-+  gimplify_ctxp->save_stack = true;
-+}
-+
- /* Gimplifies a DECL_EXPR node *STMT_P by making any necessary allocation
-    and initialization explicit.  */
- 
-@@ -1168,39 +1204,7 @@ gimplify_decl_expr (tree *stmt_p)
-       tree init = DECL_INITIAL (decl);
- 
-       if (TREE_CODE (DECL_SIZE (decl)) != INTEGER_CST)
--	{
--	  /* This is a variable-sized decl.  Simplify its size and mark it
--	     for deferred expansion.  Note that mudflap depends on the format
--	     of the emitted code: see mx_register_decls().  */
--	  tree t, args, addr, ptr_type;
--
--	  gimplify_one_sizepos (&DECL_SIZE (decl), stmt_p);
--	  gimplify_one_sizepos (&DECL_SIZE_UNIT (decl), stmt_p);
--
--	  /* All occurrences of this decl in final gimplified code will be
--	     replaced by indirection.  Setting DECL_VALUE_EXPR does two
--	     things: First, it lets the rest of the gimplifier know what
--	     replacement to use.  Second, it lets the debug info know
--	     where to find the value.  */
--	  ptr_type = build_pointer_type (TREE_TYPE (decl));
--	  addr = create_tmp_var (ptr_type, get_name (decl));
--	  DECL_IGNORED_P (addr) = 0;
--	  t = build_fold_indirect_ref (addr);
--	  SET_DECL_VALUE_EXPR (decl, t);
--	  DECL_HAS_VALUE_EXPR_P (decl) = 1;
--
--	  args = tree_cons (NULL, DECL_SIZE_UNIT (decl), NULL);
--	  t = built_in_decls[BUILT_IN_ALLOCA];
--	  t = build_function_call_expr (t, args);
--	  t = fold_convert (ptr_type, t);
--	  t = build2 (MODIFY_EXPR, void_type_node, addr, t);
--
--	  gimplify_and_add (t, stmt_p);
--
--	  /* Indicate that we need to restore the stack level when the
--	     enclosing BIND_EXPR is exited.  */
--	  gimplify_ctxp->save_stack = true;
--	}
-+	gimplify_vla_decl (decl, stmt_p);
- 
-       if (init && init != error_mark_node)
- 	{
-@@ -4146,8 +4150,15 @@ gimplify_target_expr (tree *expr_p, tree
-   if (init)
-     {
-       /* TARGET_EXPR temps aren't part of the enclosing block, so add it
--	 to the temps list.  */
--      gimple_add_tmp_var (temp);
-+	 to the temps list.  Handle also variable length TARGET_EXPRs.  */
-+      if (TREE_CODE (DECL_SIZE (temp)) != INTEGER_CST)
-+	{
-+	  if (!TYPE_SIZES_GIMPLIFIED (TREE_TYPE (temp)))
-+	    gimplify_type_sizes (TREE_TYPE (temp), pre_p);
-+	  gimplify_vla_decl (temp, pre_p);
-+	}
-+      else
-+	gimple_add_tmp_var (temp);
- 
-       /* If TARGET_EXPR_INITIAL is void, then the mere evaluation of the
- 	 expression is supposed to initialize the slot.  */
---- gcc/testsuite/gcc.c-torture/execute/20070919-1.c	(revision 0)
-+++ gcc/testsuite/gcc.c-torture/execute/20070919-1.c	(revision 128629)
-@@ -0,0 +1,41 @@
-+/* PR c/33238 */
-+
-+typedef __SIZE_TYPE__ size_t;
-+int memcmp (const void *, const void *, size_t);
-+void abort (void);
-+
-+void
-+__attribute__((noinline))
-+bar (void *x, void *y)
-+{
-+  struct S { char w[8]; } *p = x, *q = y;
-+  if (memcmp (p->w, "zyxwvut", 8) != 0)
-+    abort ();
-+  if (memcmp (q[0].w, "abcdefg", 8) != 0)
-+    abort ();
-+  if (memcmp (q[1].w, "ABCDEFG", 8) != 0)
-+    abort ();
-+  if (memcmp (q[2].w, "zyxwvut", 8) != 0)
-+    abort ();
-+  if (memcmp (q[3].w, "zyxwvut", 8) != 0)
-+    abort ();
-+}
-+
-+void
-+__attribute__((noinline))
-+foo (void *x, int y)
-+{
-+  struct S { char w[y]; } *p = x, a;
-+  int i;
-+  a = ({ struct S b; b = p[2]; p[3] = b; });
-+  bar (&a, x);
-+}
-+
-+int
-+main (void)
-+{
-+  struct S { char w[8]; } p[4]
-+    = { "abcdefg", "ABCDEFG", "zyxwvut", "ZYXWVUT" };
-+  foo (p, 8);
-+  return 0;
-+}
---- gcc/testsuite/gcc.dg/pr33238.c	(revision 0)
-+++ gcc/testsuite/gcc.dg/pr33238.c	(revision 128629)
-@@ -0,0 +1,12 @@
-+/* PR c/33238 */
-+/* { dg-do compile } */
-+/* { dg-options "-std=gnu89" } */
-+
-+void
-+reverse (void *x, int y, int z)
-+{
-+  struct { char w[z]; } *p = x, a;
-+  int i, j;
-+  for (i = y - 1, j = 0; j < y / 2; i--, j++)
-+    ({ a = p[i]; p[i] = p[j]; p[j] = a; });
-+}
---- gcc/testsuite/gcc.dg/pr27301.c	(revision 0)
-+++ gcc/testsuite/gcc.dg/pr27301.c	(revision 128629)
-@@ -0,0 +1,15 @@
-+/* PR c/27301 */
-+/* { dg-do compile } */
-+/* { dg-options "-O2 -std=gnu89" } */
-+
-+void
-+foo (void *ptr, long n)
-+{
-+  __asm__ __volatile__ ("" :: "m" (({ struct { char x[n]; } *p = ptr; *p; })));
-+}
-+
-+void
-+bar (void *ptr, long n)
-+{
-+  __asm__ __volatile__ ("" :: "m" (*({ struct { char x[n]; } *p = ptr; p; })));
-+}

diff --git a/gcc41-pr33501.patch b/gcc41-pr33501.patch
deleted file mode 100644
index 0dab701..0000000
--- a/gcc41-pr33501.patch
+++ /dev/null
@@ -1,77 +0,0 @@
-2007-11-07  Jakub Jelinek  <jakub@redhat.com>
-
-	PR c++/33501
-	* call.c (build_over_call): Don't check TREE_ADDRESSABLE
-	on incomplete type.
-
-	* g++.dg/warn/incomplete2.C: New test.
-	* g++.dg/template/incomplete4.C: New test.
-	* g++.dg/template/incomplete5.C: New test.
-
---- gcc/cp/call.c	(revision 129967)
-+++ gcc/cp/call.c	(revision 129968)
-@@ -4993,7 +4993,8 @@ build_over_call (struct z_candidate *can
- 
-       /* Don't make a copy here if build_call is going to.  */
-       if (conv->kind == ck_rvalue
--	  && !TREE_ADDRESSABLE (complete_type (type)))
-+	  && COMPLETE_TYPE_P (complete_type (type))
-+	  && !TREE_ADDRESSABLE (type))
- 	conv = conv->u.next;
- 
-       val = convert_like_with_context
---- gcc/testsuite/g++.dg/warn/incomplete2.C	(revision 0)
-+++ gcc/testsuite/g++.dg/warn/incomplete2.C	(revision 129968)
-@@ -0,0 +1,13 @@
-+// PR c++/33501
-+// { dg-do compile }
-+
-+class A;	// { dg-error "forward declaration" }
-+
-+int f (A);
-+const A &make ();
-+
-+int
-+main ()
-+{
-+  return f (make ());	// { dg-error "invalid use of undefined type|initializing argument" }
-+}
---- gcc/testsuite/g++.dg/template/incomplete5.C	(revision 0)
-+++ gcc/testsuite/g++.dg/template/incomplete5.C	(revision 129968)
-@@ -0,0 +1,17 @@
-+// PR c++/33501
-+// { dg-do compile }
-+
-+class A;	// { dg-error "forward declaration" }
-+
-+template <typename T> struct X
-+{
-+  static int f (T);
-+  static const T &make ();
-+  static const bool value = sizeof (f (make ())) == sizeof (int);	// { dg-error "invalid use of undefined type|initializing argument" }
-+};
-+
-+int
-+main ()
-+{
-+  return X <A>::value;
-+}
---- gcc/testsuite/g++.dg/template/incomplete4.C	(revision 0)
-+++ gcc/testsuite/g++.dg/template/incomplete4.C	(revision 129968)
-@@ -0,0 +1,16 @@
-+// PR c++/33501
-+// { dg-do compile }
-+
-+class A;	// { dg-error "forward declaration" }
-+
-+template <typename T> struct X
-+{
-+  static int f (T);
-+  static const T &make ();
-+};
-+
-+int
-+main ()
-+{
-+  return X<A>::f (X<A>::make ());	// { dg-error "invalid use of undefined type|initializing argument" }
-+}

diff --git a/gcc41-pr33506.patch b/gcc41-pr33506.patch
deleted file mode 100644
index a5c7bca..0000000
--- a/gcc41-pr33506.patch
+++ /dev/null
@@ -1,168 +0,0 @@
-2007-09-21  Jakub Jelinek  <jakub@redhat.com>
-
-	PR c++/33506
-	* langhooks.h (struct lang_hooks_for_types): Add type_hash_eq
-	field.
-	* langhooks.c (lhd_type_hash_eq): New function.
-	* langhooks-def.h (lhd_type_hash_eq): New prototype.
-	(LANG_HOOKS_TYPE_HASH_EQ): Define.
-	(LANG_HOOKS_FOR_TYPES_INITIALIZER): Add LANG_HOOKS_TYPE_HASH_EQ.
-	* tree.c (type_hash_eq): For FUNCTION_TYPE use
-	lang_hooks.type.type_hash_eq in addition to generic tests.
-
-	* cp-tree.h (cxx_type_hash_eq): New prototype.
-	* cp-objcp-common.h (LANG_HOOKS_TYPE_HASH_EQ): Redefine.
-	* tree.c (cxx_type_hash_eq): New function.
-
-	* g++.dg/ext/attrib29.C: New test.
-
---- gcc/langhooks.h.jj	2007-02-20 16:39:12.000000000 -0500
-+++ gcc/langhooks.h	2007-09-22 03:46:10.000000000 -0400
-@@ -148,6 +148,10 @@ struct lang_hooks_for_types
-      firstprivate variables.  */
-   void (*omp_firstprivatize_type_sizes) (struct gimplify_omp_ctx *, tree);
- 
-+  /* Return TRUE if TYPE1 and TYPE2 are identical for type hashing purposes.
-+     Called only after doing all language independent checks.  */
-+  bool (*type_hash_eq) (tree, tree);
-+
-   /* Nonzero if types that are identical are to be hashed so that only
-      one copy is kept.  If a language requires unique types for each
-      user-specified type, such as Ada, this should be set to TRUE.  */
---- gcc/langhooks.c.jj	2007-02-20 16:39:12.000000000 -0500
-+++ gcc/langhooks.c	2007-09-22 03:46:10.000000000 -0400
-@@ -411,6 +411,16 @@ lhd_tree_dump_type_quals (tree t)
- /* lang_hooks.expr_size: Determine the size of the value of an expression T
-    in a language-specific way.  Returns a tree for the size in bytes.  */
- 
-+/* Return TRUE if TYPE1 and TYPE2 are identical for type hashing purposes.
-+   Called only after doing all language independent checks.  */
-+
-+bool
-+lhd_type_hash_eq (tree typea ATTRIBUTE_UNUSED,
-+		  tree typeb ATTRIBUTE_UNUSED)
-+{
-+  return true;
-+}
-+
- tree
- lhd_expr_size (tree exp)
- {
---- gcc/langhooks-def.h.jj	2007-02-20 16:39:13.000000000 -0500
-+++ gcc/langhooks-def.h	2007-09-22 03:46:56.000000000 -0400
-@@ -70,6 +70,7 @@ extern tree lhd_expr_size (tree);
- extern size_t lhd_tree_size (enum tree_code);
- extern HOST_WIDE_INT lhd_to_target_charset (HOST_WIDE_INT);
- extern tree lhd_expr_to_decl (tree, bool *, bool *, bool *);
-+extern bool lhd_type_hash_eq (tree, tree);
- 
- /* Declarations of default tree inlining hooks.  */
- extern tree lhd_tree_inlining_walk_subtrees (tree *, int *, walk_tree_fn,
-@@ -220,6 +221,7 @@ extern tree lhd_make_node (enum tree_cod
- #define LANG_HOOKS_TYPE_MAX_SIZE	lhd_return_null_tree
- #define LANG_HOOKS_OMP_FIRSTPRIVATIZE_TYPE_SIZES \
-   lhd_omp_firstprivatize_type_sizes
-+#define LANG_HOOKS_TYPE_HASH_EQ		lhd_type_hash_eq
- #define LANG_HOOKS_HASH_TYPES		true
- 
- #define LANG_HOOKS_FOR_TYPES_INITIALIZER { \
-@@ -234,6 +236,7 @@ extern tree lhd_make_node (enum tree_cod
-   LANG_HOOKS_INCOMPLETE_TYPE_ERROR, \
-   LANG_HOOKS_TYPE_MAX_SIZE, \
-   LANG_HOOKS_OMP_FIRSTPRIVATIZE_TYPE_SIZES, \
-+  LANG_HOOKS_TYPE_HASH_EQ, \
-   LANG_HOOKS_HASH_TYPES \
- }
- 
---- gcc/tree.c.jj	2007-04-03 07:18:26.000000000 -0400
-+++ gcc/tree.c	2007-09-22 03:46:10.000000000 -0400
-@@ -4168,17 +4168,21 @@ type_hash_eq (const void *va, const void
- 				      TYPE_FIELDS (b->type))));
- 
-     case FUNCTION_TYPE:
--      return (TYPE_ARG_TYPES (a->type) == TYPE_ARG_TYPES (b->type)
--	      || (TYPE_ARG_TYPES (a->type)
--		  && TREE_CODE (TYPE_ARG_TYPES (a->type)) == TREE_LIST
--		  && TYPE_ARG_TYPES (b->type)
--		  && TREE_CODE (TYPE_ARG_TYPES (b->type)) == TREE_LIST
--		  && type_list_equal (TYPE_ARG_TYPES (a->type),
--				      TYPE_ARG_TYPES (b->type))));
-+      if (TYPE_ARG_TYPES (a->type) == TYPE_ARG_TYPES (b->type)
-+	  || (TYPE_ARG_TYPES (a->type)
-+	      && TREE_CODE (TYPE_ARG_TYPES (a->type)) == TREE_LIST
-+	      && TYPE_ARG_TYPES (b->type)
-+	      && TREE_CODE (TYPE_ARG_TYPES (b->type)) == TREE_LIST
-+	      && type_list_equal (TYPE_ARG_TYPES (a->type),
-+				  TYPE_ARG_TYPES (b->type))))
-+	break;
-+      return 0;
- 
-     default:
-       return 0;
-     }
-+
-+  return lang_hooks.types.type_hash_eq (a->type, b->type);
- }
- 
- /* Return the cached hash value.  */
---- gcc/cp/cp-tree.h.jj	2007-06-26 07:57:09.000000000 -0400
-+++ gcc/cp/cp-tree.h	2007-09-22 03:50:22.000000000 -0400
-@@ -4421,7 +4421,8 @@ extern tree cp_add_pending_fn_decls		(vo
- extern int cp_auto_var_in_fn_p			(tree,tree);
- extern tree fold_if_not_in_template		(tree);
- extern tree rvalue                              (tree);
--   
-+extern bool cxx_type_hash_eq			(tree, tree);
-+
- /* in typeck.c */
- extern int string_conv_p			(tree, tree, int);
- extern tree cp_truthvalue_conversion		(tree);
---- gcc/cp/cp-objcp-common.h.jj	2007-02-20 16:37:34.000000000 -0500
-+++ gcc/cp/cp-objcp-common.h	2007-09-22 03:49:38.000000000 -0400
-@@ -85,6 +85,8 @@ extern tree objcp_tsubst_copy_and_build 
- #define LANG_HOOKS_WRITE_GLOBALS lhd_do_nothing
- #undef LANG_HOOKS_COMDAT_GROUP
- #define LANG_HOOKS_COMDAT_GROUP cxx_comdat_group
-+#undef LANG_HOOKS_TYPE_HASH_EQ                                                                                          
-+#define LANG_HOOKS_TYPE_HASH_EQ cxx_type_hash_eq
- 
- #undef LANG_HOOKS_FUNCTION_INIT
- #define LANG_HOOKS_FUNCTION_INIT cxx_push_function_context
---- gcc/cp/tree.c.jj	2007-03-12 03:28:01.000000000 -0400
-+++ gcc/cp/tree.c	2007-09-22 03:46:10.000000000 -0400
-@@ -1959,6 +1959,22 @@ cp_build_type_attribute_variant (tree ty
-   return new_type;
- }
- 
-+/* Return TRUE if TYPE1 and TYPE2 are identical for type hashing purposes.
-+   Called only after doing all language independent checks.  Only
-+   to check TYPE_RAISES_EXCEPTIONS for FUNCTION_TYPE, the rest is already
-+   compared in type_hash_eq.  */
-+
-+bool
-+cxx_type_hash_eq (tree typea, tree typeb)
-+{
-+  if (TREE_CODE (typea) != FUNCTION_TYPE
-+      || TYPE_RAISES_EXCEPTIONS (typea) == TYPE_RAISES_EXCEPTIONS (typeb))
-+    return true;
-+
-+  return comp_except_specs (TYPE_RAISES_EXCEPTIONS (typea),
-+			    TYPE_RAISES_EXCEPTIONS (typeb), 1);
-+}
-+
- /* Apply FUNC to all language-specific sub-trees of TP in a pre-order
-    traversal.  Called from walk_tree.  */
- 
---- gcc/testsuite/g++.dg/ext/attrib29.C.jj	2007-09-22 03:46:10.000000000 -0400
-+++ gcc/testsuite/g++.dg/ext/attrib29.C	2007-09-22 03:46:10.000000000 -0400
-@@ -0,0 +1,10 @@
-+// PR c++/33506
-+// { dg-do compile }
-+
-+extern int f1 (char *) __attribute__ ((warn_unused_result));
-+extern int f2 (char *) throw () __attribute__ ((warn_unused_result));
-+extern int f2 (char *) throw ();
-+
-+extern int f3 (char *) __attribute__ ((nonnull (1)));
-+extern int f4 (char *) throw () __attribute__ ((nonnull (1)));
-+extern int f4 (char *) throw ();

diff --git a/gcc41-pr33516.patch b/gcc41-pr33516.patch
deleted file mode 100644
index 2491e11..0000000
--- a/gcc41-pr33516.patch
+++ /dev/null
@@ -1,63 +0,0 @@
-2007-11-02  Jakub Jelinek  <jakub@redhat.com>
-
-	PR c++/33516
-	* parser.c (cp_parser_nested_name_specifier_opt): Use
-	TYPE_MAIN_VARIANT (new_scope) as scope if new_scope is an incomplete
-	typedef of currently open class.
-
-	* g++.dg/lookup/typedef1.C: New test.
-
---- gcc/cp/parser.c	(revision 129861)
-+++ gcc/cp/parser.c	(revision 129862)
-@@ -4085,7 +4085,15 @@ cp_parser_nested_name_specifier_opt (cp_
- 	  && !COMPLETE_TYPE_P (new_scope)
- 	  /* Do not try to complete dependent types.  */
- 	  && !dependent_type_p (new_scope))
--	new_scope = complete_type (new_scope);
-+	{
-+	  new_scope = complete_type (new_scope);
-+	  /* If it is a typedef to current class, use the current
-+	     class instead, as the typedef won't have any names inside
-+	     it yet.  */
-+	  if (!COMPLETE_TYPE_P (new_scope)
-+	      && currently_open_class (new_scope))
-+	    new_scope = TYPE_MAIN_VARIANT (new_scope);
-+	}
-       /* Make sure we look in the right scope the next time through
- 	 the loop.  */
-       parser->scope = new_scope;
---- gcc/testsuite/g++.dg/lookup/typedef1.C	(revision 0)
-+++ gcc/testsuite/g++.dg/lookup/typedef1.C	(revision 129862)
-@@ -0,0 +1,32 @@
-+// PR c++/33516
-+// { dg-do compile }
-+
-+struct S1;
-+typedef S1 T1;
-+struct S1 {
-+  typedef int U;
-+  T1::U i;
-+};
-+struct S2;
-+typedef S2 T2;
-+struct S2 {
-+  typedef int U;
-+};
-+T2::U j;
-+struct S3;
-+typedef S3 T3;
-+struct S3 {
-+  typedef int U;
-+  S3::U i;
-+};
-+
-+void
-+foo ()
-+{
-+  S1 s1;
-+  S2 s2;
-+  S3 s3;
-+  s1.i = 6;
-+  j = 7;
-+  s3.i = 8;
-+}

diff --git a/gcc41-pr33537.patch b/gcc41-pr33537.patch
deleted file mode 100644
index 03fd500..0000000
--- a/gcc41-pr33537.patch
+++ /dev/null
@@ -1,62 +0,0 @@
-2007-11-01  Jakub Jelinek  <jakub@redhat.com>
-
-	PR debug/33537
-	* dwarf2out.c (gen_formal_parameter_die, gen_variable_die,
-	gen_decl_die): Use TREE_TYPE (TREE_TYPE (decl)) as type
-	rather than TREE_TYPE (decl) if DECL_BY_REFERENCE (decl).
-
---- gcc/dwarf2out.c	(revision 129819)
-+++ gcc/dwarf2out.c	(revision 129820)
-@@ -11832,8 +11832,11 @@ gen_formal_parameter_die (tree node, dw_
- 	add_abstract_origin_attribute (parm_die, origin);
-       else
- 	{
-+	  tree type = TREE_TYPE (node);
- 	  add_name_and_src_coords_attributes (parm_die, node);
--	  add_type_attribute (parm_die, TREE_TYPE (node),
-+	  if (DECL_BY_REFERENCE (node))
-+	    type = TREE_TYPE (type);
-+	  add_type_attribute (parm_die, type,
- 			      TREE_READONLY (node),
- 			      TREE_THIS_VOLATILE (node),
- 			      context_die);
-@@ -12437,8 +12440,14 @@ gen_variable_die (tree decl, dw_die_ref 
-     }
-   else
-     {
-+      tree type = TREE_TYPE (decl);
-+      if ((TREE_CODE (decl) == PARM_DECL
-+	   || TREE_CODE (decl) == RESULT_DECL)
-+	  && DECL_BY_REFERENCE (decl))
-+	type = TREE_TYPE (type);
-+
-       add_name_and_src_coords_attributes (var_die, decl);
--      add_type_attribute (var_die, TREE_TYPE (decl), TREE_READONLY (decl),
-+      add_type_attribute (var_die, type, TREE_READONLY (decl),
- 			  TREE_THIS_VOLATILE (decl), context_die);
- 
-       if (TREE_PUBLIC (decl))
-@@ -13694,7 +13703,10 @@ gen_decl_die (tree decl, dw_die_ref cont
- 
-       /* Output any DIEs that are needed to specify the type of this data
- 	 object.  */
--      gen_type_die (TREE_TYPE (decl), context_die);
-+      if (TREE_CODE (decl) == RESULT_DECL && DECL_BY_REFERENCE (decl))
-+	gen_type_die (TREE_TYPE (TREE_TYPE (decl)), context_die);
-+      else
-+	gen_type_die (TREE_TYPE (decl), context_die);
- 
-       /* And its containing type.  */
-       origin = decl_class_context (decl);
-@@ -13728,7 +13740,10 @@ gen_decl_die (tree decl, dw_die_ref cont
-       break;
- 
-     case PARM_DECL:
--      gen_type_die (TREE_TYPE (decl), context_die);
-+      if (DECL_BY_REFERENCE (decl))
-+	gen_type_die (TREE_TYPE (TREE_TYPE (decl)), context_die);
-+      else
-+	gen_type_die (TREE_TYPE (decl), context_die);
-       gen_formal_parameter_die (decl, context_die);
-       break;
- 

diff --git a/gcc41-pr33616.patch b/gcc41-pr33616.patch
deleted file mode 100644
index 7817fe1..0000000
--- a/gcc41-pr33616.patch
+++ /dev/null
@@ -1,74 +0,0 @@
-2007-10-30  Jakub Jelinek  <jakub@redhat.com>
-
-	PR c++/33616
-	* decl2.c (build_offset_ref_call_from_tree): Call
-	build_non_dependent_expr on object prior to building ADDR_EXPR from it
-	if FN is DOTSTAR_EXPR.
-
-	* g++.dg/template/ptrmem18.C: New test.
-
---- gcc/cp/decl2.c	(revision 129783)
-+++ gcc/cp/decl2.c	(revision 129784)
-@@ -3499,9 +3499,9 @@ build_offset_ref_call_from_tree (tree fn
- 	 parameter.  That must be done before the FN is transformed
- 	 because we depend on the form of FN.  */
-       args = build_non_dependent_args (args);
-+      object = build_non_dependent_expr (object);
-       if (TREE_CODE (fn) == DOTSTAR_EXPR)
- 	object = build_unary_op (ADDR_EXPR, object, 0);
--      object = build_non_dependent_expr (object);
-       args = tree_cons (NULL_TREE, object, args);
-       /* Now that the arguments are done, transform FN.  */
-       fn = build_non_dependent_expr (fn);
---- gcc/testsuite/g++.dg/template/ptrmem18.C	(revision 0)
-+++ gcc/testsuite/g++.dg/template/ptrmem18.C	(revision 129784)
-@@ -0,0 +1,49 @@
-+// PR c++/33616
-+// { dg-do run }
-+// { dg-options "-O2" }
-+
-+extern "C" void abort ();
-+
-+struct S {
-+  int c;
-+  S () : c (0) {}
-+  virtual void f1 () { c += 1; }
-+  virtual void f2 () { c += 16; }
-+};
-+
-+struct T {
-+  S s;
-+};
-+
-+typedef void (S::*Q) ();
-+
-+template <Q P>
-+void test1 (T *t)
-+{
-+  (t->s.*P)();
-+}
-+
-+template <Q P>
-+void test2 (T *t)
-+{
-+  S &s = t->s;
-+  (s.*P)();
-+}
-+
-+int
-+main ()
-+{
-+  T t;
-+  test1 <&S::f1> (&t);
-+  if (t.s.c != 1)
-+    abort ();
-+  test1 <&S::f2> (&t);
-+  if (t.s.c != 17)
-+    abort ();
-+  test2 <&S::f1> (&t);
-+  if (t.s.c != 18)
-+    abort ();
-+  test2 <&S::f2> (&t);
-+  if (t.s.c != 34)
-+    abort ();
-+}

diff --git a/gcc41-pr33619.patch b/gcc41-pr33619.patch
deleted file mode 100644
index 443aa1e..0000000
--- a/gcc41-pr33619.patch
+++ /dev/null
@@ -1,77 +0,0 @@
-2007-10-15  Jakub Jelinek  <jakub@redhat.com>
-
-	PR tree-optimization/33619
-	* tree-outof-ssa.c (check_replaceable): Return false for all
-	calls other than __builtin_expect.
-
-	* gcc.dg/pr33619.c: New test.
-
---- gcc/tree-outof-ssa.c	2007-10-11 22:01:41.000000000 +0200
-+++ gcc/tree-outof-ssa.c	2007-10-16 14:28:42.000000000 +0200
-@@ -1570,12 +1570,14 @@ check_replaceable (temp_expr_table_p tab
-   if (flag_float_store && FLOAT_TYPE_P (TREE_TYPE (TREE_OPERAND (stmt, 1))))
-     return false;
- 
--  /* Calls to functions with side-effects cannot be replaced.  */
-+  /* No calls to functions other than __builtin_expect are replaceable.  */
-   if ((call_expr = get_call_expr_in (stmt)) != NULL_TREE)
-     {
--      int call_flags = call_expr_flags (call_expr);
--      if (TREE_SIDE_EFFECTS (call_expr)
--	  && !(call_flags & (ECF_PURE | ECF_CONST | ECF_NORETURN)))
-+      tree fndecl = get_callee_fndecl (call_expr);
-+
-+      if (fndecl == NULL_TREE
-+	  || DECL_BUILT_IN_CLASS (fndecl) != BUILT_IN_NORMAL
-+	  || DECL_FUNCTION_CODE (fndecl) != BUILT_IN_EXPECT)
- 	return false;
-     }
- 
---- gcc/testsuite/gcc.dg/pr33619.c	(revision 0)
-+++ gcc/testsuite/gcc.dg/pr33619.c	(revision 129350)
-@@ -0,0 +1,45 @@
-+/* PR tree-optimization/33619 */
-+/* { dg-do run } */
-+/* { dg-options "-O2" } */
-+
-+#ifdef __powerpc__
-+# define REG1 __asm__ ("3")
-+# define REG2 __asm__ ("4")
-+#elif defined __x86_64__
-+# define REG1 __asm__ ("rdi")
-+# define REG2 __asm__ ("rsi")
-+#else
-+# define REG1
-+# define REG2
-+#endif
-+
-+static inline void
-+bar (unsigned long x, int y)
-+{
-+  register unsigned long p1 REG1 = x;
-+  register unsigned long p2 REG2 = y;
-+  __asm__ volatile ("" : "=r" (p1), "=r" (p2) : "0" (p1), "1" (p2) : "memory");
-+  if (p1 != 0xdeadUL || p2 != 0xbefUL)
-+    __builtin_abort ();
-+}
-+
-+__attribute__((const, noinline)) int
-+baz (int x)
-+{
-+  return x;
-+}
-+
-+__attribute__((noinline)) void
-+foo (unsigned long *x, int y)
-+{
-+  unsigned long a = *x;
-+  bar (a, baz (y));
-+}
-+
-+int
-+main (void)
-+{
-+  unsigned long a = 0xdeadUL;
-+  foo (&a, 0xbefUL);
-+  return 0;
-+}

diff --git a/gcc41-pr33639.patch b/gcc41-pr33639.patch
deleted file mode 100644
index 7dccdb4..0000000
--- a/gcc41-pr33639.patch
+++ /dev/null
@@ -1,84 +0,0 @@
-2007-10-03  Andrew Haley  <aph@redhat.com>
-
-	PR java/33639
-	* class.c (mangled_classname): Detect and replace illegal
-	characters in assembly language symbols.
-	(gen_indirect_dispatch_tables): Call mangled_classname() on
-	the type.
-
---- gcc/java/class.c	(revision 128980)
-+++ gcc/java/class.c	(revision 128981)
-@@ -314,10 +314,63 @@ identifier_subst (const tree old_id,
- tree
- mangled_classname (const char *prefix, tree type)
- {
-+  tree result;
-   tree ident = TYPE_NAME (type);
-   if (TREE_CODE (ident) != IDENTIFIER_NODE)
-     ident = DECL_NAME (ident);
--  return identifier_subst (ident, prefix, '.', '_', "");
-+  result = identifier_subst (ident, prefix, '.', '_', "");
-+
-+  /* Replace any characters that aren't in the set [0-9a-zA-Z_$] with
-+     "_0xXX".  Class names containing such chracters are uncommon, but
-+     they do sometimes occur in class files.  Without this check,
-+     these names cause assembly errors.
-+
-+     There is a possibility that a real class name could conflict with
-+     the identifier we generate, but it is unlikely and will
-+     immediately be detected as an assembler error.  At some point we
-+     should do something more elaborate (perhaps using the full
-+     unicode mangling scheme) in order to prevent such a conflict.  */
-+  {
-+    int i;
-+    const int len = IDENTIFIER_LENGTH (result);
-+    const char *p = IDENTIFIER_POINTER (result);
-+    int illegal_chars = 0;
-+
-+    /* Make two passes over the identifier.  The first pass is merely
-+       to count illegal characters; we need to do this in order to
-+       allocate a buffer.  */
-+    for (i = 0; i < len; i++)
-+      {
-+	char c = p[i];
-+	illegal_chars += (! ISALNUM (c) && c != '_' && c != '$');
-+      }
-+
-+    /* And the second pass, which is rarely executed, does the
-+       rewriting.  */
-+    if (illegal_chars != 0)
-+      {
-+	char *buffer = alloca (illegal_chars * 4 + len + 1);
-+	int j;
-+
-+	for (i = 0, j = 0; i < len; i++)
-+	  {
-+	    char c = p[i];
-+	    if (! ISALNUM (c) && c != '_' && c != '$')
-+	      {
-+		buffer[j++] = '_';
-+		sprintf (&buffer[j], "0x%02x", c);
-+		j += 4;
-+	      }
-+	    else
-+	      buffer[j++] = c;
-+	  }
-+
-+	buffer[j] = 0;
-+	result = get_identifier (buffer);
-+      }
-+  }
-+
-+  return result;
- }
- 
- tree
-@@ -389,7 +442,7 @@ while (0)
- void
- gen_indirect_dispatch_tables (tree type)
- {
--  const char *typename = IDENTIFIER_POINTER (DECL_NAME (TYPE_NAME (type)));
-+  const char *typename = IDENTIFIER_POINTER (mangled_classname ("", type));
-   {  
-     tree field = NULL;
-     char *buf = alloca (strlen (typename) + strlen ("_catch_classes_") + 1);

diff --git a/gcc41-pr33723.patch b/gcc41-pr33723.patch
deleted file mode 100644
index 2d3e746..0000000
--- a/gcc41-pr33723.patch
+++ /dev/null
@@ -1,189 +0,0 @@
-2007-10-29  Jakub Jelinek  <jakub@redhat.com>
-
-	PR tree-optimization/33723
-	* c-gimplify.c (c_gimplify_expr): Optimize INIT_EXPR or
-	MODIFY_EXPR with non-addressable COMPOUND_LITERAL_EXPR as source.
-
-2007-11-20  Jakub Jelinek  <jakub@redhat.com>
-
-	PR testsuite/33978
-	* gcc.dg/tree-ssa/pr33723.c: Adjust scan pattern to make it less
-	dependent on target settings like move_by_pieces etc.
-
-2007-10-30  Jakub Jelinek  <jakub@redhat.com>
-
-	PR tree-optimization/33723
-	* gcc.dg/tree-ssa/pr33723.c (T): Decrease size of field s.
-
-2007-10-29  Jakub Jelinek  <jakub@redhat.com>
-
-	PR tree-optimization/33723
-	* gcc.c-torture/execute/20071029-1.c: New test.
-	* gcc.dg/tree-ssa/pr33723.c: New test.
-
---- gcc/c-gimplify.c	(revision 129742)
-+++ gcc/c-gimplify.c	(revision 129743)
-@@ -233,6 +233,29 @@ c_gimplify_expr (tree *expr_p, tree *pre
-     case COMPOUND_LITERAL_EXPR:
-       return gimplify_compound_literal_expr (expr_p, pre_p);
- 
-+    case INIT_EXPR:
-+    case MODIFY_EXPR:
-+      if (TREE_CODE (TREE_OPERAND (*expr_p, 1)) == COMPOUND_LITERAL_EXPR)
-+	{
-+	  tree complit = TREE_OPERAND (*expr_p, 1);
-+	  tree decl_s = COMPOUND_LITERAL_EXPR_DECL_STMT (complit);
-+	  tree decl = DECL_EXPR_DECL (decl_s);
-+	  tree init = DECL_INITIAL (decl);
-+
-+	  /* struct T x = (struct T) { 0, 1, 2 } can be optimized
-+	     into struct T x = { 0, 1, 2 } if the address of the
-+	     compound literal has never been taken.  */
-+	  if (!TREE_ADDRESSABLE (complit)
-+	      && !TREE_ADDRESSABLE (decl)
-+	      && init)
-+	    {
-+	      *expr_p = copy_node (*expr_p);
-+	      TREE_OPERAND (*expr_p, 1) = init;
-+	      return GS_OK;
-+	    }
-+	}
-+      return GS_UNHANDLED;
-+
-     default:
-       return GS_UNHANDLED;
-     }
---- gcc/testsuite/gcc.c-torture/execute/20071029-1.c	(revision 0)
-+++ gcc/testsuite/gcc.c-torture/execute/20071029-1.c	(revision 129743)
-@@ -0,0 +1,56 @@
-+extern void exit (int);
-+extern void abort (void);
-+
-+typedef union
-+{
-+  struct
-+  {
-+    int f1, f2, f3, f4, f5, f6, f7, f8;
-+    long int f9, f10;
-+    int f11;
-+  } f;
-+  char s[56];
-+  long int a;
-+} T;
-+
-+__attribute__((noinline))
-+void
-+test (T *t)
-+{
-+  static int i = 11;
-+  if (t->f.f1 != i++)
-+    abort ();
-+  if (t->f.f2 || t->f.f3 || t->f.f4 || t->f.f5 || t->f.f6
-+      || t->f.f7 || t->f.f8 || t->f.f9 || t->f.f10 || t->f.f11)
-+    abort ();
-+  if (i == 20)
-+    exit (0);
-+}
-+
-+__attribute__((noinline))
-+void
-+foo (int i)
-+{
-+  T t;
-+again:
-+  t = (T) { { ++i, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } };
-+  test (&t);
-+  goto again;
-+}
-+
-+int
-+main (void)
-+{
-+  T *t1, *t2;
-+  int cnt = 0;
-+  t1 = (T *) 0;
-+loop:
-+  t2 = t1;
-+  t1 = & (T) { .f.f9 = cnt++ };
-+  if (cnt < 3)
-+    goto loop;
-+  if (t1 != t2 || t1->f.f9 != 2)
-+    abort ();
-+  foo (10);
-+  return 0;
-+}
---- gcc/testsuite/gcc.dg/tree-ssa/pr33723.c	(revision 0)
-+++ gcc/testsuite/gcc.dg/tree-ssa/pr33723.c	(revision 129743)
-@@ -0,0 +1,72 @@
-+/* PR tree-optimization/33723 */
-+/* { dg-do compile } */
-+/* { dg-options "-O2 -fdump-tree-gimple" } */
-+
-+typedef union
-+{
-+  struct
-+  {
-+    int f1, f2, f3, f4, f5, f6, f7, f8;
-+    long int f9, f10;
-+    int f11;
-+  } f;
-+  char s[4];
-+  long int a;
-+} T;
-+
-+void
-+foo1 (void)
-+{
-+  T t;
-+  t = (T) { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } };
-+  test (&t);
-+}
-+
-+void
-+bar1 (void)
-+{
-+  T t = { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } };
-+  test (&t);
-+}
-+
-+void
-+baz1 (void)
-+{
-+  T t;
-+  t = (const T) { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } };
-+  test (&t);
-+}
-+
-+void
-+foo2 (void)
-+{
-+  T t;
-+  t = (T) { { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 } };
-+  test (&t);
-+}
-+
-+void
-+bar2 (void)
-+{
-+  T t = { { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 } };
-+  test (&t);
-+}
-+
-+void
-+baz2 (void)
-+{
-+  T t;
-+  t = (const T) { { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 } };
-+  test (&t);
-+}
-+
-+void
-+baz3 (void)
-+{
-+  T t;
-+  t = (const T) (T) { { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 } };
-+  test (&t);
-+}
-+
-+/* { dg-final { scan-tree-dump-not "t = D" "gimple"} } */
-+/* { dg-final { cleanup-tree-dump "gimple" } } */

diff --git a/gcc41-pr33763.patch b/gcc41-pr33763.patch
deleted file mode 100644
index 8f111ba..0000000
--- a/gcc41-pr33763.patch
+++ /dev/null
@@ -1,153 +0,0 @@
-2007-10-16  Jakub Jelinek  <jakub@redhat.com>
-
-	PR tree-optimization/33763
-	* gcc.dg/pr33763.c: New test.
-	* g++.dg/opt/inline12.C: New test.
-
-2007-10-14  Jan Hubicka  <jh@suse.cz>
-
-	PR tree-optimization/33763
-	* tree-inline.c (expand_call_inline): Silently ignore always_inline
-	attribute for redefined extern inline functions.
-
---- gcc/tree-inline.c.jj	2007-09-25 12:23:05.000000000 +0200
-+++ gcc/tree-inline.c	2007-10-16 15:27:51.000000000 +0200
-@@ -2059,6 +2059,12 @@ expand_call_inline (basic_block bb, tree
-   if (!cgraph_inline_p (cg_edge, &reason))
-     {
-       if (lookup_attribute ("always_inline", DECL_ATTRIBUTES (fn))
-+	/* For extern inline functions that get redefined we always
-+	   silently ignored alway_inline flag. Better behaviour would
-+	   be to be able to keep both bodies and use extern inline body
-+	   for inlining, but we can't do that because frontends overwrite
-+	   the body.  */
-+	  && !cg_edge->callee->local.redefined_extern_inline
- 	  /* Avoid warnings during early inline pass. */
- 	  && (!flag_unit_at_a_time || cgraph_global_info_ready))
- 	{
---- gcc/testsuite/gcc.dg/pr33763.c.jj	2007-10-16 15:20:41.000000000 +0200
-+++ gcc/testsuite/gcc.dg/pr33763.c	2007-10-16 15:20:35.000000000 +0200
-@@ -0,0 +1,60 @@
-+/* PR tree-optimization/33763 */
-+/* { dg-do compile } */
-+/* { dg-options "-O2" } */
-+
-+typedef struct
-+{
-+  void *a;
-+  void *b;
-+} T;
-+extern void *foo (const char *, const char *);
-+extern void *bar (void *, const char *, T);
-+extern int baz (const char *, int);
-+
-+extern inline __attribute__ ((always_inline, gnu_inline)) int
-+baz (const char *x, int y)
-+{
-+  return 2;
-+}
-+
-+int
-+baz (const char *x, int y)
-+{
-+  return 1;
-+}
-+
-+int xa, xb;
-+
-+static void *
-+inl (const char *x, const char *y)
-+{
-+  T t = { &xa, &xb };
-+  int *f = (int *) __builtin_malloc (sizeof (int));
-+  const char *z;
-+  int o = 0;
-+  void *r = 0;
-+
-+  for (z = y; *z; z++)
-+    {
-+      if (*z == 'r')
-+	o |= 1;
-+      if (*z == 'w')
-+	o |= 2;
-+    }
-+  if (o == 1)
-+    *f = baz (x, 0);
-+  if (o == 2)
-+    *f = baz (x, 1);
-+  if (o == 3)
-+    *f = baz (x, 2);
-+
-+  if (o && *f > 0)
-+    r = bar (f, "w", t);
-+  return r;
-+}
-+
-+void *
-+foo (const char *x, const char *y)
-+{
-+  return inl (x, y);
-+}
---- gcc/testsuite/g++.dg/opt/inline12.C.jj	2007-10-16 15:26:01.000000000 +0200
-+++ gcc/testsuite/g++.dg/opt/inline12.C	2007-10-16 15:26:20.000000000 +0200
-@@ -0,0 +1,60 @@
-+// PR tree-optimization/33763
-+// { dg-do compile }
-+// { dg-options "-O2" }
-+
-+typedef struct
-+{
-+  void *a;
-+  void *b;
-+} T;
-+extern void *foo (const char *, const char *);
-+extern void *bar (void *, const char *, T);
-+extern int baz (const char *, int);
-+
-+extern inline __attribute__ ((always_inline, gnu_inline)) int
-+baz (const char *x, int y)
-+{
-+  return 2;
-+}
-+
-+int
-+baz (const char *x, int y)
-+{
-+  return 1;
-+}
-+
-+int xa, xb;
-+
-+static void *
-+inl (const char *x, const char *y)
-+{
-+  T t = { &xa, &xb };
-+  int *f = (int *) __builtin_malloc (sizeof (int));
-+  const char *z;
-+  int o = 0;
-+  void *r = 0;
-+
-+  for (z = y; *z; z++)
-+    {
-+      if (*z == 'r')
-+	o |= 1;
-+      if (*z == 'w')
-+	o |= 2;
-+    }
-+  if (o == 1)
-+    *f = baz (x, 0);
-+  if (o == 2)
-+    *f = baz (x, 1);
-+  if (o == 3)
-+    *f = baz (x, 2);
-+
-+  if (o && *f > 0)
-+    r = bar (f, "w", t);
-+  return r;
-+}
-+
-+void *
-+foo (const char *x, const char *y)
-+{
-+  return inl (x, y);
-+}

diff --git a/gcc41-pr33836.patch b/gcc41-pr33836.patch
deleted file mode 100644
index 811e128..0000000
--- a/gcc41-pr33836.patch
+++ /dev/null
@@ -1,51 +0,0 @@
-2007-11-05  Jakub Jelinek  <jakub@redhat.com>
-
-	PR c++/33836
-	* parser.c (cp_parser_unary_expression): For &&label call
-	cp_parser_non_integral_constant_expression and return error_mark_node
-	if it returned true.
-
-	* g++.dg/ext/label10.C: New test.
-
---- gcc/cp/parser.c	(revision 129895)
-+++ gcc/cp/parser.c	(revision 129896)
-@@ -5329,13 +5329,18 @@ cp_parser_unary_expression (cp_parser *p
- 	       && token->type == CPP_AND_AND)
- 	{
- 	  tree identifier;
-+	  tree expression;
- 
- 	  /* Consume the '&&' token.  */
- 	  cp_lexer_consume_token (parser->lexer);
- 	  /* Look for the identifier.  */
- 	  identifier = cp_parser_identifier (parser);
- 	  /* Create an expression representing the address.  */
--	  return finish_label_address_expr (identifier);
-+	  expression = finish_label_address_expr (identifier);
-+	  if (cp_parser_non_integral_constant_expression (parser,
-+						"the address of a label"))
-+	    expression = error_mark_node;
-+	  return expression;
- 	}
-     }
-   if (unary_operator != ERROR_MARK)
---- gcc/testsuite/g++.dg/ext/label10.C	(revision 0)
-+++ gcc/testsuite/g++.dg/ext/label10.C	(revision 129896)
-@@ -0,0 +1,17 @@
-+// PR c++/33836
-+// { dg-do compile }
-+// { dg-options "-std=gnu++98" }
-+
-+template<int N> struct A
-+{
-+  enum { M = && N };	// { dg-error "referenced outside|cannot appear in" }
-+};
-+
-+A<0> a;
-+
-+void foo ()
-+{
-+  __label__ P;
-+  enum { O = && P };	// { dg-error "cannot appear in" }
-+  P:;
-+}

diff --git a/gcc41-pr33842.patch b/gcc41-pr33842.patch
deleted file mode 100644
index 19803f1..0000000
--- a/gcc41-pr33842.patch
+++ /dev/null
@@ -1,130 +0,0 @@
-2007-10-27  Jakub Jelinek  <jakub@redhat.com>
-
-	PR c++/33842
-	* cxx-pretty-print.h (pp_cxx_offsetof_expression): New prototype.
-	* cxx-pretty-print.c (pp_cxx_primary_expression): Handle
-	OFFSETOF_EXPR.
-	(pp_cxx_offsetof_expression_1, pp_cxx_offsetof_expression): New
-	functions.
-	* error.c (dump_expr): Handle OFFSETOF_EXPR.
-
-	* g++.dg/template/error34.C: New test.
-
---- gcc/cp/error.c	(revision 129676)
-+++ gcc/cp/error.c	(revision 129677)
-@@ -1887,6 +1887,10 @@ dump_expr (tree t, int flags)
-       dump_expr (TREE_OPERAND (t, 0), flags);
-       break;
- 
-+    case OFFSETOF_EXPR:
-+      pp_cxx_offsetof_expression (cxx_pp, t);
-+      break;
-+
-       /*  This list is incomplete, but should suffice for now.
- 	  It is very important that `sorry' does not call
- 	  `report_error_function'.  That could cause an infinite loop.  */
---- gcc/cp/cxx-pretty-print.c	(revision 129676)
-+++ gcc/cp/cxx-pretty-print.c	(revision 129677)
-@@ -356,6 +356,10 @@ pp_cxx_primary_expression (cxx_pretty_pr
-       pp_cxx_right_paren (pp);
-       break;
- 
-+    case OFFSETOF_EXPR:
-+      pp_cxx_offsetof_expression (pp, t);
-+      break;
-+
-     default:
-       pp_c_primary_expression (pp_c_base (pp), t);
-       break;
-@@ -1944,6 +1948,49 @@ typedef c_pretty_print_fn pp_fun;
- 
- /* Initialization of a C++ pretty-printer object.  */
- 
-+static bool
-+pp_cxx_offsetof_expression_1 (cxx_pretty_printer *pp, tree t)
-+{
-+  switch (TREE_CODE (t))
-+    {
-+    case ARROW_EXPR:
-+      if (TREE_CODE (TREE_OPERAND (t, 0)) == STATIC_CAST_EXPR
-+	  && POINTER_TYPE_P (TREE_TYPE (TREE_OPERAND (t, 0))))
-+	{
-+	  pp_cxx_type_id (pp, TREE_TYPE (TREE_TYPE (TREE_OPERAND (t, 0))));
-+	  pp_cxx_separate_with (pp, ',');
-+	  return true;
-+	}
-+      return false;
-+    case COMPONENT_REF:
-+      if (!pp_cxx_offsetof_expression_1 (pp, TREE_OPERAND (t, 0)))
-+	return false;
-+      if (TREE_CODE (TREE_OPERAND (t, 0)) != ARROW_EXPR)
-+	pp_cxx_dot (pp);
-+      pp_cxx_expression (pp, TREE_OPERAND (t, 1));
-+      return true;
-+    case ARRAY_REF:
-+      if (!pp_cxx_offsetof_expression_1 (pp, TREE_OPERAND (t, 0)))
-+	return false;
-+      pp_left_bracket (pp);
-+      pp_cxx_expression (pp, TREE_OPERAND (t, 1));
-+      pp_right_bracket (pp);
-+      return true;
-+    default:
-+      return false;
-+    }
-+}
-+
-+void
-+pp_cxx_offsetof_expression (cxx_pretty_printer *pp, tree t)
-+{
-+  pp_cxx_identifier (pp, "offsetof");
-+  pp_cxx_left_paren (pp);
-+  if (!pp_cxx_offsetof_expression_1 (pp, TREE_OPERAND (t, 0)))
-+    pp_cxx_expression (pp, TREE_OPERAND (t, 0));
-+  pp_cxx_right_paren (pp);
-+}
-+
- void
- pp_cxx_pretty_printer_init (cxx_pretty_printer *pp)
- {
---- gcc/cp/cxx-pretty-print.h	(revision 129676)
-+++ gcc/cp/cxx-pretty-print.h	(revision 129677)
-@@ -70,6 +70,6 @@ void pp_cxx_separate_with (cxx_pretty_pr
- 
- void pp_cxx_declaration (cxx_pretty_printer *, tree);
- void pp_cxx_canonical_template_parameter (cxx_pretty_printer *, tree);
--
-+void pp_cxx_offsetof_expression (cxx_pretty_printer *, tree);
- 
- #endif /* GCC_CXX_PRETTY_PRINT_H */
---- gcc/testsuite/g++.dg/template/error34.C	(revision 0)
-+++ gcc/testsuite/g++.dg/template/error34.C	(revision 129677)
-@@ -0,0 +1,29 @@
-+// PR c++/33842
-+// { dg-do compile }
-+
-+template<typename T> struct A
-+{
-+  A<__builtin_offsetof(T, x)>();	// { dg-error "type/value mismatch|offsetof\\(T, x\\)" }
-+};
-+
-+template<typename T> struct B
-+{
-+  B<__builtin_offsetof(T, x.y)>();	// { dg-error "type/value mismatch|offsetof\\(T, x.y\\)" }
-+};
-+
-+template<typename T> struct C
-+{
-+  C<__builtin_offsetof(T, x[6])>();	// { dg-error "type/value mismatch|offsetof\\(T, x\\\[6\\\]\\)" }
-+};
-+
-+template<typename T> struct D
-+{
-+  D<__builtin_offsetof(T, x.y[6].z)>();	// { dg-error "type/value mismatch|offsetof\\(T, x.y\\\[6\\\].z\\)" }
-+};
-+
-+struct E { int x; };
-+
-+template<typename T> struct F
-+{
-+  F<__builtin_offsetof(E, x)>();	// { dg-error "type/value mismatch|offsetof\\(E, x\\)" }
-+};

diff --git a/gcc41-pr33844.patch b/gcc41-pr33844.patch
deleted file mode 100644
index 4d5d883..0000000
--- a/gcc41-pr33844.patch
+++ /dev/null
@@ -1,56 +0,0 @@
-2007-10-27  Jakub Jelinek  <jakub@redhat.com>
-
-	PR c++/33844
-	* cxx-pretty-print.c (pp_cxx_pm_expression) <case MEMBER_REF>: Print
-	->* rather than .*.
-	* error.c (dump_expr): Handle MEMBER_REF and DOTSTAR_EXPR.
-
-	* g++.dg/other/ptrmem8.C: New test.
-
---- gcc/cp/error.c	(revision 129681)
-+++ gcc/cp/error.c	(revision 129682)
-@@ -1891,6 +1891,11 @@ dump_expr (tree t, int flags)
-       pp_cxx_offsetof_expression (cxx_pp, t);
-       break;
- 
-+    case MEMBER_REF:
-+    case DOTSTAR_EXPR:
-+      pp_multiplicative_expression (cxx_pp, t);
-+      break;
-+
-       /*  This list is incomplete, but should suffice for now.
- 	  It is very important that `sorry' does not call
- 	  `report_error_function'.  That could cause an infinite loop.  */
---- gcc/cp/cxx-pretty-print.c	(revision 129681)
-+++ gcc/cp/cxx-pretty-print.c	(revision 129682)
-@@ -814,7 +814,10 @@ pp_cxx_pm_expression (cxx_pretty_printer
-     case MEMBER_REF:
-     case DOTSTAR_EXPR:
-       pp_cxx_pm_expression (pp, TREE_OPERAND (t, 0));
--      pp_cxx_dot (pp);
-+      if (TREE_CODE (t) == MEMBER_REF)
-+	pp_cxx_arrow (pp);
-+      else
-+	pp_cxx_dot (pp);
-       pp_star(pp);
-       pp_cxx_cast_expression (pp, TREE_OPERAND (t, 1));
-       break;
---- gcc/testsuite/g++.dg/other/ptrmem8.C	(revision 0)
-+++ gcc/testsuite/g++.dg/other/ptrmem8.C	(revision 129682)
-@@ -0,0 +1,16 @@
-+// PR c++/33844
-+// { dg-do compile }
-+
-+struct A {};
-+
-+template<int> void foo(void (A::* f)())
-+{
-+  A a;
-+  &(a.*f);	// { dg-error "invalid use of\[^\n\]*\\.\\*\[^\n\]*to form|qualified-id is required" }
-+}
-+
-+template<int> void bar(void (A::* f)())
-+{
-+  A *p;
-+  &(p->*f);	// { dg-error "invalid use of\[^\n\]*->\\*\[^\n\]*to form|qualified-id is required" }
-+}

diff --git a/gcc41-pr33962.patch b/gcc41-pr33962.patch
deleted file mode 100644
index ecd83dc..0000000
--- a/gcc41-pr33962.patch
+++ /dev/null
@@ -1,39 +0,0 @@
-2007-11-20  Jakub Jelinek  <jakub@redhat.com>
-
-	PR c++/33962
-	* pt.c (more_specialized_fn): Don't segfault if one or
-	both argument list end with ellipsis.
-
-	* g++.dg/overload/template3.C: New test.
-
---- gcc/cp/pt.c	(revision 130307)
-+++ gcc/cp/pt.c	(revision 130308)
-@@ -13523,6 +13523,10 @@ more_specialized_fn (tree pat1, tree pat
- 
-       args1 = TREE_CHAIN (args1);
-       args2 = TREE_CHAIN (args2);
-+
-+      /* Stop when an ellipsis is seen.  */
-+      if (args1 == NULL_TREE || args2 == NULL_TREE)
-+	break;
-     }
- 
-   processing_template_decl--;
---- gcc/testsuite/g++.dg/overload/template3.C	(revision 0)
-+++ gcc/testsuite/g++.dg/overload/template3.C	(revision 130308)
-@@ -0,0 +1,15 @@
-+// PR c++/33962
-+// { dg-do compile }
-+
-+template <class T> struct A;
-+
-+template <class U> void foo (const U &x, ...);
-+template <class T> void foo (const A<T> &x, ...);
-+
-+void bar (const A<int> &x, const char *y)
-+{
-+  foo (x, y);
-+}
-+
-+/* { dg-final { scan-assembler "_Z3fooIiEvRK1AIT_Ez" } } */
-+/* { dg-final { scan-assembler-not "_Z3fooI1AIiEEvRKT_z" } } */

diff --git a/gcc41-pr34070.patch b/gcc41-pr34070.patch
deleted file mode 100644
index b8b1f6a..0000000
--- a/gcc41-pr34070.patch
+++ /dev/null
@@ -1,62 +0,0 @@
-2007-11-12  Richard Guenther  <rguenther@suse.de>
-
-	PR middle-end/34070
-	* fold-const.c (fold_binary): If testing for non-negative
-	operands with tree_expr_nonnegative_warnv_p make sure to
-	use op0 which has all (sign) conversions retained.
-
-	* gcc.c-torture/execute/pr34070-1.c: New testcase.
-	* gcc.c-torture/execute/pr34070-2.c: Likewise.
-
---- gcc/fold-const.c	(revision 130097)
-+++ gcc/fold-const.c	(revision 130098)
-@@ -8509,7 +8509,7 @@ fold_binary (enum tree_code code, tree t
-       /* Simplify A / (B << N) where A and B are positive and B is
- 	 a power of 2, to A >> (N + log2(B)).  */
-       if (TREE_CODE (arg1) == LSHIFT_EXPR
--	  && (TYPE_UNSIGNED (type) || tree_expr_nonnegative_p (arg0)))
-+	  && (TYPE_UNSIGNED (type) || tree_expr_nonnegative_p (op0)))
- 	{
- 	  tree sval = TREE_OPERAND (arg1, 0);
- 	  if (integer_pow2p (sval) && tree_int_cst_sgn (sval) > 0)
-@@ -8584,7 +8584,7 @@ fold_binary (enum tree_code code, tree t
-       /* Optimize TRUNC_MOD_EXPR by a power of two into a BIT_AND_EXPR,
-          i.e. "X % C" into "X & (C - 1)", if X and C are positive.  */
-       if ((code == TRUNC_MOD_EXPR || code == FLOOR_MOD_EXPR)
--	  && (TYPE_UNSIGNED (type) || tree_expr_nonnegative_p (arg0)))
-+	  && (TYPE_UNSIGNED (type) || tree_expr_nonnegative_p (op0)))
- 	{
- 	  tree c = arg1;
- 	  /* Also optimize A % (C << N)  where C is a power of 2,
---- gcc/testsuite/gcc.c-torture/execute/pr34070-1.c	(revision 0)
-+++ gcc/testsuite/gcc.c-torture/execute/pr34070-1.c	(revision 130098)
-@@ -0,0 +1,13 @@
-+extern void abort (void);
-+
-+int f(unsigned int x)
-+{
-+    return ((int)x) % 4;
-+}
-+
-+int main()
-+{
-+  if (f(-1) != -1)
-+    abort ();
-+  return 0;
-+}
---- gcc/testsuite/gcc.c-torture/execute/pr34070-2.c	(revision 0)
-+++ gcc/testsuite/gcc.c-torture/execute/pr34070-2.c	(revision 130098)
-@@ -0,0 +1,13 @@
-+extern void abort (void);
-+
-+int f(unsigned int x, int n)
-+{
-+    return ((int)x) / (1 << n);
-+}
-+
-+int main()
-+{
-+  if (f(-1, 1) != 0)
-+    abort ();
-+  return 0;
-+}

diff --git a/gcc41-pr34089.patch b/gcc41-pr34089.patch
deleted file mode 100644
index 76ff9cf..0000000
--- a/gcc41-pr34089.patch
+++ /dev/null
@@ -1,39 +0,0 @@
-2007-11-20  Jakub Jelinek  <jakub@redhat.com>
-
-	PR c++/34089
-	* parser.c (cp_parser_class_head): Reject function template ids.
-
-	* g++.dg/template/crash74.C: New test.
-
---- gcc/cp/parser.c	(revision 130315)
-+++ gcc/cp/parser.c	(revision 130316)
-@@ -14536,8 +14536,18 @@ cp_parser_class_head (cp_parser* parser,
-   /* Look up the type.  */
-   if (template_id_p)
-     {
--      type = TREE_TYPE (id);
--      type = maybe_process_partial_specialization (type);
-+      if (TREE_CODE (id) == TEMPLATE_ID_EXPR
-+	  && (DECL_FUNCTION_TEMPLATE_P (TREE_OPERAND (id, 0))
-+	      || TREE_CODE (TREE_OPERAND (id, 0)) == OVERLOAD))
-+	{
-+	  error ("function template %qD redeclared as a class template", id);
-+	  type = error_mark_node;
-+	}
-+      else
-+	{
-+	  type = TREE_TYPE (id);
-+	  type = maybe_process_partial_specialization (type);
-+	}
-       if (nested_name_specifier)
- 	pushed_scope = push_scope (nested_name_specifier);
-     }
---- gcc/testsuite/g++.dg/template/crash74.C	(revision 0)
-+++ gcc/testsuite/g++.dg/template/crash74.C	(revision 130316)
-@@ -0,0 +1,6 @@
-+// PR c++/34089
-+// { dg-do compile }
-+// { dg-options "" }
-+
-+template<typename F> void foo () { }
-+template<typename F> struct foo<F> { };	// { dg-error "redeclared as" }

diff --git a/gcc41-pr34130.patch b/gcc41-pr34130.patch
deleted file mode 100644
index f67f8ae..0000000
--- a/gcc41-pr34130.patch
+++ /dev/null
@@ -1,35 +0,0 @@
-2007-11-17  Richard Guenther  <rguenther@suse.de>
-
-	PR middle-end/34130
-	* fold-const.c (extract_muldiv_1): Do not move negative
-	constants inside ABS_EXPR.
-
-	* gcc.c-torture/execute/pr34130.c: New testcase.
-
---- gcc/fold-const.c	(revision 130257)
-+++ gcc/fold-const.c	(revision 130258)
-@@ -6095,6 +6095,9 @@ extract_muldiv_1 (tree t, tree c, enum t
-             }
-           break;
-         }
-+      /* If the constant is negative, we cannot simplify this.  */
-+      if (tree_int_cst_sgn (c) == -1)
-+        break;
-       /* FALLTHROUGH */
-     case NEGATE_EXPR:
-       if ((t1 = extract_muldiv (op0, c, code, wide_type, strict_overflow_p))
---- gcc/testsuite/gcc.c-torture/execute/pr34130.c	(revision 0)
-+++ gcc/testsuite/gcc.c-torture/execute/pr34130.c	(revision 130258)
-@@ -0,0 +1,12 @@
-+extern void abort (void);
-+int foo (int i)
-+{
-+  return -2 * __builtin_abs(i - 2);
-+}
-+int main()
-+{
-+  if (foo(1) != -2
-+      || foo(3) != -2)
-+    abort ();
-+  return 0;
-+}

diff --git a/gcc41-pr34146.patch b/gcc41-pr34146.patch
deleted file mode 100644
index 9d830d6..0000000
--- a/gcc41-pr34146.patch
+++ /dev/null
@@ -1,133 +0,0 @@
-2007-11-20  Jakub Jelinek  <jakub@redhat.com>
-
-	PR c/34146
-	* c-gimplify.c (optimize_compound_literals_in_ctor): New function.
-	(c_gimplify_expr): Use it.
-
-	* gcc.dg/tree-ssa/pr34146.c: New test.
- 
---- gcc/c-gimplify.c	(revision 130310)
-+++ gcc/c-gimplify.c	(revision 130311)
-@@ -208,6 +208,47 @@ gimplify_compound_literal_expr (tree *ex
-   return GS_OK;
- }
- 
-+/* Optimize embedded COMPOUND_LITERAL_EXPRs within a CONSTRUCTOR,
-+   return a new CONSTRUCTOR if something changed.  */
-+
-+static tree
-+optimize_compound_literals_in_ctor (tree orig_ctor)
-+{
-+  tree ctor = orig_ctor;
-+  VEC(constructor_elt,gc) *elts = CONSTRUCTOR_ELTS (ctor);
-+  unsigned int idx, num = VEC_length (constructor_elt, elts);
-+
-+  for (idx = 0; idx < num; idx++)
-+    {
-+      tree value = VEC_index (constructor_elt, elts, idx)->value;
-+      tree newval = value;
-+      if (TREE_CODE (value) == CONSTRUCTOR)
-+	newval = optimize_compound_literals_in_ctor (value);
-+      else if (TREE_CODE (value) == COMPOUND_LITERAL_EXPR)
-+	{
-+	  tree decl_s = COMPOUND_LITERAL_EXPR_DECL_STMT (value);
-+	  tree decl = DECL_EXPR_DECL (decl_s);
-+	  tree init = DECL_INITIAL (decl);
-+
-+	  if (!TREE_ADDRESSABLE (value)
-+	      && !TREE_ADDRESSABLE (decl)
-+	      && init)
-+	    newval = init;
-+	}
-+      if (newval == value)
-+	continue;
-+
-+      if (ctor == orig_ctor)
-+	{
-+	  ctor = copy_node (orig_ctor);
-+	  CONSTRUCTOR_ELTS (ctor) = VEC_copy (constructor_elt, gc, elts);
-+	  elts = CONSTRUCTOR_ELTS (ctor);
-+	}
-+      VEC_index (constructor_elt, elts, idx)->value = newval;
-+    }
-+  return ctor;
-+}
-+
- /* Do C-specific gimplification.  Args are as for gimplify_expr.  */
- 
- int
-@@ -254,6 +295,18 @@ c_gimplify_expr (tree *expr_p, tree *pre
- 	      return GS_OK;
- 	    }
- 	}
-+      else if (TREE_CODE (TREE_OPERAND (*expr_p, 1)) == CONSTRUCTOR)
-+	{
-+	  tree ctor
-+	    = optimize_compound_literals_in_ctor (TREE_OPERAND (*expr_p, 1));
-+
-+	  if (ctor != TREE_OPERAND (*expr_p, 1))
-+	    {
-+	      *expr_p = copy_node (*expr_p);
-+	      TREE_OPERAND (*expr_p, 1) = ctor;
-+	      return GS_OK;
-+	    }
-+	}
-       return GS_UNHANDLED;
- 
-     default:
---- gcc/testsuite/gcc.dg/tree-ssa/pr34146.c	(revision 0)
-+++ gcc/testsuite/gcc.dg/tree-ssa/pr34146.c	(revision 130311)
-@@ -0,0 +1,53 @@
-+/* PR c/34146 */
-+/* { dg-do compile } */
-+/* { dg-options "-O2 -fdump-tree-gimple" } */
-+
-+struct A
-+{
-+  int f1, f2, f3;
-+};
-+
-+struct B
-+{
-+  struct A g1, g2;
-+};
-+
-+struct C
-+{
-+  struct B h1, h2;
-+};
-+
-+typedef union
-+{
-+  struct C c;
-+  char s[4];
-+  long int a;
-+} T;
-+
-+void
-+foo (void)
-+{
-+  T t = { { { { 0, 0, 0 }, { 0, 0, 0 } }, { { 0, 0, 0 }, { 0, 0, 0 } } } };
-+  test (&t);
-+}
-+
-+void
-+bar (void)
-+{
-+  T t = { { { { 0, 0, 0 }, (struct A) { 0, 0, 0 } },
-+	    (struct B) { (struct A) { 0, 0, 0 }, { 0, 0, 0 } } } };
-+  test (&t);
-+}
-+
-+void
-+baz (void)
-+{
-+  T t = { { { { 0, 0, 0 }, (struct A) { 1, 1, 1 } },
-+	    (struct B) { (struct A) { 0, 0, 0 }, { 1, 1, 1 } } } };
-+  test (&t);
-+}
-+
-+/* { dg-final { scan-tree-dump-not "t = D" "gimple"} } */
-+/* { dg-final { scan-tree-dump-not "t\.c\.h\[12\] = D" "gimple"} } */
-+/* { dg-final { scan-tree-dump-not "\.g\[12\] = D" "gimple"} } */
-+/* { dg-final { cleanup-tree-dump "gimple" } } */

diff --git a/gcc41-pr34178.patch b/gcc41-pr34178.patch
deleted file mode 100644
index 7d9e655..0000000
--- a/gcc41-pr34178.patch
+++ /dev/null
@@ -1,128 +0,0 @@
-2007-12-09  Jakub Jelinek  <jakub@redhat.com>
-
-	PR c++/34178
-	PR c++/34340
-	* repo.c (repo_emit_p): Return 2 for DECL_INTEGRAL_CONSTANT_VAR_P
-	in class scope rather than DECL_INITIALIZED_BY_CONSTANT_EXPRESSION_P.
-	Return 2 also if DECL_EXPLICIT_INSTANTIATION.
-	* decl2.c (import_export_decl): Don't make VAR_DECLs import_p when
-	flag_use_repository and repo_emit_p returned 2.
-
-	* g++.dg/template/repo6.C: New test.
-	* g++.dg/template/repo7.C: New test.
-	* g++.dg/template/repo8.C: New test.
-
---- gcc/cp/decl2.c	(revision 130726)
-+++ gcc/cp/decl2.c	(revision 130727)
-@@ -2230,7 +2230,8 @@ import_export_decl (tree decl)
-     {
-       /* DECL is an implicit instantiation of a function or static
- 	 data member.  */
--      if (flag_implicit_templates
-+      if ((flag_implicit_templates
-+	   && !flag_use_repository)
- 	  || (flag_implicit_inline_templates
- 	      && TREE_CODE (decl) == FUNCTION_DECL
- 	      && DECL_DECLARED_INLINE_P (decl)))
---- gcc/cp/repo.c	(revision 130726)
-+++ gcc/cp/repo.c	(revision 130727)
-@@ -304,16 +304,19 @@ repo_emit_p (tree decl)
- 	  && (!TYPE_LANG_SPECIFIC (type)
- 	      || !CLASSTYPE_TEMPLATE_INSTANTIATION (type)))
- 	return 2;
--      /* Static data members initialized by constant expressions must
-+      /* Const static data members initialized by constant expressions must
- 	 be processed where needed so that their definitions are
- 	 available.  */
--      if (DECL_INITIALIZED_BY_CONSTANT_EXPRESSION_P (decl)
-+      if (DECL_INTEGRAL_CONSTANT_VAR_P (decl)
- 	  && DECL_CLASS_SCOPE_P (decl))
- 	return 2;
-     }
-   else if (!DECL_TEMPLATE_INSTANTIATION (decl))
-     return 2;
- 
-+  if (DECL_EXPLICIT_INSTANTIATION (decl))
-+    return 2;
-+
-   /* For constructors and destructors, the repository contains
-      information about the clones -- not the original function --
-      because only the clones are emitted in the object file.  */
---- gcc/testsuite/g++.dg/template/repo7.C	(revision 0)
-+++ gcc/testsuite/g++.dg/template/repo7.C	(revision 130727)
-@@ -0,0 +1,23 @@
-+// PR c++/34340
-+// { dg-options "-frepo" }
-+// { dg-final { cleanup-repo-files } }
-+
-+struct A
-+{
-+  int a;
-+};
-+
-+template <typename T> struct D
-+{
-+  static const A b;
-+};
-+
-+template<typename T> const A D<T>::b = { 2 };
-+template class D<A>;
-+
-+const A *x = &D<A>::b;
-+
-+int
-+main ()
-+{
-+}
---- gcc/testsuite/g++.dg/template/repo8.C	(revision 0)
-+++ gcc/testsuite/g++.dg/template/repo8.C	(revision 130727)
-@@ -0,0 +1,22 @@
-+// PR c++/34340
-+// { dg-options "-frepo" }
-+// { dg-final { cleanup-repo-files } }
-+
-+struct A
-+{
-+  int a;
-+};
-+
-+template <typename T> struct D
-+{
-+  static const A b;
-+};
-+
-+template<typename T> const A D<T>::b = { 2 };
-+
-+const A *x = &D<A>::b;
-+
-+int
-+main ()
-+{
-+}
---- gcc/testsuite/g++.dg/template/repo6.C	(revision 0)
-+++ gcc/testsuite/g++.dg/template/repo6.C	(revision 130727)
-@@ -0,0 +1,24 @@
-+// PR c++/34178
-+// { dg-options "-frepo" }
-+// { dg-final { cleanup-repo-files } }
-+
-+template<typename T>
-+class A
-+{
-+private:
-+  static const int x;
-+  static int y;
-+
-+public:
-+  int getX () { return x + y; }
-+};
-+
-+template<typename T> const int A<T>::x = 0;
-+template<typename T> int A<T>::y = 0;
-+
-+int
-+main ()
-+{
-+  A<int> a;
-+  return a.getX();
-+}

diff --git a/gcc41-pr34213.patch b/gcc41-pr34213.patch
deleted file mode 100644
index b102d39..0000000
--- a/gcc41-pr34213.patch
+++ /dev/null
@@ -1,68 +0,0 @@
-2007-11-27  Jakub Jelinek  <jakub@redhat.com>
-
-	PR c++/34213
-	* tree.c (decl_linkage): Static data members and static member
-	functions in anonymous ns classes are lk_external.
-
-	* g++.dg/ext/visibility/anon8.C: New test.
-
---- gcc/cp/tree.c	(revision 130462)
-+++ gcc/cp/tree.c	(revision 130463)
-@@ -2526,10 +2526,18 @@ decl_linkage (tree decl)
-   /* Members of the anonymous namespace also have TREE_PUBLIC unset, but
-      are considered to have external linkage for language purposes.  DECLs
-      really meant to have internal linkage have DECL_THIS_STATIC set.  */
--  if (TREE_CODE (decl) == TYPE_DECL
--      || ((TREE_CODE (decl) == VAR_DECL || TREE_CODE (decl) == FUNCTION_DECL)
--	  && !DECL_THIS_STATIC (decl)))
-+  if (TREE_CODE (decl) == TYPE_DECL)
-     return lk_external;
-+  if (TREE_CODE (decl) == VAR_DECL || TREE_CODE (decl) == FUNCTION_DECL)
-+    {
-+      if (!DECL_THIS_STATIC (decl))
-+	return lk_external;
-+
-+      /* Static data members and static member functions from classes
-+	 in anonymous namespace also don't have TREE_PUBLIC set.  */
-+      if (DECL_CLASS_CONTEXT (decl))
-+	return lk_external;
-+    }
- 
-   /* Everything else has internal linkage.  */
-   return lk_internal;
---- gcc/testsuite/g++.dg/ext/visibility/anon8.C	(revision 0)
-+++ gcc/testsuite/g++.dg/ext/visibility/anon8.C	(revision 130463)
-@@ -0,0 +1,33 @@
-+// PR c++/34213
-+// { dg-do compile }
-+
-+template <void (*fn) ()>
-+void call ()
-+{
-+  fn ();
-+}
-+
-+namespace
-+{
-+  struct B1
-+  {
-+    static void fn1 () {}
-+    static void fn4 ();
-+  };
-+  void fn3 () {}
-+  void B1::fn4 () {}
-+  static void fn5 () {}
-+}
-+
-+int main ()
-+{
-+  struct B2
-+  {
-+    static void fn2 () {}
-+  };
-+  call<&B1::fn1> ();
-+  call<&B2::fn2> ();	// { dg-error "not external linkage|no matching" }
-+  call<&fn3> ();
-+  call<&B1::fn4> ();
-+  call<&fn5> ();	// { dg-error "not external linkage|no matching" }
-+}

diff --git a/gcc41-pr34275.patch b/gcc41-pr34275.patch
deleted file mode 100644
index 3545fc5..0000000
--- a/gcc41-pr34275.patch
+++ /dev/null
@@ -1,35 +0,0 @@
-2007-11-30  Jakub Jelinek  <jakub@redhat.com>
-
-	PR c++/34275
-	* error.c (dump_expr): Handle OBJ_TYPE_REF.
-
-	* g++.dg/other/error20.C: New test.
-
---- gcc/cp/error.c	(revision 130532)
-+++ gcc/cp/error.c	(revision 130533)
-@@ -2056,6 +2056,10 @@ dump_expr (tree t, int flags)
-       pp_expression (cxx_pp, t);
-       break;
- 
-+    case OBJ_TYPE_REF:
-+      dump_expr (resolve_virtual_fun_from_obj_type_ref (t), flags);
-+      break;
-+
-       /*  This list is incomplete, but should suffice for now.
- 	  It is very important that `sorry' does not call
- 	  `report_error_function'.  That could cause an infinite loop.  */
---- gcc/testsuite/g++.dg/other/error20.C	(revision 0)
-+++ gcc/testsuite/g++.dg/other/error20.C	(revision 130533)
-@@ -0,0 +1,12 @@
-+// PR c++/34275
-+// { dg-do compile }
-+
-+struct A
-+{		// { dg-error "candidates" }
-+  virtual A foo ();
-+};
-+
-+void bar (A& a)
-+{
-+  a.foo () = 0; // { dg-error "A::foo\\(\\) = 0" }
-+}   

diff --git a/gcc41-pr34364.patch b/gcc41-pr34364.patch
deleted file mode 100644
index e21a607..0000000
--- a/gcc41-pr34364.patch
+++ /dev/null
@@ -1,54 +0,0 @@
-2007-12-11  Jakub Jelinek  <jakub@redhat.com>
-
-	PR c++/34364
-	* rtti.c (build_dynamic_cast): Call convert_from_reference even for
-	dynamic_cast in a template.
-
-	* g++.dg/rtti/dyncast2.C: New test.
-
---- gcc/cp/rtti.c	(revision 130769)
-+++ gcc/cp/rtti.c	(revision 130770)
-@@ -728,8 +728,7 @@ build_dynamic_cast (tree type, tree expr
-     {
-       expr = build_min (DYNAMIC_CAST_EXPR, type, expr);
-       TREE_SIDE_EFFECTS (expr) = 1;
--
--      return expr;
-+      return convert_from_reference (expr);
-     }
- 
-   return convert_from_reference (build_dynamic_cast_1 (type, expr));
---- gcc/testsuite/g++.dg/rtti/dyncast2.C	(revision 0)
-+++ gcc/testsuite/g++.dg/rtti/dyncast2.C	(revision 130770)
-@@ -0,0 +1,31 @@
-+// PR c++/34364
-+// { dg-do run }
-+
-+struct A
-+{
-+  virtual ~A () {}
-+};
-+
-+struct B : public A
-+{
-+  template <typename T> struct C
-+  {
-+    static void f (A &a)
-+    {
-+      dynamic_cast <B &>(a).g ();
-+    }
-+  };
-+
-+  B () : c (6) {}
-+  void g () { c++; }
-+  int c;
-+};
-+
-+B b;
-+
-+int
-+main (void)
-+{
-+  B::C<int>::f (b);
-+  return b.c != 7;
-+}

diff --git a/gcc41-pr34394.patch b/gcc41-pr34394.patch
deleted file mode 100644
index 7449f43..0000000
--- a/gcc41-pr34394.patch
+++ /dev/null
@@ -1,29 +0,0 @@
-2007-12-10  Jakub Jelinek  <jakub@redhat.com>
-
-	PR c++/34394
-	* error.c (dump_expr): Handle ABS_EXPR.
-
-	* g++.dg/other/error22.C: New test.
-
---- gcc/cp/error.c	(revision 130743)
-+++ gcc/cp/error.c	(revision 130744)
-@@ -1757,6 +1757,7 @@ dump_expr (tree t, int flags)
-       break;
- 
-     case SCOPE_REF:
-+    case ABS_EXPR:
-       pp_expression (cxx_pp, t);
-       break;
- 
---- gcc/testsuite/g++.dg/other/error22.C	(revision 0)
-+++ gcc/testsuite/g++.dg/other/error22.C	(revision 130744)
-@@ -0,0 +1,9 @@
-+// PR c++/34394
-+// { dg-do compile }
-+
-+extern double fabs (double);
-+
-+void foo (double x)
-+{
-+  fabs (x) ();	// { dg-error "__builtin_abs" }
-+}

diff --git a/gcc41-rh184446.patch b/gcc41-rh184446.patch
deleted file mode 100644
index db1e47b..0000000
--- a/gcc41-rh184446.patch
+++ /dev/null
@@ -1,18 +0,0 @@
-2006-03-09  Richard Henderson  <rth@redhat.com>
-	    Alexandre Oliva  <aoliva@redhat.com>
-
-	* config/rs6000/rs6000.c (rs6000_legitimize_tls_address): Use
-	secure-plt-compatible load sequence to compute the GOT address
-	for -fPIC -msecure-plt.
-
---- gcc/config/rs6000/rs6000.c.orig	2006-03-09 20:02:13.000000000 -0300
-+++ gcc/config/rs6000/rs6000.c	2006-03-09 22:00:43.000000000 -0300
-@@ -3081,7 +3081,7 @@ rs6000_legitimize_tls_address (rtx addr,
- 	    {
- 	      rtx gsym = rs6000_got_sym ();
- 	      got = gen_reg_rtx (Pmode);
--	      if (flag_pic == 0)
-+	      if (flag_pic == 0 || (flag_pic && TARGET_SECURE_PLT))
- 		rs6000_emit_move (got, gsym, Pmode);
- 	      else
- 		{

diff --git a/gcc41-rh235008.patch b/gcc41-rh235008.patch
deleted file mode 100644
index c6045e3..0000000
--- a/gcc41-rh235008.patch
+++ /dev/null
@@ -1,97 +0,0 @@
-2007-04-12  Jakub Jelinek  <jakub@redhat.com>
-
-	* fr.po: Use %s rather than %S.
-	* sr.po: Likewise.
-	* tr.po: Likewise.
-	* sv.po: Likewise.
-	* rw.po: Comment out translations with bogus format
-	strings.
-
---- gcc/po/fr.po	(revision 123636)
-+++ gcc/po/fr.po	(working copy)
-@@ -31416,7 +31416,7 @@ msgstr "attribut � %s � ignor�"
- #~ msgstr "prise de l'adresse de la borne de l'expression d'un pointeur-vers-un membre"
- 
- #~ msgid "%s from type `%T' to type `%T' casts away constness"
--#~ msgstr "%S � partir du � %T � vers le type � %T � provoque un transtypage sans constante"
-+#~ msgstr "%s � partir du � %T � vers le type � %T � provoque un transtypage sans constante"
- 
- #~ msgid "invalid reinterpret_cast from type `%T' to type `%T'"
- #~ msgstr "reinterpret_cast invalide � partir du type � %T � vers le type � %T �"
---- gcc/po/sr.po	(revision 123636)
-+++ gcc/po/sr.po	(working copy)
-@@ -8516,7 +8516,7 @@ msgstr "Не могу се промен�
- #: fortran/symbol.c:592
- #, no-c-format
- msgid "Duplicate %s attribute specified at %L"
--msgstr "Двоструки атрибут %S наведен код %L"
-+msgstr "Двоструки атрибут %s наведен код %L"
- 
- #: fortran/symbol.c:733
- #, no-c-format
---- gcc/po/tr.po	(revision 123636)
-+++ gcc/po/tr.po	(working copy)
-@@ -6951,7 +6951,7 @@ msgstr "INTERFACE gövdesinde umulmadık
- #: fortran/parse.c:1604
- #, no-c-format
- msgid "%s statement must appear in a MODULE"
--msgstr "%S deyimi bir MODULE'de görünmemeli"
-+msgstr "%s deyimi bir MODULE'de görünmemeli"
- 
- #: fortran/parse.c:1611
- #, no-c-format
---- gcc/po/rw.po	(revision 123636)
-+++ gcc/po/rw.po	(working copy)
-@@ -2168,8 +2168,8 @@ msgstr ""
- 
- #: tlink.c:480
- #, fuzzy, c-format
--msgid "renaming .rpo file"
--msgstr "Gufungura %s%S Ibisohoka IDOSIYE"
-+#~ msgid "renaming .rpo file"
-+#~ msgstr "Gufungura %s%S Ibisohoka IDOSIYE"
- 
- #: tlink.c:534
- #, c-format
-@@ -17500,8 +17500,8 @@ msgstr "-Umutekano"
- 
- #: c-opts.c:1040
- #, fuzzy, gcc-internal-format
--msgid "opening output file %s: %m"
--msgstr "Gufungura %s%S Ibisohoka IDOSIYE"
-+#~ msgid "opening output file %s: %m"
-+#~ msgstr "Gufungura %s%S Ibisohoka IDOSIYE"
- 
- #: c-opts.c:1045
- #, fuzzy, gcc-internal-format
-@@ -17515,8 +17515,8 @@ msgstr ""
- 
- #: c-opts.c:1177
- #, fuzzy, gcc-internal-format
--msgid "opening dependency file %s: %m"
--msgstr "Gufungura %s%S IDOSIYE"
-+#~ msgid "opening dependency file %s: %m"
-+#~ msgstr "Gufungura %s%S IDOSIYE"
- 
- #: c-opts.c:1187
- #, fuzzy, gcc-internal-format
---- gcc/po/sv.po	2007-02-20 22:38:45.000000000 +0100
-+++ gcc/po/sv.po	2007-04-13 00:18:11.000000000 +0200
-@@ -3328,7 +3328,7 @@ msgstr "ogiltig operand till %%R"
- #: config/sh/sh.c:773
- #, c-format
- msgid "invalid operand to %%S"
--msgstr "ogiltig operand till %%R"
-+msgstr "ogiltig operand till %%S"
- 
- #: config/sh/sh.c:7679
- msgid "created and used with different architectures / ABIs"
-@@ -8019,7 +8019,7 @@ msgstr "PROCEDURE-attribut i konflikt me
- #: fortran/resolve.c:4943
- #, no-c-format
- msgid "Parameter array '%s' at %L cannot be automatic or assumed shape"
--msgstr "Parametervektor \"%S\" vid %L kan inte ha automatisk eller antagen form"
-+msgstr "Parametervektor \"%s\" vid %L kan inte ha automatisk eller antagen form"
- 
- #: fortran/resolve.c:4955
- #, no-c-format

diff --git a/gcc41-rh236895.patch b/gcc41-rh236895.patch
deleted file mode 100644
index f7fe9b5..0000000
--- a/gcc41-rh236895.patch
+++ /dev/null
@@ -1,16 +0,0 @@
-2007-04-18  Andrew Haley  <aph@redhat.com>
-
-	* java/lang/reflect/VMProxy.java (HAVE_NATIVE_GENERATE_PROXY_CLASS):
-	Set to false.
-
---- libjava/java/lang/reflect/VMProxy.java	(revision 123861)
-+++ libjava/java/lang/reflect/VMProxy.java	(working copy)
-@@ -65,7 +65,7 @@
-    * If this is true, HAVE_NATIVE_GET_PROXY_CLASS should be false.
-    * @see java.lang.reflect.Proxy
-    */
--  static boolean HAVE_NATIVE_GENERATE_PROXY_CLASS = true;
-+  static boolean HAVE_NATIVE_GENERATE_PROXY_CLASS = false;
- 
-   /**
-    * Optional native method to replace (and speed up) the pure Java

diff --git a/gcc41-rh247256.patch b/gcc41-rh247256.patch
deleted file mode 100644
index bc3c778..0000000
--- a/gcc41-rh247256.patch
+++ /dev/null
@@ -1,42 +0,0 @@
-2007-07-10  Jakub Jelinek  <jakub@redhat.com>
-
-	* simplify-rtx.c (simplify_plus_minus_op_data_cmp): If both operands
-	are REGs and TARGET_INDEX_OPERAND_FIRST, sort lower REGNOs first.
-
-	* gcc.dg/20070710-1.c: New test.
-
---- gcc/simplify-rtx.c.jj	2006-08-11 17:32:05.000000000 +0200
-+++ gcc/simplify-rtx.c	2007-07-09 22:53:26.000000000 +0200
-@@ -2608,6 +2608,12 @@ simplify_plus_minus_op_data_cmp (const v
- 	    - commutative_operand_precedence (d1->op));
-   if (result)
-     return result;
-+
-+  /* Group together equal REGs to do more simplification.  */
-+  if (TARGET_INDEX_OPERAND_FIRST && REG_P (d1->op) && REG_P (d2->op)
-+      && REGNO (d1->op) != REGNO (d2->op))
-+    return REGNO (d1->op) - REGNO (d2->op);
-+
-   return d1->ix - d2->ix;
- }
- 
---- gcc/testsuite/gcc.dg/20070710-1.c.jj	2007-07-10 09:32:43.000000000 +0200
-+++ gcc/testsuite/gcc.dg/20070710-1.c	2007-07-10 09:31:39.000000000 +0200
-@@ -0,0 +1,17 @@
-+/* { dg-do compile } */
-+/* { dg-options "-O2 -ffast-math" } */
-+
-+extern float sqrtf (float);
-+
-+float
-+foo (const float *m)
-+{
-+  float x = m[0] + m[1] + m[2] + 1.0f;
-+  float s;
-+
-+  if (x > 0.001)
-+    s = 0.5f / sqrtf (x);
-+  else
-+    s = 2.0f * sqrtf (1.0f + m[0] - m[1] - m[2]);
-+  return s;
-+}

diff --git a/gcc41-rh317051.patch b/gcc41-rh317051.patch
deleted file mode 100644
index af4a040..0000000
--- a/gcc41-rh317051.patch
+++ /dev/null
@@ -1,291 +0,0 @@
-2006-07-26  Francois-Xavier Coudert  <coudert@clipper.ens.fr>
-
-	* intrinsic.c (add_functions): Add INT2, SHORT, INT8, LONG,
-	LSTAT, MCLOCK and MCLOCK8 intrinsic functions.
-	(add_subroutines): Add LSTAT intrinsic subroutine.
-	* gfortran.h (gfc_generic_isym_id): Add GFC_ISYM_INT2,
-	GFC_ISYM_INT8, GFC_ISYM_LONG, GFC_ISYM_LSTAT, GFC_ISYM_MCLOCK
-	and GFC_ISYM_MCLOCK8.
-	* iresolve.c (gfc_resolve_int2, gfc_resolve_int8,
-	gfc_resolve_long, gfc_resolve_lstat, gfc_resolve_mclock,
-	gfc_resolve_mclock8, gfc_resolve_lstat_sub): New functions.
-	* check.c (gfc_check_intconv): New function.
-	* trans-intrinsic.c (gfc_conv_intrinsic_function): Add cases for
-	the added GFC_ISYM_*.
-	* simplify.c (gfc_simplify_intconv, gfc_simplify_int2,
-	gfc_simplify_int8, gfc_simplify_long): New functions.
-	* intrinsic.h (gfc_check_intconv, gfc_simplify_int2,
-	gfc_simplify_int8, gfc_simplify_long, gfc_resolve_int2,
-	gfc_resolve_int8, gfc_resolve_long, gfc_resolve_lstat,
-	gfc_resolve_mclock, gfc_resolve_mclock8, gfc_resolve_lstat_sub):
-	Add prototypes.
-
-	* gfortran.dg/int_conv_1.f90: New test.
-
---- gcc/testsuite/gfortran.dg/int_conv_1.f90	(revision 0)
-+++ gcc/testsuite/gfortran.dg/int_conv_1.f90	(revision 115754)
-@@ -0,0 +1,36 @@
-+! { dg-do run }
-+! { dg-options "-std=gnu" }
-+  integer(kind=2) :: i2, j2, k2, l2, m2, n2, o2
-+  integer(kind=4) :: i4, j4
-+  integer(kind=8) :: i8, j8
-+  real :: x
-+  complex :: z
-+
-+  i2 = huge(i2) / 3
-+  i8 = int8(i2)
-+  i4 = long(i2)
-+  j2 = short(i2)
-+  k2 = int2(i2)
-+  l2 = int2(i8)
-+  m2 = short(i8)
-+  n2 = int2(i4)
-+  o2 = short(i4)
-+
-+  if (i8 /= i2 .or. i4 /= i2 .or. j2 /= i2 .or. k2 /= i2 &
-+      .or. l2 /= i2 .or. m2 /= i2 .or. n2 /= i2 .or. o2 /= i2) call abort
-+
-+  x = i2
-+  i8 = int8(x)
-+  i4 = long(x)
-+  j2 = short(x)
-+  k2 = int2(x)
-+  if (i8 /= i2 .or. i4 /= i2 .or. j2 /= i2 .or. k2 /= i2) call abort
-+
-+  z = i2 + (0.,-42.)
-+  i8 = int8(z)
-+  i4 = long(z)
-+  j2 = short(z)
-+  k2 = int2(z)
-+  if (i8 /= i2 .or. i4 /= i2 .or. j2 /= i2 .or. k2 /= i2) call abort
-+
-+  end
---- gcc/fortran/intrinsic.c	(revision 115753)
-+++ gcc/fortran/intrinsic.c	(revision 115754)
-@@ -1535,6 +1535,26 @@ add_functions (void)
- 
-   make_generic ("int", GFC_ISYM_INT, GFC_STD_F77);
- 
-+  add_sym_1 ("int2", 1, 0, BT_INTEGER, di, GFC_STD_GNU,
-+	     gfc_check_intconv, gfc_simplify_int2, gfc_resolve_int2,
-+	     a, BT_REAL, dr, REQUIRED);
-+
-+  make_alias ("short", GFC_STD_GNU);
-+
-+  make_generic ("int2", GFC_ISYM_INT2, GFC_STD_GNU);
-+
-+  add_sym_1 ("int8", 1, 0, BT_INTEGER, di, GFC_STD_GNU,
-+	     gfc_check_intconv, gfc_simplify_int8, gfc_resolve_int8,
-+	     a, BT_REAL, dr, REQUIRED);
-+
-+  make_generic ("int8", GFC_ISYM_INT8, GFC_STD_GNU);
-+
-+  add_sym_1 ("long", 1, 0, BT_INTEGER, di, GFC_STD_GNU,
-+	     gfc_check_intconv, gfc_simplify_long, gfc_resolve_long,
-+	     a, BT_REAL, dr, REQUIRED);
-+
-+  make_generic ("long", GFC_ISYM_LONG, GFC_STD_GNU);
-+
-   add_sym_2 ("ior", 1, 1, BT_INTEGER, di, GFC_STD_F95,
- 	     gfc_check_ior, gfc_simplify_ior, gfc_resolve_ior,
- 	     i, BT_INTEGER, di, REQUIRED, j, BT_INTEGER, di, REQUIRED);
---- gcc/fortran/intrinsic.h	(revision 115753)
-+++ gcc/fortran/intrinsic.h	(revision 115754)
-@@ -74,6 +74,7 @@ try gfc_check_idnint (gfc_expr *);
- try gfc_check_ieor (gfc_expr *, gfc_expr *);
- try gfc_check_index (gfc_expr *, gfc_expr *, gfc_expr *);
- try gfc_check_int (gfc_expr *, gfc_expr *);
-+try gfc_check_intconv (gfc_expr *);
- try gfc_check_ior (gfc_expr *, gfc_expr *);
- try gfc_check_irand (gfc_expr *);
- try gfc_check_isatty (gfc_expr *);
-@@ -222,6 +223,9 @@ gfc_expr *gfc_simplify_ichar (gfc_expr *
- gfc_expr *gfc_simplify_ieor (gfc_expr *, gfc_expr *);
- gfc_expr *gfc_simplify_index (gfc_expr *, gfc_expr *, gfc_expr *);
- gfc_expr *gfc_simplify_int (gfc_expr *, gfc_expr *);
-+gfc_expr *gfc_simplify_int2 (gfc_expr *);
-+gfc_expr *gfc_simplify_int8 (gfc_expr *);
-+gfc_expr *gfc_simplify_long (gfc_expr *);
- gfc_expr *gfc_simplify_ifix (gfc_expr *);
- gfc_expr *gfc_simplify_idint (gfc_expr *);
- gfc_expr *gfc_simplify_ior (gfc_expr *, gfc_expr *);
-@@ -352,6 +356,9 @@ void gfc_resolve_ieor (gfc_expr *, gfc_e
- void gfc_resolve_ichar (gfc_expr *, gfc_expr *);
- void gfc_resolve_idnint (gfc_expr *, gfc_expr *);
- void gfc_resolve_int (gfc_expr *, gfc_expr *, gfc_expr *);
-+void gfc_resolve_int2 (gfc_expr *, gfc_expr *);
-+void gfc_resolve_int8 (gfc_expr *, gfc_expr *);
-+void gfc_resolve_long (gfc_expr *, gfc_expr *);
- void gfc_resolve_ior (gfc_expr *, gfc_expr *, gfc_expr *);
- void gfc_resolve_isatty (gfc_expr *, gfc_expr *);
- void gfc_resolve_ishft (gfc_expr *, gfc_expr *, gfc_expr *);
---- gcc/fortran/gfortran.h	(revision 115753)
-+++ gcc/fortran/gfortran.h	(revision 115754)
-@@ -377,6 +377,8 @@ enum gfc_generic_isym_id
-   GFC_ISYM_IERRNO,
-   GFC_ISYM_INDEX,
-   GFC_ISYM_INT,
-+  GFC_ISYM_INT2,
-+  GFC_ISYM_INT8,
-   GFC_ISYM_IOR,
-   GFC_ISYM_IRAND,
-   GFC_ISYM_ISATTY,
-@@ -391,10 +393,11 @@ enum gfc_generic_isym_id
-   GFC_ISYM_LGT,
-   GFC_ISYM_LLE,
-   GFC_ISYM_LLT,
--  GFC_ISYM_LOG,
-   GFC_ISYM_LOC,
-+  GFC_ISYM_LOG,
-   GFC_ISYM_LOG10,
-   GFC_ISYM_LOGICAL,
-+  GFC_ISYM_LONG,
-   GFC_ISYM_MALLOC,
-   GFC_ISYM_MATMUL,
-   GFC_ISYM_MAX,
---- gcc/fortran/iresolve.c	(revision 115753)
-+++ gcc/fortran/iresolve.c	(revision 115754)
-@@ -854,6 +854,42 @@ gfc_resolve_int (gfc_expr * f, gfc_expr 
- 
- 
- void
-+gfc_resolve_int2 (gfc_expr * f, gfc_expr * a)
-+{
-+  f->ts.type = BT_INTEGER;
-+  f->ts.kind = 2;
-+
-+  f->value.function.name =
-+    gfc_get_string ("__int_%d_%c%d", f->ts.kind, gfc_type_letter (a->ts.type),
-+		    a->ts.kind);
-+}
-+
-+
-+void
-+gfc_resolve_int8 (gfc_expr * f, gfc_expr * a)
-+{
-+  f->ts.type = BT_INTEGER;
-+  f->ts.kind = 8;
-+
-+  f->value.function.name =
-+    gfc_get_string ("__int_%d_%c%d", f->ts.kind, gfc_type_letter (a->ts.type),
-+		    a->ts.kind);
-+}
-+
-+
-+void
-+gfc_resolve_long (gfc_expr * f, gfc_expr * a)
-+{
-+  f->ts.type = BT_INTEGER;
-+  f->ts.kind = 4;
-+
-+  f->value.function.name =
-+    gfc_get_string ("__int_%d_%c%d", f->ts.kind, gfc_type_letter (a->ts.type),
-+		    a->ts.kind);
-+}
-+
-+
-+void
- gfc_resolve_isatty (gfc_expr * f, gfc_expr * u)
- {
-   gfc_typespec ts;
---- gcc/fortran/check.c	(revision 115753)
-+++ gcc/fortran/check.c	(revision 115754)
-@@ -1200,6 +1200,16 @@ gfc_check_int (gfc_expr * x, gfc_expr * 
- 
- 
- try
-+gfc_check_intconv (gfc_expr * x)
-+{
-+  if (numeric_check (x, 0) == FAILURE)
-+    return FAILURE;
-+
-+  return SUCCESS;
-+}
-+
-+
-+try
- gfc_check_ior (gfc_expr * i, gfc_expr * j)
- {
-   if (type_check (i, 0, BT_INTEGER) == FAILURE)
---- gcc/fortran/trans-intrinsic.c	(revision 115753)
-+++ gcc/fortran/trans-intrinsic.c	(revision 115754)
-@@ -3477,6 +3477,9 @@ gfc_conv_intrinsic_function (gfc_se * se
-       /* Integer conversions are handled separately to make sure we get the
-          correct rounding mode.  */
-     case GFC_ISYM_INT:
-+    case GFC_ISYM_INT2:
-+    case GFC_ISYM_INT8:
-+    case GFC_ISYM_LONG:
-       gfc_conv_intrinsic_int (se, expr, FIX_TRUNC_EXPR);
-       break;
- 
---- gcc/fortran/simplify.c	(revision 115753)
-+++ gcc/fortran/simplify.c	(revision 115754)
-@@ -1610,6 +1610,66 @@ gfc_simplify_int (gfc_expr * e, gfc_expr
- }
- 
- 
-+static gfc_expr *
-+gfc_simplify_intconv (gfc_expr * e, int kind, const char *name)
-+{
-+  gfc_expr *rpart, *rtrunc, *result;
-+
-+  if (e->expr_type != EXPR_CONSTANT)
-+    return NULL;
-+
-+  result = gfc_constant_result (BT_INTEGER, kind, &e->where);
-+
-+  switch (e->ts.type)
-+    {
-+    case BT_INTEGER:
-+      mpz_set (result->value.integer, e->value.integer);
-+      break;
-+
-+    case BT_REAL:
-+      rtrunc = gfc_copy_expr (e);
-+      mpfr_trunc (rtrunc->value.real, e->value.real);
-+      gfc_mpfr_to_mpz (result->value.integer, rtrunc->value.real);
-+      gfc_free_expr (rtrunc);
-+      break;
-+
-+    case BT_COMPLEX:
-+      rpart = gfc_complex2real (e, kind);
-+      rtrunc = gfc_copy_expr (rpart);
-+      mpfr_trunc (rtrunc->value.real, rpart->value.real);
-+      gfc_mpfr_to_mpz (result->value.integer, rtrunc->value.real);
-+      gfc_free_expr (rpart);
-+      gfc_free_expr (rtrunc);
-+      break;
-+
-+    default:
-+      gfc_error ("Argument of %s at %L is not a valid type", name, &e->where);
-+      gfc_free_expr (result);
-+      return &gfc_bad_expr;
-+    }
-+
-+  return range_check (result, name);
-+}
-+
-+gfc_expr *
-+gfc_simplify_int2 (gfc_expr * e)
-+{
-+  return gfc_simplify_intconv (e, 2, "INT2");
-+}
-+
-+gfc_expr *
-+gfc_simplify_int8 (gfc_expr * e)
-+{
-+  return gfc_simplify_intconv (e, 8, "INT8");
-+}
-+
-+gfc_expr *
-+gfc_simplify_long (gfc_expr * e)
-+{
-+  return gfc_simplify_intconv (e, 4, "LONG");
-+}
-+
-+
- gfc_expr *
- gfc_simplify_ifix (gfc_expr * e)
- {

diff --git a/gcc41-rh330771.patch b/gcc41-rh330771.patch
deleted file mode 100644
index c894f83..0000000
--- a/gcc41-rh330771.patch
+++ /dev/null
@@ -1,34 +0,0 @@
-2007-10-16  Jakub Jelinek  <jakub@redhat.com>
-
-	* Makefile.am (libgcj_tools_la_LIBADD): Add.
-	* Makefile.in: Regenerated.
-
---- libjava/Makefile.am.jj	2007-03-17 09:20:30.000000000 +0100
-+++ libjava/Makefile.am	2007-10-16 15:45:14.000000000 +0200
-@@ -262,6 +262,8 @@ EXTRA_libgcj_la_SOURCES = java/lang/Obje
- 
- libgcj_tools_la_SOURCES = classpath/tools/tools.zip
- libgcj_tools_la_GCJFLAGS = $(AM_GCJFLAGS) -findirect-dispatch -fno-indirect-classes  -fsource-filename=$(here)/classpath/tools/all-classes.lst
-+## See jv_convert_LDADD.
-+libgcj_tools_la_LIBADD = -L$(here)/.libs libgcj.la
- libgcj_tools_la_LDFLAGS = -rpath $(toolexeclibdir) \
-  -version-info `grep -v '^\#' $(srcdir)/libtool-version`
- libgcj_tools_la_DEPENDENCIES = libgcj.la libgcj.spec
---- libjava/Makefile.in.jj	2007-07-04 21:11:11.000000000 +0200
-+++ libjava/Makefile.in	2007-10-16 15:56:07.000000000 +0200
-@@ -146,7 +146,6 @@ am__objects_1 = gnu/gcj/xlib/lib_gnu_awt
- am_lib_gnu_awt_xlib_la_OBJECTS = $(am__objects_1)
- lib_gnu_awt_xlib_la_OBJECTS = $(am_lib_gnu_awt_xlib_la_OBJECTS)
- @XLIB_AWT_TRUE@am_lib_gnu_awt_xlib_la_rpath = -rpath $(toolexeclibdir)
--libgcj_tools_la_LIBADD =
- am_libgcj_tools_la_OBJECTS = classpath/tools/libgcj_tools_la-tools.lo
- libgcj_tools_la_OBJECTS = $(am_libgcj_tools_la_OBJECTS)
- am__DEPENDENCIES_1 = gnu/awt.lo gnu/awt/j2d.lo gnu/classpath.lo \
-@@ -894,6 +893,7 @@ libgcj_la_LINK = $(LIBLINK)
- EXTRA_libgcj_la_SOURCES = java/lang/Object.java
- libgcj_tools_la_SOURCES = classpath/tools/tools.zip
- libgcj_tools_la_GCJFLAGS = $(AM_GCJFLAGS) -findirect-dispatch -fno-indirect-classes  -fsource-filename=$(here)/classpath/tools/all-classes.lst
-+libgcj_tools_la_LIBADD = -L$(here)/.libs libgcj.la
- libgcj_tools_la_LDFLAGS = -rpath $(toolexeclibdir) \
-  -version-info `grep -v '^\#' $(srcdir)/libtool-version`
- 

diff --git a/gcc41-rh341221.patch b/gcc41-rh341221.patch
deleted file mode 100644
index a56154f..0000000
--- a/gcc41-rh341221.patch
+++ /dev/null
@@ -1,28 +0,0 @@
-2007-10-21  Jakub Jelinek  <jakub@redhat.com>
-
-	* doc/Makefile.am (POD2MAN): Set date from cp-tools.texinfo
-	timestamp rather than from current date.
-	* doc/Makefile.in: Regenerated.
-
---- libjava/classpath/doc/Makefile.am.jj	2007-03-29 12:23:05.000000000 +0200
-+++ libjava/classpath/doc/Makefile.am	2007-10-21 13:23:17.000000000 +0200
-@@ -31,7 +31,7 @@ TOOLS_MANFILES = \
- BASEVER = $(top_srcdir)/../../gcc/BASE-VER
- DEVPHASE = $(top_srcdir)/../../gcc/DEV-PHASE
- 
--POD2MAN = pod2man --center="GNU" --release="gcc-$(shell cat $(BASEVER))"
-+POD2MAN = pod2man --center="GNU" --release="gcc-$(shell cat $(BASEVER))" --date="$(shell ls --time-style=+%F -l $(srcdir)/cp-tools.texinfo | awk '{print $$6}')"
- TEXI2POD = perl $(top_srcdir)/../../contrib/texi2pod.pl
- STAMP = echo timestamp >
- 
---- libjava/classpath/doc/Makefile.in.jj	2007-03-29 12:23:05.000000000 +0200
-+++ libjava/classpath/doc/Makefile.in	2007-10-21 13:24:00.000000000 +0200
-@@ -317,7 +317,7 @@ TOOLS_MANFILES = \
- 
- BASEVER = $(top_srcdir)/../../gcc/BASE-VER
- DEVPHASE = $(top_srcdir)/../../gcc/DEV-PHASE
--POD2MAN = pod2man --center="GNU" --release="gcc-$(shell cat $(BASEVER))"
-+POD2MAN = pod2man --center="GNU" --release="gcc-$(shell cat $(BASEVER))" --date="$(shell ls --time-style=+%F -l $(srcdir)/cp-tools.texinfo | awk '{print $$6}')"
- TEXI2POD = perl $(top_srcdir)/../../contrib/texi2pod.pl
- STAMP = echo timestamp >
- all: all-recursive

diff --git a/gcc41-rh364001.patch b/gcc41-rh364001.patch
deleted file mode 100644
index c58c958..0000000
--- a/gcc41-rh364001.patch
+++ /dev/null
@@ -1,676 +0,0 @@
-2007-11-16  Jakub Jelinek  <jakub@redhat.com>
-
-	PR fortran/22244
-	* langhooks-def.h (LANG_HOOKS_GET_ARRAY_DESCR_INFO): Define.
-	(LANG_HOOKS_FOR_TYPES_INITIALIZER): Add it.
-	* langhooks.h (struct array_descr_info): Forward declaration.
-	(struct lang_hooks_for_types): Add get_array_descr_info field.
-	* dwarf2.h (DW_AT_bit_stride, DW_AT_byte_stride): New.
-	(DW_AT_stride_size, DW_AT_stride): Keep around for Dwarf2
-	compatibility.
-	* dwarf2out.h (struct array_descr_info): New type.
-	* dwarf2out.c (dwarf_attr_name): Rename DW_AT_stride to
-	DW_AT_byte_stride and DW_AT_stride_size to DW_AT_bit_size.
-	(descr_info_loc, add_descr_info_field, gen_descr_array_type_die):
-	New functions.
-	(gen_type_die_with_usage): Call lang_hooks.types.get_array_descr_info
-	and gen_descr_array_type_die.
-
-	* trans.h (struct array_descr_info): Forward declaration.
-	(gfc_get_array_descr_info): New prototype.
-	(enum gfc_array_kind): New type.
-	(struct lang_type): Add akind field.
-	(GFC_TYPE_ARRAY_AKIND): Define.
-	* trans-types.c: Include dwarf2out.h.
-	(gfc_build_array_type): Add akind argument.  Adjust
-	gfc_get_array_type_bounds call.
-	(gfc_get_nodesc_array_type): Include proper debug info even for
-	assumed-size arrays.
-	(gfc_get_array_type_bounds): Add akind argument, set
-	GFC_TYPE_ARRAY_AKIND to it.
-	(gfc_sym_type, gfc_get_derived_type): Adjust gfc_build_array_type
-	callers.
-	(gfc_get_array_descr_info): New function.
-	* trans-array.c (gfc_trans_create_temp_array,
-	gfc_conv_expr_descriptor): Adjust gfc_get_array_type_bounds
-	callers.
-	* trans-stmt.c (gfc_trans_pointer_assign_need_temp): Likewise.
-	* trans-types.h (gfc_get_array_type_bounds): Adjust prototype.
-	* Make-lang.in (fortran/trans-types.o): Depend on dwarf2out.h.
-	* f95-lang.c (LANG_HOOKS_GET_ARRAY_DESCR_INFO): Define.
-
---- gcc/fortran/trans.h.jj	2007-07-23 12:24:16.000000000 +0200
-+++ gcc/fortran/trans.h	2007-11-24 15:04:51.000000000 +0100
-@@ -453,6 +453,8 @@ tree getdecls (void);
- tree gfc_truthvalue_conversion (tree);
- tree builtin_function (const char *, tree, int, enum built_in_class,
- 		       const char *, tree);
-+struct array_descr_info;
-+bool gfc_get_array_descr_info (tree, struct array_descr_info *);
- 
- /* In trans-openmp.c */
- bool gfc_omp_privatize_by_reference (tree);
-@@ -541,10 +543,19 @@ extern GTY(()) tree gfor_fndecl_sr_kind;
- 
- /* G95-specific declaration information.  */
- 
-+enum gfc_array_kind
-+{
-+  GFC_ARRAY_UNKNOWN,
-+  GFC_ARRAY_ASSUMED_SHAPE,
-+  GFC_ARRAY_ALLOCATABLE,
-+  GFC_ARRAY_POINTER
-+};
-+
- /* Array types only.  */
- struct lang_type		GTY(())
- {
-   int rank;
-+  enum gfc_array_kind akind;
-   tree lbound[GFC_MAX_DIMENSIONS];
-   tree ubound[GFC_MAX_DIMENSIONS];
-   tree stride[GFC_MAX_DIMENSIONS];
-@@ -595,7 +606,8 @@ struct lang_decl		GTY(())
- #define GFC_TYPE_ARRAY_RANK(node) (TYPE_LANG_SPECIFIC(node)->rank)
- #define GFC_TYPE_ARRAY_SIZE(node) (TYPE_LANG_SPECIFIC(node)->size)
- #define GFC_TYPE_ARRAY_OFFSET(node) (TYPE_LANG_SPECIFIC(node)->offset)
--/* Code should use gfc_get_dtype instead of accesig this directly.  It may
-+#define GFC_TYPE_ARRAY_AKIND(node) (TYPE_LANG_SPECIFIC(node)->akind)
-+/* Code should use gfc_get_dtype instead of accesing this directly.  It may
-    not be known when the type is created.  */
- #define GFC_TYPE_ARRAY_DTYPE(node) (TYPE_LANG_SPECIFIC(node)->dtype)
- #define GFC_TYPE_ARRAY_DATAPTR_TYPE(node) \
---- gcc/fortran/trans-stmt.c.jj	2007-03-12 08:28:15.000000000 +0100
-+++ gcc/fortran/trans-stmt.c	2007-11-24 14:58:20.000000000 +0100
-@@ -2313,7 +2313,8 @@ gfc_trans_pointer_assign_need_temp (gfc_
-       /* Make a new descriptor.  */
-       parmtype = gfc_get_element_type (TREE_TYPE (desc));
-       parmtype = gfc_get_array_type_bounds (parmtype, loop.dimen,
--                                            loop.from, loop.to, 1);
-+                                            loop.from, loop.to, 1,
-+					    GFC_ARRAY_UNKNOWN);
- 
-       /* Allocate temporary for nested forall construct.  */
-       tmp1 = allocate_temp_for_forall_nest (nested_forall_info, parmtype,
---- gcc/fortran/f95-lang.c.jj	2007-02-20 22:38:20.000000000 +0100
-+++ gcc/fortran/f95-lang.c	2007-11-24 15:03:19.000000000 +0100
-@@ -124,6 +124,7 @@ static HOST_WIDE_INT gfc_get_alias_set (
- #undef LANG_HOOKS_OMP_DISREGARD_VALUE_EXPR
- #undef LANG_HOOKS_OMP_PRIVATE_DEBUG_CLAUSE
- #undef LANG_HOOKS_OMP_FIRSTPRIVATIZE_TYPE_SIZES
-+#undef LANG_HOOKS_GET_ARRAY_DESCR_INFO
- 
- /* Define lang hooks.  */
- #define LANG_HOOKS_NAME                 "GNU F95"
-@@ -150,6 +151,7 @@ static HOST_WIDE_INT gfc_get_alias_set (
- #define LANG_HOOKS_OMP_PRIVATE_DEBUG_CLAUSE	gfc_omp_private_debug_clause
- #define LANG_HOOKS_OMP_FIRSTPRIVATIZE_TYPE_SIZES \
-   gfc_omp_firstprivatize_type_sizes
-+#define LANG_HOOKS_GET_ARRAY_DESCR_INFO		gfc_get_array_descr_info
- 
- const struct lang_hooks lang_hooks = LANG_HOOKS_INITIALIZER;
- 
---- gcc/fortran/Make-lang.in.jj	2007-09-25 11:32:17.000000000 +0200
-+++ gcc/fortran/Make-lang.in	2007-11-24 15:02:36.000000000 +0100
-@@ -292,7 +292,7 @@ fortran/trans-decl.o: $(GFORTRAN_TRANS_D
-   cgraph.h $(TARGET_H) function.h $(FLAGS_H) $(RTL_H) tree-gimple.h \
-   tree-dump.h
- fortran/trans-types.o: $(GFORTRAN_TRANS_DEPS) gt-fortran-trans-types.h \
--  real.h toplev.h $(TARGET_H) $(FLAGS_H)
-+  real.h toplev.h $(TARGET_H) $(FLAGS_H) dwarf2out.h
- fortran/trans-const.o: $(GFORTRAN_TRANS_DEPS)
- fortran/trans-expr.o: $(GFORTRAN_TRANS_DEPS) fortran/dependency.h
- fortran/trans-stmt.o: $(GFORTRAN_TRANS_DEPS) fortran/dependency.h
---- gcc/fortran/trans-types.c.jj	2007-09-25 11:32:17.000000000 +0200
-+++ gcc/fortran/trans-types.c	2007-11-24 15:06:59.000000000 +0100
-@@ -36,6 +36,7 @@ Software Foundation, 51 Franklin Street,
- #include "trans-const.h"
- #include "real.h"
- #include "flags.h"
-+#include "dwarf2out.h"
- \f
- 
- #if (GFC_MAX_DIMENSIONS < 10)
-@@ -821,7 +822,8 @@ gfc_is_nodesc_array (gfc_symbol * sym)
- /* Create an array descriptor type.  */
- 
- static tree
--gfc_build_array_type (tree type, gfc_array_spec * as)
-+gfc_build_array_type (tree type, gfc_array_spec * as,
-+		      enum gfc_array_kind akind)
- {
-   tree lbound[GFC_MAX_DIMENSIONS];
-   tree ubound[GFC_MAX_DIMENSIONS];
-@@ -837,7 +839,9 @@ gfc_build_array_type (tree type, gfc_arr
-       ubound[n] = gfc_conv_array_bound (as->upper[n]);
-     }
- 
--  return gfc_get_array_type_bounds (type, as->rank, lbound, ubound, 0);
-+  if (as->type == AS_ASSUMED_SHAPE)
-+    akind = GFC_ARRAY_ASSUMED_SHAPE;
-+  return gfc_get_array_type_bounds (type, as->rank, lbound, ubound, 0, akind);
- }
- \f
- /* Returns the struct descriptor_dimension type.  */
-@@ -1015,7 +1019,7 @@ gfc_get_nodesc_array_type (tree etype, g
-       if (expr->expr_type == EXPR_CONSTANT)
-         {
-           tmp = gfc_conv_mpz_to_tree (expr->value.integer,
--                                  gfc_index_integer_kind);
-+				      gfc_index_integer_kind);
-         }
-       else
-         {
-@@ -1107,7 +1111,7 @@ gfc_get_nodesc_array_type (tree etype, g
-   /* In debug info represent packed arrays as multi-dimensional
-      if they have rank > 1 and with proper bounds, instead of flat
-      arrays.  */
--  if (known_stride && write_symbols != NO_DEBUG)
-+  if (known_offset && write_symbols != NO_DEBUG)
-     {
-       tree gtype = etype, rtype, type_decl;
- 
-@@ -1193,7 +1197,8 @@ gfc_get_array_descriptor_base (int dimen
- 
- tree
- gfc_get_array_type_bounds (tree etype, int dimen, tree * lbound,
--			   tree * ubound, int packed)
-+			   tree * ubound, int packed,
-+			   enum gfc_array_kind akind)
- {
-   char name[8 + GFC_RANK_DIGITS + GFC_MAX_SYMBOL_LEN];
-   tree fat_type, base_type, arraytype, lower, upper, stride, tmp;
-@@ -1220,6 +1225,7 @@ gfc_get_array_type_bounds (tree etype, i
- 
-   GFC_TYPE_ARRAY_RANK (fat_type) = dimen;
-   GFC_TYPE_ARRAY_DTYPE (fat_type) = NULL_TREE;
-+  GFC_TYPE_ARRAY_AKIND (fat_type) = akind;
- 
-   /* Build an array descriptor record type.  */
-   if (packed != 0)
-@@ -1337,7 +1343,14 @@ gfc_sym_type (gfc_symbol * sym)
- 	    }
-         }
-       else
--	type = gfc_build_array_type (type, sym->as);
-+	{
-+	  enum gfc_array_kind akind = GFC_ARRAY_UNKNOWN;
-+	  if (sym->attr.pointer)
-+	    akind = GFC_ARRAY_POINTER;
-+	  else if (sym->attr.allocatable)
-+	    akind = GFC_ARRAY_ALLOCATABLE;
-+	  type = gfc_build_array_type (type, sym->as, akind);
-+	}
-     }
-   else
-     {
-@@ -1550,7 +1563,8 @@ gfc_get_derived_type (gfc_symbol * deriv
- 	    {
- 	      /* Pointers to arrays aren't actually pointer types.  The
- 	         descriptors are separate, but the data is common.  */
--	      field_type = gfc_build_array_type (field_type, c->as);
-+	      field_type = gfc_build_array_type (field_type, c->as,
-+						 GFC_ARRAY_POINTER);
- 	    }
- 	  else
- 	    field_type = gfc_get_nodesc_array_type (field_type, c->as, 3);
-@@ -1893,4 +1907,124 @@ gfc_signed_type (tree type)
-   return gfc_signed_or_unsigned_type (0, type);
- }
- 
-+/* Return TRUE if TYPE is a type with a hidden descriptor, fill in INFO
-+   in that case.  */
-+
-+bool
-+gfc_get_array_descr_info (tree type, struct array_descr_info *info)
-+{
-+  int rank, dim;
-+  bool indirect = false;
-+  tree etype, ptype, field, t, base_decl;
-+  tree data_off, offset_off, dim_off, dim_size, elem_size;
-+  tree lower_suboff, upper_suboff, stride_suboff;
-+
-+  if (! GFC_DESCRIPTOR_TYPE_P (type))
-+    {
-+      if (! POINTER_TYPE_P (type))
-+	return false;
-+      type = TREE_TYPE (type);
-+      if (! GFC_DESCRIPTOR_TYPE_P (type))
-+	return false;
-+      indirect = true;
-+    }
-+
-+  rank = GFC_TYPE_ARRAY_RANK (type);
-+  if (rank >= (int) (sizeof (info->dimen) / sizeof (info->dimen[0])))
-+    return false;
-+
-+  etype = GFC_TYPE_ARRAY_DATAPTR_TYPE (type);
-+  gcc_assert (POINTER_TYPE_P (etype));
-+  etype = TREE_TYPE (etype);
-+  gcc_assert (TREE_CODE (etype) == ARRAY_TYPE);
-+  etype = TREE_TYPE (etype);
-+  /* Can't handle variable sized elements yet.  */
-+  if (int_size_in_bytes (etype) <= 0)
-+    return false;
-+  /* Nor non-constant lower bounds in assumed shape arrays.  */
-+  if (GFC_TYPE_ARRAY_AKIND (type) == GFC_ARRAY_ASSUMED_SHAPE)
-+    {
-+      for (dim = 0; dim < rank; dim++)
-+	if (GFC_TYPE_ARRAY_LBOUND (type, dim) == NULL_TREE
-+	    || TREE_CODE (GFC_TYPE_ARRAY_LBOUND (type, dim)) != INTEGER_CST)
-+	  return false;
-+    }
-+
-+  memset (info, '\0', sizeof (*info));
-+  info->ndimensions = rank;
-+  info->element_type = etype;
-+  ptype = build_pointer_type (gfc_array_index_type);
-+  if (indirect)
-+    {
-+      info->base_decl = build_decl (VAR_DECL, NULL_TREE,
-+				    build_pointer_type (ptype));
-+      base_decl = build1 (INDIRECT_REF, ptype, info->base_decl);
-+    }
-+  else
-+    info->base_decl = base_decl = build_decl (VAR_DECL, NULL_TREE, ptype);
-+
-+  elem_size = fold_convert (gfc_array_index_type, TYPE_SIZE_UNIT (etype));
-+  field = TYPE_FIELDS (TYPE_MAIN_VARIANT (type));
-+  data_off = byte_position (field);
-+  field = TREE_CHAIN (field);
-+  offset_off = byte_position (field);
-+  field = TREE_CHAIN (field);
-+  field = TREE_CHAIN (field);
-+  dim_off = byte_position (field);
-+  dim_size = TYPE_SIZE_UNIT (TREE_TYPE (TREE_TYPE (field)));
-+  field = TYPE_FIELDS (TREE_TYPE (TREE_TYPE (field)));
-+  stride_suboff = byte_position (field);
-+  field = TREE_CHAIN (field);
-+  lower_suboff = byte_position (field);
-+  field = TREE_CHAIN (field);
-+  upper_suboff = byte_position (field);
-+
-+  t = base_decl;
-+  if (!integer_zerop (data_off))
-+    t = build2 (PLUS_EXPR, ptype, t, data_off);
-+  t = build1 (NOP_EXPR, build_pointer_type (ptr_type_node), t);
-+  info->data_location = build1 (INDIRECT_REF, ptr_type_node, t);
-+  if (GFC_TYPE_ARRAY_AKIND (type) == GFC_ARRAY_ALLOCATABLE)
-+    info->allocated = build2 (NE_EXPR, boolean_type_node,
-+			      info->data_location, null_pointer_node);
-+  else if (GFC_TYPE_ARRAY_AKIND (type) == GFC_ARRAY_POINTER)
-+    info->associated = build2 (NE_EXPR, boolean_type_node,
-+			       info->data_location, null_pointer_node);
-+
-+  for (dim = 0; dim < rank; dim++)
-+    {
-+      t = build2 (PLUS_EXPR, ptype, base_decl,
-+		  size_binop (PLUS_EXPR, dim_off, lower_suboff));
-+      t = build1 (INDIRECT_REF, gfc_array_index_type, t);
-+      info->dimen[dim].lower_bound = t;
-+      t = build2 (PLUS_EXPR, ptype, base_decl,
-+		  size_binop (PLUS_EXPR, dim_off, upper_suboff));
-+      t = build1 (INDIRECT_REF, gfc_array_index_type, t);
-+      info->dimen[dim].upper_bound = t;
-+      if (GFC_TYPE_ARRAY_AKIND (type) == GFC_ARRAY_ASSUMED_SHAPE)
-+	{
-+	  /* Assumed shape arrays have known lower bounds.  */
-+	  info->dimen[dim].upper_bound
-+	    = build2 (MINUS_EXPR, gfc_array_index_type,
-+		      info->dimen[dim].upper_bound,
-+		      info->dimen[dim].lower_bound);
-+	  info->dimen[dim].lower_bound
-+	    = fold_convert (gfc_array_index_type,
-+			    GFC_TYPE_ARRAY_LBOUND (type, dim));
-+	  info->dimen[dim].upper_bound
-+	    = build2 (PLUS_EXPR, gfc_array_index_type,
-+		      info->dimen[dim].lower_bound,
-+		      info->dimen[dim].upper_bound);
-+	}
-+      t = build2 (PLUS_EXPR, ptype, base_decl,
-+		  size_binop (PLUS_EXPR, dim_off, stride_suboff));
-+      t = build1 (INDIRECT_REF, gfc_array_index_type, t);
-+      t = build2 (MULT_EXPR, gfc_array_index_type, t, elem_size);
-+      info->dimen[dim].stride = t;
-+      dim_off = size_binop (PLUS_EXPR, dim_off, dim_size);
-+    }
-+
-+  return true;
-+}
-+
- #include "gt-fortran-trans-types.h"
---- gcc/fortran/trans-array.c.jj	2007-04-03 13:10:00.000000000 +0200
-+++ gcc/fortran/trans-array.c	2007-11-24 14:58:20.000000000 +0100
-@@ -612,7 +612,8 @@ gfc_trans_allocate_temp_array (stmtblock
- 
-   /* Initialize the descriptor.  */
-   type =
--    gfc_get_array_type_bounds (eltype, info->dimen, loop->from, loop->to, 1);
-+    gfc_get_array_type_bounds (eltype, info->dimen, loop->from, loop->to, 1,
-+			       GFC_ARRAY_UNKNOWN);
-   desc = gfc_create_var (type, "atmp");
-   GFC_DECL_PACKED_ARRAY (desc) = 1;
- 
-@@ -4345,7 +4346,8 @@ gfc_conv_expr_descriptor (gfc_se * se, g
- 	  /* Otherwise make a new one.  */
- 	  parmtype = gfc_get_element_type (TREE_TYPE (desc));
- 	  parmtype = gfc_get_array_type_bounds (parmtype, loop.dimen,
--						loop.from, loop.to, 0);
-+						loop.from, loop.to, 0,
-+						GFC_ARRAY_UNKNOWN);
- 	  parm = gfc_create_var (parmtype, "parm");
- 	}
- 
---- gcc/fortran/trans-types.h.jj	2007-02-20 22:38:20.000000000 +0100
-+++ gcc/fortran/trans-types.h	2007-11-24 15:03:58.000000000 +0100
-@@ -79,7 +79,8 @@ tree gfc_signed_type (tree);
- tree gfc_signed_or_unsigned_type (int, tree);
- 
- tree gfc_get_element_type (tree);
--tree gfc_get_array_type_bounds (tree, int, tree *, tree *, int);
-+tree gfc_get_array_type_bounds (tree, int, tree *, tree *, int,
-+				enum gfc_array_kind);
- tree gfc_get_nodesc_array_type (tree, gfc_array_spec *, int);
- 
- /* Add a field of given name and type to a UNION_TYPE or RECORD_TYPE.  */
---- gcc/dwarf2.h.jj	2007-02-20 22:39:12.000000000 +0100
-+++ gcc/dwarf2.h	2007-11-24 14:58:20.000000000 +0100
-@@ -275,7 +275,8 @@ enum dwarf_attribute
-     DW_AT_prototyped = 0x27,
-     DW_AT_return_addr = 0x2a,
-     DW_AT_start_scope = 0x2c,
--    DW_AT_stride_size = 0x2e,
-+    DW_AT_bit_stride = 0x2e,
-+    DW_AT_stride_size = DW_AT_bit_stride,
-     DW_AT_upper_bound = 0x2f,
-     DW_AT_abstract_origin = 0x31,
-     DW_AT_accessibility = 0x32,
-@@ -310,7 +311,8 @@ enum dwarf_attribute
-     DW_AT_allocated     = 0x4e,
-     DW_AT_associated    = 0x4f,
-     DW_AT_data_location = 0x50,
--    DW_AT_stride        = 0x51,
-+    DW_AT_byte_stride   = 0x51,
-+    DW_AT_stride        = DW_AT_byte_stride,
-     DW_AT_entry_pc      = 0x52,
-     DW_AT_use_UTF8      = 0x53,
-     DW_AT_extension     = 0x54,
---- gcc/langhooks.h.jj	2007-11-23 17:41:15.000000000 +0100
-+++ gcc/langhooks.h	2007-11-24 15:01:32.000000000 +0100
-@@ -28,6 +28,8 @@ struct diagnostic_info;
- 
- struct gimplify_omp_ctx;
- 
-+struct array_descr_info;
-+
- /* A print hook for print_tree ().  */
- typedef void (*lang_print_tree_hook) (FILE *, tree, int indent);
- 
-@@ -153,6 +155,10 @@ struct lang_hooks_for_types
-      Called only after doing all language independent checks.  */
-   bool (*type_hash_eq) (tree, tree);
- 
-+  /* Return TRUE if TYPE uses a hidden descriptor and fills in information
-+     for the debugger about the array bounds, strides, etc.  */
-+  bool (*get_array_descr_info) (tree, struct array_descr_info *);
-+
-   /* Nonzero if types that are identical are to be hashed so that only
-      one copy is kept.  If a language requires unique types for each
-      user-specified type, such as Ada, this should be set to TRUE.  */
---- gcc/langhooks-def.h.jj	2007-11-23 17:41:15.000000000 +0100
-+++ gcc/langhooks-def.h	2007-11-24 15:00:47.000000000 +0100
-@@ -223,6 +223,7 @@ extern tree lhd_make_node (enum tree_cod
- #define LANG_HOOKS_OMP_FIRSTPRIVATIZE_TYPE_SIZES \
-   lhd_omp_firstprivatize_type_sizes
- #define LANG_HOOKS_TYPE_HASH_EQ		lhd_type_hash_eq
-+#define LANG_HOOKS_GET_ARRAY_DESCR_INFO	NULL
- #define LANG_HOOKS_HASH_TYPES		true
- 
- #define LANG_HOOKS_FOR_TYPES_INITIALIZER { \
-@@ -238,6 +239,7 @@ extern tree lhd_make_node (enum tree_cod
-   LANG_HOOKS_TYPE_MAX_SIZE, \
-   LANG_HOOKS_OMP_FIRSTPRIVATIZE_TYPE_SIZES, \
-   LANG_HOOKS_TYPE_HASH_EQ, \
-+  LANG_HOOKS_GET_ARRAY_DESCR_INFO, \
-   LANG_HOOKS_HASH_TYPES \
- }
- 
---- gcc/dwarf2out.c.jj	2007-11-23 18:10:20.000000000 +0100
-+++ gcc/dwarf2out.c	2007-11-24 14:58:20.000000000 +0100
-@@ -4146,6 +4146,7 @@ static tree member_declared_type (tree);
- static const char *decl_start_label (tree);
- #endif
- static void gen_array_type_die (tree, dw_die_ref);
-+static void gen_descr_array_type_die (tree, struct array_descr_info *, dw_die_ref);
- #if 0
- static void gen_entry_point_die (tree, dw_die_ref);
- #endif
-@@ -4552,8 +4553,8 @@ dwarf_attr_name (unsigned int attr)
-       return "DW_AT_return_addr";
-     case DW_AT_start_scope:
-       return "DW_AT_start_scope";
--    case DW_AT_stride_size:
--      return "DW_AT_stride_size";
-+    case DW_AT_bit_stride:
-+      return "DW_AT_bit_stride";
-     case DW_AT_upper_bound:
-       return "DW_AT_upper_bound";
-     case DW_AT_abstract_origin:
-@@ -4621,8 +4622,8 @@ dwarf_attr_name (unsigned int attr)
-       return "DW_AT_associated";
-     case DW_AT_data_location:
-       return "DW_AT_data_location";
--    case DW_AT_stride:
--      return "DW_AT_stride";
-+    case DW_AT_byte_stride:
-+      return "DW_AT_byte_stride";
-     case DW_AT_entry_pc:
-       return "DW_AT_entry_pc";
-     case DW_AT_use_UTF8:
-@@ -11169,6 +11170,159 @@ gen_array_type_die (tree type, dw_die_re
-   add_type_attribute (array_die, element_type, 0, 0, context_die);
- }
- 
-+static dw_loc_descr_ref
-+descr_info_loc (tree val, tree base_decl)
-+{
-+  HOST_WIDE_INT size;
-+  dw_loc_descr_ref loc, loc2;
-+  enum dwarf_location_atom op;
-+
-+  if (val == base_decl)
-+    return new_loc_descr (DW_OP_push_object_address, 0, 0);
-+
-+  switch (TREE_CODE (val))
-+    {
-+    case NOP_EXPR:
-+    case CONVERT_EXPR:
-+      return descr_info_loc (TREE_OPERAND (val, 0), base_decl);
-+    case INTEGER_CST:
-+      if (host_integerp (val, 0))
-+	return int_loc_descriptor (tree_low_cst (val, 0));
-+      break;
-+    case INDIRECT_REF:
-+      size = int_size_in_bytes (TREE_TYPE (val));
-+      if (size < 0)
-+	break;
-+      loc = descr_info_loc (TREE_OPERAND (val, 0), base_decl);
-+      if (!loc)
-+	break;
-+      if (size == DWARF2_ADDR_SIZE)
-+	add_loc_descr (&loc, new_loc_descr (DW_OP_deref, 0, 0));
-+      else
-+	add_loc_descr (&loc, new_loc_descr (DW_OP_deref_size, size, 0));
-+      return loc;
-+    case PLUS_EXPR:
-+      if (host_integerp (TREE_OPERAND (val, 1), 1)
-+	  && (unsigned HOST_WIDE_INT) tree_low_cst (TREE_OPERAND (val, 1), 1)
-+	     < 16384)
-+	{
-+	  loc = descr_info_loc (TREE_OPERAND (val, 0), base_decl);
-+	  if (!loc)
-+	    break;
-+	  add_loc_descr (&loc,
-+			 new_loc_descr (DW_OP_plus_uconst,
-+					tree_low_cst (TREE_OPERAND (val, 1),
-+						      1), 0));
-+	}
-+      else
-+	{
-+	  op = DW_OP_plus;
-+	do_binop:
-+	  loc = descr_info_loc (TREE_OPERAND (val, 0), base_decl);
-+	  if (!loc)
-+	    break;
-+	  loc2 = descr_info_loc (TREE_OPERAND (val, 1), base_decl);
-+	  if (!loc2)
-+	    break;
-+	  add_loc_descr (&loc, loc2);
-+	  add_loc_descr (&loc2, new_loc_descr (op, 0, 0));
-+	}
-+      return loc;
-+    case MINUS_EXPR:
-+      op = DW_OP_minus;
-+      goto do_binop;
-+    case MULT_EXPR:
-+      op = DW_OP_mul;
-+      goto do_binop;
-+    case EQ_EXPR:
-+      op = DW_OP_eq;
-+      goto do_binop;
-+    case NE_EXPR:
-+      op = DW_OP_ne;
-+      goto do_binop;
-+    default:
-+      break;
-+    }
-+  return NULL;
-+}
-+
-+static void
-+add_descr_info_field (dw_die_ref die, enum dwarf_attribute attr,
-+		      tree val, tree base_decl)
-+{
-+  dw_loc_descr_ref loc;
-+
-+  if (host_integerp (val, 0))
-+    {
-+      add_AT_unsigned (die, attr, tree_low_cst (val, 0));
-+      return;
-+    }
-+
-+  loc = descr_info_loc (val, base_decl);
-+  if (!loc)
-+    return;
-+
-+  add_AT_loc (die, attr, loc);
-+}
-+
-+/* This routine generates DIE for array with hidden descriptor, details
-+   are filled into *info by a langhook.  */
-+
-+static void
-+gen_descr_array_type_die (tree type, struct array_descr_info *info,
-+			  dw_die_ref context_die)
-+{
-+  dw_die_ref scope_die = scope_die_for (type, context_die);
-+  dw_die_ref array_die;
-+  int dim;
-+
-+  array_die = new_die (DW_TAG_array_type, scope_die, type);
-+  add_name_attribute (array_die, type_tag (type));
-+  equate_type_number_to_die (type, array_die);
-+
-+  if (info->data_location)
-+    add_descr_info_field (array_die, DW_AT_data_location, info->data_location,
-+			  info->base_decl);
-+  if (info->associated)
-+    add_descr_info_field (array_die, DW_AT_associated, info->associated,
-+			  info->base_decl);
-+  if (info->allocated)
-+    add_descr_info_field (array_die, DW_AT_allocated, info->allocated,
-+			  info->base_decl);
-+
-+  for (dim = 0; dim < info->ndimensions; dim++)
-+    {
-+      dw_die_ref subrange_die
-+	= new_die (DW_TAG_subrange_type, array_die, NULL);
-+
-+      if (info->dimen[dim].lower_bound)
-+	{
-+	  /* If it is the default value, omit it.  */
-+	  if ((is_c_family () || is_java ())
-+	      && integer_zerop (info->dimen[dim].lower_bound))
-+	    ;
-+	  else if (is_fortran ()
-+		   && integer_onep (info->dimen[dim].lower_bound))
-+	    ;
-+	  else
-+	    add_descr_info_field (subrange_die, DW_AT_lower_bound,
-+				  info->dimen[dim].lower_bound,
-+				  info->base_decl);
-+	}
-+      if (info->dimen[dim].upper_bound)
-+	add_descr_info_field (subrange_die, DW_AT_upper_bound,
-+			      info->dimen[dim].upper_bound,
-+			      info->base_decl);
-+      if (info->dimen[dim].stride)
-+	add_descr_info_field (subrange_die, DW_AT_byte_stride,
-+			      info->dimen[dim].stride,
-+			      info->base_decl);
-+    }
-+
-+  gen_type_die (info->element_type, context_die);
-+  add_type_attribute (array_die, info->element_type, 0, 0, context_die);
-+}
-+
- #if 0
- static void
- gen_entry_point_die (tree decl, dw_die_ref context_die)
-@@ -12478,6 +12632,7 @@ static void
- gen_type_die (tree type, dw_die_ref context_die)
- {
-   int need_pop;
-+  struct array_descr_info info;
- 
-   if (type == NULL_TREE || type == error_mark_node)
-     return;
-@@ -12496,6 +12651,16 @@ gen_type_die (tree type, dw_die_ref cont
-       return;
-     }
- 
-+  /* If this is an array type with hidden descriptor, handle it first.  */
-+  if (!TREE_ASM_WRITTEN (type)
-+      && lang_hooks.types.get_array_descr_info
-+      && lang_hooks.types.get_array_descr_info (type, &info))
-+    {
-+      gen_descr_array_type_die (type, &info, context_die);
-+      TREE_ASM_WRITTEN (type) = 1;
-+      return;
-+    }
-+
-   /* We are going to output a DIE to represent the unqualified version
-      of this type (i.e. without any const or volatile qualifiers) so
-      get the main variant (i.e. the unqualified version) of this type
---- gcc/dwarf2out.h.jj	2007-02-20 22:39:12.000000000 +0100
-+++ gcc/dwarf2out.h	2007-11-24 15:00:14.000000000 +0100
-@@ -27,3 +27,19 @@ struct die_struct;
- extern void debug_dwarf_die (struct die_struct *);
- extern void dwarf2out_set_demangle_name_func (const char *(*) (const char *));
- extern void dwarf2out_add_library_unit_info (const char *, const char *);
-+
-+struct array_descr_info
-+{
-+  int ndimensions;
-+  tree element_type;
-+  tree base_decl;
-+  tree data_location;
-+  tree allocated;
-+  tree associated;
-+  struct array_descr_dimen
-+    {
-+      tree lower_bound;
-+      tree upper_bound;
-+      tree stride;
-+    } dimen[10];
-+};

diff --git a/gcc41-rh407281.patch b/gcc41-rh407281.patch
deleted file mode 100644
index aabd073..0000000
--- a/gcc41-rh407281.patch
+++ /dev/null
@@ -1,190 +0,0 @@
-2007-12-02  Jakub Jelinek  <jakub@redhat.com>
-
-	* gcc.c-torture/execute/20071202-1.c: New test.
-
-2007-02-19  Eric Botcazou  <ebotcazou@adacore.com>
-
-	* gimplify.c (gimplify_init_ctor_preeval_1): Detect potential overlap
-	due to calls to functions taking pointers as parameters.
-
-	* gnat.dg/self_aggregate_with_call.adb: New test.
-
-2006-08-21  Olivier Hainque  <hainque@adacore.com>
-
-	* gimplify.c (gimplify_init_constructor) <RECORD,UNION,ARRAY types>:
-	Arrange for the temporary captures of components overlapping the lhs
-	to happen before the lhs is possibly cleared.
-	
-	* gnat.dg/self_aggregate_with_zeros.adb: New test.
-	* gnat.dg/self_aggregate_with_array.adb: New test.
-
---- gcc/gimplify.c	(revision 116299)
-+++ gcc/gimplify.c	(revision 116300)
-@@ -2638,6 +2638,21 @@ gimplify_init_ctor_preeval_1 (tree *tp, 
-       && alias_sets_conflict_p (data->lhs_alias_set, get_alias_set (t)))
-     return t;
- 
-+  /* If the constructor component is a call, determine if it can hide a
-+     potential overlap with the lhs through an INDIRECT_REF like above.  */
-+  if (TREE_CODE (t) == CALL_EXPR)
-+    {
-+      tree type, fntype = TREE_TYPE (TREE_TYPE (TREE_OPERAND (t, 0)));
-+
-+      for (type = TYPE_ARG_TYPES (fntype); type; type = TREE_CHAIN (type))
-+	if (POINTER_TYPE_P (TREE_VALUE (type))
-+	    && (!data->lhs_base_decl || TREE_ADDRESSABLE (data->lhs_base_decl))
-+	    && alias_sets_conflict_p (data->lhs_alias_set,
-+				      get_alias_set
-+				        (TREE_TYPE (TREE_VALUE (type)))))
-+	  return t;
-+    }
-+
-   if (IS_TYPE_OR_DECL_P (t))
-     *walk_subtrees = 0;
-   return NULL;
-@@ -3061,6 +3061,20 @@ gimplify_init_constructor (tree *expr_p,
- 	      }
- 	  }
- 
-+	/* If there are nonzero elements, pre-evaluate to capture elements
-+	   overlapping with the lhs into temporaries.  We must do this before
-+	   clearing to fetch the values before they are zeroed-out.  */
-+	if (num_nonzero_elements > 0)
-+	  {
-+	    preeval_data.lhs_base_decl = get_base_address (object);
-+	    if (!DECL_P (preeval_data.lhs_base_decl))
-+	      preeval_data.lhs_base_decl = NULL;
-+	    preeval_data.lhs_alias_set = get_alias_set (object);
-+
-+	    gimplify_init_ctor_preeval (&TREE_OPERAND (*expr_p, 1),
-+					pre_p, post_p, &preeval_data);
-+	  }
-+
- 	if (cleared)
- 	  {
- 	    /* Zap the CONSTRUCTOR element list, which simplifies this case.
-@@ -3076,16 +3090,7 @@ gimplify_init_constructor (tree *expr_p,
- 	   elements in the constructor, add assignments to the individual
- 	   scalar fields of the object.  */
- 	if (!cleared || num_nonzero_elements > 0)
--	  {
--	    preeval_data.lhs_base_decl = get_base_address (object);
--	    if (!DECL_P (preeval_data.lhs_base_decl))
--	      preeval_data.lhs_base_decl = NULL;
--	    preeval_data.lhs_alias_set = get_alias_set (object);
--
--	    gimplify_init_ctor_preeval (&TREE_OPERAND (*expr_p, 1),
--					pre_p, post_p, &preeval_data);
--	    gimplify_init_ctor_eval (object, elts, pre_p, cleared);
--	  }
-+	  gimplify_init_ctor_eval (object, elts, pre_p, cleared);
- 
- 	*expr_p = NULL_TREE;
-       }
---- gcc/testsuite/gcc.c-torture/execute/20071202-1.c.jj	2007-12-02 19:26:19.000000000 +0100
-+++ gcc/testsuite/gcc.c-torture/execute/20071202-1.c	2007-12-02 19:24:28.000000000 +0100
-@@ -0,0 +1,25 @@
-+extern void abort (void);
-+struct T { int t; int r[8]; };
-+struct S { int a; int b; int c[6]; struct T d; };
-+
-+__attribute__((noinline)) void
-+foo (struct S *s)
-+{
-+  *s = (struct S) { s->b, s->a, { 0, 0, 0, 0, 0, 0 }, s->d };
-+}
-+
-+int
-+main (void)
-+{
-+  struct S s = { 6, 12, { 1, 2, 3, 4, 5, 6 },
-+		 { 7, { 8, 9, 10, 11, 12, 13, 14, 15 } } };
-+  foo (&s);
-+  if (s.a != 12 || s.b != 6
-+      || s.c[0] || s.c[1] || s.c[2] || s.c[3] || s.c[4] || s.c[5])
-+    abort ();
-+  if (s.d.t != 7 || s.d.r[0] != 8 || s.d.r[1] != 9 || s.d.r[2] != 10
-+      || s.d.r[3] != 11 || s.d.r[4] != 12 || s.d.r[5] != 13
-+      || s.d.r[6] != 14 || s.d.r[7] != 15)
-+    abort ();
-+  return 0;
-+}
---- gcc/testsuite/gnat.dg/self_aggregate_with_zeros.adb	(revision 0)
-+++ gcc/testsuite/gnat.dg/self_aggregate_with_zeros.adb	(revision 116300)
-@@ -0,0 +1,19 @@
-+-- { dg-do run }
-+
-+procedure self_aggregate_with_zeros is
-+
-+   type Sensor is record
-+      Value  : Natural;
-+      A, B, C, D, E, F, G, H, I, J, K, L, M : Natural;
-+   end record;
-+
-+   Pressure : Sensor;
-+
-+begin
-+   Pressure.Value := 256;
-+   Pressure := (Pressure.Value, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
-+
-+   if Pressure.Value /= 256 then
-+      raise Program_Error;
-+   end if;
-+end;
---- gcc/testsuite/gnat.dg/self_aggregate_with_array.adb	(revision 0)
-+++ gcc/testsuite/gnat.dg/self_aggregate_with_array.adb	(revision 116300)
-@@ -0,0 +1,21 @@
-+-- { dg-do run }
-+
-+procedure self_aggregate_with_array is
-+
-+   type Value_Bounds is array (1 .. 2) of Natural;
-+
-+   type Sensor is record
-+      Value  : Natural;
-+      Bounds : Value_Bounds;
-+   end record;
-+
-+   Pressure : Sensor;
-+
-+begin
-+   Pressure.Value := 256;
-+   Pressure := (Value => Pressure.Value, Bounds => (1, 2));
-+
-+   if Pressure.Value /= 256 then
-+      raise Program_Error;
-+   end if;
-+end;
---- gcc/testsuite/gnat.dg/self_aggregate_with_call.adb	(revision 0)
-+++ gcc/testsuite/gnat.dg/self_aggregate_with_call.adb	(revision 122134)
-@@ -0,0 +1,30 @@
-+-- { dg-do run }
-+-- { dg-options "-O2" }
-+
-+procedure self_aggregate_with_call is
-+
-+   type Values is array (1 .. 8) of Natural;
-+
-+   type Vector is record
-+      Components : Values;
-+   end record;
-+
-+   function Clone (Components: Values) return Values is
-+   begin
-+      return Components;
-+   end;
-+
-+   procedure Process (V : in out Vector) is
-+   begin
-+      V.Components (Values'First) := 1;
-+      V := (Components => Clone (V.Components));
-+
-+      if V.Components (Values'First) /= 1 then
-+         raise Program_Error;
-+      end if;
-+   end;
-+
-+   V : Vector;
-+begin
-+   Process (V);
-+end;

diff --git a/gcc41-virtual-inline-backtrace.patch b/gcc41-virtual-inline-backtrace.patch
deleted file mode 100644
index 2215f7c..0000000
--- a/gcc41-virtual-inline-backtrace.patch
+++ /dev/null
@@ -1,758 +0,0 @@
-2007-09-27  Jakub Jelinek  <jakub@redhat.com>
-
-	* builtins.c (expand_builtin, expand_builtin_object_size,
-	expand_builtin_memory_chk, maybe_emit_chk_warning,
-	maybe_emit_sprintf_chk_warning): Use new %K format string specifier
-	for diagnostics.
-	* expr.c (expand_expr_real_1): Likewise.
-	* langhooks-def.h (struct diagnostic_info): Add forward decl.
-	(lhd_print_error_function): Add third argument.
-	* langhooks.h (struct diagnostic_info): Add forward decl.
-	(struct lang_hooks): Add third argument to print_error_function.
-	* diagnostic.h (diagnostic_info): Add abstract_origin field.
-	(diagnostic_last_function_changed, diagnostic_set_last_function): Add
-	second argument.
-	(diagnostic_report_current_function): Likewise.
-	* toplev.c (announce_function): Pass NULL as second argument to
-	diagnostic_set_last_function.
-	* diagnostic.c (diagnostic_report_current_function): Add second
-	argument, pass it as third argument to lang_hooks.print_error_function.
-	(default_diagnostic_starter): Pass DIAGNOSTIC as second argument
-	to diagnostic_report_current_function.
-	(diagnostic_report_diagnostic): Initialize diagnostic->abstract_origin
-	and message.abstract_origin.
-	(verbatim): Initialize abstract_origin.
-	* pretty-print.h (text_info): Add abstract_origin field.
-	* pretty-print.c (pp_base_format): Handle %K.
-	* langhooks.c (lhd_print_error_function): Add third argument.  If
-	diagnostic->abstract_origin, print virtual backtrace.
-	* c-format.c (gcc_diag_char_table, gcc_tdiag_char_table,
-	gcc_cdiag_char_table, gcc_cxxdiag_char_table): Support %K.
-	(init_dynamic_diag_info): Likewise.
-cp/
-	* error.c (cxx_print_error_function): Add third argument, pass
-	it over to lhd_print_error_function.
-	(cp_print_error_function): If diagnostic->abstract_origin, print
-	virtual backtrace.
-	* cp-tree.h (struct diagnostic_info): New forward decl.
-	(cxx_print_error_function): Add third argument.
-testsuite/
-	* lib/prune.exp: Prune also "^In function .*$" lines and
-	"^    inlined from .*$" lines.
-java/
-	* lang.c (java_print_error_function): Add third argument.
-
---- gcc/java/lang.c.jj	2007-02-20 22:35:09.000000000 +0100
-+++ gcc/java/lang.c	2007-09-28 22:47:38.000000000 +0200
-@@ -55,7 +55,8 @@ static bool java_post_options (const cha
- static int java_handle_option (size_t scode, const char *arg, int value);
- static void put_decl_string (const char *, int);
- static void put_decl_node (tree);
--static void java_print_error_function (diagnostic_context *, const char *);
-+static void java_print_error_function (diagnostic_context *, const char *,
-+				       diagnostic_info *);
- static tree java_tree_inlining_walk_subtrees (tree *, int *, walk_tree_fn,
- 					      void *, struct pointer_set_t *);
- static int merge_init_test_initialization (void * *, void *);
-@@ -511,7 +512,8 @@ static GTY(()) tree last_error_function_
- static GTY(()) tree last_error_function;
- static void
- java_print_error_function (diagnostic_context *context ATTRIBUTE_UNUSED,
--			   const char *file)
-+			   const char *file,
-+			   diagnostic_info *diagnostic ATTRIBUTE_UNUSED)
- {
-   /* Don't print error messages with bogus function prototypes.  */
-   if (inhibit_error_function_printing)
---- gcc/diagnostic.c.jj	2007-02-20 22:39:12.000000000 +0100
-+++ gcc/diagnostic.c	2007-09-28 22:45:19.000000000 +0200
-@@ -272,10 +272,11 @@ diagnostic_action_after_output (diagnost
- /* Prints out, if necessary, the name of the current function
-    that caused an error.  Called from all error and warning functions.  */
- void
--diagnostic_report_current_function (diagnostic_context *context)
-+diagnostic_report_current_function (diagnostic_context *context,
-+				    diagnostic_info *diagnostic)
- {
-   diagnostic_report_current_module (context);
--  lang_hooks.print_error_function (context, input_filename);
-+  lang_hooks.print_error_function (context, input_filename, diagnostic);
- }
- 
- void
-@@ -313,7 +314,7 @@ static void
- default_diagnostic_starter (diagnostic_context *context,
- 			    diagnostic_info *diagnostic)
- {
--  diagnostic_report_current_function (context);
-+  diagnostic_report_current_function (context, diagnostic);
-   pp_set_prefix (context->printer, diagnostic_build_prefix (diagnostic));
- }
- 
-@@ -361,6 +362,8 @@ diagnostic_report_diagnostic (diagnostic
- 		      " [", cl_options[diagnostic->option_index].opt_text, "]", NULL));
- 
-       diagnostic->message.locus = &diagnostic->location;
-+      diagnostic->message.abstract_origin = &diagnostic->abstract_origin;
-+      diagnostic->abstract_origin = NULL;
-       pp_format (context->printer, &diagnostic->message);
-       (*diagnostic_starter (context)) (context, diagnostic);
-       pp_output_formatted_text (context->printer);
-@@ -368,6 +371,7 @@ diagnostic_report_diagnostic (diagnostic
-       pp_flush (context->printer);
-       diagnostic_action_after_output (context, diagnostic);
-       diagnostic->message.format_spec = saved_format_spec;
-+      diagnostic->abstract_origin = NULL;
-     }
- 
-   context->lock--;
-@@ -419,6 +423,7 @@ verbatim (const char *gmsgid, ...)
-   text.args_ptr = &ap;
-   text.format_spec = _(gmsgid);
-   text.locus = NULL;
-+  text.abstract_origin = NULL;
-   pp_format_verbatim (global_dc->printer, &text);
-   pp_flush (global_dc->printer);
-   va_end (ap);
---- gcc/builtins.c.jj	2007-09-25 12:26:50.000000000 +0200
-+++ gcc/builtins.c	2007-09-28 22:47:00.000000000 +0200
-@@ -5982,13 +5982,13 @@ expand_builtin (tree exp, rtx target, rt
-     case BUILT_IN_VA_ARG_PACK:
-       /* All valid uses of __builtin_va_arg_pack () are removed during
- 	 inlining.  */
--      error ("invalid use of %<__builtin_va_arg_pack ()%>");
-+      error ("%Kinvalid use of %<__builtin_va_arg_pack ()%>", exp);
-       return const0_rtx;
- 
-     case BUILT_IN_VA_ARG_PACK_LEN:
-       /* All valid uses of __builtin_va_arg_pack_len () are removed during
- 	 inlining.  */
--      error ("invalid use of %<__builtin_va_arg_pack_len ()%>");
-+      error ("%Kinvalid use of %<__builtin_va_arg_pack_len ()%>", exp);
-       return const0_rtx;
- 
-       /* Return the address of the first anonymous stack arg.  */
-@@ -10286,12 +10286,11 @@ expand_builtin_object_size (tree exp)
-   int object_size_type;
-   tree fndecl = get_callee_fndecl (exp);
-   tree arglist = TREE_OPERAND (exp, 1);
--  location_t locus = EXPR_LOCATION (exp);
- 
-   if (!validate_arglist (arglist, POINTER_TYPE, INTEGER_TYPE, VOID_TYPE))
-     {
--      error ("%Hfirst argument of %D must be a pointer, second integer constant",
--	     &locus, fndecl);
-+      error ("%Kfirst argument of %D must be a pointer, second integer constant",
-+	     exp, fndecl);
-       expand_builtin_trap ();
-       return const0_rtx;
-     }
-@@ -10303,8 +10302,8 @@ expand_builtin_object_size (tree exp)
-       || tree_int_cst_sgn (ost) < 0
-       || compare_tree_int (ost, 3) > 0)
-     {
--      error ("%Hlast argument of %D is not integer constant between 0 and 3",
--	     &locus, fndecl);
-+      error ("%Klast argument of %D is not integer constant between 0 and 3",
-+	     exp, fndecl);
-       expand_builtin_trap ();
-       return const0_rtx;
-     }
-@@ -10348,9 +10347,8 @@ expand_builtin_memory_chk (tree exp, rtx
- 
-       if (! integer_all_onesp (size) && tree_int_cst_lt (size, len))
- 	{
--	  location_t locus = EXPR_LOCATION (exp);
--	  warning (0, "%Hcall to %D will always overflow destination buffer",
--		   &locus, get_callee_fndecl (exp));
-+	  warning (0, "%Kcall to %D will always overflow destination buffer",
-+		   exp, get_callee_fndecl (exp));
- 	  return 0;
- 	}
- 
-@@ -10463,7 +10461,6 @@ maybe_emit_chk_warning (tree exp, enum b
-   int arg_mask, is_strlen = 0;
-   tree arglist = TREE_OPERAND (exp, 1), a;
-   tree len, size;
--  location_t locus;
- 
-   switch (fcode)
-     {
-@@ -10525,9 +10522,8 @@ maybe_emit_chk_warning (tree exp, enum b
-       src = c_strlen (src, 1);
-       if (! src || ! host_integerp (src, 1))
- 	{
--	  locus = EXPR_LOCATION (exp);
--	  warning (0, "%Hcall to %D might overflow destination buffer",
--		   &locus, get_callee_fndecl (exp));
-+	  warning (0, "%Kcall to %D might overflow destination buffer",
-+		   exp, get_callee_fndecl (exp));
- 	  return;
- 	}
-       else if (tree_int_cst_lt (src, size))
-@@ -10536,9 +10532,8 @@ maybe_emit_chk_warning (tree exp, enum b
-   else if (! host_integerp (len, 1) || ! tree_int_cst_lt (size, len))
-     return;
- 
--  locus = EXPR_LOCATION (exp);
--  warning (0, "%Hcall to %D will always overflow destination buffer",
--	   &locus, get_callee_fndecl (exp));
-+  warning (0, "%Kcall to %D will always overflow destination buffer",
-+	   exp, get_callee_fndecl (exp));
- }
- 
- /* Emit warning if a buffer overflow is detected at compile time
-@@ -10604,9 +10599,8 @@ maybe_emit_sprintf_chk_warning (tree exp
- 
-   if (! tree_int_cst_lt (len, size))
-     {
--      location_t locus = EXPR_LOCATION (exp);
--      warning (0, "%Hcall to %D will always overflow destination buffer",
--	       &locus, get_callee_fndecl (exp));
-+      warning (0, "%Kcall to %D will always overflow destination buffer",
-+	       exp, get_callee_fndecl (exp));
-     }
- }
- 
---- gcc/diagnostic.h.jj	2007-02-20 22:39:12.000000000 +0100
-+++ gcc/diagnostic.h	2007-09-28 22:45:58.000000000 +0200
-@@ -37,10 +37,13 @@ typedef enum
- /* A diagnostic is described by the MESSAGE to send, the FILE and LINE of
-    its context and its KIND (ice, error, warning, note, ...)  See complete
-    list in diagnostic.def.  */
--typedef struct
-+typedef struct diagnostic_info
- {
-   text_info message;
-   location_t location;
-+  /* TREE_BLOCK if the diagnostic is to be reported in some inline
-+     function inlined into other function, otherwise NULL.  */
-+  tree abstract_origin;
-   /* The kind of diagnostic it is about.  */
-   diagnostic_t kind;
-   /* Which OPT_* directly controls this diagnostic.  */
-@@ -130,13 +133,15 @@ struct diagnostic_context
- 
- /* True if the last function in which a diagnostic was reported is
-    different from the current one.  */
--#define diagnostic_last_function_changed(DC) \
--  ((DC)->last_function != current_function_decl)
-+#define diagnostic_last_function_changed(DC, DI) \
-+  ((DC)->last_function != ((DI)->abstract_origin \
-+			   ? (DI)->abstract_origin : current_function_decl))
- 
- /* Remember the current function as being the last one in which we report
-    a diagnostic.  */
--#define diagnostic_set_last_function(DC) \
--  (DC)->last_function = current_function_decl
-+#define diagnostic_set_last_function(DC, DI) \
-+  (DC)->last_function = (((DI) && (DI)->abstract_origin) \
-+			 ? (DI)->abstract_origin : current_function_decl)
- 
- /* True if the last module or file in which a diagnostic was reported is
-    different from the current one.  */
-@@ -178,7 +183,8 @@ extern diagnostic_context *global_dc;
- /* Diagnostic related functions.  */
- extern void diagnostic_initialize (diagnostic_context *);
- extern void diagnostic_report_current_module (diagnostic_context *);
--extern void diagnostic_report_current_function (diagnostic_context *);
-+extern void diagnostic_report_current_function (diagnostic_context *,
-+						diagnostic_info *);
- extern void diagnostic_report_diagnostic (diagnostic_context *,
- 					  diagnostic_info *);
- #ifdef ATTRIBUTE_GCC_DIAG
---- gcc/toplev.c.jj	2007-04-03 13:18:27.000000000 +0200
-+++ gcc/toplev.c	2007-09-28 22:45:19.000000000 +0200
-@@ -448,7 +448,7 @@ announce_function (tree decl)
- 	fprintf (stderr, " %s", lang_hooks.decl_printable_name (decl, 2));
-       fflush (stderr);
-       pp_needs_newline (global_dc->printer) = true;
--      diagnostic_set_last_function (global_dc);
-+      diagnostic_set_last_function (global_dc, (diagnostic_info *) NULL);
-     }
- }
- 
---- gcc/pretty-print.c.jj	2007-02-20 22:39:12.000000000 +0100
-+++ gcc/pretty-print.c	2007-09-28 22:45:19.000000000 +0200
-@@ -188,6 +188,7 @@ pp_base_indent (pretty_printer *pp)
-    %Ns: likewise, but length specified as constant in the format string.
-    %H: location_t.
-    %J: a decl tree, from which DECL_SOURCE_LOCATION will be recorded.
-+   %K: a statement, from which EXPR_LOCATION and TREE_BLOCK will be recorded.
-    Flag 'q': quote formatted text (must come immediately after '%').
- 
-    Arguments can be used sequentially, or through %N$ resp. *N$
-@@ -487,6 +488,33 @@ pp_base_format (pretty_printer *pp, text
- 	  }
- 	  break;
- 
-+	case 'K':
-+	  {
-+	    tree t = va_arg (*text->args_ptr, tree), block;
-+	    gcc_assert (text->locus != NULL);
-+	    *text->locus = EXPR_LOCATION (t);
-+	    gcc_assert (text->abstract_origin != NULL);
-+	    block = TREE_BLOCK (t);
-+	    *text->abstract_origin = NULL;
-+	    while (block
-+		   && TREE_CODE (block) == BLOCK
-+		   && BLOCK_ABSTRACT_ORIGIN (block))
-+	      {
-+		tree ao = BLOCK_ABSTRACT_ORIGIN (block);
-+
-+		while (TREE_CODE (ao) == BLOCK && BLOCK_ABSTRACT_ORIGIN (ao))
-+		  ao = BLOCK_ABSTRACT_ORIGIN (ao);
-+
-+		if (TREE_CODE (ao) == FUNCTION_DECL)
-+		  {
-+		    *text->abstract_origin = block;
-+		    break;
-+		  }
-+		block = BLOCK_SUPERCONTEXT (block);
-+	      }
-+	  }
-+	  break;
-+
- 	case '.':
- 	  {
- 	    int n;
---- gcc/pretty-print.h.jj	2007-02-20 22:39:12.000000000 +0100
-+++ gcc/pretty-print.h	2007-09-28 22:45:19.000000000 +0200
-@@ -36,6 +36,7 @@ typedef struct
-   va_list *args_ptr;
-   int err_no;  /* for %m */
-   location_t *locus;
-+  tree *abstract_origin;
- } text_info;
- 
- /* How often diagnostics are prefixed by their locations:
---- gcc/testsuite/lib/prune.exp.jj	2007-02-20 22:37:09.000000000 +0100
-+++ gcc/testsuite/lib/prune.exp	2007-09-28 22:45:19.000000000 +0200
-@@ -19,9 +19,10 @@
- proc prune_gcc_output { text } {
-     #send_user "Before:$text\n"
- 
--    regsub -all "(^|\n)\[^\n\]*: In ((static member )?function|member|method|(copy )?constructor|destructor|instantiation|program|subroutine|block-data) \[^\n\]*" $text "" text
-+    regsub -all "(^|\n)(\[^\n\]*: )?In ((static member )?function|member|method|(copy )?constructor|destructor|instantiation|program|subroutine|block-data) \[^\n\]*" $text "" text
-     regsub -all "(^|\n)\[^\n\]*: At (top level|global scope):\[^\n\]*" $text "" text
-     regsub -all "(^|\n)\[^\n\]*:   instantiated from \[^\n\]*" $text "" text
-+    regsub -all "(^|\n)    inlined from \[^\n\]*" $text "" text
-     regsub -all "(^|\n)collect2: ld returned \[^\n\]*" $text "" text
-     regsub -all "(^|\n)collect: re(compiling|linking)\[^\n\]*" $text "" text
-     regsub -all "(^|\n)Please submit.*instructions\[^\n\]*" $text "" text
---- gcc/cp/error.c.jj	2007-09-25 11:15:31.000000000 +0200
-+++ gcc/cp/error.c	2007-09-28 22:45:19.000000000 +0200
-@@ -2150,9 +2150,10 @@ cv_to_string (tree p, int v)
- 
- /* Langhook for print_error_function.  */
- void
--cxx_print_error_function (diagnostic_context *context, const char *file)
-+cxx_print_error_function (diagnostic_context *context, const char *file,
-+			  diagnostic_info *diagnostic)
- {
--  lhd_print_error_function (context, file);
-+  lhd_print_error_function (context, file, diagnostic);
-   pp_base_set_prefix (context->printer, file);
-   maybe_print_instantiation_context (context);
- }
-@@ -2180,23 +2181,105 @@ static void
- cp_print_error_function (diagnostic_context *context,
- 			 diagnostic_info *diagnostic)
- {
--  if (diagnostic_last_function_changed (context))
-+  if (diagnostic_last_function_changed (context, diagnostic))
-     {
-       const char *old_prefix = context->printer->prefix;
-       const char *file = LOCATION_FILE (diagnostic->location);
--      char *new_prefix = file ? file_name_as_prefix (file) : NULL;
-+      tree abstract_origin = diagnostic->abstract_origin;
-+      char *new_prefix = (file && abstract_origin == NULL)
-+			 ? file_name_as_prefix (file) : NULL;
- 
-       pp_base_set_prefix (context->printer, new_prefix);
- 
-       if (current_function_decl == NULL)
- 	pp_base_string (context->printer, "At global scope:");
-       else
--	pp_printf (context->printer, "In %s %qs:",
--		   function_category (current_function_decl),
--		   cxx_printable_name (current_function_decl, 2));
-+	{
-+	  tree fndecl, ao;
-+
-+	  if (abstract_origin)
-+	    {
-+	      ao = BLOCK_ABSTRACT_ORIGIN (abstract_origin);
-+	      while (TREE_CODE (ao) == BLOCK && BLOCK_ABSTRACT_ORIGIN (ao))
-+		ao = BLOCK_ABSTRACT_ORIGIN (ao);
-+	      gcc_assert (TREE_CODE (ao) == FUNCTION_DECL);
-+	      fndecl = ao;
-+	    }
-+	  else
-+	    fndecl = current_function_decl;
-+
-+	  pp_printf (context->printer, "In %s %qs",
-+		     function_category (fndecl),
-+		     cxx_printable_name (fndecl, 2));
-+
-+	  while (abstract_origin)
-+	    {
-+	      location_t *locus;
-+	      tree block = abstract_origin;
-+
-+	      locus = &BLOCK_SOURCE_LOCATION (block);
-+	      fndecl = NULL;
-+	      block = BLOCK_SUPERCONTEXT (block);
-+	      while (block && TREE_CODE (block) == BLOCK
-+		     && BLOCK_ABSTRACT_ORIGIN (block))
-+		{
-+		  ao = BLOCK_ABSTRACT_ORIGIN (block);
-+
-+		  while (TREE_CODE (ao) == BLOCK && BLOCK_ABSTRACT_ORIGIN (ao))
-+		    ao = BLOCK_ABSTRACT_ORIGIN (ao);
-+
-+		  if (TREE_CODE (ao) == FUNCTION_DECL)
-+		    {
-+		      fndecl = ao;
-+		      break;
-+		    }
-+		  else if (TREE_CODE (ao) != BLOCK)
-+		    break;
-+
-+		  block = BLOCK_SUPERCONTEXT (block);
-+		}
-+	      if (fndecl)
-+		abstract_origin = block;
-+	      else
-+		{
-+		  while (block && TREE_CODE (block) == BLOCK)
-+		    block = BLOCK_SUPERCONTEXT (block);
-+
-+		  if (TREE_CODE (block) == FUNCTION_DECL)
-+		    fndecl = block;
-+		  abstract_origin = NULL;
-+		}
-+	      if (fndecl)
-+		{
-+		  expanded_location s = expand_location (*locus);
-+		  pp_base_character (context->printer, ',');
-+		  pp_base_newline (context->printer);
-+		  if (s.file != NULL)
-+		    {
-+#ifdef USE_MAPPED_LOCATION
-+		      if (flag_show_column && s.column != 0)
-+			pp_printf (context->printer,
-+				   "    inlined from %qs at %s:%d:%d",
-+				   cxx_printable_name (fndecl, 2),
-+				   s.file, s.line, s.column);
-+		      else
-+#endif
-+			pp_printf (context->printer,
-+				   "    inlined from %qs at %s:%d",
-+				   cxx_printable_name (fndecl, 2),
-+				   s.file, s.line);
-+
-+		    }
-+		  else
-+		    pp_printf (context->printer, "    inlined from %qs",
-+			       cxx_printable_name (fndecl, 2));
-+		}
-+	    }
-+	  pp_base_character (context->printer, ':');
-+	}
-       pp_base_newline (context->printer);
- 
--      diagnostic_set_last_function (context);
-+      diagnostic_set_last_function (context, diagnostic);
-       pp_base_destroy_prefix (context->printer);
-       context->printer->prefix = old_prefix;
-     }
---- gcc/cp/cp-tree.h.jj	2007-09-25 11:45:25.000000000 +0200
-+++ gcc/cp/cp-tree.h	2007-09-28 22:45:19.000000000 +0200
-@@ -32,6 +32,7 @@ Boston, MA 02110-1301, USA.  */
- #include "c-common.h"
- #include "name-lookup.h"
- struct diagnostic_context;
-+struct diagnostic_info;
- 
- /* Usage of TREE_LANG_FLAG_?:
-    0: IDENTIFIER_MARKED (IDENTIFIER_NODEs)
-@@ -3832,7 +3833,8 @@ extern void cxx_print_decl			(FILE *, tr
- extern void cxx_print_type			(FILE *, tree, int);
- extern void cxx_print_identifier		(FILE *, tree, int);
- extern void cxx_print_error_function	(struct diagnostic_context *,
--						 const char *);
-+						 const char *,
-+						 struct diagnostic_info *);
- extern void build_self_reference		(void);
- extern int same_signature_p			(tree, tree);
- extern void warn_hidden				(tree);
---- gcc/c-format.c.jj	2007-09-25 12:27:55.000000000 +0200
-+++ gcc/c-format.c	2007-09-28 22:50:35.000000000 +0200
-@@ -547,7 +547,7 @@ static const format_char_info gcc_diag_c
-   { "H",   0, STD_C89, { T89_V,   BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN  }, "q",  "",   NULL },
- 
-   /* These will require a "tree" at runtime.  */
--  { "J", 0, STD_C89, { T89_V,   BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN  }, "q",    "",   NULL },
-+  { "JK",  0, STD_C89, { T89_V,   BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN  }, "q",  "",   NULL },
- 
-   { "<>'", 0, STD_C89, NOARGUMENTS, "",      "",   NULL },
-   { "m",   0, STD_C89, NOARGUMENTS, "q",     "",   NULL },
-@@ -570,7 +570,7 @@ static const format_char_info gcc_tdiag_
-   { "H",   0, STD_C89, { T89_V,   BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN  }, "q",  "",   NULL },
- 
-   /* These will require a "tree" at runtime.  */
--  { "DFJT", 0, STD_C89, { T89_V,   BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN  }, "q+", "",   NULL },
-+  { "DFJKT", 0, STD_C89, { T89_V, BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN  }, "q+", "",   NULL },
- 
-   { "<>'", 0, STD_C89, NOARGUMENTS, "",      "",   NULL },
-   { "m",   0, STD_C89, NOARGUMENTS, "q",     "",   NULL },
-@@ -593,7 +593,7 @@ static const format_char_info gcc_cdiag_
-   { "H",   0, STD_C89, { T89_V,   BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN  }, "q",  "",   NULL },
- 
-   /* These will require a "tree" at runtime.  */
--  { "DEFJT", 0, STD_C89, { T89_V,   BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN  }, "q+", "",   NULL },
-+  { "DEFJKT", 0, STD_C89, { T89_V, BADLEN, BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN  }, "q+", "",   NULL },
- 
-   { "<>'", 0, STD_C89, NOARGUMENTS, "",      "",   NULL },
-   { "m",   0, STD_C89, NOARGUMENTS, "q",     "",   NULL },
-@@ -616,7 +616,7 @@ static const format_char_info gcc_cxxdia
-   { "H",   0, STD_C89, { T89_V,   BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN  }, "q",  "",   NULL },
- 
-   /* These will require a "tree" at runtime.  */
--  { "ADEFJTV",0,STD_C89,{ T89_V,   BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN  }, "q+#",   "",   NULL },
-+  { "ADEFJKTV",0,STD_C89,{ T89_V, BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN  }, "q+#",   "",   NULL },
- 
-   /* These accept either an 'int' or an 'enum tree_code' (which is handled as an 'int'.)  */
-   { "CLOPQ",0,STD_C89, { T89_I,   BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN  }, "q",  "",   NULL },
-@@ -2601,6 +2601,9 @@ init_dynamic_diag_info (void)
- 	  i = find_char_info_specifier_index (diag_fci, 'J');
- 	  diag_fci[i].types[0].type = &t;
- 	  diag_fci[i].pointer_count = 1;
-+	  i = find_char_info_specifier_index (diag_fci, 'K');
-+	  diag_fci[i].types[0].type = &t;
-+	  diag_fci[i].pointer_count = 1;
- 	}
- 
-       /* Handle the __gcc_tdiag__ format specifics.  */
-@@ -2625,6 +2628,9 @@ init_dynamic_diag_info (void)
- 	  i = find_char_info_specifier_index (tdiag_fci, 'J');
- 	  tdiag_fci[i].types[0].type = &t;
- 	  tdiag_fci[i].pointer_count = 1;
-+	  i = find_char_info_specifier_index (tdiag_fci, 'K');
-+	  tdiag_fci[i].types[0].type = &t;
-+	  tdiag_fci[i].pointer_count = 1;
- 	}
- 
-       /* Handle the __gcc_cdiag__ format specifics.  */
-@@ -2649,6 +2655,9 @@ init_dynamic_diag_info (void)
- 	  i = find_char_info_specifier_index (cdiag_fci, 'J');
- 	  cdiag_fci[i].types[0].type = &t;
- 	  cdiag_fci[i].pointer_count = 1;
-+	  i = find_char_info_specifier_index (cdiag_fci, 'K');
-+	  cdiag_fci[i].types[0].type = &t;
-+	  cdiag_fci[i].pointer_count = 1;
- 	}
- 
-       /* Handle the __gcc_cxxdiag__ format specifics.  */
-@@ -2673,6 +2682,9 @@ init_dynamic_diag_info (void)
- 	  i = find_char_info_specifier_index (cxxdiag_fci, 'J');
- 	  cxxdiag_fci[i].types[0].type = &t;
- 	  cxxdiag_fci[i].pointer_count = 1;
-+	  i = find_char_info_specifier_index (cxxdiag_fci, 'K');
-+	  cxxdiag_fci[i].types[0].type = &t;
-+	  cxxdiag_fci[i].pointer_count = 1;
- 	}
-     }
- }
---- gcc/expr.c.jj	2007-09-25 15:19:15.000000000 +0200
-+++ gcc/expr.c	2007-09-28 22:45:19.000000000 +0200
-@@ -7512,21 +7512,21 @@ expand_expr_real_1 (tree exp, rtx target
-       /* All valid uses of __builtin_va_arg_pack () are removed during
- 	 inlining.  */
-       if (CALL_EXPR_VA_ARG_PACK (exp))
--	error ("invalid use of %<__builtin_va_arg_pack ()%>");
-+	error ("%Kinvalid use of %<__builtin_va_arg_pack ()%>", exp);
-       {
- 	tree fndecl = get_callee_fndecl (exp), attr;
- 
- 	if (fndecl
- 	    && (attr = lookup_attribute ("error",
- 					 DECL_ATTRIBUTES (fndecl))) != NULL)
--	  error ("call to %qs declared with attribute error: %s",
--		 lang_hooks.decl_printable_name (fndecl, 1),
-+	  error ("%Kcall to %qs declared with attribute error: %s",
-+		 exp, lang_hooks.decl_printable_name (fndecl, 1),
- 		 TREE_STRING_POINTER (TREE_VALUE (TREE_VALUE (attr))));
- 	if (fndecl
- 	    && (attr = lookup_attribute ("warning",
- 					 DECL_ATTRIBUTES (fndecl))) != NULL)
--	  warning (0, "call to %qs declared with attribute warning: %s",
--		   lang_hooks.decl_printable_name (fndecl, 1),
-+	  warning (0, "%Kcall to %qs declared with attribute warning: %s",
-+		   exp, lang_hooks.decl_printable_name (fndecl, 1),
- 		   TREE_STRING_POINTER (TREE_VALUE (TREE_VALUE (attr))));
- 
- 	/* Check for a built-in function.  */
---- gcc/langhooks.c.jj	2007-02-20 22:39:12.000000000 +0100
-+++ gcc/langhooks.c	2007-09-28 22:45:19.000000000 +0200
-@@ -494,12 +494,15 @@ lhd_initialize_diagnostics (struct diagn
- /* The default function to print out name of current function that caused
-    an error.  */
- void
--lhd_print_error_function (diagnostic_context *context, const char *file)
-+lhd_print_error_function (diagnostic_context *context, const char *file,
-+			  diagnostic_info *diagnostic)
- {
--  if (diagnostic_last_function_changed (context))
-+  if (diagnostic_last_function_changed (context, diagnostic))
-     {
-       const char *old_prefix = context->printer->prefix;
--      char *new_prefix = file ? file_name_as_prefix (file) : NULL;
-+      tree abstract_origin = diagnostic->abstract_origin;
-+      char *new_prefix = (file && abstract_origin == NULL)
-+			 ? file_name_as_prefix (file) : NULL;
- 
-       pp_set_prefix (context->printer, new_prefix);
- 
-@@ -507,17 +510,95 @@ lhd_print_error_function (diagnostic_con
- 	pp_printf (context->printer, _("At top level:"));
-       else
- 	{
--	  if (TREE_CODE (TREE_TYPE (current_function_decl)) == METHOD_TYPE)
-+	  tree fndecl, ao;
-+
-+	  if (abstract_origin)
-+	    {
-+	      ao = BLOCK_ABSTRACT_ORIGIN (abstract_origin);
-+	      while (TREE_CODE (ao) == BLOCK && BLOCK_ABSTRACT_ORIGIN (ao))
-+		ao = BLOCK_ABSTRACT_ORIGIN (ao);
-+	      gcc_assert (TREE_CODE (ao) == FUNCTION_DECL);
-+	      fndecl = ao;
-+	    }
-+	  else
-+	    fndecl = current_function_decl;
-+
-+	  if (TREE_CODE (TREE_TYPE (fndecl)) == METHOD_TYPE)
- 	    pp_printf
--	      (context->printer, _("In member function %qs:"),
--	       lang_hooks.decl_printable_name (current_function_decl, 2));
-+	      (context->printer, _("In member function %qs"),
-+	       lang_hooks.decl_printable_name (fndecl, 2));
- 	  else
- 	    pp_printf
--	      (context->printer, _("In function %qs:"),
--	       lang_hooks.decl_printable_name (current_function_decl, 2));
-+	      (context->printer, _("In function %qs"),
-+	       lang_hooks.decl_printable_name (fndecl, 2));
-+
-+	  while (abstract_origin)
-+	    {
-+	      location_t *locus;
-+	      tree block = abstract_origin;
-+
-+	      locus = &BLOCK_SOURCE_LOCATION (block);
-+	      fndecl = NULL;
-+	      block = BLOCK_SUPERCONTEXT (block);
-+	      while (block && TREE_CODE (block) == BLOCK
-+		     && BLOCK_ABSTRACT_ORIGIN (block))
-+		{
-+		  ao = BLOCK_ABSTRACT_ORIGIN (block);
-+
-+		  while (TREE_CODE (ao) == BLOCK && BLOCK_ABSTRACT_ORIGIN (ao))
-+		    ao = BLOCK_ABSTRACT_ORIGIN (ao);
-+
-+		  if (TREE_CODE (ao) == FUNCTION_DECL)
-+		    {
-+		      fndecl = ao;
-+		      break;
-+		    }
-+		  else if (TREE_CODE (ao) != BLOCK)
-+		    break;
-+
-+		  block = BLOCK_SUPERCONTEXT (block);
-+		}
-+	      if (fndecl)
-+		abstract_origin = block;
-+	      else
-+		{
-+		  while (block && TREE_CODE (block) == BLOCK)
-+		    block = BLOCK_SUPERCONTEXT (block);
-+
-+		  if (TREE_CODE (block) == FUNCTION_DECL)
-+		    fndecl = block;
-+		  abstract_origin = NULL;
-+		}
-+	      if (fndecl)
-+		{
-+		  expanded_location s = expand_location (*locus);
-+		  pp_character (context->printer, ',');
-+		  pp_newline (context->printer);
-+		  if (s.file != NULL)
-+		    {
-+#ifdef USE_MAPPED_LOCATION
-+		      if (flag_show_column && s.column != 0)
-+			pp_printf (context->printer,
-+				   _("    inlined from %qs at %s:%d:%d"),
-+				   lang_hooks.decl_printable_name (fndecl, 2),
-+				   s.file, s.line, s.column);
-+		      else
-+#endif
-+			pp_printf (context->printer,
-+				   _("    inlined from %qs at %s:%d"),
-+				   lang_hooks.decl_printable_name (fndecl, 2),
-+				   s.file, s.line);
-+
-+		    }
-+		  else
-+		    pp_printf (context->printer, _("    inlined from %qs"),
-+			       lang_hooks.decl_printable_name (fndecl, 2));
-+		}
-+	    }
-+	  pp_character (context->printer, ':');
- 	}
- 
--      diagnostic_set_last_function (context);
-+      diagnostic_set_last_function (context, diagnostic);
-       pp_flush (context->printer);
-       context->printer->prefix = old_prefix;
-       free ((char*) new_prefix);
---- gcc/langhooks.h.jj	2007-02-20 22:39:12.000000000 +0100
-+++ gcc/langhooks.h	2007-09-28 22:45:19.000000000 +0200
-@@ -24,6 +24,7 @@ Boston, MA 02110-1301, USA.  */
- /* This file should be #include-d after tree.h.  */
- 
- struct diagnostic_context;
-+struct diagnostic_info;
- 
- struct gimplify_omp_ctx;
- 
-@@ -391,7 +392,8 @@ struct lang_hooks
-   tree (*lang_get_callee_fndecl) (tree);
- 
-   /* Called by report_error_function to print out function name.  */
--  void (*print_error_function) (struct diagnostic_context *, const char *);
-+  void (*print_error_function) (struct diagnostic_context *, const char *,
-+				struct diagnostic_info *);
- 
-   /* Called from expr_size to calculate the size of the value of an
-      expression in a language-dependent way.  Returns a tree for the size
---- gcc/langhooks-def.h.jj	2007-02-20 22:39:13.000000000 +0100
-+++ gcc/langhooks-def.h	2007-09-28 22:45:19.000000000 +0200
-@@ -25,6 +25,7 @@ Boston, MA 02110-1301, USA.  */
- #include "hooks.h"
- 
- struct diagnostic_context;
-+struct diagnostic_info;
- 
- /* Provide a hook routine for alias sets that always returns 1.  This is
-    used by languages that haven't deal with alias sets yet.  */
-@@ -57,7 +58,7 @@ extern int lhd_types_compatible_p (tree,
- extern rtx lhd_expand_expr (tree, rtx, enum machine_mode, int, rtx *);
- extern int lhd_expand_decl (tree);
- extern void lhd_print_error_function (struct diagnostic_context *,
--				      const char *);
-+				      const char *, struct diagnostic_info *);
- extern void lhd_set_decl_assembler_name (tree);
- extern bool lhd_can_use_bit_fields_p (void);
- extern bool lhd_warn_unused_global_decl (tree);

diff --git a/gcc41.spec b/gcc41.spec
deleted file mode 100644
index ba32978..0000000
--- a/gcc41.spec
+++ /dev/null
@@ -1,3078 +0,0 @@
-%define DATE 20071124
-%define gcc_version 4.1.2
-%define gcc_release 36
-%define _unpackaged_files_terminate_build 0
-%define multilib_64_archs sparc64 ppc64 s390x x86_64
-%define include_gappletviewer 1
-%ifarch %{ix86} x86_64 ia64 ppc alpha
-%define build_ada 1
-%else
-%define build_ada 0
-%endif
-%define build_java 1
-# If you don't have already a usable gcc-java and libgcj for your arch,
-# do on some arch which has it rpmbuild -bc --with java_tar gcc41.spec
-# which creates libjava-classes-%{version}-%{release}.tar.bz2
-# With this then on the new arch do rpmbuild -ba -v --with java_bootstrap gcc41.spec
-%define bootstrap_java %{?_with_java_bootstrap:%{build_java}}%{!?_with_java_bootstrap:0}
-%define build_java_tar %{?_with_java_tar:%{build_java}}%{!?_with_java_tar:0}
-%ifarch s390x
-%define multilib_32_arch s390
-%endif
-%ifarch sparc64
-%define multilib_32_arch sparc
-%endif
-%ifarch ppc64
-%define multilib_32_arch ppc
-%endif
-%ifarch x86_64
-%define multilib_32_arch i386
-%endif
-Summary: Various compilers (C, C++, Objective-C, Java, ...)
-Name: gcc
-Version: %{gcc_version}
-Release: %{gcc_release}
-# libgcc, libgfortran, libmudflap and crtstuff have an exception which allows
-# linking it into any kind of programs or shared libraries without
-# restrictions.
-License: GPLv2+ and GPLv2+ with exceptions
-Group: Development/Languages
-Source0: gcc-%{version}-%{DATE}.tar.bz2
-Source1: libgcc_post_upgrade.c
-Source2: README.libgcjwebplugin.so
-Source3: protoize.1
-URL: http://gcc.gnu.org
-BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root
-# Need binutils with -pie support >= 2.14.90.0.4-4
-# Need binutils which can omit dot symbols and overlap .opd on ppc64 >= 2.15.91.0.2-4
-# Need binutils which handle -msecure-plt on ppc >= 2.16.91.0.2-2
-# Need binutils which support .weakref >= 2.16.91.0.3-1
-# Need binutils which support --hash-style=gnu >= 2.17.50.0.2-7
-# Need binutils which support mffgpr and mftgpr >= 2.17.50.0.2-8
-# Need binutils which support --build-id >= 2.17.50.0.17-3
-BuildRequires: binutils >= 2.17.50.0.17-3
-BuildRequires: zlib-devel, gettext, dejagnu, bison, flex, texinfo, sharutils
-%if %{build_java}
-BuildRequires: /usr/share/java/eclipse-ecj.jar, zip, unzip
-%if %{bootstrap_java}
-Source10: libjava-classes-%{version}-%{release}.tar.bz2
-%else
-BuildRequires: gcc-java, libgcj
-%endif
-%endif
-# Make sure pthread.h doesn't contain __thread tokens
-# Make sure glibc supports stack protector
-# Make sure glibc supports DT_GNU_HASH
-BuildRequires: glibc-devel >= 2.4.90-13
-BuildRequires: elfutils-devel >= 0.72
-%ifarch ppc ppc64 s390 s390x sparc sparcv9 alpha
-# Make sure glibc supports TFmode long double
-BuildRequires: glibc >= 2.3.90-35
-%endif
-%ifarch %{multilib_64_archs} sparc ppc
-# Ensure glibc{,-devel} is installed for both multilib arches
-BuildRequires: /lib/libc.so.6 /usr/lib/libc.so /lib64/libc.so.6 /usr/lib64/libc.so
-%endif
-%if %{build_ada}
-# Ada requires Ada to build
-BuildRequires: gcc-gnat >= 3.1, libgnat >= 3.1
-%endif
-%ifarch ia64
-BuildRequires: libunwind >= 0.98
-%endif
-Requires: cpp = %{version}-%{release}
-# Need .eh_frame ld optimizations
-# Need proper visibility support
-# Need -pie support
-# Need --as-needed/--no-as-needed support
-# On ppc64, need omit dot symbols support and --non-overlapping-opd
-# Need binutils that owns /usr/bin/c++filt
-# Need binutils that support .weakref
-# Need binutils that supports --hash-style=gnu
-# Need binutils that support mffgpr/mftgpr
-# Need binutils that support --build-id
-Requires: binutils >= 2.17.50.0.17-3
-# Make sure gdb will understand DW_FORM_strp
-Conflicts: gdb < 5.1-2
-Requires: glibc-devel >= 2.2.90-12
-%ifarch ppc ppc64 s390 s390x sparc sparcv9 alpha
-# Make sure glibc supports TFmode long double
-Requires: glibc >= 2.3.90-35
-%endif
-Requires: libgcc >= %{version}-%{release}
-Requires: libgomp = %{version}-%{release}
-Obsoletes: gcc3
-Obsoletes: egcs
-%ifarch sparc
-Obsoletes: gcc-sparc32
-Obsoletes: gcc-c++-sparc32
-%endif
-%ifarch ppc
-Obsoletes: gcc-ppc32
-Obsoletes: gcc-c++-ppc32
-%endif
-Obsoletes: gcc-chill
-%if !%{build_ada}
-Obsoletes: gcc-gnat < %{version}-%{release}
-Obsoletes: libgnat < %{version}-%{release}
-%endif
-%ifarch sparc sparc64
-Obsoletes: egcs64
-%endif
-Obsoletes: gcc34
-Obsoletes: gcc35
-Obsoletes: gcc4
-Prereq: /sbin/install-info
-AutoReq: true
-
-Patch1: gcc41-ice-hack.patch
-Patch2: gcc41-ppc64-m32-m64-multilib-only.patch
-Patch3: gcc41-ia64-libunwind.patch
-Patch4: gcc41-gnuc-rh-release.patch
-Patch5: gcc41-java-nomulti.patch
-Patch6: gcc41-ada-pr18302.patch
-Patch7: gcc41-ada-tweaks.patch
-Patch8: gcc41-java-slow_pthread_self.patch
-Patch9: gcc41-ppc32-retaddr.patch
-Patch10: gcc41-dsohandle.patch
-Patch11: gcc41-rh184446.patch
-Patch12: gcc41-pr20297-test.patch
-Patch13: gcc41-hash-style-gnu.patch
-Patch14: gcc41-java-libdotdotlib.patch
-Patch15: gcc41-pr28755.patch
-Patch16: gcc41-pr27898.patch
-Patch17: gcc41-java-bogus-debugline.patch
-Patch18: gcc41-libjava-visibility.patch
-Patch19: gcc41-pr32139.patch
-Patch20: gcc41-rh236895.patch
-Patch21: gcc41-rh235008.patch
-Patch22: gcc41-build-id.patch
-Patch23: gcc41-pr28690.patch
-Patch24: gcc41-rh247256.patch
-Patch25: gcc41-ppc64-ia64-GNU-stack.patch
-Patch26: gcc41-pr33506.patch
-Patch27: gcc41-artificial-attrib.patch
-Patch28: gcc41-error-attrib.patch
-Patch29: gcc41-jdwp.patch
-Patch30: gcc41-pr20880.patch
-Patch31: gcc41-pr32694.patch
-Patch32: gcc41-virtual-inline-backtrace.patch
-Patch33: gcc41-c++-gnu-inline-redecl.patch
-Patch34: gcc41-c++-builtin-redecl.patch
-Patch35: gcc41-c++-guard-visibility.patch
-Patch36: gcc41-pr32121.patch
-Patch37: gcc41-pr33136.patch
-Patch38: gcc41-pr33238.patch
-Patch39: gcc41-pr33619.patch
-Patch40: gcc41-pr33639.patch
-Patch42: gcc41-pr33763.patch
-Patch43: gcc41-rh317051.patch
-Patch44: gcc41-rh330771.patch
-Patch45: gcc41-rh341221.patch
-Patch47: gcc41-java-arm1.patch
-Patch48: gcc41-java-arm2.patch
-Patch49: gcc41-java-arm3.patch
-Patch50: gcc41-java-arm4.patch
-Patch51: gcc41-java-arm5.patch
-Patch52: gcc41-java-arm6.patch
-Patch53: gcc41-java-arm7.patch
-Patch54: gcc41-java-arm8.patch
-Patch55: gcc41-pr23848.patch
-Patch56: gcc41-pr29225.patch
-Patch57: gcc41-pr29712.patch
-Patch58: gcc41-pr30293.patch
-Patch59: gcc41-pr30988.patch
-Patch60: gcc41-pr32241.patch
-Patch61: gcc41-pr32384.patch
-Patch62: gcc41-pr33501.patch
-Patch63: gcc41-pr33516.patch
-Patch64: gcc41-pr33537.patch
-Patch65: gcc41-pr33616.patch
-Patch66: gcc41-pr33723.patch
-Patch67: gcc41-pr33836.patch
-Patch68: gcc41-pr33842.patch
-Patch69: gcc41-pr33844.patch
-Patch70: gcc41-pr33962.patch
-Patch71: gcc41-pr34070.patch
-Patch72: gcc41-pr34089.patch
-Patch73: gcc41-pr34178.patch
-Patch74: gcc41-pr34130.patch
-Patch75: gcc41-pr34146.patch
-Patch76: gcc41-rh364001.patch
-Patch77: gcc41-pr34213.patch
-Patch78: gcc41-pr34364.patch
-Patch79: gcc41-pr34275.patch
-Patch80: gcc41-rh407281.patch
-Patch81: gcc41-pr34394.patch
-Patch82: gcc41-debug-fortran-array.patch
-Patch83: gcc41-omp-outer-ctx.patch
-
-# On ARM EABI systems, we do want -gnueabi to be part of the
-# target triple.
-%ifnarch %{arm}
-%define _gnu %{nil}
-%endif
-%ifarch sparc
-%define gcc_target_platform sparc64-%{_vendor}-%{_target_os}
-%endif
-%ifarch ppc
-%define gcc_target_platform ppc64-%{_vendor}-%{_target_os}
-%endif
-%ifnarch sparc ppc
-%define gcc_target_platform %{_target_platform}
-%endif
-
-%description
-The gcc package contains the GNU Compiler Collection version 4.1.
-You'll need this package in order to compile C code.
-
-%package -n libgcc
-Summary: GCC version 4.1 shared support library
-Group: System Environment/Libraries
-Autoreq: false
-
-%description -n libgcc
-This package contains GCC shared support library which is needed
-e.g. for exception handling support.
-
-%package c++
-Summary: C++ support for GCC
-Group: Development/Languages
-Requires: gcc = %{version}-%{release}
-Requires: libstdc++ = %{version}-%{release}
-Requires: libstdc++-devel = %{version}-%{release}
-Obsoletes: gcc3-c++
-Obsoletes: gcc34-c++
-Obsoletes: gcc35-c++
-Obsoletes: gcc4-c++
-Autoreq: true
-
-%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.
-
-%package -n libstdc++
-Summary: GNU Standard C++ Library
-Group: System Environment/Libraries
-Obsoletes: libstdc++3
-Obsoletes: libstdc++34
-Autoreq: true
-
-%description -n libstdc++
-The libstdc++ package contains a rewritten standard compliant GCC Standard
-C++ Library.
-
-%package -n libstdc++-devel
-Summary: Header files and libraries for C++ development
-Group: Development/Libraries
-Requires: libstdc++ = %{version}-%{release}, %{_prefix}/%{_lib}/libstdc++.so.6
-Obsoletes: libstdc++3-devel
-Obsoletes: libstdc++34-devel
-Autoreq: true
-
-%description -n libstdc++-devel
-This is the GNU implementation of the standard C++ libraries.  This
-package includes the header files and libraries needed for C++
-development. This includes rewritten implementation of STL.
-
-%package objc
-Summary: Objective-C support for GCC
-Group: Development/Languages
-Requires: gcc = %{version}-%{release}
-Requires: libobjc = %{version}-%{release}
-Obsoletes: gcc3-objc
-Autoreq: true
-
-%description objc
-gcc-objc provides Objective-C support for the GCC.
-Mainly used on systems running NeXTSTEP, Objective-C is an
-object-oriented derivative of the C language.
-
-%package objc++
-Summary: Objective-C++ support for GCC
-Group: Development/Languages
-Requires: gcc-c++ = %{version}-%{release}, gcc-objc = %{version}-%{release}
-Autoreq: true
-
-%description objc++
-gcc-objc++ package provides Objective-C++ support for the GCC.
-
-%package -n libobjc
-Summary: Objective-C runtime
-Group: System Environment/Libraries
-Autoreq: true
-
-%description -n libobjc
-This package contains Objective-C shared library which is needed to run
-Objective-C dynamically linked programs.
-
-%package gfortran
-Summary: Fortran 95 support
-Group: Development/Languages
-Requires: gcc = %{version}-%{release}
-Requires: libgfortran = %{version}-%{release}
-BuildRequires: gmp-devel >= 4.1.2-8, mpfr-devel >= 2.2.1
-Prereq: /sbin/install-info
-Obsoletes: gcc3-g77
-Obsoletes: gcc-g77
-Obsoletes: gcc4-gfortran
-Autoreq: true
-
-%description gfortran
-The gcc-gfortran package provides support for compiling Fortran 95
-programs with the GNU Compiler Collection.
-
-%package -n libgfortran
-Summary: Fortran 95 runtime
-Group: System Environment/Libraries
-Obsoletes: libf2c
-Autoreq: true
-
-%description -n libgfortran
-This package contains Fortran 95 shared library which is needed to run
-Fortran 95 dynamically linked programs.
-
-%package -n libgomp
-Summary: GCC OpenMP 2.5 shared support library
-Group: System Environment/Libraries
-
-%description -n libgomp
-This package contains GCC shared support library which is needed
-for OpenMP 2.5 support.
-
-%package -n libmudflap
-Summary: GCC mudflap shared support library
-Group: System Environment/Libraries
-
-%description -n libmudflap
-This package contains GCC shared support library which is needed
-for mudflap support.
-
-%package -n libmudflap-devel
-Summary: GCC mudflap support
-Group: Development/Libraries
-Requires: libmudflap = %{version}-%{release}
-Requires: gcc = %{version}-%{release}
-
-%description -n libmudflap-devel
-This package contains headers and static libraries for building
-mudflap-instrumented programs.
-
-To instrument a non-threaded program, add -fmudflap
-option to GCC and when linking add -lmudflap, for threaded programs
-also add -fmudflapth and -lmudflapth.
-
-%package java
-Summary: Java support for GCC
-Group: Development/Languages
-Requires: gcc = %{version}-%{release}
-Requires: libgcj = %{version}-%{release}
-Requires: libgcj-devel = %{version}-%{release}
-Requires: /usr/share/java/eclipse-ecj.jar
-Obsoletes: gcc3-java
-Obsoletes: gcc34-java
-Obsoletes: gcc35-java
-Obsoletes: gcc4-java
-Prereq: /sbin/install-info
-Autoreq: true
-
-%description java
-This package adds support for compiling Java(tm) programs and
-bytecode into native code.
-
-%package -n libgcj
-Summary: Java runtime library for gcc
-Group: System Environment/Libraries
-Prereq: /sbin/install-info
-Requires: zip >= 2.1
-Requires: gtk2 >= 2.4.0
-Requires: glib2 >= 2.4.0
-Requires: libart_lgpl >= 2.1.0
-%if %{build_java}
-BuildRequires: gtk2-devel >= 2.4.0
-BuildRequires: glib2-devel >= 2.4.0
-BuildRequires: firefox-devel
-BuildRequires: libart_lgpl-devel >= 2.1.0
-BuildRequires: alsa-lib-devel
-BuildRequires: libXtst-devel
-BuildRequires: libXt-devel
-%endif
-Obsoletes: gcc-libgcj
-Obsoletes: libgcj3
-Obsoletes: libgcj34
-Obsoletes: libgcj4
-Autoreq: true
-
-%description -n libgcj
-The Java(tm) runtime library. You will need this package to run your Java
-programs compiled using the Java compiler from GNU Compiler Collection (gcj).
-
-%package -n libgcj-devel
-Summary: Libraries for Java development using GCC
-Group: Development/Languages
-Requires: libgcj = %{version}-%{release}, %{_prefix}/%{_lib}/libgcj.so.8rh
-Requires: zlib-devel, %{_prefix}/%{_lib}/libz.so
-Requires: /bin/awk
-Obsoletes: libgcj3-devel
-Obsoletes: libgcj34-devel
-Obsoletes: libgcj4-devel
-Autoreq: false
-Autoprov: false
-
-%description -n libgcj-devel
-The Java(tm) static libraries and C header files. You will need this
-package to compile your Java programs using the GCC Java compiler (gcj).
-
-%package -n libgcj-src
-Summary: Java library sources from GCC4 preview
-Group: System Environment/Libraries
-Requires: libgcj = %{version}-%{release}
-Obsoletes: libgcj4-src
-Autoreq: true
-
-%description -n libgcj-src
-The Java(tm) runtime library sources for use in Eclipse.
-
-%package -n cpp
-Summary: The C Preprocessor.
-Group: Development/Languages
-Prereq: /sbin/install-info
-%ifarch ia64
-Obsoletes: gnupro
-%endif
-Autoreq: true
-
-%description -n cpp
-Cpp is the GNU C-Compatible Compiler Preprocessor.
-Cpp is a macro processor which is used automatically
-by the C compiler to transform your program before actual
-compilation. It is called a macro processor because it allows
-you to define macros, abbreviations for longer
-constructs.
-
-The C preprocessor provides four separate functionalities: the
-inclusion of header files (files of declarations that can be
-substituted into your program); macro expansion (you can define macros,
-and the C preprocessor will replace the macros with their definitions
-throughout the program); conditional compilation (using special
-preprocessing directives, you can include or exclude parts of the
-program according to various conditions); and line control (if you use
-a program to combine or rearrange source files into an intermediate
-file which is then compiled, you can use line control to inform the
-compiler about where each source line originated).
-
-You should install this package if you are a C programmer and you use
-macros.
-
-%package gnat
-Summary: Ada 95 support for GCC
-Group: Development/Languages
-Requires: gcc = %{version}-%{release}, libgnat = %{version}-%{release}
-Obsoletes: gnat-devel, gcc3-gnat
-Prereq: /sbin/install-info
-Autoreq: true
-
-%description gnat
-GNAT is a GNU Ada 95 front-end to GCC. This package includes development tools,
-the documents and Ada 95 compiler.
-
-%package -n libgnat
-Summary: GNU Ada 95 runtime shared libraries
-Group: System Environment/Libraries
-Obsoletes: gnat libgnat3
-Autoreq: true
-
-%description -n libgnat
-GNAT is a GNU Ada 95 front-end to GCC. This package includes shared libraries,
-which are required to run programs compiled with the GNAT.
-
-%prep
-%setup -q -n gcc-%{version}-%{DATE}
-%patch1 -p0 -b .ice-hack~
-%patch2 -p0 -b .ppc64-m32-m64-multilib-only~
-%patch3 -p0 -b .ia64-libunwind~
-%patch4 -p0 -b .gnuc-rh-release~
-%patch5 -p0 -b .java-nomulti~
-%patch6 -p0 -b .ada-pr18302~
-%patch7 -p0 -b .ada-tweaks~
-%patch8 -p0 -b .java-slow_pthread_self~
-%patch9 -p0 -b .ppc32-retaddr~
-%patch10 -p0 -b .dsohandle~
-%patch11 -p0 -b .rh184446~
-%patch12 -p0 -E -b .pr20297-test~
-%patch13 -p0 -b .hash-style-gnu~
-%patch14 -p0 -b .java-libdotdotlib~
-%patch15 -p0 -b .pr28755~
-%patch16 -p0 -b .pr27898~
-%patch17 -p0 -b .java-bogus-debugline~
-%patch18 -p0 -b .libjava-visibility~
-%patch19 -p0 -b .pr32139~
-%patch20 -p0 -b .rh236895~
-%patch21 -p0 -b .rh235008~
-%patch22 -p0 -b .build-id~
-%patch23 -p0 -b .pr28690~
-%patch24 -p0 -b .rh247256~
-%patch25 -p0 -b .ppc64-ia64-GNU-stack~
-%patch26 -p0 -b .pr33506~
-%patch27 -p0 -b .artificial-attrib~
-%patch28 -p0 -b .error-attrib~
-%patch29 -p0 -b .jdwp~
-%patch30 -p0 -b .pr20880~
-%patch31 -p0 -b .pr32694~
-%patch32 -p0 -b .virtual-inline-backtrace~
-%patch33 -p0 -b .c++-gnu-inline-redecl~
-%patch34 -p0 -b .c++-builtin-redecl~
-%patch35 -p0 -b .c++-guard-visibility~
-%patch36 -p0 -b .pr32121~
-%patch37 -p0 -b .pr33136~
-%patch38 -p0 -b .pr33238~
-%patch39 -p0 -b .pr33619~
-%patch40 -p0 -b .pr33639~
-%patch42 -p0 -b .pr33763~
-%patch43 -p0 -b .rh317051~
-%patch44 -p0 -b .rh330771~
-%patch45 -p0 -b .rh341221~
-%patch47 -p0 -b .java-arm1~
-%patch48 -p0 -b .java-arm2~
-%patch49 -p0 -b .java-arm3~
-%patch50 -p0 -b .java-arm4~
-%patch51 -p0 -b .java-arm5~
-%patch52 -p0 -b .java-arm6~
-%patch53 -p0 -b .java-arm7~
-%patch54 -p0 -b .java-arm8~
-%patch55 -p0 -b .pr23848~
-%patch56 -p0 -b .pr29225~
-%patch57 -p0 -b .pr29712~
-%patch58 -p0 -b .pr30293~
-%patch59 -p0 -b .pr30988~
-%patch60 -p0 -b .pr32241~
-%patch61 -p0 -b .pr32384~
-%patch62 -p0 -b .pr33501~
-%patch63 -p0 -b .pr33516~
-%patch64 -p0 -b .pr33537~
-%patch65 -p0 -b .pr33616~
-%patch66 -p0 -b .pr33723~
-%patch67 -p0 -b .pr33836~
-%patch68 -p0 -b .pr33842~
-%patch69 -p0 -b .pr33844~
-%patch70 -p0 -b .pr33962~
-%patch71 -p0 -b .pr34070~
-%patch72 -p0 -b .pr34089~
-%patch73 -p0 -b .pr34178~
-%patch74 -p0 -b .pr34130~
-%patch75 -p0 -b .pr34146~
-%patch76 -p0 -b .rh364001~
-%patch77 -p0 -b .pr34213~
-%patch78 -p0 -b .pr34364~
-%patch79 -p0 -b .pr34275~
-%patch80 -p0 -b .rh407281~
-%patch81 -p0 -b .pr34394~
-%patch82 -p0 -b .debug-fortran-array~
-%patch83 -p0 -b .omp-outer-ctx~
-
-%if %{bootstrap_java}
-tar xjf %{SOURCE10}
-%endif
-
-sed -i -e 's/4\.1\.3/4.1.2/' gcc/BASE-VER gcc/version.c
-sed -i -e 's/" (Red Hat[^)]*)"/" (Red Hat %{version}-%{gcc_release})"/' gcc/version.c
-
-cp -a libstdc++-v3/config/cpu/i{4,3}86/atomicity.h
-
-# Hack to avoid building multilib libjava
-perl -pi -e 's/^all: all-redirect/ifeq (\$(MULTISUBDIR),)\nall: all-redirect\nelse\nall:\n\techo Multilib libjava build disabled\nendif/' libjava/Makefile.in
-perl -pi -e 's/^install: install-redirect/ifeq (\$(MULTISUBDIR),)\ninstall: install-redirect\nelse\ninstall:\n\techo Multilib libjava install disabled\nendif/' libjava/Makefile.in
-perl -pi -e 's/^check: check-redirect/ifeq (\$(MULTISUBDIR),)\ncheck: check-redirect\nelse\ncheck:\n\techo Multilib libjava check disabled\nendif/' libjava/Makefile.in
-perl -pi -e 's/^all: all-recursive/ifeq (\$(MULTISUBDIR),)\nall: all-recursive\nelse\nall:\n\techo Multilib libjava build disabled\nendif/' libjava/Makefile.in
-perl -pi -e 's/^install: install-recursive/ifeq (\$(MULTISUBDIR),)\ninstall: install-recursive\nelse\ninstall:\n\techo Multilib libjava install disabled\nendif/' libjava/Makefile.in
-perl -pi -e 's/^check: check-recursive/ifeq (\$(MULTISUBDIR),)\ncheck: check-recursive\nelse\ncheck:\n\techo Multilib libjava check disabled\nendif/' libjava/Makefile.in
-
-./contrib/gcc_update --touch
-
-%ifarch ppc
-if [ -d libstdc++-v3/config/abi/powerpc64-linux-gnu ]; then
-  mkdir -p libstdc++-v3/config/abi/powerpc64-linux-gnu/64
-  mv libstdc++-v3/config/abi/powerpc64-linux-gnu/{,64/}baseline_symbols.txt
-  mv libstdc++-v3/config/abi/powerpc64-linux-gnu/{32/,}baseline_symbols.txt
-  rm -rf libstdc++-v3/config/abi/powerpc64-linux-gnu/32
-fi
-%endif
-%ifarch sparc
-if [ -d libstdc++-v3/config/abi/sparc64-linux-gnu ]; then
-  mkdir -p libstdc++-v3/config/abi/sparc64-linux-gnu/64
-  mv libstdc++-v3/config/abi/sparc64-linux-gnu/{,64/}baseline_symbols.txt
-  mv libstdc++-v3/config/abi/sparc64-linux-gnu/{32/,}baseline_symbols.txt
-  rm -rf libstdc++-v3/config/abi/sparc64-linux-gnu/32
-fi
-%endif
-
-%build
-
-rm -fr obj-%{gcc_target_platform}
-mkdir obj-%{gcc_target_platform}
-cd obj-%{gcc_target_platform}
-
-if [ ! -f /usr/lib/locale/de_DE/LC_CTYPE ]; then
-  mkdir locale
-  localedef -f ISO-8859-1 -i de_DE locale/de_DE
-  export LOCPATH=`pwd`/locale:/usr/lib/locale
-fi
-
-%if %{build_java}
-%if !%{bootstrap_java}
-# If we don't have gjavah in $PATH, try to build it with the old gij
-mkdir java_hacks
-cd java_hacks
-if [ ! -x /usr/bin/gjavah ]; then
-  cp -a ../../libjava/classpath/tools/external external
-  mkdir -p gnu/classpath/tools
-  cp -a ../../libjava/classpath/tools/gnu/classpath/tools/{common,javah,getopt} gnu/classpath/tools/
-  cp -a ../../libjava/classpath/resource/gnu/classpath/tools/common/Messages.properties gnu/classpath/tools/common
-  cd external/asm; for i in `find . -name \*.java`; do gcj --encoding ISO-8859-1 -C $i -I.; done; cd ../..
-  for i in `find gnu -name \*.java`; do gcj -C $i -I. -Iexternal/asm/; done
-  gcj -findirect-dispatch -O2 -fmain=gnu.classpath.tools.javah.Main -I. -Iexternal/asm/ `find . -name \*.class` -o gjavah.real
-  cat > gjavah <<EOF
-#!/bin/sh
-export CLASSPATH=`pwd`${CLASSPATH:+:$CLASSPATH}
-exec `pwd`/gjavah.real "\$@"
-EOF
-  chmod +x `pwd`/gjavah
-fi
-cat > ecj1 <<EOF
-#!/bin/sh
-exec gij -cp /usr/share/java/eclipse-ecj.jar org.eclipse.jdt.internal.compiler.batch.GCCMain "\$@"
-EOF
-chmod +x `pwd`/ecj1
-export PATH=`pwd`${PATH:+:$PATH}
-cd ..
-%endif
-%endif
-
-CC=gcc
-OPT_FLAGS=`echo $RPM_OPT_FLAGS|sed -e 's/\(-Wp,\)\?-D_FORTIFY_SOURCE=[12]//g'`
-OPT_FLAGS=`echo $OPT_FLAGS|sed -e 's/-m64//g;s/-m32//g;s/-m31//g'`
-%ifarch sparc sparc64
-OPT_FLAGS=`echo $OPT_FLAGS|sed -e 's/-mcpu=ultrasparc/-mtune=ultrasparc/g;s/-mcpu=v[78]//g'`
-%endif
-%ifarch sparc64
-cat > gcc64 <<"EOF"
-#!/bin/sh
-exec /usr/bin/gcc -m64 "$@"
-EOF
-chmod +x gcc64
-CC=`pwd`/gcc64
-%endif
-%ifarch ppc64
-if gcc -m64 -xc -S /dev/null -o - > /dev/null 2>&1; then
-  cat > gcc64 <<"EOF"
-#!/bin/sh
-exec /usr/bin/gcc -m64 "$@"
-EOF
-  chmod +x gcc64
-  CC=`pwd`/gcc64
-fi
-%endif
-OPT_FLAGS=`echo "$OPT_FLAGS" | sed -e 's/[[:blank:]]\+/ /g'`
-case "$OPT_FLAGS" in
-  *-fasynchronous-unwind-tables*)
-    sed -i -e 's/-fno-exceptions /-fno-exceptions -fno-asynchronous-unwind-tables/' \
-      ../gcc/Makefile.in
-    ;;
-esac
-CC="$CC" CFLAGS="$OPT_FLAGS" CXXFLAGS="$OPT_FLAGS" XCFLAGS="$OPT_FLAGS" TCFLAGS="$OPT_FLAGS" \
-	GCJFLAGS="$OPT_FLAGS" \
-	../configure --prefix=%{_prefix} --mandir=%{_mandir} --infodir=%{_infodir} \
-	--enable-shared --enable-threads=posix --enable-checking=release \
-	--with-system-zlib --enable-__cxa_atexit --disable-libunwind-exceptions \
-%if !%{build_ada}
-	--enable-languages=c,c++,objc,obj-c++,java,fortran \
-%else
-	--enable-languages=c,c++,objc,obj-c++,java,fortran,ada \
-%endif
-%if !%{build_java}
-	--disable-libgcj \
-%else
-	--enable-java-awt=gtk --disable-dssi --enable-plugin \
-	--with-java-home=%{_prefix}/lib/jvm/java-1.5.0-gcj-1.5.0.0/jre \
-	--enable-libgcj-multifile --enable-java-maintainer-mode \
-	--with-ecj-jar=/usr/share/java/eclipse-ecj.jar \
-%endif
-%ifarch %{arm}
-	--disable-sjlj-exceptions \
-%endif
-%ifarch ppc ppc64
-	--enable-secureplt \
-%endif
-%ifarch sparc ppc ppc64 s390 s390x alpha
-	--with-long-double-128 \
-%endif
-%ifarch sparc
-	--host=%{gcc_target_platform} --build=%{gcc_target_platform} --target=%{gcc_target_platform} --with-cpu=v7
-%endif
-%ifarch ppc
-	--host=%{gcc_target_platform} --build=%{gcc_target_platform} --target=%{gcc_target_platform} --with-cpu=default32
-%endif
-%ifarch %{ix86} x86_64
-	--with-cpu=generic \
-%endif
-%ifarch s390 s390x
-	--with-tune=z9-109 \
-%endif
-%ifnarch sparc ppc
-	--host=%{gcc_target_platform}
-%endif
-
-#GCJFLAGS="$OPT_FLAGS" make %{?_smp_mflags} BOOT_CFLAGS="$OPT_FLAGS" bootstrap
-GCJFLAGS="$OPT_FLAGS" make %{?_smp_mflags} BOOT_CFLAGS="$OPT_FLAGS" profiledbootstrap
-
-# run the tests.
-make %{?_smp_mflags} -k check RUNTESTFLAGS="ALT_CC_UNDER_TEST=gcc ALT_CXX_UNDER_TEST=g++" || :
-cd gcc
-mv testsuite{,.normal}
-make %{?_smp_mflags} -k \
-  `sed -n 's/check-ada//;s/^CHECK_TARGETS[[:blank:]]*=[[:blank:]]*//p' Makefile` \
-  RUNTESTFLAGS="--target_board=unix/-fstack-protector ALT_CC_UNDER_TEST=gcc ALT_CXX_UNDER_TEST=g++" || :
-mv testsuite{,.ssp}
-mv testsuite{.normal,}
-cd ..
-echo ====================TESTING=========================
-( ../contrib/test_summary || : ) 2>&1 | sed -n '/^cat.*EOF/,/^EOF/{/^cat.*EOF/d;/^EOF/d;/^LAST_UPDATED:/d;p;}'
-echo ====================TESTING END=====================
-mkdir testlogs-%{_target_platform}-%{version}-%{release}
-for i in `find . -name \*.log | grep -F testsuite/ | grep -v 'config.log\|acats\|ada'`; do
-  ln $i testlogs-%{_target_platform}-%{version}-%{release}/ || :
-done
-for i in `find . -name \*.log | grep -F testsuite.ssp/ | grep -v 'config.log\|acats\|ada'`; do
-  ln $i testlogs-%{_target_platform}-%{version}-%{release}/ssp-`basename $i` || :
-done
-tar cf - testlogs-%{_target_platform}-%{version}-%{release} | bzip2 -9c \
-  | uuencode testlogs-%{_target_platform}.tar.bz2 || :
-rm -rf testlogs-%{_target_platform}-%{version}-%{release}
-
-# Make protoize
-make -C gcc CC="./xgcc -B ./ -O2" proto
-
-# Make generated man pages even if Pod::Man is not new enough
-perl -pi -e 's/head3/head2/' ../contrib/texi2pod.pl
-for i in ../gcc/doc/*.texi; do
-  cp -a $i $i.orig; sed 's/ftable/table/' $i.orig > $i
-done
-make -C gcc generated-manpages
-for i in ../gcc/doc/*.texi; do mv -f $i.orig $i; done
-
-# Copy various doc files here and there
-cd ..
-mkdir -p rpm.doc/gfortran rpm.doc/objc
-mkdir -p rpm.doc/boehm-gc rpm.doc/fastjar rpm.doc/libffi rpm.doc/libjava
-mkdir -p rpm.doc/changelogs/{gcc/cp,gcc/java,gcc/ada,libstdc++-v3,libobjc,libmudflap,libgomp}
-sed -e 's,@VERSION@,%{gcc_version},' %{SOURCE2} > rpm.doc/README.libgcjwebplugin.so
-
-for i in {gcc,gcc/cp,gcc/java,gcc/ada,libstdc++-v3,libobjc,libmudflap,libgomp}/ChangeLog*; do
-	cp -p $i rpm.doc/changelogs/$i
-done
-
-(cd gcc/fortran; for i in ChangeLog*; do
-	cp -p $i ../../rpm.doc/gfortran/$i
-done)
-(cd libgfortran; for i in ChangeLog*; do
-	cp -p $i ../rpm.doc/gfortran/$i.libgfortran
-done)
-(cd gcc/objc; for i in README*; do
-	cp -p $i ../../rpm.doc/objc/$i.objc
-done)
-(cd libobjc; for i in README*; do
-	cp -p $i ../rpm.doc/objc/$i.libobjc
-done)
-(cd boehm-gc; for i in ChangeLog*; do
-	cp -p $i ../rpm.doc/boehm-gc/$i.gc
-done)
-(cd fastjar; for i in ChangeLog* README*; do
-	cp -p $i ../rpm.doc/fastjar/$i.fastjar
-done)
-(cd libffi; for i in ChangeLog* README* LICENSE; do
-	cp -p $i ../rpm.doc/libffi/$i.libffi
-done)
-(cd libjava; for i in ChangeLog* README*; do
-	cp -p $i ../rpm.doc/libjava/$i.libjava
-done)
-cp -p libjava/LIBGCJ_LICENSE rpm.doc/libjava/
-
-rm -f rpm.doc/changelogs/gcc/ChangeLog.[1-9]
-find rpm.doc -name \*ChangeLog\* | xargs bzip2 -9
-
-%if %{build_java_tar}
-find libjava -name \*.h -type f | xargs grep -l '// DO NOT EDIT THIS FILE - it is machine generated' > libjava-classes.list
-find libjava -name \*.class -type f >> libjava-classes.list
-find libjava/testsuite -name \*.jar -type f >> libjava-classes.list
-tar cf - -T libjava-classes.list | bzip2 -9 > $RPM_SOURCE_DIR/libjava-classes-%{version}-%{release}.tar.bz2
-%endif
-
-%install
-rm -fr $RPM_BUILD_ROOT
-
-perl -pi -e \
-  's~href="l(ibstdc|atest)~href="http://gcc.gnu.org/onlinedocs/libstdc++/l\1~' \
-  libstdc++-v3/docs/html/documentation.html
-ln -sf documentation.html libstdc++-v3/docs/html/index.html
-
-cd obj-%{gcc_target_platform}
-
-if [ ! -f /usr/lib/locale/de_DE/LC_CTYPE ]; then
-  export LOCPATH=`pwd`/locale:/usr/lib/locale
-fi
-
-%if %{build_java}
-%if !%{bootstrap_java}
-export PATH=`pwd`/java_hacks${PATH:+:$PATH}
-%endif
-%endif
-
-TARGET_PLATFORM=%{gcc_target_platform}
-
-# There are some MP bugs in libstdc++ Makefiles
-make -C %{gcc_target_platform}/libstdc++-v3
-
-make prefix=$RPM_BUILD_ROOT%{_prefix} mandir=$RPM_BUILD_ROOT%{_mandir} \
-  infodir=$RPM_BUILD_ROOT%{_infodir} install
-%if %{build_java}
-make DESTDIR=$RPM_BUILD_ROOT -C %{gcc_target_platform}/libjava install-src.zip
-%endif
-%if %{build_ada}
-chmod 644 $RPM_BUILD_ROOT%{_infodir}/gnat*
-%endif
-
-FULLPATH=$RPM_BUILD_ROOT%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}
-FULLEPATH=$RPM_BUILD_ROOT%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_version}
-
-# fix some things
-ln -sf gcc $RPM_BUILD_ROOT%{_prefix}/bin/cc
-mkdir -p $RPM_BUILD_ROOT/lib
-ln -sf ..%{_prefix}/bin/cpp $RPM_BUILD_ROOT/lib/cpp
-ln -sf gfortran $RPM_BUILD_ROOT%{_prefix}/bin/f95
-rm -f $RPM_BUILD_ROOT%{_infodir}/dir
-gzip -9 $RPM_BUILD_ROOT%{_infodir}/*.info*
-ln -sf gcc $RPM_BUILD_ROOT%{_prefix}/bin/gnatgcc
-
-cxxconfig="`find %{gcc_target_platform}/libstdc++-v3/include -name c++config.h`"
-for i in `find %{gcc_target_platform}/[36]*/libstdc++-v3/include -name c++config.h 2>/dev/null`; do
-  if ! diff -up $cxxconfig $i; then
-    cat > $RPM_BUILD_ROOT%{_prefix}/include/c++/%{gcc_version}/%{gcc_target_platform}/bits/c++config.h <<EOF
-#ifndef _CPP_CPPCONFIG_WRAPPER
-#define _CPP_CPPCONFIG_WRAPPER 1
-#include <bits/wordsize.h>
-#if __WORDSIZE == 32
-%ifarch %{multilib_64_archs}
-`cat $(find %{gcc_target_platform}/32/libstdc++-v3/include -name c++config.h)`
-%else
-`cat $(find %{gcc_target_platform}/libstdc++-v3/include -name c++config.h)`
-%endif
-#else
-%ifarch %{multilib_64_archs}
-`cat $(find %{gcc_target_platform}/libstdc++-v3/include -name c++config.h)`
-%else
-`cat $(find %{gcc_target_platform}/64/libstdc++-v3/include -name c++config.h)`
-%endif
-#endif
-#endif
-EOF
-    break
-  fi
-done
-
-# Nuke bits/stdc++.h.gch dirs
-# 1) there is no bits/stdc++.h header installed, so when gch file can't be
-#    used, compilation fails
-# 2) sometimes it is hard to match the exact options used for building
-#    libstdc++-v3 or they aren't desirable
-# 3) there are multilib issues, conflicts etc. with this
-# 4) it is huge
-# People can always precompile on their own whatever they want, but
-# shipping this for everybody is unnecessary.
-rm -rf $RPM_BUILD_ROOT%{_prefix}/include/c++/%{gcc_version}/%{gcc_target_platform}/bits/stdc++.h.gch
-
-%ifarch sparc sparc64
-ln -f $RPM_BUILD_ROOT%{_prefix}/bin/%{gcc_target_platform}-gcc \
-  $RPM_BUILD_ROOT%{_prefix}/bin/sparc-%{_vendor}-%{_target_os}-gcc
-%endif
-%ifarch ppc ppc64
-ln -f $RPM_BUILD_ROOT%{_prefix}/bin/%{gcc_target_platform}-gcc \
-  $RPM_BUILD_ROOT%{_prefix}/bin/ppc-%{_vendor}-%{_target_os}-gcc
-%endif
-
-%ifarch sparc ppc
-FULLLPATH=$FULLPATH/lib32
-%endif
-%ifarch sparc64 ppc64
-FULLLPATH=$FULLPATH/lib64
-%endif
-if [ -n "$FULLLPATH" ]; then
-  mkdir -p $FULLLPATH
-else
-  FULLLPATH=$FULLPATH
-fi
-
-find $RPM_BUILD_ROOT -name \*.la | xargs rm -f
-%if %{build_java}
-# gcj -static doesn't work properly anyway, unless using --whole-archive
-# and saving 35MB is not bad.
-find $RPM_BUILD_ROOT -name libgcj.a -o -name libgtkpeer.a \
-		     -o -name libgjsmalsa.a -o -name libgcj-tools.a -o -name libjvm.a \
-		     -o -name libgij.a -o -name libgcj_bc.a | xargs rm -f
-
-mv $RPM_BUILD_ROOT%{_prefix}/lib/libgcj.spec $FULLPATH/
-sed -i -e 's/lib: /&%%{static:%%eJava programs cannot be linked statically}/' \
-  $FULLPATH/libgcj.spec
-%endif
-
-mkdir -p $RPM_BUILD_ROOT/%{_lib}
-mv -f $RPM_BUILD_ROOT%{_prefix}/%{_lib}/libgcc_s.so.1 $RPM_BUILD_ROOT/%{_lib}/libgcc_s-%{gcc_version}-%{DATE}.so.1
-chmod 755 $RPM_BUILD_ROOT/%{_lib}/libgcc_s-%{gcc_version}-%{DATE}.so.1
-ln -sf libgcc_s-%{gcc_version}-%{DATE}.so.1 $RPM_BUILD_ROOT/%{_lib}/libgcc_s.so.1
-ln -sf /%{_lib}/libgcc_s.so.1 $FULLPATH/libgcc_s.so
-%ifarch sparc ppc
-ln -sf /lib64/libgcc_s.so.1 $FULLPATH/64/libgcc_s.so
-%endif
-%ifarch %{multilib_64_archs}
-ln -sf /lib/libgcc_s.so.1 $FULLPATH/32/libgcc_s.so
-%endif
-
-mv -f $RPM_BUILD_ROOT%{_prefix}/%{_lib}/libgomp.spec $FULLPATH/
-mv -f $RPM_BUILD_ROOT%{_prefix}/include/omp.h $FULLPATH/include/
-
-%if %{build_ada}
-mv -f $FULLPATH/adalib/libgnarl-*.so $RPM_BUILD_ROOT%{_prefix}/%{_lib}/
-mv -f $FULLPATH/adalib/libgnat-*.so $RPM_BUILD_ROOT%{_prefix}/%{_lib}/
-rm -f $FULLPATH/adalib/libgnarl.so* $FULLPATH/adalib/libgnat.so*
-%endif
-
-mkdir -p $RPM_BUILD_ROOT%{_prefix}/libexec/getconf
-if gcc/xgcc -B gcc/ -E -dD -xc /dev/null | grep __LONG_MAX__.*2147483647; then
-  ln -sf POSIX_V6_ILP32_OFF32 $RPM_BUILD_ROOT%{_prefix}/libexec/getconf/default
-else
-  ln -sf POSIX_V6_LP64_OFF64 $RPM_BUILD_ROOT%{_prefix}/libexec/getconf/default
-fi
-
-%if %{build_java}
-if [ "%{_lib}" != "lib" ]; then
-  mkdir -p $RPM_BUILD_ROOT%{_prefix}/%{_lib}/pkgconfig
-  sed '/^libdir/s/lib$/%{_lib}/' $RPM_BUILD_ROOT%{_prefix}/lib/pkgconfig/libgcj-*.pc \
-    > $RPM_BUILD_ROOT%{_prefix}/%{_lib}/pkgconfig/`basename $RPM_BUILD_ROOT%{_prefix}/lib/pkgconfig/libgcj-*.pc`
-fi
-%endif
-
-pushd $FULLPATH
-if [ "%{_lib}" = "lib" ]; then
-ln -sf ../../../libobjc.so.1 libobjc.so
-ln -sf ../../../libstdc++.so.6.* libstdc++.so
-ln -sf ../../../libgfortran.so.1.* libgfortran.so
-ln -sf ../../../libgomp.so.1.* libgomp.so
-ln -sf ../../../libmudflap.so.0.* libmudflap.so
-ln -sf ../../../libmudflapth.so.0.* libmudflapth.so
-%if %{build_java}
-ln -sf ../../../libgcj.so.8rh.* libgcj.so
-ln -sf ../../../libgcj-tools.so.8rh.* libgcj-tools.so
-ln -sf ../../../libgij.so.8rh.* libgij.so
-%endif
-%if %{build_ada}
-cd adalib
-ln -sf ../../../../libgnarl-*.so libgnarl.so
-ln -sf ../../../../libgnarl-*.so libgnarl-4.1.so
-ln -sf ../../../../libgnat-*.so libgnat.so
-ln -sf ../../../../libgnat-*.so libgnat-4.1.so
-cd ..
-%endif
-else
-ln -sf ../../../../%{_lib}/libobjc.so.1 libobjc.so
-ln -sf ../../../../%{_lib}/libstdc++.so.6.* libstdc++.so
-ln -sf ../../../../%{_lib}/libgfortran.so.1.* libgfortran.so
-ln -sf ../../../../%{_lib}/libgomp.so.1.* libgomp.so
-ln -sf ../../../../%{_lib}/libmudflap.so.0.* libmudflap.so
-ln -sf ../../../../%{_lib}/libmudflapth.so.0.* libmudflapth.so
-%if %{build_java}
-ln -sf ../../../../%{_lib}/libgcj.so.8rh.* libgcj.so
-ln -sf ../../../../%{_lib}/libgcj-tools.so.8rh.* libgcj-tools.so
-ln -sf ../../../../%{_lib}/libgij.so.8rh.* libgij.so
-%endif
-%if %{build_ada}
-cd adalib
-ln -sf ../../../../../%{_lib}/libgnarl-*.so libgnarl.so
-ln -sf ../../../../../%{_lib}/libgnarl-*.so libgnarl-4.1.so
-ln -sf ../../../../../%{_lib}/libgnat-*.so libgnat.so
-ln -sf ../../../../../%{_lib}/libgnat-*.so libgnat-4.1.so
-cd ..
-%endif
-fi
-%if %{build_java}
-mv -f $RPM_BUILD_ROOT%{_prefix}/%{_lib}/libgcj_bc.so $FULLLPATH/
-%endif
-mv -f $RPM_BUILD_ROOT%{_prefix}/%{_lib}/libstdc++.*a $FULLLPATH/
-mv -f $RPM_BUILD_ROOT%{_prefix}/%{_lib}/libsupc++.*a .
-mv -f $RPM_BUILD_ROOT%{_prefix}/%{_lib}/libgfortran.*a .
-mv -f $RPM_BUILD_ROOT%{_prefix}/%{_lib}/libgfortranbegin.*a .
-mv -f $RPM_BUILD_ROOT%{_prefix}/%{_lib}/libobjc.*a .
-mv -f $RPM_BUILD_ROOT%{_prefix}/%{_lib}/libgomp.*a .
-mv -f $RPM_BUILD_ROOT%{_prefix}/%{_lib}/libmudflap{,th}.*a $FULLLPATH/
-mv -f $RPM_BUILD_ROOT%{_prefix}/include/mf-runtime.h include/
-
-%ifarch sparc ppc
-ln -sf ../../../../../lib64/libobjc.so.1 64/libobjc.so
-ln -sf ../`echo ../../../../lib/libstdc++.so.6.* | sed s~/lib/~/lib64/~` 64/libstdc++.so
-ln -sf ../`echo ../../../../lib/libgfortran.so.1.* | sed s~/lib/~/lib64/~` 64/libgfortran.so
-ln -sf ../`echo ../../../../lib/libgomp.so.1.* | sed s~/lib/~/lib64/~` 64/libgomp.so
-ln -sf ../`echo ../../../../lib/libmudflap.so.0.* | sed s~/lib/~/lib64/~` 64/libmudflap.so
-ln -sf ../`echo ../../../../lib/libmudflapth.so.0.* | sed s~/lib/~/lib64/~` 64/libmudflapth.so
-%if %{build_java}
-ln -sf ../`echo ../../../../lib/libgcj.so.8rh.* | sed s~/lib/~/lib64/~` 64/libgcj.so
-ln -sf ../`echo ../../../../lib/libgcj-tools.so.8rh.* | sed s~/lib/~/lib64/~` 64/libgcj-tools.so
-ln -sf ../`echo ../../../../lib/libgij.so.8rh.* | sed s~/lib/~/lib64/~` 64/libgij.so
-ln -sf lib32/libgcj_bc.so libgcj_bc.so
-ln -sf ../lib64/libgcj_bc.so 64/libgcj_bc.so
-%endif
-mv -f $RPM_BUILD_ROOT%{_prefix}/lib64/libsupc++.*a 64/
-mv -f $RPM_BUILD_ROOT%{_prefix}/lib64/libgfortran.*a 64/
-mv -f $RPM_BUILD_ROOT%{_prefix}/lib64/libgfortranbegin.*a 64/
-mv -f $RPM_BUILD_ROOT%{_prefix}/lib64/libobjc.*a 64/
-mv -f $RPM_BUILD_ROOT%{_prefix}/lib64/libgomp.*a 64/
-ln -sf lib32/libstdc++.a libstdc++.a
-ln -sf ../lib64/libstdc++.a 64/libstdc++.a
-ln -sf lib32/libmudflap.a libmudflap.a
-ln -sf ../lib64/libmudflap.a 64/libmudflap.a
-ln -sf lib32/libmudflapth.a libmudflapth.a
-ln -sf ../lib64/libmudflapth.a 64/libmudflapth.a
-%endif
-%ifarch %{multilib_64_archs}
-mkdir -p 32
-ln -sf ../../../../libobjc.so.1 32/libobjc.so
-ln -sf ../`echo ../../../../lib64/libstdc++.so.6.* | sed s~/../lib64/~/~` 32/libstdc++.so
-ln -sf ../`echo ../../../../lib64/libgfortran.so.1.* | sed s~/../lib64/~/~` 32/libgfortran.so
-ln -sf ../`echo ../../../../lib64/libgomp.so.1.* | sed s~/../lib64/~/~` 32/libgomp.so
-ln -sf ../`echo ../../../../lib64/libmudflap.so.0.* | sed s~/../lib64/~/~` 32/libmudflap.so
-ln -sf ../`echo ../../../../lib64/libmudflapth.so.0.* | sed s~/../lib64/~/~` 32/libmudflapth.so
-%if %{build_java}
-ln -sf ../`echo ../../../../lib64/libgcj.so.8rh.* | sed s~/../lib64/~/~` 32/libgcj.so
-ln -sf ../`echo ../../../../lib64/libgcj-tools.so.8rh.* | sed s~/../lib64/~/~` 32/libgcj-tools.so
-ln -sf ../`echo ../../../../lib64/libgij.so.8rh.* | sed s~/../lib64/~/~` 32/libgij.so
-%endif
-mv -f $RPM_BUILD_ROOT%{_prefix}/lib/libsupc++.*a 32/
-mv -f $RPM_BUILD_ROOT%{_prefix}/lib/libgfortran.*a 32/
-mv -f $RPM_BUILD_ROOT%{_prefix}/lib/libgfortranbegin.*a 32/
-mv -f $RPM_BUILD_ROOT%{_prefix}/lib/libobjc.*a 32/
-mv -f $RPM_BUILD_ROOT%{_prefix}/lib/libgomp.*a 32/
-%endif
-%ifarch sparc64 ppc64
-ln -sf ../lib32/libstdc++.a 32/libstdc++.a
-ln -sf lib64/libstdc++.a libstdc++.a
-ln -sf ../lib32/libmudflap.a 32/libmudflap.a
-ln -sf lib64/libmudflap.a libmudflap.a
-ln -sf ../lib32/libmudflapth.a 32/libmudflapth.a
-ln -sf lib64/libmudflapth.a libmudflapth.a
-%if %{build_java}
-ln -sf ../lib32/libgcj_bc.so 32/libgcj_bc.so
-ln -sf lib64/libgcj_bc.so libgcj_bc.so
-%endif
-%else
-%ifarch %{multilib_64_archs}
-ln -sf ../../../%{multilib_32_arch}-%{_vendor}-%{_target_os}/%{gcc_version}/libstdc++.a 32/libstdc++.a
-ln -sf ../../../%{multilib_32_arch}-%{_vendor}-%{_target_os}/%{gcc_version}/libmudflap.a 32/libmudflap.a
-ln -sf ../../../%{multilib_32_arch}-%{_vendor}-%{_target_os}/%{gcc_version}/libmudflapth.a 32/libmudflapth.a
-%if %{build_java}
-ln -sf ../../../%{multilib_32_arch}-%{_vendor}-%{_target_os}/%{gcc_version}/libgcj_bc.so 32/libgcj_bc.so
-%endif
-%endif
-%endif
-
-# Strip debug info from Fortran/ObjC/Java static libraries
-strip -g `find . \( -name libgfortran.a -o -name libobjc.a -o -name libgomp.a \
-		    -o -name libmudflap.a -o -name libmudflapth.a \
-		    -o -name libgcc.a -o -name libgcov.a \) -a -type f`
-popd
-chmod 755 $RPM_BUILD_ROOT%{_prefix}/%{_lib}/libgfortran.so.1.*
-chmod 755 $RPM_BUILD_ROOT%{_prefix}/%{_lib}/libgomp.so.1.*
-chmod 755 $RPM_BUILD_ROOT%{_prefix}/%{_lib}/libmudflap{,th}.so.0.*
-chmod 755 $RPM_BUILD_ROOT%{_prefix}/%{_lib}/libobjc.so.1.*
-
-%if %{build_ada}
-chmod 755 $RPM_BUILD_ROOT%{_prefix}/%{_lib}/libgnarl*so*
-chmod 755 $RPM_BUILD_ROOT%{_prefix}/%{_lib}/libgnat*so*
-%endif
-
-for h in `find $FULLPATH/include -name \*.h`; do
-  if grep -q 'It has been auto-edited by fixincludes from' $h; then
-    rh=`grep -A2 'It has been auto-edited by fixincludes from' $h | tail -1 | sed 's|^.*"\(.*\)".*$|\1|'`
-    diff -up $rh $h || :
-    rm -f $h
-  fi
-done
-
-cat > $RPM_BUILD_ROOT%{_prefix}/bin/c89 <<"EOF"
-#!/bin/sh
-fl="-std=c89"
-for opt; do
-  case "$opt" in
-    -ansi|-std=c89|-std=iso9899:1990) fl="";;
-    -std=*) echo "`basename $0` called with non ANSI/ISO C option $opt" >&2
-	    exit 1;;
-  esac
-done
-exec gcc $fl ${1+"$@"}
-EOF
-cat > $RPM_BUILD_ROOT%{_prefix}/bin/c99 <<"EOF"
-#!/bin/sh
-fl="-std=c99"
-for opt; do
-  case "$opt" in
-    -std=c99|-std=iso9899:1999) fl="";;
-    -std=*) echo "`basename $0` called with non ISO C99 option $opt" >&2
-	    exit 1;;
-  esac
-done
-exec gcc $fl ${1+"$@"}
-EOF
-chmod 755 $RPM_BUILD_ROOT%{_prefix}/bin/c?9
-
-mkdir -p $RPM_BUILD_ROOT%{_prefix}/sbin
-gcc -static -Os %{SOURCE1} -o $RPM_BUILD_ROOT%{_prefix}/sbin/libgcc_post_upgrade
-strip $RPM_BUILD_ROOT%{_prefix}/sbin/libgcc_post_upgrade
-
-cd ..
-%find_lang %{name}
-%find_lang cpplib
-
-# Remove binaries we will not be including, so that they don't end up in
-# gcc-debuginfo
-rm -f $RPM_BUILD_ROOT%{_prefix}/%{_lib}/{libffi*,libiberty.a}
-rm -f $FULLEPATH/install-tools/{mkheaders,fixincl}
-rm -f $RPM_BUILD_ROOT%{_prefix}/lib/{32,64}/libiberty.a
-rm -f $RPM_BUILD_ROOT%{_prefix}/%{_lib}/libssp*
-
-%ifarch %{multilib_64_archs}
-# Remove libraries for the other arch on multilib arches
-rm -f $RPM_BUILD_ROOT%{_prefix}/lib/lib*.so*
-rm -f $RPM_BUILD_ROOT%{_prefix}/lib/lib*.a
-%else
-%ifarch sparc ppc
-rm -f $RPM_BUILD_ROOT%{_prefix}/lib64/lib*.so*
-rm -f $RPM_BUILD_ROOT%{_prefix}/lib64/lib*.a
-%endif
-%endif
-
-%if %{build_java}
-mkdir -p $RPM_BUILD_ROOT%{_prefix}/share/java/gcj-endorsed \
-	 $RPM_BUILD_ROOT%{_prefix}/%{_lib}/gcj-%{version}/classmap.db.d
-chmod 755 $RPM_BUILD_ROOT%{_prefix}/share/java/gcj-endorsed \
-	  $RPM_BUILD_ROOT%{_prefix}/%{_lib}/gcj-%{version} \
-	  $RPM_BUILD_ROOT%{_prefix}/%{_lib}/gcj-%{version}/classmap.db.d
-touch $RPM_BUILD_ROOT%{_prefix}/%{_lib}/gcj-%{version}/classmap.db
-%endif
-
-install -m644 %{SOURCE3} $RPM_BUILD_ROOT%{_mandir}/man1/protoize.1
-echo '.so man1/protoize.1' > $RPM_BUILD_ROOT%{_mandir}/man1/unprotoize.1
-chmod 644 $RPM_BUILD_ROOT%{_mandir}/man1/unprotoize.1
-
-%clean
-rm -rf $RPM_BUILD_ROOT
-
-%post
-/sbin/install-info \
-  --info-dir=%{_infodir} %{_infodir}/gcc.info.gz || :
-
-%preun
-if [ $1 = 0 ]; then
-  /sbin/install-info --delete \
-    --info-dir=%{_infodir} %{_infodir}/gcc.info.gz || :
-fi
-
-%post -n cpp
-/sbin/install-info \
-  --info-dir=%{_infodir} %{_infodir}/cpp.info.gz || :
-
-%preun -n cpp
-if [ $1 = 0 ]; then
-  /sbin/install-info --delete \
-    --info-dir=%{_infodir} %{_infodir}/cpp.info.gz || :
-fi
-
-%post gfortran
-/sbin/install-info \
-  --info-dir=%{_infodir} %{_infodir}/gfortran.info.gz || :
-
-%preun gfortran
-if [ $1 = 0 ]; then
-  /sbin/install-info --delete \
-    --info-dir=%{_infodir} %{_infodir}/gfortran.info.gz || :
-fi
-
-%post java
-/sbin/install-info \
-  --info-dir=%{_infodir} %{_infodir}/gcj.info.gz || :
-
-%preun java
-if [ $1 = 0 ]; then
-  /sbin/install-info --delete \
-    --info-dir=%{_infodir} %{_infodir}/gcj.info.gz || :
-fi
-
-%post gnat
-/sbin/install-info \
-  --info-dir=%{_infodir} %{_infodir}/gnat_rm.info.gz || :
-/sbin/install-info \
-  --info-dir=%{_infodir} %{_infodir}/gnat_ugn_unw.info.gz || :
-/sbin/install-info \
-  --info-dir=%{_infodir} %{_infodir}/gnat-style.info.gz || :
-
-%preun gnat
-if [ $1 = 0 ]; then
-  /sbin/install-info --delete \
-    --info-dir=%{_infodir} %{_infodir}/gnat_rm.info.gz || :
-  /sbin/install-info --delete \
-    --info-dir=%{_infodir} %{_infodir}/gnat_ugn_unw.info.gz || :
-  /sbin/install-info --delete \
-    --info-dir=%{_infodir} %{_infodir}/gnat-style.info.gz || :
-fi
-
-# Because glibc Prereq's libgcc and /sbin/ldconfig
-# comes from glibc, it might not exist yet when
-# libgcc is installed
-%post -n libgcc -p %{_prefix}/sbin/libgcc_post_upgrade
-
-%post -n libstdc++ -p /sbin/ldconfig
-
-%postun -n libstdc++ -p /sbin/ldconfig
-
-%post -n libobjc -p /sbin/ldconfig
-
-%postun -n libobjc -p /sbin/ldconfig
-
-%post -n libgcj
-/sbin/ldconfig
-/sbin/install-info \
-  --info-dir=%{_infodir} %{_infodir}/fastjar.info.gz || :
-
-%preun -n libgcj
-if [ $1 = 0 ]; then
-  /sbin/install-info --delete \
-    --info-dir=%{_infodir} %{_infodir}/fastjar.info.gz || :
-fi
-
-%postun -n libgcj -p /sbin/ldconfig
-
-%post -n libgfortran -p /sbin/ldconfig
-
-%postun -n libgfortran -p /sbin/ldconfig
-
-%post -n libgnat -p /sbin/ldconfig
-
-%postun -n libgnat -p /sbin/ldconfig
-
-%post -n libgomp -p /sbin/ldconfig
-
-%postun -n libgomp -p /sbin/ldconfig
-
-%post -n libmudflap -p /sbin/ldconfig
-
-%postun -n libmudflap -p /sbin/ldconfig
-
-%files -f %{name}.lang
-%defattr(-,root,root)
-%{_prefix}/bin/cc
-%{_prefix}/bin/c89
-%{_prefix}/bin/c99
-%{_prefix}/bin/gcc
-%{_prefix}/bin/gcov
-%{_prefix}/bin/protoize
-%{_prefix}/bin/unprotoize
-%ifarch sparc ppc
-%{_prefix}/bin/%{_target_platform}-gcc
-%endif
-%ifarch sparc64
-%{_prefix}/bin/sparc-%{_vendor}-%{_target_os}-gcc
-%endif
-%ifarch ppc64
-%{_prefix}/bin/ppc-%{_vendor}-%{_target_os}-gcc
-%endif
-%{_prefix}/bin/%{gcc_target_platform}-gcc
-%{_mandir}/man1/gcc.1*
-%{_mandir}/man1/gcov.1*
-%{_mandir}/man1/protoize.1*
-%{_mandir}/man1/unprotoize.1*
-%{_infodir}/gcc*
-%dir %{_prefix}/lib/gcc
-%dir %{_prefix}/lib/gcc/%{gcc_target_platform}
-%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}
-%dir %{_prefix}/libexec/gcc
-%dir %{_prefix}/libexec/gcc/%{gcc_target_platform}
-%dir %{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_version}
-%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/SYSCALLS.c.X
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/stddef.h
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/stdarg.h
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/varargs.h
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/float.h
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/limits.h
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/stdbool.h
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/iso646.h
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/syslimits.h
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/unwind.h
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/omp.h
-%ifarch %{ix86} x86_64
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/mmintrin.h
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/xmmintrin.h
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/emmintrin.h
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/pmmintrin.h
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/tmmintrin.h
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/ammintrin.h
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/mm_malloc.h
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/mm3dnow.h
-%endif
-%ifarch ia64
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/ia64intrin.h
-%endif
-%ifarch ppc ppc64
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/ppc-asm.h
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/altivec.h
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/spe.h
-%endif
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/README
-%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_version}/collect2
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/crt*.o
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libgcc.a
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libgcov.a
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libgcc_eh.a
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libgcc_s.so
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libgomp.spec
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libgomp.a
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libgomp.so
-%ifarch sparc ppc
-%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/64
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/64/crt*.o
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/64/libgcc.a
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/64/libgcov.a
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/64/libgcc_eh.a
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/64/libgcc_s.so
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/64/libgomp.a
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/64/libgomp.so
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/64/libmudflap.a
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/64/libmudflapth.a
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/64/libmudflap.so
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/64/libmudflapth.so
-%endif
-%ifarch %{multilib_64_archs}
-%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/32
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/32/crt*.o
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/32/libgcc.a
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/32/libgcov.a
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/32/libgcc_eh.a
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/32/libgcc_s.so
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/32/libgomp.a
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/32/libgomp.so
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/32/libmudflap.a
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/32/libmudflapth.a
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/32/libmudflap.so
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/32/libmudflapth.so
-%endif
-%ifarch sparc sparc64 ppc ppc64
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libmudflap.a
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libmudflapth.a
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libmudflap.so
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libmudflapth.so
-%endif
-%dir %{_prefix}/libexec/getconf
-%{_prefix}/libexec/getconf/default
-%doc gcc/README* rpm.doc/changelogs/gcc/ChangeLog* gcc/COPYING*
-
-%files -n cpp -f cpplib.lang
-%defattr(-,root,root)
-/lib/cpp
-%{_prefix}/bin/cpp
-%{_mandir}/man1/cpp.1*
-%{_infodir}/cpp*
-%dir %{_prefix}/libexec/gcc
-%dir %{_prefix}/libexec/gcc/%{gcc_target_platform}
-%dir %{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_version}
-%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_version}/cc1
-
-%files -n libgcc
-%defattr(-,root,root)
-/%{_lib}/libgcc_s-%{gcc_version}-%{DATE}.so.1
-/%{_lib}/libgcc_s.so.1
-%{_prefix}/sbin/libgcc_post_upgrade
-%doc gcc/COPYING.LIB
-
-%files c++
-%defattr(-,root,root)
-%{_prefix}/bin/%{gcc_target_platform}-*++
-%{_prefix}/bin/g++
-%{_prefix}/bin/c++
-%{_mandir}/man1/g++.1*
-%dir %{_prefix}/lib/gcc
-%dir %{_prefix}/lib/gcc/%{gcc_target_platform}
-%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}
-%dir %{_prefix}/libexec/gcc
-%dir %{_prefix}/libexec/gcc/%{gcc_target_platform}
-%dir %{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_version}
-%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_version}/cc1plus
-%ifarch sparc ppc
-%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/64
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/64/libstdc++.so
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/64/libstdc++.a
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/64/libsupc++.a
-%endif
-%ifarch %{multilib_64_archs}
-%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/32
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/32/libstdc++.so
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/32/libstdc++.a
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/32/libsupc++.a
-%endif
-%ifarch sparc ppc %{multilib_64_archs}
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libstdc++.so
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libsupc++.a
-%endif
-%ifarch sparc sparc64 ppc ppc64
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libstdc++.a
-%endif
-%doc rpm.doc/changelogs/gcc/cp/ChangeLog*
-
-%files -n libstdc++
-%defattr(-,root,root)
-%{_prefix}/%{_lib}/libstdc++.so.6*
-
-%files -n libstdc++-devel
-%defattr(-,root,root)
-%dir %{_prefix}/include/c++
-%dir %{_prefix}/include/c++/%{gcc_version}
-%{_prefix}/include/c++/%{gcc_version}/[^gjos]*
-%{_prefix}/include/c++/%{gcc_version}/os*
-%{_prefix}/include/c++/%{gcc_version}/s[^u]*
-%dir %{_prefix}/lib/gcc
-%dir %{_prefix}/lib/gcc/%{gcc_target_platform}
-%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}
-%ifarch sparc ppc
-%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/lib32
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/lib32/libstdc++.a
-%endif
-%ifarch sparc64 ppc64
-%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/lib64
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/lib64/libstdc++.a
-%endif
-%ifnarch sparc sparc64 ppc ppc64
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libstdc++.a
-%endif
-%ifnarch sparc ppc %{multilib_64_archs}
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libstdc++.so
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libsupc++.a
-%endif
-%doc rpm.doc/changelogs/libstdc++-v3/ChangeLog* libstdc++-v3/README* libstdc++-v3/docs/html/
-
-%files objc
-%defattr(-,root,root)
-%dir %{_prefix}/lib/gcc
-%dir %{_prefix}/lib/gcc/%{gcc_target_platform}
-%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}
-%dir %{_prefix}/libexec/gcc
-%dir %{_prefix}/libexec/gcc/%{gcc_target_platform}
-%dir %{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_version}
-%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/objc
-%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_version}/cc1obj
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libobjc.a
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libobjc.so
-%ifarch sparc ppc
-%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/64
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/64/libobjc.a
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/64/libobjc.so
-%endif
-%ifarch %{multilib_64_archs}
-%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/32
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/32/libobjc.a
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/32/libobjc.so
-%endif
-%doc rpm.doc/objc/*
-%doc libobjc/THREADS* rpm.doc/changelogs/libobjc/ChangeLog*
-
-%files objc++
-%defattr(-,root,root)
-%dir %{_prefix}/libexec/gcc
-%dir %{_prefix}/libexec/gcc/%{gcc_target_platform}
-%dir %{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_version}
-%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_version}/cc1objplus
-
-%files -n libobjc
-%defattr(-,root,root)
-%{_prefix}/%{_lib}/libobjc.so.1*
-
-%files gfortran
-%defattr(-,root,root)
-%{_prefix}/bin/gfortran
-%{_prefix}/bin/f95
-%{_mandir}/man1/gfortran.1*
-%{_infodir}/gfortran*
-%dir %{_prefix}/lib/gcc
-%dir %{_prefix}/lib/gcc/%{gcc_target_platform}
-%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}
-%dir %{_prefix}/libexec/gcc
-%dir %{_prefix}/libexec/gcc/%{gcc_target_platform}
-%dir %{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_version}
-%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/finclude
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/finclude/omp_lib.h
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/finclude/omp_lib.f90
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/finclude/omp_lib.mod
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/finclude/omp_lib_kinds.mod
-%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_version}/f951
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libgfortranbegin.a
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libgfortran.a
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libgfortran.so
-%ifarch sparc ppc
-%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/64
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/64/libgfortranbegin.a
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/64/libgfortran.a
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/64/libgfortran.so
-%endif
-%ifarch %{multilib_64_archs}
-%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/32
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/32/libgfortranbegin.a
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/32/libgfortran.a
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/32/libgfortran.so
-%endif
-%doc rpm.doc/gfortran/*
-
-%files -n libgfortran
-%defattr(-,root,root)
-%{_prefix}/%{_lib}/libgfortran.so.1*
-
-%if %{build_java}
-%files java
-%defattr(-,root,root)
-%{_prefix}/bin/gcj
-%{_prefix}/bin/gjavah
-%{_prefix}/bin/gcjh
-%{_prefix}/bin/jcf-dump
-%{_mandir}/man1/gcj.1*
-%{_mandir}/man1/jcf-dump.1*
-%{_mandir}/man1/gjavah.1*
-%{_mandir}/man1/gcjh.1*
-%{_infodir}/gcj*
-%dir %{_prefix}/libexec/gcc
-%dir %{_prefix}/libexec/gcc/%{gcc_target_platform}
-%dir %{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_version}
-%dir %{_prefix}/lib/gcc
-%dir %{_prefix}/lib/gcc/%{gcc_target_platform}
-%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}
-%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_version}/jc1
-%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_version}/ecj1
-%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_version}/jvgenmain
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libgcj.so
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libgcj-tools.so
-%ifarch sparc sparc64 ppc ppc64
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libgcj_bc.so
-%endif
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libgij.so
-%ifarch sparc ppc
-%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/64
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/64/libgcj.so
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/64/libgcj-tools.so
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/64/libgcj_bc.so
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/64/libgij.so
-%endif
-%ifarch %{multilib_64_archs}
-%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/32
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/32/libgcj.so
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/32/libgcj-tools.so
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/32/libgcj_bc.so
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/32/libgij.so
-%endif
-%doc rpm.doc/changelogs/gcc/java/ChangeLog*
-
-%files -n libgcj
-%defattr(-,root,root)
-%{_prefix}/bin/jv-convert
-%{_prefix}/bin/gij
-%{_prefix}/bin/gjar
-%{_prefix}/bin/fastjar
-%{_prefix}/bin/grepjar
-%{_prefix}/bin/grmic
-%{_prefix}/bin/grmid
-%{_prefix}/bin/grmiregistry
-%{_prefix}/bin/gtnameserv
-%{_prefix}/bin/gkeytool
-%{_prefix}/bin/gorbd
-%{_prefix}/bin/gserialver
-%{_prefix}/bin/gcj-dbtool
-%if %{include_gappletviewer}
-%{_prefix}/bin/gappletviewer
-%{_mandir}/man1/gappletviewer.1*
-%endif
-%{_prefix}/bin/gjarsigner
-%{_mandir}/man1/fastjar.1*
-%{_mandir}/man1/grepjar.1*
-%{_mandir}/man1/gjar.1*
-%{_mandir}/man1/gjarsigner.1*
-%{_mandir}/man1/jv-convert.1*
-%{_mandir}/man1/gij.1*
-%{_mandir}/man1/grmic.1*
-%{_mandir}/man1/grmiregistry.1*
-%{_mandir}/man1/gcj-dbtool.1*
-%{_mandir}/man1/gkeytool.1*
-%{_mandir}/man1/gorbd.1*
-%{_mandir}/man1/grmid.1*
-%{_mandir}/man1/gserialver.1*
-%{_mandir}/man1/gtnameserv.1*
-%{_infodir}/fastjar*
-%{_prefix}/%{_lib}/libgcj.so.*
-%{_prefix}/%{_lib}/libgcj-tools.so.*
-%{_prefix}/%{_lib}/libgcj_bc.so.*
-%{_prefix}/%{_lib}/libgij.so.*
-%dir %{_prefix}/%{_lib}/gcj-%{version}
-%{_prefix}/%{_lib}/gcj-%{version}/libgtkpeer.so
-%{_prefix}/%{_lib}/gcj-%{version}/libgjsmalsa.so
-%{_prefix}/%{_lib}/gcj-%{version}/libjawt.so
-%if %{include_gappletviewer}
-%{_prefix}/%{_lib}/gcj-%{version}/libgcjwebplugin.so
-%endif
-%{_prefix}/%{_lib}/gcj-%{version}/libjvm.so
-%dir %{_prefix}/share/java
-%{_prefix}/share/java/[^sl]*
-%{_prefix}/share/java/libgcj-%{version}.jar
-%dir %{_prefix}/%{_lib}/security
-%config(noreplace) %{_prefix}/%{_lib}/security/classpath.security
-%{_prefix}/%{_lib}/logging.properties
-%dir %{_prefix}/%{_lib}/gcj-%{version}/classmap.db.d
-%attr(0644,root,root) %verify(not md5 size mtime) %ghost %config(missingok,noreplace) %{_prefix}/%{_lib}/gcj-%{version}/classmap.db
-%if %{include_gappletviewer}
-%doc rpm.doc/README.libgcjwebplugin.so
-%endif
-
-%files -n libgcj-devel
-%defattr(-,root,root)
-%{_prefix}/bin/addr2name.awk
-%dir %{_prefix}/lib/gcc
-%dir %{_prefix}/lib/gcc/%{gcc_target_platform}
-%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}
-%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/gcj
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/jawt.h
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/jawt_md.h
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/jni.h
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/jni_md.h
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/jvmpi.h
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libgcj.spec
-%ifarch sparc ppc
-%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/lib32
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/lib32/libgcj_bc.so
-%endif
-%ifarch sparc64 ppc64
-%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/lib64
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/lib64/libgcj_bc.so
-%endif
-%ifnarch sparc sparc64 ppc ppc64
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libgcj_bc.so
-%endif
-%dir %{_prefix}/include/c++
-%dir %{_prefix}/include/c++/%{gcc_version}
-%{_prefix}/include/c++/%{gcc_version}/[gj]*
-%{_prefix}/include/c++/%{gcc_version}/org
-%{_prefix}/include/c++/%{gcc_version}/sun
-%{_prefix}/%{_lib}/pkgconfig/libgcj-*.pc
-%doc rpm.doc/boehm-gc/* rpm.doc/fastjar/* rpm.doc/libffi/*
-%doc rpm.doc/libjava/*
-
-%files -n libgcj-src
-%defattr(-,root,root)
-%dir %{_prefix}/share/java
-%{_prefix}/share/java/src*.zip
-%{_prefix}/share/java/libgcj-tools-%{version}.jar
-%endif
-
-%if %{build_ada}
-%files gnat
-%defattr(-,root,root)
-%{_prefix}/bin/gnat*
-%{_prefix}/bin/gpr*
-%{_infodir}/gnat*
-%dir %{_prefix}/lib/gcc
-%dir %{_prefix}/lib/gcc/%{gcc_target_platform}
-%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}
-%dir %{_prefix}/libexec/gcc
-%dir %{_prefix}/libexec/gcc/%{gcc_target_platform}
-%dir %{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_version}
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/adainclude
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/adalib
-%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_version}/gnat1
-%doc rpm.doc/changelogs/gcc/ada/ChangeLog*
-
-%files -n libgnat
-%defattr(-,root,root)
-%{_prefix}/%{_lib}/libgnat-*.so
-%{_prefix}/%{_lib}/libgnarl-*.so
-%endif
-
-%files -n libgomp
-%defattr(-,root,root)
-%{_prefix}/%{_lib}/libgomp.so.1*
-%doc rpm.doc/changelogs/libgomp/ChangeLog*
-
-%files -n libmudflap
-%defattr(-,root,root)
-%{_prefix}/%{_lib}/libmudflap.so.0*
-%{_prefix}/%{_lib}/libmudflapth.so.0*
-
-%files -n libmudflap-devel
-%defattr(-,root,root)
-%dir %{_prefix}/lib/gcc
-%dir %{_prefix}/lib/gcc/%{gcc_target_platform}
-%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}
-%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/mf-runtime.h
-%ifarch sparc ppc
-%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/lib32
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/lib32/libmudflap.a
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/lib32/libmudflapth.a
-%endif
-%ifarch sparc64 ppc64
-%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/lib64
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/lib64/libmudflap.a
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/lib64/libmudflapth.a
-%endif
-%ifnarch sparc sparc64 ppc ppc64
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libmudflap.a
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libmudflapth.a
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libmudflap.so
-%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libmudflapth.so
-%endif
-%doc rpm.doc/changelogs/libmudflap/ChangeLog*
-
-%changelog
-* Wed Dec 12 2007 Jakub Jelinek <jakub@redhat.com> 4.1.2-36
-- revert PR c++/34094 fix altogether, it was only accepts-invalid and
-  caused a bunch of valid or unclear cases to be rejected (#411871, #402521)
-- fix OpenMP handling of global vars privatized in orphaned constructs
-  with #pragma omp parallel inside them
-- -frepo fixes (#411741, PRs c++/34178, c++/34340)
-- fix dynamic_cast<C &> in templates (PR c++/34364)
-- fix error diagnostics involving ABS_EXPR (PR c++/34394)
-
-* Sun Dec  2 2007 Jakub Jelinek <jakub@redhat.com> 4.1.2-35
-- two ctor preevaluation fixes (Olivier Hainque,
-  Eric Botcazou, #407281)
-- slightly weaken diagnostics for declared, but undefined static data
-  members in anon ns classes (#402521, PR c++/34238)
-- consider static data members and static member functions in anon ns
-  classes to be external for C++ linkage type handling (PR c++/34213)
-- handle OBJ_TYPE_REF in C++ diagnostics (PR c++/34275)
-
-* Sat Nov 24 2007 Jakub Jelinek <jakub@redhat.com> 4.1.2-34
-- update from gcc-4_1-branch (-r128736:130387)
-  - PRs middle-end/34030, rtl-optimization/28062, rtl-optimization/33822
-  - fix if-conversion to avoid introducing races into threaded code
-    (Ian Lance Taylor, #391731)
-- some C++ visibility fixes (Jason Merrill, PRs c++/32470, c++/33094,
-  c++/29365)
-- arm Java support (Andrew Haley, #246800)
-- add possibility to bootstrap gcj on architectures where libgcj
-  isn't already available or is too old - build on some already
-  supported arch the rpm with --with java_tar and the created
-  tarball bring to the new arch and build --with java_bootstrap
-- backport a bunch of bugfixes from GCC trunk
-  - PRs c++/29225, c++/30293, c++/30294, c++/30988, c++/32241,
-	c++/32384, c++/33501, c++/33516, c++/33616, c++/33836,
-	c++/33842, c++/33844, c++/33962, c++/34089, c++/34094,
-	c/34146, debug/33537, middle-end/23848, middle-end/34070,
-	testsuite/33978, tree-optimization/33723
-- fix abs optimization (Richard Guenther, #394271, PR middle-end/34130)
-- fortran lbound/ubound fix (Paul Thomas, #391151, PR fortran/29712)
-- generate proper fortran debuginfo for assumed-size, assumed-shape
-  and deferred arrays (#364001)
-
-* Sun Oct 21 2007 Jakub Jelinek <jakub@redhat.com> 4.1.2-33
-- rebuild to fix multilib conflict between i386 and x86_64 libgcj,
-  set java man page timestamp from the timestamp of *.texinfo rather
-  than current date to avoid this problem in the future (#341221)
-- fix ppc64 unwinding of cr2 register if vdso=0
-
-* Tue Oct 16 2007 Jakub Jelinek <jakub@redhat.com> 4.1.2-32
-- only allow __label__ at the start of a block (PR c++/32121)
-- disable -fipa-type-escape by default (PR tree-optimization/33136)
-- VLA handling fix (PR c/33238, PR c/27301)
-- disable TER of pure and const function calls except for __builtin_expect
-  (PR tree-optimization/33619)
-- handle classes with characters other than [a-zA-Z0-9_$] in
-  their names (Andrew Haley, #297961, PR java/33639)
-- fix parsing of C++ function-like cast in template argument where cast's
-  argument uses greater-than operator (PR c++/33744)
-- ignore always_inline attribute on redefined extern inline
-  functions (Jan Hubicka, #329671, PR tree-optimization/33763)
-- add support for Fortran int conversion intrinsics (Francois-Xavier
-  Coudert, #317051)
-- link libgcj-tools.so* against libgcj.so* (#330771)
-
-* Wed Oct  3 2007 Jakub Jelinek <jakub@redhat.com> 4.1.2-31
-- fix visibility of C++ guard variables (Jason Merrill)
-- don't drop DECL_BUILT_IN_CLASS when defining a builtin function
-
-* Mon Oct  1 2007 Jakub Jelinek <jakub@redhat.com> 4.1.2-30
-- fix ICE on C++ gnu_inline function followed by prototype of the same
-  fn (Alexandre Oliva)
-
-* Fri Sep 28 2007 Jakub Jelinek <jakub@redhat.com> 4.1.2-29
-- print virtual inline backtrace in some diagnostic messages to help
-  locate bugs reported with -D_FORTIFY_SOURCE{,=2}
-
-* Tue Sep 25 2007 Jakub Jelinek <jakub@redhat.com> 4.1.2-28
-- update from gcc-4_1-branch (-r127672:128736)
-  - PRs bootstrap/33418, c++/31941, c++/32113, java/31842, target/33256,
-	tree-optimization/33142
-- add support for artificial, error and warning attributes
-- restore Java CNI ABI compatibility broken by JDWP changes (Keith Seitz)
-- fix ICE with set_rhs allowing non-gimple (Roger Sayle, #247407,
-  PR tree-optimization/32694)
-- fix ICE on Fortran interface-body declaring current subroutine name
-  (Paul Thomas, #300851, PR fortran/20880)
-
-* Sat Sep 22 2007 Jakub Jelinek <jakub@redhat.com> 4.1.2-26
-- don't ignore throw specification of function types in type hashing
-  (PR c++/33506)
-- handle makeinfo version >= 4.10 in gcc configury
-
-* Mon Sep 17 2007 Jakub Jelinek <jakub@redhat.com> 4.1.2-25
-- fix ICE on __builtin_mem*_chk if it couldn't be folded until
-  expand time and at that point it can avoid a call (PR middle-end/33423)
-- handle the upcoming POSIX 'm' *scanf allocation modifier in
-  GCC format checking, fix up some details about %as/%aS/%a[
-
-* Fri Sep 14 2007 Jakub Jelinek <jakub@redhat.com> 4.1.2-24
-- backport __builtin_va_arg_pack_len () support
-- fix Fortran error recovery with DATA (Jerry DeLisle, #281331,
-  PR fortran/27954)
-
-* Fri Sep  7 2007 Jakub Jelinek <jakub@redhat.com> 4.1.2-23
-- fix __builtin_va_arg_pack () support for C++
-
-* Thu Sep  6 2007 Jakub Jelinek <jakub@redhat.com> 4.1.2-22
-- backport __builtin_va_arg_pack () support
-- make sure __builtin_{,v}{,f}{print,scan}f, __builtin_{,f}printf_unlocked
-  and __builtin___{,v}{,f}printf_chk can throw
-- handle __*_chk builtins without __builtin_ in the name as anticipated in
-  C++
-
-* Sat Sep  1 2007 Jakub Jelinek <jakub@redhat.com> 4.1.2-21
-- fix libmudflap-devel multilib conflict on ppc/ppc64 and sparc/sparc64
-  (#270281)
-
-* Fri Aug 31 2007 Jakub Jelinek <jakub@redhat.com> 4.1.2-20
-- backport __attribute__((__gnu_inline__)) support for C++
-- fix ppc/ppc64 __sync_* builtins with aligned 8 or 16-bit values
-- don't set executable flag on .note.GNU-stack on ppc64/ia64 even
-  when trampolines are used - trampolines on those architectures
-  don't need executable stack
-
-* Tue Aug 21 2007 Jakub Jelinek <jakub@redhat.com> 4.1.2-19
-- update from gcc-4_1-branch (-r127528:127672)
-  - PR c++/32112
-- fix ppc32 libgcc.a(tramp.o), so that binaries using trampolines
-  aren't forced to use bss PLT
-- fix a fortran charlen sharing bug (#253102)
-- fix ICE with X|~X or X^~X with vectors (PR middle-end/32912)
-- nuke bits/stdc++.gch directories from libstdc++-devel (#253304)
-
-* Thu Aug 16 2007 Jakub Jelinek <jakub@redhat.com> 4.1.2-18
-- update from gcc-4_1-branch (-r126830:127528)
-  - PR c++/17763
-- fix --build-id patch on ia64 (#251936)
-- fix fortran Tx format handling (Jerry DeLisle, #252152,
-  PR libgfortran/32678)
-- add support for Sun UltraSPARC T1 chips - -mcpu=niagara (David S. Miller)
-- don't NRV optimize fields inside anonymous unions (PR c++/32992)
-- fortran debuginfo improvements for constant bound arrays (#248541,
-  PR fortran/22244)
-- BuildRequire mpfr-devel
-- update License tag
-
-* Tue Jul 24 2007 Jakub Jelinek <jakub@redhat.com> 4.1.2-17
-- fix {,Build}Requires from last change (#249384)
-
-* Mon Jul 23 2007 Jakub Jelinek <jakub@redhat.com> 4.1.2-16
-- update from gcc-4_1-branch (-r126302:126830)
-  - PRs rtl-optimization/32450, target/31331, target/32641, target/32660,
-	tree-optimization/32681
-- pass --build-id to ld for all linking but ld -r, update {,Build}Requires
-  to binutils that support it (Roland McGrath)
-- backport ARM fixes from trunk (#246800)
-  - PRs middle-end/24998, target/28516, target/30486
-- fix simplify_plus_minus with ppc{,64} power6 tuning (regression from
-  4.1.1-52.el5.2, #247256)
-
-* Wed Jul  4 2007 Jakub Jelinek <jakub@redhat.com> 4.1.2-15
-- update from gcc-4_1-branch (-r126008:126302)
-  - PRs boehm-gc/21940, boehm-gc/21942, target/28307, target/32506,
-	tree-optimization/31966, tree-optimization/32533
-- merge in redhat/gcc-4_1-jdwp-merge-branch
-  - JDWP support (Keith Seitz)
-- fix OpenMP handling of Fortran POINTER non-array vars (PR fortran/32550)
-
-* Tue Jun 26 2007 Jakub Jelinek <jakub@redhat.com> 4.1.2-14
-- update from gcc-4_1-branch (-r125727:126008)
-  - PRs inline-asm/32109, rtl-optimization/28011, target/32389
-- gomp update from gcc-4_2-branch (-r125917:125918)
-  - PR middle-end/32362
-- on ppc{,64} when tuning for power6{,x}, try to put the base
-  register as first operand in instructions to improve
-  performance (Peter Bergner, #225425, PR middle-end/28690)
-- on ppc64 emit nop after a call and disallow sibling calls
-  if the target function is not defined in the same object file
-  (David Edelsohn, #245424)
-- gomp parallel sections fix and fix for checking whether combined
-  parallel can be used (PR libgomp/32468)
-
-* Fri Jun 15 2007 Jakub Jelinek <jakub@redhat.com> 4.1.2-13
-- update from gcc-4_1-branch (-r124365:125727)
-  - PRs libfortran/31409, libfortran/31880, libfortran/31964,
-	rtl-optimization/31691, target/31022, target/31480, target/31701,
-	target/31876, target/32163, tree-optimization/26998
-- gomp updates from the trunk (-r125541:125542, -r125543:125544) and
-  from gcc-4_2-branch (-r125184:125185)
-  - PRs tree-optimization/31769, c++/32177
-- don't set TREE_READONLY on C++ objects that need runtime initialization
-  (PRs c++/31806, c++/31809)
-- fix computation of common pointer type (PR tree-optimization/32139)
-- precompute const and pure fn calls inside another fn call arguments
-  with accumulating outgoing args
-  (PRs middle-end/32285, tree-optimization/30493)
-- fix handling of RESULT_DECLs in points-to analysis
-  (#243438, PR tree-optimization/32353)
-- work around java.lang.reflect.Modifier.INTERPRETED clash with
-  java.lang.reflect.Modifier.SYNTHETIC (Andrew Haley, #240720)
-
-* Thu May  3 2007 Jakub Jelinek <jakub@redhat.com> 4.1.2-12
-- update from gcc-4_1-branch (-r124100:124365)
-  - PRs c++/30016, c++/30221, middle-end/30761, target/18989,
-	target/28675, tree-optimization/29446, tree-optimization/31698
-- add default.css Java resource (Tom Fitzsimmons, #237304)
-- don't increase alignment of TLS variables too much
-- __do_global_dtors_aux hardening
-- allow libgomp to be dlopened (PR libgomp/28482)
-- speed up and improve libgomp omp_get_num_procs and dynamic
-  thread count computation
-- GOMP_CPU_AFFINITY support
-- fix ICE on C++ type passed as OpenMP clause variable (PR c++/31748)
-
-* Wed Apr 25 2007 Jakub Jelinek <jakub@redhat.com> 4.1.2-11
-- update from gcc-4_1-branch (-r123951:124100)
-  - PRs middle-end/31448, preprocessor/30468, target/28623, target/31641
-- Java fixes
-  - PRs classpath/31626, classpath/31646, #236895
-- fix a couple of translation bugs that could lead to ICEs (#235008)
-- fix ICE with #pragma omp parallel inside of a try catch construct
-  (PR tree-optimization/30558)
-- fix OpenMP clause handling in templates (PR c++/31598)
-
-* Thu Apr 19 2007 Jakub Jelinek <jakub@redhat.com> 4.1.2-10
-- fix folding of comparisions against min, min+1, max-1, max
-  (#236711, PR tree-optimization/31632)
-- fix _mm_cmpord_ss on i?86/x86_64 (#237067)
-- Java proxy fix (Andrew Haley, #236895)
-
-* Wed Apr 18 2007 Jakub Jelinek <jakub@redhat.com> 4.1.2-9
-- update from gcc-4_1-branch (-r123462:123951)
-  - PRs c++/30168, c++/31074, c++/31449, c++/31517, c/31520, middle-end/30729,
-	target/25448, target/30289, target/30483, target/31361, target/31582,
-	testsuite/31578
-- fix %%build_java 0 build (#235500)
-- fix libjava build on alpha (#236337)
-- fix for Java AWT programs that could hang X server (Francis Kung,
-  PR classpath/31311)
-- fix gnu.javax.net.ssl.provider.SSLSocketFactoryImpl (Tom Tromey, #236614)
-
-* Tue Apr  3 2007 Jakub Jelinek <jakub@redhat.com> 4.1.2-8
-- update from gcc-4_1-branch (-r123245:123462)
-  - PRs target/31137, target/31380
-- libjava fixes (PRs classpath/31302, classpath/31303, libgcj/29869)
-- java Proxy fix (Andrew Haley, #234836)
-- deque::erase fix (Steve LoBasso, Paolo Carlini, #234515)
-- fix java font rendering (Francis Kung, #231818)
-- fix a regression caused by C++ visibility fixes (Jason Merrill,
-  PR c++/31187)
-- use hidden visibility for non-native java private methods (Andrew Haley)
-
-* Thu Mar 29 2007 Jakub Jelinek <jakub@redhat.com> 4.1.2-7
-- make sure boehm-gc doesn't use PROT_EXEC (#202209)
-- fix C++ ICE on i ? j : k = (void) 0; (PR c++/30847)
-
-* Tue Mar 27 2007 Jakub Jelinek <jakub@redhat.com> 4.1.2-6
-- update from gcc-4_1-branch (-r123011:123245)
-  - PRs fortran/31184, target/31245, tree-optimization/30590
-- libjava W^X support (Alexandre Oliva, #202209)
-- fix gcjh -jni and gjavah -cni (Stepan Kasal, #233349)
-- fix C++ accepts invalid bug (Mark Mitchell, PR c++/30863)
-
-* Sat Mar 17 2007 Jakub Jelinek <jakub@redhat.com> 4.1.2-5
-- update from gcc-4_1-branch (-r122833:123011)
-  - PRs debug/29906, middle-end/30364, middle-end/30433, target/31123
-- rebuilt against newer rpm to fix libgcj debuginfo (#232222)
-
-* Mon Mar 12 2007 Jakub Jelinek <jakub@redhat.com> 4.1.2-4
-- update from gcc-4_1-branch (-r122219:122833)
-  - PRs c++/30852, c++/30895, classpath/28550, classpath/30831,
-	classpath/30906, classpath/30983, fortran/29441, fortran/30400,
-	libgcj/17002, libgfortran/30910, libgfortran/30918, other/31050,
-	rtl-optimization/30931, target/30848, tree-optimization/29925
-  - reenable memory CSE (Alexandre Oliva, #229366, PR rtl-optimization/30643)
-- fix random seed handling with -frepo (Alexandre Oliva, #228769)
-- fix fortran OPEN without ACTION on read-only filesystem (#231134)
-- fix fortran module writer ICEs on implicit conversions (#231261)
-
-* Thu Feb 22 2007 Jakub Jelinek <jakub@redhat.com> 4.1.2-3
-- update from gcc-4_1-branch (-r122163:122219)
-  - PR ada/30684
-- fix !$omp space space parsing in Fortran
-- fix Fortran -ff2c (Tobias Schlueter, #229110, PR fortran/25392)
-- add gnu.java.util.ZoneInfo class, use tzdata files for libgcj
-  timezone stuff (#227888)
-
-* Tue Feb 20 2007 Jakub Jelinek <jakub@redhat.com> 4.1.2-2
-- merge from redhat/gcc-4_1-branch-java-merge-20070117
-  to get an eclipse based Java 1.5 gcc-java/libgcj
-- update from gcc-4_1-branch (-r121962:122163)
-  - PRs fortran/30478, fortran/30799, middle-end/24427, other/27843,
-	rtl-optimization/28173, rtl-optimization/28772,
-	rtl-optimization/29599, rtl-optimization/30787, target/19087,
-	tree-optimization/30823
-
-* Wed Feb 14 2007 Jakub Jelinek <jakub@redhat.com> 4.1.2-1
-- update from gcc-4_1-branch (-r121738:121962)
-  - GCC 4.1.2 release
-  - PRs fortran/24783, testsuite/30649, middle-end/30313
-- fix ICE in dwarf2out with limbo die nodes in namespace context
-  (Alexandre Oliva, #227376)
-- fix a SRA bug with bitfields (Alexandre Oliva, #223576)
-
-* Sun Feb 11 2007 Jakub Jelinek <jakub@redhat.com> 4.1.1-57
-- package up ammintrin.h on i386/x86_64
-- fix AMDfam10 testcases (H.J. Lu)
-- fix f951 assert accessing memory after free (H.J. Lu, PR fortran/27351)
-
-* Sat Feb 10 2007 Jakub Jelinek <jakub@redhat.com> 4.1.1-56
-- update from gcc-4_1-branch (-r121479:121738)
-  - PRs c++/29487, target/29487, target/30370
-- merge gomp fixes from gcc-4_2-branch (-r121689:121690)
-  PR c++/30703
-- add AMDfam10 support (Harsha Jagasia, #222897)
-- set build_ada to 1 on alpha (#224247)
-- regenerate libjava.util.TimeZone data from tzdata2007a (#227888)
-
-* Fri Feb  2 2007 Jakub Jelinek <jakub@redhat.com> 4.1.1-55
-- update from gcc-4_1-branch (-r121069:121479)
-  - PRs c++/28988, fortran/30278, libstdc++/30586, middle-end/29683,
-	objc/27438
-- add -march=core2 and -mtune=core2 support (Vlad Makarov)
-- fix sprintf builtin (PR middle-end/30473)
-- fix ICE on invalid __thread register on fields (PR c++/30536)
-- ignore install-info errors in scriptlets (#223687)
-- rename MNI and mni to SSSE3 and ssse3, keep -m{,no-}mni option and
-  __MNI__ macro for compatibility
-
-* Tue Jan 23 2007 Jakub Jelinek <jakub@redhat.com> 4.1.1-54
-- update from gcc-4_1-branch (-r120507:121069)
-  - PRs c++/28999, libgfortran/30435, objc/30479, rtl-optimization/29329,
-	target/30173, testsuite/12325
-- OpenMP fixes (PRs middle-end/27416, middle-end/30421, middle-end/30494)
-
-* Tue Jan  9 2007 Jakub Jelinek <jakub@redhat.com> 4.1.1-53
-- fix libgomp testsuite driver (Ulrich Weigand)
-- combiner fixes (Richard Sandiford, PR rtl-optimization/25514,
-  PR rtl-optimization/27736)
-
-* Fri Jan  5 2007 Jakub Jelinek <jakub@redhat.com> 4.1.1-52
-- update from gcc-4_1-branch (-r120325:120507)
-  - PRs c++/30382, middle-end/27826, middle-end/28116,
-	tree-optimization/30212
-
-* Thu Jan  4 2007 Jakub Jelinek <jakub@redhat.com> 4.1.1-51
-- bootstrap Ada on ppc32 (David Woodhouse)
-- fix complex division with -std=c99 or -std=gnu99 (PR c/30360)
-
-* Wed Jan  3 2007 Jakub Jelinek <jakub@redhat.com> 4.1.1-50
-- backwards compatibility with old layout of struct _Unwind_Context
-  (#220627)
-- fix preprocessor defines in assembly preprocessed with -std=...
-  (Steven Bosscher, PR c/25993)
-- fix PCH creation with templates (Jason Merrill, PR c++/28217)
-- fix dwarf2out ICE (Alexandre Oliva, #217529, PR debug/30189)
-
-* Tue Jan  2 2007 Jakub Jelinek <jakub@redhat.com> 4.1.1-49
-- update from gcc-4_1-branch (-r120062:120325)
-  - PRs debug/26964, fortran/30200, libfortran/30145
-- fix endless recursion in negate_expr/fold_unary (PR middle-end/30286)
-- fix cpp problem on empty source files (Tom Tromey, PR preprocessor/30001)
-- improve constructor disambiguation (Mark Mitchell, PR c++/28261,
-  PR c++/29535)
-- fix handling of non-NULL attribute on nested functions (Andrew Pinski,
-  PR tree-opt/30045)
-- fix ICE with friend templatized static member function (PR c++/29054)
-
-* Wed Dec 20 2006 Jakub Jelinek <jakub@redhat.com> 4.1.1-48
-- update from gcc-4_1-branch (-r119833:120062)
-  - PRs libstdc++/11953, target/24036
-- fix ia64 EH region boundaries where last br.call in the region
-  is not at the end of a bundle (#219596, PR target/30230)
-- fix DI resp. TImode __sync_*_compare_and_swap on i?86 resp. x86_64
-  (Kazu Hirata, #220258, PR target/27266)
-- fix asm vs. nested functions or OpenMP (#220250, PRs middle-end/30262,
-  middle-end/30263)
-- fix handling of complex shared OpenMP vars (Andrew Pinski,
-  PR middle-end/30143)
-
-* Thu Dec 14 2006 Jakub Jelinek <jakub@redhat.com> 4.1.1-47
-- fix ia64 prologue generation (Andreas Schwab, #219594, PR target/29166)
-- fix ppc64 divdi3 (PR target/30185)
-
-* Wed Dec 13 2006 Jakub Jelinek <jakub@redhat.com> 4.1.1-46
-- update from gcc-4_1-branch (-r119654:119833)
-  - PRs c++/27316, c++/28740, c++/29732, fortran/29820, fortran/29821,
-	fortran/29912, fortran/29916, fortran/30003, libstdc++/26497,
-	libstdc++/28125, libstdc++/28265, target/30039
-- fix loop unswitching (Zdenek Dvorak, #219138, PR rtl-optimization/30113)
-
-* Fri Dec  8 2006 Jakub Jelinek <jakub@redhat.com> 4.1.1-45
-- update from gcc-4_1-branch (-r119343:119654)
-  - PRs c++/14329, c++/28284, c++/29632, c++/29728, c++/29729, c++/29730,
-	c++/29733, c++/30022, libfortran/29810
-- add protoize.1 and unprotoize.1 man pages (#188914)
-- fix RTL sharing problem in combine (#218603, PR rtl-optimization/27761)
-- additions to libgcj-src (Ben Konrath, PR libgcj/30110)
-
-* Fri Dec  1 2006 Jakub Jelinek <jakub@redhat.com> 4.1.1-44
-- fix OpenMP loops with 0 iterations (PR libgomp/29947)
-
-* Thu Nov 30 2006 Jakub Jelinek <jakub@redhat.com> 4.1.1-43
-- update from gcc-4_1-branch (-r119167:119343)
-  - PRs c++/29022, fortran/29391, fortran/29489, fortran/29982,
-	libgfortran/29936, target/29319, tree-opt/29964
-- fix -fopenmp ICEs on omp constructs where the body never returns
-  (PR middle-end/29965)
-
-* Fri Nov 24 2006 Jakub Jelinek <jakub@redhat.com> 4.1.1-42
-- update from gcc-4_1-branch (-r119021:119167)
-  - fix s390{,x} __sync_* builtins
-- fix ppc64 libffi unwind info
-
-* Thu Nov 23 2006 Jakub Jelinek <jakub@redhat.com> 4.1.1-41
-- fix ICE with -fopenmp -fexceptions on ia64 (#216988, PR c/29955)
-- fix parsing of C++ if/switch/etc. conditions (PR c++/29886)
-
-* Wed Nov 22 2006 Jakub Jelinek <jakub@redhat.com> 4.1.1-40
-- disallow multiple vector_size attributes (PR c/29736)
-- don't ICE on main returning int with vector_size attribute (PR c++/29735)
-- hide symbols that shouldn't be exported from libgcj.so (GC_*, ffi_*,
-  lt_* etc., #216120)
-
-* Tue Nov 20 2006 Jakub Jelinek <jakub@redhat.com> 4.1.1-39
-- update from gcc-4_1-branch (-r118891:119021)
-  - PRs middle-end/26306, middle-end/29753, target/18553, target/29114,
-	target/29449, tree-opt/29788, tree-optimization/28888
-- fix some C++ vector conversions (PR c++/29734)
-- fix C++ ICE with value dependent const brace enclosed initializer
-  (PR c++/29570)
-
-* Thu Nov 16 2006 Jakub Jelinek <jakub@redhat.com> 4.1.1-38
-- update from gcc-4_1-branch (-r118805:118891)
-  - PRs rtl-optimization/29797
-- fix forwprop switch optimization (PR middle-end/29584)
-- remove old *34* provides (#215839)
-
-* Tue Nov 14 2006 Jakub Jelinek <jakub@redhat.com> 4.1.1-37
-- fix up check_effective_target_fopenmp tcl test for the testsuite
-  framework backport changes
-
-* Tue Nov 14 2006 Jakub Jelinek <jakub@redhat.com> 4.1.1-36
-- update from gcc-4_1-branch (-r118571:118805)
-  - PRs c++/29106, c++/29518, fortran/24518, fortran/29216, fortran/29314,
-	fortran/29371, fortran/29387, fortran/29392, fortran/29490,
-	fortran/29565, fortran/29630, fortran/29679, fortran/29713,
-	middle-end/21032, testsuite/28703, tree-opt/28545
-- honor initial conditions and variable types in conversion to perfect
-  nesting for -ftree-loop-linear optimizations (#209297,
-  PR tree-optimization/29581)
-
-* Sat Nov 11 2006 Jakub Jelinek <jakub@redhat.com> 4.1.1-35
-- fix libgcj_bc.so dummy lib on i?86/x86_64/ia64/s390/s390x
-
-* Sat Nov 11 2006 Jakub Jelinek <jakub@redhat.com> 4.1.1-34
-- fix libgcj_bc.so symlink and dummy lib placement to avoid 64-bit gcc-java
-  requiring 32-bit libc or vice versa
-- fix ICE on Fortran !$omp continued line followed by !$ conditional
-  line (PR fortran/29759)
-
-* Wed Nov  8 2006 Jakub Jelinek <jakub@redhat.com> 4.1.1-33
-- update from gcc-4_1-branch (-r118468:118571)
-  - PRs fortran/24398, fortran/27701, fortran/29098, fortran/29115,
-	fortran/29211, fortran/29232, fortran/29364, fortran/29373,
-	fortran/29407, libfortran/29627, tree-optimization/29610
-- fix java.net.SocketPermission (Gary Benson, #212739)
-- fix java.util.regex.Matcher (Ito Kazumitsu, #183698, PR classpath/29703)
-- fix # <linenum> <file> <flags> handling in libcpp when switching
-  from system header to non-system header or main source
-  (PR preprocessor/29612)
-- fix gcc configury detection of ld COMDAT support
-- move *.so symlinks from libgcj-devel to gcc-java (#214195)
-
-* Sat Nov  4 2006 Jakub Jelinek <jakub@redhat.com> 4.1.1-32
-- update from gcc-4_1-branch (-r118025:118468)
-  - PRs bootstrap/28400, fortran/29067, libgfortran/29563, middle-end/29250,
-	rtl-optimization/28970, rtl-optimization/29631, target/29377,
-	tree-optimization/27891
-  - fix infinite recursion in make_vector_type (#212848,
-    PR tree-optimization/29637)
-- merge gomp fixes from the trunk (-r118133:118134)
-  - PR fortran/29629
-- fix A < 0 ? <sign bit of A> : 0 optimization (#213821, PR middle-end/29695)
-- fix ICE in gfc_get_derived_type (Paul Thomas, #212936, PR fortran/29641)
-
-* Wed Oct 25 2006 Jakub Jelinek <jakub@redhat.com> 4.1.1-31
-- update from gcc-4_1-branch (-r117629:118025)
-  - PRs c++/20647, c++/25878, c++/26884, c++/27787, c++/28506, c++/28906,
-	c++/29020, c++/29175, c++/29318, c++/29408, c++/29435, c/27184,
-	c/29092, fortran/25091, fortran/25092, fortran/29284, fortran/29321,
-	fortran/29322, fortran/29393, fortran/29403, gcov/profile/26570,
-	inline-asm/29119, middle-end/20491, rtl-optimization/29323,
-	target/25519, target/28825, target/28960, target/29300,
-	testsuite/28829, tree-optimization/26969
-  - fix libstdc++.so backwards compatibility with GCC 3.4.x (#210452)
-- fix always_inline attribute at -O0 (Jan Hubicka, PR middle-end/29241)
-- fix function local static vars with used attribute (Jan Hubicka,
-  Richard Guenther, PR middle-end/29299)
-
-* Wed Oct 11 2006 Jakub Jelinek <jakub@redhat.com> 4.1.1-30
-- update from gcc-4_1-branch (-r117464:117629)
-  - PRs c++/28302, c++/28349, c++/28450, c++/29002, libstdc++/29095,
-	libstdc++/29354, libstdc++/29368, target/28490
-- fix gnu.xml.transform.TransformerImpl (Tom Tromey, #208854,
-  PR classpath/29362)
-
-* Fri Oct  6 2006 Jakub Jelinek <jakub@redhat.com> 4.1.1-29
-- update from gcc-4_1-branch (-r117266:117464)
-  - PRs bootstrap/26764, bootstrap/27334, c++/29080, c++/29138, c++/29226,
-	c/27489, c/27490, debug/28980, fortran/18791, libfortran/18791,
-	middle-end/28862, objc/29195, other/25035, tree-opt/28952
-  - fix s390{,x} address legitimization with TLS symbols (Angel Nunez
-    Mencias)
-- fix -fno-automatic with Fortran auto arrays with non-constant size
-  (#203928, PR fortran/28415)
-- fix char and short __sync_fetch_and_XXX (PR target/28924)
-- fix emitting of vector constants with incomplete initializers (PR c/29091)
-- fix ICE with multiple exit loop and -ftree-loop-linear
-  (#208935, PR tree-optimization/29290)
-
-* Sat Sep 30 2006 Jakub Jelinek <jakub@redhat.com> 4.1.1-28
-- fix i386/x86_64 legitimize_pic_address with TLS symbols (PR target/29198)
-- fix gimplification of post-increment with side-effects on the inner
-  expression (PR c/29154)
-
-* Thu Sep 28 2006 Jakub Jelinek <jakub@redhat.com> 4.1.1-27
-- update from gcc-4_1-branch (-r117225:117266)
-  - PR target/29230
-- restrict single entry mem{{,p}cpy,move,set} optimization to vars
-  and components thereof (PR middle-end/29272)
-- fix java.util.Locale (Tom Tromey, #201712)
-
-* Tue Sep 26 2006 Jakub Jelinek <jakub@redhat.com> 4.1.1-26
-- update from gcc-4_1-branch (-r117162:117225)
-  - PRs classpath/28661, libgcj/29178, libstdc++/29179, libstdc++/29224
-  - fix unwind info generation, broken in gcc-4.1.1-21
-    (Roger Sayle, PR debug/29132)
-
-* Sat Sep 23 2006 Jakub Jelinek <jakub@redhat.com> 4.1.1-25
-- update from gcc-4_1-branch (-r117069:117162)
-  - PRs c++/28996, c++/29087, middle-end/26983
-- fix -fprofile-use with anonymous namespaces (Jan Hubicka, PRs profile/20815,
-  profile/26399)
-- fix #pragma omp parallel and #pragma omp section that call nested
-  functions (PRs middle-end/25261, middle-end/28790)
-
-* Wed Sep 20 2006 Jakub Jelinek <jakub@redhat.com> 4.1.1-24
-- update from gcc-4_1-branch (-r117000:117069)
-  - PRs fortran/21918, fortran/28526, fortran/28817, fortran/29060,
-	fortran/29101, java/28754, java/28892, java/29013,
-	middle-end/27226, middle-end/4520, tree-optimization/28900
-- fix java.utils.logging.Logger (Mark Wielaard, #207111)
-- fix gnu.javax.net.ssl.provider.SSLSocket (Tom Tromey, #206904)
-- add support for Fortran OpenMP conditional inclusion (PR fortran/29097)
-- add some -D_FORTIFY_SOURCE compile time strncat buffer overflow checks
-
-* Sun Sep 17 2006 Jakub Jelinek <jakub@redhat.com> 4.1.1-23
-- update from gcc-4_1-branch (-r116958:117000)
-  - PRs fortran/29051, target/28946
-- fix single entry mem{{,p}cpy,move,set} optimization (Andrew Pinski,
-  PR tree-opt/29059)
-
-* Fri Sep 15 2006 Jakub Jelinek <jakub@redhat.com> 4.1.1-22
-- update from gcc-4_1-branch (-r116778:116958)
-  - PRs ada/21952, ada/29025, c++/26957, fortran/28890, fortran/28923,
-	fortran/28959, libfortran/28890, libfortran/28923, libfortran/28947,
-	middle-end/28493, other/23541, other/26507, rtl-optimization/28243,
-	rtl-optimization/28634, rtl-optimization/28636, rtl-optimization/28726,
-	target/13685, target/26504, target/27537, target/27681, target/28621,
-	target/29006, testsuite/28950, testsuite/29007
-- fix #pragma omp atomic (PR middle-end/28046)
-- speed up dominance frontiers calculation (Jan Hubicka)
-- add README.libgcjwebplugin.so to libgcj %%doc (Tom Fitzsimmons)
-- fix gcc-gfortran %%doc (#206333)
-- fix gcc-debuginfo (#205500)
-
-* Fri Sep  8 2006 Jakub Jelinek <jakub@redhat.com> 4.1.1-21
-- update from gcc-4_1-branch (-r116498:116778)
-  - PRs c++/19809, c++/26102, c++/26195, c++/26571, c++/26670, c++/26671,
-	c++/26696, c++/26917, c++/28860, c++/28878, c++/28886, fortran/20067,
-	fortran/24866, fortran/25077, fortran/25102, fortran/28005,
-	fortran/28873, fortran/28885, fortran/28908, libfortran/28005,
-	middle-end/27724, middle-end/28814, other/22313,
-	rtl-optimization/27616, rtl-optimization/28386, target/24367
-- add primitive class object symbols to libgcj_bc.so (Tom Tromey,
-  PR libgcj/28698)
-- optimize single entry memcpy/mempcpy/memmove/memset already at the tree
-  level (PR middle-end/27567)
-- add dependencies to *-devel subpackages, so that e.g. ppc64
-  libstdc++-devel requires 64-bit libstdc++, similarly for libgcj-devel
-  and libgcj/zlib-devel
-
-* Fri Aug 25 2006 Jakub Jelinek <jakub@redhat.com> 4.1.1-20
-- update from gcc-4_1-branch (-r116389:116498)
-  - PRs c++/28056, c++/28058, c++/28595, c++/28853, c/27558,
-	c/27893, c/28299, c/28418, driver/27622, libfortran/28452,
-	libfortran/28542, target/27075
-- optimize A / (B << N) where A and B is positive and B is a power of two
-  (Alan Modra, #195924, PR rtl-optimization/26026)
-- fix attribute handling in C++ (Jason Merrill, #204277, #204035,
-  PRs c++/28659, c++/28863)
-
-* Fri Aug 25 2006 Jakub Jelinek <jakub@redhat.com> 4.1.1-19
-- update from gcc-4_1-branch (-r116223:116389)
-  - PRs c++/23372, c++/27714, c++/28346, c++/28385, fortran/18111,
-	fortran/20886, fortran/25217, fortran/25828, fortran/28425,
-	fortran/28496, fortran/28601, fortran/28630, fortran/28660,
-	fortran/28735, fortran/28762, fortran/28771, fortran/28788,
-	libstdc++/28765, target/27565
-- another big Java merge from the trunk (Tom Fitzsimmons)
-- fix ICE in add_reg_br_prob_note (PR middle-end/28683)
-
-* Fri Aug 18 2006 Jakub Jelinek <jakub@redhat.com> 4.1.1-18
-- update from gcc-4_1-branch (-r116176:116223)
-  - PRs c++/28593, c++/28606, c++/28710, c/27697, middle-end/20256,
-	middle-end/25211, middle-end/26435
-- don't waste .rodata space when copying from const array with large
-  entries (PR middle-end/28755)
-- fix --combine with anonymous structures in unions (Alexandre Oliva,
-  PR c/27898)
-- rebuilt with latest binutils to pick up 64K -z commonpagesize on ppc*
-  (#203001)
-
-* Wed Aug 16 2006 Jakub Jelinek <jakub@redhat.com> 4.1.1-17
-- update from gcc-4_1-branch (-r116082:116176)
-  - PRs c++/27894, c++/28677, c/28649, middle-end/28075,
-	rtl-optimization/23454
-- merge gomp fixes from the trunk (-r116152:116154)
-  - PRs middle-end/28713, middle-end/28724
-- add -march=geode and -mtune=geode support (Vlad Makarov)
-- use %gs rather than %fs register on x86_64 with
-  -mcmodel=kernel -fstack-protector (Arjan van de Ven, #202842)
-- don't create jar manifest in libgcj-tools-4.*.jar (#200887)
-- externally_visible attribute fixes (Jan Hubicka, PRs c/25795, c++/27369)
-- --combine fixes for aggregates with attributes (PRs c/28706, c/28712)
-- further externally_visible attr fixes (PR c/28744)
-- fix invalid token pasting error message (PR preprocessor/28709)
-- obey OpenMP 2.5 chapter 4 env var requirements (whitespace rules
-  and case insensitivity in the env vars; PR libgomp/28725)
-- fix OPT_FLAGS on sparc
-
-* Sat Aug 12 2006 Jakub Jelinek <jakub@redhat.com> 4.1.1-16
-- fix multilib conflict in libgcj-tools-4.1.1.jar (#200887)
-
-* Fri Aug 11 2006 Jakub Jelinek <jakub@redhat.com> 4.1.1-15
-- update from gcc-4_1-branch (-r115877:116082)
-  - PRs c++/27508, c++/28148, c++/28250, c++/28256, c++/28257, c++/28259,
-	c++/28267, c++/28274, c++/28347, c++/28432, c++/28557, c++/28594,
-	c++/28637, c++/28638, c++/28639, c++/28640, c++/28641, c/27721,
-	c/28136, fortran/27981, fortran/28548, fortran/28590,
-	middle-end/28651, rtl-optimization/27291, rtl-optimization/28221,
-	target/27566, target/27827
-- fix Fortran ICE with nested function (Paul Thomas, #200618,
-  PR fortran/28600)
-
-* Wed Aug  2 2006 Jakub Jelinek <jakub@redhat.com> 4.1.1-14
-- update from gcc-4_1-branch (-r115644:115877)
-  - PRs c++/27572, c++/27668, c++/27962, c++/28025, c++/28258, c++/28523,
-	debug/25468, fortran/20892, fortran/27874, fortran/28129,
-	fortran/28439, libgfortran/28335, libgfortran/28339,
-	middle-end/28402, middle-end/28403, middle-end/28473,
-	target/27287, target/28247, tree-optimization/26719,
-	tree-optimization/27639, tree-optimization/27795,
-	tree-optimization/28029, tree-optimization/28238
-- BuildRequire firefox-devel instead of mozilla-devel
-
-* Tue Jul 25 2006 Alexandre Oliva <aoliva@redhat.com> 4.1.1-13
-- backport fix by Andrew Haley for build problems related with the
-  bootstrap ClassLoader
-
-* Mon Jul 24 2006 Alexandre Oliva <aoliva@redhat.com> 4.1.1-12
-- backport fix by Mark Wielaard for NullPointerException in GCJ web plugin
-
-* Fri Jul 21 2006 Jakub Jelinek <jakub@redhat.com> 4.1.1-11
-- update from gcc-4_1-branch (-r115565:115644)
-  - PRs target/27363, c++/27495, c++/28048, c++/28235, c++/28337, c++/28338,
-	c++/28363, middle-end/28283
-- turn back autoprov/autoreq on gcc-java, instead disable it on
-  libgcj-devel
-
-* Thu Jul 20 2006 Jakub Jelinek <jakub@redhat.com> 4.1.1-10
-- Java backport of from GCC trunk (Tom Tromey, Bryce McKinlay)
-  - include libgcjwebplugin.so, gappletviewer, gjarsigner, gkeytool
-- C++ visibility changes (Jason Merrill, PRs c++/28407, c++/28409)
-
-* Tue Jul 18 2006 Jakub Jelinek <jakub@redhat.com> 4.1.1-9
-- update from gcc-4_1-branch (-r115330:115565)
-  - PRs c++/28016, c++/28051, c++/28249, c++/28291, c++/28294, c++/28304,
-	c++/28343, c/26993, c/28286, fortran/20844, fortran/20893,
-	fortran/20903, fortran/25097, fortran/27980, fortran/28201,
-	fortran/28353, fortran/28384, libstdc++/27878,
-	tree-optimization/19505, tree-optimization/28162,
-	tree-optimization/28187
-- fix directory traversal issue in fastjar (Richard Guenther, CVE-2006-3619,
-  PR fastjar/28359)
-- fix ICE on complex assignment in nested fn (Richard Henderson,
-  PR middle-end/27889)
-- fix __builtin_constant_p in initializers (Mark Shinwell, #198849)
-- fix tree verification - IDENTIFIER_NODE can be shared (Diego Novillo)
-- fix duplicate_eh_regions
-- handle > 99 tree dumps in the testsuite
-
-* Sat Jul 15 2006 Jakub Jelinek <jakub@redhat.com> 4.1.1-8
-- fix handling of C++ template static data members in anonymous namespace
-  (PR c++/28370)
-- fix Fortran OpenMP handling of !$omp parallel do with lastprivate on the
-  iteration variable (PR fortran/28390)
-- backported reassociation pass rewrite (Daniel Berlin, Jeff Law,
-  Roger Sayle, Peter Bergner, PRs ada/24994, tree-optimization/26854)
-- BuildReq sharutils for uuencode
-
-* Tue Jul 11 2006 Jakub Jelinek <jakub@redhat.com> 4.1.1-7
-- update from gcc-4_1-branch (-r115058:115330)
-  - PRs c++/13983, c++/17519, c++/18681, c++/18698, c++/26577, c++/27019,
-	c++/27424, c++/27768, c++/27820, c++/28114, fortran/23420,
-	fortran/23862, fortran/24748, fortran/26801, fortran/27965,
-	fortran/28081, fortran/28094, fortran/28167, fortran/28174,
-	fortran/28213, fortran/28237, middle-end/27428, target/28084,
-	target/28207, tree-optimization/28218
-- use --hash-style=gnu by default
-- C++ visibility fixes (Jason Merrill, PRs c++/17470, c++/19134,
-  c++/21581, c++/21675, c++/25915, c++/26612, c++/26905, c++/26984,
-  c++/27000, c++/28215, c++/28279)
-- fix ppc insvdi_internal2/3 (David Edelsohn, Alan Modra, #197755,
-  PR target/28170)
-- avoid TFmode PRE_INC/PRE_DEC on ppc (David Edelsohn, PR target/28150)
-
-* Thu Jun 29 2006 Jakub Jelinek <jakub@redhat.com> 4.1.1-6
-- update from gcc-4_1-branch (-r114766:115058)
-  - PRs c++/27821, c++/28109, c++/28110, c++/28112, fortran/16206,
-	fortran/18769, fortran/19310, fortran/19904, fortran/20867,
-	fortran/20874, fortran/20876, fortran/22038, fortran/25049,
-	fortran/25050, fortran/25056, fortran/25073, fortran/27554,
-	fortran/27715, fortran/27784, fortran/27895, fortran/27958,
-	fortran/28118, fortran/28119, libfortran/27784, libfortran/27895,
-	libgcj/28178, middle-end/28045, middle-end/28151, target/27082,
-	target/27861, tree-optimization/27781
-- fix a reload problem that lead sometimes to writes to read-only objects
-  (Bernd Schmidt, #196736, PR middle-end/26991, PR rtl-optimization/25636)
-- ppc -mcpu=power6 initial support (Pete Steinmetz, #195924)
-
-* Tue Jun 20 2006 Jakub Jelinek <jakub@redhat.com> 4.1.1-5
-- fix C++ #pragma omp atomic (Mark Mitchell)
-
-* Mon Jun 19 2006 Jakub Jelinek <jakub@redhat.com> 4.1.1-4
-- update from gcc-4_1-branch (-r114555:114766)
-  - PRs bootstrap/22541, c++/21210, c++/26559, c++/27227, c++/27648,
-	c++/27665, c++/27666, c++/27689, c++/27884, c++/27933, c++/27951,
-	fortran/27786, java/28024, middle-end/27733, middle-end/27802,
-	target/27858, tree-optimization/27830
-- merge gomp changes from the trunk (-r114642:114643)
-  - PR libgomp/28008
-- fix -fmerge-all-constants
-- fix #pragma omp critical handling if not --enable-linux-futex
-
-* Tue Jun 13 2006 Jakub Jelinek <jakub@redhat.com> 4.1.1-3
-- add BuildRequires for elfutils-devel on ia64
-- fix a reload bug visible on s390x (Andreas Krebbel, #193912,
-  PR middle-end/27959)
-
-* Mon Jun 12 2006 Jakub Jelinek <jakub@redhat.com> 4.1.1-2
-- update from gcc-4_1-branch (-r114107:114555)
-  - PRs ada/27769, c++/20173, c++/26068, c++/26433, c++/26496, c++/27177,
-	c++/27385, c++/27447, c++/27451, c++/27601, c++/27713, c++/27716,
-	c++/27722, c++/27801, c++/27806, c++/27807, c++/27819, c/25161,
-	c/26818, c/27020, c/27718, fortran/14067, fortran/16943,
-	fortran/18003, fortran/19015, fortran/19777, fortran/20839,
-	fortran/20877, fortran/23091, fortran/23151, fortran/24168,
-	fortran/24558, fortran/25047, fortran/25058, fortran/25082,
-	fortran/25090, fortran/25098, fortran/25147, fortran/25746,
-	fortran/26551, fortran/27155, fortran/27320, fortran/27411,
-	fortran/27449, fortran/27470, fortran/27524, fortran/27552,
-	fortran/27584, fortran/27613, fortran/27655, fortran/27662,
-	fortran/27709, fortran/27897, libgcj/26483, libgfortran/24459,
-	libgfortran/27757, middle-end/27743, middle-end/27793,
-	target/25758, target/26223, target/27790, target/27842,
-	testsuite/27705, tree-optimization/26242, tree-optimization/26622
-- merge gomp changes from the trunk (-r114518:114520 and -r114524:114525)
-  - PRs preprocessor/27746, c/27747, c++/27748, fortran/27916
-- don't generate decls with the same DECL_UID in C++ FE (PR middle-end/27793)
-
-* Thu May 25 2006 Jakub Jelinek <jakub@redhat.com> 4.1.1-1
-- update from gcc-4_1-branch (-r113848:114107)
-  - GCC 4.1.1 release
-  - PR fortran/27553
-- fix i386/x86_64 -O0 -fpic link failure (#192816, PR target/27758)
-- fix gcjh on 64-bit hosts (#192700)
-- -fvar-tracking fixes needed for SystemTap (Alexandre Oliva, BZ#2438)
-
-* Wed May 17 2006 Jakub Jelinek <jakub@redhat.com> 4.1.0-19
-- update from gcc-4_1-branch (-r113785:113848)
-  - PRs c++/26757, c++/27339, c++/27491, driver/26885, rtl-optimization/14261,
-	target/26600, tree-optimization/27603
-- merge gomp changes from the trunk (-r113513:113514, -r113821:113823 and
-  -r113845:113846)
-  - PRs middle-end/27415, middle-end/27573
-- optimize handling of large CONSTRUCTORs (Bernd Schmidt,
-  PR middle-end/27620)
-
-* Mon May 15 2006 Jakub Jelinek <jakub@redhat.com> 4.1.0-18
-- update from gcc-4_1-branch (-r113722:113785)
-  - PRs c++/27315, c++/27581, c++/27582, rtl-optimization/22563
-- merge gomp changes from the trunk (-r113786:113790)
-
-* Sun May 14 2006 Jakub Jelinek <jakub@redhat.com> 4.1.0-17
-- make -mtune=z9-109 the default on s390{,x} (#184630)
-
-* Sat May 13 2006 Jakub Jelinek <jakub@redhat.com> 4.1.0-16
-- update from gcc-4_1-branch (-r113637:113722)
-  - PRs bootstrap/26872, c++/27547, fortran/20460, fortran/24549,
-	middle-end/27384, middle-end/27488, target/26545, target/27158
-- fix libgcj.pc location and content on x86_64, ppc64 and s390x (#185230)
-- make __dso_handle const, so that it is added into .data.rel.ro section
-  in shared libraries
-- fix a typo in __builtin_object_size computation (Richard Guenther,
-  PR tree-optimization/27532)
-- fix ICE on -O0 -g if static local variables are in unreachable code blocks
-  (Jan Hubicka, PR debug/26881)
-- fix ICEs with conflicts across abnormal edges (Zdenek Dvorak,
-  PRs tree-optimization/27283, tree-optimization/27548,
-  tree-optimization/27549)
-- warn about OpenMP section 2.9 region nesting violations
-- fix OpenMP fortran array REDUCTION with -fbounds-check (PR fortran/27446)
-- fix OpenMP {{FIRST,LAST}PRIVATE,REDUCTION} in orphaned construct on
-  Fortran dummy argument (PR middle-end/27416)
-- fix ICE on #pragma omp for unsigned iteration variable (PR c/27499)
-
-* Tue May  9 2006 Jakub Jelinek <jakub@redhat.com> 4.1.0-15
-- update from gcc-4_1-branch (-r113623:113637)
-  - PR fortran/27378
-- update from trunk (-r109500:109501, -r109670:109671, -r111341:111342,
-		     -r111704:111705, -r112546:112547, -r113111:113112,
-		     -r113339:113341, -r113511:113513)
-- fix loop peeling (Zdenek Dvorak, #190039, PR rtl-optimization/27335)
-
-* Mon May  8 2006 Jakub Jelinek <jakub@redhat.com> 4.1.0-14
-- update from gcc-4_1-branch (-r113489:113623)
-  - PRs c++/27422, c++/27427, fortran/24813, fortran/25099, fortran/25681,
-	fortran/27269, fortran/27324, libfortran/26985, objc/27240,
-	target/26481, target/26765, tree-optimization/25985,
-	tree-optimization/27151
-- fix zero size field handling in structalias (Richard Guenther,
-  PR tree-optimization/27409)
-- fix PR tree-optimization/27136 (Richard Guenther)
-- fix classification of invalid struct types on x86_64 (Volker Reichelt,
-  PR target/27421)
-
-* Wed May  3 2006 Jakub Jelinek <jakub@redhat.com> 4.1.0-13
-- update from gcc-4_1-branch (-r113416:113489)
-  - PRs c/25309, target/27374, target/27387, tree-optimization/27364
-- merge gomp changes from trunk (-r113267:113271, -r113411:113412,
-  -r113452:113456, -r113482:113483, -r113493:113494)
-  - PR fortran/27395
-- additional gomp fixes (PRs c++/27359, middle-end/27388)
-- package SYSCALLS.c.X for protoize (#190047)
-- fix gcj -fprofile-arcs -ftest-coverage (Alexandre Oliva, #177450)
-- reenable profiledbootstrap
-- in 64-bit builds remove 32-bit /usr/lib/lib* libraries from the
-  buildroots (and similarly on 32-bit builds remove 64-bit /usr/lib64/lib*)
-  before AutoReq generation (#190541)
-
-* Mon May  1 2006 Jakub Jelinek <jakub@redhat.com> 4.1.0-12
-- update from gcc-4_1-branch (-r113242:113416)
-  - PRs c++/26534, c++/26912, c++/27094, c++/27278, c++/27279, fortran/26017,
-	libgfortran/20257, libgfortran/27304, libgfortran/27360,
-	libstdc++/26513, middle-end/26565, middle-end/26869,
-	rtl-optimization/26685, target/26826
-- merge gomp changes from trunk (-r113255:113256, -r113420:113421)
-  - PRs libgomp/25865, c/27358
-- assorted gomp fixes (PRs middle-end/27325, middle-end/27310,
-  middle-end/27328, middle-end/27337, c++/26943)
-- fix builtin memset (Alan Modra, PR middle-end/27260, PR middle-end/27095)
-
-* Tue Apr 25 2006 Jakub Jelinek <jakub@redhat.com> 4.1.0-11
-- update from gcc-4_1-branch (-r113149:113242)
-  - PRs c/25875, c/26774, fortran/18803, fortran/25597, fortran/25669,
-	fortran/26787, fortran/26822, fortran/26834, fortran/27089,
-	fortran/27113, fortran/27122, fortran/27124, target/21283,
-	target/26961
-- fix number of iterations computation (Zdenek Dvorak, #189376,
-  PR tree-optimization/27285)
-- fix handling of volatile in the inliner (Andrew Pinski, Richard Guenther,
-  PR tree-optimization/27236)
-- strip useless type conversions in the inliner (Andrew Pinski,
-  Richard Guenther, PR tree-optimization/27218)
-
-* Fri Apr 21 2006 Jakub Jelinek <jakub@redhat.com> 4.1.0-10
-- update from gcc-4_1-branch (-r113110:113149)
-  - PRs libgcj/21941, libgcj/27170, libgcj/27231, libgfortran/27138,
-	libstdc++/26424, mudflap/26789
-- improve dir/../-stripping code to support /usr/lib64 and /usr/lib in
-  separate AFS mountpoints (Alexandre Oliva, #137200)
-- fix fortran real(16) transpose and reshape on 32-bit architectures
-  (PR fortran/26769)
-- fix i?86/x86_64 vector extraction (Alexandre Oliva, #187450)
-- fix testcase for ppc32 va_arg bug
-- fix testsuite log uuencoding
-- fix acats timeout framework
-
-* Thu Apr 20 2006 Jakub Jelinek <jakub@redhat.com> 4.1.0-9
-- update from gcc-4_1-branch (-r112951:113110)
-  - PRs c++/10385, c++/26036, c++/26365, c++/26558, classpath/27163,
-	fortran/26769, libgcj/27171, libgfortran/26766, libstdc++/27162,
-	middle-end/27095, middle-end/27134, target/27182,
-	tree-optimization/26643, tree-optimization/26821,
-	tree-optimization/26854, tree-optimization/27087
-- fix ppc32 va_arg bug (Alan Modra)
-- assorted gomp fixes (PRs c++/25874, middle-end/25989, c/25996, c/26171,
-  middle-end/26913)
-- fix pretty printing C array types (#188944)
-- fix ICE on unprototyped alloca (PR tree-optimization/26865)
-- fix truncation optimization overflow handling (PR middle-end/26729)
-- uuencode dejagnu testsuite log files in rpmbuild output
-
-* Fri Apr 14 2006 Jakub Jelinek <jakub@redhat.com> 4.1.0-8
-- update from gcc-4_1-branch (-r112825:112951)
-  - PRs c++/26122, c++/26295, fortran/23634, fortran/25619, fortran/26257,
-	libgcj/23829, libgcj/26522, libgfortran/26890, target/27006
-- merge gomp changes from trunk (-r112934:112935)
-  - PR libgomp/26651
-- fix ICE in gomp handling of EH regions (PR middle-end/26823)
-
-* Mon Apr 10 2006 Jakub Jelinek <jakub@redhat.com> 4.1.0-7
-- update from gcc-4_1-branch (-r112727:112825)
-  - PRs fortran/19101, fortran/25031, fortran/26779, fortran/26891,
-	fortran/26976, target/26508, tree-optimization/26919
-- fix libgfortran printing of REAL*16 for IEEE quad and IBM extended formats
-  (PR libgfortran/24685)
-- fix Fortran -fbounds-check (Roger Sayle, #188409, PR middle-end/22375)
-- fix Java StackTraceElement.toString() (Mark Wielaard, #183212,
-  PR classpath/27081)
-- fix -fopenmp -static
-
-* Thu Apr  6 2006 Jakub Jelinek <jakub@redhat.com> 4.1.0-6
-- update from gcc-4_1-branch (-r112706:112727)
-  - PRs classpath/24752, classpath/27028, libgcj/26625, libgcj/27024,
-	tree-optimization/26996
-- reenable PR c++/19238, c++/21764 fixes, only PR c++/21581 is not
-  applied
-- better fix for Java GC vs. pthread_create (Bryce McKinlay, #182263,
-  PR libgcj/13212)
-- fix objc_push_parm (#185398)
-- fix ICE with -feliminate-dwarf2-dups and using namespace (#187787,
-  PR debug/27057)
-
-* Wed Apr  5 2006 Jakub Jelinek <jakub@redhat.com> 4.1.0-5
-- update from gcc-4_1-branch (-r112431:112706)
-  - PRs bootstrap/26936, bootstrap/27023, classpath/25924, fortran/19303,
-	fortran/25358, fortran/26816, java/25414, java/26042, java/26858,
-	libfortran/26735, libgcj/26990, libstdc++/26777, testsuite/25741,
-	tree-optimization/18527, tree-optimization/26763,
-	tree-optimization/26830
-- merge gomp changes from trunk (-r112602:112603 and -r112618:112619)
-- temporarily revert PR c++/21764, c++/19238, c++/21581 fixes (#187399)
-
-* Tue Mar 28 2006 Jakub Jelinek <jakub@redhat.com> 4.1.0-4
-- update from gcc-4_1-branch (-r111697:112431)
-  - PRs ada/25885, c/26004, fortran/17298, fortran/20935, fortran/20938,
-	fortran/23092, fortran/24519, fortran/24557, fortran/25045,
-	fortran/25054, fortran/25075, fortran/25089, fortran/25378,
-	fortran/25395, fortran/26041, fortran/26054, fortran/26064,
-	fortran/26107, fortran/26277, fortran/26393, fortran/26716,
-	fortran/26741, libfortran/21303, libfortran/24903, libgcj/24461,
-	libgcj/25713, libgcj/26103, libgcj/26688, libgcj/26706,
-	libgfortran/26499, libgfortran/26509, libgfortran/26554,
-	libgfortran/26661, libgfortran/26880, libstdc++/26132,
-	middle-end/18859, middle-end/19543, middle-end/26557,
-	middle-end/26630, other/26489, target/25917, target/26347,
-	target/26459, target/26532, target/26607, tree-optimization/26524,
-	tree-optimization/26587, tree-optimization/26672
-  - fix visibility and builtins interaction (Jason Merrill,
-    PR middle-end/20297, #175442)
-- merge gomp changes from trunk (-r112022:112023, -r112250:112251,
-  -r112252:112253, -r112350:112351 and -r112282:112283)
-  - PRs c++/26691, middle-end/26084, middle-end/26611, c++/26690,
-	middle-end/25989
-- support visibility attribute on namespaces (Jason Merrill, PR c++/21764,
-  PR c++/19238)
-- use hidden visibility for anonymous namespaces by default (Jason Merrill,
-  PR c++/21581)
-
-* Thu Mar  9 2006 Alexandre Oliva <aoliva@redhat.com> 4.1.0-3
-- make ppc32 TLS PIC code sequences compatible with secure plt (#184446)
-  (Richard Henderson and myself)
-
-* Sat Mar  4 2006 Jakub Jelinek <jakub@redhat.com> 4.1.0-2
-- update from gcc-4_1-branch (-r111570:111697)
-  - PRs c++/26291, libgfortran/26136, libgfortran/26423, libgfortran/26464,
-	libstdc++/26526, rtl-optimization/26345, target/19061, target/26453
-- handle DW_CFA_val_{offset,offset_sf,expression} in the libgcc{,_s} unwinder
-
-* Tue Feb 28 2006 Jakub Jelinek <jakub@redhat.com> 4.1.0-1
-- update from gcc-4_1-branch (-r111466:111570)
-  - GCC 4.1.0 release
-  - PR other/26473
-
-* Mon Feb 27 2006 Jakub Jelinek <jakub@redhat.com> 4.1.0-0.31
-- add __floatuns[sdt]i[sdxt]f exports to libgcc_s.so.1 (Joseph S. Myers)
-- fix unwinding through signal frames (#175951, PR other/26208, glibc BZ#300)
-
-* Mon Feb 27 2006 Jakub Jelinek <jakub@redhat.com> 4.1.0-0.30
-- update from gcc-4_1-branch (-r111278:111466)
-  - GCC 4.1.0 RC2
-  - PRs fortran/26201, libobjc/26309, rtl-optimization/25603, target/25603
-  - fix nested vector shifts (#182047, PR middle-end/26379)
-- merge gomp changes from trunk (-r111390:111391, -r111428:111429 and
-  -r111440:111441)
-  - PR middle-end/26412
-- fortran MATMUL optimization (Richard Sandiford)
-- fortran WHERE optimizations (Roger Sayle)
-- x86_64 _mm_monitor fixes (H.J. Lu, PR target/24879)
-- add MNI support on i?86/x86_64, -mmni option and <tmmintrin.h> header
-  (H.J Lu)
-
-* Sun Feb 19 2006 Jakub Jelinek <jakub@redhat.com> 4.1.0-0.29
-- update from gcc-4_1-branch (-r111179:111278)
-  - PRs ada/13408, c++/26266, target/22209, target/26189
-  - fix ppc32 -fpic reload problem with extenddftf2 pattern
-    (David Edelsohn, #181625, PR target/26350)
-  - fix the PR middle-end/26334 patch
-
-* Fri Feb 17 2006 Jakub Jelinek <jakub@redhat.com> 4.1.0-0.28
-- update from gcc-4_1-branch (-r110978:111179)
-  - PRs ada/20753, bootstrap/16787, bootstrap/26053, fortran/25806,
-	libfortran/15234, libgfortran/25949, middle-end/25335,
-	target/25259, target/26255
-  - fix ICE with shift by -1 (#181586, PR middle-end/26300)
-- merge gomp changes from trunk (-r110983:110984, -r111017:111018,
-  -r111152:111153 and -r111204:111205)
-  - PRs bootstrap/26161, fortran/26224, libgomp/25938, libgomp/25984
-- don't define _REENTRANT in gthr*.h (#176278, PR libstdc++/11953)
-- define _REENTRANT if -pthread and _POSIX_SOURCE if -posix on s390{,x}
-  and ia64
-- fix ICE with register variable and __asm statement (#181731,
-  PR middle-end/26334)
-
-* Tue Feb 14 2006 Alexandre Oliva <aoliva@redhat.com> 4.1.0-0.27
-- merge fix by Zdenek Dvorak for regression introduced by patch for PR
-  tree-optimization/26209
-
-* Tue Feb 14 2006 Jakub Jelinek <jakub@redhat.com> 4.1.0-0.26
-- update from gcc-4_1-branch (-r110903:110978)
-  - PRs fortran/20861, fortran/20871, fortran/25059, fortran/25070,
-	fortran/25083, fortran/25088, fortran/25103, fortran/26038,
-	fortran/26074, inline-asm/16194, libfortran/24685,
-	libfortran/25425, target/26141, tree-optimization/26258
-- ABI change - revert to GCC 3.3 and earlier behaviour of
-  zero sized bitfields in packed structs (Michael Matz, PR middle-end/22275)
-- fix valarrays vs. non-POD (Paolo Carlini, Gabriel Dos Reis,
-  PR libstdc++/25626)
-- fix C++ duplicate declspec diagnostics (Volker Reichelt, PR c++/26151)
-- fix dominance ICE (Zdenek Dvorak, PR tree-optimization/26209)
-- add some new Intel {,e,x}mmintrin.h intrinsics (H.J. Lu)
-- speedup bitset<>::_M_copy_to_string (Paolo Carlini)
-- fix tree_expr_nonzero_p (Jeff Law)
-- fix TRUTH_XOR_EXPR handling in VRP (Jeff Law)
-
-* Mon Feb 13 2006 Jakub Jelinek <jakub@redhat.com> 4.1.0-0.25
-- update from gcc-4_1-branch (-r110831:110903)
-  - PRs c++/16405, c++/24996, fortran/14771, fortran/20858, fortran/25756,
-	middle-end/22439
-- merge gomp changes from trunk (-r110719:110720, -r110852:110853 and
-  -r110907:110908)
-  - PR libgomp/25936
-- fix gimplification of const fn pointers to builting functions
-  (PR middle-end/26092)
-- make sure Fortran length artifical variables aren't SAVEd (Andrew Pinski,
-  PR fortran/26246)
-
-* Fri Feb 10 2006 Jakub Jelinek <jakub@redhat.com> 4.1.0-0.24
-- update from gcc-4_1-branch (-r110632:110831)
-  - PRs tree-opt/26180, c++/26070, c++/26071, fortran/25577, java/26192,
-	libfortran/23815, libstdc++/26127, target/23359, target/26109,
-	tree-opt/25251
-- remove gcc-ppc32, gcc-c++-ppc32, gcc-sparc32 and gcc-c++-sparc32
-  subpackages, they do more harm than good.  Particularly this time
-  gcc*ppc32 and gcc*sparc32 defaulted to DFmode long double rather
-  than TFmode long double
-
-* Mon Feb  6 2006 Jakub Jelinek <jakub@redhat.com> 4.1.0-0.23
-- update from gcc-4_1-branch (-r110582:110632)
-  - PRs classpath/24618, classpath/25141, classpath/25727, fortran/25046,
-	fortran/26039
-- use LOGICAL*1 instead of LOGICAL*4 for Fortran where temporary masks
-  (Roger Sayle)
-- fix symbol versions in s390 libgcc_s.so.1
-- sparc32 and alpha long double fixes
-- BuildRequires libXt-devel
-- BuildRequires and Requires glibc-devel >= 2.3.90-35 on arches
-  that are switching long double
-
-* Sat Feb  4 2006 Jakub Jelinek <jakub@redhat.com> 4.1.0-0.22
-- fix ia64 debug info patch
-- fix libjava pthread_create wrapper patch
-
-* Sat Feb  4 2006 Jakub Jelinek <jakub@redhat.com> 4.1.0-0.21
-- update from gcc-4_1-branch (-r110433:110582)
-  - PRs c++/25342, c++/25979, fortran/20845, fortran/24266,
-	fortran/24958, fortran/25072, libstdc++/21554, middle-end/24901,
-	middle-end/25977, middle-end/26001, target/25864, target/25926,
-	target/25960
-  - put ia64 read-only sections that require runtime relocations
-    even in -fno-pic code into .data.rel.ro etc. sections
-    rather than .rodata to avoid DT_TEXTREL binaries
-    (Richard Henderson, PR target/26090)
-- merge gomp changes from trunk (-r110511:110512 and -r110549:110552)
-- fix ia64 debug info coverage of epilogues (Alexandre Oliva, PR debug/24444)
-- export pthread_create from libgcj.so.7 as a wrapper around
-  libpthread.so.0's pthread_create that handles GC (Anthony Green, Tom Tromey)
-- BC-ABI java lookup fix (Andrew Haley, #179070, #178156)
-- on sparc64 emit .register %g7,#ignore instead of .register %g7,#scratch
-  to avoid problems with TLS or -fstack-protector
-- switch to IBM extended format long double by default on ppc and ppc64
-- switch to IEEE 754 quad format long double by default on s390, s390x,
-  sparc32 and alpha
-
-* Wed Feb  1 2006 Jakub Jelinek <jakub@redhat.com> 4.1.0-0.20
-- merge from gomp-20050808-branch (up to -r110392)
-  - fix PR c++/25874 (Diego Novillo)
-
-* Wed Feb  1 2006 Jakub Jelinek <jakub@redhat.com> 4.1.0-0.19
-- s390{,x} long double patch fix for s390x ICEs on test-ldouble
-  and tst-align2 (Andreas Krebbel)
-
-* Tue Jan 31 2006 Jakub Jelinek <jakub@redhat.com> 4.1.0-0.18
-- update from gcc-4_1-branch (-r110317:110433)
-  - PRs c++/25855, c++/25999, fortran/17911, fortran/18578, fortran/18579,
-	fortran/20857, fortran/20885, fortran/20895, fortran/25030,
-	fortran/25835, fortran/25951, java/21428, libgfortran/25835,
-	target/14798, target/25706, target/25718, target/25947,
-	target/26018, testsuite/25318
-- add -mtune=generic support for i?86 and x86_64 (Jan Hubicka, H.J. Lu,
-  Evandro Menezes)
-- use -mtune=generic by default if neither -march= nor -mtune= is specified
-  on command line on i?86 or x86_64
-- updated s390{,x} long double patch, fixing ICEs on s390x glibc build
-  (Andreas Krebbel, Ulrich Weigand)
-
-* Sat Jan 28 2006 Jakub Jelinek <jakub@redhat.com> 4.1.0-0.17
-- update from gcc-4_1-branch (-r110062:110317)
-  - PRs ada/20548, ada/21317, bootstrap/25859, c++/25552, c++/25856,
-	c++/25858, c++/25895, c/25892, fortran/18540, fortran/20852,
-	fortran/20881, fortran/23308, fortran/24276, fortran/25084,
-	fortran/25085, fortran/25086, fortran/25124, fortran/25416,
-	fortran/25538, fortran/25625, fortran/25710, fortran/25716,
-	fortran/25901, fortran/25964, java/25816, other/24829,
-	rtl-optimization/24626, rtl-optimization/25654, target/24831,
-	testsuite/24962, testsuite/25590
-- atomic builtin fixes (Richard Henderson)
-- -mlong-double-128 support on ppc32 (David Edelsohn, Alan Modra)
-- -mlong-double-128 support on s390 and s390x (Andreas Krebbel,
-  Ulrich Weigand)
-
-* Sat Jan 21 2006 Jakub Jelinek <jakub@redhat.com> 4.1.0-0.16
-- update from gcc-4_1-branch (-r109815:110062)
-  - PRs ada/24533, c++/16829, c++/22136, c++/25836, c++/25854, c/25805,
-	classpath/20198, fortran/20869, fortran/20875, fortran/25024,
-	fortran/25631, fortran/25697, fortran/25785, libgcj/25840,
-	libgfortran/25631, libgfortran/25697, libstdc++/25823,
-	libstdc++/25824, target/25731, testsuite/25171
-  - fix X509Certificate.java (#174708, #177733)
-
-* Tue Jan 17 2006 Jakub Jelinek <jakub@redhat.com> 4.1.0-0.15
-- update from gcc-4_1-branch (-r109401:109815)
-  - PRs c++/24824, c++/25386, c++/25663, c/25682, classpath/25803,
-	fortran/12456, fortran/20868, fortran/20870, fortran/21256,
-	fortran/21977, fortran/22146, fortran/24640, fortran/25029,
-	fortran/25093, fortran/25101, fortran/25486, fortran/25598,
-	fortran/25730, libgcj/21637, libgcj/23499, libgfortran/25598,
-	libstdc++/23591, libstdc++/25472, rtl-optimization/24257,
-	rtl-optimization/25367, rtl-optimization/25662, target/20754,
-	target/25042, target/25168, testsuite/25728, testsuite/25777,
-	tree-opt/24365, tree-optimization/23109, tree-optimization/23948,
-	tree-optimization/24123, tree-optimization/25125
-- update from gomp-20050608-branch (up to -r109816)
-- fix ppc32 libffi (#177655)
-- fix lookup_conversions_r (#177918)
-- define __STDC__ as a normal macro rather than a preprocessor builtin
-  unless it needs to change its value between system and non-system
-  headers (PR preprocessor/25717)
-
-* Fri Jan  6 2006 Jakub Jelinek <jakub@redhat.com> 4.1.0-0.14
-- update from gcc-4_1-branch (-r109369:109401)
-  - PR fortran/23675
-  - fix Java shutdown hook (Tom Tromey, #165136)
-- fix libjava/shlibpath.m4 (PR libgcj/24940)
-
-* Thu Jan  5 2006 Jakub Jelinek <jakub@redhat.com> 4.1.0-0.13
-- update from gcc-4_1-branch (-r108957:109369)
-  - PRs c++/23171, c++/23172, c++/24671, c++/24782, c++/25294, c++/25417,
-	c++/25439, c++/25492, c++/25625, c++/25632, c++/25633, c++/25634,
-	c++/25635, c++/25637, c++/25638, c/25183, c/25559, debug/25562,
-	fortran/18990, fortran/19362, fortran/20244, fortran/20862,
-	fortran/20864, fortran/20889, fortran/22607, fortran/23152,
-	fortran/25018, fortran/25053, fortran/25055, fortran/25063,
-	fortran/25064, fortran/25066, fortran/25067, fortran/25068,
-	fortran/25069, fortran/25106, fortran/25391, fortran/25532,
-	fortran/25586, fortran/25587, libgcj/9715, libgcj/19132,
-	libgfortran/25139, libgfortran/25419, libgfortran/25510,
-	libgfortran/25550, libgfortran/25594, middle-end/24827, objc/25328,
-	rtl-optimization/21041, rtl-optimization/25130, target/24342,
-	target/25554, target/25572, testsuite/25214, testsuite/25441,
-	testsuite/25442, testsuite/25444, tree-opt/25513
-  - create java Package for compiled classes which are linked in but
-    loaded by the system class loader (Tom Tromey, #176956)
-  - fix posix_memalign prototype in <mm_malloc.h> (#176461)
-- update from gomp-20050608-branch (up to -r109349)
-- buildrequire libXtst-devel (#176898)
-- fix built in path to classmap.db on x86_64, s390x and ppc64 (#176562)
-- fix debug info for preprocessed Fortran code (#175071, PR fortran/25324)
-
-* Fri Dec 22 2005 Jakub Jelinek <jakub@redhat.com> 4.1.0-0.12
-- make sure GCJFLAGS are propagated down to libjava's configure
-- build crt{begin,end}*.o with -fno-asynchronous-unwind-tables
-  if RPM_OPT_FLAGS include -fasynchronous-unwind-tables
-- fix PR c++/25369 (Mark Mitchell)
-- fix PR libgfortran/25307 (Jerry DeLisle)
-
-* Thu Dec 22 2005 Jakub Jelinek <jakub@redhat.com> 4.1.0-0.11
-- update from gcc-4_1-branch (-r108861:108957)
-  - PRs debug/25518, fortran/24268, fortran/25423, libgfortran/25463,
-	rtl-optimization/25196, tree-optimization/24793
-- validate changes in forward copy propagation (PR target/25005)
-- fix Java constants constructors on 64-bit big endian arches
-  (Andrew Haley, PR java/25535)
-- fix PR c++/25364 (Mark Mitchell)
-
-* Wed Dec 21 2005 Jakub Jelinek <jakub@redhat.com> 4.1.0-0.10
-- update from gcc-4_1-branch (-r108539:108861)
-  - PRs ada/18659, ada/18819, c++/20552, c++/21228, c++/24278, c++/24915,
-	fortran/18197, fortran/25458, libgfortran/25039, libgfortran/25264,
-	libgfortran/25349, libobjc/14382, libstdc++/25421, middle-end/22313,
-	middle-end/24306, rtl-optimization/23837, rtl-optimization/25224,
-	rtl-optimization/25310, target/24969, testsuite/25215,
-	tree-optimization/23838, tree-optimization/24378
-- update from gomp-20050608-branch (up to -r108859)
-  - fix _Pragma handling (Richard Henderson, PR preprocessor/25240)
-- fix reload re-recognition of insns (Alan Modra, PR rtl-optimization/25432)
-- don't peephole RTX_FRAME_RELATED_P insns (Andrew Haley,
-  PR middle-end/25121)
-
-* Thu Dec 15 2005 Jakub Jelinek <jakub@redhat.com> 4.1.0-0.9
-- fix OpenMP lastprivate handling for global vars (Aldy Hernandez)
-- fix gnu.xml.dom.DomNode's detach method (Caolan McNamara,
-  PR classpath/25426)
-- fix up the #175569 fix (Tom Tromey, #175833, PR java/25429)
-- fix strength reduction miscompilation of libgnomecanvas
-  (#175669, PR rtl-optimization/24899)
-- create libgcj-*.jar with -@E options and feed a sorted list to
-  it rather than relying on filesystem sorting
-
-* Wed Dec 14 2005 Jakub Jelinek <jakub@redhat.com> 4.1.0-0.8
-- update from gcc-4_1-branch (-r108414:108539)
-  - PRs classpath/25389, fortran/23815, fortran/25078, target/25254
-- fix Java ICE on initialized static final var used in case
-  (Andrew Haley, #175569, PR java/25429)
-- fix crash in _Unwind_IteratePhdrCallback (Andrew Haley)
-- don't Require alsa-lib-devel, just BuildRequire it
-  (#175627)
-- use .gnu.linkonce.d.rel.ro.* sections for objects that
-  are constant after relocation processing
-
-* Mon Dec 12 2005 Jakub Jelinek <jakub@redhat.com> 4.1.0-0.7
-- update from gcc-4_1-branch (-r108157:108414)
-  - PRs c++/19317, c++/19397, c++/19762, c++/19764, c++/25010, c++/25300,
-	c++/25337, debug/24908, fortran/25292, libfortran/25116,
-	libgcj/25265, target/17828, target/19005, target/23424,
-	target/25212, target/25258, target/25311, testsuite/20772,
-	testsuite/24478, testsuite/25167, tree-optimization/25248
-- update from gomp-20050608-branch (up to -r108424)
-- add BuildReq for alsa-lib-devel and configure with --disable-dssi
-- sort files in libgcj-*.jar and touch them to latest ChangeLog
-  timestamp, so that libgcj-*.jar is identical across multilib arches
-- don't use pushw instruction on i?86, as that leads to ICEs
-  in def_cfa_1, because negative CFA offsets not multiple of 4
-  aren't representable in the unwind and debug info (PR debug/25023,
-  PR target/25293)
-- fix ICEs with x86_64 -mlarge-data-threshold=N and STRING_CSTs
-  (Jan Hubicka, PR target/24188)
-- fix Java ICE with input_filename being unset (Alexandre Oliva, #174912)
-- don't accept invalid int x,; in C++ (Petr Machata, PR c++/24907)
-- fix Java ICE in do_resolve_class (Andrew Haley, PR java/25366,
-  PR java/25368)
-- make sure g*.dg/compat/struct-layout-1.exp generated tests
-  don't use arrays with entries aligned more than their size (PR c++/25331)
-- don't use -liberty in g++.dg/compat/struct-layout-1.exp tests
-
-* Wed Dec  7 2005 Jakub Jelinek <jakub@redhat.com> 4.1.0-0.6
-- allow #pragmas at C struct scope as well as ObjC class scope
-  (PR c/25246)
-- some gomp testcase fixes
-
-* Wed Dec  7 2005 Jakub Jelinek <jakub@redhat.com> 4.1.0-0.5
-- update from gcc-4_1-branch (-r107810:108157)
-  - PRs bootstrap/25207, c++/24103, c++/24138, c++/24173, fortran/15809,
-	fortran/21302, fortran/23912, java/25283, libfortran/24919,
-	libgfortran/25149, middle-end/25176, other/13873, target/18580,
-	target/24108, target/24475, target/24934, target/25199,
-	testsuite/25247, tree-optimization/24963
-- update from gomp-20050608-branch (up to -r108105)
-- -Wstrict-aliasing C++ support (Richard Guenther, Dirk Mueller,
-  Paolo Carlini, PRs c++/14024, libstdc++/24975)
-- fix mark_used_regs regression (Andreas Krebbel, PR rtl-optimization/24823)
-- fix reload ICE (Kaz Kojima, PR target/24982)
-- fix PPC ICE on Linux kernel (Paolo Bonzini, PR target/24982)
-- fix s390{,x} shifts with shift count ANDed with constant mask
-  (Andreas Krebbel, PR target/25268)
-- s390{,x} atomic builtins enhancements (Adrian Straetling)
-
-* Thu Dec  1 2005 Jakub Jelinek <jakub@redhat.com> 4.1.0-0.4
-- update from gcc-4_1-branch (-r107618:107810)
-  - PRs c++/21123, c++/21166, fortran/24223, fortran/24705, java/18278,
-	libgfortran/25109, middle-end/20109, middle-end/25120,
-	middle-end/25158, rtl-opt/24930
-- use %%{_tmppath} in BuildRoot (#174594)
-- require libgomp in gcc subpackage
-- fix Java .so symlinks
-
-* Tue Nov 29 2005 Jakub Jelinek <jakub@redhat.com> 4.1.0-0.3
-- fix IA-64 local-exec TLS handling
-- fix IA-64 __sync_fetch_and_{sub,xor,...}
-
-* Mon Nov 28 2005 Jakub Jelinek <jakub@redhat.com> 4.1.0-0.2
-- update from gcc-4_1-branch (-r107462:107618)
-  - PRs fortran/24917, libgcj/25016, libgfortran/24945, middle-end/21309,
-	middle-end/25022, libfortran/24991
-- update from gomp-20050608-branch (up to -r107619)
-  - fix omp_get_wti{me,ck} on older kernels
-- ppc32 EH fix
-- fix #pragma omp atomic
-- resurrected multi32 hack for ppc32 and sparc32
-
-* Thu Nov 24 2005 Jakub Jelinek <jakub@redhat.com> 4.1.0-0.1
-- initial 4.1 package, using newly created redhat/gcc-4_1-branch

diff --git a/gcc43-build-id.patch b/gcc43-build-id.patch
new file mode 100644
index 0000000..4e162e6
--- /dev/null
+++ b/gcc43-build-id.patch
@@ -0,0 +1,74 @@
+2007-07-22  Roland McGrath  <roland@redhat.com>
+
+	* config/rs6000/sysv4.h (LINK_EH_SPEC): Add --build-id for
+	non-relocatable link.
+	* config/linux.h (LINK_EH_SPEC): Likewise.
+	* config/sparc/linux.h (LINK_EH_SPEC): Likewise.
+	* config/sparc/linux64.h (LINK_EH_SPEC): Likewise.
+	* config/alpha/elf.h (LINK_EH_SPEC): Likewise.
+	* config/ia64/linux.h (LINK_EH_SPEC): Likewise.
+
+--- gcc/config/rs6000/sysv4.h.~1~
++++ gcc/config/rs6000/sysv4.h
+@@ -1044,7 +1044,7 @@ extern int fixuplabelno;
+   %{!dynamic-linker:-dynamic-linker /lib/ld.so.1}}}"
+ 
+ #if defined(HAVE_LD_EH_FRAME_HDR)
+-# define LINK_EH_SPEC "%{!static:--eh-frame-hdr} "
++# define LINK_EH_SPEC "%{!static:--eh-frame-hdr} %{!r:--build-id} "
+ #endif
+ 
+ #define CPP_OS_LINUX_SPEC "-D__unix__ -D__gnu_linux__ -D__linux__ \
+--- gcc/config/linux.h.~1~
++++ gcc/config/linux.h
+@@ -85,7 +85,7 @@ Boston, MA 02110-1301, USA.  */
+     } while (0)
+ 
+ #if defined(HAVE_LD_EH_FRAME_HDR)
+-#define LINK_EH_SPEC "%{!static:--eh-frame-hdr} "
++#define LINK_EH_SPEC "%{!static:--eh-frame-hdr} %{!r:--build-id} "
+ #endif
+ 
+ /* Define this so we can compile MS code for use with WINE.  */
+--- gcc/config/sparc/linux64.h.~1~
++++ gcc/config/sparc/linux64.h
+@@ -316,7 +316,7 @@ do {									\
+ #define DITF_CONVERSION_LIBFUNCS 1
+ 
+ #if defined(HAVE_LD_EH_FRAME_HDR)
+-#define LINK_EH_SPEC "%{!static:--eh-frame-hdr} "
++#define LINK_EH_SPEC "%{!static:--eh-frame-hdr} %{!r:--build-id} "
+ #endif
+ \f
+ #ifdef HAVE_AS_TLS
+--- gcc/config/sparc/linux.h.~1~
++++ gcc/config/sparc/linux.h
+@@ -188,7 +188,7 @@ do {									\
+ #define DITF_CONVERSION_LIBFUNCS 1
+ 
+ #if defined(HAVE_LD_EH_FRAME_HDR)
+-#define LINK_EH_SPEC "%{!static:--eh-frame-hdr} "
++#define LINK_EH_SPEC "%{!static:--eh-frame-hdr} %{!r:--build-id} "
+ #endif
+ \f
+ #ifdef HAVE_AS_TLS
+--- gcc/config/alpha/elf.h.~1~
++++ gcc/config/alpha/elf.h
+@@ -453,5 +453,5 @@ extern int alpha_this_gpdisp_sequence_nu
+    I imagine that other systems will catch up.  In the meantime, it
+    doesn't harm to make sure that the data exists to be used later.  */
+ #if defined(HAVE_LD_EH_FRAME_HDR)
+-#define LINK_EH_SPEC "%{!static:--eh-frame-hdr} "
++#define LINK_EH_SPEC "%{!static:--eh-frame-hdr} %{!r:--build-id} "
+ #endif
+--- gcc/config/ia64/linux.h.~1~
++++ gcc/config/ia64/linux.h
+@@ -56,7 +56,7 @@ do {						\
+    Signalize that because we have fde-glibc, we don't need all C shared libs
+    linked against -lgcc_s.  */
+ #undef LINK_EH_SPEC
+-#define LINK_EH_SPEC ""
++#define LINK_EH_SPEC "%{!r:--build-id} "
+ 
+ #define MD_UNWIND_SUPPORT "config/ia64/linux-unwind.h"
+ 

diff --git a/gcc43-c++-builtin-redecl.patch b/gcc43-c++-builtin-redecl.patch
new file mode 100644
index 0000000..77655ad
--- /dev/null
+++ b/gcc43-c++-builtin-redecl.patch
@@ -0,0 +1,102 @@
+2007-10-02  Jakub Jelinek  <jakub@redhat.com>
+
+	* decl.c (duplicate_decls): When redeclaring a builtin function,
+	keep the merged decl builtin whenever types match, even if new
+	decl defines a function.
+
+	* gcc.dg/builtins-65.c: New test.
+	* g++.dg/ext/builtin10.C: New test.
+
+--- gcc/cp/decl.c.jj	2007-10-01 22:11:09.000000000 +0200
++++ gcc/cp/decl.c	2007-10-02 11:39:46.000000000 +0200
+@@ -1988,23 +1988,21 @@ duplicate_decls (tree newdecl, tree oldd
+ 	  DECL_ARGUMENTS (olddecl) = DECL_ARGUMENTS (newdecl);
+ 	  DECL_RESULT (olddecl) = DECL_RESULT (newdecl);
+ 	}
++      /* If redeclaring a builtin function, it stays built in.  */
++      if (types_match && DECL_BUILT_IN (olddecl))
++	{
++	  DECL_BUILT_IN_CLASS (newdecl) = DECL_BUILT_IN_CLASS (olddecl);
++	  DECL_FUNCTION_CODE (newdecl) = DECL_FUNCTION_CODE (olddecl);
++	  /* If we're keeping the built-in definition, keep the rtl,
++	     regardless of declaration matches.  */
++	  COPY_DECL_RTL (olddecl, newdecl);
++	}
+       if (new_defines_function)
+ 	/* If defining a function declared with other language
+ 	   linkage, use the previously declared language linkage.  */
+ 	SET_DECL_LANGUAGE (newdecl, DECL_LANGUAGE (olddecl));
+       else if (types_match)
+ 	{
+-	  /* If redeclaring a builtin function, and not a definition,
+-	     it stays built in.  */
+-	  if (DECL_BUILT_IN (olddecl))
+-	    {
+-	      DECL_BUILT_IN_CLASS (newdecl) = DECL_BUILT_IN_CLASS (olddecl);
+-	      DECL_FUNCTION_CODE (newdecl) = DECL_FUNCTION_CODE (olddecl);
+-	      /* If we're keeping the built-in definition, keep the rtl,
+-		 regardless of declaration matches.  */
+-	      COPY_DECL_RTL (olddecl, newdecl);
+-	    }
+-
+ 	  DECL_RESULT (newdecl) = DECL_RESULT (olddecl);
+ 	  /* Don't clear out the arguments if we're redefining a function.  */
+ 	  if (DECL_ARGUMENTS (olddecl))
+--- gcc/testsuite/gcc.dg/builtins-65.c.jj	2007-10-02 11:23:51.000000000 +0200
++++ gcc/testsuite/gcc.dg/builtins-65.c	2007-10-02 11:24:12.000000000 +0200
+@@ -0,0 +1,25 @@
++/* { dg-do compile } */
++/* { dg-options "-O2" } */
++
++typedef __SIZE_TYPE__ size_t;
++extern void __chk_fail (void);
++extern int snprintf (char *, size_t, const char *, ...);
++extern inline __attribute__((gnu_inline, always_inline)) int snprintf (char *a, size_t b, const char *fmt, ...)
++{
++  if (__builtin_object_size (a, 0) != -1UL && __builtin_object_size (a, 0) < b)
++    __chk_fail ();
++  return __builtin_snprintf (a, b, fmt, __builtin_va_arg_pack ());
++}
++extern int snprintf (char *, size_t, const char *, ...) __asm ("mysnprintf");
++
++char buf[10];
++
++int
++main (void)
++{
++  snprintf (buf, 10, "%d%d\n", 10, 10);
++  return 0;
++}
++
++/* { dg-final { scan-assembler "mysnprintf" } } */
++/* { dg-final { scan-assembler-not "__chk_fail" } } */
+--- gcc/testsuite/g++.dg/ext/builtin10.C.jj	2007-10-02 11:19:45.000000000 +0200
++++ gcc/testsuite/g++.dg/ext/builtin10.C	2007-10-02 11:23:26.000000000 +0200
+@@ -0,0 +1,27 @@
++// { dg-do compile }
++// { dg-options "-O2" }
++
++typedef __SIZE_TYPE__ size_t;
++extern "C" {
++extern void __chk_fail (void);
++extern int snprintf (char *, size_t, const char *, ...);
++extern inline __attribute__((gnu_inline, always_inline)) int snprintf (char *a, size_t b, const char *fmt, ...)
++{
++  if (__builtin_object_size (a, 0) != -1UL && __builtin_object_size (a, 0) < b)
++    __chk_fail ();
++  return __builtin_snprintf (a, b, fmt, __builtin_va_arg_pack ());
++}
++extern int snprintf (char *, size_t, const char *, ...) __asm ("mysnprintf");
++}
++
++char buf[10];
++
++int
++main (void)
++{
++  snprintf (buf, 10, "%d%d\n", 10, 10);
++  return 0;
++}
++
++// { dg-final { scan-assembler "mysnprintf" } }
++// { dg-final { scan-assembler-not "__chk_fail" } }

diff --git a/gcc43-ia64-libunwind.patch b/gcc43-ia64-libunwind.patch
new file mode 100644
index 0000000..e4fdd61
--- /dev/null
+++ b/gcc43-ia64-libunwind.patch
@@ -0,0 +1,538 @@
+2004-11-27  Jakub Jelinek  <jakub@redhat.com>
+
+	* config.gcc (ia64*-*-linux*): If native and libelf is installed,
+	use ia64/t-glibc-no-libunwind instead of the other t-*unwind*
+	fragments.
+	* config/ia64/t-glibc-no-libunwind: New file.
+	* config/ia64/change-symver.c: New file.
+	* config/ia64/unwind-ia64.c: If USE_SYMVER_GLOBAL and SHARED,
+	define _Unwind_* to __symverglobal_Unwind_*.
+	(alias): Undefine.
+	(symverglobal): Define.  Use it on _Unwind_*.
+	* config/ia64/mkmap-symver-multi.awk: New file.
+	* config/ia64/libgcc-ia64-no-libunwind.ver: New file.
+
+--- gcc/config.gcc.jj	2004-10-04 08:55:44.000000000 -0400
++++ gcc/config.gcc	2004-11-13 05:23:50.000000000 -0500
+@@ -1185,9 +1185,16 @@ ia64*-*-freebsd*)
+ 	;;
+ ia64*-*-linux*)
+ 	tm_file="${tm_file} dbxelf.h elfos.h svr4.h linux.h ia64/sysv4.h ia64/linux.h"
+-	tmake_file="${tmake_file} ia64/t-ia64 t-libunwind ia64/t-glibc"
+-	if test x$with_system_libunwind != xyes ; then
+-		tmake_file="${tmake_file} t-libunwind-elf ia64/t-glibc-libunwind"
++	tmake_file="${tmake_file} ia64/t-ia64"
++	if test x${target} = x${host} && test x${target} = x${build} \
++	   && grep gelf_getverdef /usr/include/gelf.h > /dev/null 2>&1 \
++	   && test -f /usr/lib/libelf.so; then
++		tmake_file="${tmake_file} ia64/t-glibc-no-libunwind"
++	else
++		tmake_file="${tmake_file} t-libunwind ia64/t-glibc"
++		if test x$with_system_libunwind != xyes ; then
++			tmake_file="${tmake_file} t-libunwind-elf ia64/t-glibc-libunwind"
++		fi
+ 	fi
+ 	target_cpu_default="MASK_GNU_AS|MASK_GNU_LD"
+ 	extra_parts="crtbegin.o crtend.o crtbeginS.o crtendS.o crtfastmath.o"
+--- gcc/config/ia64/t-glibc-no-libunwind.jj	2004-02-18 10:27:36.000000000 -0500
++++ gcc/config/ia64/t-glibc-no-libunwind	2004-11-15 09:56:33.000000000 -0500
+@@ -0,0 +1,30 @@
++# Don't use system libunwind library on IA-64 GLIBC based system,
++# but make _Unwind_* symbols unversioned, so that created programs
++# are usable even when libgcc_s uses libunwind.
++LIB2ADDEH += $(srcdir)/config/ia64/fde-glibc.c
++SHLIB_MAPFILES += $(srcdir)/config/ia64/libgcc-ia64-no-libunwind.ver
++SHLIB_MKMAP = $(srcdir)/config/ia64/mkmap-symver-multi.awk
++
++SHLIB_LINK = $(GCC_FOR_TARGET) $(LIBGCC2_CFLAGS) -shared -nodefaultlibs \
++	-Wl,--soname=$(SHLIB_SONAME) \
++	-Wl,--version-script=$(SHLIB_MAP) \
++	-o $(SHLIB_DIR)/$(SHLIB_SONAME).tmp @multilib_flags@ $(SHLIB_OBJS) -lc && \
++	rm -f $(SHLIB_DIR)/$(SHLIB_SOLINK) && \
++	if [ -f $(SHLIB_DIR)/$(SHLIB_SONAME) ]; then \
++	  mv -f $(SHLIB_DIR)/$(SHLIB_SONAME) \
++		$(SHLIB_DIR)/$(SHLIB_SONAME).backup; \
++	else true; fi && \
++	gcc -O2 -o $(SHLIB_DIR)/$(SHLIB_SONAME).tweak \
++	  $(srcdir)/config/ia64/change-symver.c -lelf && \
++	$(SHLIB_DIR)/$(SHLIB_SONAME).tweak $(SHLIB_DIR)/$(SHLIB_SONAME).tmp \
++	GCC_3.4.2 _GLOBAL_ \
++	_Unwind_GetGR _Unwind_RaiseException _Unwind_GetRegionStart _Unwind_SetIP \
++	_Unwind_GetIP _Unwind_GetLanguageSpecificData _Unwind_Resume \
++	_Unwind_DeleteException _Unwind_SetGR _Unwind_ForcedUnwind \
++	_Unwind_Backtrace _Unwind_FindEnclosingFunction _Unwind_GetCFA \
++	_Unwind_Resume_or_Rethrow _Unwind_GetBSP && \
++	rm -f $(SHLIB_DIR)/$(SHLIB_SONAME).tweak && \
++	mv $(SHLIB_DIR)/$(SHLIB_SONAME).tmp $(SHLIB_DIR)/$(SHLIB_SONAME) && \
++	$(LN_S) $(SHLIB_SONAME) $(SHLIB_DIR)/$(SHLIB_SOLINK)
++
++TARGET_LIBGCC2_CFLAGS += -DUSE_SYMVER_GLOBAL
+--- gcc/config/ia64/change-symver.c.jj	2004-02-18 10:27:36.000000000 -0500
++++ gcc/config/ia64/change-symver.c	2004-11-13 05:23:50.000000000 -0500
+@@ -0,0 +1,211 @@
++#define _GNU_SOURCE 1
++#define _FILE_OFFSET_BITS 64
++#include <endian.h>
++#include <errno.h>
++#include <error.h>
++#include <fcntl.h>
++#include <fnmatch.h>
++#include <gelf.h>
++#include <stdlib.h>
++#include <string.h>
++#include <unistd.h>
++
++int
++compute_veridx (const char *name, Elf *elf, Elf_Data *verd, GElf_Shdr *verd_shdr)
++{
++  if (strcmp (name, "_GLOBAL_") == 0)
++    return 1;
++
++  int cnt;
++  size_t offset = 0;
++  for (cnt = verd_shdr->sh_info; --cnt >= 0; )
++    {
++      GElf_Verdef defmem;
++      GElf_Verdef *def;
++      GElf_Verdaux auxmem;
++      GElf_Verdaux *aux;
++      unsigned int auxoffset;
++
++      /* Get the data at the next offset.  */
++      def = gelf_getverdef (verd, offset, &defmem);
++      if (def == NULL)
++	break;
++
++      auxoffset = offset + def->vd_aux;
++      aux = gelf_getverdaux (verd, auxoffset, &auxmem);
++      if (aux == NULL)
++	break;
++
++      if (strcmp (name, elf_strptr (elf, verd_shdr->sh_link,
++		  aux->vda_name)) == 0)
++	return def->vd_ndx;
++
++      /* Find the next offset.  */
++      offset += def->vd_next;
++    }
++
++  return -1;
++}
++
++int
++main (int argc, char **argv)
++{
++  if (argc < 4)
++    error (1, 0, "Usage: change_symver library from_symver to_symver symbol...\nExample: change_symver libfoo.so FOO_1.0 *global* bar baz");
++
++  const char *fname = argv[1];
++
++  /* Open the file.  */
++  int fd;
++  fd = open (fname, O_RDWR);
++  if (fd == -1)
++    error (1, errno, fname);
++
++  elf_version (EV_CURRENT);
++
++  /* Now get the ELF descriptor.  */
++  Elf *elf = elf_begin (fd, ELF_C_READ_MMAP, NULL);
++  if (elf == NULL || elf_kind (elf) != ELF_K_ELF)
++    error (1, 0, "Couldn't open %s: %s", fname, elf_errmsg (-1));
++
++  size_t shstrndx;
++  /* Get the section header string table index.  */
++  if (elf_getshstrndx (elf, &shstrndx) < 0)
++    error (1, 0, "cannot get shstrndx from %s", fname);
++
++  GElf_Ehdr ehdr_mem;
++  GElf_Ehdr *ehdr;
++
++  /* We need the ELF header in a few places.  */
++  ehdr = gelf_getehdr (elf, &ehdr_mem);
++  if (ehdr == NULL)
++    error (1, 0, "couldn't get ELF headers %s: %s", fname, elf_errmsg (-1));
++
++  Elf_Scn *scn = NULL;
++  GElf_Shdr shdr_mem, verd_shdr, ver_shdr, dynsym_shdr;
++  Elf_Data *ver = NULL, *verd = NULL, *dynsym = NULL;
++
++  while ((scn = elf_nextscn (elf, scn)) != NULL)
++    {
++      GElf_Shdr *shdr = gelf_getshdr (scn, &shdr_mem);
++
++      if (shdr == NULL)
++	error (1, 0, "couldn't get shdr from %s", fname);
++
++      if ((shdr->sh_flags & SHF_ALLOC) != 0)
++	{
++	  const char *name = elf_strptr (elf, shstrndx, shdr->sh_name);
++	  Elf_Data **p;
++
++	  if (strcmp (name, ".gnu.version") == 0)
++	    {
++	      p = &ver;
++	      ver_shdr = *shdr;
++	    }
++	  else if (strcmp (name, ".gnu.version_d") == 0)
++	    {
++	      p = &verd;
++	      verd_shdr = *shdr;
++	    }
++	  else if (strcmp (name, ".dynsym") == 0)
++	    {
++	      p = &dynsym;
++	      dynsym_shdr = *shdr;
++	    }
++	  else
++	    continue;
++
++	  if (*p != NULL)
++	    error (1, 0, "Two %s sections in %s", name, fname);
++	  *p = elf_getdata (scn, NULL);
++	  if (*p == NULL || elf_getdata (scn, *p) != NULL)
++	    error (1, 0, "No data or non-contiguous data in %s section in %s",
++		   name, fname);
++	}
++    }
++
++  if (ver == NULL || verd == NULL || dynsym == NULL)
++    error (1, 0, "Couldn't find one of the needed sections in %s", fname);
++
++  int from_idx = compute_veridx (argv[2], elf, verd, &verd_shdr);
++  if (from_idx == -1)
++    error (1, 0, "Could not find symbol version %s in %s", argv[2], fname);
++
++  int to_idx = compute_veridx (argv[3], elf, verd, &verd_shdr);
++  if (to_idx == -1)
++    error (1, 0, "Could not find symbol version %s in %s", argv[3], fname);
++
++  if (dynsym_shdr.sh_entsize != gelf_fsize (elf, ELF_T_SYM, 1, ehdr->e_version)
++      || dynsym_shdr.sh_size % dynsym_shdr.sh_entsize
++      || ver_shdr.sh_entsize != 2
++      || (ver_shdr.sh_size & 1)
++      || dynsym_shdr.sh_size / dynsym_shdr.sh_entsize != ver_shdr.sh_size / 2)
++    error (1, 0, "Unexpected sh_size or sh_entsize in %s", fname);
++
++  size_t nentries = ver_shdr.sh_size / 2;
++  size_t cnt;
++  GElf_Versym array[nentries];
++  for (cnt = 0; cnt < nentries; ++cnt)
++    {
++      GElf_Versym vsymmem;
++      GElf_Versym *vsym;
++
++      vsym = gelf_getversym (ver, cnt, &vsymmem);
++      if (vsym == NULL)
++	error (1, 0, "gelt_getversym failed in %s: %s", fname, elf_errmsg (-1));
++
++      array[cnt] = *vsym;
++      if (*vsym != from_idx)
++	continue;
++
++      GElf_Sym sym_mem;
++      GElf_Sym *sym;
++      sym = gelf_getsym (dynsym, cnt, &sym_mem);
++      if (sym == NULL)
++	error (1, 0, "gelt_getsym failed in %s: %s", fname, elf_errmsg (-1));
++
++      const char *name = elf_strptr (elf, dynsym_shdr.sh_link, sym->st_name);
++
++      int argn;
++      for (argn = 4; argn < argc; ++argn)
++	if (fnmatch (argv[argn], name, 0) == 0)
++	  {
++	    array[cnt] = to_idx;
++	    break;
++	  }
++    }
++
++  if (sizeof (array[0]) != 2)
++    abort ();
++
++#if __BYTE_ORDER == __LITTLE_ENDIAN
++  if (ehdr->e_ident[EI_DATA] == ELFDATA2LSB)
++    ;
++  else if (ehdr->e_ident[EI_DATA] == ELFDATA2MSB)
++#elif __BYTE_ORDER == __BIG_ENDIAN
++  if (ehdr->e_ident[EI_DATA] == ELFDATA2MSB)
++    ;
++  else if (ehdr->e_ident[EI_DATA] == ELFDATA2LSB)
++#else
++# error Unsupported endianity
++#endif
++    {
++      for (cnt = 0; cnt < nentries; ++cnt)
++	array[cnt] = ((array[cnt] & 0xff) << 8) | ((array[cnt] & 0xff00) >> 8);
++    }
++  else
++    error (1, 0, "Unknown EI_DATA %d in %s", ehdr->e_ident[EI_DATA], fname);
++
++  if (elf_end (elf) != 0)
++    error (1, 0, "couldn't close %s: %s", fname, elf_errmsg (-1));
++
++  if (lseek (fd, ver_shdr.sh_offset, SEEK_SET) != (off_t) ver_shdr.sh_offset)
++    error (1, 0, "failed to seek to %zd in %s", (size_t) ver_shdr.sh_offset,
++	   fname);
++
++  if (write (fd, array, 2 * nentries) != (ssize_t) (2 * nentries))
++    error (1, 0, "failed to write .gnu.version section into %s", fname);
++
++  close (fd);
++  return 0;
++}
+--- gcc/config/ia64/unwind-ia64.c.jj	2004-10-04 08:55:57.000000000 -0400
++++ gcc/config/ia64/unwind-ia64.c	2004-11-15 09:07:45.000000000 -0500
+@@ -51,6 +51,51 @@
+ #define UNW_FLAG_UHANDLER(x)	((x) & 0x0000000200000000L)
+ #define UNW_LENGTH(x)		((x) & 0x00000000ffffffffL)
+ 
++#if defined (USE_SYMVER_GLOBAL) && defined (SHARED)
++extern _Unwind_Reason_Code __symverglobal_Unwind_Backtrace
++  (_Unwind_Trace_Fn, void *);
++extern void __symverglobal_Unwind_DeleteException
++  (struct _Unwind_Exception *);
++extern void * __symverglobal_Unwind_FindEnclosingFunction (void *);
++extern _Unwind_Reason_Code __symverglobal_Unwind_ForcedUnwind
++  (struct _Unwind_Exception *, _Unwind_Stop_Fn, void *);
++extern _Unwind_Word __symverglobal_Unwind_GetCFA
++  (struct _Unwind_Context *);
++extern _Unwind_Word __symverglobal_Unwind_GetBSP
++  (struct _Unwind_Context *);
++extern _Unwind_Word __symverglobal_Unwind_GetGR
++  (struct _Unwind_Context *, int );
++extern _Unwind_Ptr __symverglobal_Unwind_GetIP (struct _Unwind_Context *);
++extern void *__symverglobal_Unwind_GetLanguageSpecificData
++  (struct _Unwind_Context *);
++extern _Unwind_Ptr __symverglobal_Unwind_GetRegionStart
++  (struct _Unwind_Context *);
++extern _Unwind_Reason_Code __symverglobal_Unwind_RaiseException
++  (struct _Unwind_Exception *);
++extern void __symverglobal_Unwind_Resume (struct _Unwind_Exception *);
++extern _Unwind_Reason_Code __symverglobal_Unwind_Resume_or_Rethrow
++   (struct _Unwind_Exception *);
++extern void __symverglobal_Unwind_SetGR
++  (struct _Unwind_Context *, int, _Unwind_Word);
++extern void __symverglobal_Unwind_SetIP
++  (struct _Unwind_Context *, _Unwind_Ptr);
++#define _Unwind_Backtrace __symverglobal_Unwind_Backtrace
++#define _Unwind_DeleteException __symverglobal_Unwind_DeleteException
++#define _Unwind_FindEnclosingFunction __symverglobal_Unwind_FindEnclosingFunction
++#define _Unwind_ForcedUnwind __symverglobal_Unwind_ForcedUnwind
++#define _Unwind_GetBSP __symverglobal_Unwind_GetBSP
++#define _Unwind_GetCFA __symverglobal_Unwind_GetCFA
++#define _Unwind_GetGR __symverglobal_Unwind_GetGR
++#define _Unwind_GetIP __symverglobal_Unwind_GetIP
++#define _Unwind_GetLanguageSpecificData __symverglobal_Unwind_GetLanguageSpecificData
++#define _Unwind_GetRegionStart __symverglobal_Unwind_GetRegionStart
++#define _Unwind_RaiseException __symverglobal_Unwind_RaiseException
++#define _Unwind_Resume __symverglobal_Unwind_Resume
++#define _Unwind_Resume_or_Rethrow __symverglobal_Unwind_Resume_or_Rethrow
++#define _Unwind_SetGR __symverglobal_Unwind_SetGR
++#define _Unwind_SetIP __symverglobal_Unwind_SetIP
++#endif
++
+ enum unw_application_register
+ {
+   UNW_AR_BSP,
+@@ -2402,4 +2447,44 @@ alias (_Unwind_SetGR);
+ alias (_Unwind_SetIP);
+ #endif
+ 
++#if defined (USE_SYMVER_GLOBAL) && defined (SHARED)
++#undef alias
++#define symverglobal(name, version) \
++__typeof (__symverglobal##name) __symverlocal##name		\
++  __attribute__ ((alias ("__symverglobal" #name)));		\
++__asm__ (".symver __symverglobal" #name"," #name "@@GCC_3.4.2");\
++__asm__ (".symver __symverlocal" #name"," #name "@" #version)
++
++#undef _Unwind_Backtrace
++#undef _Unwind_DeleteException
++#undef _Unwind_FindEnclosingFunction
++#undef _Unwind_ForcedUnwind
++#undef _Unwind_GetBSP
++#undef _Unwind_GetCFA
++#undef _Unwind_GetGR
++#undef _Unwind_GetIP
++#undef _Unwind_GetLanguageSpecificData
++#undef _Unwind_GetRegionStart
++#undef _Unwind_RaiseException
++#undef _Unwind_Resume
++#undef _Unwind_Resume_or_Rethrow
++#undef _Unwind_SetGR
++#undef _Unwind_SetIP
++symverglobal (_Unwind_Backtrace, GCC_3.3);
++symverglobal (_Unwind_DeleteException, GCC_3.0);
++symverglobal (_Unwind_FindEnclosingFunction, GCC_3.3);
++symverglobal (_Unwind_ForcedUnwind, GCC_3.0);
++symverglobal (_Unwind_GetBSP, GCC_3.3.2);
++symverglobal (_Unwind_GetCFA, GCC_3.3);
++symverglobal (_Unwind_GetGR, GCC_3.0);
++symverglobal (_Unwind_GetIP, GCC_3.0);
++symverglobal (_Unwind_GetLanguageSpecificData, GCC_3.0);
++symverglobal (_Unwind_GetRegionStart, GCC_3.0);
++symverglobal (_Unwind_RaiseException, GCC_3.0);
++symverglobal (_Unwind_Resume, GCC_3.0);
++symverglobal (_Unwind_Resume_or_Rethrow, GCC_3.3);
++symverglobal (_Unwind_SetGR, GCC_3.0);
++symverglobal (_Unwind_SetIP, GCC_3.0);
++#endif
++
+ #endif
+--- gcc/config/ia64/mkmap-symver-multi.awk.jj	2004-02-18 10:27:36.000000000 -0500
++++ gcc/config/ia64/mkmap-symver-multi.awk	2004-11-15 09:46:50.000000000 -0500
+@@ -0,0 +1,133 @@
++# Generate an ELF symbol version map a-la Solaris and GNU ld.
++#	Contributed by Richard Henderson <rth@cygnus.com>
++#
++# This file is part of GCC.
++#
++# GCC is free software; you can redistribute it and/or modify it under
++# the terms of the GNU General Public License as published by the Free
++# Software Foundation; either version 2, or (at your option) any later
++# version.
++#
++# GCC is distributed in the hope that it will be useful, but WITHOUT
++# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
++# or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public
++# License for more details.
++#
++# You should have received a copy of the GNU General Public License
++# along with GCC; see the file COPYING.  If not, write to the Free
++# Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA
++# 02110-1301, USA.
++
++BEGIN {
++  state = "nm";
++  sawsymbol = 0;
++}
++
++# Remove comment and blank lines.
++/^ *#/ || /^ *$/ {
++  next;
++}
++
++# We begin with nm input.  Collect the set of symbols that are present
++# so that we can not emit them into the final version script -- Solaris
++# complains at us if we do.
++
++state == "nm" && /^%%/ {
++  state = "ver";
++  next;
++}
++
++state == "nm" && ($1 == "U" || $2 == "U") {
++  next;
++}
++
++state == "nm" && NF == 3 {
++  if ($3 ~ /^[^@]*@GCC_[0-9.]*$/) {
++    def[$3] = 1
++    tl=$3
++    sub(/^.*@/,"",tl)
++    ver[$3] = tl
++  } else {
++    sub(/@@?GCC_[0-9.]*$/,"",$3)
++    def[$3] = 1;
++  }
++  sawsymbol = 1;
++  next;
++}
++
++state == "nm" {
++  next;
++}
++
++# Now we process a simplified variant of the Solaris symbol version
++# script.  We have one symbol per line, no semicolons, simple markers
++# for beginning and ending each section, and %inherit markers for
++# describing version inheritence.  A symbol may appear in more than
++# one symbol version, and the last seen takes effect.
++
++NF == 3 && $1 == "%inherit" {
++  inherit[$2] = $3;
++  next;
++}
++
++NF == 2 && $2 == "{" {
++  libs[$1] = 1;
++  thislib = $1;
++  next;
++}
++
++$1 == "}" {
++  thislib = "";
++  next;
++}
++
++{
++  ver[$1] = thislib;
++  next;
++}
++
++END {
++  if (!sawsymbol)
++    {
++      print "No symbols seen -- broken or mis-installed nm?" | "cat 1>&2";
++      exit 1;
++    }
++  for (l in libs)
++    output(l);
++}
++
++function output(lib) {
++  if (done[lib])
++    return;
++  done[lib] = 1;
++  if (inherit[lib])
++    output(inherit[lib]);
++
++  empty=1
++  for (sym in ver)
++    if ((ver[sym] == lib) && (sym in def))
++      {
++	if (empty)
++	  {
++	    printf("%s {\n", lib);
++	    printf("  global:\n");
++	    empty = 0;
++	  }
++	symp = sym;
++	sub(/@GCC_[0-9.]*$/,"",symp);
++	printf("\t%s;\n", symp);
++	if (dotsyms)
++	  printf("\t.%s;\n", symp);
++      }
++
++  if (empty)
++    {
++      for (l in libs)
++	if (inherit[l] == lib)
++	  inherit[l] = inherit[lib];
++    }
++  else if (inherit[lib])
++    printf("} %s;\n", inherit[lib]);
++  else
++    printf ("\n  local:\n\t*;\n};\n");
++}
+--- gcc/config/ia64/libgcc-ia64-no-libunwind.ver.jj	2004-02-18 10:27:36.000000000 -0500
++++ gcc/config/ia64/libgcc-ia64-no-libunwind.ver	2004-11-15 09:19:56.000000000 -0500
+@@ -0,0 +1,17 @@
++GCC_3.4.2 {
++  _Unwind_GetGR
++  _Unwind_RaiseException
++  _Unwind_GetRegionStart
++  _Unwind_SetIP
++  _Unwind_GetIP
++  _Unwind_GetLanguageSpecificData
++  _Unwind_Resume
++  _Unwind_DeleteException
++  _Unwind_SetGR
++  _Unwind_ForcedUnwind
++  _Unwind_Backtrace
++  _Unwind_FindEnclosingFunction
++  _Unwind_GetCFA
++  _Unwind_Resume_or_Rethrow
++  _Unwind_GetBSP
++}

diff --git a/gcc43-java-nomulti.patch b/gcc43-java-nomulti.patch
new file mode 100644
index 0000000..f07ead8
--- /dev/null
+++ b/gcc43-java-nomulti.patch
@@ -0,0 +1,44 @@
+--- libjava/configure.ac.jj	2007-12-07 17:55:50.000000000 +0100
++++ libjava/configure.ac	2007-12-07 18:36:56.000000000 +0100
+@@ -82,6 +82,13 @@ AC_ARG_ENABLE(java-maintainer-mode,
+ 	[allow rebuilding of .class and .h files]))
+ AM_CONDITIONAL(JAVA_MAINTAINER_MODE, test "$enable_java_maintainer_mode" = yes)
+ 
++AC_ARG_ENABLE(libjava-multilib,
++	AS_HELP_STRING([--enable-libjava-multilib], [build libjava as multilib]))
++if test "$enable_libjava_multilib" = no; then
++  multilib=no
++  ac_configure_args="$ac_configure_args --disable-multilib"
++fi
++
+ # It may not be safe to run linking tests in AC_PROG_CC/AC_PROG_CXX.
+ GCC_NO_EXECUTABLES
+ 
+--- libjava/configure.jj	2007-12-07 17:55:50.000000000 +0100
++++ libjava/configure	2007-12-07 18:39:58.000000000 +0100
+@@ -1018,6 +1018,8 @@ Optional Features:
+   --enable-gconf-peer     compile GConf native peers for util.preferences
+   --enable-java-maintainer-mode
+                           allow rebuilding of .class and .h files
++  --enable-libjava-multilib
++                          build libjava as multilib
+   --disable-dependency-tracking  speeds up one-time build
+   --enable-dependency-tracking   do not reject slow dependency extractors
+   --enable-maintainer-mode  enable make rules and dependencies not useful
+@@ -1848,6 +1850,16 @@ else
+ fi
+ 
+ 
++# Check whether --enable-libjava-multilib was given.
++if test "${enable_libjava_multilib+set}" = set; then
++  enableval=$enable_libjava_multilib;
++fi
++
++if test "$enable_libjava_multilib" = no; then
++  multilib=no
++  ac_configure_args="$ac_configure_args --disable-multilib"
++fi
++
+ # It may not be safe to run linking tests in AC_PROG_CC/AC_PROG_CXX.
+ 
+ 

diff --git a/gcc43-libjava-test.patch b/gcc43-libjava-test.patch
new file mode 100644
index 0000000..957796d
--- /dev/null
+++ b/gcc43-libjava-test.patch
@@ -0,0 +1,22 @@
+--- libjava/testsuite/Makefile.am	2007-02-07 13:07:16.000000000 +0100
++++ libjava/testsuite/Makefile.am	2007-12-08 10:58:02.000000000 +0100
+@@ -43,7 +43,7 @@ if JAVA_MAINTAINER_MODE
+ 	      testdep="libjava.loader/MyLoader.java";; \
+ 	    libjava.jni/register2.java) \
+ 	      ;; \
+-	    libjava.jni/*.java) \
++	    libjava.jni/*.java|libjava.jvmti/interp/*.java) \
+ 	      genheader=-jni;; \
+ 	    libjava.jvmti/*.java|libjava.cni/*.java) \
+ 	      genheader=-cni;; \
+--- libjava/testsuite/Makefile.in	2007-09-04 23:09:37.000000000 +0200
++++ libjava/testsuite/Makefile.in	2007-12-08 10:58:25.000000000 +0100
+@@ -558,7 +558,7 @@ compile-tests:
+ @JAVA_MAINTAINER_MODE_TRUE@	      testdep="libjava.loader/MyLoader.java";; \
+ @JAVA_MAINTAINER_MODE_TRUE@	    libjava.jni/register2.java) \
+ @JAVA_MAINTAINER_MODE_TRUE@	      ;; \
+-@JAVA_MAINTAINER_MODE_TRUE@	    libjava.jni/*.java) \
++@JAVA_MAINTAINER_MODE_TRUE@	    libjava.jni/*.java|libjava.jvmti/interp/*.java) \
+ @JAVA_MAINTAINER_MODE_TRUE@	      genheader=-jni;; \
+ @JAVA_MAINTAINER_MODE_TRUE@	    libjava.jvmti/*.java|libjava.cni/*.java) \
+ @JAVA_MAINTAINER_MODE_TRUE@	      genheader=-cni;; \

diff --git a/gcc43-ppc32-retaddr.patch b/gcc43-ppc32-retaddr.patch
new file mode 100644
index 0000000..e9ae1bc
--- /dev/null
+++ b/gcc43-ppc32-retaddr.patch
@@ -0,0 +1,86 @@
+2005-11-28  Jakub Jelinek  <jakub@redhat.com>
+
+	* config/rs6000/rs6000.c (rs6000_return_addr): If COUNT == 0,
+	read word RETURN_ADDRESS_OFFSET bytes above arg_pointer_rtx
+	instead of doing an extran indirection from frame_pointer_rtx.
+
+	* gcc.dg/20051128-1.c: New test.
+
+--- gcc/config/rs6000/rs6000.c.jj	2005-11-26 14:38:01.000000000 +0100
++++ gcc/config/rs6000/rs6000.c	2005-11-28 20:32:18.000000000 +0100
+@@ -13166,17 +13166,22 @@ rs6000_return_addr (int count, rtx frame
+      don't try to be too clever here.  */
+   if (count != 0 || (DEFAULT_ABI != ABI_AIX && flag_pic))
+     {
++      rtx x;
+       cfun->machine->ra_needs_full_frame = 1;
+ 
+-      return
+-	gen_rtx_MEM
+-	  (Pmode,
+-	   memory_address
+-	   (Pmode,
+-	    plus_constant (copy_to_reg
+-			   (gen_rtx_MEM (Pmode,
+-					 memory_address (Pmode, frame))),
+-			   RETURN_ADDRESS_OFFSET)));
++      if (count == 0)
++	{
++	  gcc_assert (frame == frame_pointer_rtx);
++	  x = arg_pointer_rtx;
++	}
++      else
++	{
++	  x = memory_address (Pmode, frame);
++	  x = copy_to_reg (gen_rtx_MEM (Pmode, x));
++	}
++
++      x = plus_constant (x, RETURN_ADDRESS_OFFSET);
++      return gen_rtx_MEM (Pmode, memory_address (Pmode, x));
+     }
+ 
+   cfun->machine->ra_need_lr = 1;
+--- gcc/testsuite/gcc.dg/20051128-1.c.jj	2005-10-10 11:21:41.096999000 +0200
++++ gcc/testsuite/gcc.dg/20051128-1.c	2005-11-28 12:30:57.000000000 +0100
+@@ -0,0 +1,41 @@
++/* { dg-do run } */
++/* { dg-options "-O2 -fpic" } */
++
++extern void exit (int);
++extern void abort (void);
++
++int b;
++
++struct A
++{
++  void *pad[147];
++  void *ra, *h;
++  long o;
++};
++
++void
++__attribute__((noinline))
++foo (struct A *a, void *x)
++{
++  __builtin_memset (a, 0, sizeof (a));
++  if (!b)
++    exit (0);
++}
++
++void
++__attribute__((noinline))
++bar (void)
++{
++  struct A a;
++
++  __builtin_unwind_init ();
++  foo (&a, __builtin_return_address (0));
++}
++
++int
++main (void)
++{
++  bar ();
++  abort ();
++  return 0;
++}

diff --git a/gcc43-ppc64-ia64-GNU-stack.patch b/gcc43-ppc64-ia64-GNU-stack.patch
new file mode 100644
index 0000000..d49f2b9
--- /dev/null
+++ b/gcc43-ppc64-ia64-GNU-stack.patch
@@ -0,0 +1,86 @@
+2007-08-27  Jakub Jelinek  <jakub@redhat.com>
+
+	* config/rs6000/rs6000.c (rs6000_elf_end_indicate_exec_stack): New.
+	* config/rs6000/linux64.h (TARGET_ASM_FILE_END): Use
+	rs6000_elf_end_indicate_exec_stack.
+	* config/ia64/ia64.c (ia64_linux_file_end): new.
+	* config/ia64/linux.h (TARGET_ASM_FILE_END): Use ia64_linux_file_end.
+
+--- gcc/config/rs6000/rs6000.c.jj	2007-12-07 18:41:08.000000000 +0100
++++ gcc/config/rs6000/rs6000.c	2007-12-07 18:42:12.000000000 +0100
+@@ -746,6 +746,7 @@ static void rs6000_file_start (void);
+ static int rs6000_elf_reloc_rw_mask (void);
+ static void rs6000_elf_asm_out_constructor (rtx, int);
+ static void rs6000_elf_asm_out_destructor (rtx, int);
++static void rs6000_elf_end_indicate_exec_stack (void) ATTRIBUTE_UNUSED;
+ static void rs6000_elf_asm_init_sections (void);
+ static section *rs6000_elf_select_rtx_section (enum machine_mode, rtx,
+ 					       unsigned HOST_WIDE_INT);
+@@ -20418,6 +20419,20 @@ rs6000_elf_declare_function_name (FILE *
+     }
+   ASM_OUTPUT_LABEL (file, name);
+ }
++
++static void
++rs6000_elf_end_indicate_exec_stack (void)
++{
++  if (TARGET_32BIT)
++    file_end_indicate_exec_stack ();
++  else
++    {
++      int saved_trampolines_created = trampolines_created;
++      trampolines_created = 0;
++      file_end_indicate_exec_stack ();
++      trampolines_created = saved_trampolines_created;
++    }
++}
+ #endif
+ 
+ #if TARGET_XCOFF
+--- gcc/config/rs6000/linux64.h.jj	2007-12-07 17:18:06.000000000 +0100
++++ gcc/config/rs6000/linux64.h	2007-12-07 18:41:21.000000000 +0100
+@@ -504,7 +504,7 @@ extern int dot_symbols;
+ #undef DRAFT_V4_STRUCT_RET
+ #define DRAFT_V4_STRUCT_RET (!TARGET_64BIT)
+ 
+-#define TARGET_ASM_FILE_END file_end_indicate_exec_stack
++#define TARGET_ASM_FILE_END rs6000_elf_end_indicate_exec_stack
+ 
+ #define TARGET_POSIX_IO
+ 
+--- gcc/config/ia64/linux.h.jj	2007-12-07 18:17:43.000000000 +0100
++++ gcc/config/ia64/linux.h	2007-12-07 18:41:21.000000000 +0100
+@@ -5,7 +5,7 @@
+ 
+ #define TARGET_VERSION fprintf (stderr, " (IA-64) Linux");
+ 
+-#define TARGET_ASM_FILE_END file_end_indicate_exec_stack
++#define TARGET_ASM_FILE_END ia64_linux_file_end
+ 
+ /* This is for -profile to use -lc_p instead of -lc.  */
+ #undef CC1_SPEC
+--- gcc/config/ia64/ia64.c.jj	2007-12-07 15:41:58.000000000 +0100
++++ gcc/config/ia64/ia64.c	2007-12-07 18:43:18.000000000 +0100
+@@ -262,6 +262,8 @@ static section *ia64_select_rtx_section 
+ static void ia64_output_dwarf_dtprel (FILE *, int, rtx)
+      ATTRIBUTE_UNUSED;
+ static unsigned int ia64_section_type_flags (tree, const char *, int);
++static void ia64_linux_file_end (void)
++     ATTRIBUTE_UNUSED;
+ static void ia64_init_libfuncs (void)
+      ATTRIBUTE_UNUSED;
+ static void ia64_hpux_init_libfuncs (void)
+@@ -9957,4 +9959,13 @@ ia64_c_mode_for_suffix (char suffix)
+   return VOIDmode;
+ }
+ 
++static void
++ia64_linux_file_end (void)
++{
++  int saved_trampolines_created = trampolines_created;
++  trampolines_created = 0;
++  file_end_indicate_exec_stack ();
++  trampolines_created = saved_trampolines_created;
++}
++
+ #include "gt-ia64.h"

diff --git a/gcc43-pr27898.patch b/gcc43-pr27898.patch
new file mode 100644
index 0000000..172bb81
--- /dev/null
+++ b/gcc43-pr27898.patch
@@ -0,0 +1,16 @@
+2006-08-18  Jakub Jelinek  <jakub@redhat.com>
+
+	PR c/27898
+	* gcc.dg/pr27898.c: New test.
+
+--- gcc/testsuite/gcc.dg/pr27898.c.jj	2006-08-18 09:19:33.000000000 +0200
++++ gcc/testsuite/gcc.dg/pr27898.c	2006-08-18 09:19:27.000000000 +0200
+@@ -0,0 +1,8 @@
++/* PR c/27898 */
++/* { dg-do compile } */
++/* { dg-options "--combine" } */
++/* { dg-additional-sources "pr27898.c" } */
++
++union u { struct { int i; }; };
++
++extern int foo (union u *);

diff --git a/gcc43-pr32139.patch b/gcc43-pr32139.patch
new file mode 100644
index 0000000..84e8ffb
--- /dev/null
+++ b/gcc43-pr32139.patch
@@ -0,0 +1,58 @@
+2007-06-01  Jakub Jelinek  <jakub@redhat.com>
+
+	PR tree-optimization/32139
+	* c-typeck.c (common_pointer_type): Set TYPE_READONLY
+	and TYPE_VOLATILE on the merged pointed to FUNCTION_TYPE
+	only if both pointed_to_1 and pointed_to_2 are TYPE_READONLY
+	resp. TYPE_VOLATILE.
+
+	* gcc.c-torture/compile/20070531-1.c: New test.
+
+--- gcc/c-typeck.c.jj	2007-04-25 10:13:52.000000000 +0200
++++ gcc/c-typeck.c	2007-06-01 10:51:53.000000000 +0200
+@@ -499,6 +499,7 @@ common_pointer_type (tree t1, tree t2)
+   tree pointed_to_1, mv1;
+   tree pointed_to_2, mv2;
+   tree target;
++  int type_quals;
+ 
+   /* Save time if the two types are the same.  */
+ 
+@@ -526,10 +527,19 @@ common_pointer_type (tree t1, tree t2)
+   if (TREE_CODE (mv2) != ARRAY_TYPE)
+     mv2 = TYPE_MAIN_VARIANT (pointed_to_2);
+   target = composite_type (mv1, mv2);
+-  t1 = build_pointer_type (c_build_qualified_type
+-			   (target,
+-			    TYPE_QUALS (pointed_to_1) |
+-			    TYPE_QUALS (pointed_to_2)));
++  type_quals = TYPE_QUALS (pointed_to_1) | TYPE_QUALS (pointed_to_2);
++  if (TREE_CODE (pointed_to_1) == FUNCTION_TYPE)
++    {
++      /* TYPE_READONLY and TYPE_VOLATILE on FUNCTION_TYPE should be
++	 logically ANDed, not ORed, as if one function is
++	 __attribute__((const)) and the other is not, the common type
++	 must be conservatively not __attribute__((const))
++	 and similarly for __attribute__((noreturn)).  */
++      type_quals &= ~(TYPE_QUAL_CONST | TYPE_QUAL_VOLATILE);
++      type_quals |= (TYPE_QUALS (pointed_to_1) & TYPE_QUALS (pointed_to_2))
++		    & (TYPE_QUAL_CONST | TYPE_QUAL_VOLATILE);
++    }
++  t1 = build_pointer_type (c_build_qualified_type (target, type_quals));
+   return build_type_attribute_variant (t1, attributes);
+ }
+ 
+--- gcc/testsuite/gcc.c-torture/compile/20070531-1.c.jj	2007-05-31 13:47:22.000000000 +0200
++++ gcc/testsuite/gcc.c-torture/compile/20070531-1.c	2007-06-01 10:57:15.000000000 +0200
+@@ -0,0 +1,11 @@
++/* PR tree-optimization/32139 */
++int foo (void);
++int bar (void) __attribute__ ((const));
++
++int
++test (int x)
++{
++  int a = (x == 10000 ? foo : bar) ();
++  int b = (x == 10000 ? foo : bar) ();
++  return a + b;
++}

diff --git a/gcc43-pr32636.patch b/gcc43-pr32636.patch
new file mode 100644
index 0000000..4222ddf
--- /dev/null
+++ b/gcc43-pr32636.patch
@@ -0,0 +1,25 @@
+2007-12-11  Jakub Jelinek  <jakub@redhat.com>
+
+	PR rtl-optimization/32636
+	* df-scan.c (df_get_entry_block_def_set): Set struct_value_rtx
+	regno in entry_block_defs even if HAVE_prologue && epilogue_completed.
+
+--- gcc/df-scan.c.jj	2007-10-26 13:45:44.000000000 +0200
++++ gcc/df-scan.c	2007-12-11 22:24:21.000000000 +0100
+@@ -3530,12 +3530,12 @@ df_get_entry_block_def_set (bitmap entry
+       bitmap_set_bit (entry_block_defs, STATIC_CHAIN_REGNUM);
+ #endif
+ #endif
+-      
+-      r = targetm.calls.struct_value_rtx (current_function_decl, true);
+-      if (r && REG_P (r))
+-	bitmap_set_bit (entry_block_defs, REGNO (r));
+     }
+ 
++  r = targetm.calls.struct_value_rtx (current_function_decl, true);
++  if (r && REG_P (r))
++    bitmap_set_bit (entry_block_defs, REGNO (r));
++
+   if ((!reload_completed) || frame_pointer_needed)
+     {
+       /* Any reference to any pseudo before reload is a potential

diff --git a/gcc43-pr33763.patch b/gcc43-pr33763.patch
new file mode 100644
index 0000000..9e9c90d
--- /dev/null
+++ b/gcc43-pr33763.patch
@@ -0,0 +1,153 @@
+2007-11-06  Jakub Jelinek  <jakub@redhat.com>
+
+	PR tree-optimization/33763
+	* gcc.dg/pr33763.c: New test.
+	* g++.dg/opt/inline13.C: New test.
+
+2007-11-06  Jan Hubicka  <jh@suse.cz>
+
+	PR tree-optimization/33763
+	* tree-inline.c (expand_call_inline): Silently ignore always_inline
+	attribute for redefined extern inline functions.
+
+--- gcc/tree-inline.c.jj	2007-11-06 09:29:04.000000000 +0100
++++ gcc/tree-inline.c	2007-11-06 16:19:12.000000000 +0100
+@@ -2582,6 +2582,12 @@ expand_call_inline (basic_block bb, tree
+   if (!cgraph_inline_p (cg_edge, &reason))
+     {
+       if (lookup_attribute ("always_inline", DECL_ATTRIBUTES (fn))
++	/* For extern inline functions that get redefined we always
++	   silently ignored alway_inline flag. Better behaviour would
++	   be to be able to keep both bodies and use extern inline body
++	   for inlining, but we can't do that because frontends overwrite
++	   the body.  */
++	  && !cg_edge->callee->local.redefined_extern_inline
+ 	  /* Avoid warnings during early inline pass. */
+ 	  && (!flag_unit_at_a_time || cgraph_global_info_ready))
+ 	{
+--- gcc/testsuite/gcc.dg/pr33763.c.jj	2007-11-06 16:19:12.000000000 +0100
++++ gcc/testsuite/gcc.dg/pr33763.c	2007-11-06 16:19:12.000000000 +0100
+@@ -0,0 +1,60 @@
++/* PR tree-optimization/33763 */
++/* { dg-do compile } */
++/* { dg-options "-O2" } */
++
++typedef struct
++{
++  void *a;
++  void *b;
++} T;
++extern void *foo (const char *, const char *);
++extern void *bar (void *, const char *, T);
++extern int baz (const char *, int);
++
++extern inline __attribute__ ((always_inline, gnu_inline)) int
++baz (const char *x, int y)
++{
++  return 2;
++}
++
++int
++baz (const char *x, int y)
++{
++  return 1;
++}
++
++int xa, xb;
++
++static void *
++inl (const char *x, const char *y)
++{
++  T t = { &xa, &xb };
++  int *f = (int *) __builtin_malloc (sizeof (int));
++  const char *z;
++  int o = 0;
++  void *r = 0;
++
++  for (z = y; *z; z++)
++    {
++      if (*z == 'r')
++	o |= 1;
++      if (*z == 'w')
++	o |= 2;
++    }
++  if (o == 1)
++    *f = baz (x, 0);
++  if (o == 2)
++    *f = baz (x, 1);
++  if (o == 3)
++    *f = baz (x, 2);
++
++  if (o && *f > 0)
++    r = bar (f, "w", t);
++  return r;
++}
++
++void *
++foo (const char *x, const char *y)
++{
++  return inl (x, y);
++}
+--- gcc/testsuite/g++.dg/opt/inline13.C.jj	2007-11-06 16:20:20.000000000 +0100
++++ gcc/testsuite/g++.dg/opt/inline13.C	2007-11-06 16:21:30.000000000 +0100
+@@ -0,0 +1,60 @@
++// PR tree-optimization/33763
++// { dg-do compile }
++// { dg-options "-O2" }
++
++typedef struct
++{
++  void *a;
++  void *b;
++} T;
++extern void *foo (const char *, const char *);
++extern void *bar (void *, const char *, T);
++extern int baz (const char *, int);
++
++extern inline __attribute__ ((always_inline, gnu_inline)) int
++baz (const char *x, int y)
++{
++  return 2;
++}
++
++int
++baz (const char *x, int y)
++{
++  return 1;
++}
++
++int xa, xb;
++
++static void *
++inl (const char *x, const char *y)
++{
++  T t = { &xa, &xb };
++  int *f = (int *) __builtin_malloc (sizeof (int));
++  const char *z;
++  int o = 0;
++  void *r = 0;
++
++  for (z = y; *z; z++)
++    {
++      if (*z == 'r')
++	o |= 1;
++      if (*z == 'w')
++	o |= 2;
++    }
++  if (o == 1)
++    *f = baz (x, 0);
++  if (o == 2)
++    *f = baz (x, 1);
++  if (o == 3)
++    *f = baz (x, 2);
++
++  if (o && *f > 0)
++    r = bar (f, "w", t);
++  return r;
++}
++
++void *
++foo (const char *x, const char *y)
++{
++  return inl (x, y);
++}

diff --git a/gcc43-pr34427.patch b/gcc43-pr34427.patch
index 1f64723..ac6cf71 100644
--- a/gcc43-pr34427.patch
+++ b/gcc43-pr34427.patch
@@ -26,7 +26,7 @@
  
    push_char (dtp, c);
  
-@@ -1141,13 +1136,6 @@ parse_real (st_parameter_dt *dtp, void *
+@@ -1141,13 +1136,7 @@ parse_real (st_parameter_dt *dtp, void *
  
   exp2:
    if (!isdigit (c))
@@ -37,10 +37,11 @@
 -	goto bad;
 -    }
 -
-     goto bad;
++    goto bad;
    push_char (dtp, c);
  
-@@ -1178,41 +1166,6 @@ parse_real (st_parameter_dt *dtp, void *
+   for (;;)
+@@ -1177,41 +1166,6 @@ parse_real (st_parameter_dt *dtp, void *
  
    return m;
  
@@ -82,7 +83,7 @@
   bad:
  
    if (nml_bad_return (dtp, c))
-@@ -1340,12 +1293,6 @@ read_real (st_parameter_dt *dtp, int len
+@@ -1339,12 +1293,6 @@ read_real (st_parameter_dt *dtp, int len
        eat_separator (dtp);
        return;
  
@@ -95,7 +96,7 @@
      default:
        goto bad_real;
      }
-@@ -1420,12 +1367,7 @@ read_real (st_parameter_dt *dtp, int len
+@@ -1419,12 +1367,7 @@ read_real (st_parameter_dt *dtp, int len
      }
  
    if (!isdigit (c) && c != '.')
@@ -109,7 +110,7 @@
  
    if (c == '.')
      {
-@@ -1522,37 +1464,6 @@ read_real (st_parameter_dt *dtp, int len
+@@ -1521,37 +1464,6 @@ read_real (st_parameter_dt *dtp, int len
    dtp->u.p.saved_type = BT_REAL;
    return;
  

diff --git a/gcc43-rh330771.patch b/gcc43-rh330771.patch
new file mode 100644
index 0000000..c894f83
--- /dev/null
+++ b/gcc43-rh330771.patch
@@ -0,0 +1,34 @@
+2007-10-16  Jakub Jelinek  <jakub@redhat.com>
+
+	* Makefile.am (libgcj_tools_la_LIBADD): Add.
+	* Makefile.in: Regenerated.
+
+--- libjava/Makefile.am.jj	2007-03-17 09:20:30.000000000 +0100
++++ libjava/Makefile.am	2007-10-16 15:45:14.000000000 +0200
+@@ -262,6 +262,8 @@ EXTRA_libgcj_la_SOURCES = java/lang/Obje
+ 
+ libgcj_tools_la_SOURCES = classpath/tools/tools.zip
+ libgcj_tools_la_GCJFLAGS = $(AM_GCJFLAGS) -findirect-dispatch -fno-indirect-classes  -fsource-filename=$(here)/classpath/tools/all-classes.lst
++## See jv_convert_LDADD.
++libgcj_tools_la_LIBADD = -L$(here)/.libs libgcj.la
+ libgcj_tools_la_LDFLAGS = -rpath $(toolexeclibdir) \
+  -version-info `grep -v '^\#' $(srcdir)/libtool-version`
+ libgcj_tools_la_DEPENDENCIES = libgcj.la libgcj.spec
+--- libjava/Makefile.in.jj	2007-07-04 21:11:11.000000000 +0200
++++ libjava/Makefile.in	2007-10-16 15:56:07.000000000 +0200
+@@ -146,7 +146,6 @@ am__objects_1 = gnu/gcj/xlib/lib_gnu_awt
+ am_lib_gnu_awt_xlib_la_OBJECTS = $(am__objects_1)
+ lib_gnu_awt_xlib_la_OBJECTS = $(am_lib_gnu_awt_xlib_la_OBJECTS)
+ @XLIB_AWT_TRUE@am_lib_gnu_awt_xlib_la_rpath = -rpath $(toolexeclibdir)
+-libgcj_tools_la_LIBADD =
+ am_libgcj_tools_la_OBJECTS = classpath/tools/libgcj_tools_la-tools.lo
+ libgcj_tools_la_OBJECTS = $(am_libgcj_tools_la_OBJECTS)
+ am__DEPENDENCIES_1 = gnu/awt.lo gnu/awt/j2d.lo gnu/classpath.lo \
+@@ -894,6 +893,7 @@ libgcj_la_LINK = $(LIBLINK)
+ EXTRA_libgcj_la_SOURCES = java/lang/Object.java
+ libgcj_tools_la_SOURCES = classpath/tools/tools.zip
+ libgcj_tools_la_GCJFLAGS = $(AM_GCJFLAGS) -findirect-dispatch -fno-indirect-classes  -fsource-filename=$(here)/classpath/tools/all-classes.lst
++libgcj_tools_la_LIBADD = -L$(here)/.libs libgcj.la
+ libgcj_tools_la_LDFLAGS = -rpath $(toolexeclibdir) \
+  -version-info `grep -v '^\#' $(srcdir)/libtool-version`
+ 

diff --git a/gcc43-rh341221.patch b/gcc43-rh341221.patch
new file mode 100644
index 0000000..28e73b0
--- /dev/null
+++ b/gcc43-rh341221.patch
@@ -0,0 +1,28 @@
+2007-10-21  Jakub Jelinek  <jakub@redhat.com>
+
+	* doc/Makefile.am (POD2MAN): Set date from cp-tools.texinfo
+	timestamp rather than from current date.
+	* doc/Makefile.in: Regenerated.
+
+--- libjava/classpath/doc/Makefile.am.jj	2007-12-07 17:55:00.000000000 +0100
++++ libjava/classpath/doc/Makefile.am	2007-12-07 18:55:28.000000000 +0100
+@@ -30,7 +30,7 @@ TOOLS_MANFILES = \
+ 	gserialver.1 \
+ 	gtnameserv.1
+ 
+-POD2MAN = pod2man --center="GNU" --release="$(VERSION)"
++POD2MAN = pod2man --center="GNU" --release="$(VERSION)" --date="$(shell ls --time-style=+%F -l $(srcdir)/cp-tools.texinfo | awk '{print $$6}')"
+ TEXI2POD = perl $(srcdir)/texi2pod.pl
+ STAMP = echo timestamp >
+ 
+--- libjava/classpath/doc/Makefile.in.jj	2007-12-07 17:55:00.000000000 +0100
++++ libjava/classpath/doc/Makefile.in	2007-12-07 18:55:43.000000000 +0100
+@@ -357,7 +357,7 @@ TOOLS_MANFILES = \
+ 	gserialver.1 \
+ 	gtnameserv.1
+ 
+-POD2MAN = pod2man --center="GNU" --release="$(VERSION)"
++POD2MAN = pod2man --center="GNU" --release="$(VERSION)" --date="$(shell ls --time-style=+%F -l $(srcdir)/cp-tools.texinfo | awk '{print $$6}')"
+ TEXI2POD = perl $(srcdir)/texi2pod.pl
+ STAMP = echo timestamp >
+ @GENINSRC_FALSE@STAMP_GENINSRC = 

diff --git a/gcc43.spec b/gcc43.spec
new file mode 100644
index 0000000..52548a6
--- /dev/null
+++ b/gcc43.spec
@@ -0,0 +1,1620 @@
+%define DATE 20071212
+%define gcc_version 4.3.0
+%define gcc_release 0.2
+%define _unpackaged_files_terminate_build 0
+%define multilib_64_archs sparc64 ppc64 s390x x86_64
+%define include_gappletviewer 1
+%ifarch %{ix86} x86_64 ia64 ppc alpha
+%define build_ada 1
+%else
+%define build_ada 0
+%endif
+%define build_java 1
+# If you don't have already a usable gcc-java and libgcj for your arch,
+# do on some arch which has it rpmbuild -bc --with java_tar gcc41.spec
+# which creates libjava-classes-%{version}-%{release}.tar.bz2
+# With this then on the new arch do rpmbuild -ba -v --with java_bootstrap gcc41.spec
+%define bootstrap_java %{?_with_java_bootstrap:%{build_java}}%{!?_with_java_bootstrap:0}
+%define build_java_tar %{?_with_java_tar:%{build_java}}%{!?_with_java_tar:0}
+%ifarch s390x
+%define multilib_32_arch s390
+%endif
+%ifarch sparc64
+%define multilib_32_arch sparc
+%endif
+%ifarch ppc64
+%define multilib_32_arch ppc
+%endif
+%ifarch x86_64
+%define multilib_32_arch i386
+%endif
+Summary: Various compilers (C, C++, Objective-C, Java, ...)
+Name: gcc
+Version: %{gcc_version}
+Release: %{gcc_release}
+# libgcc, libgfortran, libmudflap and crtstuff have an exception which allows
+# linking it into any kind of programs or shared libraries without
+# restrictions.
+License: GPLv3+ and GPLv2+ with exceptions
+Group: Development/Languages
+Source0: gcc-%{version}-%{DATE}.tar.bz2
+Source1: libgcc_post_upgrade.c
+Source2: README.libgcjwebplugin.so
+Source3: protoize.1
+URL: http://gcc.gnu.org
+BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root
+# Need binutils with -pie support >= 2.14.90.0.4-4
+# Need binutils which can omit dot symbols and overlap .opd on ppc64 >= 2.15.91.0.2-4
+# Need binutils which handle -msecure-plt on ppc >= 2.16.91.0.2-2
+# Need binutils which support .weakref >= 2.16.91.0.3-1
+# Need binutils which support --hash-style=gnu >= 2.17.50.0.2-7
+# Need binutils which support mffgpr and mftgpr >= 2.17.50.0.2-8
+# Need binutils which support --build-id >= 2.17.50.0.17-3
+BuildRequires: binutils >= 2.17.50.0.17-3
+BuildRequires: zlib-devel, gettext, dejagnu, bison, flex, texinfo, sharutils
+%if %{build_java}
+BuildRequires: /usr/share/java/eclipse-ecj.jar, zip, unzip
+%if %{bootstrap_java}
+Source10: libjava-classes-%{version}-%{release}.tar.bz2
+%else
+BuildRequires: gcc-java, libgcj
+%endif
+%endif
+# Make sure pthread.h doesn't contain __thread tokens
+# Make sure glibc supports stack protector
+# Make sure glibc supports DT_GNU_HASH
+BuildRequires: glibc-devel >= 2.4.90-13
+BuildRequires: elfutils-devel >= 0.72
+%ifarch ppc ppc64 s390 s390x sparc sparcv9 alpha
+# Make sure glibc supports TFmode long double
+BuildRequires: glibc >= 2.3.90-35
+%endif
+%ifarch %{multilib_64_archs} sparc ppc
+# Ensure glibc{,-devel} is installed for both multilib arches
+BuildRequires: /lib/libc.so.6 /usr/lib/libc.so /lib64/libc.so.6 /usr/lib64/libc.so
+%endif
+%if %{build_ada}
+# Ada requires Ada to build
+BuildRequires: gcc-gnat >= 3.1, libgnat >= 3.1
+%endif
+%ifarch ia64
+BuildRequires: libunwind >= 0.98
+%endif
+Requires: cpp = %{version}-%{release}
+# Need .eh_frame ld optimizations
+# Need proper visibility support
+# Need -pie support
+# Need --as-needed/--no-as-needed support
+# On ppc64, need omit dot symbols support and --non-overlapping-opd
+# Need binutils that owns /usr/bin/c++filt
+# Need binutils that support .weakref
+# Need binutils that supports --hash-style=gnu
+# Need binutils that support mffgpr/mftgpr
+# Need binutils that support --build-id
+Requires: binutils >= 2.17.50.0.17-3
+# Make sure gdb will understand DW_FORM_strp
+Conflicts: gdb < 5.1-2
+Requires: glibc-devel >= 2.2.90-12
+%ifarch ppc ppc64 s390 s390x sparc sparcv9 alpha
+# Make sure glibc supports TFmode long double
+Requires: glibc >= 2.3.90-35
+%endif
+Requires: libgcc >= %{version}-%{release}
+Requires: libgomp = %{version}-%{release}
+Obsoletes: gcc3
+Obsoletes: egcs
+%ifarch sparc
+Obsoletes: gcc-sparc32
+Obsoletes: gcc-c++-sparc32
+%endif
+%ifarch ppc
+Obsoletes: gcc-ppc32
+Obsoletes: gcc-c++-ppc32
+%endif
+Obsoletes: gcc-chill
+%if !%{build_ada}
+Obsoletes: gcc-gnat < %{version}-%{release}
+Obsoletes: libgnat < %{version}-%{release}
+%endif
+%ifarch sparc sparc64
+Obsoletes: egcs64
+%endif
+Obsoletes: gcc34
+Obsoletes: gcc35
+Obsoletes: gcc4
+Prereq: /sbin/install-info
+AutoReq: true
+
+Patch1: gcc43-build-id.patch
+Patch2: gcc43-c++-builtin-redecl.patch
+Patch3: gcc43-ia64-libunwind.patch
+Patch4: gcc43-java-nomulti.patch
+Patch5: gcc43-ppc32-retaddr.patch
+Patch6: gcc43-ppc64-ia64-GNU-stack.patch
+Patch7: gcc43-pr27898.patch
+Patch8: gcc43-pr32139.patch
+Patch9: gcc43-pr33763.patch
+Patch10: gcc43-pr32636.patch
+Patch11: gcc43-rh330771.patch
+Patch12: gcc43-rh341221.patch
+Patch13: gcc43-libjava-test.patch
+Patch14: gcc43-pr34427.patch
+
+# On ARM EABI systems, we do want -gnueabi to be part of the
+# target triple.
+%ifnarch %{arm}
+%define _gnu %{nil}
+%endif
+%ifarch sparc
+%define gcc_target_platform sparc64-%{_vendor}-%{_target_os}
+%endif
+%ifarch ppc
+%define gcc_target_platform ppc64-%{_vendor}-%{_target_os}
+%endif
+%ifnarch sparc ppc
+%define gcc_target_platform %{_target_platform}
+%endif
+
+%description
+The gcc package contains the GNU Compiler Collection version 4.3.
+You'll need this package in order to compile C code.
+
+%package -n libgcc
+Summary: GCC version 4.3 shared support library
+Group: System Environment/Libraries
+Autoreq: false
+
+%description -n libgcc
+This package contains GCC shared support library which is needed
+e.g. for exception handling support.
+
+%package c++
+Summary: C++ support for GCC
+Group: Development/Languages
+Requires: gcc = %{version}-%{release}
+Requires: libstdc++ = %{version}-%{release}
+Requires: libstdc++-devel = %{version}-%{release}
+Obsoletes: gcc3-c++
+Obsoletes: gcc34-c++
+Obsoletes: gcc35-c++
+Obsoletes: gcc4-c++
+Autoreq: true
+
+%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.
+
+%package -n libstdc++
+Summary: GNU Standard C++ Library
+Group: System Environment/Libraries
+Obsoletes: libstdc++3
+Obsoletes: libstdc++34
+Autoreq: true
+
+%description -n libstdc++
+The libstdc++ package contains a rewritten standard compliant GCC Standard
+C++ Library.
+
+%package -n libstdc++-devel
+Summary: Header files and libraries for C++ development
+Group: Development/Libraries
+Requires: libstdc++ = %{version}-%{release}, %{_prefix}/%{_lib}/libstdc++.so.6
+Obsoletes: libstdc++3-devel
+Obsoletes: libstdc++34-devel
+Autoreq: true
+
+%description -n libstdc++-devel
+This is the GNU implementation of the standard C++ libraries.  This
+package includes the header files and libraries needed for C++
+development. This includes rewritten implementation of STL.
+
+%package objc
+Summary: Objective-C support for GCC
+Group: Development/Languages
+Requires: gcc = %{version}-%{release}
+Requires: libobjc = %{version}-%{release}
+Obsoletes: gcc3-objc
+Autoreq: true
+
+%description objc
+gcc-objc provides Objective-C support for the GCC.
+Mainly used on systems running NeXTSTEP, Objective-C is an
+object-oriented derivative of the C language.
+
+%package objc++
+Summary: Objective-C++ support for GCC
+Group: Development/Languages
+Requires: gcc-c++ = %{version}-%{release}, gcc-objc = %{version}-%{release}
+Autoreq: true
+
+%description objc++
+gcc-objc++ package provides Objective-C++ support for the GCC.
+
+%package -n libobjc
+Summary: Objective-C runtime
+Group: System Environment/Libraries
+Autoreq: true
+
+%description -n libobjc
+This package contains Objective-C shared library which is needed to run
+Objective-C dynamically linked programs.
+
+%package gfortran
+Summary: Fortran 95 support
+Group: Development/Languages
+Requires: gcc = %{version}-%{release}
+Requires: libgfortran = %{version}-%{release}
+BuildRequires: gmp-devel >= 4.1.2-8, mpfr-devel >= 2.2.1
+Prereq: /sbin/install-info
+Obsoletes: gcc3-g77
+Obsoletes: gcc-g77
+Obsoletes: gcc4-gfortran
+Autoreq: true
+
+%description gfortran
+The gcc-gfortran package provides support for compiling Fortran 95
+programs with the GNU Compiler Collection.
+
+%package -n libgfortran
+Summary: Fortran 95 runtime
+Group: System Environment/Libraries
+Obsoletes: libf2c
+Autoreq: true
+
+%description -n libgfortran
+This package contains Fortran 95 shared library which is needed to run
+Fortran 95 dynamically linked programs.
+
+%package -n libgomp
+Summary: GCC OpenMP 2.5 shared support library
+Group: System Environment/Libraries
+
+%description -n libgomp
+This package contains GCC shared support library which is needed
+for OpenMP 2.5 support.
+
+%package -n libmudflap
+Summary: GCC mudflap shared support library
+Group: System Environment/Libraries
+
+%description -n libmudflap
+This package contains GCC shared support library which is needed
+for mudflap support.
+
+%package -n libmudflap-devel
+Summary: GCC mudflap support
+Group: Development/Libraries
+Requires: libmudflap = %{version}-%{release}
+Requires: gcc = %{version}-%{release}
+
+%description -n libmudflap-devel
+This package contains headers and static libraries for building
+mudflap-instrumented programs.
+
+To instrument a non-threaded program, add -fmudflap
+option to GCC and when linking add -lmudflap, for threaded programs
+also add -fmudflapth and -lmudflapth.
+
+%package java
+Summary: Java support for GCC
+Group: Development/Languages
+Requires: gcc = %{version}-%{release}
+Requires: libgcj = %{version}-%{release}
+Requires: libgcj-devel = %{version}-%{release}
+Requires: /usr/share/java/eclipse-ecj.jar
+Obsoletes: gcc3-java
+Obsoletes: gcc34-java
+Obsoletes: gcc35-java
+Obsoletes: gcc4-java
+Prereq: /sbin/install-info
+Autoreq: true
+
+%description java
+This package adds support for compiling Java(tm) programs and
+bytecode into native code.
+
+%package -n libgcj
+Summary: Java runtime library for gcc
+Group: System Environment/Libraries
+Prereq: /sbin/install-info
+Requires: zip >= 2.1
+Requires: gtk2 >= 2.4.0
+Requires: glib2 >= 2.4.0
+Requires: libart_lgpl >= 2.1.0
+%if %{build_java}
+BuildRequires: gtk2-devel >= 2.4.0
+BuildRequires: glib2-devel >= 2.4.0
+BuildRequires: firefox-devel
+BuildRequires: libart_lgpl-devel >= 2.1.0
+BuildRequires: alsa-lib-devel
+BuildRequires: libXtst-devel
+BuildRequires: libXt-devel
+%endif
+Obsoletes: gcc-libgcj
+Obsoletes: libgcj3
+Obsoletes: libgcj34
+Obsoletes: libgcj4
+Autoreq: true
+
+%description -n libgcj
+The Java(tm) runtime library. You will need this package to run your Java
+programs compiled using the Java compiler from GNU Compiler Collection (gcj).
+
+%package -n libgcj-devel
+Summary: Libraries for Java development using GCC
+Group: Development/Languages
+Requires: libgcj = %{version}-%{release}, %{_prefix}/%{_lib}/libgcj.so.9
+Requires: zlib-devel, %{_prefix}/%{_lib}/libz.so
+Requires: /bin/awk
+Obsoletes: libgcj3-devel
+Obsoletes: libgcj34-devel
+Obsoletes: libgcj4-devel
+Autoreq: false
+Autoprov: false
+
+%description -n libgcj-devel
+The Java(tm) static libraries and C header files. You will need this
+package to compile your Java programs using the GCC Java compiler (gcj).
+
+%package -n libgcj-src
+Summary: Java library sources from GCC4 preview
+Group: System Environment/Libraries
+Requires: libgcj = %{version}-%{release}
+Obsoletes: libgcj4-src
+Autoreq: true
+
+%description -n libgcj-src
+The Java(tm) runtime library sources for use in Eclipse.
+
+%package -n cpp
+Summary: The C Preprocessor.
+Group: Development/Languages
+Prereq: /sbin/install-info
+%ifarch ia64
+Obsoletes: gnupro
+%endif
+Autoreq: true
+
+%description -n cpp
+Cpp is the GNU C-Compatible Compiler Preprocessor.
+Cpp is a macro processor which is used automatically
+by the C compiler to transform your program before actual
+compilation. It is called a macro processor because it allows
+you to define macros, abbreviations for longer
+constructs.
+
+The C preprocessor provides four separate functionalities: the
+inclusion of header files (files of declarations that can be
+substituted into your program); macro expansion (you can define macros,
+and the C preprocessor will replace the macros with their definitions
+throughout the program); conditional compilation (using special
+preprocessing directives, you can include or exclude parts of the
+program according to various conditions); and line control (if you use
+a program to combine or rearrange source files into an intermediate
+file which is then compiled, you can use line control to inform the
+compiler about where each source line originated).
+
+You should install this package if you are a C programmer and you use
+macros.
+
+%package gnat
+Summary: Ada 95 support for GCC
+Group: Development/Languages
+Requires: gcc = %{version}-%{release}, libgnat = %{version}-%{release}
+Obsoletes: gnat-devel, gcc3-gnat
+Prereq: /sbin/install-info
+Autoreq: true
+
+%description gnat
+GNAT is a GNU Ada 95 front-end to GCC. This package includes development tools,
+the documents and Ada 95 compiler.
+
+%package -n libgnat
+Summary: GNU Ada 95 runtime shared libraries
+Group: System Environment/Libraries
+Obsoletes: gnat libgnat3
+Autoreq: true
+
+%description -n libgnat
+GNAT is a GNU Ada 95 front-end to GCC. This package includes shared libraries,
+which are required to run programs compiled with the GNAT.
+
+%prep
+%setup -q -n gcc-%{version}-%{DATE}
+%patch1 -p0 -b .build-id~
+%patch2 -p0 -b .c++-builtin-redecl~
+%patch3 -p0 -b .ia64-libunwind~
+%patch4 -p0 -b .java-nomulti~
+%patch5 -p0 -b .ppc32-retaddr~
+%patch6 -p0 -b .ppc64-ia64-GNU-stack~
+%patch7 -p0 -b .pr27898~
+%patch8 -p0 -b .pr32139~
+%patch9 -p0 -b .pr33763~
+%patch10 -p0 -b .pr32636~
+%patch11 -p0 -b .rh330771~
+%patch12 -p0 -b .rh341221~
+%patch13 -p0 -b .libjava-test~
+%patch14 -p0 -E -b .pr34427~
+
+%if %{bootstrap_java}
+tar xjf %{SOURCE10}
+%endif
+
+sed -i -e 's/4\.3\.0/4.3.0/' gcc/BASE-VER
+echo '(Red Hat %{version}-%{gcc_release})' > gcc/DEV-PHASE
+
+cp -a libstdc++-v3/config/cpu/i{4,3}86/atomicity.h
+
+# Hack to avoid building multilib libjava
+perl -pi -e 's/^all: all-redirect/ifeq (\$(MULTISUBDIR),)\nall: all-redirect\nelse\nall:\n\techo Multilib libjava build disabled\nendif/' libjava/Makefile.in
+perl -pi -e 's/^install: install-redirect/ifeq (\$(MULTISUBDIR),)\ninstall: install-redirect\nelse\ninstall:\n\techo Multilib libjava install disabled\nendif/' libjava/Makefile.in
+perl -pi -e 's/^check: check-redirect/ifeq (\$(MULTISUBDIR),)\ncheck: check-redirect\nelse\ncheck:\n\techo Multilib libjava check disabled\nendif/' libjava/Makefile.in
+perl -pi -e 's/^all: all-recursive/ifeq (\$(MULTISUBDIR),)\nall: all-recursive\nelse\nall:\n\techo Multilib libjava build disabled\nendif/' libjava/Makefile.in
+perl -pi -e 's/^install: install-recursive/ifeq (\$(MULTISUBDIR),)\ninstall: install-recursive\nelse\ninstall:\n\techo Multilib libjava install disabled\nendif/' libjava/Makefile.in
+perl -pi -e 's/^check: check-recursive/ifeq (\$(MULTISUBDIR),)\ncheck: check-recursive\nelse\ncheck:\n\techo Multilib libjava check disabled\nendif/' libjava/Makefile.in
+
+./contrib/gcc_update --touch
+
+%ifarch ppc
+if [ -d libstdc++-v3/config/abi/powerpc64-linux-gnu ]; then
+  mkdir -p libstdc++-v3/config/abi/powerpc64-linux-gnu/64
+  mv libstdc++-v3/config/abi/powerpc64-linux-gnu/{,64/}baseline_symbols.txt
+  mv libstdc++-v3/config/abi/powerpc64-linux-gnu/{32/,}baseline_symbols.txt
+  rm -rf libstdc++-v3/config/abi/powerpc64-linux-gnu/32
+fi
+%endif
+%ifarch sparc
+if [ -d libstdc++-v3/config/abi/sparc64-linux-gnu ]; then
+  mkdir -p libstdc++-v3/config/abi/sparc64-linux-gnu/64
+  mv libstdc++-v3/config/abi/sparc64-linux-gnu/{,64/}baseline_symbols.txt
+  mv libstdc++-v3/config/abi/sparc64-linux-gnu/{32/,}baseline_symbols.txt
+  rm -rf libstdc++-v3/config/abi/sparc64-linux-gnu/32
+fi
+%endif
+
+%build
+
+rm -fr obj-%{gcc_target_platform}
+mkdir obj-%{gcc_target_platform}
+cd obj-%{gcc_target_platform}
+
+if [ ! -f /usr/lib/locale/de_DE/LC_CTYPE ]; then
+  mkdir locale
+  localedef -f ISO-8859-1 -i de_DE locale/de_DE
+  export LOCPATH=`pwd`/locale:/usr/lib/locale
+fi
+
+%if %{build_java}
+%if !%{bootstrap_java}
+# If we don't have gjavah in $PATH, try to build it with the old gij
+mkdir java_hacks
+cd java_hacks
+if [ ! -x /usr/bin/gjavah ]; then
+  cp -a ../../libjava/classpath/tools/external external
+  mkdir -p gnu/classpath/tools
+  cp -a ../../libjava/classpath/tools/gnu/classpath/tools/{common,javah,getopt} gnu/classpath/tools/
+  cp -a ../../libjava/classpath/resource/gnu/classpath/tools/common/Messages.properties gnu/classpath/tools/common
+  cd external/asm; for i in `find . -name \*.java`; do gcj --encoding ISO-8859-1 -C $i -I.; done; cd ../..
+  for i in `find gnu -name \*.java`; do gcj -C $i -I. -Iexternal/asm/; done
+  gcj -findirect-dispatch -O2 -fmain=gnu.classpath.tools.javah.Main -I. -Iexternal/asm/ `find . -name \*.class` -o gjavah.real
+  cat > gjavah <<EOF
+#!/bin/sh
+export CLASSPATH=`pwd`${CLASSPATH:+:$CLASSPATH}
+exec `pwd`/gjavah.real "\$@"
+EOF
+  chmod +x `pwd`/gjavah
+fi
+cat > ecj1 <<EOF
+#!/bin/sh
+exec gij -cp /usr/share/java/eclipse-ecj.jar org.eclipse.jdt.internal.compiler.batch.GCCMain "\$@"
+EOF
+chmod +x `pwd`/ecj1
+export PATH=`pwd`${PATH:+:$PATH}
+cd ..
+%endif
+%endif
+
+CC=gcc
+OPT_FLAGS=`echo $RPM_OPT_FLAGS|sed -e 's/\(-Wp,\)\?-D_FORTIFY_SOURCE=[12]//g'`
+OPT_FLAGS=`echo $OPT_FLAGS|sed -e 's/-m64//g;s/-m32//g;s/-m31//g'`
+%ifarch sparc sparc64
+OPT_FLAGS=`echo $OPT_FLAGS|sed -e 's/-mcpu=ultrasparc/-mtune=ultrasparc/g;s/-mcpu=v[78]//g'`
+%endif
+%ifarch sparc64
+cat > gcc64 <<"EOF"
+#!/bin/sh
+exec /usr/bin/gcc -m64 "$@"
+EOF
+chmod +x gcc64
+CC=`pwd`/gcc64
+%endif
+%ifarch ppc64
+if gcc -m64 -xc -S /dev/null -o - > /dev/null 2>&1; then
+  cat > gcc64 <<"EOF"
+#!/bin/sh
+exec /usr/bin/gcc -m64 "$@"
+EOF
+  chmod +x gcc64
+  CC=`pwd`/gcc64
+fi
+%endif
+OPT_FLAGS=`echo "$OPT_FLAGS" | sed -e 's/[[:blank:]]\+/ /g'`
+case "$OPT_FLAGS" in
+  *-fasynchronous-unwind-tables*)
+    sed -i -e 's/-fno-exceptions /-fno-exceptions -fno-asynchronous-unwind-tables/' \
+      ../gcc/Makefile.in
+    ;;
+esac
+CC="$CC" CFLAGS="$OPT_FLAGS" CXXFLAGS="`echo $OPT_FLAGS | sed 's/ -Wall / /g'`" XCFLAGS="$OPT_FLAGS" TCFLAGS="$OPT_FLAGS" \
+	GCJFLAGS="$OPT_FLAGS" \
+	../configure --prefix=%{_prefix} --mandir=%{_mandir} --infodir=%{_infodir} \
+	--with-bugurl=http://bugzilla.redhat.com/bugzilla --enable-bootstrap \
+	--enable-shared --enable-threads=posix --enable-checking=release \
+	--with-system-zlib --enable-__cxa_atexit --disable-libunwind-exceptions \
+%if !%{build_ada}
+	--enable-languages=c,c++,objc,obj-c++,java,fortran \
+%else
+	--enable-languages=c,c++,objc,obj-c++,java,fortran,ada \
+%endif
+%if !%{build_java}
+	--disable-libgcj \
+%else
+	--enable-java-awt=gtk --disable-dssi --enable-plugin \
+	--with-java-home=%{_prefix}/lib/jvm/java-1.5.0-gcj-1.5.0.0/jre \
+	--enable-libgcj-multifile --enable-java-maintainer-mode \
+	--with-ecj-jar=/usr/share/java/eclipse-ecj.jar \
+	--disable-libjava-multilib \
+%endif
+%ifarch %{arm}
+	--disable-sjlj-exceptions \
+%endif
+%ifarch ppc ppc64
+	--enable-secureplt \
+%endif
+%ifarch sparc ppc ppc64 s390 s390x alpha
+	--with-long-double-128 \
+%endif
+%ifarch sparc
+	--build=%{gcc_target_platform} --target=%{gcc_target_platform} --with-cpu=v7
+%endif
+%ifarch ppc
+	--build=%{gcc_target_platform} --target=%{gcc_target_platform} --with-cpu=default32
+%endif
+%ifarch %{ix86} x86_64
+	--with-cpu=generic \
+%endif
+%ifarch s390 s390x
+	--with-tune=z9-109 \
+%endif
+%ifnarch sparc ppc
+	--build=%{gcc_target_platform}
+%endif
+
+GCJFLAGS="$OPT_FLAGS" make %{?_smp_mflags} BOOT_CFLAGS="$OPT_FLAGS" bootstrap
+#GCJFLAGS="$OPT_FLAGS" make %{?_smp_mflags} BOOT_CFLAGS="$OPT_FLAGS" profiledbootstrap
+
+# run the tests.
+make %{?_smp_mflags} -k check RUNTESTFLAGS="ALT_CC_UNDER_TEST=gcc ALT_CXX_UNDER_TEST=g++" || :
+cd gcc
+mv testsuite{,.normal}
+make %{?_smp_mflags} -k \
+  `sed -n 's/check-ada//;s/^CHECK_TARGETS[[:blank:]]*=[[:blank:]]*//p' Makefile` \
+  RUNTESTFLAGS="--target_board=unix/-fstack-protector ALT_CC_UNDER_TEST=gcc ALT_CXX_UNDER_TEST=g++" || :
+mv testsuite{,.ssp}
+mv testsuite{.normal,}
+cd ..
+echo ====================TESTING=========================
+( ../contrib/test_summary || : ) 2>&1 | sed -n '/^cat.*EOF/,/^EOF/{/^cat.*EOF/d;/^EOF/d;/^LAST_UPDATED:/d;p;}'
+echo ====================TESTING END=====================
+mkdir testlogs-%{_target_platform}-%{version}-%{release}
+for i in `find . -name \*.log | grep -F testsuite/ | grep -v 'config.log\|acats\|ada'`; do
+  ln $i testlogs-%{_target_platform}-%{version}-%{release}/ || :
+done
+for i in `find . -name \*.log | grep -F testsuite.ssp/ | grep -v 'config.log\|acats\|ada'`; do
+  ln $i testlogs-%{_target_platform}-%{version}-%{release}/ssp-`basename $i` || :
+done
+tar cf - testlogs-%{_target_platform}-%{version}-%{release} | bzip2 -9c \
+  | uuencode testlogs-%{_target_platform}.tar.bz2 || :
+rm -rf testlogs-%{_target_platform}-%{version}-%{release}
+
+# Make protoize
+make -C gcc CC="./xgcc -B ./ -O2" proto
+
+# Make generated man pages even if Pod::Man is not new enough
+perl -pi -e 's/head3/head2/' ../contrib/texi2pod.pl
+for i in ../gcc/doc/*.texi; do
+  cp -a $i $i.orig; sed 's/ftable/table/' $i.orig > $i
+done
+make -C gcc generated-manpages
+for i in ../gcc/doc/*.texi; do mv -f $i.orig $i; done
+
+# Copy various doc files here and there
+cd ..
+mkdir -p rpm.doc/gfortran rpm.doc/objc
+mkdir -p rpm.doc/boehm-gc rpm.doc/libffi rpm.doc/libjava
+mkdir -p rpm.doc/changelogs/{gcc/cp,gcc/java,gcc/ada,libstdc++-v3,libobjc,libmudflap,libgomp}
+sed -e 's,@VERSION@,%{gcc_version},' %{SOURCE2} > rpm.doc/README.libgcjwebplugin.so
+
+for i in {gcc,gcc/cp,gcc/java,gcc/ada,libstdc++-v3,libobjc,libmudflap,libgomp}/ChangeLog*; do
+	cp -p $i rpm.doc/changelogs/$i
+done
+
+(cd gcc/fortran; for i in ChangeLog*; do
+	cp -p $i ../../rpm.doc/gfortran/$i
+done)
+(cd libgfortran; for i in ChangeLog*; do
+	cp -p $i ../rpm.doc/gfortran/$i.libgfortran
+done)
+(cd gcc/objc; for i in README*; do
+	cp -p $i ../../rpm.doc/objc/$i.objc
+done)
+(cd libobjc; for i in README*; do
+	cp -p $i ../rpm.doc/objc/$i.libobjc
+done)
+(cd boehm-gc; for i in ChangeLog*; do
+	cp -p $i ../rpm.doc/boehm-gc/$i.gc
+done)
+(cd libffi; for i in ChangeLog* README* LICENSE; do
+	cp -p $i ../rpm.doc/libffi/$i.libffi
+done)
+(cd libjava; for i in ChangeLog* README*; do
+	cp -p $i ../rpm.doc/libjava/$i.libjava
+done)
+cp -p libjava/LIBGCJ_LICENSE rpm.doc/libjava/
+
+rm -f rpm.doc/changelogs/gcc/ChangeLog.[1-9]
+find rpm.doc -name \*ChangeLog\* | xargs bzip2 -9
+
+%if %{build_java_tar}
+find libjava -name \*.h -type f | xargs grep -l '// DO NOT EDIT THIS FILE - it is machine generated' > libjava-classes.list
+find libjava -name \*.class -type f >> libjava-classes.list
+find libjava/testsuite -name \*.jar -type f >> libjava-classes.list
+tar cf - -T libjava-classes.list | bzip2 -9 > $RPM_SOURCE_DIR/libjava-classes-%{version}-%{release}.tar.bz2
+%endif
+
+%install
+rm -fr $RPM_BUILD_ROOT
+
+perl -pi -e \
+  's~href="l(ibstdc|atest)~href="http://gcc.gnu.org/onlinedocs/libstdc++/l\1~' \
+  libstdc++-v3/docs/html/documentation.html
+ln -sf documentation.html libstdc++-v3/docs/html/index.html
+
+cd obj-%{gcc_target_platform}
+
+if [ ! -f /usr/lib/locale/de_DE/LC_CTYPE ]; then
+  export LOCPATH=`pwd`/locale:/usr/lib/locale
+fi
+
+%if %{build_java}
+%if !%{bootstrap_java}
+export PATH=`pwd`/java_hacks${PATH:+:$PATH}
+%endif
+%endif
+
+TARGET_PLATFORM=%{gcc_target_platform}
+
+# There are some MP bugs in libstdc++ Makefiles
+make -C %{gcc_target_platform}/libstdc++-v3
+
+make prefix=$RPM_BUILD_ROOT%{_prefix} mandir=$RPM_BUILD_ROOT%{_mandir} \
+  infodir=$RPM_BUILD_ROOT%{_infodir} install
+%if %{build_java}
+make DESTDIR=$RPM_BUILD_ROOT -C %{gcc_target_platform}/libjava install-src.zip
+%endif
+%if %{build_ada}
+chmod 644 $RPM_BUILD_ROOT%{_infodir}/gnat*
+%endif
+
+FULLPATH=$RPM_BUILD_ROOT%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}
+FULLEPATH=$RPM_BUILD_ROOT%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_version}
+
+# fix some things
+ln -sf gcc $RPM_BUILD_ROOT%{_prefix}/bin/cc
+mkdir -p $RPM_BUILD_ROOT/lib
+ln -sf ..%{_prefix}/bin/cpp $RPM_BUILD_ROOT/lib/cpp
+ln -sf gfortran $RPM_BUILD_ROOT%{_prefix}/bin/f95
+rm -f $RPM_BUILD_ROOT%{_infodir}/dir
+gzip -9 $RPM_BUILD_ROOT%{_infodir}/*.info*
+ln -sf gcc $RPM_BUILD_ROOT%{_prefix}/bin/gnatgcc
+
+cxxconfig="`find %{gcc_target_platform}/libstdc++-v3/include -name c++config.h`"
+for i in `find %{gcc_target_platform}/[36]*/libstdc++-v3/include -name c++config.h 2>/dev/null`; do
+  if ! diff -up $cxxconfig $i; then
+    cat > $RPM_BUILD_ROOT%{_prefix}/include/c++/%{gcc_version}/%{gcc_target_platform}/bits/c++config.h <<EOF
+#ifndef _CPP_CPPCONFIG_WRAPPER
+#define _CPP_CPPCONFIG_WRAPPER 1
+#include <bits/wordsize.h>
+#if __WORDSIZE == 32
+%ifarch %{multilib_64_archs}
+`cat $(find %{gcc_target_platform}/32/libstdc++-v3/include -name c++config.h)`
+%else
+`cat $(find %{gcc_target_platform}/libstdc++-v3/include -name c++config.h)`
+%endif
+#else
+%ifarch %{multilib_64_archs}
+`cat $(find %{gcc_target_platform}/libstdc++-v3/include -name c++config.h)`
+%else
+`cat $(find %{gcc_target_platform}/64/libstdc++-v3/include -name c++config.h)`
+%endif
+#endif
+#endif
+EOF
+    break
+  fi
+done
+
+# Nuke bits/stdc++.h.gch dirs
+# 1) there is no bits/stdc++.h header installed, so when gch file can't be
+#    used, compilation fails
+# 2) sometimes it is hard to match the exact options used for building
+#    libstdc++-v3 or they aren't desirable
+# 3) there are multilib issues, conflicts etc. with this
+# 4) it is huge
+# People can always precompile on their own whatever they want, but
+# shipping this for everybody is unnecessary.
+rm -rf $RPM_BUILD_ROOT%{_prefix}/include/c++/%{gcc_version}/%{gcc_target_platform}/bits/stdc++.h.gch
+
+%ifarch sparc sparc64
+ln -f $RPM_BUILD_ROOT%{_prefix}/bin/%{gcc_target_platform}-gcc \
+  $RPM_BUILD_ROOT%{_prefix}/bin/sparc-%{_vendor}-%{_target_os}-gcc
+%endif
+%ifarch ppc ppc64
+ln -f $RPM_BUILD_ROOT%{_prefix}/bin/%{gcc_target_platform}-gcc \
+  $RPM_BUILD_ROOT%{_prefix}/bin/ppc-%{_vendor}-%{_target_os}-gcc
+%endif
+
+%ifarch sparc ppc
+FULLLPATH=$FULLPATH/lib32
+%endif
+%ifarch sparc64 ppc64
+FULLLPATH=$FULLPATH/lib64
+%endif
+if [ -n "$FULLLPATH" ]; then
+  mkdir -p $FULLLPATH
+else
+  FULLLPATH=$FULLPATH
+fi
+
+find $RPM_BUILD_ROOT -name \*.la | xargs rm -f
+%if %{build_java}
+# gcj -static doesn't work properly anyway, unless using --whole-archive
+# and saving 35MB is not bad.
+find $RPM_BUILD_ROOT -name libgcj.a -o -name libgtkpeer.a \
+		     -o -name libgjsmalsa.a -o -name libgcj-tools.a -o -name libjvm.a \
+		     -o -name libgij.a -o -name libgcj_bc.a | xargs rm -f
+
+mv $RPM_BUILD_ROOT%{_prefix}/lib/libgcj.spec $FULLPATH/
+sed -i -e 's/lib: /&%%{static:%%eJava programs cannot be linked statically}/' \
+  $FULLPATH/libgcj.spec
+%endif
+
+mkdir -p $RPM_BUILD_ROOT/%{_lib}
+mv -f $RPM_BUILD_ROOT%{_prefix}/%{_lib}/libgcc_s.so.1 $RPM_BUILD_ROOT/%{_lib}/libgcc_s-%{gcc_version}-%{DATE}.so.1
+chmod 755 $RPM_BUILD_ROOT/%{_lib}/libgcc_s-%{gcc_version}-%{DATE}.so.1
+ln -sf libgcc_s-%{gcc_version}-%{DATE}.so.1 $RPM_BUILD_ROOT/%{_lib}/libgcc_s.so.1
+ln -sf /%{_lib}/libgcc_s.so.1 $FULLPATH/libgcc_s.so
+%ifarch sparc ppc
+ln -sf /lib64/libgcc_s.so.1 $FULLPATH/64/libgcc_s.so
+%endif
+%ifarch %{multilib_64_archs}
+ln -sf /lib/libgcc_s.so.1 $FULLPATH/32/libgcc_s.so
+%endif
+
+mv -f $RPM_BUILD_ROOT%{_prefix}/%{_lib}/libgomp.spec $FULLPATH/
+
+%if %{build_ada}
+mv -f $FULLPATH/adalib/libgnarl-*.so $RPM_BUILD_ROOT%{_prefix}/%{_lib}/
+mv -f $FULLPATH/adalib/libgnat-*.so $RPM_BUILD_ROOT%{_prefix}/%{_lib}/
+rm -f $FULLPATH/adalib/libgnarl.so* $FULLPATH/adalib/libgnat.so*
+%endif
+
+mkdir -p $RPM_BUILD_ROOT%{_prefix}/libexec/getconf
+if gcc/xgcc -B gcc/ -E -dD -xc /dev/null | grep __LONG_MAX__.*2147483647; then
+  ln -sf POSIX_V6_ILP32_OFF32 $RPM_BUILD_ROOT%{_prefix}/libexec/getconf/default
+else
+  ln -sf POSIX_V6_LP64_OFF64 $RPM_BUILD_ROOT%{_prefix}/libexec/getconf/default
+fi
+
+%if %{build_java}
+if [ "%{_lib}" != "lib" ]; then
+  mkdir -p $RPM_BUILD_ROOT%{_prefix}/%{_lib}/pkgconfig
+  sed '/^libdir/s/lib$/%{_lib}/' $RPM_BUILD_ROOT%{_prefix}/lib/pkgconfig/libgcj-*.pc \
+    > $RPM_BUILD_ROOT%{_prefix}/%{_lib}/pkgconfig/`basename $RPM_BUILD_ROOT%{_prefix}/lib/pkgconfig/libgcj-*.pc`
+fi
+%endif
+
+pushd $FULLPATH
+if [ "%{_lib}" = "lib" ]; then
+ln -sf ../../../libobjc.so.2 libobjc.so
+ln -sf ../../../libstdc++.so.6.* libstdc++.so
+ln -sf ../../../libgfortran.so.3.* libgfortran.so
+ln -sf ../../../libgomp.so.1.* libgomp.so
+ln -sf ../../../libmudflap.so.0.* libmudflap.so
+ln -sf ../../../libmudflapth.so.0.* libmudflapth.so
+%if %{build_java}
+ln -sf ../../../libgcj.so.9.* libgcj.so
+ln -sf ../../../libgcj-tools.so.9.* libgcj-tools.so
+ln -sf ../../../libgij.so.9.* libgij.so
+%endif
+%if %{build_ada}
+cd adalib
+ln -sf ../../../../libgnarl-*.so libgnarl.so
+ln -sf ../../../../libgnarl-*.so libgnarl-4.3.so
+ln -sf ../../../../libgnat-*.so libgnat.so
+ln -sf ../../../../libgnat-*.so libgnat-4.3.so
+cd ..
+%endif
+else
+ln -sf ../../../../%{_lib}/libobjc.so.2 libobjc.so
+ln -sf ../../../../%{_lib}/libstdc++.so.6.* libstdc++.so
+ln -sf ../../../../%{_lib}/libgfortran.so.3.* libgfortran.so
+ln -sf ../../../../%{_lib}/libgomp.so.1.* libgomp.so
+ln -sf ../../../../%{_lib}/libmudflap.so.0.* libmudflap.so
+ln -sf ../../../../%{_lib}/libmudflapth.so.0.* libmudflapth.so
+%if %{build_java}
+ln -sf ../../../../%{_lib}/libgcj.so.9.* libgcj.so
+ln -sf ../../../../%{_lib}/libgcj-tools.so.9.* libgcj-tools.so
+ln -sf ../../../../%{_lib}/libgij.so.9.* libgij.so
+%endif
+%if %{build_ada}
+cd adalib
+ln -sf ../../../../../%{_lib}/libgnarl-*.so libgnarl.so
+ln -sf ../../../../../%{_lib}/libgnarl-*.so libgnarl-4.3.so
+ln -sf ../../../../../%{_lib}/libgnat-*.so libgnat.so
+ln -sf ../../../../../%{_lib}/libgnat-*.so libgnat-4.3.so
+cd ..
+%endif
+fi
+%if %{build_java}
+mv -f $RPM_BUILD_ROOT%{_prefix}/%{_lib}/libgcj_bc.so $FULLLPATH/
+%endif
+mv -f $RPM_BUILD_ROOT%{_prefix}/%{_lib}/libstdc++.*a $FULLLPATH/
+mv -f $RPM_BUILD_ROOT%{_prefix}/%{_lib}/libsupc++.*a .
+mv -f $RPM_BUILD_ROOT%{_prefix}/%{_lib}/libgfortran.*a .
+mv -f $RPM_BUILD_ROOT%{_prefix}/%{_lib}/libobjc.*a .
+mv -f $RPM_BUILD_ROOT%{_prefix}/%{_lib}/libgomp.*a .
+mv -f $RPM_BUILD_ROOT%{_prefix}/%{_lib}/libmudflap{,th}.*a $FULLLPATH/
+
+%ifarch sparc ppc
+ln -sf ../../../../../lib64/libobjc.so.2 64/libobjc.so
+ln -sf ../`echo ../../../../lib/libstdc++.so.6.* | sed s~/lib/~/lib64/~` 64/libstdc++.so
+ln -sf ../`echo ../../../../lib/libgfortran.so.3.* | sed s~/lib/~/lib64/~` 64/libgfortran.so
+ln -sf ../`echo ../../../../lib/libgomp.so.1.* | sed s~/lib/~/lib64/~` 64/libgomp.so
+ln -sf ../`echo ../../../../lib/libmudflap.so.0.* | sed s~/lib/~/lib64/~` 64/libmudflap.so
+ln -sf ../`echo ../../../../lib/libmudflapth.so.0.* | sed s~/lib/~/lib64/~` 64/libmudflapth.so
+%if %{build_java}
+ln -sf ../`echo ../../../../lib/libgcj.so.9.* | sed s~/lib/~/lib64/~` 64/libgcj.so
+ln -sf ../`echo ../../../../lib/libgcj-tools.so.9.* | sed s~/lib/~/lib64/~` 64/libgcj-tools.so
+ln -sf ../`echo ../../../../lib/libgij.so.9.* | sed s~/lib/~/lib64/~` 64/libgij.so
+ln -sf lib32/libgcj_bc.so libgcj_bc.so
+ln -sf ../lib64/libgcj_bc.so 64/libgcj_bc.so
+%endif
+mv -f $RPM_BUILD_ROOT%{_prefix}/lib64/libsupc++.*a 64/
+mv -f $RPM_BUILD_ROOT%{_prefix}/lib64/libgfortran.*a 64/
+mv -f $RPM_BUILD_ROOT%{_prefix}/lib64/libobjc.*a 64/
+mv -f $RPM_BUILD_ROOT%{_prefix}/lib64/libgomp.*a 64/
+ln -sf lib32/libstdc++.a libstdc++.a
+ln -sf ../lib64/libstdc++.a 64/libstdc++.a
+ln -sf lib32/libmudflap.a libmudflap.a
+ln -sf ../lib64/libmudflap.a 64/libmudflap.a
+ln -sf lib32/libmudflapth.a libmudflapth.a
+ln -sf ../lib64/libmudflapth.a 64/libmudflapth.a
+%endif
+%ifarch %{multilib_64_archs}
+mkdir -p 32
+ln -sf ../../../../libobjc.so.2 32/libobjc.so
+ln -sf ../`echo ../../../../lib64/libstdc++.so.6.* | sed s~/../lib64/~/~` 32/libstdc++.so
+ln -sf ../`echo ../../../../lib64/libgfortran.so.3.* | sed s~/../lib64/~/~` 32/libgfortran.so
+ln -sf ../`echo ../../../../lib64/libgomp.so.1.* | sed s~/../lib64/~/~` 32/libgomp.so
+ln -sf ../`echo ../../../../lib64/libmudflap.so.0.* | sed s~/../lib64/~/~` 32/libmudflap.so
+ln -sf ../`echo ../../../../lib64/libmudflapth.so.0.* | sed s~/../lib64/~/~` 32/libmudflapth.so
+%if %{build_java}
+ln -sf ../`echo ../../../../lib64/libgcj.so.9.* | sed s~/../lib64/~/~` 32/libgcj.so
+ln -sf ../`echo ../../../../lib64/libgcj-tools.so.9.* | sed s~/../lib64/~/~` 32/libgcj-tools.so
+ln -sf ../`echo ../../../../lib64/libgij.so.9.* | sed s~/../lib64/~/~` 32/libgij.so
+%endif
+mv -f $RPM_BUILD_ROOT%{_prefix}/lib/libsupc++.*a 32/
+mv -f $RPM_BUILD_ROOT%{_prefix}/lib/libgfortran.*a 32/
+mv -f $RPM_BUILD_ROOT%{_prefix}/lib/libobjc.*a 32/
+mv -f $RPM_BUILD_ROOT%{_prefix}/lib/libgomp.*a 32/
+%endif
+%ifarch sparc64 ppc64
+ln -sf ../lib32/libstdc++.a 32/libstdc++.a
+ln -sf lib64/libstdc++.a libstdc++.a
+ln -sf ../lib32/libmudflap.a 32/libmudflap.a
+ln -sf lib64/libmudflap.a libmudflap.a
+ln -sf ../lib32/libmudflapth.a 32/libmudflapth.a
+ln -sf lib64/libmudflapth.a libmudflapth.a
+%if %{build_java}
+ln -sf ../lib32/libgcj_bc.so 32/libgcj_bc.so
+ln -sf lib64/libgcj_bc.so libgcj_bc.so
+%endif
+%else
+%ifarch %{multilib_64_archs}
+ln -sf ../../../%{multilib_32_arch}-%{_vendor}-%{_target_os}/%{gcc_version}/libstdc++.a 32/libstdc++.a
+ln -sf ../../../%{multilib_32_arch}-%{_vendor}-%{_target_os}/%{gcc_version}/libmudflap.a 32/libmudflap.a
+ln -sf ../../../%{multilib_32_arch}-%{_vendor}-%{_target_os}/%{gcc_version}/libmudflapth.a 32/libmudflapth.a
+%if %{build_java}
+ln -sf ../../../%{multilib_32_arch}-%{_vendor}-%{_target_os}/%{gcc_version}/libgcj_bc.so 32/libgcj_bc.so
+%endif
+%endif
+%endif
+
+# Strip debug info from Fortran/ObjC/Java static libraries
+strip -g `find . \( -name libgfortran.a -o -name libobjc.a -o -name libgomp.a \
+		    -o -name libmudflap.a -o -name libmudflapth.a \
+		    -o -name libgcc.a -o -name libgcov.a \) -a -type f`
+popd
+chmod 755 $RPM_BUILD_ROOT%{_prefix}/%{_lib}/libgfortran.so.3.*
+chmod 755 $RPM_BUILD_ROOT%{_prefix}/%{_lib}/libgomp.so.1.*
+chmod 755 $RPM_BUILD_ROOT%{_prefix}/%{_lib}/libmudflap{,th}.so.0.*
+chmod 755 $RPM_BUILD_ROOT%{_prefix}/%{_lib}/libobjc.so.2.*
+
+%if %{build_ada}
+chmod 755 $RPM_BUILD_ROOT%{_prefix}/%{_lib}/libgnarl*so*
+chmod 755 $RPM_BUILD_ROOT%{_prefix}/%{_lib}/libgnat*so*
+%endif
+
+mv $FULLPATH/include-fixed/syslimits.h $FULLPATH/include/syslimits.h
+mv $FULLPATH/include-fixed/limits.h $FULLPATH/include/limits.h
+for h in `find $FULLPATH/include -name \*.h`; do
+  if grep -q 'It has been auto-edited by fixincludes from' $h; then
+    rh=`grep -A2 'It has been auto-edited by fixincludes from' $h | tail -1 | sed 's|^.*"\(.*\)".*$|\1|'`
+    diff -up $rh $h || :
+    rm -f $h
+  fi
+done
+
+cat > $RPM_BUILD_ROOT%{_prefix}/bin/c89 <<"EOF"
+#!/bin/sh
+fl="-std=c89"
+for opt; do
+  case "$opt" in
+    -ansi|-std=c89|-std=iso9899:1990) fl="";;
+    -std=*) echo "`basename $0` called with non ANSI/ISO C option $opt" >&2
+	    exit 1;;
+  esac
+done
+exec gcc $fl ${1+"$@"}
+EOF
+cat > $RPM_BUILD_ROOT%{_prefix}/bin/c99 <<"EOF"
+#!/bin/sh
+fl="-std=c99"
+for opt; do
+  case "$opt" in
+    -std=c99|-std=iso9899:1999) fl="";;
+    -std=*) echo "`basename $0` called with non ISO C99 option $opt" >&2
+	    exit 1;;
+  esac
+done
+exec gcc $fl ${1+"$@"}
+EOF
+chmod 755 $RPM_BUILD_ROOT%{_prefix}/bin/c?9
+
+mkdir -p $RPM_BUILD_ROOT%{_prefix}/sbin
+gcc -static -Os %{SOURCE1} -o $RPM_BUILD_ROOT%{_prefix}/sbin/libgcc_post_upgrade
+strip $RPM_BUILD_ROOT%{_prefix}/sbin/libgcc_post_upgrade
+
+cd ..
+%find_lang %{name}
+%find_lang cpplib
+
+# Remove binaries we will not be including, so that they don't end up in
+# gcc-debuginfo
+rm -f $RPM_BUILD_ROOT%{_prefix}/%{_lib}/{libffi*,libiberty.a}
+rm -f $FULLEPATH/install-tools/{mkheaders,fixincl}
+rm -f $RPM_BUILD_ROOT%{_prefix}/lib/{32,64}/libiberty.a
+rm -f $RPM_BUILD_ROOT%{_prefix}/%{_lib}/libssp*
+
+%ifarch %{multilib_64_archs}
+# Remove libraries for the other arch on multilib arches
+rm -f $RPM_BUILD_ROOT%{_prefix}/lib/lib*.so*
+rm -f $RPM_BUILD_ROOT%{_prefix}/lib/lib*.a
+%else
+%ifarch sparc ppc
+rm -f $RPM_BUILD_ROOT%{_prefix}/lib64/lib*.so*
+rm -f $RPM_BUILD_ROOT%{_prefix}/lib64/lib*.a
+%endif
+%endif
+
+%if %{build_java}
+mkdir -p $RPM_BUILD_ROOT%{_prefix}/share/java/gcj-endorsed \
+	 $RPM_BUILD_ROOT%{_prefix}/%{_lib}/gcj-%{version}/classmap.db.d
+chmod 755 $RPM_BUILD_ROOT%{_prefix}/share/java/gcj-endorsed \
+	  $RPM_BUILD_ROOT%{_prefix}/%{_lib}/gcj-%{version} \
+	  $RPM_BUILD_ROOT%{_prefix}/%{_lib}/gcj-%{version}/classmap.db.d
+touch $RPM_BUILD_ROOT%{_prefix}/%{_lib}/gcj-%{version}/classmap.db
+%endif
+
+install -m644 %{SOURCE3} $RPM_BUILD_ROOT%{_mandir}/man1/protoize.1
+echo '.so man1/protoize.1' > $RPM_BUILD_ROOT%{_mandir}/man1/unprotoize.1
+chmod 644 $RPM_BUILD_ROOT%{_mandir}/man1/unprotoize.1
+
+%clean
+rm -rf $RPM_BUILD_ROOT
+
+%post
+/sbin/install-info \
+  --info-dir=%{_infodir} %{_infodir}/gcc.info.gz || :
+
+%preun
+if [ $1 = 0 ]; then
+  /sbin/install-info --delete \
+    --info-dir=%{_infodir} %{_infodir}/gcc.info.gz || :
+fi
+
+%post -n cpp
+/sbin/install-info \
+  --info-dir=%{_infodir} %{_infodir}/cpp.info.gz || :
+
+%preun -n cpp
+if [ $1 = 0 ]; then
+  /sbin/install-info --delete \
+    --info-dir=%{_infodir} %{_infodir}/cpp.info.gz || :
+fi
+
+%post gfortran
+/sbin/install-info \
+  --info-dir=%{_infodir} %{_infodir}/gfortran.info.gz || :
+
+%preun gfortran
+if [ $1 = 0 ]; then
+  /sbin/install-info --delete \
+    --info-dir=%{_infodir} %{_infodir}/gfortran.info.gz || :
+fi
+
+%post java
+/sbin/install-info \
+  --info-dir=%{_infodir} %{_infodir}/gcj.info.gz || :
+
+%preun java
+if [ $1 = 0 ]; then
+  /sbin/install-info --delete \
+    --info-dir=%{_infodir} %{_infodir}/gcj.info.gz || :
+fi
+
+%post gnat
+/sbin/install-info \
+  --info-dir=%{_infodir} %{_infodir}/gnat_rm.info.gz || :
+/sbin/install-info \
+  --info-dir=%{_infodir} %{_infodir}/gnat_ugn_unw.info.gz || :
+/sbin/install-info \
+  --info-dir=%{_infodir} %{_infodir}/gnat-style.info.gz || :
+
+%preun gnat
+if [ $1 = 0 ]; then
+  /sbin/install-info --delete \
+    --info-dir=%{_infodir} %{_infodir}/gnat_rm.info.gz || :
+  /sbin/install-info --delete \
+    --info-dir=%{_infodir} %{_infodir}/gnat_ugn_unw.info.gz || :
+  /sbin/install-info --delete \
+    --info-dir=%{_infodir} %{_infodir}/gnat-style.info.gz || :
+fi
+
+# Because glibc Prereq's libgcc and /sbin/ldconfig
+# comes from glibc, it might not exist yet when
+# libgcc is installed
+%post -n libgcc -p %{_prefix}/sbin/libgcc_post_upgrade
+
+%post -n libstdc++ -p /sbin/ldconfig
+
+%postun -n libstdc++ -p /sbin/ldconfig
+
+%post -n libobjc -p /sbin/ldconfig
+
+%postun -n libobjc -p /sbin/ldconfig
+
+%post -n libgcj
+/sbin/ldconfig
+/sbin/install-info \
+  --info-dir=%{_infodir} %{_infodir}/cp-tools.info.gz || :
+
+%preun -n libgcj
+if [ $1 = 0 ]; then
+  /sbin/install-info --delete \
+    --info-dir=%{_infodir} %{_infodir}/cp-tools.info.gz || :
+fi
+
+%postun -n libgcj -p /sbin/ldconfig
+
+%post -n libgfortran -p /sbin/ldconfig
+
+%postun -n libgfortran -p /sbin/ldconfig
+
+%post -n libgnat -p /sbin/ldconfig
+
+%postun -n libgnat -p /sbin/ldconfig
+
+%post -n libgomp
+/sbin/ldconfig
+/sbin/install-info \
+  --info-dir=%{_infodir} %{_infodir}/libgomp.info.gz || :
+
+%preun -n libgomp
+if [ $1 = 0 ]; then
+  /sbin/install-info --delete \
+    --info-dir=%{_infodir} %{_infodir}/libgomp.info.gz || :
+fi
+
+%postun -n libgomp -p /sbin/ldconfig
+
+%post -n libmudflap -p /sbin/ldconfig
+
+%postun -n libmudflap -p /sbin/ldconfig
+
+%files -f %{name}.lang
+%defattr(-,root,root)
+%{_prefix}/bin/cc
+%{_prefix}/bin/c89
+%{_prefix}/bin/c99
+%{_prefix}/bin/gcc
+%{_prefix}/bin/gcov
+%{_prefix}/bin/protoize
+%{_prefix}/bin/unprotoize
+%ifarch sparc ppc
+%{_prefix}/bin/%{_target_platform}-gcc
+%endif
+%ifarch sparc64
+%{_prefix}/bin/sparc-%{_vendor}-%{_target_os}-gcc
+%endif
+%ifarch ppc64
+%{_prefix}/bin/ppc-%{_vendor}-%{_target_os}-gcc
+%endif
+%{_prefix}/bin/%{gcc_target_platform}-gcc
+%{_mandir}/man1/gcc.1*
+%{_mandir}/man1/gcov.1*
+%{_mandir}/man1/protoize.1*
+%{_mandir}/man1/unprotoize.1*
+%{_infodir}/gcc*
+%dir %{_prefix}/lib/gcc
+%dir %{_prefix}/lib/gcc/%{gcc_target_platform}
+%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}
+%dir %{_prefix}/libexec/gcc
+%dir %{_prefix}/libexec/gcc/%{gcc_target_platform}
+%dir %{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_version}
+%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/SYSCALLS.c.X
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/stddef.h
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/stdarg.h
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/varargs.h
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/float.h
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/limits.h
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/stdbool.h
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/iso646.h
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/syslimits.h
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/unwind.h
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/omp.h
+%ifarch %{ix86} x86_64
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/mmintrin.h
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/xmmintrin.h
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/emmintrin.h
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/pmmintrin.h
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/tmmintrin.h
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/ammintrin.h
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/smmintrin.h
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/nmmintrin.h
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/bmmintrin.h
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/mmintrin-common.h
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/mm_malloc.h
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/mm3dnow.h
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/cpuid.h
+%endif
+%ifarch ia64
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/ia64intrin.h
+%endif
+%ifarch ppc ppc64
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/ppc-asm.h
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/altivec.h
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/spe.h
+%endif
+%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_version}/collect2
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/crt*.o
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libgcc.a
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libgcov.a
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libgcc_eh.a
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libgcc_s.so
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libgomp.spec
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libgomp.a
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libgomp.so
+%ifarch sparc ppc
+%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/64
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/64/crt*.o
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/64/libgcc.a
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/64/libgcov.a
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/64/libgcc_eh.a
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/64/libgcc_s.so
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/64/libgomp.a
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/64/libgomp.so
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/64/libmudflap.a
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/64/libmudflapth.a
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/64/libmudflap.so
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/64/libmudflapth.so
+%endif
+%ifarch %{multilib_64_archs}
+%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/32
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/32/crt*.o
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/32/libgcc.a
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/32/libgcov.a
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/32/libgcc_eh.a
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/32/libgcc_s.so
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/32/libgomp.a
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/32/libgomp.so
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/32/libmudflap.a
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/32/libmudflapth.a
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/32/libmudflap.so
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/32/libmudflapth.so
+%endif
+%ifarch sparc sparc64 ppc ppc64
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libmudflap.a
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libmudflapth.a
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libmudflap.so
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libmudflapth.so
+%endif
+%dir %{_prefix}/libexec/getconf
+%{_prefix}/libexec/getconf/default
+%doc gcc/README* rpm.doc/changelogs/gcc/ChangeLog* gcc/COPYING*
+
+%files -n cpp -f cpplib.lang
+%defattr(-,root,root)
+/lib/cpp
+%{_prefix}/bin/cpp
+%{_mandir}/man1/cpp.1*
+%{_infodir}/cpp*
+%dir %{_prefix}/libexec/gcc
+%dir %{_prefix}/libexec/gcc/%{gcc_target_platform}
+%dir %{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_version}
+%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_version}/cc1
+
+%files -n libgcc
+%defattr(-,root,root)
+/%{_lib}/libgcc_s-%{gcc_version}-%{DATE}.so.1
+/%{_lib}/libgcc_s.so.1
+%{_prefix}/sbin/libgcc_post_upgrade
+%doc gcc/COPYING.LIB
+
+%files c++
+%defattr(-,root,root)
+%{_prefix}/bin/%{gcc_target_platform}-*++
+%{_prefix}/bin/g++
+%{_prefix}/bin/c++
+%{_mandir}/man1/g++.1*
+%dir %{_prefix}/lib/gcc
+%dir %{_prefix}/lib/gcc/%{gcc_target_platform}
+%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}
+%dir %{_prefix}/libexec/gcc
+%dir %{_prefix}/libexec/gcc/%{gcc_target_platform}
+%dir %{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_version}
+%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_version}/cc1plus
+%ifarch sparc ppc
+%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/64
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/64/libstdc++.so
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/64/libstdc++.a
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/64/libsupc++.a
+%endif
+%ifarch %{multilib_64_archs}
+%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/32
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/32/libstdc++.so
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/32/libstdc++.a
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/32/libsupc++.a
+%endif
+%ifarch sparc ppc %{multilib_64_archs}
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libstdc++.so
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libsupc++.a
+%endif
+%ifarch sparc sparc64 ppc ppc64
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libstdc++.a
+%endif
+%doc rpm.doc/changelogs/gcc/cp/ChangeLog*
+
+%files -n libstdc++
+%defattr(-,root,root)
+%{_prefix}/%{_lib}/libstdc++.so.6*
+
+%files -n libstdc++-devel
+%defattr(-,root,root)
+%dir %{_prefix}/include/c++
+%dir %{_prefix}/include/c++/%{gcc_version}
+%{_prefix}/include/c++/%{gcc_version}/[^gjos]*
+%{_prefix}/include/c++/%{gcc_version}/os*
+%{_prefix}/include/c++/%{gcc_version}/s[^u]*
+%dir %{_prefix}/lib/gcc
+%dir %{_prefix}/lib/gcc/%{gcc_target_platform}
+%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}
+%ifarch sparc ppc
+%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/lib32
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/lib32/libstdc++.a
+%endif
+%ifarch sparc64 ppc64
+%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/lib64
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/lib64/libstdc++.a
+%endif
+%ifnarch sparc sparc64 ppc ppc64
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libstdc++.a
+%endif
+%ifnarch sparc ppc %{multilib_64_archs}
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libstdc++.so
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libsupc++.a
+%endif
+%doc rpm.doc/changelogs/libstdc++-v3/ChangeLog* libstdc++-v3/README* libstdc++-v3/docs/html/
+
+%files objc
+%defattr(-,root,root)
+%dir %{_prefix}/lib/gcc
+%dir %{_prefix}/lib/gcc/%{gcc_target_platform}
+%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}
+%dir %{_prefix}/libexec/gcc
+%dir %{_prefix}/libexec/gcc/%{gcc_target_platform}
+%dir %{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_version}
+%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/objc
+%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_version}/cc1obj
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libobjc.a
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libobjc.so
+%ifarch sparc ppc
+%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/64
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/64/libobjc.a
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/64/libobjc.so
+%endif
+%ifarch %{multilib_64_archs}
+%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/32
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/32/libobjc.a
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/32/libobjc.so
+%endif
+%doc rpm.doc/objc/*
+%doc libobjc/THREADS* rpm.doc/changelogs/libobjc/ChangeLog*
+
+%files objc++
+%defattr(-,root,root)
+%dir %{_prefix}/libexec/gcc
+%dir %{_prefix}/libexec/gcc/%{gcc_target_platform}
+%dir %{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_version}
+%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_version}/cc1objplus
+
+%files -n libobjc
+%defattr(-,root,root)
+%{_prefix}/%{_lib}/libobjc.so.2*
+
+%files gfortran
+%defattr(-,root,root)
+%{_prefix}/bin/gfortran
+%{_prefix}/bin/f95
+%{_mandir}/man1/gfortran.1*
+%{_infodir}/gfortran*
+%dir %{_prefix}/lib/gcc
+%dir %{_prefix}/lib/gcc/%{gcc_target_platform}
+%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}
+%dir %{_prefix}/libexec/gcc
+%dir %{_prefix}/libexec/gcc/%{gcc_target_platform}
+%dir %{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_version}
+%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/finclude
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/finclude/omp_lib.h
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/finclude/omp_lib.f90
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/finclude/omp_lib.mod
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/finclude/omp_lib_kinds.mod
+%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_version}/f951
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libgfortranbegin.a
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libgfortran.a
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libgfortran.so
+%ifarch sparc ppc
+%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/64
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/64/libgfortranbegin.a
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/64/libgfortran.a
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/64/libgfortran.so
+%endif
+%ifarch %{multilib_64_archs}
+%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/32
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/32/libgfortranbegin.a
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/32/libgfortran.a
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/32/libgfortran.so
+%endif
+%doc rpm.doc/gfortran/*
+
+%files -n libgfortran
+%defattr(-,root,root)
+%{_prefix}/%{_lib}/libgfortran.so.3*
+
+%if %{build_java}
+%files java
+%defattr(-,root,root)
+%{_prefix}/bin/gcj
+%{_prefix}/bin/gjavah
+%{_prefix}/bin/gcjh
+%{_prefix}/bin/jcf-dump
+%{_mandir}/man1/gcj.1*
+%{_mandir}/man1/jcf-dump.1*
+%{_mandir}/man1/gjavah.1*
+%{_mandir}/man1/gcjh.1*
+%{_infodir}/gcj*
+%dir %{_prefix}/libexec/gcc
+%dir %{_prefix}/libexec/gcc/%{gcc_target_platform}
+%dir %{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_version}
+%dir %{_prefix}/lib/gcc
+%dir %{_prefix}/lib/gcc/%{gcc_target_platform}
+%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}
+%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_version}/jc1
+%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_version}/ecj1
+%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_version}/jvgenmain
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libgcj.so
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libgcj-tools.so
+%ifarch sparc sparc64 ppc ppc64
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libgcj_bc.so
+%endif
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libgij.so
+%ifarch sparc ppc
+%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/64
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/64/libgcj.so
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/64/libgcj-tools.so
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/64/libgcj_bc.so
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/64/libgij.so
+%endif
+%ifarch %{multilib_64_archs}
+%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/32
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/32/libgcj.so
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/32/libgcj-tools.so
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/32/libgcj_bc.so
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/32/libgij.so
+%endif
+%doc rpm.doc/changelogs/gcc/java/ChangeLog*
+
+%files -n libgcj
+%defattr(-,root,root)
+%{_prefix}/bin/jv-convert
+%{_prefix}/bin/gij
+%{_prefix}/bin/gjar
+%{_prefix}/bin/grmic
+%{_prefix}/bin/grmid
+%{_prefix}/bin/grmiregistry
+%{_prefix}/bin/gtnameserv
+%{_prefix}/bin/gkeytool
+%{_prefix}/bin/gorbd
+%{_prefix}/bin/gserialver
+%{_prefix}/bin/gcj-dbtool
+%if %{include_gappletviewer}
+%{_prefix}/bin/gappletviewer
+%{_mandir}/man1/gappletviewer.1*
+%endif
+%{_prefix}/bin/gjarsigner
+%{_mandir}/man1/gjar.1*
+%{_mandir}/man1/gjarsigner.1*
+%{_mandir}/man1/jv-convert.1*
+%{_mandir}/man1/gij.1*
+%{_mandir}/man1/grmic.1*
+%{_mandir}/man1/grmiregistry.1*
+%{_mandir}/man1/gcj-dbtool.1*
+%{_mandir}/man1/gkeytool.1*
+%{_mandir}/man1/gorbd.1*
+%{_mandir}/man1/grmid.1*
+%{_mandir}/man1/gserialver.1*
+%{_mandir}/man1/gtnameserv.1*
+%{_infodir}/cp-tools.info*
+%{_prefix}/%{_lib}/libgcj.so.*
+%{_prefix}/%{_lib}/libgcj-tools.so.*
+%{_prefix}/%{_lib}/libgcj_bc.so.*
+%{_prefix}/%{_lib}/libgij.so.*
+%dir %{_prefix}/%{_lib}/gcj-%{version}
+%{_prefix}/%{_lib}/gcj-%{version}/libgtkpeer.so
+%{_prefix}/%{_lib}/gcj-%{version}/libgjsmalsa.so
+%{_prefix}/%{_lib}/gcj-%{version}/libjawt.so
+%if %{include_gappletviewer}
+%{_prefix}/%{_lib}/gcj-%{version}/libgcjwebplugin.so
+%endif
+%{_prefix}/%{_lib}/gcj-%{version}/libjvm.so
+%dir %{_prefix}/share/java
+%{_prefix}/share/java/[^sl]*
+%{_prefix}/share/java/libgcj-%{version}.jar
+%dir %{_prefix}/%{_lib}/security
+%config(noreplace) %{_prefix}/%{_lib}/security/classpath.security
+%{_prefix}/%{_lib}/logging.properties
+%dir %{_prefix}/%{_lib}/gcj-%{version}/classmap.db.d
+%attr(0644,root,root) %verify(not md5 size mtime) %ghost %config(missingok,noreplace) %{_prefix}/%{_lib}/gcj-%{version}/classmap.db
+%if %{include_gappletviewer}
+%doc rpm.doc/README.libgcjwebplugin.so
+%endif
+
+%files -n libgcj-devel
+%defattr(-,root,root)
+%{_prefix}/bin/addr2name.awk
+%dir %{_prefix}/lib/gcc
+%dir %{_prefix}/lib/gcc/%{gcc_target_platform}
+%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}
+%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/gcj
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/jawt.h
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/jawt_md.h
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/jni.h
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/jni_md.h
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/jvmpi.h
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libgcj.spec
+%ifarch sparc ppc
+%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/lib32
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/lib32/libgcj_bc.so
+%endif
+%ifarch sparc64 ppc64
+%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/lib64
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/lib64/libgcj_bc.so
+%endif
+%ifnarch sparc sparc64 ppc ppc64
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libgcj_bc.so
+%endif
+%dir %{_prefix}/include/c++
+%dir %{_prefix}/include/c++/%{gcc_version}
+%{_prefix}/include/c++/%{gcc_version}/[gj]*
+%{_prefix}/include/c++/%{gcc_version}/org
+%{_prefix}/include/c++/%{gcc_version}/sun
+%{_prefix}/%{_lib}/pkgconfig/libgcj-*.pc
+%doc rpm.doc/boehm-gc/* rpm.doc/libffi/*
+%doc rpm.doc/libjava/*
+
+%files -n libgcj-src
+%defattr(-,root,root)
+%dir %{_prefix}/share/java
+%{_prefix}/share/java/src*.zip
+%{_prefix}/share/java/libgcj-tools-%{version}.jar
+%endif
+
+%if %{build_ada}
+%files gnat
+%defattr(-,root,root)
+%{_prefix}/bin/gnat*
+%{_infodir}/gnat*
+%dir %{_prefix}/lib/gcc
+%dir %{_prefix}/lib/gcc/%{gcc_target_platform}
+%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}
+%dir %{_prefix}/libexec/gcc
+%dir %{_prefix}/libexec/gcc/%{gcc_target_platform}
+%dir %{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_version}
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/adainclude
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/adalib
+%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_version}/gnat1
+%doc rpm.doc/changelogs/gcc/ada/ChangeLog*
+
+%files -n libgnat
+%defattr(-,root,root)
+%{_prefix}/%{_lib}/libgnat-*.so
+%{_prefix}/%{_lib}/libgnarl-*.so
+%endif
+
+%files -n libgomp
+%defattr(-,root,root)
+%{_prefix}/%{_lib}/libgomp.so.1*
+%{_infodir}/libgomp.info*
+%doc rpm.doc/changelogs/libgomp/ChangeLog*
+
+%files -n libmudflap
+%defattr(-,root,root)
+%{_prefix}/%{_lib}/libmudflap.so.0*
+%{_prefix}/%{_lib}/libmudflapth.so.0*
+
+%files -n libmudflap-devel
+%defattr(-,root,root)
+%dir %{_prefix}/lib/gcc
+%dir %{_prefix}/lib/gcc/%{gcc_target_platform}
+%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}
+%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/mf-runtime.h
+%ifarch sparc ppc
+%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/lib32
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/lib32/libmudflap.a
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/lib32/libmudflapth.a
+%endif
+%ifarch sparc64 ppc64
+%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/lib64
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/lib64/libmudflap.a
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/lib64/libmudflapth.a
+%endif
+%ifnarch sparc sparc64 ppc ppc64
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libmudflap.a
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libmudflapth.a
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libmudflap.so
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libmudflapth.so
+%endif
+%doc rpm.doc/changelogs/libmudflap/ChangeLog*
+
+%changelog
+* Wed Dec 12 2007 Jakub Jelinek <jakub@redhat.com> 4.3.0-0.2
+- update from the trunk
+
+* Sun Dec  9 2007 Jakub Jelinek <jakub@redhat.com> 4.3.0-0.1
+- initial 4.3 package, using newly created redhat/gcc-4_3-branch

diff --git a/sources b/sources
index 5fee11f..251a5ca 100644
--- a/sources
+++ b/sources
@@ -1 +1 @@
-b0e332f1be680c13608e127c6ed9acf9  gcc-4.1.2-20071124.tar.bz2
+65ac33620b3605f6c612b8591d7f7fa1  gcc-4.3.0-20071212.tar.bz2

             reply	other threads:[~2026-06-29 12:23 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-06-29 12:23 Jakub Jelinek [this message]
  -- strict thread matches above, loose matches on Subject: below --
2026-06-29 12:23 [rpms/gcc] rhel-f41-base: 4.3.0-0.2 Jakub Jelinek
2026-06-29 12:23 Jakub Jelinek

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=178273581230.1.7521480350724808096.rpms-gcc-3daebbc6176a@fedoraproject.org \
    --to=jakub@fedoraproject.org \
    --cc=git-commits@fedoraproject.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox