summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Frysinger <vapier@gentoo.org>2007-12-01 20:58:41 +0000
committerMike Frysinger <vapier@gentoo.org>2007-12-01 20:58:41 +0000
commita7df109e1e6ec2ccb7e9a207e9e316db25db40f9 (patch)
treebcf7fa27ae74c9a19ff9a4e9cb560686b61d5a75 /sys-devel
parentHonour user settings and fix --as-needed, bug #199536. Use DESTDIR and more c... (diff)
downloadgentoo-2-a7df109e1e6ec2ccb7e9a207e9e316db25db40f9.tar.gz
gentoo-2-a7df109e1e6ec2ccb7e9a207e9e316db25db40f9.tar.bz2
gentoo-2-a7df109e1e6ec2ccb7e9a207e9e316db25db40f9.zip
old
(Portage version: 2.1.4_rc4)
Diffstat (limited to 'sys-devel')
-rw-r--r--sys-devel/gcc/files/3.3.3/gcc-3.3.3-norelro.patch11
-rw-r--r--sys-devel/gcc/files/3.3.3/gcc-3.3.3-uclibc-add-ssp.patch11
-rw-r--r--sys-devel/gcc/files/3.4.0/gcc-3.4.0-cc1-no-stack-protector.patch11
-rw-r--r--sys-devel/gcc/files/3.4.0/gcc34-reiser4-fix.patch22
-rw-r--r--sys-devel/gcc/files/3.4.1/gcc-3.4.1-glibc-is-native.patch19
-rw-r--r--sys-devel/gcc/files/3.4.2/810-arm-bigendian-uclibc.patch27
-rw-r--r--sys-devel/gcc/files/3.4.2/gcc-3.4.2-mips-ip28_cache_barriers-v2.patch458
-rw-r--r--sys-devel/gcc/files/3.4.2/gcc-3.4.2-mips-ip28_cache_barriers-v3-ip32r10k.patch517
-rw-r--r--sys-devel/gcc/files/3.4.2/gcc-3.4.2-mips-ip28_cache_barriers-v3.patch517
-rw-r--r--sys-devel/gcc/files/3.4.2/gcc34-fix-sse2_pinsrw.patch38
-rw-r--r--sys-devel/gcc/files/3.4.2/gcc34-m32-no-sse2.patch24
-rw-r--r--sys-devel/gcc/files/3.4.3/gcc-3.4.3-cross-compile.patch113
-rw-r--r--sys-devel/gcc/files/digest-gcc-3.4.1-r318
-rw-r--r--sys-devel/gcc/files/digest-gcc-3.4.4-r118
-rw-r--r--sys-devel/gcc/files/digest-gcc-3.4.518
-rw-r--r--sys-devel/gcc/files/digest-gcc-3.4.5-r118
-rw-r--r--sys-devel/gcc/files/digest-gcc-3.4.618
-rw-r--r--sys-devel/gcc/files/digest-gcc-3.4.6-r118
-rw-r--r--sys-devel/gcc/gcc-3.4.1-r3.ebuild946
-rw-r--r--sys-devel/gcc/gcc-3.4.4-r1.ebuild143
-rw-r--r--sys-devel/gcc/gcc-3.4.5-r1.ebuild144
-rw-r--r--sys-devel/gcc/gcc-3.4.5.ebuild140
-rw-r--r--sys-devel/gcc/gcc-3.4.6-r1.ebuild143
-rw-r--r--sys-devel/gcc/gcc-3.4.6.ebuild143
24 files changed, 0 insertions, 3535 deletions
diff --git a/sys-devel/gcc/files/3.3.3/gcc-3.3.3-norelro.patch b/sys-devel/gcc/files/3.3.3/gcc-3.3.3-norelro.patch
deleted file mode 100644
index 8da6d30168a5..000000000000
--- a/sys-devel/gcc/files/3.3.3/gcc-3.3.3-norelro.patch
+++ /dev/null
@@ -1,11 +0,0 @@
---- gcc-3.3.3/gcc/pie-ssp-chain.h.mps 2004-06-14 22:18:40.000000000 +0200
-+++ gcc-3.3.3/gcc/pie-ssp-chain.h 2004-06-14 22:19:04.000000000 +0200
-@@ -85,7 +85,7 @@
- #endif
-
- #ifdef HAVE_LD_PIE
--#define LINK_PIE_SPEC STD_PIE_TRIGGER( LNK_CHAIN_EXCLUDE( PIE_CHAIN_EXCLUDE(LINKSEC_PIE_LNK) ) ) " " OPP_PIE_TRIGGER() " " STD_RELRO_TRIGGER(LINKSEC_RELRO_LNK) " " OPP_RELRO_TRIGGER() " " STD_NOW_TRIGGER(LINKSEC_NOW_LNK) " " OPP_NOW_TRIGGER()
-+#define LINK_PIE_SPEC STD_PIE_TRIGGER( LNK_CHAIN_EXCLUDE( PIE_CHAIN_EXCLUDE(LINKSEC_PIE_LNK) ) ) " " OPP_PIE_TRIGGER()
- #else
- #error we need ld w/ -pie support
- #endif
diff --git a/sys-devel/gcc/files/3.3.3/gcc-3.3.3-uclibc-add-ssp.patch b/sys-devel/gcc/files/3.3.3/gcc-3.3.3-uclibc-add-ssp.patch
deleted file mode 100644
index 8e52412e3611..000000000000
--- a/sys-devel/gcc/files/3.3.3/gcc-3.3.3-uclibc-add-ssp.patch
+++ /dev/null
@@ -1,11 +0,0 @@
---- gcc-3.3.3/gcc/config/t-linux-uclibc.mps Mon Apr 26 14:51:40 2004
-+++ gcc-3.3.3/gcc/config/t-linux-uclibc Mon Apr 26 14:51:53 2004
-@@ -6,7 +6,7 @@
- # Compile crtbeginS.o and crtendS.o with pic.
- CRTSTUFF_T_CFLAGS_S = $(CRTSTUFF_T_CFLAGS) -fPIC
- # Compile libgcc2.a with pic.
--TARGET_LIBGCC2_CFLAGS = -fPIC
-+TARGET_LIBGCC2_CFLAGS = -fPIC -DHAVE_SYSLOG
-
- # Override t-slibgcc-elf-ver to export some libgcc symbols with
- # the symbol versions that glibc used.
diff --git a/sys-devel/gcc/files/3.4.0/gcc-3.4.0-cc1-no-stack-protector.patch b/sys-devel/gcc/files/3.4.0/gcc-3.4.0-cc1-no-stack-protector.patch
deleted file mode 100644
index 72bce28a552b..000000000000
--- a/sys-devel/gcc/files/3.4.0/gcc-3.4.0-cc1-no-stack-protector.patch
+++ /dev/null
@@ -1,11 +0,0 @@
---- gcc/Makefile.in.mps 2004-06-01 22:06:17.000000000 +0200
-+++ gcc/Makefile.in 2004-06-01 22:06:56.000000000 +0200
-@@ -1845,7 +1845,7 @@ $(out_object_file): $(out_file) $(CONFIG
- output.h $(INSN_ATTR_H) $(SYSTEM_H) toplev.h $(TARGET_H) libfuncs.h \
- $(TARGET_DEF_H) function.h sched-int.h $(TM_P_H) $(EXPR_H) $(OPTABS_H) \
- langhooks.h
-- $(CC) -c $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) \
-+ $(CC) -c $(ALL_CFLAGS) -fno-stack-protector $(ALL_CPPFLAGS) $(INCLUDES) \
- $(out_file) $(OUTPUT_OPTION)
-
- # Build auxiliary files that support ecoff format.
diff --git a/sys-devel/gcc/files/3.4.0/gcc34-reiser4-fix.patch b/sys-devel/gcc/files/3.4.0/gcc34-reiser4-fix.patch
deleted file mode 100644
index f43be66b1677..000000000000
--- a/sys-devel/gcc/files/3.4.0/gcc34-reiser4-fix.patch
+++ /dev/null
@@ -1,22 +0,0 @@
---- gcc/cppfiles.c 2004/06/02 09:00:36 1.1
-+++ gcc/cppfiles.c 2004/06/02 09:20:49
-@@ -329,8 +329,17 @@ find_file_in_dir (cpp_reader *pfile, _cp
-
- if (file->err_no != ENOENT)
- {
-- open_file_failed (pfile, file);
-- return true;
-+ if (file->err_no == EACCES)
-+ {
-+ /* make EACCES non-fatal to fix bug ?? (glibc 2.3.3 on reiser4) */
-+ cpp_errno (pfile, CPP_DL_WARNING, file->path);
-+ return false;
-+ }
-+ else
-+ {
-+ open_file_failed (pfile, file);
-+ return true;
-+ }
- }
-
- free (path);
diff --git a/sys-devel/gcc/files/3.4.1/gcc-3.4.1-glibc-is-native.patch b/sys-devel/gcc/files/3.4.1/gcc-3.4.1-glibc-is-native.patch
deleted file mode 100644
index 8bd8ca9d279a..000000000000
--- a/sys-devel/gcc/files/3.4.1/gcc-3.4.1-glibc-is-native.patch
+++ /dev/null
@@ -1,19 +0,0 @@
---- gcc-3.4.1.old/libstdc++-v3/configure.ac 2004-08-11 09:17:51.817618280 -0400
-+++ gcc-3.4.1/libstdc++-v3/configure.ac 2004-08-11 09:30:10.708289824 -0400
-@@ -39,13 +39,9 @@
- # Handy for debugging:
- #AC_MSG_NOTICE($build / $host / $target / $host_alias / $target_alias); sleep 5
-
--if test "$build" != "$host"; then
-- # We are being configured with some form of cross compiler.
-- GLIBCXX_IS_NATIVE=false
-- GCC_NO_EXECUTABLES
--else
-- GLIBCXX_IS_NATIVE=true
--fi
-+# it seems this gcc always gets this check wrong for multilib on gentoo, so
-+# lets force it to the value it should be.
-+GLIBCXX_IS_NATIVE=true
-
- # Sets up automake. Must come after AC_CANONICAL_SYSTEM. Each of the
- # following is magically included in AUTOMAKE_OPTIONS in each Makefile.am.
diff --git a/sys-devel/gcc/files/3.4.2/810-arm-bigendian-uclibc.patch b/sys-devel/gcc/files/3.4.2/810-arm-bigendian-uclibc.patch
deleted file mode 100644
index a4d87e231741..000000000000
--- a/sys-devel/gcc/files/3.4.2/810-arm-bigendian-uclibc.patch
+++ /dev/null
@@ -1,27 +0,0 @@
-diff -urN gcc-3.4.1-dist/gcc/config/arm/linux-elf.h gcc-3.4.1/gcc/config/arm/linux-elf.h
---- gcc-3.4.1-dist/gcc/config/arm/linux-elf.h 2004-08-16 16:08:18.000000000 -0500
-+++ gcc-3.4.1/gcc/config/arm/linux-elf.h 2004-08-16 16:06:24.000000000 -0500
-@@ -107,7 +107,7 @@
- %{rdynamic:-export-dynamic} \
- %{!dynamic-linker:-dynamic-linker /lib/ld-uClibc.so.0} \
- -X \
-- %{mbig-endian:-EB}" \
-+ %{mbig-endian:-EB} %{mlittle-endian:-EL}" \
- SUBTARGET_EXTRA_LINK_SPEC
- #else
- #define LINK_SPEC "%{h*} %{version:-v} \
-diff -urN gcc-3.4.1-dist/gcc/config.gcc gcc-3.4.1/gcc/config.gcc
---- gcc-3.4.1-dist/gcc/config.gcc 2004-08-16 16:08:18.000000000 -0500
-+++ gcc-3.4.1/gcc/config.gcc 2004-08-16 16:03:25.000000000 -0500
-@@ -666,6 +666,11 @@
- ;;
- arm*-*-linux-uclibc*) # ARM GNU/Linux with ELF - uClibc
- tm_file="dbxelf.h elfos.h linux.h arm/elf.h arm/linux-gas.h arm/linux-elf.h arm/aout.h arm/arm.h"
-+ case $target in
-+ arm*b-*)
-+ tm_defines="TARGET_BIG_ENDIAN_DEFAULT=1 $tm_defines"
-+ ;;
-+ esac
- tmake_file="t-slibgcc-elf-ver t-linux-uclibc arm/t-linux"
- extra_parts="crtbegin.o crtbeginS.o crtend.o crtendS.o"
- gnu_ld=yes
diff --git a/sys-devel/gcc/files/3.4.2/gcc-3.4.2-mips-ip28_cache_barriers-v2.patch b/sys-devel/gcc/files/3.4.2/gcc-3.4.2-mips-ip28_cache_barriers-v2.patch
deleted file mode 100644
index d91c9f2738d5..000000000000
--- a/sys-devel/gcc/files/3.4.2/gcc-3.4.2-mips-ip28_cache_barriers-v2.patch
+++ /dev/null
@@ -1,458 +0,0 @@
---- gcc-3.4.2/gcc/config/mips/mips.h Thu Jul 15 02:42:47 2004
-+++ gcc-3.4.2/gcc/config/mips/mips.h Sat Sep 18 00:41:48 2004
-@@ -122,6 +122,7 @@
- extern const char *mips_isa_string; /* for -mips{1,2,3,4} */
- extern const char *mips_abi_string; /* for -mabi={32,n32,64} */
- extern const char *mips_cache_flush_func;/* for -mflush-func= and -mno-flush-func */
-+extern const char *mips_ip28_cache_barrier;/* for -mip28-cache-barrier */
- extern int mips_string_length; /* length of strings for mips16 */
- extern const struct mips_cpu_info mips_cpu_info_table[];
- extern const struct mips_cpu_info *mips_arch_info;
-@@ -333,6 +334,7 @@
- #define TARGET_MIPS9000 (mips_arch == PROCESSOR_R9000)
- #define TARGET_SB1 (mips_arch == PROCESSOR_SB1)
- #define TARGET_SR71K (mips_arch == PROCESSOR_SR71000)
-+#define TARGET_IP28 (mips_ip28_cache_barrier != 0)
-
- /* Scheduling target defines. */
- #define TUNE_MIPS3000 (mips_tune == PROCESSOR_R3000)
-@@ -752,6 +754,8 @@
- N_("Don't call any cache flush functions"), 0}, \
- { "flush-func=", &mips_cache_flush_func, \
- N_("Specify cache flush function"), 0}, \
-+ { "ip28-cache-barrier", &mips_ip28_cache_barrier, \
-+ N_("Generate special cache barriers for SGI Indigo2 R10k"), 0}, \
- }
-
- /* This is meant to be redefined in the host dependent files. */
-@@ -3448,3 +3452,11 @@
- " TEXT_SECTION_ASM_OP);
- #endif
- #endif
-+
-+#define ASM_OUTPUT_R10K_CACHE_BARRIER(STREAM) \
-+ fprintf (STREAM, "\tcache 0x14,0($sp)\t%s Cache Barrier\n", ASM_COMMENT_START)
-+
-+/*
-+ * mips.h Thu Jul 15 02:42:47 2004
-+ * mips.h Fri Sep 17 23:18:19 2004 ip28
-+ */
---- gcc-3.4.2/gcc/config/mips/mips.c Wed Jul 7 21:21:10 2004
-+++ gcc-3.4.2/gcc/config/mips/mips.c Fri Sep 17 23:33:44 2004
-@@ -502,6 +502,11 @@
-
- const char *mips_cache_flush_func = CACHE_FLUSH_FUNC;
-
-+/* Nonzero means generate special cache barriers to inhibit speculative
-+ stores which might endanger cache coherency or reference invalid
-+ addresses (especially on SGI's Indigo2 R10k (IP28)). */
-+const char *mips_ip28_cache_barrier;
-+
- /* If TRUE, we split addresses into their high and low parts in the RTL. */
- int mips_split_addresses;
-
-@@ -9676,3 +9681,7 @@
- #endif /* TARGET_IRIX */
-
- #include "gt-mips.h"
-+/*
-+ * mips.c Wed Jul 7 21:21:10 2004
-+ * mips.c Fri Sep 17 23:25:53 2004 ip28
-+ */
---- gcc-3.4.2/gcc/final.c Sun Jan 18 23:39:57 2004
-+++ gcc-3.4.2/gcc/final.c Thu Apr 7 00:00:05 2005
-@@ -146,6 +146,13 @@
-
- static rtx last_ignored_compare = 0;
-
-+/* Flag indicating this insn is the start of a new basic block. */
-+
-+#define NEW_BLOCK_LABEL 1
-+#define NEW_BLOCK_BRANCH 2
-+
-+static int new_block = NEW_BLOCK_LABEL;
-+
- /* Assign a unique number to each insn that is output.
- This can be used to generate unique local labels. */
-
-@@ -235,6 +242,7 @@
- #ifdef HAVE_ATTR_length
- static int align_fuzz (rtx, rtx, int, unsigned);
- #endif
-+static int output_store_cache_barrier (FILE *, rtx);
-
- /* Initialize data in final at the beginning of a compilation. */
-
-@@ -1505,6 +1513,7 @@
- int seen = 0;
-
- last_ignored_compare = 0;
-+ new_block = NEW_BLOCK_LABEL;
-
- #ifdef SDB_DEBUGGING_INFO
- /* When producing SDB debugging info, delete troublesome line number
-@@ -1571,6 +1580,7 @@
-
- insn = final_scan_insn (insn, file, optimize, prescan, 0, &seen);
- }
-+ new_block = 0;
- }
-
- const char *
-@@ -1851,6 +1861,7 @@
- #endif
- if (prescan > 0)
- break;
-+ new_block = NEW_BLOCK_LABEL;
-
- if (LABEL_NAME (insn))
- (*debug_hooks->label) (insn);
-@@ -2009,6 +2020,26 @@
-
- break;
- }
-+
-+#ifdef TARGET_IP28
-+ if (new_block)
-+ {
-+ /* .reorder: not really in the branch-delay-slot. */
-+ if (! set_noreorder)
-+ new_block = NEW_BLOCK_LABEL;
-+
-+ if (new_block == NEW_BLOCK_BRANCH)
-+ /* Not yet, only *after* the branch-delay-slot ! */
-+ new_block = NEW_BLOCK_LABEL;
-+ else
-+ {
-+ if (TARGET_IP28)
-+ output_store_cache_barrier (file, insn);
-+ new_block = 0;
-+ }
-+ }
-+#endif
-+
- /* Output this line note if it is the first or the last line
- note in a row. */
- if (notice_source_line (insn))
-@@ -2132,8 +2163,29 @@
- clobbered by the function. */
- if (GET_CODE (XVECEXP (body, 0, 0)) == CALL_INSN)
- {
-+#ifdef TARGET_IP28
-+ if (TARGET_IP28)
-+ new_block = NEW_BLOCK_LABEL;
-+#endif
- CC_STATUS_INIT;
- }
-+#ifdef TARGET_IP28
-+ /* Following a conditional branch sequence, we have a new basic
-+ block. */
-+ if (TARGET_IP28)
-+ {
-+ rtx insn = XVECEXP (body, 0, 0);
-+ rtx body = PATTERN (insn);
-+
-+ if ((GET_CODE (insn) == JUMP_INSN && GET_CODE (body) == SET
-+ && GET_CODE (SET_SRC (body)) != LABEL_REF)
-+ || (GET_CODE (insn) == JUMP_INSN
-+ && GET_CODE (body) == PARALLEL
-+ && GET_CODE (XVECEXP (body, 0, 0)) == SET
-+ && GET_CODE (SET_SRC (XVECEXP (body, 0, 0))) != LABEL_REF))
-+ new_block = NEW_BLOCK_LABEL;
-+ }
-+#endif
- break;
- }
-
-@@ -2188,6 +2240,20 @@
- }
- #endif
-
-+#ifdef TARGET_IP28
-+ /* Following a conditional branch, we have a new basic block.
-+ But if we are inside a sequence, the new block starts after the
-+ last insn of the sequence. */
-+ if (TARGET_IP28 && final_sequence == 0
-+ && (GET_CODE (insn) == CALL_INSN
-+ || (GET_CODE (insn) == JUMP_INSN && GET_CODE (body) == SET
-+ && GET_CODE (SET_SRC (body)) != LABEL_REF)
-+ || (GET_CODE (insn) == JUMP_INSN && GET_CODE (body) == PARALLEL
-+ && GET_CODE (XVECEXP (body, 0, 0)) == SET
-+ && GET_CODE (SET_SRC (XVECEXP (body, 0, 0))) != LABEL_REF)))
-+ new_block = NEW_BLOCK_BRANCH;
-+#endif
-+
- #ifndef STACK_REGS
- /* Don't bother outputting obvious no-ops, even without -O.
- This optimization is fast and doesn't interfere with debugging.
-@@ -2402,6 +2468,7 @@
-
- if (prev_nonnote_insn (insn) != last_ignored_compare)
- abort ();
-+ new_block = 0;
-
- /* We have already processed the notes between the setter and
- the user. Make sure we don't process them again, this is
-@@ -2435,6 +2502,7 @@
- abort ();
- #endif
-
-+ new_block = 0;
- return new;
- }
-
-@@ -3866,3 +3934,254 @@
- symbol_queue_size = 0;
- }
- }
-+
-+
-+#ifdef TARGET_IP28
-+
-+/* Check, whether an instruction is a possibly harmful store instruction,
-+ i.e. a store which might cause damage, if speculatively executed. */
-+
-+static rtx
-+find_mem_expr (rtx xexp)
-+{
-+ if (xexp)
-+ {
-+ const char *fmt;
-+ int i, j, lng;
-+ rtx x;
-+ RTX_CODE code = GET_CODE (xexp);
-+
-+ if (MEM == code)
-+ return xexp;
-+
-+ fmt = GET_RTX_FORMAT (code);
-+ lng = GET_RTX_LENGTH (code);
-+
-+ for (i = 0; i < lng; ++i)
-+ switch (fmt[i])
-+ {
-+ case 'e':
-+ x = find_mem_expr (XEXP (xexp, i));
-+ if (x)
-+ return x;
-+ break;
-+ case 'E':
-+ if (XVEC (xexp, i))
-+ for (j = 0; j < XVECLEN (xexp, i); ++j)
-+ {
-+ x = find_mem_expr (XVECEXP (xexp, i, j));
-+ if (x)
-+ return x;
-+ }
-+ }
-+ }
-+ return 0;
-+}
-+
-+static int
-+check_mem_expr (rtx memx)
-+{
-+ /* Check the expression `memx' (with type GET_CODE(memx) == MEM)
-+ for the most common stackpointer-addressing modes.
-+ It's not worthwile to avoid a cache barrier also on the
-+ remaining unfrequently used modes. */
-+ rtx x = XEXP (memx, 0);
-+ switch (GET_CODE (x))
-+ {
-+ case REG:
-+ if (REGNO (x) == STACK_POINTER_REGNUM)
-+ return 0;
-+ default:
-+ break;
-+ case PLUS: case MINUS: /* always `SP + const' ? */
-+ if (GET_CODE (XEXP (x, 1)) == REG
-+ && REGNO (XEXP (x, 1)) == STACK_POINTER_REGNUM)
-+ return 0;
-+ case NEG: case SIGN_EXTEND: case ZERO_EXTEND:
-+ if (GET_CODE (XEXP (x, 0)) == REG
-+ && REGNO (XEXP (x, 0)) == STACK_POINTER_REGNUM)
-+ return 0;
-+ }
-+
-+ /* Stores/Loads to/from constant addresses can be considered
-+ harmless, since:
-+ 1) the address is always valid, even when taken speculatively.
-+ 2a) the location is (hopefully) never used as a dma-target, thus
-+ there is no danger of cache-inconsistency.
-+ 2b) uncached loads/stores are guaranteed to be non-speculative. */
-+ if ( CONSTANT_P(x) )
-+ return 0;
-+
-+ return 1;
-+}
-+
-+/* inline */ static int
-+check_pattern_for_store (rtx body)
-+{
-+ /* Check for (set (mem:M (non_stackpointer_address) ...)). Here we
-+ assume, that addressing with the stackpointer accesses neither
-+ uncached-aliased nor invalid memory. (May be, this applies to the
-+ global pointer and frame pointer also, but its saver not to assume
-+ it. And probably it's not worthwile to regard these registers)
-+
-+ Speculative loads from invalid addresses also cause bus errors...
-+ So check for (set (reg:M ...) (mem:M (non_stackpointer_address)))
-+ too. */
-+
-+ if (body && GET_CODE (body) == SET)
-+ {
-+ rtx x = find_mem_expr (body);
-+
-+ if (x && check_mem_expr (x))
-+ return 1;
-+ }
-+ return 0;
-+}
-+
-+static int
-+check_insn_for_store (int state, rtx insn)
-+{
-+ /* Check for (ins (set (mem:M (dangerous_address)) ...)) or end of the
-+ current basic block.
-+ Criteria to recognize end-of/next basic-block are reduplicated here
-+ from final_scan_insn. */
-+
-+ rtx body;
-+ int code;
-+
-+ if (INSN_DELETED_P (insn))
-+ return 0;
-+
-+ switch (code = GET_CODE (insn))
-+ {
-+ case CODE_LABEL:
-+ return -1;
-+ case CALL_INSN:
-+ case JUMP_INSN:
-+ case INSN:
-+ body = PATTERN (insn);
-+ if (GET_CODE (body) == SEQUENCE)
-+ {
-+ /* A delayed-branch sequence */
-+ rtx ins0 = XVECEXP (body, 0, 0);
-+ rtx pat0 = PATTERN (ins0);
-+ int i;
-+ for (i = 0; i < XVECLEN (body, 0); i++)
-+ {
-+ rtx insq = XVECEXP (body, 0, i);
-+ if (! INSN_DELETED_P (insq))
-+ {
-+ int j = check_insn_for_store (state|1, insq);
-+ if (j)
-+ return j;
-+ }
-+ }
-+ /* Following a conditional branch sequence, we have a new
-+ basic block. */
-+ if (GET_CODE (ins0) == JUMP_INSN)
-+ if ((GET_CODE (pat0) == SET
-+ && GET_CODE (SET_SRC (pat0)) != LABEL_REF)
-+ || (GET_CODE (pat0) == PARALLEL
-+ && GET_CODE (XVECEXP (pat0, 0, 0)) == SET
-+ && GET_CODE (SET_SRC (XVECEXP (pat0, 0, 0))) != LABEL_REF))
-+ return -1;
-+ /* Handle a call sequence like a conditional branch sequence */
-+ if (GET_CODE (ins0) == CALL_INSN)
-+ return -1;
-+ break;
-+ }
-+ if (GET_CODE (body) == PARALLEL)
-+ {
-+ int i;
-+ for (i = 0; i < XVECLEN (body, 0); i++)
-+ if (check_pattern_for_store (XVECEXP (body, 0, i)))
-+ return 1;
-+ }
-+ /* Now, only a `simple' INSN or JUMP_INSN remains to be checked. */
-+ if (code == INSN)
-+ {
-+ /* Since we don't know, what's inside, we must take inline
-+ assembly to be dangerous */
-+ if (GET_CODE (body) == ASM_INPUT)
-+ return 1;
-+
-+ if (check_pattern_for_store (body))
-+ return 1;
-+ }
-+ /* Handle a CALL_INSN instruction like a conditional branch */
-+ if (code == JUMP_INSN || code == CALL_INSN)
-+ {
-+ /* Following a conditional branch, we have a new basic block. */
-+ int ckds = 0;
-+ if (code == CALL_INSN)
-+ ckds = 1;
-+ else
-+ {
-+ code = GET_CODE (body);
-+ if ((code == SET
-+ && GET_CODE (SET_SRC (body)) != LABEL_REF)
-+ || (code == PARALLEL
-+ && GET_CODE (XVECEXP (body, 0, 0)) == SET
-+ && GET_CODE (SET_SRC (XVECEXP (body, 0, 0))) != LABEL_REF))
-+ ckds = 1;
-+ }
-+ if (ckds)
-+ {
-+ /* But check insn(s) in delay-slot first. If we could know in
-+ advance that this jump is in `.reorder' mode, where gas will
-+ insert a `nop' into the delay-slot, we could skip this test.
-+ Since we don't know, always assume `.noreorder', sometimes
-+ emitting a cache-barrier, that isn't needed. */
-+ /* But if we are here recursively, already checking a (pseudo-)
-+ delay-slot, we are done. */
-+ if ( !(state & 2) )
-+ for (insn = NEXT_INSN (insn); insn; insn = NEXT_INSN (insn))
-+ switch (GET_CODE (insn))
-+ {
-+ case INSN:
-+ if (check_insn_for_store (state|1|2, insn) > 0)
-+ return 1;
-+ case CODE_LABEL:
-+ case CALL_INSN:
-+ case JUMP_INSN:
-+ return -1;
-+ default:
-+ /* skip NOTE,... */;
-+ }
-+ return -1;
-+ }
-+ }
-+ /*break*/
-+ }
-+ return 0;
-+}
-+
-+/* Scan a basic block, starting with `insn', for a possibly harmful store
-+ instruction. If found, output a cache barrier at the start of this
-+ block. */
-+
-+static int
-+output_store_cache_barrier (FILE *file, rtx insn)
-+{
-+ for (; insn; insn = NEXT_INSN (insn))
-+ {
-+ int found = check_insn_for_store (0, insn);
-+ if (found < 0)
-+ break;
-+ if (found > 0)
-+ {
-+ /* found critical store instruction */
-+ ASM_OUTPUT_R10K_CACHE_BARRIER(file);
-+ return 1;
-+ }
-+ }
-+ fprintf(file, "\t%s Cache Barrier omitted.\n", ASM_COMMENT_START);
-+ return 0;
-+}
-+
-+#endif /* TARGET_IP28 */
-+
-+/*
-+ * final.c Sun Jan 18 23:39:57 2004
-+ * final.c Sat Sep 18 00:23:34 2004 ip28
-+ */
diff --git a/sys-devel/gcc/files/3.4.2/gcc-3.4.2-mips-ip28_cache_barriers-v3-ip32r10k.patch b/sys-devel/gcc/files/3.4.2/gcc-3.4.2-mips-ip28_cache_barriers-v3-ip32r10k.patch
deleted file mode 100644
index 6eb47a05a504..000000000000
--- a/sys-devel/gcc/files/3.4.2/gcc-3.4.2-mips-ip28_cache_barriers-v3-ip32r10k.patch
+++ /dev/null
@@ -1,517 +0,0 @@
---- gcc-3.4.2/gcc/config/mips/mips-protos.h Wed Jul 7 21:21:10 2004
-+++ gcc-3.4.2/gcc/config/mips/mips-protos.h Fri Sep 23 18:11:24 2005
-@@ -154,4 +154,13 @@
- extern const char *current_section_name (void);
- extern unsigned int current_section_flags (void);
-
-+#ifdef TARGET_IP28
-+extern int ip28_set_new_block_label (void);
-+extern int ip28_set_new_block_branch (void);
-+extern int ip28_set_new_block_done (void);
-+extern int ip28_handle_new_block_start (FILE *file, rtx insn);
-+extern int ip28_check_code_default_sequence (FILE *file, rtx body);
-+extern int ip28_check_code_real_insn (FILE *file, rtx insn, int final_sequence);
-+#endif
-+
- #endif /* ! GCC_MIPS_PROTOS_H */
---- gcc-3.4.2/gcc/config/mips/mips.h Thu Jul 15 02:42:47 2004
-+++ gcc-3.4.2/gcc/config/mips/mips.h Sat Sep 18 00:41:48 2004
-@@ -122,6 +122,7 @@
- extern const char *mips_isa_string; /* for -mips{1,2,3,4} */
- extern const char *mips_abi_string; /* for -mabi={32,n32,64} */
- extern const char *mips_cache_flush_func;/* for -mflush-func= and -mno-flush-func */
-+extern const char *mips_ip28_cache_barrier;/* for -mip28-cache-barrier */
- extern int mips_string_length; /* length of strings for mips16 */
- extern const struct mips_cpu_info mips_cpu_info_table[];
- extern const struct mips_cpu_info *mips_arch_info;
-@@ -333,6 +334,7 @@
- #define TARGET_MIPS9000 (mips_arch == PROCESSOR_R9000)
- #define TARGET_SB1 (mips_arch == PROCESSOR_SB1)
- #define TARGET_SR71K (mips_arch == PROCESSOR_SR71000)
-+#define TARGET_IP28 (mips_ip28_cache_barrier != 0)
-
- /* Scheduling target defines. */
- #define TUNE_MIPS3000 (mips_tune == PROCESSOR_R3000)
-@@ -752,6 +754,8 @@
- N_("Don't call any cache flush functions"), 0}, \
- { "flush-func=", &mips_cache_flush_func, \
- N_("Specify cache flush function"), 0}, \
-+ { "ip28-cache-barrier", &mips_ip28_cache_barrier, \
-+ N_("Generate special cache barriers for SGI Indigo2 R10k"), 0}, \
- }
-
- /* This is meant to be redefined in the host dependent files. */
-@@ -3448,3 +3452,7 @@
- " TEXT_SECTION_ASM_OP);
- #endif
- #endif
-+
-+#define ASM_OUTPUT_R10K_CACHE_BARRIER(STREAM) \
-+ fprintf (STREAM, "\tcache 0x14,0($sp)\t%s Cache Barrier\n", ASM_COMMENT_START)
-+
---- gcc-3.4.2/gcc/config/mips/mips.c Wed Jul 7 21:21:10 2004
-+++ gcc-3.4.2/gcc/config/mips/mips.c Fri Sep 23 15:14:50 2005
-@@ -502,6 +502,11 @@
-
- const char *mips_cache_flush_func = CACHE_FLUSH_FUNC;
-
-+/* Nonzero means generate special cache barriers to inhibit speculative
-+ stores which might endanger cache coherency or reference invalid
-+ addresses (especially on SGI's Indigo2 R10k (IP28)). */
-+const char *mips_ip28_cache_barrier;
-+
- /* If TRUE, we split addresses into their high and low parts in the RTL. */
- int mips_split_addresses;
-
-@@ -9673,6 +9678,355 @@
- return flags;
- }
-
-+
- #endif /* TARGET_IRIX */
-+
-+#ifdef TARGET_IP28
-+
-+/* Flag indicating this insn is the start of a new basic block. */
-+
-+#define NEW_BLOCK_LABEL 1
-+#define NEW_BLOCK_BRANCH 2
-+
-+static int new_block = NEW_BLOCK_LABEL;
-+
-+/* Check, whether an instruction is a possibly harmful store instruction,
-+ i.e. a store which might cause damage, if speculatively executed. */
-+
-+static rtx
-+find_mem_expr (rtx xexp)
-+{
-+ if (xexp)
-+ {
-+ const char *fmt;
-+ int i, j, lng;
-+ rtx x;
-+ RTX_CODE code = GET_CODE (xexp);
-+
-+ if (MEM == code)
-+ return xexp;
-+
-+ fmt = GET_RTX_FORMAT (code);
-+ lng = GET_RTX_LENGTH (code);
-+
-+ for (i = 0; i < lng; ++i)
-+ switch (fmt[i])
-+ {
-+ case 'e':
-+ x = find_mem_expr (XEXP (xexp, i));
-+ if (x)
-+ return x;
-+ break;
-+ case 'E':
-+ if (XVEC (xexp, i))
-+ for (j = 0; j < XVECLEN (xexp, i); ++j)
-+ {
-+ x = find_mem_expr (XVECEXP (xexp, i, j));
-+ if (x)
-+ return x;
-+ }
-+ }
-+ }
-+ return 0;
-+}
-+
-+static int
-+check_mem_expr (rtx memx)
-+{
-+ /* Check the expression `memx' (with type GET_CODE(memx) == MEM)
-+ for the most common stackpointer-addressing modes.
-+ It's not worthwile to avoid a cache barrier also on the
-+ remaining unfrequently used modes. */
-+ rtx x = XEXP (memx, 0);
-+ switch (GET_CODE (x))
-+ {
-+ case REG:
-+ if (REGNO (x) == STACK_POINTER_REGNUM)
-+ return 0;
-+ default:
-+ break;
-+ case PLUS: case MINUS: /* always `SP + const' ? */
-+ if (GET_CODE (XEXP (x, 1)) == REG
-+ && REGNO (XEXP (x, 1)) == STACK_POINTER_REGNUM)
-+ return 0;
-+ case NEG: case SIGN_EXTEND: case ZERO_EXTEND:
-+ if (GET_CODE (XEXP (x, 0)) == REG
-+ && REGNO (XEXP (x, 0)) == STACK_POINTER_REGNUM)
-+ return 0;
-+ }
-+
-+ /* Stores/Loads to/from constant addresses can be considered
-+ harmless, since:
-+ 1) the address is always valid, even when taken speculatively.
-+ 2a) the location is (hopefully) never used as a dma-target, thus
-+ there is no danger of cache-inconsistency.
-+ 2b) uncached loads/stores are guaranteed to be non-speculative. */
-+ if ( CONSTANT_P(x) )
-+ return 0;
-+
-+ return 1;
-+}
-+
-+/* inline */ static int
-+check_pattern_for_store (rtx body)
-+{
-+ /* Check for (set (mem:M (non_stackpointer_address) ...)). Here we
-+ assume, that addressing with the stackpointer accesses neither
-+ uncached-aliased nor invalid memory. (May be, this applies to the
-+ global pointer and frame pointer also, but its saver not to assume
-+ it. And probably it's not worthwile to regard these registers)
-+
-+ Speculative loads from invalid addresses also cause bus errors...
-+ So check for (set (reg:M ...) (mem:M (non_stackpointer_address)))
-+ too. */
-+
-+ if (body && GET_CODE (body) == SET)
-+ {
-+ rtx x = find_mem_expr (body);
-+
-+ if (x && check_mem_expr (x))
-+ return 1;
-+ }
-+ return 0;
-+}
-+
-+static int
-+check_insn_for_store (int state, rtx insn)
-+{
-+ /* Check for (ins (set (mem:M (dangerous_address)) ...)) or end of the
-+ current basic block.
-+ Criteria to recognize end-of/next basic-block are reduplicated here
-+ from final_scan_insn. */
-+
-+ rtx body;
-+ int code;
-+
-+ if (INSN_DELETED_P (insn))
-+ return 0;
-+
-+ switch (code = GET_CODE (insn))
-+ {
-+ case CODE_LABEL:
-+ return -1;
-+ case CALL_INSN:
-+ case JUMP_INSN:
-+ case INSN:
-+ body = PATTERN (insn);
-+ if (GET_CODE (body) == SEQUENCE)
-+ {
-+ /* A delayed-branch sequence */
-+ rtx ins0 = XVECEXP (body, 0, 0);
-+ rtx pat0 = PATTERN (ins0);
-+ int i;
-+ for (i = 0; i < XVECLEN (body, 0); i++)
-+ {
-+ rtx insq = XVECEXP (body, 0, i);
-+ if (! INSN_DELETED_P (insq))
-+ {
-+ int j = check_insn_for_store (state|1, insq);
-+ if (j)
-+ return j;
-+ }
-+ }
-+ /* Following a conditional branch sequence, we have a new
-+ basic block. */
-+ if (GET_CODE (ins0) == JUMP_INSN)
-+ if ((GET_CODE (pat0) == SET
-+ && GET_CODE (SET_SRC (pat0)) != LABEL_REF)
-+ || (GET_CODE (pat0) == PARALLEL
-+ && GET_CODE (XVECEXP (pat0, 0, 0)) == SET
-+ && GET_CODE (SET_SRC (XVECEXP (pat0, 0, 0))) != LABEL_REF))
-+ return -1;
-+ /* Handle a call sequence like a conditional branch sequence */
-+ if (GET_CODE (ins0) == CALL_INSN)
-+ return -1;
-+ break;
-+ }
-+ if (GET_CODE (body) == PARALLEL)
-+ {
-+ int i;
-+ for (i = 0; i < XVECLEN (body, 0); i++)
-+ if (check_pattern_for_store (XVECEXP (body, 0, i)))
-+ return 1;
-+ }
-+ /* Now, only a `simple' INSN or JUMP_INSN remains to be checked. */
-+ if (code == INSN)
-+ {
-+ /* Since we don't know, what's inside, we must take inline
-+ assembly to be dangerous */
-+ if (GET_CODE (body) == ASM_INPUT)
-+ return 1;
-+
-+ if (check_pattern_for_store (body))
-+ return 1;
-+ }
-+ /* Handle a CALL_INSN instruction like a conditional branch */
-+ if (code == JUMP_INSN || code == CALL_INSN)
-+ {
-+ /* Following a conditional branch, we have a new basic block. */
-+ int ckds = 0;
-+ if (code == CALL_INSN)
-+ ckds = 1;
-+ else
-+ {
-+ code = GET_CODE (body);
-+ if ((code == SET
-+ && GET_CODE (SET_SRC (body)) != LABEL_REF)
-+ || (code == PARALLEL
-+ && GET_CODE (XVECEXP (body, 0, 0)) == SET
-+ && GET_CODE (SET_SRC (XVECEXP (body, 0, 0))) != LABEL_REF))
-+ ckds = 1;
-+ }
-+ if (ckds)
-+ {
-+ /* But check insn(s) in delay-slot first. If we could know in
-+ advance that this jump is in `.reorder' mode, where gas will
-+ insert a `nop' into the delay-slot, we could skip this test.
-+ Since we don't know, always assume `.noreorder', sometimes
-+ emitting a cache-barrier, that isn't needed. */
-+ /* But if we are here recursively, already checking a (pseudo-)
-+ delay-slot, we are done. */
-+ if ( !(state & 2) )
-+ for (insn = NEXT_INSN (insn); insn; insn = NEXT_INSN (insn))
-+ switch (GET_CODE (insn))
-+ {
-+ case INSN:
-+ if (check_insn_for_store (state|1|2, insn) > 0)
-+ return 1;
-+ case CODE_LABEL:
-+ case CALL_INSN:
-+ case JUMP_INSN:
-+ return -1;
-+ default:
-+ /* skip NOTE,... */;
-+ }
-+ return -1;
-+ }
-+ }
-+ /*break*/
-+ }
-+ return 0;
-+}
-+
-+/* Scan a basic block, starting with `insn', for a possibly harmful store
-+ instruction. If found, output a cache barrier at the start of this
-+ block. */
-+
-+static int
-+output_store_cache_barrier (FILE *file, rtx insn)
-+{
-+ for (; insn; insn = NEXT_INSN (insn))
-+ {
-+ int found = check_insn_for_store (0, insn);
-+ if (found < 0)
-+ break;
-+ if (found > 0)
-+ {
-+ /* found critical store instruction */
-+ ASM_OUTPUT_R10K_CACHE_BARRIER(file);
-+ return 1;
-+ }
-+ }
-+ fprintf(file, "\t%s Cache Barrier omitted.\n", ASM_COMMENT_START);
-+ return 0;
-+}
-+
-+
-+/*
-+ * here follows the interface for gcc/final.c
-+ */
-+
-+int
-+ip28_set_new_block_label (void)
-+{
-+ int i = new_block;
-+ new_block = NEW_BLOCK_LABEL;
-+ return i;
-+}
-+
-+int
-+ip28_set_new_block_branch (void)
-+{
-+ int i = new_block;
-+ new_block = NEW_BLOCK_BRANCH;
-+ return i;
-+}
-+
-+int
-+ip28_set_new_block_done (void)
-+{
-+ int i = new_block;
-+ new_block = 0;
-+ return i;
-+}
-+
-+int
-+ip28_handle_new_block_start (FILE *file, rtx insn)
-+{
-+ if (new_block)
-+ {
-+ /* .reorder: not really in the branch-delay-slot. */
-+ if (! set_noreorder)
-+ new_block = NEW_BLOCK_LABEL;
-+
-+ if (new_block == NEW_BLOCK_BRANCH)
-+ /* Not yet, only *after* the branch-delay-slot ! */
-+ new_block = NEW_BLOCK_LABEL;
-+ else
-+ {
-+ if (TARGET_IP28)
-+ output_store_cache_barrier (file, insn);
-+ new_block = 0;
-+ }
-+ }
-+ return new_block;
-+}
-+
-+int
-+ip28_check_code_default_sequence (FILE *file, rtx body)
-+{
-+ (void)file;
-+
-+ if (TARGET_IP28)
-+ {
-+ rtx insn = XVECEXP (body, 0, 0);
-+ rtx patt = PATTERN (insn);
-+
-+ if (GET_CODE (insn) == CALL_INSN)
-+ new_block = NEW_BLOCK_LABEL;
-+
-+ /* Following a conditional branch sequence, we have a new basic
-+ block. */
-+ if ((GET_CODE (insn) == JUMP_INSN && GET_CODE (patt) == SET
-+ && GET_CODE (SET_SRC (patt)) != LABEL_REF)
-+ || (GET_CODE (insn) == JUMP_INSN
-+ && GET_CODE (patt) == PARALLEL
-+ && GET_CODE (XVECEXP (patt, 0, 0)) == SET
-+ && GET_CODE (SET_SRC (XVECEXP (patt, 0, 0))) != LABEL_REF))
-+ new_block = NEW_BLOCK_LABEL;
-+ }
-+ return new_block;
-+}
-+
-+int
-+ip28_check_code_real_insn (FILE *file, rtx insn, int final_sequence)
-+{
-+ rtx body = PATTERN (insn);
-+
-+ /* Following a conditional branch, we have a new basic block.
-+ But if we are inside a sequence, the new block starts after the
-+ last insn of the sequence. */
-+ if (TARGET_IP28 && final_sequence == 0
-+ && (GET_CODE (insn) == CALL_INSN
-+ || (GET_CODE (insn) == JUMP_INSN && GET_CODE (body) == SET
-+ && GET_CODE (SET_SRC (body)) != LABEL_REF)
-+ || (GET_CODE (insn) == JUMP_INSN && GET_CODE (body) == PARALLEL
-+ && GET_CODE (XVECEXP (body, 0, 0)) == SET
-+ && GET_CODE (SET_SRC (XVECEXP (body, 0, 0))) != LABEL_REF)))
-+ new_block = NEW_BLOCK_BRANCH;
-+ return new_block;
-+}
-+
-+#endif /* TARGET_IP28 */
-
- #include "gt-mips.h"
---- gcc-3.4.2/gcc/final.c Sun Jan 18 23:39:57 2004
-+++ gcc-3.4.2/gcc/final.c Fri Sep 23 15:11:38 2005
-@@ -116,6 +116,16 @@
- #define SEEN_NOTE 2
- #define SEEN_EMITTED 4
-
-+/* suitable for SGI Indigo2 R10k (IP28) kernel-code ? */
-+#ifndef TARGET_IP28
-+#define ip28_set_new_block_label()
-+#define ip28_set_new_block_branch()
-+#define ip28_set_new_block_done()
-+#define ip28_handle_new_block_start(file, insn)
-+#define ip28_check_code_default_sequence(file, body)
-+#define ip28_check_code_real_insn(file, insn, final_sequence)
-+#endif
-+
- /* Last insn processed by final_scan_insn. */
- static rtx debug_insn;
- rtx current_output_insn;
-@@ -1505,6 +1515,7 @@
- int seen = 0;
-
- last_ignored_compare = 0;
-+ ip28_set_new_block_label();
-
- #ifdef SDB_DEBUGGING_INFO
- /* When producing SDB debugging info, delete troublesome line number
-@@ -1571,6 +1582,7 @@
-
- insn = final_scan_insn (insn, file, optimize, prescan, 0, &seen);
- }
-+ ip28_set_new_block_done();
- }
-
- const char *
-@@ -1851,6 +1863,7 @@
- #endif
- if (prescan > 0)
- break;
-+ ip28_set_new_block_label();
-
- if (LABEL_NAME (insn))
- (*debug_hooks->label) (insn);
-@@ -2009,6 +2022,9 @@
-
- break;
- }
-+
-+ ip28_handle_new_block_start(file, insn);
-+
- /* Output this line note if it is the first or the last line
- note in a row. */
- if (notice_source_line (insn))
-@@ -2134,9 +2150,13 @@
- {
- CC_STATUS_INIT;
- }
-+
-+ /* Following a conditional branch sequence, we have a new basic
-+ block. */
-+ ip28_check_code_default_sequence (file, body);
- break;
- }
--
-+
- /* We have a real machine instruction as rtl. */
-
- body = PATTERN (insn);
-@@ -2188,6 +2208,11 @@
- }
- #endif
-
-+ /* Following a conditional branch, we have a new basic block.
-+ But if we are inside a sequence, the new block starts after the
-+ last insn of the sequence. */
-+ ip28_check_code_real_insn (file, insn, final_sequence);
-+
- #ifndef STACK_REGS
- /* Don't bother outputting obvious no-ops, even without -O.
- This optimization is fast and doesn't interfere with debugging.
-@@ -2402,6 +2427,7 @@
-
- if (prev_nonnote_insn (insn) != last_ignored_compare)
- abort ();
-+ ip28_set_new_block_done();
-
- /* We have already processed the notes between the setter and
- the user. Make sure we don't process them again, this is
-@@ -2435,6 +2461,7 @@
- abort ();
- #endif
-
-+ ip28_set_new_block_done();
- return new;
- }
-
diff --git a/sys-devel/gcc/files/3.4.2/gcc-3.4.2-mips-ip28_cache_barriers-v3.patch b/sys-devel/gcc/files/3.4.2/gcc-3.4.2-mips-ip28_cache_barriers-v3.patch
deleted file mode 100644
index 5c3e738e2b59..000000000000
--- a/sys-devel/gcc/files/3.4.2/gcc-3.4.2-mips-ip28_cache_barriers-v3.patch
+++ /dev/null
@@ -1,517 +0,0 @@
---- gcc-3.4.2/gcc/config/mips/mips-protos.h Wed Jul 7 21:21:10 2004
-+++ gcc-3.4.2/gcc/config/mips/mips-protos.h Fri Sep 23 18:11:24 2005
-@@ -154,4 +154,13 @@
- extern const char *current_section_name (void);
- extern unsigned int current_section_flags (void);
-
-+#ifdef TARGET_IP28
-+extern int ip28_set_new_block_label (void);
-+extern int ip28_set_new_block_branch (void);
-+extern int ip28_set_new_block_done (void);
-+extern int ip28_handle_new_block_start (FILE *file, rtx insn);
-+extern int ip28_check_code_default_sequence (FILE *file, rtx body);
-+extern int ip28_check_code_real_insn (FILE *file, rtx insn, int final_sequence);
-+#endif
-+
- #endif /* ! GCC_MIPS_PROTOS_H */
---- gcc-3.4.2/gcc/config/mips/mips.h Thu Jul 15 02:42:47 2004
-+++ gcc-3.4.2/gcc/config/mips/mips.h Sat Sep 18 00:41:48 2004
-@@ -122,6 +122,7 @@
- extern const char *mips_isa_string; /* for -mips{1,2,3,4} */
- extern const char *mips_abi_string; /* for -mabi={32,n32,64} */
- extern const char *mips_cache_flush_func;/* for -mflush-func= and -mno-flush-func */
-+extern const char *mips_ip28_cache_barrier;/* for -mip28-cache-barrier */
- extern int mips_string_length; /* length of strings for mips16 */
- extern const struct mips_cpu_info mips_cpu_info_table[];
- extern const struct mips_cpu_info *mips_arch_info;
-@@ -333,6 +334,7 @@
- #define TARGET_MIPS9000 (mips_arch == PROCESSOR_R9000)
- #define TARGET_SB1 (mips_arch == PROCESSOR_SB1)
- #define TARGET_SR71K (mips_arch == PROCESSOR_SR71000)
-+#define TARGET_IP28 (mips_ip28_cache_barrier != 0)
-
- /* Scheduling target defines. */
- #define TUNE_MIPS3000 (mips_tune == PROCESSOR_R3000)
-@@ -752,6 +754,8 @@
- N_("Don't call any cache flush functions"), 0}, \
- { "flush-func=", &mips_cache_flush_func, \
- N_("Specify cache flush function"), 0}, \
-+ { "ip28-cache-barrier", &mips_ip28_cache_barrier, \
-+ N_("Generate special cache barriers for SGI Indigo2 R10k"), 0}, \
- }
-
- /* This is meant to be redefined in the host dependent files. */
-@@ -3448,3 +3452,7 @@
- " TEXT_SECTION_ASM_OP);
- #endif
- #endif
-+
-+#define ASM_OUTPUT_R10K_CACHE_BARRIER(STREAM) \
-+ fprintf (STREAM, "\tcache 0x14,0($sp)\t%s Cache Barrier\n", ASM_COMMENT_START)
-+
---- gcc-3.4.2/gcc/config/mips/mips.c Wed Jul 7 21:21:10 2004
-+++ gcc-3.4.2/gcc/config/mips/mips.c Fri Sep 23 15:14:50 2005
-@@ -502,6 +502,11 @@
-
- const char *mips_cache_flush_func = CACHE_FLUSH_FUNC;
-
-+/* Nonzero means generate special cache barriers to inhibit speculative
-+ stores which might endanger cache coherency or reference invalid
-+ addresses (especially on SGI's Indigo2 R10k (IP28)). */
-+const char *mips_ip28_cache_barrier;
-+
- /* If TRUE, we split addresses into their high and low parts in the RTL. */
- int mips_split_addresses;
-
-@@ -9673,6 +9678,355 @@
- return flags;
- }
-
-+
- #endif /* TARGET_IRIX */
-+
-+#ifdef TARGET_IP28
-+
-+/* Flag indicating this insn is the start of a new basic block. */
-+
-+#define NEW_BLOCK_LABEL 1
-+#define NEW_BLOCK_BRANCH 2
-+
-+static int new_block = NEW_BLOCK_LABEL;
-+
-+/* Check, whether an instruction is a possibly harmful store instruction,
-+ i.e. a store which might cause damage, if speculatively executed. */
-+
-+static rtx
-+find_mem_expr (rtx xexp)
-+{
-+ if (xexp)
-+ {
-+ const char *fmt;
-+ int i, j, lng;
-+ rtx x;
-+ RTX_CODE code = GET_CODE (xexp);
-+
-+ if (MEM == code)
-+ return xexp;
-+
-+ fmt = GET_RTX_FORMAT (code);
-+ lng = GET_RTX_LENGTH (code);
-+
-+ for (i = 0; i < lng; ++i)
-+ switch (fmt[i])
-+ {
-+ case 'e':
-+ x = find_mem_expr (XEXP (xexp, i));
-+ if (x)
-+ return x;
-+ break;
-+ case 'E':
-+ if (XVEC (xexp, i))
-+ for (j = 0; j < XVECLEN (xexp, i); ++j)
-+ {
-+ x = find_mem_expr (XVECEXP (xexp, i, j));
-+ if (x)
-+ return x;
-+ }
-+ }
-+ }
-+ return 0;
-+}
-+
-+static int
-+check_mem_expr (rtx memx)
-+{
-+ /* Check the expression `memx' (with type GET_CODE(memx) == MEM)
-+ for the most common stackpointer-addressing modes.
-+ It's not worthwile to avoid a cache barrier also on the
-+ remaining unfrequently used modes. */
-+ rtx x = XEXP (memx, 0);
-+ switch (GET_CODE (x))
-+ {
-+ case REG:
-+ if (REGNO (x) == STACK_POINTER_REGNUM)
-+ return 0;
-+ default:
-+ break;
-+ case PLUS: case MINUS: /* always `SP + const' ? */
-+ if (GET_CODE (XEXP (x, 1)) == REG
-+ && REGNO (XEXP (x, 1)) == STACK_POINTER_REGNUM)
-+ return 0;
-+ case NEG: case SIGN_EXTEND: case ZERO_EXTEND:
-+ if (GET_CODE (XEXP (x, 0)) == REG
-+ && REGNO (XEXP (x, 0)) == STACK_POINTER_REGNUM)
-+ return 0;
-+ }
-+
-+ /* Stores/Loads to/from constant addresses can be considered
-+ harmless, since:
-+ 1) the address is always valid, even when taken speculatively.
-+ 2a) the location is (hopefully) never used as a dma-target, thus
-+ there is no danger of cache-inconsistency.
-+ 2b) uncached loads/stores are guaranteed to be non-speculative. */
-+ if ( CONSTANT_P(x) )
-+ return 0;
-+
-+ return 1;
-+}
-+
-+/* inline */ static int
-+check_pattern_for_store (rtx body)
-+{
-+ /* Check for (set (mem:M (non_stackpointer_address) ...)). Here we
-+ assume, that addressing with the stackpointer accesses neither
-+ uncached-aliased nor invalid memory. (May be, this applies to the
-+ global pointer and frame pointer also, but its saver not to assume
-+ it. And probably it's not worthwile to regard these registers)
-+
-+ Speculative loads from invalid addresses also cause bus errors...
-+ So check for (set (reg:M ...) (mem:M (non_stackpointer_address)))
-+ too. */
-+
-+ if (body && GET_CODE (body) == SET)
-+ {
-+ rtx x = find_mem_expr (SET_DEST(body)); /* find_mem_expr (body); */
-+
-+ if (x && check_mem_expr (x))
-+ return 1;
-+ }
-+ return 0;
-+}
-+
-+static int
-+check_insn_for_store (int state, rtx insn)
-+{
-+ /* Check for (ins (set (mem:M (dangerous_address)) ...)) or end of the
-+ current basic block.
-+ Criteria to recognize end-of/next basic-block are reduplicated here
-+ from final_scan_insn. */
-+
-+ rtx body;
-+ int code;
-+
-+ if (INSN_DELETED_P (insn))
-+ return 0;
-+
-+ switch (code = GET_CODE (insn))
-+ {
-+ case CODE_LABEL:
-+ return -1;
-+ case CALL_INSN:
-+ case JUMP_INSN:
-+ case INSN:
-+ body = PATTERN (insn);
-+ if (GET_CODE (body) == SEQUENCE)
-+ {
-+ /* A delayed-branch sequence */
-+ rtx ins0 = XVECEXP (body, 0, 0);
-+ rtx pat0 = PATTERN (ins0);
-+ int i;
-+ for (i = 0; i < XVECLEN (body, 0); i++)
-+ {
-+ rtx insq = XVECEXP (body, 0, i);
-+ if (! INSN_DELETED_P (insq))
-+ {
-+ int j = check_insn_for_store (state|1, insq);
-+ if (j)
-+ return j;
-+ }
-+ }
-+ /* Following a conditional branch sequence, we have a new
-+ basic block. */
-+ if (GET_CODE (ins0) == JUMP_INSN)
-+ if ((GET_CODE (pat0) == SET
-+ && GET_CODE (SET_SRC (pat0)) != LABEL_REF)
-+ || (GET_CODE (pat0) == PARALLEL
-+ && GET_CODE (XVECEXP (pat0, 0, 0)) == SET
-+ && GET_CODE (SET_SRC (XVECEXP (pat0, 0, 0))) != LABEL_REF))
-+ return -1;
-+ /* Handle a call sequence like a conditional branch sequence */
-+ if (GET_CODE (ins0) == CALL_INSN)
-+ return -1;
-+ break;
-+ }
-+ if (GET_CODE (body) == PARALLEL)
-+ {
-+ int i;
-+ for (i = 0; i < XVECLEN (body, 0); i++)
-+ if (check_pattern_for_store (XVECEXP (body, 0, i)))
-+ return 1;
-+ }
-+ /* Now, only a `simple' INSN or JUMP_INSN remains to be checked. */
-+ if (code == INSN)
-+ {
-+ /* Since we don't know, what's inside, we must take inline
-+ assembly to be dangerous */
-+ if (GET_CODE (body) == ASM_INPUT)
-+ return 1;
-+
-+ if (check_pattern_for_store (body))
-+ return 1;
-+ }
-+ /* Handle a CALL_INSN instruction like a conditional branch */
-+ if (code == JUMP_INSN || code == CALL_INSN)
-+ {
-+ /* Following a conditional branch, we have a new basic block. */
-+ int ckds = 0;
-+ if (code == CALL_INSN)
-+ ckds = 1;
-+ else
-+ {
-+ code = GET_CODE (body);
-+ if ((code == SET
-+ && GET_CODE (SET_SRC (body)) != LABEL_REF)
-+ || (code == PARALLEL
-+ && GET_CODE (XVECEXP (body, 0, 0)) == SET
-+ && GET_CODE (SET_SRC (XVECEXP (body, 0, 0))) != LABEL_REF))
-+ ckds = 1;
-+ }
-+ if (ckds)
-+ {
-+ /* But check insn(s) in delay-slot first. If we could know in
-+ advance that this jump is in `.reorder' mode, where gas will
-+ insert a `nop' into the delay-slot, we could skip this test.
-+ Since we don't know, always assume `.noreorder', sometimes
-+ emitting a cache-barrier, that isn't needed. */
-+ /* But if we are here recursively, already checking a (pseudo-)
-+ delay-slot, we are done. */
-+ if ( !(state & 2) )
-+ for (insn = NEXT_INSN (insn); insn; insn = NEXT_INSN (insn))
-+ switch (GET_CODE (insn))
-+ {
-+ case INSN:
-+ if (check_insn_for_store (state|1|2, insn) > 0)
-+ return 1;
-+ case CODE_LABEL:
-+ case CALL_INSN:
-+ case JUMP_INSN:
-+ return -1;
-+ default:
-+ /* skip NOTE,... */;
-+ }
-+ return -1;
-+ }
-+ }
-+ /*break*/
-+ }
-+ return 0;
-+}
-+
-+/* Scan a basic block, starting with `insn', for a possibly harmful store
-+ instruction. If found, output a cache barrier at the start of this
-+ block. */
-+
-+static int
-+output_store_cache_barrier (FILE *file, rtx insn)
-+{
-+ for (; insn; insn = NEXT_INSN (insn))
-+ {
-+ int found = check_insn_for_store (0, insn);
-+ if (found < 0)
-+ break;
-+ if (found > 0)
-+ {
-+ /* found critical store instruction */
-+ ASM_OUTPUT_R10K_CACHE_BARRIER(file);
-+ return 1;
-+ }
-+ }
-+ fprintf(file, "\t%s Cache Barrier omitted.\n", ASM_COMMENT_START);
-+ return 0;
-+}
-+
-+
-+/*
-+ * here follows the interface for gcc/final.c
-+ */
-+
-+int
-+ip28_set_new_block_label (void)
-+{
-+ int i = new_block;
-+ new_block = NEW_BLOCK_LABEL;
-+ return i;
-+}
-+
-+int
-+ip28_set_new_block_branch (void)
-+{
-+ int i = new_block;
-+ new_block = NEW_BLOCK_BRANCH;
-+ return i;
-+}
-+
-+int
-+ip28_set_new_block_done (void)
-+{
-+ int i = new_block;
-+ new_block = 0;
-+ return i;
-+}
-+
-+int
-+ip28_handle_new_block_start (FILE *file, rtx insn)
-+{
-+ if (new_block)
-+ {
-+ /* .reorder: not really in the branch-delay-slot. */
-+ if (! set_noreorder)
-+ new_block = NEW_BLOCK_LABEL;
-+
-+ if (new_block == NEW_BLOCK_BRANCH)
-+ /* Not yet, only *after* the branch-delay-slot ! */
-+ new_block = NEW_BLOCK_LABEL;
-+ else
-+ {
-+ if (TARGET_IP28)
-+ output_store_cache_barrier (file, insn);
-+ new_block = 0;
-+ }
-+ }
-+ return new_block;
-+}
-+
-+int
-+ip28_check_code_default_sequence (FILE *file, rtx body)
-+{
-+ (void)file;
-+
-+ if (TARGET_IP28)
-+ {
-+ rtx insn = XVECEXP (body, 0, 0);
-+ rtx patt = PATTERN (insn);
-+
-+ if (GET_CODE (insn) == CALL_INSN)
-+ new_block = NEW_BLOCK_LABEL;
-+
-+ /* Following a conditional branch sequence, we have a new basic
-+ block. */
-+ if ((GET_CODE (insn) == JUMP_INSN && GET_CODE (patt) == SET
-+ && GET_CODE (SET_SRC (patt)) != LABEL_REF)
-+ || (GET_CODE (insn) == JUMP_INSN
-+ && GET_CODE (patt) == PARALLEL
-+ && GET_CODE (XVECEXP (patt, 0, 0)) == SET
-+ && GET_CODE (SET_SRC (XVECEXP (patt, 0, 0))) != LABEL_REF))
-+ new_block = NEW_BLOCK_LABEL;
-+ }
-+ return new_block;
-+}
-+
-+int
-+ip28_check_code_real_insn (FILE *file, rtx insn, int final_sequence)
-+{
-+ rtx body = PATTERN (insn);
-+
-+ /* Following a conditional branch, we have a new basic block.
-+ But if we are inside a sequence, the new block starts after the
-+ last insn of the sequence. */
-+ if (TARGET_IP28 && final_sequence == 0
-+ && (GET_CODE (insn) == CALL_INSN
-+ || (GET_CODE (insn) == JUMP_INSN && GET_CODE (body) == SET
-+ && GET_CODE (SET_SRC (body)) != LABEL_REF)
-+ || (GET_CODE (insn) == JUMP_INSN && GET_CODE (body) == PARALLEL
-+ && GET_CODE (XVECEXP (body, 0, 0)) == SET
-+ && GET_CODE (SET_SRC (XVECEXP (body, 0, 0))) != LABEL_REF)))
-+ new_block = NEW_BLOCK_BRANCH;
-+ return new_block;
-+}
-+
-+#endif /* TARGET_IP28 */
-
- #include "gt-mips.h"
---- gcc-3.4.2/gcc/final.c Sun Jan 18 23:39:57 2004
-+++ gcc-3.4.2/gcc/final.c Fri Sep 23 15:11:38 2005
-@@ -116,6 +116,16 @@
- #define SEEN_NOTE 2
- #define SEEN_EMITTED 4
-
-+/* suitable for SGI Indigo2 R10k (IP28) kernel-code ? */
-+#ifndef TARGET_IP28
-+#define ip28_set_new_block_label()
-+#define ip28_set_new_block_branch()
-+#define ip28_set_new_block_done()
-+#define ip28_handle_new_block_start(file, insn)
-+#define ip28_check_code_default_sequence(file, body)
-+#define ip28_check_code_real_insn(file, insn, final_sequence)
-+#endif
-+
- /* Last insn processed by final_scan_insn. */
- static rtx debug_insn;
- rtx current_output_insn;
-@@ -1505,6 +1515,7 @@
- int seen = 0;
-
- last_ignored_compare = 0;
-+ ip28_set_new_block_label();
-
- #ifdef SDB_DEBUGGING_INFO
- /* When producing SDB debugging info, delete troublesome line number
-@@ -1571,6 +1582,7 @@
-
- insn = final_scan_insn (insn, file, optimize, prescan, 0, &seen);
- }
-+ ip28_set_new_block_done();
- }
-
- const char *
-@@ -1851,6 +1863,7 @@
- #endif
- if (prescan > 0)
- break;
-+ ip28_set_new_block_label();
-
- if (LABEL_NAME (insn))
- (*debug_hooks->label) (insn);
-@@ -2009,6 +2022,9 @@
-
- break;
- }
-+
-+ ip28_handle_new_block_start(file, insn);
-+
- /* Output this line note if it is the first or the last line
- note in a row. */
- if (notice_source_line (insn))
-@@ -2134,9 +2150,13 @@
- {
- CC_STATUS_INIT;
- }
-+
-+ /* Following a conditional branch sequence, we have a new basic
-+ block. */
-+ ip28_check_code_default_sequence (file, body);
- break;
- }
--
-+
- /* We have a real machine instruction as rtl. */
-
- body = PATTERN (insn);
-@@ -2188,6 +2208,11 @@
- }
- #endif
-
-+ /* Following a conditional branch, we have a new basic block.
-+ But if we are inside a sequence, the new block starts after the
-+ last insn of the sequence. */
-+ ip28_check_code_real_insn (file, insn, final_sequence);
-+
- #ifndef STACK_REGS
- /* Don't bother outputting obvious no-ops, even without -O.
- This optimization is fast and doesn't interfere with debugging.
-@@ -2402,6 +2427,7 @@
-
- if (prev_nonnote_insn (insn) != last_ignored_compare)
- abort ();
-+ ip28_set_new_block_done();
-
- /* We have already processed the notes between the setter and
- the user. Make sure we don't process them again, this is
-@@ -2435,6 +2461,7 @@
- abort ();
- #endif
-
-+ ip28_set_new_block_done();
- return new;
- }
-
diff --git a/sys-devel/gcc/files/3.4.2/gcc34-fix-sse2_pinsrw.patch b/sys-devel/gcc/files/3.4.2/gcc34-fix-sse2_pinsrw.patch
deleted file mode 100644
index 10aba38756c4..000000000000
--- a/sys-devel/gcc/files/3.4.2/gcc34-fix-sse2_pinsrw.patch
+++ /dev/null
@@ -1,38 +0,0 @@
-This is just a workaround rather than a real fix. The real fix
-has been ported to the gcc 3.4.4 ebuild.
-
-
-Tested on i686-pc-linux and x86_64-pc-linux
-2004-09-20 Scott Robert Ladd <scott.ladd@coyotegulch.com>
- PR 14631
- * config/i386/i386.md (sse2_pinsrw): Changing the pattern of
- sse2_pinsrw from vector_merge to unspec.
-
-http://gcc.gnu.org/ml/gcc-patches/2004-09/msg01949.html
-http://gcc.gnu.org/bugzilla/show_bug.cgi?id=14631
-
---- gcc-3.4.2/gcc/config/i386/i386.md
-+++ gcc-3.4.2/gcc/config/i386/i386.md
-@@ -105,6 +105,7 @@
- (UNSPEC_MFENCE 59)
- (UNSPEC_LFENCE 60)
- (UNSPEC_PSADBW 61)
-+ (UNSPEC_PINSRW 62)
- (UNSPEC_ADDSUB 71)
- (UNSPEC_HADD 72)
- (UNSPEC_HSUB 73)
-@@ -22095,11 +22096,12 @@
-
- (define_insn "sse2_pinsrw"
- [(set (match_operand:V8HI 0 "register_operand" "=x")
-- (vec_merge:V8HI (match_operand:V8HI 1 "register_operand" "0")
-+ (unspec:V8HI [(match_operand:V8HI 1 "register_operand" "0")
- (vec_duplicate:V8HI
- (truncate:HI
- (match_operand:SI 2 "nonimmediate_operand" "rm")))
-- (match_operand:SI 3 "const_0_to_255_operand" "N")))]
-+ (match_operand:SI 3 "const_0_to_255_operand" "N")]
-+ UNSPEC_PINSRW))]
- "TARGET_SSE2"
- "pinsrw\t{%3, %2, %0|%0, %2, %3}"
- [(set_attr "type" "ssecvt")
diff --git a/sys-devel/gcc/files/3.4.2/gcc34-m32-no-sse2.patch b/sys-devel/gcc/files/3.4.2/gcc34-m32-no-sse2.patch
deleted file mode 100644
index 3050b40b45f0..000000000000
--- a/sys-devel/gcc/files/3.4.2/gcc34-m32-no-sse2.patch
+++ /dev/null
@@ -1,24 +0,0 @@
-diff -Nru gcc-3.4.2.old/gcc/config/i386/linux.h gcc-3.4.2/gcc/config/i386/linux.h
---- gcc-3.4.2.old/gcc/config/i386/linux.h 2004-09-21 16:02:45.049073592 +0000
-+++ gcc-3.4.2/gcc/config/i386/linux.h 2004-09-21 16:11:47.532603560 +0000
-@@ -90,7 +90,7 @@
- #endif
-
- #undef CC1_SPEC
--#define CC1_SPEC "%(cc1_cpu) %{profile:-p}"
-+#define CC1_SPEC "%(cc1_cpu) %{profile:-p} %{!m64: %{!msse2:-mno-sse2} }"
-
- /* Provide a LINK_SPEC appropriate for Linux. Here we provide support
- for the special GCC options -static and -shared, which allow us to
-diff -Nru gcc-3.4.2.old/gcc/config/i386/x86-64.h gcc-3.4.2/gcc/config/i386/x86-64.h
---- gcc-3.4.2.old/gcc/config/i386/x86-64.h 2004-09-21 16:02:45.113063864 +0000
-+++ gcc-3.4.2/gcc/config/i386/x86-64.h 2004-09-21 16:25:46.174110672 +0000
-@@ -45,7 +45,7 @@
- #define WCHAR_TYPE_SIZE 32
-
- #undef CC1_SPEC
--#define CC1_SPEC "%(cc1_cpu) %{profile:-p}"
-+#define CC1_SPEC "%(cc1_cpu) %{profile:-p} %{m32: %{!msse2:-mno-sse2} }"
-
- #undef ASM_SPEC
- #define ASM_SPEC "%{v:-V} %{Qy:} %{!Qn:-Qy} %{n} %{T} %{Ym,*} %{Yd,*} \
diff --git a/sys-devel/gcc/files/3.4.3/gcc-3.4.3-cross-compile.patch b/sys-devel/gcc/files/3.4.3/gcc-3.4.3-cross-compile.patch
deleted file mode 100644
index c3cc0787b890..000000000000
--- a/sys-devel/gcc/files/3.4.3/gcc-3.4.3-cross-compile.patch
+++ /dev/null
@@ -1,113 +0,0 @@
-Some notes on the 'bootstrap with or without libc headers' debate:
-http://linuxfromscratch.org/pipermail/lfs-dev/2005-July/052409.html
-http://gcc.gnu.org/ml/gcc/2005-07/msg01195.html
-
---- gcc/config/sh/linux.h
-+++ gcc/config/sh/linux.h
-@@ -154,6 +154,7 @@
- /* Do code reading to identify a signal frame, and set the frame
- state data appropriately. See unwind-dw2.c for the structs. */
-
-+#ifndef inhibit_libc
- #ifdef IN_LIBGCC2
- #include <signal.h>
- #include <sys/ucontext.h>
-@@ -304,6 +305,7 @@
-
- #endif /* defined (__SH5__) */
- #endif /* IN_LIBGCC2 */
-+#endif /* inhibit_libc */
-
- /* For SH3 and SH4, we use a slot of the unwind frame which correspond
- to a fake register number 16 as a placeholder for the return address
---- gcc/config/rs6000/linux.h
-+++ gcc/config/rs6000/linux.h
-@@ -111,6 +111,7 @@
- /* Do code reading to identify a signal frame, and set the frame
- state data appropriately. See unwind-dw2.c for the structs. */
-
-+#ifndef inhibit_libc
- #ifdef IN_LIBGCC2
- #include <signal.h>
-
-@@ -194,3 +195,4 @@
- (FS)->retaddr_column = CR0_REGNO; \
- goto SUCCESS; \
- } while (0)
-+#endif /* inhibit_libc */
---- gcc/config/i386/linux.h
-+++ gcc/config/i386/linux.h
-@@ -218,6 +218,7 @@
- /* Do code reading to identify a signal frame, and set the frame
- state data appropriately. See unwind-dw2.c for the structs. */
-
-+#ifndef inhibit_libc
- #ifdef IN_LIBGCC2
- /* There's no sys/ucontext.h for some (all?) libc1, so no
- signal-turned-exceptions for them. There's also no configure-run for
-@@ -282,3 +283,4 @@
- } while (0)
- #endif /* not USE_GNULIBC_1 */
- #endif /* IN_LIBGCC2 */
-+#endif /* inhibit_libc */
---- gcc/config/alpha/linux.h
-+++ gcc/config/alpha/linux.h
-@@ -78,6 +78,7 @@
- /* Do code reading to identify a signal frame, and set the frame
- state data appropriately. See unwind-dw2.c for the structs. */
-
-+#ifndef inhibit_libc
- #ifdef IN_LIBGCC2
- #include <signal.h>
- #include <sys/ucontext.h>
-@@ -127,3 +128,4 @@
- (FS)->retaddr_column = 64; \
- goto SUCCESS; \
- } while (0)
-+#endif /* inhibit_libc */
---- gcc/config/rs6000/linux64.h
-+++ gcc/config/rs6000/linux64.h
-@@ -561,13 +579,12 @@
- /* Do code reading to identify a signal frame, and set the frame
- state data appropriately. See unwind-dw2.c for the structs. */
-
-+#ifndef inhibit_libc
- #ifdef IN_LIBGCC2
- #include <signal.h>
- #ifdef __powerpc64__
- #include <sys/ucontext.h>
-
--enum { SIGNAL_FRAMESIZE = 128 };
--
- #else
-
- /* During the 2.5 kernel series the kernel ucontext was changed, but
-@@ -581,7 +598,6 @@
- struct sigcontext_struct uc_mcontext;
- sigset_t uc_sigmask;
- };
--enum { SIGNAL_FRAMESIZE = 64 };
- #endif
-
- #endif
-@@ -733,3 +731,9 @@
- } while (0)
-
- #endif
-+#endif /* inhibit_libc */
-+#ifdef __powerpc64__
-+enum { SIGNAL_FRAMESIZE = 128 };
-+#else
-+enum { SIGNAL_FRAMESIZE = 64 };
-+#endif
---- gcc/config.gcc
-+++ gcc/config.gcc
-@@ -295,7 +295,7 @@
- need_64bit_hwint=yes
- ;;
- # Note the 'l'; we need to be able to match e.g. "shle" or "shl".
--sh[123456789l]*-*-*)
-+sh[123456789lbe]*-*-*)
- cpu_type=sh
- need_64bit_hwint=yes
- ;;
diff --git a/sys-devel/gcc/files/digest-gcc-3.4.1-r3 b/sys-devel/gcc/files/digest-gcc-3.4.1-r3
deleted file mode 100644
index e037179c96ea..000000000000
--- a/sys-devel/gcc/files/digest-gcc-3.4.1-r3
+++ /dev/null
@@ -1,18 +0,0 @@
-MD5 c6d950e8f61cbac4590061a116669b56 gcc-3.4.0-piepatches-v8.7.6.5.tar.bz2 16392
-RMD160 1c8243321ac183e3d3bcb71ea2c983bee528f826 gcc-3.4.0-piepatches-v8.7.6.5.tar.bz2 16392
-SHA256 1e07c8af8c23232ffb89500277cd6f187d14deb42f979dfa397839b182f48626 gcc-3.4.0-piepatches-v8.7.6.5.tar.bz2 16392
-MD5 029f1dde684d2f4132bc339908513451 gcc-3.4.1-branch-update-20040803.patch.bz2 220869
-RMD160 317a97b989f3634a277ad70120255479ef69614e gcc-3.4.1-branch-update-20040803.patch.bz2 220869
-SHA256 528c6c247575f9aad64b647082fa111a3b5fccd1ad24840f858bd61974b0f819 gcc-3.4.1-branch-update-20040803.patch.bz2 220869
-MD5 2764c295d8348f58defd33b7eea9d5b7 gcc-3.4.1-manpages.tar.bz2 614346
-RMD160 df968408b7e3c030f78d8bfe98ccf0f0c910357d gcc-3.4.1-manpages.tar.bz2 614346
-SHA256 f3c73574ddb243ca91ecc461f1508e1e3bcf11845dfe037c1f8c05aaa8e95959 gcc-3.4.1-manpages.tar.bz2 614346
-MD5 52bf522b3fdfb93f2e939c1b52e21590 gcc-3.4.1-patches-1.1.tar.bz2 33399
-RMD160 d074723c4beb8cc64af1b2e3a8d43ff9db22d357 gcc-3.4.1-patches-1.1.tar.bz2 33399
-SHA256 685833114d4808f3374fb616aa894443ac81169573b0042e561db0ec5790fdfa gcc-3.4.1-patches-1.1.tar.bz2 33399
-MD5 31b459062499f9f68d451db9cbf3205c gcc-3.4.1.tar.bz2 27182385
-RMD160 b25352913fde37121e2dfe5521149bdaf08b0f5d gcc-3.4.1.tar.bz2 27182385
-SHA256 5f3685533f8dc4b42b926fe70bb371b31e1368223a0ad7398ba27ea3a20e8e7a gcc-3.4.1.tar.bz2 27182385
-MD5 5db6cb16c361476f4bcb48df16793243 protector-3.4-2.tar.gz 31066
-RMD160 bbb7aeabc8308b7ab3e296923019e810f38c3305 protector-3.4-2.tar.gz 31066
-SHA256 a9decc15da37c84dc7ce50f44ceb528fd6592a405109f4e3be089b58e6c14a70 protector-3.4-2.tar.gz 31066
diff --git a/sys-devel/gcc/files/digest-gcc-3.4.4-r1 b/sys-devel/gcc/files/digest-gcc-3.4.4-r1
deleted file mode 100644
index c831bff289ac..000000000000
--- a/sys-devel/gcc/files/digest-gcc-3.4.4-r1
+++ /dev/null
@@ -1,18 +0,0 @@
-MD5 d5da59b788f30b6e31488cdae51ca822 bounds-checking-gcc-3.4.4-1.00.patch.bz2 815608
-RMD160 b5e1d4716a5ab881b5d7742bb6650e0492edce93 bounds-checking-gcc-3.4.4-1.00.patch.bz2 815608
-SHA256 a29adc9260071f5928f2e491803b73117ee176e4b19b56ce421aa3ca461370b2 bounds-checking-gcc-3.4.4-1.00.patch.bz2 815608
-MD5 4b4c3c72a93236e6c57477a6ce04230b gcc-3.4.4-patches-1.7.tar.bz2 47234
-RMD160 e4c8f0c966a3f22c9b32271a79b265e2a1d34161 gcc-3.4.4-patches-1.7.tar.bz2 47234
-SHA256 3077b77db3b7328c6594946adf8b0f134bdf77ae31fe010dc90094adab1b52c0 gcc-3.4.4-patches-1.7.tar.bz2 47234
-MD5 474718bd45586247a7937bed549d8562 gcc-3.4.4-piepatches-v8.7.8.tar.bz2 15514
-RMD160 9c750ede1259e8dd32a3def98aaaf268a643c8ae gcc-3.4.4-piepatches-v8.7.8.tar.bz2 15514
-SHA256 1f61e5c17c88d73ddaa0341902d4de8f3967c625dfbef2f7a3ea4eda0bd5e0cf gcc-3.4.4-piepatches-v8.7.8.tar.bz2 15514
-MD5 ca3387f40e4cfef56afe6f1f78f077e2 gcc-3.4.4-ssp-1.0.tar.bz2 31612
-RMD160 4db0a2dcf09272644c61db6c2385ba06af2f6440 gcc-3.4.4-ssp-1.0.tar.bz2 31612
-SHA256 b0e926fb36d6cfb428cd2aa912fac5b72442e24601f2724dbae67f772dbd980b gcc-3.4.4-ssp-1.0.tar.bz2 31612
-MD5 e690d56214e4298513380ebb724bc834 gcc-3.4.4-uclibc-patches-1.2.tar.bz2 26333
-RMD160 f979d4b96cb37ef6c5c8fc78e92efd1a1057d71a gcc-3.4.4-uclibc-patches-1.2.tar.bz2 26333
-SHA256 b015b1ffe2166c126bae1852ae6a19dea28b68f461e9aac82511fccd0cc37abd gcc-3.4.4-uclibc-patches-1.2.tar.bz2 26333
-MD5 b594ff4ea4fbef4ba9220887de713dfe gcc-3.4.4.tar.bz2 27565872
-RMD160 cb9c4154c9e34d45c80eb80fd7bc30b036e6fec4 gcc-3.4.4.tar.bz2 27565872
-SHA256 3444179840638cb8664e8e53604900c4521d29d57785a5091202ee4937d8d0fd gcc-3.4.4.tar.bz2 27565872
diff --git a/sys-devel/gcc/files/digest-gcc-3.4.5 b/sys-devel/gcc/files/digest-gcc-3.4.5
deleted file mode 100644
index 5234ff3ed477..000000000000
--- a/sys-devel/gcc/files/digest-gcc-3.4.5
+++ /dev/null
@@ -1,18 +0,0 @@
-MD5 d5da59b788f30b6e31488cdae51ca822 bounds-checking-gcc-3.4.4-1.00.patch.bz2 815608
-RMD160 b5e1d4716a5ab881b5d7742bb6650e0492edce93 bounds-checking-gcc-3.4.4-1.00.patch.bz2 815608
-SHA256 a29adc9260071f5928f2e491803b73117ee176e4b19b56ce421aa3ca461370b2 bounds-checking-gcc-3.4.4-1.00.patch.bz2 815608
-MD5 4d832eb1bb9fb67cf784d98acab356f8 gcc-3.4.5-patches-1.2.tar.bz2 48176
-RMD160 be86775306d55b9030373c2e979724659b35d0ad gcc-3.4.5-patches-1.2.tar.bz2 48176
-SHA256 013e3cebadc3bb71d7d41cfbbb6488b19c9df98be92d63c8ffa9261146d2773d gcc-3.4.5-patches-1.2.tar.bz2 48176
-MD5 c9403328cea26d2582310d7c821eb95a gcc-3.4.5-piepatches-v8.7.9.tar.bz2 8140
-RMD160 66aaa00b8261646cff64e7deabb6315dd9f39109 gcc-3.4.5-piepatches-v8.7.9.tar.bz2 8140
-SHA256 4af3c5671cbba9e015a6843ad646ba979fc91226cdaba8a074fbbc8dacfa07ad gcc-3.4.5-piepatches-v8.7.9.tar.bz2 8140
-MD5 cb9fda1432fb18b239935c9e23c0b637 gcc-3.4.5-ssp-1.0.tar.bz2 31589
-RMD160 24bfe531556455bd58833d589b84d09941af615a gcc-3.4.5-ssp-1.0.tar.bz2 31589
-SHA256 30036c39dc0b885c273ec4cbe57042ce6f458fa37ce6cbea58dd5ddeee0e2409 gcc-3.4.5-ssp-1.0.tar.bz2 31589
-MD5 b4f1d2ab4001a2d186b8d5830fcdccfc gcc-3.4.5-uclibc-patches-1.0.tar.bz2 26048
-RMD160 78e7dbaec309c38064a3e0ad0ff7bf8567518228 gcc-3.4.5-uclibc-patches-1.0.tar.bz2 26048
-SHA256 aa2ce81451297550fe0768c495e79991803673cc266dc27ea3de38acdcce365b gcc-3.4.5-uclibc-patches-1.0.tar.bz2 26048
-MD5 7c3c3c3e764dcee5eb771432062d69e1 gcc-3.4.5.tar.bz2 28254232
-RMD160 611ad033a76ada49d43529fc694142e856a039fa gcc-3.4.5.tar.bz2 28254232
-SHA256 be5738a94076052453894dd7d35b1efbb017bba1da0b28495d145f98fe018a09 gcc-3.4.5.tar.bz2 28254232
diff --git a/sys-devel/gcc/files/digest-gcc-3.4.5-r1 b/sys-devel/gcc/files/digest-gcc-3.4.5-r1
deleted file mode 100644
index 3cff97c2fd47..000000000000
--- a/sys-devel/gcc/files/digest-gcc-3.4.5-r1
+++ /dev/null
@@ -1,18 +0,0 @@
-MD5 d5da59b788f30b6e31488cdae51ca822 bounds-checking-gcc-3.4.4-1.00.patch.bz2 815608
-RMD160 b5e1d4716a5ab881b5d7742bb6650e0492edce93 bounds-checking-gcc-3.4.4-1.00.patch.bz2 815608
-SHA256 a29adc9260071f5928f2e491803b73117ee176e4b19b56ce421aa3ca461370b2 bounds-checking-gcc-3.4.4-1.00.patch.bz2 815608
-MD5 14054af39019bcfc4cd2cc579c7cd341 gcc-3.4.5-patches-1.4.tar.bz2 52228
-RMD160 5e1239b75a9db19404c36d99e3507ad0b1fc9d45 gcc-3.4.5-patches-1.4.tar.bz2 52228
-SHA256 c513a05d2ff0a2fd3e36d74e86991758c28c139a0d7c4ebdaafaf3f14a61cc10 gcc-3.4.5-patches-1.4.tar.bz2 52228
-MD5 c9403328cea26d2582310d7c821eb95a gcc-3.4.5-piepatches-v8.7.9.tar.bz2 8140
-RMD160 66aaa00b8261646cff64e7deabb6315dd9f39109 gcc-3.4.5-piepatches-v8.7.9.tar.bz2 8140
-SHA256 4af3c5671cbba9e015a6843ad646ba979fc91226cdaba8a074fbbc8dacfa07ad gcc-3.4.5-piepatches-v8.7.9.tar.bz2 8140
-MD5 cb9fda1432fb18b239935c9e23c0b637 gcc-3.4.5-ssp-1.0.tar.bz2 31589
-RMD160 24bfe531556455bd58833d589b84d09941af615a gcc-3.4.5-ssp-1.0.tar.bz2 31589
-SHA256 30036c39dc0b885c273ec4cbe57042ce6f458fa37ce6cbea58dd5ddeee0e2409 gcc-3.4.5-ssp-1.0.tar.bz2 31589
-MD5 90aa9cb64d7edcd9a2306abe910cbe3b gcc-3.4.5-uclibc-patches-1.1.tar.bz2 70923
-RMD160 89e42889420fbab22e418261d248a89ee2bbbe9b gcc-3.4.5-uclibc-patches-1.1.tar.bz2 70923
-SHA256 5b92fac2afe835a127976fdb6602fb5628cf28e67dd19e8289768a3bb8631ec2 gcc-3.4.5-uclibc-patches-1.1.tar.bz2 70923
-MD5 7c3c3c3e764dcee5eb771432062d69e1 gcc-3.4.5.tar.bz2 28254232
-RMD160 611ad033a76ada49d43529fc694142e856a039fa gcc-3.4.5.tar.bz2 28254232
-SHA256 be5738a94076052453894dd7d35b1efbb017bba1da0b28495d145f98fe018a09 gcc-3.4.5.tar.bz2 28254232
diff --git a/sys-devel/gcc/files/digest-gcc-3.4.6 b/sys-devel/gcc/files/digest-gcc-3.4.6
deleted file mode 100644
index bb21dbb9577c..000000000000
--- a/sys-devel/gcc/files/digest-gcc-3.4.6
+++ /dev/null
@@ -1,18 +0,0 @@
-MD5 d5da59b788f30b6e31488cdae51ca822 bounds-checking-gcc-3.4.4-1.00.patch.bz2 815608
-RMD160 b5e1d4716a5ab881b5d7742bb6650e0492edce93 bounds-checking-gcc-3.4.4-1.00.patch.bz2 815608
-SHA256 a29adc9260071f5928f2e491803b73117ee176e4b19b56ce421aa3ca461370b2 bounds-checking-gcc-3.4.4-1.00.patch.bz2 815608
-MD5 c9403328cea26d2582310d7c821eb95a gcc-3.4.5-piepatches-v8.7.9.tar.bz2 8140
-RMD160 66aaa00b8261646cff64e7deabb6315dd9f39109 gcc-3.4.5-piepatches-v8.7.9.tar.bz2 8140
-SHA256 4af3c5671cbba9e015a6843ad646ba979fc91226cdaba8a074fbbc8dacfa07ad gcc-3.4.5-piepatches-v8.7.9.tar.bz2 8140
-MD5 cb9fda1432fb18b239935c9e23c0b637 gcc-3.4.5-ssp-1.0.tar.bz2 31589
-RMD160 24bfe531556455bd58833d589b84d09941af615a gcc-3.4.5-ssp-1.0.tar.bz2 31589
-SHA256 30036c39dc0b885c273ec4cbe57042ce6f458fa37ce6cbea58dd5ddeee0e2409 gcc-3.4.5-ssp-1.0.tar.bz2 31589
-MD5 90aa9cb64d7edcd9a2306abe910cbe3b gcc-3.4.5-uclibc-patches-1.1.tar.bz2 70923
-RMD160 89e42889420fbab22e418261d248a89ee2bbbe9b gcc-3.4.5-uclibc-patches-1.1.tar.bz2 70923
-SHA256 5b92fac2afe835a127976fdb6602fb5628cf28e67dd19e8289768a3bb8631ec2 gcc-3.4.5-uclibc-patches-1.1.tar.bz2 70923
-MD5 0973b71cad5fff6668d4514a66ebd412 gcc-3.4.6-patches-1.0.tar.bz2 53093
-RMD160 f340ae3c80e73525b4f893d0d5eed80714ba6816 gcc-3.4.6-patches-1.0.tar.bz2 53093
-SHA256 f6b23e32d93bebf837dc845bf989ddd599e272fcba7aae55be3ecafd7e620d0c gcc-3.4.6-patches-1.0.tar.bz2 53093
-MD5 4a21ac777d4b5617283ce488b808da7b gcc-3.4.6.tar.bz2 28193401
-RMD160 b15003368cedc7964f6ceaee0c39ddc43a46c442 gcc-3.4.6.tar.bz2 28193401
-SHA256 7791a601878b765669022b8b3409fba33cc72f9e39340fec8af6d0e6f72dec39 gcc-3.4.6.tar.bz2 28193401
diff --git a/sys-devel/gcc/files/digest-gcc-3.4.6-r1 b/sys-devel/gcc/files/digest-gcc-3.4.6-r1
deleted file mode 100644
index 2e3594d51afa..000000000000
--- a/sys-devel/gcc/files/digest-gcc-3.4.6-r1
+++ /dev/null
@@ -1,18 +0,0 @@
-MD5 d5da59b788f30b6e31488cdae51ca822 bounds-checking-gcc-3.4.4-1.00.patch.bz2 815608
-RMD160 b5e1d4716a5ab881b5d7742bb6650e0492edce93 bounds-checking-gcc-3.4.4-1.00.patch.bz2 815608
-SHA256 a29adc9260071f5928f2e491803b73117ee176e4b19b56ce421aa3ca461370b2 bounds-checking-gcc-3.4.4-1.00.patch.bz2 815608
-MD5 c9403328cea26d2582310d7c821eb95a gcc-3.4.5-piepatches-v8.7.9.tar.bz2 8140
-RMD160 66aaa00b8261646cff64e7deabb6315dd9f39109 gcc-3.4.5-piepatches-v8.7.9.tar.bz2 8140
-SHA256 4af3c5671cbba9e015a6843ad646ba979fc91226cdaba8a074fbbc8dacfa07ad gcc-3.4.5-piepatches-v8.7.9.tar.bz2 8140
-MD5 cb9fda1432fb18b239935c9e23c0b637 gcc-3.4.5-ssp-1.0.tar.bz2 31589
-RMD160 24bfe531556455bd58833d589b84d09941af615a gcc-3.4.5-ssp-1.0.tar.bz2 31589
-SHA256 30036c39dc0b885c273ec4cbe57042ce6f458fa37ce6cbea58dd5ddeee0e2409 gcc-3.4.5-ssp-1.0.tar.bz2 31589
-MD5 90aa9cb64d7edcd9a2306abe910cbe3b gcc-3.4.5-uclibc-patches-1.1.tar.bz2 70923
-RMD160 89e42889420fbab22e418261d248a89ee2bbbe9b gcc-3.4.5-uclibc-patches-1.1.tar.bz2 70923
-SHA256 5b92fac2afe835a127976fdb6602fb5628cf28e67dd19e8289768a3bb8631ec2 gcc-3.4.5-uclibc-patches-1.1.tar.bz2 70923
-MD5 fe9514353eaf5a09ab16790b7714481b gcc-3.4.6-patches-1.2.tar.bz2 54757
-RMD160 d4e1240b9e45b7661b7f8bf4f57bb2c9cac17686 gcc-3.4.6-patches-1.2.tar.bz2 54757
-SHA256 43253a8defa6111bd6f107178cc46f425ec81efe0eb26b730c11c422a4d4de26 gcc-3.4.6-patches-1.2.tar.bz2 54757
-MD5 4a21ac777d4b5617283ce488b808da7b gcc-3.4.6.tar.bz2 28193401
-RMD160 b15003368cedc7964f6ceaee0c39ddc43a46c442 gcc-3.4.6.tar.bz2 28193401
-SHA256 7791a601878b765669022b8b3409fba33cc72f9e39340fec8af6d0e6f72dec39 gcc-3.4.6.tar.bz2 28193401
diff --git a/sys-devel/gcc/gcc-3.4.1-r3.ebuild b/sys-devel/gcc/gcc-3.4.1-r3.ebuild
deleted file mode 100644
index edd1d16e231f..000000000000
--- a/sys-devel/gcc/gcc-3.4.1-r3.ebuild
+++ /dev/null
@@ -1,946 +0,0 @@
-# Copyright 1999-2006 Gentoo Foundation
-# Distributed under the terms of the GNU General Public License v2
-# $Header: /var/cvsroot/gentoo-x86/sys-devel/gcc/gcc-3.4.1-r3.ebuild,v 1.29 2007/07/15 04:37:55 mr_bones_ Exp $
-
-IUSE="static nls bootstrap build multilib gcj gtk fortran objc hardened n32 n64"
-
-inherit eutils flag-o-matic libtool gnuconfig versionator
-
-DESCRIPTION="The GNU Compiler Collection. Includes C/C++, java compilers, pie and ssp extensions"
-HOMEPAGE="http://gcc.gnu.org/"
-LICENSE="GPL-2 LGPL-2.1"
-
-# previous release known to b0rk glibc on hppa... i dont know if this bug
-# still exists, so i'll keep in the -hppa...
-KEYWORDS="-* ~amd64 mips ppc64 ~x86 -hppa ppc s390"
-
-# we need a proper glibc version for the Scrt1.o provided to the pie-ssp specs
-# we also need at least glibc 2.3.3 20040420-r1 in order for gcc 3.4 not to nuke
-# SSP in glibc.
-
-# NOTE: we SHOULD be using at least binutils 2.15.90.0.1 everywhere for proper
-# .eh_frame ld optimisation and symbol visibility support, but it hasnt been
-# well tested in gentoo on any arch other than amd64!!
-DEPEND="virtual/libc
- >=sys-devel/binutils-2.14.90.0.8-r1
- amd64? ( >=sys-devel/binutils-2.15.90.0.1.1-r1 )
- >=sys-devel/bison-1.875
- || ( app-admin/eselect-compiler >=sys-devel/gcc-config-1.3.1 )
- !build? (
- gcj? (
- gtk? ( >=x11-libs/gtk+-2.2 )
- >=media-libs/libart_lgpl-2.1
- )
- >=sys-libs/ncurses-5.2-r2
- nls? ( sys-devel/gettext )
- )"
-RDEPEND="virtual/libc
- || ( app-admin/eselect-compiler >=sys-devel/gcc-config-1.3.1 )
- >=sys-libs/zlib-1.1.4
- >=sys-apps/texinfo-4.2-r4
- !build? ( >=sys-libs/ncurses-5.2-r2 )"
-
-PDEPEND="|| ( sys-devel/gcc-config app-admin/eselect-compiler )"
-[ "${ABI}" != "n32" ] && [ "${ABI}" != "n64" ] && PDEPEND="${PDEPEND}
- !n32? ( !n64? ( !s390? ( !elibc_uclibc? ( sys-libs/libstdc++-v3 ) ) ) )"
-
-# <<--------------------SRC_URI variables-------------------->>
-# Location of gentoo-specific files. Please dont set this to mirror, that
-# would just make the files unavailable until they get mirrored. All files
-# in SRC_URI will eventually get mirrored and mirrors will be tried before
-# falling back on this location anyways.
-GENTOO_BASE_URI="http://dev.gentoo.org/~lv/GCC/"
-
-# Patch tarball support ...
-PATCH_VER="1.1"
-
-# Snapshot support ...
-#SNAPSHOT="2002-08-12"
-SNAPSHOT=
-
-# Pre-release support
-if [ ${PV} != ${PV/_pre/-} ] ; then
- PRERELEASE=${PV/_pre/-}
-fi
-
-# Branch update support ...
-GCC_RELEASE_VER="${PV}" # Tarball, etc used ...
-BRANCH_UPDATE=20040803
-
-# PIE support
-PIE_VER="8.7.6.5"
-PIE_CORE="gcc-3.4.0-piepatches-v${PIE_VER}.tar.bz2"
-
-# ProPolice version
-PP_VER="3_4"
-PP_FVER="${PP_VER//_/.}-2"
-
-# magic! =D
-if [ -n "${PRERELEASE}" ] ; then
- S="${WORKDIR}/gcc-${PRERELEASE}"
- SRC_URI="ftp://gcc.gnu.org/pub/gcc/prerelease-${PRERELEASE}/gcc-${PRERELEASE}.tar.bz2"
-elif [ -n "${SNAPSHOT}" ] ; then
- S="${WORKDIR}/gcc-${SNAPSHOT//-}"
- SRC_URI="ftp://sources.redhat.com/pub/gcc/snapshots/${SNAPSHOT}/gcc-${SNAPSHOT//-}.tar.bz2"
-else
- S="${WORKDIR}/${PN}-${GCC_RELEASE_VER}"
- SRC_URI="ftp://gcc.gnu.org/pub/gcc/releases/${P}/${PN}-${GCC_RELEASE_VER}.tar.bz2"
- if [ -n "${BRANCH_UPDATE}" ]
- then
- SRC_URI="${SRC_URI}
- ${GENTOO_BASE_URI}/${PN}-${GCC_RELEASE_VER}-branch-update-${BRANCH_UPDATE}.patch.bz2"
- fi
-fi
-
-if [ -n "${PATCH_VER}" ]
-then
- SRC_URI="${SRC_URI} ${GENTOO_BASE_URI}/${P}-patches-${PATCH_VER}.tar.bz2"
-fi
-
-if [ -n "${PP_VER}" ]
-then
- SRC_URI="${SRC_URI}
- mirror://gentoo/protector-${PP_FVER}.tar.gz
- http://www.research.ibm.com/trl/projects/security/ssp/gcc${PP_VER}/protector-${PP_FVER}.tar.gz"
-fi
-
-# PERL cannot be present at bootstrap, and is used to build the man pages. So..
-# lets include some pre-generated ones, shall we?
-SRC_URI="${SRC_URI} ${GENTOO_BASE_URI}/gcc-3.4.1-manpages.tar.bz2"
-
-# mmm... PIE =D
-SRC_URI="${SRC_URI} ${GENTOO_BASE_URI}${PIE_CORE}"
-# >>--------------------SRC_URI variables--------------------<<
-
-# Recently there has been a lot of stability problem in Gentoo-land. Many
-# things can be the cause to this, but I believe that it is due to gcc3
-# still having issues with optimizations, or with it not filtering bad
-# combinations (protecting the user maybe from himeself) yet.
-#
-# This can clearly be seen in large builds like glibc, where too aggressive
-# CFLAGS cause the tests to fail miserbly.
-#
-# Quote from Nick Jones <carpaski@gentoo.org>, who in my opinion
-# knows what he is talking about:
-#
-# People really shouldn't force code-specific options on... It's a
-# bad idea. The -march options aren't just to look pretty. They enable
-# options that are sensible (and include sse,mmx,3dnow when apropriate).
-#
-# The next command strips CFLAGS and CXXFLAGS from nearly all flags. If
-# you do not like it, comment it, but do not bugreport if you run into
-# problems.
-#
-# <azarah@gentoo.org> (13 Oct 2002)
-do_filter_flags() {
- strip-flags
-
- # In general gcc does not like optimization, and add -O2 where
- # it is safe. This is especially true for gcc 3.3 + 3.4
- replace-flags -O? -O2
-
- # -mcpu is deprecated on these archs, and possibly others
- if use amd64 || use x86 ; then
- setting="`get-flag mcpu`"
- [ ! -z "${setting}" ] && \
- replace-flags -mcpu="${setting}" -mtune="${setting}" && \
- ewarn "-mcpu is deprecated on your arch\a\a\a" && \
- epause 5
- strip-unsupported-flags
- fi
-
- # If we use multilib on mips, we shouldn't pass -mabi flag - it breaks
- # build of non-default-abi libraries.
- use mips && use multilib && filter-flags "-mabi*"
-
- # Compile problems with these (bug #6641 among others)...
- #filter-flags "-fno-exceptions -fomit-frame-pointer -fforce-addr"
-
- export GCJFLAGS="${CFLAGS}"
-}
-
-# Theoretical cross compiler support
-[ ! -n "${CCHOST}" ] && export CCHOST="${CHOST}"
-
-LOC="/usr"
-#GCC_BRANCH_VER="`echo ${PV} | awk -F. '{ gsub(/_pre.*|_alpha.*/, ""); print $1 "." $2 }'`"
-#GCC_RELEASE_VER="`echo ${PV} | awk '{ gsub(/_pre.*|_alpha.*/, ""); print $0 }'`"
-GCC_BRANCH_VER="$(get_version_component_range 1-2)"
-GCC_RELEASE_VER="$(get_version_component_range 1-3)"
-
-# GCC 3.4 no longer uses gcc-lib. we'll rename this later for compatibility
-# reasons, as a few things would break without gcc-lib.
-LIBPATH="${LOC}/lib/gcc/${CCHOST}/${GCC_RELEASE_VER}"
-BINPATH="${LOC}/${CCHOST}/gcc-bin/${GCC_BRANCH_VER}"
-DATAPATH="${LOC}/share/gcc-data/${CCHOST}/${GCC_BRANCH_VER}"
-# Dont install in /usr/include/g++-v3/, but in gcc internal directory.
-# We will handle /usr/include/g++-v3/ with gcc-config ...
-STDCXX_INCDIR="${LIBPATH}/include/g++-v${GCC_BRANCH_VER/\.*/}"
-
-# Ok, this is a hairy one again, but lets assume that we
-# are not cross compiling, than we want SLOT to only contain
-# $PV, as people upgrading to new gcc layout will not have
-# their old gcc unmerged ...
-# GCC 3.4 introduces a new version of libstdc++
-SLOT="${GCC_BRANCH_VER}"
-
-has_lib64() {
- use amd64 && return 0
- use ppc64 && return 0
- return 1
-}
-
-chk_gcc_version() {
- # This next bit is for updating libtool linker scripts ...
- local OLD_GCC_VERSION="`gcc -dumpversion`"
- local OLD_GCC_CHOST="$(gcc -v 2>&1 | egrep '^Reading specs' |\
- sed -e 's:^.*/gcc[^/]*/\([^/]*\)/[0-9]\+.*$:\1:')"
-
- if [ "${OLD_GCC_VERSION}" != "${GCC_RELEASE_VER}" ]
- then
- echo "${OLD_GCC_VERSION}" > "${WORKDIR}/.oldgccversion"
- fi
-
- if [ -n "${OLD_GCC_CHOST}" ]
- then
- if [ "${CHOST}" = "${CCHOST}" -a "${OLD_GCC_CHOST}" != "${CHOST}" ]
- then
- echo "${OLD_GCC_CHOST}" > "${WORKDIR}/.oldgccchost"
- fi
- fi
-
- # Did we check the version ?
- touch "${WORKDIR}/.chkgccversion"
-}
-
-version_patch() {
- [ ! -f "$1" ] && return 1
- [ -z "$2" ] && return 1
-
- sed -e "s:@GENTOO@:$2:g" ${1} > ${T}/${1##*/}
- epatch ${T}/${1##*/}
-}
-
-check_option_validity() {
- # Must compile for mips64-linux target if we want n32/n64 support
- case "${CCHOST}" in
- mips64-*)
- ;;
- *)
- if use n32 || use n64; then
- eerror "n32/n64 can only be used when target host is mips64-*-linux-*";
- die "Invalid USE flags for CCHOST ($CCHOST)";
- fi
- ;;
- esac
-
- #cannot have both n32 & n64 without multilib
- if use n32 && use n64 && ! use multilib; then
- eerror "Please enable multilib if you want to use both n32 & n64";
- die "Invalid USE flag combination";
- fi
-}
-
-glibc_have_ssp() {
- # one day lib64 wont be a symlink on amd64, but this still works
- # and is what we want to use in the long run
- has_lib64 \
- && local libc_prefix="/lib64/" \
- || local libc_prefix="/lib/"
-
- use elibc_uclibc \
- && local libc_file="libc.so.0" \
- || local libc_file="libc.so.6"
-
- local my_libc=${ROOT}/${libc_prefix}/${libc_file}
-
- # Check for the glibc to have the __guard symbols
- if [ "$(readelf -s "${my_libc}" 2>/dev/null | \
- grep GLOBAL | grep OBJECT | grep '__guard')" ] && \
- [ "$(readelf -s "${my_libc}" 2>/dev/null | \
- grep GLOBAL | grep FUNC | grep '__stack_smash_handler')" ]
- then
- return 0
- else
- return 1
- fi
-}
-
-glibc_have_pie() {
- if [ ! -f ${ROOT}/usr/lib/Scrt1.o ] ; then
- echo
- ewarn "Your glibc does not have support for pie, the file Scrt1.o is missing"
- ewarn "Please update your glibc to a proper version or disable hardened"
- echo
- return 1
- fi
-}
-
-check_glibc_ssp() {
- [ "$GLIBC_SSP_CHECKED" = 1 ] && return 0
- if glibc_have_ssp
- then
- if [ -n "${GLIBC_SSP_CHECKED}" ] && \
- [ -z "$(readelf -s "${ROOT}/$(gcc-config -L)/libgcc_s.so" 2>/dev/null | \
- grep 'GLOBAL' | grep 'OBJECT' | grep '__guard')" ]
- then
- # No need to check again ...
- return 0
- fi
-
- echo
- ewarn "This sys-libs/glibc has __guard object and __stack_smash_handler functions"
- ewarn "scanning the system for binaries with __guard - this may take 5-10 minutes"
- ewarn "Please do not press ctrl-C or ctrl-Z during this period - it will continue"
- echo
- if ! bash ${FILESDIR}/scan_libgcc_linked_ssp.sh
- then
- echo
- eerror "Found binaries that are dynamically linked to the libgcc with __guard@@GCC"
- eerror "You need to compile these binaries without CFLAGS -fstack-protector/hcc -r"
- echo
- eerror "Also, you have to make sure that using ccache needs the cache to be flushed"
- eerror "wipe out /var/tmp/ccache or /root/.ccache. This will remove possible saved"
- eerror "-fstack-protector arguments that still may reside in such a compiler cache"
- echo
- eerror "When such binaries are found, gcc cannot remove libgcc propolice functions"
- eerror "leading to gcc -static -fstack-protector breaking, see gentoo bug #25299"
- echo
- einfo "To do a full scan on your system, enter this following command in a shell"
- einfo "(Please keep running and remerging broken packages until it do not report"
- einfo " any breakage anymore!):"
- echo
- einfo " # ${FILESDIR}/scan_libgcc_linked_ssp.sh"
- echo
- die "Binaries with libgcc __guard@GCC dependencies detected!"
- else
- echo
- einfo "No binaries with suspicious libgcc __guard@GCC dependencies detected"
- echo
- fi
- fi
-
- return 0
-}
-
-update_gcc_for_libc_ssp() {
- if glibc_have_ssp
- then
- einfo "Updating gcc to use SSP from glibc..."
- sed -e 's|^\(LIBGCC2_CFLAGS.*\)$|\1 -D_LIBC_PROVIDES_SSP_|' \
- -i ${S}/gcc/Makefile.in || die "Failed to update gcc!"
- fi
-}
-
-do_patch_tarball() {
- # Do bulk patches included in ${P}-patches-${PATCH_VER}.tar.bz2
- if [ -n "${PATCH_VER}" ]
- then
- mkdir -p ${WORKDIR}/patch/exclude
- #mv -f ${WORKDIR}/patch/84* ${WORKDIR}/patch/exclude/
-
- # for uclibc we rather copy the needed files and patch them
- mkdir ${S}/libstdc++-v3/config/{locale/uclibc,os/uclibc} || \
- die "can't create uclibc directories"
- cp ${S}/libstdc++-v3/config/locale/gnu/* \
- ${S}/libstdc++-v3/config/locale/uclibc/ || die "can't copy uclibc locale"
- cp ${S}/libstdc++-v3/config/locale/ieee_1003.1-2001/codecvt_specializations.h \
- ${S}/libstdc++-v3/config/locale/uclibc/ || die "can't copy uclibc codecvt"
- cp ${S}/libstdc++-v3/config/os/gnu-linux/* \
- ${S}/libstdc++-v3/config/os/uclibc/ || die "can't copy uclibc os"
- cp ${S}/gcc/config/t-linux ${S}/gcc/config/t-linux-uclibc || \
- die "can't copy t-linux"
- cp ${S}/gcc/config/cris/t-linux ${S}/gcc/config/cris/t-linux-uclibc || \
- die "can't copy cris/t-linux"
- cp ${S}/gcc/config/sh/t-linux ${S}/gcc/config/sh/t-linux-uclibc || \
- die "can't copy sh/t-linux"
- cp ${S}/gcc/config/sh/t-sh64 ${S}/gcc/config/sh/t-sh64-uclibc || \
- die "can't copy sh/t-sh64"
-
- epatch ${WORKDIR}/patch
-
- # the uclibc patches need autoconf to be run
- # for build stage we need the updated files though
- use build || ( cd ${S}/libstdc++-v3; autoconf; cd ${S} )
- #use build && use elibc_uclibc && ewarn "uclibc in build stage is not supported yet" && exit 1
-
- fi
-}
-
-do_piessp_patches() {
- # TODO: on arches where we lack a Scrt1.o (like parisc) we still need unpack, compile and install logic
- # TODO: for the crt1Snocsu.o provided by a custom gcc-pie-ssp.tgz which can also be included in SRC_URI
-
- if [ -n "${PIE_VER}" ]
- then
- [ -z "${PATCH_VER}" ] && mv piepatch/upstream/04_* piepatch/
-
- # corrects startfile/endfile selection and shared/static/pie flag usage
- epatch ${WORKDIR}/piepatch/upstream
- # adds non-default pie support (rs6000)
- epatch ${WORKDIR}/piepatch/nondef
- # adds default pie support (rs6000 too) if DEFAULT_PIE[_SSP] is defined
- epatch ${WORKDIR}/piepatch/def
- # disable relro/now
- use elibc_uclibc && epatch ${FILESDIR}/3.3.3/gcc-3.3.3-norelro.patch
- fi
-
- # non-default SSP support.
- if [ "${ARCH}" != "hppa" -a "${ARCH}" != "hppa64" -a -n "${PP_VER}" ]
- then
- # ProPolice Stack Smashing protection
- epatch ${WORKDIR}/protector.dif
- epatch ${FILESDIR}/pro-police-docs.patch
-
- cp ${WORKDIR}/gcc/protector.c ${S}/gcc/ || die "protector.c not found"
- cp ${WORKDIR}/gcc/protector.h ${S}/gcc/ || die "protector.h not found"
- cp -R ${WORKDIR}/gcc/testsuite/* ${S}/gcc/testsuite/ || die "testsuite not found"
-
- [ -n "${PATCH_VER}" ] && epatch ${FILESDIR}/3.3.3/gcc-3.3.3-uclibc-add-ssp.patch
-
- # we apply only the needed parts of protectonly.dif
- sed -e 's|^CRTSTUFF_CFLAGS = |CRTSTUFF_CFLAGS = -fno-stack-protector-all |' \
- -i gcc/Makefile.in || die "Failed to update crtstuff!"
- #sed -e 's|^\(LIBGCC2_CFLAGS.*\)$|\1 -fno-stack-protector-all|' \
- # -i ${S}/gcc/Makefile.in || die "Failed to update libgcc!"
-
- # if gcc in a stage3 defaults to ssp, is version 3.4.0 and a stage1 is built
- # the build fails building timevar.o w/:
- # cc1: stack smashing attack in function ix86_split_to_parts()
- if gcc -dumpspecs | grep -q "fno-stack-protector:"
- then
- use build && epatch ${FILESDIR}/3.4.0/gcc-3.4.0-cc1-no-stack-protector.patch
- fi
-
- release_version="${release_version}, ssp-${PP_FVER}"
-
- update_gcc_for_libc_ssp
- fi
-
- release_version="${release_version}, pie-${PIE_VER}"
- if use hardened && ( use x86 || use sparc || use amd64 )
- then
- einfo "Updating gcc to use automatic PIE + SSP building ..."
- sed -e 's|^ALL_CFLAGS = |ALL_CFLAGS = -DEFAULT_PIE_SSP |' \
- -i ${S}/gcc/Makefile.in || die "Failed to update gcc!"
-
- # rebrand to make bug reports easier
- release_version="${release_version/Gentoo/Gentoo Hardened}"
- fi
-}
-
-src_unpack() {
- local release_version="Gentoo Linux ${PVR}"
-
- if [ -n "${PP_VER}" ] && [ "${ARCH}" != "hppa" ]
- then
- # the guard check should be very early in the unpack process
- check_glibc_ssp
- fi
-
- [ -n "${PIE_VER}" ] && use hardened && glibc_have_pie
-
- if [ -n "${PRERELEASE}" ] ; then
- unpack gcc-${PRERELEASE}.tar.bz2
- elif [ -n "${SNAPSHOT}" ] ; then
- unpack gcc-${SNAPSHOT//-}.tar.bz2
- else
- unpack ${PN}-${GCC_RELEASE_VER}.tar.bz2
- fi
-
- if [ -n "${PATCH_VER}" ]
- then
- unpack ${P}-patches-${PATCH_VER}.tar.bz2
- fi
-
- if [ -n "${PP_VER}" ]
- then
- unpack protector-${PP_FVER}.tar.gz
- fi
-
- if [ -n "${PIE_VER}" ]
- then
- unpack ${PIE_CORE}
- fi
-
- cd ${S}
-
- # Branch update ...
- if [ -n "${BRANCH_UPDATE}" ]
- then
- epatch ${DISTDIR}/${PN}-${GCC_RELEASE_VER}-branch-update-${BRANCH_UPDATE}.patch.bz2
- fi
-
- do_patch_tarball
- do_piessp_patches
-
- version_patch ${FILESDIR}/3.4.1/gcc-${PV}-r2-gentoo-branding.patch \
- "${BRANCH_UPDATE} (${release_version})" || die "Failed Branding"
-
- # misc patches that havent made it into a patch tarball yet
- epatch ${FILESDIR}/3.4.0/gcc34-reiser4-fix.patch
- epatch ${FILESDIR}/gcc-spec-env.patch
-
- # MIPS is screwed screwed thing - but it's cool!
- # I had to add ABI variable, because during bootstrap
- # USE flags get stripped. This doesn't make gcc happy.
- # I'll take care of multilib when I actually decide to make it work.
- # (That implied somebody has to add appropriate support to portage
- # first).
- if ! use multilib; then
- if [ "${ABI}" = "n32" ]; then
- epatch ${FILESDIR}/3.4.1/gcc-3.4.1-mips-n32only.patch
- elif [ "${ABI}" = n64 ]; then
- epatch ${FILESDIR}/3.4.1/gcc-3.4.1-mips-n64only.patch
- fi
- fi
-
- # Misdesign in libstdc++ (Redhat)
- cp -a ${S}/libstdc++-v3/config/cpu/i{4,3}86/atomicity.h
-
- # disable --as-needed from being compiled into gcc specs
- # natively when using >=sys-devel/binutils-2.15.90.0.1 this is
- # done to keep our gcc backwards compatible with binutils.
- # gcc 3.4.1 cvs has patches that need back porting..
- # http://gcc.gnu.org/bugzilla/show_bug.cgi?id=14992 (May 3 2004)
- sed -i -e s/HAVE_LD_AS_NEEDED/USE_LD_AS_NEEDED/g ${S}/gcc/config.in
-
- gnuconfig_update
- # Fixup libtool to correctly generate .la files with portage
- elibtoolize --portage --shallow
-
- cd ${S}; ./contrib/gcc_update --touch &> /dev/null
-}
-
-src_compile() {
-
- local myconf=
- local gcc_lang=
-
- check_option_validity
-
- if ! use build
- then
- myconf="${myconf} --enable-shared"
- gcc_lang="c,c++"
- use fortran && gcc_lang="${gcc_lang},f77"
- use objc && gcc_lang="${gcc_lang},objc"
- use gcj && gcc_lang="${gcc_lang},java"
- # We do NOT want 'ADA support' in here!
- # use ada && gcc_lang="${gcc_lang},ada"
- else
- gcc_lang="c"
- fi
- if ! use nls || use build
- then
- myconf="${myconf} --disable-nls"
- else
- myconf="${myconf} --enable-nls --without-included-gettext"
- fi
-
- # GTK+ is preferred over xlib in 3.4.x (xlib is unmaintained
- # right now). Much thanks to <csm@gnu.org> for the heads up.
- # Travis Tilley <lv@gentoo.org> (11 Jul 2004)
- if ! use build && use gcj && use gtk
- then
- myconf="${myconf} --enable-java-awt=gtk"
- fi
-
- # Multilib not yet supported
- if use multilib
- then
- einfo "Multilib support enabled. This is still experimental."
- myconf="${myconf} --enable-multilib"
- else
- myconf="${myconf} --disable-multilib"
- fi
-
- # Fix linking problem with c++ apps which where linked
- # against a 3.2.2 libgcc
- [ "${ARCH}" = "hppa" ] && myconf="${myconf} --enable-sjlj-exceptions"
-
- # --with-gnu-ld needed for cross-compiling
- # --enable-sjlj-exceptions : currently the unwind stuff seems to work
- # for statically linked apps but not dynamic
- # so use setjmp/longjmp exceptions by default
- # uclibc uses --enable-clocale=uclibc (autodetected)
- # --disable-libunwind-exceptions needed till unwind sections get fixed. see ps.m for details
-
- if ! use elibc_uclibc
- then
- # it's getting close to a time where we are going to need USE=glibc, uclibc, bsdlibc -solar
- myconf="${myconf} --enable-__cxa_atexit --enable-clocale=gnu"
- else
- myconf="${myconf} --disable-__cxa_atexit --enable-target-optspace --with-gnu-ld --enable-sjlj-exceptions"
- fi
-
- # Default arch support disabled for now...
- #use amd64 && myconf="${myconf} --with-arch=k8"
- #use s390 && myconf="${myconf} --with-arch=nofreakingclue"
- #use x86 && myconf="${myconf} --with-arch=i586"
- #use mips && myconf="${myconf} --with-arch=mips3"
-
- # Add --with-abi flags to enable respective MIPS ABIs
- case "${CCHOST}" in
- mips*)
- use multilib && myconf="${myconf} --with-abi=32"
- [ "${ABI}" = n64 ] && myconf="${myconf} --with-abi=n64"
- [ "${ABI}" = n32 ] && myconf="${myconf} --with-abi=n32"
- ;;
- esac
-
- do_filter_flags
- einfo "CFLAGS=\"${CFLAGS}\""
- einfo "CXXFLAGS=\"${CXXFLAGS}\""
- einfo "GCJFLAGS=\"${GCJFLAGS}\""
-
- # Build in a separate build tree
- mkdir -p ${WORKDIR}/build
- cd ${WORKDIR}/build
-
- # Install our pre generated manpages if we do not have perl ...
- if [ ! -x /usr/bin/perl ]
- then
- unpack ${P}-manpages.tar.bz2 || die "Failed to unpack man pages"
- fi
-
- einfo "Configuring GCC..."
- addwrite "/dev/zero"
- ${S}/configure --prefix=${LOC} \
- --bindir=${BINPATH} \
- --includedir=${LIBPATH}/include \
- --datadir=${DATAPATH} \
- --mandir=${DATAPATH}/man \
- --infodir=${DATAPATH}/info \
- --enable-shared \
- --host=${CHOST} \
- --target=${CCHOST} \
- --with-system-zlib \
- --enable-languages=${gcc_lang} \
- --enable-threads=posix \
- --enable-long-long \
- --disable-checking \
- --disable-libunwind-exceptions \
- --enable-cstdio=stdio \
- --enable-version-specific-runtime-libs \
- --with-gxx-include-dir=${STDCXX_INCDIR} \
- --with-local-prefix=${LOC}/local \
- --disable-werror \
- ${myconf} || die
-
- touch ${S}/gcc/c-gperf.h
-
- # Do not make manpages if we do not have perl ...
- if [ ! -x /usr/bin/perl ]
- then
- find ${WORKDIR}/build -name '*.[17]' -exec touch {} \; || :
- fi
-
- einfo "Building GCC..."
- # Only build it static if we are just building the C frontend, else
- # a lot of things break because there are not libstdc++.so ....
- if use static && [ "${gcc_lang}" = "c" ]
- then
- # Fix for our libtool-portage.patch
- S="${WORKDIR}/build" \
- emake LDFLAGS="-static" bootstrap \
- LIBPATH="${LIBPATH}" \
- BOOT_CFLAGS="${CFLAGS}" STAGE1_CFLAGS="-O" || die
- # Above FLAGS optimize and speedup build, thanks
- # to Jeff Garzik <jgarzik@mandrakesoft.com>
- else
- # Fix for our libtool-portage.patch
- S="${WORKDIR}/build" \
- emake profiledbootstrap \
- LIBPATH="${LIBPATH}" \
- BOOT_CFLAGS="${CFLAGS}" STAGE1_CFLAGS="-O" || die
-
- fi
-}
-
-src_install() {
- local x=
-
- # Do allow symlinks in ${LOC}/lib/gcc-lib/${CHOST}/${PV}/include as
- # this can break the build.
- for x in ${WORKDIR}/build/gcc/include/*
- do
- if [ -L ${x} ]
- then
- rm -f ${x}
- continue
- fi
- done
- # Remove generated headers, as they can cause things to break
- # (ncurses, openssl, etc).
- for x in `find ${WORKDIR}/build/gcc/include/ -name '*.h'`
- do
- if grep -q 'It has been auto-edited by fixincludes from' ${x}
- then
- rm -f ${x}
- fi
- done
-
- einfo "Installing GCC..."
- # Do the 'make install' from the build directory
- cd ${WORKDIR}/build
- S="${WORKDIR}/build" \
- make prefix=${LOC} \
- bindir=${BINPATH} \
- includedir=${LIBPATH}/include \
- datadir=${DATAPATH} \
- mandir=${DATAPATH}/man \
- infodir=${DATAPATH}/info \
- DESTDIR="${D}" \
- LIBPATH="${LIBPATH}" \
- install || die
-
- [ -r ${D}${BINPATH}/gcc ] || die "gcc not found in ${D}"
-
- # Because GCC 3.4 installs into the gcc directory and not the gcc-lib
- # directory, we will have to rename it in order to keep compatibility
- # with our current libtool check and gcc-config (which would be a pain
- # to fix compared to this simple mv and symlink).
- mv ${D}/${LOC}/lib/gcc ${D}/${LOC}/lib/gcc-lib
- ln -s gcc-lib ${D}/${LOC}/lib/gcc
- LIBPATH=${LIBPATH/lib\/gcc/lib\/gcc-lib}
-
- dodir /lib /usr/bin
- dodir /etc/env.d/gcc
- echo "PATH=\"${BINPATH}\"" > ${D}/etc/env.d/gcc/${CCHOST}-${GCC_RELEASE_VER}
- echo "ROOTPATH=\"${BINPATH}\"" >> ${D}/etc/env.d/gcc/${CCHOST}-${GCC_RELEASE_VER}
-
- # The LDPATH stuff is kinda iffy now that we need to provide compatibility
- # with older versions of GCC for binary apps.
- LDPATH="${LIBPATH}"
- if [ "${BULIB}" != "" ]
- then
- LDPATH="${LDPATH}:${LOC}/lib/gcc-lib/${CCHOST}/${BULIB}"
- fi
- echo "LDPATH=\"${LDPATH}\"" >> ${D}/etc/env.d/gcc/${CCHOST}-${GCC_RELEASE_VER}
-
- echo "MANPATH=\"${DATAPATH}/man\"" >> ${D}/etc/env.d/gcc/${CCHOST}-${GCC_RELEASE_VER}
- echo "INFOPATH=\"${DATAPATH}/info\"" >> ${D}/etc/env.d/gcc/${CCHOST}-${GCC_RELEASE_VER}
- echo "STDCXX_INCDIR=\"${STDCXX_INCDIR##*/}\"" >> ${D}/etc/env.d/gcc/${CCHOST}-${GCC_RELEASE_VER}
- # Also set CC and CXX
- echo "CC=\"gcc\"" >> ${D}/etc/env.d/gcc/${CCHOST}-${GCC_RELEASE_VER}
- echo "CXX=\"g++\"" >> ${D}/etc/env.d/gcc/${CCHOST}-${GCC_RELEASE_VER}
-
- # Make sure we do not check glibc for SSP again, as we did already
- if glibc_have_ssp || \
- [ -f "${ROOT}/etc/env.d/99glibc_ssp" ]
- then
- echo "GLIBC_SSP_CHECKED=1" > ${D}/etc/env.d/99glibc_ssp
- fi
-
- # Make sure we dont have stuff lying around that
- # can nuke multiple versions of gcc
- if ! use build
- then
- cd ${D}${LIBPATH}
-
- # Tell libtool files where real libraries are
- for x in ${D}${LOC}/lib/*.la ${D}${LIBPATH}/../*.la
- do
- if [ -f "${x}" ]
- then
- sed -i -e "s:/usr/lib:${LIBPATH}:" ${x}
- mv ${x} ${D}${LIBPATH}
- fi
- done
-
- # Move all the libraries to version specific libdir.
- for x in ${D}${LOC}/lib/*.{so,a}* ${D}${LIBPATH}/../*.{so,a}*
- do
- [ -f "${x}" -o -L "${x}" ] && mv -f ${x} ${D}${LIBPATH}
- done
-
- # Move Java headers to compiler-specific dir
- for x in ${D}${LOC}/include/gc*.h ${D}${LOC}/include/j*.h
- do
- [ -f "${x}" ] && mv -f ${x} ${D}${LIBPATH}/include/
- done
- for x in gcj gnu java javax org
- do
- if [ -d "${D}${LOC}/include/${x}" ]
- then
- dodir /${LIBPATH}/include/${x}
- mv -f ${D}${LOC}/include/${x}/* ${D}${LIBPATH}/include/${x}/
- rm -rf ${D}${LOC}/include/${x}
- fi
- done
-
- if [ -d "${D}${LOC}/lib/security" ]
- then
- dodir /${LIBPATH}/security
- mv -f ${D}${LOC}/lib/security/* ${D}${LIBPATH}/security
- rm -rf ${D}${LOC}/lib/security
- fi
-
- # Move libgcj.spec to compiler-specific directories
- [ -f "${D}${LOC}/lib/libgcj.spec" ] && \
- mv -f ${D}${LOC}/lib/libgcj.spec ${D}${LIBPATH}/libgcj.spec
-
- # Rename jar because it could clash with Kaffe's jar if this gcc is
- # primary compiler (aka don't have the -<version> extension)
- cd ${D}${LOC}/${CCHOST}/gcc-bin/${GCC_BRANCH_VER}
- [ -f jar ] && mv -f jar gcj-jar
-
- # Move <cxxabi.h> to compiler-specific directories
- [ -f "${D}${STDCXX_INCDIR}/cxxabi.h" ] && \
- mv -f ${D}${STDCXX_INCDIR}/cxxabi.h ${D}${LIBPATH}/include/
-
- # These should be symlinks
- cd ${D}${BINPATH}
- for x in gcc g++ c++ g77 gcj
- do
- rm -f ${CCHOST}-${x}
- [ -f "${x}" ] && ln -sf ${x} ${CCHOST}-${x}
-
- if [ -f "${CCHOST}-${x}-${PV}" ]
- then
- rm -f ${CCHOST}-${x}-${PV}
- ln -sf ${x} ${CCHOST}-${x}-${PV}
- fi
- done
- fi
-
- # This one comes with binutils
- if [ -f "${D}${LOC}/lib/libiberty.a" ]
- then
- rm -f ${D}${LOC}/lib/libiberty.a
- fi
- if [ -f "${D}${LIBPATH}/libiberty.a" ]
- then
- rm -f ${D}${LIBPATH}/libiberty.a
- fi
-
- cd ${S}
- if ! use build
- then
- cd ${S}
- docinto /${CCHOST}
- dodoc COPYING COPYING.LIB ChangeLog* FAQ MAINTAINERS README
- docinto ${CCHOST}/html
- dohtml *.html
- cd ${S}/boehm-gc
- docinto ${CCHOST}/boehm-gc
- dodoc ChangeLog doc/{README*,barrett_diagram}
- docinto ${CCHOST}/boehm-gc/html
- dohtml doc/*.html
- cd ${S}/gcc
- docinto ${CCHOST}/gcc
- dodoc ChangeLog* FSFChangeLog* LANGUAGES NEWS ONEWS README* SERVICE
- if use fortran
- then
- cd ${S}/libf2c
- docinto ${CCHOST}/libf2c
- dodoc ChangeLog* README TODO *.netlib
- fi
- cd ${S}/libffi
- docinto ${CCHOST}/libffi
- dodoc ChangeLog* LICENSE README
- cd ${S}/libiberty
- docinto ${CCHOST}/libiberty
- dodoc ChangeLog* COPYING.LIB README
- if use objc
- then
- cd ${S}/libobjc
- docinto ${CCHOST}/libobjc
- dodoc ChangeLog* README* THREADS*
- fi
- cd ${S}/libstdc++-v3
- docinto ${CCHOST}/libstdc++-v3
- dodoc ChangeLog* README
- docinto ${CCHOST}/libstdc++-v3/html
- dohtml -r -a css,diff,html,txt,xml docs/html/*
-
- if use gcj
- then
- cd ${S}/fastjar
- docinto ${CCHOST}/fastjar
- dodoc AUTHORS CHANGES COPYING ChangeLog* NEWS README
- cd ${S}/libjava
- docinto ${CCHOST}/libjava
- dodoc ChangeLog* COPYING HACKING LIBGCJ_LICENSE NEWS README THANKS
- fi
-
- prepman ${DATAPATH}
- prepinfo ${DATAPATH}
- else
- rm -rf ${D}/usr/share/{man,info}
- rm -rf ${D}${DATAPATH}/{man,info}
- fi
-
- # Rather install the script, else portage with changing $FILESDIR
- # between binary and source package borks things ....
- insinto /lib/rcscripts/awk
- doins ${FILESDIR}/awk/fixlafiles.awk
- exeinto /sbin
- doexe ${FILESDIR}/fix_libtool_files.sh
-
- if has_lib64
- then
- # GCC 3.4 tries to place libgcc_s in lib64, where it will never be
- # found. When multilib is enabled, it also places the 32bit version in
- # lib32. This problem could be handled by a symlink if you only plan on
- # having one compiler installed at a time, but since these directories
- # exist outside the versioned directories, versions from gcc 3.3 and
- # 3.4 will overwrite each other. not good.
- use multilib && \
- cp -pfd ${D}/${LIBPATH}/../lib32/libgcc_s* ${D}/${LIBPATH}
- cp -pfd ${D}/${LIBPATH}/../lib64/libgcc_s* ${D}/${LIBPATH}
- fi
-}
-
-pkg_preinst() {
-
- if [ ! -f "${WORKDIR}/.chkgccversion" ]
- then
- chk_gcc_version
- fi
-
- # Make again sure that the linker "should" be able to locate
- # libstdc++.so ...
- export LD_LIBRARY_PATH="${LIBPATH}:${LD_LIBRARY_PATH}"
- ${ROOT}/sbin/ldconfig
-}
-
-pkg_postinst() {
-
- export LD_LIBRARY_PATH="${LIBPATH}:${LD_LIBRARY_PATH}"
- if [ "${ROOT}" = "/" -a "${CHOST}" = "${CCHOST}" ]
- then
- gcc-config --use-portage-chost ${CCHOST}-${GCC_RELEASE_VER}
- fi
-
- # Update libtool linker scripts to reference new gcc version ...
- if [ "${ROOT}" = "/" ] && \
- [ -f "${WORKDIR}/.oldgccversion" -o -f "${WORKDIR}/.oldgccchost" ]
- then
- local OLD_GCC_VERSION=
- local OLD_GCC_CHOST=
-
- if [ -f "${WORKDIR}/.oldgccversion" ] && \
- [ -n "$(cat "${WORKDIR}/.oldgccversion")" ]
- then
- OLD_GCC_VERSION="$(cat "${WORKDIR}/.oldgccversion")"
- else
- OLD_GCC_VERSION="${GCC_RELEASE_VER}"
- fi
-
- if [ -f "${WORKDIR}/.oldgccchost" ] && \
- [ -n "$(cat "${WORKDIR}/.oldgccchost")" ]
- then
- OLD_GCC_CHOST="--oldarch $(cat "${WORKDIR}/.oldgccchost")"
- fi
-
- /sbin/fix_libtool_files.sh ${OLD_GCC_VERSION} ${OLD_GCC_CHOST}
- fi
-
- ewarn "If you are migrating to gcc 3.4 from a previous compiler, it is"
- ewarn "HIGHLY suggested you install libstdc++-v3 before uninstalling"
- ewarn "your old compiler, even if you dont plan on using any binary only"
- ewarn "applications that would otherwise need it. If you dont, then all"
- ewarn "c++ applications will break."
-}
diff --git a/sys-devel/gcc/gcc-3.4.4-r1.ebuild b/sys-devel/gcc/gcc-3.4.4-r1.ebuild
deleted file mode 100644
index f3d90125e3b9..000000000000
--- a/sys-devel/gcc/gcc-3.4.4-r1.ebuild
+++ /dev/null
@@ -1,143 +0,0 @@
-# Copyright 1999-2007 Gentoo Foundation
-# Distributed under the terms of the GNU General Public License v2
-# $Header: /var/cvsroot/gentoo-x86/sys-devel/gcc/gcc-3.4.4-r1.ebuild,v 1.18 2007/07/22 06:35:08 dberkholz Exp $
-
-MAN_VER=""
-PATCH_VER="1.7"
-UCLIBC_VER="1.2"
-PIE_VER="8.7.8"
-PP_VER="1.0"
-HTB_VER="1.00"
-
-GCC_LIBSSP_SUPPORT="true"
-
-ETYPE="gcc-compiler"
-
-# Punt redhat patch #87631
-GENTOO_PATCH_EXCLUDE="08_all_gcc34-chk.patch"
-
-# arch/libc configurations known to be stable with {PIE,SSP}-by-default
-SSP_STABLE="x86 sparc amd64 ppc ppc64"
-SSP_UCLIBC_STABLE="arm mips ppc x86"
-PIE_GLIBC_STABLE="x86 sparc amd64 ppc ppc64"
-PIE_UCLIBC_STABLE="x86 mips ppc"
-
-# arch/libc configurations known to be broken with {PIE,SSP}-by-default
-SSP_UNSUPPORTED="hppa"
-SSP_UCLIBC_UNSUPPORTED="${SSP_UNSUPPORTED}"
-PIE_UCLIBC_UNSUPPORTED="alpha amd64 arm hppa ia64 m68k ppc64 s390 sh sparc"
-PIE_GLIBC_UNSUPPORTED="hppa"
-
-# whether we should split out specs files for multiple {PIE,SSP}-by-default
-# and vanilla configurations.
-SPLIT_SPECS=${SPLIT_SPECS-true}
-
-#GENTOO_PATCH_EXCLUDE=""
-#PIEPATCH_EXCLUDE=""
-
-inherit toolchain eutils
-
-DESCRIPTION="The GNU Compiler Collection. Includes C/C++, java compilers, pie+ssp extensions, Haj Ten Brugge runtime bounds checking"
-
-# Stuff to test before adding ~arch
-KEYWORDS="-* alpha amd64 arm -hppa ~ia64 mips ppc ppc64 ~s390 sh ~sparc x86"
-
-# we need a proper glibc version for the Scrt1.o provided to the pie-ssp specs
-# NOTE: we SHOULD be using at least binutils 2.15.90.0.1 everywhere for proper
-# .eh_frame ld optimisation and symbol visibility support, but it hasnt been
-# well tested in gentoo on any arch other than amd64!!
-RDEPEND="|| ( >=sys-devel/gcc-config-1.3.12-r4 app-admin/eselect-compiler )
- >=sys-libs/zlib-1.1.4
- elibc_glibc? (
- >=sys-libs/glibc-2.3.3_pre20040420-r1
- hardened? ( >=sys-libs/glibc-2.3.3_pre20040529 )
- )
- !build? (
- gcj? (
- gtk? (
- x11-libs/libXt
- x11-libs/libX11
- x11-libs/libXtst
- x11-proto/xproto
- x11-proto/xextproto
- >=x11-libs/gtk+-2.2
- )
- >=media-libs/libart_lgpl-2.1
- )
- >=sys-libs/ncurses-5.2-r2
- nls? ( sys-devel/gettext )
- )"
-
-if [[ ${CATEGORY/cross-} != ${CATEGORY} ]]; then
- RDEPEND="${RDEPEND} ${CATEGORY}/binutils"
-fi
-
-DEPEND="${RDEPEND}
- >=sys-apps/texinfo-4.2-r4
- >=sys-devel/bison-1.875
- >=sys-devel/binutils-2.14.90.0.8-r1
- amd64? ( >=sys-devel/binutils-2.15.90.0.1.1-r1 )"
-PDEPEND="|| ( sys-devel/gcc-config app-admin/eselect-compiler )
- x86? ( !nocxx? ( !elibc_uclibc? ( !build? ( || ( sys-libs/libstdc++-v3 =sys-devel/gcc-3.3* ) ) ) ) )"
-
-src_unpack() {
- gcc_src_unpack
-
- # misc patches that havent made it into a patch tarball yet
- [[ ${CHOST} == ${CTARGET} ]] && epatch "${FILESDIR}"/gcc-spec-env.patch
-
- # nothing in the tree provides libssp.so, so nothing will ever trigger this
- # logic, but having the patch in the tree makes life so much easier for me
- # since I dont have to also have an overlay for this.
- want_libssp && epatch "${FILESDIR}"/3.4.3/libssp.patch
-
- # Anything useful and objc will require libffi. Seriously. Lets just force
- # libffi to install with USE="objc", even though it normally only installs
- # if you attempt to build gcj.
- if ! use build && use objc && ! use gcj ; then
- epatch "${FILESDIR}"/3.4.3/libffi-without-libgcj.patch
- #epatch ${FILESDIR}/3.4.3/libffi-nogcj-lib-path-fix.patch
- fi
-
- # Fix cross-compiling
- epatch "${FILESDIR}"/3.4.4/gcc-3.4.4-cross-compile.patch
-
- [[ ${CTARGET} == *-softfloat-* ]] && epatch "${FILESDIR}"/3.4.4/gcc-3.4.4-softfloat.patch
-
- # Arch stuff
- case $(tc-arch) in
- mips)
- # If mips, and we DON'T want multilib, then rig gcc to only use n32 OR n64
- if ! is_multilib; then
- use n32 && epatch ${FILESDIR}/3.4.1/gcc-3.4.1-mips-n32only.patch
- use n64 && epatch ${FILESDIR}/3.4.1/gcc-3.4.1-mips-n64only.patch
- fi
-
- # Patch forward-ported from a gcc-3.0.x patch that adds -march=r10000 and
- # -mtune=r10000 support to gcc (Allows the compiler to generate code to
- # take advantage of R10k's second ALU, perform shifts, etc..
- #
- # Needs re-porting to DFA in gcc-4.0 - Any Volunteers? :)
- epatch ${FILESDIR}/3.4.2/gcc-3.4.x-mips-add-march-r10k.patch
-
- # This is a very special patch -- it allows us to build semi-usable kernels
- # on SGI IP28 (Indigo2 Impact R10000) systems. The patch is henceforth
- # regarded as a kludge by upstream, and thus, it will never get accepted upstream,
- # but for our purposes of building a kernel, it works.
- # Unless you're building an IP28 kernel, you really don't need care about what
- # this patch does, because if you are, you are probably already aware of what
- # it does.
- # All that said, the abilities of this patch are disabled by default and need
- # to be enabled by passing -mip28-cache-barrier. Only used to build kernels,
- # There is the possibility it may be used for very specific userland apps too.
- if use ip28; then
- epatch ${FILESDIR}/3.4.2/gcc-3.4.2-mips-ip28_cache_barriers-v2.patch
- fi
- ;;
- amd64)
- if is_multilib ; then
- sed -i -e '/GLIBCXX_IS_NATIVE=/s:false:true:' libstdc++-v3/configure || die
- fi
- ;;
- esac
-}
diff --git a/sys-devel/gcc/gcc-3.4.5-r1.ebuild b/sys-devel/gcc/gcc-3.4.5-r1.ebuild
deleted file mode 100644
index 1b6620df5dd2..000000000000
--- a/sys-devel/gcc/gcc-3.4.5-r1.ebuild
+++ /dev/null
@@ -1,144 +0,0 @@
-# Copyright 1999-2007 Gentoo Foundation
-# Distributed under the terms of the GNU General Public License v2
-# $Header: /var/cvsroot/gentoo-x86/sys-devel/gcc/gcc-3.4.5-r1.ebuild,v 1.16 2007/07/22 06:35:08 dberkholz Exp $
-
-MAN_VER=""
-PATCH_VER="1.4"
-UCLIBC_VER="1.1"
-PIE_VER="8.7.9"
-PP_VER="1.0"
-HTB_VER="1.00"
-HTB_GCC_VER="3.4.4"
-
-GCC_LIBSSP_SUPPORT="true"
-
-ETYPE="gcc-compiler"
-
-# arch/libc configurations known to be stable with {PIE,SSP}-by-default
-SSP_STABLE="x86 sparc amd64 ppc ppc64"
-SSP_UCLIBC_STABLE="arm mips ppc x86"
-PIE_GLIBC_STABLE="x86 sparc amd64 ppc ppc64"
-PIE_UCLIBC_STABLE="x86 mips ppc"
-
-# arch/libc configurations known to be broken with {PIE,SSP}-by-default
-SSP_UNSUPPORTED="hppa"
-SSP_UCLIBC_UNSUPPORTED="${SSP_UNSUPPORTED}"
-PIE_UCLIBC_UNSUPPORTED="alpha amd64 arm hppa ia64 m68k ppc64 s390 sh sparc"
-PIE_GLIBC_UNSUPPORTED="hppa"
-
-# whether we should split out specs files for multiple {PIE,SSP}-by-default
-# and vanilla configurations.
-SPLIT_SPECS=${SPLIT_SPECS-true}
-
-#GENTOO_PATCH_EXCLUDE=""
-#PIEPATCH_EXCLUDE=""
-
-inherit toolchain eutils
-
-DESCRIPTION="The GNU Compiler Collection. Includes C/C++, java compilers, pie+ssp extensions, Haj Ten Brugge runtime bounds checking"
-
-KEYWORDS="-* ~amd64 arm -hppa ~ia64 ~mips ppc ~ppc64 ~s390 sh x86"
-
-# we need a proper glibc version for the Scrt1.o provided to the pie-ssp specs
-# NOTE: we SHOULD be using at least binutils 2.15.90.0.1 everywhere for proper
-# .eh_frame ld optimisation and symbol visibility support, but it hasnt been
-# well tested in gentoo on any arch other than amd64!!
-RDEPEND="|| ( >=sys-devel/gcc-config-1.3.12-r4 app-admin/eselect-compiler )
- >=sys-libs/zlib-1.1.4
- elibc_glibc? (
- >=sys-libs/glibc-2.3.3_pre20040420-r1
- hardened? ( >=sys-libs/glibc-2.3.3_pre20040529 )
- )
- !build? (
- gcj? (
- gtk? (
- x11-libs/libXt
- x11-libs/libX11
- x11-libs/libXtst
- x11-proto/xproto
- x11-proto/xextproto
- >=x11-libs/gtk+-2.2
- )
- >=media-libs/libart_lgpl-2.1
- )
- >=sys-libs/ncurses-5.2-r2
- nls? ( sys-devel/gettext )
- )"
-
-if [[ ${CATEGORY/cross-} != ${CATEGORY} ]]; then
- RDEPEND="${RDEPEND} ${CATEGORY}/binutils"
-fi
-
-DEPEND="${RDEPEND}
- >=sys-apps/texinfo-4.2-r4
- >=sys-devel/bison-1.875
- >=sys-devel/binutils-2.14.90.0.8-r1
- amd64? ( >=sys-devel/binutils-2.15.90.0.1.1-r1 )"
-PDEPEND="|| ( sys-devel/gcc-config app-admin/eselect-compiler )
- x86? ( !nocxx? ( !elibc_uclibc? ( !build? ( || ( sys-libs/libstdc++-v3 =sys-devel/gcc-3.3* ) ) ) ) )"
-
-src_unpack() {
- gcc_src_unpack
-
- # misc patches that havent made it into a patch tarball yet
- [[ ${CHOST} == ${CTARGET} ]] && epatch "${FILESDIR}"/gcc-spec-env.patch
-
- # nothing in the tree provides libssp.so, so nothing will ever trigger this
- # logic, but having the patch in the tree makes life so much easier for me
- # since I dont have to also have an overlay for this.
- want_libssp && epatch "${FILESDIR}"/3.4.3/libssp.patch
-
- # Anything useful and objc will require libffi. Seriously. Lets just force
- # libffi to install with USE="objc", even though it normally only installs
- # if you attempt to build gcj.
- if ! use build && use objc && ! use gcj ; then
- epatch "${FILESDIR}"/3.4.3/libffi-without-libgcj.patch
- #epatch ${FILESDIR}/3.4.3/libffi-nogcj-lib-path-fix.patch
- fi
-
- # Fix cross-compiling
- epatch "${FILESDIR}"/3.4.4/gcc-3.4.4-cross-compile.patch
-
- [[ ${CTARGET} == *-softfloat-* ]] && epatch "${FILESDIR}"/3.4.4/gcc-3.4.4-softfloat.patch
-
- # Arch stuff
- case $(tc-arch) in
- mips)
- # If mips, and we DON'T want multilib, then rig gcc to only use n32 OR n64
- if ! is_multilib; then
- use n32 && epatch ${FILESDIR}/3.4.1/gcc-3.4.1-mips-n32only.patch
- use n64 && epatch ${FILESDIR}/3.4.1/gcc-3.4.1-mips-n64only.patch
- fi
-
- # Patch forward-ported from a gcc-3.0.x patch that adds -march=r10000 and
- # -mtune=r10000 support to gcc (Allows the compiler to generate code to
- # take advantage of R10k's second ALU, perform shifts, etc..
- #
- # Needs re-porting to DFA in gcc-4.0 - Any Volunteers? :)
- epatch ${FILESDIR}/3.4.2/gcc-3.4.x-mips-add-march-r10k.patch
-
- # This is a very special patch -- it allows us to build semi-usable kernels
- # on SGI IP28 (Indigo2 Impact R10000) systems. The patch is henceforth
- # regarded as a kludge by upstream, and thus, it will never get accepted upstream,
- # but for our purposes of building a kernel, it works.
- # Unless you're building an IP28 kernel, you really don't need care about what
- # this patch does, because if you are, you are probably already aware of what
- # it does.
- # All that said, the abilities of this patch are disabled by default and need
- # to be enabled by passing -mip28-cache-barrier. Only used to build kernels,
- # There is the possibility it may be used for very specific userland apps too.
- if use ip28; then
- epatch ${FILESDIR}/3.4.2/gcc-3.4.2-mips-ip28_cache_barriers-v3.patch
- elif use ip32r10k; then
- # similar to the above patch, but we force a whole ton of cache barriers to be
- # generated for ther super-experimental ip32-r10k system
- epatch ${FILESDIR}/3.4.2/gcc-3.4.2-mips-ip28_cache_barriers-v3-ip32r10k.patch
- fi
- ;;
- amd64)
- if is_multilib ; then
- sed -i -e '/GLIBCXX_IS_NATIVE=/s:false:true:' libstdc++-v3/configure || die
- fi
- ;;
- esac
-}
diff --git a/sys-devel/gcc/gcc-3.4.5.ebuild b/sys-devel/gcc/gcc-3.4.5.ebuild
deleted file mode 100644
index e2915cf346f5..000000000000
--- a/sys-devel/gcc/gcc-3.4.5.ebuild
+++ /dev/null
@@ -1,140 +0,0 @@
-# Copyright 1999-2007 Gentoo Foundation
-# Distributed under the terms of the GNU General Public License v2
-# $Header: /var/cvsroot/gentoo-x86/sys-devel/gcc/gcc-3.4.5.ebuild,v 1.19 2007/07/22 06:35:08 dberkholz Exp $
-
-MAN_VER=""
-PATCH_VER="1.2"
-UCLIBC_VER="1.0"
-PIE_VER="8.7.9"
-PP_VER="1.0"
-HTB_VER="1.00"
-HTB_GCC_VER="3.4.4"
-
-GCC_LIBSSP_SUPPORT="true"
-
-ETYPE="gcc-compiler"
-
-# arch/libc configurations known to be stable with {PIE,SSP}-by-default
-SSP_STABLE="x86 sparc amd64 ppc ppc64"
-SSP_UCLIBC_STABLE="arm mips ppc x86"
-PIE_GLIBC_STABLE="x86 sparc amd64 ppc ppc64"
-PIE_UCLIBC_STABLE="x86 mips ppc"
-
-# arch/libc configurations known to be broken with {PIE,SSP}-by-default
-SSP_UNSUPPORTED="hppa"
-SSP_UCLIBC_UNSUPPORTED="${SSP_UNSUPPORTED}"
-PIE_UCLIBC_UNSUPPORTED="alpha amd64 arm hppa ia64 m68k ppc64 s390 sh sparc"
-PIE_GLIBC_UNSUPPORTED="hppa"
-
-# whether we should split out specs files for multiple {PIE,SSP}-by-default
-# and vanilla configurations.
-SPLIT_SPECS=${SPLIT_SPECS-true}
-
-#GENTOO_PATCH_EXCLUDE=""
-#PIEPATCH_EXCLUDE=""
-
-inherit toolchain eutils
-
-DESCRIPTION="The GNU Compiler Collection. Includes C/C++, java compilers, pie+ssp extensions, Haj Ten Brugge runtime bounds checking"
-
-KEYWORDS="-* amd64 ~arm -hppa ~ia64 mips ~ppc ~ppc64 ~s390 sh sparc x86"
-
-# we need a proper glibc version for the Scrt1.o provided to the pie-ssp specs
-# NOTE: we SHOULD be using at least binutils 2.15.90.0.1 everywhere for proper
-# .eh_frame ld optimisation and symbol visibility support, but it hasnt been
-# well tested in gentoo on any arch other than amd64!!
-RDEPEND="|| ( >=sys-devel/gcc-config-1.3.12-r4 app-admin/eselect-compiler )
- >=sys-libs/zlib-1.1.4
- elibc_glibc? (
- >=sys-libs/glibc-2.3.3_pre20040420-r1
- hardened? ( >=sys-libs/glibc-2.3.3_pre20040529 )
- )
- !build? (
- gcj? (
- gtk? (
- x11-libs/libXt
- x11-libs/libX11
- x11-libs/libXtst
- x11-proto/xproto
- x11-proto/xextproto
- >=x11-libs/gtk+-2.2
- )
- >=media-libs/libart_lgpl-2.1
- )
- >=sys-libs/ncurses-5.2-r2
- nls? ( sys-devel/gettext )
- )"
-
-if [[ ${CATEGORY/cross-} != ${CATEGORY} ]]; then
- RDEPEND="${RDEPEND} ${CATEGORY}/binutils"
-fi
-
-DEPEND="${RDEPEND}
- >=sys-apps/texinfo-4.2-r4
- >=sys-devel/bison-1.875
- >=sys-devel/binutils-2.14.90.0.8-r1
- amd64? ( >=sys-devel/binutils-2.15.90.0.1.1-r1 )"
-PDEPEND="|| ( sys-devel/gcc-config app-admin/eselect-compiler )
- x86? ( !nocxx? ( !elibc_uclibc? ( !build? ( || ( sys-libs/libstdc++-v3 =sys-devel/gcc-3.3* ) ) ) ) )"
-
-src_unpack() {
- gcc_src_unpack
-
- # misc patches that havent made it into a patch tarball yet
- [[ ${CHOST} == ${CTARGET} ]] && epatch "${FILESDIR}"/gcc-spec-env.patch
-
- # nothing in the tree provides libssp.so, so nothing will ever trigger this
- # logic, but having the patch in the tree makes life so much easier for me
- # since I dont have to also have an overlay for this.
- want_libssp && epatch "${FILESDIR}"/3.4.3/libssp.patch
-
- # Anything useful and objc will require libffi. Seriously. Lets just force
- # libffi to install with USE="objc", even though it normally only installs
- # if you attempt to build gcj.
- if ! use build && use objc && ! use gcj ; then
- epatch "${FILESDIR}"/3.4.3/libffi-without-libgcj.patch
- #epatch ${FILESDIR}/3.4.3/libffi-nogcj-lib-path-fix.patch
- fi
-
- # Fix cross-compiling
- epatch "${FILESDIR}"/3.4.4/gcc-3.4.4-cross-compile.patch
-
- [[ ${CTARGET} == *-softfloat-* ]] && epatch "${FILESDIR}"/3.4.4/gcc-3.4.4-softfloat.patch
-
- # Arch stuff
- case $(tc-arch) in
- mips)
- # If mips, and we DON'T want multilib, then rig gcc to only use n32 OR n64
- if ! is_multilib; then
- use n32 && epatch ${FILESDIR}/3.4.1/gcc-3.4.1-mips-n32only.patch
- use n64 && epatch ${FILESDIR}/3.4.1/gcc-3.4.1-mips-n64only.patch
- fi
-
- # Patch forward-ported from a gcc-3.0.x patch that adds -march=r10000 and
- # -mtune=r10000 support to gcc (Allows the compiler to generate code to
- # take advantage of R10k's second ALU, perform shifts, etc..
- #
- # Needs re-porting to DFA in gcc-4.0 - Any Volunteers? :)
- epatch ${FILESDIR}/3.4.2/gcc-3.4.x-mips-add-march-r10k.patch
-
- # This is a very special patch -- it allows us to build semi-usable kernels
- # on SGI IP28 (Indigo2 Impact R10000) systems. The patch is henceforth
- # regarded as a kludge by upstream, and thus, it will never get accepted upstream,
- # but for our purposes of building a kernel, it works.
- # Unless you're building an IP28 kernel, you really don't need care about what
- # this patch does, because if you are, you are probably already aware of what
- # it does.
- # All that said, the abilities of this patch are disabled by default and need
- # to be enabled by passing -mip28-cache-barrier. Only used to build kernels,
- # There is the possibility it may be used for very specific userland apps too.
- if use ip28; then
- epatch ${FILESDIR}/3.4.2/gcc-3.4.2-mips-ip28_cache_barriers-v2.patch
- fi
- ;;
- amd64)
- if is_multilib ; then
- sed -i -e '/GLIBCXX_IS_NATIVE=/s:false:true:' libstdc++-v3/configure || die
- fi
- ;;
- esac
-}
diff --git a/sys-devel/gcc/gcc-3.4.6-r1.ebuild b/sys-devel/gcc/gcc-3.4.6-r1.ebuild
deleted file mode 100644
index 0165f58222f6..000000000000
--- a/sys-devel/gcc/gcc-3.4.6-r1.ebuild
+++ /dev/null
@@ -1,143 +0,0 @@
-# Copyright 1999-2007 Gentoo Foundation
-# Distributed under the terms of the GNU General Public License v2
-# $Header: /var/cvsroot/gentoo-x86/sys-devel/gcc/gcc-3.4.6-r1.ebuild,v 1.16 2007/07/22 06:35:08 dberkholz Exp $
-
-MAN_VER=""
-PATCH_VER="1.2"
-UCLIBC_VER="1.1"
-UCLIBC_GCC_VER="3.4.5"
-PIE_VER="8.7.9"
-PIE_GCC_VER="3.4.5"
-PP_VER="1.0"
-PP_GCC_VER="3.4.5"
-HTB_VER="1.00"
-HTB_GCC_VER="3.4.4"
-
-GCC_LIBSSP_SUPPORT="true"
-
-ETYPE="gcc-compiler"
-
-# arch/libc configurations known to be stable with {PIE,SSP}-by-default
-SSP_STABLE="x86 sparc amd64 ppc ppc64"
-SSP_UCLIBC_STABLE="arm mips ppc x86"
-PIE_GLIBC_STABLE="x86 sparc amd64 ppc ppc64"
-PIE_UCLIBC_STABLE="x86 mips ppc"
-
-# arch/libc configurations known to be broken with {PIE,SSP}-by-default
-SSP_UNSUPPORTED="hppa sh"
-SSP_UCLIBC_UNSUPPORTED="${SSP_UNSUPPORTED}"
-PIE_UCLIBC_UNSUPPORTED="alpha amd64 arm hppa ia64 m68k ppc64 s390 sh sparc"
-PIE_GLIBC_UNSUPPORTED="hppa"
-
-# whether we should split out specs files for multiple {PIE,SSP}-by-default
-# and vanilla configurations.
-SPLIT_SPECS=${SPLIT_SPECS-true}
-
-#GENTOO_PATCH_EXCLUDE=""
-#PIEPATCH_EXCLUDE=""
-
-inherit toolchain eutils
-
-DESCRIPTION="The GNU Compiler Collection. Includes C/C++, java compilers, pie+ssp extensions, Haj Ten Brugge runtime bounds checking"
-
-KEYWORDS="-* alpha amd64 arm mips ppc ppc64 sh sparc x86 ~x86-fbsd"
-
-# we need a proper glibc version for the Scrt1.o provided to the pie-ssp specs
-# NOTE: we SHOULD be using at least binutils 2.15.90.0.1 everywhere for proper
-# .eh_frame ld optimisation and symbol visibility support, but it hasnt been
-# well tested in gentoo on any arch other than amd64!!
-RDEPEND="|| ( >=sys-devel/gcc-config-1.3.12-r4 app-admin/eselect-compiler )
- >=sys-libs/zlib-1.1.4
- virtual/libiconv
- elibc_glibc? (
- >=sys-libs/glibc-2.3.3_pre20040420-r1
- hardened? ( >=sys-libs/glibc-2.3.3_pre20040529 )
- )
- !build? (
- gcj? (
- gtk? (
- x11-libs/libXt
- x11-libs/libX11
- x11-libs/libXtst
- x11-proto/xproto
- x11-proto/xextproto
- >=x11-libs/gtk+-2.2
- )
- >=media-libs/libart_lgpl-2.1
- )
- >=sys-libs/ncurses-5.2-r2
- nls? ( sys-devel/gettext )
- )"
-
-if [[ ${CATEGORY/cross-} != ${CATEGORY} ]]; then
- RDEPEND="${RDEPEND} ${CATEGORY}/binutils"
-fi
-
-DEPEND="${RDEPEND}
- >=sys-apps/texinfo-4.2-r4
- >=sys-devel/bison-1.875
- >=sys-devel/binutils-2.14.90.0.8-r1
- amd64? ( >=sys-devel/binutils-2.15.90.0.1.1-r1 )"
-PDEPEND="|| ( sys-devel/gcc-config app-admin/eselect-compiler )"
-
-src_unpack() {
- gcc_src_unpack
-
- # misc patches that havent made it into a patch tarball yet
- [[ ${CHOST} == ${CTARGET} ]] && epatch "${FILESDIR}"/gcc-spec-env.patch
-
- # nothing in the tree provides libssp.so, so nothing will ever trigger this
- # logic, but having the patch in the tree makes life so much easier for me
- # since I dont have to also have an overlay for this.
- want_libssp && epatch "${FILESDIR}"/3.4.3/libssp.patch
-
- # Anything useful and objc will require libffi. Seriously. Lets just force
- # libffi to install with USE="objc", even though it normally only installs
- # if you attempt to build gcj.
- if ! use build && use objc && ! use gcj ; then
- epatch "${FILESDIR}"/3.4.3/libffi-without-libgcj.patch
- #epatch ${FILESDIR}/3.4.3/libffi-nogcj-lib-path-fix.patch
- fi
-
- # Fix cross-compiling
- epatch "${FILESDIR}"/3.4.4/gcc-3.4.4-cross-compile.patch
-
- [[ ${CTARGET} == *-softfloat-* ]] && epatch "${FILESDIR}"/3.4.4/gcc-3.4.4-softfloat.patch
-
- # Arch stuff
- case $(tc-arch) in
- mips)
- # If mips, and we DON'T want multilib, then rig gcc to only use n32 OR n64
- if ! is_multilib; then
- use n32 && epatch ${FILESDIR}/3.4.1/gcc-3.4.1-mips-n32only.patch
- use n64 && epatch ${FILESDIR}/3.4.1/gcc-3.4.1-mips-n64only.patch
- fi
-
- # Patch forward-ported from a gcc-3.0.x patch that adds -march=r10000 and
- # -mtune=r10000 support to gcc (Allows the compiler to generate code to
- # take advantage of R10k's second ALU, perform shifts, etc..
- #
- # Needs re-porting to DFA in gcc-4.0 - Any Volunteers? :)
- epatch ${FILESDIR}/3.4.2/gcc-3.4.x-mips-add-march-r10k.patch
-
- # This is a very special patch -- it allows us to build semi-usable kernels
- # on SGI IP28 (Indigo2 Impact R10000) systems. The patch is henceforth
- # regarded as a kludge by upstream, and thus, it will never get accepted upstream,
- # but for our purposes of building a kernel, it works.
- # Unless you're building an IP28 kernel, you really don't need care about what
- # this patch does, because if you are, you are probably already aware of what
- # it does.
- # All that said, the abilities of this patch are disabled by default and need
- # to be enabled by passing -mip28-cache-barrier. Only used to build kernels,
- # There is the possibility it may be used for very specific userland apps too.
- if use ip28 or use ip32r10k; then
- epatch ${FILESDIR}/3.4.2/gcc-3.4.2-mips-ip28_cache_barriers-v4.patch
- fi
- ;;
- amd64)
- if is_multilib ; then
- sed -i -e '/GLIBCXX_IS_NATIVE=/s:false:true:' libstdc++-v3/configure || die
- fi
- ;;
- esac
-}
diff --git a/sys-devel/gcc/gcc-3.4.6.ebuild b/sys-devel/gcc/gcc-3.4.6.ebuild
deleted file mode 100644
index c01695fadd5d..000000000000
--- a/sys-devel/gcc/gcc-3.4.6.ebuild
+++ /dev/null
@@ -1,143 +0,0 @@
-# Copyright 1999-2007 Gentoo Foundation
-# Distributed under the terms of the GNU General Public License v2
-# $Header: /var/cvsroot/gentoo-x86/sys-devel/gcc/gcc-3.4.6.ebuild,v 1.13 2007/07/22 06:35:08 dberkholz Exp $
-
-MAN_VER=""
-PATCH_VER="1.0"
-UCLIBC_VER="1.1"
-UCLIBC_GCC_VER="3.4.5"
-PIE_VER="8.7.9"
-PIE_GCC_VER="3.4.5"
-PP_VER="1.0"
-PP_GCC_VER="3.4.5"
-HTB_VER="1.00"
-HTB_GCC_VER="3.4.4"
-
-GCC_LIBSSP_SUPPORT="true"
-
-ETYPE="gcc-compiler"
-
-# arch/libc configurations known to be stable with {PIE,SSP}-by-default
-SSP_STABLE="x86 sparc amd64 ppc ppc64"
-SSP_UCLIBC_STABLE="arm mips ppc x86"
-PIE_GLIBC_STABLE="x86 sparc amd64 ppc ppc64"
-PIE_UCLIBC_STABLE="x86 mips ppc"
-
-# arch/libc configurations known to be broken with {PIE,SSP}-by-default
-SSP_UNSUPPORTED="hppa"
-SSP_UCLIBC_UNSUPPORTED="${SSP_UNSUPPORTED}"
-PIE_UCLIBC_UNSUPPORTED="alpha amd64 arm hppa ia64 m68k ppc64 s390 sh sparc"
-PIE_GLIBC_UNSUPPORTED="hppa"
-
-# whether we should split out specs files for multiple {PIE,SSP}-by-default
-# and vanilla configurations.
-SPLIT_SPECS=${SPLIT_SPECS-true}
-
-#GENTOO_PATCH_EXCLUDE=""
-#PIEPATCH_EXCLUDE=""
-
-inherit toolchain eutils
-
-DESCRIPTION="The GNU Compiler Collection. Includes C/C++, java compilers, pie+ssp extensions, Haj Ten Brugge runtime bounds checking"
-
-KEYWORDS="-* ~alpha ~amd64 ~arm ~mips ~ppc ~ppc64 ~sh ~sparc ~x86 ~x86-fbsd"
-
-# we need a proper glibc version for the Scrt1.o provided to the pie-ssp specs
-# NOTE: we SHOULD be using at least binutils 2.15.90.0.1 everywhere for proper
-# .eh_frame ld optimisation and symbol visibility support, but it hasnt been
-# well tested in gentoo on any arch other than amd64!!
-RDEPEND="|| ( >=sys-devel/gcc-config-1.3.12-r4 app-admin/eselect-compiler )
- >=sys-libs/zlib-1.1.4
- elibc_glibc? (
- >=sys-libs/glibc-2.3.3_pre20040420-r1
- hardened? ( >=sys-libs/glibc-2.3.3_pre20040529 )
- )
- !build? (
- gcj? (
- gtk? (
- x11-libs/libXt
- x11-libs/libX11
- x11-libs/libXtst
- x11-proto/xproto
- x11-proto/xextproto
- >=x11-libs/gtk+-2.2
- )
- >=media-libs/libart_lgpl-2.1
- )
- >=sys-libs/ncurses-5.2-r2
- nls? ( sys-devel/gettext )
- )"
-
-if [[ ${CATEGORY/cross-} != ${CATEGORY} ]]; then
- RDEPEND="${RDEPEND} ${CATEGORY}/binutils"
-fi
-
-DEPEND="${RDEPEND}
- >=sys-apps/texinfo-4.2-r4
- >=sys-devel/bison-1.875
- >=sys-devel/binutils-2.14.90.0.8-r1
- amd64? ( >=sys-devel/binutils-2.15.90.0.1.1-r1 )"
-PDEPEND="|| ( sys-devel/gcc-config app-admin/eselect-compiler )
- x86? ( !nocxx? ( !elibc_uclibc? ( !build? ( || ( sys-libs/libstdc++-v3 =sys-devel/gcc-3.3* ) ) ) ) )"
-
-src_unpack() {
- gcc_src_unpack
-
- # misc patches that havent made it into a patch tarball yet
- [[ ${CHOST} == ${CTARGET} ]] && epatch "${FILESDIR}"/gcc-spec-env.patch
-
- # nothing in the tree provides libssp.so, so nothing will ever trigger this
- # logic, but having the patch in the tree makes life so much easier for me
- # since I dont have to also have an overlay for this.
- want_libssp && epatch "${FILESDIR}"/3.4.3/libssp.patch
-
- # Anything useful and objc will require libffi. Seriously. Lets just force
- # libffi to install with USE="objc", even though it normally only installs
- # if you attempt to build gcj.
- if ! use build && use objc && ! use gcj ; then
- epatch "${FILESDIR}"/3.4.3/libffi-without-libgcj.patch
- #epatch ${FILESDIR}/3.4.3/libffi-nogcj-lib-path-fix.patch
- fi
-
- # Fix cross-compiling
- epatch "${FILESDIR}"/3.4.4/gcc-3.4.4-cross-compile.patch
-
- [[ ${CTARGET} == *-softfloat-* ]] && epatch "${FILESDIR}"/3.4.4/gcc-3.4.4-softfloat.patch
-
- # Arch stuff
- case $(tc-arch) in
- mips)
- # If mips, and we DON'T want multilib, then rig gcc to only use n32 OR n64
- if ! is_multilib; then
- use n32 && epatch ${FILESDIR}/3.4.1/gcc-3.4.1-mips-n32only.patch
- use n64 && epatch ${FILESDIR}/3.4.1/gcc-3.4.1-mips-n64only.patch
- fi
-
- # Patch forward-ported from a gcc-3.0.x patch that adds -march=r10000 and
- # -mtune=r10000 support to gcc (Allows the compiler to generate code to
- # take advantage of R10k's second ALU, perform shifts, etc..
- #
- # Needs re-porting to DFA in gcc-4.0 - Any Volunteers? :)
- epatch ${FILESDIR}/3.4.2/gcc-3.4.x-mips-add-march-r10k.patch
-
- # This is a very special patch -- it allows us to build semi-usable kernels
- # on SGI IP28 (Indigo2 Impact R10000) systems. The patch is henceforth
- # regarded as a kludge by upstream, and thus, it will never get accepted upstream,
- # but for our purposes of building a kernel, it works.
- # Unless you're building an IP28 kernel, you really don't need care about what
- # this patch does, because if you are, you are probably already aware of what
- # it does.
- # All that said, the abilities of this patch are disabled by default and need
- # to be enabled by passing -mip28-cache-barrier. Only used to build kernels,
- # There is the possibility it may be used for very specific userland apps too.
- if use ip28 or use ip32r10k; then
- epatch ${FILESDIR}/3.4.2/gcc-3.4.2-mips-ip28_cache_barriers-v4.patch
- fi
- ;;
- amd64)
- if is_multilib ; then
- sed -i -e '/GLIBCXX_IS_NATIVE=/s:false:true:' libstdc++-v3/configure || die
- fi
- ;;
- esac
-}