From e6a9b30300c5b49d97f5c397caa440128b44964b Mon Sep 17 00:00:00 2001 From: Silvan Calarco Date: Fri, 5 Jan 2024 22:38:13 +0100 Subject: [PATCH] rebuilt with fortran support for legacy libgfortran3 library [release 6.4.0-2mamba;Mon Apr 16 2018] --- README.md | 3 + gcc-4.0.2-BufferStrategy.patch | 299 +++ ...4.0.2-failure_with_compound_literals.patch | 57 + gcc-4.0.2-zextract.patch | 25 + gcc-4.1.1-arm-t-linux.patch | 50 + gcc-4.1.1-libgcc-softfloat-fix.patch | 12 + gcc-4.3.2-ecj1-wrapper | 5 + gcc-4.4.0-pr39543.patch | 298 +++ gcc-4.4.3-cross_build_fix.patch | 22 + gcc-4.5.0-no_fixincludes.patch | 12 + gcc-4.5.1-psignal_fix_bootstrap_build.patch | 12 + ...2-arm_define_ARM_PCS_and_ARM_PCS_VFP.patch | 17 + gcc-4.5.3-avr-new-devices.patch | 216 ++ gcc-4.8.0-libffi-texinfo.patch | 19 + gcc-4.9.0-upstream-fixes-1.patch | 102 + gcc-4.9.2-arm-lra-bootstrap.patch | 15 + gcc-5.2.0-libjava-disable-multilib.patch | 11 + gcc-6.1.0-gcj-remove-minor-handling.patch | 36 + gcc-6.4-glibc-2.26-libjava-context_t.patch | 24 + gcc-6.4-glibc-2.26-libsanitizer.patch | 160 ++ gcc-6.4-glibc-2.26-ucontext_t.patch | 119 + gcc-shared-openmp.patch | 14 + gcc4-java-nomulti.patch | 25 + gcc6.spec | 1936 +++++++++++++++++ 24 files changed, 3489 insertions(+) create mode 100644 gcc-4.0.2-BufferStrategy.patch create mode 100644 gcc-4.0.2-failure_with_compound_literals.patch create mode 100644 gcc-4.0.2-zextract.patch create mode 100644 gcc-4.1.1-arm-t-linux.patch create mode 100644 gcc-4.1.1-libgcc-softfloat-fix.patch create mode 100644 gcc-4.3.2-ecj1-wrapper create mode 100644 gcc-4.4.0-pr39543.patch create mode 100644 gcc-4.4.3-cross_build_fix.patch create mode 100644 gcc-4.5.0-no_fixincludes.patch create mode 100644 gcc-4.5.1-psignal_fix_bootstrap_build.patch create mode 100644 gcc-4.5.2-arm_define_ARM_PCS_and_ARM_PCS_VFP.patch create mode 100644 gcc-4.5.3-avr-new-devices.patch create mode 100644 gcc-4.8.0-libffi-texinfo.patch create mode 100644 gcc-4.9.0-upstream-fixes-1.patch create mode 100644 gcc-4.9.2-arm-lra-bootstrap.patch create mode 100644 gcc-5.2.0-libjava-disable-multilib.patch create mode 100644 gcc-6.1.0-gcj-remove-minor-handling.patch create mode 100644 gcc-6.4-glibc-2.26-libjava-context_t.patch create mode 100644 gcc-6.4-glibc-2.26-libsanitizer.patch create mode 100644 gcc-6.4-glibc-2.26-ucontext_t.patch create mode 100644 gcc-shared-openmp.patch create mode 100644 gcc4-java-nomulti.patch create mode 100644 gcc6.spec 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