public inbox for git-commits@fedoraproject.org
help / color / mirror / Atom feed
From: Jakub Jelinek <jakub@fedoraproject.org>
To: git-commits@fedoraproject.org
Subject: [rpms/gcc] rhel-f41-base: auto-import gcc-4.1.0-0.3 on branch devel from gcc-4.1.0-0.3.src.rpm
Date: Mon, 29 Jun 2026 12:21:59 GMT [thread overview]
Message-ID: <178273571947.1.6046869841180288828.rpms-gcc-fea77518a0bf@fedoraproject.org> (raw)
A new commit has been pushed.
Repo : rpms/gcc
Branch : rhel-f41-base
Commit : fea77518a0bf2dc112cdb565d92fd5d64d3444b9
Author : Jakub Jelinek <jakub@fedoraproject.org>
Date : 2005-11-29T19:55:44+00:00
Stats : +2851/-2 in 13 file(s)
URL : https://src.fedoraproject.org/rpms/gcc/c/fea77518a0bf2dc112cdb565d92fd5d64d3444b9?branch=rhel-f41-base
Log:
auto-import gcc-4.1.0-0.3 on branch devel from gcc-4.1.0-0.3.src.rpm
---
diff --git a/.cvsignore b/.cvsignore
index d9fbffb..1994f71 100644
--- a/.cvsignore
+++ b/.cvsignore
@@ -1 +1 @@
-gcc-4.0.2-20051121.tar.bz2
+gcc-4.1.0-20051128.tar.bz2
diff --git a/gcc41-ada-pr18302.patch b/gcc41-ada-pr18302.patch
new file mode 100644
index 0000000..433b71b
--- /dev/null
+++ b/gcc41-ada-pr18302.patch
@@ -0,0 +1,75 @@
+gcc/ada/
+2004-11-28 James A. Morrison <ja2morri@csclub.uwaterloo.ca>
+
+ PR ada/18302
+ * Make-lang.in (check-gnat): Set EXPECT environment variable.
+
+testsuite/
+2005-05-18 Jakub Jelinek <jakub@redhat.com>
+
+ * ada/acats/run_all.sh: Filter out spawn line from target_bit.
+
+2004-11-28 James A. Morrison <ja2morri@csclub.uwaterloo.ca>
+
+ PR ada/18302
+ * ada/acats/run_all.sh (target_run): Run test through run_test.expect.
+ * ada/acats/run_test.expect: Expect script for ACATS tests.
+
+--- gcc/testsuite/ada/acats/run_all.sh (.../gcc-4_0-branch) (revision 107266)
++++ gcc/testsuite/ada/acats/run_all.sh (.../redhat/gcc-4_0-branch) (revision 107414)
+@@ -13,7 +13,8 @@
+ gnatflags="-gnatws"
+
+ target_run () {
+-$*
++ LD_LIBRARY_PATH=$ADA_INCLUDE_PATH${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH} \
++ $EXPECT -f $testdir/run_test.exp $1 > $2
+ }
+
+ # End of customization section.
+@@ -92,8 +93,8 @@
+
+ # Find out the size in bit of an address on the target
+ target_gnatmake $testdir/support/impbit.adb >> $dir/acats.log 2>&1
+-target_run $dir/support/impbit > $dir/support/impbit.out 2>&1
+-target_bit=`cat $dir/support/impbit.out`
++target_run $dir/support/impbit $dir/support/impbit.out 2>/dev/null
++target_bit=`egrep -v -e ^spawn $dir/support/impbit.out`
+ echo target_bit="$target_bit" >> $dir/acats.log
+
+ # Find out a suitable asm statement
+@@ -259,7 +260,7 @@
+ if [ ! -x $dir/tests/$chapter/$i/$binmain ]; then
+ sync
+ fi
+- target_run $dir/tests/$chapter/$i/$binmain > $dir/tests/$chapter/$i/${i}.log 2>&1
++ target_run $dir/tests/$chapter/$i/$binmain $dir/tests/$chapter/$i/${i}.log 2>&1
+ cd $dir/tests/$chapter/$i
+ cat ${i}.log >> $dir/acats.log
+ egrep -e '(==== |\+\+\+\+ |\!\!\!\! )' ${i}.log > /dev/null 2>&1
+--- gcc/testsuite/ada/acats/run_test.exp (.../gcc-4_0-branch) (revision 0)
++++ gcc/testsuite/ada/acats/run_test.exp (.../redhat/gcc-4_0-branch) (revision 107414)
+@@ -0,0 +1,13 @@
++#!/usr/bin/expect -f
++
++if {[info exists env(DEJAGNU_TIMEOUT)]} {
++ set timeout $env(DEJAGNU_TIMEOUT)
++} else {
++ set timeout 300
++}
++
++spawn $argv
++expect timeout {
++ send_user "Program timed out.\n"
++ exit 1
++}
+--- gcc/ada/Make-lang.in (.../gcc-4_0-branch) (revision 107266)
++++ gcc/ada/Make-lang.in (.../redhat/gcc-4_0-branch) (revision 107414)
+@@ -809,6 +809,7 @@
+ check-gnat:
+ test -d $(ACATSDIR) || mkdir -p $(ACATSDIR)
+ testdir=`cd ${srcdir}/${ACATSDIR}; ${PWD_COMMAND}`; \
++ EXPECT=${EXPECT} ; export EXPECT ; \
+ export testdir; cd $(ACATSDIR); $${testdir}/run_acats $(CHAPTERS)
+
+ .PHONY: check-gnat
diff --git a/gcc41-ada-tweaks.patch b/gcc41-ada-tweaks.patch
new file mode 100644
index 0000000..992ed65
--- /dev/null
+++ b/gcc41-ada-tweaks.patch
@@ -0,0 +1,67 @@
+2004-10-04 Jakub Jelinek <jakub@redhat.com>
+
+ * gnat_ugn.texi: Add : and . to direntry.
+ * gnat-style.texi: Change dircategory to GNU Ada tools.
+
+2005-02-08 Jakub Jelinek <jakub@redhat.com>
+
+ * Makefile.in (gnatlib-shared-default): Disallow dlopening of
+ libgnat.so.
+
+--- gcc/ada/gnat-style.texi (.../gcc-4_0-branch) (revision 107266)
++++ gcc/ada/gnat-style.texi (.../redhat/gcc-4_0-branch) (revision 107414)
+@@ -28,7 +28,7 @@
+ @setchapternewpage odd
+
+
+-@dircategory Programming
++@dircategory GNU Ada tools
+ @direntry
+ * gnat-style: (gnat-style). GNAT Coding Style
+ @end direntry
+--- gcc/ada/Makefile.in (.../gcc-4_0-branch) (revision 107266)
++++ gcc/ada/Makefile.in (.../redhat/gcc-4_0-branch) (revision 107414)
+@@ -1316,7 +1316,7 @@
+ LIBRARY_VERSION := $(LIB_VERSION)
+ endif
+
+-ifeq ($(strip $(filter-out powerpc% linux%,$(arch) $(osys))),)
++ifeq ($(strip $(filter-out powerpc% ppc% linux%,$(arch) $(osys))),)
+ LIBGNAT_TARGET_PAIRS = \
+ a-intnam.ads<a-intnam-linux.ads \
+ s-inmaop.adb<s-inmaop-posix.adb \
+@@ -1862,7 +1862,7 @@
+ THREAD_KIND="$(THREAD_KIND)" \
+ gnatlib
+ $(RM) rts/libgna*$(soext)
+- cd rts; ../../xgcc -B../../ -shared $(TARGET_LIBGCC2_CFLAGS) \
++ cd rts; ../../xgcc -B../../ -shared -Wl,-z,nodlopen $(TARGET_LIBGCC2_CFLAGS) \
+ -o libgnat$(hyphen)$(LIBRARY_VERSION)$(soext) \
+ $(GNATRTL_NONTASKING_OBJS) $(LIBGNAT_OBJS) \
+ $(SO_OPTS)libgnat$(hyphen)$(LIBRARY_VERSION)$(soext) \
+--- gcc/ada/gnat_ugn.texi (.../gcc-4_0-branch) (revision 107266)
++++ gcc/ada/gnat_ugn.texi (.../redhat/gcc-4_0-branch) (revision 107414)
+@@ -101,7 +101,7 @@
+ @settitle @value{EDITION} User's Guide @value{PLATFORM}
+ @dircategory GNU Ada tools
+ @direntry
+-* @value{EDITION} User's Guide (@value{FILE}) @value{PLATFORM}
++* @value{EDITION} User's Guide: (@value{FILE}). User's Guide for GNU Ada Tools.
+ @end direntry
+
+ @include gcc-common.texi
+--- gcc/ada/link.c (.../gcc-4_0-branch) (revision 107266)
++++ gcc/ada/link.c (.../redhat/gcc-4_0-branch) (revision 107414)
+@@ -164,9 +164,9 @@
+
+ #elif defined (linux)
+ const char *__gnat_object_file_option = "";
+-const char *__gnat_run_path_option = "-Wl,-rpath,";
+-char __gnat_shared_libgnat_default = STATIC;
+-int __gnat_link_max = 8192;
++const char *__gnat_run_path_option = "";
++char __gnat_shared_libgnat_default = SHARED;
++int __gnat_link_max = 131072;
+ unsigned char __gnat_objlist_file_supported = 1;
+ unsigned char __gnat_using_gnu_linker = 1;
+ const char *__gnat_object_library_extension = ".a";
diff --git a/gcc41-gnuc-rh-release.patch b/gcc41-gnuc-rh-release.patch
new file mode 100644
index 0000000..a755c48
--- /dev/null
+++ b/gcc41-gnuc-rh-release.patch
@@ -0,0 +1,50 @@
+2004-10-19 Jakub Jelinek <jakub@redhat.com>
+
+ * c-cppbuiltin.c (define__GNUC__): Also define __GNUC_RH_RELEASE__.
+
+--- gcc/c-cppbuiltin.c.jj 2004-10-07 21:27:38.000000000 +0200
++++ gcc/c-cppbuiltin.c 2004-10-19 11:41:50.000000000 +0200
+@@ -257,13 +257,13 @@ define__GNUC__ (void)
+ {
+ /* The format of the version string, enforced below, is
+ ([^0-9]*-)?[0-9]+[.][0-9]+([.][0-9]+)?([- ].*)? */
+- const char *q, *v = version_string;
++ const char *q, *v = version_string, *vstart, *vend;
+
+ while (*v && !ISDIGIT (*v))
+ v++;
+ gcc_assert (*v && (v <= version_string || v[-1] == '-'));
+
+- q = v;
++ vstart = q = v;
+ while (ISDIGIT (*v))
+ v++;
+ builtin_define_with_value_n ("__GNUC__", q, v - q);
+@@ -289,6 +289,27 @@ define__GNUC__ (void)
+ builtin_define_with_value_n ("__GNUC_PATCHLEVEL__", "0", 1);
+
+ gcc_assert (!*v || *v == ' ' || *v == '-');
++
++ vend = v;
++ v = strchr (v, '(');
++ if (v != NULL && strncmp (v + 1, "Red Hat ", 8) == 0)
++ {
++ v += 9;
++ if (strncmp (v, "Linux ", 6) == 0)
++ v += 6;
++
++ gcc_assert (strncmp (v, vstart, vend - vstart) == 0);
++ gcc_assert (v[vend - vstart] == '-');
++
++ v += vend - vstart + 1;
++ q = v;
++ gcc_assert (ISDIGIT (*v));
++ while (ISDIGIT (*v))
++ v++;
++ builtin_define_with_value_n ("__GNUC_RH_RELEASE__", q, v - q);
++
++ gcc_assert (!*v || *v == ')' || *v == '.');
++ }
+ }
+
+ /* Define macros used by <stdint.h>. Currently only defines limits
diff --git a/gcc41-ia64-libunwind.patch b/gcc41-ia64-libunwind.patch
new file mode 100644
index 0000000..e4fdd61
--- /dev/null
+++ b/gcc41-ia64-libunwind.patch
@@ -0,0 +1,538 @@
+2004-11-27 Jakub Jelinek <jakub@redhat.com>
+
+ * config.gcc (ia64*-*-linux*): If native and libelf is installed,
+ use ia64/t-glibc-no-libunwind instead of the other t-*unwind*
+ fragments.
+ * config/ia64/t-glibc-no-libunwind: New file.
+ * config/ia64/change-symver.c: New file.
+ * config/ia64/unwind-ia64.c: If USE_SYMVER_GLOBAL and SHARED,
+ define _Unwind_* to __symverglobal_Unwind_*.
+ (alias): Undefine.
+ (symverglobal): Define. Use it on _Unwind_*.
+ * config/ia64/mkmap-symver-multi.awk: New file.
+ * config/ia64/libgcc-ia64-no-libunwind.ver: New file.
+
+--- gcc/config.gcc.jj 2004-10-04 08:55:44.000000000 -0400
++++ gcc/config.gcc 2004-11-13 05:23:50.000000000 -0500
+@@ -1185,9 +1185,16 @@ ia64*-*-freebsd*)
+ ;;
+ ia64*-*-linux*)
+ tm_file="${tm_file} dbxelf.h elfos.h svr4.h linux.h ia64/sysv4.h ia64/linux.h"
+- tmake_file="${tmake_file} ia64/t-ia64 t-libunwind ia64/t-glibc"
+- if test x$with_system_libunwind != xyes ; then
+- tmake_file="${tmake_file} t-libunwind-elf ia64/t-glibc-libunwind"
++ tmake_file="${tmake_file} ia64/t-ia64"
++ if test x${target} = x${host} && test x${target} = x${build} \
++ && grep gelf_getverdef /usr/include/gelf.h > /dev/null 2>&1 \
++ && test -f /usr/lib/libelf.so; then
++ tmake_file="${tmake_file} ia64/t-glibc-no-libunwind"
++ else
++ tmake_file="${tmake_file} t-libunwind ia64/t-glibc"
++ if test x$with_system_libunwind != xyes ; then
++ tmake_file="${tmake_file} t-libunwind-elf ia64/t-glibc-libunwind"
++ fi
+ fi
+ target_cpu_default="MASK_GNU_AS|MASK_GNU_LD"
+ extra_parts="crtbegin.o crtend.o crtbeginS.o crtendS.o crtfastmath.o"
+--- gcc/config/ia64/t-glibc-no-libunwind.jj 2004-02-18 10:27:36.000000000 -0500
++++ gcc/config/ia64/t-glibc-no-libunwind 2004-11-15 09:56:33.000000000 -0500
+@@ -0,0 +1,30 @@
++# Don't use system libunwind library on IA-64 GLIBC based system,
++# but make _Unwind_* symbols unversioned, so that created programs
++# are usable even when libgcc_s uses libunwind.
++LIB2ADDEH += $(srcdir)/config/ia64/fde-glibc.c
++SHLIB_MAPFILES += $(srcdir)/config/ia64/libgcc-ia64-no-libunwind.ver
++SHLIB_MKMAP = $(srcdir)/config/ia64/mkmap-symver-multi.awk
++
++SHLIB_LINK = $(GCC_FOR_TARGET) $(LIBGCC2_CFLAGS) -shared -nodefaultlibs \
++ -Wl,--soname=$(SHLIB_SONAME) \
++ -Wl,--version-script=$(SHLIB_MAP) \
++ -o $(SHLIB_DIR)/$(SHLIB_SONAME).tmp @multilib_flags@ $(SHLIB_OBJS) -lc && \
++ rm -f $(SHLIB_DIR)/$(SHLIB_SOLINK) && \
++ if [ -f $(SHLIB_DIR)/$(SHLIB_SONAME) ]; then \
++ mv -f $(SHLIB_DIR)/$(SHLIB_SONAME) \
++ $(SHLIB_DIR)/$(SHLIB_SONAME).backup; \
++ else true; fi && \
++ gcc -O2 -o $(SHLIB_DIR)/$(SHLIB_SONAME).tweak \
++ $(srcdir)/config/ia64/change-symver.c -lelf && \
++ $(SHLIB_DIR)/$(SHLIB_SONAME).tweak $(SHLIB_DIR)/$(SHLIB_SONAME).tmp \
++ GCC_3.4.2 _GLOBAL_ \
++ _Unwind_GetGR _Unwind_RaiseException _Unwind_GetRegionStart _Unwind_SetIP \
++ _Unwind_GetIP _Unwind_GetLanguageSpecificData _Unwind_Resume \
++ _Unwind_DeleteException _Unwind_SetGR _Unwind_ForcedUnwind \
++ _Unwind_Backtrace _Unwind_FindEnclosingFunction _Unwind_GetCFA \
++ _Unwind_Resume_or_Rethrow _Unwind_GetBSP && \
++ rm -f $(SHLIB_DIR)/$(SHLIB_SONAME).tweak && \
++ mv $(SHLIB_DIR)/$(SHLIB_SONAME).tmp $(SHLIB_DIR)/$(SHLIB_SONAME) && \
++ $(LN_S) $(SHLIB_SONAME) $(SHLIB_DIR)/$(SHLIB_SOLINK)
++
++TARGET_LIBGCC2_CFLAGS += -DUSE_SYMVER_GLOBAL
+--- gcc/config/ia64/change-symver.c.jj 2004-02-18 10:27:36.000000000 -0500
++++ gcc/config/ia64/change-symver.c 2004-11-13 05:23:50.000000000 -0500
+@@ -0,0 +1,211 @@
++#define _GNU_SOURCE 1
++#define _FILE_OFFSET_BITS 64
++#include <endian.h>
++#include <errno.h>
++#include <error.h>
++#include <fcntl.h>
++#include <fnmatch.h>
++#include <gelf.h>
++#include <stdlib.h>
++#include <string.h>
++#include <unistd.h>
++
++int
++compute_veridx (const char *name, Elf *elf, Elf_Data *verd, GElf_Shdr *verd_shdr)
++{
++ if (strcmp (name, "_GLOBAL_") == 0)
++ return 1;
++
++ int cnt;
++ size_t offset = 0;
++ for (cnt = verd_shdr->sh_info; --cnt >= 0; )
++ {
++ GElf_Verdef defmem;
++ GElf_Verdef *def;
++ GElf_Verdaux auxmem;
++ GElf_Verdaux *aux;
++ unsigned int auxoffset;
++
++ /* Get the data at the next offset. */
++ def = gelf_getverdef (verd, offset, &defmem);
++ if (def == NULL)
++ break;
++
++ auxoffset = offset + def->vd_aux;
++ aux = gelf_getverdaux (verd, auxoffset, &auxmem);
++ if (aux == NULL)
++ break;
++
++ if (strcmp (name, elf_strptr (elf, verd_shdr->sh_link,
++ aux->vda_name)) == 0)
++ return def->vd_ndx;
++
++ /* Find the next offset. */
++ offset += def->vd_next;
++ }
++
++ return -1;
++}
++
++int
++main (int argc, char **argv)
++{
++ if (argc < 4)
++ error (1, 0, "Usage: change_symver library from_symver to_symver symbol...\nExample: change_symver libfoo.so FOO_1.0 *global* bar baz");
++
++ const char *fname = argv[1];
++
++ /* Open the file. */
++ int fd;
++ fd = open (fname, O_RDWR);
++ if (fd == -1)
++ error (1, errno, fname);
++
++ elf_version (EV_CURRENT);
++
++ /* Now get the ELF descriptor. */
++ Elf *elf = elf_begin (fd, ELF_C_READ_MMAP, NULL);
++ if (elf == NULL || elf_kind (elf) != ELF_K_ELF)
++ error (1, 0, "Couldn't open %s: %s", fname, elf_errmsg (-1));
++
++ size_t shstrndx;
++ /* Get the section header string table index. */
++ if (elf_getshstrndx (elf, &shstrndx) < 0)
++ error (1, 0, "cannot get shstrndx from %s", fname);
++
++ GElf_Ehdr ehdr_mem;
++ GElf_Ehdr *ehdr;
++
++ /* We need the ELF header in a few places. */
++ ehdr = gelf_getehdr (elf, &ehdr_mem);
++ if (ehdr == NULL)
++ error (1, 0, "couldn't get ELF headers %s: %s", fname, elf_errmsg (-1));
++
++ Elf_Scn *scn = NULL;
++ GElf_Shdr shdr_mem, verd_shdr, ver_shdr, dynsym_shdr;
++ Elf_Data *ver = NULL, *verd = NULL, *dynsym = NULL;
++
++ while ((scn = elf_nextscn (elf, scn)) != NULL)
++ {
++ GElf_Shdr *shdr = gelf_getshdr (scn, &shdr_mem);
++
++ if (shdr == NULL)
++ error (1, 0, "couldn't get shdr from %s", fname);
++
++ if ((shdr->sh_flags & SHF_ALLOC) != 0)
++ {
++ const char *name = elf_strptr (elf, shstrndx, shdr->sh_name);
++ Elf_Data **p;
++
++ if (strcmp (name, ".gnu.version") == 0)
++ {
++ p = &ver;
++ ver_shdr = *shdr;
++ }
++ else if (strcmp (name, ".gnu.version_d") == 0)
++ {
++ p = &verd;
++ verd_shdr = *shdr;
++ }
++ else if (strcmp (name, ".dynsym") == 0)
++ {
++ p = &dynsym;
++ dynsym_shdr = *shdr;
++ }
++ else
++ continue;
++
++ if (*p != NULL)
++ error (1, 0, "Two %s sections in %s", name, fname);
++ *p = elf_getdata (scn, NULL);
++ if (*p == NULL || elf_getdata (scn, *p) != NULL)
++ error (1, 0, "No data or non-contiguous data in %s section in %s",
++ name, fname);
++ }
++ }
++
++ if (ver == NULL || verd == NULL || dynsym == NULL)
++ error (1, 0, "Couldn't find one of the needed sections in %s", fname);
++
++ int from_idx = compute_veridx (argv[2], elf, verd, &verd_shdr);
++ if (from_idx == -1)
++ error (1, 0, "Could not find symbol version %s in %s", argv[2], fname);
++
++ int to_idx = compute_veridx (argv[3], elf, verd, &verd_shdr);
++ if (to_idx == -1)
++ error (1, 0, "Could not find symbol version %s in %s", argv[3], fname);
++
++ if (dynsym_shdr.sh_entsize != gelf_fsize (elf, ELF_T_SYM, 1, ehdr->e_version)
++ || dynsym_shdr.sh_size % dynsym_shdr.sh_entsize
++ || ver_shdr.sh_entsize != 2
++ || (ver_shdr.sh_size & 1)
++ || dynsym_shdr.sh_size / dynsym_shdr.sh_entsize != ver_shdr.sh_size / 2)
++ error (1, 0, "Unexpected sh_size or sh_entsize in %s", fname);
++
++ size_t nentries = ver_shdr.sh_size / 2;
++ size_t cnt;
++ GElf_Versym array[nentries];
++ for (cnt = 0; cnt < nentries; ++cnt)
++ {
++ GElf_Versym vsymmem;
++ GElf_Versym *vsym;
++
++ vsym = gelf_getversym (ver, cnt, &vsymmem);
++ if (vsym == NULL)
++ error (1, 0, "gelt_getversym failed in %s: %s", fname, elf_errmsg (-1));
++
++ array[cnt] = *vsym;
++ if (*vsym != from_idx)
++ continue;
++
++ GElf_Sym sym_mem;
++ GElf_Sym *sym;
++ sym = gelf_getsym (dynsym, cnt, &sym_mem);
++ if (sym == NULL)
++ error (1, 0, "gelt_getsym failed in %s: %s", fname, elf_errmsg (-1));
++
++ const char *name = elf_strptr (elf, dynsym_shdr.sh_link, sym->st_name);
++
++ int argn;
++ for (argn = 4; argn < argc; ++argn)
++ if (fnmatch (argv[argn], name, 0) == 0)
++ {
++ array[cnt] = to_idx;
++ break;
++ }
++ }
++
++ if (sizeof (array[0]) != 2)
++ abort ();
++
++#if __BYTE_ORDER == __LITTLE_ENDIAN
++ if (ehdr->e_ident[EI_DATA] == ELFDATA2LSB)
++ ;
++ else if (ehdr->e_ident[EI_DATA] == ELFDATA2MSB)
++#elif __BYTE_ORDER == __BIG_ENDIAN
++ if (ehdr->e_ident[EI_DATA] == ELFDATA2MSB)
++ ;
++ else if (ehdr->e_ident[EI_DATA] == ELFDATA2LSB)
++#else
++# error Unsupported endianity
++#endif
++ {
++ for (cnt = 0; cnt < nentries; ++cnt)
++ array[cnt] = ((array[cnt] & 0xff) << 8) | ((array[cnt] & 0xff00) >> 8);
++ }
++ else
++ error (1, 0, "Unknown EI_DATA %d in %s", ehdr->e_ident[EI_DATA], fname);
++
++ if (elf_end (elf) != 0)
++ error (1, 0, "couldn't close %s: %s", fname, elf_errmsg (-1));
++
++ if (lseek (fd, ver_shdr.sh_offset, SEEK_SET) != (off_t) ver_shdr.sh_offset)
++ error (1, 0, "failed to seek to %zd in %s", (size_t) ver_shdr.sh_offset,
++ fname);
++
++ if (write (fd, array, 2 * nentries) != (ssize_t) (2 * nentries))
++ error (1, 0, "failed to write .gnu.version section into %s", fname);
++
++ close (fd);
++ return 0;
++}
+--- gcc/config/ia64/unwind-ia64.c.jj 2004-10-04 08:55:57.000000000 -0400
++++ gcc/config/ia64/unwind-ia64.c 2004-11-15 09:07:45.000000000 -0500
+@@ -51,6 +51,51 @@
+ #define UNW_FLAG_UHANDLER(x) ((x) & 0x0000000200000000L)
+ #define UNW_LENGTH(x) ((x) & 0x00000000ffffffffL)
+
++#if defined (USE_SYMVER_GLOBAL) && defined (SHARED)
++extern _Unwind_Reason_Code __symverglobal_Unwind_Backtrace
++ (_Unwind_Trace_Fn, void *);
++extern void __symverglobal_Unwind_DeleteException
++ (struct _Unwind_Exception *);
++extern void * __symverglobal_Unwind_FindEnclosingFunction (void *);
++extern _Unwind_Reason_Code __symverglobal_Unwind_ForcedUnwind
++ (struct _Unwind_Exception *, _Unwind_Stop_Fn, void *);
++extern _Unwind_Word __symverglobal_Unwind_GetCFA
++ (struct _Unwind_Context *);
++extern _Unwind_Word __symverglobal_Unwind_GetBSP
++ (struct _Unwind_Context *);
++extern _Unwind_Word __symverglobal_Unwind_GetGR
++ (struct _Unwind_Context *, int );
++extern _Unwind_Ptr __symverglobal_Unwind_GetIP (struct _Unwind_Context *);
++extern void *__symverglobal_Unwind_GetLanguageSpecificData
++ (struct _Unwind_Context *);
++extern _Unwind_Ptr __symverglobal_Unwind_GetRegionStart
++ (struct _Unwind_Context *);
++extern _Unwind_Reason_Code __symverglobal_Unwind_RaiseException
++ (struct _Unwind_Exception *);
++extern void __symverglobal_Unwind_Resume (struct _Unwind_Exception *);
++extern _Unwind_Reason_Code __symverglobal_Unwind_Resume_or_Rethrow
++ (struct _Unwind_Exception *);
++extern void __symverglobal_Unwind_SetGR
++ (struct _Unwind_Context *, int, _Unwind_Word);
++extern void __symverglobal_Unwind_SetIP
++ (struct _Unwind_Context *, _Unwind_Ptr);
++#define _Unwind_Backtrace __symverglobal_Unwind_Backtrace
++#define _Unwind_DeleteException __symverglobal_Unwind_DeleteException
++#define _Unwind_FindEnclosingFunction __symverglobal_Unwind_FindEnclosingFunction
++#define _Unwind_ForcedUnwind __symverglobal_Unwind_ForcedUnwind
++#define _Unwind_GetBSP __symverglobal_Unwind_GetBSP
++#define _Unwind_GetCFA __symverglobal_Unwind_GetCFA
++#define _Unwind_GetGR __symverglobal_Unwind_GetGR
++#define _Unwind_GetIP __symverglobal_Unwind_GetIP
++#define _Unwind_GetLanguageSpecificData __symverglobal_Unwind_GetLanguageSpecificData
++#define _Unwind_GetRegionStart __symverglobal_Unwind_GetRegionStart
++#define _Unwind_RaiseException __symverglobal_Unwind_RaiseException
++#define _Unwind_Resume __symverglobal_Unwind_Resume
++#define _Unwind_Resume_or_Rethrow __symverglobal_Unwind_Resume_or_Rethrow
++#define _Unwind_SetGR __symverglobal_Unwind_SetGR
++#define _Unwind_SetIP __symverglobal_Unwind_SetIP
++#endif
++
+ enum unw_application_register
+ {
+ UNW_AR_BSP,
+@@ -2402,4 +2447,44 @@ alias (_Unwind_SetGR);
+ alias (_Unwind_SetIP);
+ #endif
+
++#if defined (USE_SYMVER_GLOBAL) && defined (SHARED)
++#undef alias
++#define symverglobal(name, version) \
++__typeof (__symverglobal##name) __symverlocal##name \
++ __attribute__ ((alias ("__symverglobal" #name))); \
++__asm__ (".symver __symverglobal" #name"," #name "@@GCC_3.4.2");\
++__asm__ (".symver __symverlocal" #name"," #name "@" #version)
++
++#undef _Unwind_Backtrace
++#undef _Unwind_DeleteException
++#undef _Unwind_FindEnclosingFunction
++#undef _Unwind_ForcedUnwind
++#undef _Unwind_GetBSP
++#undef _Unwind_GetCFA
++#undef _Unwind_GetGR
++#undef _Unwind_GetIP
++#undef _Unwind_GetLanguageSpecificData
++#undef _Unwind_GetRegionStart
++#undef _Unwind_RaiseException
++#undef _Unwind_Resume
++#undef _Unwind_Resume_or_Rethrow
++#undef _Unwind_SetGR
++#undef _Unwind_SetIP
++symverglobal (_Unwind_Backtrace, GCC_3.3);
++symverglobal (_Unwind_DeleteException, GCC_3.0);
++symverglobal (_Unwind_FindEnclosingFunction, GCC_3.3);
++symverglobal (_Unwind_ForcedUnwind, GCC_3.0);
++symverglobal (_Unwind_GetBSP, GCC_3.3.2);
++symverglobal (_Unwind_GetCFA, GCC_3.3);
++symverglobal (_Unwind_GetGR, GCC_3.0);
++symverglobal (_Unwind_GetIP, GCC_3.0);
++symverglobal (_Unwind_GetLanguageSpecificData, GCC_3.0);
++symverglobal (_Unwind_GetRegionStart, GCC_3.0);
++symverglobal (_Unwind_RaiseException, GCC_3.0);
++symverglobal (_Unwind_Resume, GCC_3.0);
++symverglobal (_Unwind_Resume_or_Rethrow, GCC_3.3);
++symverglobal (_Unwind_SetGR, GCC_3.0);
++symverglobal (_Unwind_SetIP, GCC_3.0);
++#endif
++
+ #endif
+--- gcc/config/ia64/mkmap-symver-multi.awk.jj 2004-02-18 10:27:36.000000000 -0500
++++ gcc/config/ia64/mkmap-symver-multi.awk 2004-11-15 09:46:50.000000000 -0500
+@@ -0,0 +1,133 @@
++# Generate an ELF symbol version map a-la Solaris and GNU ld.
++# Contributed by Richard Henderson <rth@cygnus.com>
++#
++# This file is part of GCC.
++#
++# GCC is free software; you can redistribute it and/or modify it under
++# the terms of the GNU General Public License as published by the Free
++# Software Foundation; either version 2, or (at your option) any later
++# version.
++#
++# GCC is distributed in the hope that it will be useful, but WITHOUT
++# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
++# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
++# License for more details.
++#
++# You should have received a copy of the GNU General Public License
++# along with GCC; see the file COPYING. If not, write to the Free
++# Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA
++# 02110-1301, USA.
++
++BEGIN {
++ state = "nm";
++ sawsymbol = 0;
++}
++
++# Remove comment and blank lines.
++/^ *#/ || /^ *$/ {
++ next;
++}
++
++# We begin with nm input. Collect the set of symbols that are present
++# so that we can not emit them into the final version script -- Solaris
++# complains at us if we do.
++
++state == "nm" && /^%%/ {
++ state = "ver";
++ next;
++}
++
++state == "nm" && ($1 == "U" || $2 == "U") {
++ next;
++}
++
++state == "nm" && NF == 3 {
++ if ($3 ~ /^[^@]*@GCC_[0-9.]*$/) {
++ def[$3] = 1
++ tl=$3
++ sub(/^.*@/,"",tl)
++ ver[$3] = tl
++ } else {
++ sub(/@@?GCC_[0-9.]*$/,"",$3)
++ def[$3] = 1;
++ }
++ sawsymbol = 1;
++ next;
++}
++
++state == "nm" {
++ next;
++}
++
++# Now we process a simplified variant of the Solaris symbol version
++# script. We have one symbol per line, no semicolons, simple markers
++# for beginning and ending each section, and %inherit markers for
++# describing version inheritence. A symbol may appear in more than
++# one symbol version, and the last seen takes effect.
++
++NF == 3 && $1 == "%inherit" {
++ inherit[$2] = $3;
++ next;
++}
++
++NF == 2 && $2 == "{" {
++ libs[$1] = 1;
++ thislib = $1;
++ next;
++}
++
++$1 == "}" {
++ thislib = "";
++ next;
++}
++
++{
++ ver[$1] = thislib;
++ next;
++}
++
++END {
++ if (!sawsymbol)
++ {
++ print "No symbols seen -- broken or mis-installed nm?" | "cat 1>&2";
++ exit 1;
++ }
++ for (l in libs)
++ output(l);
++}
++
++function output(lib) {
++ if (done[lib])
++ return;
++ done[lib] = 1;
++ if (inherit[lib])
++ output(inherit[lib]);
++
++ empty=1
++ for (sym in ver)
++ if ((ver[sym] == lib) && (sym in def))
++ {
++ if (empty)
++ {
++ printf("%s {\n", lib);
++ printf(" global:\n");
++ empty = 0;
++ }
++ symp = sym;
++ sub(/@GCC_[0-9.]*$/,"",symp);
++ printf("\t%s;\n", symp);
++ if (dotsyms)
++ printf("\t.%s;\n", symp);
++ }
++
++ if (empty)
++ {
++ for (l in libs)
++ if (inherit[l] == lib)
++ inherit[l] = inherit[lib];
++ }
++ else if (inherit[lib])
++ printf("} %s;\n", inherit[lib]);
++ else
++ printf ("\n local:\n\t*;\n};\n");
++}
+--- gcc/config/ia64/libgcc-ia64-no-libunwind.ver.jj 2004-02-18 10:27:36.000000000 -0500
++++ gcc/config/ia64/libgcc-ia64-no-libunwind.ver 2004-11-15 09:19:56.000000000 -0500
+@@ -0,0 +1,17 @@
++GCC_3.4.2 {
++ _Unwind_GetGR
++ _Unwind_RaiseException
++ _Unwind_GetRegionStart
++ _Unwind_SetIP
++ _Unwind_GetIP
++ _Unwind_GetLanguageSpecificData
++ _Unwind_Resume
++ _Unwind_DeleteException
++ _Unwind_SetGR
++ _Unwind_ForcedUnwind
++ _Unwind_Backtrace
++ _Unwind_FindEnclosingFunction
++ _Unwind_GetCFA
++ _Unwind_Resume_or_Rethrow
++ _Unwind_GetBSP
++}
diff --git a/gcc41-ice-hack.patch b/gcc41-ice-hack.patch
new file mode 100644
index 0000000..00b5362
--- /dev/null
+++ b/gcc41-ice-hack.patch
@@ -0,0 +1,316 @@
+2004-01-23 Jakub Jelinek <jakub@redhat.com>
+
+ * system.h (ICE_EXIT_CODE): Define.
+ * gcc.c (execute): Don't free first string early, but at the end
+ of the function. Call retry_ice if compiler exited with
+ ICE_EXIT_CODE.
+ (retry_ice): New function.
+ * diagnostic.c (diagnostic_count_diagnostic,
+ diagnostic_action_after_output, error_recursion): Exit with
+ ICE_EXIT_CODE instead of FATAL_EXIT_CODE.
+
+--- gcc/system.h.jj 2004-01-19 17:29:30.000000000 +0100
++++ gcc/system.h 2004-01-21 11:53:41.000000000 +0100
+@@ -153,6 +153,10 @@ extern int errno;
+ # endif
+ #endif
+
++#ifndef ICE_EXIT_CODE
++# define ICE_EXIT_CODE 27
++#endif
++
+ #ifdef HAVE_UNISTD_H
+ # include <unistd.h>
+ #endif
+--- gcc/gcc.c.jj 2004-01-21 11:45:20.000000000 +0100
++++ gcc/gcc.c 2004-01-21 11:56:46.000000000 +0100
+@@ -346,6 +346,9 @@ static void init_gcc_specs (struct obsta
+ #if defined(HAVE_TARGET_OBJECT_SUFFIX) || defined(HAVE_TARGET_EXECUTABLE_SUFFIX)
+ static const char *convert_filename (const char *, int, int);
+ #endif
++#if !(defined (__MSDOS__) || defined (OS2) || defined (VMS))
++static void retry_ice (const char *prog, const char **argv);
++#endif
+
+ static const char *if_exists_spec_function (int, const char **);
+ static const char *if_exists_else_spec_function (int, const char **);
+@@ -2841,7 +2844,7 @@ execute (void)
+ }
+ }
+
+- if (string != commands[i].prog)
++ if (i && string != commands[i].prog)
+ free ((void *) string);
+ }
+
+@@ -2897,6 +2900,16 @@ See %s for instructions.",
+ else if (WIFEXITED (status)
+ && WEXITSTATUS (status) >= MIN_FATAL_STATUS)
+ {
++#if !(defined (__MSDOS__) || defined (OS2) || defined (VMS))
++ /* For ICEs in cc1, cc1obj, cc1plus see if it is
++ reproducible or not. */
++ char *p;
++ if (WEXITSTATUS (status) == ICE_EXIT_CODE
++ && i == 0
++ && (p = strrchr (commands[0].argv[0], DIR_SEPARATOR))
++ && ! strncmp (p + 1, "cc1", 3))
++ retry_ice (commands[0].prog, commands[0].argv);
++#endif
+ if (WEXITSTATUS (status) > greatest_status)
+ greatest_status = WEXITSTATUS (status);
+ ret_code = -1;
+@@ -2917,6 +2930,9 @@ See %s for instructions.",
+ }
+ }
+
++ if (commands[0].argv[0] != commands[0].prog)
++ free ((PTR) commands[0].argv[0]);
++
+ return ret_code;
+ }
+ }
+@@ -5898,6 +5914,224 @@ give_switch (int switchnum, int omit_fir
+ switches[switchnum].validated = 1;
+ }
+ \f
++#if !(defined (__MSDOS__) || defined (OS2) || defined (VMS))
++#define RETRY_ICE_ATTEMPTS 2
++
++static void
++retry_ice (const char *prog, const char **argv)
++{
++ int nargs, out_arg = -1, quiet = 0, attempt;
++ int pid, retries, sleep_interval;
++ const char **new_argv;
++ char *temp_filenames[RETRY_ICE_ATTEMPTS * 2 + 2];
++
++ if (input_filename == NULL || ! strcmp (input_filename, "-"))
++ return;
++
++ for (nargs = 0; argv[nargs] != NULL; ++nargs)
++ /* Only retry compiler ICEs, not preprocessor ones. */
++ if (! strcmp (argv[nargs], "-E"))
++ return;
++ else if (argv[nargs][0] == '-' && argv[nargs][1] == 'o')
++ {
++ if (out_arg == -1)
++ out_arg = nargs;
++ else
++ return;
++ }
++ /* If the compiler is going to output any time information,
++ it might varry between invocations. */
++ else if (! strcmp (argv[nargs], "-quiet"))
++ quiet = 1;
++ else if (! strcmp (argv[nargs], "-ftime-report"))
++ return;
++
++ if (out_arg == -1 || !quiet)
++ return;
++
++ memset (temp_filenames, '\0', sizeof (temp_filenames));
++ new_argv = alloca ((nargs + 3) * sizeof (const char *));
++ memcpy (new_argv, argv, (nargs + 1) * sizeof (const char *));
++ new_argv[nargs++] = "-frandom-seed=0";
++ new_argv[nargs] = NULL;
++ if (new_argv[out_arg][2] == '\0')
++ new_argv[out_arg + 1] = "-";
++ else
++ new_argv[out_arg] = "-o-";
++
++ for (attempt = 0; attempt < RETRY_ICE_ATTEMPTS + 1; ++attempt)
++ {
++ int fd = -1;
++ int status;
++
++ temp_filenames[attempt * 2] = make_temp_file (".out");
++ temp_filenames[attempt * 2 + 1] = make_temp_file (".err");
++
++ if (attempt == RETRY_ICE_ATTEMPTS)
++ {
++ int i;
++ int fd1, fd2;
++ struct stat st1, st2;
++ size_t n, len;
++ char *buf;
++
++ buf = xmalloc (8192);
++
++ for (i = 0; i < 2; ++i)
++ {
++ fd1 = open (temp_filenames[i], O_RDONLY);
++ fd2 = open (temp_filenames[2 + i], O_RDONLY);
++
++ if (fd1 < 0 || fd2 < 0)
++ {
++ i = -1;
++ close (fd1);
++ close (fd2);
++ break;
++ }
++
++ if (fstat (fd1, &st1) < 0 || fstat (fd2, &st2) < 0)
++ {
++ i = -1;
++ close (fd1);
++ close (fd2);
++ break;
++ }
++
++ if (st1.st_size != st2.st_size)
++ {
++ close (fd1);
++ close (fd2);
++ break;
++ }
++
++ len = 0;
++ for (n = st1.st_size; n; n -= len)
++ {
++ len = n;
++ if (len > 4096)
++ len = 4096;
++
++ if (read (fd1, buf, len) != (int) len
++ || read (fd2, buf + 4096, len) != (int) len)
++ {
++ i = -1;
++ break;
++ }
++
++ if (memcmp (buf, buf + 4096, len) != 0)
++ break;
++ }
++
++ close (fd1);
++ close (fd2);
++
++ if (n)
++ break;
++ }
++
++ free (buf);
++ if (i == -1)
++ break;
++
++ if (i != 2)
++ {
++ notice ("The bug is not reproducible, so it is likely a hardware or OS problem.\n");
++ break;
++ }
++
++ fd = open (temp_filenames[attempt * 2], O_RDWR);
++ if (fd < 0)
++ break;
++ write (fd, "//", 2);
++ for (i = 0; i < nargs; i++)
++ {
++ write (fd, " ", 1);
++ write (fd, new_argv[i], strlen (new_argv[i]));
++ }
++ write (fd, "\n", 1);
++ new_argv[nargs] = "-E";
++ new_argv[nargs + 1] = NULL;
++ }
++
++ /* Fork a subprocess; wait and retry if it fails. */
++ sleep_interval = 1;
++ pid = -1;
++ for (retries = 0; retries < 4; retries++)
++ {
++ pid = fork ();
++ if (pid >= 0)
++ break;
++ sleep (sleep_interval);
++ sleep_interval *= 2;
++ }
++
++ if (pid < 0)
++ break;
++ else if (pid == 0)
++ {
++ if (attempt != RETRY_ICE_ATTEMPTS)
++ fd = open (temp_filenames[attempt * 2], O_RDWR);
++ if (fd < 0)
++ exit (-1);
++ if (fd != 1)
++ {
++ close (1);
++ dup (fd);
++ close (fd);
++ }
++
++ fd = open (temp_filenames[attempt * 2 + 1], O_RDWR);
++ if (fd < 0)
++ exit (-1);
++ if (fd != 2)
++ {
++ close (2);
++ dup (fd);
++ close (fd);
++ }
++
++ if (prog == new_argv[0])
++ execvp (prog, (char *const *) new_argv);
++ else
++ execv (new_argv[0], (char *const *) new_argv);
++ exit (-1);
++ }
++
++ if (waitpid (pid, &status, 0) < 0)
++ break;
++
++ if (attempt < RETRY_ICE_ATTEMPTS
++ && (! WIFEXITED (status) || WEXITSTATUS (status) != ICE_EXIT_CODE))
++ {
++ notice ("The bug is not reproducible, so it is likely a hardware or OS problem.\n");
++ break;
++ }
++ else if (attempt == RETRY_ICE_ATTEMPTS)
++ {
++ close (fd);
++ if (WIFEXITED (status)
++ && WEXITSTATUS (status) == SUCCESS_EXIT_CODE)
++ {
++ notice ("Preprocessed source stored into %s file, please attach this to your bugreport.\n",
++ temp_filenames[attempt * 2]);
++ /* Make sure it is not deleted. */
++ free (temp_filenames[attempt * 2]);
++ temp_filenames[attempt * 2] = NULL;
++ break;
++ }
++ }
++ }
++
++ for (attempt = 0; attempt < RETRY_ICE_ATTEMPTS * 2 + 2; attempt++)
++ if (temp_filenames[attempt])
++ {
++ unlink (temp_filenames[attempt]);
++ free (temp_filenames[attempt]);
++ }
++}
++#endif
++\f
+ /* Search for a file named NAME trying various prefixes including the
+ user's -B prefix and some standard ones.
+ Return the absolute file name found. If nothing is found, return NAME. */
+--- gcc/diagnostic.c.jj 2003-10-01 12:09:21.000000000 +0200
++++ gcc/diagnostic.c 2004-01-21 11:54:47.000000000 +0100
+@@ -237,14 +237,14 @@ diagnostic_action_after_output (diagnost
+ fnotice (stderr, "Please submit a full bug report,\n"
+ "with preprocessed source if appropriate.\n"
+ "See %s for instructions.\n", bug_report_url);
+- exit (FATAL_EXIT_CODE);
++ exit (ICE_EXIT_CODE);
+
+ case DK_FATAL:
+ if (context->abort_on_error)
+ real_abort ();
+
+ fnotice (stderr, "compilation terminated.\n");
+- exit (FATAL_EXIT_CODE);
++ exit (ICE_EXIT_CODE);
+
+ default:
+ gcc_unreachable ();
diff --git a/gcc41-java-nomulti.patch b/gcc41-java-nomulti.patch
new file mode 100644
index 0000000..3a6554d
--- /dev/null
+++ b/gcc41-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/gcc41-java-slow_pthread_self.patch b/gcc41-java-slow_pthread_self.patch
new file mode 100644
index 0000000..de160be
--- /dev/null
+++ b/gcc41-java-slow_pthread_self.patch
@@ -0,0 +1,15 @@
+2005-05-20 Jakub Jelinek <jakub@redhat.com>
+
+ * configure.host (slow_pthread_self): Set to empty unconditionally
+ on Linux targets.
+
+--- libjava/configure.host (.../gcc-4_0-branch) (revision 107266)
++++ libjava/configure.host (.../redhat/gcc-4_0-branch) (revision 107414)
+@@ -174,6 +174,7 @@
+ sh-linux* | sh[34]*-linux*)
+ can_unwind_signal=yes
+ libgcj_ld_symbolic='-Wl,-Bsymbolic'
++ slow_pthread_self=
+ if test x$slow_pthread_self = xyes \
+ && test x$cross_compiling != xyes; then
+ cat > conftest.c <<EOF
diff --git a/gcc41-multi32-hack.patch b/gcc41-multi32-hack.patch
new file mode 100644
index 0000000..e697f96
--- /dev/null
+++ b/gcc41-multi32-hack.patch
@@ -0,0 +1,104 @@
+--- libcpp/configure.ac.jj 2005-10-28 23:13:40.000000000 +0200
++++ libcpp/configure.ac 2005-11-25 14:34:31.000000000 +0100
+@@ -112,6 +112,8 @@ fi
+
+ m4_changequote(,)
+ case $target in
++ powerpc-*-linux*)
++ need_64bit_hwint=no ;;
+ alpha*-*-* | \
+ arm*-*-*eabi* | \
+ arm*-*-symbianelf* | \
+--- libcpp/configure.jj 2005-10-28 23:13:40.000000000 +0200
++++ libcpp/configure 2005-11-25 14:34:40.000000000 +0100
+@@ -8217,6 +8217,8 @@ fi
+
+
+ case $target in
++ powerpc-*-linux*)
++ need_64bit_hwint=no ;;
+ alpha*-*-* | \
+ arm*-*-*eabi* | \
+ arm*-*-symbianelf* | \
+--- gcc/config.gcc.jj 2005-11-19 09:27:16.000000000 +0100
++++ gcc/config.gcc 2005-11-25 14:29:30.000000000 +0100
+@@ -294,7 +294,10 @@ mips*-*-*)
+ powerpc*-*-*)
+ cpu_type=rs6000
+ extra_headers="ppc-asm.h altivec.h spe.h"
+- need_64bit_hwint=yes
++ case ${target} in
++ powerpc-*-linux*) ;;
++ *) need_64bit_hwint=yes ;;
++ esac
+ case x$with_cpu in
+ xpowerpc64|xdefault64|x6[23]0|x970|xG5|xpower[345]|xrs64a)
+ cpu_is_64bit=yes
+--- gcc/gcc.c.jj 2005-11-19 21:16:39.000000000 +0100
++++ gcc/gcc.c 2005-11-28 13:00:58.000000000 +0100
+@@ -3154,6 +3154,8 @@ process_command (int argc, const char **
+ const char *spec_lang = 0;
+ int last_language_n_infiles;
+ int lang_n_infiles = 0;
++ int hack32 = 1;
++ int used_B = 0;
+ #ifdef MODIFY_TARGET_NAME
+ int is_modify_target_name;
+ int j;
+@@ -3680,6 +3682,7 @@ warranty; not even for MERCHANTABILITY o
+ PREFIX_PRIORITY_B_OPT, 0, 0);
+ add_prefix (&include_prefixes, value, NULL,
+ PREFIX_PRIORITY_B_OPT, 0, 0);
++ used_B = 1;
+ n_switches++;
+ }
+ break;
+@@ -3742,6 +3745,21 @@ warranty; not even for MERCHANTABILITY o
+ #endif
+ goto normal_switch;
+
++ /* HACK START */
++ case 'm':
++ if ((p[1] == '6' && p[2] == '4')
++ || (p[1] == 'a' && strncmp (p + 2, "ltivec", 6) == 0)
++ || (p[1] == 'c' && strncmp (p + 2, "pu=", 3) == 0
++ && (strncmp (p + 5, "7400", 4) == 0
++ || strncmp (p + 5, "7450", 4) == 0
++ || strncmp (p + 5, "G4", 2) == 0
++ || strncmp (p + 5, "970", 3) == 0
++ || strncmp (p + 5, "G5", 2) == 0))
++ || (p[1] == 'p' && strncmp (p + 2, "owerpc64", 8) == 0))
++ hack32 = 0;
++ /* FALLTHROUGH */
++ /* HACK END */
++
+ default:
+ normal_switch:
+
+@@ -3812,6 +3830,26 @@ warranty; not even for MERCHANTABILITY o
+ /* Use 2 as fourth arg meaning try just the machine as a suffix,
+ as well as trying the machine and the version. */
+ #ifndef OS2
++ /* HACK START */
++ if (hack32 && !used_B && !strncmp (spec_machine, "sparc64-", 8))
++ {
++ const char *sparc32_exec_prefix =
++ concat (standard_libexec_prefix, "sparc-", spec_machine + 8,
++ dir_separator_str, spec_version, dir_separator_str, NULL);
++ add_prefix (&exec_prefixes, sparc32_exec_prefix, "GCC",
++ PREFIX_PRIORITY_LAST, 0, 0);
++ }
++ /* HACK END */
++ /* HACK START */
++ if (hack32 && !used_B && !strncmp (spec_machine, "ppc64-", 6))
++ {
++ const char *ppc32_exec_prefix =
++ concat (standard_libexec_prefix, "ppc-", spec_machine + 6,
++ dir_separator_str, spec_version, dir_separator_str, NULL);
++ add_prefix (&exec_prefixes, ppc32_exec_prefix, "GCC",
++ PREFIX_PRIORITY_LAST, 0, 0);
++ }
++ /* HACK END */
+ add_prefix (&exec_prefixes, standard_libexec_prefix, "GCC",
+ PREFIX_PRIORITY_LAST, 1, 0);
+ add_prefix (&exec_prefixes, standard_libexec_prefix, "BINUTILS",
diff --git a/gcc41-ppc32-retaddr.patch b/gcc41-ppc32-retaddr.patch
new file mode 100644
index 0000000..e9ae1bc
--- /dev/null
+++ b/gcc41-ppc32-retaddr.patch
@@ -0,0 +1,86 @@
+2005-11-28 Jakub Jelinek <jakub@redhat.com>
+
+ * config/rs6000/rs6000.c (rs6000_return_addr): If COUNT == 0,
+ read word RETURN_ADDRESS_OFFSET bytes above arg_pointer_rtx
+ instead of doing an extran indirection from frame_pointer_rtx.
+
+ * gcc.dg/20051128-1.c: New test.
+
+--- gcc/config/rs6000/rs6000.c.jj 2005-11-26 14:38:01.000000000 +0100
++++ gcc/config/rs6000/rs6000.c 2005-11-28 20:32:18.000000000 +0100
+@@ -13166,17 +13166,22 @@ rs6000_return_addr (int count, rtx frame
+ don't try to be too clever here. */
+ if (count != 0 || (DEFAULT_ABI != ABI_AIX && flag_pic))
+ {
++ rtx x;
+ cfun->machine->ra_needs_full_frame = 1;
+
+- return
+- gen_rtx_MEM
+- (Pmode,
+- memory_address
+- (Pmode,
+- plus_constant (copy_to_reg
+- (gen_rtx_MEM (Pmode,
+- memory_address (Pmode, frame))),
+- RETURN_ADDRESS_OFFSET)));
++ if (count == 0)
++ {
++ gcc_assert (frame == frame_pointer_rtx);
++ x = arg_pointer_rtx;
++ }
++ else
++ {
++ x = memory_address (Pmode, frame);
++ x = copy_to_reg (gen_rtx_MEM (Pmode, x));
++ }
++
++ x = plus_constant (x, RETURN_ADDRESS_OFFSET);
++ return gen_rtx_MEM (Pmode, memory_address (Pmode, x));
+ }
+
+ cfun->machine->ra_need_lr = 1;
+--- gcc/testsuite/gcc.dg/20051128-1.c.jj 2005-10-10 11:21:41.096999000 +0200
++++ gcc/testsuite/gcc.dg/20051128-1.c 2005-11-28 12:30:57.000000000 +0100
+@@ -0,0 +1,41 @@
++/* { dg-do run } */
++/* { dg-options "-O2 -fpic" } */
++
++extern void exit (int);
++extern void abort (void);
++
++int b;
++
++struct A
++{
++ void *pad[147];
++ void *ra, *h;
++ long o;
++};
++
++void
++__attribute__((noinline))
++foo (struct A *a, void *x)
++{
++ __builtin_memset (a, 0, sizeof (a));
++ if (!b)
++ exit (0);
++}
++
++void
++__attribute__((noinline))
++bar (void)
++{
++ struct A a;
++
++ __builtin_unwind_init ();
++ foo (&a, __builtin_return_address (0));
++}
++
++int
++main (void)
++{
++ bar ();
++ abort ();
++ return 0;
++}
diff --git a/gcc41-ppc64-m32-m64-multilib-only.patch b/gcc41-ppc64-m32-m64-multilib-only.patch
new file mode 100644
index 0000000..00dbeac
--- /dev/null
+++ b/gcc41-ppc64-m32-m64-multilib-only.patch
@@ -0,0 +1,22 @@
+--- gcc/config/rs6000/t-linux64 2003-06-03 05:11:45.000000000 -0400
++++ gcc/config/rs6000/t-linux64 2003-06-11 17:07:16.000000000 -0400
+@@ -4,13 +4,13 @@ LIB2FUNCS_EXTRA = tramp.S $(srcdir)/conf
+ # Modify the shared lib version file
+ SHLIB_MKMAP_OPTS = -v dotsyms=1
+
+-MULTILIB_OPTIONS = m64/m32 msoft-float
+-MULTILIB_DIRNAMES = 64 32 nof
++MULTILIB_OPTIONS = m64/m32
++MULTILIB_DIRNAMES = 64 32
+ MULTILIB_EXTRA_OPTS = fPIC mstrict-align
+-MULTILIB_EXCEPTIONS = m64/msoft-float
+-MULTILIB_EXCLUSIONS = m64/!m32/msoft-float
+-MULTILIB_OSDIRNAMES = ../lib64 ../lib nof
+-MULTILIB_MATCHES = $(MULTILIB_MATCHES_FLOAT)
++MULTILIB_EXCEPTIONS =
++MULTILIB_EXCLUSIONS =
++MULTILIB_OSDIRNAMES = ../lib64 ../lib
++MULTILIB_MATCHES =
+
+ TARGET_LIBGCC2_CFLAGS = -mno-minimal-toc -fPIC
+
diff --git a/gcc41.spec b/gcc41.spec
new file mode 100644
index 0000000..30883b0
--- /dev/null
+++ b/gcc41.spec
@@ -0,0 +1,1551 @@
+%define DATE 20051128
+%define gcc_version 4.1.0
+%define gcc_release 0.3
+%define _unpackaged_files_terminate_build 0
+%define multilib_64_archs sparc64 ppc64 s390x x86_64
+%ifarch %{ix86} x86_64 ia64
+%define build_ada 1
+%else
+%define build_ada 0
+%endif
+%define build_java 1
+%ifarch s390x
+%define multilib_32_arch s390
+%endif
+%ifarch sparc64
+%define multilib_32_arch sparc
+%endif
+%ifarch ppc64
+%define multilib_32_arch ppc
+%endif
+%ifarch x86_64
+%define multilib_32_arch i386
+%endif
+Summary: Various compilers (C, C++, Objective-C, Java, ...)
+Name: gcc
+Version: %{gcc_version}
+Release: %{gcc_release}
+License: GPL
+Group: Development/Languages
+Source0: gcc-%{version}-%{DATE}.tar.bz2
+Source1: libgcc_post_upgrade.c
+URL: http://gcc.gnu.org
+BuildRoot: /var/tmp/gcc-root
+# Need binutils with -pie support >= 2.14.90.0.4-4
+# Need binutils which can omit dot symbols and overlap .opd on ppc64 >= 2.15.91.0.2-4
+# Need binutils which handle -msecure-plt on ppc >= 2.16.91.0.2-2
+# Need binutils which support .weakref >= 2.16.91.0.3-1
+BuildRequires: binutils >= 2.16.91.0.3-1
+BuildRequires: zlib-devel, gettext, dejagnu, bison, flex, texinfo
+# Make sure pthread.h doesn't contain __thread tokens
+# Make sure glibc supports stack protector
+BuildRequires: glibc-devel >= 2.3.90-2
+%ifarch %{multilib_64_archs} sparc ppc
+# Ensure glibc{,-devel} is installed for both multilib arches
+BuildRequires: /lib/libc.so.6 /usr/lib/libc.so /lib64/libc.so.6 /usr/lib64/libc.so
+%endif
+%if %{build_ada}
+# Ada requires Ada to build
+BuildRequires: gcc-gnat >= 3.1, libgnat >= 3.1
+%endif
+Requires: cpp = %{version}-%{release}
+# Need .eh_frame ld optimizations
+# Need proper visibility support
+# Need -pie support
+# Need --as-needed/--no-as-needed support
+# On ppc64, need omit dot symbols support and --non-overlapping-opd
+# Need binutils that owns /usr/bin/c++filt
+# Need binutils that support .weakref
+Requires: binutils >= 2.16.91.0.3-1
+# Make sure gdb will understand DW_FORM_strp
+Conflicts: gdb < 5.1-2
+Requires: glibc-devel >= 2.2.90-12
+Requires: libgcc >= %{version}-%{release}
+Obsoletes: gcc3
+Obsoletes: egcs
+Obsoletes: gcc-chill
+%if !%{build_ada}
+Obsoletes: gcc-gnat < %{version}-%{release}
+Obsoletes: libgnat < %{version}-%{release}
+%endif
+%ifarch sparc sparc64
+Obsoletes: egcs64
+%endif
+Obsoletes: gcc34
+Obsoletes: gcc35
+Obsoletes: gcc4
+Provides: gcc4 = %{version}-%{release}
+Prereq: /sbin/install-info
+AutoReq: true
+
+Patch1: gcc41-ice-hack.patch
+Patch2: gcc41-ppc64-m32-m64-multilib-only.patch
+Patch3: gcc41-ia64-libunwind.patch
+Patch4: gcc41-gnuc-rh-release.patch
+Patch5: gcc41-java-nomulti.patch
+Patch6: gcc41-multi32-hack.patch
+Patch7: gcc41-ia64-stack-protector.patch
+Patch8: gcc41-ada-pr18302.patch
+Patch9: gcc41-ada-tweaks.patch
+Patch10: gcc41-java-rmic.patch
+Patch11: gcc41-java-slow_pthread_self.patch
+Patch12: gcc41-libjava-libltdl.patch
+Patch13: gcc41-test-20050330-2.patch
+Patch14: gcc41-test-c++-struct_layout.patch
+Patch15: gcc41-test-pr17828.patch
+Patch16: gcc41-test-pr19005.patch
+Patch17: gcc41-test-pr19317.patch
+Patch18: gcc41-fortran-finclude.patch
+Patch19: gcc41-ppc64-sync.patch
+Patch20: gcc41-ppc32-retaddr.patch
+Patch21: gcc41-gomp-atomic.patch
+Patch22: gcc41-libgfortran-host_subdir.patch
+Patch23: gcc41-ia64-fetchadd.patch
+Patch24: gcc41-ia64-tls-le.patch
+
+%define _gnu %{nil}
+%ifarch sparc
+%define gcc_target_platform sparc64-%{_vendor}-%{_target_os}
+%endif
+%ifarch ppc
+%define gcc_target_platform ppc64-%{_vendor}-%{_target_os}
+%endif
+%ifnarch sparc ppc
+%define gcc_target_platform %{_target_platform}
+%endif
+
+%description
+The gcc package contains the GNU Compiler Collection version 4.1.
+You'll need this package in order to compile C code.
+
+%package -n libgcc
+Summary: GCC version 4.1 shared support library
+Group: System Environment/Libraries
+Autoreq: false
+
+%description -n libgcc
+This package contains GCC shared support library which is needed
+e.g. for exception handling support.
+
+%package c++
+Summary: C++ support for GCC
+Group: Development/Languages
+Requires: gcc = %{version}-%{release}
+Requires: libstdc++ = %{version}-%{release}
+Requires: libstdc++-devel = %{version}-%{release}
+Obsoletes: gcc3-c++
+Obsoletes: gcc34-c++
+Obsoletes: gcc35-c++
+Obsoletes: gcc4-c++
+Provides: gcc4-c++ = %{version}-%{release}
+Autoreq: true
+
+%description c++
+This package adds C++ support to the GNU Compiler Collection.
+It includes support for most of the current C++ specification,
+including templates and exception handling.
+
+%package -n libstdc++
+Summary: GNU Standard C++ Library
+Group: System Environment/Libraries
+Obsoletes: libstdc++3
+Obsoletes: libstdc++34
+Provides: libstdc++34
+Autoreq: true
+
+%description -n libstdc++
+The libstdc++ package contains a rewritten standard compliant GCC Standard
+C++ Library.
+
+%package -n libstdc++-devel
+Summary: Header files and libraries for C++ development
+Group: Development/Libraries
+Requires: libstdc++ = %{version}-%{release}
+Obsoletes: libstdc++3-devel
+Obsoletes: libstdc++34-devel
+Provides: libstdc++34-devel
+Autoreq: true
+
+%description -n libstdc++-devel
+This is the GNU implementation of the standard C++ libraries. This
+package includes the header files and libraries needed for C++
+development. This includes rewritten implementation of STL.
+
+%package objc
+Summary: Objective-C support for GCC
+Group: Development/Languages
+Requires: gcc = %{version}-%{release}
+Requires: libobjc = %{version}-%{release}
+Obsoletes: gcc3-objc
+Autoreq: true
+
+%description objc
+gcc-objc provides Objective-C support for the GCC.
+Mainly used on systems running NeXTSTEP, Objective-C is an
+object-oriented derivative of the C language.
+
+%package objc++
+Summary: Objective-C++ support for GCC
+Group: Development/Languages
+Requires: gcc-c++ = %{version}-%{release}, gcc-objc = %{version}-%{release}
+Autoreq: true
+
+%description objc++
+gcc-objc++ package provides Objective-C++ support for the GCC.
+
+%package -n libobjc
+Summary: Objective-C runtime
+Group: System Environment/Libraries
+Autoreq: true
+
+%description -n libobjc
+This package contains Objective-C shared library which is needed to run
+Objective-C dynamically linked programs.
+
+%package gfortran
+Summary: Fortran 95 support
+Group: Development/Languages
+Requires: gcc = %{version}-%{release}
+Requires: libgfortran = %{version}-%{release}
+BuildRequires: gmp-devel >= 4.1.2-8
+Prereq: /sbin/install-info
+Obsoletes: gcc3-g77
+Obsoletes: gcc-g77
+Obsoletes: gcc4-gfortran
+Autoreq: true
+
+%description gfortran
+The gcc-gfortran package provides support for compiling Fortran 95
+programs with the GNU Compiler Collection.
+
+%package -n libgfortran
+Summary: Fortran 95 runtime
+Group: System Environment/Libraries
+Obsoletes: libf2c
+Autoreq: true
+
+%description -n libgfortran
+This package contains Fortran 95 shared library which is needed to run
+Fortran 95 dynamically linked programs.
+
+%package -n libgomp
+Summary: GCC OpenMP 2.5 shared support library
+Group: System Environment/Libraries
+
+%description -n libgomp
+This package contains GCC shared support library which is needed
+for OpenMP 2.5 support.
+
+%package -n libmudflap
+Summary: GCC mudflap shared support library
+Group: System Environment/Libraries
+
+%description -n libmudflap
+This package contains GCC shared support library which is needed
+for mudflap support.
+
+%package -n libmudflap-devel
+Summary: GCC mudflap support
+Group: Development/Libraries
+Requires: libmudflap = %{version}-%{release}
+Requires: gcc = %{version}-%{release}
+
+%description -n libmudflap-devel
+This package contains headers and static libraries for building
+mudflap-instrumented programs.
+
+To instrument a non-threaded program, add -fmudflap
+option to GCC and when linking add -lmudflap, for threaded programs
+also add -fmudflapth and -lmudflapth.
+
+%package java
+Summary: Java support for GCC
+Group: Development/Languages
+Requires: gcc = %{version}-%{release}
+Requires: libgcj = %{version}-%{release}
+Requires: libgcj-devel = %{version}-%{release}, zlib-devel
+Obsoletes: gcc3-java
+Obsoletes: gcc34-java
+Obsoletes: gcc35-java
+Obsoletes: gcc4-java
+Provides: gcc4-java
+Prereq: /sbin/install-info
+Autoreq: true
+
+%description java
+This package adds support for compiling Java(tm) programs and
+bytecode into native code.
+
+%package -n libgcj
+Summary: Java runtime library for gcc
+Group: System Environment/Libraries
+Prereq: /sbin/install-info
+Requires: zip >= 2.1
+Requires: gtk2 >= 2.4.0
+BuildRequires: gtk2-devel >= 2.4.0
+Requires: glib2 >= 2.4.0
+BuildRequires: glib2-devel >= 2.4.0
+Requires: libart_lgpl >= 2.1.0
+BuildRequires: libart_lgpl-devel >= 2.1.0
+Obsoletes: gcc-libgcj
+Obsoletes: libgcj3
+Obsoletes: libgcj34
+Obsoletes: libgcj4
+Provides: libgcj4
+Autoreq: true
+
+%description -n libgcj
+The Java(tm) runtime library. You will need this package to run your Java
+programs compiled using the Java compiler from GNU Compiler Collection (gcj).
+
+%package -n libgcj-devel
+Summary: Libraries for Java development using GCC
+Group: Development/Languages
+Requires: zip >= 2.1, libgcj = %{version}-%{release}
+Obsoletes: libgcj3-devel
+Obsoletes: libgcj34-devel
+Obsoletes: libgcj4-devel
+Provides: libgcj4-devel
+Autoreq: true
+
+%description -n libgcj-devel
+The Java(tm) static libraries and C header files. You will need this
+package to compile your Java programs using the GCC Java compiler (gcj).
+
+%package -n libgcj-src
+Summary: Java library sources from GCC4 preview
+Group: System Environment/Libraries
+Requires: libgcj = %{version}-%{release}
+Obsoletes: libgcj4-src
+Provides: libgcj4-src
+Autoreq: true
+
+%description -n libgcj-src
+The Java(tm) runtime library sources for use in Eclipse.
+
+%package sparc32
+Summary: The C compiler optimized for generating SPARC 32bit code
+Group: Development/Languages
+Requires: gcc = %{version}-%{release}, %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/64/libgcc.a
+Autoreq: true
+
+%description sparc32
+This package contains the GNU C compiler which only supports generating
+32bit SPARC code, but should be faster than the 32/64bit gcc package. You
+should install this package if you want to trade disk space required for
+this package for faster compilation of 32bit code.
+
+%package c++-sparc32
+Summary: The C++ compiler optimized for generating SPARC 32bit code
+Group: Development/Languages
+Requires: gcc-c++ = %{version}-%{release}, gcc-sparc32 = %{version}-%{release}
+Requires: %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/64/libstdc++.so
+Autoreq: true
+
+%description c++-sparc32
+This package contains the GNU C++ compiler which only supports generating
+32bit SPARC code, but should be faster than the 32/64bit gcc package. You
+should install this package if you want to trade disk space required for
+this package for faster compilation of 32bit code.
+
+%package ppc32
+Summary: The C compiler optimized for generating PowerPC 32bit code
+Group: Development/Languages
+Requires: gcc = %{version}-%{release}, %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/64/libgcc.a
+Autoreq: true
+
+%description ppc32
+This package contains the GNU C compiler which only supports generating
+32bit PowerPC code, but should be faster than the 32/64bit gcc package. You
+should install this package if you want to trade disk space required for
+this package for faster compilation of 32bit code.
+
+%package c++-ppc32
+Summary: The C++ compiler optimized for generating PowerPC 32bit code
+Group: Development/Languages
+Requires: gcc-c++ = %{version}-%{release}, gcc-ppc32 = %{version}-%{release}
+Requires: %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/64/libstdc++.so
+Autoreq: true
+
+%description c++-ppc32
+This package contains the GNU C++ compiler which only supports generating
+32bit PowerPC code, but should be faster than the 32/64bit gcc package. You
+should install this package if you want to trade disk space required for
+this package for faster compilation of 32bit code.
+
+%package -n cpp
+Summary: The C Preprocessor.
+Group: Development/Languages
+Prereq: /sbin/install-info
+%ifarch ia64
+Obsoletes: gnupro
+%endif
+Autoreq: true
+
+%description -n cpp
+Cpp is the GNU C-Compatible Compiler Preprocessor.
+Cpp is a macro processor which is used automatically
+by the C compiler to transform your program before actual
+compilation. It is called a macro processor because it allows
+you to define macros, abbreviations for longer
+constructs.
+
+The C preprocessor provides four separate functionalities: the
+inclusion of header files (files of declarations that can be
+substituted into your program); macro expansion (you can define macros,
+and the C preprocessor will replace the macros with their definitions
+throughout the program); conditional compilation (using special
+preprocessing directives, you can include or exclude parts of the
+program according to various conditions); and line control (if you use
+a program to combine or rearrange source files into an intermediate
+file which is then compiled, you can use line control to inform the
+compiler about where each source line originated).
+
+You should install this package if you are a C programmer and you use
+macros.
+
+%package gnat
+Summary: Ada 95 support for GCC
+Group: Development/Languages
+Requires: gcc = %{version}-%{release}, libgnat = %{version}-%{release}
+Obsoletes: gnat-devel, gcc3-gnat
+Prereq: /sbin/install-info
+Autoreq: true
+
+%description gnat
+GNAT is a GNU Ada 95 front-end to GCC. This package includes development tools,
+the documents and Ada 95 compiler.
+
+%package -n libgnat
+Summary: GNU Ada 95 runtime shared libraries
+Group: System Environment/Libraries
+Obsoletes: gnat libgnat3
+Autoreq: true
+
+%description -n libgnat
+GNAT is a GNU Ada 95 front-end to GCC. This package includes shared libraries,
+which are required to run programs compiled with the GNAT.
+
+%prep
+%setup -q -n gcc-%{version}-%{DATE}
+%patch1 -p0 -b .ice-hack~
+%patch2 -p0 -b .ppc64-m32-m64-multilib-only~
+%patch3 -p0 -b .ia64-libunwind~
+%patch4 -p0 -b .gnuc-rh-release~
+%patch5 -p0 -b .java-nomulti~
+%ifarch ppc sparc
+%patch6 -p0 -b .multi32-hack~
+%endif
+%patch7 -p0 -b .ia64-stack-protector~
+%patch8 -p0 -b .ada-pr18302~
+%patch9 -p0 -b .ada-tweaks~
+%patch10 -p0 -b .java-rmic~
+%patch11 -p0 -b .java-slow_pthread_self~
+%patch12 -p0 -b .libjava-libltdl~
+%patch13 -p0 -b .test-20050330-2~
+%patch14 -p0 -b .test-c++-struct_layout~
+%patch15 -p0 -b .test-pr17828~
+%patch16 -p0 -b .test-pr19005~
+%patch17 -p0 -b .test-pr19317~
+%patch18 -p0 -b .fortran-finclude~
+%patch19 -p0 -b .ppc64-sync~
+%patch20 -p0 -b .ppc32-retaddr~
+%patch21 -p0 -b .gomp-atomic~
+%patch22 -p0 -b .libgfortran-host_subdir~
+%patch23 -p0 -b .ia64-fetchadd~
+%patch24 -p0 -b .ia64-tls-le~
+
+sed -i -e 's/4\.1\.0/4.1.0/' gcc/BASE-VER gcc/version.c
+sed -i -e 's/" (Red Hat[^)]*)"/" (Red Hat %{version}-%{gcc_release})"/' gcc/version.c
+
+sed -i -e 's/libjawt/libgcjawt/g' libjava/Makefile.{am,in}
+
+cp -a libstdc++-v3/config/cpu/i{4,3}86/atomicity.h
+
+# Hack to avoid building multilib libjava
+perl -pi -e 's/^all: all-redirect/ifeq (\$(MULTISUBDIR),)\nall: all-redirect\nelse\nall:\n\techo Multilib libjava build disabled\nendif/' libjava/Makefile.in
+perl -pi -e 's/^install: install-redirect/ifeq (\$(MULTISUBDIR),)\ninstall: install-redirect\nelse\ninstall:\n\techo Multilib libjava install disabled\nendif/' libjava/Makefile.in
+perl -pi -e 's/^check: check-redirect/ifeq (\$(MULTISUBDIR),)\ncheck: check-redirect\nelse\ncheck:\n\techo Multilib libjava check disabled\nendif/' libjava/Makefile.in
+perl -pi -e 's/^all: all-recursive/ifeq (\$(MULTISUBDIR),)\nall: all-recursive\nelse\nall:\n\techo Multilib libjava build disabled\nendif/' libjava/Makefile.in
+perl -pi -e 's/^install: install-recursive/ifeq (\$(MULTISUBDIR),)\ninstall: install-recursive\nelse\ninstall:\n\techo Multilib libjava install disabled\nendif/' libjava/Makefile.in
+perl -pi -e 's/^check: check-recursive/ifeq (\$(MULTISUBDIR),)\ncheck: check-recursive\nelse\ncheck:\n\techo Multilib libjava check disabled\nendif/' libjava/Makefile.in
+
+./contrib/gcc_update --touch
+
+%ifarch ppc
+if [ -d libstdc++-v3/config/abi/powerpc64-linux-gnu ]; then
+ mkdir -p libstdc++-v3/config/abi/powerpc64-linux-gnu/64
+ mv libstdc++-v3/config/abi/powerpc64-linux-gnu/{,64/}baseline_symbols.txt
+ mv libstdc++-v3/config/abi/powerpc64-linux-gnu/{32/,}baseline_symbols.txt
+ rm -rf libstdc++-v3/config/abi/powerpc64-linux-gnu/32
+fi
+%endif
+%ifarch sparc
+if [ -d libstdc++-v3/config/abi/sparc64-linux-gnu ]; then
+ mkdir -p libstdc++-v3/config/abi/sparc64-linux-gnu/64
+ mv libstdc++-v3/config/abi/sparc64-linux-gnu/{,64/}baseline_symbols.txt
+ mv libstdc++-v3/config/abi/sparc64-linux-gnu/{32/,}baseline_symbols.txt
+ rm -rf libstdc++-v3/config/abi/sparc64-linux-gnu/32
+fi
+%endif
+
+%build
+
+rm -fr obj-%{gcc_target_platform}
+mkdir obj-%{gcc_target_platform}
+cd obj-%{gcc_target_platform}
+
+if [ ! -f /usr/lib/locale/de_DE/LC_CTYPE ]; then
+ mkdir locale
+ localedef -f ISO-8859-1 -i de_DE locale/de_DE
+ export LOCPATH=`pwd`/locale:/usr/lib/locale
+fi
+
+CC=gcc
+OPT_FLAGS=`echo $RPM_OPT_FLAGS|sed -e 's/\(-Wp,\)\?-D_FORTIFY_SOURCE=[12]//g'`
+OPT_FLAGS=`echo $OPT_FLAGS|sed -e 's/-m64//g;s/-m32//g;s/-m31//g'`
+%ifarch sparc sparc64
+OPT_FLAGS=`echo $OPT_FLAGS|sed -e 's/-mcpu=ultrasparc/-mtune=ultrasparc/g'`
+%endif
+%ifarch sparc64
+cat > gcc64 <<"EOF"
+#!/bin/sh
+exec /usr/bin/gcc -m64 "$@"
+EOF
+chmod +x gcc64
+CC=`pwd`/gcc64
+%endif
+%ifarch ppc64
+if gcc -m64 -xc -S /dev/null -o - > /dev/null 2>&1; then
+ cat > gcc64 <<"EOF"
+#!/bin/sh
+exec /usr/bin/gcc -m64 "$@"
+EOF
+ chmod +x gcc64
+ CC=`pwd`/gcc64
+fi
+%endif
+OPT_FLAGS=`echo "$OPT_FLAGS" | sed -e 's/[[:blank:]]\+/ /g'`
+CC="$CC" CFLAGS="$OPT_FLAGS" CXXFLAGS="$OPT_FLAGS" XCFLAGS="$OPT_FLAGS" TCFLAGS="$OPT_FLAGS" \
+ GCJFLAGS="$OPT_FLAGS" \
+ ../configure --prefix=%{_prefix} --mandir=%{_mandir} --infodir=%{_infodir} \
+ --enable-shared --enable-threads=posix --enable-checking=release \
+ --with-system-zlib --enable-__cxa_atexit --disable-libunwind-exceptions \
+ --enable-libgcj-multifile \
+%if !%{build_ada}
+ --enable-languages=c,c++,objc,obj-c++,java,fortran \
+%else
+ --enable-languages=c,c++,objc,obj-c++,java,fortran,ada \
+%endif
+%if !%{build_java}
+ --disable-libgcj \
+%else
+ --enable-java-awt=gtk \
+ --with-java-home=%{_prefix}/lib/jvm/java-1.4.2-gcj-1.4.2.0/jre \
+%endif
+%ifarch ppc ppc64
+ --enable-secureplt \
+%endif
+%ifarch sparc
+ --host=%{gcc_target_platform} --build=%{gcc_target_platform} --target=%{gcc_target_platform} --with-cpu=v7
+%endif
+%ifarch ppc
+ --host=%{gcc_target_platform} --build=%{gcc_target_platform} --target=%{gcc_target_platform} --with-cpu=default32
+%endif
+%ifnarch sparc ppc
+ --host=%{gcc_target_platform}
+%endif
+
+make %{?_smp_mflags} BOOT_CFLAGS="$OPT_FLAGS" bootstrap
+#%ifarch %{ix86} x86_64
+#make %{?_smp_mflags} BOOT_CFLAGS="$OPT_FLAGS" profiledbootstrap
+#%else
+#make %{?_smp_mflags} BOOT_CFLAGS="$OPT_FLAGS" bootstrap-lean
+#%endif
+
+# run the tests.
+make %{?_smp_mflags} -k check RUNTESTFLAGS="ALT_CC_UNDER_TEST=gcc ALT_CXX_UNDER_TEST=g++" || :
+cd gcc
+mv testsuite{,.normal}
+make %{?_smp_mflags} -k \
+ `sed -n 's/check-ada//;s/^CHECK_TARGETS[[:blank:]]*=[[:blank:]]*//p' Makefile` \
+ RUNTESTFLAGS="--target_board=unix/-fstack-protector ALT_CC_UNDER_TEST=gcc ALT_CXX_UNDER_TEST=g++" || :
+mv testsuite{,.ssp}
+mv testsuite{.normal,}
+cd ..
+echo ====================TESTING=========================
+( ../contrib/test_summary || : ) 2>&1 | sed -n '/^cat.*EOF/,/^EOF/{/^cat.*EOF/d;/^EOF/d;/^LAST_UPDATED:/d;p;}'
+echo ====================TESTING END=====================
+
+# Make protoize
+make -C gcc CC="./xgcc -B ./ -O2" proto
+
+%ifarch sparc ppc
+# Build the -m32 only compiler which does not use long long for HOST_WIDE_INT
+mkdir gcc32
+cd gcc32
+OPT_FLAGS=`echo $RPM_OPT_FLAGS|sed -e 's/-fno-rtti//g' -e 's/-fno-exceptions//g'`
+echo "#!/bin/sh" > gcc32
+echo "exec `cd ../gcc; pwd`/xgcc -B `cd ../gcc; pwd`/ $OPT_FLAGS "'"$@"' >> gcc32
+chmod +x gcc32
+CC=`pwd`/gcc32 CFLAGS="$OPT_FLAGS" CXXFLAGS="$OPT_FLAGS" XCFLAGS="$OPT_FLAGS" \
+ TCFLAGS="$OPT_FLAGS" ../../configure --prefix=%{_prefix} --mandir=%{_mandir} --infodir=%{_infodir} \
+ --enable-shared --enable-threads=posix --enable-checking=release --disable-libunwind-exceptions \
+ --with-system-zlib --enable-__cxa_atexit --enable-languages=c,c++ \
+ --host=%{_target_platform} --build=%{_target_platform} --target=%{_target_platform}
+make %{?_smp_mflags} BOOT_CFLAGS="$OPT_FLAGS" all-gcc
+cd ..
+%endif
+
+# Make generated man pages even if Pod::Man is not new enough
+perl -pi -e 's/head3/head2/' ../contrib/texi2pod.pl
+for i in ../gcc/doc/*.texi; do
+ cp -a $i $i.orig; sed 's/ftable/table/' $i.orig > $i
+done
+make -C gcc generated-manpages
+for i in ../gcc/doc/*.texi; do mv -f $i.orig $i; done
+
+# Copy various doc files here and there
+cd ..
+mkdir -p rpm.doc/gfortran rpm.doc/objc
+mkdir -p rpm.doc/boehm-gc rpm.doc/fastjar rpm.doc/libffi rpm.doc/libjava
+mkdir -p rpm.doc/changelogs/{gcc/cp,gcc/java,gcc/ada,libstdc++-v3,libobjc,libmudflap,libgomp}
+
+for i in {gcc,gcc/cp,gcc/java,gcc/ada,libstdc++-v3,libobjc,libmudflap,libgomp}/ChangeLog*; do
+ cp -p $i rpm.doc/changelogs/$i
+done
+
+(cd gcc/f; for i in ChangeLog*; do
+ cp -p $i ../../rpm.doc/gfortran/$i.f
+done)
+(cd libgfortran; for i in ChangeLog*; do
+ cp -p $i ../rpm.doc/gfortran/$i.libgfortran
+done)
+(cd gcc/objc; for i in README*; do
+ cp -p $i ../../rpm.doc/objc/$i.objc
+done)
+(cd libobjc; for i in README*; do
+ cp -p $i ../rpm.doc/objc/$i.libobjc
+done)
+(cd boehm-gc; for i in ChangeLog*; do
+ cp -p $i ../rpm.doc/boehm-gc/$i.gc
+done)
+(cd fastjar; for i in ChangeLog* README*; do
+ cp -p $i ../rpm.doc/fastjar/$i.fastjar
+done)
+(cd libffi; for i in ChangeLog* README* LICENSE; do
+ cp -p $i ../rpm.doc/libffi/$i.libffi
+done)
+(cd libjava; for i in ChangeLog* README*; do
+ cp -p $i ../rpm.doc/libjava/$i.libjava
+done)
+cp -p libjava/LIBGCJ_LICENSE rpm.doc/libjava/
+
+rm -f rpm.doc/changelogs/gcc/ChangeLog.[1-9]
+find rpm.doc -name \*ChangeLog\* | xargs bzip2 -9
+
+%install
+rm -fr $RPM_BUILD_ROOT
+
+perl -pi -e \
+ 's~href="l(ibstdc|atest)~href="http://gcc.gnu.org/onlinedocs/libstdc++/l\1~' \
+ libstdc++-v3/docs/html/documentation.html
+ln -sf documentation.html libstdc++-v3/docs/html/index.html
+
+cd obj-%{gcc_target_platform}
+
+if [ ! -f /usr/lib/locale/de_DE/LC_CTYPE ]; then
+ export LOCPATH=`pwd`/locale:/usr/lib/locale
+fi
+
+TARGET_PLATFORM=%{gcc_target_platform}
+
+# There are some MP bugs in libstdc++ Makefiles
+make -C %{gcc_target_platform}/libstdc++-v3
+
+make prefix=$RPM_BUILD_ROOT%{_prefix} mandir=$RPM_BUILD_ROOT%{_mandir} \
+ infodir=$RPM_BUILD_ROOT%{_infodir} install
+%if %{build_java}
+make DESTDIR=$RPM_BUILD_ROOT -C %{gcc_target_platform}/libjava install-src.zip
+%endif
+%if %{build_ada}
+chmod 644 $RPM_BUILD_ROOT%{_infodir}/gnat*
+%endif
+
+FULLPATH=$RPM_BUILD_ROOT%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}
+FULLEPATH=$RPM_BUILD_ROOT%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_version}
+
+# fix some things
+ln -sf gcc $RPM_BUILD_ROOT%{_prefix}/bin/cc
+mkdir -p $RPM_BUILD_ROOT/lib
+ln -sf ..%{_prefix}/bin/cpp $RPM_BUILD_ROOT/lib/cpp
+ln -sf gfortran $RPM_BUILD_ROOT%{_prefix}/bin/f95
+rm -f $RPM_BUILD_ROOT%{_infodir}/dir
+gzip -9 $RPM_BUILD_ROOT%{_infodir}/*.info*
+ln -sf gcc $RPM_BUILD_ROOT%{_prefix}/bin/gnatgcc
+
+cxxconfig="`find %{gcc_target_platform}/libstdc++-v3/include -name c++config.h`"
+for i in `find %{gcc_target_platform}/[36]*/libstdc++-v3/include -name c++config.h 2>/dev/null`; do
+ if ! diff -up $cxxconfig $i; then
+ cat > $RPM_BUILD_ROOT%{_prefix}/include/c++/%{gcc_version}/%{gcc_target_platform}/bits/c++config.h <<EOF
+#ifndef _CPP_CPPCONFIG_WRAPPER
+#define _CPP_CPPCONFIG_WRAPPER 1
+#include <bits/wordsize.h>
+#if __WORDSIZE == 32
+%ifarch %{multilib_64_archs}
+`cat $(find %{gcc_target_platform}/32/libstdc++-v3/include -name c++config.h)`
+%else
+`cat $(find %{gcc_target_platform}/libstdc++-v3/include -name c++config.h)`
+%endif
+#else
+%ifarch %{multilib_64_archs}
+`cat $(find %{gcc_target_platform}/libstdc++-v3/include -name c++config.h)`
+%else
+`cat $(find %{gcc_target_platform}/64/libstdc++-v3/include -name c++config.h)`
+%endif
+#endif
+#endif
+EOF
+ break
+ fi
+done
+
+%ifarch sparc ppc
+# Install the sparc/ppc -m32 only compilers
+FULLPATH32=$RPM_BUILD_ROOT%{_prefix}/lib/gcc/%{_target_platform}/%{gcc_version}
+FULLEPATH32=$RPM_BUILD_ROOT%{_prefix}/libexec/gcc/%{_target_platform}/%{gcc_version}
+mkdir -p $FULLPATH32 $FULLEPATH32
+ln -sf %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include \
+ $FULLPATH32/
+install -m 755 gcc32/gcc/cc1 $FULLEPATH32/
+install -m 755 gcc32/gcc/cc1plus $FULLEPATH32/
+ln -f $RPM_BUILD_ROOT%{_prefix}/bin/%{gcc_target_platform}-gcc \
+ $RPM_BUILD_ROOT%{_prefix}/bin/%{_target_platform}-gcc
+%endif
+%ifarch sparc ppc
+cp -al $RPM_BUILD_ROOT%{_prefix}/include/c++/%{gcc_version}/%{gcc_target_platform} \
+ $RPM_BUILD_ROOT%{_prefix}/include/c++/%{gcc_version}/%{_target_platform}
+%endif
+%ifarch sparc64
+ln -f $RPM_BUILD_ROOT%{_prefix}/bin/%{gcc_target_platform}-gcc \
+ $RPM_BUILD_ROOT%{_prefix}/bin/sparc-%{_vendor}-%{_target_os}-gcc
+%endif
+%ifarch ppc64
+ln -f $RPM_BUILD_ROOT%{_prefix}/bin/%{gcc_target_platform}-gcc \
+ $RPM_BUILD_ROOT%{_prefix}/bin/ppc-%{_vendor}-%{_target_os}-gcc
+%endif
+
+%ifarch sparc ppc
+FULLLPATH=$FULLPATH/lib32
+%endif
+%ifarch sparc64 ppc64
+FULLLPATH=$FULLPATH/lib64
+%endif
+if [ -n "$FULLLPATH" ]; then
+ mkdir -p $FULLLPATH
+else
+ FULLLPATH=$FULLPATH
+fi
+
+find $RPM_BUILD_ROOT -name \*.la | xargs rm -f
+if [ "%{build_java}" -gt 0 ]; then
+# gcj -static doesn't work properly anyway, unless using --whole-archive
+# and saving 35MB is not bad.
+find $RPM_BUILD_ROOT -name libgcj.a -o -name lib-gnu-java-awt-peer-gtk.a \
+ -o -name libgjsmalsa.a \
+ -o -name libgij.a -o -name libgcjawt.a | xargs rm -f
+
+mv $RPM_BUILD_ROOT%{_prefix}/lib/libgcj.spec $FULLPATH/
+sed -i -e 's/lib: /&%%{static:%%eJava programs cannot be linked statically}/' \
+ $FULLPATH/libgcj.spec
+fi
+
+mkdir -p $RPM_BUILD_ROOT/%{_lib}
+mv -f $RPM_BUILD_ROOT%{_prefix}/%{_lib}/libgcc_s.so.1 $RPM_BUILD_ROOT/%{_lib}/libgcc_s-%{gcc_version}-%{DATE}.so.1
+chmod 755 $RPM_BUILD_ROOT/%{_lib}/libgcc_s-%{gcc_version}-%{DATE}.so.1
+ln -sf libgcc_s-%{gcc_version}-%{DATE}.so.1 $RPM_BUILD_ROOT/%{_lib}/libgcc_s.so.1
+ln -sf /%{_lib}/libgcc_s.so.1 $FULLPATH/libgcc_s.so
+%ifarch sparc ppc
+ln -sf /lib64/libgcc_s.so.1 $FULLPATH/64/libgcc_s.so
+%endif
+%ifarch %{multilib_64_archs}
+ln -sf /lib/libgcc_s.so.1 $FULLPATH/32/libgcc_s.so
+%endif
+
+mv -f $RPM_BUILD_ROOT%{_prefix}/%{_lib}/libgomp.spec $FULLPATH/
+mv -f $RPM_BUILD_ROOT%{_prefix}/include/omp.h $FULLPATH/include/
+mkdir -p $FULLPATH/finclude
+mv -f $RPM_BUILD_ROOT%{_prefix}/include/omp_lib* $FULLPATH/finclude/
+
+%if %{build_ada}
+mv -f $FULLPATH/adalib/libgnarl-*.so $RPM_BUILD_ROOT%{_prefix}/%{_lib}/
+mv -f $FULLPATH/adalib/libgnat-*.so $RPM_BUILD_ROOT%{_prefix}/%{_lib}/
+rm -f $FULLPATH/adalib/libgnarl.so* $FULLPATH/adalib/libgnat.so*
+%endif
+
+mkdir -p $RPM_BUILD_ROOT%{_prefix}/libexec/getconf
+if gcc/xgcc -B gcc/ -E -dD -xc /dev/null | grep __LONG_MAX__.*2147483647; then
+ ln -sf POSIX_V6_ILP32_OFF32 $RPM_BUILD_ROOT%{_prefix}/libexec/getconf/default
+else
+ ln -sf POSIX_V6_LP64_OFF64 $RPM_BUILD_ROOT%{_prefix}/libexec/getconf/default
+fi
+
+%if %{build_java}
+#mv -f $RPM_BUILD_ROOT%{_prefix}/%{_lib}/classpath/libgjsmalsa.so* \
+# $RPM_BUILD_ROOT%{_prefix}/%{_lib}/
+mv -f $RPM_BUILD_ROOT%{_prefix}/lib/classpath/libgjsmalsa.so* \
+ $RPM_BUILD_ROOT%{_prefix}/%{_lib}/
+%endif
+
+pushd $FULLPATH
+if [ "%{_lib}" = "lib" ]; then
+ln -sf ../../../libobjc.so.1 libobjc.so
+ln -sf ../../../libstdc++.so.6.* libstdc++.so
+ln -sf ../../../libgfortran.so.1.* libgfortran.so
+ln -sf ../../../libgomp.so.1.* libgomp.so
+ln -sf ../../../libmudflap.so.0.* libmudflap.so
+ln -sf ../../../libmudflapth.so.0.* libmudflapth.so
+%if %{build_java}
+ln -sf ../../../libgcj.so.6.* libgcj.so
+ln -sf ../../../lib-gnu-java-awt-peer-gtk.so.6.* lib-gnu-java-awt-peer-gtk.so
+ln -sf ../../../libgjsmalsa.so.6.* libgjsmalsa.so
+ln -sf ../../../libgij.so.6.* libgij.so
+ln -sf ../../../libgcjawt.so.6.* libgcjawt.so
+%endif
+%if %{build_ada}
+cd adalib
+ln -sf ../../../../libgnarl-*.so libgnarl.so
+ln -sf ../../../../libgnarl-*.so libgnarl-4.1.so
+ln -sf ../../../../libgnat-*.so libgnat.so
+ln -sf ../../../../libgnat-*.so libgnat-4.1.so
+cd ..
+%endif
+else
+ln -sf ../../../../%{_lib}/libobjc.so.1 libobjc.so
+ln -sf ../../../../%{_lib}/libstdc++.so.6.* libstdc++.so
+ln -sf ../../../../%{_lib}/libgfortran.so.1.* libgfortran.so
+ln -sf ../../../../%{_lib}/libgomp.so.1.* libgomp.so
+ln -sf ../../../../%{_lib}/libmudflap.so.0.* libmudflap.so
+ln -sf ../../../../%{_lib}/libmudflapth.so.0.* libmudflapth.so
+%if %{build_java}
+ln -sf ../../../../%{_lib}/libgcj.so.6.* libgcj.so
+ln -sf ../../../../%{_lib}/lib-gnu-java-awt-peer-gtk.so.6.* lib-gnu-java-awt-peer-gtk.so
+ln -sf ../../../../%{_lib}/libgjsmalsa.so.6.* libgjsmalsa.so
+ln -sf ../../../../%{_lib}/libgij.so.6.* libgij.so
+ln -sf ../../../../%{_lib}/libgcjawt.so.6.* libgcjawt.so
+%endif
+%if %{build_ada}
+cd adalib
+ln -sf ../../../../../%{_lib}/libgnarl-*.so libgnarl.so
+ln -sf ../../../../../%{_lib}/libgnarl-*.so libgnarl-4.1.so
+ln -sf ../../../../../%{_lib}/libgnat-*.so libgnat.so
+ln -sf ../../../../../%{_lib}/libgnat-*.so libgnat-4.1.so
+cd ..
+%endif
+fi
+mv -f $RPM_BUILD_ROOT%{_prefix}/%{_lib}/libstdc++.*a $FULLLPATH/
+mv -f $RPM_BUILD_ROOT%{_prefix}/%{_lib}/libsupc++.*a .
+mv -f $RPM_BUILD_ROOT%{_prefix}/%{_lib}/libgfortran.*a .
+mv -f $RPM_BUILD_ROOT%{_prefix}/%{_lib}/libgfortranbegin.*a .
+mv -f $RPM_BUILD_ROOT%{_prefix}/%{_lib}/libobjc.*a .
+mv -f $RPM_BUILD_ROOT%{_prefix}/%{_lib}/libgomp.*a .
+mv -f $RPM_BUILD_ROOT%{_prefix}/%{_lib}/libmudflap{,th}.*a .
+mv -f $RPM_BUILD_ROOT%{_prefix}/include/mf-runtime.h include/
+
+%ifarch sparc ppc
+ln -sf ../../../../../lib64/libobjc.so.1 64/libobjc.so
+ln -sf ../`echo ../../../../lib/libstdc++.so.6.* | sed s~/lib/~/lib64/~` 64/libstdc++.so
+ln -sf ../`echo ../../../../lib/libgfortran.so.1.* | sed s~/lib/~/lib64/~` 64/libgfortran.so
+ln -sf ../`echo ../../../../lib/libgomp.so.1.* | sed s~/lib/~/lib64/~` 64/libgomp.so
+ln -sf ../`echo ../../../../lib/libmudflap.so.0.* | sed s~/lib/~/lib64/~` 64/libmudflap.so
+ln -sf ../`echo ../../../../lib/libmudflapth.so.0.* | sed s~/lib/~/lib64/~` 64/libmudflapth.so
+if [ "%{build_java}" -gt 0 ]; then
+ln -sf ../`echo ../../../../lib/libgcj.so.6.* | sed s~/lib/~/lib64/~` 64/libgcj.so
+ln -sf ../`echo ../../../../lib/lib-gnu-java-awt-peer-gtk.so.6.* | sed s~/lib/~/lib64/~` 64/lib-gnu-java-awt-peer-gtk.so
+ln -sf ../`echo ../../../../lib/libgjsmalsa.so.6.* | sed s~/lib/~/lib64/~` 64/libgjsmalsa.so
+ln -sf ../`echo ../../../../lib/libgij.so.6.* | sed s~/lib/~/lib64/~` 64/libgij.so
+ln -sf ../`echo ../../../../lib/libgcjawt.so.6.* | sed s~/lib/~/lib64/~` 64/libgcjawt.so
+fi
+mv -f $RPM_BUILD_ROOT%{_prefix}/lib64/libsupc++.*a 64/
+mv -f $RPM_BUILD_ROOT%{_prefix}/lib64/libgfortran.*a 64/
+mv -f $RPM_BUILD_ROOT%{_prefix}/lib64/libgfortranbegin.*a 64/
+mv -f $RPM_BUILD_ROOT%{_prefix}/lib64/libobjc.*a 64/
+mv -f $RPM_BUILD_ROOT%{_prefix}/lib64/libgomp.*a 64/
+mv -f $RPM_BUILD_ROOT%{_prefix}/lib64/libmudflap{,th}.*a 64/
+ln -sf lib32/libstdc++.a libstdc++.a
+ln -sf ../lib64/libstdc++.a 64/libstdc++.a
+%endif
+%ifarch %{multilib_64_archs}
+mkdir -p 32
+ln -sf ../../../../libobjc.so.1 32/libobjc.so
+ln -sf ../`echo ../../../../lib64/libstdc++.so.6.* | sed s~/../lib64/~/~` 32/libstdc++.so
+ln -sf ../`echo ../../../../lib64/libgfortran.so.1.* | sed s~/../lib64/~/~` 32/libgfortran.so
+ln -sf ../`echo ../../../../lib64/libgomp.so.1.* | sed s~/../lib64/~/~` 32/libgomp.so
+ln -sf ../`echo ../../../../lib64/libmudflap.so.0.* | sed s~/../lib64/~/~` 32/libmudflap.so
+ln -sf ../`echo ../../../../lib64/libmudflapth.so.0.* | sed s~/../lib64/~/~` 32/libmudflapth.so
+if [ "%{build_java}" -gt 0 ]; then
+ln -sf ../`echo ../../../../lib64/libgcj.so.6.* | sed s~/../lib64/~/~` 32/libgcj.so
+ln -sf ../`echo ../../../../lib64/lib-gnu-java-awt-peer-gtk.so.6.* | sed s~/../lib64/~/~` 32/lib-gnu-java-awt-peer-gtk.so
+ln -sf ../`echo ../../../../lib64/libgjsmalsa.so.6.* | sed s~/../lib64/~/~` 32/libgjsmalsa.so
+ln -sf ../`echo ../../../../lib64/libgij.so.6.* | sed s~/../lib64/~/~` 32/libgij.so
+ln -sf ../`echo ../../../../lib64/libgcjawt.so.6.* | sed s~/../lib64/~/~` 32/libgcjawt.so
+fi
+mv -f $RPM_BUILD_ROOT%{_prefix}/lib/libsupc++.*a 32/
+mv -f $RPM_BUILD_ROOT%{_prefix}/lib/libgfortran.*a 32/
+mv -f $RPM_BUILD_ROOT%{_prefix}/lib/libgfortranbegin.*a 32/
+mv -f $RPM_BUILD_ROOT%{_prefix}/lib/libobjc.*a 32/
+mv -f $RPM_BUILD_ROOT%{_prefix}/lib/libgomp.*a 32/
+mv -f $RPM_BUILD_ROOT%{_prefix}/lib/libmudflap{,th}.*a 32/
+%endif
+%ifarch sparc64 ppc64
+ln -sf ../lib32/libstdc++.a 32/libstdc++.a
+ln -sf lib64/libstdc++.a libstdc++.a
+%else
+%ifarch %{multilib_64_archs}
+ln -sf ../../../%{multilib_32_arch}-%{_vendor}-%{_target_os}/%{gcc_version}/libstdc++.a 32/libstdc++.a
+if [ "%{build_java}" -gt 0 ]; then
+ln -sf ../../../%{multilib_32_arch}-%{_vendor}-%{_target_os}/%{gcc_version}/libgcj.a 32/libgcj.a
+ln -sf ../../../%{multilib_32_arch}-%{_vendor}-%{_target_os}/%{gcc_version}/lib-gnu-java-awt-peer-gtk.a 32/lib-gnu-java-awt-peer-gtk.a
+ln -sf ../../../%{multilib_32_arch}-%{_vendor}-%{_target_os}/%{gcc_version}/libgij.a 32/libgij.a
+ln -sf ../../../%{multilib_32_arch}-%{_vendor}-%{_target_os}/%{gcc_version}/libgcjawt.a 32/libgcjawt.a
+fi
+%endif
+%endif
+
+# Strip debug info from Fortran/ObjC/Java static libraries
+strip -g `find . \( -name libgfortran.a -o -name libobjc.a -o -name libgomp.a \
+ -o -name libmudflap.a -o -name libmudflapth.a \
+ -o -name libgcc.a -o -name libgcov.a \) -a -type f`
+popd
+chmod 755 $RPM_BUILD_ROOT%{_prefix}/%{_lib}/libgfortran.so.1.*
+chmod 755 $RPM_BUILD_ROOT%{_prefix}/%{_lib}/libgomp.so.1.*
+chmod 755 $RPM_BUILD_ROOT%{_prefix}/%{_lib}/libmudflap{,th}.so.0.*
+chmod 755 $RPM_BUILD_ROOT%{_prefix}/%{_lib}/libobjc.so.1.*
+
+%if %{build_ada}
+chmod 755 $RPM_BUILD_ROOT%{_prefix}/%{_lib}/libgnarl*so*
+chmod 755 $RPM_BUILD_ROOT%{_prefix}/%{_lib}/libgnat*so*
+%endif
+
+for h in `find $FULLPATH/include -name \*.h`; do
+ if grep -q 'It has been auto-edited by fixincludes from' $h; then
+ rh=`grep -A2 'It has been auto-edited by fixincludes from' $h | tail -1 | sed 's|^.*"\(.*\)".*$|\1|'`
+ diff -up $rh $h || :
+ rm -f $h
+ fi
+done
+
+cat > $RPM_BUILD_ROOT%{_prefix}/bin/c89 <<"EOF"
+#!/bin/sh
+fl="-std=c89"
+for opt; do
+ case "$opt" in
+ -ansi|-std=c89|-std=iso9899:1990) fl="";;
+ -std=*) echo "`basename $0` called with non ANSI/ISO C option $opt" >&2
+ exit 1;;
+ esac
+done
+exec gcc $fl ${1+"$@"}
+EOF
+cat > $RPM_BUILD_ROOT%{_prefix}/bin/c99 <<"EOF"
+#!/bin/sh
+fl="-std=c99"
+for opt; do
+ case "$opt" in
+ -std=c99|-std=iso9899:1999) fl="";;
+ -std=*) echo "`basename $0` called with non ISO C99 option $opt" >&2
+ exit 1;;
+ esac
+done
+exec gcc $fl ${1+"$@"}
+EOF
+chmod 755 $RPM_BUILD_ROOT%{_prefix}/bin/c?9
+
+mkdir -p $RPM_BUILD_ROOT%{_prefix}/sbin
+gcc -static -Os %{SOURCE1} -o $RPM_BUILD_ROOT%{_prefix}/sbin/libgcc_post_upgrade
+strip $RPM_BUILD_ROOT%{_prefix}/sbin/libgcc_post_upgrade
+
+cd ..
+%find_lang %{name}
+%find_lang cpplib
+
+# Remove binaries we will not be including, so that they don't end up in
+# gcc-debuginfo
+rm -f $RPM_BUILD_ROOT%{_prefix}/%{_lib}/{libffi*,libiberty.a}
+rm -f $FULLEPATH/install-tools/{mkheaders,fixincl}
+rm -f $RPM_BUILD_ROOT%{_prefix}/lib/{32,64}/libiberty.a
+rm -f $RPM_BUILD_ROOT%{_prefix}/%{_lib}/libssp*
+
+%if %{build_java}
+mkdir -p $RPM_BUILD_ROOT%{_prefix}/share/java/gcj-endorsed \
+ $RPM_BUILD_ROOT%{_prefix}/%{_lib}/gcj-%{version}/classmap.db.d
+chmod 755 $RPM_BUILD_ROOT%{_prefix}/share/java/gcj-endorsed \
+ $RPM_BUILD_ROOT%{_prefix}/%{_lib}/gcj-%{version} \
+ $RPM_BUILD_ROOT%{_prefix}/%{_lib}/gcj-%{version}/classmap.db.d
+touch $RPM_BUILD_ROOT%{_prefix}/%{_lib}/gcj-%{version}/classmap.db
+%endif
+
+%clean
+rm -rf $RPM_BUILD_ROOT
+
+%post
+/sbin/install-info \
+ --info-dir=%{_infodir} %{_infodir}/gcc.info.gz
+
+%preun
+if [ $1 = 0 ]; then
+ /sbin/install-info --delete \
+ --info-dir=%{_infodir} %{_infodir}/gcc.info.gz
+fi
+
+%post -n cpp
+/sbin/install-info \
+ --info-dir=%{_infodir} %{_infodir}/cpp.info.gz
+
+%preun -n cpp
+if [ $1 = 0 ]; then
+ /sbin/install-info --delete \
+ --info-dir=%{_infodir} %{_infodir}/cpp.info.gz
+fi
+
+%post gfortran
+/sbin/install-info \
+ --info-dir=%{_infodir} %{_infodir}/gfortran.info.gz
+
+%preun gfortran
+if [ $1 = 0 ]; then
+ /sbin/install-info --delete \
+ --info-dir=%{_infodir} %{_infodir}/gfortran.info.gz
+fi
+
+%post java
+/sbin/install-info \
+ --info-dir=%{_infodir} %{_infodir}/gcj.info.gz
+
+%preun java
+if [ $1 = 0 ]; then
+ /sbin/install-info --delete \
+ --info-dir=%{_infodir} %{_infodir}/gcj.info.gz
+fi
+
+%post gnat
+/sbin/install-info \
+ --info-dir=%{_infodir} %{_infodir}/gnat_rm.info.gz
+/sbin/install-info \
+ --info-dir=%{_infodir} %{_infodir}/gnat_ugn_unw.info.gz
+/sbin/install-info \
+ --info-dir=%{_infodir} %{_infodir}/gnat-style.info.gz
+
+%preun gnat
+if [ $1 = 0 ]; then
+ /sbin/install-info --delete \
+ --info-dir=%{_infodir} %{_infodir}/gnat_rm.info.gz
+ /sbin/install-info --delete \
+ --info-dir=%{_infodir} %{_infodir}/gnat_ugn_unw.info.gz
+ /sbin/install-info --delete \
+ --info-dir=%{_infodir} %{_infodir}/gnat-style.info.gz
+fi
+
+# Because glibc Prereq's libgcc and /sbin/ldconfig
+# comes from glibc, it might not exist yet when
+# libgcc is installed
+%post -n libgcc -p %{_prefix}/sbin/libgcc_post_upgrade
+
+%post -n libstdc++ -p /sbin/ldconfig
+
+%postun -n libstdc++ -p /sbin/ldconfig
+
+%post -n libobjc -p /sbin/ldconfig
+
+%postun -n libobjc -p /sbin/ldconfig
+
+%post -n libgcj
+/sbin/ldconfig
+/sbin/install-info \
+ --info-dir=%{_infodir} %{_infodir}/fastjar.info.gz
+
+%preun -n libgcj
+if [ $1 = 0 ]; then
+ /sbin/install-info --delete \
+ --info-dir=%{_infodir} %{_infodir}/fastjar.info.gz
+fi
+
+%postun -n libgcj -p /sbin/ldconfig
+
+%post -n libgfortran -p /sbin/ldconfig
+
+%postun -n libgfortran -p /sbin/ldconfig
+
+%post -n libgnat -p /sbin/ldconfig
+
+%postun -n libgnat -p /sbin/ldconfig
+
+%post -n libgomp -p /sbin/ldconfig
+
+%postun -n libgomp -p /sbin/ldconfig
+
+%post -n libmudflap -p /sbin/ldconfig
+
+%postun -n libmudflap -p /sbin/ldconfig
+
+%files -f %{name}.lang
+%defattr(-,root,root)
+%{_prefix}/bin/cc
+%{_prefix}/bin/c89
+%{_prefix}/bin/c99
+%{_prefix}/bin/gcc
+%{_prefix}/bin/gcov
+%{_prefix}/bin/protoize
+%{_prefix}/bin/unprotoize
+%ifarch sparc ppc
+%{_prefix}/bin/%{_target_platform}-gcc
+%endif
+%ifarch sparc64
+%{_prefix}/bin/sparc-%{_vendor}-%{_target_os}-gcc
+%endif
+%ifarch ppc64
+%{_prefix}/bin/ppc-%{_vendor}-%{_target_os}-gcc
+%endif
+%{_prefix}/bin/%{gcc_target_platform}-gcc
+%{_mandir}/man1/gcc.1*
+%{_mandir}/man1/gcov.1*
+%{_infodir}/gcc*
+%dir %{_prefix}/lib/gcc
+%dir %{_prefix}/lib/gcc/%{gcc_target_platform}
+%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}
+%dir %{_prefix}/libexec/gcc
+%dir %{_prefix}/libexec/gcc/%{gcc_target_platform}
+%dir %{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_version}
+%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/stddef.h
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/stdarg.h
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/varargs.h
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/float.h
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/limits.h
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/stdbool.h
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/iso646.h
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/syslimits.h
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/unwind.h
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/omp.h
+%ifarch %{ix86} x86_64
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/mmintrin.h
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/xmmintrin.h
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/emmintrin.h
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/pmmintrin.h
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/mm_malloc.h
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/mm3dnow.h
+%endif
+%ifarch ia64
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/ia64intrin.h
+%endif
+%ifarch ppc ppc64
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/ppc-asm.h
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/altivec.h
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/spe.h
+%endif
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/README
+%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_version}/collect2
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/crt*.o
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libgcc.a
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libgcov.a
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libgcc_eh.a
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libgcc_s.so
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libgomp.spec
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libgomp.a
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libgomp.so
+%ifarch sparc ppc
+%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/64
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/64/crt*.o
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/64/libgcc.a
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/64/libgcov.a
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/64/libgcc_eh.a
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/64/libgcc_s.so
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/64/libgomp.a
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/64/libgomp.so
+%endif
+%ifarch %{multilib_64_archs}
+%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/32
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/32/crt*.o
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/32/libgcc.a
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/32/libgcov.a
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/32/libgcc_eh.a
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/32/libgcc_s.so
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/32/libgomp.a
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/32/libgomp.so
+%endif
+%dir %{_prefix}/libexec/getconf
+%{_prefix}/libexec/getconf/default
+%doc gcc/README* rpm.doc/changelogs/gcc/ChangeLog* gcc/COPYING*
+
+%files -n cpp -f cpplib.lang
+%defattr(-,root,root)
+/lib/cpp
+%{_prefix}/bin/cpp
+%{_mandir}/man1/cpp.1*
+%{_infodir}/cpp*
+%dir %{_prefix}/libexec/gcc
+%dir %{_prefix}/libexec/gcc/%{gcc_target_platform}
+%dir %{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_version}
+%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_version}/cc1
+
+%files -n libgcc
+%defattr(-,root,root)
+/%{_lib}/libgcc_s-%{gcc_version}-%{DATE}.so.1
+/%{_lib}/libgcc_s.so.1
+%{_prefix}/sbin/libgcc_post_upgrade
+%doc gcc/COPYING.LIB
+
+%files c++
+%defattr(-,root,root)
+%{_prefix}/bin/%{gcc_target_platform}-*++
+%{_prefix}/bin/g++
+%{_prefix}/bin/c++
+%{_mandir}/man1/g++.1*
+%dir %{_prefix}/lib/gcc
+%dir %{_prefix}/lib/gcc/%{gcc_target_platform}
+%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}
+%dir %{_prefix}/libexec/gcc
+%dir %{_prefix}/libexec/gcc/%{gcc_target_platform}
+%dir %{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_version}
+%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_version}/cc1plus
+%ifarch sparc ppc
+%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/64
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/64/libstdc++.so
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/64/libstdc++.a
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/64/libsupc++.a
+%endif
+%ifarch %{multilib_64_archs}
+%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/32
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/32/libstdc++.so
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/32/libstdc++.a
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/32/libsupc++.a
+%endif
+%ifarch sparc ppc %{multilib_64_archs}
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libstdc++.so
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libsupc++.a
+%endif
+%ifarch sparc sparc64 ppc ppc64
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libstdc++.a
+%endif
+%doc rpm.doc/changelogs/gcc/cp/ChangeLog*
+
+%files -n libstdc++
+%defattr(-,root,root)
+%{_prefix}/%{_lib}/libstdc++.so.6*
+
+%files -n libstdc++-devel
+%defattr(-,root,root)
+%dir %{_prefix}/include/c++
+%dir %{_prefix}/include/c++/%{gcc_version}
+%{_prefix}/include/c++/%{gcc_version}/[^gj]*
+%dir %{_prefix}/lib/gcc
+%dir %{_prefix}/lib/gcc/%{gcc_target_platform}
+%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}
+%ifarch sparc ppc
+%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/lib32
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/lib32/libstdc++.a
+%endif
+%ifarch sparc64 ppc64
+%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/lib64
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/lib64/libstdc++.a
+%endif
+%ifnarch sparc sparc64 ppc ppc64
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libstdc++.a
+%endif
+%ifnarch sparc ppc %{multilib_64_archs}
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libstdc++.so
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libsupc++.a
+%endif
+%doc rpm.doc/changelogs/libstdc++-v3/ChangeLog* libstdc++-v3/README* libstdc++-v3/docs/html/
+
+%files objc
+%defattr(-,root,root)
+%dir %{_prefix}/lib/gcc
+%dir %{_prefix}/lib/gcc/%{gcc_target_platform}
+%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}
+%dir %{_prefix}/libexec/gcc
+%dir %{_prefix}/libexec/gcc/%{gcc_target_platform}
+%dir %{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_version}
+%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/objc
+%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_version}/cc1obj
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libobjc.a
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libobjc.so
+%ifarch sparc ppc
+%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/64
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/64/libobjc.a
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/64/libobjc.so
+%endif
+%ifarch %{multilib_64_archs}
+%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/32
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/32/libobjc.a
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/32/libobjc.so
+%endif
+%doc rpm.doc/objc/*
+%doc libobjc/THREADS* rpm.doc/changelogs/libobjc/ChangeLog*
+
+%files objc++
+%defattr(-,root,root)
+%dir %{_prefix}/libexec/gcc
+%dir %{_prefix}/libexec/gcc/%{gcc_target_platform}
+%dir %{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_version}
+%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_version}/cc1objplus
+
+%files -n libobjc
+%defattr(-,root,root)
+%{_prefix}/%{_lib}/libobjc.so.1*
+
+%files gfortran
+%defattr(-,root,root)
+%{_prefix}/bin/gfortran
+%{_prefix}/bin/f95
+%{_mandir}/man1/gfortran.1*
+%{_infodir}/gfortran*
+%dir %{_prefix}/lib/gcc
+%dir %{_prefix}/lib/gcc/%{gcc_target_platform}
+%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}
+%dir %{_prefix}/libexec/gcc
+%dir %{_prefix}/libexec/gcc/%{gcc_target_platform}
+%dir %{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_version}
+%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/finclude
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/finclude/omp_lib.h
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/finclude/omp_lib.f90
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/finclude/omp_lib.mod
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/finclude/omp_lib_kinds.mod
+%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_version}/f951
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libgfortranbegin.a
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libgfortran.a
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libgfortran.so
+%ifarch sparc ppc
+%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/64
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/64/libgfortranbegin.a
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/64/libgfortran.a
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/64/libgfortran.so
+%endif
+%ifarch %{multilib_64_archs}
+%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/32
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/32/libgfortranbegin.a
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/32/libgfortran.a
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/32/libgfortran.so
+%endif
+%doc rpm.doc/gfortran/*
+
+%files -n libgfortran
+%defattr(-,root,root)
+%{_prefix}/%{_lib}/libgfortran.so.1*
+
+%if %{build_java}
+%files java
+%defattr(-,root,root)
+%{_prefix}/bin/gcj
+%{_prefix}/bin/gcjh
+%{_prefix}/bin/gjnih
+%{_prefix}/bin/jcf-dump
+%{_prefix}/bin/jv-scan
+%{_mandir}/man1/gcj.1*
+%{_mandir}/man1/gcjh.1*
+%{_mandir}/man1/gjnih.1*
+%{_mandir}/man1/jcf-dump.1*
+%{_mandir}/man1/jv-scan.1*
+%{_infodir}/gcj*
+%dir %{_prefix}/libexec/gcc
+%dir %{_prefix}/libexec/gcc/%{gcc_target_platform}
+%dir %{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_version}
+%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_version}/jc1
+%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_version}/jvgenmain
+%doc rpm.doc/changelogs/gcc/java/ChangeLog*
+
+%files -n libgcj
+%defattr(-,root,root)
+%{_prefix}/bin/jv-convert
+%{_prefix}/bin/gij
+%{_prefix}/bin/fastjar
+%{_prefix}/bin/grepjar
+%{_prefix}/bin/grmic
+%{_prefix}/bin/grmiregistry
+%{_prefix}/bin/gcj-dbtool
+%{_mandir}/man1/fastjar.1*
+%{_mandir}/man1/grepjar.1*
+%{_mandir}/man1/jv-convert.1*
+%{_mandir}/man1/gij.1*
+%{_mandir}/man1/grmic.1*
+%{_mandir}/man1/grmiregistry.1*
+%{_mandir}/man1/gcj-dbtool.1*
+%{_infodir}/fastjar*
+%{_prefix}/%{_lib}/libgcj.so.*
+%{_prefix}/%{_lib}/lib-gnu-java-awt-peer-gtk.so.*
+%{_prefix}/%{_lib}/libgjsmalsa.so.*
+%{_prefix}/%{_lib}/libgij.so.*
+%{_prefix}/%{_lib}/libgcjawt.so.*
+%dir %{_prefix}/share/java
+%{_prefix}/share/java/[^s]*
+%dir %{_prefix}/lib/security
+%config(noreplace) %{_prefix}/lib/security/classpath.security
+%config(noreplace) %{_prefix}/lib/security/libgcj.security
+%{_prefix}/lib/logging.properties
+%dir %{_prefix}/%{_lib}/gcj-%{version}
+%dir %{_prefix}/%{_lib}/gcj-%{version}/classmap.db.d
+%attr(0644,root,root) %verify(not md5 size mtime) %ghost %config(missingok,noreplace) %{_prefix}/%{_lib}/gcj-%{version}/classmap.db
+
+%files -n libgcj-devel
+%defattr(-,root,root)
+%{_prefix}/bin/addr2name.awk
+%dir %{_prefix}/lib/gcc
+%dir %{_prefix}/lib/gcc/%{gcc_target_platform}
+%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}
+%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/gcj
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/jawt.h
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/jawt_md.h
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/jni.h
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/jni_md.h
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/jvmpi.h
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libgcj.spec
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libgcj.so
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/lib-gnu-java-awt-peer-gtk.so
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libgij.so
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libgcjawt.so
+%ifarch sparc ppc
+%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/64
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/64/libgcj.so
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/64/lib-gnu-java-awt-peer-gtk.so
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/64/libgij.so
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/64/libgcjawt.so
+%endif
+%ifarch %{multilib_64_archs}
+%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/32
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/32/libgcj.so
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/32/lib-gnu-java-awt-peer-gtk.so
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/32/libgij.so
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/32/libgcjawt.so
+%endif
+%dir %{_prefix}/include/c++
+%dir %{_prefix}/include/c++/%{gcc_version}
+%{_prefix}/include/c++/%{gcc_version}/[gj]*
+%{_prefix}/lib/pkgconfig/libgcj.pc
+%doc rpm.doc/boehm-gc/* rpm.doc/fastjar/* rpm.doc/libffi/*
+%doc rpm.doc/libjava/*
+%endif
+
+%files -n libgcj-src
+%defattr(-,root,root)
+%dir %{_prefix}/share/java
+%{_prefix}/share/java/src*.zip
+
+%if %{build_ada}
+%files gnat
+%defattr(-,root,root)
+%{_prefix}/bin/gnat*
+%{_prefix}/bin/gpr*
+%{_infodir}/gnat*
+%dir %{_prefix}/lib/gcc
+%dir %{_prefix}/lib/gcc/%{gcc_target_platform}
+%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}
+%dir %{_prefix}/libexec/gcc
+%dir %{_prefix}/libexec/gcc/%{gcc_target_platform}
+%dir %{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_version}
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/adainclude
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/adalib
+%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_version}/gnat1
+%doc rpm.doc/changelogs/gcc/ada/ChangeLog*
+
+%files -n libgnat
+%defattr(-,root,root)
+%{_prefix}/%{_lib}/libgnat-*.so
+%{_prefix}/%{_lib}/libgnarl-*.so
+%endif
+
+%files -n libgomp
+%defattr(-,root,root)
+%{_prefix}/%{_lib}/libgomp.so.1*
+%doc rpm.doc/changelogs/libgomp/ChangeLog*
+
+%files -n libmudflap
+%defattr(-,root,root)
+%{_prefix}/%{_lib}/libmudflap.so.0*
+%{_prefix}/%{_lib}/libmudflapth.so.0*
+
+%files -n libmudflap-devel
+%defattr(-,root,root)
+%dir %{_prefix}/lib/gcc
+%dir %{_prefix}/lib/gcc/%{gcc_target_platform}
+%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}
+%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/include/mf-runtime.h
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libmudflap.a
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libmudflapth.a
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libmudflap.so
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/libmudflapth.so
+%ifarch sparc ppc
+%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/64
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/64/libmudflap.a
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/64/libmudflapth.a
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/64/libmudflap.so
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/64/libmudflapth.so
+%endif
+%ifarch %{multilib_64_archs}
+%dir %{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/32
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/32/libmudflap.a
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/32/libmudflapth.a
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/32/libmudflap.so
+%{_prefix}/lib/gcc/%{gcc_target_platform}/%{gcc_version}/32/libmudflapth.so
+%endif
+%doc rpm.doc/changelogs/libmudflap/ChangeLog*
+
+%ifarch sparc
+%files sparc32
+%defattr(-,root,root)
+%dir %{_prefix}/lib/gcc
+%dir %{_prefix}/lib/gcc/%{_target_platform}
+%dir %{_prefix}/lib/gcc/%{_target_platform}/%{gcc_version}
+%dir %{_prefix}/libexec/gcc
+%dir %{_prefix}/libexec/gcc/%{_target_platform}
+%dir %{_prefix}/libexec/gcc/%{_target_platform}/%{gcc_version}
+%{_prefix}/libexec/gcc/%{_target_platform}/%{gcc_version}/cc1
+%{_prefix}/lib/gcc/%{_target_platform}/%{gcc_version}/include
+
+%files c++-sparc32
+%defattr(-,root,root)
+%dir %{_prefix}/libexec/gcc
+%dir %{_prefix}/libexec/gcc/%{_target_platform}
+%dir %{_prefix}/libexec/gcc/%{_target_platform}/%{gcc_version}
+%{_prefix}/libexec/gcc/%{_target_platform}/%{gcc_version}/cc1plus
+%endif
+
+%ifarch ppc
+%files ppc32
+%defattr(-,root,root)
+%dir %{_prefix}/lib/gcc
+%dir %{_prefix}/lib/gcc/%{_target_platform}
+%dir %{_prefix}/lib/gcc/%{_target_platform}/%{gcc_version}
+%dir %{_prefix}/libexec/gcc
+%dir %{_prefix}/libexec/gcc/%{_target_platform}
+%dir %{_prefix}/libexec/gcc/%{_target_platform}/%{gcc_version}
+%{_prefix}/libexec/gcc/%{_target_platform}/%{gcc_version}/cc1
+%{_prefix}/lib/gcc/%{_target_platform}/%{gcc_version}/include
+
+%files c++-ppc32
+%defattr(-,root,root)
+%dir %{_prefix}/libexec/gcc
+%dir %{_prefix}/libexec/gcc/%{_target_platform}
+%dir %{_prefix}/libexec/gcc/%{_target_platform}/%{gcc_version}
+%{_prefix}/libexec/gcc/%{_target_platform}/%{gcc_version}/cc1plus
+%endif
+
+%changelog
+* Tue Nov 29 2005 Jakub Jelinek <jakub@redhat.com> 4.1.0-0.3
+- fix IA-64 local-exec TLS handling
+- fix IA-64 __sync_fetch_and_{sub,xor,...}
+
+* Mon Nov 28 2005 Jakub Jelinek <jakub@redhat.com> 4.1.0-0.2
+- update from gcc-4_1-branch (-r107462:107618)
+ - PRs fortran/24917, libgcj/25016, libgfortran/24945, middle-end/21309,
+ middle-end/25022, libfortran/24991
+- update from gomp-20050608-branch (up to -r107619)
+ - fix omp_get_wti{me,ck} on older kernels
+- ppc32 EH fix
+- fix #pragma omp atomic
+- resurrected multi32 hack for ppc32 and sparc32
+
+* Thu Nov 24 2005 Jakub Jelinek <jakub@redhat.com> 4.1.0-0.1
+- initial 4.1 package, using newly created redhat/gcc-4_1-branch
diff --git a/sources b/sources
index a1200b5..03cb092 100644
--- a/sources
+++ b/sources
@@ -1 +1 @@
-b86ed46e2feb3747ac4fa9b45ed74ce9 gcc-4.0.2-20051121.tar.bz2
+51cbbf9003c62e5aecf940acd2264add gcc-4.1.0-20051128.tar.bz2
reply other threads:[~2026-06-29 12:21 UTC|newest]
Thread overview: [no followups] expand[flat|nested] mbox.gz Atom feed
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=178273571947.1.6046869841180288828.rpms-gcc-fea77518a0bf@fedoraproject.org \
--to=jakub@fedoraproject.org \
--cc=git-commits@fedoraproject.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox