diff --git a/README.md b/README.md
index 72a586f..4f5a0c4 100644
--- a/README.md
+++ b/README.md
@@ -1,2 +1,5 @@
# gcc6
+A compiler aimed at integrating all the optimizations and features necessary for a high-performance and stable development environment.
+This package is required for all other GCC compilers, namely C++, Fortran, Objective C and Java.
+
diff --git a/gcc-4.0.2-BufferStrategy.patch b/gcc-4.0.2-BufferStrategy.patch
new file mode 100644
index 0000000..abdbf7f
--- /dev/null
+++ b/gcc-4.0.2-BufferStrategy.patch
@@ -0,0 +1,299 @@
+diff -Nru gcc-4.0.2.orig/libjava/java/awt/Window.java gcc-4.0.2/libjava/java/awt/Window.java
+--- gcc-4.0.2.orig/libjava/java/awt/Window.java 2005-10-25 12:54:05.000000000 +0200
++++ gcc-4.0.2/libjava/java/awt/Window.java 2005-10-25 16:19:42.000000000 +0200
+@@ -15,8 +15,8 @@
+
+ You should have received a copy of the GNU General Public License
+ along with GNU Classpath; see the file COPYING. If not, write to the
+-Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+-02111-1307 USA.
++Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
++02110-1301 USA.
+
+ Linking this library statically or dynamically with other modules is
+ making a combined work based on this library. Thus, the terms and
+@@ -45,6 +45,7 @@
+ import java.awt.event.WindowFocusListener;
+ import java.awt.event.WindowListener;
+ import java.awt.event.WindowStateListener;
++import java.awt.image.BufferStrategy;
+ import java.awt.peer.WindowPeer;
+ import java.lang.ref.Reference;
+ import java.lang.ref.WeakReference;
+@@ -90,7 +91,8 @@
+
+ private transient boolean shown;
+
+- private transient Component windowFocusOwner;
++ // This is package-private to avoid an accessor method.
++ transient Component windowFocusOwner;
+
+ /*
+ * The number used to generate the name returned by getName.
+@@ -153,6 +155,9 @@
+ }
+ }
+ });
++
++ GraphicsEnvironment g = GraphicsEnvironment.getLocalGraphicsEnvironment();
++ graphicsConfiguration = g.getDefaultScreenDevice().getDefaultConfiguration();
+ }
+
+ Window(GraphicsConfiguration gc)
+@@ -617,6 +622,8 @@
+ || windowStateListener != null
+ || (eventMask & AWTEvent.WINDOW_EVENT_MASK) != 0))
+ processEvent(e);
++ else if (e.id == ComponentEvent.COMPONENT_RESIZED)
++ validate ();
+ else
+ super.dispatchEventImpl(e);
+ }
+@@ -739,7 +746,25 @@
+ if (activeWindow == this)
+ return manager.getFocusOwner ();
+ else
+- return windowFocusOwner;
++ return null;
++ }
++
++ /**
++ * Returns the child component of this window that would receive
++ * focus if this window were to become focused. If the window
++ * already has the top-level focus, then this method returns the
++ * same component as getFocusOwner. If no child component has
++ * requested focus within the window, then the initial focus owner
++ * is returned. If this is a non-focusable window, this method
++ * returns null.
++ *
++ * @return the child component of this window that most recently had
++ * the focus, or null
++ * @since 1.4
++ */
++ public Component getMostRecentFocusOwner ()
++ {
++ return windowFocusOwner;
+ }
+
+ /**
+@@ -771,12 +796,16 @@
+ /**
+ * Tests whether or not this window is visible on the screen.
+ *
++ * In contrast to the normal behaviour of Container, which is that
++ * a container is showing if its parent is visible and showing, a Window
++ * is even showing, if its parent (i.e. an invisible Frame) is not showing.
++ *
+ * @return true
if this window is visible, false
+ * otherwise.
+ */
+ public boolean isShowing()
+ {
+- return super.isShowing();
++ return isVisible();
+ }
+
+ public void setLocationRelativeTo (Component c)
+@@ -796,6 +825,157 @@
+ }
+
+ /**
++ * A BltBufferStrategy for windows.
++ */
++ private class WindowBltBufferStrategy extends BltBufferStrategy
++ {
++ /**
++ * Creates a block transfer strategy for this window.
++ *
++ * @param numBuffers the number of buffers in this strategy
++ * @param accelerated true if the buffer should be accelerated,
++ * false otherwise
++ */
++ WindowBltBufferStrategy(int numBuffers, boolean accelerated)
++ {
++ super(numBuffers,
++ new BufferCapabilities(new ImageCapabilities(accelerated),
++ new ImageCapabilities(accelerated),
++ BufferCapabilities.FlipContents.COPIED));
++ }
++ }
++
++ /**
++ * A FlipBufferStrategy for windows.
++ */
++ private class WindowFlipBufferStrategy extends FlipBufferStrategy
++ {
++ /**
++ * Creates a flip buffer strategy for this window.
++ *
++ * @param numBuffers the number of buffers in this strategy
++ *
++ * @throws AWTException if the requested number of buffers is not
++ * supported
++ */
++ WindowFlipBufferStrategy(int numBuffers)
++ throws AWTException
++ {
++ super(numBuffers,
++ new BufferCapabilities(new ImageCapabilities(true),
++ new ImageCapabilities(true),
++ BufferCapabilities.FlipContents.COPIED));
++ }
++ }
++
++ /**
++ * Creates a buffering strategy that manages how this window is
++ * repainted. This method attempts to create the optimum strategy
++ * based on the desired number of buffers. Hardware or software
++ * acceleration may be used.
++ *
++ * createBufferStrategy attempts different levels of optimization,
++ * but guarantees that some strategy with the requested number of
++ * buffers will be created even if it is not optimal. First it
++ * attempts to create a page flipping strategy, then an accelerated
++ * blitting strategy, then an unaccelerated blitting strategy.
++ *
++ * Calling this method causes any existing buffer strategy to be
++ * destroyed.
++ *
++ * @param numBuffers the number of buffers in this strategy
++ *
++ * @throws IllegalArgumentException if requested number of buffers
++ * is less than one
++ * @throws IllegalStateException if this window is not displayable
++ *
++ * @since 1.4
++ */
++ public void createBufferStrategy(int numBuffers)
++ {
++ if (numBuffers < 1)
++ throw new IllegalArgumentException("Window.createBufferStrategy: number"
++ + " of buffers is less than one");
++
++ if (!isDisplayable())
++ throw new IllegalStateException("Window.createBufferStrategy: window is"
++ + " not displayable");
++
++ BufferStrategy newStrategy = null;
++
++ // try a flipping strategy
++ try
++ {
++ newStrategy = new WindowFlipBufferStrategy(numBuffers);
++ }
++ catch (AWTException e)
++ {
++ }
++
++ // fall back to an accelerated blitting strategy
++ if (newStrategy == null)
++ newStrategy = new WindowBltBufferStrategy(numBuffers, true);
++
++ bufferStrategy = newStrategy;
++ }
++
++ /**
++ * Creates a buffering strategy that manages how this window is
++ * repainted. This method attempts to create a strategy based on
++ * the specified capabilities and throws an exception if the
++ * requested strategy is not supported.
++ *
++ * Calling this method causes any existing buffer strategy to be
++ * destroyed.
++ *
++ * @param numBuffers the number of buffers in this strategy
++ * @param caps the requested buffering capabilities
++ *
++ * @throws AWTException if the requested capabilities are not
++ * supported
++ * @throws IllegalArgumentException if requested number of buffers
++ * is less than one or if caps is null
++ *
++ * @since 1.4
++ */
++ public void createBufferStrategy(int numBuffers,
++ BufferCapabilities caps)
++ {
++ if (numBuffers < 1)
++ throw new IllegalArgumentException("Window.createBufferStrategy: number"
++ + " of buffers is less than one");
++
++ if (caps == null)
++ throw new IllegalArgumentException("Window.createBufferStrategy:"
++ + " capabilities object is null");
++
++ // a flipping strategy was requested
++ if (caps.isPageFlipping())
++ {
++ try
++ {
++ bufferStrategy = new WindowFlipBufferStrategy(numBuffers);
++ }
++ catch (AWTException e)
++ {
++ }
++ }
++ else
++ bufferStrategy = new WindowBltBufferStrategy(numBuffers, true);
++ }
++
++ /**
++ * Returns the buffer strategy used by the window.
++ *
++ * @return the buffer strategy.
++ * @since 1.4
++ */
++ public BufferStrategy getBufferStrategy()
++ {
++ return bufferStrategy;
++ }
++
++ /**
+ * @since 1.2
+ *
+ * @deprecated
+@@ -913,44 +1093,6 @@
+ this.focusableWindowState = focusableWindowState;
+ }
+
+- // setBoundsCallback is needed so that when a user moves a window,
+- // the Window's location can be updated without calling the peer's
+- // setBounds method. When a user moves a window the peer window's
+- // location is updated automatically and the windowing system sends
+- // a message back to the application informing it of its updated
+- // dimensions. We must update the AWT Window class with these new
+- // dimensions. But we don't want to call the peer's setBounds
+- // method, because the peer's dimensions have already been updated.
+- // (Under X, having this method prevents Configure event loops when
+- // moving windows: Component.setBounds -> peer.setBounds ->
+- // postConfigureEvent -> Component.setBounds -> ... In some cases
+- // Configure event loops cause windows to jitter back and forth
+- // continuously).
+- void setBoundsCallback (int x, int y, int w, int h)
+- {
+- if (this.x == x && this.y == y && width == w && height == h)
+- return;
+- invalidate();
+- boolean resized = width != w || height != h;
+- boolean moved = this.x != x || this.y != y;
+- this.x = x;
+- this.y = y;
+- width = w;
+- height = h;
+- if (resized && isShowing ())
+- {
+- ComponentEvent ce =
+- new ComponentEvent(this, ComponentEvent.COMPONENT_RESIZED);
+- getToolkit().getSystemEventQueue().postEvent(ce);
+- }
+- if (moved && isShowing ())
+- {
+- ComponentEvent ce =
+- new ComponentEvent(this, ComponentEvent.COMPONENT_MOVED);
+- getToolkit().getSystemEventQueue().postEvent(ce);
+- }
+- }
+-
+ /**
+ * Generate a unique name for this window.
+ *
diff --git a/gcc-4.0.2-failure_with_compound_literals.patch b/gcc-4.0.2-failure_with_compound_literals.patch
new file mode 100644
index 0000000..f892a77
--- /dev/null
+++ b/gcc-4.0.2-failure_with_compound_literals.patch
@@ -0,0 +1,57 @@
+diff -Nru gcc-4.0.2.orig/gcc/c-decl.c gcc-4.0.2/gcc/c-decl.c
+--- gcc-4.0.2.orig/gcc/c-decl.c 2005-11-14 10:43:28.000000000 +0100
++++ gcc-4.0.2/gcc/c-decl.c 2005-11-14 10:52:53.000000000 +0100
+@@ -7527,6 +7527,7 @@
+ c_write_global_declarations_1 (tree globals)
+ {
+ tree decl;
++ bool reconsider;
+
+ /* Process the decls in the order they were written. */
+ for (decl = globals; decl; decl = TREE_CHAIN (decl))
+@@ -7545,9 +7546,19 @@
+ }
+
+ wrapup_global_declaration_1 (decl);
+- wrapup_global_declaration_2 (decl);
+- check_global_declaration_1 (decl);
+ }
++
++ do
++ {
++ reconsider = false;
++ for (decl = globals; decl; decl = TREE_CHAIN (decl))
++ reconsider |= wrapup_global_declaration_2 (decl);
++ }
++ while (reconsider);
++
++ for (decl = globals; decl; decl = TREE_CHAIN (decl))
++ check_global_declaration_1 (decl);
++
+ }
+
+ /* A subroutine of c_write_global_declarations Emit debug information for each
+diff -Nru gcc-4.0.2.orig/gcc/testsuite/gcc.c-torture/execute/20050929-1.c gcc-4.0.2/gcc/testsuite/gcc.c-torture/execute/20050929-1.c
+--- gcc-4.0.2.orig/gcc/testsuite/gcc.c-torture/execute/20050929-1.c 1970-01-01 01:00:00.000000000 +0100
++++ gcc-4.0.2/gcc/testsuite/gcc.c-torture/execute/20050929-1.c 2005-11-14 10:53:43.000000000 +0100
+@@ -0,0 +1,20 @@
++/* PR middle-end/24109 */
++
++extern void abort (void);
++
++struct A { int i; int j; };
++struct B { struct A *a; struct A *b; };
++struct C { struct B *c; struct A *d; };
++struct C e = { &(struct B) { &(struct A) { 1, 2 }, &(struct A) { 3, 4 } }, &(struct A) { 5, 6 } };
++
++int
++main (void)
++{
++ if (e.c->a->i != 1 || e.c->a->j != 2)
++ abort ();
++ if (e.c->b->i != 3 || e.c->b->j != 4)
++ abort ();
++ if (e.d->i != 5 || e.d->j != 6)
++ abort ();
++ return 0;
++}
diff --git a/gcc-4.0.2-zextract.patch b/gcc-4.0.2-zextract.patch
new file mode 100644
index 0000000..f51e550
--- /dev/null
+++ b/gcc-4.0.2-zextract.patch
@@ -0,0 +1,25 @@
+diff -Nru gcc-4.0.2.orig/gcc/java/zextract.c gcc-4.0.2/gcc/java/zextract.c
+--- gcc-4.0.2.orig/gcc/java/zextract.c 2005-10-21 12:02:51.000000000 +0200
++++ gcc-4.0.2/gcc/java/zextract.c 2005-10-24 12:10:13.000000000 +0200
+@@ -287,6 +287,21 @@
+ return -1;
+ if (read (zipf->fd, buffer, ECREC_SIZE+4) != ECREC_SIZE+4)
+ return -2;
++ if (buffer[0] != 'P' || strncmp ((const char *) &buffer[1], END_CENTRAL_SIG, 3)) {
++ /* We could not find the end-central-header signature, probably
++ because a zipfile comment is present. Scan backwards until we
++ find the signature. */
++ if (lseek (zipf->fd, (long)(-ECREC_SIZE), SEEK_END) <= 0)
++ return -2;
++ while (buffer[0] != 'P' || strncmp ((const char *) &buffer[1], END_CENTRAL_SIG, 3)) {
++ if (lseek (zipf->fd, -5, SEEK_CUR) < 0)
++ return -2;
++ if (read (zipf->fd, buffer, 4) != 4)
++ return -2;
++ }
++ if (read (zipf->fd, buffer + 4, ECREC_SIZE) != ECREC_SIZE)
++ return -2;
++ }
+ zipf->count = makeword((const uch *) &buffer[TOTAL_ENTRIES_CENTRAL_DIR]);
+ zipf->dir_size = makelong((const uch *) &buffer[SIZE_CENTRAL_DIRECTORY]);
+ #define ALLOC xmalloc
diff --git a/gcc-4.1.1-arm-t-linux.patch b/gcc-4.1.1-arm-t-linux.patch
new file mode 100644
index 0000000..a125588
--- /dev/null
+++ b/gcc-4.1.1-arm-t-linux.patch
@@ -0,0 +1,50 @@
+diff -Nru gcc-4.1.1.orig/gcc/config/arm/t-linux gcc-4.1.1/gcc/config/arm/t-linux
+--- gcc-4.1.1.orig/gcc/config/arm/t-linux 2004-05-15 14:41:35.000000000 +0200
++++ gcc-4.1.1/gcc/config/arm/t-linux 2006-08-23 01:40:35.000000000 +0200
+@@ -1,15 +1,37 @@
+ # Just for these, we omit the frame pointer since it makes such a big
+-# difference. It is then pointless adding debugging.
+-TARGET_LIBGCC2_CFLAGS = -fomit-frame-pointer -fPIC
+-LIBGCC2_DEBUG_CFLAGS = -g0
++# difference. It is then pointless adding debugging.
++
++TARGET_LIBGCC2_CFLAGS = -fno-inline -fomit-frame-pointer -fPIC -Dinhibit_libc
++LIBGCC2_DEBUG_CFLAGS = -g0
++
++# Don't build enquire
++ENQUIRE=
+
+ LIB1ASMSRC = arm/lib1funcs.asm
+-LIB1ASMFUNCS = _udivsi3 _divsi3 _umodsi3 _modsi3 _dvmd_lnx
+
+-# MULTILIB_OPTIONS = mhard-float/msoft-float
+-# MULTILIB_DIRNAMES = hard-float soft-float
++LIB1ASMFUNCS = _udivsi3 _divsi3 _umodsi3 _modsi3 _dvmd_tls \
++ _bb_init_func _call_via_rX _interwork_call_via_rX \
++ _lshrdi3 _ashrdi3 _ashldi3 \
++ _negdf2 _addsubdf3 _muldivdf3 _cmpdf2 _unorddf2 _fixdfsi _fixunsdfsi \
++ _truncdfsf2 _negsf2 _addsubsf3 _muldivsf3 _cmpsf2 _unordsf2 \
++ _fixsfsi _fixunssfsi _floatdidf _floatdisf
++
++MULTILIB_OPTIONS = mlittle-endian/mbig-endian mhard-float/msoft-float
++MULTILIB_DIRNAMES = le be hard-float soft-float
++MULTILIB_MATCHES = mbig-endian=mbe mlittle-endian=mle
++
++EXTRA_MULTILIB_PARTS = crtbegin.o crtbeginS.o crtend.o crtendS.o crti.o crtn.o
++
++LIBGCC = stmp-multilib
++INSTALL_LIBGCC = install-multilib
++
++T_CFLAGS = -Dinhibit_libc
+
+-# EXTRA_MULTILIB_PARTS = crtbegin.o crtend.o
++# Assemble startup files.
++$(T)crti.o: $(srcdir)/config/arm/crti.asm $(GCC_PASSES)
++ $(GCC_FOR_TARGET) $(GCC_CFLAGS) $(MULTILIB_CFLAGS) $(INCLUDES) \
++ -c -o $(T)crti.o -x assembler-with-cpp $(srcdir)/config/arm/crti.asm
+
+-# LIBGCC = stmp-multilib
+-# INSTALL_LIBGCC = install-multilib
++$(T)crtn.o: $(srcdir)/config/arm/crtn.asm $(GCC_PASSES)
++ $(GCC_FOR_TARGET) $(GCC_CFLAGS) $(MULTILIB_CFLAGS) $(INCLUDES) \
++ -c -o $(T)crtn.o -x assembler-with-cpp $(srcdir)/config/arm/crtn.asm
diff --git a/gcc-4.1.1-libgcc-softfloat-fix.patch b/gcc-4.1.1-libgcc-softfloat-fix.patch
new file mode 100644
index 0000000..a2b2ba5
--- /dev/null
+++ b/gcc-4.1.1-libgcc-softfloat-fix.patch
@@ -0,0 +1,12 @@
+diff -Nru gcc-4.1.1.orig/gcc/config/arm/linux-elf.h gcc-4.1.1/gcc/config/arm/linux-elf.h
+--- gcc-4.1.1.orig/gcc/config/arm/linux-elf.h 2005-10-10 03:04:31.000000000 +0200
++++ gcc-4.1.1/gcc/config/arm/linux-elf.h 2006-08-23 10:06:25.000000000 +0200
+@@ -49,8 +49,6 @@
+ %{shared:-lc} \
+ %{!shared:%{profile:-lc_p}%{!profile:-lc}}"
+
+-#define LIBGCC_SPEC "%{msoft-float:-lfloat} %{mfloat-abi=soft*:-lfloat} -lgcc"
+-
+ #define GLIBC_DYNAMIC_LINKER "/lib/ld-linux.so.2"
+
+ #define LINUX_TARGET_LINK_SPEC "%{h*} %{version:-v} \
diff --git a/gcc-4.3.2-ecj1-wrapper b/gcc-4.3.2-ecj1-wrapper
new file mode 100644
index 0000000..01f3a30
--- /dev/null
+++ b/gcc-4.3.2-ecj1-wrapper
@@ -0,0 +1,5 @@
+#!/bin/sh
+
+gij --classpath /usr/share/java/ecj.jar \
+ org.eclipse.jdt.internal.compiler.batch.GCCMain \
+ ${1+"$@"}
diff --git a/gcc-4.4.0-pr39543.patch b/gcc-4.4.0-pr39543.patch
new file mode 100644
index 0000000..0f643e7
--- /dev/null
+++ b/gcc-4.4.0-pr39543.patch
@@ -0,0 +1,298 @@
+--- gcc/fwprop.c.jj 2009-02-20 15:34:11.000000000 +0100
++++ gcc/fwprop.c 2009-03-25 16:34:49.000000000 +0100
+@@ -1,5 +1,5 @@
+ /* RTL-based forward propagation pass for GNU compiler.
+- Copyright (C) 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
++ Copyright (C) 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
+ Contributed by Paolo Bonzini and Steven Bosscher.
+
+ This file is part of GCC.
+@@ -852,6 +852,96 @@ forward_propagate_subreg (df_ref use, rt
+ return false;
+ }
+
++static int
++check_reg_count_callback (rtx *px, void *data)
++{
++ int *regnop = (int *) data;
++
++ if (!REG_P (*px))
++ return 0;
++
++ if (*regnop < 0 || *regnop == (int) REGNO (*px))
++ {
++ *regnop = REGNO (*px);
++ return 0;
++ }
++
++ return 1;
++}
++
++/* Try to replace USE with SRC (defined in DEF_INSN) in __asm. */
++
++static bool
++forward_propagate_asm (df_ref use, rtx def_set, rtx reg)
++{
++ rtx use_insn = DF_REF_INSN (use), src, use_pat, asm_operands, new_rtx, *loc;
++ int regno, speed_p, i;
++
++ gcc_assert ((DF_REF_FLAGS (use) & DF_REF_IN_NOTE) == 0);
++
++ src = SET_SRC (def_set);
++ use_pat = PATTERN (use_insn);
++
++ /* In __asm don't replace if src might need more registers than
++ reg, as that could increase register pressure on the __asm. */
++ regno = -1;
++ if (for_each_rtx (&src, check_reg_count_callback, ®no) > 0)
++ return false;
++
++ speed_p = optimize_bb_for_speed_p (BLOCK_FOR_INSN (use_insn));
++ asm_operands = NULL_RTX;
++ switch (GET_CODE (use_pat))
++ {
++ case ASM_OPERANDS:
++ asm_operands = use_pat;
++ break;
++ case SET:
++ loc = &SET_DEST (use_pat);
++ new_rtx = propagate_rtx (*loc, GET_MODE (*loc), reg, src, speed_p);
++ if (new_rtx)
++ validate_unshare_change (use_insn, loc, new_rtx, true);
++ asm_operands = SET_SRC (use_pat);
++ break;
++ case PARALLEL:
++ for (i = 0; i < XVECLEN (use_pat, 0); i++)
++ if (GET_CODE (XVECEXP (use_pat, 0, i)) == SET)
++ {
++ loc = &SET_DEST (XVECEXP (use_pat, 0, i));
++ new_rtx = propagate_rtx (*loc, GET_MODE (*loc), reg, src, speed_p);
++ if (new_rtx)
++ validate_unshare_change (use_insn, loc, new_rtx, true);
++ asm_operands = SET_SRC (XVECEXP (use_pat, 0, i));
++ }
++ else if (GET_CODE (XVECEXP (use_pat, 0, i)) == ASM_OPERANDS)
++ asm_operands = XVECEXP (use_pat, 0, i);
++ break;
++ default:
++ gcc_unreachable ();
++ }
++
++ gcc_assert (asm_operands && GET_CODE (asm_operands) == ASM_OPERANDS);
++ for (i = 0; i < ASM_OPERANDS_INPUT_LENGTH (asm_operands); i++)
++ {
++ loc = &ASM_OPERANDS_INPUT (asm_operands, i);
++ new_rtx = propagate_rtx (*loc, GET_MODE (*loc), reg, src, speed_p);
++ if (new_rtx)
++ validate_unshare_change (use_insn, loc, new_rtx, true);
++ }
++
++ if (num_changes_pending () == 0)
++ return false;
++
++ if (!verify_changes (0))
++ {
++ cancel_changes (0);
++ return 0;
++ }
++
++ confirm_change_group ();
++ num_changes++;
++ return true;
++}
++
+ /* Try to replace USE with SRC (defined in DEF_INSN) and simplify the
+ result. */
+
+@@ -863,12 +953,16 @@ forward_propagate_and_simplify (df_ref u
+ rtx src, reg, new_rtx, *loc;
+ bool set_reg_equal;
+ enum machine_mode mode;
++ int asm_use = -1;
+
+- if (!use_set)
++ if (INSN_CODE (use_insn) < 0)
++ asm_use = asm_noperands (PATTERN (use_insn));
++
++ if (!use_set && asm_use < 0)
+ return false;
+
+ /* Do not propagate into PC, CC0, etc. */
+- if (GET_MODE (SET_DEST (use_set)) == VOIDmode)
++ if (use_set && GET_MODE (SET_DEST (use_set)) == VOIDmode)
+ return false;
+
+ /* If def and use are subreg, check if they match. */
+@@ -900,7 +994,7 @@ forward_propagate_and_simplify (df_ref u
+ if (MEM_P (src) && MEM_READONLY_P (src))
+ {
+ rtx x = avoid_constant_pool_reference (src);
+- if (x != src)
++ if (x != src && use_set)
+ {
+ rtx note = find_reg_note (use_insn, REG_EQUAL, NULL_RTX);
+ rtx old_rtx = note ? XEXP (note, 0) : SET_SRC (use_set);
+@@ -911,6 +1005,9 @@ forward_propagate_and_simplify (df_ref u
+ return false;
+ }
+
++ if (asm_use >= 0)
++ return forward_propagate_asm (use, def_set, reg);
++
+ /* Else try simplifying. */
+
+ if (DF_REF_TYPE (use) == DF_REF_REG_MEM_STORE)
+--- gcc/testsuite/gcc.target/i386/pr39543-1.c.jj 2009-03-25 16:40:18.000000000 +0100
++++ gcc/testsuite/gcc.target/i386/pr39543-1.c 2009-03-25 16:40:50.000000000 +0100
+@@ -0,0 +1,52 @@
++/* PR rtl-optimization/39543 */
++/* { dg-do compile } */
++/* { dg-options "-O3 -fomit-frame-pointer" } */
++
++float __attribute__ ((aligned (16))) s0[128];
++const float s1 = 0.707;
++float s2[8] __attribute__ ((aligned (16)));
++float s3[8] __attribute__ ((aligned (16)));
++float s4[16] __attribute__ ((aligned (16)));
++float s5[16] __attribute__ ((aligned (16)));
++
++void
++foo (int k, float *x, float *y, const float *d, const float *z)
++{
++ float *a, *b, *c, *e;
++
++ a = x + 2 * k;
++ b = a + 2 * k;
++ c = b + 2 * k;
++ e = y + 2 * k;
++ __asm__ volatile (""
++ : "=m" (x[0]), "=m" (b[0]), "=m" (a[0]), "=m" (c[0])
++ : "m" (y[0]), "m" (y[k * 2]), "m" (x[0]), "m" (a[0])
++ : "memory");
++ for (;;)
++ {
++ __asm__ volatile (""
++ :
++ : "m" (y[2]), "m" (d[2]), "m" (e[2]), "m" (z[2])
++ : "memory");
++ if (!--k)
++ break;
++ }
++ __asm__ volatile (""
++ : "=m" (x[2]), "=m" (x[10]), "=m" (x[6]), "=m" (x[14])
++ : "m" (y[2]), "m" (y[6]), "m" (x[2]), "m" (x[6]),
++ "m" (y[18]), "m" (s1)
++ : "memory");
++}
++
++void
++bar (float *a)
++{
++ foo (4, a, a + 16, s2, s3);
++ foo (8, a, a + 32, s4, s5);
++}
++
++void
++baz (void)
++{
++ bar (s0);
++}
+--- gcc/testsuite/gcc.target/i386/pr39543-2.c.jj 2009-03-25 16:40:18.000000000 +0100
++++ gcc/testsuite/gcc.target/i386/pr39543-2.c 2009-03-25 16:40:38.000000000 +0100
+@@ -0,0 +1,51 @@
++/* PR rtl-optimization/39543 */
++/* { dg-do compile } */
++/* { dg-options "-O3" } */
++
++float __attribute__ ((aligned (16))) s0[128];
++const float s1 = 0.707;
++float s2[8] __attribute__ ((aligned (16)));
++float s3[8] __attribute__ ((aligned (16)));
++float s4[16] __attribute__ ((aligned (16)));
++float s5[16] __attribute__ ((aligned (16)));
++
++void
++foo (int k, float *x, float *y, const float *d, const float *z)
++{
++ float *a, *b, *c, *e;
++
++ a = x + 2 * k;
++ b = a + 2 * k;
++ c = b + 2 * k;
++ e = y + 2 * k;
++ __asm__ volatile (""
++ : "=m" (x[0]), "=m" (b[0]), "=m" (a[0]), "=m" (c[0])
++ : "m" (y[0]), "m" (y[k * 2]), "m" (x[0]), "m" (a[0])
++ : "memory");
++ for (;;)
++ {
++ __asm__ volatile (""
++ :
++ : "m" (y[2]), "m" (d[2]), "m" (e[2]), "m" (z[2])
++ : "memory");
++ if (!--k)
++ break;
++ }
++ __asm__ volatile (""
++ : "=m" (x[2]), "=m" (x[10]), "=m" (x[6]), "=m" (x[14])
++ : "m" (y[2]), "m" (y[6]), "m" (x[2]), "m" (x[6]), "m" (s1)
++ : "memory");
++}
++
++void
++bar (float *a)
++{
++ foo (4, a, a + 16, s2, s3);
++ foo (8, a, a + 32, s4, s5);
++}
++
++void
++baz (void)
++{
++ bar (s0);
++}
+--- gcc/testsuite/gcc.target/i386/pr39543-3.c.jj 2009-03-25 16:41:29.000000000 +0100
++++ gcc/testsuite/gcc.target/i386/pr39543-3.c 2009-03-25 16:41:19.000000000 +0100
+@@ -0,0 +1,42 @@
++/* PR rtl-optimization/39543 */
++/* { dg-do compile } */
++/* { dg-options "-O2" } */
++
++int s[128];
++
++void
++f1 (void)
++{
++ int i;
++ asm volatile ("# %0 %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 %16 %17"
++ : "=r" (i)
++ : "m" (s[0]), "m" (s[2]), "m" (s[4]), "m" (s[6]), "m" (s[8]),
++ "m" (s[10]), "m" (s[12]), "m" (s[14]), "m" (s[16]), "m" (s[18]),
++ "m" (s[20]), "m" (s[22]), "m" (s[24]), "m" (s[26]), "m" (s[28]),
++ "m" (s[30]), "m" (s[32]));
++ asm volatile ("# %0 %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 %16 %17"
++ : "=r" (i)
++ : "m" (s[0]), "m" (s[2]), "m" (s[4]), "m" (s[6]), "m" (s[8]),
++ "m" (s[10]), "m" (s[12]), "m" (s[14]), "m" (s[16]), "m" (s[18]),
++ "m" (s[20]), "m" (s[22]), "m" (s[24]), "m" (s[26]), "m" (s[28]),
++ "m" (s[30]), "m" (s[32]));
++}
++
++void
++f2 (int *q)
++{
++ int i;
++ int *p = q + 32;
++ asm volatile ("# %0 %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 %16 %17"
++ : "=r" (i)
++ : "m" (p[0]), "m" (p[2]), "m" (p[4]), "m" (p[6]), "m" (p[8]),
++ "m" (p[10]), "m" (p[12]), "m" (p[14]), "m" (p[16]), "m" (p[18]),
++ "m" (p[20]), "m" (p[22]), "m" (p[24]), "m" (p[26]), "m" (p[28]),
++ "m" (p[30]), "m" (p[32]));
++ asm volatile ("# %0 %1 %2 %3 %4 %5 %6 %7 %8 %9 %10 %11 %12 %13 %14 %15 %16 %17"
++ : "=r" (i)
++ : "m" (p[0]), "m" (p[2]), "m" (p[4]), "m" (p[6]), "m" (p[8]),
++ "m" (p[10]), "m" (p[12]), "m" (p[14]), "m" (p[16]), "m" (p[18]),
++ "m" (p[20]), "m" (p[22]), "m" (p[24]), "m" (p[26]), "m" (p[28]),
++ "m" (p[30]), "m" (p[32]));
++}
diff --git a/gcc-4.4.3-cross_build_fix.patch b/gcc-4.4.3-cross_build_fix.patch
new file mode 100644
index 0000000..edf988a
--- /dev/null
+++ b/gcc-4.4.3-cross_build_fix.patch
@@ -0,0 +1,22 @@
+libstdc++-v3/ChangeLog:
+2009-12-22 Ralf Wildenhues
+
+ PR libstdc++/40974
+ * include/c_compatibility/fenv.h (_GLIBCXX_FENV_H):
+ Turn off multiple inclusion guard for 'include_next '.
+
+diff --git a/libstdc++-v3/include/c_compatibility/fenv.h b/libstdc++-v3/include/c_compatibility/fenv.h
+index 5db6d9d..ce56a95 100644
+--- a/libstdc++-v3/include/c_compatibility/fenv.h
++++ b/libstdc++-v3/include/c_compatibility/fenv.h
+@@ -33,7 +33,10 @@
+
+ #include
+ #if _GLIBCXX_HAVE_FENV_H
++# undef _GLIBCXX_FENV_H
+ # include_next
++# undef _GLIBCXX_FENV_H
++# define _GLIBCXX_FENV_H 1
+ #endif
+
+ #ifdef __GXX_EXPERIMENTAL_CXX0X__
diff --git a/gcc-4.5.0-no_fixincludes.patch b/gcc-4.5.0-no_fixincludes.patch
new file mode 100644
index 0000000..13eaa4a
--- /dev/null
+++ b/gcc-4.5.0-no_fixincludes.patch
@@ -0,0 +1,12 @@
+diff -Nru gcc-4.5.0.orig//gcc/Makefile.in gcc-4.5.0/gcc/Makefile.in
+--- gcc-4.5.0.orig//gcc/Makefile.in 2010-04-02 09:49:06.000000000 +0200
++++ gcc-4.5.0/gcc/Makefile.in 2010-05-08 14:28:08.243216408 +0200
+@@ -3949,7 +3949,7 @@
+ gcc_dir=`${PWD_COMMAND}` ; \
+ export TARGET_MACHINE srcdir SHELL MACRO_LIST && \
+ cd $(build_objdir)/fixincludes && \
+- $(SHELL) ./fixinc.sh "$${gcc_dir}/$${fix_dir}" \
++ $(SHELL) -c true \
+ $(SYSTEM_HEADER_DIR) $(OTHER_FIXINCLUDES_DIRS) ); \
+ rm -f $${fix_dir}/syslimits.h; \
+ if [ -f $${fix_dir}/limits.h ]; then \
diff --git a/gcc-4.5.1-psignal_fix_bootstrap_build.patch b/gcc-4.5.1-psignal_fix_bootstrap_build.patch
new file mode 100644
index 0000000..6902ec3
--- /dev/null
+++ b/gcc-4.5.1-psignal_fix_bootstrap_build.patch
@@ -0,0 +1,12 @@
+diff -Nru gcc-4.5.1.orig//libiberty/strsignal.c gcc-4.5.1/libiberty/strsignal.c
+--- gcc-4.5.1.orig//libiberty/strsignal.c 2008-06-19 17:08:53.000000000 +0200
++++ gcc-4.5.1/libiberty/strsignal.c 2010-09-23 20:00:01.972694593 +0200
+@@ -551,7 +551,7 @@
+ #ifndef HAVE_PSIGNAL
+
+ void
+-psignal (int signo, char *message)
++psignal (int signo, const char *message)
+ {
+ if (signal_names == NULL)
+ {
diff --git a/gcc-4.5.2-arm_define_ARM_PCS_and_ARM_PCS_VFP.patch b/gcc-4.5.2-arm_define_ARM_PCS_and_ARM_PCS_VFP.patch
new file mode 100644
index 0000000..c64230a
--- /dev/null
+++ b/gcc-4.5.2-arm_define_ARM_PCS_and_ARM_PCS_VFP.patch
@@ -0,0 +1,17 @@
+--- gcc-4.5.2.orig/gcc/config/arm/arm.h (revision 162381)
++++ gcc-4.5.2/gcc/config/arm/arm.h (working copy)
+@@ -94,7 +94,13 @@
+ if (arm_arch_iwmmxt) \
+ builtin_define ("__IWMMXT__"); \
+ if (TARGET_AAPCS_BASED) \
+- builtin_define ("__ARM_EABI__"); \
++ { \
++ if (TARGET_VFP && TARGET_HARD_FLOAT_ABI) \
++ builtin_define ("__ARM_PCS_VFP"); \
++ else \
++ builtin_define ("__ARM_PCS"); \
++ builtin_define ("__ARM_EABI__"); \
++ } \
+ } while (0)
+
+ /* The various ARM cores. */
diff --git a/gcc-4.5.3-avr-new-devices.patch b/gcc-4.5.3-avr-new-devices.patch
new file mode 100644
index 0000000..6ba9615
--- /dev/null
+++ b/gcc-4.5.3-avr-new-devices.patch
@@ -0,0 +1,216 @@
+diff -ur gcc-4.5.0-clean/gcc/config/avr/avr-devices.c gcc-4.5.0/gcc/config/avr/avr-devices.c
+--- gcc-4.5.0-clean/gcc/config/avr/avr-devices.c 2009-07-18 04:49:03.000000000 +1000
++++ gcc-4.5.0/gcc/config/avr/avr-devices.c 2010-07-09 23:32:45.000000000 +1000
+@@ -67,15 +67,21 @@
+ { "attiny13", ARCH_AVR25, "__AVR_ATtiny13__", 1, 0x0060, "tn13" },
+ { "attiny13a", ARCH_AVR25, "__AVR_ATtiny13A__", 1, 0x0060, "tn13a" },
+ { "attiny2313", ARCH_AVR25, "__AVR_ATtiny2313__", 1, 0x0060, "tn2313" },
++ { "attiny2313a", ARCH_AVR25, "__AVR_ATtiny2313A__", /*?*/1, 0x0060, "tn2313a" },
+ { "attiny24", ARCH_AVR25, "__AVR_ATtiny24__", 1, 0x0060, "tn24" },
++ { "attiny24a", ARCH_AVR25, "__AVR_ATtiny24A__", /*?*/1, 0x0060, "tn24a" },
++ { "attiny4313", ARCH_AVR25, "__AVR_ATtiny4313__", /*?*/0, 0x0060, "tn44313" },
+ { "attiny44", ARCH_AVR25, "__AVR_ATtiny44__", 0, 0x0060, "tn44" },
++ { "attiny44a", ARCH_AVR25, "__AVR_ATtiny44A__", /*?*/0, 0x0060, "tn44a" },
+ { "attiny84", ARCH_AVR25, "__AVR_ATtiny84__", 0, 0x0060, "tn84" },
+ { "attiny25", ARCH_AVR25, "__AVR_ATtiny25__", 1, 0x0060, "tn25" },
+ { "attiny45", ARCH_AVR25, "__AVR_ATtiny45__", 0, 0x0060, "tn45" },
+ { "attiny85", ARCH_AVR25, "__AVR_ATtiny85__", 0, 0x0060, "tn85" },
+ { "attiny261", ARCH_AVR25, "__AVR_ATtiny261__", 1, 0x0060, "tn261" },
++ { "attiny261a", ARCH_AVR25, "__AVR_ATtiny261A__", /*?*/1, 0x0060, "tn261a" },
+ { "attiny461", ARCH_AVR25, "__AVR_ATtiny461__", 0, 0x0060, "tn461" },
+ { "attiny861", ARCH_AVR25, "__AVR_ATtiny861__", 0, 0x0060, "tn861" },
++ { "attiny861a", ARCH_AVR25, "__AVR_ATtiny861A__", /*?*/0, 0x0060, "tn861a" },
+ { "attiny43u", ARCH_AVR25, "__AVR_ATtiny43U__", 0, 0x0060, "tn43u" },
+ { "attiny87", ARCH_AVR25, "__AVR_ATtiny87__", 0, 0x0100, "tn87" },
+ { "attiny48", ARCH_AVR25, "__AVR_ATtiny48__", 0, 0x0100, "tn48" },
+@@ -102,9 +108,12 @@
+ { "avr4", ARCH_AVR4, NULL, 0, 0x0060, "m8" },
+ { "atmega8", ARCH_AVR4, "__AVR_ATmega8__", 0, 0x0060, "m8" },
+ { "atmega48", ARCH_AVR4, "__AVR_ATmega48__", 0, 0x0100, "m48" },
++ { "atmega48a", ARCH_AVR4, "__AVR_ATmega48A__", /*?*/0, 0x0100, "m48a" },
+ { "atmega48p", ARCH_AVR4, "__AVR_ATmega48P__", 0, 0x0100, "m48p" },
+ { "atmega88", ARCH_AVR4, "__AVR_ATmega88__", 0, 0x0100, "m88" },
++ { "atmega88a", ARCH_AVR4, "__AVR_ATmega88A__", /*?*/0, 0x0100, "m88a" },
+ { "atmega88p", ARCH_AVR4, "__AVR_ATmega88P__", 0, 0x0100, "m88p" },
++ { "atmega88pa", ARCH_AVR4, "__AVR_ATmega88PA__", /*?*/0, 0x0100, "m88pa" },
+ { "atmega8515", ARCH_AVR4, "__AVR_ATmega8515__", 0, 0x0060, "m8515" },
+ { "atmega8535", ARCH_AVR4, "__AVR_ATmega8535__", 0, 0x0060, "m8535" },
+ { "atmega8c1", ARCH_AVR4, "__AVR_ATmega8C1__", 0, 0x0100, "m8c1" },
+@@ -121,40 +130,62 @@
+ /* Enhanced, > 8K, <= 64K. */
+ { "avr5", ARCH_AVR5, NULL, 0, 0x0060, "m16" },
+ { "atmega16", ARCH_AVR5, "__AVR_ATmega16__", 0, 0x0060, "m16" },
++ { "atmega16a", ARCH_AVR5, "__AVR_ATmega16A__", /*?*/0, 0x0060, "m16a" },
+ { "atmega161", ARCH_AVR5, "__AVR_ATmega161__", 0, 0x0060, "m161" },
+ { "atmega162", ARCH_AVR5, "__AVR_ATmega162__", 0, 0x0100, "m162" },
+ { "atmega163", ARCH_AVR5, "__AVR_ATmega163__", 0, 0x0060, "m163" },
++ { "atmega164a", ARCH_AVR5, "__AVR_ATmega164A__", /*?*/0, 0x0100, "m164a" },
+ { "atmega164p", ARCH_AVR5, "__AVR_ATmega164P__", 0, 0x0100, "m164p" },
+ { "atmega165", ARCH_AVR5, "__AVR_ATmega165__", 0, 0x0100, "m165" },
++ { "atmega165a", ARCH_AVR5, "__AVR_ATmega165A__", 0, 0x0100, "m165a" },
+ { "atmega165p", ARCH_AVR5, "__AVR_ATmega165P__", 0, 0x0100, "m165p" },
+ { "atmega168", ARCH_AVR5, "__AVR_ATmega168__", 0, 0x0100, "m168" },
++ { "atmega168a", ARCH_AVR5, "__AVR_ATmega168A__", /*?*/0, 0x0100, "m168a" },
+ { "atmega168p", ARCH_AVR5, "__AVR_ATmega168P__", 0, 0x0100, "m168p" },
+ { "atmega169", ARCH_AVR5, "__AVR_ATmega169__", 0, 0x0100, "m169" },
++ { "atmega169a", ARCH_AVR5, "__AVR_ATmega169A__", /*?*/0, 0x0100, "m169a" },
+ { "atmega169p", ARCH_AVR5, "__AVR_ATmega169P__", 0, 0x0100, "m169p" },
++ { "atmega169pa", ARCH_AVR5, "__AVR_ATmega169PA__", /*?*/0, 0x0100, "m169pa" },
+ { "atmega32", ARCH_AVR5, "__AVR_ATmega32__", 0, 0x0060, "m32" },
+ { "atmega323", ARCH_AVR5, "__AVR_ATmega323__", 0, 0x0060, "m323" },
++ { "atmega324a", ARCH_AVR5, "__AVR_ATmega324A__", /*?*/0, 0x0100, "m324a" },
+ { "atmega324p", ARCH_AVR5, "__AVR_ATmega324P__", 0, 0x0100, "m324p" },
++ { "atmega324pa", ARCH_AVR5, "__AVR_ATmega324PA__", /*?*/0, 0x0100, "m324pa" },
+ { "atmega325", ARCH_AVR5, "__AVR_ATmega325__", 0, 0x0100, "m325" },
+ { "atmega325p", ARCH_AVR5, "__AVR_ATmega325P__", 0, 0x0100, "m325p" },
+ { "atmega3250", ARCH_AVR5, "__AVR_ATmega3250__", 0, 0x0100, "m3250" },
+ { "atmega3250p", ARCH_AVR5, "__AVR_ATmega3250P__", 0, 0x0100, "m3250p" },
++ { "atmega328", ARCH_AVR5, "__AVR_ATmega328__", /*?*/0, 0x0100, "m328" },
+ { "atmega328p", ARCH_AVR5, "__AVR_ATmega328P__", 0, 0x0100, "m328p" },
+ { "atmega329", ARCH_AVR5, "__AVR_ATmega329__", 0, 0x0100, "m329" },
+ { "atmega329p", ARCH_AVR5, "__AVR_ATmega329P__", 0, 0x0100, "m329p" },
++ { "atmega329pa", ARCH_AVR5, "__AVR_ATmega329PA__", /*?*/0, 0x0100, "m329pa" },
+ { "atmega3290", ARCH_AVR5, "__AVR_ATmega3290__", 0, 0x0100, "m3290" },
+ { "atmega3290p", ARCH_AVR5, "__AVR_ATmega3290P__", 0, 0x0100, "m3290p" },
+ { "atmega406", ARCH_AVR5, "__AVR_ATmega406__", 0, 0x0100, "m406" },
+ { "atmega64", ARCH_AVR5, "__AVR_ATmega64__", 0, 0x0100, "m64" },
+ { "atmega640", ARCH_AVR5, "__AVR_ATmega640__", 0, 0x0200, "m640" },
+ { "atmega644", ARCH_AVR5, "__AVR_ATmega644__", 0, 0x0100, "m644" },
++ { "atmega644a", ARCH_AVR5, "__AVR_ATmega644A__", /*?*/0, 0x0100, "m644a" },
+ { "atmega644p", ARCH_AVR5, "__AVR_ATmega644P__", 0, 0x0100, "m644p" },
++ { "atmega644pa", ARCH_AVR5, "__AVR_ATmega644PA__", /*?*/0, 0x0100, "m644pa" },
+ { "atmega645", ARCH_AVR5, "__AVR_ATmega645__", 0, 0x0100, "m645" },
++ { "atmega645a", ARCH_AVR5, "__AVR_ATmega645A__", /*?*/0, 0x0100, "m645a" },
++ { "atmega645p", ARCH_AVR5, "__AVR_ATmega645P__", /*?*/0, 0x0100, "m645p" },
+ { "atmega6450", ARCH_AVR5, "__AVR_ATmega6450__", 0, 0x0100, "m6450" },
++ { "atmega6450a", ARCH_AVR5, "__AVR_ATmega6450A__", /*?*/0, 0x0100, "m6450a" },
++ { "atmega6450p", ARCH_AVR5, "__AVR_ATmega6450P__", /*?*/0, 0x0100, "m6450p" },
+ { "atmega649", ARCH_AVR5, "__AVR_ATmega649__", 0, 0x0100, "m649" },
++ { "atmega649a", ARCH_AVR5, "__AVR_ATmega649A__", /*?*/0, 0x0100, "m649a" },
++ { "atmega649p", ARCH_AVR5, "__AVR_ATmega649P__", /*?*/0, 0x0100, "m649p" },
+ { "atmega6490", ARCH_AVR5, "__AVR_ATmega6490__", 0, 0x0100, "m6490" },
++ { "atmega6490a", ARCH_AVR5, "__AVR_ATmega6490A__", /*?*/0, 0x0100, "m6490a" },
++ { "atmega6490p", ARCH_AVR5, "__AVR_ATmega6490P__", /*?*/0, 0x0100, "m6490p" },
+ { "atmega16hva", ARCH_AVR5, "__AVR_ATmega16HVA__", 0, 0x0100, "m16hva" },
++ { "atmega16hva2", ARCH_AVR5, "__AVR_ATmega16HVA2__", /*?*/0, 0x0100, "m16hva2" },
+ { "atmega16hvb", ARCH_AVR5, "__AVR_ATmega16HVB__", 0, 0x0100, "m16hvb" },
+- { "atmega32hvb", ARCH_AVR5, "__AVR_ATmega32HVB__", 0, 0x0100, "m23hvb" },
++ { "atmega32hvb", ARCH_AVR5, "__AVR_ATmega32HVB__", 0, 0x0100, "m32hvb" },
++ { "atmega64hve", ARCH_AVR5, "__AVR_ATmega64HVE__", /*?*/0, 0x0100, "m64hve" },
+ { "at90can32", ARCH_AVR5, "__AVR_AT90CAN32__", 0, 0x0100, "can32" },
+ { "at90can64", ARCH_AVR5, "__AVR_AT90CAN64__", 0, 0x0100, "can64" },
+ { "at90pwm216", ARCH_AVR5, "__AVR_AT90PWM216__", 0, 0x0100, "90pwm216" },
+diff -ur gcc-4.5.0-clean/gcc/config/avr/t-avr gcc-4.5.0/gcc/config/avr/t-avr
+--- gcc-4.5.0-clean/gcc/config/avr/t-avr 2009-12-25 07:32:38.000000000 +1100
++++ gcc-4.5.0/gcc/config/avr/t-avr 2010-07-09 23:05:26.000000000 +1000
+@@ -81,16 +81,23 @@
+ mmcu?avr25=mmcu?attiny13 \
+ mmcu?avr25=mmcu?attiny13a \
+ mmcu?avr25=mmcu?attiny2313 \
++ mmcu?avr25=mmcu?attiny2313a \
+ mmcu?avr25=mmcu?attiny24 \
+- mmcu?avr25=mmcu?attiny44 \
+- mmcu?avr25=mmcu?attiny84 \
++ mmcu?avr25=mmcu?attiny24a \
+ mmcu?avr25=mmcu?attiny25 \
+- mmcu?avr25=mmcu?attiny45 \
+- mmcu?avr25=mmcu?attiny85 \
+ mmcu?avr25=mmcu?attiny261 \
++ mmcu?avr25=mmcu?attiny261a \
++ mmcu?avr25=mmcu?attiny4313 \
++ mmcu?avr25=mmcu?attiny43u \
++ mmcu?avr25=mmcu?attiny44 \
++ mmcu?avr25=mmcu?attiny44a \
++ mmcu?avr25=mmcu?attiny45 \
+ mmcu?avr25=mmcu?attiny461 \
++ mmcu?avr25=mmcu?attiny461a \
++ mmcu?avr25=mmcu?attiny84 \
++ mmcu?avr25=mmcu?attiny85 \
+ mmcu?avr25=mmcu?attiny861 \
+- mmcu?avr25=mmcu?attiny43u \
++ mmcu?avr25=mmcu?attiny861a \
+ mmcu?avr25=mmcu?attiny87 \
+ mmcu?avr25=mmcu?attiny48 \
+ mmcu?avr25=mmcu?attiny88 \
+@@ -107,12 +114,15 @@
+ mmcu?avr35=mmcu?attiny167 \
+ mmcu?avr35=mmcu?attiny327 \
+ mmcu?avr4=mmcu?atmega48 \
++ mmcu?avr4=mmcu?atmega48a \
+ mmcu?avr4=mmcu?atmega48p \
+ mmcu?avr4=mmcu?atmega8 \
+ mmcu?avr4=mmcu?atmega8515 \
+ mmcu?avr4=mmcu?atmega8535 \
+ mmcu?avr4=mmcu?atmega88 \
++ mmcu?avr4=mmcu?atmega88a \
+ mmcu?avr4=mmcu?atmega88p \
++ mmcu?avr4=mmcu?atmega88pa \
+ mmcu?avr4=mmcu?atmega8hva \
+ mmcu?avr4=mmcu?atmega4hvd \
+ mmcu?avr4=mmcu?atmega8hvd \
+@@ -125,16 +135,21 @@
+ mmcu?avr4=mmcu?at90pwm3b \
+ mmcu?avr4=mmcu?at90pwm81 \
+ mmcu?avr5=mmcu?atmega16 \
++ mmcu?avr5=mmcu?atmega16a \
+ mmcu?avr5=mmcu?atmega161 \
+ mmcu?avr5=mmcu?atmega162 \
+ mmcu?avr5=mmcu?atmega163 \
++ mmcu?avr5=mmcu?atmega164a \
+ mmcu?avr5=mmcu?atmega164p \
+ mmcu?avr5=mmcu?atmega165 \
++ mmcu?avr5=mmcu?atmega165a \
+ mmcu?avr5=mmcu?atmega165p \
+ mmcu?avr5=mmcu?atmega168 \
+ mmcu?avr5=mmcu?atmega168p \
+ mmcu?avr5=mmcu?atmega169 \
++ mmcu?avr5=mmcu?atmega169a \
+ mmcu?avr5=mmcu?atmega169p \
++ mmcu?avr5=mmcu?atmega169pa \
+ mmcu?avr5=mmcu?atmega32 \
+ mmcu?avr5=mmcu?atmega323 \
+ mmcu?avr5=mmcu?atmega324p \
+@@ -142,21 +157,35 @@
+ mmcu?avr5=mmcu?atmega325p \
+ mmcu?avr5=mmcu?atmega3250 \
+ mmcu?avr5=mmcu?atmega3250p \
++ mmcu?avr5=mmcu?atmega328 \
+ mmcu?avr5=mmcu?atmega328p \
+ mmcu?avr5=mmcu?atmega329 \
+ mmcu?avr5=mmcu?atmega329p \
++ mmcu?avr5=mmcu?atmega329pa \
+ mmcu?avr5=mmcu?atmega3290 \
+ mmcu?avr5=mmcu?atmega3290p \
++ mmcu?avr5=mmcu?atmega32hvb \
+ mmcu?avr5=mmcu?atmega406 \
+ mmcu?avr5=mmcu?atmega64 \
+ mmcu?avr5=mmcu?atmega640 \
+ mmcu?avr5=mmcu?atmega644 \
++ mmcu?avr5=mmcu?atmega644a \
+ mmcu?avr5=mmcu?atmega644p \
++ mmcu?avr5=mmcu?atmega644pa \
+ mmcu?avr5=mmcu?atmega645 \
++ mmcu?avr5=mmcu?atmega645a \
++ mmcu?avr5=mmcu?atmega645p \
+ mmcu?avr5=mmcu?atmega6450 \
++ mmcu?avr5=mmcu?atmega6450a \
++ mmcu?avr5=mmcu?atmega6450p \
+ mmcu?avr5=mmcu?atmega649 \
++ mmcu?avr5=mmcu?atmega649a \
++ mmcu?avr5=mmcu?atmega649p \
+ mmcu?avr5=mmcu?atmega6490 \
++ mmcu?avr5=mmcu?atmega6490a \
++ mmcu?avr5=mmcu?atmega6490p \
+ mmcu?avr5=mmcu?atmega16hva \
++ mmcu?avr5=mmcu?atmega16hva2 \
+ mmcu?avr5=mmcu?atmega16hvb \
+ mmcu?avr5=mmcu?atmega32hvb \
+ mmcu?avr5=mmcu?at90can32 \
+@@ -172,6 +201,7 @@
+ mmcu?avr5=mmcu?atmega16u4 \
+ mmcu?avr5=mmcu?atmega32u4 \
+ mmcu?avr5=mmcu?atmega32u6 \
++ mmcu?avr5=mmcu?atmega64hve \
+ mmcu?avr5=mmcu?at90scr100 \
+ mmcu?avr5=mmcu?at90usb646 \
+ mmcu?avr5=mmcu?at90usb647 \
diff --git a/gcc-4.8.0-libffi-texinfo.patch b/gcc-4.8.0-libffi-texinfo.patch
new file mode 100644
index 0000000..c954e44
--- /dev/null
+++ b/gcc-4.8.0-libffi-texinfo.patch
@@ -0,0 +1,19 @@
+--- gcc-4.8.0/libffi/doc/libffi.texi.orig 2013-03-27 14:30:44.349767608 +0100
++++ gcc-4.8.0/libffi/doc/libffi.texi 2013-03-27 14:36:39.440125266 +0100
+@@ -360,7 +360,6 @@
+ new @code{ffi_type} object for it.
+
+ @tindex ffi_type
+-@deftp ffi_type
+ The @code{ffi_type} has the following members:
+ @table @code
+ @item size_t size
+@@ -376,8 +375,6 @@
+ This is a @samp{NULL}-terminated array of pointers to @code{ffi_type}
+ objects. There is one element per field of the struct.
+ @end table
+-@end deftp
+-
+
+ @node Type Example
+ @subsection Type Example
diff --git a/gcc-4.9.0-upstream-fixes-1.patch b/gcc-4.9.0-upstream-fixes-1.patch
new file mode 100644
index 0000000..365d99b
--- /dev/null
+++ b/gcc-4.9.0-upstream-fixes-1.patch
@@ -0,0 +1,102 @@
+Submitted By: Armin K.
+Date: 2014-05-10
+Initial Package Version: 4.9.0
+Upstream Status: Fixed Upstream
+Origin: Upstream VCS
+Description: Prevents compiler from generating broken code that would cause
+ some programs to segfault or behave incorrectly when compiled
+ with gcc-4.9.0
+
+--- a/gcc/ipa-devirt.c 2014-04-08 07:35:11.000000000 +0200
++++ b/gcc/ipa-devirt.c 2014-05-10 16:46:14.502859179 +0200
+@@ -987,6 +987,17 @@
+ context->outer_type = expected_type;
+ context->offset = 0;
+ context->maybe_derived_type = true;
++ context->maybe_in_construction = true;
++ /* POD can be changed to an instance of a polymorphic type by
++ placement new. Here we play safe and assume that any
++ non-polymorphic type is POD. */
++ if ((TREE_CODE (type) != RECORD_TYPE
++ || !TYPE_BINFO (type)
++ || !polymorphic_type_binfo_p (TYPE_BINFO (type)))
++ && (TREE_CODE (TYPE_SIZE (type)) != INTEGER_CST
++ || (offset + tree_to_uhwi (TYPE_SIZE (expected_type)) <=
++ tree_to_uhwi (TYPE_SIZE (type)))))
++ return true;
+ return false;
+ }
+
+--- a/gcc/testsuite/g++.dg/ipa/devirt-11.C 2013-09-08 18:42:21.000000000 +0200
++++ b/gcc/testsuite/g++.dg/ipa/devirt-11.C 2014-05-10 16:46:14.503859198 +0200
+@@ -45,5 +45,5 @@
+ /* While inlining function called once we should devirtualize a new call to fn2
+ and two to fn3. While doing so the new symbol for fn2 needs to be
+ introduced. */
+-/* { dg-final { scan-ipa-dump-times "Discovered a virtual call to a known target" 3 "inline" } } */
++/* { dg-final { scan-ipa-dump-times "Discovered a virtual call to a known target" 1 "inline" } } */
+ /* { dg-final { cleanup-ipa-dump "inline" } } */
+--- a/gcc/testsuite/g++.dg/ipa/devirt-31.C 1970-01-01 01:00:00.000000000 +0100
++++ b/gcc/testsuite/g++.dg/ipa/devirt-31.C 2014-05-10 16:46:14.503859198 +0200
+@@ -0,0 +1,23 @@
++/* { dg-options "-O2 -std=c++11 -fdump-ipa-inline" } */
++#include
++
++class EmbeddedObject {
++public:
++ virtual int val() { return 2; }
++};
++
++class Container {
++ alignas(EmbeddedObject) char buffer[sizeof(EmbeddedObject)];
++public:
++ EmbeddedObject *obj() { return (EmbeddedObject*)buffer; }
++ Container() { new (buffer) EmbeddedObject(); }
++};
++
++Container o;
++
++int main()
++{
++ __builtin_printf("%d\n", o.obj()->val());
++}
++/* { dg-final { scan-ipa-dump-not "__builtin_unreachable" "inline" } } */
++/* { dg-final { cleanup-ipa-dump "inline" } } */
+--- a/gcc/tree-ssa-threadedge.c 2014-01-02 23:23:26.000000000 +0100
++++ b/gcc/tree-ssa-threadedge.c 2014-05-10 16:45:59.053571881 +0200
+@@ -387,7 +387,34 @@
+ && (gimple_code (stmt) != GIMPLE_CALL
+ || gimple_call_lhs (stmt) == NULL_TREE
+ || TREE_CODE (gimple_call_lhs (stmt)) != SSA_NAME))
+- continue;
++ {
++ /* STMT might still have DEFS and we need to invalidate any known
++ equivalences for them.
++
++ Consider if STMT is a GIMPLE_ASM with one or more outputs that
++ feeds a conditional inside a loop. We might derive an equivalence
++ due to the conditional. */
++ tree op;
++ ssa_op_iter iter;
++
++ if (backedge_seen)
++ FOR_EACH_SSA_TREE_OPERAND (op, stmt, iter, SSA_OP_DEF)
++ {
++ /* This call only invalidates equivalences created by
++ PHI nodes. This is by design to keep the cost of
++ of invalidation reasonable. */
++ invalidate_equivalences (op, stack, src_map, dst_map);
++
++ /* However, conditionals can imply values for real
++ operands as well. And those won't be recorded in the
++ maps. In fact, those equivalences may be recorded totally
++ outside the threading code. We can just create a new
++ temporary NULL equivalence here. */
++ record_temporary_equivalence (op, NULL_TREE, stack);
++ }
++
++ continue;
++ }
+
+ /* The result of __builtin_object_size depends on all the arguments
+ of a phi node. Temporarily using only one edge produces invalid
diff --git a/gcc-4.9.2-arm-lra-bootstrap.patch b/gcc-4.9.2-arm-lra-bootstrap.patch
new file mode 100644
index 0000000..d4d0f82
--- /dev/null
+++ b/gcc-4.9.2-arm-lra-bootstrap.patch
@@ -0,0 +1,15 @@
+--- trunk/gcc/lra-lives.c 2014/05/30 08:43:05 211074
++++ trunk/gcc/lra-lives.c 2014/06/16 09:58:34 211701
+@@ -558,7 +558,11 @@
+ /* It might be 'inheritance pseudo <- reload pseudo'. */
+ || (src_regno >= lra_constraint_new_regno_start
+ && ((int) REGNO (SET_DEST (set))
+- >= lra_constraint_new_regno_start))))
++ >= lra_constraint_new_regno_start)
++ /* Remember to skip special cases where src/dest regnos are
++ the same, e.g. insn SET pattern has matching constraints
++ like =r,0. */
++ && src_regno != (int) REGNO (SET_DEST (set)))))
+ {
+ int hard_regno = -1, regno = -1;
+
diff --git a/gcc-5.2.0-libjava-disable-multilib.patch b/gcc-5.2.0-libjava-disable-multilib.patch
new file mode 100644
index 0000000..a050e35
--- /dev/null
+++ b/gcc-5.2.0-libjava-disable-multilib.patch
@@ -0,0 +1,11 @@
+--- gcc-5.2.0/Makefile.in.orig 2015-08-16 18:06:23.099725324 +0200
++++ gcc-5.2.0/Makefile.in 2015-08-16 18:06:33.553684921 +0200
+@@ -43118,7 +43118,7 @@
+ $$s/$$module_srcdir/configure \
+ --srcdir=$${topdir}/$$module_srcdir \
+ $(TARGET_CONFIGARGS) --build=${build_alias} --host=${target_alias} \
+- --target=${target_alias} $(EXTRA_CONFIGARGS_LIBJAVA) \
++ --target=${target_alias} $(EXTRA_CONFIGARGS_LIBJAVA) --disable-multilib \
+ || exit 1
+ @endif target-libjava
+
diff --git a/gcc-6.1.0-gcj-remove-minor-handling.patch b/gcc-6.1.0-gcj-remove-minor-handling.patch
new file mode 100644
index 0000000..8551128
--- /dev/null
+++ b/gcc-6.1.0-gcj-remove-minor-handling.patch
@@ -0,0 +1,36 @@
+--- gcc-6.1.0/gcc/java/decl.c.orig 2016-02-08 16:36:16.000000000 +0100
++++ gcc-6.1.0/gcc/java/decl.c 2016-05-08 13:57:25.854163381 +0200
+@@ -507,7 +507,7 @@
+ parse_version (void)
+ {
+ const char *p = version_string;
+- unsigned int major = 0, minor = 0;
++ unsigned int major = 0;
+ unsigned int abi_version;
+
+ /* Skip leading junk. */
+@@ -525,13 +525,6 @@
+ gcc_assert (*p == '.' && ISDIGIT (p[1]));
+ ++p;
+
+- /* Extract minor version. */
+- while (ISDIGIT (*p))
+- {
+- minor = minor * 10 + *p - '0';
+- ++p;
+- }
+-
+ if (flag_indirect_dispatch)
+ {
+ abi_version = GCJ_CURRENT_BC_ABI_VERSION;
+--- gcc-6.1.0/gcc/java/decl.c.orig 2016-05-08 17:15:16.964134546 +0200
++++ gcc-6.1.0/gcc/java/decl.c 2016-05-08 17:15:25.304134521 +0200
+@@ -535,7 +535,7 @@
+ /* Implicit in this computation is the idea that we won't break the
+ old-style binary ABI in a sub-minor release (e.g., from 4.0.0 to
+ 4.0.1). */
+- abi_version = 100000 * major + 1000 * minor;
++ abi_version = 100000 * major;
+ }
+ if (flag_bootstrap_classes)
+ abi_version |= FLAG_BOOTSTRAP_LOADER;
diff --git a/gcc-6.4-glibc-2.26-libjava-context_t.patch b/gcc-6.4-glibc-2.26-libjava-context_t.patch
new file mode 100644
index 0000000..6176c1b
--- /dev/null
+++ b/gcc-6.4-glibc-2.26-libjava-context_t.patch
@@ -0,0 +1,24 @@
+diff -Nru gcc-6.4.0/libjava.orig/include/i386-signal.h gcc-6.4.0/libjava/include/i386-signal.h
+--- gcc-6.4.0/libjava.orig/include/i386-signal.h 2011-12-20 13:18:26.524825000 +0100
++++ gcc-6.4.0/libjava/include/i386-signal.h 2017-10-21 19:28:54.131211566 +0200
+@@ -29,7 +29,7 @@
+ #define HANDLE_DIVIDE_OVERFLOW \
+ do \
+ { \
+- struct ucontext *_uc = (struct ucontext *)_p; \
++ struct ucontext_t *_uc = (struct ucontext_t *)_p; \
+ gregset_t &_gregs = _uc->uc_mcontext.gregs; \
+ unsigned char *_eip = (unsigned char *)_gregs[REG_EIP]; \
+ \
+diff -Nru gcc-6.4.0/libjava.orig/include/x86_64-signal.h gcc-6.4.0/libjava/include/x86_64-signal.h
+--- gcc-6.4.0/libjava.orig/include/x86_64-signal.h 2017-10-21 19:28:37.415142991 +0200
++++ gcc-6.4.0/libjava/include/x86_64-signal.h 2017-10-21 19:12:38.627239709 +0200
+@@ -28,7 +28,7 @@
+ #define HANDLE_DIVIDE_OVERFLOW \
+ do \
+ { \
+- struct ucontext *_uc = (struct ucontext *)_p; \
++ struct ucontext_t *_uc = (struct ucontext_t *)_p; \
+ gregset_t &_gregs = _uc->uc_mcontext.gregs; \
+ unsigned char *_rip = (unsigned char *)_gregs[REG_RIP]; \
+ \
diff --git a/gcc-6.4-glibc-2.26-libsanitizer.patch b/gcc-6.4-glibc-2.26-libsanitizer.patch
new file mode 100644
index 0000000..ee15c6c
--- /dev/null
+++ b/gcc-6.4-glibc-2.26-libsanitizer.patch
@@ -0,0 +1,160 @@
+From 4c07606bb77bbd30f02adb947d480516da3fa3f7 Mon Sep 17 00:00:00 2001
+From: Khem Raj
+Date: Sun, 11 Jun 2017 10:09:13 -0700
+Subject: [PATCH] libsanitizer: Use stack_t instead of struct sigaltstack
+
+Upstream-Status: Submitted
+
+Signed-off-by: Khem Raj
+---
+ libsanitizer/sanitizer_common/sanitizer_linux.cc | 4 ++--
+ libsanitizer/sanitizer_common/sanitizer_linux.h | 6 +++---
+ .../sanitizer_common/sanitizer_stoptheworld_linux_libcdep.cc | 3 ++-
+ 3 files changed, 7 insertions(+), 6 deletions(-)
+
+Index: gcc-7.1.0/libsanitizer/sanitizer_common/sanitizer_linux.cc
+===================================================================
+--- gcc-7.1.0.orig/libsanitizer/sanitizer_common/sanitizer_linux.cc
++++ gcc-7.1.0/libsanitizer/sanitizer_common/sanitizer_linux.cc
+@@ -14,6 +14,10 @@
+
+ #if SANITIZER_FREEBSD || SANITIZER_LINUX
+
++#if !SANITIZER_ANDROID
++#include
++#endif
++
+ #include "sanitizer_common.h"
+ #include "sanitizer_flags.h"
+ #include "sanitizer_internal_defs.h"
+@@ -71,10 +75,6 @@ extern "C" {
+ extern char **environ; // provided by crt1
+ #endif // SANITIZER_FREEBSD
+
+-#if !SANITIZER_ANDROID
+-#include
+-#endif
+-
+ #if SANITIZER_LINUX
+ //
+ struct kernel_timeval {
+@@ -605,8 +605,8 @@ uptr internal_prctl(int option, uptr arg
+ }
+ #endif
+
+-uptr internal_sigaltstack(const struct sigaltstack *ss,
+- struct sigaltstack *oss) {
++uptr internal_sigaltstack(const stack_t *ss,
++ stack_t *oss) {
+ return internal_syscall(SYSCALL(sigaltstack), (uptr)ss, (uptr)oss);
+ }
+
+Index: gcc-7.1.0/libsanitizer/sanitizer_common/sanitizer_linux.h
+===================================================================
+--- gcc-7.1.0.orig/libsanitizer/sanitizer_common/sanitizer_linux.h
++++ gcc-7.1.0/libsanitizer/sanitizer_common/sanitizer_linux.h
+@@ -19,7 +19,10 @@
+ #include "sanitizer_platform_limits_posix.h"
+
+ struct link_map; // Opaque type returned by dlopen().
+-struct sigaltstack;
++
++#ifndef __stack_t_defined
++struct stack_t;
++#endif
+
+ namespace __sanitizer {
+ // Dirent structure for getdents(). Note that this structure is different from
+@@ -28,8 +31,8 @@ struct linux_dirent;
+
+ // Syscall wrappers.
+ uptr internal_getdents(fd_t fd, struct linux_dirent *dirp, unsigned int count);
+-uptr internal_sigaltstack(const struct sigaltstack* ss,
+- struct sigaltstack* oss);
++uptr internal_sigaltstack(const stack_t* ss,
++ stack_t* oss);
+ uptr internal_sigprocmask(int how, __sanitizer_sigset_t *set,
+ __sanitizer_sigset_t *oldset);
+
+Index: gcc-7.1.0/libsanitizer/sanitizer_common/sanitizer_stoptheworld_linux_libcdep.cc
+===================================================================
+--- gcc-7.1.0.orig/libsanitizer/sanitizer_common/sanitizer_stoptheworld_linux_libcdep.cc
++++ gcc-7.1.0/libsanitizer/sanitizer_common/sanitizer_stoptheworld_linux_libcdep.cc
+@@ -16,6 +16,7 @@
+ defined(__aarch64__) || defined(__powerpc64__) || \
+ defined(__s390__))
+
++#include
+ #include "sanitizer_stoptheworld.h"
+
+ #include "sanitizer_platform_limits_posix.h"
+@@ -273,7 +274,7 @@ static int TracerThread(void* argument)
+
+ // Alternate stack for signal handling.
+ InternalScopedBuffer handler_stack_memory(kHandlerStackSize);
+- struct sigaltstack handler_stack;
++ stack_t handler_stack;
+ internal_memset(&handler_stack, 0, sizeof(handler_stack));
+ handler_stack.ss_sp = handler_stack_memory.data();
+ handler_stack.ss_size = kHandlerStackSize;
+Index: gcc-7.1.0/libsanitizer/tsan/tsan_platform_linux.cc
+===================================================================
+--- gcc-7.1.0.orig/libsanitizer/tsan/tsan_platform_linux.cc
++++ gcc-7.1.0/libsanitizer/tsan/tsan_platform_linux.cc
+@@ -14,6 +14,7 @@
+ #include "sanitizer_common/sanitizer_platform.h"
+ #if SANITIZER_LINUX || SANITIZER_FREEBSD
+
++#include
+ #include "sanitizer_common/sanitizer_common.h"
+ #include "sanitizer_common/sanitizer_libc.h"
+ #include "sanitizer_common/sanitizer_linux.h"
+@@ -28,7 +29,6 @@
+
+ #include
+ #include
+-#include
+ #include
+ #include
+ #include
+@@ -287,7 +287,7 @@ void InitializePlatform() {
+ int ExtractResolvFDs(void *state, int *fds, int nfd) {
+ #if SANITIZER_LINUX && !SANITIZER_ANDROID
+ int cnt = 0;
+- __res_state *statp = (__res_state*)state;
++ res_state statp = (res_state)state;
+ for (int i = 0; i < MAXNS && cnt < nfd; i++) {
+ if (statp->_u._ext.nsaddrs[i] && statp->_u._ext.nssocks[i] != -1)
+ fds[cnt++] = statp->_u._ext.nssocks[i];
+Index: gcc-7.1.0/libsanitizer/sanitizer_common/sanitizer_linux_libcdep.cc
+===================================================================
+--- gcc-7.1.0.orig/libsanitizer/sanitizer_common/sanitizer_linux_libcdep.cc
++++ gcc-7.1.0/libsanitizer/sanitizer_common/sanitizer_linux_libcdep.cc
+@@ -14,6 +14,7 @@
+
+ #if SANITIZER_FREEBSD || SANITIZER_LINUX
+
++#include
+ #include "sanitizer_allocator_internal.h"
+ #include "sanitizer_atomic.h"
+ #include "sanitizer_common.h"
+@@ -30,7 +31,6 @@
+
+ #include
+ #include
+-#include
+ #include
+ #include
+
+Index: gcc-7.1.0/libsanitizer/sanitizer_common/sanitizer_symbolizer_posix_libcdep.cc
+===================================================================
+--- gcc-7.1.0.orig/libsanitizer/sanitizer_common/sanitizer_symbolizer_posix_libcdep.cc
++++ gcc-7.1.0/libsanitizer/sanitizer_common/sanitizer_symbolizer_posix_libcdep.cc
+@@ -12,6 +12,7 @@
+
+ #include "sanitizer_platform.h"
+ #if SANITIZER_POSIX
++#include
+ #include "sanitizer_allocator_internal.h"
+ #include "sanitizer_common.h"
+ #include "sanitizer_flags.h"
diff --git a/gcc-6.4-glibc-2.26-ucontext_t.patch b/gcc-6.4-glibc-2.26-ucontext_t.patch
new file mode 100644
index 0000000..f7b94fc
--- /dev/null
+++ b/gcc-6.4-glibc-2.26-ucontext_t.patch
@@ -0,0 +1,119 @@
+--- branches/gcc-6-branch/libgcc/config/aarch64/linux-unwind.h 2017/07/04 10:22:56 249956
+--- b/libgcc/config/aarch64/linux-unwind.h 2017/07/04 10:23:57 249957
+@@ -52,7 +52,7 @@
+ struct rt_sigframe
+ {
+ siginfo_t info;
+- struct ucontext uc;
++ ucontext_t uc;
+ };
+
+ struct rt_sigframe *rt_;
+--- branches/gcc-6-branch/libgcc/config/alpha/linux-unwind.h 2017/07/04 10:22:56 249956
+--- b/libgcc/config/alpha/linux-unwind.h 2017/07/04 10:23:57 249957
+@@ -51,7 +51,7 @@
+ {
+ struct rt_sigframe {
+ siginfo_t info;
+- struct ucontext uc;
++ ucontext_t uc;
+ } *rt_ = context->cfa;
+ sc = &rt_->uc.uc_mcontext;
+ }
+--- branches/gcc-6-branch/libgcc/config/bfin/linux-unwind.h 2017/07/04 10:22:56 249956
+--- b/libgcc/config/bfin/linux-unwind.h 2017/07/04 10:23:57 249957
+@@ -52,7 +52,7 @@
+ void *puc;
+ char retcode[8];
+ siginfo_t info;
+- struct ucontext uc;
++ ucontext_t uc;
+ } *rt_ = context->cfa;
+
+ /* The void * cast is necessary to avoid an aliasing warning.
+--- branches/gcc-6-branch/libgcc/config/i386/linux-unwind.h 2017/07/04 10:22:56 249956
+--- b/libgcc/config/i386/linux-unwind.h 2017/07/04 10:23:57 249957
+@@ -58,7 +58,7 @@
+ if (*(unsigned char *)(pc+0) == 0x48
+ && *(unsigned long long *)(pc+1) == RT_SIGRETURN_SYSCALL)
+ {
+- struct ucontext *uc_ = context->cfa;
++ ucontext_t *uc_ = context->cfa;
+ /* The void * cast is necessary to avoid an aliasing warning.
+ The aliasing warning is correct, but should not be a problem
+ because it does not alias anything. */
+@@ -138,7 +138,7 @@
+ siginfo_t *pinfo;
+ void *puc;
+ siginfo_t info;
+- struct ucontext uc;
++ ucontext_t uc;
+ } *rt_ = context->cfa;
+ /* The void * cast is necessary to avoid an aliasing warning.
+ The aliasing warning is correct, but should not be a problem
+--- branches/gcc-6-branch/libgcc/config/m68k/linux-unwind.h 2017/07/04 10:22:56 249956
+--- b/libgcc/config/m68k/linux-unwind.h 2017/07/04 10:23:57 249957
+@@ -33,7 +33,7 @@
+ /* is unfortunately broken right now. */
+ struct uw_ucontext {
+ unsigned long uc_flags;
+- struct ucontext *uc_link;
++ ucontext_t *uc_link;
+ stack_t uc_stack;
+ mcontext_t uc_mcontext;
+ unsigned long uc_filler[80];
+--- branches/gcc-6-branch/libgcc/config/nios2/linux-unwind.h 2017/07/04 10:22:56 249956
+--- b/libgcc/config/nios2/linux-unwind.h 2017/07/04 10:23:57 249957
+@@ -38,7 +38,7 @@
+
+ struct nios2_ucontext {
+ unsigned long uc_flags;
+- struct ucontext *uc_link;
++ ucontext_t *uc_link;
+ stack_t uc_stack;
+ struct nios2_mcontext uc_mcontext;
+ sigset_t uc_sigmask; /* mask last for extensibility */
+--- branches/gcc-6-branch/libgcc/config/pa/linux-unwind.h 2017/07/04 10:22:56 249956
+--- b/libgcc/config/pa/linux-unwind.h 2017/07/04 10:23:57 249957
+@@ -80,7 +80,7 @@
+ struct sigcontext *sc;
+ struct rt_sigframe {
+ siginfo_t info;
+- struct ucontext uc;
++ ucontext_t uc;
+ } *frame;
+
+ /* rt_sigreturn trampoline:
+--- branches/gcc-6-branch/libgcc/config/sh/linux-unwind.h 2017/07/04 10:22:56 249956
+--- b/libgcc/config/sh/linux-unwind.h 2017/07/04 10:23:57 249957
+@@ -180,7 +180,7 @@
+ {
+ struct rt_sigframe {
+ siginfo_t info;
+- struct ucontext uc;
++ ucontext_t uc;
+ } *rt_ = context->cfa;
+ /* The void * cast is necessary to avoid an aliasing warning.
+ The aliasing warning is correct, but should not be a problem
+--- branches/gcc-6-branch/libgcc/config/tilepro/linux-unwind.h 2017/07/04 10:22:56 249956
+--- b/libgcc/config/tilepro/linux-unwind.h 2017/07/04 10:23:57 249957
+@@ -61,7 +61,7 @@
+ struct rt_sigframe {
+ unsigned char save_area[C_ABI_SAVE_AREA_SIZE];
+ siginfo_t info;
+- struct ucontext uc;
++ ucontext_t uc;
+ } *rt_;
+
+ /* Return if this is not a signal handler. */
+--- branches/gcc-6-branch/libgcc/config/xtensa/linux-unwind.h 2017/07/04 10:22:56 249956
+--- b/libgcc/config/xtensa/linux-unwind.h 2017/07/04 10:23:57 249957
+@@ -67,7 +67,7 @@
+
+ struct rt_sigframe {
+ siginfo_t info;
+- struct ucontext uc;
++ ucontext_t uc;
+ } *rt_;
+
+ /* movi a2, __NR_rt_sigreturn; syscall */
diff --git a/gcc-shared-openmp.patch b/gcc-shared-openmp.patch
new file mode 100644
index 0000000..c744427
--- /dev/null
+++ b/gcc-shared-openmp.patch
@@ -0,0 +1,14 @@
+diff -Naur ./libgomp/configure.tgt ../../gcc-4.2.0/libgomp/configure.tgt
+--- ./libgomp/configure.tgt 2006-12-02 18:02:00.000000000 -0200
++++ ../../gcc-4.2.0/libgomp/configure.tgt 2007-07-07 15:24:51.000000000 -0300
+@@ -17,8 +17,8 @@
+ case "${target}" in
+
+ *-*-linux*)
+- XCFLAGS="${XCFLAGS} -ftls-model=initial-exec"
+- XLDFLAGS="${XLDFLAGS} -Wl,-z,nodlopen"
++# XCFLAGS="${XCFLAGS} -ftls-model=initial-exec"
++# XLDFLAGS="${XLDFLAGS} -Wl,-z,nodlopen"
+ ;;
+ esac
+ fi
diff --git a/gcc4-java-nomulti.patch b/gcc4-java-nomulti.patch
new file mode 100644
index 0000000..3a6554d
--- /dev/null
+++ b/gcc4-java-nomulti.patch
@@ -0,0 +1,25 @@
+--- 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/gcc6.spec b/gcc6.spec
new file mode 100644
index 0000000..10e28c7
--- /dev/null
+++ b/gcc6.spec
@@ -0,0 +1,1936 @@
+# openmamba cross platform gcc specfile
+
+%define target_cpu %(echo %{_target_platform} | cut -d- -f1)
+%if "%{?_target_platform}" != "%{_host}"
+# % define target_platform %{cross_target_cpu}-openmamba-linux-gnu
+# % define target_cpu %{cross_target_cpu}
+ %define _as %{_target_platform}-as
+ %define _ld %{_target_platform}-ld
+ %if "%{target_cpu}" == "x86_64"
+ %define _lib lib64
+ %endif
+%else
+# % define target_platform %{_target_platform}
+ %define target_cpu %{_target_cpu}
+ %define _as as
+ %define _ld ld
+%endif
+
+%define gcc_branch %(echo %{version} | cut -d. -f 1-2)
+#% define gcc_extraver -20050810
+
+# use stage1 == 1 to have a gcc build not depending on
+# glibc library; this is usually the first needed step in
+# order to add support for a new (cross)target platform
+%if "%{?stage1}" == "1"
+ %define bootstrap_append -stage1
+ %define disable_cpp 1
+ %define disable_doc 1
+ %define disable_java 1
+ %define disable_go 1
+%endif
+
+# Legacy for Java (6.4.0)
+%define disable_go 1
+#% define disable_fortran 1
+%define disable_libs 1
+
+#% if "%{?stage2}" == "1"
+# % define bootstrap_append -stage2
+#% endif
+
+%define libstdcxx_name libstdc++64
+%define libgcj_name libgcj4
+%define java_home %{_jvmdir}/java-1.5.0-gcj-1.5.0.0/jre
+
+%define MAJver %(echo %version | cut -d. -f 1)
+%define majver %(echo %version | cut -d. -f 1-2)
+
+Name: gcc6
+Version: 6.4.0
+Release: 2mamba
+Summary: GNU Compiler Collection (C, C++, Fortran, Java, Ada)
+Group: Applications/Development
+Vendor: openmamba
+Distribution: openmamba
+Packager: Silvan Calarco
+URL: http://gcc.gnu.org/
+Source: ftp://ftp.gnu.org/gnu/gcc/gcc-%{version}/gcc-%{version}%{?gcc_extraver}.tar.xz
+Source1: ftp://sourceware.org/pub/java/ecj-latest.jar
+Source2: gcc-4.3.2-ecj1-wrapper
+Patch2: gcc4-java-nomulti.patch
+Patch0: gcc-4.5.0-no_fixincludes.patch
+Patch1: gcc-4.0.2-zextract.patch
+Patch3: gcc-4.0.2-BufferStrategy.patch
+Patch4: gcc-4.0.2-failure_with_compound_literals.patch
+Patch5: gcc-4.1.1-arm-t-linux.patch
+Patch6: gcc-4.1.1-libgcc-softfloat-fix.patch
+Patch7: gcc-shared-openmp.patch
+Patch8: gcc-4.4.0-pr39543.patch
+Patch9: gcc-4.4.3-cross_build_fix.patch
+Patch11: gcc-4.5.1-psignal_fix_bootstrap_build.patch
+Patch12: gcc-4.5.2-arm_define_ARM_PCS_and_ARM_PCS_VFP.patch
+Patch13: gcc-4.5.3-avr-new-devices.patch
+Patch14: gcc-4.8.0-libffi-texinfo.patch
+Patch15: gcc-4.9.0-upstream-fixes-1.patch
+Patch16: gcc-4.9.2-arm-lra-bootstrap.patch
+Patch17: gcc-5.2.0-libjava-disable-multilib.patch
+Patch18: gcc-6.1.0-gcj-remove-minor-handling.patch
+Patch19: gcc-6.4-glibc-2.26-ucontext_t.patch
+Patch20: gcc-6.4-glibc-2.26-libsanitizer.patch
+Patch21: gcc-6.4-glibc-2.26-libjava-context_t.patch
+License: GPL
+## AUTOBUILDREQ-BEGIN
+## AUTOBUILDREQ-END
+%if "%{?cross_target_cpu}" == ""
+BuildRequires: binutils
+%else
+BuildRequires: cross-%{_target_platform}-binutils
+%if "%{?stage1}" == "1"
+BuildRequires: cross-%{_target_platform}-glibc-stage1
+%endif
+%if "%{?stage2}" == "1"
+BuildRequires: cross-%{_target_platform}-glibc-stage2
+%endif
+%if "%{?stage1}" != "1"
+%if "%{?stage2}" != "1"
+%if "%{target_cpu}" != "avr"
+BuildRequires: cross-%{_target_platform}-glibc
+%endif
+%endif
+%endif
+%endif
+BuildRequires: libz-devel
+BuildRequires: gettext
+BuildRequires: flex
+BuildRequires: bison
+BuildRequires: diffutils
+BuildRequires: texinfo >= 4.6
+BuildRequires: libmpc-devel
+BuildRequires: libmpfr-devel >= 2.1.2
+%if "%{_target_platform}" == "%{_build}"
+BuildRequires: glibc-devel >= 2.5
+%ifarch x86_64
+BuildRequires: glibc-multilib-devel
+%endif
+#% if "%{?stage2}" != "1"
+BuildRequires: tetex >= 3.0
+BuildRequires: libgtk2-devel >= 2.8.17
+BuildRequires: libalsa-devel >= 1.0.11
+%if "%{?disable_jack}" != "1"
+BuildRequires: dssi-devel >= 0.9
+BuildRequires: libjack-devel >= 0.101.1
+%endif
+%if "%{?disable_java}" != "1"
+BuildRequires: zip
+BuildRequires: fastjar
+BuildRequires: jpackage-utils
+%endif
+%if "%{?disable_gjdoc}" != "1"
+BuildRequires: antlr
+%endif
+BuildRequires: libcairo-devel >= 1.4.10
+BuildRequires: libxcb-util-devel >= 0.2
+BuildRequires: libisl-devel
+#% endif
+#% else
+# BuildRequires: cross-%{target_cpu}-glibc%{?glibc_require_append} >= 2.5
+%endif
+
+Requires(post):%{__install_info}
+Requires: %{name}-cpp = %{version}-%{release}
+Requires: libgcc >= %{version}-%{release}
+Requires: binutils >= 2.16.1
+BuildRoot: %{_tmppath}/%{name}-%{version}-root
+
+%description
+A compiler aimed at integrating all the optimizations and features necessary for a high-performance and stable development environment.
+This package is required for all other GCC compilers, namely C++, Fortran, Objective C and Java.
+
+%package -n %{name}-multilib
+Summary: gcc multilib package for building 32 bit applications on x86_64 architecture
+Group: Applications/Development
+
+%description -n %{name}-multilib
+gcc multilib package for building 32 bit applications on x86_64 architecture.
+
+#
+# GCC Library
+#
+%package -n lib%{name}
+Summary: GNU C Library
+Group: System/Libraries
+
+%description -n lib%{name}
+The libgcc package contains GCC shared libraries for gcc %{gcc_branch}.
+
+#
+# Preprocessor
+#
+%package cpp
+Summary: The C Preprocessor
+Group: Development/Libraries
+#Requires: %{name} = %{version}-%{release}
+
+%description cpp
+The C preprocessor 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,' which are abbreviations for longer constructs.
+
+The C preprocessor provides four separate facilities that you can use as you see fit:
+ * Inclusion of header files. These are files of declarations that can be substituted into your program.
+ * Macro expansion. You can define 'macros,' which are abbreviations for arbitrary fragments of C code, and then 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.
+ * 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 programmer who is searching for such a macro processor.
+
+#
+# C++ Compiler
+#
+%package c++
+Summary: C++ support for gcc
+Group: Applications/Development
+Requires: %{name} = %{version}-%{release}
+#Requires: %{libstdcxx_name} = %{version}
+#Requires: %{libstdcxx_name}-devel = %{version}
+
+%description c++
+This package adds C++ support to the GNU C compiler. It includes support for most of the current C++ specification, including templates and exception handling. It does include the static standard C++ library and C++ header files.
+The library for dynamically linking programs is available separately.
+
+#
+# C++ Library
+#
+%package -n %{libstdcxx_name}
+Summary: GNU C++ library
+Group: System/Libraries
+
+%description -n %{libstdcxx_name}
+This package contains the GCC Standard C++ Library v3, an ongoing project to implement the ISO/IEC 14882:1998 Standard C++ library.
+
+%package -n %{libstdcxx_name}-devel
+Summary: GNU C++ library development files
+Group: Development/Libraries
+Requires: %{libstdcxx_name} = %{version}-%{release}
+
+%description -n %{libstdcxx_name}-devel
+This is the GNU implementation of the standard C++ libraries.
+This package includes the headers files and libraries needed for C++ development.
+
+%package -n %{libstdcxx_name}-debug
+Summary: GNU C++ library debug files
+Group: Development/Libraries
+Requires: %{libstdcxx_name} = %{version}-%{release}
+
+%description -n %{libstdcxx_name}-debug
+This is the GNU implementation of the standard C++ libraries.
+This package includes the files used by gdb for debugging.
+
+%package -n libcc1
+Summary: GNU cc1 plugin for GDB
+Group: System/Libraries
+
+%description -n libcc1
+GCC cc1 plugin for GDB.
+
+%package -n libcc1-devel
+Summary: GNU cc1 plugin for GDB development files
+Group: Development/Libraries
+Requires: libcc1 = %{version}-%{release}
+
+%description -n libcc1-devel
+GCC cc1 plugin for GDB development files.
+
+#
+# Java Compiler
+#
+%package java
+Summary: Java support for gcc
+Group: Applications/Development
+Requires: %{libgcj_name} >= %{version}
+Requires: %{libgcj_name}-devel >= %{version}
+Provides: gjdoc
+Obsoletes: gjdoc
+Obsoletes: %{name}-java-tools
+
+%description java
+This package adds experimental support for compiling Java(tm) programs and bytecode into native code. To use this you will also need the libgcj4 package.
+
+#
+# Java Libraries
+#
+%package -n %{libgcj_name}
+Summary: GNU Java runtime libraries
+Group: System/Libraries
+Provides: libgcj
+
+%description -n %{libgcj_name}
+Runtime libraries for the GNU Java Compiler. The %{libgcj_name} includes parts of the Java Class Libraries, plus glue to connect the libraries to the compiler and the underlying OS.
+
+%package -n %{libgcj_name}-devel
+Summary: Header files and libraries for Java development
+Group: Development/Libraries
+Requires: %{libgcj_name} = %{version}-%{release}
+Provides: libgcj-devel
+
+%description -n %{libgcj_name}-devel
+Development headers and libraries for the GNU Java Compiler.
+The %{libgcj_name} includes parts of the Java Class Libraries, plus glue to connect the libraries to the compiler and the underlying OS.
+
+#
+# Fortran 95 Compiler
+#
+%package fortran
+Summary: Fortran 95 support for gcc
+Group: Applications/Development
+Requires: libgfortran3 = %{version}-%{release}
+Requires: %{name} = %{version}-%{release}
+Obsoletes: gcc-g77, gcc-gfortran
+
+%description fortran
+This package adds support for compiling Fortran 95 programs with the GNU compiler.
+
+#
+# Go compiler
+#
+%package go
+Summary: The GNU compiler for the Go programming language
+Group: System/Libraries
+Requires: libgo = %{version}-%{release}
+Requires: libgo-devel = %{version}-%{release}
+
+%description go
+The GNU compiler for the Go programming language.
+
+%package -n libgo
+Summary: Library for the Go programmi language
+Group: System/Libraries
+
+%description -n libgo
+Library for the Go programmi language.
+
+%package -n libgo-devel
+Summary: Development headers and static library for libgo
+Group: Development/Libraries
+Requires: libgo = %{version}-%{release}
+
+%description -n libgo-devel
+Development files for the library for the Go programmi language.
+
+#
+# Fortran 95 Libraries
+#
+%package -n libgfortran3
+Summary: Fortran 95 runtime libraries
+Group: System/Libraries
+
+%description -n libgfortran3
+This package contains Fortran 95 shared library which is needed to run Fortran 95 dynamically linked programs.
+
+%package -n libiberty-devel
+Summary: Development files for libiberty
+Group: Development/Libraries
+
+%description -n libiberty-devel
+This package contains the libiberty static library and includes.
+
+%package -n libitm
+Summary: Transactional Memory library
+Group: System/Libraries
+
+%description -n libitm
+This package contains the GNU Transactional Memory library.
+
+%package -n libitm-devel
+Summary: Development files for libitm
+Group: Development/Libraries
+Requires: libobjc = %{version}-%{release}
+
+%description -n libitm-devel
+This package contains libitm static library and includes.
+
+%package -n libgomp
+Summary: GNU OpenMP library
+Group: System/Libraries
+
+%description -n libgomp
+An implementation of OpenMP for the C, C++, and Fortran 95 compilers in the GNU Compiler Collection.
+
+%package -n libgomp-devel
+Summary: Development headers and static library for libgomp
+Group: Development/Libraries
+Requires: libgomp = %{version}-%{release}
+
+%description -n libgomp-devel
+An implementation of OpenMP for the C, C++, and Fortran 95 compilers in the GNU Compiler Collection.
+This package contains development headers and static library for libgomp
+
+%package -n libobjc
+Summary: Objective-C runtime library
+Group: System/Libraries
+
+%description -n libobjc
+This package contains Objective-C shared library which is needed to run Objective-C dynamically linked programs.
+
+%package -n libobjc-devel
+Summary: Objective-C static library
+Group: Development/Libraries
+Requires: libobjc = %{version}-%{release}
+
+%description -n libobjc-devel
+This package contains Objective-C static library and includes which are needed to build Objective-C statically linked programs.
+
+#
+# libmpx packages
+#
+%package -n libmpx
+Summary: GCC MPX library
+Group: System/Libraries
+
+%description -n libmpx
+This package contains the GCC MPX library.
+
+%package -n libmpx-devel
+Summary: libmpx development libraries and headers
+Group: Development/Libraries
+Requires: libmpx = %{version}-%{release}
+
+%description -n libmpx-devel
+This package contains static libraries and headers to be used for development.
+
+#
+# libssp packages
+#
+%package -n libssp
+Summary: GCC extension library for protecting applications from stack-smashing attacks
+Group: System/Libraries
+
+%description -n libssp
+GCC extension library for protecting applications from stack-smashing attacks.
+
+%package -n libssp-devel
+Summary: GCC extension library for protecting applications from stack-smashing attacks
+Group: Development/Libraries
+Requires: libssp = %{version}-%{release}
+
+%description -n libssp-devel
+GCC extension library for protecting applications from stack-smashing attacks.
+This package contains static libraries and headers to be used for development.
+
+#
+# libquadmath packages
+#
+%package -n libquadmath
+Summary: GCC Quad-Precision (__float128) Math Library Application Programming Interface (API)
+Group: System/Libraries
+
+%description -n libquadmath
+GCC Quad-Precision (__float128) Math Library Application Programming Interface (API).
+
+%package -n libquadmath-devel
+Summary: GCC Quad-Precision (__float128) Math Library Application Programming Interface (API)
+Group: Development/Libraries
+Requires: libquadmath = %{version}-%{release}
+
+%description -n libquadmath-devel
+GCC Quad-Precision (__float128) Math Library Application Programming Interface (API).
+
+This package contains static libraries and headers to be used for development.
+
+%package -n libasan
+Summary: GCC Address Sanitizer library
+Group: System/Libraries
+
+%description -n libasan
+This package contains the GCC Address Sanitizer library.
+
+%package -n libasan-devel
+Summary: libasan development libraries and headers
+Group: Development/Libraries
+Requires: libasan = %{version}-%{release}
+
+%description -n libasan-devel
+This package contains static libraries and headers to be used for development.
+
+%package -n liblsan
+Summary: GCC Leak Sanitizer runtime library
+Group: System/Libraries
+
+%description -n liblsan
+This package contains the GCC Leak Sanitizer runtime library.
+
+%package -n liblsan-devel
+Summary: liblsan development libraries and headers
+Group: Development/Libraries
+Requires: liblsan = %{version}-%{release}
+
+%description -n liblsan-devel
+This package contains static libraries and headers to be used for development.
+
+%package -n libatomic
+Summary: GCC Atomic library
+Group: System/Libraries
+
+%description -n libatomic
+This package contains the GCC Atomic library.
+
+%package -n libatomic-devel
+Summary: libatomic development libraries and headers
+Group: Development/Libraries
+Requires: libatomic = %{version}-%{release}
+
+%description -n libatomic-devel
+This package contains static libraries and headers to be used for development.
+
+%package -n libcilkrts
+Summary: GCC Cilk runtime library
+Group: System/Libraries
+
+%description -n libcilkrts
+This package contains the GCC Cilk runtime library.
+
+%package -n libcilkrts-devel
+Summary: libubsan development libraries and headers
+Group: Development/Libraries
+Requires: libcilkrts = %{version}-%{release}
+
+%description -n libcilkrts-devel
+This package contains static libraries and headers to be used for development.
+
+%package -n libmpx
+Summary: GCC MPX library
+Group: System/Libraries
+
+%description -n libmpx
+This package contains the GCC MPX library.
+
+%package -n libmpx-devel
+Summary: libmpx development libraries and headers
+Group: Development/Libraries
+Requires: libmpx = %{version}-%{release}
+
+%description -n libmpx-devel
+This package contains static libraries and headers to be used for development.
+
+%package -n libcilkrts
+Summary: GCC Cilk runtime library
+Group: System/Libraries
+
+
+%package -n libubsan
+Summary: GCC Undefined Behavior Sanitizer library
+Group: System/Libraries
+
+%description -n libubsan
+This package contains the GCC Undefined Behavior Sanitizer library.
+
+%package -n libubsan-devel
+Summary: libubsan development libraries and headers
+Group: Development/Libraries
+Requires: libubsan = %{version}-%{release}
+
+%description -n libubsan-devel
+This package contains static libraries and headers to be used for development.
+
+%package -n libvtv
+Summary: GCC vtable verification library
+Group: System/Libraries
+
+%description -n libvtv
+This package contains the GCC vtable verification library.
+
+%package -n libvtv-devel
+Summary: libubsan development libraries and headers
+Group: Development/Libraries
+Requires: libvtv = %{version}-%{release}
+
+%description -n libvtv-devel
+This package contains static libraries and headers to be used for development.
+
+#
+# Documentation
+#
+%package doc
+Group: Documentation
+Summary: GCC documentation
+
+%description doc
+GCC is a compiler suite aimed at integrating all the optimizations and features necessary for a high-performance and stable development environment.
+This package contains the compiler documentation in INFO pages.
+
+%package -n cross-%{_target_platform}-%{name}%{?bootstrap_append}
+Summary: Cross Platform gcc for %{_target_platform}
+Group: Development/Tools
+Requires: cross-%{_target_platform}-binutils
+%if "%{?stage1}" != "1"
+Obsoletes: cross-%{_target_platform}-%{name}-stage1
+%endif
+AutoReqProv: no
+
+%description -n cross-%{_target_platform}-%{name}%{?bootstrap_append}
+Cross Platform gcc for %{_target_platform}.
+
+%prep
+%setup -q -n gcc-%{version}%{?gcc_extraver}
+#-D -T
+#:<< ___EOF
+%patch2 -p0
+sed -i -e 's/libjawt/libgcjawt/g' libjava/Makefile.{am,in}
+
+%patch0 -p1
+#%patch1 -p1
+#%patch3 -p1
+#%patch4 -p1
+#%patch5 -p1
+#%patch6 -p1
+#%patch7 -p1
+#%patch8 -p0
+%if "%{_target_platform}" != "%{_build}"
+%patch9 -p1
+%endif
+
+# psignal_fix_bootstrap_build
+%patch11 -p1
+#%patch12 -p1
+#%patch13 -p1
+#%patch14 -p1
+#%patch15 -p1
+#%patch16 -p1
+%patch17 -p1
+#%patch18 -p1
+%patch19 -p1
+%patch20 -p1
+%patch21 -p1
+
+%build
+#:<< ____EOF
+rm -rf ../%{name}-build
+#____EOF
+mkdir -p ../%{name}-build
+
+cd ../%{name}-build
+
+slibdir=%{_libdir}
+
+# BUILD_LANGUAGES is only used in final (not staged) build
+BUILD_LANGUAGES=c,objc,lto
+
+# FIXME: other languages: lto, obj-c++
+
+%if "%{disable_cpp}" != "1"
+# Fortran won't build cross platform (?)
+BUILD_LANGUAGES="${BUILD_LANGUAGES},c++,obj-c++"
+%endif
+%if "%{disable_fortran}" != "1"
+# Fortran won't build cross platform (?)
+BUILD_LANGUAGES="${BUILD_LANGUAGES},fortran"
+%endif
+%if "%{disable_java}" != "1"
+# Java depends on gdk
+BUILD_LANGUAGES="${BUILD_LANGUAGES},java"
+%endif
+%if "%{disable_go}" != "1"
+BUILD_LANGUAGES="${BUILD_LANGUAGES},go"
+%endif
+
+# Legacy
+BUILD_LANGUAGES=java,fortran
+
+case %{_target_platform} in
+ i386-*|i486-*|i586-*|i686-*|athlon-*)
+ ADDITIONAL_OPTS="--with-arch=i686"
+ ;;
+ ppc-* | powerpc-*)
+ ADDITIONAL_OPTS=""
+ ;;
+ arm-*)
+ abi=%{_target_platform}
+ abi=`echo ${abi/*-}`
+ if [ "$abi" = "gnueabihf" ]; then
+ ADDITIONAL_OPTS="--with-float=hard"
+ else
+ ADDITIONAL_OPTS=""
+ fi
+ #"--enable-multilib"
+ ;;
+ avr*)
+ ADDITIONAL_OPTS="--with-dwarf2"
+ BUILD_LANGUAGES="c,c++"
+ ;;
+ x86_64-*)
+ %if "%{_target_platform}" != "%{_host}"
+ ADDITIONAL_OPTS="--disable-libjava-multilib --with-slibdir=/usr/%{_target_platform}/lib64 --disable-multilib"
+ %else
+ ADDITIONAL_OPTS="--with-slibdir=$slibdir"
+ %endif
+ ;;
+ *)
+ echo "Error: target not supported."
+ exit 1
+ ;;
+esac
+
+%if "%{?stage1}" == "1"
+
+../gcc-%{version}%{?gcc_extraver}/configure \
+ --host=%{_host} \
+ --build=%{_build} \
+ --target=%{_target_platform} \
+ --prefix=%{_prefix} \
+ --libdir=%{_libdir} \
+ --infodir=%{_infodir} \
+ --mandir=%{_mandir} \
+ --disable-nls \
+ --disable-shared \
+ --disable-threads \
+ --enable-languages=c \
+ --with-newlib \
+ --without-headers \
+ --disable-libssp \
+ --disable-libgomp \
+ --disable-libquadmath \
+ --disable-libatomic \
+%if "%{_target_platform}" != "%{_host}"
+ --with-local-prefix=/usr/%{_target_platform} \
+%endif
+ $ADDITIONAL_OPTS
+
+make %{?_smp_mflags}
+# all-gcc
+
+%else
+
+
+CROSS_SYSTEM_HEADER_DIR=/usr/%{_target_platform}/include \
+../gcc-%{version}%{?gcc_extraver}/configure \
+ --prefix=%{_prefix} \
+ --libdir=%{_libdir} \
+ --infodir=%{_infodir} \
+ --mandir=%{_mandir} \
+ --host=%{_host} \
+ --build=%{_build} \
+ --target=%{_target_platform} \
+ --enable-shared \
+ --enable-languages=$BUILD_LANGUAGES \
+ --disable-libisl-version-check \
+%if "%{target_cpu}" != "avr"
+ --enable-threads=posix \
+ --enable-__cxa_atexit \
+ --enable-clocale=gnu \
+ --x-includes=%{_includedir} \
+ --x-libraries=%{_libdir} \
+%if "%{disable_libs}" == "1"
+ --disable-libssp \
+ --disable-libgomp \
+ --disable-libatomic \
+ --disable-libcilkrts \
+ --disable-libitm \
+ --disable-libmpx \
+ --disable-libsanitizer \
+ --disable-libusan \
+ --disable-libasan \
+ --disable-libstdc++ \
+ --disable-libcc1 \
+ --disable-libubsan \
+ --disable-liblsan \
+ --disable-libtsan \
+ --disable-install-libiberty \
+%endif
+%if "%{disable_java}" != "1"
+ --enable-java-awt=gtk \
+ --with-java-home=%{java_home} \
+ --enable-libgcj-multifile \
+%endif
+ --with-system-zlib \
+%if "%{?disable_jack}" == "1"
+ --disable-dssi \
+%endif
+%if "%{_target_platform}" != "%{_host}"
+ --enable-symvers=gnu \
+ --with-local-prefix=/usr/%{_target_platform} \
+%else
+ --with-slibdir=$slibdir \
+%endif
+%endif
+ $ADDITIONAL_OPTS
+
+# --with-headers=yes \
+# --with-headers=/usr/%{_target_platform}/include \
+
+%if "%{_target_platform}" != "%{_build}"
+ make %{?_smp_mflags} CFLAGS='' LIBCFLAGS='-g -O2' \
+ LIBCXXFLAGS='-g -O2 -fno-implicit-templates' all \
+%ifarch x86_64
+ CXXCPP=%{_libdir}/cpp
+%endif
+
+%else
+ make %{?_smp_mflags} CFLAGS='-O -I/usr/include/freetype2' LIBCFLAGS='-g -O2' \
+ LIBCXXFLAGS='-g -O2 -fno-implicit-templates'
+ #bootstrap
+%endif
+%if "%{disable_doc}" != "1"
+ make pdf
+%endif
+
+%endif # stage1 = 1
+
+%install
+[ "%{buildroot}" != / ] && rm -rf "%{buildroot}"
+
+cd ../%{name}-build
+make DESTDIR=%{buildroot} install
+
+%if "%{_target_platform}" == "%{_host}"
+# make target platform binaries symlinks to avoid binary duplicates
+for p in gcc-%{version} gcc gcc-ar gcc-nm gcc-ranlib c++ g++ gcj; do
+ rm -f %{buildroot}%{_bindir}/%{_target_platform}-$p
+done
+
+ln -s gcc %{buildroot}%{_bindir}/%{_target_platform}-gcc-%{version}
+
+for p in gcc gcc-ar gcc-nm gcc-ranlib cc gcov c++ g++ gcj; do
+ ln -s $p %{buildroot}%{_bindir}/%{_target_platform}-$p
+done
+
+# create symlinks
+# mkdir -p %{buildroot}/%{_lib}
+# ln -s ../usr/bin/cpp %{buildroot}/%{_lib}/cpp
+ln -s ../bin/cpp %{buildroot}%{_libdir}
+ln -s gcc %{buildroot}/usr/bin/cc
+
+#
+# Documentation
+#
+%if "%{disable_java}" != "1"
+mkdir -p ../gcc-%{version}%{?gcc_extraver}/rpm.doc/boehm-gc
+mkdir -p ../gcc-%{version}%{?gcc_extraver}/rpm.doc/libjava
+#(cd ../gcc-%{version}%{?gcc_extraver}/boehm-gc; for i in ChangeLog*; do
+# cp -p $i ../rpm.doc/boehm-gc/$i.gc
+#done)
+(cd ../gcc-%{version}%{?gcc_extraver}/libjava; for i in README THANKS COPYING ChangeLog; do
+ cp -p $i ../rpm.doc/libjava/$i.libjava
+done)
+(cd ../gcc-%{version}%{?gcc_extraver}/libjava;
+ cp -p LIBGCJ_LICENSE ../rpm.doc/libjava/LICENSE.libjava)
+
+make DESTDIR=%{buildroot} -C %{_target_platform}/libjava install-src.zip
+
+# FIXME: install precompiled ecj library (should come from Eclipse that is
+# currently missing in the distribution
+install -m0755 %{SOURCE1} %{buildroot}%{_datadir}/java/ecj.jar
+install -m0755 %{SOURCE2} %{buildroot}%{_bindir}/ecj1
+%endif
+#
+# PDF gfortran documentation
+#
+#(cd ../gcc-%{version}%{?gcc_extraver}/gcc/fortran;
+# texi2dvi -p -t @afourpaper -t @finalout -I ../doc/include -I ../../../gcc-build/gcc gfortran.texi)
+
+#
+# copy PDF gcc documentation to builddir for use with %doc
+#
+%if "%{disable_doc}" != "1"
+cp gcc/doc/*.pdf %{_builddir}/gcc-%{version}%{?gcc_extraver}/gcc/doc/
+%endif
+
+# FIXME: since 4.5.0 this file causes an annoying warning with ldconfig if installed in /usr/lib
+mkdir -p %{buildroot}%{_datadir}/gdb/auto-load/%{_libdir}
+mv %{buildroot}%{_libdir}/libstdc++.so.*-gdb.py %{buildroot}%{_datadir}/gdb/auto-load/%{_libdir}/
+%ifarch x86_64
+# fix for 32bit multilib build
+mkdir -p %{buildroot}%{_datadir}/gdb/auto-load/%{_prefix}/lib
+mv %{buildroot}%{_prefix}/lib/libstdc++.so.*-gdb.py %{buildroot}%{_datadir}/gdb/auto-load/%{_prefix}/lib/
+%endif
+
+(cd ../gcc-%{version}%{?gcc_extraver}
+%find_lang gcc
+%find_lang cpplib
+%find_lang libstdc++
+)
+
+#(cd ../gcc-%{version}%{?gcc_extraver}/gcc/doc;
+# for file in gcc.texi cpp.texi cppinternals.texi; do
+# texi2dvi -p -t @afourpaper -t @finalout -I ./include -I ../../../gcc-build/gcc $file
+#done)
+
+# fix permissions
+#chmod 755 %{buildroot}/%{_lib}/libgcc_s.so.1
+#cp gcc/doc/*.pdf ../gcc-%{version}%{?gcc_extraver}/gcc/doc/
+
+%else # target_platform != host
+ rm -rf %{buildroot}%{_infodir}/*
+ rm -rf %{buildroot}%{_mandir}/man7/{fsf-funding.*,gfdl.*,gpl.*}
+ rm -rf %{buildroot}%{_datadir}/locale/*
+ rm -rf %{buildroot}%{_datadir}/gcc-%{version}/python/libstdcxx/*
+ # FIXME: since 5.2.0
+ rm -rf %{buildroot}%{_libdir}/libcc1.*
+%endif
+# remove ffi provided by external package
+rm -f %{buildroot}%{_libdir}/libffi*
+rm -f %{buildroot}%{_libdir}/nof/libffi*
+rm -f %{buildroot}%{_mandir}/man3/ffi*.3*
+rm -f %{buildroot}%{_infodir}/libffi.info*
+
+# don't strip libraries for avr
+%if "%{target_cpu}" == "avr"
+find %{buildroot}%{_libdir}/gcc -name lib*.a -exec chmod -w {} \;
+%endif
+
+# Legacy for java and fortran only
+rm -rf %{buildroot}%{_includedir}/libiberty
+rm -f %{buildroot}%{_prefix}/lib/libsanitizer.spec
+rm -f %{buildroot}%{_prefix}/lib/libsupc++.*
+rm -f %{buildroot}%{_prefix}/lib/lib*san.*
+rm -f %{buildroot}%{_libdir}/libsanitizer.spec
+rm -f %{buildroot}%{_libdir}/lib*san.*
+rm -f %{buildroot}%{_prefix}/lib/libquadmath.*
+rm -f %{buildroot}%{_libdir}/libquadmath.*
+rm -f %{buildroot}%{_infodir}/libquadmath.*
+
+%clean
+[ "%{buildroot}" != / ] && rm -rf "%{buildroot}"
+
+%post -n lib%{name} -p /sbin/ldconfig
+%postun -n lib%{name} -p /sbin/ldconfig
+
+%post -n %{libstdcxx_name} -p /sbin/ldconfig
+%postun -n %{libstdcxx_name} -p /sbin/ldconfig
+
+%post -n %{libgcj_name} -p /sbin/ldconfig
+%postun -n %{libgcj_name} -p /sbin/ldconfig
+
+%post -n libgfortran3 -p /sbin/ldconfig
+%postun -n libgfortran3 -p /sbin/ldconfig
+
+%post -n libquadmath -p /sbin/ldconfig
+%postun -n libquadmath -p /sbin/ldconfig
+
+%post -n libatomic -p /sbin/ldconfig
+%postun -n libatomic -p /sbin/ldconfig
+
+%post -n libasan -p /sbin/ldconfig
+%postun -n libasan -p /sbin/ldconfig
+
+%post -n liblsan -p /sbin/ldconfig
+%postun -n liblsan -p /sbin/ldconfig
+
+%post doc
+%install_info cppinternals.info
+%install_info gcc.info
+%install_info gccinstall.info
+%install_info gccint.info
+%if "%{disable_java}" != "1"
+%install_info gcj.info
+%endif
+%if "%{disable_fortran}" != "1"
+%install_info gfortran.info
+%endif
+:
+
+%preun doc
+%uninstall_info cppinternals.info
+%uninstall_info gcc.info
+%uninstall_info gccinstall.info
+%uninstall_info gccint.info
+%uninstall_info gcj.info
+%uninstall_info gfortran.info
+:
+
+
+%if "%{_target_platform}" == "%{_host}"
+
+#
+# C Language and base tools and libraries
+#
+%files -f gcc.lang
+%defattr(-,root,root)
+%{_bindir}/cc
+%{_bindir}/gcc
+%{_bindir}/gcc-ar
+%{_bindir}/gcc-nm
+%{_bindir}/gcc-ranlib
+%{_bindir}/gcov
+%{_bindir}/gcov-dump
+%{_bindir}/gcov-tool
+%{_bindir}/%{_target_platform}-cc
+%{_bindir}/%{_target_platform}-gcc-%{version}
+%{_bindir}/%{_target_platform}-gcc
+%{_bindir}/%{_target_platform}-gcc-ar
+%{_bindir}/%{_target_platform}-gcc-nm
+%{_bindir}/%{_target_platform}-gcc-ranlib
+%{_bindir}/%{_target_platform}-gcov
+%dir %{_libdir}/gcc
+%{_libdir}/gcc/*
+%ifarch x86_64
+%exclude %{_libdir}/gcc/%{_target_platform}/%{version}/32/*
+%endif
+%dir %{_prefix}/libexec/gcc/%{_target_platform}/%{version}
+%{_prefix}/libexec/gcc/%{_target_platform}/%{version}/*
+
+%{_datadir}/gcc-%{version}/python/libstdcxx/__init__.py
+%{_datadir}/gcc-%{version}/python/libstdcxx/v6/__init__.py
+%{_datadir}/gcc-%{version}/python/libstdcxx/v6/printers.py
+%{_mandir}/man1/gcc.1.*
+%{_mandir}/man1/gcov*.1.*
+%{_mandir}/man7/fsf-funding.7.*
+%{_mandir}/man7/gfdl.7.*
+%{_mandir}/man7/gpl.7.*
+%doc gcc/{README*,*ChangeLog*}
+%if "%{disable_libs}" != "1"
+%exclude %{_libdir}/gcc/%{_target_platform}/%{version}/include/objc
+%exclude %{_libdir}/gcc/%{_target_platform}/%{version}/include/ssp
+%endif
+%if "%{_target_platform}" == "%{_build}"
+%exclude %{_libdir}/gcc/%{_target_platform}/%{version}/include/gcj/libgcj-config.h
+%exclude %{_libdir}/gcc/%{_target_platform}/%{version}/include/jawt.h
+%exclude %{_libdir}/gcc/%{_target_platform}/%{version}/include/jawt_md.h
+%exclude %{_libdir}/gcc/%{_target_platform}/%{version}/include/jni.h
+%exclude %{_libdir}/gcc/%{_target_platform}/%{version}/include/jvmpi.h
+%endif
+
+%files -n lib%{name}
+%defattr(-,root,root)
+%{_libdir}/libgcc*
+%ifarch ppc
+%{_libdir}/nof/libgcc*
+%endif
+
+%files cpp -f cpplib.lang
+%defattr(-,root,root)
+%{_libdir}/cpp
+%{_bindir}/cpp
+%{_mandir}/man1/cpp.1*
+%if "%{_target_platform}" == "%{_build}"
+%{_infodir}/cp-tools.info.*
+%endif
+
+%if "%{disable_libs}" != "1"
+%files -n libiberty-devel
+%defattr(-,root,root)
+%dir %{_includedir}/libiberty
+%{_includedir}/libiberty/*.h
+%{_libdir}/libiberty.a
+#%{_prefix}/%{_target_platform}/%{_lib}/libiberty.a
+#%{_libdir}/nof/libiberty.a
+#%{_prefix}/%{_target_platform}/%{_lib}/nof/libiberty.a
+
+%files -n libcc1
+%defattr(-,root,root)
+%{_libdir}/libcc1.so.*
+
+%files -n libcc1-devel
+%defattr(-,root,root)
+%{_libdir}/libcc1.la
+%{_libdir}/libcc1.so
+
+%files -n libitm
+%defattr(-,root,root)
+%{_libdir}/libitm.so.*
+
+%files -n libitm-devel
+%defattr(-,root,root)
+%{_libdir}/libitm.a
+%{_libdir}/libitm.la
+%{_libdir}/libitm.so
+%{_libdir}/libitm.spec
+%{_infodir}/libitm.info.gz
+
+%files -n libgomp
+%defattr(-,root,root)
+%{_libdir}/libgomp.so.*
+#%{_libdir}/libgomp-plugin-host_nonshm.so.*
+%ifarch ppc
+%{_libdir}/nof/libgomp.so.*
+%endif
+
+%files -n libgomp-devel
+%defattr(-,root,root)
+%{_libdir}/libgomp.a
+%{_libdir}/libgomp.la
+%{_libdir}/libgomp.so
+#%{_libdir}/libgomp-plugin-host_nonshm.la
+#%{_libdir}/libgomp-plugin-host_nonshm.so
+%{_libdir}/libgomp.spec
+%ifarch ppc
+%{_libdir}/nof/libgomp.a
+%{_libdir}/nof/libgomp.la
+%{_libdir}/nof/libgomp.so
+%{_libdir}/nof/libgomp.spec
+%endif
+%{_datadir}/info/libgomp.info.gz
+
+%files -n libobjc
+%defattr(-,root,root)
+%{_libdir}/libobjc.so.*
+%ifarch ppc
+%{_libdir}/nof/libobjc.so.*
+%endif
+
+%files -n libobjc-devel
+%defattr(-,root,root)
+%{_libdir}/libobjc.a
+%{_libdir}/libobjc.la
+%{_libdir}/libobjc.so
+%ifarch ppc
+%{_libdir}/nof/libobjc.a
+%{_libdir}/nof/libobjc.la
+%{_libdir}/nof/libobjc.so
+%endif
+%dir %{_libdir}/gcc/%{_target_platform}/%{version}/include/objc
+%{_libdir}/gcc/%{_target_platform}/%{version}/include/objc/*
+
+%files -n libssp
+%defattr(-,root,root)
+%{_libdir}/libssp.so.*
+%ifarch ppc
+%{_libdir}/nof/libssp.so.*
+%endif
+
+%files -n libssp-devel
+%defattr(-,root,root)
+%{_libdir}/libssp.a
+%{_libdir}/libssp.la
+%{_libdir}/libssp.so
+%{_libdir}/libssp_nonshared.a
+%{_libdir}/libssp_nonshared.la
+%ifarch ppc
+%{_libdir}/nof/libssp.a
+%{_libdir}/nof/libssp.la
+%{_libdir}/nof/libssp.so
+%{_libdir}/nof/libssp_nonshared.a
+%{_libdir}/nof/libssp_nonshared.la
+%endif
+%dir %{_libdir}/gcc/%{_target_platform}/%{version}/include/ssp
+%{_libdir}/gcc/%{_target_platform}/%{version}/include/ssp/*
+
+%files -n libasan
+%defattr(-,root,root)
+%{_libdir}/libasan.so.*
+%ifarch x86_64
+%{_libdir}/libtsan.so.*
+%endif
+
+%files -n libasan-devel
+%defattr(-,root,root)
+%{_libdir}/libasan.a
+%{_libdir}/libasan.la
+%{_libdir}/libasan.so
+%{_libdir}/libasan_preinit.o
+%ifarch x86_64
+%{_libdir}/libtsan.a
+%{_libdir}/libtsan.la
+%{_libdir}/libtsan.so
+%endif
+
+%ifarch x86_64
+%files -n liblsan
+%defattr(-,root,root)
+%{_libdir}/liblsan.so.*
+
+%files -n liblsan-devel
+%defattr(-,root,root)
+%{_libdir}/liblsan.a
+%{_libdir}/liblsan.la
+%{_libdir}/liblsan.so
+%endif
+
+%files -n libatomic
+%defattr(-,root,root)
+%{_libdir}/libatomic.so.*
+
+%files -n libatomic-devel
+%defattr(-,root,root)
+%{_libdir}/libatomic.a
+%{_libdir}/libatomic.la
+%{_libdir}/libatomic.so
+
+%ifnarch arm
+%files -n libcilkrts
+%defattr(-,root,root)
+%{_libdir}/libcilkrts.so.*
+
+%files -n libcilkrts-devel
+%defattr(-,root,root)
+%{_libdir}/libcilkrts.a
+%{_libdir}/libcilkrts.la
+%{_libdir}/libcilkrts.so
+%{_libdir}/libcilkrts.spec
+%endif
+
+%ifnarch arm
+%files -n libmpx
+%defattr(-,root,root)
+%{_libdir}/libmpx.so.*
+%{_libdir}/libmpxwrappers.so.*
+
+%files -n libmpx-devel
+%defattr(-,root,root)
+%{_libdir}/libmpx.a
+%{_libdir}/libmpx.la
+%{_libdir}/libmpx.so
+%{_libdir}/libmpx.spec
+%{_libdir}/libmpxwrappers.a
+%{_libdir}/libmpxwrappers.la
+%{_libdir}/libmpxwrappers.so
+%endif
+
+%files -n libubsan
+%defattr(-,root,root)
+%{_libdir}/libubsan.so.*
+
+%files -n libubsan-devel
+%defattr(-,root,root)
+%{_libdir}/libubsan.a
+%{_libdir}/libubsan.la
+%{_libdir}/libubsan.so
+%{_libdir}/libsanitizer.spec
+
+%ifnarch arm
+%files -n libquadmath
+%defattr(-,root,root)
+%{_libdir}/libquadmath.so.*
+
+%files -n libquadmath-devel
+%defattr(-,root,root)
+%{_libdir}/libquadmath.a
+%{_libdir}/libquadmath.la
+%{_libdir}/libquadmath.so
+%endif
+
+%endif
+
+#%files -n libvtv
+#%defattr(-,root,root)
+#%{_libdir}/libvtv.so.*
+
+#%files -n libvtv-devel
+#%defattr(-,root,root)
+#%{_libdir}/libvtv.a
+#%{_libdir}/libvtv.la
+#%{_libdir}/libvtv.so
+
+%if "%{disable_cpp}" != "1"
+#
+# C++ language
+#
+%files c++ -f libstdc++.lang
+%defattr(-,root,root)
+%{_bindir}/c++
+%{_bindir}/g++
+%{_bindir}/%{_target_platform}-c++
+%{_bindir}/%{_target_platform}-g++
+%{_datadir}/gcc-%{version}/python/libstdcxx/v6/xmethods.py
+%{_mandir}/man1/g++.1.*
+%{_libdir}/libstdc++.so.*
+%{_datadir}/gdb/auto-load/%{_libdir}/libstdc++.so.*
+%{_libdir}/libstdc++.*a
+%{_libdir}/libstdc++.so
+%ifarch x86_64
+%{_libdir}/libsupc++.*a
+%endif
+%{_libdir}/libstdc++fs.*a
+%dir %{_includedir}/c++
+%{_includedir}/c++/*
+%exclude %{_includedir}/c++/%{version}/gcj
+%exclude %{_includedir}/c++/%{version}/gnu/awt/*
+%exclude %{_includedir}/c++/%{version}/gnu/classpath
+%exclude %{_includedir}/c++/%{version}/gnu/gcj/*
+%exclude %{_includedir}/c++/%{version}/gnu/java/*
+%exclude %{_includedir}/c++/%{version}/gnu/javax/*
+%exclude %{_includedir}/c++/%{version}/java
+%exclude %{_includedir}/c++/%{version}/javax
+%endif
+#
+#%files -n %{libstdcxx_name}-debug
+#%defattr(-,root,root)
+#%{_datadir}/gdb/auto-load/%{_libdir}/libstdc++.so.*
+#
+#%files -n %{libstdcxx_name}-devel
+#%defattr(-,root,root)
+#%{_libdir}/libstdc++.*a
+#%{_libdir}/libstdc++.so
+#%{_libdir}/libsupc++.*a
+#%{_libdir}/libstdc++fs.*a
+#%ifarch ppc
+#%{_libdir}/nof/libstdc++.*a
+#%{_libdir}/nof/libstdc++.so
+#%{_libdir}/nof/libsupc++.*a
+#%endif
+#%dir %{_includedir}/c++
+#%{_includedir}/c++/*
+#%if "%{_target_platform}" == "%{_build}"
+#%exclude %{_includedir}/c++/%{version}/gcj/*
+#%exclude %{_includedir}/c++/%{version}/gnu/awt/*
+#%exclude %{_includedir}/c++/%{version}/gnu/classpath/*
+#%exclude %{_includedir}/c++/%{version}/gnu/gcj/*
+#%exclude %{_includedir}/c++/%{version}/gnu/java/*
+#%exclude %{_includedir}/c++/%{version}/java/*
+#%exclude %{_includedir}/c++/%{version}/javax/*
+#%endif
+##%doc libstdc++-v3/{ChangeLog*,README*,doc/html/}
+#%endif "%{disable_cpp}
+
+%if "%{disable_java}" != "1"
+#
+# Java language
+#
+%files java
+%defattr(-,root,root)
+#%{_bindir}/addr2name.awk
+%{_bindir}/aot-compile
+%{_bindir}/ecj1
+%{_bindir}/gcj
+%{_bindir}/gcjh
+%{_bindir}/jcf-dump
+#%{_bindir}/jv-scan
+#%{_bindir}/%{_target_platform}-gcjh
+%{_bindir}/%{_target_platform}-gcj
+%{_bindir}/gij
+%{_bindir}/gc-analyze
+%{_bindir}/gcj-dbtool
+%{_bindir}/gappletviewer
+%{_bindir}/gjar
+%{_bindir}/gjavah
+#%if "%{disable_gjdoc}" != "1"
+%{_bindir}/gjdoc
+#%endif
+%{_bindir}/gnative2ascii
+%{_bindir}/gorbd
+%{_bindir}/gjarsigner
+%{_bindir}/gkeytool
+%{_bindir}/grmic
+%{_bindir}/grmid
+%{_bindir}/grmiregistry
+%{_bindir}/gserialver
+%{_bindir}/gtnameserv
+%{_bindir}/rebuild-gcj-db
+%{_datadir}/java/ecj.jar
+%{_datadir}/gcc-%{version}/python/libjava/aotcompile.py
+%{_datadir}/gcc-%{version}/python/libjava/classfile.py
+%{_mandir}/man1/aot-compile.1.*
+%{_mandir}/man1/gcj.1.*
+%{_mandir}/man1/gcjh.1.*
+#%{_mandir}/man1/gjnih.1.*
+%{_mandir}/man1/jcf-dump.1.*
+#%{_mandir}/man1/jv-scan.1.*
+%{_mandir}/man1/gij.1.*
+%{_mandir}/man1/gcj-dbtool.1.*
+%{_mandir}/man1/gappletviewer.1.*
+%{_mandir}/man1/gc-analyze.1.*
+%{_mandir}/man1/gjar.1.*
+%{_mandir}/man1/gjarsigner.1.*
+%{_mandir}/man1/gjavah.1.*
+%{_mandir}/man1/gjdoc.1.*
+%{_mandir}/man1/gkeytool.1.*
+%{_mandir}/man1/gnative2ascii.1.*
+%{_mandir}/man1/gorbd.1.*
+%{_mandir}/man1/grmid.1.*
+%{_mandir}/man1/gserialver.1.*
+%{_mandir}/man1/gtnameserv.1.*
+%{_mandir}/man1/rebuild-gcj-db.1.*
+
+%files -n %{libgcj_name}
+%defattr(-,root,root)
+%{_mandir}/man1/grmic.1.*
+%{_mandir}/man1/grmiregistry.1.*
+%dir %{_datadir}/java/
+%{_datadir}/java/libgcj-%{version}.jar
+%{_libdir}/logging.properties
+%{_libdir}/libgcj.so.*
+%{_libdir}/libgcj-tools.so.*
+%{_libdir}/libgcj_bc.so.*
+%{_libdir}/libgij.so.*
+%ifarch ppc
+%{_libdir}/nof/logging.properties
+%{_libdir}/nof/libgcj.so.*
+%{_libdir}/nof/libgcj-tools.so.*
+%{_libdir}/nof/libgcj_bc.so.*
+%{_libdir}/nof/libgij.so.*
+%endif
+%{_libdir}/gcj-%{version}*/classmap.db
+%{_libdir}/gcj-%{version}*/libjavamath.la
+%{_libdir}/gcj-%{version}*/libjavamath.so
+%{_libdir}/gcj-%{version}*/libjawt.la
+%{_libdir}/gcj-%{version}*/libjawt.so
+%if "%{disable_jack}" != "1"
+%{_libdir}/gcj-%{version}*/libgjsmdssi.la
+%{_libdir}/gcj-%{version}*/libgjsmdssi.so
+%endif
+%{_libdir}/gcj-%{version}*/libgjsmalsa.la
+%{_libdir}/gcj-%{version}*/libgjsmalsa.so
+%{_libdir}/gcj-%{version}*/libgtkpeer.la
+%{_libdir}/gcj-%{version}*/libgtkpeer.so
+%{_libdir}/gcj-%{version}*/libjvm.la
+%{_libdir}/gcj-%{version}*/libjvm.so
+%ifarch ppc
+%{_libdir}/nof/gcj-%{version}*/libjavamath.la
+%{_libdir}/nof/gcj-%{version}*/libjavamath.so
+%{_libdir}/nof/gcj-%{version}*/classmap.db
+%{_libdir}/nof/gcj-%{version}*/libgjsmalsa.la
+%{_libdir}/nof/gcj-%{version}*/libgjsmalsa.so
+%{_libdir}/nof/gcj-%{version}*/libjvm.a
+%{_libdir}/nof/gcj-%{version}*/libjvm.la
+%{_libdir}/nof/gcj-%{version}*/libjvm.so
+%endif
+%{_datadir}/java/libgcj-tools-%{version}.jar
+%config(noreplace) %{_libdir}/security/classpath.security
+%ifarch ppc
+%config(noreplace) %{_libdir}/nof/security/classpath.security
+%endif
+#%config(noreplace) %{_libdir}/security/libgcj.security
+#%doc libjava/{ChangeLog,COPYING,LIBGCJ_LICENSE,README,THANKS}
+
+%files -n %{libgcj_name}-devel
+%defattr(-,root,root)
+%{_bindir}/jv-convert
+%{_libdir}/libgcj.spec
+%{_libdir}/libgcj.la
+%{_libdir}/libgcj.so
+%{_libdir}/libgcj_bc.so
+%{_libdir}/libgij.la
+%{_libdir}/libgij.so
+%{_libdir}/libgcj-tools.la
+%{_libdir}/libgcj-tools.so
+%ifarch ppc
+%{_libdir}/nof/libgcj.la
+%{_libdir}/nof/libgcj.so
+%{_libdir}/nof/libgcj_bc.so
+%{_libdir}/nof/libgij.la
+%{_libdir}/nof/libgij.so
+%{_libdir}/nof/libgcj-tools.la
+%{_libdir}/nof/libgcj-tools.so
+%endif
+#%{_libdir}/lib-gnu-java-awt-peer-gtk.a
+#%{_libdir}/lib-gnu-java-awt-peer-gtk.la
+#%{_libdir}/lib-gnu-java-awt-peer-gtk.so
+%{_datadir}/java/src-%{version}.zip
+%{_libdir}/pkgconfig/libgcj-%{MAJver}.pc
+%{_mandir}/man1/jv-convert.1.*
+#%doc rpm.doc/boehm-gc/*
+#%doc rpm.doc/libjava/*
+%{_includedir}/c++/%{version}/gcj/*
+%{_includedir}/c++/%{version}/gnu/awt/*
+%{_includedir}/c++/%{version}/gnu/classpath
+%{_includedir}/c++/%{version}/gnu/gcj/*
+%{_includedir}/c++/%{version}/gnu/java/*
+%{_includedir}/c++/%{version}/gnu/javax/*
+#%{_includedir}/c++/%{version}/gnu/regexp/*
+%{_includedir}/c++/%{version}/java/*
+%{_includedir}/c++/%{version}/javax/*
+%{_libdir}/gcc/%{_target_platform}/%{version}/include/gcj/libgcj-config.h
+%{_libdir}/gcc/%{_target_platform}/%{version}/include/jawt.h
+%{_libdir}/gcc/%{_target_platform}/%{version}/include/jawt_md.h
+%{_libdir}/gcc/%{_target_platform}/%{version}/include/jni.h
+%{_libdir}/gcc/%{_target_platform}/%{version}/include/jvmpi.h
+%endif # disable_java != 1
+
+%if "%{disable_fortran}" != "1"
+#
+# Fortran language
+#
+%files fortran
+%defattr(-,root,root)
+%{_bindir}/gfortran
+%{_bindir}/%{_target_platform}-gfortran
+%{_libdir}/libgfortran.a
+%{_libdir}/libgfortran.la
+%{_libdir}/libgfortran.so
+%ifarch ppc
+%{_libdir}/nof/libgfortran.a
+%{_libdir}/nof/libgfortran.la
+%{_libdir}/nof/libgfortran.so
+%endif
+%{_mandir}/man1/gfortran.1.*
+%doc gcc/fortran/ChangeLog
+
+%files -n libgfortran3
+%defattr(-,root,root)
+%{_libdir}/libgfortran.so.*
+%{_libdir}/libgfortran.spec
+%ifarch ppc
+%{_libdir}/nof/libgfortran.so.*
+%endif
+%endif # disable_fortran != 1
+
+#
+# go language
+#
+%if "%{disable_go}" != "1"
+%files go
+%defattr(-,root,root)
+%{_bindir}/gccgo
+%{_bindir}/go
+%{_bindir}/gofmt
+%{_bindir}/%{_target_platform}-gccgo
+%{_infodir}/gccgo.info*
+%{_mandir}/man1/gccgo.1*
+%{_mandir}/man1/go.1*
+%{_mandir}/man1/gofmt.1*
+
+%files -n libgo
+%defattr(-,root,root)
+%{_libdir}/libgo.so.*
+%dir %{_libdir}/go/%{version}/%{_target_platform}
+%{_libdir}/go/%{version}/%{_target_platform}/*
+
+%files -n libgo-devel
+%defattr(-,root,root)
+%{_libdir}/libgo.a
+%{_libdir}/libgo.la
+%{_libdir}/libgo.so
+%{_libdir}/libgobegin.a
+%{_libdir}/libgolibbegin.a
+%{_libdir}/libnetgo.a
+%endif
+
+%if "%{disable_doc}" != "1"
+%files doc
+%defattr(-,root,root)
+%{_infodir}/cpp.info.*
+%{_infodir}/cppinternals.info.*
+%{_infodir}/gcc.info.*
+%{_infodir}/gccinstall.info.*
+%{_infodir}/gccint.info.*
+%if "%{disable_java}" != "1"
+%{_infodir}/gcj.info.*
+%doc gcc/doc/gcj.pdf
+%endif
+%if "%{disable_fortran}" != "1"
+%{_infodir}/gfortran.info.*
+%doc gcc/doc/gfortran.pdf
+%endif
+%if "%{disable_libs}" != "1"
+%{_infodir}/libquadmath.info.*
+%endif
+%doc gcc/doc/cpp.pdf
+%doc gcc/doc/cppinternals.pdf
+%doc gcc/doc/gccinstall.pdf
+%doc gcc/doc/gcc.pdf
+%doc gcc/doc/gccint.pdf
+%endif # "%{disable_doc}" != "1"
+
+#
+# Multilib
+#
+%ifarch x86_64
+%files -n %{name}-multilib
+%defattr(-,root,root)
+%dir %{_libdir}/gcc/%{_target_platform}/%{version}/32
+%{_libdir}/gcc/%{_target_platform}/%{version}/32/*
+%{_prefix}/lib/libgcc_s.so
+%{_prefix}/lib/libgcc_s.so.1
+#
+%{_prefix}/lib/libstdc++.*a
+%{_prefix}/lib/libstdc++.so
+%{_prefix}/lib/libstdc++.so.*
+%{_prefix}/lib/libstdc++fs.*a
+#
+%if "%{disable_libs}" != "1"
+%{_prefix}/lib/libasan.a
+%{_prefix}/lib/libasan.la
+%{_prefix}/lib/libasan.so
+%{_prefix}/lib/libasan.so.*
+%{_prefix}/lib/libasan_preinit.o
+%{_prefix}/lib/libatomic.a
+%{_prefix}/lib/libatomic.la
+%{_prefix}/lib/libatomic.so
+%{_prefix}/lib/libatomic.so.*
+%endif
+#
+#%{_prefix}/lib/gcj-*/*
+#%{_prefix}/lib/libgcj-tools.la
+#%{_prefix}/lib/libgcj-tools.so
+#%{_prefix}/lib/libgcj-tools.so.*
+#%{_prefix}/lib/libgcj.la
+#%{_prefix}/lib/libgcj.so
+#%{_prefix}/lib/libgcj.so.*
+#%{_prefix}/lib/libgcj_bc.so
+#%{_prefix}/lib/libgcj_bc.so.*
+#%{_prefix}/lib/libgij.la
+#%{_prefix}/lib/libgij.so
+#%{_prefix}/lib/libgij.so.*
+#%{_prefix}/lib/logging.properties
+#%{_prefix}/lib/security/classpath.security
+#%{_prefix}/lib/pkgconfig/libgcj-*.pc
+#
+%if "%{disable_fortran}" != "1"
+%{_prefix}/lib/libgfortran.a
+%{_prefix}/lib/libgfortran.la
+%{_prefix}/lib/libgfortran.so
+%{_prefix}/lib/libgfortran.so.*
+%{_prefix}/lib/libgfortran.spec
+%endif
+#
+# go
+#
+%if "%{disable_go}" != "1"
+%dir %{_prefix}/lib/go
+%dir %{_prefix}/lib/go/%{version}
+%dir %{_prefix}/lib/go/%{version}/%{_target_platform}
+%{_prefix}/lib/go/%{version}/%{_target_platform}/*
+%{_prefix}/lib/libgo.a
+%{_prefix}/lib/libgo.la
+%{_prefix}/lib/libgo.so
+%{_prefix}/lib/libgo.so.*
+%{_prefix}/lib/libgobegin.a
+%{_prefix}/lib/libgolibbegin.a
+%{_prefix}/lib/libnetgo.a
+%endif
+#
+#
+#
+%if "%{disable_libs}" != "1"
+%{_prefix}/lib/libgomp.a
+%{_prefix}/lib/libgomp.la
+%{_prefix}/lib/libgomp.so
+%{_prefix}/lib/libgomp.so.*
+%{_prefix}/lib/libgomp.spec
+#%{_prefix}/lib/libgomp-plugin-host_nonshm.la
+#%{_prefix}/lib/libgomp-plugin-host_nonshm.so
+#%{_prefix}/lib/libgomp-plugin-host_nonshm.so.*
+/usr/lib/libitm.a
+/usr/lib/libitm.la
+/usr/lib/libitm.so
+/usr/lib/libitm.so.*
+/usr/lib/libitm.spec
+/usr/lib/libmpx*.a
+/usr/lib/libmpx*.la
+/usr/lib/libmpx*.so
+/usr/lib/libmpx*.so.*
+/usr/lib/libmpx.spec
+/usr/lib/libobjc.a
+/usr/lib/libobjc.la
+/usr/lib/libobjc.so
+/usr/lib/libobjc.so.*
+/usr/lib/libssp.a
+/usr/lib/libssp.la
+/usr/lib/libssp.so
+/usr/lib/libssp.so.*
+/usr/lib/libssp_nonshared.a
+/usr/lib/libssp_nonshared.la
+/usr/lib/libsupc++.a
+/usr/lib/libsupc++.la
+/usr/lib/libcilkrts.a
+/usr/lib/libcilkrts.la
+/usr/lib/libcilkrts.so
+/usr/lib/libcilkrts.so.*
+/usr/lib/libcilkrts.spec
+/usr/lib/libquadmath.a
+/usr/lib/libquadmath.la
+/usr/lib/libquadmath.so
+/usr/lib/libquadmath.so.*
+/usr/lib/libsanitizer.spec
+/usr/lib/libubsan.a
+/usr/lib/libubsan.la
+/usr/lib/libubsan.so
+/usr/lib/libubsan.so.*
+%endif
+#/usr/lib/libvtv.a
+#/usr/lib/libvtv.la
+#/usr/lib/libvtv.so
+#/usr/lib/libvtv.so.*
+%{_datadir}/gdb/auto-load/usr/lib/libstdc++.so.*-gdb.py
+%endif
+
+%else
+#
+# Cross-platform single package
+#
+%files -n cross-%{_target_platform}-%{name}%{?bootstrap_append}
+%defattr(-,root,root)
+%{_bindir}/%{_target_platform}-*
+%if "%{_target_platform}" != "avr"
+%if "%{?stage1}" != "1"
+%{_prefix}/%{_target_platform}/include/*
+%if "%{target_cpu}" == "x86_64"
+%{_prefix}/%{_target_platform}/%{_lib}/*
+%else
+%{_prefix}/%{_target_platform}/lib/*
+%endif
+%endif
+#%{_prefix}/%{_target_platform}/%{_lib}/libgfortran.a
+#%{_prefix}/%{_target_platform}/%{_lib}/libgfortran.la
+#%{_prefix}/%{_target_platform}/%{_lib}/libobjc.a
+#%{_prefix}/%{_target_platform}/%{_lib}/libobjc.la
+%if "%{target_cpu}" == "ppc"
+%{_prefix}/%{_target_platform}/%{_lib}/nof/libgfortran.a
+%{_prefix}/%{_target_platform}/%{_lib}/nof/libgfortran.la
+%{_prefix}/%{_target_platform}/%{_lib}/nof/libobjc.a
+%{_prefix}/%{_target_platform}/%{_lib}/nof/libobjc.la
+%endif
+%endif
+%{_libdir}/gcc/%{_target_platform}/%{version}/*
+%if "%{target_cpu}" == "x86_64"
+%{_libexecdir}/gcc/%{_target_platform}/%{version}/*
+%else
+%{_prefix}/libexec/gcc/%{_target_platform}/%{version}/*
+%endif
+%{_mandir}/man1/%{_target_platform}-*
+%endif # cross-platform
+
+%changelog
+* Mon Apr 16 2018 Silvan Calarco 6.4.0-2mamba
+- rebuilt with fortran support for legacy libgfortran3 library
+
+* Sat Oct 21 2017 Silvan Calarco 6.4.0-1mamba
+- update to 6.4.0
+
+* Tue Oct 17 2017 Silvan Calarco 6.2.0-2mamba
+- legacy package (for java support only removed in gcc 7.1)
+
+* Wed Aug 24 2016 Automatic Build System 6.2.0-1mamba
+- automatic version update by autodist
+
+* Mon May 09 2016 Silvan Calarco 6.1.0-2mamba
+- patched for libgcj abi minor
+
+* Wed May 04 2016 Automatic Build System 6.1.0-1mamba
+- automatic version update by autodist
+
+* Fri Dec 11 2015 Automatic Build System 5.3.0-1mamba
+- automatic version update by autodist
+
+* Sat Nov 21 2015 Silvan Calarco 5.2.0-2mamba
+- rebuilt with go
+- move to %{_libdir} files formerly installed in /%{_lib}
+
+* Sun Aug 16 2015 Automatic Build System 5.2.0-1mamba
+- automatic version update by autodist
+
+* Thu Apr 09 2015 Silvan Calarco 4.9.2-2mamba
+- new target: arm-openmamba-linux-gnueabihf
+
+* Thu Oct 30 2014 Automatic Build System 4.9.2-1mamba
+- automatic version update by autodist
+
+* Sun Jul 27 2014 Automatic Build System 4.9.1-1mamba
+- automatic version update by autodist
+
+* Mon Jun 16 2014 Silvan Calarco 4.9.0-2mamba
+- apply upstream fixes to fix crashes seen in libQtScript after building Qt (seehttps://bugzilla.redhat.com/show_bug.cgi?id=1091482 )
+
+* Sat May 03 2014 Automatic Build System 4.9.0-1mamba
+- automatic version update by autodist
+
+* Wed Oct 16 2013 Automatic Build System 4.8.2-1mamba
+- automatic version update by autodist
+
+* Sat Jul 27 2013 Silvan Calarco 4.8.1-2mamba
+- add %{_target_platform}-cc link to cc
+- make %{_target_platform}-* symlink instead of binary duplicates
+- x86_64: fix moving out of libdir libstdc++.so.6.0.18-gdb.py for lib32 package
+
+* Tue Jun 04 2013 Automatic Build System 4.8.1-1mamba
+- automatic version update by autodist
+
+* Thu Mar 28 2013 Automatic Build System 4.8.0-1mamba
+- automatic version update by autodist
+
+* Tue Sep 25 2012 Silvan Calarco 4.7.2-2mamba
+- rebuild with stack protector support in cross-compilers (removed --disable-libssp)
+
+* Fri Sep 21 2012 Automatic Build System 4.7.2-1mamba
+- automatic update by autodist
+
+* Thu Jun 14 2012 Automatic Build System 4.7.1-1mamba
+- automatic version update by autodist
+
+* Mon Apr 02 2012 Automatic Build System 4.7.0-1mamba
+- automatic version update by autodist
+
+* Wed Oct 26 2011 Automatic Build System 4.6.2-1mamba
+- automatic version update by autodist
+
+* Wed Jun 29 2011 Automatic Build System 4.6.1-1mamba
+- automatic update by autodist
+
+* Fri Apr 01 2011 Automatic Build System 4.6.0-1mamba
+- automatic update by autodist
+
+* Fri Dec 17 2010 Automatic Build System 4.5.2-1mamba
+- automatic update to 4.5.2 by autodist
+
+* Fri Sep 24 2010 Silvan Calarco 4.5.1-2mamba
+- added obj-c++ and lto languages support
+- added patch to fix bootstrap build
+- added disable_java, disable_gjdoc, disable_jack build options
+- build c,objc,fortran in stage1 mode
+- don't provide libffi and libffi-devel in favour of external package (here it is used to embed it in gcj)
+
+* Sat Jul 31 2010 Automatic Build System 4.5.1-1mamba
+- automatic update to 4.5.1 by autodist
+
+* Tue Jul 20 2010 Silvan Calarco 4.5.0-4mamba
+- added libffi patch to support pkgconfig libffi.pc (as needed by pygobject)
+
+* Sun Jul 18 2010 Automatic Build System 4.5.0-3mamba
+- automatic rebuild by autodist
+
+* Sat May 29 2010 Silvan Calarco 4.5.0-2mamba
+- moved libstdc++.so.6.0.14-gdb.py for /usr/lib to gdb python dir to prevent ldconfig warning
+
+* Sun May 09 2010 Automatic Build System 4.5.0-1mamba
+- automatic update to 4.5.0 by autodist
+
+* Sat Apr 17 2010 Silvan Calarco 4.4.3-2mamba
+- modified to use standard rpm platform variables
+
+* Thu Jan 21 2010 Automatic Build System 4.4.3-1mamba
+- automatic update to 4.4.3 by autodist
+
+* Thu Oct 15 2009 Automatic Build System 4.4.2-1mamba
+- automatic update to 4.4.2 by autodist
+
+* Sat Jul 25 2009 Automatic Build System 4.4.1-1mamba
+- automatic update to 4.4.1 by autodist
+
+* Tue Jun 30 2009 Automatic Build System 4.4.0-4mamba
+- added pr39543 patch (fixes mplayer build)
+
+* Sat May 23 2009 Automatic Build System 4.4.0-3mamba
+- automatic rebuild by autodist
+
+* Fri Apr 24 2009 Automatic Build System 4.4.0-2mamba
+- automatic rebuild by autodist
+
+* Wed Apr 22 2009 Automatic Build System 4.4.0-1mamba
+- automatic update to 4.4.0 by autodist
+
+* Thu Apr 16 2009 Silvan Calarco 4.3.3-2mamba
+- added patch to disable fixincludes script
+
+* Sat Jan 31 2009 Silvan Calarco 4.3.3-1mamba
+- automatic update by autodist
+
+* Fri Sep 12 2008 Silvan Calarco 4.3.2-2mamba
+- added ecj.jar and /usr/bin/ecj1 bytecode interpreter wrapper from eclipse
+- gcc-fortran: added requirement for exact release of gcc
+
+* Sat Aug 30 2008 Silvan Calarco 4.3.2-1mamba
+- update to 4.3.2
+
+* Thu Jul 10 2008 Silvan Calarco 4.2.4-3mamba
+- set correct path for current java-gcj-compat environment
+- libgcj4-devel: don't obsolete libgcj3-devel and provide libgcj-devel
+- libgcj4: provide libgcj
+
+* Mon Jul 07 2008 Silvan Calarco 4.2.4-2mamba
+- added shared-openmp patch to allow dlopen of libgomp
+- gcc-cpp: added requirement for gcc
+
+* Wed Jun 04 2008 Silvan Calarco 4.2.4-1mamba
+- update to 4.2.4
+
+* Mon Dec 10 2007 Silvan Calarco 4.2.2-1mamba
+- update to 4.2.2
+
+* Mon Jul 23 2007 Silvan Calarco 4.2.1-1mamba
+- update to 4.2.1
+- libstdcxx: provide libstdc++
+
+* Wed May 16 2007 Silvan Calarco 4.2.0-1mamba
+- update to 4.2.0
+- use make pdf to build pdf documentation
+
+* Thu Mar 08 2007 Silvan Calarco 4.1.2-1qilnx
+- update to version 4.1.2 by autospec
+
+* Tue Aug 22 2006 Silvan Calarco 4.1.1-2qilnx
+- added arm-softfloat target support (multilib libgcc support)
+
+* Tue Jun 06 2006 Silvan Calarco 4.1.1-1qilnx
+- update to version 4.1.1 by autospec
+- added arm platform support
+- added support for stage1 build with autodist
+
+* Mon Nov 14 2005 Silvan Calarco 4.0.2-5qilnx
+- added patch to bug #24109 (see http://gcc.gnu.org/bugzilla/show_bug.cgi?id=24109)
+
+* Tue Oct 25 2005 Silvan Calarco 4.0.2-4qilnx
+- add libjava patch to java.awt.Window backported from Classpath 0.18 for ooo2
+
+* Mon Oct 24 2005 Silvan Calarco 4.0.2-3qilnx
+- add a patch for java zextract, see http://gcc.gnu.org/bugzilla/show_bug.cgi?id=23617)
+
+* Fri Oct 21 2005 Davide Madrisan 4.0.2-2qilnx
+- install/uninstall info files
+- Silvan Calarco: add nofixincludes patch
+
+* Thu Sep 29 2005 Silvan Calarco 4.0.2-1qilnx
+- new version build
+
+* Fri Sep 23 2005 Silvan Calarco 4.0.1-5qilnx
+- added libgfortran sub-package
+- description of libffi corrected
+- removed requirements for gcc in gcc-java and gcc-fortran
+
+* Mon Aug 23 2005 Silvan Calarco 4.0.1-4qilnx
+- rebuilt with fixincludes script disabled
+
+* Sun Aug 22 2005 Silvan Calarco 4.0.1-3qilnx
+- first ppc full cross-platform compiler build
+
+* Wed Aug 17 2005 Silvan Calarco 4.0.1-2qilnx
+- rebuilt with standard gcc sources
+- removed Obsoletes field for some library
+
+* Mon Aug 15 2005 Silvan Calarco 4.0.1-1qilnx
+- first gcc4 build (using RedHat sources)
+
+* Thu Jul 21 2005 Silvan Calarco 3.4.4-2qilnx
+- build with host os = linux-gnu
+
+* Tue Jul 19 2005 Silvan Calarco 3.4.4-1qilnx
+- update to version 3.4.4 by autospec
+
+* Tue Jul 19 2005 Silvan Calarco 3.4.3-4qilnx
+- rebuild with default rpm target platform (i586-qilinux-linux)
+
+* Wed Apr 06 2005 Davide Madrisan 3.4.3-2qilnx
+- do not fix non standard include files found at building time
+- fixed package group
+- added missing symlinks
+
+* Tue Nov 15 2004 Davide Madrisan 3.4.3-1qilnx
+- updated to gcc-3.4.3
+
+* Wed Sep 15 2004 Davide Madrisan 3.4.2-2qilnx
+- libstdc++6-devel obsoletes libstdc++5-devel
+
+* Mon Sep 13 2004 Silvan Calarco 3.4.2-1qilnx
+- new version build
+- added x-includes-dir and x-library-dir configure paths
+
+* Mon Jun 21 2004 Silvan Calarco 3.4.0-1qilnx
+- new version build
+
+* Wed Apr 07 2004 Davide Madrisan 3.3.3-1qilnx
+- first build for 3.3.3
+- added cpp and g77, libf2c packages
+- added documentation in text and pdf formats
+
+* Mon Jun 16 2003 Silvan Calarco 3.2.3-1qilnx
+- first build for 3.2.3
+
+* Fri May 16 2003 Silvan Calarco 3.2.2-7qilnx
+- added libstdc++.so symlink in devel package
+
+* Mon Apr 24 2003 Silvan Calarco 3.2.2-6qilnx
+- added symlinks /usr/lib/cpp and /usr/bin/cc
+
+* Mon Apr 24 2003 Silvan Calarco 3.2.2-5qilnx
+- added symlink /lib/cpp
+
+* Mon Apr 17 2003 Silvan Calarco 3.2.2-4qilnx
+- fixed install problems by using make install DESTDIR=xxxx
+
+* Mon Apr 16 2003 Silvan Calarco 3.2.2-3qilnx
+- changed %%dir reference to system dirs with more specific file lists
+- added -doc package
+
+* Mon Apr 14 2003 Silvan Calarco 3.2.2-2qilnx
+- changed all .bz2 occurences with *
+
+* Tue Apr 09 2003 Silvan Calarco 3.2.2-1qilnx
+- first build for 3.2.2