From 4fb0c302e0809c1f88a8573e87ce46da1d821a8f Mon Sep 17 00:00:00 2001 From: "Yann E. MORIN\"" Date: Wed, 28 Oct 2009 18:55:40 +0100 Subject: config: rip-out versions marked as OBSOLETE diff --git a/config/binutils/binutils.in b/config/binutils/binutils.in index 9d506b5..0900085 100644 --- a/config/binutils/binutils.in +++ b/config/binutils/binutils.in @@ -91,16 +91,6 @@ config BINUTILS_V_2_16_1 bool prompt "2.16.1" -config BINUTILS_V_2_15 - bool - prompt "2.15 (OBSOLETE)" - depends on OBSOLETE - -config BINUTILS_V_2_14 - bool - prompt "2.14 (OBSOLETE)" - depends on OBSOLETE - endchoice config BINUTILS_VERSION @@ -124,8 +114,6 @@ config BINUTILS_VERSION default "2.18" if BINUTILS_V_2_18 default "2.17" if BINUTILS_V_2_17 default "2.16.1" if BINUTILS_V_2_16_1 - default "2.15" if BINUTILS_V_2_15 - default "2.14" if BINUTILS_V_2_14 config BINUTILS_EXTRA_CONFIG string diff --git a/config/cc/gcc.in b/config/cc/gcc.in index d479272..e5314a6 100644 --- a/config/cc/gcc.in +++ b/config/cc/gcc.in @@ -83,55 +83,15 @@ config CC_V_4_1_2 bool prompt "4.1.2" -config CC_V_4_1_1 - bool - prompt "4.1.1 (OBSOLETE)" - depends on OBSOLETE - -config CC_V_4_1_0 - bool - prompt "4.1.0 (OBSOLETE)" - depends on OBSOLETE - config CC_V_4_0_4 bool prompt "4.0.4" -config CC_V_4_0_3 - bool - prompt "4.0.3 (OBSOLETE)" - depends on OBSOLETE - -config CC_V_4_0_2 - bool - prompt "4.0.2 (OBSOLETE)" - depends on OBSOLETE - -config CC_V_4_0_1 - bool - prompt "4.0.1 (OBSOLETE)" - depends on OBSOLETE - -config CC_V_4_0_0 - bool - prompt "4.0.0 (OBSOLETE)" - depends on OBSOLETE - config CC_V_3_4_6 bool prompt "3.4.6 (OBSOLETE)" depends on OBSOLETE -config CC_V_3_3_6 - bool - prompt "3.3.6 (OBSOLETE)" - depends on OBSOLETE - -config CC_V_3_2_3 - bool - prompt "3.2.3 (OBSOLETE)" - depends on OBSOLETE - endchoice config CC_GCC_4_3_or_later @@ -161,16 +121,8 @@ config CC_VERSION default "4.2.1" if CC_V_4_2_1 default "4.2.0" if CC_V_4_2_0 default "4.1.2" if CC_V_4_1_2 - default "4.1.1" if CC_V_4_1_1 - default "4.1.0" if CC_V_4_1_0 default "4.0.4" if CC_V_4_0_4 - default "4.0.3" if CC_V_4_0_3 - default "4.0.2" if CC_V_4_0_2 - default "4.0.1" if CC_V_4_0_1 - default "4.0.0" if CC_V_4_0_0 default "3.4.6" if CC_V_3_4_6 - default "3.3.6" if CC_V_3_3_6 - default "3.2.3" if CC_V_3_2_3 config CC_CXA_ATEXIT bool diff --git a/config/debug/dmalloc.in b/config/debug/dmalloc.in index 7e026d0..fa6bdbd 100644 --- a/config/debug/dmalloc.in +++ b/config/debug/dmalloc.in @@ -13,11 +13,6 @@ config DMALLOC_V_5_5_2 bool prompt "5.5.2" -config DMALLOC_V_5_4_3 - bool - prompt "5.4.3 (OBSOLETE)" - depends on OBSOLETE - endchoice config DMALLOC_VERSION @@ -25,4 +20,3 @@ config DMALLOC_VERSION # Don't remove next line # CT_INSERT_VERSION_STRING_BELOW default "5.5.2" if DMALLOC_V_5_5_2 - default "5.4.3" if DMALLOC_V_5_4_3 diff --git a/config/debug/gdb.in b/config/debug/gdb.in index b567335..1941408 100644 --- a/config/debug/gdb.in +++ b/config/debug/gdb.in @@ -117,16 +117,6 @@ config GDB_V_6_6 bool prompt "6.6" -config GDB_V_6_5 - bool - prompt "6.5 (OBSOLETE)" - depends on OBSOLETE - -config GDB_V_6_4 - bool - prompt "6.4 (OBSOLETE)" - depends on OBSOLETE - config GDB_V_snapshot bool prompt "snapshot (EXPERIMENTAL)" @@ -143,8 +133,6 @@ config GDB_VERSION default "6.7.1" if GDB_V_6_7_1 default "6.7" if GDB_V_6_7 default "6.6" if GDB_V_6_6 - default "6.5" if GDB_V_6_5 - default "6.4" if GDB_V_6_4 default "snapshot" if GDB_V_snapshot if GDB_NATIVE diff --git a/config/debug/strace.in b/config/debug/strace.in index 4fcaa73..8f6ce0d 100644 --- a/config/debug/strace.in +++ b/config/debug/strace.in @@ -25,16 +25,6 @@ config STRACE_V_4_5_15 bool prompt "4.5.15" -config STRACE_V_4_5_14 - bool - prompt "4.5.14 (OBSOLETE)" - depends on OBSOLETE - -config STRACE_V_4_5 - bool - prompt "4.5 (OBSOLETE)" - depends on OBSOLETE - endchoice config STRACE_VERSION @@ -45,5 +35,3 @@ config STRACE_VERSION default "4.5.17" if STRACE_V_4_5_17 default "4.5.16" if STRACE_V_4_5_16 default "4.5.15" if STRACE_V_4_5_15 - default "4.5.14" if STRACE_V_4_5_14 - default "4.5" if STRACE_V_4_5 diff --git a/config/kernel/linux.in b/config/kernel/linux.in index 34c5422..e5792c5 100644 --- a/config/kernel/linux.in +++ b/config/kernel/linux.in @@ -90,51 +90,6 @@ config KERNEL_V_2_6_27_35 bool prompt "2.6.27.35 (long-term stable)" -config KERNEL_V_2_6_26_8 - bool - prompt "2.6.26.8 (OBSOLETE)" - depends on OBSOLETE - -config KERNEL_V_2_6_25_20 - bool - prompt "2.6.25.20 (OBSOLETE)" - depends on OBSOLETE - -config KERNEL_V_2_6_24_7 - bool - prompt "2.6.24.7 (OBSOLETE)" - depends on OBSOLETE - -config KERNEL_V_2_6_23_17 - bool - prompt "2.6.23.17 (OBSOLETE)" - depends on OBSOLETE - -config KERNEL_V_2_6_22_19 - bool - prompt "2.6.22.19 (OBSOLETE)" - depends on OBSOLETE - -config KERNEL_V_2_6_21_7 - bool - prompt "2.6.21.7 (OBSOLETE)" - depends on OBSOLETE - -config KERNEL_V_2_6_20_21 - bool - prompt "2.6.20.21 (OBSOLETE)" - depends on OBSOLETE - -config KERNEL_V_2_6_19_7 - bool - prompt "2.6.19.7 (OBSOLETE)" - depends on OBSOLETE - -config KERNEL_V_2_6_18_8 - bool - prompt "2.6.18.8 (OBSOLETE)" - depends on OBSOLETE - config KERNEL_V_select bool prompt "Other version (EXPERIMENTAL)" @@ -159,18 +114,8 @@ config KERNEL_VERSION default "2.6.30.1" if KERNEL_V_2_6_30_1 default "2.6.30" if KERNEL_V_2_6_30 default "2.6.29.6" if KERNEL_V_2_6_29_6 - default "2.6.29" if KERNEL_V_2_6_29 default "2.6.28.10" if KERNEL_V_2_6_28_10 default "2.6.27.35" if KERNEL_V_2_6_27_35 - default "2.6.26.8" if KERNEL_V_2_6_26_8 - default "2.6.25.20" if KERNEL_V_2_6_25_20 - default "2.6.24.7" if KERNEL_V_2_6_24_7 - default "2.6.23.17" if KERNEL_V_2_6_23_17 - default "2.6.22.19" if KERNEL_V_2_6_22_19 - default "2.6.21.7" if KERNEL_V_2_6_21_7 - default "2.6.20.21" if KERNEL_V_2_6_20_21 - default "2.6.19.7" if KERNEL_V_2_6_19_7 - default "2.6.18.8" if KERNEL_V_2_6_18_8 help Enter here the kernel version you want to use, if it is not listed above. Something like V.P.S or V.P.S.E, where: diff --git a/config/libc/uClibc.in b/config/libc/uClibc.in index 81c3b28..dcaace3 100644 --- a/config/libc/uClibc.in +++ b/config/libc/uClibc.in @@ -32,21 +32,6 @@ config LIBC_V_0_9_28_3 bool prompt "0.9.28.3" -config LIBC_V_0_9_28_2 - bool - prompt "0.9.28.2 (OBSOLETE)" - depends on OBSOLETE - -config LIBC_V_0_9_28_1 - bool - prompt "0.9.28.1 (OBSOLETE)" - depends on OBSOLETE - -config LIBC_V_0_9_28 - bool - prompt "0.9.28 (OBSOLETE)" - depends on OBSOLETE - config LIBC_V_snapshot bool prompt "latest snapshot (EXPERIMENTAL)" @@ -68,9 +53,6 @@ config LIBC_VERSION default "0.9.30" if LIBC_V_0_9_30 default "0.9.29" if LIBC_V_0_9_29 default "0.9.28.3" if LIBC_V_0_9_28_3 - default "0.9.28.2" if LIBC_V_0_9_28_2 - default "0.9.28.1" if LIBC_V_0_9_28_1 - default "0.9.28" if LIBC_V_0_9_28 default "snapshot" if LIBC_V_snapshot config LIBC_UCLIBC_0_9_30_or_later diff --git a/patches/binutils/2.14/100-sh-relocs.patch b/patches/binutils/2.14/100-sh-relocs.patch deleted file mode 100644 index ca0f2ac..0000000 --- a/patches/binutils/2.14/100-sh-relocs.patch +++ /dev/null @@ -1,38 +0,0 @@ -Message-Id: <200307311239.h6VCdNe27056@r-rr.iij4u.or.jp> -To: dank@kegel.com -Cc: kkojima@rr.iij4u.or.jp -Subject: Re: Writing PIC version of __udivsi3_i4? (was: Re: "make tests" fails - with "libc.so: text relocations used" in glibc-2.3.2 for sh4) -In-Reply-To: Your message of "Wed, 30 Jul 2003 21:55:54 -0700" - <3F28A15A.5010400@kegel.com> -References: <3F28A15A.5010400@kegel.com> -Date: Thu, 31 Jul 2003 21:47:38 +0900 -From: kaz Kojima - -Dan Kegel wrote: ->> I'll give binutils-2.14.90.0.5 a shot, then. -> -> No joy - same problem. Guess I'll take this up on binutils and/or libc-alpha. - -Please try the patch below, though it's a diff against the current -binutils CVS. - -Regards, - kaz --- -diff -u3p ORIG/src/bfd/elf32-sh.c LOCAL/src/bfd/elf32-sh.c ---- src/bfd/elf32-sh.c.old Fri Jul 25 14:46:58 2003 -+++ src/bfd/elf32-sh.c Thu Jul 31 21:09:38 2003 -@@ -6497,8 +6497,10 @@ sh_elf_check_relocs (bfd *abfd, struct b - sreloc, 2)) - return FALSE; - } -+#if 0 - if (sec->flags & SEC_READONLY) - info->flags |= DF_TEXTREL; -+#endif - elf_section_data (sec)->sreloc = sreloc; - } - - - diff --git a/patches/binutils/2.14/110-i386-no-divide-comment.patch b/patches/binutils/2.14/110-i386-no-divide-comment.patch deleted file mode 100644 index 699db8e..0000000 --- a/patches/binutils/2.14/110-i386-no-divide-comment.patch +++ /dev/null @@ -1,38 +0,0 @@ -diff -durN binutils-2.14.orig/gas/config/tc-i386.c binutils-2.14/gas/config/tc-i386.c ---- binutils-2.14.orig/gas/config/tc-i386.c 2003-01-29 11:05:52.000000000 +0100 -+++ binutils-2.14/gas/config/tc-i386.c 2008-09-22 08:54:50.000000000 +0200 -@@ -189,15 +189,10 @@ - const char extra_symbol_chars[] = "*%-(["; - #endif - --#if (defined (TE_I386AIX) \ -- || ((defined (OBJ_ELF) || defined (OBJ_MAYBE_ELF)) \ -- && !defined (TE_LINUX) \ -- && !defined (TE_FreeBSD) \ -- && !defined (TE_NetBSD))) - /* This array holds the chars that always start a comment. If the - pre-processor is disabled, these aren't very useful. */ --const char comment_chars[] = "#/"; --#define PREFIX_SEPARATOR '\\' -+const char comment_chars[] = "#"; -+#define PREFIX_SEPARATOR '/' - - /* This array holds the chars that only start a comment at the beginning of - a line. If the line seems to have the form '# 123 filename' -@@ -207,16 +202,7 @@ - #NO_APP at the beginning of its output. - Also note that comments started like this one will always work if - '/' isn't otherwise defined. */ --const char line_comment_chars[] = "#"; -- --#else --/* Putting '/' here makes it impossible to use the divide operator. -- However, we need it for compatibility with SVR4 systems. */ --const char comment_chars[] = "#"; --#define PREFIX_SEPARATOR '/' -- - const char line_comment_chars[] = "/#"; --#endif - - const char line_separator_chars[] = ";"; - diff --git a/patches/binutils/2.14/270-i386-no-divide-comment.patch b/patches/binutils/2.14/270-i386-no-divide-comment.patch deleted file mode 100644 index 47c56d0..0000000 --- a/patches/binutils/2.14/270-i386-no-divide-comment.patch +++ /dev/null @@ -1,38 +0,0 @@ -diff -durN binutils-2.15.orig/gas/config/tc-i386.c binutils-2.15/gas/config/tc-i386.c ---- binutils-2.15.orig/gas/config/tc-i386.c 2004-05-17 21:36:09.000000000 +0200 -+++ binutils-2.15/gas/config/tc-i386.c 2008-09-22 08:57:14.000000000 +0200 -@@ -185,15 +185,10 @@ - const char extra_symbol_chars[] = "*%-(["; - #endif - --#if (defined (TE_I386AIX) \ -- || ((defined (OBJ_ELF) || defined (OBJ_MAYBE_ELF)) \ -- && !defined (TE_LINUX) \ -- && !defined (TE_FreeBSD) \ -- && !defined (TE_NetBSD))) - /* This array holds the chars that always start a comment. If the - pre-processor is disabled, these aren't very useful. */ --const char comment_chars[] = "#/"; --#define PREFIX_SEPARATOR '\\' -+const char comment_chars[] = "#"; -+#define PREFIX_SEPARATOR '/' - - /* This array holds the chars that only start a comment at the beginning of - a line. If the line seems to have the form '# 123 filename' -@@ -203,16 +198,7 @@ - #NO_APP at the beginning of its output. - Also note that comments started like this one will always work if - '/' isn't otherwise defined. */ --const char line_comment_chars[] = "#"; -- --#else --/* Putting '/' here makes it impossible to use the divide operator. -- However, we need it for compatibility with SVR4 systems. */ --const char comment_chars[] = "#"; --#define PREFIX_SEPARATOR '/' -- - const char line_comment_chars[] = "/#"; --#endif - - const char line_separator_chars[] = ";"; - diff --git a/patches/binutils/2.15/100-uclibc.patch b/patches/binutils/2.15/100-uclibc.patch deleted file mode 100644 index c64e74f..0000000 --- a/patches/binutils/2.15/100-uclibc.patch +++ /dev/null @@ -1,144 +0,0 @@ -diff -uNr binutils-2.15-pristine/bfd/configure binutils-2.15/bfd/configure ---- binutils-2.15-pristine/bfd/configure 2004-05-17 12:35:57.000000000 -0700 -+++ binutils-2.15/bfd/configure 2004-07-19 16:36:19.000000000 -0700 -@@ -1009,7 +1009,7 @@ - bfd_version_string="\"${VERSION}\"" - if test x${is_release} = x; then - bfd_version_date=`sed -n -e 's/.*DATE //p' < ${srcdir}/version.h` -- bfd_version_string="\"${VERSION} ${bfd_version_date}\"" -+ bfd_version_string="\"${VERSION} ${bfd_version_date} uClibc\"" - fi - - -diff -uNr binutils-2.15-pristine/bfd/elf32-arm.h binutils-2.15/bfd/elf32-arm.h ---- binutils-2.15-pristine/bfd/elf32-arm.h 2004-05-17 12:35:58.000000000 -0700 -+++ binutils-2.15/bfd/elf32-arm.h 2004-07-19 16:37:06.000000000 -0700 -@@ -124,7 +124,7 @@ - - /* The name of the dynamic interpreter. This is put in the .interp - section. */ --#define ELF_DYNAMIC_INTERPRETER "/usr/lib/ld.so.1" -+#define ELF_DYNAMIC_INTERPRETER "/lib/ld-uClibc.so.0" - - #ifdef FOUR_WORD_PLT - -diff -uNr binutils-2.15-pristine/bfd/elf32-cris.c binutils-2.15/bfd/elf32-cris.c ---- binutils-2.15-pristine/bfd/elf32-cris.c 2004-05-17 12:35:58.000000000 -0700 -+++ binutils-2.15/bfd/elf32-cris.c 2004-07-19 16:49:59.000000000 -0700 -@@ -536,7 +536,7 @@ - /* The name of the dynamic interpreter. This is put in the .interp - section. */ - --#define ELF_DYNAMIC_INTERPRETER "/lib/ld.so.1" -+#define ELF_DYNAMIC_INTERPRETER "/lib/ld-uClibc.so.0" - - /* The size in bytes of an entry in the procedure linkage table. */ - -diff -uNr binutils-2.15-pristine/bfd/elf32-frv.c binutils-2.15/bfd/elf32-frv.c ---- binutils-2.15-pristine/bfd/elf32-frv.c 2004-05-17 12:35:58.000000000 -0700 -+++ binutils-2.15/bfd/elf32-frv.c 2004-07-19 16:49:59.000000000 -0700 -@@ -2913,7 +2913,7 @@ - /* The name of the dynamic interpreter. This is put in the .interp - section. */ - --#define ELF_DYNAMIC_INTERPRETER "/lib/ld.so.1" -+#define ELF_DYNAMIC_INTERPRETER "/lib/ld-uClibc.so.0" - - #define DEFAULT_STACK_SIZE 0x20000 - -diff -uNr binutils-2.15-pristine/bfd/elf32-hppa.c binutils-2.15/bfd/elf32-hppa.c ---- binutils-2.15-pristine/bfd/elf32-hppa.c 2004-05-17 12:35:58.000000000 -0700 -+++ binutils-2.15/bfd/elf32-hppa.c 2004-07-19 16:49:59.000000000 -0700 -@@ -115,7 +115,7 @@ - - #define PLT_ENTRY_SIZE 8 - #define GOT_ENTRY_SIZE 4 --#define ELF_DYNAMIC_INTERPRETER "/lib/ld.so.1" -+#define ELF_DYNAMIC_INTERPRETER "/lib/ld-uClibc.so.0" - - static const bfd_byte plt_stub[] = - { -diff -uNr binutils-2.15-pristine/bfd/elf32-ppc.c binutils-2.15/bfd/elf32-ppc.c ---- binutils-2.15-pristine/bfd/elf32-ppc.c 2004-05-17 12:35:59.000000000 -0700 -+++ binutils-2.15/bfd/elf32-ppc.c 2004-07-19 16:49:59.000000000 -0700 -@@ -49,7 +49,7 @@ - - /* The name of the dynamic interpreter. This is put in the .interp - section. */ --#define ELF_DYNAMIC_INTERPRETER "/usr/lib/ld.so.1" -+#define ELF_DYNAMIC_INTERPRETER "/lib/ld-uClibc.so.0" - - /* The size in bytes of an entry in the procedure linkage table. */ - #define PLT_ENTRY_SIZE 12 -diff -uNr binutils-2.15-pristine/bfd/elf32-s390.c binutils-2.15/bfd/elf32-s390.c ---- binutils-2.15-pristine/bfd/elf32-s390.c 2004-05-17 12:35:59.000000000 -0700 -+++ binutils-2.15/bfd/elf32-s390.c 2004-07-19 16:49:59.000000000 -0700 -@@ -452,7 +452,7 @@ - /* The name of the dynamic interpreter. This is put in the .interp - section. */ - --#define ELF_DYNAMIC_INTERPRETER "/usr/lib/ld.so.1" -+#define ELF_DYNAMIC_INTERPRETER "/lib/ld-uClibc.so.0" - - /* If ELIMINATE_COPY_RELOCS is non-zero, the linker will try to avoid - copying dynamic variables from a shared lib into an app's dynbss -diff -uNr binutils-2.15-pristine/bfd/elf32-sparc.c binutils-2.15/bfd/elf32-sparc.c ---- binutils-2.15-pristine/bfd/elf32-sparc.c 2004-05-17 12:36:00.000000000 -0700 -+++ binutils-2.15/bfd/elf32-sparc.c 2004-07-19 16:49:59.000000000 -0700 -@@ -536,7 +536,7 @@ - /* The name of the dynamic interpreter. This is put in the .interp - section. */ - --#define ELF_DYNAMIC_INTERPRETER "/usr/lib/ld.so.1" -+#define ELF_DYNAMIC_INTERPRETER "/lib/ld-uClibc.so.0" - - /* The nop opcode we use. */ - -diff -uNr binutils-2.15-pristine/bfd/elf64-ppc.c binutils-2.15/bfd/elf64-ppc.c ---- binutils-2.15-pristine/bfd/elf64-ppc.c 2004-05-17 12:36:01.000000000 -0700 -+++ binutils-2.15/bfd/elf64-ppc.c 2004-07-19 16:49:59.000000000 -0700 -@@ -99,7 +99,7 @@ - - /* The name of the dynamic interpreter. This is put in the .interp - section. */ --#define ELF_DYNAMIC_INTERPRETER "/usr/lib/ld.so.1" -+#define ELF_DYNAMIC_INTERPRETER "/lib/ld-uClibc.so.0" - - /* The size in bytes of an entry in the procedure linkage table. */ - #define PLT_ENTRY_SIZE 24 -diff -uNr binutils-2.15-pristine/bfd/elf64-s390.c binutils-2.15/bfd/elf64-s390.c ---- binutils-2.15-pristine/bfd/elf64-s390.c 2004-05-17 12:36:01.000000000 -0700 -+++ binutils-2.15/bfd/elf64-s390.c 2004-07-19 16:49:59.000000000 -0700 -@@ -473,7 +473,7 @@ - /* The name of the dynamic interpreter. This is put in the .interp - section. */ - --#define ELF_DYNAMIC_INTERPRETER "/usr/lib/ld.so.1" -+#define ELF_DYNAMIC_INTERPRETER "/lib/ld-uClibc.so.0" - - /* If ELIMINATE_COPY_RELOCS is non-zero, the linker will try to avoid - copying dynamic variables from a shared lib into an app's dynbss -diff -uNr binutils-2.15-pristine/bfd/elf-m10300.c binutils-2.15/bfd/elf-m10300.c ---- binutils-2.15-pristine/bfd/elf-m10300.c 2004-05-17 12:35:57.000000000 -0700 -+++ binutils-2.15/bfd/elf-m10300.c 2004-07-19 16:49:59.000000000 -0700 -@@ -4026,7 +4026,7 @@ - /* The name of the dynamic interpreter. This is put in the .interp - section. */ - --#define ELF_DYNAMIC_INTERPRETER "/lib/ld.so.1" -+#define ELF_DYNAMIC_INTERPRETER "/lib/ld-uClibc.so.0" - - /* Create dynamic sections when linking against a dynamic object. */ - -diff -uNr binutils-2.15-pristine/bfd/elfxx-ia64.c binutils-2.15/bfd/elfxx-ia64.c ---- binutils-2.15-pristine/bfd/elfxx-ia64.c 2004-05-17 12:36:02.000000000 -0700 -+++ binutils-2.15/bfd/elfxx-ia64.c 2004-07-19 16:49:59.000000000 -0700 -@@ -643,7 +643,7 @@ - 0x60, 0x00, 0x80, 0x00 /* br.few b6;; */ - }; - --#define ELF_DYNAMIC_INTERPRETER "/usr/lib/ld.so.1" -+#define ELF_DYNAMIC_INTERPRETER "/lib/ld-uClibc.so.0" - - static const bfd_byte oor_brl[16] = - { diff --git a/patches/binutils/2.15/110-uclibc-conf.patch b/patches/binutils/2.15/110-uclibc-conf.patch deleted file mode 100644 index 1c7fa4a..0000000 --- a/patches/binutils/2.15/110-uclibc-conf.patch +++ /dev/null @@ -1,692 +0,0 @@ -diff -urN binutils-2.15-dist/bfd/config.bfd binutils-2.15/bfd/config.bfd ---- binutils-2.15-dist/bfd/config.bfd 2004-05-17 14:35:56.000000000 -0500 -+++ binutils-2.15/bfd/config.bfd 2004-08-04 12:01:44.000000000 -0500 -@@ -126,7 +126,7 @@ - targ_defvec=ecoffalpha_little_vec - targ_selvecs=bfd_elf64_alpha_vec - ;; -- alpha*-*-linux-gnu* | alpha*-*-elf*) -+ alpha*-*-linux-gnu* | alpha*-*-linux-uclibc* | alpha*-*-elf*) - targ_defvec=bfd_elf64_alpha_vec - targ_selvecs=ecoffalpha_little_vec - ;; -@@ -136,7 +136,7 @@ - alpha*-*-*) - targ_defvec=ecoffalpha_little_vec - ;; -- ia64*-*-freebsd* | ia64*-*-netbsd* | ia64*-*-linux-gnu* | ia64*-*-elf* | ia64*-*-kfreebsd*-gnu) -+ ia64*-*-freebsd* | ia64*-*-netbsd* | ia64*-*-linux-gnu* | ia64*-*-linux-uclibc* | ia64*-*-elf* | ia64*-*-kfreebsd*-gnu) - targ_defvec=bfd_elf64_ia64_little_vec - targ_selvecs="bfd_elf64_ia64_big_vec bfd_efi_app_ia64_vec" - ;; -@@ -213,7 +213,7 @@ - targ_defvec=bfd_elf32_littlearm_vec - targ_selvecs=bfd_elf32_bigarm_vec - ;; -- armeb-*-elf | arm*b-*-linux-gnu*) -+ armeb-*-elf | arm*b-*-linux-gnu* | arm*b-*-linux-uclibc*) - targ_defvec=bfd_elf32_bigarm_vec - targ_selvecs=bfd_elf32_littlearm_vec - ;; -@@ -221,7 +221,7 @@ - targ_defvec=bfd_elf32_littlearm_vec - targ_selvecs=bfd_elf32_bigarm_vec - ;; -- arm-*-elf | arm-*-freebsd* | arm*-*-linux-gnu* | arm*-*-conix* | \ -+ arm-*-elf | arm-*-freebsd* | arm*-*-linux-gnu* | arm*-*-linux-uclibc* | arm*-*-conix* | \ - arm*-*-uclinux* | arm-*-kfreebsd*-gnu | arm-*-vxworks) - targ_defvec=bfd_elf32_littlearm_vec - targ_selvecs=bfd_elf32_bigarm_vec -@@ -360,7 +360,7 @@ - ;; - - #ifdef BFD64 -- hppa*64*-*-linux-gnu*) -+ hppa*64*-*-linux-gnu* | hppa*64*-*-linux-uclibc*) - targ_defvec=bfd_elf64_hppa_linux_vec - targ_selvecs=bfd_elf64_hppa_vec - ;; -@@ -371,7 +371,7 @@ - ;; - #endif - -- hppa*-*-linux-gnu* | hppa*-*-netbsd*) -+ hppa*-*-linux-gnu* | hppa*-*-linux-uclibc* | hppa*-*-netbsd*) - targ_defvec=bfd_elf32_hppa_linux_vec - targ_selvecs=bfd_elf32_hppa_vec - ;; -@@ -494,7 +494,7 @@ - targ_selvecs=bfd_elf32_i386_vec - targ_underscore=yes - ;; -- i[3-7]86-*-linux-gnu*) -+ i[3-7]86-*-linux-gnu* | i[3-7]86-*-linux-uclibc*) - targ_defvec=bfd_elf32_i386_vec - targ_selvecs="i386linux_vec bfd_efi_app_ia32_vec" - targ64_selvecs=bfd_elf64_x86_64_vec -@@ -508,7 +508,7 @@ - targ_defvec=bfd_elf64_x86_64_vec - targ_selvecs="bfd_elf32_i386_vec i386netbsd_vec i386coff_vec bfd_efi_app_ia32_vec" - ;; -- x86_64-*-linux-gnu*) -+ x86_64-*-linux-gnu* | x86_64-*-linux-uclibc*) - targ_defvec=bfd_elf64_x86_64_vec - targ_selvecs="bfd_elf32_i386_vec i386linux_vec bfd_efi_app_ia32_vec" - ;; -@@ -683,7 +683,7 @@ - targ_selvecs=bfd_elf32_m68k_vec - targ_underscore=yes - ;; -- m68*-*-linux-gnu*) -+ m68*-*-linux-gnu* | m68*-*-linux-uclibc*) - targ_defvec=bfd_elf32_m68k_vec - targ_selvecs=m68klinux_vec - ;; -@@ -955,7 +955,8 @@ - ;; - #endif - powerpc-*-*bsd* | powerpc-*-elf* | powerpc-*-sysv4* | powerpc-*-eabi* | \ -- powerpc-*-solaris2* | powerpc-*-linux-gnu* | powerpc-*-rtems* | \ -+ powerpc-*-solaris2* | powerpc-*-linux-gnu* | powerpc-*-linux-uclibc* | \ -+ powerpc-*-rtems* | \ - powerpc-*-chorus* | powerpc-*-vxworks* | powerpc-*-windiss*) - targ_defvec=bfd_elf32_powerpc_vec - targ_selvecs="rs6000coff_vec bfd_elf32_powerpcle_vec ppcboot_vec" -@@ -987,8 +988,8 @@ - targ_selvecs="rs6000coff_vec bfd_elf32_powerpc_vec ppcboot_vec" - ;; - powerpcle-*-elf* | powerpcle-*-sysv4* | powerpcle-*-eabi* | \ -- powerpcle-*-solaris2* | powerpcle-*-linux-gnu* | powerpcle-*-vxworks* |\ -- powerpcle-*-rtems*) -+ powerpcle-*-solaris2* | powerpcle-*-linux-gnu* | powerpcle-*-linux-uclibc* |\ -+ powerpcle-*-vxworks* | powerpcle-*-rtems*) - targ_defvec=bfd_elf32_powerpcle_vec - targ_selvecs="rs6000coff_vec bfd_elf32_powerpc_vec ppcboot_vec" - targ64_selvecs="bfd_elf64_powerpc_vec bfd_elf64_powerpcle_vec" -@@ -1149,7 +1150,7 @@ - targ_selvecs="bfd_elf32_sparc_vec sunos_big_vec" - targ_underscore=yes - ;; -- sparc-*-linux-gnu*) -+ sparc-*-linux-gnu* | sparc-*-linux-uclibc*) - targ_defvec=bfd_elf32_sparc_vec - targ_selvecs="sparclinux_vec bfd_elf64_sparc_vec sunos_big_vec" - ;; -@@ -1196,7 +1197,7 @@ - targ_defvec=sunos_big_vec - targ_underscore=yes - ;; -- sparc64-*-linux-gnu*) -+ sparc64-*-linux-gnu* | sparc64-*-linux-uclibc*) - targ_defvec=bfd_elf64_sparc_vec - targ_selvecs="bfd_elf32_sparc_vec sparclinux_vec sunos_big_vec" - ;; -@@ -1265,7 +1266,7 @@ - targ_underscore=yes - ;; - -- vax-*-linux-gnu*) -+ vax-*-linux-gnu* | vax-*-linux-uclibc*) - targ_defvec=bfd_elf32_vax_vec - ;; - -diff -urN binutils-2.15-dist/bfd/configure binutils-2.15/bfd/configure ---- binutils-2.15-dist/bfd/configure 2004-05-17 14:35:57.000000000 -0500 -+++ binutils-2.15/bfd/configure 2004-08-04 12:01:44.000000000 -0500 -@@ -1699,6 +1699,11 @@ - lt_cv_file_magic_test_file=`echo /lib/libc.so* /lib/libc-*.so` - ;; - -+linux-uclibc*) -+ lt_cv_deplibs_check_method=pass_all -+ lt_cv_file_magic_test_file=`echo /lib/libuClibc-*.so` -+ ;; -+ - netbsd*) - if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then - lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$' -@@ -5278,7 +5283,7 @@ - alpha*-*-freebsd* | alpha*-*-kfreebsd*-gnu) - COREFILE='' - ;; -- alpha*-*-linux-gnu*) -+ alpha*-*-linux-gnu* | alpha*-*-linux-uclibc*) - COREFILE=trad-core.lo - TRAD_HEADER='"hosts/alphalinux.h"' - ;; -@@ -5338,7 +5343,7 @@ - COREFILE=trad-core.lo - TRAD_HEADER='"hosts/i386mach3.h"' - ;; -- i[3-7]86-*-linux-gnu*) -+ i[3-7]86-*-linux-gnu* | i[3-7]86-*-linux-uclibc*) - COREFILE=trad-core.lo - TRAD_HEADER='"hosts/i386linux.h"' - ;; -@@ -5376,7 +5381,7 @@ - COREFILE=trad-core.lo - TRAD_HEADER='"hosts/hp300bsd.h"' - ;; -- m68*-*-linux-gnu*) -+ m68*-*-linux-gnu* | m68*-*-linux-uclibc*) - COREFILE=trad-core.lo - TRAD_HEADER='"hosts/m68klinux.h"' - ;; -@@ -5477,7 +5482,7 @@ - COREFILE=trad-core.lo - TRAD_HEADER='"hosts/vaxult2.h"' - ;; -- vax-*-linux-gnu*) -+ vax-*-linux-gnu* | vax-*-linux-uclibc*) - COREFILE=trad-core.lo - TRAD_HEADER='"hosts/vaxlinux.h"' - ;; -diff -urN binutils-2.15-dist/bfd/configure.in binutils-2.15/bfd/configure.in ---- binutils-2.15-dist/bfd/configure.in 2004-05-17 14:35:57.000000000 -0500 -+++ binutils-2.15/bfd/configure.in 2004-08-04 12:01:44.000000000 -0500 -@@ -178,7 +178,7 @@ - alpha*-*-freebsd* | alpha*-*-kfreebsd*-gnu) - COREFILE='' - ;; -- alpha*-*-linux-gnu*) -+ alpha*-*-linux-gnu* | alpha*-*-linux-uclibc*) - COREFILE=trad-core.lo - TRAD_HEADER='"hosts/alphalinux.h"' - ;; -@@ -259,7 +259,7 @@ - TRAD_HEADER='"hosts/i386mach3.h"' - ;; - changequote(,)dnl -- i[3-7]86-*-linux-gnu*) -+ i[3-7]86-*-linux-gnu* | i[3-7]86-*-linux-uclibc*) - changequote([,])dnl - COREFILE=trad-core.lo - TRAD_HEADER='"hosts/i386linux.h"' -@@ -300,7 +300,7 @@ - COREFILE=trad-core.lo - TRAD_HEADER='"hosts/hp300bsd.h"' - ;; -- m68*-*-linux-gnu*) -+ m68*-*-linux-gnu* | m68*-*-linux-uclibc*) - COREFILE=trad-core.lo - TRAD_HEADER='"hosts/m68klinux.h"' - ;; -@@ -385,7 +385,7 @@ - COREFILE=trad-core.lo - TRAD_HEADER='"hosts/vaxult2.h"' - ;; -- vax-*-linux-gnu*) -+ vax-*-linux-gnu* | vax-*-linux-uclibc*) - COREFILE=trad-core.lo - TRAD_HEADER='"hosts/vaxlinux.h"' - ;; -diff -urN binutils-2.15-dist/binutils/configure binutils-2.15/binutils/configure ---- binutils-2.15-dist/binutils/configure 2004-01-02 11:08:04.000000000 -0600 -+++ binutils-2.15/binutils/configure 2004-08-04 12:01:44.000000000 -0500 -@@ -1585,6 +1585,11 @@ - lt_cv_file_magic_test_file=`echo /lib/libc.so* /lib/libc-*.so` - ;; - -+linux-uclibc*) -+ lt_cv_deplibs_check_method=pass_all -+ lt_cv_file_magic_test_file=`echo /lib/libuClibc-*.so` -+ ;; -+ - netbsd*) - if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then - lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$' -diff -urN binutils-2.15-dist/configure binutils-2.15/configure ---- binutils-2.15-dist/configure 2004-05-17 14:36:20.000000000 -0500 -+++ binutils-2.15/configure 2004-08-04 12:01:44.000000000 -0500 -@@ -1288,6 +1288,18 @@ - i[3456789]86-*-freebsd* | i[3456789]86-*-kfreebsd*-gnu) - noconfigdirs="$noconfigdirs target-newlib target-libgloss" - ;; -+ i[3456789]86-*-linux-uclibc*) -+ # This section makes it possible to build newlib natively on linux. -+ # If we are using a cross compiler then don't configure newlib. -+ if test x${is_cross_compiler} != xno ; then -+ noconfigdirs="$noconfigdirs target-newlib" -+ fi -+ noconfigdirs="$noconfigdirs target-libgloss" -+ # If we are not using a cross compiler, do configure newlib. -+ # Note however, that newlib will only be configured in this situation -+ # if the --with-newlib option has been given, because otherwise -+ # 'target-newlib' will appear in skipdirs. -+ ;; - i[3456789]86-*-linux*) - # The GCC port for glibc1 has no MD_FALLBACK_FRAME_STATE_FOR, so let's - # not build java stuff by default. -diff -urN binutils-2.15-dist/configure.in binutils-2.15/configure.in ---- binutils-2.15-dist/configure.in 2004-05-17 14:40:54.000000000 -0500 -+++ binutils-2.15/configure.in 2004-08-04 12:01:44.000000000 -0500 -@@ -521,6 +521,18 @@ - i[[3456789]]86-*-freebsd* | i[[3456789]]86-*-kfreebsd*-gnu) - noconfigdirs="$noconfigdirs target-newlib target-libgloss" - ;; -+ i[[3456789]]86-*-linux-uclibc*) -+ # This section makes it possible to build newlib natively on linux. -+ # If we are using a cross compiler then don't configure newlib. -+ if test x${is_cross_compiler} != xno ; then -+ noconfigdirs="$noconfigdirs target-newlib" -+ fi -+ noconfigdirs="$noconfigdirs target-libgloss" -+ # If we are not using a cross compiler, do configure newlib. -+ # Note however, that newlib will only be configured in this situation -+ # if the --with-newlib option has been given, because otherwise -+ # 'target-newlib' will appear in skipdirs. -+ ;; - i[[3456789]]86-*-linux*) - # The GCC port for glibc1 has no MD_FALLBACK_FRAME_STATE_FOR, so let's - # not build java stuff by default. -diff -urN binutils-2.15-dist/gas/configure binutils-2.15/gas/configure ---- binutils-2.15-dist/gas/configure 2004-05-17 14:36:07.000000000 -0500 -+++ binutils-2.15/gas/configure 2004-08-04 12:07:50.000000000 -0500 -@@ -3400,6 +3400,11 @@ - lt_cv_file_magic_test_file=`echo /lib/libc.so* /lib/libc-*.so` - ;; - -+linux-uclibc*) -+ lt_cv_deplibs_check_method=pass_all -+ lt_cv_file_magic_test_file=`echo /lib/libuClibc-*.so` -+ ;; -+ - netbsd*) - if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then - lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$' -@@ -4224,6 +4229,7 @@ - alpha*-*-osf*) fmt=ecoff ;; - alpha*-*-linuxecoff*) fmt=ecoff ;; - alpha*-*-linux-gnu*) fmt=elf em=linux ;; -+ alpha*-*-linux-uclibc*) fmt=elf em=linux ;; - alpha*-*-netbsd*) fmt=elf em=nbsd ;; - alpha*-*-openbsd*) fmt=elf em=obsd ;; - -@@ -4240,6 +4246,7 @@ - arm*-*-conix*) fmt=elf ;; - arm-*-linux*aout*) fmt=aout em=linux ;; - arm*-*-linux-gnu*) fmt=elf em=linux ;; -+ arm*-*-linux-uclibc*) fmt=elf em=linux ;; - arm*-*-uclinux*) fmt=elf em=linux ;; - arm-*-netbsdelf*) fmt=elf em=nbsd ;; - arm-*-*n*bsd*) fmt=aout em=nbsd ;; -@@ -4253,6 +4260,7 @@ - avr-*-*) fmt=elf ;; - - cris-*-linux-gnu*) fmt=multi bfd_gas=yes em=linux ;; -+ cris-*-linux-uclibc*) fmt=multi bfd_gas=yes em=linux ;; - cris-*-*) fmt=multi bfd_gas=yes ;; - - d10v-*-*) fmt=elf ;; -@@ -4310,7 +4318,9 @@ - i386-*-linux*oldld) fmt=aout em=linux ;; - i386-*-linux*coff*) fmt=coff em=linux ;; - i386-*-linux-gnu*) fmt=elf em=linux ;; -+ i386-*-linux-uclibc*) fmt=elf em=linux ;; - x86_64-*-linux-gnu*) fmt=elf em=linux ;; -+ x86_64-*-linux-uclibc*) fmt=elf em=linux ;; - i386-*-lynxos*) fmt=coff em=lynx ;; - i386-*-sysv[45]*) fmt=elf ;; - i386-*-solaris*) fmt=elf ;; -@@ -4370,6 +4380,7 @@ - ia64-*-elf*) fmt=elf ;; - ia64-*-aix*) fmt=elf em=ia64aix ;; - ia64-*-linux-gnu*) fmt=elf em=linux ;; -+ ia64-*-linux-uclibc*) fmt=elf em=linux ;; - ia64-*-hpux*) fmt=elf em=hpux ;; - ia64-*-netbsd*) fmt=elf em=nbsd ;; - -@@ -4397,6 +4408,7 @@ - m68k-*-hpux*) fmt=hp300 em=hp300 ;; - m68k-*-linux*aout*) fmt=aout em=linux ;; - m68k-*-linux-gnu*) fmt=elf em=linux ;; -+ m68k-*-linux-uclibc*) fmt=elf em=linux ;; - m68k-*-uclinux*) fmt=elf ;; - m68k-*-gnu*) fmt=elf ;; - m68k-*-lynxos*) fmt=coff em=lynx ;; -@@ -4459,6 +4471,7 @@ - ppc-*-beos*) fmt=coff ;; - ppc-*-*n*bsd* | ppc-*-elf*) fmt=elf ;; - ppc-*-eabi* | ppc-*-sysv4*) fmt=elf ;; -+ ppc-*-linux-uclibc* | \ - ppc-*-linux-gnu*) fmt=elf em=linux - case "$endian" in - big) ;; -@@ -4486,7 +4499,9 @@ - ppc-*-kaos*) fmt=elf ;; - - s390x-*-linux-gnu*) fmt=elf em=linux ;; -+ s390x-*-linux-uclibc*) fmt=elf em=linux ;; - s390-*-linux-gnu*) fmt=elf em=linux ;; -+ s390-*-linux-uclibc*) fmt=elf em=linux ;; - - sh*-*-linux*) fmt=elf em=linux - case ${cpu} in -@@ -4519,6 +4534,7 @@ - sparc-*-coff) fmt=coff ;; - sparc-*-linux*aout*) fmt=aout em=linux ;; - sparc-*-linux-gnu*) fmt=elf em=linux ;; -+ sparc-*-linux-uclibc*) fmt=elf em=linux ;; - sparc-*-lynxos*) fmt=coff em=lynx ;; - sparc-fujitsu-none) fmt=aout ;; - sparc-*-elf) fmt=elf ;; -diff -urN binutils-2.15-dist/gas/configure.in binutils-2.15/gas/configure.in ---- binutils-2.15-dist/gas/configure.in 2004-05-17 14:36:07.000000000 -0500 -+++ binutils-2.15/gas/configure.in 2004-08-04 12:07:21.000000000 -0500 -@@ -194,6 +194,7 @@ - alpha*-*-osf*) fmt=ecoff ;; - alpha*-*-linuxecoff*) fmt=ecoff ;; - alpha*-*-linux-gnu*) fmt=elf em=linux ;; -+ alpha*-*-linux-uclibc*) fmt=elf em=linux ;; - alpha*-*-netbsd*) fmt=elf em=nbsd ;; - alpha*-*-openbsd*) fmt=elf em=obsd ;; - -@@ -210,6 +211,7 @@ - arm*-*-conix*) fmt=elf ;; - arm-*-linux*aout*) fmt=aout em=linux ;; - arm*-*-linux-gnu*) fmt=elf em=linux ;; -+ arm*-*-linux-uclibc*) fmt=elf em=linux ;; - arm*-*-uclinux*) fmt=elf em=linux ;; - arm-*-netbsdelf*) fmt=elf em=nbsd ;; - arm-*-*n*bsd*) fmt=aout em=nbsd ;; -@@ -223,6 +225,7 @@ - avr-*-*) fmt=elf ;; - - cris-*-linux-gnu*) fmt=multi bfd_gas=yes em=linux ;; -+ cris-*-linux-uclibc*) fmt=multi bfd_gas=yes em=linux ;; - cris-*-*) fmt=multi bfd_gas=yes ;; - - d10v-*-*) fmt=elf ;; -@@ -280,7 +283,9 @@ - i386-*-linux*oldld) fmt=aout em=linux ;; - i386-*-linux*coff*) fmt=coff em=linux ;; - i386-*-linux-gnu*) fmt=elf em=linux ;; -+ i386-*-linux-uclibc*) fmt=elf em=linux ;; - x86_64-*-linux-gnu*) fmt=elf em=linux ;; -+ x86_64-*-linux-uclibc*) fmt=elf em=linux ;; - i386-*-lynxos*) fmt=coff em=lynx ;; - changequote(,)dnl - i386-*-sysv[45]*) fmt=elf ;; -@@ -333,6 +338,7 @@ - ia64-*-elf*) fmt=elf ;; - ia64-*-aix*) fmt=elf em=ia64aix ;; - ia64-*-linux-gnu*) fmt=elf em=linux ;; -+ ia64-*-linux-uclibc*) fmt=elf em=linux ;; - ia64-*-hpux*) fmt=elf em=hpux ;; - ia64-*-netbsd*) fmt=elf em=nbsd ;; - -@@ -360,6 +366,7 @@ - m68k-*-hpux*) fmt=hp300 em=hp300 ;; - m68k-*-linux*aout*) fmt=aout em=linux ;; - m68k-*-linux-gnu*) fmt=elf em=linux ;; -+ m68k-*-linux-uclibc*) fmt=elf em=linux ;; - m68k-*-uclinux*) fmt=elf ;; - m68k-*-gnu*) fmt=elf ;; - m68k-*-lynxos*) fmt=coff em=lynx ;; -@@ -419,6 +426,7 @@ - ppc-*-beos*) fmt=coff ;; - ppc-*-*n*bsd* | ppc-*-elf*) fmt=elf ;; - ppc-*-eabi* | ppc-*-sysv4*) fmt=elf ;; -+ ppc-*-linux-uclibc* | \ - ppc-*-linux-gnu*) fmt=elf em=linux - case "$endian" in - big) ;; -@@ -439,7 +447,9 @@ - ppc-*-kaos*) fmt=elf ;; - - s390x-*-linux-gnu*) fmt=elf em=linux ;; -+ s390x-*-linux-uclibc*) fmt=elf em=linux ;; - s390-*-linux-gnu*) fmt=elf em=linux ;; -+ s390-*-linux-uclibc*) fmt=elf em=linux ;; - - sh*-*-linux*) fmt=elf em=linux - case ${cpu} in -@@ -472,6 +482,7 @@ - sparc-*-coff) fmt=coff ;; - sparc-*-linux*aout*) fmt=aout em=linux ;; - sparc-*-linux-gnu*) fmt=elf em=linux ;; -+ sparc-*-linux-uclibc*) fmt=elf em=linux ;; - sparc-*-lynxos*) fmt=coff em=lynx ;; - sparc-fujitsu-none) fmt=aout ;; - sparc-*-elf) fmt=elf ;; -diff -urN binutils-2.15-dist/gprof/configure binutils-2.15/gprof/configure ---- binutils-2.15-dist/gprof/configure 2003-08-26 12:19:19.000000000 -0500 -+++ binutils-2.15/gprof/configure 2004-08-04 12:01:45.000000000 -0500 -@@ -1581,6 +1581,11 @@ - lt_cv_file_magic_test_file=`echo /lib/libc.so* /lib/libc-*.so` - ;; - -+linux-uclibc*) -+ lt_cv_deplibs_check_method=pass_all -+ lt_cv_file_magic_test_file=`echo /lib/libuClibc-*.so` -+ ;; -+ - netbsd*) - if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then - lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$' -diff -urN binutils-2.15-dist/ld/configure binutils-2.15/ld/configure ---- binutils-2.15-dist/ld/configure 2003-04-24 07:36:07.000000000 -0500 -+++ binutils-2.15/ld/configure 2004-08-04 12:01:45.000000000 -0500 -@@ -1589,6 +1589,11 @@ - lt_cv_file_magic_test_file=`echo /lib/libc.so* /lib/libc-*.so` - ;; - -+linux-uclibc*) -+ lt_cv_deplibs_check_method=pass_all -+ lt_cv_file_magic_test_file=`echo /lib/libuClibc-*.so` -+ ;; -+ - netbsd*) - if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then - lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$' -diff -urN binutils-2.15-dist/ld/configure.tgt binutils-2.15/ld/configure.tgt ---- binutils-2.15-dist/ld/configure.tgt 2004-05-17 14:36:15.000000000 -0500 -+++ binutils-2.15/ld/configure.tgt 2004-08-04 12:01:45.000000000 -0500 -@@ -30,6 +30,7 @@ - targ_extra_emuls="criself crislinux" - targ_extra_libpath=$targ_extra_emuls ;; - cris-*-linux-gnu*) targ_emul=crislinux ;; -+cris-*-linux-uclibc*) targ_emul=crislinux ;; - cris-*-*) targ_emul=criself - targ_extra_emuls="crisaout crislinux" - targ_extra_libpath=$targ_extra_emuls ;; -@@ -59,14 +60,16 @@ - tdir_elf32_sparc=`echo ${targ_alias} | sed -e 's/aout//'` - tdir_sun4=sparc-sun-sunos4 - ;; --sparc64-*-linux-gnu*) targ_emul=elf64_sparc -+sparc64-*-linux-gnu* | sparc64-*-linux-uclibc*) \ -+ targ_emul=elf64_sparc - targ_extra_emuls="elf32_sparc sparclinux sun4" - targ_extra_libpath=elf32_sparc - tdir_elf32_sparc=`echo ${targ_alias} | sed -e 's/64//'` - tdir_sparclinux=${tdir_elf32_sparc}aout - tdir_sun4=sparc-sun-sunos4 - ;; --sparc*-*-linux-gnu*) targ_emul=elf32_sparc -+sparc*-*-linux-gnu* | sparc*-*-linux-uclibc*) \ -+ targ_emul=elf32_sparc - targ_extra_emuls="sparclinux elf64_sparc sun4" - targ_extra_libpath=elf64_sparc - tdir_sparclinux=${targ_alias}aout -@@ -118,7 +121,9 @@ - m32r*le-*-elf*) targ_emul=m32rlelf ;; - m32r*-*-elf*) targ_emul=m32relf ;; - m32r*le-*-linux-gnu*) targ_emul=m32rlelf_linux ;; -+m32r*le-*-linux-uclibc*) targ_emul=m32rlelf_linux ;; - m32r*-*-linux-gnu*) targ_emul=m32relf_linux ;; -+m32r*-*-linux-uclibc*) targ_emul=m32relf_linux ;; - m68hc11-*-*|m6811-*-*) targ_emul=m68hc11elf - targ_extra_emuls="m68hc11elfb m68hc12elf m68hc12elfb" ;; - m68hc12-*-*|m6812-*-*) targ_emul=m68hc12elf -@@ -128,7 +133,7 @@ - m68*-ericsson-ose) targ_emul=sun3 ;; - m68*-apple-aux*) targ_emul=m68kaux ;; - *-tandem-none) targ_emul=st2000 ;; --i370-*-elf* | i370-*-linux-gnu*) targ_emul=elf32i370 ;; -+i370-*-elf* | i370-*-linux-gnu* | i370-*-linux-uclibc*) targ_emul=elf32i370 ;; - i[3-7]86-*-nto-qnx*) targ_emul=i386nto ;; - i[3-7]86-*-vsta) targ_emul=vsta ;; - i[3-7]86-go32-rtems*) targ_emul=i386go32 ;; -@@ -152,14 +157,16 @@ - tdir_elf_i386=`echo ${targ_alias} | sed -e 's/aout//'` - ;; - i[3-7]86-*-linux*oldld) targ_emul=i386linux; targ_extra_emuls=elf_i386 ;; --i[3-7]86-*-linux-gnu*) targ_emul=elf_i386 -+i[3-7]86-*-linux-gnu* | i[3-7]86-*-linux-uclibc*) \ -+ targ_emul=elf_i386 - targ_extra_emuls=i386linux - if test x${want64} = xtrue; then - targ_extra_emuls="$targ_extra_emuls elf_x86_64" - fi - tdir_i386linux=${targ_alias}aout - ;; --x86_64-*-linux-gnu*) targ_emul=elf_x86_64 -+x86_64-*-linux-gnu* | x86_64-*-linux-uclibc*) \ -+ targ_emul=elf_x86_64 - targ_extra_emuls="elf_i386 i386linux" - targ_extra_libpath=elf_i386 - tdir_i386linux=`echo ${targ_alias}aout | sed -e 's/x86_64/i386/'` -@@ -259,10 +266,13 @@ - arm9e-*-elf) targ_emul=armelf ;; - arm-*-oabi) targ_emul=armelf_oabi ;; - arm*b-*-linux-gnu*) targ_emul=armelfb_linux; targ_extra_emuls=armelfb ;; -+arm*b-*-linux-uclibc*) targ_emul=armelfb_linux; targ_extra_emuls=armelfb ;; - arm*-*-linux-gnu*) targ_emul=armelf_linux; targ_extra_emuls=armelf ;; -+arm*-*-linux-uclibc*) targ_emul=armelf_linux; targ_extra_emuls=armelf ;; - arm*-*-uclinux*) targ_emul=armelf_linux; targ_extra_emuls=armelf ;; - arm*-*-conix*) targ_emul=armelf ;; --thumb-*-linux-gnu* | thumb-*-uclinux*) targ_emul=armelf_linux; targ_extra_emuls=armelf ;; -+thumb-*-linux-gnu* | thumb-*-linux-uclibc* | thumb-*-uclinux*) \ -+ targ_emul=armelf_linux; targ_extra_emuls=armelf ;; - strongarm-*-coff) targ_emul=armcoff ;; - strongarm-*-elf) targ_emul=armelf ;; - strongarm-*-kaos*) targ_emul=armelf ;; -@@ -364,7 +374,8 @@ - targ_extra_emuls=m68kelf - tdir_m68kelf=`echo ${targ_alias} | sed -e 's/aout//'` - ;; --m68k-*-linux-gnu*) targ_emul=m68kelf -+m68k-*-linux-gnu* | m68k-*-linux-uclibc*) \ -+ targ_emul=m68kelf - targ_extra_emuls=m68klinux - tdir_m68klinux=`echo ${targ_alias} | sed -e 's/linux/linuxaout/'` - ;; -@@ -381,9 +392,9 @@ - m68*-*-psos*) targ_emul=m68kpsos ;; - m68*-*-rtemscoff*) targ_emul=m68kcoff ;; - m68*-*-rtems*) targ_emul=m68kelf ;; --hppa*64*-*-linux-gnu*) targ_emul=hppa64linux ;; -+hppa*64*-*-linux-gnu* | hppa*64*-*-linux-uclibc*) targ_emul=hppa64linux ;; - hppa*64*-*) targ_emul=elf64hppa ;; --hppa*-*-linux-gnu*) targ_emul=hppalinux ;; -+hppa*-*-linux-gnu* | hppa*-*-linux-uclibc*) targ_emul=hppalinux ;; - hppa*-*-*elf*) targ_emul=hppaelf ;; - hppa*-*-lites*) targ_emul=hppaelf ;; - hppa*-*-netbsd*) targ_emul=hppanbsd ;; -@@ -396,6 +407,7 @@ - targ_emul=vaxnbsd - targ_extra_emuls=elf32vax ;; - vax-*-linux-gnu*) targ_emul=elf32vax ;; -+vax-*-linux-uclibc*) targ_emul=elf32vax ;; - mips*-*-pe) targ_emul=mipspe ; - targ_extra_ofiles="deffilep.o pe-dll.o" ;; - mips*-dec-ultrix*) targ_emul=mipslit ;; -@@ -429,16 +441,16 @@ - mips*-*-vxworks*) targ_emul=elf32ebmip - targ_extra_emuls="elf32elmip" ;; - mips*-*-windiss) targ_emul=elf32mipswindiss ;; --mips64*el-*-linux-gnu*) targ_emul=elf32ltsmipn32 -+mips64*el-*-linux-gnu* | mips64*el-*-linux-uclibc*) targ_emul=elf32ltsmipn32 - targ_extra_emuls="elf32btsmipn32 elf32ltsmip elf32btsmip elf64ltsmip elf64btsmip" - ;; --mips64*-*-linux-gnu*) targ_emul=elf32btsmipn32 -+mips64*-*-linux-gnu* | mips64*-*-linux-uclibc*) targ_emul=elf32btsmipn32 - targ_extra_emuls="elf32ltsmipn32 elf32btsmip elf32ltsmip elf64btsmip elf64ltsmip" - ;; --mips*el-*-linux-gnu*) targ_emul=elf32ltsmip -+mips*el-*-linux-gnu* | mips*el-*-linux-uclibc*) targ_emul=elf32ltsmip - targ_extra_emuls="elf32btsmip elf32ltsmipn32 elf64ltsmip elf32btsmipn32 elf64btsmip" - ;; --mips*-*-linux-gnu*) targ_emul=elf32btsmip -+mips*-*-linux-gnu* | mips*-*-linux-uclibc*) targ_emul=elf32btsmip - targ_extra_emuls="elf32ltsmip elf32btsmipn32 elf64btsmip elf32ltsmipn32 elf64ltsmip" - ;; - mips*-*-lnews*) targ_emul=mipslnews ;; -@@ -461,6 +473,10 @@ - alpha*-*-linux-gnu*) targ_emul=elf64alpha targ_extra_emuls=alpha - tdir_alpha=`echo ${targ_alias} | sed -e 's/linux/linuxecoff/'` - ;; -+alpha*-*-linux-uclibc*) targ_emul=elf64alpha targ_extra_emuls=alpha -+ # The following needs to be checked... -+ tdir_alpha=`echo ${targ_alias} | sed -e 's/linux/linuxecoff/'` -+ ;; - alpha*-*-osf*) targ_emul=alpha ;; - alpha*-*-gnu*) targ_emul=elf64alpha ;; - alpha*-*-netware*) targ_emul=alpha ;; -diff -urN binutils-2.15-dist/libtool.m4 binutils-2.15/libtool.m4 ---- binutils-2.15-dist/libtool.m4 2003-04-10 22:58:39.000000000 -0500 -+++ binutils-2.15/libtool.m4 2004-08-04 12:01:45.000000000 -0500 -@@ -645,6 +645,11 @@ - lt_cv_file_magic_test_file=`echo /lib/libc.so* /lib/libc-*.so` - ;; - -+linux-uclibc*) -+ lt_cv_deplibs_check_method=pass_all -+ lt_cv_file_magic_test_file=`echo /lib/libuClibc-*.so` -+ ;; -+ - netbsd*) - if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then - [lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$'] -diff -urN binutils-2.15-dist/ltconfig binutils-2.15/ltconfig ---- binutils-2.15-dist/ltconfig 2003-10-03 23:54:47.000000000 -0500 -+++ binutils-2.15/ltconfig 2004-08-04 12:01:45.000000000 -0500 -@@ -603,6 +603,7 @@ - # Transform linux* to *-*-linux-gnu*, to support old configure scripts. - case $host_os in - linux-gnu*) ;; -+linux-uclibc*) ;; - linux*) host=`echo $host | sed 's/^\(.*-.*-linux\)\(.*\)$/\1-gnu\2/'` - esac - -@@ -1259,6 +1260,24 @@ - dynamic_linker='GNU/Linux ld.so' - ;; - -+linux-uclibc*) -+ version_type=linux -+ need_lib_prefix=no -+ need_version=no -+ library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' -+ soname_spec='${libname}${release}.so$major' -+ finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' -+ shlibpath_var=LD_LIBRARY_PATH -+ shlibpath_overrides_runpath=no -+ # This implies no fast_install, which is unacceptable. -+ # Some rework will be needed to allow for fast_install -+ # before this can be enabled. -+ # Note: copied from linux-gnu, and may not be appropriate. -+ hardcode_into_libs=yes -+ # Assume using the uClibc dynamic linker. -+ dynamic_linker="uClibc ld.so" -+ ;; -+ - netbsd*) - need_lib_prefix=no - need_version=no -diff -urN binutils-2.15-dist/opcodes/configure binutils-2.15/opcodes/configure ---- binutils-2.15-dist/opcodes/configure 2003-08-05 04:39:31.000000000 -0500 -+++ binutils-2.15/opcodes/configure 2004-08-04 12:01:45.000000000 -0500 -@@ -1700,6 +1700,11 @@ - lt_cv_file_magic_test_file=`echo /lib/libc.so* /lib/libc-*.so` - ;; - -+linux-uclibc*) -+ lt_cv_deplibs_check_method=pass_all -+ lt_cv_file_magic_test_file=`echo /lib/libuClibc-*.so` -+ ;; -+ - netbsd*) - if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then - lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$' diff --git a/patches/binutils/2.15/120-cflags.patch b/patches/binutils/2.15/120-cflags.patch deleted file mode 100644 index dc67d3c..0000000 --- a/patches/binutils/2.15/120-cflags.patch +++ /dev/null @@ -1,32 +0,0 @@ -diff -urN binutils-2.14.90.0.6/bfd/doc/Makefile.am binutils-2.14.90.0.6.new/bfd/doc/Makefile.am ---- binutils-2.14.90.0.6/bfd/doc/Makefile.am 2003-07-23 10:08:09.000000000 -0500 -+++ binutils-2.14.90.0.6.new/bfd/doc/Makefile.am 2004-03-01 16:05:16.000000000 -0600 -@@ -55,10 +55,10 @@ - MKDOC = chew$(EXEEXT_FOR_BUILD) - - $(MKDOC): chew.o -- $(CC_FOR_BUILD) -o $(MKDOC) chew.o $(CFLAGS) $(LOADLIBES) $(LDFLAGS) -+ $(CC_FOR_BUILD) -o $(MKDOC) chew.o $(CFLAGS_FOR_BUILD) $(LOADLIBES) $(LDFLAGS) - - chew.o: chew.c -- $(CC_FOR_BUILD) -c -I.. -I$(srcdir)/.. -I$(srcdir)/../../include -I$(srcdir)/../../intl -I../../intl $(H_CFLAGS) $(CFLAGS) $(srcdir)/chew.c -+ $(CC_FOR_BUILD) -c -I.. -I$(srcdir)/.. -I$(srcdir)/../../include -I$(srcdir)/../../intl -I../../intl $(H_CFLAGS) $(CFLAGS_FOR_BUILD) $(srcdir)/chew.c - - protos: libbfd.h libcoff.h bfd.h - -diff -urN binutils-2.14.90.0.6/bfd/doc/Makefile.in binutils-2.14.90.0.6.new/bfd/doc/Makefile.in ---- binutils-2.14.90.0.6/bfd/doc/Makefile.in 2003-07-23 10:08:09.000000000 -0500 -+++ binutils-2.14.90.0.6.new/bfd/doc/Makefile.in 2004-03-01 16:05:03.000000000 -0600 -@@ -469,10 +469,10 @@ - - - $(MKDOC): chew.o -- $(CC_FOR_BUILD) -o $(MKDOC) chew.o $(CFLAGS) $(LOADLIBES) $(LDFLAGS) -+ $(CC_FOR_BUILD) -o $(MKDOC) chew.o $(CFLAGS_FOR_BUILD) $(LOADLIBES) $(LDFLAGS) - - chew.o: chew.c -- $(CC_FOR_BUILD) -c -I.. -I$(srcdir)/.. -I$(srcdir)/../../include -I$(srcdir)/../../intl -I../../intl $(H_CFLAGS) $(CFLAGS) $(srcdir)/chew.c -+ $(CC_FOR_BUILD) -c -I.. -I$(srcdir)/.. -I$(srcdir)/../../include -I$(srcdir)/../../intl -I../../intl $(H_CFLAGS) $(CFLAGS_FOR_BUILD) $(srcdir)/chew.c - - protos: libbfd.h libcoff.h bfd.h - diff --git a/patches/binutils/2.15/130-mips-ELF_MAXPAGESIZE-4K.patch b/patches/binutils/2.15/130-mips-ELF_MAXPAGESIZE-4K.patch deleted file mode 100644 index e07a7e8..0000000 --- a/patches/binutils/2.15/130-mips-ELF_MAXPAGESIZE-4K.patch +++ /dev/null @@ -1,26 +0,0 @@ ---- binutils/bfd/elf32-mips.c~ -+++ binutils/bfd/elf32-mips.c -@@ -1611,7 +1611,9 @@ - - /* The SVR4 MIPS ABI says that this should be 0x10000, and Linux uses - page sizes of up to that limit, so we need to respect it. */ --#define ELF_MAXPAGESIZE 0x10000 -+/*#define ELF_MAXPAGESIZE 0x10000*/ -+/* Use 4K to shrink the elf header. NOT for general use! */ -+#define ELF_MAXPAGESIZE 0x1000 - #define elf32_bed elf32_tradbed - - /* Include the target file again for this target. */ ---- binutils/bfd/elfn32-mips.c~ -+++ binutils/bfd/elfn32-mips.c -@@ -1976,7 +1976,9 @@ - - /* The SVR4 MIPS ABI says that this should be 0x10000, and Linux uses - page sizes of up to that limit, so we need to respect it. */ --#define ELF_MAXPAGESIZE 0x10000 -+/*#define ELF_MAXPAGESIZE 0x10000*/ -+/* Use 4K to shrink the elf header. NOT for general use! */ -+#define ELF_MAXPAGESIZE 0x1000 - #define elf32_bed elf32_tradbed - - /* Include the target file again for this target. */ diff --git a/patches/binutils/2.15/140-arm-textrel.patch b/patches/binutils/2.15/140-arm-textrel.patch deleted file mode 100644 index 73d5b9d..0000000 --- a/patches/binutils/2.15/140-arm-textrel.patch +++ /dev/null @@ -1,63 +0,0 @@ -http://sources.redhat.com/ml/binutils/2004-06/msg00010.html ---- binutils-2.15.90.0.3-old/bfd/elf32-arm.h 2004-04-12 14:56:33.000000000 -0500 -+++ binutils-2.15.90.0.3/bfd/elf32-arm.h 2004-09-03 06:56:40.000000000 -0500 -@@ -87,6 +87,8 @@ - #endif - static bfd_boolean allocate_dynrelocs - PARAMS ((struct elf_link_hash_entry *h, PTR inf)); -+static bfd_boolean elf32_arm_readonly_dynrelocs -+ PARAMS ((struct elf_link_hash_entry *, PTR)); - static bfd_boolean create_got_section - PARAMS ((bfd * dynobj, struct bfd_link_info * info)); - static bfd_boolean elf32_arm_create_dynamic_sections -@@ -3531,6 +3533,37 @@ - return TRUE; - } - -+/* Find any dynamic relocs that apply to read-only sections. */ -+ -+static bfd_boolean -+elf32_arm_readonly_dynrelocs (h, inf) -+ struct elf_link_hash_entry *h; -+ PTR inf; -+{ -+ struct elf32_arm_link_hash_entry *eh; -+ struct elf32_arm_relocs_copied *p; -+ -+ if (h->root.type == bfd_link_hash_warning) -+ h = (struct elf_link_hash_entry *) h->root.u.i.link; -+ -+ eh = (struct elf32_arm_link_hash_entry *) h; -+ for (p = eh->relocs_copied; p != NULL; p = p->next) -+ { -+ asection *s = p->section; -+ -+ if (s != NULL && (s->flags & SEC_READONLY) != 0) -+ { -+ struct bfd_link_info *info = (struct bfd_link_info *) inf; -+ -+ info->flags |= DF_TEXTREL; -+ -+ /* Not an error, just cut short the traversal. */ -+ return FALSE; -+ } -+ } -+ return TRUE; -+} -+ - /* Set the sizes of the dynamic sections. */ - - static bfd_boolean -@@ -3740,6 +3773,12 @@ - return FALSE; - } - -+ /* If any dynamic relocs apply to a read-only section, -+ then we need a DT_TEXTREL entry. */ -+ if ((info->flags & DF_TEXTREL) == 0) -+ elf_link_hash_traverse (&htab->root, elf32_arm_readonly_dynrelocs, -+ (PTR) info); -+ - if ((info->flags & DF_TEXTREL) != 0) - { - if (!add_dynamic_entry (DT_TEXTREL, 0)) diff --git a/patches/binutils/2.15/150-bfd-hash-tweak.patch b/patches/binutils/2.15/150-bfd-hash-tweak.patch deleted file mode 100644 index 6b8fc41..0000000 --- a/patches/binutils/2.15/150-bfd-hash-tweak.patch +++ /dev/null @@ -1,24 +0,0 @@ -Signed-off-by: dank@kegel.com - -Raising the size of the hash table is a noticable win when linking -at least one large app. - -There was a patch, -http://sources.redhat.com/ml/binutils/2004-06/msg00165.html -to do this dynamically. No idea why that didn't make it in. -So this tiny change to raise the default size is just -a stopgap for now. - - ---- binutils-2.15/bfd/hash.c.old 2003-12-01 01:33:01.000000000 -0500 -+++ binutils-2.15/bfd/hash.c 2006-03-01 16:26:26.701991000 -0500 -@@ -295,7 +295,7 @@ - */ - - /* The default number of entries to use when creating a hash table. */ --#define DEFAULT_SIZE (4051) -+#define DEFAULT_SIZE (32749) - - /* Create a new hash table, given a number of entries. */ - - diff --git a/patches/binutils/2.15/160-allow-gcc-4.0.patch b/patches/binutils/2.15/160-allow-gcc-4.0.patch deleted file mode 100644 index 26e5a12..0000000 --- a/patches/binutils/2.15/160-allow-gcc-4.0.patch +++ /dev/null @@ -1,75 +0,0 @@ -Fix found here: http://www.freelists.org/archives/openbeos/11-2005/msg00090.html - -Fixes: -In file included from ./targ-cpu.h:1, - from /home/dank/crosstool-new/build/i686-unknown-linux-gnu/gcc-2.95.3-glibc-2.2.2/binutils-2.15/gas/config/obj-elf.h:42, - from ./obj-format.h:1, - from /home/dank/crosstool-new/build/i686-unknown-linux-gnu/gcc-2.95.3-glibc-2.2.2/binutils-2.15/gas/config/te-linux.h:4, - from ./targ-env.h:1, - from /home/dank/crosstool-new/build/i686-unknown-linux-gnu/gcc-2.95.3-glibc-2.2.2/binutils-2.15/gas/as.h:626, - from /home/dank/crosstool-new/build/i686-unknown-linux-gnu/gcc-2.95.3-glibc-2.2.2/binutils-2.15/gas/app.c:30: -/home/dank/crosstool-new/build/i686-unknown-linux-gnu/gcc-2.95.3-glibc-2.2.2/binutils-2.15/gas/config/tc-i386.h:451: error: array type has incomplete element type -make[3]: *** [app.o] Error 1 -make[3]: Leaving directory `/home/dank/crosstool-new/build/i686-unknown-linux-gnu/gcc-2.95.3-glibc-2.2.2/build-binutils/gas' - -when building binutils-2.15 with gcc-4.0 - - -diff -ur binutils-2.15.old/gas/as.h binutils-2.15/gas/as.h ---- binutils-2.15.old/gas/as.h 2003-11-22 18:14:21.000000000 -0800 -+++ binutils-2.15/gas/as.h 2006-02-14 22:05:35.000000000 -0800 -@@ -605,7 +605,26 @@ - struct expressionS; - struct fix; - typedef struct symbol symbolS; --struct relax_type; -+ -+/* JF moved this here from as.h under the theory that nobody except MACHINE.c -+ and write.c care about it anyway. */ -+/* [zooey]: the above no longer holds with gcc4, as it keeps bugging about -+ incomplete element types in arrays, if relax_type isn't defined -+ here. So I moved the definition back from tc.h to here. */ -+struct relax_type -+{ -+ /* Forward reach. Signed number. > 0. */ -+ long rlx_forward; -+ /* Backward reach. Signed number. < 0. */ -+ long rlx_backward; -+ -+ /* Bytes length of this address. */ -+ unsigned char rlx_length; -+ -+ /* Next longer relax-state. 0 means there is no 'next' relax-state. */ -+ relax_substateT rlx_more; -+}; -+ - typedef struct frag fragS; - - #ifdef BFD_ASSEMBLER -diff -ur binutils-2.15.old/gas/tc.h binutils-2.15/gas/tc.h ---- binutils-2.15.old/gas/tc.h 2003-12-03 15:39:38.000000000 -0800 -+++ binutils-2.15/gas/tc.h 2006-02-14 22:03:35.000000000 -0800 -@@ -24,23 +24,6 @@ - - extern const pseudo_typeS md_pseudo_table[]; - --/* JF moved this here from as.h under the theory that nobody except MACHINE.c -- and write.c care about it anyway. */ -- --struct relax_type --{ -- /* Forward reach. Signed number. > 0. */ -- long rlx_forward; -- /* Backward reach. Signed number. < 0. */ -- long rlx_backward; -- -- /* Bytes length of this address. */ -- unsigned char rlx_length; -- -- /* Next longer relax-state. 0 means there is no 'next' relax-state. */ -- relax_substateT rlx_more; --}; -- - typedef struct relax_type relax_typeS; - - extern const int md_reloc_size; /* Size of a relocation record */ diff --git a/patches/binutils/2.15/170-psignal.patch b/patches/binutils/2.15/170-psignal.patch deleted file mode 100644 index 98fa600..0000000 --- a/patches/binutils/2.15/170-psignal.patch +++ /dev/null @@ -1,40 +0,0 @@ -Make psignal prototype in libiberty match that in glibc. - -Fixes: - -gcc-2.95.3-glibc-2.1.3/binutils-2.15/libiberty/strsignal.c: In function `psignal': -gcc-2.95.3-glibc-2.1.3/binutils-2.15/libiberty/strsignal.c:563: argument `signo' doesn't match prototype -/usr/include/signal.h:131: prototype declaration -gcc-2.95.3-glibc-2.1.3/binutils-2.15/libiberty/strsignal.c:563: argument `message' doesn't match prototype -/usr/include/signal.h:131: prototype declaration -gcc-2.95.3-glibc-2.1.3/binutils-2.15/libiberty/strsignal.c:568: warning: comparison between signed and unsigned -mprotect... make[1]: *** [strsignal.o] Error 1 -make[1]: Leaving directory `/export/hda3/dkegel/queue/jobdir.produser_cpsm17/crosstool-0.32/build/i686-unknown-linux-gnu/gcc-2.95.3-glibc-2.1.3/build-binutils/libiberty' -make: *** [all-libiberty] Error 2 - -when building on red hat 7.1 -though it's a bit of a mystery why libiberty's psignal is being compiled at -all, since red hat 7.1's glibc supports psignal (hence the error message) - ---- binutils-2.15/libiberty/strsignal.c.old 2005-04-18 13:57:40.000000000 -0700 -+++ binutils-2.15/libiberty/strsignal.c 2005-04-18 13:59:09.000000000 -0700 -@@ -544,7 +544,7 @@ - - /* - --@deftypefn Supplemental void psignal (unsigned @var{signo}, char *@var{message}) -+@deftypefn Supplemental void psignal (int @var{signo}, const char *@var{message}) - - Print @var{message} to the standard error, followed by a colon, - followed by the description of the signal specified by @var{signo}, -@@ -557,9 +557,7 @@ - #ifndef HAVE_PSIGNAL - - void --psignal (signo, message) -- unsigned signo; -- char *message; -+psignal (int signo, const char *message) - { - if (signal_names == NULL) - { diff --git a/patches/binutils/2.15/180-solaris-qsort.patch b/patches/binutils/2.15/180-solaris-qsort.patch deleted file mode 100644 index 5fe3623..0000000 --- a/patches/binutils/2.15/180-solaris-qsort.patch +++ /dev/null @@ -1,22 +0,0 @@ -See http://sources.redhat.com/ml/binutils/2004-06/msg00114.html - ---- src/bfd/elflink.c.org 2004-07-05 09:11:42.920597000 -0400 -+++ src/bfd/elflink.c 2004-07-05 09:12:59.240847000 -0400 -@@ -2700,7 +2700,7 @@ - return vdiff > 0 ? 1 : -1; - else - { -- long sdiff = h1->root.u.def.section - h2->root.u.def.section; -+ long sdiff = h1->root.u.def.section->id - h2->root.u.def.section->id; - if (sdiff != 0) - return sdiff > 0 ? 1 : -1; - } -@@ -3954,7 +3954,7 @@ - i = idx + 1; - else - { -- long sdiff = slook - h->root.u.def.section; -+ long sdiff = slook->id - h->root.u.def.section->id; - if (sdiff < 0) - j = idx; - else if (sdiff > 0) diff --git a/patches/binutils/2.15/190-vmx.patch b/patches/binutils/2.15/190-vmx.patch deleted file mode 100644 index 5ae9efe..0000000 --- a/patches/binutils/2.15/190-vmx.patch +++ /dev/null @@ -1,45 +0,0 @@ -Grabbed with -wget 'http://sources.redhat.com/cgi-bin/cvsweb.cgi/src/opcodes/ppc-opc.c.diff?r1=1.70&r2=1.71&cvsroot=src' -See -http://mail.gnu.org/archive/html/bug-binutils/2004-05/msg00071.html -and -http://sources.redhat.com/ml/binutils-cvs/2004-05/msg00111.html - -This fixes problems like -{standard input}: Assembler messages: -{standard input}:1: Error: Unrecognized opcode: `dssall' -which show up in binutils-2.15 when building the Linux kernel, -or possibly failed compilations when building setjmp/longjmp in glibc. - -An alternative fix would be to pass -many to the assembler. -A patch to do that for glibc is at -wget 'http://sources.redhat.com/cgi-bin/get-raw-msg?listname=libc-alpha&date=2004-05&msgid=40B36E8C.9030609%40us.ibm.com' -Yet another, better, fix would be for gcc to generate assembly -that told the assembler which processor type to use. -Presumably the Linux kernel sources would need a fix, too. -Probably better to just fix binutils to accept sources that it used to. - - -=================================================================== -RCS file: /cvs/src/src/opcodes/ppc-opc.c,v -retrieving revision 1.70 -retrieving revision 1.71 -diff -u -r1.70 -r1.71 ---- src/opcodes/ppc-opc.c 2004/05/05 13:43:36 1.70 -+++ src/opcodes/ppc-opc.c 2004/05/19 05:11:48 1.71 -@@ -1004,8 +1004,13 @@ - - /* If only one bit of the FXM field is set, we can use the new form - of the instruction, which is faster. Unlike the Power4 branch hint -- encoding, this is not backward compatible. */ -- else if ((dialect & PPC_OPCODE_POWER4) != 0 && (value & -value) == value) -+ encoding, this is not backward compatible. Do not generate the -+ new form unless -mpower4 has been given, or -many and the two -+ operand form of mfcr was used. */ -+ else if ((value & -value) == value -+ && ((dialect & PPC_OPCODE_POWER4) != 0 -+ || ((dialect & PPC_OPCODE_ANY) != 0 -+ && (insn & (0x3ff << 1)) == 19 << 1))) - insn |= 1 << 20; - - /* Any other value on mfcr is an error. */ diff --git a/patches/binutils/2.15/200-arm-undef-imm.patch b/patches/binutils/2.15/200-arm-undef-imm.patch deleted file mode 100644 index 6bf403c..0000000 --- a/patches/binutils/2.15/200-arm-undef-imm.patch +++ /dev/null @@ -1,51 +0,0 @@ -From http://sources.redhat.com/cgi-bin/cvsweb.cgi/src/gas/config/tc-arm.c.diff?r1=1.168&r2=1.169&cvsroot=src -See also http://lists.arm.linux.org.uk/pipermail/linux-arm-kernel/2004-July/023128.html, -"[CRITICAL PATCH] 2.6: fix silent build error]" - -Revision 1.169, Fri Jul 2 11:12:29 2004 UTC (19 hours, 4 minutes ago) by nickc -Branch: MAIN -CVS Tags: binutils_latest_snapshot, HEAD -Changes since 1.168: +14 -1 lines - -(md_apply_fix3:BFD_RELOC_ARM_IMMEDIATE): Do not allow values which have come -from undefined symbols. -Always consider this fixup to have been processed as a reloc cannot be -generated for it. - - -=================================================================== -RCS file: /cvs/src/src/gas/config/tc-arm.c,v -retrieving revision 1.168 -retrieving revision 1.169 -diff -u -r1.168 -r1.169 ---- src/gas/config/tc-arm.c 2004/04/30 10:51:12 1.168 -+++ src/gas/config/tc-arm.c 2004/07/02 11:12:29 1.169 -@@ -12186,6 +12186,20 @@ - switch (fixP->fx_r_type) - { - case BFD_RELOC_ARM_IMMEDIATE: -+ /* We claim that this fixup has been processed here, -+ even if in fact we generate an error because we do -+ not have a reloc for it, so tc_gen_reloc will reject it. */ -+ fixP->fx_done = 1; -+ -+ if (fixP->fx_addsy -+ && ! S_IS_DEFINED (fixP->fx_addsy)) -+ { -+ as_bad_where (fixP->fx_file, fixP->fx_line, -+ _("undefined symbol %s used as an immediate value"), -+ S_GET_NAME (fixP->fx_addsy)); -+ break; -+ } -+ - newimm = validate_immediate (value); - temp = md_chars_to_number (buf, INSN_SIZE); - -@@ -12202,7 +12216,6 @@ - - newimm |= (temp & 0xfffff000); - md_number_to_chars (buf, (valueT) newimm, INSN_SIZE); -- fixP->fx_done = 1; - break; - - case BFD_RELOC_ARM_ADRL_IMMEDIATE: diff --git a/patches/binutils/2.15/210-skip-comments.patch b/patches/binutils/2.15/210-skip-comments.patch deleted file mode 100644 index 804a17e..0000000 --- a/patches/binutils/2.15/210-skip-comments.patch +++ /dev/null @@ -1,101 +0,0 @@ -Retrieved from http://sources.redhat.com/ml/binutils/2004-04/msg00646.html -Fixes -localealias.s:544: Error: junk at end of line, first unrecognized character is `,' -when building glibc-2.3.2 with gcc-3.4.0 and binutils-2.15.90.0.3 - -Paths adjusted to match crosstool's patcher. - -Message-Id: m3n052qw2g.fsf@whitebox.m5r.de -From: Andreas Schwab -To: Nathan Sidwell -Cc: Ian Lance Taylor , binutils at sources dot redhat dot com -Date: Fri, 23 Apr 2004 22:27:19 +0200 -Subject: Re: demand_empty_rest_of_line and ignore_rest_of_line - -Nathan Sidwell writes: - -> Index: read.c -> =================================================================== -> RCS file: /cvs/src/src/gas/read.c,v -> retrieving revision 1.76 -> diff -c -3 -p -r1.76 read.c -> *** read.c 12 Mar 2004 17:48:12 -0000 1.76 -> --- read.c 18 Mar 2004 09:56:05 -0000 -> *************** read_a_source_file (char *name) -> *** 1053,1059 **** -> #endif -> input_line_pointer--; -> /* Report unknown char as ignored. */ -> ! ignore_rest_of_line (); -> } -> -> #ifdef md_after_pass_hook -> --- 1053,1059 ---- -> #endif -> input_line_pointer--; -> /* Report unknown char as ignored. */ -> ! demand_empty_rest_of_line (); -> } -> -> #ifdef md_after_pass_hook - -This means that the unknown character is no longer ignored, despite the -comment. As a side effect a line starting with a line comment character -not followed by APP in NO_APP mode now triggers an error instead of just a -warning, breaking builds of glibc on m68k-linux. Earlier in -read_a_source_file where #APP is handled there is another comment that -claims that unknown comments are ignored, when in fact they aren't (only -the initial line comment character is skipped). - -Note that the presence of #APP will mess up the line counters, but -that appears to be difficult to fix. - -Andreas. - -2004-04-23 Andreas Schwab - - * read.c (read_a_source_file): Ignore unknown text after line - comment character. Fix misleading comment. - ---- binutils/gas/read.c.~1.78.~ 2004-04-23 08:58:23.000000000 +0200 -+++ binutils/gas/read.c 2004-04-23 21:49:01.000000000 +0200 -@@ -1,6 +1,6 @@ - /* read.c - read a source file - - Copyright 1986, 1987, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, -- 1998, 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc. -+ 1998, 1999, 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc. - - This file is part of GAS, the GNU Assembler. - -@@ -950,10 +950,14 @@ read_a_source_file (char *name) - unsigned int new_length; - char *tmp_buf = 0; - -- bump_line_counters (); - s = input_line_pointer; - if (strncmp (s, "APP\n", 4)) -- continue; /* We ignore it */ -+ { -+ /* We ignore it */ -+ ignore_rest_of_line (); -+ continue; -+ } -+ bump_line_counters (); - s += 4; - - sb_new (&sbuf); -@@ -1052,7 +1056,7 @@ read_a_source_file (char *name) - continue; - #endif - input_line_pointer--; -- /* Report unknown char as ignored. */ -+ /* Report unknown char as error. */ - demand_empty_rest_of_line (); - } - - --- -Andreas Schwab, SuSE Labs, schwab@suse.de -SuSE Linux AG, MaxfeldstraÃe 5, 90409 NÃrnberg, Germany -Key fingerprint = 58CA 54C7 6D53 942B 1756 01D3 44D5 214B 8276 4ED5 -"And now for something completely different." diff --git a/patches/binutils/2.15/220-cross-gprof.patch b/patches/binutils/2.15/220-cross-gprof.patch deleted file mode 100644 index ea6c18f..0000000 --- a/patches/binutils/2.15/220-cross-gprof.patch +++ /dev/null @@ -1,22 +0,0 @@ ---- binutils-2.15/configure.old 2004-07-21 21:36:47.000000000 -0700 -+++ binutils-2.15/configure 2004-07-21 21:37:08.000000000 -0700 -@@ -999,7 +999,7 @@ - - # Some tools are only suitable for building in a "native" situation. - # Remove these if host!=target. --native_only="autoconf automake libtool fileutils find gawk gettext gzip hello indent m4 rcs recode sed shellutils tar textutils uudecode wdiff gprof target-groff guile perl time ash bash bzip2 prms gnuserv target-gperf" -+native_only="autoconf automake libtool fileutils find gawk gettext gzip hello indent m4 rcs recode sed shellutils tar textutils uudecode wdiff target-groff guile perl time ash bash bzip2 prms gnuserv target-gperf" - - # Similarly, some are only suitable for cross toolchains. - # Remove these if host=target. ---- binutils-2.15/configure.in.old 2004-07-21 21:37:19.000000000 -0700 -+++ binutils-2.15/configure.in 2004-07-21 21:37:34.000000000 -0700 -@@ -236,7 +236,7 @@ - - # Some tools are only suitable for building in a "native" situation. - # Remove these if host!=target. --native_only="autoconf automake libtool fileutils find gawk gettext gzip hello indent m4 rcs recode sed shellutils tar textutils uudecode wdiff gprof target-groff guile perl time ash bash bzip2 prms gnuserv target-gperf" -+native_only="autoconf automake libtool fileutils find gawk gettext gzip hello indent m4 rcs recode sed shellutils tar textutils uudecode wdiff target-groff guile perl time ash bash bzip2 prms gnuserv target-gperf" - - # Similarly, some are only suitable for cross toolchains. - # Remove these if host=target. diff --git a/patches/binutils/2.15/230-gccpr15247-fix.patch b/patches/binutils/2.15/230-gccpr15247-fix.patch deleted file mode 100644 index 967bf7f..0000000 --- a/patches/binutils/2.15/230-gccpr15247-fix.patch +++ /dev/null @@ -1,192 +0,0 @@ -See -http://gcc.gnu.org/bugzilla/show_bug.cgi?id=15247 - -Fixes spurious error -/tmp/ccvNi4ou.s: Assembler messages: -/tmp/ccvNi4ou.s:2310: Error: Illegal operands: There are only 32 single precision f registers; [0-31] -make[2]: *** [/home/dank/wk/crosstool-0.28-rc10/build/sparc64-unknown-linux-gnu/gcc-3.4.0-glibc-2.3.2/build-glibc/math/dosincos.o] Error 1 - -when compiling glibc's dosincos.c with gcc-3.4.0 - -=================================================================== -RCS file: /cvs/src/src/opcodes/sparc-opc.c,v -retrieving revision 1.9 -retrieving revision 1.10 -diff -u -r1.9 -r1.10 ---- src/opcodes/sparc-opc.c 2004/01/18 23:46:32 1.9 -+++ src/opcodes/sparc-opc.c 2004/04/20 10:23:51 1.10 -@@ -1273,110 +1273,72 @@ - #define FM_DF 2 /* v9 */ - #define FM_QF 3 /* v9 */ - --#define fmovicc(opcode, fpsize, cond, flags) /* v9 */ \ --{ opcode, F3F(2, 0x35, 0x100+fpsize)|MCOND(cond,0), F3F(~2, ~0x35, ~(0x100+fpsize))|MCOND(~cond,~0), "z,f,g", flags, v9 }, \ --{ opcode, F3F(2, 0x35, 0x180+fpsize)|MCOND(cond,0), F3F(~2, ~0x35, ~(0x180+fpsize))|MCOND(~cond,~0), "Z,f,g", flags, v9 } -- --#define fmovfcc(opcode, fpsize, fcond, flags) /* v9 */ \ --{ opcode, F3F(2, 0x35, 0x000+fpsize)|MCOND(fcond,0), F3F(~2, ~0x35, ~(0x000+fpsize))|MCOND(~fcond,~0), "6,f,g", flags, v9 }, \ --{ opcode, F3F(2, 0x35, 0x040+fpsize)|MCOND(fcond,0), F3F(~2, ~0x35, ~(0x040+fpsize))|MCOND(~fcond,~0), "7,f,g", flags, v9 }, \ --{ opcode, F3F(2, 0x35, 0x080+fpsize)|MCOND(fcond,0), F3F(~2, ~0x35, ~(0x080+fpsize))|MCOND(~fcond,~0), "8,f,g", flags, v9 }, \ --{ opcode, F3F(2, 0x35, 0x0c0+fpsize)|MCOND(fcond,0), F3F(~2, ~0x35, ~(0x0c0+fpsize))|MCOND(~fcond,~0), "9,f,g", flags, v9 } -+#define fmoviccx(opcode, fpsize, args, cond, flags) /* v9 */ \ -+{ opcode, F3F(2, 0x35, 0x100+fpsize)|MCOND(cond,0), F3F(~2, ~0x35, ~(0x100+fpsize))|MCOND(~cond,~0), "z," args, flags, v9 }, \ -+{ opcode, F3F(2, 0x35, 0x180+fpsize)|MCOND(cond,0), F3F(~2, ~0x35, ~(0x180+fpsize))|MCOND(~cond,~0), "Z," args, flags, v9 } -+ -+#define fmovfccx(opcode, fpsize, args, fcond, flags) /* v9 */ \ -+{ opcode, F3F(2, 0x35, 0x000+fpsize)|MCOND(fcond,0), F3F(~2, ~0x35, ~(0x000+fpsize))|MCOND(~fcond,~0), "6," args, flags, v9 }, \ -+{ opcode, F3F(2, 0x35, 0x040+fpsize)|MCOND(fcond,0), F3F(~2, ~0x35, ~(0x040+fpsize))|MCOND(~fcond,~0), "7," args, flags, v9 }, \ -+{ opcode, F3F(2, 0x35, 0x080+fpsize)|MCOND(fcond,0), F3F(~2, ~0x35, ~(0x080+fpsize))|MCOND(~fcond,~0), "8," args, flags, v9 }, \ -+{ opcode, F3F(2, 0x35, 0x0c0+fpsize)|MCOND(fcond,0), F3F(~2, ~0x35, ~(0x0c0+fpsize))|MCOND(~fcond,~0), "9," args, flags, v9 } - - /* FIXME: use fmovicc/fmovfcc? */ /* v9 */ --#define fmovcc(opcode, fpsize, cond, fcond, flags) /* v9 */ \ --{ opcode, F3F(2, 0x35, 0x100+fpsize)|MCOND(cond,0), F3F(~2, ~0x35, ~(0x100+fpsize))|MCOND(~cond,~0), "z,f,g", flags | F_FLOAT, v9 }, \ --{ opcode, F3F(2, 0x35, 0x000+fpsize)|MCOND(fcond,0), F3F(~2, ~0x35, ~(0x000+fpsize))|MCOND(~fcond,~0), "6,f,g", flags | F_FLOAT, v9 }, \ --{ opcode, F3F(2, 0x35, 0x180+fpsize)|MCOND(cond,0), F3F(~2, ~0x35, ~(0x180+fpsize))|MCOND(~cond,~0), "Z,f,g", flags | F_FLOAT, v9 }, \ --{ opcode, F3F(2, 0x35, 0x040+fpsize)|MCOND(fcond,0), F3F(~2, ~0x35, ~(0x040+fpsize))|MCOND(~fcond,~0), "7,f,g", flags | F_FLOAT, v9 }, \ --{ opcode, F3F(2, 0x35, 0x080+fpsize)|MCOND(fcond,0), F3F(~2, ~0x35, ~(0x080+fpsize))|MCOND(~fcond,~0), "8,f,g", flags | F_FLOAT, v9 }, \ --{ opcode, F3F(2, 0x35, 0x0c0+fpsize)|MCOND(fcond,0), F3F(~2, ~0x35, ~(0x0c0+fpsize))|MCOND(~fcond,~0), "9,f,g", flags | F_FLOAT, v9 } -- --/* v9 */ fmovcc ("fmovda", FM_DF, CONDA, FCONDA, 0), --/* v9 */ fmovcc ("fmovqa", FM_QF, CONDA, FCONDA, 0), --/* v9 */ fmovcc ("fmovsa", FM_SF, CONDA, FCONDA, 0), --/* v9 */ fmovicc ("fmovdcc", FM_DF, CONDCC, 0), --/* v9 */ fmovicc ("fmovqcc", FM_QF, CONDCC, 0), --/* v9 */ fmovicc ("fmovscc", FM_SF, CONDCC, 0), --/* v9 */ fmovicc ("fmovdcs", FM_DF, CONDCS, 0), --/* v9 */ fmovicc ("fmovqcs", FM_QF, CONDCS, 0), --/* v9 */ fmovicc ("fmovscs", FM_SF, CONDCS, 0), --/* v9 */ fmovcc ("fmovde", FM_DF, CONDE, FCONDE, 0), --/* v9 */ fmovcc ("fmovqe", FM_QF, CONDE, FCONDE, 0), --/* v9 */ fmovcc ("fmovse", FM_SF, CONDE, FCONDE, 0), --/* v9 */ fmovcc ("fmovdg", FM_DF, CONDG, FCONDG, 0), --/* v9 */ fmovcc ("fmovqg", FM_QF, CONDG, FCONDG, 0), --/* v9 */ fmovcc ("fmovsg", FM_SF, CONDG, FCONDG, 0), --/* v9 */ fmovcc ("fmovdge", FM_DF, CONDGE, FCONDGE, 0), --/* v9 */ fmovcc ("fmovqge", FM_QF, CONDGE, FCONDGE, 0), --/* v9 */ fmovcc ("fmovsge", FM_SF, CONDGE, FCONDGE, 0), --/* v9 */ fmovicc ("fmovdgeu", FM_DF, CONDGEU, F_ALIAS), --/* v9 */ fmovicc ("fmovqgeu", FM_QF, CONDGEU, F_ALIAS), --/* v9 */ fmovicc ("fmovsgeu", FM_SF, CONDGEU, F_ALIAS), --/* v9 */ fmovicc ("fmovdgu", FM_DF, CONDGU, 0), --/* v9 */ fmovicc ("fmovqgu", FM_QF, CONDGU, 0), --/* v9 */ fmovicc ("fmovsgu", FM_SF, CONDGU, 0), --/* v9 */ fmovcc ("fmovdl", FM_DF, CONDL, FCONDL, 0), --/* v9 */ fmovcc ("fmovql", FM_QF, CONDL, FCONDL, 0), --/* v9 */ fmovcc ("fmovsl", FM_SF, CONDL, FCONDL, 0), --/* v9 */ fmovcc ("fmovdle", FM_DF, CONDLE, FCONDLE, 0), --/* v9 */ fmovcc ("fmovqle", FM_QF, CONDLE, FCONDLE, 0), --/* v9 */ fmovcc ("fmovsle", FM_SF, CONDLE, FCONDLE, 0), --/* v9 */ fmovicc ("fmovdleu", FM_DF, CONDLEU, 0), --/* v9 */ fmovicc ("fmovqleu", FM_QF, CONDLEU, 0), --/* v9 */ fmovicc ("fmovsleu", FM_SF, CONDLEU, 0), --/* v9 */ fmovfcc ("fmovdlg", FM_DF, FCONDLG, 0), --/* v9 */ fmovfcc ("fmovqlg", FM_QF, FCONDLG, 0), --/* v9 */ fmovfcc ("fmovslg", FM_SF, FCONDLG, 0), --/* v9 */ fmovicc ("fmovdlu", FM_DF, CONDLU, F_ALIAS), --/* v9 */ fmovicc ("fmovqlu", FM_QF, CONDLU, F_ALIAS), --/* v9 */ fmovicc ("fmovslu", FM_SF, CONDLU, F_ALIAS), --/* v9 */ fmovcc ("fmovdn", FM_DF, CONDN, FCONDN, 0), --/* v9 */ fmovcc ("fmovqn", FM_QF, CONDN, FCONDN, 0), --/* v9 */ fmovcc ("fmovsn", FM_SF, CONDN, FCONDN, 0), --/* v9 */ fmovcc ("fmovdne", FM_DF, CONDNE, FCONDNE, 0), --/* v9 */ fmovcc ("fmovqne", FM_QF, CONDNE, FCONDNE, 0), --/* v9 */ fmovcc ("fmovsne", FM_SF, CONDNE, FCONDNE, 0), --/* v9 */ fmovicc ("fmovdneg", FM_DF, CONDNEG, 0), --/* v9 */ fmovicc ("fmovqneg", FM_QF, CONDNEG, 0), --/* v9 */ fmovicc ("fmovsneg", FM_SF, CONDNEG, 0), --/* v9 */ fmovcc ("fmovdnz", FM_DF, CONDNZ, FCONDNZ, F_ALIAS), --/* v9 */ fmovcc ("fmovqnz", FM_QF, CONDNZ, FCONDNZ, F_ALIAS), --/* v9 */ fmovcc ("fmovsnz", FM_SF, CONDNZ, FCONDNZ, F_ALIAS), --/* v9 */ fmovfcc ("fmovdo", FM_DF, FCONDO, 0), --/* v9 */ fmovfcc ("fmovqo", FM_QF, FCONDO, 0), --/* v9 */ fmovfcc ("fmovso", FM_SF, FCONDO, 0), --/* v9 */ fmovicc ("fmovdpos", FM_DF, CONDPOS, 0), --/* v9 */ fmovicc ("fmovqpos", FM_QF, CONDPOS, 0), --/* v9 */ fmovicc ("fmovspos", FM_SF, CONDPOS, 0), --/* v9 */ fmovfcc ("fmovdu", FM_DF, FCONDU, 0), --/* v9 */ fmovfcc ("fmovqu", FM_QF, FCONDU, 0), --/* v9 */ fmovfcc ("fmovsu", FM_SF, FCONDU, 0), --/* v9 */ fmovfcc ("fmovdue", FM_DF, FCONDUE, 0), --/* v9 */ fmovfcc ("fmovque", FM_QF, FCONDUE, 0), --/* v9 */ fmovfcc ("fmovsue", FM_SF, FCONDUE, 0), --/* v9 */ fmovfcc ("fmovdug", FM_DF, FCONDUG, 0), --/* v9 */ fmovfcc ("fmovqug", FM_QF, FCONDUG, 0), --/* v9 */ fmovfcc ("fmovsug", FM_SF, FCONDUG, 0), --/* v9 */ fmovfcc ("fmovduge", FM_DF, FCONDUGE, 0), --/* v9 */ fmovfcc ("fmovquge", FM_QF, FCONDUGE, 0), --/* v9 */ fmovfcc ("fmovsuge", FM_SF, FCONDUGE, 0), --/* v9 */ fmovfcc ("fmovdul", FM_DF, FCONDUL, 0), --/* v9 */ fmovfcc ("fmovqul", FM_QF, FCONDUL, 0), --/* v9 */ fmovfcc ("fmovsul", FM_SF, FCONDUL, 0), --/* v9 */ fmovfcc ("fmovdule", FM_DF, FCONDULE, 0), --/* v9 */ fmovfcc ("fmovqule", FM_QF, FCONDULE, 0), --/* v9 */ fmovfcc ("fmovsule", FM_SF, FCONDULE, 0), --/* v9 */ fmovicc ("fmovdvc", FM_DF, CONDVC, 0), --/* v9 */ fmovicc ("fmovqvc", FM_QF, CONDVC, 0), --/* v9 */ fmovicc ("fmovsvc", FM_SF, CONDVC, 0), --/* v9 */ fmovicc ("fmovdvs", FM_DF, CONDVS, 0), --/* v9 */ fmovicc ("fmovqvs", FM_QF, CONDVS, 0), --/* v9 */ fmovicc ("fmovsvs", FM_SF, CONDVS, 0), --/* v9 */ fmovcc ("fmovdz", FM_DF, CONDZ, FCONDZ, F_ALIAS), --/* v9 */ fmovcc ("fmovqz", FM_QF, CONDZ, FCONDZ, F_ALIAS), --/* v9 */ fmovcc ("fmovsz", FM_SF, CONDZ, FCONDZ, F_ALIAS), -- -+#define fmovccx(opcode, fpsize, args, cond, fcond, flags) /* v9 */ \ -+{ opcode, F3F(2, 0x35, 0x100+fpsize)|MCOND(cond,0), F3F(~2, ~0x35, ~(0x100+fpsize))|MCOND(~cond,~0), "z," args, flags | F_FLOAT, v9 }, \ -+{ opcode, F3F(2, 0x35, 0x000+fpsize)|MCOND(fcond,0), F3F(~2, ~0x35, ~(0x000+fpsize))|MCOND(~fcond,~0), "6," args, flags | F_FLOAT, v9 }, \ -+{ opcode, F3F(2, 0x35, 0x180+fpsize)|MCOND(cond,0), F3F(~2, ~0x35, ~(0x180+fpsize))|MCOND(~cond,~0), "Z," args, flags | F_FLOAT, v9 }, \ -+{ opcode, F3F(2, 0x35, 0x040+fpsize)|MCOND(fcond,0), F3F(~2, ~0x35, ~(0x040+fpsize))|MCOND(~fcond,~0), "7," args, flags | F_FLOAT, v9 }, \ -+{ opcode, F3F(2, 0x35, 0x080+fpsize)|MCOND(fcond,0), F3F(~2, ~0x35, ~(0x080+fpsize))|MCOND(~fcond,~0), "8," args, flags | F_FLOAT, v9 }, \ -+{ opcode, F3F(2, 0x35, 0x0c0+fpsize)|MCOND(fcond,0), F3F(~2, ~0x35, ~(0x0c0+fpsize))|MCOND(~fcond,~0), "9," args, flags | F_FLOAT, v9 } -+ -+#define fmovicc(suffix, cond, flags) /* v9 */ \ -+fmoviccx("fmovd" suffix, FM_DF, "B,H", cond, flags), \ -+fmoviccx("fmovq" suffix, FM_QF, "R,J", cond, flags), \ -+fmoviccx("fmovs" suffix, FM_SF, "f,g", cond, flags) -+ -+#define fmovfcc(suffix, fcond, flags) /* v9 */ \ -+fmovfccx("fmovd" suffix, FM_DF, "B,H", fcond, flags), \ -+fmovfccx("fmovq" suffix, FM_QF, "R,J", fcond, flags), \ -+fmovfccx("fmovs" suffix, FM_SF, "f,g", fcond, flags) -+ -+#define fmovcc(suffix, cond, fcond, flags) /* v9 */ \ -+fmovccx("fmovd" suffix, FM_DF, "B,H", cond, fcond, flags), \ -+fmovccx("fmovq" suffix, FM_QF, "R,J", cond, fcond, flags), \ -+fmovccx("fmovs" suffix, FM_SF, "f,g", cond, fcond, flags) -+ -+/* v9 */ fmovcc ("a", CONDA, FCONDA, 0), -+/* v9 */ fmovicc ("cc", CONDCC, 0), -+/* v9 */ fmovicc ("cs", CONDCS, 0), -+/* v9 */ fmovcc ("e", CONDE, FCONDE, 0), -+/* v9 */ fmovcc ("g", CONDG, FCONDG, 0), -+/* v9 */ fmovcc ("ge", CONDGE, FCONDGE, 0), -+/* v9 */ fmovicc ("geu", CONDGEU, F_ALIAS), -+/* v9 */ fmovicc ("gu", CONDGU, 0), -+/* v9 */ fmovcc ("l", CONDL, FCONDL, 0), -+/* v9 */ fmovcc ("le", CONDLE, FCONDLE, 0), -+/* v9 */ fmovicc ("leu", CONDLEU, 0), -+/* v9 */ fmovfcc ("lg", FCONDLG, 0), -+/* v9 */ fmovicc ("lu", CONDLU, F_ALIAS), -+/* v9 */ fmovcc ("n", CONDN, FCONDN, 0), -+/* v9 */ fmovcc ("ne", CONDNE, FCONDNE, 0), -+/* v9 */ fmovicc ("neg", CONDNEG, 0), -+/* v9 */ fmovcc ("nz", CONDNZ, FCONDNZ, F_ALIAS), -+/* v9 */ fmovfcc ("o", FCONDO, 0), -+/* v9 */ fmovicc ("pos", CONDPOS, 0), -+/* v9 */ fmovfcc ("u", FCONDU, 0), -+/* v9 */ fmovfcc ("ue", FCONDUE, 0), -+/* v9 */ fmovfcc ("ug", FCONDUG, 0), -+/* v9 */ fmovfcc ("uge", FCONDUGE, 0), -+/* v9 */ fmovfcc ("ul", FCONDUL, 0), -+/* v9 */ fmovfcc ("ule", FCONDULE, 0), -+/* v9 */ fmovicc ("vc", CONDVC, 0), -+/* v9 */ fmovicc ("vs", CONDVS, 0), -+/* v9 */ fmovcc ("z", CONDZ, FCONDZ, F_ALIAS), -+ -+#undef fmoviccx /* v9 */ -+#undef fmovfccx /* v9 */ -+#undef fmovccx /* v9 */ - #undef fmovicc /* v9 */ - #undef fmovfcc /* v9 */ - #undef fmovcc /* v9 */ diff --git a/patches/binutils/2.15/240-ld-callahan.patch b/patches/binutils/2.15/240-ld-callahan.patch deleted file mode 100644 index bb4a69c..0000000 --- a/patches/binutils/2.15/240-ld-callahan.patch +++ /dev/null @@ -1,677 +0,0 @@ -Signed-off-by: dank@kegel.com -Fixes ld speed issue. -See http://weblogs.mozillazine.org/roc/archives/2005/02/optimizing_gnu.html -See thread "Re: optimizations for 3x speedup in ld", -http://sources.redhat.com/ml/binutils/2005-03/msg00847.html - -Wildcard section matching enhancement, backported from the binutils CVS tree. -Here's the CVS log comment from the original change to ldlang.c: - -revision 1.177 -date: 2005/04/06 15:33:02; author: jakub; state: Exp; lines: +438 -51 -2005-04-06 Jakub Jelinek - - * ldlang.c: Formatting. - (walk_wild_consider_section): Remember return value from wildcardp. - (is_simple_wild): Use strcspn instead of 2 strpbrk calls and strlen. - (wild_spec_can_overlap): Use strcspn instead of strpbrk and strlen. - -2005-04-06 Robert O'Callahan - - * ld.h (lean_section_userdata_type): Remove. - (fat_section_userdata_type): Remove file field. - (SECTION_USERDATA_SIZE): Remove. - * ldlang.c (init_os): Eliminate initialization of unused - lean_section_userdata_type. - - * ldlang.h (callback_t, walk_wild_section_handler_t): New - typedefs. - (struct lang_wild_statement_struct): Add walk_wild_section_handler - and handler_data fields. - * ldlang.c (callback_t): Removed. - (walk_wild_consider_section, walk_wild_section_general, - section_iterator_callback, find_section, is_simple_wild, - match_simple_wild, walk_wild_section_specs1_wild0, - walk_wild_section_specs1_wild1, walk_wild_section_specs2_wild1, - walk_wild_section_specs3_wild2, walk_wild_section_specs4_wild2, - wild_spec_can_overlap, analyze_walk_wild_section_handler): New - functions. - (lang_add_wild): Call analyze_walk_wild_section_handler. - (walk_wild_section): Renamed to walk_wild_section_general and - created a wrapper function. - (section_iterator_callback_data): New typedef. - -Note that bfd_get_section_by_name_if didn't exist in 2.15, so it was backported -as well. - ---- binutils-2.15/bfd/bfd-in2.h.old 2004-05-17 15:35:56.000000000 -0400 -+++ binutils-2.15/bfd/bfd-in2.h 2006-02-09 11:54:45.989940000 -0500 -@@ -1425,6 +1425,10 @@ - - asection *bfd_get_section_by_name (bfd *abfd, const char *name); - -+asection *bfd_get_section_by_name_if (bfd *abfd, const char *name, -+ bfd_boolean (*operation) (bfd *, asection *, void *), -+ void *user_storage); -+ - char *bfd_get_unique_section_name - (bfd *abfd, const char *templat, int *count); - ---- binutils-2.15/bfd/section.c.old 2003-12-01 01:33:01.000000000 -0500 -+++ binutils-2.15/bfd/section.c 2006-01-23 14:16:54.768993000 -0500 -@@ -801,6 +801,57 @@ - - /* - FUNCTION -+ bfd_get_section_by_name_if -+ -+SYNOPSIS -+ asection *bfd_get_section_by_name_if -+ (bfd *abfd, -+ const char *name, -+ bfd_boolean (*func) (bfd *abfd, asection *sect, void *obj), -+ void *obj); -+ -+DESCRIPTION -+ Call the provided function @var{func} for each section -+ attached to the BFD @var{abfd} whose name matches @var{name}, -+ passing @var{obj} as an argument. The function will be called -+ as if by -+ -+| func (abfd, the_section, obj); -+ -+ It returns the first section for which @var{func} returns true, -+ otherwise <>. -+ -+*/ -+ -+asection * -+bfd_get_section_by_name_if (bfd *abfd, const char *name, -+ bfd_boolean (*operation) (bfd *, -+ asection *, -+ void *), -+ void *user_storage) -+{ -+ struct section_hash_entry *sh; -+ unsigned long hash; -+ -+ sh = section_hash_lookup (&abfd->section_htab, name, FALSE, FALSE); -+ if (sh == NULL) -+ return NULL; -+ -+ hash = sh->root.hash; -+ do -+ { -+ if ((*operation) (abfd, &sh->section, user_storage)) -+ return &sh->section; -+ sh = (struct section_hash_entry *) sh->root.next; -+ } -+ while (sh != NULL && sh->root.hash == hash -+ && strcmp (sh->root.string, name) == 0); -+ -+ return NULL; -+} -+ -+/* -+FUNCTION - bfd_get_unique_section_name - - SYNOPSIS ---- binutils-2.15/ld/ldlang.c.old 2004-05-17 15:36:16.000000000 -0400 -+++ binutils-2.15/ld/ldlang.c 2006-01-23 13:40:12.745499000 -0500 -@@ -81,9 +81,6 @@ - static void lang_record_phdrs (void); - static void lang_do_version_exports_section (void); - --typedef void (*callback_t) (lang_wild_statement_type *, struct wildcard_list *, -- asection *, lang_input_statement_type *, void *); -- - /* Exported variables. */ - lang_output_section_statement_type *abs_output_section; - lang_statement_list_type lang_output_section_statement; -@@ -138,21 +135,71 @@ - - /* Generic traversal routines for finding matching sections. */ - -+/* Try processing a section against a wildcard. This just calls -+ the callback unless the filename exclusion list is present -+ and excludes the file. It's hardly ever present so this -+ function is very fast. */ -+ -+static void -+walk_wild_consider_section (lang_wild_statement_type *ptr, -+ lang_input_statement_type *file, -+ asection *s, -+ struct wildcard_list *sec, -+ callback_t callback, -+ void *data) -+{ -+ bfd_boolean skip = FALSE; -+ struct name_list *list_tmp; -+ -+ /* Don't process sections from files which were -+ excluded. */ -+ for (list_tmp = sec->spec.exclude_name_list; -+ list_tmp; -+ list_tmp = list_tmp->next) -+ { -+ bfd_boolean is_wildcard = wildcardp (list_tmp->name); -+ if (is_wildcard) -+ skip = fnmatch (list_tmp->name, file->filename, 0) == 0; -+ else -+ skip = strcmp (list_tmp->name, file->filename) == 0; -+ -+ /* If this file is part of an archive, and the archive is -+ excluded, exclude this file. */ -+ if (! skip && file->the_bfd != NULL -+ && file->the_bfd->my_archive != NULL -+ && file->the_bfd->my_archive->filename != NULL) -+ { -+ if (is_wildcard) -+ skip = fnmatch (list_tmp->name, -+ file->the_bfd->my_archive->filename, -+ 0) == 0; -+ else -+ skip = strcmp (list_tmp->name, -+ file->the_bfd->my_archive->filename) == 0; -+ } -+ -+ if (skip) -+ break; -+ } -+ -+ if (!skip) -+ (*callback) (ptr, sec, s, file, data); -+} -+ -+/* Lowest common denominator routine that can handle everything correctly, -+ but slowly. */ -+ - static void --walk_wild_section (lang_wild_statement_type *ptr, -- lang_input_statement_type *file, -- callback_t callback, -- void *data) -+walk_wild_section_general (lang_wild_statement_type *ptr, -+ lang_input_statement_type *file, -+ callback_t callback, -+ void *data) - { - asection *s; -- -- if (file->just_syms_flag) -- return; -+ struct wildcard_list *sec; - - for (s = file->the_bfd->sections; s != NULL; s = s->next) - { -- struct wildcard_list *sec; -- - sec = ptr->section_list; - if (sec == NULL) - (*callback) (ptr, sec, s, file, data); -@@ -160,39 +207,8 @@ - while (sec != NULL) - { - bfd_boolean skip = FALSE; -- struct name_list *list_tmp; -- -- /* Don't process sections from files which were -- excluded. */ -- for (list_tmp = sec->spec.exclude_name_list; -- list_tmp; -- list_tmp = list_tmp->next) -- { -- if (wildcardp (list_tmp->name)) -- skip = fnmatch (list_tmp->name, file->filename, 0) == 0; -- else -- skip = strcmp (list_tmp->name, file->filename) == 0; -- -- /* If this file is part of an archive, and the archive is -- excluded, exclude this file. */ -- if (! skip && file->the_bfd != NULL -- && file->the_bfd->my_archive != NULL -- && file->the_bfd->my_archive->filename != NULL) -- { -- if (wildcardp (list_tmp->name)) -- skip = fnmatch (list_tmp->name, -- file->the_bfd->my_archive->filename, -- 0) == 0; -- else -- skip = strcmp (list_tmp->name, -- file->the_bfd->my_archive->filename) == 0; -- } -- -- if (skip) -- break; -- } - -- if (!skip && sec->spec.name != NULL) -+ if (sec->spec.name != NULL) - { - const char *sname = bfd_get_section_name (file->the_bfd, s); - -@@ -203,13 +219,381 @@ - } - - if (!skip) -- (*callback) (ptr, sec, s, file, data); -+ walk_wild_consider_section (ptr, file, s, sec, callback, data); - - sec = sec->next; - } - } - } - -+/* Routines to find a single section given its name. If there's more -+ than one section with that name, we report that. */ -+ -+typedef struct -+{ -+ asection *found_section; -+ bfd_boolean multiple_sections_found; -+} section_iterator_callback_data; -+ -+static bfd_boolean -+section_iterator_callback (bfd *bfd ATTRIBUTE_UNUSED, asection *s, void *data) -+{ -+ section_iterator_callback_data *d = data; -+ -+ if (d->found_section != NULL) -+ { -+ d->multiple_sections_found = TRUE; -+ return TRUE; -+ } -+ -+ d->found_section = s; -+ return FALSE; -+} -+ -+static asection * -+find_section (lang_input_statement_type *file, -+ struct wildcard_list *sec, -+ bfd_boolean *multiple_sections_found) -+{ -+ section_iterator_callback_data cb_data = { NULL, FALSE }; -+ -+ bfd_get_section_by_name_if (file->the_bfd, sec->spec.name, -+ section_iterator_callback, &cb_data); -+ *multiple_sections_found = cb_data.multiple_sections_found; -+ return cb_data.found_section; -+} -+ -+/* Code for handling simple wildcards without going through fnmatch, -+ which can be expensive because of charset translations etc. */ -+ -+/* A simple wild is a literal string followed by a single '*', -+ where the literal part is at least 4 characters long. */ -+ -+static bfd_boolean -+is_simple_wild (const char *name) -+{ -+ size_t len = strcspn (name, "*?["); -+ return len >= 4 && name[len] == '*' && name[len + 1] == '\0'; -+} -+ -+static bfd_boolean -+match_simple_wild (const char *pattern, const char *name) -+{ -+ /* The first four characters of the pattern are guaranteed valid -+ non-wildcard characters. So we can go faster. */ -+ if (pattern[0] != name[0] || pattern[1] != name[1] -+ || pattern[2] != name[2] || pattern[3] != name[3]) -+ return FALSE; -+ -+ pattern += 4; -+ name += 4; -+ while (*pattern != '*') -+ if (*name++ != *pattern++) -+ return FALSE; -+ -+ return TRUE; -+} -+ -+/* Specialized, optimized routines for handling different kinds of -+ wildcards */ -+ -+static void -+walk_wild_section_specs1_wild0 (lang_wild_statement_type *ptr, -+ lang_input_statement_type *file, -+ callback_t callback, -+ void *data) -+{ -+ /* We can just do a hash lookup for the section with the right name. -+ But if that lookup discovers more than one section with the name -+ (should be rare), we fall back to the general algorithm because -+ we would otherwise have to sort the sections to make sure they -+ get processed in the bfd's order. */ -+ bfd_boolean multiple_sections_found; -+ struct wildcard_list *sec0 = ptr->handler_data[0]; -+ asection *s0 = find_section (file, sec0, &multiple_sections_found); -+ -+ if (multiple_sections_found) -+ walk_wild_section_general (ptr, file, callback, data); -+ else if (s0) -+ walk_wild_consider_section (ptr, file, s0, sec0, callback, data); -+} -+ -+static void -+walk_wild_section_specs1_wild1 (lang_wild_statement_type *ptr, -+ lang_input_statement_type *file, -+ callback_t callback, -+ void *data) -+{ -+ asection *s; -+ struct wildcard_list *wildsec0 = ptr->handler_data[0]; -+ -+ for (s = file->the_bfd->sections; s != NULL; s = s->next) -+ { -+ const char *sname = bfd_get_section_name (file->the_bfd, s); -+ bfd_boolean skip = !match_simple_wild (wildsec0->spec.name, sname); -+ -+ if (!skip) -+ walk_wild_consider_section (ptr, file, s, wildsec0, callback, data); -+ } -+} -+ -+static void -+walk_wild_section_specs2_wild1 (lang_wild_statement_type *ptr, -+ lang_input_statement_type *file, -+ callback_t callback, -+ void *data) -+{ -+ asection *s; -+ struct wildcard_list *sec0 = ptr->handler_data[0]; -+ struct wildcard_list *wildsec1 = ptr->handler_data[1]; -+ bfd_boolean multiple_sections_found; -+ asection *s0 = find_section (file, sec0, &multiple_sections_found); -+ -+ if (multiple_sections_found) -+ { -+ walk_wild_section_general (ptr, file, callback, data); -+ return; -+ } -+ -+ /* Note that if the section was not found, s0 is NULL and -+ we'll simply never succeed the s == s0 test below. */ -+ for (s = file->the_bfd->sections; s != NULL; s = s->next) -+ { -+ /* Recall that in this code path, a section cannot satisfy more -+ than one spec, so if s == s0 then it cannot match -+ wildspec1. */ -+ if (s == s0) -+ walk_wild_consider_section (ptr, file, s, sec0, callback, data); -+ else -+ { -+ const char *sname = bfd_get_section_name (file->the_bfd, s); -+ bfd_boolean skip = !match_simple_wild (wildsec1->spec.name, sname); -+ -+ if (!skip) -+ walk_wild_consider_section (ptr, file, s, wildsec1, callback, -+ data); -+ } -+ } -+} -+ -+static void -+walk_wild_section_specs3_wild2 (lang_wild_statement_type *ptr, -+ lang_input_statement_type *file, -+ callback_t callback, -+ void *data) -+{ -+ asection *s; -+ struct wildcard_list *sec0 = ptr->handler_data[0]; -+ struct wildcard_list *wildsec1 = ptr->handler_data[1]; -+ struct wildcard_list *wildsec2 = ptr->handler_data[2]; -+ bfd_boolean multiple_sections_found; -+ asection *s0 = find_section (file, sec0, &multiple_sections_found); -+ -+ if (multiple_sections_found) -+ { -+ walk_wild_section_general (ptr, file, callback, data); -+ return; -+ } -+ -+ for (s = file->the_bfd->sections; s != NULL; s = s->next) -+ { -+ if (s == s0) -+ walk_wild_consider_section (ptr, file, s, sec0, callback, data); -+ else -+ { -+ const char *sname = bfd_get_section_name (file->the_bfd, s); -+ bfd_boolean skip = !match_simple_wild (wildsec1->spec.name, sname); -+ -+ if (!skip) -+ walk_wild_consider_section (ptr, file, s, wildsec1, callback, data); -+ else -+ { -+ skip = !match_simple_wild (wildsec2->spec.name, sname); -+ if (!skip) -+ walk_wild_consider_section (ptr, file, s, wildsec2, callback, -+ data); -+ } -+ } -+ } -+} -+ -+static void -+walk_wild_section_specs4_wild2 (lang_wild_statement_type *ptr, -+ lang_input_statement_type *file, -+ callback_t callback, -+ void *data) -+{ -+ asection *s; -+ struct wildcard_list *sec0 = ptr->handler_data[0]; -+ struct wildcard_list *sec1 = ptr->handler_data[1]; -+ struct wildcard_list *wildsec2 = ptr->handler_data[2]; -+ struct wildcard_list *wildsec3 = ptr->handler_data[3]; -+ bfd_boolean multiple_sections_found; -+ asection *s0 = find_section (file, sec0, &multiple_sections_found), *s1; -+ -+ if (multiple_sections_found) -+ { -+ walk_wild_section_general (ptr, file, callback, data); -+ return; -+ } -+ -+ s1 = find_section (file, sec1, &multiple_sections_found); -+ if (multiple_sections_found) -+ { -+ walk_wild_section_general (ptr, file, callback, data); -+ return; -+ } -+ -+ for (s = file->the_bfd->sections; s != NULL; s = s->next) -+ { -+ if (s == s0) -+ walk_wild_consider_section (ptr, file, s, sec0, callback, data); -+ else -+ if (s == s1) -+ walk_wild_consider_section (ptr, file, s, sec1, callback, data); -+ else -+ { -+ const char *sname = bfd_get_section_name (file->the_bfd, s); -+ bfd_boolean skip = !match_simple_wild (wildsec2->spec.name, -+ sname); -+ -+ if (!skip) -+ walk_wild_consider_section (ptr, file, s, wildsec2, callback, -+ data); -+ else -+ { -+ skip = !match_simple_wild (wildsec3->spec.name, sname); -+ if (!skip) -+ walk_wild_consider_section (ptr, file, s, wildsec3, -+ callback, data); -+ } -+ } -+ } -+} -+ -+static void -+walk_wild_section (lang_wild_statement_type *ptr, -+ lang_input_statement_type *file, -+ callback_t callback, -+ void *data) -+{ -+ if (file->just_syms_flag) -+ return; -+ -+ (*ptr->walk_wild_section_handler) (ptr, file, callback, data); -+} -+ -+/* Returns TRUE when name1 is a wildcard spec that might match -+ something name2 can match. We're conservative: we return FALSE -+ only if the prefixes of name1 and name2 are different up to the -+ first wildcard character. */ -+ -+static bfd_boolean -+wild_spec_can_overlap (const char *name1, const char *name2) -+{ -+ size_t prefix1_len = strcspn (name1, "?*["); -+ size_t prefix2_len = strcspn (name2, "?*["); -+ size_t min_prefix_len; -+ -+ /* Note that if there is no wildcard character, then we treat the -+ terminating 0 as part of the prefix. Thus ".text" won't match -+ ".text." or ".text.*", for example. */ -+ if (name1[prefix1_len] == '\0') -+ prefix1_len++; -+ if (name2[prefix2_len] == '\0') -+ prefix2_len++; -+ -+ min_prefix_len = prefix1_len < prefix2_len ? prefix1_len : prefix2_len; -+ -+ return memcmp (name1, name2, min_prefix_len) == 0; -+} -+ -+/* Select specialized code to handle various kinds of wildcard -+ statements. */ -+ -+static void -+analyze_walk_wild_section_handler (lang_wild_statement_type *ptr) -+{ -+ int sec_count = 0; -+ int wild_name_count = 0; -+ struct wildcard_list *sec; -+ int signature; -+ int data_counter; -+ -+ ptr->walk_wild_section_handler = walk_wild_section_general; -+ -+ /* Count how many wildcard_specs there are, and how many of those -+ actually use wildcards in the name. Also, bail out if any of the -+ wildcard names are NULL. (Can this actually happen? -+ walk_wild_section used to test for it.) And bail out if any -+ of the wildcards are more complex than a simple string -+ ending in a single '*'. */ -+ for (sec = ptr->section_list; sec != NULL; sec = sec->next) -+ { -+ ++sec_count; -+ if (sec->spec.name == NULL) -+ return; -+ if (wildcardp (sec->spec.name)) -+ { -+ ++wild_name_count; -+ if (!is_simple_wild (sec->spec.name)) -+ return; -+ } -+ } -+ -+ /* The zero-spec case would be easy to optimize but it doesn't -+ happen in practice. Likewise, more than 4 specs doesn't -+ happen in practice. */ -+ if (sec_count == 0 || sec_count > 4) -+ return; -+ -+ /* Check that no two specs can match the same section. */ -+ for (sec = ptr->section_list; sec != NULL; sec = sec->next) -+ { -+ struct wildcard_list *sec2; -+ for (sec2 = sec->next; sec2 != NULL; sec2 = sec2->next) -+ { -+ if (wild_spec_can_overlap (sec->spec.name, sec2->spec.name)) -+ return; -+ } -+ } -+ -+ signature = (sec_count << 8) + wild_name_count; -+ switch (signature) -+ { -+ case 0x0100: -+ ptr->walk_wild_section_handler = walk_wild_section_specs1_wild0; -+ break; -+ case 0x0101: -+ ptr->walk_wild_section_handler = walk_wild_section_specs1_wild1; -+ break; -+ case 0x0201: -+ ptr->walk_wild_section_handler = walk_wild_section_specs2_wild1; -+ break; -+ case 0x0302: -+ ptr->walk_wild_section_handler = walk_wild_section_specs3_wild2; -+ break; -+ case 0x0402: -+ ptr->walk_wild_section_handler = walk_wild_section_specs4_wild2; -+ break; -+ default: -+ return; -+ } -+ -+ /* Now fill the data array with pointers to the specs, first the -+ specs with non-wildcard names, then the specs with wildcard -+ names. It's OK to process the specs in different order from the -+ given order, because we've already determined that no section -+ will match more than one spec. */ -+ data_counter = 0; -+ for (sec = ptr->section_list; sec != NULL; sec = sec->next) -+ if (!wildcardp (sec->spec.name)) -+ ptr->handler_data[data_counter++] = sec; -+ for (sec = ptr->section_list; sec != NULL; sec = sec->next) -+ if (wildcardp (sec->spec.name)) -+ ptr->handler_data[data_counter++] = sec; -+} -+ - /* Handle a wild statement for a single file F. */ - - static void -@@ -4353,6 +4737,7 @@ - new->section_list = section_list; - new->keep_sections = keep_sections; - lang_list_init (&new->children); -+ analyze_walk_wild_section_handler (new); - } - - void ---- binutils-2.15/ld/ldlang.h.old 2004-05-17 15:36:16.000000000 -0400 -+++ binutils-2.15/ld/ldlang.h 2006-01-23 13:32:33.653292000 -0500 -@@ -295,7 +295,17 @@ - union lang_statement_union *file; - } lang_afile_asection_pair_statement_type; - --typedef struct lang_wild_statement_struct -+typedef struct lang_wild_statement_struct lang_wild_statement_type; -+ -+typedef void (*callback_t) (lang_wild_statement_type *, struct wildcard_list *, -+ asection *, lang_input_statement_type *, void *); -+ -+typedef void (*walk_wild_section_handler_t) (lang_wild_statement_type *, -+ lang_input_statement_type *, -+ callback_t callback, -+ void *data); -+ -+struct lang_wild_statement_struct - { - lang_statement_header_type header; - const char *filename; -@@ -303,7 +313,10 @@ - struct wildcard_list *section_list; - bfd_boolean keep_sections; - lang_statement_list_type children; --} lang_wild_statement_type; -+ -+ walk_wild_section_handler_t walk_wild_section_handler; -+ struct wildcard_list *handler_data[4]; -+}; - - typedef struct lang_address_statement_struct - { diff --git a/patches/binutils/2.15/250-ld-stabs-tweak.patch b/patches/binutils/2.15/250-ld-stabs-tweak.patch deleted file mode 100644 index bd6ae7a..0000000 --- a/patches/binutils/2.15/250-ld-stabs-tweak.patch +++ /dev/null @@ -1,33 +0,0 @@ -Signed-off-by: dank@kegel.com - -See http://sourceware.org/ml/binutils/2005-12/msg00270.html -http://sourceware.org/ml/binutils-cvs/2005-12/msg00139.html - -STABS hash table size change, backported from the binutils CVS tree. Here's -the CVS log comment for the original change: - -revision 1.25 -date: 2005/12/29 10:29:23; author: nickc; state: Exp; lines: +2 -3 -(_bfd_link_section_stabs): Use bfd_hash_table_init rather than -bfd_hash_table_init_n(...,251) so that the size of the hash table can be -controlled by the user. - -Note that tunable hash table size changes were added after 2.15. The effect -of this change is to make bfd use its default hash table size for the stabs -hash as well. - - ---- binutils-2.15/bfd/stabs.c.old 2004-05-17 15:36:04.000000000 -0400 -+++ binutils-2.15/bfd/stabs.c 2006-02-09 15:21:56.567014000 -0500 -@@ -241,9 +241,8 @@ - goto error_return; - /* Make sure the first byte is zero. */ - (void) _bfd_stringtab_add (sinfo->strings, "", TRUE, TRUE); -- if (! bfd_hash_table_init_n (&sinfo->includes.root, -- stab_link_includes_newfunc, -- 251)) -+ if (! bfd_hash_table_init (&sinfo->includes.root, -+ stab_link_includes_newfunc)) - goto error_return; - sinfo->stabstr = bfd_make_section_anyway (abfd, ".stabstr"); - sinfo->stabstr->flags |= SEC_HAS_CONTENTS | SEC_READONLY | SEC_DEBUGGING; diff --git a/patches/binutils/2.15/260-s390-invalid-insn-format.patch b/patches/binutils/2.15/260-s390-invalid-insn-format.patch deleted file mode 100644 index 3296201..0000000 --- a/patches/binutils/2.15/260-s390-invalid-insn-format.patch +++ /dev/null @@ -1,42 +0,0 @@ -Message-ID: <000801c48f60$cec16630$9103a8c0@ULOC5012> -From: "Michael Geiger" -To: -Subject: Patch for cross compiling s/390 kernel on linux host -Date: Tue, 31 Aug 2004 15:45:41 +0200 - -Dear Dan, - -I had big problems compiling a kernel for s/390 on my linux host - I tried -different chains from crosstool-0.28-rc34 and finally succeded with -gcc-3.3.4-glibc-2.3.2 after applying another patch to binutils-2.15 -(attached). -All compilations of the different kernel versions I tried stopped with -"Invalid .insn format" somewhere. I checked the recent cvs version of -binutils and applied the latest diff to gas/config/tc-s390.c and that solved -it. - -Greetings - -Michael Geiger - - -diff -u -r1.39 -r1.40 ---- src/gas/config/tc-s390.c 2004/05/06 11:01:48 1.39 -+++ src/gas/config/tc-s390.c 2004/06/15 12:38:08 1.40 -@@ -1596,13 +1596,13 @@ - if (exp.X_op == O_constant) - { - if ( ( opformat->oplen == 6 -- && exp.X_add_number >= 0 -+ && (addressT) exp.X_add_number >= 0 - && (addressT) exp.X_add_number < (1ULL << 48)) - || ( opformat->oplen == 4 -- && exp.X_add_number >= 0 -+ && (addressT) exp.X_add_number >= 0 - && (addressT) exp.X_add_number < (1ULL << 32)) - || ( opformat->oplen == 2 -- && exp.X_add_number >= 0 -+ && (addressT) exp.X_add_number >= 0 - && (addressT) exp.X_add_number < (1ULL << 16))) - md_number_to_chars (insn, exp.X_add_number, opformat->oplen); - else diff --git a/patches/gcc/2.95.3/100-arm-linux.patch b/patches/gcc/2.95.3/100-arm-linux.patch deleted file mode 100644 index 00974f6..0000000 --- a/patches/gcc/2.95.3/100-arm-linux.patch +++ /dev/null @@ -1,647 +0,0 @@ ---------- snip ------- -Downloaded from ftp://ftp.linux.org.uk/pub/armlinux/toolchain/src-2.95.3/gcc-2.95.3.diff.bz2 -Not sure what it fixes, but this appears to be The Patch used with gcc-2.95.3 on arm. ---------- snip ------- - -diff -urN gcc-2.95.3-orig/gcc/config/arm/arm.c gcc-2.95.3/gcc/config/arm/arm.c ---- gcc-2.95.3-orig/gcc/config/arm/arm.c Thu Jan 25 15:03:24 2001 -+++ gcc-2.95.3/gcc/config/arm/arm.c Fri Jul 20 19:39:11 2001 -@@ -1529,27 +1529,34 @@ - return gen_rtx_PLUS (Pmode, base, offset); - } - else if (GET_CODE (orig) == LABEL_REF) -- current_function_uses_pic_offset_table = 1; -- -- return orig; --} -+ { -+ current_function_uses_pic_offset_table = 1; - --static rtx pic_rtx; -+ if (NEED_PLT_GOT) -+ { -+ rtx pic_ref, address = gen_reg_rtx (Pmode); -+ -+ emit_insn (gen_pic_load_addr (address, orig)); -+ pic_ref = gen_rtx_PLUS (Pmode, pic_offset_table_rtx, -+ address); -+ emit_move_insn (address, pic_ref); -+ return address; -+ } -+ } - --int --is_pic(x) -- rtx x; --{ -- if (x == pic_rtx) -- return 1; -- return 0; -+ return orig; - } - -+/* Generate code to load the PIC register. PROLOGUE is true if -+ called from arm_expand_prologue (in which case we want the -+ generated insns at the start of the function); false if called -+ by an exception receiver that needs the PIC register reloaded -+ (in which case the insns are just dumped at the current location). */ - void --arm_finalize_pic () -+arm_finalize_pic (int prologue) - { - #ifndef AOF_ASSEMBLER -- rtx l1, pic_tmp, pic_tmp2, seq; -+ rtx l1, pic_tmp, pic_tmp2, seq, pic_rtx; - rtx global_offset_table; - - if (current_function_uses_pic_offset_table == 0) -@@ -1578,7 +1585,10 @@ - - seq = gen_sequence (); - end_sequence (); -- emit_insn_after (seq, get_insns ()); -+ if (prologue) -+ emit_insn_after (seq, get_insns ()); -+ else -+ emit_insn (seq); - - /* Need to emit this whether or not we obey regdecls, - since setjmp/longjmp can cause life info to screw up. */ -@@ -5327,7 +5337,13 @@ - if (frame_pointer_needed) - live_regs += 4; - -- if (live_regs) -+ if (live_regs == 1 && regs_ever_live[LR_REGNUM] -+ && ! lr_save_eliminated && ! really_return) -+ { -+ output_asm_insn (reverse ? "ldr%?%D0\t%|lr, [%|sp}, #4" -+ : "ldr%?%d0\t%|lr, [%|sp], #4", &operand); -+ } -+ else if (live_regs) - { - if (lr_save_eliminated || ! regs_ever_live[14]) - live_regs++; -@@ -5446,7 +5462,7 @@ - rtx x; - - length = strlen (name); -- alignlength = (length + 1) + 3 & ~3; -+ alignlength = ((length + 1) + 3) & ~3; - - ASM_OUTPUT_ASCII (stream, name, length + 1); - ASM_OUTPUT_ALIGN (stream, 2); -@@ -5838,6 +5854,9 @@ - int store_arg_regs = 0; - int volatile_func = (optimize > 0 - && TREE_THIS_VOLATILE (current_function_decl)); -+ rtx ip_rtx; -+ int fp_offset = 0; -+ rtx insn; - - /* Naked functions don't have prologues. */ - if (arm_naked_function_p (current_function_decl)) -@@ -5859,11 +5878,59 @@ - live_regs_mask |= 0x4000; - } - -+ ip_rtx = gen_rtx_REG (SImode, IP_REGNUM); -+ - if (frame_pointer_needed) - { -+ if (current_function_needs_context) -+ { -+ /* The Static chain register is the same as the IP register -+ used as a scratch register during stack frame creation. -+ To get around this need to find somewhere to store IP -+ whilst the frame is being created. We try the following -+ places in order: -+ -+ 1. An unused argument register. -+ 2. A slot on the stack above the frame. (This only -+ works if the function is not a varargs function). -+ -+ If neither of these places is available, we abort (for now). */ -+ if (regs_ever_live[3] == 0) -+ { -+ insn = gen_rtx_REG (SImode, 3); -+ insn = gen_rtx_SET (SImode, insn, ip_rtx); -+ insn = emit_insn (insn); -+ RTX_FRAME_RELATED_P (insn) = 1; -+ } -+ else if (current_function_pretend_args_size == 0) -+ { -+ insn = gen_rtx_PRE_DEC (SImode, stack_pointer_rtx); -+ insn = gen_rtx_MEM (SImode, insn); -+ insn = gen_rtx_SET (VOIDmode, insn, ip_rtx); -+ insn = emit_insn (insn); -+ RTX_FRAME_RELATED_P (insn) = 1; -+ fp_offset = 4; -+ } -+ else -+ /* FIXME - the way to handle this situation is to allow -+ the pretend args to be dumped onto the stack, then -+ reuse r3 to save IP. This would involve moving the -+ copying os SP into IP until after the pretend args -+ have been dumped, but this is not too hard. */ -+ error ("Unable to find a temporary location for static chanin register"); -+ } -+ - live_regs_mask |= 0xD800; -- emit_insn (gen_movsi (gen_rtx_REG (SImode, 12), -- stack_pointer_rtx)); -+ if (fp_offset) -+ { -+ insn = gen_rtx_PLUS (SImode, stack_pointer_rtx, GEN_INT (fp_offset)); -+ insn = gen_rtx_SET (SImode, ip_rtx, insn); -+ } -+ else -+ insn = gen_movsi (ip_rtx, stack_pointer_rtx); -+ -+ insn = emit_insn (insn); -+ RTX_FRAME_RELATED_P (insn) = 1; - } - - if (current_function_pretend_args_size) -@@ -5927,9 +5994,31 @@ - } - - if (frame_pointer_needed) -- emit_insn (gen_addsi3 (hard_frame_pointer_rtx, gen_rtx_REG (SImode, 12), -- (GEN_INT -- (-(4 + current_function_pretend_args_size))))); -+ { -+ insn = GEN_INT (-(4 + current_function_pretend_args_size + fp_offset)); -+ insn = emit_insn (gen_addsi3 (hard_frame_pointer_rtx, ip_rtx, insn)); -+ RTX_FRAME_RELATED_P (insn) = 1; -+ -+ if (current_function_needs_context) -+ { -+ /* Recover the static chain register. */ -+ if (regs_ever_live [3] == 0) -+ { -+ insn = gen_rtx_REG (SImode, 3); -+ insn = gen_rtx_SET (SImode, ip_rtx, insn); -+ insn = emit_insn (insn); -+ RTX_FRAME_RELATED_P (insn) = 1; -+ } -+ else /* if (current_function_pretend_args_size == 0) */ -+ { -+ insn = gen_rtx_PLUS (SImode, hard_frame_pointer_rtx, GEN_INT (4)); -+ insn = gen_rtx_MEM (SImode, insn); -+ insn = gen_rtx_SET (SImode, ip_rtx, insn); -+ insn = emit_insn (insn); -+ RTX_FRAME_RELATED_P (insn) = 1; -+ } -+ } -+ } - - if (amount != const0_rtx) - { -diff -urN gcc-2.95.3-orig/gcc/config/arm/arm.h gcc-2.95.3/gcc/config/arm/arm.h ---- gcc-2.95.3-orig/gcc/config/arm/arm.h Thu Jan 25 15:03:26 2001 -+++ gcc-2.95.3/gcc/config/arm/arm.h Fri Jul 20 19:39:11 2001 -@@ -601,14 +601,20 @@ - (TREE_CODE (EXP) == STRING_CST \ - && (ALIGN) < BITS_PER_WORD ? BITS_PER_WORD : (ALIGN)) - -+#ifndef STRUCTURE_SIZE_BOUNDARY - /* Every structures size must be a multiple of 32 bits. */ - /* This is for compatibility with ARMCC. ARM SDT Reference Manual - (ARM DUI 0020D) page 2-20 says "Structures are aligned on word - boundaries". */ --#ifndef STRUCTURE_SIZE_BOUNDARY --#define STRUCTURE_SIZE_BOUNDARY 32 -+/* Setting this to 32 produces more efficient code, but the value set in previous -+ versions of this toolchain was 8, which produces more compact structures. The -+ command line option -mstructure_size_boundary= can be used to change this -+ value. */ -+#define STRUCTURE_SIZE_BOUNDARY arm_structure_size_boundary - #endif - -+extern int arm_structure_size_boundary; -+ - /* Used when parsing command line option -mstructure_size_boundary. */ - extern const char * structure_size_string; - -@@ -768,6 +774,9 @@ - /* Specify the registers used for certain standard purposes. - The values of these macros are register numbers. */ - -+/* Register which holds return address from a subroutine call. */ -+#define LR_REGNUM 14 -+ - /* Define this if the program counter is overloaded on a register. */ - #define PC_REGNUM 15 - -@@ -777,6 +786,9 @@ - /* Base register for access to local variables of the function. */ - #define FRAME_POINTER_REGNUM 25 - -+/* Scratch register - used in all kinds of places, eg trampolines. */ -+#define IP_REGNUM 12 -+ - /* Define this to be where the real frame pointer is if it is not possible to - work out the offset between the frame pointer and the automatic variables - until after register allocation has taken place. FRAME_POINTER_REGNUM -@@ -798,7 +810,7 @@ - /* The native (Norcroft) Pascal compiler for the ARM passes the static chain - as an invisible last argument (possible since varargs don't exist in - Pascal), so the following is not true. */ --#define STATIC_CHAIN_REGNUM 8 -+#define STATIC_CHAIN_REGNUM 12 - - /* Register in which address to store a structure value - is passed to a function. */ -@@ -1248,7 +1260,12 @@ - { \ - int volatile_func = arm_volatile_func (); \ - if ((FROM) == ARG_POINTER_REGNUM && (TO) == HARD_FRAME_POINTER_REGNUM)\ -- (OFFSET) = 0; \ -+ { \ -+ if (! current_function_needs_context || ! frame_pointer_needed) \ -+ (OFFSET) = 0; \ -+ else \ -+ (OFFSET) = 4; \ -+ } \ - else if ((FROM) == FRAME_POINTER_REGNUM \ - && (TO) == STACK_POINTER_REGNUM) \ - (OFFSET) = (current_function_outgoing_args_size \ -@@ -1379,8 +1396,10 @@ - - On the ARM, allow any integer (invalid ones are removed later by insn - patterns), nice doubles and symbol_refs which refer to the function's -- constant pool XXX. */ --#define LEGITIMATE_CONSTANT_P(X) (! label_mentioned_p (X)) -+ constant pool XXX. -+ -+ When generating PIC code, allow anything. */ -+#define LEGITIMATE_CONSTANT_P(X) (flag_pic || ! label_mentioned_p (X)) - - /* Symbols in the text segment can be accessed without indirecting via the - constant pool; it may take an extra binary operation, but this is still -@@ -1496,9 +1515,8 @@ - && INTVAL (op) <= 31) \ - goto LABEL; \ - } \ -- /* NASTY: Since this limits the addressing of unsigned byte loads */ \ - range = ((MODE) == HImode || (MODE) == QImode) \ -- ? (arm_arch4 ? 256 : 4095) : 4096; \ -+ ? (((MODE) == HImode && arm_arch4) ? 256 : 4095) : 4096; \ - if (code == CONST_INT && INTVAL (INDEX) < range \ - && INTVAL (INDEX) > -range) \ - goto LABEL; \ -@@ -1812,14 +1830,15 @@ - data addresses in memory. */ - #define PIC_OFFSET_TABLE_REGNUM arm_pic_register - --#define FINALIZE_PIC arm_finalize_pic () -+#define FINALIZE_PIC arm_finalize_pic (1) - --/* We can't directly access anything that contains a symbol, -+/* We can't directly access anything that contains a symbol or label, - nor can we indirect via the constant pool. */ - #define LEGITIMATE_PIC_OPERAND_P(X) \ -- (! symbol_mentioned_p (X) \ -+ (! symbol_mentioned_p (X) && ! label_mentioned_p (X) \ - && (! CONSTANT_POOL_ADDRESS_P (X) \ -- || ! symbol_mentioned_p (get_pool_constant (X)))) -+ || (! symbol_mentioned_p (get_pool_constant (X))) \ -+ && (! label_mentioned_p (get_pool_constant (X))))) - - /* We need to know when we are making a constant pool; this determines - whether data needs to be in the GOT or can be referenced via a GOT -@@ -2046,17 +2065,9 @@ - else output_addr_const(STREAM, X); \ - } - --/* Handles PIC addr specially */ - #define OUTPUT_INT_ADDR_CONST(STREAM,X) \ - { \ -- if (flag_pic && GET_CODE(X) == CONST && is_pic(X)) \ -- { \ -- output_addr_const(STREAM, XEXP (XEXP (XEXP (X, 0), 0), 0)); \ -- fputs(" - (", STREAM); \ -- output_addr_const(STREAM, XEXP (XEXP (XEXP (X, 0), 1), 0)); \ -- fputs(")", STREAM); \ -- } \ -- else output_addr_const(STREAM, X); \ -+ output_addr_const(STREAM, X); \ - \ - /* Mark symbols as position independent. We only do this in the \ - .text segment, not in the .data segment. */ \ -@@ -2170,8 +2181,7 @@ - int arm_return_in_memory PROTO ((Tree)); - int legitimate_pic_operand_p PROTO ((Rtx)); - Rtx legitimize_pic_address PROTO ((Rtx, Mmode, Rtx)); --int is_pic PROTO ((Rtx)); --void arm_finalize_pic PROTO ((void)); -+void arm_finalize_pic PROTO ((int)); - int arm_rtx_costs RTX_CODE_PROTO ((Rtx, Rcode)); - int arm_adjust_cost PROTO ((Rtx, Rtx, Rtx, int)); - int const_double_rtx_ok_for_fpu PROTO ((Rtx)); -diff -urN gcc-2.95.3-orig/gcc/config/arm/arm.md gcc-2.95.3/gcc/config/arm/arm.md ---- gcc-2.95.3-orig/gcc/config/arm/arm.md Thu Jan 25 15:03:27 2001 -+++ gcc-2.95.3/gcc/config/arm/arm.md Fri Jul 20 19:39:11 2001 -@@ -2629,7 +2629,8 @@ - : preserve_subexpressions_p ())); - DONE; - } -- if (CONSTANT_P (operands[1]) && flag_pic) -+ if ((CONSTANT_P (operands[1]) || symbol_mentioned_p (operands[1]) -+ || label_mentioned_p (operands[1])) && flag_pic) - operands[1] = legitimize_pic_address (operands[1], SImode, - ((reload_in_progress - || reload_completed) -@@ -2721,6 +2722,15 @@ - return \"add%?\\t%0, %|pc, %0\"; - ") - -+(define_expand "builtin_setjmp_receiver" -+ [(label_ref (match_operand 0 "" ""))] -+ "flag_pic" -+ " -+{ -+ arm_finalize_pic (0); -+ DONE; -+}") -+ - ;; If copying one reg to another we can set the condition codes according to - ;; its value. Such a move is common after a return from subroutine and the - ;; result is being tested against zero. -@@ -6184,15 +6194,20 @@ - abort (); - return \"\"; - } -- strcpy (pattern, \"stmfd\\t%m0!, {%1\"); -- for (i = 1; i < XVECLEN (operands[2], 0); i++) -+ if (XVECLEN (operands[2], 0) > 1) - { -- strcat (pattern, \", %|\"); -- strcat (pattern, reg_names[REGNO (XEXP (XVECEXP (operands[2], 0, i), -+ strcpy (pattern, \"stmfd\\t%m0!, {%1\"); -+ for (i = 1; i < XVECLEN (operands[2], 0); i++) -+ { -+ strcat (pattern, \", %|\"); -+ strcat (pattern, reg_names[REGNO (XEXP (XVECEXP (operands[2], 0, i), - 0))]); -+ } -+ strcat (pattern, \"}\"); -+ output_asm_insn (pattern, operands); - } -- strcat (pattern, \"}\"); -- output_asm_insn (pattern, operands); -+ else -+ output_asm_insn (\"str\\t%1, [%m0, #-4]!\", operands); - return \"\"; - }" - [(set_attr "type" "store4")]) -diff -urN gcc-2.95.3-orig/gcc/config/arm/elf.h gcc-2.95.3/gcc/config/arm/elf.h ---- gcc-2.95.3-orig/gcc/config/arm/elf.h Mon May 31 10:21:53 1999 -+++ gcc-2.95.3/gcc/config/arm/elf.h Fri Jul 20 19:39:11 2001 -@@ -167,15 +167,6 @@ - #define MULTILIB_DEFAULTS { "mlittle-endian", "msoft-float", "mapcs-32", "mno-thumb-interwork" } - #endif - --/* Setting this to 32 produces more efficient code, but the value set in previous -- versions of this toolchain was 8, which produces more compact structures. The -- command line option -mstructure_size_boundary= can be used to change this -- value. */ --#undef STRUCTURE_SIZE_BOUNDARY --#define STRUCTURE_SIZE_BOUNDARY arm_structure_size_boundary -- --extern int arm_structure_size_boundary; -- - /* A C expression whose value is nonzero if IDENTIFIER with arguments ARGS - is a valid machine specific attribute for DECL. - The attributes in ATTRIBUTES have previously been assigned to DECL. */ -diff -urN gcc-2.95.3-orig/gcc/config/arm/linux-gas.h gcc-2.95.3/gcc/config/arm/linux-gas.h ---- gcc-2.95.3-orig/gcc/config/arm/linux-gas.h Mon Feb 22 17:47:57 1999 -+++ gcc-2.95.3/gcc/config/arm/linux-gas.h Fri Jul 20 19:39:11 2001 -@@ -1,6 +1,6 @@ - /* Definitions of target machine for GNU compiler. - ARM Linux-based GNU systems version. -- Copyright (C) 1997, 1998, 1999 Free Software Foundation, Inc. -+ Copyright (C) 1997, 1998, 1999, 2000 Free Software Foundation, Inc. - Contributed by Russell King . - - This file is part of GNU CC. -@@ -79,5 +79,7 @@ - register unsigned long _beg __asm ("a1") = (unsigned long) (BEG); \ - register unsigned long _end __asm ("a2") = (unsigned long) (END); \ - register unsigned long _flg __asm ("a3") = 0; \ -- __asm __volatile ("swi 0x9f0002"); \ -+ __asm __volatile ("swi 0x9f0002 @ sys_cacheflush" \ -+ : "=r" (_beg) \ -+ : "0" (_beg), "r" (_end), "r" (_flg)); \ - } -diff -urN gcc-2.95.3-orig/gcc/config/arm/t-linux gcc-2.95.3/gcc/config/arm/t-linux ---- gcc-2.95.3-orig/gcc/config/arm/t-linux Fri Mar 26 16:30:20 1999 -+++ gcc-2.95.3/gcc/config/arm/t-linux Fri Jul 20 20:46:19 2001 -@@ -1,6 +1,6 @@ - # Just for these, we omit the frame pointer since it makes such a big - # difference. It is then pointless adding debugging. --TARGET_LIBGCC2_CFLAGS = -fomit-frame-pointer -fPIC -+TARGET_LIBGCC2_CFLAGS = -fomit-frame-pointer -fPIC - LIBGCC2_DEBUG_CFLAGS = -g0 - - # Don't build enquire -diff -urN gcc-2.95.3-orig/gcc/final.c gcc-2.95.3/gcc/final.c ---- gcc-2.95.3-orig/gcc/final.c Mon Mar 12 13:07:59 2001 -+++ gcc-2.95.3/gcc/final.c Fri Jul 20 19:39:11 2001 -@@ -3652,8 +3652,9 @@ - - output_addr_const (file, XEXP (x, 0)); - fprintf (file, "-"); -- if (GET_CODE (XEXP (x, 1)) == CONST_INT -- && INTVAL (XEXP (x, 1)) < 0) -+ if ((GET_CODE (XEXP (x, 1)) == CONST_INT -+ && INTVAL (XEXP (x, 1)) < 0) -+ || GET_CODE (XEXP (x, 1)) != CONST_INT) - { - fprintf (file, ASM_OPEN_PAREN); - output_addr_const (file, XEXP (x, 1)); -diff -urN gcc-2.95.3-orig/gcc/function.c gcc-2.95.3/gcc/function.c ---- gcc-2.95.3-orig/gcc/function.c Thu Jan 25 15:03:15 2001 -+++ gcc-2.95.3/gcc/function.c Fri Jul 20 19:39:10 2001 -@@ -3053,6 +3053,105 @@ - extracted by usage MEM with narrower mode. */ - static rtx purge_addressof_replacements; - -+/* Return 1 if X and Y are identical-looking rtx's. -+ This is the Lisp function EQUAL for rtx arguments. */ -+ -+int -+rtx_equal_for_addressof_p (x, y) -+ rtx x, y; -+{ -+ register int i; -+ register int j; -+ register enum rtx_code code; -+ register char *fmt; -+ -+ if (x == y) -+ return 1; -+ if (x == 0 || y == 0) -+ return 0; -+ -+ code = GET_CODE (x); -+ /* Rtx's of different codes cannot be equal. */ -+ if (code != GET_CODE (y)) -+ return 0; -+ -+ /* (MULT:SI x y) and (MULT:HI x y) are NOT equivalent. -+ (REG:SI x) and (REG:HI x) are NOT equivalent. -+ But (MEM:SI x) and (MEM:HI x) are equivalent for our purposes. */ -+ -+ if (code != MEM && (GET_MODE (x) != GET_MODE (y))) -+ return 0; -+ -+ /* REG, LABEL_REF, and SYMBOL_REF can be compared nonrecursively. */ -+ -+ if (code == REG) -+ return REGNO (x) == REGNO (y); -+ else if (code == LABEL_REF) -+ return XEXP (x, 0) == XEXP (y, 0); -+ else if (code == SYMBOL_REF) -+ return XSTR (x, 0) == XSTR (y, 0); -+ else if (code == SCRATCH || code == CONST_DOUBLE) -+ return 0; -+ -+ /* Compare the elements. If any pair of corresponding elements -+ fail to match, return 0 for the whole things. */ -+ -+ fmt = GET_RTX_FORMAT (code); -+ for (i = GET_RTX_LENGTH (code) - 1; i >= 0; i--) -+ { -+ switch (fmt[i]) -+ { -+ case 'w': -+ if (XWINT (x, i) != XWINT (y, i)) -+ return 0; -+ break; -+ -+ case 'n': -+ case 'i': -+ if (XINT (x, i) != XINT (y, i)) -+ return 0; -+ break; -+ -+ case 'V': -+ case 'E': -+ /* Two vectors must have the same length. */ -+ if (XVECLEN (x, i) != XVECLEN (y, i)) -+ return 0; -+ -+ /* And the corresponding elements must match. */ -+ for (j = 0; j < XVECLEN (x, i); j++) -+ if (rtx_equal_p (XVECEXP (x, i, j), XVECEXP (y, i, j)) == 0) -+ return 0; -+ break; -+ -+ case 'e': -+ if (rtx_equal_p (XEXP (x, i), XEXP (y, i)) == 0) -+ return 0; -+ break; -+ -+ case 'S': -+ case 's': -+ if (strcmp (XSTR (x, i), XSTR (y, i))) -+ return 0; -+ break; -+ -+ case 'u': -+ /* These are just backpointers, so they don't matter. */ -+ break; -+ -+ case '0': -+ break; -+ -+ /* It is believed that rtx's at this level will never -+ contain anything but integers and other rtx's, -+ except for within LABEL_REFs and SYMBOL_REFs. */ -+ default: -+ abort (); -+ } -+ } -+ return 1; -+} -+ - /* Helper function for purge_addressof. See if the rtx expression at *LOC - in INSN needs to be changed. If FORCE, always put any ADDRESSOFs into - the stack. */ -@@ -3133,7 +3232,7 @@ - for (tem = purge_bitfield_addressof_replacements; - tem != NULL_RTX; - tem = XEXP (XEXP (tem, 1), 1)) -- if (rtx_equal_p (x, XEXP (tem, 0))) -+ if (rtx_equal_for_addressof_p (x, XEXP (tem, 0))) - { - *loc = XEXP (XEXP (tem, 1), 0); - return; -@@ -3143,7 +3242,7 @@ - for (tem = purge_addressof_replacements; - tem != NULL_RTX; - tem = XEXP (XEXP (tem, 1), 1)) -- if (rtx_equal_p (XEXP (x, 0), XEXP (tem, 0))) -+ if (rtx_equal_for_addressof_p (XEXP (x, 0), XEXP (tem, 0))) - { - rtx z = XEXP (XEXP (tem, 1), 0); - -diff -urN gcc-2.95.3-orig/gcc/jump.c gcc-2.95.3/gcc/jump.c ---- gcc-2.95.3-orig/gcc/jump.c Thu Oct 21 08:24:03 1999 -+++ gcc-2.95.3/gcc/jump.c Fri Jul 20 19:39:10 2001 -@@ -115,7 +115,7 @@ - static rtx delete_unreferenced_labels PROTO((rtx)); - static void delete_noop_moves PROTO((rtx)); - static int calculate_can_reach_end PROTO((rtx, int, int)); --static int duplicate_loop_exit_test PROTO((rtx)); -+static int duplicate_loop_exit_test PROTO((rtx, int)); - static void find_cross_jump PROTO((rtx, rtx, int, rtx *, rtx *)); - static void do_cross_jump PROTO((rtx, rtx, rtx)); - static int jump_back_p PROTO((rtx, rtx)); -@@ -338,7 +338,7 @@ - && simplejump_p (temp1)) - { - temp = PREV_INSN (insn); -- if (duplicate_loop_exit_test (insn)) -+ if (duplicate_loop_exit_test (insn, after_regscan)) - { - changed = 1; - next = NEXT_INSN (temp); -@@ -2548,8 +2548,9 @@ - values of regno_first_uid and regno_last_uid. */ - - static int --duplicate_loop_exit_test (loop_start) -+duplicate_loop_exit_test (loop_start, after_regscan) - rtx loop_start; -+ int after_regscan; - { - rtx insn, set, reg, p, link; - rtx copy = 0, first_copy = 0; -@@ -2662,6 +2663,9 @@ - reg_map[REGNO (reg)] = gen_reg_rtx (GET_MODE (reg)); - } - } -+ -+ if (after_regscan) -+ reg_scan_update (exitcode, lastexit, max_reg); - - /* Now copy each insn. */ - for (insn = exitcode; insn != lastexit; insn = NEXT_INSN (insn)) -diff -urN gcc-2.95.3-orig/gcc/varasm.c gcc-2.95.3/gcc/varasm.c ---- gcc-2.95.3-orig/gcc/varasm.c Mon Feb 19 15:02:02 2001 -+++ gcc-2.95.3/gcc/varasm.c Fri Jul 20 19:39:11 2001 -@@ -3286,7 +3286,10 @@ - value->un.addr.offset = - INTVAL (XEXP (x, 1)); - } - else -- abort (); -+ { -+ value->un.addr.base = x; -+ value->un.addr.offset = 0; -+ } - break; - - default: diff --git a/patches/gcc/2.95.3/110-backport-config.gcc-1.4.patch b/patches/gcc/2.95.3/110-backport-config.gcc-1.4.patch deleted file mode 100644 index 141de0c..0000000 --- a/patches/gcc/2.95.3/110-backport-config.gcc-1.4.patch +++ /dev/null @@ -1,35 +0,0 @@ -# Taken from http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/config.gcc.diff?r1=1.3&r2=1.4 -# Should fix error -# Configuration powerpc-host_apple-darwin7.3.0 not supported -# when configuring gcc-2.95 on Mac OS X for i686 target -# Also create xm-darwin.h, seems to be required, else we get the error -# In file included from .../gcc-2.95.3/gcc/gencheck.c:21: -# hconfig.h:11:30: rs6000/xm-darwin.h: No such file or directory -# make[1]: *** [gencheck.o] Error 1 - - ---- gcc-2.95.3/gcc/configure.old 2004-03-24 12:17:44.000000000 -0800 -+++ gcc-2.95.3/gcc/configure 2004-03-24 17:14:38.000000000 -0800 -@@ -5079,6 +5079,10 @@ - tmake_file=rs6000/t-beos - xmake_file=rs6000/x-beos - ;; -+ powerpc-*-darwin*) -+ xm_file="rs6000/xm-rs6000.h rs6000/xm-darwin.h" -+ xmake_file=rs6000/x-darwin -+ ;; - powerpc-*-sysv* | powerpc-*-elf*) - tm_file=rs6000/sysv4.h - xm_file="xm-siglist.h rs6000/xm-sysv4.h" ---- /dev/null 2003-01-30 02:24:37.000000000 -0800 -+++ gcc-3.0.4/gcc/config/rs6000/xm-darwin.h 2000-11-20 19:02:09.000000000 -0800 -@@ -0,0 +1,9 @@ -+/* Undo the USG definition in xm-rs6000.h, Darwin is a BSD flavor. */ -+ -+#undef USG -+ -+/* Override the usual setting, since Apple's GCC has lame bugs and -+ can't handle the initializers. Someday the bugs will be fixed and -+ we can get rid of this silliness. */ -+ -+#define HAVE_DESIGNATED_INITIALIZERS 0 diff --git a/patches/gcc/2.95.3/120-backport-config.gcc-1.92.patch b/patches/gcc/2.95.3/120-backport-config.gcc-1.92.patch deleted file mode 100644 index fc55681..0000000 --- a/patches/gcc/2.95.3/120-backport-config.gcc-1.92.patch +++ /dev/null @@ -1,39 +0,0 @@ -# Taken from http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/config.gcc.diff?r1=1.91&r2=1.92 -# Should fix error -# Configuration x86_64-host_unknown-linux-gnu not supported -# when configuring gcc-2.95 on x86_64 build for i686 target -# It's a bit silly, since tm_file refers to files that don't exist, -# but as long as x86_64 is just the build machine, that doesn't matter. - ---- gcc-2.95.3/gcc/configure.old 2004-03-24 12:17:44.000000000 -0800 -+++ gcc-2.95.3/gcc/configure 2004-03-24 12:19:30.000000000 -0800 -@@ -2929,6 +2929,9 @@ - i[34567]86-*-*) - cpu_type=i386 - ;; -+ x86_64-*-*) -+ cpu_type=i386 -+ ;; - hppa*-*-*) - cpu_type=pa - ;; -@@ -3643,6 +3646,19 @@ - thread_file='posix' - fi - ;; -+ x86_64-*-linux*) -+ xmake_file=x-linux -+ tm_file="i386/biarch64.h i386/i386.h i386/att.h linux.h i386/x86-64.h \ -+ i386/linux64.h" -+ tmake_file="t-slibgcc-elf-ver t-linux i386/t-crtstuff" -+ extra_parts="crtbegin.o crtbeginS.o crtend.o crtendS.o" -+ gnu_ld=yes -+ float_format=i386 -+ if test x$enable_threads = xyes; then -+ thread_file='posix' -+ fi -+ ;; -+ - i[34567]86-*-gnu*) - float_format=i386 - ;; diff --git a/patches/gcc/2.95.3/130-config.sub.patch b/patches/gcc/2.95.3/130-config.sub.patch deleted file mode 100644 index c8189b5..0000000 --- a/patches/gcc/2.95.3/130-config.sub.patch +++ /dev/null @@ -1,1257 +0,0 @@ -# Backport from gcc-3.3.3 -# Fixes errors like -# Invalid configuration `x86_64-host_unknown-linux-gnu': machine `x86_64-host_unknown' not recognized -# Unrecognized host system name x86_64-host_unknown-linux-gnu. -# when configuring on chip types or operating systems like x86_64 or Darwin -# which are newer than gcc-2.95 - ---- gcc-2.95.3/config.sub.old 1999-08-04 01:09:26.000000000 -0700 -+++ gcc-2.95.3/config.sub 2004-03-24 11:28:24.000000000 -0800 -@@ -1,6 +1,10 @@ - #! /bin/sh --# Configuration validation subroutine script, version 1.1. --# Copyright (C) 1991, 92-97, 1998, 1999 Free Software Foundation, Inc. -+# Configuration validation subroutine script. -+# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, -+# 2000, 2001, 2002, 2003 Free Software Foundation, Inc. -+ -+timestamp='2003-01-28' -+ - # This file is (in principle) common to ALL GNU software. - # The presence of a machine in this file suggests that SOME GNU software - # can handle that machine. It does not imply ALL GNU software can. -@@ -25,6 +29,9 @@ - # configuration script generated by Autoconf, you may include it under - # the same distribution terms that you use for the rest of that program. - -+# Please send patches to . Submit a context -+# diff and a properly formatted ChangeLog entry. -+# - # Configuration subroutine to validate and canonicalize a configuration type. - # Supply the specified configuration type as an argument. - # If it is invalid, we print an error message on stderr and exit with code 1. -@@ -45,30 +52,73 @@ - # CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM - # It is wrong to echo any other type of specification. - --if [ x$1 = x ] --then -- echo Configuration name missing. 1>&2 -- echo "Usage: $0 CPU-MFR-OPSYS" 1>&2 -- echo "or $0 ALIAS" 1>&2 -- echo where ALIAS is a recognized configuration type. 1>&2 -- exit 1 --fi -+me=`echo "$0" | sed -e 's,.*/,,'` - --# First pass through any local machine types. --case $1 in -- *local*) -- echo $1 -- exit 0 -- ;; -- *) -- ;; -+usage="\ -+Usage: $0 [OPTION] CPU-MFR-OPSYS -+ $0 [OPTION] ALIAS -+ -+Canonicalize a configuration name. -+ -+Operation modes: -+ -h, --help print this help, then exit -+ -t, --time-stamp print date of last modification, then exit -+ -v, --version print version number, then exit -+ -+Report bugs and patches to ." -+ -+version="\ -+GNU config.sub ($timestamp) -+ -+Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 -+Free Software Foundation, Inc. -+ -+This is free software; see the source for copying conditions. There is NO -+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." -+ -+help=" -+Try \`$me --help' for more information." -+ -+# Parse command line -+while test $# -gt 0 ; do -+ case $1 in -+ --time-stamp | --time* | -t ) -+ echo "$timestamp" ; exit 0 ;; -+ --version | -v ) -+ echo "$version" ; exit 0 ;; -+ --help | --h* | -h ) -+ echo "$usage"; exit 0 ;; -+ -- ) # Stop option processing -+ shift; break ;; -+ - ) # Use stdin as input. -+ break ;; -+ -* ) -+ echo "$me: invalid option $1$help" -+ exit 1 ;; -+ -+ *local*) -+ # First pass through any local machine types. -+ echo $1 -+ exit 0;; -+ -+ * ) -+ break ;; -+ esac -+done -+ -+case $# in -+ 0) echo "$me: missing argument$help" >&2 -+ exit 1;; -+ 1) ;; -+ *) echo "$me: too many arguments$help" >&2 -+ exit 1;; - esac - - # Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any). - # Here we must recognize all the valid KERNEL-OS combinations. - maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` - case $maybe_os in -- linux-gnu*) -+ nto-qnx* | linux-gnu* | freebsd*-gnu* | netbsd*-gnu* | storm-chaos* | os2-emx* | rtmk-nova*) - os=-$maybe_os - basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` - ;; -@@ -94,20 +144,28 @@ - -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\ - -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \ - -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \ -- -apple) -+ -apple | -axis) - os= - basic_machine=$1 - ;; -- -sim | -cisco | -oki | -wec | -winbond ) # EGCS LOCAL -+ -sim | -cisco | -oki | -wec | -winbond) - os= - basic_machine=$1 - ;; -- -scout) # EGCS LOCAL -+ -scout) - ;; -- -wrs) # EGCS LOCAL -+ -wrs) - os=-vxworks - basic_machine=$1 - ;; -+ -chorusos*) -+ os=-chorusos -+ basic_machine=$1 -+ ;; -+ -chorusrdb) -+ os=-chorusrdb -+ basic_machine=$1 -+ ;; - -hiux*) - os=-hiuxwe2 - ;; -@@ -156,49 +214,72 @@ - -psos*) - os=-psos - ;; -+ -mint | -mint[0-9]*) -+ basic_machine=m68k-atari -+ os=-mint -+ ;; - esac - - # Decode aliases for certain CPU-COMPANY combinations. - case $basic_machine in - # Recognize the basic CPU types without company name. - # Some are omitted here because they have special meanings below. -- tahoe | i860 | m32r | m68k | m68000 | m88k | ns32k | arc | arm \ -- | arme[lb] | pyramid | mn10200 | mn10300 \ -- | tron | a29k | 580 | i960 | h8300 \ -- | hppa | hppa1.0 | hppa1.1 | hppa2.0 | hppa2.0w | hppa2.0n \ -- | alpha | alphaev5 | alphaev56 | alphapca56 | alphaev6 \ -- | we32k | ns16k | clipper | i370 | sh | powerpc | powerpcle \ -- | 1750a | dsp16xx | pdp11 \ -- | mips64 | mipsel | mips64el | mips64orion | mips64orionel \ -- | mipstx39 | mipstx39el \ -- | sparc | sparclet | sparclite | sparc64 | sparcv9 | v850 | c4x) -- basic_machine=$basic_machine-unknown -- ;; -- m88110 | m680[012346]0 | m683?2 | m68360 | m5200 | z8k | v70 \ -- | h8500 | w65) # EGCS LOCAL -- ;; -- thumb) -- basic_machine=$basic_machine-unknown -- ;; -- mips64vr4300 | mips64vr4300el) # EGCS LOCAL jsmith/vr4300 -+ 1750a | 580 \ -+ | a29k \ -+ | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \ -+ | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \ -+ | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr \ -+ | clipper \ -+ | d10v | d30v | dlx | dsp16xx \ -+ | fr30 | frv \ -+ | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ -+ | i370 | i860 | i960 | ia64 \ -+ | ip2k \ -+ | m32r | m68000 | m68k | m88k | mcore \ -+ | mips | mipsbe | mipseb | mipsel | mipsle \ -+ | mips16 \ -+ | mips64 | mips64el \ -+ | mips64vr | mips64vrel \ -+ | mips64orion | mips64orionel \ -+ | mips64vr4100 | mips64vr4100el \ -+ | mips64vr4300 | mips64vr4300el \ -+ | mips64vr5000 | mips64vr5000el \ -+ | mipsisa32 | mipsisa32el \ -+ | mipsisa32r2 | mipsisa32r2el \ -+ | mipsisa64 | mipsisa64el \ -+ | mipsisa64sb1 | mipsisa64sb1el \ -+ | mipsisa64sr71k | mipsisa64sr71kel \ -+ | mipstx39 | mipstx39el \ -+ | mn10200 | mn10300 \ -+ | msp430 \ -+ | ns16k | ns32k \ -+ | openrisc | or32 \ -+ | pdp10 | pdp11 | pj | pjl \ -+ | powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \ -+ | pyramid \ -+ | sh | sh[1234] | sh[23]e | sh[34]eb | shbe | shle | sh[1234]le | sh3ele \ -+ | sh64 | sh64le \ -+ | sparc | sparc64 | sparc86x | sparclet | sparclite | sparcv9 | sparcv9b \ -+ | strongarm \ -+ | tahoe | thumb | tic80 | tron \ -+ | v850 | v850e \ -+ | we32k \ -+ | x86 | xscale | xstormy16 | xtensa \ -+ | z8k) - basic_machine=$basic_machine-unknown - ;; -- mips64vr4100 | mips64vr4100el) # EGCS LOCAL jsmith/vr4100 -- basic_machine=$basic_machine-unknown -- ;; -- mips64vr5000 | mips64vr5000el) # EGCS LOCAL ian/vr5000 -- basic_machine=$basic_machine-unknown -- ;; -- mips16) -+ m6811 | m68hc11 | m6812 | m68hc12) -+ # Motorola 68HC11/12. - basic_machine=$basic_machine-unknown -+ os=-none - ;; -- d10v) -- basic_machine=$basic_machine-unknown -+ m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k) - ;; -+ - # We use `pc' rather than `unknown' - # because (1) that's what they normally are, and - # (2) the word "unknown" tends to confuse beginning users. -- i[34567]86) -+ i*86 | x86_64) - basic_machine=$basic_machine-pc - ;; - # Object if more than one company name word. -@@ -207,44 +288,62 @@ - exit 1 - ;; - # Recognize the basic CPU types with company name. -- vax-* | tahoe-* | i[34567]86-* | i860-* | m32r-* | m68k-* | m68000-* \ -- | m88k-* | sparc-* | ns32k-* | fx80-* | arc-* | arm-* | c[123]* \ -- | mips-* | pyramid-* | tron-* | a29k-* | romp-* | rs6000-* \ -- | power-* | none-* | 580-* | cray2-* | h8300-* | i960-* \ -- | xmp-* | ymp-* \ -- | hppa-* | hppa1.0-* | hppa1.1-* \ -- | hppa2.0-* | hppa2.0w-* | hppa2.0n-* \ -- | alpha-* | alphaev5-* | alphaev56-* | alphapca56-* \ -- | alphaev6-* | we32k-* | cydra-* | ns16k-* | pn-* | np1-* \ -- | xps100-* | clipper-* | orion-* \ -- | sparclite-* | pdp11-* | sh-* | powerpc-* | powerpcle-* \ -- | sparc64-* | sparcv9-* | sparc86x-* | mips64-* | mipsel-* \ -- | mips64el-* | mips64orion-* | mips64orionel-* \ -- | mipstx39-* | mipstx39el-* \ -- | f301-* | arm*-*) -- ;; -- m88110-* | m680[01234]0-* | m683?2-* | m68360-* | z8k-* | h8500-* | d10v-*) # EGCS LOCAL -- ;; -- thumb-*) # EGCS LOCAL angela/thumb -- ;; -- v850-*) # EGCS LOCAL -- ;; -- d30v-*) # EGCS LOCAL -- ;; -- mips64vr4300-* | mips64vr4300el-*) # EGCS LOCAL jsmith/vr4300 -- ;; -- mips64vr4100-* | mips64vr4100el-*) # EGCS LOCAL jsmith/vr4100 -- ;; -- mips16-*) # EGCS LOCAL krk/mips16 -- ;; -- tic30-*) # EGCS LOCAL ian/tic30 -- ;; -- c30-*) # EGCS LOCAL ian/tic30 -- basic_machine=tic30-unknown -+ 580-* \ -+ | a29k-* \ -+ | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \ -+ | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \ -+ | alphapca5[67]-* | alpha64pca5[67]-* | arc-* \ -+ | arm-* | armbe-* | armle-* | armeb-* | armv*-* \ -+ | avr-* \ -+ | bs2000-* \ -+ | c[123]* | c30-* | [cjt]90-* | c4x-* | c54x-* \ -+ | clipper-* | cydra-* \ -+ | d10v-* | d30v-* | dlx-* \ -+ | elxsi-* \ -+ | f30[01]-* | f700-* | fr30-* | frv-* | fx80-* \ -+ | h8300-* | h8500-* \ -+ | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ -+ | i*86-* | i860-* | i960-* | ia64-* \ -+ | ip2k-* \ -+ | m32r-* \ -+ | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \ -+ | m88110-* | m88k-* | mcore-* \ -+ | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \ -+ | mips16-* \ -+ | mips64-* | mips64el-* \ -+ | mips64vr-* | mips64vrel-* \ -+ | mips64orion-* | mips64orionel-* \ -+ | mips64vr4100-* | mips64vr4100el-* \ -+ | mips64vr4300-* | mips64vr4300el-* \ -+ | mips64vr5000-* | mips64vr5000el-* \ -+ | mipsisa32-* | mipsisa32el-* \ -+ | mipsisa32r2-* | mipsisa32r2el-* \ -+ | mipsisa64-* | mipsisa64el-* \ -+ | mipsisa64sb1-* | mipsisa64sb1el-* \ -+ | mipsisa64sr71k-* | mipsisa64sr71kel-* \ -+ | mipstx39-* | mipstx39el-* \ -+ | msp430-* \ -+ | none-* | np1-* | nv1-* | ns16k-* | ns32k-* \ -+ | orion-* \ -+ | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ -+ | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \ -+ | pyramid-* \ -+ | romp-* | rs6000-* \ -+ | sh-* | sh[1234]-* | sh[23]e-* | sh[34]eb-* | shbe-* \ -+ | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \ -+ | sparc-* | sparc64-* | sparc86x-* | sparclet-* | sparclite-* \ -+ | sparcv9-* | sparcv9b-* | strongarm-* | sv1-* | sx?-* \ -+ | tahoe-* | thumb-* | tic30-* | tic4x-* | tic54x-* | tic80-* | tron-* \ -+ | v850-* | v850e-* | vax-* \ -+ | we32k-* \ -+ | x86-* | x86_64-* | xps100-* | xscale-* | xstormy16-* \ -+ | xtensa-* \ -+ | ymp-* \ -+ | z8k-*) - ;; - # Recognize the various machine names and aliases which stand - # for a CPU type and a company and sometimes even an OS. -- 386bsd) # EGCS LOCAL -+ 386bsd) - basic_machine=i386-unknown - os=-bsd - ;; -@@ -254,11 +353,11 @@ - 3b*) - basic_machine=we32k-att - ;; -- a29khif) # EGCS LOCAL -+ a29khif) - basic_machine=a29k-amd - os=-udi - ;; -- adobe68k) # EGCS LOCAL -+ adobe68k) - basic_machine=m68010-adobe - os=-scout - ;; -@@ -277,21 +376,21 @@ - os=-sysv - ;; - amiga | amiga-*) -- basic_machine=m68k-cbm -+ basic_machine=m68k-unknown - ;; - amigaos | amigados) -- basic_machine=m68k-cbm -+ basic_machine=m68k-unknown - os=-amigaos - ;; - amigaunix | amix) -- basic_machine=m68k-cbm -+ basic_machine=m68k-unknown - os=-sysv4 - ;; - apollo68) - basic_machine=m68k-apollo - os=-sysv - ;; -- apollo68bsd) # EGCS LOCAL -+ apollo68bsd) - basic_machine=m68k-apollo - os=-bsd - ;; -@@ -303,6 +402,10 @@ - basic_machine=ns32k-sequent - os=-dynix - ;; -+ c90) -+ basic_machine=c90-cray -+ os=-unicos -+ ;; - convex-c1) - basic_machine=c1-convex - os=-bsd -@@ -323,27 +426,30 @@ - basic_machine=c38-convex - os=-bsd - ;; -- cray | ymp) -- basic_machine=ymp-cray -- os=-unicos -- ;; -- cray2) -- basic_machine=cray2-cray -- os=-unicos -- ;; -- [ctj]90-cray) -- basic_machine=c90-cray -+ cray | j90) -+ basic_machine=j90-cray - os=-unicos - ;; - crds | unos) - basic_machine=m68k-crds - ;; -+ cris | cris-* | etrax*) -+ basic_machine=cris-axis -+ ;; - da30 | da30-*) - basic_machine=m68k-da30 - ;; - decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn) - basic_machine=mips-dec - ;; -+ decsystem10* | dec10*) -+ basic_machine=pdp10-dec -+ os=-tops10 -+ ;; -+ decsystem20* | dec20*) -+ basic_machine=pdp10-dec -+ os=-tops20 -+ ;; - delta | 3300 | motorola-3300 | motorola-delta \ - | 3300-motorola | delta-motorola) - basic_machine=m68k-motorola -@@ -371,7 +477,7 @@ - encore | umax | mmax) - basic_machine=ns32k-encore - ;; -- es1800 | OSE68k | ose68k | ose | OSE) # EGCS LOCAL -+ es1800 | OSE68k | ose68k | ose | OSE) - basic_machine=m68k-ericsson - os=-ose - ;; -@@ -385,6 +491,10 @@ - basic_machine=tron-gmicro - os=-sysv - ;; -+ go32) -+ basic_machine=i386-pc -+ os=-go32 -+ ;; - h3050r* | hiux*) - basic_machine=hppa1.1-hitachi - os=-hiuxwe2 -@@ -393,11 +503,11 @@ - basic_machine=h8300-hitachi - os=-hms - ;; -- h8300xray) # EGCS LOCAL -+ h8300xray) - basic_machine=h8300-hitachi - os=-xray - ;; -- h8500hms) # EGCS LOCAL -+ h8500hms) - basic_machine=h8500-hitachi - os=-hms - ;; -@@ -416,22 +526,6 @@ - basic_machine=m68k-hp - os=-hpux - ;; -- w89k-*) # EGCS LOCAL -- basic_machine=hppa1.1-winbond -- os=-proelf -- ;; -- op50n-*) # EGCS LOCAL -- basic_machine=hppa1.1-oki -- os=-proelf -- ;; -- op60c-*) # EGCS LOCAL -- basic_machine=hppa1.1-oki -- os=-proelf -- ;; -- hppro) # EGCS LOCAL -- basic_machine=hppa1.1-hp -- os=-proelf -- ;; - hp3k9[0-9][0-9] | hp9[0-9][0-9]) - basic_machine=hppa1.0-hp - ;; -@@ -441,22 +535,21 @@ - hp9k3[2-9][0-9]) - basic_machine=m68k-hp - ;; -- hp9k6[0-9][0-9] | hp6[0-9][0-9] ) -+ hp9k6[0-9][0-9] | hp6[0-9][0-9]) - basic_machine=hppa1.0-hp - ;; -- hp9k7[0-79][0-9] | hp7[0-79][0-9] ) -+ hp9k7[0-79][0-9] | hp7[0-79][0-9]) - basic_machine=hppa1.1-hp - ;; -- hp9k78[0-9] | hp78[0-9] ) -+ hp9k78[0-9] | hp78[0-9]) - # FIXME: really hppa2.0-hp - basic_machine=hppa1.1-hp - ;; -- hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | \ -- hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893 ) -+ hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) - # FIXME: really hppa2.0-hp - basic_machine=hppa1.1-hp - ;; -- hp9k8[0-9][13679] | hp8[0-9][13679] ) -+ hp9k8[0-9][13679] | hp8[0-9][13679]) - basic_machine=hppa1.1-hp - ;; - hp9k8[0-9][0-9] | hp8[0-9][0-9]) -@@ -465,47 +558,42 @@ - hppa-next) - os=-nextstep3 - ;; -- hppaosf) # EGCS LOCAL -+ hppaosf) - basic_machine=hppa1.1-hp - os=-osf - ;; -+ hppro) -+ basic_machine=hppa1.1-hp -+ os=-proelf -+ ;; - i370-ibm* | ibm*) - basic_machine=i370-ibm -- os=-mvs - ;; - # I'm not sure what "Sysv32" means. Should this be sysv3.2? -- i[34567]86v32) -+ i*86v32) - basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` - os=-sysv32 - ;; -- i[34567]86v4*) -+ i*86v4*) - basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` - os=-sysv4 - ;; -- i[34567]86v) -+ i*86v) - basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` - os=-sysv - ;; -- i[34567]86sol2) -+ i*86sol2) - basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` - os=-solaris2 - ;; -- i386mach) # EGCS LOCAL -+ i386mach) - basic_machine=i386-mach - os=-mach - ;; -- i386-vsta | vsta) # EGCS LOCAL -+ i386-vsta | vsta) - basic_machine=i386-unknown - os=-vsta - ;; -- i386-go32 | go32) # EGCS LOCAL -- basic_machine=i386-unknown -- os=-go32 -- ;; -- i386-mingw32 | mingw32) -- basic_machine=i386-unknown -- os=-mingw32 -- ;; - iris | iris4d) - basic_machine=mips-sgi - case $os in -@@ -531,16 +619,16 @@ - basic_machine=ns32k-utek - os=-sysv - ;; -+ mingw32) -+ basic_machine=i386-pc -+ os=-mingw32 -+ ;; - miniframe) - basic_machine=m68000-convergent - ;; -- mipsel*-linux*) -- basic_machine=mipsel-unknown -- os=-linux-gnu -- ;; -- mips*-linux*) -- basic_machine=mips-unknown -- os=-linux-gnu -+ *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*) -+ basic_machine=m68k-atari -+ os=-mint - ;; - mips3*-*) - basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'` -@@ -548,24 +636,36 @@ - mips3*) - basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown - ;; -- monitor) # EGCS LOCAL -+ mmix*) -+ basic_machine=mmix-knuth -+ os=-mmixware -+ ;; -+ monitor) - basic_machine=m68k-rom68k - os=-coff - ;; -- msdos) # EGCS LOCAL -- basic_machine=i386-unknown -+ morphos) -+ basic_machine=powerpc-unknown -+ os=-morphos -+ ;; -+ msdos) -+ basic_machine=i386-pc - os=-msdos - ;; -+ mvs) -+ basic_machine=i370-ibm -+ os=-mvs -+ ;; - ncr3000) - basic_machine=i486-ncr - os=-sysv4 - ;; - netbsd386) -- basic_machine=i386-unknown # EGCS LOCAL -+ basic_machine=i386-unknown - os=-netbsd - ;; - netwinder) -- basic_machine=armv4l-corel -+ basic_machine=armv4l-rebel - os=-linux - ;; - news | news700 | news800 | news900) -@@ -580,7 +680,7 @@ - basic_machine=mips-sony - os=-newsos - ;; -- necv70) # EGCS LOCAL -+ necv70) - basic_machine=v70-nec - os=-sysv - ;; -@@ -609,18 +709,37 @@ - basic_machine=i960-intel - os=-nindy - ;; -- mon960) # EGCS LOCAL -+ mon960) - basic_machine=i960-intel - os=-mon960 - ;; -+ nonstopux) -+ basic_machine=mips-compaq -+ os=-nonstopux -+ ;; - np1) - basic_machine=np1-gould - ;; -- OSE68000 | ose68000) # EGCS LOCAL -+ nv1) -+ basic_machine=nv1-cray -+ os=-unicosmp -+ ;; -+ nsr-tandem) -+ basic_machine=nsr-tandem -+ ;; -+ op50n-* | op60c-*) -+ basic_machine=hppa1.1-oki -+ os=-proelf -+ ;; -+ or32 | or32-*) -+ basic_machine=or32-unknown -+ os=-coff -+ ;; -+ OSE68000 | ose68000) - basic_machine=m68000-ericsson - os=-ose - ;; -- os68k) # EGCS LOCAL -+ os68k) - basic_machine=m68k-none - os=-os68k - ;; -@@ -638,46 +757,60 @@ - pbb) - basic_machine=m68k-tti - ;; -- pc532 | pc532-*) -+ pc532 | pc532-*) - basic_machine=ns32k-pc532 - ;; -- pentium | p5 | k5 | k6 | nexen) -+ pentium | p5 | k5 | k6 | nexgen | viac3) - basic_machine=i586-pc - ;; -- pentiumpro | p6 | 6x86) -+ pentiumpro | p6 | 6x86 | athlon | athlon_*) - basic_machine=i686-pc - ;; - pentiumii | pentium2) -- basic_machine=i786-pc -+ basic_machine=i686-pc - ;; -- pentium-* | p5-* | k5-* | k6-* | nexen-*) -+ pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) - basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; -- pentiumpro-* | p6-* | 6x86-*) -+ pentiumpro-* | p6-* | 6x86-* | athlon-*) - basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - pentiumii-* | pentium2-*) -- basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'` -+ basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - pn) - basic_machine=pn-gould - ;; -- power) basic_machine=rs6000-ibm -+ power) basic_machine=power-ibm - ;; - ppc) basic_machine=powerpc-unknown -- ;; -+ ;; - ppc-*) basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - ppcle | powerpclittle | ppc-le | powerpc-little) - basic_machine=powerpcle-unknown -- ;; -+ ;; - ppcle-* | powerpclittle-*) - basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; -+ ppc64) basic_machine=powerpc64-unknown -+ ;; -+ ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'` -+ ;; -+ ppc64le | powerpc64little | ppc64-le | powerpc64-little) -+ basic_machine=powerpc64le-unknown -+ ;; -+ ppc64le-* | powerpc64little-*) -+ basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'` -+ ;; - ps2) - basic_machine=i386-ibm - ;; -- rom68k) # EGCS LOCAL -+ pw32) -+ basic_machine=i586-unknown -+ os=-pw32 -+ ;; -+ rom68k) - basic_machine=m68k-rom68k - os=-coff - ;; -@@ -687,10 +820,22 @@ - rtpc | rtpc-*) - basic_machine=romp-ibm - ;; -- sa29200) # EGCS LOCAL -+ s390 | s390-*) -+ basic_machine=s390-ibm -+ ;; -+ s390x | s390x-*) -+ basic_machine=s390x-ibm -+ ;; -+ sa29200) - basic_machine=a29k-amd - os=-udi - ;; -+ sb1) -+ basic_machine=mipsisa64sb1-unknown -+ ;; -+ sb1el) -+ basic_machine=mipsisa64sb1el-unknown -+ ;; - sequent) - basic_machine=i386-sequent - ;; -@@ -698,7 +843,7 @@ - basic_machine=sh-hitachi - os=-hms - ;; -- sparclite-wrs) # EGCS LOCAL -+ sparclite-wrs | simso-wrs) - basic_machine=sparclite-wrs - os=-vxworks - ;; -@@ -709,10 +854,10 @@ - spur) - basic_machine=spur-unknown - ;; -- st2000) # EGCS LOCAL -+ st2000) - basic_machine=m68k-tandem - ;; -- stratus) # EGCS LOCAL -+ stratus) - basic_machine=i860-stratus - os=-sysv4 - ;; -@@ -756,16 +901,40 @@ - sun386 | sun386i | roadrunner) - basic_machine=i386-sun - ;; -+ sv1) -+ basic_machine=sv1-cray -+ os=-unicos -+ ;; - symmetry) - basic_machine=i386-sequent - os=-dynix - ;; -+ t3e) -+ basic_machine=alphaev5-cray -+ os=-unicos -+ ;; -+ t90) -+ basic_machine=t90-cray -+ os=-unicos -+ ;; -+ tic4x | c4x*) -+ basic_machine=tic4x-unknown -+ os=-coff -+ ;; -+ tic54x | c54x*) -+ basic_machine=tic54x-unknown -+ os=-coff -+ ;; - tx39) - basic_machine=mipstx39-unknown - ;; - tx39el) - basic_machine=mipstx39el-unknown - ;; -+ toad1) -+ basic_machine=pdp10-xkl -+ os=-tops20 -+ ;; - tower | tower-32) - basic_machine=m68k-ncr - ;; -@@ -777,7 +946,7 @@ - basic_machine=a29k-nyu - os=-sym1 - ;; -- v810 | necv810) # EGCS LOCAL -+ v810 | necv810) - basic_machine=v810-nec - os=-none - ;; -@@ -790,8 +959,8 @@ - os=-vms - ;; - vpp*|vx|vx-*) -- basic_machine=f301-fujitsu -- ;; -+ basic_machine=f301-fujitsu -+ ;; - vxworks960) - basic_machine=i960-wrs - os=-vxworks -@@ -804,18 +973,22 @@ - basic_machine=a29k-wrs - os=-vxworks - ;; -- w65*) # EGCS LOCAL -- basic_machine=w65-wdc -- os=-none -+ w65*) -+ basic_machine=w65-wdc -+ os=-none - ;; -- xmp) -- basic_machine=xmp-cray -- os=-unicos -+ w89k-*) -+ basic_machine=hppa1.1-winbond -+ os=-proelf - ;; -- xps | xps100) -+ xps | xps100) - basic_machine=xps100-honeywell - ;; -- z8k-*-coff) # EGCS LOCAL -+ ymp) -+ basic_machine=ymp-cray -+ os=-unicos -+ ;; -+ z8k-*-coff) - basic_machine=z8k-unknown - os=-sim - ;; -@@ -826,22 +999,15 @@ - - # Here we handle the default manufacturer of certain CPU types. It is in - # some cases the only manufacturer, in others, it is the most popular. -- w89k) # EGCS LOCAL -+ w89k) - basic_machine=hppa1.1-winbond - ;; -- op50n) # EGCS LOCAL -+ op50n) - basic_machine=hppa1.1-oki - ;; -- op60c) # EGCS LOCAL -+ op60c) - basic_machine=hppa1.1-oki - ;; -- mips) -- if [ x$os = x-linux-gnu ]; then -- basic_machine=mips-unknown -- else -- basic_machine=mips-mips -- fi -- ;; - romp) - basic_machine=romp-ibm - ;; -@@ -851,16 +1017,26 @@ - vax) - basic_machine=vax-dec - ;; -+ pdp10) -+ # there are many clones, so DEC is not a safe bet -+ basic_machine=pdp10-unknown -+ ;; - pdp11) - basic_machine=pdp11-dec - ;; - we32k) - basic_machine=we32k-att - ;; -- sparc | sparcv9) -+ sh3 | sh4 | sh[34]eb | sh[1234]le | sh[23]ele) -+ basic_machine=sh-unknown -+ ;; -+ sh64) -+ basic_machine=sh64-unknown -+ ;; -+ sparc | sparcv9 | sparcv9b) - basic_machine=sparc-sun - ;; -- cydra) -+ cydra) - basic_machine=cydra-cydrome - ;; - orion) -@@ -869,16 +1045,15 @@ - orion105) - basic_machine=clipper-highlevel - ;; -- mac | mpw | mac-mpw) # EGCS LOCAL -+ mac | mpw | mac-mpw) - basic_machine=m68k-apple - ;; -- pmac | pmac-mpw) # EGCS LOCAL -+ pmac | pmac-mpw) - basic_machine=powerpc-apple - ;; -- c4x*) -- basic_machine=c4x-none -- os=-coff -- ;; -+ *-unknown) -+ # Make sure to match an already-canonicalized machine name. -+ ;; - *) - echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 - exit 1 -@@ -935,20 +1110,38 @@ - | -lynxos* | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \ - | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ - | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ -+ | -chorusos* | -chorusrdb* \ - | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ - | -mingw32* | -linux-gnu* | -uxpv* | -beos* | -mpeix* | -udk* \ -- | -interix* | -uwin* ) -+ | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \ -+ | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \ -+ | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \ -+ | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \ -+ | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \ -+ | -powermax* | -dnix* | -microbsd*) - # Remember, each alternative MUST END IN *, to match a version number. - ;; -- # EGCS LOCAL -+ -qnx*) -+ case $basic_machine in -+ x86-* | i*86-*) -+ ;; -+ *) -+ os=-nto$os -+ ;; -+ esac -+ ;; -+ -nto-qnx*) -+ ;; -+ -nto*) -+ os=`echo $os | sed -e 's|nto|nto-qnx|'` -+ ;; - -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \ -- | -windows* | -osx | -abug | -netware* | -os9* | -beos* \ -- | -macos* | -mpw* | -magic* | -mon960* | -lnews* ) -+ | -windows* | -osx | -abug | -netware* | -os9* | -beos* \ -+ | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*) - ;; - -mac*) - os=`echo $os | sed -e 's|mac|macos|'` - ;; -- # END EGCS LOCAL - -linux*) - os=`echo $os | sed -e 's|linux|linux-gnu|'` - ;; -@@ -958,6 +1151,12 @@ - -sunos6*) - os=`echo $os | sed -e 's|sunos6|solaris3|'` - ;; -+ -opened*) -+ os=-openedition -+ ;; -+ -wince*) -+ os=-wince -+ ;; - -osfrose*) - os=-osfrose - ;; -@@ -973,14 +1172,23 @@ - -acis*) - os=-aos - ;; -- -386bsd) # EGCS LOCAL -+ -atheos*) -+ os=-atheos -+ ;; -+ -386bsd) - os=-bsd - ;; - -ctix* | -uts*) - os=-sysv - ;; -+ -nova*) -+ os=-rtmk-nova -+ ;; - -ns2 ) -- os=-nextstep2 -+ os=-nextstep2 -+ ;; -+ -nsk*) -+ os=-nsk - ;; - # Preserve the version number of sinix5. - -sinix5.*) -@@ -1007,15 +1215,21 @@ - # This must come after -sysvr4. - -sysv*) - ;; -- -ose*) # EGCS LOCAL -+ -ose*) - os=-ose - ;; -- -es1800*) # EGCS LOCAL -+ -es1800*) - os=-ose - ;; - -xenix) - os=-xenix - ;; -+ -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) -+ os=-mint -+ ;; -+ -aros*) -+ os=-aros -+ ;; - -none) - ;; - *) -@@ -1041,13 +1255,17 @@ - *-acorn) - os=-riscix1.2 - ;; -- arm*-corel) -+ arm*-rebel) - os=-linux - ;; - arm*-semi) - os=-aout - ;; -- pdp11-*) -+ # This must come before the *-dec entry. -+ pdp10-*) -+ os=-tops20 -+ ;; -+ pdp11-*) - os=-none - ;; - *-dec | vax-*) -@@ -1065,15 +1283,18 @@ - # default. - # os=-sunos4 - ;; -- m68*-cisco) # EGCS LOCAL -+ m68*-cisco) - os=-aout - ;; -- mips*-cisco) # EGCS LOCAL -+ mips*-cisco) - os=-elf - ;; -- mips*-*) # EGCS LOCAL -- os=-elf -- ;; -+ mips*-*) -+ os=-elf -+ ;; -+ or32-*) -+ os=-coff -+ ;; - *-tti) # must be before sparc entry or we get the wrong os. - os=-sysv3 - ;; -@@ -1086,13 +1307,13 @@ - *-ibm) - os=-aix - ;; -- *-wec) # EGCS LOCAL -+ *-wec) - os=-proelf - ;; -- *-winbond) # EGCS LOCAL -+ *-winbond) - os=-proelf - ;; -- *-oki) # EGCS LOCAL -+ *-oki) - os=-proelf - ;; - *-hp) -@@ -1137,36 +1358,39 @@ - *-next) - os=-nextstep3 - ;; -- *-gould) -+ *-gould) - os=-sysv - ;; -- *-highlevel) -+ *-highlevel) - os=-bsd - ;; - *-encore) - os=-bsd - ;; -- *-sgi) -+ *-sgi) - os=-irix - ;; -- *-siemens) -+ *-siemens) - os=-sysv4 - ;; - *-masscomp) - os=-rtu - ;; -- f301-fujitsu) -+ f30[01]-fujitsu | f700-fujitsu) - os=-uxpv - ;; -- *-rom68k) # EGCS LOCAL -+ *-rom68k) - os=-coff - ;; -- *-*bug) # EGCS LOCAL -+ *-*bug) - os=-coff - ;; -- *-apple) # EGCS LOCAL -+ *-apple) - os=-macos - ;; -+ *-atari*) -+ os=-mint -+ ;; - *) - os=-none - ;; -@@ -1212,27 +1436,41 @@ - -genix*) - vendor=ns - ;; -- -mvs*) -+ -mvs* | -opened*) - vendor=ibm - ;; - -ptx*) - vendor=sequent - ;; -- -vxsim* | -vxworks*) -+ -vxsim* | -vxworks* | -windiss*) - vendor=wrs - ;; - -aux*) - vendor=apple - ;; -- -hms*) # EGCS LOCAL -+ -hms*) - vendor=hitachi - ;; -- -mpw* | -macos*) # EGCS LOCAL -+ -mpw* | -macos*) - vendor=apple - ;; -+ -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) -+ vendor=atari -+ ;; -+ -vos*) -+ vendor=stratus -+ ;; - esac - basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"` - ;; - esac - - echo $basic_machine$os -+exit 0 -+ -+# Local variables: -+# eval: (add-hook 'write-file-hooks 'time-stamp) -+# time-stamp-start: "timestamp='" -+# time-stamp-format: "%:y-%02m-%02d" -+# time-stamp-end: "'" -+# End: diff --git a/patches/gcc/2.95.3/140-deque-leak-fix.patch b/patches/gcc/2.95.3/140-deque-leak-fix.patch deleted file mode 100644 index 44d2a01..0000000 --- a/patches/gcc/2.95.3/140-deque-leak-fix.patch +++ /dev/null @@ -1,31 +0,0 @@ -[See also http://gcc.gnu.org/ml/libstdc++/2001-11/msg00133.html ] - -Date: Fri, 16 Nov 2001 16:06:22 -0500 -From: Phil Edwards -To: gcc-patches at gcc dot gnu dot org -Subject: [libstdc++ trunk & 3.0] Fix deque memory leak -Message-ID: <20011116160622.A23094@disaster.jaj.com> - - -As discussed on the libstdc++ mailing list. Tested on i686/linux. - - - -2001-11-16 Paolo Carlini - - * include/bits/stl_deque.h (deque::erase()): Fix memory leak. - - -[rediffed against 2.95.3 -- dank] - ---- gcc-2.95.3/libstdc++/stl/stl_deque.h.old 2001-01-01 09:48:22.000000000 -0800 -+++ gcc-2.95.3/libstdc++/stl/stl_deque.h 2006-02-18 15:24:17.000000000 -0800 -@@ -1052,7 +1052,7 @@ - copy_backward(_M_start, __first, __last); - iterator __new_start = _M_start + __n; - destroy(_M_start, __new_start); -- _M_destroy_nodes(__new_start._M_node, _M_start._M_node); -+ _M_destroy_nodes(_M_start._M_node, __new_start._M_node); /* fixed per http://gcc.gnu.org/ml/libstdc++/2001-11/msg00139.html */ - _M_start = __new_start; - } - else { diff --git a/patches/gcc/2.95.3/150-cygwin-020611.patch b/patches/gcc/2.95.3/150-cygwin-020611.patch deleted file mode 100644 index fb2b8da..0000000 --- a/patches/gcc/2.95.3/150-cygwin-020611.patch +++ /dev/null @@ -1,33 +0,0 @@ -[ Building gcc-2.95.3 on cygwin yields a compiler that sticks a .exe - on the end of every executable, even if they're linux executable. - This is highly annoying, and causes glibc build failures that look like this: - mv: `.../bin/makedb.new' and `.../bin/makedb' are the same file - make[2]: *** [.../bin/makedb] Error 1 - make[2]: Leaving directory `.../gcc-2.95.3-glibc-2.1.3/glibc-2.1.3/db2' - - The mainline solves this with http://gcc.gnu.org/ml/gcc-cvs/2001-04/msg00440.html, - but that doesn't apply cleanly to gcc-2.95.3. - - So, I'm using - http://www.uclinux.org/pub/uClinux/uclinux-elf-tools/tools-20030314/gcc-2.95.3-cygwin-020611.patch - This is the only patch in crosstool that *isn't* suitable for the mainline. - I can live with this patch simply because crosstool does not build - compilers that target cygwin or VAX/VMS. - If that ever changes, I might need to try applying the real patch. -] - - - -# -# This patch can be found at http://www.uclinux.org/pub/uClinux/m68k-elf-tools/ -# ---- gcc-2.95.3/gcc/config/i386/xm-cygwin.h 1999-04-22 16:40:56.000000000 +0200 -+++ gcc-2.95.3-cygwin/gcc/config/i386/xm-cygwin.h 2002-06-11 08:23:18.000000000 +0200 -@@ -19,7 +19,6 @@ - the Free Software Foundation, 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ - --#define EXECUTABLE_SUFFIX ".exe" - #define NO_SYS_SIGLIST 1 - - /* We support both "/" and "\" since everybody tests both but we diff --git a/patches/gcc/2.95.3/160-trap-posix.patch b/patches/gcc/2.95.3/160-trap-posix.patch deleted file mode 100644 index 1d18055..0000000 --- a/patches/gcc/2.95.3/160-trap-posix.patch +++ /dev/null @@ -1,44 +0,0 @@ -# -# Submitted-By: Marc Kleine-Budde , 2005-04-20 -# -# Error: -# -# creating libintl.h -# Configuring etc... -# loading cache ../config.cache -# checking for a BSD compatible install... (cached) /usr/bin/install -c -# creating ./config.status -# creating Makefile -# trap: usage: trap [-lp] [[arg] signal_spec ...] -# -# Description: -# -# non-posix conform usage of trap causes bash >= 3.0 to fail -# e.g.: http://sourceware.org/ml/crossgcc/2004-12/msg00132.html -# -# Status: -# -# fixed in gcc >= 3.3.5 -# backport of gcc-3.3.5 fix -# -diff -ruN gcc-2.95.3-orig/configure gcc-2.95.3/configure ---- gcc-2.95.3-orig/configure 1999-04-02 16:17:40.000000000 +0200 -+++ gcc-2.95.3/configure 2005-04-20 18:25:45.030488235 +0200 -@@ -687,7 +687,7 @@ - if test -f skip-this-dir; then - # Perform the same cleanup as the trap handler, minus the "exit 1" of course, - # and reset the trap handler. -- trap 0 -+ trap '' 0 - rm -f Makefile* ${tmpfile}.com ${tmpfile}.tgt ${tmpfile}.hst ${tmpfile}.pos - # Execute the final clean-up actions - ${config_shell} skip-this-dir -@@ -1599,7 +1599,7 @@ - # Perform the same cleanup as the trap handler, minus the "exit 1" of course, - # and reset the trap handler. - rm -f ${tmpfile}.com ${tmpfile}.tgt ${tmpfile}.hst ${tmpfile}.pos --trap 0 -+trap '' 0 - - exit 0 - diff --git a/patches/gcc/2.95.3/170-pr3106.patch b/patches/gcc/2.95.3/170-pr3106.patch deleted file mode 100644 index 0e077ea..0000000 --- a/patches/gcc/2.95.3/170-pr3106.patch +++ /dev/null @@ -1,28 +0,0 @@ -See http://gcc.gnu.org/PR3106 -Backported from gcc-3.0.x - -Fixes error - .../binutils-2.11.2/libiberty/strerror.c:468: error: conflicting types for `sys_nerr' - /usr/include/stdio.h:258: error: previous declaration of `sys_nerr' - make[1]: *** [strerror.o] Error 1 - make: *** [all-libiberty] Error 2 -on Mac OS X. - ---- gcc-2.95.3/libiberty/strerror.c.old 2004-03-24 16:23:19.000000000 -0800 -+++ gcc-2.95.3/libiberty/strerror.c 2004-03-24 16:23:48.000000000 -0800 -@@ -13,6 +13,7 @@ - incompatible with our later declaration, perhaps by using const - attributes. So we hide the declaration in errno.h (if any) using a - macro. */ -+#define sys_nerr sys_nerr__ - #define sys_errlist sys_errlist__ - #endif - -@@ -20,6 +21,7 @@ - #include - - #ifdef HAVE_SYS_ERRLIST -+#undef sys_nerr - #undef sys_errlist - #endif - diff --git a/patches/gcc/2.95.3/180-threads_snafu.patch b/patches/gcc/2.95.3/180-threads_snafu.patch deleted file mode 100644 index 2c5297e..0000000 --- a/patches/gcc/2.95.3/180-threads_snafu.patch +++ /dev/null @@ -1,28 +0,0 @@ -This fixes the error - -In file included from gthr-default.h:1, - from /build/arm-unknown-linux-gnu/gcc-2.95.3-glibc-2.2.2/gcc-2.95.3/gcc/gthr.h:98, - from /build/arm-unknown-linux-gnu/gcc-2.95.3-glibc-2.2.2/gcc-2.95.3/gcc/libgcc2.c:3034: -/build/arm-unknown-linux-gnu/gcc-2.95.3-glibc-2.2.2/gcc-2.95.3/gcc/gthr-posix.h:37: pthread.h: No such file or directory -make[3]: *** [libgcc2.a] Error 1 -make[3]: Leaving directory `/build/arm-unknown-linux-gnu/gcc-2.95.3-glibc-2.2.2/build-gcc-core/gcc' - -in what I think is a nicer way than the patch used by the arm team, -i.e. "perl -pi -e 's/^(TARGET_LIBGCC2_CFLAGS.*)/$1 -Dinhibit_libc -D__gthr_posix_h/' gcc/config/arm/t-linux" -which seems a bit of a kludge. - ---- gcc-2.95.3/gcc/configure.old Fri Mar 16 06:13:48 2001 -+++ gcc-2.95.3/gcc/configure Sun Jun 8 13:02:20 2003 -@@ -853,9 +853,9 @@ - # Check whether --enable-threads or --disable-threads was given. - if test "${enable_threads+set}" = set; then - enableval="$enable_threads" -- if test x$enable_threads = xno; then -- enable_threads='' --fi -+ #if test x$enable_threads = xno; then -+ #enable_threads='' -+ #fi - else - enable_threads='' - fi diff --git a/patches/gcc/3.2.3/100-config.sub.patch b/patches/gcc/3.2.3/100-config.sub.patch deleted file mode 100644 index 928f911..0000000 --- a/patches/gcc/3.2.3/100-config.sub.patch +++ /dev/null @@ -1,72 +0,0 @@ -When configuring a s390->s390 or cris->cris crosscompiler -(ok, I haven't hit this yet, but one of these days I'll get me an account -on an s390, and then I'll need this patch :-), you'll get the -following error: - -+ /build/s390-unknown-linux-gnu/gcc-3.3-glibc-2.3.2/gcc-3.3/configure ---target=s390-unknown-linux-gnu --host=s390-host_unknown-linux-gnu ---prefix=/result/s390-unknown-linux-gnu/gcc-3.3-glibc-2.3.2 ---enable-languages=c ---with-local-prefix=/result/s390-unknown-linux-gnu/gcc-3.3-glibc-2.3.2/s390- -unknown-linux-gnu --enable-threads=no --without-headers --with-newlib ---disable-shared -... -*** --with-headers is only supported when cross compiling - -This error pops up only when you're using Daniel Jacobowitz's technique -of slightly changing the target and host tuples to make them different -enough to force gcc's build system to not try to pull in system libraries -or headers. This technique is needed e.g. to build an x86 -> x86 -cross-compiler. -(The LFS developers ran into the same bug that prompted me to use -this technique; they point people who run into it to -http://linuxfromscratch.org/~greg/pure_lfs.txt, which is a different -way of avoiding this problem. I think the tuple tweak is the way to go, though.) - -config-patches@gnu.org rejected this patch, on the grounds that there -is only one vendor of each of those two architectures, so the -canonicalization is by definition correct. When I pointed out the -difficulty this causes for people building s390 -> s390 or -cris -> cris compilers that are incompatible with the system -libraries and thus must be built like cross-compilers, he grumped and said -"autoconf should let you specify a cross-compiler in some other way than -comparing tuple strings". - - - ---- gcc-3.3/config.sub.old Sun Jun 8 20:38:47 2003 -+++ gcc-3.3/config.sub Sun Jun 8 20:40:34 2003 -@@ -433,9 +433,12 @@ - crds | unos) - basic_machine=m68k-crds - ;; -- cris | cris-* | etrax*) -+ cris | etrax*) - basic_machine=cris-axis - ;; -+ cris-*) -+ basic_machine=cris-`echo $basic_machine | sed 's/^[^-]*-//'` -+ ;; - da30 | da30-*) - basic_machine=m68k-da30 - ;; -@@ -820,11 +823,17 @@ - rtpc | rtpc-*) - basic_machine=romp-ibm - ;; -- s390 | s390-*) -+ s390) - basic_machine=s390-ibm - ;; -- s390x | s390x-*) -+ s390-*) -+ basic_machine=s390-`echo $basic_machine | sed 's/^[^-]*-//'` -+ ;; -+ s390x) - basic_machine=s390x-ibm -+ ;; -+ s390x-*) -+ basic_machine=s390x-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - sa29200) - basic_machine=a29k-amd diff --git a/patches/gcc/3.2.3/110-ppc405erratum77.patch b/patches/gcc/3.2.3/110-ppc405erratum77.patch deleted file mode 100644 index bd717f5..0000000 --- a/patches/gcc/3.2.3/110-ppc405erratum77.patch +++ /dev/null @@ -1,105 +0,0 @@ -# See http://gcc.gnu.org/PR7383, http://www.kegel.com/xgcc3/ppc405erratum77.html -# Fixed in gcc-3.3 - -diff -aur gcc-20020722.orig/gcc/config/rs6000/rs6000.h gcc-20020722/gcc/config/rs6000/rs6000.h ---- gcc-20020722.orig/gcc/config/rs6000/rs6000.h Thu Jul 25 09:32:21 2002 -+++ gcc-20020722/gcc/config/rs6000/rs6000.h Thu Jul 25 09:34:45 2002 -@@ -66,7 +66,7 @@ - %{mcpu=rsc1: -D_ARCH_PWR} \ - %{mcpu=401: -D_ARCH_PPC} \ - %{mcpu=403: -D_ARCH_PPC} \ --%{mcpu=405: -D_ARCH_PPC} \ -+%{mcpu=405: -D_ARCH_PPC -D__PPC405__} \ - %{mcpu=505: -D_ARCH_PPC} \ - %{mcpu=601: -D_ARCH_PPC -D_ARCH_PWR} \ - %{mcpu=602: -D_ARCH_PPC} \ -diff -aur gcc-20020722.orig/libjava/sysdep/powerpc/locks.h gcc-20020722/libjava/sysdep/powerpc/locks.h ---- gcc-20020722.orig/libjava/sysdep/powerpc/locks.h Thu Jul 25 09:32:30 2002 -+++ gcc-20020722/libjava/sysdep/powerpc/locks.h Thu Jul 25 11:39:13 2002 -@@ -11,6 +11,17 @@ - #ifndef __SYSDEP_LOCKS_H__ - #define __SYSDEP_LOCKS_H__ - -+#ifdef __PPC405__ -+// workaround for PPC405 erratum #77 - 07/18/02 JRO, dank, NN. References: -+// http://www-3.ibm.com/chips/techlib/techlib.nsf/techdocs/89DED00DEBFF54BF87256A8000491BA2/$file/405CR_C_errata_1_2.pdf -+// http://ppc.bkbits.net:8080/linuxppc_2_4_devel/cset@1.489 -+// http://www.kegel.com/xgcc3/ppc405erratum77.html -+// FIXME: using dbct instead of sync would be faster -+#define __LIBGCJ_PPC405_ERR77_SYNC "sync \n\t" -+#else -+#define __LIBGCJ_PPC405_ERR77_SYNC -+#endif -+ - typedef size_t obj_addr_t; /* Integer type big enough for object */ - /* address. */ - -@@ -25,6 +36,7 @@ - "0: lwarx %0,0,%1 ;" - " xor. %0,%3,%0;" - " bne 1f;" -+ __LIBGCJ_PPC405_ERR77_SYNC - " stwcx. %2,0,%1;" - " bne- 0b;" - "1: " -@@ -58,6 +70,7 @@ - "0: lwarx %0,0,%1 ;" - " xor. %0,%3,%0;" - " bne 1f;" -+ __LIBGCJ_PPC405_ERR77_SYNC - " stwcx. %2,0,%1;" - " bne- 0b;" - "1: " -diff -aur gcc-20020722.orig/libstdc++-v3/config/cpu/powerpc/bits/atomicity.h gcc-20020722/libstdc++-v3/config/cpu/powerpc/bits/atomicity.h ---- gcc-20020722.orig/libstdc++-v3/config/cpu/powerpc/bits/atomicity.h Thu Jul 25 09:32:31 2002 -+++ gcc-20020722/libstdc++-v3/config/cpu/powerpc/bits/atomicity.h Thu Jul 25 09:34:45 2002 -@@ -32,6 +32,17 @@ - - typedef int _Atomic_word; - -+#ifdef __PPC405__ -+// workaround for PPC405 erratum #77 - 07/18/02 JRO & dank. References: -+// http://www-3.ibm.com/chips/techlib/techlib.nsf/techdocs/89DED00DEBFF54BF87256A8000491BA2/$file/405CR_C_errata_1_2.pdf -+// http://ppc.bkbits.net:8080/linuxppc_2_4_devel/cset@1.489 -+// http://www.kegel.com/xgcc3/ppc405erratum77.html -+// FIXME: using dbct instead of sync would be faster -+#define __LIBSTDCPP_PPC405_ERR77_SYNC "sync \n\t" -+#else -+#define __LIBSTDCPP_PPC405_ERR77_SYNC -+#endif -+ - static inline _Atomic_word - __attribute__ ((__unused__)) - __exchange_and_add (volatile _Atomic_word* __mem, int __val) -@@ -42,6 +53,7 @@ - "0:\t" - "lwarx %0,0,%2 \n\t" - "add%I3 %1,%0,%3 \n\t" -+ __LIBSTDCPP_PPC405_ERR77_SYNC - "stwcx. %1,0,%2 \n\t" - "bne- 0b \n\t" - "/* End exchange & add */" -@@ -61,6 +73,7 @@ - "0:\t" - "lwarx %0,0,%1 \n\t" - "add%I2 %0,%0,%2 \n\t" -+ __LIBSTDCPP_PPC405_ERR77_SYNC - "stwcx. %0,0,%1 \n\t" - "bne- 0b \n\t" - "/* End atomic add */" -@@ -78,6 +91,7 @@ - "/* Inline always swap */\n" - "0:\t" - "lwarx %0,0,%1 \n\t" -+ __LIBSTDCPP_PPC405_ERR77_SYNC - "stwcx. %2,0,%1 \n\t" - "bne- 0b \n\t" - "/* End always swap */" -@@ -98,6 +112,7 @@ - "lwarx %0,0,%1 \n\t" - "cmpwi %0,0 \n\t" - "bne- 1f \n\t" -+ __LIBSTDCPP_PPC405_ERR77_SYNC - "stwcx. %2,0,%1 \n\t" - "bne- 0b \n" - "1:\n\t" diff --git a/patches/gcc/3.2.3/120-sh-linux-1.patch b/patches/gcc/3.2.3/120-sh-linux-1.patch deleted file mode 100644 index 4393078..0000000 --- a/patches/gcc/3.2.3/120-sh-linux-1.patch +++ /dev/null @@ -1,1761 +0,0 @@ -diff -ruN gcc-20030210.orig/boehm-gc/configure gcc-20030210/boehm-gc/configure ---- gcc-20030210.orig/boehm-gc/configure Fri Jan 31 19:17:00 2003 -+++ gcc-20030210/boehm-gc/configure Sat Feb 22 01:40:14 2003 -@@ -1922,7 +1922,7 @@ - # This must be Linux ELF. - linux-gnu*) - case $host_cpu in -- alpha* | hppa* | i*86 | powerpc* | sparc* | ia64* ) -+ alpha* | hppa* | i*86 | powerpc* | sparc* | ia64* | sh* ) - lt_cv_deplibs_check_method=pass_all ;; - *) - # glibc up to 2.1.1 does not perform some relocations on ARM -diff -ruN gcc-20030210.orig/config-ml.in gcc-20030210/config-ml.in ---- gcc-20030210.orig/config-ml.in Fri Jan 31 19:16:59 2003 -+++ gcc-20030210/config-ml.in Sat Feb 22 01:40:14 2003 -@@ -545,6 +545,7 @@ - if [ -d ../$${dir}/$${lib} ]; then \ - flags=`echo $$i | sed -e 's/^[^;]*;//' -e 's/@/ -/g'`; \ - if (cd ../$${dir}/$${lib}; $(MAKE) $(FLAGS_TO_PASS) \ -+ DESTDIR="$(DESTDIR)" \ - CFLAGS="$(CFLAGS) $${flags}" \ - prefix="$(prefix)" \ - exec_prefix="$(exec_prefix)" \ -diff -ruN gcc-20030210.orig/debian/edit-specs.in gcc-20030210/debian/edit-specs.in ---- gcc-20030210.orig/debian/edit-specs.in Thu Jan 1 09:00:00 1970 -+++ gcc-20030210/debian/edit-specs.in Sat Feb 22 01:40:14 2003 -@@ -0,0 +1,45 @@ -+/^*asm:$/ { -+n -+c\ -+@AS_ENDIAN_FLAG@ %{mrelax:-relax} -+} -+/^*cpp:$/ { -+n -+c\ -+%(cpp_default_cpu_spec) %(subtarget_cpp_spec) %(subtarget_cpp_ptr_spec) %(subtarget_cpp_endian_spec) -+} -+/^*cc1:$/ { -+n -+c\ -+-musermode @CC1_CPU_ENDIAN_FLAGS@ %{profile:-p} -+} -+/^*link:$/ { -+n -+c\ -+%{!static:--eh-frame-hdr} @LINKER_CPU_ENDIAN_FLAGS@ @LINKER_RPATH_LINK_FLAG@ %{mrelax:-relax} %{shared:-shared} %{!static: %{rdynamic:-export-dynamic} %{!dynamic-linker:-dynamic-linker /lib/ld-linux.so.2}} %{static:-static} -+} -+/^*multilib:$/ { -+n -+c\ -+. ; -+} -+/^*multilib_matches:$/ { -+n -+c\ -+ -+} -+/^*multilib_options:$/ { -+n -+c\ -+ -+} -+/^*subtarget_cpp_endian_spec:$/ { -+n -+c\ -+@CPP_ENDIAN_DEF@ -+} -+/^*cpp_default_cpu_spec:$/ { -+n -+c\ -+@CPP_CPU_DEFS@ -+} -diff -ruN gcc-20030210.orig/debian/install-CPU-linux gcc-20030210/debian/install-CPU-linux ---- gcc-20030210.orig/debian/install-CPU-linux Thu Jan 1 09:00:00 1970 -+++ gcc-20030210/debian/install-CPU-linux Sat Feb 22 01:40:14 2003 -@@ -0,0 +1,111 @@ -+#! /bin/sh -+ -+VERSION=$1; shift -+CPU=$1 -+ -+# literally (binary-ly) same -+PROGS_C="cpp gcc" -+PROGS_ADDITIONAL="c++ g++ g77 gcj" -+ -+DRIVERS_C="cc1 cpp0 tradcpp0" -+DRIVERS_ADDITIONAL="cc1obj cc1plus collect2 f771 jc1 jvgenmain" -+if [ -z "$STEP1_COMPILER_BUILD" ]; then -+ PROGS="$PROGS_C $PROGS_ADDITIONAL" -+ DRIVERS="$DRIVERS_C $DRIVERSADDITIONAL" -+ INITIAL="" -+else -+ PROGS=$PROGS_C -+ DRIVERS=$DRIVERS_C -+ INITIAL="-initial" -+fi -+ -+OBJS="crtbegin.o crtbeginS.o crtend.o crtendS.o" -+LIBS_C="libgcc.a" -+LIBS_1="libgcc_s.so libgcc_s.so.1 libstdc++.so libstdc++.so.3 libstdc++.so.3.0.2" -+LIBS_2="libobjc.a libstdc++.a libsupc++.a" -+INCLUDE="include" -+ -+cd debian/gcc-sh-linux-others${INITIAL} || exit 1 -+ -+# Make directories. -+mkdir -p usr/bin usr/share usr/share/man usr/share/man/man1 usr/lib \ -+ usr/lib/gcc-lib usr/lib/gcc-lib/${CPU}-linux \ -+ usr/lib/gcc-lib/${CPU}-linux/${VERSION} \ -+ usr/${CPU}-linux usr/${CPU}-linux/lib -+ -+# Make symbolic links for include dir. -+(cd usr/${CPU}-linux; ln -s ../sh-linux/include .) -+ -+# Make symbolic links for executables. -+(cd usr/bin; -+ for p in ${PROGS}; do -+ ln -s shCPU-linux-GCC ${CPU}-linux-$p -+ done) -+ -+case "${CPU}" in -+ sh3) -+ MULTILIBDIR= -+ AS_ENDIAN_FLAG="-little" -+ CPP_ENDIAN_DEF="-D__LITTLE_ENDIAN__" -+ CPP_CPU_DEFS="-D__SH3__ -D__sh3__" -+ CC1_CPU_ENDIAN_FLAGS="-ml -m3" -+ LINKER_CPU_ENDIAN_FLAGS="-m shlelf_linux -EL --architecture sh3" -+ LINKER_RPATH_LINK_FLAG="-rpath-link /usr/sh3-linux/lib" -+ ;; -+ sh3eb) -+ MULTILIBDIR=/mb -+ AS_ENDIAN_FLAG="-big" -+ CPP_ENDIAN_DEF="-D__BIG_ENDIAN__" -+ CPP_CPU_DEFS="-D__SH3__ -D__sh3__" -+ CC1_CPU_ENDIAN_FLAGS="-mb -m3" -+ LINKER_CPU_ENDIAN_FLAGS="-m shelf_linux -EB --architecture sh3" -+ LINKER_RPATH_LINK_FLAG="-rpath-link /usr/sh3eb-linux/lib" -+ ;; -+ sh4) -+ MULTILIBDIR=/m4 -+ AS_ENDIAN_FLAG="-little" -+ CPP_ENDIAN_DEF="-D__LITTLE_ENDIAN__" -+ CPP_CPU_DEFS="-D__SH4__" -+ CC1_CPU_ENDIAN_FLAGS="-ml -m4" -+ LINKER_CPU_ENDIAN_FLAGS="-m shlelf_linux -EL --architecture sh4" -+ LINKER_RPATH_LINK_FLAG="-rpath-link /usr/sh4-linux/lib" -+ ;; -+ sh4eb) -+ MULTILIBDIR=/mb/m4 -+ AS_ENDIAN_FLAG="-big" -+ CPP_ENDIAN_DEF="-D__BIG_ENDIAN__" -+ CPP_CPU_DEFS="-D__SH4__" -+ CC1_CPU_ENDIAN_FLAGS="-mb -m4" -+ LINKER_CPU_ENDIAN_FLAGS="-m shelf_linux -EB --architecture sh4" -+ LINKER_RPATH_LINK_FLAG="-rpath-link /usr/sh4eb-linux/lib" -+ ;; -+esac -+ -+# Make symbolic links for GCC drivers, objects, libraries, and include dir. -+(cd usr/lib/gcc-lib/${CPU}-linux/${VERSION}; -+ for f in ${DRIVERS} ${INCLUDE}; do -+ ln -s ../../sh-linux/${VERSION}/$f $f; -+ done -+ for f in ${OBJS} ${LIBS_C}; do -+ ln -s ../../sh-linux/${VERSION}${MULTILIBDIR}/$f $f; -+ done) -+ -+if [ -z "$STEP1_COMPILER_BUILD" ]; then -+ for f in ${LIBS_1} ${LIBS_2}; do -+ mv ../gcc-sh-linux/usr/sh-linux/lib${MULTILIBDIR}/$f usr/${CPU}-linux/lib/; -+ done -+fi -+ -+sed -e "s+@AS_ENDIAN_FLAG@+${AS_ENDIAN_FLAG}+" \ -+ -e "s+@CPP_ENDIAN_DEF@+${CPP_ENDIAN_DEF}+" \ -+ -e "s+@CPP_CPU_DEFS@+${CPP_CPU_DEFS}+" \ -+ -e "s+@CC1_CPU_ENDIAN_FLAGS@+${CC1_CPU_ENDIAN_FLAGS}+" \ -+ -e "s+@LINKER_CPU_ENDIAN_FLAGS@+${LINKER_CPU_ENDIAN_FLAGS}+" \ -+ -e "s+@LINKER_RPATH_LINK_FLAG@+${LINKER_RPATH_LINK_FLAG}+" \ -+ ../edit-specs.in >../edit-specs-${CPU}.sed -+ -+sed -f ../edit-specs-${CPU}.sed \ -+ ../gcc-sh-linux${INITIAL}/usr/lib/gcc-lib/sh-linux/${VERSION}/specs \ -+ > usr/lib/gcc-lib/${CPU}-linux/${VERSION}/specs -+ -+exit 0 -diff -ruN gcc-20030210.orig/debian/multilib-symlink gcc-20030210/debian/multilib-symlink ---- gcc-20030210.orig/debian/multilib-symlink Thu Jan 1 09:00:00 1970 -+++ gcc-20030210/debian/multilib-symlink Sat Feb 22 01:40:14 2003 -@@ -0,0 +1,10 @@ -+#! /bin/sh -+ -+cd /usr/sh-linux/lib -+ln -s ../../sh3-linux/lib/{*.a,*.so*,*.o} . -+cd m4 -+ln -s ../../../sh4-linux/lib/{*.a,*.so*,*.o} . -+cd ../mb -+ln -s ../../../sh3eb-linux/lib/{*.a,*.so*,*.o} . -+cd m4 -+ln -s ../../../../sh4eb-linux/lib/{*.a,*.so*,*.o} . -diff -ruN gcc-20030210.orig/debian/shCPU-linux-GCC gcc-20030210/debian/shCPU-linux-GCC ---- gcc-20030210.orig/debian/shCPU-linux-GCC Thu Jan 1 09:00:00 1970 -+++ gcc-20030210/debian/shCPU-linux-GCC Sat Feb 22 01:40:14 2003 -@@ -0,0 +1,59 @@ -+#! /bin/bash -+ -+BASENAME=${0##*/} -+PROG=${BASENAME##*-} -+CPU=${BASENAME%%-*} -+ -+if [ "$PROG" = gcc ]; then -+ if [ "$1" = "-b" -a "$2" = "i386-linux" ]; then -+ shift 2 -+ exec /usr/bin/gcc "$@" -+ elif [ "$1" = "-print-multi-lib" -o "$1" = "--print-multi-lib" ]; then -+ echo ".;" -+ exit 0 -+ elif [ "$1" = "-print-multi-os-directory" -o "$1" = "--print-multi-os-directory" ]; then -+ echo "." -+ exit 0 -+ elif [ "$1" = "-dumpspecs" ]; then -+ cat /usr/lib/gcc-lib/${CPU}-linux/@@VERSION@@/specs -+ exit 0 -+ fi -+fi -+ -+case "${CPU}" in -+ sh3) -+ ARCH=m3 -+ DEFINES="-D__sh3__ -D__SH3__ -D__LITTLE_ENDIAN__" -+ ENDIAN=ml -+ ;; -+ sh3eb) -+ ARCH=m3 -+ DEFINES="-D__sh3__ -D__SH3__ -D__BIG_ENDIAN__" -+ ENDIAN=mb -+ ;; -+ sh4) -+ ARCH=m4 -+ DEFINES="-D__SH4__ -D__LITTLE_ENDIAN__" -+ ENDIAN=ml -+ ;; -+ sh4eb) -+ ARCH=m4 -+ DEFINES="-D__SH4__ -D__BIG_ENDIAN__" -+ ENDIAN=mb -+ ;; -+esac -+ -+# Prepend the appropriate options -+# If user specifies some options, it will be overridden -+ -+case "${PROG}" in -+ cpp) -+ exec sh-linux-${PROG} $DEFINES "$@" -+ ;; -+ c++|g++|g77|gcc|gcj) -+ exec sh-linux-${PROG} -$ARCH -$ENDIAN "$@" -+ ;; -+esac -+ -+echo "Something wrong..." -+exit 1 -diff -ruN gcc-20030210.orig/gcc/config/sh/elf.h gcc-20030210/gcc/config/sh/elf.h ---- gcc-20030210.orig/gcc/config/sh/elf.h Fri Feb 22 01:42:28 2002 -+++ gcc-20030210/gcc/config/sh/elf.h Sat Feb 22 01:40:14 2003 -@@ -170,3 +170,7 @@ - #undef ENDFILE_SPEC - #define ENDFILE_SPEC \ - "%{!shared:crtend.o%s} %{shared:crtendS.o%s} crtn.o%s" -+ -+/* ASM_OUTPUT_CASE_LABEL is defined in elfos.h. With it, -+ redundant .align will be generated. */ -+#undef ASM_OUTPUT_CASE_LABEL -diff -ruN gcc-20030210.orig/gcc/config/sh/lib1funcs.asm gcc-20030210/gcc/config/sh/lib1funcs.asm ---- gcc-20030210.orig/gcc/config/sh/lib1funcs.asm Fri Feb 22 01:42:28 2002 -+++ gcc-20030210/gcc/config/sh/lib1funcs.asm Sat Feb 22 01:40:14 2003 -@@ -39,8 +39,13 @@ - - #ifdef __ELF__ - #define LOCAL(X) .L_##X -+#define FUNC(X) .type X,@function; .hidden X -+#define _ENDFUNC(X) .Lfe_##X: .size X,.Lfe_##X-X -+#define ENDFUNC(X) _ENDFUNC(X) - #else - #define LOCAL(X) L_##X -+#define FUNC(X) -+#define ENDFUNC(X) - #endif - - #ifdef __linux__ -@@ -91,6 +96,40 @@ - .global GLOBAL(ashiftrt_r4_31) - .global GLOBAL(ashiftrt_r4_32) - -+ FUNC(GLOBAL(ashiftrt_r4_0)) -+ FUNC(GLOBAL(ashiftrt_r4_1)) -+ FUNC(GLOBAL(ashiftrt_r4_2)) -+ FUNC(GLOBAL(ashiftrt_r4_3)) -+ FUNC(GLOBAL(ashiftrt_r4_4)) -+ FUNC(GLOBAL(ashiftrt_r4_5)) -+ FUNC(GLOBAL(ashiftrt_r4_6)) -+ FUNC(GLOBAL(ashiftrt_r4_7)) -+ FUNC(GLOBAL(ashiftrt_r4_8)) -+ FUNC(GLOBAL(ashiftrt_r4_9)) -+ FUNC(GLOBAL(ashiftrt_r4_10)) -+ FUNC(GLOBAL(ashiftrt_r4_11)) -+ FUNC(GLOBAL(ashiftrt_r4_12)) -+ FUNC(GLOBAL(ashiftrt_r4_13)) -+ FUNC(GLOBAL(ashiftrt_r4_14)) -+ FUNC(GLOBAL(ashiftrt_r4_15)) -+ FUNC(GLOBAL(ashiftrt_r4_16)) -+ FUNC(GLOBAL(ashiftrt_r4_17)) -+ FUNC(GLOBAL(ashiftrt_r4_18)) -+ FUNC(GLOBAL(ashiftrt_r4_19)) -+ FUNC(GLOBAL(ashiftrt_r4_20)) -+ FUNC(GLOBAL(ashiftrt_r4_21)) -+ FUNC(GLOBAL(ashiftrt_r4_22)) -+ FUNC(GLOBAL(ashiftrt_r4_23)) -+ FUNC(GLOBAL(ashiftrt_r4_24)) -+ FUNC(GLOBAL(ashiftrt_r4_25)) -+ FUNC(GLOBAL(ashiftrt_r4_26)) -+ FUNC(GLOBAL(ashiftrt_r4_27)) -+ FUNC(GLOBAL(ashiftrt_r4_28)) -+ FUNC(GLOBAL(ashiftrt_r4_29)) -+ FUNC(GLOBAL(ashiftrt_r4_30)) -+ FUNC(GLOBAL(ashiftrt_r4_31)) -+ FUNC(GLOBAL(ashiftrt_r4_32)) -+ - .align 1 - GLOBAL(ashiftrt_r4_32): - GLOBAL(ashiftrt_r4_31): -@@ -170,6 +209,41 @@ - GLOBAL(ashiftrt_r4_0): - rts - nop -+ -+ ENDFUNC(GLOBAL(ashiftrt_r4_0)) -+ ENDFUNC(GLOBAL(ashiftrt_r4_1)) -+ ENDFUNC(GLOBAL(ashiftrt_r4_2)) -+ ENDFUNC(GLOBAL(ashiftrt_r4_3)) -+ ENDFUNC(GLOBAL(ashiftrt_r4_4)) -+ ENDFUNC(GLOBAL(ashiftrt_r4_5)) -+ ENDFUNC(GLOBAL(ashiftrt_r4_6)) -+ ENDFUNC(GLOBAL(ashiftrt_r4_7)) -+ ENDFUNC(GLOBAL(ashiftrt_r4_8)) -+ ENDFUNC(GLOBAL(ashiftrt_r4_9)) -+ ENDFUNC(GLOBAL(ashiftrt_r4_10)) -+ ENDFUNC(GLOBAL(ashiftrt_r4_11)) -+ ENDFUNC(GLOBAL(ashiftrt_r4_12)) -+ ENDFUNC(GLOBAL(ashiftrt_r4_13)) -+ ENDFUNC(GLOBAL(ashiftrt_r4_14)) -+ ENDFUNC(GLOBAL(ashiftrt_r4_15)) -+ ENDFUNC(GLOBAL(ashiftrt_r4_16)) -+ ENDFUNC(GLOBAL(ashiftrt_r4_17)) -+ ENDFUNC(GLOBAL(ashiftrt_r4_18)) -+ ENDFUNC(GLOBAL(ashiftrt_r4_19)) -+ ENDFUNC(GLOBAL(ashiftrt_r4_20)) -+ ENDFUNC(GLOBAL(ashiftrt_r4_21)) -+ ENDFUNC(GLOBAL(ashiftrt_r4_22)) -+ ENDFUNC(GLOBAL(ashiftrt_r4_23)) -+ ENDFUNC(GLOBAL(ashiftrt_r4_24)) -+ ENDFUNC(GLOBAL(ashiftrt_r4_25)) -+ ENDFUNC(GLOBAL(ashiftrt_r4_26)) -+ ENDFUNC(GLOBAL(ashiftrt_r4_27)) -+ ENDFUNC(GLOBAL(ashiftrt_r4_28)) -+ ENDFUNC(GLOBAL(ashiftrt_r4_29)) -+ ENDFUNC(GLOBAL(ashiftrt_r4_30)) -+ ENDFUNC(GLOBAL(ashiftrt_r4_31)) -+ ENDFUNC(GLOBAL(ashiftrt_r4_32)) -+ - #endif - - #ifdef L_ashiftrt_n -@@ -192,6 +266,7 @@ - ! - - .global GLOBAL(ashrsi3) -+ FUNC(GLOBAL(ashrsi3)) - .align 2 - GLOBAL(ashrsi3): - mov #31,r0 -@@ -319,6 +394,8 @@ - rts - nop - -+ ENDFUNC(GLOBAL(ashrsi3)) -+ - #endif - - #ifdef L_ashiftlt -@@ -340,6 +417,7 @@ - ! (none) - ! - .global GLOBAL(ashlsi3) -+ FUNC(GLOBAL(ashlsi3)) - .align 2 - GLOBAL(ashlsi3): - mov #31,r0 -@@ -476,6 +554,8 @@ - rts - nop - -+ ENDFUNC(GLOBAL(ashlsi3)) -+ - #endif - - #ifdef L_lshiftrt -@@ -497,6 +577,7 @@ - ! (none) - ! - .global GLOBAL(lshrsi3) -+ FUNC(GLOBAL(lshrsi3)) - .align 2 - GLOBAL(lshrsi3): - mov #31,r0 -@@ -633,6 +714,8 @@ - rts - nop - -+ ENDFUNC(GLOBAL(lshrsi3)) -+ - #endif - - #ifdef L_movstr -@@ -649,76 +732,113 @@ - add #64,r4 - .align 4 - .global GLOBAL(movstrSI64) -+ FUNC(GLOBAL(movstrSI64)) - GLOBAL(movstrSI64): - mov.l @(60,r5),r0 - mov.l r0,@(60,r4) - .global GLOBAL(movstrSI60) -+ FUNC(GLOBAL(movstrSI60)) - GLOBAL(movstrSI60): - mov.l @(56,r5),r0 - mov.l r0,@(56,r4) - .global GLOBAL(movstrSI56) -+ FUNC(GLOBAL(movstrSI56)) - GLOBAL(movstrSI56): - mov.l @(52,r5),r0 - mov.l r0,@(52,r4) - .global GLOBAL(movstrSI52) -+ FUNC(GLOBAL(movstrSI52)) - GLOBAL(movstrSI52): - mov.l @(48,r5),r0 - mov.l r0,@(48,r4) - .global GLOBAL(movstrSI48) -+ FUNC(GLOBAL(movstrSI48)) - GLOBAL(movstrSI48): - mov.l @(44,r5),r0 - mov.l r0,@(44,r4) - .global GLOBAL(movstrSI44) -+ FUNC(GLOBAL(movstrSI44)) - GLOBAL(movstrSI44): - mov.l @(40,r5),r0 - mov.l r0,@(40,r4) - .global GLOBAL(movstrSI40) -+ FUNC(GLOBAL(movstrSI40)) - GLOBAL(movstrSI40): - mov.l @(36,r5),r0 - mov.l r0,@(36,r4) - .global GLOBAL(movstrSI36) -+ FUNC(GLOBAL(movstrSI36)) - GLOBAL(movstrSI36): - mov.l @(32,r5),r0 - mov.l r0,@(32,r4) - .global GLOBAL(movstrSI32) -+ FUNC(GLOBAL(movstrSI32)) - GLOBAL(movstrSI32): - mov.l @(28,r5),r0 - mov.l r0,@(28,r4) - .global GLOBAL(movstrSI28) -+ FUNC(GLOBAL(movstrSI28)) - GLOBAL(movstrSI28): - mov.l @(24,r5),r0 - mov.l r0,@(24,r4) - .global GLOBAL(movstrSI24) -+ FUNC(GLOBAL(movstrSI24)) - GLOBAL(movstrSI24): - mov.l @(20,r5),r0 - mov.l r0,@(20,r4) - .global GLOBAL(movstrSI20) -+ FUNC(GLOBAL(movstrSI20)) - GLOBAL(movstrSI20): - mov.l @(16,r5),r0 - mov.l r0,@(16,r4) - .global GLOBAL(movstrSI16) -+ FUNC(GLOBAL(movstrSI16)) - GLOBAL(movstrSI16): - mov.l @(12,r5),r0 - mov.l r0,@(12,r4) - .global GLOBAL(movstrSI12) -+ FUNC(GLOBAL(movstrSI12)) - GLOBAL(movstrSI12): - mov.l @(8,r5),r0 - mov.l r0,@(8,r4) - .global GLOBAL(movstrSI8) -+ FUNC(GLOBAL(movstrSI8)) - GLOBAL(movstrSI8): - mov.l @(4,r5),r0 - mov.l r0,@(4,r4) - .global GLOBAL(movstrSI4) -+ FUNC(GLOBAL(movstrSI4)) - GLOBAL(movstrSI4): - mov.l @(0,r5),r0 - mov.l r0,@(0,r4) -+ .global GLOBAL(movstrSI0) -+ FUNC(GLOBAL(movstrSI0)) - GLOBAL(movstrSI0): - rts - nop - -+ ENDFUNC(GLOBAL(movstrSI64)) -+ ENDFUNC(GLOBAL(movstrSI60)) -+ ENDFUNC(GLOBAL(movstrSI56)) -+ ENDFUNC(GLOBAL(movstrSI52)) -+ ENDFUNC(GLOBAL(movstrSI48)) -+ ENDFUNC(GLOBAL(movstrSI44)) -+ ENDFUNC(GLOBAL(movstrSI40)) -+ ENDFUNC(GLOBAL(movstrSI36)) -+ ENDFUNC(GLOBAL(movstrSI32)) -+ ENDFUNC(GLOBAL(movstrSI28)) -+ ENDFUNC(GLOBAL(movstrSI24)) -+ ENDFUNC(GLOBAL(movstrSI20)) -+ ENDFUNC(GLOBAL(movstrSI16)) -+ ENDFUNC(GLOBAL(movstrSI12)) -+ ENDFUNC(GLOBAL(movstrSI8)) -+ ENDFUNC(GLOBAL(movstrSI4)) -+ ENDFUNC(GLOBAL(movstrSI0)) -+ - .align 4 - - .global GLOBAL(movstr) -+ FUNC(GLOBAL(movstr)) - GLOBAL(movstr): - mov.l @(60,r5),r0 - mov.l r0,@(60,r4) -@@ -775,6 +895,8 @@ - add #64,r5 - bra GLOBAL(movstr) - add #64,r4 -+ -+ FUNC(GLOBAL(movstr)) - #endif - - #ifdef L_movstr_i4 -@@ -783,6 +905,10 @@ - .global GLOBAL(movstr_i4_odd) - .global GLOBAL(movstrSI12_i4) - -+ FUNC(GLOBAL(movstr_i4_even)) -+ FUNC(GLOBAL(movstr_i4_odd)) -+ FUNC(GLOBAL(movstrSI12_i4)) -+ - .p2align 5 - L_movstr_2mod4_end: - mov.l r0,@(16,r4) -@@ -791,6 +917,11 @@ - - .p2align 2 - -+GLOBAL(movstr_i4_even): -+ mov.l @r5+,r0 -+ bra L_movstr_start_even -+ mov.l @r5+,r1 -+ - GLOBAL(movstr_i4_odd): - mov.l @r5+,r1 - add #-4,r4 -@@ -817,10 +948,8 @@ - rts - mov.l r3,@(12,r4) - --GLOBAL(movstr_i4_even): -- mov.l @r5+,r0 -- bra L_movstr_start_even -- mov.l @r5+,r1 -+ ENDFUNC(GLOBAL(movstr_i4_even)) -+ ENDFUNC(GLOBAL(movstr_i4_odd)) - - .p2align 4 - GLOBAL(movstrSI12_i4): -@@ -831,12 +960,16 @@ - mov.l r1,@(4,r4) - rts - mov.l r2,@(8,r4) -+ -+ ENDFUNC(GLOBAL(movstrSI12_i4)) -+ - #endif - - #ifdef L_mulsi3 - - - .global GLOBAL(mulsi3) -+ FUNC(GLOBAL(mulsi3)) - - ! r4 = aabb - ! r5 = ccdd -@@ -869,7 +1002,7 @@ - rts - add r2,r0 - -- -+ FUNC(GLOBAL(mulsi3)) - #endif - #endif /* ! __SH5__ */ - #ifdef L_sdivsi3_i4 -@@ -879,6 +1012,7 @@ - !! args in r4 and r5, result in fpul, clobber dr0, dr2 - - .global GLOBAL(sdivsi3_i4) -+ FUNC(GLOBAL(sdivsi3_i4)) - GLOBAL(sdivsi3_i4): - lds r4,fpul - float fpul,dr0 -@@ -888,6 +1022,8 @@ - rts - ftrc dr0,fpul - -+ ENDFUNC(GLOBAL(sdivsi3_i4)) -+ - #elif defined(__SH4_SINGLE__) || defined(__SH4_SINGLE_ONLY__) || (defined (__SH5__) && ! defined __SH4_NOFPU__) - !! args in r4 and r5, result in fpul, clobber r2, dr0, dr2 - -@@ -896,6 +1032,7 @@ - .mode SHcompact - #endif - .global GLOBAL(sdivsi3_i4) -+ FUNC(GLOBAL(sdivsi3_i4)) - GLOBAL(sdivsi3_i4): - sts.l fpscr,@-r15 - mov #8,r2 -@@ -910,6 +1047,8 @@ - rts - lds.l @r15+,fpscr - -+ ENDFUNC(GLOBAL(sdivsi3_i4)) -+ - #endif /* ! __SH5__ || __SH5__ == 32 */ - #endif /* ! __SH4__ */ - #endif -@@ -924,9 +1063,10 @@ - !! - !! - --!! args in r4 and r5, result in r0 clobber r1,r2,r3 -+!! args in r4 and r5, result in r0 clobber r1, r2, r3, and t bit - - .global GLOBAL(sdivsi3) -+ FUNC(GLOBAL(sdivsi3)) - #if __SHMEDIA__ - #if __SH5__ == 32 - .section .text..SHmedia32,"ax" -@@ -1076,6 +1216,7 @@ - div0: rts - mov #0,r0 - -+ ENDFUNC(GLOBAL(sdivsi3)) - #endif /* ! __SHMEDIA__ */ - #endif /* ! __SH4__ */ - #endif -@@ -1084,9 +1225,11 @@ - .title "SH DIVIDE" - !! 4 byte integer Divide code for the Hitachi SH - #ifdef __SH4__ --!! args in r4 and r5, result in fpul, clobber r0, r1, r4, r5, dr0, dr2, dr4 -+!! args in r4 and r5, result in fpul, clobber r0, r1, r4, r5, dr0, dr2, dr4, -+!! and t bit - - .global GLOBAL(udivsi3_i4) -+ FUNC(GLOBAL(udivsi3_i4)) - GLOBAL(udivsi3_i4): - mov #1,r1 - cmp/hi r1,r5 -@@ -1127,6 +1270,8 @@ - L1: - .double 2147483648 - -+ ENDFUNC(GLOBAL(udivsi3_i4)) -+ - #elif defined(__SH4_SINGLE__) || defined(__SH4_SINGLE_ONLY__) || (defined (__SH5__) && ! defined __SH4_NOFPU__) - !! args in r4 and r5, result in fpul, clobber r0, r1, r4, r5, dr0, dr2, dr4 - -@@ -1135,6 +1280,7 @@ - .mode SHcompact - #endif - .global GLOBAL(udivsi3_i4) -+ FUNC(GLOBAL(udivsi3_i4)) - GLOBAL(udivsi3_i4): - mov #1,r1 - cmp/hi r1,r5 -@@ -1183,6 +1329,8 @@ - #endif - .double 2147483648 - -+ ENDFUNC(GLOBAL(udivsi3_i4)) -+ - #endif /* ! __SH5__ || __SH5__ == 32 */ - #endif /* ! __SH4__ */ - #endif -@@ -1199,6 +1347,7 @@ - - !! args in r4 and r5, result in r0, clobbers r4, pr, and t bit - .global GLOBAL(udivsi3) -+ FUNC(GLOBAL(udivsi3)) - - #if __SHMEDIA__ - #if __SH5__ == 32 -@@ -1299,6 +1448,8 @@ - ret: rts - mov r4,r0 - -+ ENDFUNC(GLOBAL(udivsi3)) -+ - #endif /* ! __SHMEDIA__ */ - #endif /* __SH4__ */ - #endif -@@ -1308,6 +1459,7 @@ - .mode SHcompact - #endif - .global GLOBAL(set_fpscr) -+ FUNC(GLOBAL(set_fpscr)) - GLOBAL(set_fpscr): - lds r4,fpscr - mov.l LOCAL(set_fpscr_L1),r1 -@@ -1340,11 +1492,16 @@ - .align 2 - LOCAL(set_fpscr_L1): - .long GLOBAL(fpscr_values) -+ -+ ENDFUNC(GLOBAL(set_fpscr)) -+ -+#ifndef NO_FPSCR_VALUES - #ifdef __ELF__ - .comm GLOBAL(fpscr_values),8,4 - #else - .comm GLOBAL(fpscr_values),8 - #endif /* ELF */ -+#endif /* NO_FPSCR_VALUES */ - #endif /* SH3E / SH4 */ - #endif /* L_set_fpscr */ - #ifdef L_ic_invalidate -@@ -1360,6 +1517,7 @@ - blink tr0, r63 - #elif defined(__SH4_SINGLE__) || defined(__SH4__) || defined(__SH4_SINGLE_ONLY__) - .global GLOBAL(ic_invalidate) -+ FUNC(GLOBAL(ic_invalidate)) - GLOBAL(ic_invalidate): - ocbwb @r4 - mova 0f,r0 -@@ -1382,6 +1540,9 @@ - nop - .endr - .endr -+ -+ ENDFUNC(GLOBAL(ic_invalidate)) -+ - #endif /* SH4 */ - #endif /* L_ic_invalidate */ - -diff -ruN gcc-20030210.orig/gcc/config/sh/libgcc-glibc.ver gcc-20030210/gcc/config/sh/libgcc-glibc.ver ---- gcc-20030210.orig/gcc/config/sh/libgcc-glibc.ver Thu Jan 1 09:00:00 1970 -+++ gcc-20030210/gcc/config/sh/libgcc-glibc.ver Sat Feb 22 01:40:14 2003 -@@ -0,0 +1,21 @@ -+# In order to work around the very problems that force us to now generally -+# create a libgcc.so, glibc reexported a number of routines from libgcc.a. -+# By now choosing the same version tags for these specific routines, we -+# maintain enough binary compatibility to allow future versions of glibc -+# to defer implementation of these routines to libgcc.so via DT_AUXILIARY. -+ -+# Note that we cannot use the default libgcc-glibc.ver file on sh, -+# because GLIBC_2.0 does not exist on this architecture, as the first -+# ever glibc release on the platform was GLIBC_2.2. -+ -+%inherit GCC_3.0 GLIBC_2.2 -+GLIBC_2.2 { -+ __register_frame -+ __register_frame_table -+ __deregister_frame -+ __register_frame_info -+ __deregister_frame_info -+ __frame_state_for -+ __register_frame_info_table -+} -+ -diff -ruN gcc-20030210.orig/gcc/config/sh/linux.h gcc-20030210/gcc/config/sh/linux.h ---- gcc-20030210.orig/gcc/config/sh/linux.h Tue Apr 16 05:27:42 2002 -+++ gcc-20030210/gcc/config/sh/linux.h Sat Feb 22 01:40:14 2003 -@@ -19,6 +19,10 @@ - the Free Software Foundation, 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ - -+/* We're not SYSVR4, not having /usr/ccs */ -+#undef MD_EXEC_PREFIX -+#undef MD_STARTFILE_PREFIX -+ - /* Run-time Target Specification. */ - #undef TARGET_VERSION - #define TARGET_VERSION fputs (" (SH GNU/Linux with ELF)", stderr); -@@ -39,6 +43,28 @@ - #undef WCHAR_TYPE_SIZE - #define WCHAR_TYPE_SIZE BITS_PER_WORD - -+/* This was defined in linux.h. Define it here also. */ -+#undef DEFAULT_VTABLE_THUNKS -+#define DEFAULT_VTABLE_THUNKS 1 -+ -+/* Likewise. */ -+#define HANDLE_PRAGMA_PACK_PUSH_POP -+ -+/* Pick up the return address upon entry to a procedure. Used for -+ dwarf2 unwind information. This also enables the table driven -+ mechanism. */ -+ -+#define INCOMING_RETURN_ADDR_RTX gen_rtx_REG (Pmode, PR_REG) -+#define DWARF_FRAME_RETURN_COLUMN DWARF_FRAME_REGNUM (PR_REG) -+ -+#undef CPP_SPEC -+#define CPP_SPEC "\ -+ %{m4:-D__SH4__} \ -+ %{!m4:%(cpp_default_cpu_spec)} \ -+ %(subtarget_cpp_spec) \ -+ %(subtarget_cpp_ptr_spec) \ -+ %(subtarget_cpp_endian_spec) " -+ - #undef SUBTARGET_CPP_SPEC - #define SUBTARGET_CPP_SPEC "\ - %{fPIC:-D__PIC__ -D__pic__} \ -@@ -55,36 +81,45 @@ - #undef CPP_DEFAULT_CPU_SPEC - #define CPP_DEFAULT_CPU_SPEC "-D__SH3__ -D__sh3__" - -- - #undef CPP_PREDEFINES - #define CPP_PREDEFINES "-D__ELF__ -Dunix -D__sh__ -D__gnu_linux__ -Dlinux -Asystem=posix" - -+/* The GNU C++ standard library requires that these macros be defined. */ -+#undef CPLUSPLUS_CPP_SPEC -+#define CPLUSPLUS_CPP_SPEC "-D_GNU_SOURCE %(cpp)" -+ - #undef ASM_SPEC --#define ASM_SPEC "%{!mb:-little} %{mrelax:-relax}" -+#define ASM_SPEC "%{mb:-big} %{!mb:-little} %{mrelax:-relax}" - - #undef CC1_SPEC - #define CC1_SPEC \ -- "-musermode %{!mb:-ml} %{!m3e:%{!m4:-m3}}" -- --#undef CC1PLUS_SPEC --#define CC1PLUS_SPEC \ -- "-musermode %{!mb:-ml} %{!m3e:%{!m4:-m3}}" -+ "-musermode %{!mb:-ml} %{!m4:-m3} %{profile:-p}" - -+/* XXX: It's wrong if prefix != /usr */ - #undef LINK_SPEC - #define LINK_SPEC \ -- "%{!mb:-m shlelf_linux} %{mrelax:-relax} \ -+ "%{!mb:-m shlelf_linux -EL} %{mb:-m shelf_linux -EB} %{mrelax:-relax} \ - %{shared:-shared} \ - %{!static: \ - %{rdynamic:-export-dynamic} \ - %{!dynamic-linker:-dynamic-linker /lib/ld-linux.so.2} \ -- %{!rpath:-rpath /lib}} \ -+ %{!mb:%{!m4:-rpath-link /usr/sh-linux/lib }} \ -+ %{!mb:%{m4:-rpath-link /usr/sh-linux/lib/m4 }} \ -+ %{mb:%{!m4:-rpath-link /usr/sh-linux/lib/mb }} \ -+ %{mb:%{m4:-rpath-link /usr/sh-linux/lib/mb/m4 }}} \ - %{static:-static}" - - #undef LIB_SPEC -+#undef LIB_SPEC - #define LIB_SPEC \ - "%{shared: -lc} \ -- %{!shared: %{pthread:-lthread} \ -- %{profile:-lc_p} %{!profile: -lc}}" -+ %{!shared: %{mieee:-lieee} %{pthread:-lpthread} \ -+ %{profile:-lc_p} %{!profile: -lc}}" -+ -+#if defined(HAVE_LD_EH_FRAME_HDR) -+#undef LINK_EH_SPEC -+#define LINK_EH_SPEC "%{!static:--eh-frame-hdr} " -+#endif - - #undef STARTFILE_SPEC - #define STARTFILE_SPEC \ -@@ -92,4 +127,40 @@ - %{pg:gcrt1.o%s} %{!pg:%{p:gcrt1.o%s} \ - %{!p:%{profile:gcrt1.o%s} \ - %{!profile:crt1.o%s}}}} \ -- crti.o%s %{!shared:crtbegin.o%s} %{shared:crtbeginS.o%s}" -+ crti.o%s %{static:crtbeginT.o%s}\ -+ %{!static:%{!shared:crtbegin.o%s} %{shared:crtbeginS.o%s}}" -+ -+#undef FUNCTION_PROFILER -+#define FUNCTION_PROFILER(STREAM,LABELNO) \ -+do \ -+{ \ -+ if (flag_pic) \ -+ { \ -+ fprintf (STREAM, " mov.l 3f,r1\n"); \ -+ fprintf (STREAM, " mova 3f,r0\n"); \ -+ fprintf (STREAM, " add r1,r0\n"); \ -+ fprintf (STREAM, " mov.l 1f,r1\n"); \ -+ fprintf (STREAM, " mov.l @(r0,r1),r1\n"); \ -+ } \ -+ else \ -+ { \ -+ fprintf (STREAM, " mov.l 1f,r1\n"); \ -+ } \ -+ fprintf (STREAM, " sts.l pr,@-r15\n"); \ -+ fprintf (STREAM, " mova 2f,r0\n"); \ -+ fprintf (STREAM, " jmp @r1\n"); \ -+ fprintf (STREAM, " lds r0,pr\n"); \ -+ fprintf (STREAM, " .align 2\n"); \ -+ if (flag_pic) \ -+ { \ -+ fprintf (STREAM, "1: .long mcount@GOT\n"); \ -+ fprintf (STREAM, "3: .long _GLOBAL_OFFSET_TABLE_\n"); \ -+ } \ -+ else \ -+ { \ -+ fprintf (STREAM, "1: .long mcount\n"); \ -+ } \ -+ fprintf (STREAM, "2: lds.l @r15+,pr\n"); \ -+} while (0) -+ -+#define NO_SHARED_LIBGCC_MULTILIB -diff -ruN gcc-20030210.orig/gcc/config/sh/sh-protos.h gcc-20030210/gcc/config/sh/sh-protos.h ---- gcc-20030210.orig/gcc/config/sh/sh-protos.h Fri Feb 22 01:42:28 2002 -+++ gcc-20030210/gcc/config/sh/sh-protos.h Sat Feb 22 01:40:14 2003 -@@ -74,6 +74,7 @@ - extern int shl_sext_length PARAMS ((rtx)); - extern int gen_shl_sext PARAMS ((rtx, rtx, rtx, rtx)); - extern rtx gen_datalabel_ref PARAMS ((rtx)); -+extern int shl_casesi_worker_length PARAMS ((rtx)); - extern int regs_used PARAMS ((rtx, int)); - extern void fixup_addr_diff_vecs PARAMS ((rtx)); - extern int get_dest_uid PARAMS ((rtx, int)); -diff -ruN gcc-20030210.orig/gcc/config/sh/sh.c gcc-20030210/gcc/config/sh/sh.c ---- gcc-20030210.orig/gcc/config/sh/sh.c Fri Feb 22 01:42:28 2002 -+++ gcc-20030210/gcc/config/sh/sh.c Sat Feb 22 01:40:14 2003 -@@ -2143,6 +2143,48 @@ - return sym; - } - -+ -+/* Function to be used in the length attribute of the casesi_worker -+ instruction. Returns number of instructions, which is half of the -+ length of bytes. */ -+ -+int -+shl_casesi_worker_length (insn) -+ rtx insn; -+{ -+ rtx set_src, label; -+ rtx diff_vec; -+ -+ set_src = SET_SRC (XVECEXP (PATTERN (insn), 0, 0)); -+ if (!(GET_CODE (set_src) == UNSPEC -+ && XINT (set_src, 1) == UNSPEC_CASESI)) -+ abort (); -+ -+ label = XVECEXP (set_src, 0, 2); -+ if (GET_CODE (label) != LABEL_REF) -+ abort (); -+ -+ diff_vec = PATTERN (next_real_insn (XEXP (label, 0))); -+ -+ if (GET_CODE (diff_vec) != ADDR_DIFF_VEC) -+ abort (); -+ -+ switch (GET_MODE (diff_vec)) -+ { -+ case SImode: -+ return 2; -+ case HImode: -+ if (ADDR_DIFF_VEC_FLAGS (diff_vec).offset_unsigned) -+ return 3; -+ return 2; -+ case QImode: -+ if (ADDR_DIFF_VEC_FLAGS (diff_vec).offset_unsigned) -+ return 2; -+ return 1; -+ default: -+ abort (); -+ } -+} - - /* The SH cannot load a large constant into a register, constants have to - come from a pc relative load. The reference of a pc relative load -@@ -3190,7 +3232,7 @@ - vec_lab = XEXP (XEXP (pat, 0), 0); - - /* Search the matching casesi_jump_2. */ -- for (prev = vec_lab; ; prev = PREV_INSN (prev)) -+ for (prev = vec_lab; prev; prev = PREV_INSN (prev)) - { - if (GET_CODE (prev) != JUMP_INSN) - continue; -@@ -3205,6 +3247,13 @@ - break; - } - -+ if (prev == NULL) -+ { /* Switch statement has been optimized out. */ -+ delete_insn (PREV_INSN (insn)); -+ delete_insn (insn); -+ continue; -+ } -+ - /* Emit the reference label of the braf where it belongs, right after - the casesi_jump_2 (i.e. braf). */ - braf_label = XEXP (XEXP (SET_SRC (XVECEXP (prevpat, 0, 0)), 1), 0); -@@ -3223,7 +3272,7 @@ - rtx barrier_or_label; - { - rtx next = next_real_insn (barrier_or_label), pat, prev; -- int slot, credit, jump_to_next; -+ int slot, credit, jump_to_next = 0; - - if (! next) - return 0; -@@ -4507,7 +4556,8 @@ - if (current_function_varargs || current_function_stdarg) - { - /* This is not used by the SH3E calling convention */ -- if (TARGET_SH1 && ! TARGET_SH3E && ! TARGET_SH5 && ! TARGET_HITACHI) -+ if (TARGET_SH1 && ! TARGET_SH3E && ! TARGET_SH5 && ! TARGET_HITACHI -+ || TARGET_NO_IMPLICIT_FP) - { - /* Push arg regs as if they'd been provided by caller in stack. */ - for (i = 0; i < NPARM_REGS(SImode); i++) -@@ -5149,7 +5199,8 @@ - tree f_next_o, f_next_o_limit, f_next_fp, f_next_fp_limit, f_next_stack; - tree record; - -- if (TARGET_SH5 || (! TARGET_SH3E && ! TARGET_SH4) || TARGET_HITACHI) -+ if (TARGET_SH5 || (! TARGET_SH3E && ! TARGET_SH4) || TARGET_HITACHI -+ || TARGET_NO_IMPLICIT_FP) - return ptr_type_node; - - record = make_node (RECORD_TYPE); -@@ -5211,7 +5262,8 @@ - return; - } - -- if ((! TARGET_SH3E && ! TARGET_SH4) || TARGET_HITACHI) -+ if ((! TARGET_SH3E && ! TARGET_SH4) -+ || TARGET_HITACHI || TARGET_NO_IMPLICIT_FP) - { - std_expand_builtin_va_start (stdarg_p, valist, nextarg); - return; -@@ -5289,7 +5341,8 @@ - rsize = (size + UNITS_PER_WORD - 1) & -UNITS_PER_WORD; - pptr_type_node = build_pointer_type (ptr_type_node); - -- if (! TARGET_SH5 && (TARGET_SH3E || TARGET_SH4) && ! TARGET_HITACHI) -+ if (! TARGET_SH5 && (TARGET_SH3E || TARGET_SH4) -+ && ! TARGET_HITACHI && ! TARGET_NO_IMPLICIT_FP) - { - tree f_next_o, f_next_o_limit, f_next_fp, f_next_fp_limit, f_next_stack; - tree next_o, next_o_limit, next_fp, next_fp_limit, next_stack; -diff -ruN gcc-20030210.orig/gcc/config/sh/sh.h gcc-20030210/gcc/config/sh/sh.h ---- gcc-20030210.orig/gcc/config/sh/sh.h Fri Feb 22 01:42:28 2002 -+++ gcc-20030210/gcc/config/sh/sh.h Sat Feb 22 01:40:14 2003 -@@ -147,10 +147,10 @@ - #define HARD_SH4_BIT (1<<5) - #define FPU_SINGLE_BIT (1<<7) - #define SH4_BIT (1<<12) -+#define NO_IMPLICIT_FP_BIT (1<<3) - #define FMOVD_BIT (1<<4) - #define SH5_BIT (1<<0) - #define SPACE_BIT (1<<13) --#define BIGTABLE_BIT (1<<14) - #define RELAX_BIT (1<<15) - #define USERMODE_BIT (1<<16) - #define HITACHI_BIT (1<<22) -@@ -205,6 +205,9 @@ - /* Nonzero if we should generate code for a SH5 CPU (either ISA). */ - #define TARGET_SH5 (target_flags & SH5_BIT) - -+/* Nonzero if we should not use FPU implicitly. */ -+#define TARGET_NO_IMPLICIT_FP (target_flags & NO_IMPLICIT_FP_BIT) -+ - /* Nonzero if we should generate code using the SHcompact instruction - set and 32-bit ABI. */ - #define TARGET_SHCOMPACT (TARGET_SH5 && TARGET_SH1) -@@ -225,6 +228,7 @@ - - /* Nonzero if we should generate code using SHmedia FPU instructions. */ - #define TARGET_SHMEDIA_FPU (TARGET_SHMEDIA && TARGET_FPU_DOUBLE) -+ - /* Nonzero if we should generate fmovd. */ - #define TARGET_FMOVD (target_flags & FMOVD_BIT) - -@@ -234,9 +238,6 @@ - /* Nonzero if we should generate smaller code rather than faster code. */ - #define TARGET_SMALLCODE (target_flags & SPACE_BIT) - --/* Nonzero to use long jump tables. */ --#define TARGET_BIGTABLE (target_flags & BIGTABLE_BIT) -- - /* Nonzero to generate pseudo-ops needed by the assembler and linker - to do function call relaxing. */ - #define TARGET_RELAX (target_flags & RELAX_BIT) -@@ -297,7 +298,6 @@ - {"5-compact-nofpu", TARGET_NONE, "" }, \ - {"5-compact-nofpu", SH5_BIT|SH3_BIT|SH2_BIT|SH1_BIT, "Generate FPU-less SHcompact code" }, \ - {"b", -LITTLE_ENDIAN_BIT, "" }, \ -- {"bigtable", BIGTABLE_BIT, "" }, \ - {"dalign", DALIGN_BIT, "" }, \ - {"fmovd", FMOVD_BIT, "" }, \ - {"hitachi", HITACHI_BIT, "" }, \ -@@ -306,6 +306,7 @@ - {"isize", ISIZE_BIT, "" }, \ - {"l", LITTLE_ENDIAN_BIT, "" }, \ - {"no-ieee", -IEEE_BIT, "" }, \ -+ {"no-implicit-fp", NO_IMPLICIT_FP_BIT, "" }, \ - {"padstruct", PADSTRUCT_BIT, "" }, \ - {"prefergot", PREFERGOT_BIT, "" }, \ - {"relax", RELAX_BIT, "" }, \ -@@ -2493,16 +2494,22 @@ - goto LABEL; \ - } - -+extern int optimize; /* needed for gen_casesi. */ -+extern int optimize_size; -+ - /* Specify the machine mode that this machine uses - for the index in the tablejump instruction. */ --#define CASE_VECTOR_MODE (TARGET_BIGTABLE ? SImode : HImode) -+#define CASE_VECTOR_MODE SImode - - #define CASE_VECTOR_SHORTEN_MODE(MIN_OFFSET, MAX_OFFSET, BODY) \ - ((MIN_OFFSET) >= 0 && (MAX_OFFSET) <= 127 \ - ? (ADDR_DIFF_VEC_FLAGS (BODY).offset_unsigned = 0, QImode) \ - : (MIN_OFFSET) >= 0 && (MAX_OFFSET) <= 255 \ - ? (ADDR_DIFF_VEC_FLAGS (BODY).offset_unsigned = 1, QImode) \ -- : (MIN_OFFSET) >= -32768 && (MAX_OFFSET) <= 32767 ? HImode \ -+ : (MIN_OFFSET) >= -32768 && (MAX_OFFSET) <= 32767 \ -+ ? (ADDR_DIFF_VEC_FLAGS (BODY).offset_unsigned = 0, HImode) \ -+ : optimize_size && (MIN_OFFSET) >= 0 && (MAX_OFFSET) <= 65535 \ -+ ? (ADDR_DIFF_VEC_FLAGS (BODY).offset_unsigned = 1, HImode) \ - : SImode) - - /* Define as C expression which evaluates to nonzero if the tablejump -@@ -3038,10 +3045,7 @@ - /* Output an absolute table element. */ - - #define ASM_OUTPUT_ADDR_VEC_ELT(STREAM,VALUE) \ -- if (TARGET_BIGTABLE) \ -- asm_fprintf ((STREAM), "\t.long\t%LL%d\n", (VALUE)); \ -- else \ -- asm_fprintf ((STREAM), "\t.word\t%LL%d\n", (VALUE)); \ -+ asm_fprintf ((STREAM), "\t.long\t%LL%d\n", (VALUE)) - - /* Output various types of constants. */ - -@@ -3167,8 +3171,6 @@ - #define sh_cpu_attr ((enum attr_cpu)sh_cpu) - extern enum processor_type sh_cpu; - --extern int optimize; /* needed for gen_casesi. */ -- - enum mdep_reorg_phase_e - { - SH_BEFORE_MDEP_REORG, -diff -ruN gcc-20030210.orig/gcc/config/sh/sh.md gcc-20030210/gcc/config/sh/sh.md ---- gcc-20030210.orig/gcc/config/sh/sh.md Sat Nov 23 04:58:06 2002 -+++ gcc-20030210/gcc/config/sh/sh.md Sat Feb 22 01:40:14 2003 -@@ -1242,7 +1242,7 @@ - (clobber (reg:SI PR_REG)) - (clobber (reg:SI R4_REG)) - (use (match_operand:SI 1 "arith_reg_operand" "r"))] -- "TARGET_SH1 && ! TARGET_SH4" -+ "TARGET_SH1 && ! TARGET_SH4 || TARGET_NO_IMPLICIT_FP" - "jsr @%1%#" - [(set_attr "type" "sfunc") - (set_attr "needs_delay_slot" "yes")]) -@@ -1336,7 +1336,7 @@ - - operands[3] = gen_reg_rtx (Pmode); - /* Emit the move of the address to a pseudo outside of the libcall. */ -- if (TARGET_HARD_SH4 && TARGET_SH3E) -+ if (TARGET_HARD_SH4 && TARGET_SH3E && !TARGET_NO_IMPLICIT_FP) - { - emit_move_insn (operands[3], - gen_rtx_SYMBOL_REF (SImode, \"__udivsi3_i4\")); -@@ -1391,7 +1391,7 @@ - (clobber (reg:SI R2_REG)) - (clobber (reg:SI R3_REG)) - (use (match_operand:SI 1 "arith_reg_operand" "r"))] -- "TARGET_SH1 && ! TARGET_SH4" -+ "TARGET_SH1 && ! TARGET_SH4 || TARGET_NO_IMPLICIT_FP" - "jsr @%1%#" - [(set_attr "type" "sfunc") - (set_attr "needs_delay_slot" "yes")]) -@@ -1476,7 +1476,7 @@ - - operands[3] = gen_reg_rtx (Pmode); - /* Emit the move of the address to a pseudo outside of the libcall. */ -- if (TARGET_HARD_SH4 && TARGET_SH3E) -+ if (TARGET_HARD_SH4 && TARGET_SH3E && !TARGET_NO_IMPLICIT_FP) - { - emit_move_insn (operands[3], - gen_rtx_SYMBOL_REF (SImode, \"__sdivsi3_i4\")); -@@ -6446,6 +6446,8 @@ - case SImode: - return \"shll2 %1\;mov.l @(r0,%1),%0\"; - case HImode: -+ if (ADDR_DIFF_VEC_FLAGS (diff_vec).offset_unsigned) -+ return \"add %1,%1\;mov.w @(r0,%1),%0\;extu.w %0,%0\"; - return \"add %1,%1\;mov.w @(r0,%1),%0\"; - case QImode: - if (ADDR_DIFF_VEC_FLAGS (diff_vec).offset_unsigned) -@@ -6455,7 +6457,15 @@ - abort (); - } - }" -- [(set_attr "length" "4")]) -+ [(set (attr "length") -+ (cond [(eq (symbol_ref "shl_casesi_worker_length (insn)") (const_int 1)) -+ (const_string "2") -+ (eq (symbol_ref "shl_casesi_worker_length (insn)") (const_int 2)) -+ (const_string "4") -+ ;; Put "match_dup" here so that insn_variable_length_p return 1. -+ (ne (match_dup 2) (match_dup 2)) -+ (const_string "4")] -+ (const_string "6")))]) - - (define_insn "casesi_shift_media" - [(set (match_operand 0 "arith_reg_operand" "=r") -diff -ruN gcc-20030210.orig/gcc/config/sh/sh3-linux.h gcc-20030210/gcc/config/sh/sh3-linux.h ---- gcc-20030210.orig/gcc/config/sh/sh3-linux.h Thu Jan 1 09:00:00 1970 -+++ gcc-20030210/gcc/config/sh/sh3-linux.h Sat Feb 22 01:40:14 2003 -@@ -0,0 +1,29 @@ -+#undef TARGET_VERSION -+#define TARGET_VERSION fputs (" (SH3 GNU/Linux with ELF)", stderr); -+ -+#undef CPP_SPEC -+#define CPP_SPEC \ -+ "-D__LITTLE_ENDIAN__ \ -+ -D__SH3__ -D__sh3__ \ -+ -D__SIZE_TYPE__=unsigned\\ int \ -+ -D__PTRDIFF_TYPE__=int \ -+ %{fPIC:-D__PIC__ -D__pic__} \ -+ %{fpic:-D__PIC__ -D__pic__} \ -+ %{posix:-D_POSIX_SOURCE} \ -+ %{pthread:-D_REENTRANT -D_PTHREADS}" -+ -+#undef ASM_SPEC -+#define ASM_SPEC "%{mrelax:-relax}" -+ -+#undef CC1_SPEC -+#define CC1_SPEC \ -+ "-musermode -ml -m3 %{profile:-p}" -+ -+#undef LINK_SPEC -+#define LINK_SPEC \ -+ "%{mrelax:-relax} \ -+ %{shared:-shared} \ -+ %{!static: \ -+ %{rdynamic:-export-dynamic} \ -+ %{!dynamic-linker:-dynamic-linker /lib/ld-linux.so.2}} \ -+ %{static:-static}" -diff -ruN gcc-20030210.orig/gcc/config/sh/sh3eb-linux.h gcc-20030210/gcc/config/sh/sh3eb-linux.h ---- gcc-20030210.orig/gcc/config/sh/sh3eb-linux.h Thu Jan 1 09:00:00 1970 -+++ gcc-20030210/gcc/config/sh/sh3eb-linux.h Sat Feb 22 01:40:14 2003 -@@ -0,0 +1,29 @@ -+#undef TARGET_VERSION -+#define TARGET_VERSION fputs (" (SH3EB GNU/Linux with ELF)", stderr); -+ -+#undef CPP_SPEC -+#define CPP_SPEC \ -+ "-D__BIG_ENDIAN__ \ -+ -D__SH3__ -D__sh3__ \ -+ -D__SIZE_TYPE__=unsigned\\ int \ -+ -D__PTRDIFF_TYPE__=int \ -+ %{fPIC:-D__PIC__ -D__pic__} \ -+ %{fpic:-D__PIC__ -D__pic__} \ -+ %{posix:-D_POSIX_SOURCE} \ -+ %{pthread:-D_REENTRANT -D_PTHREADS}" -+ -+#undef ASM_SPEC -+#define ASM_SPEC "%{mrelax:-relax}" -+ -+#undef CC1_SPEC -+#define CC1_SPEC \ -+ "-musermode -mb -m3 %{profile:-p}" -+ -+#undef LINK_SPEC -+#define LINK_SPEC \ -+ "%{mrelax:-relax} \ -+ %{shared:-shared} \ -+ %{!static: \ -+ %{rdynamic:-export-dynamic} \ -+ %{!dynamic-linker:-dynamic-linker /lib/ld-linux.so.2}} \ -+ %{static:-static}" -diff -ruN gcc-20030210.orig/gcc/config/sh/sh4-linux.h gcc-20030210/gcc/config/sh/sh4-linux.h ---- gcc-20030210.orig/gcc/config/sh/sh4-linux.h Thu Jan 1 09:00:00 1970 -+++ gcc-20030210/gcc/config/sh/sh4-linux.h Sat Feb 22 01:40:14 2003 -@@ -0,0 +1,29 @@ -+#undef TARGET_VERSION -+#define TARGET_VERSION fputs (" (SH4 GNU/Linux with ELF)", stderr); -+ -+#undef CPP_SPEC -+#define CPP_SPEC \ -+ "-D__LITTLE_ENDIAN__ \ -+ -D__SH4__ \ -+ -D__SIZE_TYPE__=unsigned\\ int \ -+ -D__PTRDIFF_TYPE__=int \ -+ %{fPIC:-D__PIC__ -D__pic__} \ -+ %{fpic:-D__PIC__ -D__pic__} \ -+ %{posix:-D_POSIX_SOURCE} \ -+ %{pthread:-D_REENTRANT -D_PTHREADS}" -+ -+#undef ASM_SPEC -+#define ASM_SPEC "%{mrelax:-relax}" -+ -+#undef CC1_SPEC -+#define CC1_SPEC \ -+ "-musermode -ml -m4 %{profile:-p}" -+ -+#undef LINK_SPEC -+#define LINK_SPEC \ -+ "%{mrelax:-relax} \ -+ %{shared:-shared} \ -+ %{!static: \ -+ %{rdynamic:-export-dynamic} \ -+ %{!dynamic-linker:-dynamic-linker /lib/ld-linux.so.2}} \ -+ %{static:-static}" -diff -ruN gcc-20030210.orig/gcc/config/sh/sh4eb-linux.h gcc-20030210/gcc/config/sh/sh4eb-linux.h ---- gcc-20030210.orig/gcc/config/sh/sh4eb-linux.h Thu Jan 1 09:00:00 1970 -+++ gcc-20030210/gcc/config/sh/sh4eb-linux.h Sat Feb 22 01:40:14 2003 -@@ -0,0 +1,29 @@ -+#undef TARGET_VERSION -+#define TARGET_VERSION fputs (" (SH4EB GNU/Linux with ELF)", stderr); -+ -+#undef CPP_SPEC -+#define CPP_SPEC \ -+ "-D__BIG_ENDIAN__ \ -+ -D__SH4__ \ -+ -D__SIZE_TYPE__=unsigned\\ int \ -+ -D__PTRDIFF_TYPE__=int \ -+ %{fPIC:-D__PIC__ -D__pic__} \ -+ %{fpic:-D__PIC__ -D__pic__} \ -+ %{posix:-D_POSIX_SOURCE} \ -+ %{pthread:-D_REENTRANT -D_PTHREADS}" -+ -+#undef ASM_SPEC -+#define ASM_SPEC "%{mrelax:-relax}" -+ -+#undef CC1_SPEC -+#define CC1_SPEC \ -+ "-musermode -mb -m4 %{profile:-p}" -+ -+#undef LINK_SPEC -+#define LINK_SPEC \ -+ "%{mrelax:-relax} \ -+ %{shared:-shared} \ -+ %{!static: \ -+ %{rdynamic:-export-dynamic} \ -+ %{!dynamic-linker:-dynamic-linker /lib/ld-linux.so.2}} \ -+ %{static:-static}" -diff -ruN gcc-20030210.orig/gcc/config/sh/t-linux gcc-20030210/gcc/config/sh/t-linux ---- gcc-20030210.orig/gcc/config/sh/t-linux Thu May 17 12:16:12 2001 -+++ gcc-20030210/gcc/config/sh/t-linux Sat Feb 22 01:40:14 2003 -@@ -1,10 +1,20 @@ --TARGET_LIBGCC2_CFLAGS = -fpic -+TARGET_LIBGCC2_CFLAGS = -fpic -DNO_FPSCR_VALUES -+LIBGCC1 = libgcc1-asm.a -+CROSS_LIBGCC1 = libgcc1-asm.a -+LIBGCC1_TEST = libgcc1-test - LIB1ASMFUNCS = _ashiftrt _ashiftrt_n _ashiftlt _lshiftrt _movstr \ - _movstr_i4 _mulsi3 _sdivsi3 _sdivsi3_i4 _udivsi3 _udivsi3_i4 _set_fpscr \ - _ic_invalidate -+LIB2ADDEH = $(srcdir)/unwind-sjlj.c -+LIB2ADDEHDEP = unwind.inc unwind-sjlj.c - --MULTILIB_OPTIONS= mb m3e/m4 -+MULTILIB_OPTIONS= mb m4 - MULTILIB_DIRNAMES= - MULTILIB_MATCHES = - --EXTRA_MULTILIB_PARTS= crtbegin.o crtend.o crtbeginS.o crtendS.o -+EXTRA_MULTILIB_PARTS= crtbegin.o crtend.o crtbeginS.o crtendS.o crtbeginT.o -+ -+# Override t-slibgcc-elf-ver to export some libgcc symbols with -+# the symbol versions that glibc used and SH specific. -+SHLIB_MAPFILES = $(srcdir)/libgcc-std.ver \ -+ $(srcdir)/config/sh/libgcc-glibc.ver -diff -ruN gcc-20030210.orig/gcc/config/sh/t-linux-nomulti gcc-20030210/gcc/config/sh/t-linux-nomulti ---- gcc-20030210.orig/gcc/config/sh/t-linux-nomulti Thu Jan 1 09:00:00 1970 -+++ gcc-20030210/gcc/config/sh/t-linux-nomulti Sat Feb 22 01:40:14 2003 -@@ -0,0 +1,9 @@ -+LIBGCC = libgcc.a -+EXTRA_PARTS = crtbegin.o crtbeginS.o crtend.o crtendS.o crtbeginT.o -+ -+INSTALL_LIBGCC = install-libgcc -+ -+MULTILIB_OPTIONS= -+MULTILIB_DIRNAMES= -+MULTILIB_MATCHES = -+EXTRA_MULTILIB_PARTS= -diff -ruN gcc-20030210.orig/gcc/config.gcc gcc-20030210/gcc/config.gcc ---- gcc-20030210.orig/gcc/config.gcc Fri Jan 31 19:17:13 2003 -+++ gcc-20030210/gcc/config.gcc Sat Feb 22 01:40:14 2003 -@@ -337,9 +337,9 @@ - sparc*-*-*) - cpu_type=sparc - ;; --sh64-*-*) -- cpu_type=sh -- ;; -+sh*-*-*) -+ cpu_type=sh -+ ;; - esac - - tm_file=${cpu_type}/${cpu_type}.h -@@ -3018,9 +3018,31 @@ - thread_file='rtems' - fi - ;; --sh-*-linux*) -+sh*-*-linux*) - tm_file="${tm_file} sh/elf.h sh/linux.h" -- tmake_file="sh/t-sh sh/t-elf sh/t-linux" -+ tmake_file="sh/t-sh sh/t-elf t-slibgcc-elf-ver t-linux sh/t-linux" -+ extra_parts="crtbegin.o crtend.o crtbeginS.o crtendS.o crtbeginT.o" -+ case $machine in -+ sh3eb-*) -+ tm_file="${tm_file} sh/sh3eb-linux.h" -+ tmake_file="${tmake_file} sh/t-linux-nomulti" -+ ;; -+ sh4eb-*) -+ tm_file="${tm_file} sh/sh4eb-linux.h" -+ tmake_file="${tmake_file} sh/t-linux-nomulti" -+ ;; -+ sh3-*) -+ tm_file="${tm_file} sh/sh3-linux.h" -+ tmake_file="${tmake_file} sh/t-linux-nomulti" -+ ;; -+ sh4-*) -+ tm_file="${tm_file} sh/sh4-linux.h" -+ tmake_file="${tmake_file} sh/t-linux-nomulti" -+ ;; -+ *) -+ ;; -+ esac -+ xmake_file=x-linux - gas=yes gnu_ld=yes - float_format=sh - ;; -diff -ruN gcc-20030210.orig/gcc/dwarf2out.c gcc-20030210/gcc/dwarf2out.c ---- gcc-20030210.orig/gcc/dwarf2out.c Mon Feb 10 19:36:25 2003 -+++ gcc-20030210/gcc/dwarf2out.c Sat Feb 22 01:40:14 2003 -@@ -10224,7 +10224,9 @@ - /* We can have a normal definition following an inline one in the - case of redefinition of GNU C extern inlines. - It seems reasonable to use AT_specification in this case. */ -- && !get_AT_unsigned (old_die, DW_AT_inline)) -+ && !get_AT_unsigned (old_die, DW_AT_inline) -+ /* Skip the nested function. */ -+ && !decl_function_context (decl)) - { - /* ??? This can happen if there is a bug in the program, for - instance, if it has duplicate function definitions. Ideally, -diff -ruN gcc-20030210.orig/gcc/final.c gcc-20030210/gcc/final.c ---- gcc-20030210.orig/gcc/final.c Fri Jan 31 19:17:20 2003 -+++ gcc-20030210/gcc/final.c Sat Feb 22 01:40:14 2003 -@@ -1128,7 +1128,7 @@ - } - } - -- INSN_ADDRESSES (uid) = insn_current_address; -+ INSN_ADDRESSES (uid) = insn_current_address + insn_lengths[uid]; - - if (GET_CODE (insn) == NOTE || GET_CODE (insn) == BARRIER - || GET_CODE (insn) == CODE_LABEL) -diff -ruN gcc-20030210.orig/gcc/mkmap-symver.awk gcc-20030210/gcc/mkmap-symver.awk ---- gcc-20030210.orig/gcc/mkmap-symver.awk Fri Jan 31 19:17:26 2003 -+++ gcc-20030210/gcc/mkmap-symver.awk Sat Feb 22 01:40:14 2003 -@@ -89,7 +89,11 @@ - output(inherit[lib]); - - printf("%s {\n", lib); -- printf(" global:\n"); -+ for (sym in ver) -+ if ((ver[sym] == lib) && (sym in def)) -+ count++; -+ if (count > 0) -+ printf(" global:\n"); - for (sym in ver) - if ((ver[sym] == lib) && (sym in def)) - { -diff -ruN gcc-20030210.orig/gcc/reload1.c gcc-20030210/gcc/reload1.c ---- gcc-20030210.orig/gcc/reload1.c Fri Jan 31 19:17:29 2003 -+++ gcc-20030210/gcc/reload1.c Sat Feb 22 01:40:14 2003 -@@ -6103,6 +6103,7 @@ - for (j = 0; j < n_reloads; j++) - if (rld[j].in != 0 - && rld[j].when_needed != RELOAD_OTHER -+ && rld[j].when_needed != RELOAD_FOR_OUTPUT_ADDRESS - && reg_overlap_mentioned_for_reload_p (rld[j].in, - rld[i].in)) - rld[j].when_needed -diff -ruN gcc-20030210.orig/gcc/reorg.c gcc-20030210/gcc/reorg.c ---- gcc-20030210.orig/gcc/reorg.c Fri Jan 31 19:17:30 2003 -+++ gcc-20030210/gcc/reorg.c Sat Feb 22 01:40:14 2003 -@@ -3265,6 +3265,14 @@ - || condjump_in_parallel_p (XVECEXP (PATTERN (insn), 0, 0)))) - continue; - -+#ifdef MD_CAN_REDIRECT_BRANCH -+ /* On some targets, branches with delay slots can have a limited -+ displacement. Give the back end a chance to tell us we can't do -+ this. */ -+ if (! MD_CAN_REDIRECT_BRANCH (insn, delay_insn)) -+ continue; -+#endif -+ - target_label = JUMP_LABEL (delay_insn); - - if (target_label) -diff -ruN gcc-20030210.orig/gcc/tree-inline.c gcc-20030210/gcc/tree-inline.c ---- gcc-20030210.orig/gcc/tree-inline.c Fri Jan 31 19:17:33 2003 -+++ gcc-20030210/gcc/tree-inline.c Sat Feb 22 01:40:14 2003 -@@ -836,11 +836,17 @@ - - /* Don't try to inline functions that are not well-suited to - inlining. */ -- if (!inlinable_function_p (fn, id)) -- return NULL_TREE; -+ if (! inlinable_function_p (fn, id) -+ || ! (*lang_hooks.tree_inlining.start_inlining) (fn)) -+ { -+ if (DECL_INLINE (fn) && warn_inline && ! flag_really_no_inline) -+ { -+ warning_with_decl (fn, "inlining failed in call to `%s'"); -+ warning ("called from here"); -+ } - -- if (! (*lang_hooks.tree_inlining.start_inlining) (fn)) -- return NULL_TREE; -+ return NULL_TREE; -+ } - - /* Set the current filename and line number to the function we are - inlining so that when we create new _STMT nodes here they get -diff -ruN gcc-20030210.orig/libjava/Makefile.in gcc-20030210/libjava/Makefile.in ---- gcc-20030210.orig/libjava/Makefile.in Tue Jan 28 10:44:37 2003 -+++ gcc-20030210/libjava/Makefile.in Sat Feb 22 01:40:14 2003 -@@ -1637,6 +1637,7 @@ - "AS=$(AS)" \ - "CC=$(CC)" \ - "CXX=$(CXX)" \ -+ "GCJ=$(GCJ)" \ - "LD=$(LD)" \ - "LIBCFLAGS=$(LIBCFLAGS)" \ - "NM=$(NM)" \ -diff -ruN gcc-20030210.orig/libjava/configure gcc-20030210/libjava/configure ---- gcc-20030210.orig/libjava/configure Tue Jan 28 10:44:37 2003 -+++ gcc-20030210/libjava/configure Sat Feb 22 01:42:11 2003 -@@ -2031,7 +2031,7 @@ - # This must be Linux ELF. - linux-gnu*) - case $host_cpu in -- alpha* | hppa* | i*86 | powerpc* | sparc* | ia64* ) -+ alpha* | hppa* | i*86 | powerpc* | sparc* | ia64* | sh* ) - lt_cv_deplibs_check_method=pass_all ;; - *) - # glibc up to 2.1.1 does not perform some relocations on ARM -diff -ruN gcc-20030210.orig/libjava/java/net/natInetAddress.cc gcc-20030210/libjava/java/net/natInetAddress.cc ---- gcc-20030210.orig/libjava/java/net/natInetAddress.cc Tue Mar 5 05:02:19 2002 -+++ gcc-20030210/libjava/java/net/natInetAddress.cc Sat Feb 22 01:40:14 2003 -@@ -56,7 +56,7 @@ - #endif - - #ifndef HAVE_GETHOSTNAME_DECL --extern "C" int gethostname (char *name, int namelen); -+extern "C" int gethostname (char *name, unsigned int namelen); - #endif - - #ifdef DISABLE_JAVA_NET -diff -ruN gcc-20030210.orig/libjava/libltdl/aclocal.m4 gcc-20030210/libjava/libltdl/aclocal.m4 ---- gcc-20030210.orig/libjava/libltdl/aclocal.m4 Sun Sep 10 17:04:40 2000 -+++ gcc-20030210/libjava/libltdl/aclocal.m4 Sat Feb 22 01:40:14 2003 -@@ -573,7 +573,7 @@ - # This must be Linux ELF. - linux-gnu*) - case "$host_cpu" in -- alpha* | i*86 | powerpc* | sparc* | ia64* ) -+ alpha* | i*86 | powerpc* | sparc* | ia64* | sh*) - lt_cv_deplibs_check_method=pass_all ;; - *) - # glibc up to 2.1.1 does not perform some relocations on ARM -diff -ruN gcc-20030210.orig/libjava/sysdep/sh/locks.h gcc-20030210/libjava/sysdep/sh/locks.h ---- gcc-20030210.orig/libjava/sysdep/sh/locks.h Thu Jan 1 09:00:00 1970 -+++ gcc-20030210/libjava/sysdep/sh/locks.h Sat Feb 22 01:40:14 2003 -@@ -0,0 +1,72 @@ -+// locks.h - Thread synchronization primitives. SuperH implementation. -+ -+/* Copyright (C) 2002 Free Software Foundation -+ -+ This file is part of libgcj. -+ -+This software is copyrighted work licensed under the terms of the -+Libgcj License. Please consult the file "LIBGCJ_LICENSE" for -+details. */ -+ -+#ifndef __SYSDEP_LOCKS_H__ -+#define __SYSDEP_LOCKS_H__ -+ -+typedef size_t obj_addr_t; /* Integer type big enough for object */ -+ /* address. */ -+ -+static unsigned char __cas_lock = 0; -+ -+inline static void -+__cas_start_atomic (void) -+{ -+ unsigned int val; -+ -+ do -+ __asm__ __volatile__ ("tas.b @%1; movt %0" -+ : "=r" (val) -+ : "r" (&__cas_lock) -+ : "memory"); -+ while (val == 0); -+} -+ -+inline static void -+__cas_end_atomic (void) -+{ -+ __asm__ __volatile__ (" " : : : "memory"); -+ __cas_lock = 0; -+} -+ -+inline static bool -+compare_and_swap (volatile obj_addr_t *addr, obj_addr_t old, -+ obj_addr_t new_val) -+{ -+ bool ret; -+ -+ __cas_start_atomic (); -+ if (*addr != old) -+ ret = false; -+ else -+ { -+ *addr = new_val; -+ ret = true; -+ } -+ __cas_end_atomic (); -+ -+ return ret; -+} -+ -+inline static void -+release_set (volatile obj_addr_t *addr, obj_addr_t new_val) -+{ -+ __asm__ __volatile__ (" " : : : "memory"); -+ *(addr) = new_val; -+} -+ -+inline static bool -+compare_and_swap_release (volatile obj_addr_t *addr, obj_addr_t old, -+ obj_addr_t new_val) -+{ -+ return compare_and_swap (addr, old, new_val); -+} -+ -+#endif /* ! __SYSDEP_LOCKS_H__ */ -diff -ruN gcc-20030210.orig/libstdc++-v3/acinclude.m4 gcc-20030210/libstdc++-v3/acinclude.m4 ---- gcc-20030210.orig/libstdc++-v3/acinclude.m4 Tue Jan 28 02:30:41 2003 -+++ gcc-20030210/libstdc++-v3/acinclude.m4 Sat Feb 22 01:40:14 2003 -@@ -1828,9 +1828,10 @@ - GLIBCPP_INCLUDES="-I${glibcpp_builddir}/include/${target_alias} -I${glibcpp_builddir}/include" - - # Passed down for canadian crosses. -- if test x"$CANADIAN" = xyes; then -- TOPLEVEL_INCLUDES='-I$(includedir)' -- fi -+ #if test x"$CANADIAN" = xyes; then -+ # TOPLEVEL_INCLUDES='-I$(includedir)' -+ #fi -+ TOPLEVEL_INCLUDES='' - - LIBMATH_INCLUDES='-I$(top_srcdir)/libmath' - -diff -ruN gcc-20030210.orig/libstdc++-v3/aclocal.m4 gcc-20030210/libstdc++-v3/aclocal.m4 ---- gcc-20030210.orig/libstdc++-v3/aclocal.m4 Mon Feb 10 19:36:47 2003 -+++ gcc-20030210/libstdc++-v3/aclocal.m4 Sat Feb 22 01:40:14 2003 -@@ -1840,9 +1840,10 @@ - GLIBCPP_INCLUDES="-I${glibcpp_builddir}/include/${target_alias} -I${glibcpp_builddir}/include" - - # Passed down for canadian crosses. -- if test x"$CANADIAN" = xyes; then -- TOPLEVEL_INCLUDES='-I$(includedir)' -- fi -+ #if test x"$CANADIAN" = xyes; then -+ # TOPLEVEL_INCLUDES='-I$(includedir)' -+ #fi -+ TOPLEVEL_INCLUDES='' - - LIBMATH_INCLUDES='-I$(top_srcdir)/libmath' - -diff -ruN gcc-20030210.orig/libstdc++-v3/configure gcc-20030210/libstdc++-v3/configure ---- gcc-20030210.orig/libstdc++-v3/configure Mon Feb 10 19:37:17 2003 -+++ gcc-20030210/libstdc++-v3/configure Sat Feb 22 01:40:14 2003 -@@ -1982,7 +1982,7 @@ - # This must be Linux ELF. - linux-gnu*) - case $host_cpu in -- alpha* | hppa* | i*86 | powerpc* | sparc* | ia64* ) -+ alpha* | hppa* | i*86 | powerpc* | sparc* | ia64* | sh*) - lt_cv_deplibs_check_method=pass_all ;; - *) - # glibc up to 2.1.1 does not perform some relocations on ARM -@@ -22340,9 +22340,10 @@ - GLIBCPP_INCLUDES="-I${glibcpp_builddir}/include/${target_alias} -I${glibcpp_builddir}/include" - - # Passed down for canadian crosses. -- if test x"$CANADIAN" = xyes; then -- TOPLEVEL_INCLUDES='-I$(includedir)' -- fi -+ #if test x"$CANADIAN" = xyes; then -+ # TOPLEVEL_INCLUDES='-I$(includedir)' -+ #fi -+ TOPLEVEL_INCLUDES='' - - LIBMATH_INCLUDES='-I$(top_srcdir)/libmath' - -diff -ruN gcc-20030210.orig/libtool.m4 gcc-20030210/libtool.m4 ---- gcc-20030210.orig/libtool.m4 Fri Jan 31 19:16:59 2003 -+++ gcc-20030210/libtool.m4 Sat Feb 22 01:40:14 2003 -@@ -597,7 +597,7 @@ - # This must be Linux ELF. - linux-gnu*) - case $host_cpu in -- alpha* | hppa* | i*86 | powerpc* | sparc* | ia64* ) -+ alpha* | hppa* | i*86 | powerpc* | sparc* | ia64* | sh* ) - lt_cv_deplibs_check_method=pass_all ;; - *) - # glibc up to 2.1.1 does not perform some relocations on ARM -diff -ruN gcc-20030210.orig/zlib/configure gcc-20030210/zlib/configure ---- gcc-20030210.orig/zlib/configure Tue Jan 28 10:44:15 2003 -+++ gcc-20030210/zlib/configure Sat Feb 22 01:40:14 2003 -@@ -1571,7 +1571,7 @@ - # This must be Linux ELF. - linux-gnu*) - case $host_cpu in -- alpha* | hppa* | i*86 | powerpc* | sparc* | ia64* ) -+ alpha* | hppa* | i*86 | powerpc* | sparc* | ia64* | sh* ) - lt_cv_deplibs_check_method=pass_all ;; - *) - # glibc up to 2.1.1 does not perform some relocations on ARM diff --git a/patches/gcc/3.2.3/130-g++.exp.patch b/patches/gcc/3.2.3/130-g++.exp.patch deleted file mode 100644 index 0de46fc..0000000 --- a/patches/gcc/3.2.3/130-g++.exp.patch +++ /dev/null @@ -1,98 +0,0 @@ -g++ testsuite fixes for cross-compilers, Dan Kegel, Ixia Communications, 12 July 2003 - -The first hunk fixes the error - -/testsuite_flags: /testsuite_flags: No such file or directory - while executing -"exec sh ${odir_v3}/testsuite_flags --build-includes" - (procedure "g++_include_flags" line 21) - invoked from within -"g++_include_flags [get_multilibs] " - (procedure "g++_init" line 63) - invoked from within -"${tool}_init $test_file_name" - (procedure "runtest" line 19) - invoked from within -"runtest $test_name" - ("foreach" body line 42) - invoked from within -... -make[1]: [check-g++] Error 1 (ignored) - -The fix isn't especially pretty, but it worked for me, and can't hurt the -more common native compiler case. Maybe someone who knows the code better -can come up with a better fix. - -The second hunk fixes the error - -sh: error while loading shared libraries: /opt/cegl-2.0/powerpc-405-linux-gnu/gcc-3.2.3-glibc-2.2.5/powerpc-405-linux-gnu/./lib/libdl.so.2: ELF file data encoding not little-endian - -when trying to compile g++ testcases (!); setting up -the shared library environment when running crosstests of g++ -should either be done by a special board file, or by -setting up a remote chroot environment (see http://kegel.com/crosstool), -not by blithely setting LD_LIBRARY_PATH on the local system. - ---- gcc-3.2.3/gcc/testsuite/lib/g++.exp.old Fri Jul 11 15:42:47 2003 -+++ gcc-3.2.3/gcc/testsuite/lib/g++.exp Sat Jul 12 12:57:07 2003 -@@ -72,6 +72,8 @@ - # - proc g++_include_flags { paths } { - global srcdir -+ global objdir -+ global target_triplet - global HAVE_LIBSTDCXX_V3 - global TESTING_IN_BUILD_TREE - -@@ -90,6 +92,20 @@ - - if { ${HAVE_LIBSTDCXX_V3} } { - set odir_v3 [lookfor_file ${gccpath} libstdc++-v3] -+ if { $odir_v3 == "" } { -+ verbose "g++_include_flags: couldn't find libstdc++-v3 on first try, now looking in build directory $objdir" -+ # first assume no multilibs -+ set odir_v3 [lookfor_file ${objdir} "$target_triplet/libstdc++-v3"] -+ } -+ if { $odir_v3 == "" } { -+ verbose "g++_include_flags: couldn't find libstdc++-v3 on second try, trying multilib" -+ # assume multilib only one level deep -+ set multisub [file tail $gccpath] -+ set odir_v3 [lookfor_file ${objdir} "$target_triplet/$multisub/libstdc++-v3"] -+ } -+ if { $odir_v3 == "" } { -+ error "Can't find libstdc++-v3" -+ } - append flags [exec sh ${odir_v3}/testsuite_flags --build-includes] - } else { - set odir_v2 [lookfor_file ${gccpath} libstdc++] -@@ -192,16 +192,20 @@ - } - } - -- # On IRIX 6, we have to set variables akin to LD_LIBRARY_PATH, but -- # called LD_LIBRARYN32_PATH (for the N32 ABI) and LD_LIBRARY64_PATH -- # (for the 64-bit ABI). The right way to do this would be to modify -- # unix.exp -- but that's not an option since it's part of DejaGNU -- # proper, so we do it here. We really only need to do -- # this on IRIX, but it shouldn't hurt to do it anywhere else. -- setenv LD_LIBRARY_PATH $ld_library_path -- setenv SHLIB_PATH $ld_library_path -- setenv LD_LIBRARYN32_PATH $ld_library_path -- setenv LD_LIBRARY64_PATH $ld_library_path -+ if {![is_remote target]} { -+ # On IRIX 6, we have to set variables akin to LD_LIBRARY_PATH, but -+ # called LD_LIBRARYN32_PATH (for the N32 ABI) and LD_LIBRARY64_PATH -+ # (for the 64-bit ABI). The right way to do this would be to modify -+ # unix.exp -- but that's not an option since it's part of DejaGNU -+ # proper, so we do it here. We really only need to do -+ # this on IRIX, but it shouldn't hurt to do it anywhere else. -+ -+ # Doing this causes us to be unable to run cross-compilers. -+ setenv LD_LIBRARY_PATH $ld_library_path -+ setenv SHLIB_PATH $ld_library_path -+ setenv LD_LIBRARYN32_PATH $ld_library_path -+ setenv LD_LIBRARY64_PATH $ld_library_path -+ } - - return "$flags" - } diff --git a/patches/gcc/3.2.3/140-libffi-1.patch b/patches/gcc/3.2.3/140-libffi-1.patch deleted file mode 100644 index db78ba1..0000000 --- a/patches/gcc/3.2.3/140-libffi-1.patch +++ /dev/null @@ -1,6864 +0,0 @@ -diff -ruN --exclude=CVS gcc-3.2.2.orig/libffi/Makefile.am gcc/libffi/Makefile.am ---- gcc-3.2.2.orig/libffi/Makefile.am Tue Jan 28 10:43:56 2003 -+++ gcc/libffi/Makefile.am Tue Jan 28 10:48:33 2003 -@@ -8,14 +8,17 @@ - src/mips/n32.s src/mips/o32.S src/mips/o32.s \ - src/sparc/ffi.c src/sparc/v8.S src/sparc/v9.S \ - src/x86/ffi.c src/x86/sysv.S src/x86/win32.S \ -+ src/x86/ffi64.c src/x86/unix64.S \ - src/alpha/ffi.c src/alpha/osf.S \ - src/m68k/ffi.c src/m68k/sysv.S \ - src/powerpc/ffi.c src/powerpc/sysv.S \ - src/powerpc/ppc_closure.S src/powerpc/asm.h \ - src/powerpc/ffi_darwin.c \ - src/powerpc/darwin.S src/powerpc/aix.S \ -- src/powerpc/darwin_closure.S src/powerpc/aix_closures.S \ -- src/arm/ffi.c src/arm/sysv.S -+ src/powerpc/darwin_closure.S src/powerpc/aix_closure.S \ -+ src/arm/ffi.c src/arm/sysv.S \ -+ src/s390/ffi.c src/s390/sysv.S \ -+ src/sh/ffi.c src/sh/sysv.S - - VPATH = @srcdir@:@srcdir@/src:@srcdir@/src/@TARGETDIR@ - -@@ -83,6 +86,7 @@ - ffitest_LDFLAGS = -shared-libgcc - - TARGET_SRC_MIPS_GCC = src/mips/ffi.c src/mips/o32.S src/mips/n32.S -+TARGET_SRC_MIPS_LINUX = src/mips/ffi.c src/mips/o32.S - TARGET_SRC_MIPS_SGI = src/mips/ffi.c src/mips/o32.s src/mips/n32.s - TARGET_SRC_X86 = src/x86/ffi.c src/x86/sysv.S - TARGET_SRC_X86_WIN32 = src/x86/ffi.c src/x86/win32.S -@@ -91,9 +95,12 @@ - TARGET_SRC_IA64 = src/ia64/ffi.c src/ia64/unix.S - TARGET_SRC_M68K = src/m68k/ffi.c src/m68k/sysv.S - TARGET_SRC_POWERPC = src/powerpc/ffi.c src/powerpc/sysv.S src/powerpc/ppc_closure.S --TARGET_SRC_POWERPC_AIX = src/powerpc/ffi_darwin.c src/powerpc/aix.S src/powerpc/aix_closures.S -+TARGET_SRC_POWERPC_AIX = src/powerpc/ffi_darwin.c src/powerpc/aix.S src/powerpc/aix_closure.S - TARGET_SRC_POWERPC_DARWIN = src/powerpc/ffi_darwin.c src/powerpc/darwin.S src/powerpc/darwin_closure.S - TARGET_SRC_ARM = src/arm/sysv.S src/arm/ffi.c -+TARGET_SRC_S390 = src/s390/sysv.S src/s390/ffi.c -+TARGET_SRC_X86_64 = src/x86/ffi64.c src/x86/unix64.S src/x86/ffi.c src/x86/sysv.S -+TARGET_SRC_SH = src/sh/sysv.S src/sh/ffi.c - - ##libffi_la_SOURCES = src/debug.c src/prep_cif.c src/types.c $(TARGET_SRC_@TARGET@) - ## Work around automake deficiency -@@ -103,6 +110,10 @@ - libffi_la_SOURCES = $(libffi_la_common_SOURCES) $(TARGET_SRC_MIPS_GCC) - libffi_convenience_la_SOURCES = $(libffi_la_common_SOURCES) $(TARGET_SRC_MIPS_GCC) - endif -+if MIPS_LINUX -+libffi_la_SOURCES = $(libffi_la_common_SOURCES) $(TARGET_SRC_MIPS_LINUX) -+libffi_convenience_la_SOURCES = $(libffi_la_common_SOURCES) $(TARGET_SRC_MIPS_LINUX) -+endif - if MIPS_SGI - libffi_la_SOURCES = $(libffi_la_common_SOURCES) $(TARGET_SRC_MIPS_SGI) - libffi_convenience_la_SOURCES = $(libffi_la_common_SOURCES) $(TARGET_SRC_MIPS_SGI) -@@ -147,6 +158,18 @@ - libffi_la_SOURCES = $(libffi_la_common_SOURCES) $(TARGET_SRC_ARM) - libffi_convenience_la_SOURCES = $(libffi_la_common_SOURCES) $(TARGET_SRC_ARM) - endif -+if S390 -+libffi_la_SOURCES = $(libffi_la_common_SOURCES) $(TARGET_SRC_S390) -+libffi_convenience_la_SOURCES = $(libffi_la_common_SOURCES) $(TARGET_SRC_S390) -+endif -+if X86_64 -+libffi_la_SOURCES = $(libffi_la_common_SOURCES) $(TARGET_SRC_X86_64) -+libffi_convenience_la_SOURCES = $(libffi_la_common_SOURCES) $(TARGET_SRC_X86_64) -+endif -+if SH -+libffi_la_SOURCES = $(libffi_la_common_SOURCES) $(TARGET_SRC_SH) -+libfficonvenience_la_SOURCES = $(libffi_la_common_SOURCES) $(TARGET_SRC_SH) -+endif - - AM_CFLAGS = -fexceptions - -diff -ruN --exclude=CVS gcc-3.2.2.orig/libffi/Makefile.in gcc/libffi/Makefile.in ---- gcc-3.2.2.orig/libffi/Makefile.in Wed Jan 29 07:59:05 2003 -+++ gcc/libffi/Makefile.in Wed Jan 29 07:58:58 2003 -@@ -91,14 +91,17 @@ - src/mips/n32.s src/mips/o32.S src/mips/o32.s \ - src/sparc/ffi.c src/sparc/v8.S src/sparc/v9.S \ - src/x86/ffi.c src/x86/sysv.S src/x86/win32.S \ -+ src/x86/ffi64.c src/x86/unix64.S \ - src/alpha/ffi.c src/alpha/osf.S \ - src/m68k/ffi.c src/m68k/sysv.S \ - src/powerpc/ffi.c src/powerpc/sysv.S \ - src/powerpc/ppc_closure.S src/powerpc/asm.h \ - src/powerpc/ffi_darwin.c \ - src/powerpc/darwin.S src/powerpc/aix.S \ -- src/powerpc/darwin_closure.S src/powerpc/aix_closures.S \ -- src/arm/ffi.c src/arm/sysv.S -+ src/powerpc/darwin_closure.S src/powerpc/aix_closure.S \ -+ src/arm/ffi.c src/arm/sysv.S \ -+ src/s390/ffi.c src/s390/sysv.S \ -+ src/sh/ffi.c src/sh/sysv.S - - - VPATH = @srcdir@:@srcdir@/src:@srcdir@/src/@TARGETDIR@ -@@ -162,6 +165,7 @@ - ffitest_LDFLAGS = -shared-libgcc - - TARGET_SRC_MIPS_GCC = src/mips/ffi.c src/mips/o32.S src/mips/n32.S -+TARGET_SRC_MIPS_LINUX = src/mips/ffi.c src/mips/o32.S - TARGET_SRC_MIPS_SGI = src/mips/ffi.c src/mips/o32.s src/mips/n32.s - TARGET_SRC_X86 = src/x86/ffi.c src/x86/sysv.S - TARGET_SRC_X86_WIN32 = src/x86/ffi.c src/x86/win32.S -@@ -170,14 +174,18 @@ - TARGET_SRC_IA64 = src/ia64/ffi.c src/ia64/unix.S - TARGET_SRC_M68K = src/m68k/ffi.c src/m68k/sysv.S - TARGET_SRC_POWERPC = src/powerpc/ffi.c src/powerpc/sysv.S src/powerpc/ppc_closure.S --TARGET_SRC_POWERPC_AIX = src/powerpc/ffi_darwin.c src/powerpc/aix.S src/powerpc/aix_closures.S -+TARGET_SRC_POWERPC_AIX = src/powerpc/ffi_darwin.c src/powerpc/aix.S src/powerpc/aix_closure.S - TARGET_SRC_POWERPC_DARWIN = src/powerpc/ffi_darwin.c src/powerpc/darwin.S src/powerpc/darwin_closure.S - TARGET_SRC_ARM = src/arm/sysv.S src/arm/ffi.c -+TARGET_SRC_S390 = src/s390/sysv.S src/s390/ffi.c -+TARGET_SRC_X86_64 = src/x86/ffi64.c src/x86/unix64.S src/x86/ffi.c src/x86/sysv.S -+TARGET_SRC_SH = src/sh/sysv.S src/sh/ffi.c - - libffi_la_common_SOURCES = src/debug.c src/prep_cif.c src/types.c \ - src/raw_api.c src/java_raw_api.c - - @MIPS_GCC_TRUE@libffi_la_SOURCES = @MIPS_GCC_TRUE@$(libffi_la_common_SOURCES) $(TARGET_SRC_MIPS_GCC) -+@MIPS_LINUX_TRUE@libffi_la_SOURCES = @MIPS_LINUX_TRUE@$(libffi_la_common_SOURCES) $(TARGET_SRC_MIPS_LINUX) - @MIPS_SGI_TRUE@libffi_la_SOURCES = @MIPS_SGI_TRUE@$(libffi_la_common_SOURCES) $(TARGET_SRC_MIPS_SGI) - @X86_TRUE@libffi_la_SOURCES = @X86_TRUE@$(libffi_la_common_SOURCES) $(TARGET_SRC_X86) - @X86_WIN32_TRUE@libffi_la_SOURCES = @X86_WIN32_TRUE@$(libffi_la_common_SOURCES) $(TARGET_SRC_X86_WIN32) -@@ -189,7 +197,11 @@ - @POWERPC_AIX_TRUE@libffi_la_SOURCES = @POWERPC_AIX_TRUE@$(libffi_la_common_SOURCES) $(TARGET_SRC_POWERPC_AIX) - @POWERPC_DARWIN_TRUE@libffi_la_SOURCES = @POWERPC_DARWIN_TRUE@$(libffi_la_common_SOURCES) $(TARGET_SRC_POWERPC_DARWIN) - @ARM_TRUE@libffi_la_SOURCES = @ARM_TRUE@$(libffi_la_common_SOURCES) $(TARGET_SRC_ARM) -+@S390_TRUE@libffi_la_SOURCES = @S390_TRUE@$(libffi_la_common_SOURCES) $(TARGET_SRC_S390) -+@X86_64_TRUE@libffi_la_SOURCES = @X86_64_TRUE@$(libffi_la_common_SOURCES) $(TARGET_SRC_X86_64) -+@SH_TRUE@libffi_la_SOURCES = @SH_TRUE@$(libffi_la_common_SOURCES) $(TARGET_SRC_SH) - @MIPS_GCC_TRUE@libffi_convenience_la_SOURCES = @MIPS_GCC_TRUE@$(libffi_la_common_SOURCES) $(TARGET_SRC_MIPS_GCC) -+@MIPS_LINUX_TRUE@libffi_convenience_la_SOURCES = @MIPS_LINUX_TRUE@$(libffi_la_common_SOURCES) $(TARGET_SRC_MIPS_LINUX) - @MIPS_SGI_TRUE@libffi_convenience_la_SOURCES = @MIPS_SGI_TRUE@$(libffi_la_common_SOURCES) $(TARGET_SRC_MIPS_SGI) - @X86_TRUE@libffi_convenience_la_SOURCES = @X86_TRUE@$(libffi_la_common_SOURCES) $(TARGET_SRC_X86) - @X86_WIN32_TRUE@libffi_convenience_la_SOURCES = @X86_WIN32_TRUE@$(libffi_la_common_SOURCES) $(TARGET_SRC_X86_WIN32) -@@ -201,6 +213,9 @@ - @POWERPC_AIX_TRUE@libffi_convenience_la_SOURCES = @POWERPC_AIX_TRUE@$(libffi_la_common_SOURCES) $(TARGET_SRC_POWERPC_AIX) - @POWERPC_DARWIN_TRUE@libffi_convenience_la_SOURCES = @POWERPC_DARWIN_TRUE@$(libffi_la_common_SOURCES) $(TARGET_SRC_POWERPC_DARWIN) - @ARM_TRUE@libffi_convenience_la_SOURCES = @ARM_TRUE@$(libffi_la_common_SOURCES) $(TARGET_SRC_ARM) -+@S390_TRUE@libffi_convenience_la_SOURCES = @S390_TRUE@$(libffi_la_common_SOURCES) $(TARGET_SRC_S390) -+@X86_64_TRUE@libffi_convenience_la_SOURCES = @X86_64_TRUE@$(libffi_la_common_SOURCES) $(TARGET_SRC_X86_64) -+@SH_TRUE@libfficonvenience_la_SOURCES = @SH_TRUE@$(libffi_la_common_SOURCES) $(TARGET_SRC_SH) - - AM_CFLAGS = -fexceptions - -@@ -208,7 +223,7 @@ - - INCLUDES = -I$(top_srcdir)/include -Iinclude -I$(top_srcdir)/src - ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 --mkinstalldirs = $(SHELL) $(top_srcdir)/../mkinstalldirs -+mkinstalldirs = $(SHELL) $(top_srcdir)/${libffi_basedir}/../mkinstalldirs - CONFIG_HEADER = fficonfig.h - CONFIG_CLEAN_FILES = - LTLIBRARIES = $(noinst_LTLIBRARIES) $(toolexeclib_LTLIBRARIES) -@@ -220,10 +235,6 @@ - LIBS = @LIBS@ - libffi_convenience_la_LDFLAGS = - libffi_convenience_la_LIBADD = --@POWERPC_TRUE@libffi_convenience_la_OBJECTS = src/debug.lo \ --@POWERPC_TRUE@src/prep_cif.lo src/types.lo src/raw_api.lo \ --@POWERPC_TRUE@src/java_raw_api.lo src/powerpc/ffi.lo \ --@POWERPC_TRUE@src/powerpc/sysv.lo src/powerpc/ppc_closure.lo - @ALPHA_TRUE@libffi_convenience_la_OBJECTS = src/debug.lo \ - @ALPHA_TRUE@src/prep_cif.lo src/types.lo src/raw_api.lo \ - @ALPHA_TRUE@src/java_raw_api.lo src/alpha/ffi.lo src/alpha/osf.lo -@@ -234,12 +245,29 @@ - @MIPS_GCC_TRUE@src/prep_cif.lo src/types.lo src/raw_api.lo \ - @MIPS_GCC_TRUE@src/java_raw_api.lo src/mips/ffi.lo src/mips/o32.lo \ - @MIPS_GCC_TRUE@src/mips/n32.lo --@X86_WIN32_TRUE@libffi_convenience_la_OBJECTS = src/debug.lo \ --@X86_WIN32_TRUE@src/prep_cif.lo src/types.lo src/raw_api.lo \ --@X86_WIN32_TRUE@src/java_raw_api.lo src/x86/ffi.lo src/x86/win32.lo -+@S390_TRUE@libffi_convenience_la_OBJECTS = src/debug.lo src/prep_cif.lo \ -+@S390_TRUE@src/types.lo src/raw_api.lo src/java_raw_api.lo \ -+@S390_TRUE@src/s390/sysv.lo src/s390/ffi.lo - @M68K_TRUE@libffi_convenience_la_OBJECTS = src/debug.lo src/prep_cif.lo \ - @M68K_TRUE@src/types.lo src/raw_api.lo src/java_raw_api.lo \ - @M68K_TRUE@src/m68k/ffi.lo src/m68k/sysv.lo -+@X86_TRUE@libffi_convenience_la_OBJECTS = src/debug.lo src/prep_cif.lo \ -+@X86_TRUE@src/types.lo src/raw_api.lo src/java_raw_api.lo \ -+@X86_TRUE@src/x86/ffi.lo src/x86/sysv.lo -+@POWERPC_TRUE@libffi_convenience_la_OBJECTS = src/debug.lo \ -+@POWERPC_TRUE@src/prep_cif.lo src/types.lo src/raw_api.lo \ -+@POWERPC_TRUE@src/java_raw_api.lo src/powerpc/ffi.lo \ -+@POWERPC_TRUE@src/powerpc/sysv.lo src/powerpc/ppc_closure.lo -+@MIPS_LINUX_TRUE@libffi_convenience_la_OBJECTS = src/debug.lo \ -+@MIPS_LINUX_TRUE@src/prep_cif.lo src/types.lo src/raw_api.lo \ -+@MIPS_LINUX_TRUE@src/java_raw_api.lo src/mips/ffi.lo src/mips/o32.lo -+@X86_WIN32_TRUE@libffi_convenience_la_OBJECTS = src/debug.lo \ -+@X86_WIN32_TRUE@src/prep_cif.lo src/types.lo src/raw_api.lo \ -+@X86_WIN32_TRUE@src/java_raw_api.lo src/x86/ffi.lo src/x86/win32.lo -+@X86_64_TRUE@libffi_convenience_la_OBJECTS = src/debug.lo \ -+@X86_64_TRUE@src/prep_cif.lo src/types.lo src/raw_api.lo \ -+@X86_64_TRUE@src/java_raw_api.lo src/x86/ffi64.lo src/x86/unix64.lo \ -+@X86_64_TRUE@src/x86/ffi.lo src/x86/sysv.lo - @SPARC_TRUE@libffi_convenience_la_OBJECTS = src/debug.lo \ - @SPARC_TRUE@src/prep_cif.lo src/types.lo src/raw_api.lo \ - @SPARC_TRUE@src/java_raw_api.lo src/sparc/ffi.lo src/sparc/v8.lo \ -@@ -247,62 +275,75 @@ - @POWERPC_AIX_TRUE@libffi_convenience_la_OBJECTS = src/debug.lo \ - @POWERPC_AIX_TRUE@src/prep_cif.lo src/types.lo src/raw_api.lo \ - @POWERPC_AIX_TRUE@src/java_raw_api.lo src/powerpc/ffi_darwin.lo \ --@POWERPC_AIX_TRUE@src/powerpc/aix.lo src/powerpc/aix_closures.lo --@X86_TRUE@libffi_convenience_la_OBJECTS = src/debug.lo src/prep_cif.lo \ --@X86_TRUE@src/types.lo src/raw_api.lo src/java_raw_api.lo \ --@X86_TRUE@src/x86/ffi.lo src/x86/sysv.lo --@ARM_TRUE@libffi_convenience_la_OBJECTS = src/debug.lo src/prep_cif.lo \ --@ARM_TRUE@src/types.lo src/raw_api.lo src/java_raw_api.lo \ --@ARM_TRUE@src/arm/sysv.lo src/arm/ffi.lo -+@POWERPC_AIX_TRUE@src/powerpc/aix.lo src/powerpc/aix_closure.lo -+@MIPS_SGI_TRUE@libffi_convenience_la_OBJECTS = src/debug.lo \ -+@MIPS_SGI_TRUE@src/prep_cif.lo src/types.lo src/raw_api.lo \ -+@MIPS_SGI_TRUE@src/java_raw_api.lo src/mips/ffi.lo src/mips/o32.lo \ -+@MIPS_SGI_TRUE@src/mips/n32.lo - @POWERPC_DARWIN_TRUE@libffi_convenience_la_OBJECTS = src/debug.lo \ - @POWERPC_DARWIN_TRUE@src/prep_cif.lo src/types.lo src/raw_api.lo \ - @POWERPC_DARWIN_TRUE@src/java_raw_api.lo src/powerpc/ffi_darwin.lo \ - @POWERPC_DARWIN_TRUE@src/powerpc/darwin.lo \ - @POWERPC_DARWIN_TRUE@src/powerpc/darwin_closure.lo --@MIPS_SGI_TRUE@libffi_convenience_la_OBJECTS = src/debug.lo \ --@MIPS_SGI_TRUE@src/prep_cif.lo src/types.lo src/raw_api.lo \ --@MIPS_SGI_TRUE@src/java_raw_api.lo src/mips/ffi.lo src/mips/o32.lo \ --@MIPS_SGI_TRUE@src/mips/n32.lo -+@ARM_TRUE@libffi_convenience_la_OBJECTS = src/debug.lo src/prep_cif.lo \ -+@ARM_TRUE@src/types.lo src/raw_api.lo src/java_raw_api.lo \ -+@ARM_TRUE@src/arm/sysv.lo src/arm/ffi.lo -+@SH_TRUE@libffi_convenience_la_OBJECTS = src/debug.lo src/prep_cif.lo \ -+@SH_TRUE@src/types.lo src/raw_api.lo src/java_raw_api.lo \ -+@SH_TRUE@src/sh/sysv.lo src/sh/ffi.lo - libffi_la_LIBADD = -+@SH_TRUE@libffi_la_OBJECTS = src/debug.lo src/prep_cif.lo src/types.lo \ -+@SH_TRUE@src/raw_api.lo src/java_raw_api.lo src/sh/sysv.lo \ -+@SH_TRUE@src/sh/ffi.lo -+@IA64_TRUE@libffi_la_OBJECTS = src/debug.lo src/prep_cif.lo \ -+@IA64_TRUE@src/types.lo src/raw_api.lo src/java_raw_api.lo \ -+@IA64_TRUE@src/ia64/ffi.lo src/ia64/unix.lo -+@X86_TRUE@libffi_la_OBJECTS = src/debug.lo src/prep_cif.lo src/types.lo \ -+@X86_TRUE@src/raw_api.lo src/java_raw_api.lo src/x86/ffi.lo \ -+@X86_TRUE@src/x86/sysv.lo - @POWERPC_TRUE@libffi_la_OBJECTS = src/debug.lo src/prep_cif.lo \ - @POWERPC_TRUE@src/types.lo src/raw_api.lo src/java_raw_api.lo \ - @POWERPC_TRUE@src/powerpc/ffi.lo src/powerpc/sysv.lo \ - @POWERPC_TRUE@src/powerpc/ppc_closure.lo --@ALPHA_TRUE@libffi_la_OBJECTS = src/debug.lo src/prep_cif.lo \ --@ALPHA_TRUE@src/types.lo src/raw_api.lo src/java_raw_api.lo \ --@ALPHA_TRUE@src/alpha/ffi.lo src/alpha/osf.lo --@IA64_TRUE@libffi_la_OBJECTS = src/debug.lo src/prep_cif.lo \ --@IA64_TRUE@src/types.lo src/raw_api.lo src/java_raw_api.lo \ --@IA64_TRUE@src/ia64/ffi.lo src/ia64/unix.lo --@MIPS_GCC_TRUE@libffi_la_OBJECTS = src/debug.lo src/prep_cif.lo \ --@MIPS_GCC_TRUE@src/types.lo src/raw_api.lo src/java_raw_api.lo \ --@MIPS_GCC_TRUE@src/mips/ffi.lo src/mips/o32.lo src/mips/n32.lo --@X86_WIN32_TRUE@libffi_la_OBJECTS = src/debug.lo src/prep_cif.lo \ --@X86_WIN32_TRUE@src/types.lo src/raw_api.lo src/java_raw_api.lo \ --@X86_WIN32_TRUE@src/x86/ffi.lo src/x86/win32.lo --@M68K_TRUE@libffi_la_OBJECTS = src/debug.lo src/prep_cif.lo \ --@M68K_TRUE@src/types.lo src/raw_api.lo src/java_raw_api.lo \ --@M68K_TRUE@src/m68k/ffi.lo src/m68k/sysv.lo -+@MIPS_LINUX_TRUE@libffi_la_OBJECTS = src/debug.lo src/prep_cif.lo \ -+@MIPS_LINUX_TRUE@src/types.lo src/raw_api.lo src/java_raw_api.lo \ -+@MIPS_LINUX_TRUE@src/mips/ffi.lo src/mips/o32.lo - @SPARC_TRUE@libffi_la_OBJECTS = src/debug.lo src/prep_cif.lo \ - @SPARC_TRUE@src/types.lo src/raw_api.lo src/java_raw_api.lo \ - @SPARC_TRUE@src/sparc/ffi.lo src/sparc/v8.lo src/sparc/v9.lo - @POWERPC_AIX_TRUE@libffi_la_OBJECTS = src/debug.lo src/prep_cif.lo \ - @POWERPC_AIX_TRUE@src/types.lo src/raw_api.lo src/java_raw_api.lo \ - @POWERPC_AIX_TRUE@src/powerpc/ffi_darwin.lo src/powerpc/aix.lo \ --@POWERPC_AIX_TRUE@src/powerpc/aix_closures.lo --@X86_TRUE@libffi_la_OBJECTS = src/debug.lo src/prep_cif.lo src/types.lo \ --@X86_TRUE@src/raw_api.lo src/java_raw_api.lo src/x86/ffi.lo \ --@X86_TRUE@src/x86/sysv.lo -+@POWERPC_AIX_TRUE@src/powerpc/aix_closure.lo -+@MIPS_SGI_TRUE@libffi_la_OBJECTS = src/debug.lo src/prep_cif.lo \ -+@MIPS_SGI_TRUE@src/types.lo src/raw_api.lo src/java_raw_api.lo \ -+@MIPS_SGI_TRUE@src/mips/ffi.lo src/mips/o32.lo src/mips/n32.lo - @ARM_TRUE@libffi_la_OBJECTS = src/debug.lo src/prep_cif.lo src/types.lo \ - @ARM_TRUE@src/raw_api.lo src/java_raw_api.lo src/arm/sysv.lo \ - @ARM_TRUE@src/arm/ffi.lo -+@ALPHA_TRUE@libffi_la_OBJECTS = src/debug.lo src/prep_cif.lo \ -+@ALPHA_TRUE@src/types.lo src/raw_api.lo src/java_raw_api.lo \ -+@ALPHA_TRUE@src/alpha/ffi.lo src/alpha/osf.lo -+@MIPS_GCC_TRUE@libffi_la_OBJECTS = src/debug.lo src/prep_cif.lo \ -+@MIPS_GCC_TRUE@src/types.lo src/raw_api.lo src/java_raw_api.lo \ -+@MIPS_GCC_TRUE@src/mips/ffi.lo src/mips/o32.lo src/mips/n32.lo -+@S390_TRUE@libffi_la_OBJECTS = src/debug.lo src/prep_cif.lo \ -+@S390_TRUE@src/types.lo src/raw_api.lo src/java_raw_api.lo \ -+@S390_TRUE@src/s390/sysv.lo src/s390/ffi.lo -+@M68K_TRUE@libffi_la_OBJECTS = src/debug.lo src/prep_cif.lo \ -+@M68K_TRUE@src/types.lo src/raw_api.lo src/java_raw_api.lo \ -+@M68K_TRUE@src/m68k/ffi.lo src/m68k/sysv.lo -+@X86_WIN32_TRUE@libffi_la_OBJECTS = src/debug.lo src/prep_cif.lo \ -+@X86_WIN32_TRUE@src/types.lo src/raw_api.lo src/java_raw_api.lo \ -+@X86_WIN32_TRUE@src/x86/ffi.lo src/x86/win32.lo -+@X86_64_TRUE@libffi_la_OBJECTS = src/debug.lo src/prep_cif.lo \ -+@X86_64_TRUE@src/types.lo src/raw_api.lo src/java_raw_api.lo \ -+@X86_64_TRUE@src/x86/ffi64.lo src/x86/unix64.lo src/x86/ffi.lo \ -+@X86_64_TRUE@src/x86/sysv.lo - @POWERPC_DARWIN_TRUE@libffi_la_OBJECTS = src/debug.lo src/prep_cif.lo \ - @POWERPC_DARWIN_TRUE@src/types.lo src/raw_api.lo src/java_raw_api.lo \ - @POWERPC_DARWIN_TRUE@src/powerpc/ffi_darwin.lo src/powerpc/darwin.lo \ - @POWERPC_DARWIN_TRUE@src/powerpc/darwin_closure.lo --@MIPS_SGI_TRUE@libffi_la_OBJECTS = src/debug.lo src/prep_cif.lo \ --@MIPS_SGI_TRUE@src/types.lo src/raw_api.lo src/java_raw_api.lo \ --@MIPS_SGI_TRUE@src/mips/ffi.lo src/mips/o32.lo src/mips/n32.lo - noinst_PROGRAMS = ffitest$(EXEEXT) - PROGRAMS = $(noinst_PROGRAMS) - -@@ -578,8 +616,8 @@ - -chmod 777 $(distdir) - $(mkinstalldirs) $(distdir)/src/alpha $(distdir)/src/arm \ - $(distdir)/src/m68k $(distdir)/src/mips \ -- $(distdir)/src/powerpc $(distdir)/src/sparc \ -- $(distdir)/src/x86 -+ $(distdir)/src/powerpc $(distdir)/src/s390 $(distdir)/src/sh \ -+ $(distdir)/src/sparc $(distdir)/src/x86 - @for file in $(DISTFILES); do \ - if test -f $$file; then d=.; else d=$(srcdir); fi; \ - if test -d $$d/$$file; then \ -diff -ruN --exclude=CVS gcc-3.2.2.orig/libffi/acinclude.m4 gcc/libffi/acinclude.m4 ---- gcc-3.2.2.orig/libffi/acinclude.m4 Sun Sep 10 16:43:14 2000 -+++ gcc/libffi/acinclude.m4 Tue Dec 17 03:22:47 2002 -@@ -4,5 +4,8 @@ - dnl to add a definition of LIBTOOL to Makefile.in. - ifelse(yes,no,[ - AC_DEFUN([AC_PROG_LIBTOOL],) -+AC_DEFUN([AM_PROG_LIBTOOL],) - AC_SUBST(LIBTOOL) - ]) -+ -+sinclude(../config/accross.m4) -diff -ruN --exclude=CVS gcc-3.2.2.orig/libffi/aclocal.m4 gcc/libffi/aclocal.m4 ---- gcc-3.2.2.orig/libffi/aclocal.m4 Fri Feb 1 07:25:31 2002 -+++ gcc/libffi/aclocal.m4 Tue Dec 17 03:22:47 2002 -@@ -1,6 +1,6 @@ --dnl aclocal.m4 generated automatically by aclocal 1.4 -+dnl aclocal.m4 generated automatically by aclocal 1.4-p5 - --dnl Copyright (C) 1994, 1995-8, 1999 Free Software Foundation, Inc. -+dnl Copyright (C) 1994, 1995-8, 1999, 2001 Free Software Foundation, Inc. - dnl This file is free software; the Free Software Foundation - dnl gives unlimited permission to copy and/or distribute it, - dnl with or without modifications, as long as this notice is preserved. -@@ -16,108 +16,15 @@ - dnl to add a definition of LIBTOOL to Makefile.in. - ifelse(yes,no,[ - AC_DEFUN([AC_PROG_LIBTOOL],) -+AC_DEFUN([AM_PROG_LIBTOOL],) - AC_SUBST(LIBTOOL) - ]) - --AC_DEFUN([AC_COMPILE_CHECK_SIZEOF], --[changequote(<<, >>)dnl --dnl The name to #define. --define(<>, translit(sizeof_$1, [a-z *], [A-Z_P]))dnl --dnl The cache variable name. --define(<>, translit(ac_cv_sizeof_$1, [ *], [_p]))dnl --changequote([, ])dnl --AC_MSG_CHECKING(size of $1) --AC_CACHE_VAL(AC_CV_NAME, --[for ac_size in 4 8 1 2 16 12 $2 ; do # List sizes in rough order of prevalence. -- AC_TRY_COMPILE([#include "confdefs.h" --#include --$2 --], [switch (0) case 0: case (sizeof ($1) == $ac_size):;], AC_CV_NAME=$ac_size) -- if test x$AC_CV_NAME != x ; then break; fi --done --]) --if test x$AC_CV_NAME = x ; then -- AC_MSG_ERROR([cannot determine a size for $1]) --fi --AC_MSG_RESULT($AC_CV_NAME) --AC_DEFINE_UNQUOTED(AC_TYPE_NAME, $AC_CV_NAME, [The number of bytes in type $1]) --undefine([AC_TYPE_NAME])dnl --undefine([AC_CV_NAME])dnl --]) -- --AC_DEFUN([AC_C_BIGENDIAN_CROSS], --[AC_CACHE_CHECK(whether byte ordering is bigendian, ac_cv_c_bigendian, --[ac_cv_c_bigendian=unknown --# See if sys/param.h defines the BYTE_ORDER macro. --AC_TRY_COMPILE([#include --#include ], [ --#if !BYTE_ORDER || !BIG_ENDIAN || !LITTLE_ENDIAN -- bogus endian macros --#endif], [# It does; now see whether it defined to BIG_ENDIAN or not. --AC_TRY_COMPILE([#include --#include ], [ --#if BYTE_ORDER != BIG_ENDIAN -- not big endian --#endif], ac_cv_c_bigendian=yes, ac_cv_c_bigendian=no)]) --if test $ac_cv_c_bigendian = unknown; then --AC_TRY_RUN([main () { -- /* Are we little or big endian? From Harbison&Steele. */ -- union -- { -- long l; -- char c[sizeof (long)]; -- } u; -- u.l = 1; -- exit (u.c[sizeof (long) - 1] == 1); --}], ac_cv_c_bigendian=no, ac_cv_c_bigendian=yes, --[ echo $ac_n "cross-compiling... " 2>&AC_FD_MSG ]) --fi]) --if test $ac_cv_c_bigendian = unknown; then --AC_MSG_CHECKING(to probe for byte ordering) --[ --cat >conftest.c <&AC_FD_MSG -- ac_cv_c_bigendian=yes -- fi -- if test `grep -l LiTTleEnDian conftest.o` ; then -- echo $ac_n ' little endian probe OK, ' 1>&AC_FD_MSG -- if test $ac_cv_c_bigendian = yes ; then -- ac_cv_c_bigendian=unknown; -- else -- ac_cv_c_bigendian=no -- fi -- fi -- echo $ac_n 'guessing bigendian ... ' >&AC_FD_MSG -- fi -- fi --AC_MSG_RESULT($ac_cv_c_bigendian) --fi --if test $ac_cv_c_bigendian = yes; then -- AC_DEFINE(WORDS_BIGENDIAN, 1, [whether byteorder is bigendian]) -- BYTEORDER=4321 --else -- BYTEORDER=1234 --fi --AC_DEFINE_UNQUOTED(BYTEORDER, $BYTEORDER, [1234 = LIL_ENDIAN, 4321 = BIGENDIAN]) --if test $ac_cv_c_bigendian = unknown; then -- AC_MSG_ERROR(unknown endianess - sorry, please pre-set ac_cv_c_bigendian) --fi --]) -+sinclude(../config/accross.m4) - - # Like AC_CONFIG_HEADER, but automatically create stamp file. - --AC_DEFUN(AM_CONFIG_HEADER, -+AC_DEFUN([AM_CONFIG_HEADER], - [AC_PREREQ([2.12]) - AC_CONFIG_HEADER([$1]) - dnl When config.status generates a header, we must update the stamp-h file. -@@ -147,7 +54,7 @@ - dnl Usage: - dnl AM_INIT_AUTOMAKE(package,version, [no-define]) - --AC_DEFUN(AM_INIT_AUTOMAKE, -+AC_DEFUN([AM_INIT_AUTOMAKE], - [AC_REQUIRE([AC_PROG_INSTALL]) - PACKAGE=[$1] - AC_SUBST(PACKAGE) -@@ -175,7 +82,7 @@ - # Check to make sure that the build environment is sane. - # - --AC_DEFUN(AM_SANITY_CHECK, -+AC_DEFUN([AM_SANITY_CHECK], - [AC_MSG_CHECKING([whether build environment is sane]) - # Just in case - sleep 1 -@@ -216,7 +123,7 @@ - - dnl AM_MISSING_PROG(NAME, PROGRAM, DIRECTORY) - dnl The program must properly implement --version. --AC_DEFUN(AM_MISSING_PROG, -+AC_DEFUN([AM_MISSING_PROG], - [AC_MSG_CHECKING(for working $2) - # Run test in a subshell; some versions of sh will print an error if - # an executable is not found, even if stderr is redirected. -@@ -235,7 +142,7 @@ - - # serial 1 - --AC_DEFUN(AM_MAINTAINER_MODE, -+AC_DEFUN([AM_MAINTAINER_MODE], - [AC_MSG_CHECKING([whether to enable maintainer-specific portions of Makefiles]) - dnl maintainer-mode is disabled by default - AC_ARG_ENABLE(maintainer-mode, -@@ -252,7 +159,7 @@ - - # Define a conditional. - --AC_DEFUN(AM_CONDITIONAL, -+AC_DEFUN([AM_CONDITIONAL], - [AC_SUBST($1_TRUE) - AC_SUBST($1_FALSE) - if $2; then -diff -ruN --exclude=CVS gcc-3.2.2.orig/libffi/configure gcc/libffi/configure ---- gcc-3.2.2.orig/libffi/configure Wed Jan 29 07:59:05 2003 -+++ gcc/libffi/configure Sat Feb 1 20:16:19 2003 -@@ -633,17 +633,16 @@ - - if test "${srcdir}" = "."; then - if test "${with_target_subdir}" != "."; then -- libffi_basedir="${srcdir}/${with_multisrctop}.." -+ libffi_basedir="${with_multisrctop}../" - else -- libffi_basedir="${srcdir}/${with_multisrctop}" -+ libffi_basedir="${with_multisrctop}" - fi - else -- libffi_basedir="${srcdir}" -+ libffi_basedir= - fi - -- - ac_aux_dir= --for ac_dir in $srcdir $srcdir/.. $srcdir/../..; do -+for ac_dir in ${libffi_basedir}.. $srcdir/${libffi_basedir}..; do - if test -f $ac_dir/install-sh; then - ac_aux_dir=$ac_dir - ac_install_sh="$ac_aux_dir/install-sh -c" -@@ -655,13 +654,14 @@ - fi - done - if test -z "$ac_aux_dir"; then -- { echo "configure: error: can not find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." 1>&2; exit 1; } -+ { echo "configure: error: can not find install-sh or install.sh in ${libffi_basedir}.. $srcdir/${libffi_basedir}.." 1>&2; exit 1; } - fi - ac_config_guess=$ac_aux_dir/config.guess - ac_config_sub=$ac_aux_dir/config.sub - ac_configure=$ac_aux_dir/configure # This should be Cygnus configure. - - -+ - # Make sure we can run config.sub. - if ${CONFIG_SHELL-/bin/sh} $ac_config_sub sun4 >/dev/null 2>&1; then : - else { echo "configure: error: can not run $ac_config_sub" 1>&2; exit 1; } -@@ -1238,9 +1238,18 @@ - ;; - - hpux10.20*|hpux11*) -- lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9].[0-9]) shared library' -- lt_cv_file_magic_cmd=/usr/bin/file -- lt_cv_file_magic_test_file=/usr/lib/libc.sl -+ case $host_cpu in -+ hppa*) -+ lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9].[0-9]) shared library' -+ lt_cv_file_magic_cmd=/usr/bin/file -+ lt_cv_file_magic_test_file=/usr/lib/libc.sl -+ ;; -+ ia64*) -+ lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - IA64' -+ lt_cv_file_magic_cmd=/usr/bin/file -+ lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so -+ ;; -+ esac - ;; - - irix5* | irix6*) -@@ -1267,7 +1276,7 @@ - # This must be Linux ELF. - linux-gnu*) - case $host_cpu in -- alpha* | hppa* | i*86 | powerpc* | sparc* | ia64* ) -+ alpha* | hppa* | i*86 | powerpc* | sparc* | ia64* | sh* ) - lt_cv_deplibs_check_method=pass_all ;; - *) - # glibc up to 2.1.1 does not perform some relocations on ARM -@@ -1330,13 +1339,13 @@ - deplibs_check_method=$lt_cv_deplibs_check_method - - echo $ac_n "checking for object suffix""... $ac_c" 1>&6 --echo "configure:1334: checking for object suffix" >&5 -+echo "configure:1343: checking for object suffix" >&5 - if eval "test \"`echo '$''{'ac_cv_objext'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 - else - rm -f conftest* - echo 'int i = 1;' > conftest.$ac_ext --if { (eval echo configure:1340: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then -+if { (eval echo configure:1349: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then - for ac_file in conftest.*; do - case $ac_file in - *.c) ;; -@@ -1356,7 +1365,7 @@ - - - echo $ac_n "checking for executable suffix""... $ac_c" 1>&6 --echo "configure:1360: checking for executable suffix" >&5 -+echo "configure:1369: checking for executable suffix" >&5 - if eval "test \"`echo '$''{'ac_cv_exeext'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 - else -@@ -1366,7 +1375,7 @@ - rm -f conftest* - echo 'int main () { return 0; }' > conftest.$ac_ext - ac_cv_exeext= -- if { (eval echo configure:1370: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }; then -+ if { (eval echo configure:1379: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }; then - for file in conftest.*; do - case $file in - *.c | *.o | *.obj) ;; -@@ -1399,7 +1408,7 @@ - file_magic*) - if test "$file_magic_cmd" = '$MAGIC_CMD'; then - echo $ac_n "checking for ${ac_tool_prefix}file""... $ac_c" 1>&6 --echo "configure:1403: checking for ${ac_tool_prefix}file" >&5 -+echo "configure:1412: checking for ${ac_tool_prefix}file" >&5 - if eval "test \"`echo '$''{'lt_cv_path_MAGIC_CMD'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 - else -@@ -1461,7 +1470,7 @@ - if test -z "$lt_cv_path_MAGIC_CMD"; then - if test -n "$ac_tool_prefix"; then - echo $ac_n "checking for file""... $ac_c" 1>&6 --echo "configure:1465: checking for file" >&5 -+echo "configure:1474: checking for file" >&5 - if eval "test \"`echo '$''{'lt_cv_path_MAGIC_CMD'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 - else -@@ -1532,7 +1541,7 @@ - # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. - set dummy ${ac_tool_prefix}ranlib; ac_word=$2 - echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 --echo "configure:1536: checking for $ac_word" >&5 -+echo "configure:1545: checking for $ac_word" >&5 - if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 - else -@@ -1564,7 +1573,7 @@ - # Extract the first word of "ranlib", so it can be a program name with args. - set dummy ranlib; ac_word=$2 - echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 --echo "configure:1568: checking for $ac_word" >&5 -+echo "configure:1577: checking for $ac_word" >&5 - if eval "test \"`echo '$''{'ac_cv_prog_RANLIB'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 - else -@@ -1599,7 +1608,7 @@ - # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. - set dummy ${ac_tool_prefix}strip; ac_word=$2 - echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 --echo "configure:1603: checking for $ac_word" >&5 -+echo "configure:1612: checking for $ac_word" >&5 - if eval "test \"`echo '$''{'ac_cv_prog_STRIP'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 - else -@@ -1631,7 +1640,7 @@ - # Extract the first word of "strip", so it can be a program name with args. - set dummy strip; ac_word=$2 - echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 --echo "configure:1635: checking for $ac_word" >&5 -+echo "configure:1644: checking for $ac_word" >&5 - if eval "test \"`echo '$''{'ac_cv_prog_STRIP'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 - else -@@ -1698,8 +1707,8 @@ - case $host in - *-*-irix6*) - # Find out which ABI we are using. -- echo '#line 1702 "configure"' > conftest.$ac_ext -- if { (eval echo configure:1703: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then -+ echo '#line 1711 "configure"' > conftest.$ac_ext -+ if { (eval echo configure:1712: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then - case `/usr/bin/file conftest.$ac_objext` in - *32-bit*) - LD="${LD-ld} -32" -@@ -1715,12 +1724,70 @@ - rm -rf conftest* - ;; - -+ia64-*-hpux*) -+ # Find out which ABI we are using. -+ echo 'int i;' > conftest.$ac_ext -+ if { (eval echo configure:1731: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then -+ case "`/usr/bin/file conftest.o`" in -+ *ELF-32*) -+ HPUX_IA64_MODE="32" -+ ;; -+ *ELF-64*) -+ HPUX_IA64_MODE="64" -+ ;; -+ esac -+ fi -+ rm -rf conftest* -+ ;; -+ -+x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*|s390*-*linux*|sparc*-*linux*) -+ # Find out which ABI we are using. -+ echo 'int i;' > conftest.$ac_ext -+ if { (eval echo configure:1747: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then -+ case "`/usr/bin/file conftest.o`" in -+ *32-bit*) -+ case $host in -+ x86_64-*linux*) -+ LD="${LD-ld} -m elf_i386" -+ ;; -+ ppc64-*linux*) -+ LD="${LD-ld} -m elf32ppclinux" -+ ;; -+ s390x-*linux*) -+ LD="${LD-ld} -m elf_s390" -+ ;; -+ sparc64-*linux*) -+ LD="${LD-ld} -m elf32_sparc" -+ ;; -+ esac -+ ;; -+ *64-bit*) -+ case $host in -+ x86_64-*linux*) -+ LD="${LD-ld} -m elf_x86_64" -+ ;; -+ ppc*-*linux*|powerpc*-*linux*) -+ LD="${LD-ld} -m elf64ppc" -+ ;; -+ s390*-*linux*) -+ LD="${LD-ld} -m elf64_s390" -+ ;; -+ sparc*-*linux*) -+ LD="${LD-ld} -m elf64_sparc" -+ ;; -+ esac -+ ;; -+ esac -+ fi -+ rm -rf conftest* -+ ;; -+ - *-*-sco3.2v5*) - # On SCO OpenServer 5, we need -belf to get full-featured binaries. - SAVE_CFLAGS="$CFLAGS" - CFLAGS="$CFLAGS -belf" - echo $ac_n "checking whether the C compiler needs -belf""... $ac_c" 1>&6 --echo "configure:1724: checking whether the C compiler needs -belf" >&5 -+echo "configure:1791: checking whether the C compiler needs -belf" >&5 - if eval "test \"`echo '$''{'lt_cv_cc_needs_belf'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 - else -@@ -1733,14 +1800,14 @@ - cross_compiling=$ac_cv_prog_cc_cross - - cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then -+if { (eval echo configure:1811: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then - rm -rf conftest* - lt_cv_cc_needs_belf=yes - else -@@ -1868,7 +1935,7 @@ - # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" - # ./install, which can be erroneously created by make from ./install.sh. - echo $ac_n "checking for a BSD compatible install""... $ac_c" 1>&6 --echo "configure:1872: checking for a BSD compatible install" >&5 -+echo "configure:1939: checking for a BSD compatible install" >&5 - if test -z "$INSTALL"; then - if eval "test \"`echo '$''{'ac_cv_path_install'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -@@ -1921,7 +1988,7 @@ - test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' - - echo $ac_n "checking whether build environment is sane""... $ac_c" 1>&6 --echo "configure:1925: checking whether build environment is sane" >&5 -+echo "configure:1992: checking whether build environment is sane" >&5 - # Just in case - sleep 1 - echo timestamp > conftestfile -@@ -1978,7 +2045,7 @@ - test "$program_transform_name" = "" && program_transform_name="s,x,x," - - echo $ac_n "checking whether ${MAKE-make} sets \${MAKE}""... $ac_c" 1>&6 --echo "configure:1982: checking whether ${MAKE-make} sets \${MAKE}" >&5 -+echo "configure:2049: checking whether ${MAKE-make} sets \${MAKE}" >&5 - set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y%./+-%__p_%'` - if eval "test \"`echo '$''{'ac_cv_prog_make_${ac_make}_set'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -@@ -2017,7 +2084,7 @@ - - missing_dir=`cd $ac_aux_dir && pwd` - echo $ac_n "checking for working aclocal""... $ac_c" 1>&6 --echo "configure:2021: checking for working aclocal" >&5 -+echo "configure:2088: checking for working aclocal" >&5 - # Run test in a subshell; some versions of sh will print an error if - # an executable is not found, even if stderr is redirected. - # Redirect stdin to placate older versions of autoconf. Sigh. -@@ -2030,7 +2097,7 @@ - fi - - echo $ac_n "checking for working autoconf""... $ac_c" 1>&6 --echo "configure:2034: checking for working autoconf" >&5 -+echo "configure:2101: checking for working autoconf" >&5 - # Run test in a subshell; some versions of sh will print an error if - # an executable is not found, even if stderr is redirected. - # Redirect stdin to placate older versions of autoconf. Sigh. -@@ -2043,7 +2110,7 @@ - fi - - echo $ac_n "checking for working automake""... $ac_c" 1>&6 --echo "configure:2047: checking for working automake" >&5 -+echo "configure:2114: checking for working automake" >&5 - # Run test in a subshell; some versions of sh will print an error if - # an executable is not found, even if stderr is redirected. - # Redirect stdin to placate older versions of autoconf. Sigh. -@@ -2056,7 +2123,7 @@ - fi - - echo $ac_n "checking for working autoheader""... $ac_c" 1>&6 --echo "configure:2060: checking for working autoheader" >&5 -+echo "configure:2127: checking for working autoheader" >&5 - # Run test in a subshell; some versions of sh will print an error if - # an executable is not found, even if stderr is redirected. - # Redirect stdin to placate older versions of autoconf. Sigh. -@@ -2069,7 +2136,7 @@ - fi - - echo $ac_n "checking for working makeinfo""... $ac_c" 1>&6 --echo "configure:2073: checking for working makeinfo" >&5 -+echo "configure:2140: checking for working makeinfo" >&5 - # Run test in a subshell; some versions of sh will print an error if - # an executable is not found, even if stderr is redirected. - # Redirect stdin to placate older versions of autoconf. Sigh. -@@ -2086,7 +2153,7 @@ - - - echo $ac_n "checking for executable suffix""... $ac_c" 1>&6 --echo "configure:2090: checking for executable suffix" >&5 -+echo "configure:2157: checking for executable suffix" >&5 - if eval "test \"`echo '$''{'ac_cv_exeext'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 - else -@@ -2096,7 +2163,7 @@ - rm -f conftest* - echo 'int main () { return 0; }' > conftest.$ac_ext - ac_cv_exeext= -- if { (eval echo configure:2100: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }; then -+ if { (eval echo configure:2167: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }; then - for file in conftest.*; do - case $file in - *.c | *.o | *.obj) ;; -@@ -2117,7 +2184,7 @@ - ac_exeext=$EXEEXT - - echo $ac_n "checking whether to enable maintainer-specific portions of Makefiles""... $ac_c" 1>&6 --echo "configure:2121: checking whether to enable maintainer-specific portions of Makefiles" >&5 -+echo "configure:2188: checking whether to enable maintainer-specific portions of Makefiles" >&5 - # Check whether --enable-maintainer-mode or --disable-maintainer-mode was given. - if test "${enable_maintainer_mode+set}" = set; then - enableval="$enable_maintainer_mode" -@@ -2143,7 +2210,7 @@ - # Extract the first word of "gcc", so it can be a program name with args. - set dummy gcc; ac_word=$2 - echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 --echo "configure:2147: checking for $ac_word" >&5 -+echo "configure:2214: checking for $ac_word" >&5 - if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 - else -@@ -2173,7 +2240,7 @@ - # Extract the first word of "cc", so it can be a program name with args. - set dummy cc; ac_word=$2 - echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 --echo "configure:2177: checking for $ac_word" >&5 -+echo "configure:2244: checking for $ac_word" >&5 - if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 - else -@@ -2224,7 +2291,7 @@ - # Extract the first word of "cl", so it can be a program name with args. - set dummy cl; ac_word=$2 - echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 --echo "configure:2228: checking for $ac_word" >&5 -+echo "configure:2295: checking for $ac_word" >&5 - if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 - else -@@ -2256,7 +2323,7 @@ - fi - - echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6 --echo "configure:2260: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5 -+echo "configure:2327: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5 - - ac_ext=c - # CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. -@@ -2267,12 +2334,12 @@ - - cat > conftest.$ac_ext << EOF - --#line 2271 "configure" -+#line 2338 "configure" - #include "confdefs.h" - - main(){return(0);} - EOF --if { (eval echo configure:2276: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then -+if { (eval echo configure:2343: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then - ac_cv_prog_cc_works=yes - # If we can't run a trivial program, we are probably using a cross compiler. - if (./conftest; exit) 2>/dev/null; then -@@ -2298,12 +2365,12 @@ - { echo "configure: error: installation or configuration problem: C compiler cannot create executables." 1>&2; exit 1; } - fi - echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6 --echo "configure:2302: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5 -+echo "configure:2369: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5 - echo "$ac_t""$ac_cv_prog_cc_cross" 1>&6 - cross_compiling=$ac_cv_prog_cc_cross - - echo $ac_n "checking whether we are using GNU C""... $ac_c" 1>&6 --echo "configure:2307: checking whether we are using GNU C" >&5 -+echo "configure:2374: checking whether we are using GNU C" >&5 - if eval "test \"`echo '$''{'ac_cv_prog_gcc'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 - else -@@ -2312,7 +2379,7 @@ - yes; - #endif - EOF --if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:2316: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then -+if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:2383: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then - ac_cv_prog_gcc=yes - else - ac_cv_prog_gcc=no -@@ -2331,7 +2398,7 @@ - ac_save_CFLAGS="$CFLAGS" - CFLAGS= - echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6 --echo "configure:2335: checking whether ${CC-cc} accepts -g" >&5 -+echo "configure:2402: checking whether ${CC-cc} accepts -g" >&5 - if eval "test \"`echo '$''{'ac_cv_prog_cc_g'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 - else -@@ -2381,17 +2448,23 @@ - i*86-*-mingw*) TARGET=X86_WIN32; TARGETDIR=x86;; - sparc-sun-4*) TARGET=SPARC; TARGETDIR=sparc;; - sparc*-sun-*) TARGET=SPARC; TARGETDIR=sparc;; --sparc-*-linux*) TARGET=SPARC; TARGETDIR=sparc;; --sparc64-*-linux*) TARGET=SPARC; TARGETDIR=sparc;; --alpha*-*-linux* | alpha*-*-osf* | alpha*-*-freebsd*) TARGET=ALPHA; TARGETDIR=alpha;; -+sparc-*-linux* | sparc-*-netbsdelf*) TARGET=SPARC; TARGETDIR=sparc;; -+sparc64-*-linux* | sparc64-*-netbsd*) TARGET=SPARC; TARGETDIR=sparc;; -+alpha*-*-linux* | alpha*-*-osf* | alpha*-*-freebsd* | alpha*-*-netbsd*) TARGET=ALPHA; TARGETDIR=alpha;; - ia64*-*-*) TARGET=IA64; TARGETDIR=ia64;; - m68k-*-linux*) TARGET=M68K; TARGETDIR=m68k;; -+mips64*-*);; -+mips*-*-linux*) TARGET=MIPS_LINUX; TARGETDIR=mips;; - powerpc-*-linux* | powerpc-*-sysv*) TARGET=POWERPC; TARGETDIR=powerpc;; - powerpc-*-beos*) TARGET=POWERPC; TARGETDIR=powerpc;; - powerpc-*-darwin*) TARGET=POWERPC_DARWIN; TARGETDIR=powerpc;; - powerpc-*-aix*) TARGET=POWERPC_AIX; TARGETDIR=powerpc;; - rs6000-*-aix*) TARGET=POWERPC_AIX; TARGETDIR=powerpc;; - arm*-*-linux-*) TARGET=ARM; TARGETDIR=arm;; -+s390-*-linux-*) TARGET=S390; TARGETDIR=s390;; -+s390x-*-linux-*) TARGET=S390; TARGETDIR=s390;; -+x86_64-*-linux*) TARGET=X86_64; TARGETDIR=x86;; -+sh-*-linux* | sh[34]*-*-linux*) TARGET=SH; TARGETDIR=sh;; - esac - - if test $TARGETDIR = unknown; then -@@ -2418,6 +2491,15 @@ - fi - - -+if test x$TARGET = xMIPS_LINUX; then -+ MIPS_LINUX_TRUE= -+ MIPS_LINUX_FALSE='#' -+else -+ MIPS_LINUX_TRUE='#' -+ MIPS_LINUX_FALSE= -+fi -+ -+ - if test x$TARGET = xSPARC; then - SPARC_TRUE= - SPARC_FALSE='#' -@@ -2507,8 +2589,39 @@ - ARM_FALSE= - fi - -+ -+if test x$TARGET = xS390; then -+ S390_TRUE= -+ S390_FALSE='#' -+else -+ S390_TRUE='#' -+ S390_FALSE= -+fi -+ -+ -+if test x$TARGET = xX86_64; then -+ X86_64_TRUE= -+ X86_64_FALSE='#' -+else -+ X86_64_TRUE='#' -+ X86_64_FALSE= -+fi -+ -+ -+if test x$TARGET = xSH; then -+ SH_TRUE= -+ SH_FALSE='#' -+else -+ SH_TRUE='#' -+ SH_FALSE= -+fi -+ -+if test x$TARGET = xMIPS_LINUX; then -+ TARGET=MIPS -+fi -+ - echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6 --echo "configure:2512: checking how to run the C preprocessor" >&5 -+echo "configure:2625: checking how to run the C preprocessor" >&5 - # On Suns, sometimes $CPP names a directory. - if test -n "$CPP" && test -d "$CPP"; then - CPP= -@@ -2523,13 +2636,13 @@ - # On the NeXT, cc -E runs the code through the compiler's parser, - # not just through cpp. - cat > conftest.$ac_ext < - Syntax Error - EOF - ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" --{ (eval echo configure:2533: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } -+{ (eval echo configure:2646: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } - ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` - if test -z "$ac_err"; then - : -@@ -2540,13 +2653,13 @@ - rm -rf conftest* - CPP="${CC-cc} -E -traditional-cpp" - cat > conftest.$ac_ext < - Syntax Error - EOF - ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" --{ (eval echo configure:2550: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } -+{ (eval echo configure:2663: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } - ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` - if test -z "$ac_err"; then - : -@@ -2557,13 +2670,13 @@ - rm -rf conftest* - CPP="${CC-cc} -nologo -E" - cat > conftest.$ac_ext < - Syntax Error - EOF - ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" --{ (eval echo configure:2567: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } -+{ (eval echo configure:2680: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } - ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` - if test -z "$ac_err"; then - : -@@ -2588,12 +2701,12 @@ - echo "$ac_t""$CPP" 1>&6 - - echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6 --echo "configure:2592: checking for ANSI C header files" >&5 -+echo "configure:2705: checking for ANSI C header files" >&5 - if eval "test \"`echo '$''{'ac_cv_header_stdc'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 - else - cat > conftest.$ac_ext < - #include -@@ -2601,7 +2714,7 @@ - #include - EOF - ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" --{ (eval echo configure:2605: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } -+{ (eval echo configure:2718: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } - ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` - if test -z "$ac_err"; then - rm -rf conftest* -@@ -2618,7 +2731,7 @@ - if test $ac_cv_header_stdc = yes; then - # SunOS 4.x string.h does not declare mem*, contrary to ANSI. - cat > conftest.$ac_ext < - EOF -@@ -2636,7 +2749,7 @@ - if test $ac_cv_header_stdc = yes; then - # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. - cat > conftest.$ac_ext < - EOF -@@ -2657,7 +2770,7 @@ - : - else - cat > conftest.$ac_ext < - #define ISLOWER(c) ('a' <= (c) && (c) <= 'z') -@@ -2668,7 +2781,7 @@ - exit (0); } - - EOF --if { (eval echo configure:2672: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null -+if { (eval echo configure:2785: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null - then - : - else -@@ -2694,12 +2807,12 @@ - for ac_func in memcpy - do - echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 --echo "configure:2698: checking for $ac_func" >&5 -+echo "configure:2811: checking for $ac_func" >&5 - if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 - else - cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then -+if { (eval echo configure:2839: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then - rm -rf conftest* - eval "ac_cv_func_$ac_func=yes" - else -@@ -2749,19 +2862,19 @@ - # The Ultrix 4.2 mips builtin alloca declared by alloca.h only works - # for constant arguments. Useless! - echo $ac_n "checking for working alloca.h""... $ac_c" 1>&6 --echo "configure:2753: checking for working alloca.h" >&5 -+echo "configure:2866: checking for working alloca.h" >&5 - if eval "test \"`echo '$''{'ac_cv_header_alloca_h'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 - else - cat > conftest.$ac_ext < - int main() { - char *p = alloca(2 * sizeof(int)); - ; return 0; } - EOF --if { (eval echo configure:2765: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then -+if { (eval echo configure:2878: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then - rm -rf conftest* - ac_cv_header_alloca_h=yes - else -@@ -2782,12 +2895,12 @@ - fi - - echo $ac_n "checking for alloca""... $ac_c" 1>&6 --echo "configure:2786: checking for alloca" >&5 -+echo "configure:2899: checking for alloca" >&5 - if eval "test \"`echo '$''{'ac_cv_func_alloca_works'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 - else - cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then -+if { (eval echo configure:2932: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then - rm -rf conftest* - ac_cv_func_alloca_works=yes - else -@@ -2847,12 +2960,12 @@ - - - echo $ac_n "checking whether alloca needs Cray hooks""... $ac_c" 1>&6 --echo "configure:2851: checking whether alloca needs Cray hooks" >&5 -+echo "configure:2964: checking whether alloca needs Cray hooks" >&5 - if eval "test \"`echo '$''{'ac_cv_os_cray'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 - else - cat > conftest.$ac_ext <&6 --echo "configure:2881: checking for $ac_func" >&5 -+echo "configure:2994: checking for $ac_func" >&5 - if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 - else - cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then -+if { (eval echo configure:3022: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then - rm -rf conftest* - eval "ac_cv_func_$ac_func=yes" - else -@@ -2932,7 +3045,7 @@ - fi - - echo $ac_n "checking stack direction for C alloca""... $ac_c" 1>&6 --echo "configure:2936: checking stack direction for C alloca" >&5 -+echo "configure:3049: checking stack direction for C alloca" >&5 - if eval "test \"`echo '$''{'ac_cv_c_stack_direction'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 - else -@@ -2940,7 +3053,7 @@ - ac_cv_c_stack_direction=0 - else - cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null -+if { (eval echo configure:3076: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null - then - ac_cv_c_stack_direction=1 - else -@@ -2982,13 +3095,13 @@ - - - echo $ac_n "checking size of short""... $ac_c" 1>&6 --echo "configure:2986: checking size of short" >&5 -+echo "configure:3099: checking size of short" >&5 - if eval "test \"`echo '$''{'ac_cv_sizeof_short'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 - else - for ac_size in 4 8 1 2 16 12 ; do # List sizes in rough order of prevalence. - cat > conftest.$ac_ext < -@@ -2998,7 +3111,7 @@ - switch (0) case 0: case (sizeof (short) == $ac_size):; - ; return 0; } - EOF --if { (eval echo configure:3002: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then -+if { (eval echo configure:3115: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then - rm -rf conftest* - ac_cv_sizeof_short=$ac_size - else -@@ -3021,13 +3134,13 @@ - - - echo $ac_n "checking size of int""... $ac_c" 1>&6 --echo "configure:3025: checking size of int" >&5 -+echo "configure:3138: checking size of int" >&5 - if eval "test \"`echo '$''{'ac_cv_sizeof_int'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 - else - for ac_size in 4 8 1 2 16 12 ; do # List sizes in rough order of prevalence. - cat > conftest.$ac_ext < -@@ -3037,7 +3150,7 @@ - switch (0) case 0: case (sizeof (int) == $ac_size):; - ; return 0; } - EOF --if { (eval echo configure:3041: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then -+if { (eval echo configure:3154: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then - rm -rf conftest* - ac_cv_sizeof_int=$ac_size - else -@@ -3060,13 +3173,13 @@ - - - echo $ac_n "checking size of long""... $ac_c" 1>&6 --echo "configure:3064: checking size of long" >&5 -+echo "configure:3177: checking size of long" >&5 - if eval "test \"`echo '$''{'ac_cv_sizeof_long'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 - else - for ac_size in 4 8 1 2 16 12 ; do # List sizes in rough order of prevalence. - cat > conftest.$ac_ext < -@@ -3076,7 +3189,7 @@ - switch (0) case 0: case (sizeof (long) == $ac_size):; - ; return 0; } - EOF --if { (eval echo configure:3080: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then -+if { (eval echo configure:3193: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then - rm -rf conftest* - ac_cv_sizeof_long=$ac_size - else -@@ -3099,13 +3212,13 @@ - - - echo $ac_n "checking size of long long""... $ac_c" 1>&6 --echo "configure:3103: checking size of long long" >&5 -+echo "configure:3216: checking size of long long" >&5 - if eval "test \"`echo '$''{'ac_cv_sizeof_long_long'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 - else - for ac_size in 4 8 1 2 16 12 ; do # List sizes in rough order of prevalence. - cat > conftest.$ac_ext < -@@ -3115,7 +3228,7 @@ - switch (0) case 0: case (sizeof (long long) == $ac_size):; - ; return 0; } - EOF --if { (eval echo configure:3119: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then -+if { (eval echo configure:3232: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then - rm -rf conftest* - ac_cv_sizeof_long_long=$ac_size - else -@@ -3138,13 +3251,13 @@ - - - echo $ac_n "checking size of float""... $ac_c" 1>&6 --echo "configure:3142: checking size of float" >&5 -+echo "configure:3255: checking size of float" >&5 - if eval "test \"`echo '$''{'ac_cv_sizeof_float'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 - else - for ac_size in 4 8 1 2 16 12 ; do # List sizes in rough order of prevalence. - cat > conftest.$ac_ext < -@@ -3154,7 +3267,7 @@ - switch (0) case 0: case (sizeof (float) == $ac_size):; - ; return 0; } - EOF --if { (eval echo configure:3158: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then -+if { (eval echo configure:3271: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then - rm -rf conftest* - ac_cv_sizeof_float=$ac_size - else -@@ -3177,13 +3290,13 @@ - - - echo $ac_n "checking size of double""... $ac_c" 1>&6 --echo "configure:3181: checking size of double" >&5 -+echo "configure:3294: checking size of double" >&5 - if eval "test \"`echo '$''{'ac_cv_sizeof_double'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 - else - for ac_size in 4 8 1 2 16 12 ; do # List sizes in rough order of prevalence. - cat > conftest.$ac_ext < -@@ -3193,7 +3306,7 @@ - switch (0) case 0: case (sizeof (double) == $ac_size):; - ; return 0; } - EOF --if { (eval echo configure:3197: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then -+if { (eval echo configure:3310: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then - rm -rf conftest* - ac_cv_sizeof_double=$ac_size - else -@@ -3216,13 +3329,13 @@ - - - echo $ac_n "checking size of long double""... $ac_c" 1>&6 --echo "configure:3220: checking size of long double" >&5 -+echo "configure:3333: checking size of long double" >&5 - if eval "test \"`echo '$''{'ac_cv_sizeof_long_double'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 - else - for ac_size in 4 8 1 2 16 12 ; do # List sizes in rough order of prevalence. - cat > conftest.$ac_ext < -@@ -3232,7 +3345,7 @@ - switch (0) case 0: case (sizeof (long double) == $ac_size):; - ; return 0; } - EOF --if { (eval echo configure:3236: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then -+if { (eval echo configure:3349: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then - rm -rf conftest* - ac_cv_sizeof_long_double=$ac_size - else -@@ -3256,13 +3369,13 @@ - - - echo $ac_n "checking size of void *""... $ac_c" 1>&6 --echo "configure:3260: checking size of void *" >&5 -+echo "configure:3373: checking size of void *" >&5 - if eval "test \"`echo '$''{'ac_cv_sizeof_void_p'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 - else - for ac_size in 4 8 1 2 16 12 ; do # List sizes in rough order of prevalence. - cat > conftest.$ac_ext < -@@ -3272,7 +3385,7 @@ - switch (0) case 0: case (sizeof (void *) == $ac_size):; - ; return 0; } - EOF --if { (eval echo configure:3276: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then -+if { (eval echo configure:3389: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then - rm -rf conftest* - ac_cv_sizeof_void_p=$ac_size - else -@@ -3295,14 +3408,14 @@ - - - echo $ac_n "checking whether byte ordering is bigendian""... $ac_c" 1>&6 --echo "configure:3299: checking whether byte ordering is bigendian" >&5 -+echo "configure:3412: checking whether byte ordering is bigendian" >&5 - if eval "test \"`echo '$''{'ac_cv_c_bigendian'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 - else - ac_cv_c_bigendian=unknown - # See if sys/param.h defines the BYTE_ORDER macro. - cat > conftest.$ac_ext < - #include -@@ -3313,11 +3426,11 @@ - #endif - ; return 0; } - EOF --if { (eval echo configure:3317: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then -+if { (eval echo configure:3430: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then - rm -rf conftest* - # It does; now see whether it defined to BIG_ENDIAN or not. - cat > conftest.$ac_ext < - #include -@@ -3328,7 +3441,7 @@ - #endif - ; return 0; } - EOF --if { (eval echo configure:3332: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then -+if { (eval echo configure:3445: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then - rm -rf conftest* - ac_cv_c_bigendian=yes - else -@@ -3348,7 +3461,7 @@ - echo $ac_n "cross-compiling... " 2>&6 - else - cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null -+if { (eval echo configure:3478: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null - then - ac_cv_c_bigendian=no - else -@@ -3379,7 +3492,7 @@ - echo "$ac_t""$ac_cv_c_bigendian" 1>&6 - if test $ac_cv_c_bigendian = unknown; then - echo $ac_n "checking to probe for byte ordering""... $ac_c" 1>&6 --echo "configure:3383: checking to probe for byte ordering" >&5 -+echo "configure:3496: checking to probe for byte ordering" >&5 - - cat >conftest.c <> confdefs.h <<\EOF -+#define HOST_WORDS_BIG_ENDIAN 1 -+EOF -+ - BYTEORDER=4321 - else - BYTEORDER=1234 -@@ -3429,7 +3546,7 @@ - - if test x$TARGET = xSPARC; then - echo $ac_n "checking assembler and linker support unaligned pc related relocs""... $ac_c" 1>&6 --echo "configure:3433: checking assembler and linker support unaligned pc related relocs" >&5 -+echo "configure:3550: checking assembler and linker support unaligned pc related relocs" >&5 - if eval "test \"`echo '$''{'libffi_cv_as_sparc_ua_pcrel'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 - else -@@ -3439,14 +3556,14 @@ - CFLAGS="$CFLAGS -fpic" - LDFLAGS="$LDFLAGS -shared" - cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then -+if { (eval echo configure:3567: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then - rm -rf conftest* - libffi_cv_as_sparc_ua_pcrel=yes - else -@@ -3709,6 +3826,8 @@ - s%@MIPS_GCC_FALSE@%$MIPS_GCC_FALSE%g - s%@MIPS_SGI_TRUE@%$MIPS_SGI_TRUE%g - s%@MIPS_SGI_FALSE@%$MIPS_SGI_FALSE%g -+s%@MIPS_LINUX_TRUE@%$MIPS_LINUX_TRUE%g -+s%@MIPS_LINUX_FALSE@%$MIPS_LINUX_FALSE%g - s%@SPARC_TRUE@%$SPARC_TRUE%g - s%@SPARC_FALSE@%$SPARC_FALSE%g - s%@X86_TRUE@%$X86_TRUE%g -@@ -3729,6 +3848,12 @@ - s%@POWERPC_DARWIN_FALSE@%$POWERPC_DARWIN_FALSE%g - s%@ARM_TRUE@%$ARM_TRUE%g - s%@ARM_FALSE@%$ARM_FALSE%g -+s%@S390_TRUE@%$S390_TRUE%g -+s%@S390_FALSE@%$S390_FALSE%g -+s%@X86_64_TRUE@%$X86_64_TRUE%g -+s%@X86_64_FALSE@%$X86_64_FALSE%g -+s%@SH_TRUE@%$SH_TRUE%g -+s%@SH_FALSE@%$SH_FALSE%g - s%@CPP@%$CPP%g - s%@ALLOCA@%$ALLOCA%g - s%@TARGET@%$TARGET%g -@@ -3969,7 +4094,7 @@ - - if test -n "$CONFIG_FILES"; then - LD="${ORIGINAL_LD_FOR_MULTILIBS}" -- ac_file=Makefile . ${libffi_basedir}/../config-ml.in -+ ac_file=Makefile . ${srcdir}/${libffi_basedir}../config-ml.in - fi - - exit 0 -diff -ruN --exclude=CVS gcc-3.2.2.orig/libffi/configure.in gcc/libffi/configure.in ---- gcc-3.2.2.orig/libffi/configure.in Tue Jan 28 10:43:56 2003 -+++ gcc/libffi/configure.in Sat Feb 1 20:16:19 2003 -@@ -22,14 +22,15 @@ - - if test "${srcdir}" = "."; then - if test "${with_target_subdir}" != "."; then -- libffi_basedir="${srcdir}/${with_multisrctop}.." -+ libffi_basedir="${with_multisrctop}../" - else -- libffi_basedir="${srcdir}/${with_multisrctop}" -+ libffi_basedir="${with_multisrctop}" - fi - else -- libffi_basedir="${srcdir}" -+ libffi_basedir= - fi - AC_SUBST(libffi_basedir) -+AC_CONFIG_AUX_DIR(${libffi_basedir}..) - - AC_CANONICAL_HOST - -@@ -56,17 +57,23 @@ - i*86-*-mingw*) TARGET=X86_WIN32; TARGETDIR=x86;; - sparc-sun-4*) TARGET=SPARC; TARGETDIR=sparc;; - sparc*-sun-*) TARGET=SPARC; TARGETDIR=sparc;; --sparc-*-linux*) TARGET=SPARC; TARGETDIR=sparc;; --sparc64-*-linux*) TARGET=SPARC; TARGETDIR=sparc;; --alpha*-*-linux* | alpha*-*-osf* | alpha*-*-freebsd*) TARGET=ALPHA; TARGETDIR=alpha;; -+sparc-*-linux* | sparc-*-netbsdelf*) TARGET=SPARC; TARGETDIR=sparc;; -+sparc64-*-linux* | sparc64-*-netbsd*) TARGET=SPARC; TARGETDIR=sparc;; -+alpha*-*-linux* | alpha*-*-osf* | alpha*-*-freebsd* | alpha*-*-netbsd*) TARGET=ALPHA; TARGETDIR=alpha;; - ia64*-*-*) TARGET=IA64; TARGETDIR=ia64;; - m68k-*-linux*) TARGET=M68K; TARGETDIR=m68k;; -+mips64*-*);; -+mips*-*-linux*) TARGET=MIPS_LINUX; TARGETDIR=mips;; - powerpc-*-linux* | powerpc-*-sysv*) TARGET=POWERPC; TARGETDIR=powerpc;; - powerpc-*-beos*) TARGET=POWERPC; TARGETDIR=powerpc;; - powerpc-*-darwin*) TARGET=POWERPC_DARWIN; TARGETDIR=powerpc;; - powerpc-*-aix*) TARGET=POWERPC_AIX; TARGETDIR=powerpc;; - rs6000-*-aix*) TARGET=POWERPC_AIX; TARGETDIR=powerpc;; - arm*-*-linux-*) TARGET=ARM; TARGETDIR=arm;; -+s390-*-linux-*) TARGET=S390; TARGETDIR=s390;; -+s390x-*-linux-*) TARGET=S390; TARGETDIR=s390;; -+x86_64-*-linux*) TARGET=X86_64; TARGETDIR=x86;; -+sh-*-linux* | sh[[34]]*-*-linux*) TARGET=SH; TARGETDIR=sh;; - esac - - if test $TARGETDIR = unknown; then -@@ -75,6 +82,7 @@ - - AM_CONDITIONAL(MIPS_GCC, test ${TARGET}${ac_cv_prog_gcc} = MIPSyes) - AM_CONDITIONAL(MIPS_SGI, test ${TARGET}${ac_cv_prog_gcc} = MIPSno) -+AM_CONDITIONAL(MIPS_LINUX, test x$TARGET = xMIPS_LINUX) - AM_CONDITIONAL(SPARC, test x$TARGET = xSPARC) - AM_CONDITIONAL(X86, test x$TARGET = xX86) - AM_CONDITIONAL(X86_WIN32, test x$TARGET = xX86_WIN32) -@@ -85,6 +93,13 @@ - AM_CONDITIONAL(POWERPC_AIX, test x$TARGET = xPOWERPC_AIX) - AM_CONDITIONAL(POWERPC_DARWIN, test x$TARGET = xPOWERPC_DARWIN) - AM_CONDITIONAL(ARM, test x$TARGET = xARM) -+AM_CONDITIONAL(S390, test x$TARGET = xS390) -+AM_CONDITIONAL(X86_64, test x$TARGET = xX86_64) -+AM_CONDITIONAL(SH, test x$TARGET = xSH) -+ -+if test x$TARGET = xMIPS_LINUX; then -+ TARGET=MIPS -+fi - - AC_HEADER_STDC - AC_CHECK_FUNCS(memcpy) -@@ -171,7 +186,7 @@ - [ - if test -n "$CONFIG_FILES"; then - LD="${ORIGINAL_LD_FOR_MULTILIBS}" -- ac_file=Makefile . ${libffi_basedir}/../config-ml.in -+ ac_file=Makefile . ${srcdir}/${libffi_basedir}../config-ml.in - fi - ], - srcdir=${srcdir} -diff -ruN --exclude=CVS gcc-3.2.2.orig/libffi/include/Makefile.in gcc/libffi/include/Makefile.in ---- gcc-3.2.2.orig/libffi/include/Makefile.in Tue Oct 9 14:32:16 2001 -+++ gcc/libffi/include/Makefile.in Mon Apr 29 13:14:44 2002 -@@ -99,7 +99,7 @@ - - DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST) - --TAR = gnutar -+TAR = gtar - GZIP_ENV = --best - all: all-redirect - .SUFFIXES: -diff -ruN --exclude=CVS gcc-3.2.2.orig/libffi/include/ffi.h.in gcc/libffi/include/ffi.h.in ---- gcc-3.2.2.orig/libffi/include/ffi.h.in Wed Mar 13 07:35:56 2002 -+++ gcc/libffi/include/ffi.h.in Wed Jan 29 00:54:28 2003 -@@ -1,5 +1,5 @@ - /* -----------------------------------------------------------------*-C-*- -- libffi @VERSION@ - Copyright (c) 1996-2002 Cygnus Solutions -+ libffi @VERSION@ - Copyright (c) 1996-2003 Cygnus Solutions - - Permission is hereby granted, free of charge, to any person obtaining - a copy of this software and associated documentation files (the -@@ -164,6 +164,12 @@ - #endif - #endif - -+#ifdef S390 -+#if defined (__s390x__) -+#define S390X -+#endif -+#endif -+ - #ifndef LIBFFI_ASM - - /* ---- Generic type definitions ----------------------------------------- */ -@@ -189,16 +195,23 @@ - #endif - #endif - -- /* ---- Intel x86 ---------------- */ --#ifdef X86 -+ /* ---- Intel x86 Win32 ---------- */ -+#ifdef X86_WIN32 - FFI_SYSV, -+ FFI_STDCALL, -+ /* TODO: Add fastcall support for the sake of completeness */ - FFI_DEFAULT_ABI = FFI_SYSV, - #endif - -- /* ---- Intel x86 Win32 ---------- */ --#ifdef X86_WIN32 -+ /* ---- Intel x86 and AMD x86-64 - */ -+#if !defined(X86_WIN32) && (defined(__i386__) || defined(__x86_64__)) - FFI_SYSV, -+ FFI_UNIX64, /* Unix variants all use the same ABI for x86-64 */ -+#ifdef __i386__ - FFI_DEFAULT_ABI = FFI_SYSV, -+#else -+ FFI_DEFAULT_ABI = FFI_UNIX64, -+#endif - #endif - - /* ---- Intel ia64 ---------------- */ -@@ -251,6 +264,18 @@ - FFI_DEFAULT_ABI = FFI_SYSV, - #endif - -+ /* ---- S390 --------------------- */ -+#ifdef S390 -+ FFI_SYSV, -+ FFI_DEFAULT_ABI = FFI_SYSV, -+#endif -+ -+ /* ---- SuperH ------------------- */ -+#ifdef SH -+ FFI_SYSV, -+ FFI_DEFAULT_ABI = FFI_SYSV, -+#endif -+ - /* Leave this for debugging purposes */ - FFI_LAST_ABI - -@@ -264,7 +289,7 @@ - /*@null@*/ struct _ffi_type **elements; - } ffi_type; - --/* These are defined in ffi.c */ -+/* These are defined in types.c */ - extern ffi_type ffi_type_void; - extern ffi_type ffi_type_uint8; - extern ffi_type ffi_type_sint8; -@@ -373,13 +398,7 @@ - - /* ---- Definitions for closures ----------------------------------------- */ - --#ifdef X86 -- --#define FFI_CLOSURES 1 /* x86 supports closures */ --#define FFI_TRAMPOLINE_SIZE 10 --#define FFI_NATIVE_RAW_API 1 /* and has native raw api support */ -- --#elif defined(X86_WIN32) -+#ifdef __i386__ - - #define FFI_CLOSURES 1 /* x86 supports closures */ - #define FFI_TRAMPOLINE_SIZE 10 -@@ -424,6 +443,40 @@ - #define FFI_TRAMPOLINE_SIZE 24 /* see struct below */ - #define FFI_NATIVE_RAW_API 0 - -+#elif defined(SPARC64) -+ -+#define FFI_CLOSURES 1 -+#define FFI_TRAMPOLINE_SIZE 24 -+#define FFI_NATIVE_RAW_API 0 -+ -+#elif defined(SPARC) -+ -+#define FFI_CLOSURES 1 -+#define FFI_TRAMPOLINE_SIZE 16 -+#define FFI_NATIVE_RAW_API 0 -+ -+#elif defined(S390) -+ -+#define FFI_CLOSURES 1 -+#ifdef S390X -+#define FFI_TRAMPOLINE_SIZE 32 -+#else -+#define FFI_TRAMPOLINE_SIZE 16 -+#endif -+#define FFI_NATIVE_RAW_API 0 -+ -+#elif defined(SH) -+ -+#define FFI_CLOSURES 1 -+#define FFI_TRAMPOLINE_SIZE 16 -+#define FFI_NATIVE_RAW_API 0 -+ -+#elif defined(__x86_64__) -+ -+#define FFI_CLOSURES 1 -+#define FFI_TRAMPOLINE_SIZE 24 -+#define FFI_NATIVE_RAW_API 0 -+ - #else - - #define FFI_CLOSURES 0 -diff -ruN --exclude=CVS gcc-3.2.2.orig/libffi/src/arm/ffi.c gcc/libffi/src/arm/ffi.c ---- gcc-3.2.2.orig/libffi/src/arm/ffi.c Sat Mar 3 07:21:23 2001 -+++ gcc/libffi/src/arm/ffi.c Fri Jul 19 08:08:30 2002 -@@ -36,13 +36,10 @@ - /*@=exportheader@*/ - { - register unsigned int i; -- register int tmp; -- register unsigned int avn; - register void **p_argv; - register char *argp; - register ffi_type **p_arg; - -- tmp = 0; - argp = stack; - - if ( ecif->cif->rtype->type == FFI_TYPE_STRUCT ) { -@@ -50,11 +47,10 @@ - argp += 4; - } - -- avn = ecif->cif->nargs; - p_argv = ecif->avalue; - - for (i = ecif->cif->nargs, p_arg = ecif->cif->arg_types; -- (i != 0) && (avn != 0); -+ (i != 0); - i--, p_arg++) - { - size_t z; -@@ -64,9 +60,6 @@ - argp = (char *) ALIGN(argp, (*p_arg)->alignment); - } - -- if (avn != 0) -- { -- avn--; - z = (*p_arg)->size; - if (z < sizeof(int)) - { -@@ -107,7 +100,6 @@ - } - p_argv++; - argp += z; -- } - } - - return; -diff -ruN --exclude=CVS gcc-3.2.2.orig/libffi/src/arm/sysv.S gcc/libffi/src/arm/sysv.S ---- gcc-3.2.2.orig/libffi/src/arm/sysv.S Sat Mar 3 07:21:23 2001 -+++ gcc/libffi/src/arm/sysv.S Mon Sep 30 03:08:58 2002 -@@ -28,8 +28,15 @@ - #ifdef HAVE_MACHINE_ASM_H - #include - #else --/* XXX these lose for some platforms, I'm sure. */ -+#ifdef __USER_LABEL_PREFIX__ -+#define CONCAT1(a, b) CONCAT2(a, b) -+#define CONCAT2(a, b) a ## b -+ -+/* Use the right prefix for global labels. */ -+#define CNAME(x) CONCAT1 (__USER_LABEL_PREFIX__, x) -+#else - #define CNAME(x) x -+#endif - #define ENTRY(x) .globl CNAME(x); .type CNAME(x),%function; CNAME(x): - #endif - -@@ -96,12 +103,20 @@ - - # return FLOAT - cmp a4, #FFI_TYPE_FLOAT -+#ifdef __SOFTFP__ -+ streq a1, [a3] -+#else - stfeqs f0, [a3] -+#endif - beq epilogue - - # return DOUBLE or LONGDOUBLE - cmp a4, #FFI_TYPE_DOUBLE -+#ifdef __SOFTFP__ -+ stmeqia a3, {a1, a2} -+#else - stfeqd f0, [a3] -+#endif - - epilogue: - ldmfd sp!, {a1-a4, fp, pc} -diff -ruN --exclude=CVS gcc-3.2.2.orig/libffi/src/java_raw_api.c gcc/libffi/src/java_raw_api.c ---- gcc-3.2.2.orig/libffi/src/java_raw_api.c Tue Apr 9 07:31:14 2002 -+++ gcc/libffi/src/java_raw_api.c Tue Oct 8 23:55:02 2002 -@@ -81,21 +81,14 @@ - { - case FFI_TYPE_UINT8: - case FFI_TYPE_SINT8: -- *args = (void*) ((char*)(raw++) + SIZEOF_ARG - 1); -+ *args = (void*) ((char*)(raw++) + 3); - break; - - case FFI_TYPE_UINT16: - case FFI_TYPE_SINT16: -- *args = (void*) ((char*)(raw++) + SIZEOF_ARG - 2); -+ *args = (void*) ((char*)(raw++) + 2); - break; - --#if SIZEOF_ARG >= 4 -- case FFI_TYPE_UINT32: -- case FFI_TYPE_SINT32: -- *args = (void*) ((char*)(raw++) + SIZEOF_ARG - 4); -- break; --#endif -- - #if SIZEOF_ARG == 8 - case FFI_TYPE_UINT64: - case FFI_TYPE_SINT64: -@@ -157,31 +150,54 @@ - switch ((*tp)->type) - { - case FFI_TYPE_UINT8: -+#if WORDS_BIGENDIAN -+ *(UINT32*)(raw++) = *(UINT8*) (*args); -+#else - (raw++)->uint = *(UINT8*) (*args); -+#endif - break; - - case FFI_TYPE_SINT8: -+#if WORDS_BIGENDIAN -+ *(SINT32*)(raw++) = *(SINT8*) (*args); -+#else - (raw++)->sint = *(SINT8*) (*args); -+#endif - break; - - case FFI_TYPE_UINT16: -+#if WORDS_BIGENDIAN -+ *(UINT32*)(raw++) = *(UINT16*) (*args); -+#else - (raw++)->uint = *(UINT16*) (*args); -+#endif - break; - - case FFI_TYPE_SINT16: -+#if WORDS_BIGENDIAN -+ *(SINT32*)(raw++) = *(SINT16*) (*args); -+#else - (raw++)->sint = *(SINT16*) (*args); -+#endif - break; - --#if SIZEOF_ARG >= 4 - case FFI_TYPE_UINT32: -+#if WORDS_BIGENDIAN -+ *(UINT32*)(raw++) = *(UINT32*) (*args); -+#else - (raw++)->uint = *(UINT32*) (*args); -+#endif - break; - - case FFI_TYPE_SINT32: -+#if WORDS_BIGENDIAN -+ *(SINT32*)(raw++) = *(SINT32*) (*args); -+#else - (raw++)->sint = *(SINT32*) (*args); -- break; - #endif -- case FFI_TYPE_FLOAT: -+ break; -+ -+ case FFI_TYPE_FLOAT: - (raw++)->flt = *(FLOAT32*) (*args); - break; - -@@ -211,6 +227,55 @@ - - #if !FFI_NATIVE_RAW_API - -+static void -+ffi_java_rvalue_to_raw (ffi_cif *cif, void *rvalue) -+{ -+#if WORDS_BIGENDIAN && SIZEOF_ARG == 8 -+ switch (cif->rtype->type) -+ { -+ case FFI_TYPE_UINT8: -+ case FFI_TYPE_UINT16: -+ case FFI_TYPE_UINT32: -+ *(UINT64 *)rvalue <<= 32; -+ break; -+ -+ case FFI_TYPE_SINT8: -+ case FFI_TYPE_SINT16: -+ case FFI_TYPE_SINT32: -+ case FFI_TYPE_INT: -+ *(SINT64 *)rvalue <<= 32; -+ break; -+ -+ default: -+ break; -+ } -+#endif -+} -+ -+static void -+ffi_java_raw_to_rvalue (ffi_cif *cif, void *rvalue) -+{ -+#if WORDS_BIGENDIAN && SIZEOF_ARG == 8 -+ switch (cif->rtype->type) -+ { -+ case FFI_TYPE_UINT8: -+ case FFI_TYPE_UINT16: -+ case FFI_TYPE_UINT32: -+ *(UINT64 *)rvalue >>= 32; -+ break; -+ -+ case FFI_TYPE_SINT8: -+ case FFI_TYPE_SINT16: -+ case FFI_TYPE_SINT32: -+ case FFI_TYPE_INT: -+ *(SINT64 *)rvalue >>= 32; -+ break; -+ -+ default: -+ break; -+ } -+#endif -+} - - /* This is a generic definition of ffi_raw_call, to be used if the - * native system does not provide a machine-specific implementation. -@@ -227,6 +292,7 @@ - void **avalue = (void**) alloca (cif->nargs * sizeof (void*)); - ffi_java_raw_to_ptrarray (cif, raw, avalue); - ffi_call (cif, fn, rvalue, avalue); -+ ffi_java_rvalue_to_raw (cif, rvalue); - } - - #if FFI_CLOSURES /* base system provides closures */ -@@ -240,6 +306,7 @@ - - ffi_java_ptrarray_to_raw (cif, avalue, raw); - (*cl->fun) (cif, rvalue, raw, cl->user_data); -+ ffi_java_raw_to_rvalue (cif, rvalue); - } - - /* Again, here is the generic version of ffi_prep_raw_closure, which -diff -ruN --exclude=CVS gcc-3.2.2.orig/libffi/src/m68k/ffi.c gcc/libffi/src/m68k/ffi.c ---- gcc-3.2.2.orig/libffi/src/m68k/ffi.c Sun Aug 8 22:27:19 1999 -+++ gcc/libffi/src/m68k/ffi.c Fri Jul 19 08:08:30 2002 -@@ -16,14 +16,11 @@ - ffi_prep_args (void *stack, extended_cif *ecif) - { - unsigned int i; -- int tmp; -- unsigned int avn; - void **p_argv; - char *argp; - ffi_type **p_arg; - void *struct_value_ptr; - -- tmp = 0; - argp = stack; - - if (ecif->cif->rtype->type == FFI_TYPE_STRUCT -@@ -32,11 +29,10 @@ - else - struct_value_ptr = NULL; - -- avn = ecif->cif->nargs; - p_argv = ecif->avalue; - - for (i = ecif->cif->nargs, p_arg = ecif->cif->arg_types; -- i != 0 && avn != 0; -+ i != 0; - i--, p_arg++) - { - size_t z; -@@ -45,9 +41,6 @@ - if (((*p_arg)->alignment - 1) & (unsigned) argp) - argp = (char *) ALIGN (argp, (*p_arg)->alignment); - -- if (avn != 0) -- { -- avn--; - z = (*p_arg)->size; - if (z < sizeof (int)) - { -@@ -82,7 +75,6 @@ - memcpy (argp, *p_argv, z); - p_argv++; - argp += z; -- } - } - - return struct_value_ptr; -diff -ruN --exclude=CVS gcc-3.2.2.orig/libffi/src/mips/ffi.c gcc/libffi/src/mips/ffi.c ---- gcc-3.2.2.orig/libffi/src/mips/ffi.c Sat Mar 3 07:21:23 2001 -+++ gcc/libffi/src/mips/ffi.c Fri Jul 19 08:08:31 2002 -@@ -23,6 +23,7 @@ - OTHER DEALINGS IN THE SOFTWARE. - ----------------------------------------------------------------------- */ - -+#include - #include - #include - -@@ -50,7 +51,6 @@ - int flags) - { - register int i; -- register int avn; - register void **p_argv; - register char *argp; - register ffi_type **p_arg; -@@ -80,12 +80,9 @@ - FIX_ARGP; - } - -- avn = ecif->cif->nargs; - p_argv = ecif->avalue; - -- for (i = ecif->cif->nargs, p_arg = ecif->cif->arg_types; -- i && avn; -- i--, p_arg++) -+ for (i = ecif->cif->nargs, p_arg = ecif->cif->arg_types; i; i--, p_arg++) - { - size_t z; - -@@ -101,9 +98,6 @@ - #define OFFSET sizeof(int) - #endif - -- if (avn) -- { -- avn--; - z = (*p_arg)->size; - if (z < sizeof(SLOT_TYPE_UNSIGNED)) - { -@@ -179,7 +173,6 @@ - p_argv++; - argp += z; - FIX_ARGP; -- } - } - - return; -diff -ruN --exclude=CVS gcc-3.2.2.orig/libffi/src/powerpc/darwin.S gcc/libffi/src/powerpc/darwin.S ---- gcc-3.2.2.orig/libffi/src/powerpc/darwin.S Sat Jan 19 01:22:34 2002 -+++ gcc/libffi/src/powerpc/darwin.S Thu Jan 23 03:21:55 2003 -@@ -3,8 +3,6 @@ - - PowerPC Assembly glue. - -- $Id: darwin.S,v 1.2 2002/01/18 16:22:34 dje Exp $ -- - Permission is hereby granted, free of charge, to any person obtaining - a copy of this software and associated documentation files (the - ``Software''), to deal in the Software without restriction, including -@@ -39,30 +37,34 @@ - .text - .align 2 - _ffi_call_DARWIN: -- mr r12,r8 // We only need r12 until the call, so it doesn't have to be saved... -+LFB0: -+ mr r12,r8 /* We only need r12 until the call, -+ so it doesn't have to be saved... */ -+LFB1: - /* Save the old stack pointer as AP. */ - mr r8,r1 -- -+LCFI0: - /* Allocate the stack space we need. */ - stwux r1,r1,r4 - - /* Save registers we use. */ - mflr r9 - -- stw r28,-16(r8) -+ stw r28,-16(r8) - stw r29,-12(r8) - stw r30, -8(r8) - stw r31, -4(r8) -- -- stw r9, 8(r8) -+ -+ stw r9, 8(r8) - stw r2, 20(r1) -+LCFI1: - - /* Save arguments over call... */ -- mr r31,r5 /* flags, */ -- mr r30,r6 /* rvalue, */ -- mr r29,r7 /* function address, */ -- mr r28,r8 /* our AP. */ -- -+ mr r31,r5 /* flags, */ -+ mr r30,r6 /* rvalue, */ -+ mr r29,r7 /* function address, */ -+ mr r28,r8 /* our AP. */ -+LCFI2: - /* Call ffi_prep_args. */ - mr r4,r1 - li r9,0 -@@ -145,7 +147,8 @@ - L(float_return_value): - stfs f1,0(r30) - b L(done_return_value) --//END(_ffi_call_DARWIN) -+LFE1: -+/* END(_ffi_call_DARWIN) */ - - /* Provide a null definition of _ffi_call_AIX. */ - .text -@@ -155,5 +158,61 @@ - .align 2 - _ffi_call_AIX: - blr --//END(_ffi_call_AIX) -+/* END(_ffi_call_AIX) */ - -+.data -+.section __TEXT,__eh_frame -+Lframe1: -+ .set L$set$0,LECIE1-LSCIE1 -+ .long L$set$0 ; Length of Common Information Entry -+LSCIE1: -+ .long 0x0 ; CIE Identifier Tag -+ .byte 0x1 ; CIE Version -+ .ascii "zR\0" ; CIE Augmentation -+ .byte 0x1 ; uleb128 0x1; CIE Code Alignment Factor -+ .byte 0x7c ; sleb128 -4; CIE Data Alignment Factor -+ .byte 0x41 ; CIE RA Column -+ .byte 0x1 ; uleb128 0x1; Augmentation size -+ .byte 0x10 ; FDE Encoding (pcrel) -+ .byte 0xc ; DW_CFA_def_cfa -+ .byte 0x1 ; uleb128 0x1 -+ .byte 0x0 ; uleb128 0x0 -+ .align 2 -+LECIE1: -+LSFDE1: -+ .set L$set$1,LEFDE1-LASFDE1 -+ .long L$set$1 ; FDE Length -+LASFDE1: -+ .set L$set$2,LASFDE1-Lframe1 -+ .long L$set$2 ; FDE CIE offset -+ .long LFB0-. ; FDE initial location -+ .set L$set$3,LFE1-LFB0 -+ .long L$set$3 ; FDE address range -+ .byte 0x0 ; uleb128 0x0; Augmentation size -+ .byte 0x4 ; DW_CFA_advance_loc4 -+ .set L$set$4,LCFI0-LFB1 -+ .long L$set$4 -+ .byte 0xd ; DW_CFA_def_cfa_register -+ .byte 0x08 ; uleb128 0x08 -+ .byte 0x4 ; DW_CFA_advance_loc4 -+ .set L$set$5,LCFI1-LCFI0 -+ .long L$set$5 -+ .byte 0x11 ; DW_CFA_offset_extended_sf -+ .byte 0x41 ; uleb128 0x41 -+ .byte 0x7e ; sleb128 -2 -+ .byte 0x9f ; DW_CFA_offset, column 0x1f -+ .byte 0x1 ; uleb128 0x1 -+ .byte 0x9e ; DW_CFA_offset, column 0x1e -+ .byte 0x2 ; uleb128 0x2 -+ .byte 0x9d ; DW_CFA_offset, column 0x1d -+ .byte 0x3 ; uleb128 0x3 -+ .byte 0x9c ; DW_CFA_offset, column 0x1c -+ .byte 0x4 ; uleb128 0x4 -+ .byte 0x4 ; DW_CFA_advance_loc4 -+ .set L$set$6,LCFI2-LCFI1 -+ .long L$set$6 -+ .byte 0xd ; DW_CFA_def_cfa_register -+ .byte 0x1c ; uleb128 0x1c -+ .align 2 -+LEFDE1: -+ -diff -ruN --exclude=CVS gcc-3.2.2.orig/libffi/src/prep_cif.c gcc/libffi/src/prep_cif.c ---- gcc-3.2.2.orig/libffi/src/prep_cif.c Sat Mar 3 07:21:22 2001 -+++ gcc/libffi/src/prep_cif.c Mon Sep 30 20:59:42 2002 -@@ -103,7 +103,8 @@ - /* Perform a sanity check on the return type */ - FFI_ASSERT(ffi_type_test(cif->rtype)); - --#ifndef M68K -+ /* x86-64 and s390 stack space allocation is handled in prep_machdep. */ -+#if !defined M68K && !defined __x86_64__ && !defined S390 - /* Make space for the return structure pointer */ - if (cif->rtype->type == FFI_TYPE_STRUCT - #ifdef SPARC -@@ -122,6 +123,7 @@ - if (((*ptr)->size == 0) && (initialize_aggregate((*ptr)) != FFI_OK)) - return FFI_BAD_TYPEDEF; - -+#if !defined __x86_64__ && !defined S390 - #ifdef SPARC - if (((*ptr)->type == FFI_TYPE_STRUCT - && ((*ptr)->size > 16 || cif->abi != FFI_V9)) -@@ -137,6 +139,7 @@ - - bytes += STACK_ARG_SIZE((*ptr)->size); - } -+#endif - } - - cif->bytes = bytes; -diff -ruN --exclude=CVS gcc-3.2.2.orig/libffi/src/s390/ffi.c gcc/libffi/src/s390/ffi.c ---- gcc-3.2.2.orig/libffi/src/s390/ffi.c Thu Jan 1 09:00:00 1970 -+++ gcc/libffi/src/s390/ffi.c Thu Feb 6 08:58:57 2003 -@@ -0,0 +1,753 @@ -+/* ----------------------------------------------------------------------- -+ ffi.c - Copyright (c) 2000 Software AG -+ -+ S390 Foreign Function Interface -+ -+ Permission is hereby granted, free of charge, to any person obtaining -+ a copy of this software and associated documentation files (the -+ ``Software''), to deal in the Software without restriction, including -+ without limitation the rights to use, copy, modify, merge, publish, -+ distribute, sublicense, and/or sell copies of the Software, and to -+ permit persons to whom the Software is furnished to do so, subject to -+ the following conditions: -+ -+ The above copyright notice and this permission notice shall be included -+ in all copies or substantial portions of the Software. -+ -+ THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS -+ OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -+ IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY CLAIM, DAMAGES OR -+ OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, -+ ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -+ OTHER DEALINGS IN THE SOFTWARE. -+ ----------------------------------------------------------------------- */ -+/*====================================================================*/ -+/* Includes */ -+/* -------- */ -+/*====================================================================*/ -+ -+#include -+#include -+ -+#include -+#include -+ -+/*====================== End of Includes =============================*/ -+ -+/*====================================================================*/ -+/* Defines */ -+/* ------- */ -+/*====================================================================*/ -+ -+/* Maximum number of GPRs available for argument passing. */ -+#define MAX_GPRARGS 5 -+ -+/* Maximum number of FPRs available for argument passing. */ -+#ifdef __s390x__ -+#define MAX_FPRARGS 4 -+#else -+#define MAX_FPRARGS 2 -+#endif -+ -+/* Round to multiple of 16. */ -+#define ROUND_SIZE(size) (((size) + 15) & ~15) -+ -+/* If these values change, sysv.S must be adapted! */ -+#define FFI390_RET_VOID 0 -+#define FFI390_RET_STRUCT 1 -+#define FFI390_RET_FLOAT 2 -+#define FFI390_RET_DOUBLE 3 -+#define FFI390_RET_INT32 4 -+#define FFI390_RET_INT64 5 -+ -+/*===================== End of Defines ===============================*/ -+ -+/*====================================================================*/ -+/* Prototypes */ -+/* ---------- */ -+/*====================================================================*/ -+ -+static void ffi_prep_args (unsigned char *, extended_cif *); -+static int ffi_check_float_struct (ffi_type *); -+void -+#if __GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ > 2) -+__attribute__ ((visibility ("hidden"))) -+#endif -+ffi_closure_helper_SYSV (ffi_closure *, unsigned long *, -+ unsigned long long *, unsigned long *); -+ -+/*====================== End of Prototypes ===========================*/ -+ -+/*====================================================================*/ -+/* Externals */ -+/* --------- */ -+/*====================================================================*/ -+ -+extern void ffi_call_SYSV(unsigned, -+ extended_cif *, -+ void (*)(unsigned char *, extended_cif *), -+ unsigned, -+ void *, -+ void (*fn)()); -+ -+extern void ffi_closure_SYSV(void); -+ -+/*====================== End of Externals ============================*/ -+ -+/*====================================================================*/ -+/* */ -+/* Name - ffi_check_struct_type. */ -+/* */ -+/* Function - Determine if a structure can be passed within a */ -+/* general purpose or floating point register. */ -+/* */ -+/*====================================================================*/ -+ -+static int -+ffi_check_struct_type (ffi_type *arg) -+{ -+ size_t size = arg->size; -+ -+ /* If the struct has just one element, look at that element -+ to find out whether to consider the struct as floating point. */ -+ while (arg->type == FFI_TYPE_STRUCT -+ && arg->elements[0] && !arg->elements[1]) -+ arg = arg->elements[0]; -+ -+ /* Structs of size 1, 2, 4, and 8 are passed in registers, -+ just like the corresponding int/float types. */ -+ switch (size) -+ { -+ case 1: -+ return FFI_TYPE_UINT8; -+ -+ case 2: -+ return FFI_TYPE_UINT16; -+ -+ case 4: -+ if (arg->type == FFI_TYPE_FLOAT) -+ return FFI_TYPE_FLOAT; -+ else -+ return FFI_TYPE_UINT32; -+ -+ case 8: -+ if (arg->type == FFI_TYPE_DOUBLE) -+ return FFI_TYPE_DOUBLE; -+ else -+ return FFI_TYPE_UINT64; -+ -+ default: -+ break; -+ } -+ -+ /* Other structs are passed via a pointer to the data. */ -+ return FFI_TYPE_POINTER; -+} -+ -+/*======================== End of Routine ============================*/ -+ -+/*====================================================================*/ -+/* */ -+/* Name - ffi_prep_args. */ -+/* */ -+/* Function - Prepare parameters for call to function. */ -+/* */ -+/* ffi_prep_args is called by the assembly routine once stack space */ -+/* has been allocated for the function's arguments. */ -+/* */ -+/*====================================================================*/ -+ -+static void -+ffi_prep_args (unsigned char *stack, extended_cif *ecif) -+{ -+ /* The stack space will be filled with those areas: -+ -+ FPR argument register save area (highest addresses) -+ GPR argument register save area -+ temporary struct copies -+ overflow argument area (lowest addresses) -+ -+ We set up the following pointers: -+ -+ p_fpr: bottom of the FPR area (growing upwards) -+ p_gpr: bottom of the GPR area (growing upwards) -+ p_ov: bottom of the overflow area (growing upwards) -+ p_struct: top of the struct copy area (growing downwards) -+ -+ All areas are kept aligned to twice the word size. */ -+ -+ int gpr_off = ecif->cif->bytes; -+ int fpr_off = gpr_off + ROUND_SIZE (MAX_GPRARGS * sizeof (long)); -+ -+ unsigned long long *p_fpr = (unsigned long long *)(stack + fpr_off); -+ unsigned long *p_gpr = (unsigned long *)(stack + gpr_off); -+ unsigned char *p_struct = (unsigned char *)p_gpr; -+ unsigned long *p_ov = (unsigned long *)stack; -+ -+ int n_fpr = 0; -+ int n_gpr = 0; -+ int n_ov = 0; -+ -+ ffi_type **ptr; -+ void **p_argv = ecif->avalue; -+ int i; -+ -+ /* If we returning a structure then we set the first parameter register -+ to the address of where we are returning this structure. */ -+ -+ if (ecif->cif->flags == FFI390_RET_STRUCT) -+ p_gpr[n_gpr++] = (unsigned long) ecif->rvalue; -+ -+ /* Now for the arguments. */ -+ -+ for (ptr = ecif->cif->arg_types, i = ecif->cif->nargs; -+ i > 0; -+ i--, ptr++, p_argv++) -+ { -+ void *arg = *p_argv; -+ int type = (*ptr)->type; -+ -+ /* Check how a structure type is passed. */ -+ if (type == FFI_TYPE_STRUCT) -+ { -+ type = ffi_check_struct_type (*ptr); -+ -+ /* If we pass the struct via pointer, copy the data. */ -+ if (type == FFI_TYPE_POINTER) -+ { -+ p_struct -= ROUND_SIZE ((*ptr)->size); -+ memcpy (p_struct, (char *)arg, (*ptr)->size); -+ arg = &p_struct; -+ } -+ } -+ -+ /* Pointers are passed like UINTs of the same size. */ -+ if (type == FFI_TYPE_POINTER) -+#ifdef __s390x__ -+ type = FFI_TYPE_UINT64; -+#else -+ type = FFI_TYPE_UINT32; -+#endif -+ -+ /* Now handle all primitive int/float data types. */ -+ switch (type) -+ { -+ case FFI_TYPE_DOUBLE: -+ if (n_fpr < MAX_FPRARGS) -+ p_fpr[n_fpr++] = *(unsigned long long *) arg; -+ else -+#ifdef __s390x__ -+ p_ov[n_ov++] = *(unsigned long *) arg; -+#else -+ p_ov[n_ov++] = ((unsigned long *) arg)[0], -+ p_ov[n_ov++] = ((unsigned long *) arg)[1]; -+#endif -+ break; -+ -+ case FFI_TYPE_FLOAT: -+ if (n_fpr < MAX_FPRARGS) -+ p_fpr[n_fpr++] = (long long) *(unsigned int *) arg << 32; -+ else -+ p_ov[n_ov++] = *(unsigned int *) arg; -+ break; -+ -+ case FFI_TYPE_UINT64: -+ case FFI_TYPE_SINT64: -+#ifdef __s390x__ -+ if (n_gpr < MAX_GPRARGS) -+ p_gpr[n_gpr++] = *(unsigned long *) arg; -+ else -+ p_ov[n_ov++] = *(unsigned long *) arg; -+#else -+ if (n_gpr == MAX_GPRARGS-1) -+ n_gpr = MAX_GPRARGS; -+ if (n_gpr < MAX_GPRARGS) -+ p_gpr[n_gpr++] = ((unsigned long *) arg)[0], -+ p_gpr[n_gpr++] = ((unsigned long *) arg)[1]; -+ else -+ p_ov[n_ov++] = ((unsigned long *) arg)[0], -+ p_ov[n_ov++] = ((unsigned long *) arg)[1]; -+#endif -+ break; -+ -+ case FFI_TYPE_UINT32: -+ if (n_gpr < MAX_GPRARGS) -+ p_gpr[n_gpr++] = *(unsigned int *) arg; -+ else -+ p_ov[n_ov++] = *(unsigned int *) arg; -+ break; -+ -+ case FFI_TYPE_INT: -+ case FFI_TYPE_SINT32: -+ if (n_gpr < MAX_GPRARGS) -+ p_gpr[n_gpr++] = *(signed int *) arg; -+ else -+ p_ov[n_ov++] = *(signed int *) arg; -+ break; -+ -+ case FFI_TYPE_UINT16: -+ if (n_gpr < MAX_GPRARGS) -+ p_gpr[n_gpr++] = *(unsigned short *) arg; -+ else -+ p_ov[n_ov++] = *(unsigned short *) arg; -+ break; -+ -+ case FFI_TYPE_SINT16: -+ if (n_gpr < MAX_GPRARGS) -+ p_gpr[n_gpr++] = *(signed short *) arg; -+ else -+ p_ov[n_ov++] = *(signed short *) arg; -+ break; -+ -+ case FFI_TYPE_UINT8: -+ if (n_gpr < MAX_GPRARGS) -+ p_gpr[n_gpr++] = *(unsigned char *) arg; -+ else -+ p_ov[n_ov++] = *(unsigned char *) arg; -+ break; -+ -+ case FFI_TYPE_SINT8: -+ if (n_gpr < MAX_GPRARGS) -+ p_gpr[n_gpr++] = *(signed char *) arg; -+ else -+ p_ov[n_ov++] = *(signed char *) arg; -+ break; -+ -+ default: -+ FFI_ASSERT (0); -+ break; -+ } -+ } -+} -+ -+/*======================== End of Routine ============================*/ -+ -+/*====================================================================*/ -+/* */ -+/* Name - ffi_prep_cif_machdep. */ -+/* */ -+/* Function - Perform machine dependent CIF processing. */ -+/* */ -+/*====================================================================*/ -+ -+ffi_status -+ffi_prep_cif_machdep(ffi_cif *cif) -+{ -+ size_t struct_size = 0; -+ int n_gpr = 0; -+ int n_fpr = 0; -+ int n_ov = 0; -+ -+ ffi_type **ptr; -+ int i; -+ -+ /* Determine return value handling. */ -+ -+ switch (cif->rtype->type) -+ { -+ /* Void is easy. */ -+ case FFI_TYPE_VOID: -+ cif->flags = FFI390_RET_VOID; -+ break; -+ -+ /* Structures are returned via a hidden pointer. */ -+ case FFI_TYPE_STRUCT: -+ cif->flags = FFI390_RET_STRUCT; -+ n_gpr++; /* We need one GPR to pass the pointer. */ -+ break; -+ -+ /* Floating point values are returned in fpr 0. */ -+ case FFI_TYPE_FLOAT: -+ cif->flags = FFI390_RET_FLOAT; -+ break; -+ -+ case FFI_TYPE_DOUBLE: -+ cif->flags = FFI390_RET_DOUBLE; -+ break; -+ -+ /* Integer values are returned in gpr 2 (and gpr 3 -+ for 64-bit values on 31-bit machines). */ -+ case FFI_TYPE_UINT64: -+ case FFI_TYPE_SINT64: -+ cif->flags = FFI390_RET_INT64; -+ break; -+ -+ case FFI_TYPE_POINTER: -+ case FFI_TYPE_INT: -+ case FFI_TYPE_UINT32: -+ case FFI_TYPE_SINT32: -+ case FFI_TYPE_UINT16: -+ case FFI_TYPE_SINT16: -+ case FFI_TYPE_UINT8: -+ case FFI_TYPE_SINT8: -+ /* These are to be extended to word size. */ -+#ifdef __s390x__ -+ cif->flags = FFI390_RET_INT64; -+#else -+ cif->flags = FFI390_RET_INT32; -+#endif -+ break; -+ -+ default: -+ FFI_ASSERT (0); -+ break; -+ } -+ -+ /* Now for the arguments. */ -+ -+ for (ptr = cif->arg_types, i = cif->nargs; -+ i > 0; -+ i--, ptr++) -+ { -+ int type = (*ptr)->type; -+ -+ /* Check how a structure type is passed. */ -+ if (type == FFI_TYPE_STRUCT) -+ { -+ type = ffi_check_struct_type (*ptr); -+ -+ /* If we pass the struct via pointer, we must reserve space -+ to copy its data for proper call-by-value semantics. */ -+ if (type == FFI_TYPE_POINTER) -+ struct_size += ROUND_SIZE ((*ptr)->size); -+ } -+ -+ /* Now handle all primitive int/float data types. */ -+ switch (type) -+ { -+ /* The first MAX_FPRARGS floating point arguments -+ go in FPRs, the rest overflow to the stack. */ -+ -+ case FFI_TYPE_DOUBLE: -+ if (n_fpr < MAX_FPRARGS) -+ n_fpr++; -+ else -+ n_ov += sizeof (double) / sizeof (long); -+ break; -+ -+ case FFI_TYPE_FLOAT: -+ if (n_fpr < MAX_FPRARGS) -+ n_fpr++; -+ else -+ n_ov++; -+ break; -+ -+ /* On 31-bit machines, 64-bit integers are passed in GPR pairs, -+ if one is still available, or else on the stack. If only one -+ register is free, skip the register (it won't be used for any -+ subsequent argument either). */ -+ -+#ifndef __s390x__ -+ case FFI_TYPE_UINT64: -+ case FFI_TYPE_SINT64: -+ if (n_gpr == MAX_GPRARGS-1) -+ n_gpr = MAX_GPRARGS; -+ if (n_gpr < MAX_GPRARGS) -+ n_gpr += 2; -+ else -+ n_ov += 2; -+ break; -+#endif -+ -+ /* Everything else is passed in GPRs (until MAX_GPRARGS -+ have been used) or overflows to the stack. */ -+ -+ default: -+ if (n_gpr < MAX_GPRARGS) -+ n_gpr++; -+ else -+ n_ov++; -+ break; -+ } -+ } -+ -+ /* Total stack space as required for overflow arguments -+ and temporary structure copies. */ -+ -+ cif->bytes = ROUND_SIZE (n_ov * sizeof (long)) + struct_size; -+ -+ return FFI_OK; -+} -+ -+/*======================== End of Routine ============================*/ -+ -+/*====================================================================*/ -+/* */ -+/* Name - ffi_call. */ -+/* */ -+/* Function - Call the FFI routine. */ -+/* */ -+/*====================================================================*/ -+ -+void -+ffi_call(ffi_cif *cif, -+ void (*fn)(), -+ void *rvalue, -+ void **avalue) -+{ -+ int ret_type = cif->flags; -+ extended_cif ecif; -+ -+ ecif.cif = cif; -+ ecif.avalue = avalue; -+ ecif.rvalue = rvalue; -+ -+ /* If we don't have a return value, we need to fake one. */ -+ if (rvalue == NULL) -+ { -+ if (ret_type == FFI390_RET_STRUCT) -+ ecif.rvalue = alloca (cif->rtype->size); -+ else -+ ret_type = FFI390_RET_VOID; -+ } -+ -+ switch (cif->abi) -+ { -+ case FFI_SYSV: -+ ffi_call_SYSV (cif->bytes, &ecif, ffi_prep_args, -+ ret_type, ecif.rvalue, fn); -+ break; -+ -+ default: -+ FFI_ASSERT (0); -+ break; -+ } -+} -+ -+/*======================== End of Routine ============================*/ -+ -+/*====================================================================*/ -+/* */ -+/* Name - ffi_closure_helper_SYSV. */ -+/* */ -+/* Function - Call a FFI closure target function. */ -+/* */ -+/*====================================================================*/ -+ -+void -+ffi_closure_helper_SYSV (ffi_closure *closure, -+ unsigned long *p_gpr, -+ unsigned long long *p_fpr, -+ unsigned long *p_ov) -+{ -+ unsigned long long ret_buffer; -+ -+ void *rvalue = &ret_buffer; -+ void **avalue; -+ void **p_arg; -+ -+ int n_gpr = 0; -+ int n_fpr = 0; -+ int n_ov = 0; -+ -+ ffi_type **ptr; -+ int i; -+ -+ /* Allocate buffer for argument list pointers. */ -+ -+ p_arg = avalue = alloca (closure->cif->nargs * sizeof (void *)); -+ -+ /* If we returning a structure, pass the structure address -+ directly to the target function. Otherwise, have the target -+ function store the return value to the GPR save area. */ -+ -+ if (closure->cif->flags == FFI390_RET_STRUCT) -+ rvalue = (void *) p_gpr[n_gpr++]; -+ -+ /* Now for the arguments. */ -+ -+ for (ptr = closure->cif->arg_types, i = closure->cif->nargs; -+ i > 0; -+ i--, p_arg++, ptr++) -+ { -+ int deref_struct_pointer = 0; -+ int type = (*ptr)->type; -+ -+ /* Check how a structure type is passed. */ -+ if (type == FFI_TYPE_STRUCT) -+ { -+ type = ffi_check_struct_type (*ptr); -+ -+ /* If we pass the struct via pointer, remember to -+ retrieve the pointer later. */ -+ if (type == FFI_TYPE_POINTER) -+ deref_struct_pointer = 1; -+ } -+ -+ /* Pointers are passed like UINTs of the same size. */ -+ if (type == FFI_TYPE_POINTER) -+#ifdef __s390x__ -+ type = FFI_TYPE_UINT64; -+#else -+ type = FFI_TYPE_UINT32; -+#endif -+ -+ /* Now handle all primitive int/float data types. */ -+ switch (type) -+ { -+ case FFI_TYPE_DOUBLE: -+ if (n_fpr < MAX_FPRARGS) -+ *p_arg = &p_fpr[n_fpr++]; -+ else -+ *p_arg = &p_ov[n_ov], -+ n_ov += sizeof (double) / sizeof (long); -+ break; -+ -+ case FFI_TYPE_FLOAT: -+ if (n_fpr < MAX_FPRARGS) -+ *p_arg = &p_fpr[n_fpr++]; -+ else -+ *p_arg = (char *)&p_ov[n_ov++] + sizeof (long) - 4; -+ break; -+ -+ case FFI_TYPE_UINT64: -+ case FFI_TYPE_SINT64: -+#ifdef __s390x__ -+ if (n_gpr < MAX_GPRARGS) -+ *p_arg = &p_gpr[n_gpr++]; -+ else -+ *p_arg = &p_ov[n_ov++]; -+#else -+ if (n_gpr == MAX_GPRARGS-1) -+ n_gpr = MAX_GPRARGS; -+ if (n_gpr < MAX_GPRARGS) -+ *p_arg = &p_gpr[n_gpr], n_gpr += 2; -+ else -+ *p_arg = &p_ov[n_ov], n_ov += 2; -+#endif -+ break; -+ -+ case FFI_TYPE_INT: -+ case FFI_TYPE_UINT32: -+ case FFI_TYPE_SINT32: -+ if (n_gpr < MAX_GPRARGS) -+ *p_arg = (char *)&p_gpr[n_gpr++] + sizeof (long) - 4; -+ else -+ *p_arg = (char *)&p_ov[n_ov++] + sizeof (long) - 4; -+ break; -+ -+ case FFI_TYPE_UINT16: -+ case FFI_TYPE_SINT16: -+ if (n_gpr < MAX_GPRARGS) -+ *p_arg = (char *)&p_gpr[n_gpr++] + sizeof (long) - 2; -+ else -+ *p_arg = (char *)&p_ov[n_ov++] + sizeof (long) - 2; -+ break; -+ -+ case FFI_TYPE_UINT8: -+ case FFI_TYPE_SINT8: -+ if (n_gpr < MAX_GPRARGS) -+ *p_arg = (char *)&p_gpr[n_gpr++] + sizeof (long) - 1; -+ else -+ *p_arg = (char *)&p_ov[n_ov++] + sizeof (long) - 1; -+ break; -+ -+ default: -+ FFI_ASSERT (0); -+ break; -+ } -+ -+ /* If this is a struct passed via pointer, we need to -+ actually retrieve that pointer. */ -+ if (deref_struct_pointer) -+ *p_arg = *(void **)*p_arg; -+ } -+ -+ -+ /* Call the target function. */ -+ (closure->fun) (closure->cif, rvalue, avalue, closure->user_data); -+ -+ /* Convert the return value. */ -+ switch (closure->cif->rtype->type) -+ { -+ /* Void is easy, and so is struct. */ -+ case FFI_TYPE_VOID: -+ case FFI_TYPE_STRUCT: -+ break; -+ -+ /* Floating point values are returned in fpr 0. */ -+ case FFI_TYPE_FLOAT: -+ p_fpr[0] = (long long) *(unsigned int *) rvalue << 32; -+ break; -+ -+ case FFI_TYPE_DOUBLE: -+ p_fpr[0] = *(unsigned long long *) rvalue; -+ break; -+ -+ /* Integer values are returned in gpr 2 (and gpr 3 -+ for 64-bit values on 31-bit machines). */ -+ case FFI_TYPE_UINT64: -+ case FFI_TYPE_SINT64: -+#ifdef __s390x__ -+ p_gpr[0] = *(unsigned long *) rvalue; -+#else -+ p_gpr[0] = ((unsigned long *) rvalue)[0], -+ p_gpr[1] = ((unsigned long *) rvalue)[1]; -+#endif -+ break; -+ -+ case FFI_TYPE_POINTER: -+ case FFI_TYPE_UINT32: -+ case FFI_TYPE_UINT16: -+ case FFI_TYPE_UINT8: -+ p_gpr[0] = *(unsigned long *) rvalue; -+ break; -+ -+ case FFI_TYPE_INT: -+ case FFI_TYPE_SINT32: -+ case FFI_TYPE_SINT16: -+ case FFI_TYPE_SINT8: -+ p_gpr[0] = *(signed long *) rvalue; -+ break; -+ -+ default: -+ FFI_ASSERT (0); -+ break; -+ } -+} -+ -+/*======================== End of Routine ============================*/ -+ -+/*====================================================================*/ -+/* */ -+/* Name - ffi_prep_closure. */ -+/* */ -+/* Function - Prepare a FFI closure. */ -+/* */ -+/*====================================================================*/ -+ -+ffi_status -+ffi_prep_closure (ffi_closure *closure, -+ ffi_cif *cif, -+ void (*fun) (ffi_cif *, void *, void **, void *), -+ void *user_data) -+{ -+ FFI_ASSERT (cif->abi == FFI_SYSV); -+ -+#ifndef __s390x__ -+ *(short *)&closure->tramp [0] = 0x0d10; /* basr %r1,0 */ -+ *(short *)&closure->tramp [2] = 0x9801; /* lm %r0,%r1,6(%r1) */ -+ *(short *)&closure->tramp [4] = 0x1006; -+ *(short *)&closure->tramp [6] = 0x07f1; /* br %r1 */ -+ *(long *)&closure->tramp [8] = (long)closure; -+ *(long *)&closure->tramp[12] = (long)&ffi_closure_SYSV; -+#else -+ *(short *)&closure->tramp [0] = 0x0d10; /* basr %r1,0 */ -+ *(short *)&closure->tramp [2] = 0xeb01; /* lmg %r0,%r1,14(%r1) */ -+ *(short *)&closure->tramp [4] = 0x100e; -+ *(short *)&closure->tramp [6] = 0x0004; -+ *(short *)&closure->tramp [8] = 0x07f1; /* br %r1 */ -+ *(long *)&closure->tramp[16] = (long)closure; -+ *(long *)&closure->tramp[24] = (long)&ffi_closure_SYSV; -+#endif -+ -+ closure->cif = cif; -+ closure->user_data = user_data; -+ closure->fun = fun; -+ -+ return FFI_OK; -+} -+ -+/*======================== End of Routine ============================*/ -+ -diff -ruN --exclude=CVS gcc-3.2.2.orig/libffi/src/s390/sysv.S gcc/libffi/src/s390/sysv.S ---- gcc-3.2.2.orig/libffi/src/s390/sysv.S Thu Jan 1 09:00:00 1970 -+++ gcc/libffi/src/s390/sysv.S Thu Nov 28 01:44:35 2002 -@@ -0,0 +1,425 @@ -+/* ----------------------------------------------------------------------- -+ sysv.S - Copyright (c) 2000 Software AG -+ -+ S390 Foreign Function Interface -+ -+ Permission is hereby granted, free of charge, to any person obtaining -+ a copy of this software and associated documentation files (the -+ ``Software''), to deal in the Software without restriction, including -+ without limitation the rights to use, copy, modify, merge, publish, -+ distribute, sublicense, and/or sell copies of the Software, and to -+ permit persons to whom the Software is furnished to do so, subject to -+ the following conditions: -+ -+ The above copyright notice and this permission notice shall be included -+ in all copies or substantial portions of the Software. -+ -+ THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS -+ OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -+ IN NO EVENT SHALL CYGNUS SOLUTIONS BE LIABLE FOR ANY CLAIM, DAMAGES OR -+ OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, -+ ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -+ OTHER DEALINGS IN THE SOFTWARE. -+ ----------------------------------------------------------------------- */ -+ -+#ifndef __s390x__ -+ -+.text -+ -+ # r2: cif->bytes -+ # r3: &ecif -+ # r4: ffi_prep_args -+ # r5: ret_type -+ # r6: ecif.rvalue -+ # ov: fn -+ -+ # This assumes we are using gas. -+ .globl ffi_call_SYSV -+ .type ffi_call_SYSV,%function -+ffi_call_SYSV: -+.LFB1: -+ stm %r6,%r15,24(%r15) # Save registers -+.LCFI0: -+ basr %r13,0 # Set up base register -+.Lbase: -+ lr %r11,%r15 # Set up frame pointer -+.LCFI1: -+ sr %r15,%r2 -+ ahi %r15,-96-48 # Allocate stack -+ lr %r8,%r6 # Save ecif.rvalue -+ sr %r9,%r9 -+ ic %r9,.Ltable-.Lbase(%r13,%r5) # Load epilog address -+ l %r7,96(%r11) # Load function address -+ st %r11,0(%r15) # Set up back chain -+ ahi %r11,-48 # Register save area -+.LCFI2: -+ -+ la %r2,96(%r15) # Save area -+ # r3 already holds &ecif -+ basr %r14,%r4 # Call ffi_prep_args -+ -+ lm %r2,%r6,0(%r11) # Load arguments -+ ld %f0,32(%r11) -+ ld %f2,40(%r11) -+ la %r14,0(%r13,%r9) # Set return address -+ br %r7 # ... and call function -+ -+.LretNone: # Return void -+ l %r4,48+56(%r11) -+ lm %r6,%r15,48+24(%r11) -+ br %r4 -+ -+.LretFloat: -+ l %r4,48+56(%r11) -+ ste %f0,0(%r8) # Return float -+ lm %r6,%r15,48+24(%r11) -+ br %r4 -+ -+.LretDouble: -+ l %r4,48+56(%r11) -+ std %f0,0(%r8) # Return double -+ lm %r6,%r15,48+24(%r11) -+ br %r4 -+ -+.LretInt32: -+ l %r4,48+56(%r11) -+ st %r2,0(%r8) # Return int -+ lm %r6,%r15,48+24(%r11) -+ br %r4 -+ -+.LretInt64: -+ l %r4,48+56(%r11) -+ stm %r2,%r3,0(%r8) # Return long long -+ lm %r6,%r15,48+24(%r11) -+ br %r4 -+ -+.Ltable: -+ .byte .LretNone-.Lbase # FFI390_RET_VOID -+ .byte .LretNone-.Lbase # FFI390_RET_STRUCT -+ .byte .LretFloat-.Lbase # FFI390_RET_FLOAT -+ .byte .LretDouble-.Lbase # FFI390_RET_DOUBLE -+ .byte .LretInt32-.Lbase # FFI390_RET_INT32 -+ .byte .LretInt64-.Lbase # FFI390_RET_INT64 -+ -+.LFE1: -+.ffi_call_SYSV_end: -+ .size ffi_call_SYSV,.ffi_call_SYSV_end-ffi_call_SYSV -+ -+ -+ .globl ffi_closure_SYSV -+ .type ffi_closure_SYSV,%function -+ffi_closure_SYSV: -+.LFB2: -+ stm %r12,%r15,48(%r15) # Save registers -+.LCFI10: -+ basr %r13,0 # Set up base register -+.Lcbase: -+ stm %r2,%r6,8(%r15) # Save arguments -+ std %f0,64(%r15) -+ std %f2,72(%r15) -+ lr %r1,%r15 # Set up stack frame -+ ahi %r15,-96 -+.LCFI11: -+ l %r12,.Lchelper-.Lcbase(%r13) # Get helper function -+ lr %r2,%r0 # Closure -+ la %r3,8(%r1) # GPRs -+ la %r4,64(%r1) # FPRs -+ la %r5,96(%r1) # Overflow -+ st %r1,0(%r15) # Set up back chain -+ -+ bas %r14,0(%r12,%r13) # Call helper -+ -+ l %r4,96+56(%r15) -+ ld %f0,96+64(%r15) # Load return registers -+ lm %r2,%r3,96+8(%r15) -+ lm %r12,%r15,96+48(%r15) -+ br %r4 -+ -+ .align 4 -+.Lchelper: -+ .long ffi_closure_helper_SYSV-.Lcbase -+ -+.LFE2: -+ -+.ffi_closure_SYSV_end: -+ .size ffi_closure_SYSV,.ffi_closure_SYSV_end-ffi_closure_SYSV -+ -+ -+ .section .eh_frame,"a",@progbits -+.Lframe1: -+ .4byte .LECIE1-.LSCIE1 # Length of Common Information Entry -+.LSCIE1: -+ .4byte 0x0 # CIE Identifier Tag -+ .byte 0x1 # CIE Version -+ .ascii "zR\0" # CIE Augmentation -+ .uleb128 0x1 # CIE Code Alignment Factor -+ .sleb128 -4 # CIE Data Alignment Factor -+ .byte 0xe # CIE RA Column -+ .uleb128 0x1 # Augmentation size -+ .byte 0x1b # FDE Encoding (pcrel sdata4) -+ .byte 0xc # DW_CFA_def_cfa -+ .uleb128 0xf -+ .uleb128 0x60 -+ .align 4 -+.LECIE1: -+.LSFDE1: -+ .4byte .LEFDE1-.LASFDE1 # FDE Length -+.LASFDE1: -+ .4byte .LASFDE1-.Lframe1 # FDE CIE offset -+ .4byte .LFB1-. # FDE initial location -+ .4byte .LFE1-.LFB1 # FDE address range -+ .uleb128 0x0 # Augmentation size -+ .byte 0x4 # DW_CFA_advance_loc4 -+ .4byte .LCFI0-.LFB1 -+ .byte 0x8f # DW_CFA_offset, column 0xf -+ .uleb128 0x9 -+ .byte 0x8e # DW_CFA_offset, column 0xe -+ .uleb128 0xa -+ .byte 0x8d # DW_CFA_offset, column 0xd -+ .uleb128 0xb -+ .byte 0x8c # DW_CFA_offset, column 0xc -+ .uleb128 0xc -+ .byte 0x8b # DW_CFA_offset, column 0xb -+ .uleb128 0xd -+ .byte 0x8a # DW_CFA_offset, column 0xa -+ .uleb128 0xe -+ .byte 0x89 # DW_CFA_offset, column 0x9 -+ .uleb128 0xf -+ .byte 0x88 # DW_CFA_offset, column 0x8 -+ .uleb128 0x10 -+ .byte 0x87 # DW_CFA_offset, column 0x7 -+ .uleb128 0x11 -+ .byte 0x86 # DW_CFA_offset, column 0x6 -+ .uleb128 0x12 -+ .byte 0x4 # DW_CFA_advance_loc4 -+ .4byte .LCFI1-.LCFI0 -+ .byte 0xd # DW_CFA_def_cfa_register -+ .uleb128 0xb -+ .byte 0x4 # DW_CFA_advance_loc4 -+ .4byte .LCFI2-.LCFI1 -+ .byte 0xe # DW_CFA_def_cfa_offset -+ .uleb128 0x90 -+ .align 4 -+.LEFDE1: -+.LSFDE2: -+ .4byte .LEFDE2-.LASFDE2 # FDE Length -+.LASFDE2: -+ .4byte .LASFDE2-.Lframe1 # FDE CIE offset -+ .4byte .LFB2-. # FDE initial location -+ .4byte .LFE2-.LFB2 # FDE address range -+ .uleb128 0x0 # Augmentation size -+ .byte 0x4 # DW_CFA_advance_loc4 -+ .4byte .LCFI10-.LFB2 -+ .byte 0x8f # DW_CFA_offset, column 0xf -+ .uleb128 0x9 -+ .byte 0x8e # DW_CFA_offset, column 0xe -+ .uleb128 0xa -+ .byte 0x8d # DW_CFA_offset, column 0xd -+ .uleb128 0xb -+ .byte 0x8c # DW_CFA_offset, column 0xc -+ .uleb128 0xc -+ .byte 0x4 # DW_CFA_advance_loc4 -+ .4byte .LCFI11-.LCFI10 -+ .byte 0xe # DW_CFA_def_cfa_offset -+ .uleb128 0xc0 -+ .align 4 -+.LEFDE2: -+ -+#else -+ -+.text -+ -+ # r2: cif->bytes -+ # r3: &ecif -+ # r4: ffi_prep_args -+ # r5: ret_type -+ # r6: ecif.rvalue -+ # ov: fn -+ -+ # This assumes we are using gas. -+ .globl ffi_call_SYSV -+ .type ffi_call_SYSV,%function -+ffi_call_SYSV: -+.LFB1: -+ stmg %r6,%r15,48(%r15) # Save registers -+.LCFI0: -+ larl %r13,.Lbase # Set up base register -+ lgr %r11,%r15 # Set up frame pointer -+.LCFI1: -+ sgr %r15,%r2 -+ aghi %r15,-160-80 # Allocate stack -+ lgr %r8,%r6 # Save ecif.rvalue -+ llgc %r9,.Ltable-.Lbase(%r13,%r5) # Load epilog address -+ lg %r7,160(%r11) # Load function address -+ stg %r11,0(%r15) # Set up back chain -+ aghi %r11,-80 # Register save area -+.LCFI2: -+ -+ la %r2,160(%r15) # Save area -+ # r3 already holds &ecif -+ basr %r14,%r4 # Call ffi_prep_args -+ -+ lmg %r2,%r6,0(%r11) # Load arguments -+ ld %f0,48(%r11) -+ ld %f2,56(%r11) -+ ld %f4,64(%r11) -+ ld %f6,72(%r11) -+ la %r14,0(%r13,%r9) # Set return address -+ br %r7 # ... and call function -+ -+.Lbase: -+.LretNone: # Return void -+ lg %r4,80+112(%r11) -+ lmg %r6,%r15,80+48(%r11) -+ br %r4 -+ -+.LretFloat: -+ lg %r4,80+112(%r11) -+ ste %f0,0(%r8) # Return float -+ lmg %r6,%r15,80+48(%r11) -+ br %r4 -+ -+.LretDouble: -+ lg %r4,80+112(%r11) -+ std %f0,0(%r8) # Return double -+ lmg %r6,%r15,80+48(%r11) -+ br %r4 -+ -+.LretInt32: -+ lg %r4,80+112(%r11) -+ st %r2,0(%r8) # Return int -+ lmg %r6,%r15,80+48(%r11) -+ br %r4 -+ -+.LretInt64: -+ lg %r4,80+112(%r11) -+ stg %r2,0(%r8) # Return long -+ lmg %r6,%r15,80+48(%r11) -+ br %r4 -+ -+.Ltable: -+ .byte .LretNone-.Lbase # FFI390_RET_VOID -+ .byte .LretNone-.Lbase # FFI390_RET_STRUCT -+ .byte .LretFloat-.Lbase # FFI390_RET_FLOAT -+ .byte .LretDouble-.Lbase # FFI390_RET_DOUBLE -+ .byte .LretInt32-.Lbase # FFI390_RET_INT32 -+ .byte .LretInt64-.Lbase # FFI390_RET_INT64 -+ -+.LFE1: -+.ffi_call_SYSV_end: -+ .size ffi_call_SYSV,.ffi_call_SYSV_end-ffi_call_SYSV -+ -+ -+ .globl ffi_closure_SYSV -+ .type ffi_closure_SYSV,%function -+ffi_closure_SYSV: -+.LFB2: -+ stmg %r14,%r15,112(%r15) # Save registers -+.LCFI10: -+ stmg %r2,%r6,16(%r15) # Save arguments -+ std %f0,128(%r15) -+ std %f2,136(%r15) -+ std %f4,144(%r15) -+ std %f6,152(%r15) -+ lgr %r1,%r15 # Set up stack frame -+ aghi %r15,-160 -+.LCFI11: -+ lgr %r2,%r0 # Closure -+ la %r3,16(%r1) # GPRs -+ la %r4,128(%r1) # FPRs -+ la %r5,160(%r1) # Overflow -+ stg %r1,0(%r15) # Set up back chain -+ -+ brasl %r14,ffi_closure_helper_SYSV # Call helper -+ -+ lg %r14,160+112(%r15) -+ ld %f0,160+128(%r15) # Load return registers -+ lg %r2,160+16(%r15) -+ la %r15,160(%r15) -+ br %r14 -+.LFE2: -+ -+.ffi_closure_SYSV_end: -+ .size ffi_closure_SYSV,.ffi_closure_SYSV_end-ffi_closure_SYSV -+ -+ -+ -+ .section .eh_frame,"a",@progbits -+.Lframe1: -+ .4byte .LECIE1-.LSCIE1 # Length of Common Information Entry -+.LSCIE1: -+ .4byte 0x0 # CIE Identifier Tag -+ .byte 0x1 # CIE Version -+ .ascii "zR\0" # CIE Augmentation -+ .uleb128 0x1 # CIE Code Alignment Factor -+ .sleb128 -8 # CIE Data Alignment Factor -+ .byte 0xe # CIE RA Column -+ .uleb128 0x1 # Augmentation size -+ .byte 0x1b # FDE Encoding (pcrel sdata4) -+ .byte 0xc # DW_CFA_def_cfa -+ .uleb128 0xf -+ .uleb128 0xa0 -+ .align 8 -+.LECIE1: -+.LSFDE1: -+ .4byte .LEFDE1-.LASFDE1 # FDE Length -+.LASFDE1: -+ .4byte .LASFDE1-.Lframe1 # FDE CIE offset -+ .4byte .LFB1-. # FDE initial location -+ .4byte .LFE1-.LFB1 # FDE address range -+ .uleb128 0x0 # Augmentation size -+ .byte 0x4 # DW_CFA_advance_loc4 -+ .4byte .LCFI0-.LFB1 -+ .byte 0x8f # DW_CFA_offset, column 0xf -+ .uleb128 0x5 -+ .byte 0x8e # DW_CFA_offset, column 0xe -+ .uleb128 0x6 -+ .byte 0x8d # DW_CFA_offset, column 0xd -+ .uleb128 0x7 -+ .byte 0x8c # DW_CFA_offset, column 0xc -+ .uleb128 0x8 -+ .byte 0x8b # DW_CFA_offset, column 0xb -+ .uleb128 0x9 -+ .byte 0x8a # DW_CFA_offset, column 0xa -+ .uleb128 0xa -+ .byte 0x89 # DW_CFA_offset, column 0x9 -+ .uleb128 0xb -+ .byte 0x88 # DW_CFA_offset, column 0x8 -+ .uleb128 0xc -+ .byte 0x87 # DW_CFA_offset, column 0x7 -+ .uleb128 0xd -+ .byte 0x86 # DW_CFA_offset, column 0x6 -+ .uleb128 0xe -+ .byte 0x4 # DW_CFA_advance_loc4 -+ .4byte .LCFI1-.LCFI0 -+ .byte 0xd # DW_CFA_def_cfa_register -+ .uleb128 0xb -+ .byte 0x4 # DW_CFA_advance_loc4 -+ .4byte .LCFI2-.LCFI1 -+ .byte 0xe # DW_CFA_def_cfa_offset -+ .uleb128 0xf0 -+ .align 8 -+.LEFDE1: -+.LSFDE2: -+ .4byte .LEFDE2-.LASFDE2 # FDE Length -+.LASFDE2: -+ .4byte .LASFDE2-.Lframe1 # FDE CIE offset -+ .4byte .LFB2-. # FDE initial location -+ .4byte .LFE2-.LFB2 # FDE address range -+ .uleb128 0x0 # Augmentation size -+ .byte 0x4 # DW_CFA_advance_loc4 -+ .4byte .LCFI10-.LFB2 -+ .byte 0x8f # DW_CFA_offset, column 0xf -+ .uleb128 0x5 -+ .byte 0x8e # DW_CFA_offset, column 0xe -+ .uleb128 0x6 -+ .byte 0x4 # DW_CFA_advance_loc4 -+ .4byte .LCFI11-.LCFI10 -+ .byte 0xe # DW_CFA_def_cfa_offset -+ .uleb128 0x140 -+ .align 8 -+.LEFDE2: -+ -+#endif -+ -diff -ruN --exclude=CVS gcc-3.2.2.orig/libffi/src/sh/ffi.c gcc/libffi/src/sh/ffi.c ---- gcc-3.2.2.orig/libffi/src/sh/ffi.c Thu Jan 1 09:00:00 1970 -+++ gcc/libffi/src/sh/ffi.c Fri Jul 19 10:08:43 2002 -@@ -0,0 +1,722 @@ -+/* ----------------------------------------------------------------------- -+ ffi.c - Copyright (c) 2002 Kaz Kojima -+ -+ SuperH Foreign Function Interface -+ -+ Permission is hereby granted, free of charge, to any person obtaining -+ a copy of this software and associated documentation files (the -+ ``Software''), to deal in the Software without restriction, including -+ without limitation the rights to use, copy, modify, merge, publish, -+ distribute, sublicense, and/or sell copies of the Software, and to -+ permit persons to whom the Software is furnished to do so, subject to -+ the following conditions: -+ -+ The above copyright notice and this permission notice shall be included -+ in all copies or substantial portions of the Software. -+ -+ THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS -+ OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -+ IN NO EVENT SHALL CYGNUS SOLUTIONS BE LIABLE FOR ANY CLAIM, DAMAGES OR -+ OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, -+ ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -+ OTHER DEALINGS IN THE SOFTWARE. -+ ----------------------------------------------------------------------- */ -+ -+#include -+#include -+ -+#include -+ -+#define NGREGARG 4 -+#if defined(__SH4__) -+#define NFREGARG 8 -+#endif -+ -+#if defined(__HITACHI__) -+#define STRUCT_VALUE_ADDRESS_WITH_ARG 1 -+#else -+#define STRUCT_VALUE_ADDRESS_WITH_ARG 0 -+#endif -+ -+/* If the structure has essentialy an unique element, return its type. */ -+static int -+simple_type (ffi_type *arg) -+{ -+ if (arg->type != FFI_TYPE_STRUCT) -+ return arg->type; -+ else if (arg->elements[1]) -+ return FFI_TYPE_STRUCT; -+ -+ return simple_type (arg->elements[0]); -+} -+ -+static int -+return_type (ffi_type *arg) -+{ -+ unsigned short type; -+ -+ if (arg->type != FFI_TYPE_STRUCT) -+ return arg->type; -+ -+ type = simple_type (arg->elements[0]); -+ if (! arg->elements[1]) -+ { -+ switch (type) -+ { -+ case FFI_TYPE_SINT8: -+ case FFI_TYPE_UINT8: -+ case FFI_TYPE_SINT16: -+ case FFI_TYPE_UINT16: -+ case FFI_TYPE_SINT32: -+ case FFI_TYPE_UINT32: -+ return FFI_TYPE_INT; -+ -+ default: -+ return type; -+ } -+ } -+ -+ /* gcc uses r0/r1 pair for some kind of structures. */ -+ if (arg->size <= 2 * sizeof (int)) -+ { -+ int i = 0; -+ ffi_type *e; -+ -+ while ((e = arg->elements[i++])) -+ { -+ type = simple_type (e); -+ switch (type) -+ { -+ case FFI_TYPE_SINT32: -+ case FFI_TYPE_UINT32: -+ case FFI_TYPE_INT: -+ case FFI_TYPE_FLOAT: -+ return FFI_TYPE_UINT64; -+ -+ default: -+ break; -+ } -+ } -+ } -+ -+ return FFI_TYPE_STRUCT; -+} -+ -+/* ffi_prep_args is called by the assembly routine once stack space -+ has been allocated for the function's arguments */ -+ -+/*@-exportheader@*/ -+void ffi_prep_args(char *stack, extended_cif *ecif) -+/*@=exportheader@*/ -+{ -+ register unsigned int i; -+ register int tmp; -+ register unsigned int avn; -+ register void **p_argv; -+ register char *argp; -+ register ffi_type **p_arg; -+ int greg, ireg; -+#if defined(__SH4__) -+ int freg = 0; -+#endif -+ -+ tmp = 0; -+ argp = stack; -+ -+ if (return_type (ecif->cif->rtype) == FFI_TYPE_STRUCT) -+ { -+ *(void **) argp = ecif->rvalue; -+ argp += 4; -+ ireg = STRUCT_VALUE_ADDRESS_WITH_ARG ? 1 : 0; -+ } -+ else -+ ireg = 0; -+ -+ /* Set arguments for registers. */ -+ greg = ireg; -+ avn = ecif->cif->nargs; -+ p_argv = ecif->avalue; -+ -+ for (i = 0, p_arg = ecif->cif->arg_types; i < avn; i++, p_arg++, p_argv++) -+ { -+ size_t z; -+ -+ z = (*p_arg)->size; -+ if (z < sizeof(int)) -+ { -+ if (greg++ >= NGREGARG) -+ continue; -+ -+ z = sizeof(int); -+ switch ((*p_arg)->type) -+ { -+ case FFI_TYPE_SINT8: -+ *(signed int *) argp = (signed int)*(SINT8 *)(* p_argv); -+ break; -+ -+ case FFI_TYPE_UINT8: -+ *(unsigned int *) argp = (unsigned int)*(UINT8 *)(* p_argv); -+ break; -+ -+ case FFI_TYPE_SINT16: -+ *(signed int *) argp = (signed int)*(SINT16 *)(* p_argv); -+ break; -+ -+ case FFI_TYPE_UINT16: -+ *(unsigned int *) argp = (unsigned int)*(UINT16 *)(* p_argv); -+ break; -+ -+ case FFI_TYPE_STRUCT: -+ *(unsigned int *) argp = (unsigned int)*(UINT32 *)(* p_argv); -+ break; -+ -+ default: -+ FFI_ASSERT(0); -+ } -+ argp += z; -+ } -+ else if (z == sizeof(int)) -+ { -+#if defined(__SH4__) -+ if ((*p_arg)->type == FFI_TYPE_FLOAT) -+ { -+ if (freg++ >= NFREGARG) -+ continue; -+ } -+ else -+#endif -+ { -+ if (greg++ >= NGREGARG) -+ continue; -+ } -+ *(unsigned int *) argp = (unsigned int)*(UINT32 *)(* p_argv); -+ argp += z; -+ } -+#if defined(__SH4__) -+ else if ((*p_arg)->type == FFI_TYPE_DOUBLE) -+ { -+ if (freg + 1 >= NFREGARG) -+ continue; -+ freg = (freg + 1) & ~1; -+ freg += 2; -+ memcpy (argp, *p_argv, z); -+ argp += z; -+ } -+#endif -+ else -+ { -+ int n = (z + sizeof (int) - 1) / sizeof (int); -+#if defined(__SH4__) -+ if (greg + n - 1 >= NGREGARG) -+ continue; -+ greg += n; -+#else -+ if (greg >= NGREGARG) -+ continue; -+ else if (greg + n - 1 >= NGREGARG) -+ greg = NGREGARG; -+ else -+ greg += n; -+#endif -+ memcpy (argp, *p_argv, z); -+ argp += z; -+ } -+ } -+ -+ /* Set arguments on stack. */ -+ greg = ireg; -+#if defined(__SH4__) -+ freg = 0; -+#endif -+ p_argv = ecif->avalue; -+ -+ for (i = 0, p_arg = ecif->cif->arg_types; i < avn; i++, p_arg++, p_argv++) -+ { -+ size_t z; -+ -+ z = (*p_arg)->size; -+ if (z < sizeof(int)) -+ { -+ if (greg++ < NGREGARG) -+ continue; -+ -+ z = sizeof(int); -+ switch ((*p_arg)->type) -+ { -+ case FFI_TYPE_SINT8: -+ *(signed int *) argp = (signed int)*(SINT8 *)(* p_argv); -+ break; -+ -+ case FFI_TYPE_UINT8: -+ *(unsigned int *) argp = (unsigned int)*(UINT8 *)(* p_argv); -+ break; -+ -+ case FFI_TYPE_SINT16: -+ *(signed int *) argp = (signed int)*(SINT16 *)(* p_argv); -+ break; -+ -+ case FFI_TYPE_UINT16: -+ *(unsigned int *) argp = (unsigned int)*(UINT16 *)(* p_argv); -+ break; -+ -+ case FFI_TYPE_STRUCT: -+ *(unsigned int *) argp = (unsigned int)*(UINT32 *)(* p_argv); -+ break; -+ -+ default: -+ FFI_ASSERT(0); -+ } -+ argp += z; -+ } -+ else if (z == sizeof(int)) -+ { -+#if defined(__SH4__) -+ if ((*p_arg)->type == FFI_TYPE_FLOAT) -+ { -+ if (freg++ < NFREGARG) -+ continue; -+ } -+ else -+#endif -+ { -+ if (greg++ < NGREGARG) -+ continue; -+ } -+ *(unsigned int *) argp = (unsigned int)*(UINT32 *)(* p_argv); -+ argp += z; -+ } -+#if defined(__SH4__) -+ else if ((*p_arg)->type == FFI_TYPE_DOUBLE) -+ { -+ if (freg + 1 < NFREGARG) -+ { -+ freg = (freg + 1) & ~1; -+ freg += 2; -+ continue; -+ } -+ memcpy (argp, *p_argv, z); -+ argp += z; -+ } -+#endif -+ else -+ { -+ int n = (z + sizeof (int) - 1) / sizeof (int); -+ if (greg + n - 1 < NGREGARG) -+ { -+ greg += n; -+ continue; -+ } -+#if (! defined(__SH4__)) -+ else if (greg < NGREGARG) -+ { -+ greg = NGREGARG; -+ continue; -+ } -+#endif -+ memcpy (argp, *p_argv, z); -+ argp += z; -+ } -+ } -+ -+ return; -+} -+ -+/* Perform machine dependent cif processing */ -+ffi_status ffi_prep_cif_machdep(ffi_cif *cif) -+{ -+ int i, j; -+ int size, type; -+ int n, m; -+ int greg; -+#if defined(__SH4__) -+ int freg = 0; -+#endif -+ -+ cif->flags = 0; -+ -+ greg = ((return_type (cif->rtype) == FFI_TYPE_STRUCT) && -+ STRUCT_VALUE_ADDRESS_WITH_ARG) ? 1 : 0; -+ -+#if defined(__SH4__) -+ for (i = j = 0; i < cif->nargs && j < 12; i++) -+ { -+ type = (cif->arg_types)[i]->type; -+ switch (type) -+ { -+ case FFI_TYPE_FLOAT: -+ if (freg >= NFREGARG) -+ continue; -+ freg++; -+ cif->flags += ((cif->arg_types)[i]->type) << (2 * j); -+ j++; -+ break; -+ -+ case FFI_TYPE_DOUBLE: -+ if ((freg + 1) >= NFREGARG) -+ continue; -+ freg = (freg + 1) & ~1; -+ freg += 2; -+ cif->flags += ((cif->arg_types)[i]->type) << (2 * j); -+ j++; -+ break; -+ -+ default: -+ size = (cif->arg_types)[i]->size; -+ n = (size + sizeof (int) - 1) / sizeof (int); -+ if (greg + n - 1 >= NGREGARG) -+ continue; -+ greg += n; -+ for (m = 0; m < n; m++) -+ cif->flags += FFI_TYPE_INT << (2 * j++); -+ break; -+ } -+ } -+#else -+ for (i = j = 0; i < cif->nargs && j < 4; i++) -+ { -+ size = (cif->arg_types)[i]->size; -+ n = (size + sizeof (int) - 1) / sizeof (int); -+ if (greg >= NGREGARG) -+ continue; -+ else if (greg + n - 1 >= NGREGARG) -+ greg = NGREGARG; -+ else -+ greg += n; -+ for (m = 0; m < n; m++) -+ cif->flags += FFI_TYPE_INT << (2 * j++); -+ } -+#endif -+ -+ /* Set the return type flag */ -+ switch (cif->rtype->type) -+ { -+ case FFI_TYPE_STRUCT: -+ cif->flags += (unsigned) (return_type (cif->rtype)) << 24; -+ break; -+ -+ case FFI_TYPE_VOID: -+ case FFI_TYPE_FLOAT: -+ case FFI_TYPE_DOUBLE: -+ case FFI_TYPE_SINT64: -+ case FFI_TYPE_UINT64: -+ cif->flags += (unsigned) cif->rtype->type << 24; -+ break; -+ -+ default: -+ cif->flags += FFI_TYPE_INT << 24; -+ break; -+ } -+ -+ return FFI_OK; -+} -+ -+/*@-declundef@*/ -+/*@-exportheader@*/ -+extern void ffi_call_SYSV(void (*)(char *, extended_cif *), -+ /*@out@*/ extended_cif *, -+ unsigned, unsigned, -+ /*@out@*/ unsigned *, -+ void (*fn)()); -+/*@=declundef@*/ -+/*@=exportheader@*/ -+ -+void ffi_call(/*@dependent@*/ ffi_cif *cif, -+ void (*fn)(), -+ /*@out@*/ void *rvalue, -+ /*@dependent@*/ void **avalue) -+{ -+ extended_cif ecif; -+ -+ ecif.cif = cif; -+ ecif.avalue = avalue; -+ -+ /* If the return value is a struct and we don't have a return */ -+ /* value address then we need to make one */ -+ -+ if ((rvalue == NULL) && -+ (cif->rtype->type == FFI_TYPE_STRUCT)) -+ { -+ /*@-sysunrecog@*/ -+ ecif.rvalue = alloca(cif->rtype->size); -+ /*@=sysunrecog@*/ -+ } -+ else -+ ecif.rvalue = rvalue; -+ -+ -+ switch (cif->abi) -+ { -+ case FFI_SYSV: -+ /*@-usedef@*/ -+ ffi_call_SYSV(ffi_prep_args, &ecif, cif->bytes, -+ cif->flags, ecif.rvalue, fn); -+ /*@=usedef@*/ -+ break; -+ default: -+ FFI_ASSERT(0); -+ break; -+ } -+} -+ -+extern void ffi_closure_SYSV (void); -+#if defined(__SH4__) -+extern void __ic_invalidate (void *line); -+#endif -+ -+ffi_status -+ffi_prep_closure (ffi_closure* closure, -+ ffi_cif* cif, -+ void (*fun)(ffi_cif*, void*, void**, void*), -+ void *user_data) -+{ -+ unsigned int *tramp; -+ -+ FFI_ASSERT (cif->abi == FFI_GCC_SYSV); -+ -+ tramp = (unsigned int *) &closure->tramp[0]; -+#ifdef __LITTLE_ENDIAN__ -+ tramp[0] = 0xd301d202; -+ tramp[1] = 0x0009422b; -+#else -+ tramp[0] = 0xd202d301; -+ tramp[1] = 0x422b0009; -+#endif -+ *(void **) &tramp[2] = (void *)closure; /* ctx */ -+ *(void **) &tramp[3] = (void *)ffi_closure_SYSV; /* funaddr */ -+ -+ closure->cif = cif; -+ closure->fun = fun; -+ closure->user_data = user_data; -+ -+#if defined(__SH4__) -+ /* Flush the icache. */ -+ __ic_invalidate(&closure->tramp[0]); -+#endif -+ -+ return FFI_OK; -+} -+ -+/* Basically the trampoline invokes ffi_closure_SYSV, and on -+ * entry, r3 holds the address of the closure. -+ * After storing the registers that could possibly contain -+ * parameters to be passed into the stack frame and setting -+ * up space for a return value, ffi_closure_SYSV invokes the -+ * following helper function to do most of the work. -+ */ -+ -+#ifdef __LITTLE_ENDIAN__ -+#define OFS_INT8 0 -+#define OFS_INT16 2 -+#else -+#define OFS_INT8 3 -+#define OFS_INT16 2 -+#endif -+ -+int -+ffi_closure_helper_SYSV (ffi_closure *closure, void *rvalue, -+ unsigned long *pgr, unsigned long *pfr, -+ unsigned long *pst) -+{ -+ void **avalue; -+ ffi_type **p_arg; -+ int i, avn; -+ int ireg, greg = 0; -+#if defined(__SH4__) -+ int freg = 0; -+#endif -+ ffi_cif *cif; -+ double temp; -+ -+ cif = closure->cif; -+ avalue = alloca(cif->nargs * sizeof(void *)); -+ -+ /* Copy the caller's structure return value address so that the closure -+ returns the data directly to the caller. */ -+ if (cif->rtype->type == FFI_TYPE_STRUCT) -+ { -+ rvalue = *pgr++; -+ ireg = STRUCT_VALUE_ADDRESS_WITH_ARG ? 1 : 0; -+ } -+ else -+ ireg = 0; -+ -+ cif = closure->cif; -+ greg = ireg; -+ avn = cif->nargs; -+ -+ /* Grab the addresses of the arguments from the stack frame. */ -+ for (i = 0, p_arg = cif->arg_types; i < avn; i++, p_arg++) -+ { -+ size_t z; -+ -+ z = (*p_arg)->size; -+ if (z < sizeof(int)) -+ { -+ if (greg++ >= NGREGARG) -+ continue; -+ -+ z = sizeof(int); -+ switch ((*p_arg)->type) -+ { -+ case FFI_TYPE_SINT8: -+ case FFI_TYPE_UINT8: -+ avalue[i] = (((char *)pgr) + OFS_INT8); -+ break; -+ -+ case FFI_TYPE_SINT16: -+ case FFI_TYPE_UINT16: -+ avalue[i] = (((char *)pgr) + OFS_INT16); -+ break; -+ -+ case FFI_TYPE_STRUCT: -+ avalue[i] = pgr; -+ break; -+ -+ default: -+ FFI_ASSERT(0); -+ } -+ pgr++; -+ } -+ else if (z == sizeof(int)) -+ { -+#if defined(__SH4__) -+ if ((*p_arg)->type == FFI_TYPE_FLOAT) -+ { -+ if (freg++ >= NFREGARG) -+ continue; -+ avalue[i] = pfr; -+ pfr++; -+ } -+ else -+#endif -+ { -+ if (greg++ >= NGREGARG) -+ continue; -+ avalue[i] = pgr; -+ pgr++; -+ } -+ } -+#if defined(__SH4__) -+ else if ((*p_arg)->type == FFI_TYPE_DOUBLE) -+ { -+ if (freg + 1 >= NFREGARG) -+ continue; -+ freg = (freg + 1) & ~1; -+ freg += 2; -+ avalue[i] = pfr; -+ pfr += 2; -+ } -+#endif -+ else -+ { -+ int n = (z + sizeof (int) - 1) / sizeof (int); -+#if defined(__SH4__) -+ if (greg + n - 1 >= NGREGARG) -+ continue; -+ greg += n; -+#else -+ if (greg >= NGREGARG) -+ continue; -+ else if (greg + n - 1 >= NGREGARG) -+ greg = NGREGARG; -+ else -+ greg += n; -+#endif -+ avalue[i] = pgr; -+ pgr += n; -+ } -+ } -+ -+ greg = ireg; -+#if defined(__SH4__) -+ freg = 0; -+#endif -+ -+ for (i = 0, p_arg = cif->arg_types; i < avn; i++, p_arg++) -+ { -+ size_t z; -+ -+ z = (*p_arg)->size; -+ if (z < sizeof(int)) -+ { -+ if (greg++ < NGREGARG) -+ continue; -+ -+ z = sizeof(int); -+ switch ((*p_arg)->type) -+ { -+ case FFI_TYPE_SINT8: -+ case FFI_TYPE_UINT8: -+ avalue[i] = (((char *)pst) + OFS_INT8); -+ break; -+ -+ case FFI_TYPE_SINT16: -+ case FFI_TYPE_UINT16: -+ avalue[i] = (((char *)pst) + OFS_INT16); -+ break; -+ -+ case FFI_TYPE_STRUCT: -+ avalue[i] = pst; -+ break; -+ -+ default: -+ FFI_ASSERT(0); -+ } -+ pst++; -+ } -+ else if (z == sizeof(int)) -+ { -+#if defined(__SH4__) -+ if ((*p_arg)->type == FFI_TYPE_FLOAT) -+ { -+ if (freg++ < NFREGARG) -+ continue; -+ } -+ else -+#endif -+ { -+ if (greg++ < NGREGARG) -+ continue; -+ } -+ avalue[i] = pst; -+ pst++; -+ } -+#if defined(__SH4__) -+ else if ((*p_arg)->type == FFI_TYPE_DOUBLE) -+ { -+ if (freg + 1 < NFREGARG) -+ { -+ freg = (freg + 1) & ~1; -+ freg += 2; -+ continue; -+ } -+ avalue[i] = pst; -+ pst += 2; -+ } -+#endif -+ else -+ { -+ int n = (z + sizeof (int) - 1) / sizeof (int); -+ if (greg + n - 1 < NGREGARG) -+ { -+ greg += n; -+ continue; -+ } -+#if (! defined(__SH4__)) -+ else if (greg < NGREGARG) -+ { -+ greg = NGREGARG; -+ continue; -+ } -+#endif -+ avalue[i] = pst; -+ pst += n; -+ } -+ } -+ -+ (closure->fun) (cif, rvalue, avalue, closure->user_data); -+ -+ /* Tell ffi_closure_osf how to perform return type promotions. */ -+ return cif->rtype->type; -+} -diff -ruN --exclude=CVS gcc-3.2.2.orig/libffi/src/sh/sysv.S gcc/libffi/src/sh/sysv.S ---- gcc-3.2.2.orig/libffi/src/sh/sysv.S Thu Jan 1 09:00:00 1970 -+++ gcc/libffi/src/sh/sysv.S Tue Dec 17 03:22:48 2002 -@@ -0,0 +1,773 @@ -+/* ----------------------------------------------------------------------- -+ sysv.S - Copyright (c) 2002 Kaz Kojima -+ -+ SuperH Foreign Function Interface -+ -+ Permission is hereby granted, free of charge, to any person obtaining -+ a copy of this software and associated documentation files (the -+ ``Software''), to deal in the Software without restriction, including -+ without limitation the rights to use, copy, modify, merge, publish, -+ distribute, sublicense, and/or sell copies of the Software, and to -+ permit persons to whom the Software is furnished to do so, subject to -+ the following conditions: -+ -+ The above copyright notice and this permission notice shall be included -+ in all copies or substantial portions of the Software. -+ -+ THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS -+ OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -+ IN NO EVENT SHALL CYGNUS SOLUTIONS BE LIABLE FOR ANY CLAIM, DAMAGES OR -+ OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, -+ ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -+ OTHER DEALINGS IN THE SOFTWARE. -+ ----------------------------------------------------------------------- */ -+ -+#define LIBFFI_ASM -+#include -+#ifdef HAVE_MACHINE_ASM_H -+#include -+#else -+/* XXX these lose for some platforms, I'm sure. */ -+#define CNAME(x) x -+#define ENTRY(x) .globl CNAME(x); .type CNAME(x),%function; CNAME(x): -+#endif -+ -+#if defined(__HITACHI__) -+#define STRUCT_VALUE_ADDRESS_WITH_ARG 1 -+#else -+#define STRUCT_VALUE_ADDRESS_WITH_ARG 0 -+#endif -+ -+.text -+ -+ # r4: ffi_prep_args -+ # r5: &ecif -+ # r6: bytes -+ # r7: flags -+ # sp+0: rvalue -+ # sp+4: fn -+ -+ # This assumes we are using gas. -+ENTRY(ffi_call_SYSV) -+ # Save registers -+.LFB1: -+ mov.l r8,@-r15 -+.LCFI0: -+ mov.l r9,@-r15 -+.LCFI1: -+ mov.l r10,@-r15 -+.LCFI2: -+ mov.l r12,@-r15 -+.LCFI3: -+ mov.l r14,@-r15 -+.LCFI4: -+ sts.l pr,@-r15 -+.LCFI5: -+ mov r15,r14 -+.LCFI6: -+#if defined(__SH4__) -+ mov r6,r8 -+ mov r7,r9 -+ -+ sub r6,r15 -+ add #-16,r15 -+ mov #~7,r0 -+ and r0,r15 -+ -+ mov r4,r0 -+ jsr @r0 -+ mov r15,r4 -+ -+ mov r9,r1 -+ shlr8 r9 -+ shlr8 r9 -+ shlr8 r9 -+ -+ mov #FFI_TYPE_STRUCT,r2 -+ cmp/eq r2,r9 -+ bf 1f -+#if STRUCT_VALUE_ADDRESS_WITH_ARG -+ mov.l @r15+,r4 -+ bra 2f -+ mov #5,r2 -+#else -+ mov.l @r15+,r10 -+#endif -+1: -+ mov #4,r2 -+2: -+ mov #4,r3 -+ -+L_pass: -+ cmp/pl r8 -+ bf L_call_it -+ -+ mov r1,r0 -+ and #3,r0 -+ -+L_pass_d: -+ cmp/eq #FFI_TYPE_DOUBLE,r0 -+ bf L_pass_f -+ -+ mov r3,r0 -+ and #1,r0 -+ tst r0,r0 -+ bt 1f -+ add #1,r3 -+1: -+ mov r15,r0 -+ and #7,r0 -+ tst r0,r0 -+ bt 2f -+ add #4,r15 -+2: -+ mov #12,r0 -+ cmp/hs r0,r3 -+ bt/s 3f -+ shlr2 r1 -+ bsr L_pop_d -+ nop -+3: -+ add #2,r3 -+ bra L_pass -+ add #-8,r8 -+ -+L_pop_d: -+ mov r3,r0 -+ add r0,r0 -+ add r3,r0 -+ add #-12,r0 -+ braf r0 -+ nop -+#ifdef __LITTLE_ENDIAN__ -+ fmov.s @r15+,fr5 -+ rts -+ fmov.s @r15+,fr4 -+ fmov.s @r15+,fr7 -+ rts -+ fmov.s @r15+,fr6 -+ fmov.s @r15+,fr9 -+ rts -+ fmov.s @r15+,fr8 -+ fmov.s @r15+,fr11 -+ rts -+ fmov.s @r15+,fr10 -+#else -+ fmov.s @r15+,fr4 -+ rts -+ fmov.s @r15+,fr5 -+ fmov.s @r15+,fr6 -+ rts -+ fmov.s @r15+,fr7 -+ fmov.s @r15+,fr8 -+ rts -+ fmov.s @r15+,fr9 -+ fmov.s @r15+,fr10 -+ rts -+ fmov.s @r15+,fr11 -+#endif -+ -+L_pass_f: -+ cmp/eq #FFI_TYPE_FLOAT,r0 -+ bf L_pass_i -+ -+ mov #12,r0 -+ cmp/hs r0,r3 -+ bt/s 2f -+ shlr2 r1 -+ bsr L_pop_f -+ nop -+2: -+ add #1,r3 -+ bra L_pass -+ add #-4,r8 -+ -+L_pop_f: -+ mov r3,r0 -+ shll2 r0 -+ add #-16,r0 -+ braf r0 -+ nop -+#ifdef __LITTLE_ENDIAN__ -+ rts -+ fmov.s @r15+,fr5 -+ rts -+ fmov.s @r15+,fr4 -+ rts -+ fmov.s @r15+,fr7 -+ rts -+ fmov.s @r15+,fr6 -+ rts -+ fmov.s @r15+,fr9 -+ rts -+ fmov.s @r15+,fr8 -+ rts -+ fmov.s @r15+,fr11 -+ rts -+ fmov.s @r15+,fr10 -+#else -+ rts -+ fmov.s @r15+,fr4 -+ rts -+ fmov.s @r15+,fr5 -+ rts -+ fmov.s @r15+,fr6 -+ rts -+ fmov.s @r15+,fr7 -+ rts -+ fmov.s @r15+,fr8 -+ rts -+ fmov.s @r15+,fr9 -+ rts -+ fmov.s @r15+,fr10 -+ rts -+ fmov.s @r15+,fr11 -+#endif -+ -+L_pass_i: -+ cmp/eq #FFI_TYPE_INT,r0 -+ bf L_call_it -+ -+ mov #8,r0 -+ cmp/hs r0,r2 -+ bt/s 2f -+ shlr2 r1 -+ bsr L_pop_i -+ nop -+2: -+ add #1,r2 -+ bra L_pass -+ add #-4,r8 -+ -+L_pop_i: -+ mov r2,r0 -+ shll2 r0 -+ add #-16,r0 -+ braf r0 -+ nop -+ rts -+ mov.l @r15+,r4 -+ rts -+ mov.l @r15+,r5 -+ rts -+ mov.l @r15+,r6 -+ rts -+ mov.l @r15+,r7 -+ -+L_call_it: -+ # call function -+#if (! STRUCT_VALUE_ADDRESS_WITH_ARG) -+ mov r10, r2 -+#endif -+ mov.l @(28,r14),r1 -+ jsr @r1 -+ nop -+ -+L_ret_d: -+ mov #FFI_TYPE_DOUBLE,r2 -+ cmp/eq r2,r9 -+ bf L_ret_ll -+ -+ mov.l @(24,r14),r1 -+#ifdef __LITTLE_ENDIAN__ -+ fmov.s fr1,@r1 -+ add #4,r1 -+ bra L_epilogue -+ fmov.s fr0,@r1 -+#else -+ fmov.s fr0,@r1 -+ add #4,r1 -+ bra L_epilogue -+ fmov.s fr1,@r1 -+#endif -+ -+L_ret_ll: -+ mov #FFI_TYPE_SINT64,r2 -+ cmp/eq r2,r9 -+ bt/s 1f -+ mov #FFI_TYPE_UINT64,r2 -+ cmp/eq r2,r9 -+ bf L_ret_f -+ -+1: -+ mov.l @(24,r14),r2 -+ mov.l r0,@r2 -+ bra L_epilogue -+ mov.l r1,@(4,r2) -+ -+L_ret_f: -+ mov #FFI_TYPE_FLOAT,r2 -+ cmp/eq r2,r9 -+ bf L_ret_i -+ -+ mov.l @(24,r14),r1 -+ bra L_epilogue -+ fmov.s fr0,@r1 -+ -+L_ret_i: -+ mov #FFI_TYPE_INT,r2 -+ cmp/eq r2,r9 -+ bf L_epilogue -+ -+ mov.l @(24,r14),r1 -+ bra L_epilogue -+ mov.l r0,@r1 -+ -+L_epilogue: -+ # Remove the space we pushed for the args -+ mov r14,r15 -+ -+ lds.l @r15+,pr -+ mov.l @r15+,r14 -+ mov.l @r15+,r12 -+ mov.l @r15+,r10 -+ mov.l @r15+,r9 -+ rts -+ mov.l @r15+,r8 -+#else -+ mov r6,r8 -+ mov r7,r9 -+ -+ sub r6,r15 -+ add #-16,r15 -+ mov #~7,r0 -+ and r0,r15 -+ -+ mov r4,r0 -+ jsr @r0 -+ mov r15,r4 -+ -+ mov r9,r3 -+ shlr8 r9 -+ shlr8 r9 -+ shlr8 r9 -+ -+ mov #FFI_TYPE_STRUCT,r2 -+ cmp/eq r2,r9 -+ bf 1f -+#if STRUCT_VALUE_ADDRESS_WITH_ARG -+ mov.l @r15+,r4 -+ bra 2f -+ mov #5,r2 -+#else -+ mov.l @r15+,r10 -+#endif -+1: -+ mov #4,r2 -+2: -+ -+L_pass: -+ cmp/pl r8 -+ bf L_call_it -+ -+ mov r3,r0 -+ and #3,r0 -+ -+L_pass_d: -+ cmp/eq #FFI_TYPE_DOUBLE,r0 -+ bf L_pass_i -+ -+ mov r15,r0 -+ and #7,r0 -+ tst r0,r0 -+ bt 1f -+ add #4,r15 -+1: -+ mov #8,r0 -+ cmp/hs r0,r2 -+ bt/s 2f -+ shlr2 r3 -+ bsr L_pop_d -+ nop -+2: -+ add #2,r2 -+ bra L_pass -+ add #-8,r8 -+ -+L_pop_d: -+ mov r2,r0 -+ add r0,r0 -+ add r2,r0 -+ add #-12,r0 -+ add r0,r0 -+ braf r0 -+ nop -+ mov.l @r15+,r4 -+ rts -+ mov.l @r15+,r5 -+ mov.l @r15+,r5 -+ rts -+ mov.l @r15+,r6 -+ mov.l @r15+,r6 -+ rts -+ mov.l @r15+,r7 -+ rts -+ mov.l @r15+,r7 -+ -+L_pass_i: -+ mov #8,r0 -+ cmp/hs r0,r2 -+ bt/s 2f -+ shlr2 r3 -+ bsr L_pop_i -+ nop -+2: -+ add #1,r2 -+ bra L_pass -+ add #-4,r8 -+ -+L_pop_i: -+ mov r2,r0 -+ shll2 r0 -+ add #-16,r0 -+ braf r0 -+ nop -+ rts -+ mov.l @r15+,r4 -+ rts -+ mov.l @r15+,r5 -+ rts -+ mov.l @r15+,r6 -+ rts -+ mov.l @r15+,r7 -+ -+L_call_it: -+ # call function -+#if (! STRUCT_VALUE_ADDRESS_WITH_ARG) -+ mov r10, r2 -+#endif -+ mov.l @(28,r14),r1 -+ jsr @r1 -+ nop -+ -+L_ret_d: -+ mov #FFI_TYPE_DOUBLE,r2 -+ cmp/eq r2,r9 -+ bf L_ret_ll -+ -+ mov.l @(24,r14),r2 -+ mov.l r0,@r2 -+ bra L_epilogue -+ mov.l r1,@(4,r2) -+ -+L_ret_ll: -+ mov #FFI_TYPE_SINT64,r2 -+ cmp/eq r2,r9 -+ bt/s 1f -+ mov #FFI_TYPE_UINT64,r2 -+ cmp/eq r2,r9 -+ bf L_ret_i -+ -+1: -+ mov.l @(24,r14),r2 -+ mov.l r0,@r2 -+ bra L_epilogue -+ mov.l r1,@(4,r2) -+ -+L_ret_i: -+ mov #FFI_TYPE_FLOAT,r2 -+ cmp/eq r2,r9 -+ bt 1f -+ mov #FFI_TYPE_INT,r2 -+ cmp/eq r2,r9 -+ bf L_epilogue -+1: -+ mov.l @(24,r14),r1 -+ bra L_epilogue -+ mov.l r0,@r1 -+ -+L_epilogue: -+ # Remove the space we pushed for the args -+ mov r14,r15 -+ -+ lds.l @r15+,pr -+ mov.l @r15+,r14 -+ mov.l @r15+,r12 -+ mov.l @r15+,r10 -+ mov.l @r15+,r9 -+ rts -+ mov.l @r15+,r8 -+#endif -+.LFE1: -+.ffi_call_SYSV_end: -+ .size CNAME(ffi_call_SYSV),.ffi_call_SYSV_end-CNAME(ffi_call_SYSV) -+ -+.globl ffi_closure_helper_SYSV -+ -+ENTRY(ffi_closure_SYSV) -+.LFB2: -+ mov.l r14,@-r15 -+.LCFI7: -+ sts.l pr,@-r15 -+ -+ /* Stack layout: -+ ... -+ 32 bytes (floating register parameters, SH-4 only) -+ 16 bytes (register parameters) -+ 4 bytes (result) -+ 4 bytes (5th arg) -+ <- new stack pointer -+ */ -+.LCFI8: -+#if defined(__SH4__) -+ add #-56,r15 -+#else -+ add #-24,r15 -+#endif -+.LCFI9: -+ mov r15,r14 -+.LCFIA: -+ mov r14,r1 -+ add #24,r1 -+ mov.l r7,@-r1 -+ mov.l r6,@-r1 -+ mov.l r5,@-r1 -+ mov.l r4,@-r1 -+ mov r1,r6 -+ -+#if defined(__SH4__) -+ mov r14,r1 -+ add #56,r1 -+#ifdef __LITTLE_ENDIAN__ -+ fmov.s fr10,@-r1 -+ fmov.s fr11,@-r1 -+ fmov.s fr8,@-r1 -+ fmov.s fr9,@-r1 -+ fmov.s fr6,@-r1 -+ fmov.s fr7,@-r1 -+ fmov.s fr4,@-r1 -+ fmov.s fr5,@-r1 -+#else -+ fmov.s fr11,@-r1 -+ fmov.s fr10,@-r1 -+ fmov.s fr9,@-r1 -+ fmov.s fr8,@-r1 -+ fmov.s fr7,@-r1 -+ fmov.s fr6,@-r1 -+ fmov.s fr5,@-r1 -+ fmov.s fr4,@-r1 -+#endif -+ mov r1,r7 -+#endif -+ -+ mov r14,r1 -+ add #4,r1 -+ mov r1,r5 -+ -+ mov r14,r1 -+#if defined(__SH4__) -+ add #64,r1 -+#else -+ add #32,r1 -+#endif -+ mov.l r1,@r14 -+ -+ mov.l L_helper,r0 -+ jsr @r0 -+ mov r3,r4 -+ -+ shll r0 -+ mov r0,r1 -+ mova L_table,r0 -+ add r1,r0 -+ mov.w @r0,r0 -+ mov r14,r2 -+ braf r0 -+ add #4,r2 -+0: -+ .align 2 -+L_helper: -+ .long ffi_closure_helper_SYSV -+L_table: -+ .short L_case_v - 0b /* FFI_TYPE_VOID */ -+ .short L_case_i - 0b /* FFI_TYPE_INT */ -+#if defined(__SH4__) -+ .short L_case_f - 0b /* FFI_TYPE_FLOAT */ -+ .short L_case_d - 0b /* FFI_TYPE_DOUBLE */ -+ .short L_case_d - 0b /* FFI_TYPE_LONGDOUBLE */ -+#else -+ .short L_case_i - 0b /* FFI_TYPE_FLOAT */ -+ .short L_case_ll - 0b /* FFI_TYPE_DOUBLE */ -+ .short L_case_ll - 0b /* FFI_TYPE_LONGDOUBLE */ -+#endif -+ .short L_case_uq - 0b /* FFI_TYPE_UINT8 */ -+ .short L_case_q - 0b /* FFI_TYPE_SINT8 */ -+ .short L_case_uh - 0b /* FFI_TYPE_UINT16 */ -+ .short L_case_h - 0b /* FFI_TYPE_SINT16 */ -+ .short L_case_i - 0b /* FFI_TYPE_UINT32 */ -+ .short L_case_i - 0b /* FFI_TYPE_SINT32 */ -+ .short L_case_ll - 0b /* FFI_TYPE_UINT64 */ -+ .short L_case_ll - 0b /* FFI_TYPE_SINT64 */ -+ .short L_case_v - 0b /* FFI_TYPE_STRUCT */ -+ .short L_case_i - 0b /* FFI_TYPE_POINTER */ -+ -+#if defined(__SH4__) -+L_case_d: -+#ifdef __LITTLE_ENDIAN__ -+ fmov.s @r2+,fr1 -+ bra L_case_v -+ fmov.s @r2,fr0 -+#else -+ fmov.s @r2+,fr0 -+ bra L_case_v -+ fmov.s @r2,fr1 -+#endif -+ -+L_case_f: -+ bra L_case_v -+ fmov.s @r2,fr0 -+#endif -+ -+L_case_ll: -+ mov.l @r2+,r0 -+ bra L_case_v -+ mov.l @r2,r1 -+ -+L_case_i: -+ bra L_case_v -+ mov.l @r2,r0 -+ -+L_case_q: -+#ifdef __LITTLE_ENDIAN__ -+#else -+ add #3,r2 -+#endif -+ bra L_case_v -+ mov.b @r2,r0 -+ -+L_case_uq: -+#ifdef __LITTLE_ENDIAN__ -+#else -+ add #3,r2 -+#endif -+ mov.b @r2,r0 -+ bra L_case_v -+ extu.b r0,r0 -+ -+L_case_h: -+#ifdef __LITTLE_ENDIAN__ -+#else -+ add #2,r2 -+#endif -+ bra L_case_v -+ mov.w @r2,r0 -+ -+L_case_uh: -+#ifdef __LITTLE_ENDIAN__ -+#else -+ add #2,r2 -+#endif -+ mov.w @r2,r0 -+ extu.w r0,r0 -+ /* fall through */ -+ -+L_case_v: -+#if defined(__SH4__) -+ add #56,r15 -+#else -+ add #24,r15 -+#endif -+ lds.l @r15+,pr -+ rts -+ mov.l @r15+,r14 -+.LFE2: -+.ffi_closure_SYSV_end: -+ .size CNAME(ffi_closure_SYSV),.ffi_closure_SYSV_end-CNAME(ffi_closure_SYSV) -+ -+ .section ".eh_frame","aw",@progbits -+__FRAME_BEGIN__: -+ .4byte .LECIE1-.LSCIE1 /* Length of Common Information Entry */ -+.LSCIE1: -+ .4byte 0x0 /* CIE Identifier Tag */ -+ .byte 0x1 /* CIE Version */ -+ .byte 0x0 /* CIE Augmentation */ -+ .byte 0x1 /* uleb128 0x1; CIE Code Alignment Factor */ -+ .byte 0x7c /* sleb128 -4; CIE Data Alignment Factor */ -+ .byte 0x11 /* CIE RA Column */ -+ .byte 0xc /* DW_CFA_def_cfa */ -+ .byte 0xf /* uleb128 0xf */ -+ .byte 0x0 /* uleb128 0x0 */ -+ .align 2 -+.LECIE1: -+.LSFDE1: -+ .4byte .LEFDE1-.LASFDE1 /* FDE Length */ -+.LASFDE1: -+ .4byte .LASFDE1-__FRAME_BEGIN__ /* FDE CIE offset */ -+ .4byte .LFB1 /* FDE initial location */ -+ .4byte .LFE1-.LFB1 /* FDE address range */ -+ .byte 0x4 /* DW_CFA_advance_loc4 */ -+ .4byte .LCFI0-.LFB1 -+ .byte 0xe /* DW_CFA_def_cfa_offset */ -+ .byte 0x4 /* uleb128 0x4 */ -+ .byte 0x4 /* DW_CFA_advance_loc4 */ -+ .4byte .LCFI1-.LCFI0 -+ .byte 0xe /* DW_CFA_def_cfa_offset */ -+ .byte 0x8 /* uleb128 0x4 */ -+ .byte 0x4 /* DW_CFA_advance_loc4 */ -+ .4byte .LCFI2-.LCFI1 -+ .byte 0xe /* DW_CFA_def_cfa_offset */ -+ .byte 0xc /* uleb128 0x4 */ -+ .byte 0x4 /* DW_CFA_advance_loc4 */ -+ .4byte .LCFI3-.LCFI2 -+ .byte 0xe /* DW_CFA_def_cfa_offset */ -+ .byte 0x10 /* uleb128 0x4 */ -+ .byte 0x4 /* DW_CFA_advance_loc4 */ -+ .4byte .LCFI4-.LCFI3 -+ .byte 0xe /* DW_CFA_def_cfa_offset */ -+ .byte 0x14 /* uleb128 0x4 */ -+ .byte 0x4 /* DW_CFA_advance_loc4 */ -+ .4byte .LCFI5-.LCFI4 -+ .byte 0xe /* DW_CFA_def_cfa_offset */ -+ .byte 0x18 /* uleb128 0x4 */ -+ .byte 0x91 /* DW_CFA_offset, column 0x11 */ -+ .byte 0x6 /* uleb128 0x6 */ -+ .byte 0x8e /* DW_CFA_offset, column 0xe */ -+ .byte 0x5 /* uleb128 0x5 */ -+ .byte 0x8c /* DW_CFA_offset, column 0xc */ -+ .byte 0x4 /* uleb128 0x4 */ -+ .byte 0x8a /* DW_CFA_offset, column 0xa */ -+ .byte 0x3 /* uleb128 0x3 */ -+ .byte 0x89 /* DW_CFA_offset, column 0x9 */ -+ .byte 0x2 /* uleb128 0x2 */ -+ .byte 0x88 /* DW_CFA_offset, column 0x8 */ -+ .byte 0x1 /* uleb128 0x1 */ -+ .byte 0x4 /* DW_CFA_advance_loc4 */ -+ .4byte .LCFI6-.LCFI5 -+ .byte 0xd /* DW_CFA_def_cfa_register */ -+ .byte 0xe /* uleb128 0xe */ -+ .align 2 -+.LEFDE1: -+ -+.LSFDE3: -+ .4byte .LEFDE3-.LASFDE3 /* FDE Length */ -+.LASFDE3: -+ .4byte .LASFDE3-__FRAME_BEGIN__ /* FDE CIE offset */ -+ .4byte .LFB2 /* FDE initial location */ -+ .4byte .LFE2-.LFB2 /* FDE address range */ -+ .byte 0x4 /* DW_CFA_advance_loc4 */ -+ .4byte .LCFI7-.LFB2 -+ .byte 0xe /* DW_CFA_def_cfa_offset */ -+ .byte 0x4 /* uleb128 0x4 */ -+ .byte 0x4 /* DW_CFA_advance_loc4 */ -+ .4byte .LCFI8-.LCFI7 -+ .byte 0xe /* DW_CFA_def_cfa_offset */ -+ .byte 0x8 /* uleb128 0x8 */ -+ .byte 0x4 /* DW_CFA_advance_loc4 */ -+ .4byte .LCFI9-.LCFI8 -+ .byte 0xe /* DW_CFA_def_cfa_offset */ -+#if defined(__SH4__) -+ .byte 8+56 /* uleb128 8+56 */ -+#else -+ .byte 8+24 /* uleb128 8+24 */ -+#endif -+ .byte 0x91 /* DW_CFA_offset, column 0x11 */ -+ .byte 0x2 -+ .byte 0x8e /* DW_CFA_offset, column 0xe */ -+ .byte 0x1 -+ .byte 0x4 /* DW_CFA_advance_loc4 */ -+ .4byte .LCFIA-.LCFI9 -+ .byte 0xd /* DW_CFA_def_cfa_register */ -+ .byte 0xe /* uleb128 0xe */ -+ .align 2 -+.LEFDE3: -diff -ruN --exclude=CVS gcc-3.2.2.orig/libffi/src/sparc/ffi.c gcc/libffi/src/sparc/ffi.c ---- gcc-3.2.2.orig/libffi/src/sparc/ffi.c Sat Mar 3 07:21:23 2001 -+++ gcc/libffi/src/sparc/ffi.c Sat Jan 4 08:08:56 2003 -@@ -1,5 +1,5 @@ - /* ----------------------------------------------------------------------- -- ffi.c - Copyright (c) 1996 Cygnus Solutions -+ ffi.c - Copyright (c) 1996, 2003 Cygnus Solutions - - Sparc Foreign Function Interface - -@@ -28,20 +28,22 @@ - - #include - -+#ifdef SPARC64 -+extern void ffi_closure_v9(void); -+#else -+extern void ffi_closure_v8(void); -+#endif -+ - /* ffi_prep_args is called by the assembly routine once stack space - has been allocated for the function's arguments */ - - void ffi_prep_args_v8(char *stack, extended_cif *ecif) - { - int i; -- int tmp; -- int avn; - void **p_argv; - char *argp; - ffi_type **p_arg; - -- tmp = 0; -- - /* Skip 16 words for the window save area */ - argp = stack + 16*sizeof(int); - -@@ -66,18 +68,12 @@ - ((int*)argp)[5] = 0; - #endif - -- avn = ecif->cif->nargs; - p_argv = ecif->avalue; - -- for (i = ecif->cif->nargs, p_arg = ecif->cif->arg_types; -- i && avn; -- i--, p_arg++) -+ for (i = ecif->cif->nargs, p_arg = ecif->cif->arg_types; i; i--, p_arg++) - { - size_t z; - -- if (avn) -- { -- avn--; - if ((*p_arg)->type == FFI_TYPE_STRUCT - #if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE - || (*p_arg)->type == FFI_TYPE_LONGDOUBLE -@@ -122,7 +118,6 @@ - } - p_argv++; - argp += z; -- } - } - - return; -@@ -420,3 +415,101 @@ - } - - } -+ -+ffi_status -+ffi_prep_closure (ffi_closure* closure, -+ ffi_cif* cif, -+ void (*fun)(ffi_cif*, void*, void**, void*), -+ void *user_data) -+{ -+ unsigned int *tramp = (unsigned int *) &closure->tramp[0]; -+ unsigned long fn; -+ unsigned long ctx = (unsigned long) closure; -+ -+#ifdef SPARC64 -+ /* Trampoline address is equal to the closure address. We take advantage -+ of that to reduce the trampoline size by 8 bytes. */ -+ FFI_ASSERT (cif->abi == FFI_V9); -+ fn = (unsigned long) ffi_closure_v9; -+ tramp[0] = 0x83414000; /* rd %pc, %g1 */ -+ tramp[1] = 0xca586010; /* ldx [%g1+16], %g5 */ -+ tramp[2] = 0x81c14000; /* jmp %g5 */ -+ tramp[3] = 0x01000000; /* nop */ -+ *((unsigned long *) &tramp[4]) = fn; -+#else -+ FFI_ASSERT (cif->abi == FFI_V8); -+ fn = (unsigned long) ffi_closure_v8; -+ tramp[0] = 0x03000000 | fn >> 10; /* sethi %hi(fn), %g1 */ -+ tramp[1] = 0x05000000 | ctx >> 10; /* sethi %hi(ctx), %g2 */ -+ tramp[2] = 0x81c06000 | (fn & 0x3ff); /* jmp %g1+%lo(fn) */ -+ tramp[3] = 0x8410a000 | (ctx & 0x3ff);/* or %g2, %lo(ctx) */ -+#endif -+ -+ closure->cif = cif; -+ closure->fun = fun; -+ closure->user_data = user_data; -+ -+ /* Flush the Icache. FIXME: alignment isn't certain, assume 8 bytes */ -+#ifdef SPARC64 -+ asm volatile ("flush %0" : : "r" (closure) : "memory"); -+ asm volatile ("flush %0" : : "r" (((char *) closure) + 8) : "memory"); -+#else -+ asm volatile ("iflush %0" : : "r" (closure) : "memory"); -+ asm volatile ("iflush %0" : : "r" (((char *) closure) + 8) : "memory"); -+#endif -+ -+ return FFI_OK; -+} -+ -+int -+ffi_closure_sparc_inner(ffi_closure *closure, -+ void *rvalue, unsigned long *gpr, double *fpr) -+{ -+ ffi_cif *cif; -+ void **avalue; -+ ffi_type **arg_types; -+ int i, avn, argn; -+ -+ cif = closure->cif; -+ avalue = alloca(cif->nargs * sizeof(void *)); -+ -+ argn = 0; -+ -+ /* Copy the caller's structure return address to that the closure -+ returns the data directly to the caller. */ -+ if (cif->flags == FFI_TYPE_STRUCT) -+ { -+ rvalue = (void *) gpr[0]; -+ argn = 1; -+ } -+ -+ i = 0; -+ avn = cif->nargs; -+ arg_types = cif->arg_types; -+ -+ /* Grab the addresses of the arguments from the stack frame. */ -+ while (i < avn) -+ { -+ /* Assume big-endian. FIXME */ -+ argn += ALIGN(arg_types[i]->size, SIZEOF_ARG) / SIZEOF_ARG; -+ -+#ifdef SPARC64 -+ if (i < 6 && (arg_types[i]->type == FFI_TYPE_FLOAT -+ || arg_types[i]->type == FFI_TYPE_DOUBLE -+#if FFI_TYPE_LONGDOUBLE != FFI_TYPE_DOUBLE -+ || arg_types[i]->type == FFI_TYPE_LONGDOUBLE -+#endif -+ )) -+ avalue[i] = ((char *) &fpr[argn]) - arg_types[i]->size; -+ else -+#endif -+ avalue[i] = ((char *) &gpr[argn]) - arg_types[i]->size; -+ i++; -+ } -+ -+ /* Invoke the closure. */ -+ (closure->fun) (cif, rvalue, avalue, closure->user_data); -+ -+ /* Tell ffi_closure_sparc how to perform return type promotions. */ -+ return cif->rtype->type; -+} -diff -ruN --exclude=CVS gcc-3.2.2.orig/libffi/src/sparc/v8.S gcc/libffi/src/sparc/v8.S ---- gcc-3.2.2.orig/libffi/src/sparc/v8.S Mon Apr 29 05:12:04 2002 -+++ gcc/libffi/src/sparc/v8.S Sat Jan 4 08:08:56 2003 -@@ -1,5 +1,5 @@ - /* ----------------------------------------------------------------------- -- v8.S - Copyright (c) 1996, 1997 Cygnus Solutions -+ v8.S - Copyright (c) 1996, 1997, 2003 Cygnus Solutions - - Sparc Foreign Function Interface - -@@ -94,6 +94,72 @@ - .ffi_call_V8_end: - .size ffi_call_V8,.ffi_call_V8_end-ffi_call_V8 - -+ -+#define STACKFRAME 104 /* 16*4 register window + -+ 1*4 struct return + -+ 6*4 args backing store + -+ 3*4 locals */ -+ -+/* ffi_closure_v8(...) -+ -+ Receives the closure argument in %g2. */ -+ -+ .text -+ .align 8 -+ .globl ffi_closure_v8 -+ -+ffi_closure_v8: -+ .register %g2, #scratch -+.LLFB2: -+ save %sp, -STACKFRAME, %sp -+.LLCFI1: -+ -+ ! Store all of the potential argument registers in va_list format. -+ st %i0, [%fp+68+0] -+ st %i1, [%fp+68+4] -+ st %i2, [%fp+68+8] -+ st %i3, [%fp+68+12] -+ st %i4, [%fp+68+16] -+ st %i5, [%fp+68+20] -+ -+ ! Call ffi_closure_sparc_inner to do the bulk of the work. -+ mov %g2, %o0 -+ add %fp, -8, %o1 -+ add %fp, 68, %o2 -+ call ffi_closure_sparc_inner -+ mov 0, %o3 -+ -+ ! Load up the return value in the proper type. -+ cmp %o0, FFI_TYPE_VOID -+ be done1 -+ -+ cmp %o0, FFI_TYPE_FLOAT -+ be,a done1 -+ ld [%fp-8], %f0 -+ -+ cmp %o0, FFI_TYPE_DOUBLE -+ be,a done1 -+ ldd [%fp-8], %f0 -+ -+ cmp %o0, FFI_TYPE_SINT64 -+ be,a integer -+ ld [%fp-4], %i1 -+ -+ cmp %o0, FFI_TYPE_UINT64 -+ be,a integer -+ ld [%fp-4], %i1 -+ -+integer: -+ ld [%fp-8], %i0 -+ -+done1: -+ ret -+ restore -+.LLFE2: -+ -+.ffi_closure_v8_end: -+ .size ffi_closure_v8,.ffi_closure_v8_end-ffi_closure_v8 -+ - #ifdef SPARC64 - #define WS 8 - #define nword xword -@@ -148,3 +214,26 @@ - .byte 0x1f ! uleb128 0x1f - .align WS - .LLEFDE1: -+.LLSFDE2: -+ .uaword .LLEFDE2-.LLASFDE2 ! FDE Length -+.LLASFDE2: -+ .uaword .LLASFDE2-.LLframe1 ! FDE CIE offset -+#ifdef HAVE_AS_SPARC_UA_PCREL -+ .uaword %r_disp32(.LLFB2) -+ .uaword .LLFE2-.LLFB2 ! FDE address range -+#else -+ .align WS -+ .nword .LLFB2 -+ .uanword .LLFE2-.LLFB2 ! FDE address range -+#endif -+ .byte 0x0 ! uleb128 0x0; Augmentation size -+ .byte 0x4 ! DW_CFA_advance_loc4 -+ .uaword .LLCFI1-.LLFB2 -+ .byte 0xd ! DW_CFA_def_cfa_register -+ .byte 0x1e ! uleb128 0x1e -+ .byte 0x2d ! DW_CFA_GNU_window_save -+ .byte 0x9 ! DW_CFA_register -+ .byte 0xf ! uleb128 0xf -+ .byte 0x1f ! uleb128 0x1f -+ .align WS -+.LLEFDE2: -diff -ruN --exclude=CVS gcc-3.2.2.orig/libffi/src/sparc/v9.S gcc/libffi/src/sparc/v9.S ---- gcc-3.2.2.orig/libffi/src/sparc/v9.S Mon Apr 29 05:12:04 2002 -+++ gcc/libffi/src/sparc/v9.S Sat Jan 4 08:08:56 2003 -@@ -1,5 +1,5 @@ - /* ----------------------------------------------------------------------- -- v9.S - Copyright (c) 2000 Cygnus Solutions -+ v9.S - Copyright (c) 2000, 2003 Cygnus Solutions - - Sparc 64bit Foreign Function Interface - -@@ -99,7 +99,7 @@ - cmp %i3, FFI_TYPE_STRUCT - be,pn %icc, dostruct - -- cmp %i3, FFI_TYPE_LONGDOUBLE -+ cmp %i3, FFI_TYPE_LONGDOUBLE - bne,pt %icc, done - nop - std %f0, [%i4+0] -@@ -125,6 +125,88 @@ - .ffi_call_V9_end: - .size ffi_call_V9,.ffi_call_V9_end-ffi_call_V9 - -+ -+#define STACKFRAME 240 /* 16*8 register window + -+ 6*8 args backing store + -+ 8*8 locals */ -+#define FP %fp+STACK_BIAS -+ -+/* ffi_closure_v9(...) -+ -+ Receives the closure argument in %g1. */ -+ -+ .text -+ .align 8 -+ .globl ffi_closure_v9 -+ -+ffi_closure_v9: -+.LLFB2: -+ save %sp, -STACKFRAME, %sp -+.LLCFI1: -+ -+ ! Store all of the potential argument registers in va_list format. -+ stx %i0, [FP+128+0] -+ stx %i1, [FP+128+8] -+ stx %i2, [FP+128+16] -+ stx %i3, [FP+128+24] -+ stx %i4, [FP+128+32] -+ stx %i5, [FP+128+40] -+ -+ ! Store possible floating point argument registers too. -+ std %f0, [FP-48] -+ std %f2, [FP-40] -+ std %f4, [FP-32] -+ std %f6, [FP-24] -+ std %f8, [FP-16] -+ std %f10, [FP-8] -+ -+ ! Call ffi_closure_sparc_inner to do the bulk of the work. -+ mov %g1, %o0 -+ add %fp, STACK_BIAS-64, %o1 -+ add %fp, STACK_BIAS+128, %o2 -+ call ffi_closure_sparc_inner -+ add %fp, STACK_BIAS-48, %o3 -+ -+ ! Load up the return value in the proper type. -+ cmp %o0, FFI_TYPE_VOID -+ be,pn %icc, done1 -+ -+ cmp %o0, FFI_TYPE_FLOAT -+ be,a,pn %icc, done1 -+ ld [FP-64], %f0 -+ -+ cmp %o0, FFI_TYPE_DOUBLE -+ be,a,pn %icc, done1 -+ ldd [FP-64], %f0 -+ -+ cmp %o0, FFI_TYPE_LONGDOUBLE -+ be,a,pn %icc, longdouble1 -+ ldd [FP-64], %f0 -+ -+ cmp %o0, FFI_TYPE_STRUCT -+ be,pn %icc, struct1 -+ -+ ! FFI_TYPE_UINT64 | FFI_TYPE_SINT64 | FFI_TYPE_POINTER -+ ldx [FP-64], %i0 -+ -+done1: -+ ret -+ restore -+ -+struct1: -+ ldx [FP-56], %i2 -+ ret -+ restore -+ -+longdouble1: -+ ldd [FP-56], %f2 -+ ret -+ restore -+.LLFE2: -+ -+.ffi_closure_v9_end: -+ .size ffi_closure_v9,.ffi_closure_v9_end-ffi_closure_v9 -+ - .section ".eh_frame",#alloc,#write - .LLframe1: - .uaword .LLECIE1-.LLSCIE1 ! Length of Common Information Entry -@@ -169,5 +251,27 @@ - .byte 0x1f ! uleb128 0x1f - .align 8 - .LLEFDE1: -- -+.LLSFDE2: -+ .uaword .LLEFDE2-.LLASFDE2 ! FDE Length -+.LLASFDE2: -+ .uaword .LLASFDE2-.LLframe1 ! FDE CIE offset -+#ifdef HAVE_AS_SPARC_UA_PCREL -+ .uaword %r_disp32(.LLFB2) -+ .uaword .LLFE2-.LLFB2 ! FDE address range -+#else -+ .align 8 -+ .xword .LLFB2 -+ .uaxword .LLFE2-.LLFB2 ! FDE address range -+#endif -+ .byte 0x0 ! uleb128 0x0; Augmentation size -+ .byte 0x4 ! DW_CFA_advance_loc4 -+ .uaword .LLCFI1-.LLFB2 -+ .byte 0xd ! DW_CFA_def_cfa_register -+ .byte 0x1e ! uleb128 0x1e -+ .byte 0x2d ! DW_CFA_GNU_window_save -+ .byte 0x9 ! DW_CFA_register -+ .byte 0xf ! uleb128 0xf -+ .byte 0x1f ! uleb128 0x1f -+ .align 8 -+.LLEFDE2: - #endif -diff -ruN --exclude=CVS gcc-3.2.2.orig/libffi/src/types.c gcc/libffi/src/types.c ---- gcc-3.2.2.orig/libffi/src/types.c Tue Mar 27 11:39:16 2001 -+++ gcc/libffi/src/types.c Wed Nov 27 07:24:05 2002 -@@ -42,7 +42,8 @@ - FFI_INTEGRAL_TYPEDEF(sint32, 4, 4, FFI_TYPE_SINT32); - FFI_INTEGRAL_TYPEDEF(float, 4, 4, FFI_TYPE_FLOAT); - --#if defined ALPHA || defined SPARC64 -+#if defined ALPHA || defined SPARC64 || defined X86_64 || defined S390X \ -+ || defined IA64 - - FFI_INTEGRAL_TYPEDEF(pointer, 8, 8, FFI_TYPE_POINTER); - -@@ -52,22 +53,12 @@ - - #endif - --#ifdef X86 -+#if defined X86 || defined X86_WIN32 || defined ARM || defined M68K - - FFI_INTEGRAL_TYPEDEF(uint64, 8, 4, FFI_TYPE_UINT64); - FFI_INTEGRAL_TYPEDEF(sint64, 8, 4, FFI_TYPE_SINT64); - --#elif defined X86_WIN32 -- --FFI_INTEGRAL_TYPEDEF(uint64, 8, 4, FFI_TYPE_UINT64); --FFI_INTEGRAL_TYPEDEF(sint64, 8, 4, FFI_TYPE_SINT64); -- --#elif defined ARM -- --FFI_INTEGRAL_TYPEDEF(uint64, 8, 4, FFI_TYPE_UINT64); --FFI_INTEGRAL_TYPEDEF(sint64, 8, 4, FFI_TYPE_SINT64); -- --#elif defined M68K -+#elif defined SH - - FFI_INTEGRAL_TYPEDEF(uint64, 8, 4, FFI_TYPE_UINT64); - FFI_INTEGRAL_TYPEDEF(sint64, 8, 4, FFI_TYPE_SINT64); -@@ -80,12 +71,7 @@ - #endif - - --#ifdef X86 -- --FFI_INTEGRAL_TYPEDEF(double, 8, 4, FFI_TYPE_DOUBLE); --FFI_INTEGRAL_TYPEDEF(longdouble, 12, 4, FFI_TYPE_LONGDOUBLE); -- --#elif defined X86_WIN32 -+#if defined X86 || defined X86_WIN32 || defined M68K - - FFI_INTEGRAL_TYPEDEF(double, 8, 4, FFI_TYPE_DOUBLE); - FFI_INTEGRAL_TYPEDEF(longdouble, 12, 4, FFI_TYPE_LONGDOUBLE); -@@ -95,25 +81,25 @@ - FFI_INTEGRAL_TYPEDEF(double, 8, 4, FFI_TYPE_DOUBLE); - FFI_INTEGRAL_TYPEDEF(longdouble, 8, 4, FFI_TYPE_LONGDOUBLE); - --#elif defined M68K -+#elif defined SH - - FFI_INTEGRAL_TYPEDEF(double, 8, 4, FFI_TYPE_DOUBLE); --FFI_INTEGRAL_TYPEDEF(longdouble, 12, 4, FFI_TYPE_LONGDOUBLE); -+FFI_INTEGRAL_TYPEDEF(longdouble, 8, 4, FFI_TYPE_LONGDOUBLE); - - #elif defined SPARC - - FFI_INTEGRAL_TYPEDEF(double, 8, 8, FFI_TYPE_DOUBLE); -- - #ifdef SPARC64 -- - FFI_INTEGRAL_TYPEDEF(longdouble, 16, 16, FFI_TYPE_LONGDOUBLE); -- - #else -- - FFI_INTEGRAL_TYPEDEF(longdouble, 16, 8, FFI_TYPE_LONGDOUBLE); -- - #endif - -+#elif defined X86_64 -+ -+FFI_INTEGRAL_TYPEDEF(double, 8, 8, FFI_TYPE_DOUBLE); -+FFI_INTEGRAL_TYPEDEF(longdouble, 16, 16, FFI_TYPE_LONGDOUBLE); -+ - #else - - FFI_INTEGRAL_TYPEDEF(double, 8, 8, FFI_TYPE_DOUBLE); -diff -ruN --exclude=CVS gcc-3.2.2.orig/libffi/src/x86/ffi.c gcc/libffi/src/x86/ffi.c ---- gcc-3.2.2.orig/libffi/src/x86/ffi.c Tue May 28 18:22:08 2002 -+++ gcc/libffi/src/x86/ffi.c Fri Dec 6 10:16:45 2002 -@@ -1,5 +1,8 @@ - /* ----------------------------------------------------------------------- -- ffi.c - Copyright (c) 1996, 1998, 1999 Cygnus Solutions -+ ffi.c - Copyright (c) 1996, 1998, 1999, 2001 Red Hat, Inc. -+ Copyright (c) 2002 Ranjit Mathew -+ Copyright (c) 2002 Bo Thorsen -+ Copyright (c) 2002 Roger Sayle - - x86 Foreign Function Interface - -@@ -23,6 +26,8 @@ - OTHER DEALINGS IN THE SOFTWARE. - ----------------------------------------------------------------------- */ - -+#ifndef __x86_64__ -+ - #include - #include - -@@ -36,12 +41,10 @@ - /*@=exportheader@*/ - { - register unsigned int i; -- register int tmp; - register void **p_argv; - register char *argp; - register ffi_type **p_arg; - -- tmp = 0; - argp = stack; - - if (ecif->cif->rtype->type == FFI_TYPE_STRUCT) -@@ -148,6 +151,18 @@ - /*@=declundef@*/ - /*@=exportheader@*/ - -+#ifdef X86_WIN32 -+/*@-declundef@*/ -+/*@-exportheader@*/ -+extern void ffi_call_STDCALL(void (*)(char *, extended_cif *), -+ /*@out@*/ extended_cif *, -+ unsigned, unsigned, -+ /*@out@*/ unsigned *, -+ void (*fn)()); -+/*@=declundef@*/ -+/*@=exportheader@*/ -+#endif /* X86_WIN32 */ -+ - void ffi_call(/*@dependent@*/ ffi_cif *cif, - void (*fn)(), - /*@out@*/ void *rvalue, -@@ -180,6 +195,14 @@ - cif->flags, ecif.rvalue, fn); - /*@=usedef@*/ - break; -+#ifdef X86_WIN32 -+ case FFI_STDCALL: -+ /*@-usedef@*/ -+ ffi_call_STDCALL(ffi_prep_args, &ecif, cif->bytes, -+ cif->flags, ecif.rvalue, fn); -+ /*@=usedef@*/ -+ break; -+#endif /* X86_WIN32 */ - default: - FFI_ASSERT(0); - break; -@@ -266,12 +289,10 @@ - /*@=exportheader@*/ - { - register unsigned int i; -- register int tmp; - register void **p_argv; - register char *argp; - register ffi_type **p_arg; - -- tmp = 0; - argp = stack; - - if ( cif->rtype->type == FFI_TYPE_STRUCT ) { -@@ -281,13 +302,14 @@ - - p_argv = avalue; - -- for (i = cif->nargs, p_arg = cif->arg_types; i != 0; i--, p_arg++) -+ for (i = cif->nargs, p_arg = cif->arg_types; (i != 0); i--, p_arg++) - { - size_t z; - - /* Align if necessary */ -- if (((*p_arg)->alignment - 1) & (unsigned) argp) -+ if (((*p_arg)->alignment - 1) & (unsigned) argp) { - argp = (char *) ALIGN(argp, (*p_arg)->alignment); -+ } - - z = (*p_arg)->size; - -@@ -298,7 +320,7 @@ - p_argv++; - argp += z; - } -- -+ - return; - } - -@@ -449,6 +471,15 @@ - /*@out@*/ unsigned *, - void (*fn)()); - -+#ifdef X86_WIN32 -+extern void -+ffi_call_STDCALL(void (*)(char *, extended_cif *), -+ /*@out@*/ extended_cif *, -+ unsigned, unsigned, -+ /*@out@*/ unsigned *, -+ void (*fn)()); -+#endif /* X86_WIN32 */ -+ - void - ffi_raw_call(/*@dependent@*/ ffi_cif *cif, - void (*fn)(), -@@ -483,6 +514,14 @@ - cif->flags, ecif.rvalue, fn); - /*@=usedef@*/ - break; -+#ifdef X86_WIN32 -+ case FFI_STDCALL: -+ /*@-usedef@*/ -+ ffi_call_STDCALL(ffi_prep_args_raw, &ecif, cif->bytes, -+ cif->flags, ecif.rvalue, fn); -+ /*@=usedef@*/ -+ break; -+#endif /* X86_WIN32 */ - default: - FFI_ASSERT(0); - break; -@@ -490,3 +529,5 @@ - } - - #endif -+ -+#endif /* __x86_64__ */ -diff -ruN --exclude=CVS gcc-3.2.2.orig/libffi/src/x86/ffi64.c gcc/libffi/src/x86/ffi64.c ---- gcc-3.2.2.orig/libffi/src/x86/ffi64.c Thu Jan 1 09:00:00 1970 -+++ gcc/libffi/src/x86/ffi64.c Wed Jan 29 00:54:28 2003 -@@ -0,0 +1,706 @@ -+/* ----------------------------------------------------------------------- -+ ffi.c - Copyright (c) 2002 Bo Thorsen -+ -+ x86-64 Foreign Function Interface -+ -+ Permission is hereby granted, free of charge, to any person obtaining -+ a copy of this software and associated documentation files (the -+ ``Software''), to deal in the Software without restriction, including -+ without limitation the rights to use, copy, modify, merge, publish, -+ distribute, sublicense, and/or sell copies of the Software, and to -+ permit persons to whom the Software is furnished to do so, subject to -+ the following conditions: -+ -+ The above copyright notice and this permission notice shall be included -+ in all copies or substantial portions of the Software. -+ -+ THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS -+ OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -+ IN NO EVENT SHALL CYGNUS SOLUTIONS BE LIABLE FOR ANY CLAIM, DAMAGES OR -+ OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, -+ ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -+ OTHER DEALINGS IN THE SOFTWARE. -+ ----------------------------------------------------------------------- */ -+ -+#include -+#include -+ -+#include -+#include -+ -+/* ffi_prep_args is called by the assembly routine once stack space -+ has been allocated for the function's arguments */ -+ -+#ifdef __x86_64__ -+ -+#define MAX_GPR_REGS 6 -+#define MAX_SSE_REGS 8 -+typedef struct -+{ -+ /* Registers for argument passing. */ -+ long gpr[MAX_GPR_REGS]; -+ __int128_t sse[MAX_SSE_REGS]; -+ -+ /* Stack space for arguments. */ -+ char argspace[0]; -+} stackLayout; -+ -+/* All reference to register classes here is identical to the code in -+ gcc/config/i386/i386.c. Do *not* change one without the other. */ -+ -+/* Register class used for passing given 64bit part of the argument. -+ These represent classes as documented by the PS ABI, with the exception -+ of SSESF, SSEDF classes, that are basically SSE class, just gcc will -+ use SF or DFmode move instead of DImode to avoid reformating penalties. -+ -+ Similary we play games with INTEGERSI_CLASS to use cheaper SImode moves -+ whenever possible (upper half does contain padding). -+ */ -+enum x86_64_reg_class -+ { -+ X86_64_NO_CLASS, -+ X86_64_INTEGER_CLASS, -+ X86_64_INTEGERSI_CLASS, -+ X86_64_SSE_CLASS, -+ X86_64_SSESF_CLASS, -+ X86_64_SSEDF_CLASS, -+ X86_64_SSEUP_CLASS, -+ X86_64_X87_CLASS, -+ X86_64_X87UP_CLASS, -+ X86_64_MEMORY_CLASS -+ }; -+ -+#define MAX_CLASSES 4 -+ -+/* x86-64 register passing implementation. See x86-64 ABI for details. Goal -+ of this code is to classify each 8bytes of incoming argument by the register -+ class and assign registers accordingly. */ -+ -+/* Return the union class of CLASS1 and CLASS2. -+ See the x86-64 PS ABI for details. */ -+ -+static enum x86_64_reg_class -+merge_classes (enum x86_64_reg_class class1, enum x86_64_reg_class class2) -+{ -+ /* Rule #1: If both classes are equal, this is the resulting class. */ -+ if (class1 == class2) -+ return class1; -+ -+ /* Rule #2: If one of the classes is NO_CLASS, the resulting class is -+ the other class. */ -+ if (class1 == X86_64_NO_CLASS) -+ return class2; -+ if (class2 == X86_64_NO_CLASS) -+ return class1; -+ -+ /* Rule #3: If one of the classes is MEMORY, the result is MEMORY. */ -+ if (class1 == X86_64_MEMORY_CLASS || class2 == X86_64_MEMORY_CLASS) -+ return X86_64_MEMORY_CLASS; -+ -+ /* Rule #4: If one of the classes is INTEGER, the result is INTEGER. */ -+ if ((class1 == X86_64_INTEGERSI_CLASS && class2 == X86_64_SSESF_CLASS) -+ || (class2 == X86_64_INTEGERSI_CLASS && class1 == X86_64_SSESF_CLASS)) -+ return X86_64_INTEGERSI_CLASS; -+ if (class1 == X86_64_INTEGER_CLASS || class1 == X86_64_INTEGERSI_CLASS -+ || class2 == X86_64_INTEGER_CLASS || class2 == X86_64_INTEGERSI_CLASS) -+ return X86_64_INTEGER_CLASS; -+ -+ /* Rule #5: If one of the classes is X87 or X87UP class, MEMORY is used. */ -+ if (class1 == X86_64_X87_CLASS || class1 == X86_64_X87UP_CLASS -+ || class2 == X86_64_X87_CLASS || class2 == X86_64_X87UP_CLASS) -+ return X86_64_MEMORY_CLASS; -+ -+ /* Rule #6: Otherwise class SSE is used. */ -+ return X86_64_SSE_CLASS; -+} -+ -+/* Classify the argument of type TYPE and mode MODE. -+ CLASSES will be filled by the register class used to pass each word -+ of the operand. The number of words is returned. In case the parameter -+ should be passed in memory, 0 is returned. As a special case for zero -+ sized containers, classes[0] will be NO_CLASS and 1 is returned. -+ -+ See the x86-64 PS ABI for details. -+*/ -+static int -+classify_argument (ffi_type *type, enum x86_64_reg_class classes[], -+ int *byte_offset) -+{ -+ /* First, align to the right place. */ -+ *byte_offset = ALIGN(*byte_offset, type->alignment); -+ -+ switch (type->type) -+ { -+ case FFI_TYPE_UINT8: -+ case FFI_TYPE_SINT8: -+ case FFI_TYPE_UINT16: -+ case FFI_TYPE_SINT16: -+ case FFI_TYPE_UINT32: -+ case FFI_TYPE_SINT32: -+ case FFI_TYPE_UINT64: -+ case FFI_TYPE_SINT64: -+ case FFI_TYPE_POINTER: -+ if (((*byte_offset) % 8 + type->size) <= 4) -+ classes[0] = X86_64_INTEGERSI_CLASS; -+ else -+ classes[0] = X86_64_INTEGER_CLASS; -+ return 1; -+ case FFI_TYPE_FLOAT: -+ if (((*byte_offset) % 8) == 0) -+ classes[0] = X86_64_SSESF_CLASS; -+ else -+ classes[0] = X86_64_SSE_CLASS; -+ return 1; -+ case FFI_TYPE_DOUBLE: -+ classes[0] = X86_64_SSEDF_CLASS; -+ return 1; -+ case FFI_TYPE_LONGDOUBLE: -+ classes[0] = X86_64_X87_CLASS; -+ classes[1] = X86_64_X87UP_CLASS; -+ return 2; -+ case FFI_TYPE_STRUCT: -+ { -+ const int UNITS_PER_WORD = 8; -+ int words = (type->size + UNITS_PER_WORD - 1) / UNITS_PER_WORD; -+ ffi_type **ptr; -+ int i; -+ enum x86_64_reg_class subclasses[MAX_CLASSES]; -+ -+ /* If the struct is larger than 16 bytes, pass it on the stack. */ -+ if (type->size > 16) -+ return 0; -+ -+ for (i = 0; i < words; i++) -+ classes[i] = X86_64_NO_CLASS; -+ -+ /* Merge the fields of structure. */ -+ for (ptr=type->elements; (*ptr)!=NULL; ptr++) -+ { -+ int num; -+ -+ num = classify_argument (*ptr, subclasses, byte_offset); -+ if (num == 0) -+ return 0; -+ for (i = 0; i < num; i++) -+ { -+ int pos = *byte_offset / 8; -+ classes[i + pos] = -+ merge_classes (subclasses[i], classes[i + pos]); -+ } -+ -+ if ((*ptr)->type != FFI_TYPE_STRUCT) -+ *byte_offset += (*ptr)->size; -+ } -+ -+ /* Final merger cleanup. */ -+ for (i = 0; i < words; i++) -+ { -+ /* If one class is MEMORY, everything should be passed in -+ memory. */ -+ if (classes[i] == X86_64_MEMORY_CLASS) -+ return 0; -+ -+ /* The X86_64_SSEUP_CLASS should be always preceded by -+ X86_64_SSE_CLASS. */ -+ if (classes[i] == X86_64_SSEUP_CLASS -+ && (i == 0 || classes[i - 1] != X86_64_SSE_CLASS)) -+ classes[i] = X86_64_SSE_CLASS; -+ -+ /* X86_64_X87UP_CLASS should be preceded by X86_64_X87_CLASS. */ -+ if (classes[i] == X86_64_X87UP_CLASS -+ && (i == 0 || classes[i - 1] != X86_64_X87_CLASS)) -+ classes[i] = X86_64_SSE_CLASS; -+ } -+ return words; -+ } -+ -+ default: -+ FFI_ASSERT(0); -+ } -+ return 0; /* Never reached. */ -+} -+ -+/* Examine the argument and return set number of register required in each -+ class. Return 0 iff parameter should be passed in memory. */ -+static int -+examine_argument (ffi_type *type, int in_return, int *int_nregs,int *sse_nregs) -+{ -+ enum x86_64_reg_class class[MAX_CLASSES]; -+ int offset = 0; -+ int n; -+ -+ n = classify_argument (type, class, &offset); -+ -+ if (n == 0) -+ return 0; -+ -+ *int_nregs = 0; -+ *sse_nregs = 0; -+ for (n--; n>=0; n--) -+ switch (class[n]) -+ { -+ case X86_64_INTEGER_CLASS: -+ case X86_64_INTEGERSI_CLASS: -+ (*int_nregs)++; -+ break; -+ case X86_64_SSE_CLASS: -+ case X86_64_SSESF_CLASS: -+ case X86_64_SSEDF_CLASS: -+ (*sse_nregs)++; -+ break; -+ case X86_64_NO_CLASS: -+ case X86_64_SSEUP_CLASS: -+ break; -+ case X86_64_X87_CLASS: -+ case X86_64_X87UP_CLASS: -+ if (!in_return) -+ return 0; -+ break; -+ default: -+ abort (); -+ } -+ return 1; -+} -+ -+/* Functions to load floats and double to an SSE register placeholder. */ -+extern void float2sse (float, __int128_t *); -+extern void double2sse (double, __int128_t *); -+extern void floatfloat2sse (void *, __int128_t *); -+ -+/* Functions to put the floats and doubles back. */ -+extern float sse2float (__int128_t *); -+extern double sse2double (__int128_t *); -+extern void sse2floatfloat(__int128_t *, void *); -+ -+/*@-exportheader@*/ -+void -+ffi_prep_args (stackLayout *stack, extended_cif *ecif) -+/*@=exportheader@*/ -+{ -+ int gprcount, ssecount, i, g, s; -+ void **p_argv; -+ void *argp = &stack->argspace; -+ ffi_type **p_arg; -+ -+ /* First check if the return value should be passed in memory. If so, -+ pass the pointer as the first argument. */ -+ gprcount = ssecount = 0; -+ if (ecif->cif->rtype->type != FFI_TYPE_VOID -+ && examine_argument (ecif->cif->rtype, 1, &g, &s) == 0) -+ (void *)stack->gpr[gprcount++] = ecif->rvalue; -+ -+ for (i=ecif->cif->nargs, p_arg=ecif->cif->arg_types, p_argv = ecif->avalue; -+ i!=0; i--, p_arg++, p_argv++) -+ { -+ int in_register = 0; -+ -+ switch ((*p_arg)->type) -+ { -+ case FFI_TYPE_SINT8: -+ case FFI_TYPE_SINT16: -+ case FFI_TYPE_SINT32: -+ case FFI_TYPE_SINT64: -+ case FFI_TYPE_UINT8: -+ case FFI_TYPE_UINT16: -+ case FFI_TYPE_UINT32: -+ case FFI_TYPE_UINT64: -+ case FFI_TYPE_POINTER: -+ if (gprcount < MAX_GPR_REGS) -+ { -+ stack->gpr[gprcount] = 0; -+ stack->gpr[gprcount++] = *(long long *)(*p_argv); -+ in_register = 1; -+ } -+ break; -+ -+ case FFI_TYPE_FLOAT: -+ if (ssecount < MAX_SSE_REGS) -+ { -+ float2sse (*(float *)(*p_argv), &stack->sse[ssecount++]); -+ in_register = 1; -+ } -+ break; -+ -+ case FFI_TYPE_DOUBLE: -+ if (ssecount < MAX_SSE_REGS) -+ { -+ double2sse (*(double *)(*p_argv), &stack->sse[ssecount++]); -+ in_register = 1; -+ } -+ break; -+ } -+ -+ if (in_register) -+ continue; -+ -+ /* Either all places in registers where filled, or this is a -+ type that potentially goes into a memory slot. */ -+ if (examine_argument (*p_arg, 0, &g, &s) == 0 -+ || gprcount + g > MAX_GPR_REGS || ssecount + s > MAX_SSE_REGS) -+ { -+ /* Pass this argument in memory. */ -+ argp = (void *)ALIGN(argp, (*p_arg)->alignment); -+ memcpy (argp, *p_argv, (*p_arg)->size); -+ argp += (*p_arg)->size; -+ } -+ else -+ { -+ /* All easy cases are eliminated. Now fire the big guns. */ -+ -+ enum x86_64_reg_class classes[MAX_CLASSES]; -+ int offset = 0, j, num; -+ void *a; -+ -+ num = classify_argument (*p_arg, classes, &offset); -+ for (j=0, a=*p_argv; jgpr[gprcount++] = *(long long *)a; -+ break; -+ case X86_64_SSE_CLASS: -+ floatfloat2sse (a, &stack->sse[ssecount++]); -+ break; -+ case X86_64_SSESF_CLASS: -+ float2sse (*(float *)a, &stack->sse[ssecount++]); -+ break; -+ case X86_64_SSEDF_CLASS: -+ double2sse (*(double *)a, &stack->sse[ssecount++]); -+ break; -+ default: -+ abort(); -+ } -+ } -+ } -+ } -+} -+ -+/* Perform machine dependent cif processing. */ -+ffi_status -+ffi_prep_cif_machdep (ffi_cif *cif) -+{ -+ int gprcount, ssecount, i, g, s; -+ -+ gprcount = ssecount = 0; -+ -+ /* Reset the byte count. We handle this size estimation here. */ -+ cif->bytes = 0; -+ -+ /* If the return value should be passed in memory, pass the pointer -+ as the first argument. The actual memory isn't allocated here. */ -+ if (cif->rtype->type != FFI_TYPE_VOID -+ && examine_argument (cif->rtype, 1, &g, &s) == 0) -+ gprcount = 1; -+ -+ /* Go over all arguments and determine the way they should be passed. -+ If it's in a register and there is space for it, let that be so. If -+ not, add it's size to the stack byte count. */ -+ for (i=0; inargs; i++) -+ { -+ if (examine_argument (cif->arg_types[i], 0, &g, &s) == 0 -+ || gprcount + g > MAX_GPR_REGS || ssecount + s > MAX_SSE_REGS) -+ { -+ /* This is passed in memory. First align to the basic type. */ -+ cif->bytes = ALIGN(cif->bytes, cif->arg_types[i]->alignment); -+ -+ /* Stack arguments are *always* at least 8 byte aligned. */ -+ cif->bytes = ALIGN(cif->bytes, 8); -+ -+ /* Now add the size of this argument. */ -+ cif->bytes += cif->arg_types[i]->size; -+ } -+ else -+ { -+ gprcount += g; -+ ssecount += s; -+ } -+ } -+ -+ /* Set the flag for the closures return. */ -+ switch (cif->rtype->type) -+ { -+ case FFI_TYPE_VOID: -+ case FFI_TYPE_STRUCT: -+ case FFI_TYPE_SINT64: -+ case FFI_TYPE_FLOAT: -+ case FFI_TYPE_DOUBLE: -+ case FFI_TYPE_LONGDOUBLE: -+ cif->flags = (unsigned) cif->rtype->type; -+ break; -+ -+ case FFI_TYPE_UINT64: -+ cif->flags = FFI_TYPE_SINT64; -+ break; -+ -+ default: -+ cif->flags = FFI_TYPE_INT; -+ break; -+ } -+ -+ return FFI_OK; -+} -+ -+typedef struct -+{ -+ long gpr[2]; -+ __int128_t sse[2]; -+ long double st0; -+} return_value; -+ -+void -+ffi_fill_return_value (return_value *rv, extended_cif *ecif) -+{ -+ enum x86_64_reg_class classes[MAX_CLASSES]; -+ int i = 0, num; -+ long *gpr = rv->gpr; -+ __int128_t *sse = rv->sse; -+ signed char sc; -+ signed short ss; -+ -+ /* This is needed because of the way x86-64 handles signed short -+ integers. */ -+ switch (ecif->cif->rtype->type) -+ { -+ case FFI_TYPE_SINT8: -+ sc = *(signed char *)gpr; -+ *(long long *)ecif->rvalue = (long long)sc; -+ return; -+ case FFI_TYPE_SINT16: -+ ss = *(signed short *)gpr; -+ *(long long *)ecif->rvalue = (long long)ss; -+ return; -+ default: -+ /* Just continue. */ -+ ; -+ } -+ -+ num = classify_argument (ecif->cif->rtype, classes, &i); -+ -+ if (num == 0) -+ /* Return in memory. */ -+ ecif->rvalue = (void *) rv->gpr[0]; -+ else if (num == 2 && classes[0] == X86_64_X87_CLASS && -+ classes[1] == X86_64_X87UP_CLASS) -+ /* This is a long double (this is easiest to handle this way instead -+ of an eightbyte at a time as in the loop below. */ -+ *((long double *)ecif->rvalue) = rv->st0; -+ else -+ { -+ void *a; -+ -+ for (i=0, a=ecif->rvalue; irtype, 1, &dummy, &dummy) == 0)) -+ { -+ /*@-sysunrecog@*/ -+ ecif.rvalue = alloca(cif->rtype->size); -+ /*@=sysunrecog@*/ -+ } -+ else -+ ecif.rvalue = rvalue; -+ -+ /* Stack must always be 16byte aligned. Make it so. */ -+ cif->bytes = ALIGN(cif->bytes, 16); -+ -+ switch (cif->abi) -+ { -+ case FFI_SYSV: -+ /* Calling 32bit code from 64bit is not possible */ -+ FFI_ASSERT(0); -+ break; -+ -+ case FFI_UNIX64: -+ /*@-usedef@*/ -+ ffi_call_UNIX64 (ffi_prep_args, ffi_fill_return_value, &ecif, -+ cif->bytes, ecif.rvalue, fn); -+ /*@=usedef@*/ -+ break; -+ -+ default: -+ FFI_ASSERT(0); -+ break; -+ } -+} -+ -+extern void ffi_closure_UNIX64(void); -+ -+ffi_status -+ffi_prep_closure (ffi_closure* closure, -+ ffi_cif* cif, -+ void (*fun)(ffi_cif*, void*, void**, void*), -+ void *user_data) -+{ -+ volatile unsigned short *tramp; -+ -+ /* FFI_ASSERT (cif->abi == FFI_OSF); */ -+ -+ tramp = (volatile unsigned short *) &closure->tramp[0]; -+ tramp[0] = 0xbb49; /* mov , %r11 */ -+ tramp[5] = 0xba49; /* mov , %r10 */ -+ tramp[10] = 0xff49; /* jmp *%r11 */ -+ tramp[11] = 0x00e3; -+ *(void * volatile *) &tramp[1] = ffi_closure_UNIX64; -+ *(void * volatile *) &tramp[6] = closure; -+ -+ closure->cif = cif; -+ closure->fun = fun; -+ closure->user_data = user_data; -+ -+ return FFI_OK; -+} -+ -+int -+ffi_closure_UNIX64_inner(ffi_closure *closure, va_list l, void *rp) -+{ -+ ffi_cif *cif; -+ void **avalue; -+ ffi_type **arg_types; -+ long i, avn, argn; -+ -+ cif = closure->cif; -+ avalue = alloca(cif->nargs * sizeof(void *)); -+ -+ argn = 0; -+ -+ i = 0; -+ avn = cif->nargs; -+ arg_types = cif->arg_types; -+ -+ /* Grab the addresses of the arguments from the stack frame. */ -+ while (i < avn) -+ { -+ switch (arg_types[i]->type) -+ { -+ case FFI_TYPE_SINT8: -+ case FFI_TYPE_UINT8: -+ case FFI_TYPE_SINT16: -+ case FFI_TYPE_UINT16: -+ case FFI_TYPE_SINT32: -+ case FFI_TYPE_UINT32: -+ case FFI_TYPE_SINT64: -+ case FFI_TYPE_UINT64: -+ case FFI_TYPE_POINTER: -+ { -+ if (l->gp_offset > 48-8) -+ { -+ avalue[i] = l->overflow_arg_area; -+ l->overflow_arg_area = (char *)l->overflow_arg_area + 8; -+ } -+ else -+ { -+ avalue[i] = (char *)l->reg_save_area + l->gp_offset; -+ l->gp_offset += 8; -+ } -+ } -+ break; -+ -+ case FFI_TYPE_STRUCT: -+ /* FIXME */ -+ FFI_ASSERT(0); -+ break; -+ -+ case FFI_TYPE_DOUBLE: -+ { -+ if (l->fp_offset > 176-16) -+ { -+ avalue[i] = l->overflow_arg_area; -+ l->overflow_arg_area = (char *)l->overflow_arg_area + 8; -+ } -+ else -+ { -+ avalue[i] = (char *)l->reg_save_area + l->fp_offset; -+ l->fp_offset += 16; -+ } -+ } -+#if DEBUG_FFI -+ fprintf (stderr, "double arg %d = %g\n", i, *(double *)avalue[i]); -+#endif -+ break; -+ -+ case FFI_TYPE_FLOAT: -+ { -+ if (l->fp_offset > 176-16) -+ { -+ avalue[i] = l->overflow_arg_area; -+ l->overflow_arg_area = (char *)l->overflow_arg_area + 8; -+ } -+ else -+ { -+ avalue[i] = (char *)l->reg_save_area + l->fp_offset; -+ l->fp_offset += 16; -+ } -+ } -+#if DEBUG_FFI -+ fprintf (stderr, "float arg %d = %g\n", i, *(float *)avalue[i]); -+#endif -+ break; -+ -+ default: -+ FFI_ASSERT(0); -+ } -+ -+ argn += ALIGN(arg_types[i]->size, SIZEOF_ARG) / SIZEOF_ARG; -+ i++; -+ } -+ -+ /* Invoke the closure. */ -+ (closure->fun) (cif, rp, avalue, closure->user_data); -+ -+ /* FIXME: Structs not supported. */ -+ FFI_ASSERT(cif->rtype->type != FFI_TYPE_STRUCT); -+ -+ /* Tell ffi_closure_UNIX64 how to perform return type promotions. */ -+ -+ return cif->rtype->type; -+} -+#endif /* ifndef __x86_64__ */ -diff -ruN --exclude=CVS gcc-3.2.2.orig/libffi/src/x86/sysv.S gcc/libffi/src/x86/sysv.S ---- gcc-3.2.2.orig/libffi/src/x86/sysv.S Tue Jul 17 02:10:53 2001 -+++ gcc/libffi/src/x86/sysv.S Fri Jul 19 08:08:31 2002 -@@ -1,5 +1,5 @@ - /* ----------------------------------------------------------------------- -- sysv.S - Copyright (c) 1996, 1998, 2001 Cygnus Solutions -+ sysv.S - Copyright (c) 1996, 1998, 2001, 2002 Cygnus Solutions - - X86 Foreign Function Interface - -@@ -23,6 +23,8 @@ - OTHER DEALINGS IN THE SOFTWARE. - ----------------------------------------------------------------------- */ - -+#ifndef __x86_64__ -+ - #define LIBFFI_ASM - #include - -@@ -163,3 +165,5 @@ - .align 4 - .LEFDE1: - .set .LLFDE1,.LEFDE1-.LSFDE1 -+ -+#endif /* ifndef __x86_64__ */ -diff -ruN --exclude=CVS gcc-3.2.2.orig/libffi/src/x86/unix64.S gcc/libffi/src/x86/unix64.S ---- gcc-3.2.2.orig/libffi/src/x86/unix64.S Thu Jan 1 09:00:00 1970 -+++ gcc/libffi/src/x86/unix64.S Wed Jan 29 00:54:28 2003 -@@ -0,0 +1,302 @@ -+/* ----------------------------------------------------------------------- -+ unix64.S - Copyright (c) 2002 Bo Thorsen -+ -+ x86-64 Foreign Function Interface -+ -+ Permission is hereby granted, free of charge, to any person obtaining -+ a copy of this software and associated documentation files (the -+ ``Software''), to deal in the Software without restriction, including -+ without limitation the rights to use, copy, modify, merge, publish, -+ distribute, sublicense, and/or sell copies of the Software, and to -+ permit persons to whom the Software is furnished to do so, subject to -+ the following conditions: -+ -+ The above copyright notice and this permission notice shall be included -+ in all copies or substantial portions of the Software. -+ -+ THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS -+ OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -+ IN NO EVENT SHALL CYGNUS SOLUTIONS BE LIABLE FOR ANY CLAIM, DAMAGES OR -+ OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, -+ ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -+ OTHER DEALINGS IN THE SOFTWARE. -+ ----------------------------------------------------------------------- */ -+ -+#ifdef __x86_64__ -+#define LIBFFI_ASM -+#include -+ -+ .section .rodata -+.LC0: -+ .string "asm in progress %lld\n" -+.LC1: -+ .string "asm in progress\n" -+.text -+ .align 2 -+.globl ffi_call_UNIX64 -+ .type ffi_call_UNIX64,@function -+ -+ffi_call_UNIX64: -+.LFB1: -+ pushq %rbp -+.LCFI0: -+ movq %rsp, %rbp -+.LCFI1: -+ /* Save all arguments */ -+ subq $48, %rsp -+.LCFI2: -+ movq %rdi, -8(%rbp) /* ffi_prep_args */ -+ movq %rsi, -16(%rbp) /* ffi_fill_return_value */ -+ movq %rdx, -24(%rbp) /* ecif */ -+ movq %rcx, -32(%rbp) /* cif->bytes */ -+ movq %r8, -40(%rbp) /* ecif.rvalue */ -+ movq %r9, -48(%rbp) /* fn */ -+ -+ /* Make room for all of the new args and the register args */ -+ addl $176, %ecx -+.LCFI3: -+ subq %rcx, %rsp -+.LCFI4: -+ /* Setup the call to ffi_prep_args. */ -+ movq %rdi, %rax /* &ffi_prep_args */ -+ movq %rsp, %rdi /* stackLayout */ -+ movq %rdx, %rsi /* ecif */ -+ call *%rax /* ffi_prep_args(stackLayout, ecif);*/ -+ -+ /* ffi_prep_args have put all the register contents into the */ -+ /* stackLayout struct. Now put the register values in place. */ -+ movq (%rsp), %rdi -+ movq 8(%rsp), %rsi -+ movq 16(%rsp), %rdx -+ movq 24(%rsp), %rcx -+ movq 32(%rsp), %r8 -+ movq 40(%rsp), %r9 -+ movaps 48(%rsp), %xmm0 -+ movaps 64(%rsp), %xmm1 -+ movaps 80(%rsp), %xmm2 -+ movaps 96(%rsp), %xmm3 -+ movaps 112(%rsp), %xmm4 -+ movaps 128(%rsp), %xmm5 -+ movaps 144(%rsp), %xmm6 -+ movaps 160(%rsp), %xmm7 -+ -+ /* Remove space for stackLayout so stack arguments are placed -+ correctly for the call. */ -+.LCFI5: -+ addq $176, %rsp -+.LCFI6: -+ /* Call the user function. */ -+ call *-48(%rbp) -+ -+ /* Make stack space for the return_value struct. */ -+ subq $64, %rsp -+ -+ /* Fill in all potential return values to this struct. */ -+ movq %rax, (%rsp) -+ movq %rdx, 8(%rsp) -+ movaps %xmm0, 16(%rsp) -+ movaps %xmm1, 32(%rsp) -+ fstpt 48(%rsp) -+ -+ /* Now call ffi_fill_return_value. */ -+ movq %rsp, %rdi /* struct return_value */ -+ movq -24(%rbp), %rsi /* ecif */ -+ movq -16(%rbp), %rax /* &ffi_fill_return_value */ -+ call *%rax /* call it */ -+ -+ /* And the work is done. */ -+ leave -+ ret -+.LFE1: -+.ffi_call_UNIX64_end: -+ .size ffi_call_UNIX64,.ffi_call_UNIX64_end-ffi_call_UNIX64 -+ -+.text -+ .align 2 -+.globl float2sse -+ .type float2sse,@function -+float2sse: -+ /* Save the contents of this sse-float in a pointer. */ -+ movaps %xmm0, (%rdi) -+ ret -+ -+ .align 2 -+.globl floatfloat2sse -+ .type floatfloat2sse,@function -+floatfloat2sse: -+ /* Save the contents of these two sse-floats in a pointer. */ -+ movq (%rdi), %xmm0 -+ movaps %xmm0, (%rsi) -+ ret -+ -+ .align 2 -+.globl double2sse -+ .type double2sse,@function -+double2sse: -+ /* Save the contents of this sse-double in a pointer. */ -+ movaps %xmm0, (%rdi) -+ ret -+ -+ .align 2 -+.globl sse2float -+ .type sse2float,@function -+sse2float: -+ /* Save the contents of this sse-float in a pointer. */ -+ movaps (%rdi), %xmm0 -+ ret -+ -+ .align 2 -+.globl sse2double -+ .type sse2double,@function -+sse2double: -+ /* Save the contents of this pointer in a sse-double. */ -+ movaps (%rdi), %xmm0 -+ ret -+ -+ .align 2 -+.globl sse2floatfloat -+ .type sse2floatfloat,@function -+sse2floatfloat: -+ /* Save the contents of this pointer in two sse-floats. */ -+ movaps (%rdi), %xmm0 -+ movq %xmm0, (%rsi) -+ ret -+ -+ .align 2 -+.globl ffi_closure_UNIX64 -+ .type ffi_closure_UNIX64,@function -+ -+ffi_closure_UNIX64: -+.LFB2: -+ pushq %rbp -+.LCFI10: -+ movq %rsp, %rbp -+.LCFI11: -+ subq $240, %rsp -+.LCFI12: -+ movq %rdi, -176(%rbp) -+ movq %rsi, -168(%rbp) -+ movq %rdx, -160(%rbp) -+ movq %rcx, -152(%rbp) -+ movq %r8, -144(%rbp) -+ movq %r9, -136(%rbp) -+ /* FIXME: We can avoid all this stashing of XMM registers by -+ (in ffi_prep_closure) computing the number of -+ floating-point args and moving it into %rax before calling -+ this function. Once this is done, uncomment the next few -+ lines and only the essential XMM registers will be written -+ to memory. This is a significant saving. */ -+/* movzbl %al, %eax */ -+/* movq %rax, %rdx */ -+/* leaq 0(,%rdx,4), %rax */ -+/* leaq 2f(%rip), %rdx */ -+/* subq %rax, %rdx */ -+ leaq -1(%rbp), %rax -+/* jmp *%rdx */ -+ movaps %xmm7, -15(%rax) -+ movaps %xmm6, -31(%rax) -+ movaps %xmm5, -47(%rax) -+ movaps %xmm4, -63(%rax) -+ movaps %xmm3, -79(%rax) -+ movaps %xmm2, -95(%rax) -+ movaps %xmm1, -111(%rax) -+ movaps %xmm0, -127(%rax) -+2: -+ movl %edi, -180(%rbp) -+ movl $0, -224(%rbp) -+ movl $48, -220(%rbp) -+ leaq 16(%rbp), %rax -+ movq %rax, -216(%rbp) -+ leaq -176(%rbp), %rdx -+ movq %rdx, -208(%rbp) -+ leaq -224(%rbp), %rsi -+ movq %r10, %rdi -+ movq %rsp, %rdx -+ call ffi_closure_UNIX64_inner@PLT -+ -+ cmpl $FFI_TYPE_FLOAT, %eax -+ je 1f -+ cmpl $FFI_TYPE_DOUBLE, %eax -+ je 2f -+ cmpl $FFI_TYPE_LONGDOUBLE, %eax -+ je 3f -+ cmpl $FFI_TYPE_STRUCT, %eax -+ je 4f -+ popq %rax -+ leave -+ ret -+1: -+2: -+3: -+ movaps -240(%rbp), %xmm0 -+ leave -+ ret -+4: -+ leave -+ ret -+.LFE2: -+ -+ .section .eh_frame,"a",@progbits -+.Lframe0: -+ .long .LECIE1-.LSCIE1 -+.LSCIE1: -+ .long 0x0 -+ .byte 0x1 -+ .string "zR" -+ .uleb128 0x1 -+ .sleb128 -8 -+ .byte 0x10 -+ .uleb128 0x1 -+ .byte 0x1b -+ .byte 0xc -+ .uleb128 0x7 -+ .uleb128 0x8 -+ .byte 0x90 -+ .uleb128 0x1 -+ .align 8 -+.LECIE1: -+.LSFDE1: -+ .long .LEFDE1-.LASFDE1 -+.LASFDE1: -+ .long .LASFDE1-.Lframe0 -+ -+ .long .LFB1-. -+ .long .LFE1-.LFB1 -+ .uleb128 0x0 -+ .byte 0x4 # DW_CFA_advance_loc4 -+ .long .LCFI0-.LFB1 -+ .byte 0xe # DW_CFA_def_cfa_offset -+ .uleb128 0x10 -+ .byte 0x86 # DW_CFA_offset: r6 at cfa-16 -+ .uleb128 0x2 -+ .byte 0x4 # DW_CFA_advance_loc4 -+ .long .LCFI1-.LCFI0 -+ .byte 0x86 # DW_CFA_offset: r6 at cfa-16 -+ .uleb128 0x2 -+ .byte 0xd # DW_CFA_def_cfa_reg: r6 -+ .uleb128 0x6 -+ .align 8 -+.LEFDE1: -+.LSFDE3: -+ .long .LEFDE3-.LASFDE3 # FDE Length -+.LASFDE3: -+ .long .LASFDE3-.Lframe0 # FDE CIE offset -+ -+ .long .LFB2-. # FDE initial location -+ .long .LFE2-.LFB2 # FDE address range -+ .uleb128 0x0 # Augmentation size -+ .byte 0x4 # DW_CFA_advance_loc4 -+ .long .LCFI10-.LFB2 -+ .byte 0xe # DW_CFA_def_cfa_offset -+ .uleb128 0x10 -+ .byte 0x86 # DW_CFA_offset, column 0x6 -+ .uleb128 0x2 -+ .byte 0x4 # DW_CFA_advance_loc4 -+ .long .LCFI11-.LCFI10 -+ .byte 0xd # DW_CFA_def_cfa_register -+ .uleb128 0x6 -+ .align 8 -+.LEFDE3: -+ -+#endif /* __x86_64__ */ -diff -ruN --exclude=CVS gcc-3.2.2.orig/libffi/src/x86/win32.S gcc/libffi/src/x86/win32.S ---- gcc-3.2.2.orig/libffi/src/x86/win32.S Tue Mar 27 11:39:16 2001 -+++ gcc/libffi/src/x86/win32.S Fri Dec 6 10:16:45 2002 -@@ -1,5 +1,8 @@ - /* ----------------------------------------------------------------------- -- win32.S - Copyright (c) 1996, 1998, 2001 Cygnus Solutions -+ win32.S - Copyright (c) 1996, 1998, 2001, 2002 Red Hat, Inc. -+ Copyright (c) 2001 John Beniton -+ Copyright (c) 2002 Ranjit Mathew -+ - - X86 Foreign Function Interface - -@@ -52,7 +55,10 @@ - # Return stack to previous state and call the function - addl $8,%esp - -- call *28(%ebp) -+ # FIXME: Align the stack to a 128-bit boundary to avoid -+ # potential performance hits. -+ -+ call *28(%ebp) - - # Remove the space we pushed for the args - movl 16(%ebp),%ecx -@@ -123,3 +129,98 @@ - ret - - .ffi_call_SYSV_end: -+ -+ # This assumes we are using gas. -+ .balign 16 -+.globl _ffi_call_STDCALL -+ -+_ffi_call_STDCALL: -+ pushl %ebp -+ movl %esp,%ebp -+ -+ # Make room for all of the new args. -+ movl 16(%ebp),%ecx -+ subl %ecx,%esp -+ -+ movl %esp,%eax -+ -+ # Place all of the ffi_prep_args in position -+ pushl 12(%ebp) -+ pushl %eax -+ call *8(%ebp) -+ -+ # Return stack to previous state and call the function -+ addl $8,%esp -+ -+ # FIXME: Align the stack to a 128-bit boundary to avoid -+ # potential performance hits. -+ -+ call *28(%ebp) -+ -+ # stdcall functions pop arguments off the stack themselves -+ -+ # Load %ecx with the return type code -+ movl 20(%ebp),%ecx -+ -+ # If the return value pointer is NULL, assume no return value. -+ cmpl $0,24(%ebp) -+ jne sc_retint -+ -+ # Even if there is no space for the return value, we are -+ # obliged to handle floating-point values. -+ cmpl $FFI_TYPE_FLOAT,%ecx -+ jne sc_noretval -+ fstp %st(0) -+ -+ jmp sc_epilogue -+ -+sc_retint: -+ cmpl $FFI_TYPE_INT,%ecx -+ jne sc_retfloat -+ # Load %ecx with the pointer to storage for the return value -+ movl 24(%ebp),%ecx -+ movl %eax,0(%ecx) -+ jmp sc_epilogue -+ -+sc_retfloat: -+ cmpl $FFI_TYPE_FLOAT,%ecx -+ jne sc_retdouble -+ # Load %ecx with the pointer to storage for the return value -+ movl 24(%ebp),%ecx -+ fstps (%ecx) -+ jmp sc_epilogue -+ -+sc_retdouble: -+ cmpl $FFI_TYPE_DOUBLE,%ecx -+ jne sc_retlongdouble -+ # Load %ecx with the pointer to storage for the return value -+ movl 24(%ebp),%ecx -+ fstpl (%ecx) -+ jmp sc_epilogue -+ -+sc_retlongdouble: -+ cmpl $FFI_TYPE_LONGDOUBLE,%ecx -+ jne sc_retint64 -+ # Load %ecx with the pointer to storage for the return value -+ movl 24(%ebp),%ecx -+ fstpt (%ecx) -+ jmp sc_epilogue -+ -+sc_retint64: -+ cmpl $FFI_TYPE_SINT64,%ecx -+ jne sc_retstruct -+ # Load %ecx with the pointer to storage for the return value -+ movl 24(%ebp),%ecx -+ movl %eax,0(%ecx) -+ movl %edx,4(%ecx) -+ -+sc_retstruct: -+ # Nothing to do! -+ -+sc_noretval: -+sc_epilogue: -+ movl %ebp,%esp -+ popl %ebp -+ ret -+ -+.ffi_call_STDCALL_end: ---- gcc-3.2.2.orig/libjava/configure.host Mon Jun 10 13:15:26 2002 -+++ gcc-3.2.2/libjava/configure.host Sat Feb 15 19:57:25 2003 -@@ -115,6 +115,12 @@ - enable_getenv_properties_default=no - enable_main_args_default=no - ;; -+ sh-* | sh[34]*-*) -+ sysdeps_dir=sh -+ libgcj_flags="${libgcj_flags} -mieee" -+ libgcj_interpreter=yes -+ enable_hash_synchronization_default=yes -+ ;; - esac - - # This case statement supports generic port properties and may refine -@@ -126,7 +132,8 @@ - powerpc*-linux* | \ - alpha*-linux* | \ - sparc*-linux* | \ -- ia64-*) -+ ia64-* | \ -+ sh-linux* | sh[34]*-linux*) - can_unwind_signal=yes - ;; - *-*-darwin*) diff --git a/patches/gcc/3.2.3/150-ppc-asm-spec.patch b/patches/gcc/3.2.3/150-ppc-asm-spec.patch deleted file mode 100644 index e0ccd9f..0000000 --- a/patches/gcc/3.2.3/150-ppc-asm-spec.patch +++ /dev/null @@ -1,54 +0,0 @@ -Based on gcc-3.4.0/gcc-3.3.3h-ppc-asm-spec.patch - -Fixes the following errors when building gcc for ppc7450: - -/tmp/ccYph3gd.s: Assembler messages: -/tmp/ccYph3gd.s:3823: Error: Unrecognized opcode: `mfvrsave' -/tmp/ccYph3gd.s:3857: Error: Unrecognized opcode: `stvx' -/tmp/ccYph3gd.s:4026: Error: Unrecognized opcode: `lvx' -/tmp/ccYph3gd.s:4027: Error: Unrecognized opcode: `mtvrsave' -make[2]: *** [libgcc/./unwind-dw2.o] Error 1 -make[2]: Leaving directory `/opt/crosstool-0.28-rc35/build/powerpc-7450-linux-gnu/gcc-3.2.3-glibc-2.3.2/build-gcc-core/gcc' -make[1]: *** [stmp-multilib] Error 2 -make[1]: Leaving directory `/opt/crosstool-0.28-rc35/build/powerpc-7450-linux-gnu/gcc-3.2.3-glibc-2.3.2/build-gcc-core/gcc' -make: *** [all-gcc] Error 2 - -Note that the "-mcpu=7450" option must appear on the "gcc" command line in -order for "-maltivec" to be passed to the assembler. Or, "-maltivec" itself -may be passed to the "gcc" command. - -Contributed by Tom Warzeka - -=================================================================== ---- gcc-3.2.3/gcc/config/rs6000/rs6000.h~ 2003-03-29 07:39:20.000000000 -0500 -+++ gcc-3.2.3/gcc/config/rs6000/rs6000.h 2004-08-23 16:33:21.000000000 -0400 -@@ -77,8 +77,8 @@ - %{mcpu=604e: -D_ARCH_PPC} \ - %{mcpu=620: -D_ARCH_PPC} \ - %{mcpu=740: -D_ARCH_PPC} \ --%{mcpu=7400: -D_ARCH_PPC} \ --%{mcpu=7450: -D_ARCH_PPC} \ -+%{mcpu=7400: -D_ARCH_PPC -D__ALTIVEC__} \ -+%{mcpu=7450: -D_ARCH_PPC -D__ALTIVEC__} \ - %{mcpu=750: -D_ARCH_PPC} \ - %{mcpu=801: -D_ARCH_PPC} \ - %{mcpu=821: -D_ARCH_PPC} \ -@@ -117,14 +117,15 @@ - %{mcpu=604e: -mppc} \ - %{mcpu=620: -mppc} \ - %{mcpu=740: -mppc} \ --%{mcpu=7400: -mppc} \ --%{mcpu=7450: -mppc} \ -+%{mcpu=7400: -mppc -maltivec} \ -+%{mcpu=7450: -mppc -maltivec} \ - %{mcpu=750: -mppc} \ - %{mcpu=801: -mppc} \ - %{mcpu=821: -mppc} \ - %{mcpu=823: -mppc} \ - %{mcpu=860: -mppc} \ --%{maltivec: -maltivec}" -+%{maltivec: -maltivec} \ -+-many" - - #define CPP_DEFAULT_SPEC "" - diff --git a/patches/gcc/3.2.3/160-trap-posix.patch b/patches/gcc/3.2.3/160-trap-posix.patch deleted file mode 100644 index 4751e9d..0000000 --- a/patches/gcc/3.2.3/160-trap-posix.patch +++ /dev/null @@ -1,45 +0,0 @@ -# -# Submitted-By: Marc Kleine-Budde , 2005-04-20 -# -# Error: -# -# creating libintl.h -# Configuring etc... -# loading cache ../config.cache -# checking for a BSD compatible install... (cached) /usr/bin/install -c -# creating ./config.status -# creating Makefile -# trap: usage: trap [-lp] [[arg] signal_spec ...] -# -# Description: -# -# non-posix conform usage of trap causes bash >= 3.0 to fail -# -# e.g.: http://sourceware.org/ml/crossgcc/2004-12/msg00132.html -# -# Status: -# -# fixed in gcc >= 3.3.5 -# backport of gcc-3.3.5 fix -# -diff -ruN gcc-3.2.3-orig/configure gcc-3.2.3/configure ---- gcc-3.2.3-orig/configure 2002-06-24 18:14:28.000000000 +0200 -+++ gcc-3.2.3/configure 2005-04-20 18:42:49.000000000 +0200 -@@ -697,7 +697,7 @@ - if test -f skip-this-dir; then - # Perform the same cleanup as the trap handler, minus the "exit 1" of course, - # and reset the trap handler. -- trap 0 -+ trap '' 0 - rm -rf Makefile* ${tmpdir} - # Execute the final clean-up actions - ${config_shell} skip-this-dir -@@ -1615,7 +1615,7 @@ - # Perform the same cleanup as the trap handler, minus the "exit 1" of course, - # and reset the trap handler. - rm -rf ${tmpdir} --trap 0 -+trap '' 0 - - exit 0 - diff --git a/patches/gcc/3.2.3/170-libstdc++-v3-dg.exp.patch b/patches/gcc/3.2.3/170-libstdc++-v3-dg.exp.patch deleted file mode 100644 index aafc130..0000000 --- a/patches/gcc/3.2.3/170-libstdc++-v3-dg.exp.patch +++ /dev/null @@ -1,54 +0,0 @@ -Without this patch, the command - -RUNTESTFLAGS=--target=powerpc-750-linux-gnu -v -v -v -v make check-target-libstdc++-v3 - -fails in two ways: -1. the -L option meant to locate the testsuite directory is incorrect, and -2. the wrong compiler is invoked, causing all sorts of havoc, not least of which -is the native compiler is invoked when we really wanted to invoke the cross-compiler -we just built. - -Here's an example log of the problem in action. Every testcase fails, this shows just one: -------------- -Invoking the compiler as g++ -ggdb3 -DDEBUG_ASSERT -I/home3/dank/wk/ixos/dap_interim/linux/3rdParty/crosstool/crosstool-0.12/build/powerpc-750-linux-gnu/gcc-3.3-glibc-2.2.5/gcc-3.3/libstdc++-v3/testsuite /home3/dank/wk/ixos/dap_interim/linux/3rdParty/crosstool/crosstool-0.12/build/powerpc-750-linux-gnu/gcc-3.3-glibc-2.2.5/gcc-3.3/libstdc++-v3/testsuite/20_util/binders.cc -g -O2 -DDEBUG_ASSERT -L/testsuite -lv3test -lm -o ./binders.exe -compiler exited with status 1 -output is: -/usr/lib/gcc-lib/i386-linux/2.95.4/../../../../include/g++-3/stl_function.h: In method `void binder2nd >::operator ()(const Elem &) const':^M -/usr/lib/gcc-lib/i386-linux/2.95.4/../../../../include/g++-3/stl_algo.h:83: instantiated from `for_each > >(Elem *, Elem *, binder2nd >)'^M -/home3/dank/wk/ixos/dap_interim/linux/3rdParty/crosstool/crosstool-0.12/build/powerpc-750-linux-gnu/gcc-3.3-glibc-2.2.5/gcc-3.3/libstdc++-v3/testsuite/20_util/binders.cc:43: instantiated from here^M -/usr/lib/gcc-lib/i386-linux/2.95.4/../../../../include/g++-3/stl_function.h:224: conversion from `const Elem' to `Elem &' discards qualifiers^M -/usr/lib/gcc-lib/i386-linux/2.95.4/../../../../include/g++-3/stl_function.h:622: in passing argument 1 of `mem_fun1_ref_t::operator ()(Elem &, int) const'^M -... -FAIL: 20_util/binders.cc (test for excess errors) -WARNING: 20_util/binders.cc compilation failed to produce executable -------------- - -And here's the patch. I'm not happy with it, and it probably gets some cases wrong, -but it seems to work for the common native case and for my cross-compiler case. - ---- gcc-3.3/libstdc++-v3/testsuite/lib/libstdc++-v3-dg.exp.old Sun Jul 13 10:42:01 2003 -+++ gcc-3.3/libstdc++-v3/testsuite/lib/libstdc++-v3-dg.exp Sun Jul 13 11:39:54 2003 -@@ -46,8 +46,23 @@ - global gluefile wrap_flags - global ld_library_path - global tool_root_dir -+ global target_triplet - - set blddir [lookfor_file [get_multilibs] libstdc++-v3] -+ if { $blddir == "" } { -+ set multilibs [get_multilibs] -+ # FIXME: assume multilib only one level deep -+ set multisub [file tail $multilibs] -+ verbose "libstdc++-v3-init: couldn't find libstdc++-v3 in $multilibs, trying $objdir" -+ set blddir [lookfor_file ${objdir} "$target_triplet/$multisub/libstdc++-v3"] -+ } -+ if { $blddir == "" } { -+ verbose "libstdc++-v3-init: couldn't find libstdc++-v3, trying $objdir without multilibs" -+ set blddir [lookfor_file ${objdir} "$target_triplet/libstdc++-v3"] -+ } -+ if { $blddir == "" } { -+ error "Can't find libstdc++-v3" -+ } - - # By default, we assume we want to run program images. - global dg-do-what-default diff --git a/patches/gcc/3.2.3/README-mips b/patches/gcc/3.2.3/README-mips deleted file mode 100644 index 170b21d..0000000 --- a/patches/gcc/3.2.3/README-mips +++ /dev/null @@ -1,1648 +0,0 @@ -See also http://www.spinics.net/lists/mips/msg12236.html - -ftp://ftp.linux-mips.org/pub/linux/mips/redhat/7.3/test/SRPMS/gcc-3.2-7.1.src.rpm -contains the following patches and spec file. -You may wish to investigate some of these patches; I haven't. -I think this is mostly the Red Hat 8.0 srpm for a prerelease gcc-3.2, plus a couple -mips specific fixes, but you'd have to ask H.J.Lu or compare with the regular -Red Hat 8.0 srpm to find out. -In any case, the spec file is interesting reading. -- Dan K. - -total 1164 - 4 boehm-gc-LINUX.patch - 4 boehm-gc-mips.patch - 4 contrib-touch.patch - 8 gcc-arch.patch - 4 gcc-c++-template.patch - 4 gcc-copy.patch - 4 gcc-cross-bfd.patch - 4 gcc-cross.patch - 4 gcc-gcj-cross.patch - 4 gcc-libffi-mips.patch - 4 gcc-libgcc.patch - 480 gcc-libstdc++-glibc-2.2.patch - 4 gcc-libstdc++-mips.patch - 4 gcc-linux-atexit.patch - 8 gcc-linux-crt.patch - 4 gcc-mips-coff.patch - 4 gcc-mips-file.patch - 4 gcc-mips-ieee.patch - 4 gcc-mips-return.patch - 4 gcc-ppc-linux.patch - 8 gcc-sizeof.patch - 4 gcc-test-atexit.patch - 4 gcc-testsuite-c++.patch - 4 gcc-var.patch - 8 gcc32-2.96-RH-compat.patch - 4 gcc32-ada-addr2line.patch - 8 gcc32-ada-link.patch - 12 gcc32-attr-visibility.patch - 4 gcc32-attr-visibility2.patch - 4 gcc32-attr-visibility3.patch - 4 gcc32-attr-visibility4.patch - 4 gcc32-attr-visibility5.patch - 8 gcc32-boehm-gc-libs.patch - 4 gcc32-bogus-inline.patch - 4 gcc32-c++-nrv-test.patch - 4 gcc32-c++-pretty_function.patch - 16 gcc32-c++-tail-pad-backout.patch - 4 gcc32-c++-tsubst-asm.patch - 4 gcc32-cfg-eh.patch - 4 gcc32-debug-pr7241.patch - 4 gcc32-doc-gcov.patch - 4 gcc32-duplicate-decl.patch - 4 gcc32-dwarf2-pr6381.patch - 4 gcc32-dwarf2-pr6436-test.patch - 4 gcc32-fde-merge-compat.patch - 4 gcc32-fold-const-associate.patch - 4 gcc32-fold-const2.patch - 24 gcc32-hard-reg-sharing.patch - 4 gcc32-hard-reg-sharing2.patch - 4 gcc32-i386-default-momit-leaf-frame-pointer.patch - 4 gcc32-i386-memtest-test.patch - 4 gcc32-i386-no-default-momit-leaf-frame-pointer.patch - 4 gcc32-i386-pic-label-thunk.patch - 4 gcc32-i386-pr7242.patch - 4 gcc32-i386-profile-olfp.patch - 4 gcc32-inline-label.patch - 4 gcc32-interface_only.patch - 4 gcc32-java-no-rpath.patch - 20 gcc32-libstdc++-glibc23-1.patch - 4 gcc32-libstdc++-glibc23-2.patch - 4 gcc32-libstdc++-glibc23-3.patch - 4 gcc32-libstdc++-glibc23-4.patch - 4 gcc32-loop-prefetch.patch - 4 gcc32-pr6842.patch - 8 gcc32-rh69989.patch - 40 gcc32-s390-java.patch - 4 gcc32-sparc-sll1.patch - 4 gcc32-test-rh65771.patch - 8 gcc32-test-rotate.patch - 12 gcc32-tls-dwarf2.patch - 140 gcc32-tls.patch - 4 gcc32-tls2.patch - 4 gcc32-tls3.patch - 4 gcc32-tls4.patch - 4 gcc32-tls5.patch - 24 gcc32-tree-code.patch - 4 gcc32-trunc_int_for_mode.patch - 4 gcc32-typeof-asm.patch - 4 gcc32-x86_64-libiberty-pic.patch - 4 gcc32-x86_64-pr7559.patch - 4 gcc32-x86_64-q_regs_operand.patch - 4 gcc32-x86_64-rip-lowercase.patch - 4 libjava-cross.patch - 4 libtool-libs.patch - 4 libtool-mips.patch - ----------- gcc32.spec --------- - -%if %{_arch} != %{_build_arch} -%define cross_compile 1 -%else -%define cross_compile 0 -%endif -%{?_with_crosscompile: %{expand: %%define cross_compile 1}} - -%if %{cross_compile} -%define make_check 0 -%else -%define make_check 1 -%endif -%{?_without_check: %{expand: %%define make_check 0}} -%{?_with_check: %{expand: %%define make_check 1}} - -%define default 0 -%{?_with_default: %{expand: %%define default 1}} - -%define gcconly 0 -%{?_with_gcconly: %{expand: %%define gcconly 1}} - -%define DATE 20020903 -%define gcc_version 3.2 -%define gcc_release 7.1 -%ifarch %{ix86} alpha ia64 ppc -%define build_ada 1 -%else -%define build_ada 0 -%endif -%{?_without_ada: %{expand: %%define build_ada 0}} -%if %{cross_compile} -%define build_ada 0 -%endif -Summary: Various compilers (C, C++, Objective-C, Java, ...) -%if !%{gcconly} -Name: gcc -Version: 3.2 -Release: %{gcc_release} -%else -Name: gcc-%{gcc_version} -Version: %{gcc_release} -Release: 1 -%endif -Copyright: GPL -Group: Development/Languages -Source0: gcc-%{version}-%{DATE}.tar.bz2 -URL: http://gcc.gnu.org -BuildRoot: %{_tmppath}/%{name}-%{version}-root -BuildRequires: binutils >= 2.12.90.0.9-1 -BuildRequires: zlib-devel, gettext, dejagnu -# Make sure pthread.h doesn't contain __thread tokens -BuildRequires: glibc-devel >= 2.2.5-36.2 -%if %{build_ada} -# Ada requires Ada to build -BuildRequires: gcc-gnat >= 3.1, libgnat >= 3.1 -%endif -Requires: cpp = %{version}-%{release} -# Need .eh_frame ld optimizations -# Need proper visibility support -Requires: binutils >= 2.12.90.0.7-1 -# Make sure gdb will understand DW_FORM_strp -Conflicts: gdb < 5.1-2 -Requires: glibc-devel >= 2.2.5-36.2 -Requires: libgcc >= %{version}-%{release} -%if !%{gcconly} -Obsoletes: gcc3 -%endif -Prereq: /sbin/install-info - -Patch1: gcc32-2.96-RH-compat.patch -Patch2: gcc32-boehm-gc-libs.patch -Patch3: gcc32-bogus-inline.patch -Patch6: gcc32-fde-merge-compat.patch -Patch7: gcc32-attr-visibility.patch -Patch8: gcc32-attr-visibility2.patch -Patch9: gcc32-duplicate-decl.patch -Patch10: gcc32-trunc_int_for_mode.patch -Patch11: gcc32-sparc-sll1.patch -Patch12: gcc32-x86_64-q_regs_operand.patch -Patch13: gcc32-dwarf2-pr6381.patch -Patch14: gcc32-dwarf2-pr6436-test.patch -Patch15: gcc32-c++-pretty_function.patch -Patch16: gcc32-c++-tsubst-asm.patch -Patch18: gcc32-i386-memtest-test.patch -Patch19: gcc32-fold-const2.patch -Patch21: gcc32-ada-addr2line.patch -Patch22: gcc32-ada-link.patch -Patch23: gcc32-java-no-rpath.patch -Patch25: gcc32-s390-java.patch -Patch26: gcc32-test-rotate.patch -Patch27: gcc32-x86_64-libiberty-pic.patch -Patch29: gcc32-test-rh65771.patch -Patch30: gcc32-i386-default-momit-leaf-frame-pointer.patch -Patch31: gcc32-i386-pic-label-thunk.patch -Patch34: gcc32-pr6842.patch -Patch35: gcc32-tls.patch -Patch36: gcc32-i386-profile-olfp.patch -Patch37: gcc32-tree-code.patch -Patch38: gcc32-hard-reg-sharing.patch -Patch39: gcc32-hard-reg-sharing2.patch -Patch40: gcc32-c++-nrv-test.patch -Patch41: gcc32-debug-pr7241.patch -Patch42: gcc32-i386-pr7242.patch -Patch43: gcc32-cfg-eh.patch -Patch44: gcc32-attr-visibility3.patch -Patch45: gcc32-tls2.patch -Patch46: gcc32-fold-const-associate.patch -Patch47: gcc32-inline-label.patch -Patch48: gcc32-typeof-asm.patch -Patch50: gcc32-rh69989.patch -Patch51: gcc32-tls3.patch -Patch52: gcc32-tls4.patch -Patch54: gcc32-tls5.patch -Patch55: gcc32-tls-dwarf2.patch -Patch56: gcc32-x86_64-pr7559.patch -Patch57: gcc32-loop-prefetch.patch -Patch58: gcc32-doc-gcov.patch -Patch59: gcc32-attr-visibility4.patch -Patch60: gcc32-c++-tail-pad-backout.patch -Patch61: gcc32-attr-visibility5.patch -Patch62: gcc32-i386-no-default-momit-leaf-frame-pointer.patch -Patch64: gcc32-x86_64-rip-lowercase.patch -Patch65: gcc32-libstdc++-glibc23-1.patch -Patch66: gcc32-libstdc++-glibc23-2.patch -Patch67: gcc32-libstdc++-glibc23-3.patch -Patch68: gcc32-libstdc++-glibc23-4.patch -Patch69: gcc32-interface_only.patch - -%define _gnu %{nil} - -Patch10000: boehm-gc-mips.patch -Patch10001: boehm-gc-LINUX.patch -Patch10002: gcc-libffi-mips.patch - -Patch11000: gcc-mips-coff.patch -Patch11001: gcc-mips-file.patch -Patch11002: gcc-mips-ieee.patch -Patch11003: gcc-mips-return.patch -Patch11004: gcc-libstdc++-mips.patch -Patch11005: libtool-mips.patch - -Patch12000: gcc-libgcc.patch - -Patch13000: gcc-ppc-linux.patch -Patch13001: gcc-linux-crt.patch - -Patch14000: gcc-linux-atexit.patch -Patch14001: gcc-test-atexit.patch - -Patch15000: gcc-var.patch -Patch15001: gcc-copy.patch - -Patch16000: gcc-c++-template.patch -Patch16001: gcc-testsuite-c++.patch - -Patch17000: gcc-cross.patch -Patch17001: gcc-cross-bfd.patch -Patch17002: gcc-sizeof.patch -Patch17003: gcc-arch.patch - -Patch18000: libjava-cross.patch -Patch18001: gcc-gcj-cross.patch - -Patch19000: contrib-touch.patch - -Patch20000: libtool-libs.patch - -Patch21000: gcc-libstdc++-glibc-2.2.patch - -%description -The gcc package contains the GNU Compiler Collection version 3.2. -You'll need this package in order to compile C code. - -%package -n libgcc -Summary: GCC version 3.2 shared support library -Group: System Environment/Libraries - -%description -n libgcc -This package contains GCC shared support library which is needed -e.g. for exception handling support. - -%package c++ -Summary: C++ support for GCC -Group: Development/Languages -Requires: gcc = %{version}-%{release} -Requires: libstdc++ = %{version} -Requires: libstdc++-devel = %{version} -Obsoletes: gcc3-c++ - -%description c++ -This package adds C++ support to the GNU Compiler Collection. -It includes support for most of the current C++ specification, -including templates and exception handling. - -%package -n libstdc++ -Summary: GNU Standard C++ Library -Group: System Environment/Libraries -Obsoletes: libstdc++3 - -%description -n libstdc++ -The libstdc++ package contains a rewritten standard compliant GCC Standard -C++ Library. - -%package -n libstdc++-devel -Summary: Header files and libraries for C++ development -Group: Development/Libraries -Requires: libstdc++ = %{version}-%{release} -Obsoletes: libstdc++3-devel - -%description -n libstdc++-devel -This is the GNU implementation of the standard C++ libraries. This -package includes the header files and libraries needed for C++ -development. This includes rewritten implementation of STL. - -%package objc -Summary: Objective-C support for GCC -Group: Development/Languages -Requires: gcc = %{version}-%{release} -Requires: libobjc = %{version}-%{release} -Obsoletes: gcc3-objc - -%description objc -gcc-objc provides Objective-C support for the GCC. -Mainly used on systems running NeXTSTEP, Objective-C is an -object-oriented derivative of the C language. - -%package -n libobjc -Summary: Objective-C runtime -Group: System Environment/Libraries - -%description -n libobjc -This package contains Objective-C shared library which is needed to run -Objective-C dynamically linked programs. - -%package g77 -Summary: Fortran 77 support -Group: Development/Languages -Requires: gcc = %{version}-%{release} -Requires: libf2c = %{version}-%{release} -Prereq: /sbin/install-info -Obsoletes: gcc3-g77 - -%description g77 -The gcc-g77 package provides support for compiling Fortran 77 -programs with the GNU Compiler Collection. - -%package -n libf2c -Summary: Fortran 77 runtime -Group: System Environment/Libraries - -%description -n libf2c -This package contains Fortran 77 shared library which is needed to run -Fortran 77 dynamically linked programs. - -%package java -Summary: Java support for GCC -Group: Development/Languages -Requires: gcc = %{version}-%{release} -Requires: libgcj >= %{version}, libgcj-devel >= %{version} -Obsoletes: gcc3-java -Prereq: /sbin/install-info - -%description java -This package adds support for compiling Java(tm) programs and -bytecode into native code. - -%package -n libgcj -Summary: Java runtime library for gcc -Group: System Environment/Libraries -Requires: zip >= 2.1 -Obsoletes: gcc-libgcj -Obsoletes: libgcj3 -# Kaffe includes jar too -Conflicts: kaffe - -%description -n libgcj -The Java(tm) runtime library. You will need this package to run your Java -programs compiled using the Java compiler from GNU Compiler Collection (gcj). - -%package -n libgcj-devel -Summary: Libraries for Java development using GCC -Group: Development/Languages -Requires: zip >= 2.1, libgcj = %{version} -Obsoletes: libgcj3-devel - -%description -n libgcj-devel -The Java(tm) static libraries and C header files. You will need this -package to compile your Java programs using the GCC Java compiler (gcj). - -%package -n cpp -Summary: The C Preprocessor. -Group: Development/Languages -Prereq: /sbin/install-info -%ifarch ia64 -Obsoletes: gnupro -%endif - -%description -n cpp -Cpp is the GNU C-Compatible Compiler Preprocessor. -Cpp is a macro processor which is used automatically -by the C compiler to transform your program before actual -compilation. It is called a macro processor because it allows -you to define macros, abbreviations for longer -constructs. - -The C preprocessor provides four separate functionalities: the -inclusion of header files (files of declarations that can be -substituted into your program); macro expansion (you can define macros, -and the C preprocessor will replace the macros with their definitions -throughout the program); conditional compilation (using special -preprocessing directives, you can include or exclude parts of the -program according to various conditions); and line control (if you use -a program to combine or rearrange source files into an intermediate -file which is then compiled, you can use line control to inform the -compiler about where each source line originated). - -You should install this package if you are a C programmer and you use -macros. - -%package gnat -Summary: Ada 95 support for GCC -Group: Development/Languages -Requires: gcc = %{version}-%{release}, libgnat = %{version}-%{release} -Obsoletes: gnat-devel, gcc3-gnat -Prereq: /sbin/install-info - -%description gnat -GNAT is a GNU Ada 95 front-end to GCC. This package includes development tools, -the documents and Ada 95 compiler. - -%package -n libgnat -Summary: GNU Ada 95 runtime shared libraries -Group: System Environment/Libraries -Obsoletes: gnat libgnat3 - -%description -n libgnat -GNAT is a GNU Ada 95 front-end to GCC. This package includes shared libraries, -which are required to run programs compiled with the GNAT. - -%prep -%setup -q -n gcc-%{version}-%{DATE} -%patch1 -p0 -b .2.96-RH-compat~ -%patch2 -p0 -b .boehm-gc-libs~ -%patch3 -p0 -b .bogus-inline~ -%patch6 -p0 -b .fde-merge-compat~ -%patch7 -p0 -b .attr-visibility~ -%patch8 -p0 -b .attr-visibility2~ -%patch9 -p0 -b .duplicate-decl~ -%patch10 -p0 -b .trunc_int_for_mode~ -%patch11 -p0 -b .sparc-sll1~ -%patch12 -p0 -b .x86_64-q_regs_operand~ -%patch13 -p0 -b .dwarf2-pr6381~ -%patch14 -p0 -b .dwarf2-pr6436-test~ -%patch15 -p0 -b .c++-pretty_function~ -%patch16 -p0 -b .c++-tsubst-asm~ -%patch18 -p0 -b .i386-memtest-test~ -%patch19 -p0 -b .fold-const2~ -%patch21 -p0 -b .ada-addr2line~ -%patch22 -p0 -b .ada-link~ -%patch23 -p0 -b .java-no-rpath~ -%patch25 -p0 -b .s390-java~ -%patch26 -p0 -b .test-rotate~ -%patch27 -p0 -b .x86_64-libiberty-pic~ -%patch29 -p0 -b .test-rh65771~ -%patch30 -p0 -b .i386-default-momit-leaf-frame-pointer~ -%patch31 -p0 -b .i386-pic-label-thunk~ -%patch34 -p0 -b .pr6842~ -%patch35 -p0 -b .tls~ -%patch36 -p0 -b .i386-profile-olfp~ -%patch37 -p0 -b .tree-code~ -%patch38 -p0 -b .hard-reg-sharing~ -%patch39 -p0 -b .hard-reg-sharing2~ -%patch40 -p0 -b .c++-nrv-test~ -%patch41 -p0 -b .debug-pr7241~ -%patch42 -p0 -b .i386-pr7242~ -%patch43 -p0 -b .cfg-eh~ -%patch44 -p0 -b .attr-visibility3~ -%patch45 -p0 -b .tls2~ -%patch46 -p0 -b .fold-const-associate~ -%patch47 -p0 -b .inline-label~ -%patch48 -p0 -b .typeof-asm~ -%patch50 -p0 -b .rh69989~ -%patch51 -p0 -b .tls3~ -%patch52 -p0 -b .tls4~ -%patch54 -p0 -b .tls5~ -%patch55 -p0 -b .tls-dwarf2~ -%patch56 -p0 -b .x86_64-pr7559~ -%patch57 -p0 -b .loop-prefetch~ -%patch58 -p0 -b .doc-gcov~ -%patch59 -p0 -b .attr-visibility4~ -%patch60 -p0 -b .c++-tail-pad-backout~ -%patch61 -p0 -b .attr-visibility5~ -%patch62 -p0 -b .i386-no-default-momit-leaf-frame-pointer~ -%patch64 -p0 -b .x86_64-rip-lowercase~ -%patch65 -p0 -b .libstdc++-glibc23-1~ -%patch66 -p0 -b .libstdc++-glibc23-2~ -%patch67 -p0 -b .libstdc++-glibc23-3~ -%patch68 -p0 -b .libstdc++-glibc23-4~ -%patch69 -p0 -b .interface_only - -%patch10000 -p0 -b .mips -%patch10001 -p0 -b .LINUX -%patch10002 -p0 -b .mips -pushd boehm-gc -autoconf -popd -pushd libffi -autoconf -# Ignore the error from automake -automake --cygnus Makefile || : -popd - -%patch11000 -p0 -b .coff -%patch11001 -p0 -b .file -%patch11002 -p0 -b .ieee -%patch11003 -p0 -b .return -%patch11004 -p0 -b .mips -%patch11005 -p1 -b .mips - -%patch12000 -p0 -b .libgcc - -%patch13000 -p0 -b .ppc -%patch13001 -p0 -b .crt - -%patch14000 -p0 -b .order -%patch14001 -p0 -b .order - -%patch15000 -p0 -b .var -%patch15001 -p0 -b .copy - -%patch16000 -p0 -b .template -%patch16001 -p0 -b .template - -%patch17000 -p1 -b .cross -%patch17001 -p0 -b .cross-bfd -%patch17002 -p1 -b .sizeof -%patch17003 -p0 -b .arch -pushd gcc -autoheader -autoconf -popd -pushd fastjar -aclocal -autoconf -popd -pushd libffi -aclocal -autoconf -popd - -%patch18000 -p0 -b .cross -%patch18001 -p0 -b .build -pushd libjava -autoconf -automake --foreign Makefile -popd - -%patch19000 -p0 -b .touch - -%patch20000 -p0 -b .libs - -%patch21000 -p0 -b .glibc-2.2 -pushd libstdc++-v3 -autoconf -popd - -perl -pi -e 's/3\.2\.1/3.2/' gcc/version.c gcc/f/version.c gcc/ada/gnatvsn.ads -perl -pi -e 's/"%{gcc_version}"/"%{gcc_version} \(release\)"/' gcc/version.c -perl -pi -e 's/\((prerelease|experimental|release)\)/\(Red Hat Linux 8.0 %{version}-%{gcc_release}\)/' gcc/version.c gcc/f/version.c -perl -pi -e 's/\((prerelease|experimental|release)\)/\(%{version}-%{gcc_release}\)/' gcc/ada/gnatvsn.ads -perl -pi -e 's/#define GCCBUGURL.*$/#define GCCBUGURL ""/' gcc/system.h -# The version string is now longer than 32 bytes and the line containing it -# doesn't fit into 80 columns -#perl -pi -e 's/:= 32/:= 64/;s/(Gnat_Version_String.*:=)/\1\n /' gcc/ada/gnatvsn.ads - -./contrib/gcc_update --touch - -%build -rm -fr obj-%{_target_platform} -mkdir obj-%{_target_platform} -cd obj-%{_target_platform} - -%if %{_arch} != %{_build_arch} -%ifos linux -export ac_cv_func_mmap_anywhere=yes -export ac_cv_func_mmap_file=yes -export ac_cv_func_mmap_fixed_mapped=yes -export ac_cv_func_strncmp_works=yes -export gcc_cv_func_printf_ptr=yes -%endif -%endif - -DEFAULT_FLAGS= -%if %{default} -%ifarch %{ix86} -TARGET_CPU="%{_target_cpu}" -DEFAULT_FLAGS="--with-arch=$TARGET_CPU --with-cpu=$TARGET_CPU" -%endif -%endif - -CC=%{__cc} -OPT_FLAGS=`echo $RPM_OPT_FLAGS|sed -e 's/-fno-rtti//g' -e 's/-fno-exceptions//g'` -CC="$CC" CFLAGS="$OPT_FLAGS" CXXFLAGS="$OPT_FLAGS" XCFLAGS="$OPT_FLAGS" TCFLAGS="$OPT_FLAGS" \ - ../configure --prefix=%{_prefix} --mandir=%{_mandir} --infodir=%{_infodir} \ - --enable-shared --enable-threads=posix --disable-checking --host=%{_target_platform} \ - $DEFAULT_FLAGS \ -%if %{cross_compile} - --target=%{_target_platform} --build=%{_build_alias} \ -%endif - --with-system-zlib --enable-__cxa_atexit - -# We have to make sure all gcc configure files are up to date for -# parallel build. We have to do it twice due to the stupid Makefile. -make -C gcc cstamp-h -make -C gcc cstamp-h - -# if RPM_BUILD_NCPUS unset, set it -if [ -z "$RPM_BUILD_NCPUS" ] ; then - if [ -x /usr/bin/getconf ] ; then - RPM_BUILD_NCPUS=$(/usr/bin/getconf _NPROCESSORS_ONLN) - if [ $RPM_BUILD_NCPUS -eq 0 ]; then - RPM_BUILD_NCPUS=1 - fi - else - RPM_BUILD_NCPUS=1 - fi -fi - -RPM_BUILD_NCPUS=`expr $RPM_BUILD_NCPUS + $RPM_BUILD_NCPUS` - -cat < makefile -MAKE=make -j $RPM_BUILD_NCPUS -include Makefile -CFLAGS:=\$(CFLAGS) -pipe -CXXFLAGS:=\$(CXXFLAGS) -pipe -EOF - -# FIXME: It is a kludge. -export GCJFLAGS="$OPT_FLAGS" - -%if %{cross_compile} -make -j$RPM_BUILD_NCPUS \ - CC=%{__cc} \ - CXX=%{__cxx} \ - AR=%{__ar} \ - AS=%{__as} \ - LD=%{__ld} \ - NM=%{__nm} \ - RANLIB=%{__ranlib} \ - CC_FOR_TARGET=%{__cc} \ - GCC_FOR_TARGET=%{__cc} \ - CXX_FOR_TARGET=%{__cxx} \ - AR_FOR_TARGET=%{__ar} \ - AS_FOR_TARGET=%{__as} \ - LD_FOR_TARGET=%{__ld} \ - NM_FOR_TARGET=%{__nm} \ - RANLIB_FOR_TARGET=%{__ranlib} \ - HOST_CC=cc \ - CFLAGS_FOR_TARGET="$RPM_OPT_FLAGS -pipe" \ - CFLAGS_FOR_BUILD="-O -pipe" \ - CFLAGS="$RPM_OPT_FLAGS -pipe" \ - CXXFLAGS="$RPM_OPT_FLAGS -pipe" -%else -make -j$RPM_BUILD_NCPUS bootstrap-lean -#make -j$RPM_BUILD_NCPUS bootstrap -%endif - -%if %{build_ada} -# This doesn't work with -j$RPM_BUILD_NCPUS -make -C gcc gnatlib-shared -make -C gcc gnattools -make -C gcc/ada doc -%endif - -%if %{make_check} -# run the tests. -make -j$RPM_BUILD_NCPUS -k check || : -%ifarch %{ix86} -ln -sf i686-pc-linux-gnu ../libstdc++-v3/config/abi/%{_target_platform} -ln -sf i686-pc-linux-gnu ../libstdc++-v3/config/abi/%{_target_platform}-gnu -%endif -echo ====================TESTING========================= -( ../contrib/test_summary || : ) 2>&1 | sed -n '/^cat.*EOF/,/^EOF/{/^cat.*EOF/d;/^EOF/d;/^LAST_UPDATED:/d;p;}' -%ifarch %{ix86} -make -C %{_target_platform}/libstdc++-v3 check-abi -%endif -echo ====================TESTING END===================== -#cd %{_target_platform}/libstdc++-v3 -#./mkcheck 0 -#cd ../.. -%endif - -%if !%{cross_compile} -# Make protoize -make -C gcc CC="./xgcc -B ./ -O2" proto -%endif - -# Make generated man pages even if Pod::Man is not new enough -perl -pi -e 's/head3/head2/' ../contrib/texi2pod.pl -for i in ../gcc/doc/*.texi; do - cp -a $i $i.orig; sed 's/ftable/table/' $i.orig > $i -done -make -C gcc generated-manpages -for i in ../gcc/doc/*.texi; do mv -f $i.orig $i; done - -# Copy various doc files here and there -cd .. -mkdir -p rpm.doc/g77 rpm.doc/objc -mkdir -p rpm.doc/boehm-gc rpm.doc/fastjar rpm.doc/libffi rpm.doc/libjava - -(cd gcc/f; for i in ChangeLog*; do - cp -p $i ../../rpm.doc/g77/$i.f -done) -(cd libf2c; for i in ChangeLog*; do - cp -p $i ../rpm.doc/g77/$i.libf2c -done) -(cd gcc/objc; for i in README*; do - cp -p $i ../../rpm.doc/objc/$i.objc -done) -(cd libobjc; for i in README*; do - cp -p $i ../rpm.doc/objc/$i.libobjc -done) -(cd boehm-gc; for i in ChangeLog*; do - cp -p $i ../rpm.doc/boehm-gc/$i.gc -done) -(cd fastjar; for i in ChangeLog* README*; do - cp -p $i ../rpm.doc/fastjar/$i.fastjar -done) -(cd libffi; for i in ChangeLog* README* LICENSE; do - cp -p $i ../rpm.doc/libffi/$i.libffi -done) -(cd libjava; for i in ChangeLog* README*; do - cp -p $i ../rpm.doc/libjava/$i.libjava -done) - -%install -rm -fr $RPM_BUILD_ROOT - -perl -pi -e \ - 's~href="l(ibstdc|atest)~href="http://gcc.gnu.org/onlinedocs/libstdc++/l\1~' \ - libstdc++-v3/docs/html/documentation.html -ln -sf documentation.html libstdc++-v3/docs/html/index.html -find libstdc++-v3/docs/html -name CVS | xargs rm -rf - -cd obj-%{_target_platform} -TARGET_PLATFORM=%{_target_platform} - -# There are some MP bugs in libstdc++ and libjava Makefiles -make -C %{_target_platform}/libstdc++-v3 -make -C %{_target_platform}/libjava - -make prefix=$RPM_BUILD_ROOT%{_prefix} mandir=$RPM_BUILD_ROOT%{_mandir} \ -%if %{cross_compile} - CC=%{__cc} \ - CXX=%{__cxx} \ - AR=%{__ar} \ - AS=%{__as} \ - LD=%{__ld} \ - NM=%{__nm} \ - RANLIB=%{__ranlib} \ - CC_FOR_TARGET=%{__cc} \ - GCC_FOR_TARGET=%{__cc} \ - CXX_FOR_TARGET=%{__cxx} \ - AR_FOR_TARGET=%{__ar} \ - AS_FOR_TARGET=%{__as} \ - LD_FOR_TARGET=%{__ld} \ - NM_FOR_TARGET=%{__nm} \ - RANLIB_FOR_TARGET=%{__ranlib} \ - HOST_CC=cc \ - CFLAGS_FOR_TARGET="$RPM_OPT_FLAGS -pipe" \ - CFLAGS_FOR_BUILD="-O -pipe" \ - CFLAGS="$RPM_OPT_FLAGS -pipe" \ - CXXFLAGS="$RPM_OPT_FLAGS -pipe" \ -%endif - infodir=$RPM_BUILD_ROOT%{_infodir} install -%if %{build_ada} -pushd gcc/ada -cp -a gnat-style.info* gnat_rm.info* $RPM_BUILD_ROOT%{_infodir}/ -for i in gnat_ug_unx.info*; do - sed 's/gnat_ug_unx/gnat_ug/g' $i > $RPM_BUILD_ROOT%{_infodir}/`echo $i | sed 's/gnat_ug_unx/gnat_ug/'` -done -chmod 644 $RPM_BUILD_ROOT%{_infodir}/gnat* -popd -%endif - -FULLPATH=$(dirname $RPM_BUILD_ROOT%{_prefix}/lib/gcc-lib/%{_target_platform}/%{gcc_version}/cc1) - -file $RPM_BUILD_ROOT/%{_prefix}/bin/* | grep ELF | cut -d':' -f1 | xargs %{__strip} || : -%{__strip} $FULLPATH/{cc1,cc1obj,cc1plus,cpp0,tradcpp0,f771,jc1,jvgenmain} - -# fix some things -ln -sf gcc $RPM_BUILD_ROOT%{_prefix}/bin/cc -mkdir -p $RPM_BUILD_ROOT/lib -ln -sf ..%{_prefix}/bin/cpp $RPM_BUILD_ROOT/lib/cpp -ln -sf g77 $RPM_BUILD_ROOT%{_prefix}/bin/f77 -rm -f $RPM_BUILD_ROOT%{_infodir}/dir -gzip -9 $RPM_BUILD_ROOT%{_infodir}/*.info* -ln -sf gcc $RPM_BUILD_ROOT%{_prefix}/bin/gnatgcc - -mv $RPM_BUILD_ROOT%{_prefix}/lib/libgcj.*a $FULLPATH/ -sed 's/-lgcjgc//g;s/-lzgcj//g;s/-lpthread//g' $RPM_BUILD_ROOT%{_prefix}/lib/libgcj.spec > $FULLPATH/libgcj.spec -mv $RPM_BUILD_ROOT%{_prefix}/include/gc*.h $FULLPATH/include/ -mv $RPM_BUILD_ROOT%{_prefix}/include/j*.h $FULLPATH/include/ -mv -f $RPM_BUILD_ROOT%{_prefix}/include/{java,javax,gnu,org} $FULLPATH/include/ -mkdir -p $FULLPATH/include/gcj -mv -f $RPM_BUILD_ROOT%{_prefix}/include/gcj/* $FULLPATH/include/gcj/ -rmdir $RPM_BUILD_ROOT%{_prefix}/include/gcj - -mkdir -p $RPM_BUILD_ROOT/%{_lib} -mv -f `find $RPM_BUILD_ROOT%{_prefix}/lib -name libgcc_s.so.1` $RPM_BUILD_ROOT/%{_lib}/libgcc_s-%{gcc_version}-%{DATE}.so.1 -chmod 755 $RPM_BUILD_ROOT/%{_lib}/libgcc_s-%{gcc_version}-%{DATE}.so.1 -ln -sf libgcc_s-%{gcc_version}-%{DATE}.so.1 $RPM_BUILD_ROOT/%{_lib}/libgcc_s.so.1 -ln -sf ../../%{_lib}/libgcc_s.so.1 $RPM_BUILD_ROOT%{_prefix}/%{_lib}/libgcc_s.so -#ln -sf `echo "%{_prefix}" | sed 's~/[^/]*~\.\./~g'`../%{_lib}/libgcc_s.so.1 \ -# $RPM_BUILD_ROOT%{_prefix}/%{_lib}/libgcc_s.so -#mv -f $FULLPATH/libobjc.so.1* $RPM_BUILD_ROOT%{_prefix}/%{_lib}/ -%if %{build_ada} -mv -f $FULLPATH/adalib/libgnarl-*.so.* $RPM_BUILD_ROOT%{_prefix}/%{_lib}/ -mv -f $FULLPATH/adalib/libgnat-*.so.* $RPM_BUILD_ROOT%{_prefix}/%{_lib}/ -rm -f $FULLPATH/adalib/libgnarl.so* $FULLPATH/adalib/libgnat.so* -%endif -pushd $FULLPATH -if [ "%{_lib}" = "lib" ]; then -ln -sf ../../../libobjc.so.1 libobjc.so -ln -sf ../../../libstdc++.so.5.* libstdc++.so -ln -sf ../../../libgcj.so.3.* libgcj.so -ln -sf ../../../libg2c.so.0.* libg2c.so -%if %{build_ada} -cd adalib -ln -sf ../../../../libgnarl-*.so.* libgnarl.so -ln -sf ../../../../libgnat-*.so.* libgnat.so -cd .. -%endif -else -ln -sf ../../../../%{_lib}/libobjc.so.1 libobjc.so -ln -sf ../../../../%{_lib}/libstdc++.so.5.* libstdc++.so -ln -sf ../../../../%{_lib}/libgcj.so.3.* libgcj.so -ln -sf ../../../../%{_lib}/libg2c.so.0.* libg2c.so -%if %{build_ada} -cd adalib -ln -sf ../../../../../%{_lib}/libgnarl-*.so.* libgnarl.so -ln -sf ../../../../../%{_lib}/libgnat-*.so.* libgnat.so -cd .. -%endif -fi -mv -f $RPM_BUILD_ROOT%{_prefix}/lib/libstdc++.*a . -mv -f $RPM_BUILD_ROOT%{_prefix}/lib/libsupc++.*a . -mv -f $RPM_BUILD_ROOT%{_prefix}/lib/libg2c.*a . -mv -f $RPM_BUILD_ROOT%{_prefix}/lib/libfrtbegin.*a . -mv -f $RPM_BUILD_ROOT%{_prefix}/lib/libobjc.*a . -# Strip debug info from Fortran/ObjC/Java static libraries -%{__strip} -g libg2c.a libobjc.a libgcj.a -# Fix up .la files -for i in *.la; do - sed -e '/^libdir/s_%{_prefix}/lib_%{_prefix}/lib/gcc-lib/%{_target_platform}/%{gcc_version}_' \ - -e '/^dependency_libs/s_%{_prefix}/lib_%{_prefix}/lib/gcc-lib/%{_target_platform}/%{gcc_version}_' \ - -e '/^dependency_libs/s~'\''$~ '\''~' \ - -e '/^dependency_libs/s~[ ][ ]*~ ~g' \ - -e '/^dependency_libs/s~-L[^ ]* ~~g' \ - -e '/^dependency_libs/s~-lgcc_s -lgcc -lc -lgcc_s -lgcc ~~g' \ - -e '/^dependency_libs/s~-lgcc -lc -lgcc ~~g' \ - -e '/^dependency_libs/s~-lc ~~g' \ - -e '/^dependency_libs/s~-lm \(-lm \)*~-lm ~g' \ - $i > $i.tmp - mv -f $i.tmp $i -done -popd -chmod 755 $RPM_BUILD_ROOT%{_prefix}/lib/libg2c.so.0.* -chmod 755 $RPM_BUILD_ROOT%{_prefix}/lib/libobjc.so.1.* -%if %{build_ada} -chmod 755 $RPM_BUILD_ROOT%{_prefix}/lib/libgnarl*so* -chmod 755 $RPM_BUILD_ROOT%{_prefix}/lib/libgnat*so* -%endif - -cat > $RPM_BUILD_ROOT%{_prefix}/bin/c89 <<"EOF" -#!/bin/sh -fl="-std=c89" -for opt; do - case "$opt" in - -ansi|-std=c89|-std=iso9899:1990) fl="";; - -std=*) echo "`basename $0` called with non ANSI/ISO C option $opt" >&2 - exit 1;; - esac -done -exec %{_prefix}/bin/gcc $fl ${1+"$@"} -EOF -cat > $RPM_BUILD_ROOT%{_prefix}/bin/c99 <<"EOF" -#!/bin/sh -fl="-std=c99" -for opt; do - case "$opt" in - -std=c99|-std=iso9899:1999) fl="";; - -std=*) echo "`basename $0` called with non ISO C99 option $opt" >&2 - exit 1;; - esac -done -exec %{_prefix}/bin/gcc $fl ${1+"$@"} -EOF -chmod 755 $RPM_BUILD_ROOT%{_prefix}/bin/c?9 - -cd .. -%find_lang %{name} - -%if %{cross_compile} -# Install syslimits.h for canadian cross compile. -pushd $RPM_BUILD_DIR/gcc-%{gcc_version}-%{DATE}/obj-%{_target_platform} -cp -af ../gcc/gsyslimits.h $FULLPATH/include/syslimits.h -# Fix the specs file. -cat gcc/specs | -awk ' -BEGIN { - cross=0; -} -/cross_compile/ { print; cross = 1; next; } -/^1$/ { - if (cross == 0) { - print; - } - else { - cross = 0; - print "0"; - } - next; -} -{ print; } -' > $FULLPATH/specs -popd -%endif - -%clean -rm -rf $RPM_BUILD_ROOT - -%post -/sbin/install-info \ - --info-dir=%{_infodir} %{_infodir}/gcc.info.gz - -%preun -if [ $1 = 0 ]; then - /sbin/install-info --delete \ - --info-dir=%{_infodir} %{_infodir}/gcc.info.gz -fi - -%post -n cpp -/sbin/install-info \ - --info-dir=%{_infodir} %{_infodir}/cpp.info.gz - -%preun -n cpp -if [ $1 = 0 ]; then - /sbin/install-info --delete \ - --info-dir=%{_infodir} %{_infodir}/cpp.info.gz -fi - -%post g77 -/sbin/install-info \ - --info-dir=%{_infodir} %{_infodir}/g77.info.gz - -%preun g77 -if [ $1 = 0 ]; then - /sbin/install-info --delete \ - --info-dir=%{_infodir} %{_infodir}/g77.info.gz -fi - -%post java -/sbin/install-info \ - --info-dir=%{_infodir} %{_infodir}/gcj.info.gz - -%preun java -if [ $1 = 0 ]; then - /sbin/install-info --delete \ - --info-dir=%{_infodir} %{_infodir}/gcj.info.gz -fi - -%post gnat -/sbin/install-info \ - --info-dir=%{_infodir} %{_infodir}/gnat_rm.info.gz -/sbin/install-info \ - --info-dir=%{_infodir} %{_infodir}/gnat_ug.info.gz - -%preun gnat -if [ $1 = 0 ]; then - /sbin/install-info --delete \ - --info-dir=%{_infodir} %{_infodir}/gnat_rm.info.gz - /sbin/install-info --delete \ - --info-dir=%{_infodir} %{_infodir}/gnat_ug.info.gz -fi - -%post -n libgcc -p /sbin/ldconfig - -%postun -n libgcc -p /sbin/ldconfig - -%post -n libstdc++ -p /sbin/ldconfig - -%postun -n libstdc++ -p /sbin/ldconfig - -%post -n libobjc -p /sbin/ldconfig - -%postun -n libobjc -p /sbin/ldconfig - -%post -n libgcj -p /sbin/ldconfig - -%postun -n libgcj -p /sbin/ldconfig - -%post -n libf2c -p /sbin/ldconfig - -%postun -n libf2c -p /sbin/ldconfig - -%post -n libgnat -p /sbin/ldconfig - -%postun -n libgnat -p /sbin/ldconfig - -%files -f %{name}.lang -%defattr(-,root,root) -%{_prefix}/bin/cc -%{_prefix}/bin/c89 -%{_prefix}/bin/c99 -%{_prefix}/bin/gcc -%{_prefix}/bin/gcov -%if !%{cross_compile} -%{_prefix}/bin/protoize -%{_prefix}/bin/unprotoize -%endif -%{_prefix}/bin/%{_target_platform}-gcc -%{_mandir}/man1/gcc.1* -%{_mandir}/man1/gcov.1* -%{_infodir}/gcc* -%dir %{_prefix}/lib/gcc-lib -%dir %{_prefix}/lib/gcc-lib/%{_target_platform} -%dir %{_prefix}/lib/gcc-lib/%{_target_platform}/%{gcc_version} -%dir %{_prefix}/lib/gcc-lib/%{_target_platform}/%{gcc_version}/include -%{_prefix}/lib/gcc-lib/%{_target_platform}/%{gcc_version}/include/stddef.h -%{_prefix}/lib/gcc-lib/%{_target_platform}/%{gcc_version}/include/stdarg.h -%{_prefix}/lib/gcc-lib/%{_target_platform}/%{gcc_version}/include/varargs.h -%{_prefix}/lib/gcc-lib/%{_target_platform}/%{gcc_version}/include/float.h -%{_prefix}/lib/gcc-lib/%{_target_platform}/%{gcc_version}/include/limits.h -%{_prefix}/lib/gcc-lib/%{_target_platform}/%{gcc_version}/include/stdbool.h -%{_prefix}/lib/gcc-lib/%{_target_platform}/%{gcc_version}/include/iso646.h -%{_prefix}/lib/gcc-lib/%{_target_platform}/%{gcc_version}/include/syslimits.h -%ifarch %{ix86} x86_64 -%{_prefix}/lib/gcc-lib/%{_target_platform}/%{gcc_version}/include/mmintrin.h -%{_prefix}/lib/gcc-lib/%{_target_platform}/%{gcc_version}/include/xmmintrin.h -%endif -%ifarch ia64 -%{_prefix}/lib/gcc-lib/%{_target_platform}/%{gcc_version}/include/ia64intrin.h -%endif -%ifarch ppc -%{_prefix}/lib/gcc-lib/%{_target_platform}/%{gcc_version}/include/ppc-asm.h -%{_prefix}/lib/gcc-lib/%{_target_platform}/%{gcc_version}/include/altivec.h -%endif -%{_prefix}/lib/gcc-lib/%{_target_platform}/%{gcc_version}/include/README -%{_prefix}/lib/gcc-lib/%{_target_platform}/%{gcc_version}/cc1 -%{_prefix}/lib/gcc-lib/%{_target_platform}/%{gcc_version}/collect2 -%{_prefix}/lib/gcc-lib/%{_target_platform}/%{gcc_version}/crt*.o -%{_prefix}/lib/gcc-lib/%{_target_platform}/%{gcc_version}/libgcc.a -%{_prefix}/lib/gcc-lib/%{_target_platform}/%{gcc_version}/libgcc_eh.a -%{_prefix}/lib/gcc-lib/%{_target_platform}/%{gcc_version}/specs -%{_prefix}/%{_lib}/libgcc_s.so -%doc gcc/README* gcc/*ChangeLog* - -%if !%{gcconly} -%files -n cpp -%defattr(-,root,root) -/lib/cpp -%endif -%{_prefix}/bin/cpp -%{_mandir}/man1/cpp.1* -%{_infodir}/cpp* -%dir %{_prefix}/lib/gcc-lib -%dir %{_prefix}/lib/gcc-lib/%{_target_platform} -%dir %{_prefix}/lib/gcc-lib/%{_target_platform}/%{gcc_version} -%{_prefix}/lib/gcc-lib/%{_target_platform}/%{gcc_version}/cpp0 -%{_prefix}/lib/gcc-lib/%{_target_platform}/%{gcc_version}/tradcpp0 - -%files -n libgcc -%defattr(-,root,root) -/%{_lib}/libgcc_s-%{gcc_version}-%{DATE}.so.1 -/%{_lib}/libgcc_s.so.1 - -%if !%{gcconly} -%files c++ -%defattr(-,root,root) -%{_prefix}/bin/%{_target_platform}-*++ -%{_prefix}/bin/g++ -%{_prefix}/bin/c++ -%{_prefix}/bin/c++filt -%{_mandir}/man1/g++.1* -%dir %{_prefix}/lib/gcc-lib -%dir %{_prefix}/lib/gcc-lib/%{_target_platform} -%dir %{_prefix}/lib/gcc-lib/%{_target_platform}/%{gcc_version} -%{_prefix}/lib/gcc-lib/%{_target_platform}/%{gcc_version}/cc1plus -%doc gcc/cp/ChangeLog* - -%files -n libstdc++ -%defattr(-,root,root) -%{_prefix}/%{_lib}/libstdc++.so.5* - -%files -n libstdc++-devel -%defattr(-,root,root) -%{_prefix}/include/c++ -%{_prefix}/lib/gcc-lib/%{_target_platform}/%{gcc_version}/libstdc++.so -%{_prefix}/lib/gcc-lib/%{_target_platform}/%{gcc_version}/libstdc++.a -%{_prefix}/lib/gcc-lib/%{_target_platform}/%{gcc_version}/libsupc++.a -%doc libstdc++-v3/ChangeLog* libstdc++-v3/README* libstdc++-v3/docs/html/ - -%files objc -%defattr(-,root,root) -%dir %{_prefix}/lib/gcc-lib -%dir %{_prefix}/lib/gcc-lib/%{_target_platform} -%dir %{_prefix}/lib/gcc-lib/%{_target_platform}/%{gcc_version} -%dir %{_prefix}/lib/gcc-lib/%{_target_platform}/%{gcc_version}/include -%{_prefix}/lib/gcc-lib/%{_target_platform}/%{gcc_version}/include/objc -%{_prefix}/lib/gcc-lib/%{_target_platform}/%{gcc_version}/cc1obj -%{_prefix}/lib/gcc-lib/%{_target_platform}/%{gcc_version}/libobjc.a -%{_prefix}/lib/gcc-lib/%{_target_platform}/%{gcc_version}/libobjc.so -%doc rpm.doc/objc/* -%doc libobjc/THREADS* libobjc/ChangeLog - -%files -n libobjc -%defattr(-,root,root) -%{_prefix}/%{_lib}/libobjc.so.1* - -%files g77 -%defattr(-,root,root) -%{_prefix}/bin/g77 -%{_prefix}/bin/f77 -%{_mandir}/man1/g77.1* -%{_infodir}/g77* -%dir %{_prefix}/lib/gcc-lib -%dir %{_prefix}/lib/gcc-lib/%{_target_platform} -%dir %{_prefix}/lib/gcc-lib/%{_target_platform}/%{gcc_version} -%dir %{_prefix}/lib/gcc-lib/%{_target_platform}/%{gcc_version}/include -%{_prefix}/lib/gcc-lib/%{_target_platform}/%{gcc_version}/f771 -%{_prefix}/lib/gcc-lib/%{_target_platform}/%{gcc_version}/libfrtbegin.a -%{_prefix}/lib/gcc-lib/%{_target_platform}/%{gcc_version}/libg2c.a -%{_prefix}/lib/gcc-lib/%{_target_platform}/%{gcc_version}/libg2c.so -%{_prefix}/lib/gcc-lib/%{_target_platform}/%{gcc_version}/include/g2c.h -%doc gcc/f/README rpm.doc/g77/* - -%files -n libf2c -%defattr(-,root,root) -%{_prefix}/%{_lib}/libg2c.so.0* - -%files java -%defattr(-,root,root) -%{_prefix}/bin/gcj -%{_prefix}/bin/gcjh -%{_prefix}/bin/jcf-dump -%{_prefix}/bin/jv-scan -%{_mandir}/man1/gcj.1* -%{_mandir}/man1/gcjh.1* -%{_mandir}/man1/jcf-dump.1* -%{_mandir}/man1/jv-scan.1* -%{_infodir}/gcj* -%dir %{_prefix}/lib/gcc-lib -%dir %{_prefix}/lib/gcc-lib/%{_target_platform} -%dir %{_prefix}/lib/gcc-lib/%{_target_platform}/%{gcc_version} -%{_prefix}/lib/gcc-lib/%{_target_platform}/%{gcc_version}/jc1 -%{_prefix}/lib/gcc-lib/%{_target_platform}/%{gcc_version}/jvgenmain -%doc gcc/java/ChangeLog* - -%files -n libgcj -%defattr(-,root,root) -%{_prefix}/bin/jv-convert -%{_prefix}/bin/gij -%{_prefix}/bin/jar -%{_prefix}/bin/grepjar -%{_prefix}/bin/rmic -%{_prefix}/bin/rmiregistry -%{_mandir}/man1/jv-convert.1* -%{_mandir}/man1/gij.1* -%{_mandir}/man1/rmic.1* -%{_mandir}/man1/rmiregistry.1* -%{_prefix}/%{_lib}/libgcj.so.* -%{_prefix}/share/java -%{_prefix}/lib/security - -%files -n libgcj-devel -%defattr(-,root,root) -%{_prefix}/bin/addr2name.awk -%{_prefix}/lib/gcc-lib/%{_target_platform}/%{gcc_version}/libgcj.a -%{_prefix}/lib/gcc-lib/%{_target_platform}/%{gcc_version}/libgcj.so -%{_prefix}/lib/gcc-lib/%{_target_platform}/%{gcc_version}/libgcj.spec -%{_prefix}/lib/gcc-lib/%{_target_platform}/%{gcc_version}/include/gc*.h -%{_prefix}/lib/gcc-lib/%{_target_platform}/%{gcc_version}/include/j*.h -%{_prefix}/lib/gcc-lib/%{_target_platform}/%{gcc_version}/include/java -%{_prefix}/lib/gcc-lib/%{_target_platform}/%{gcc_version}/include/javax -%{_prefix}/lib/gcc-lib/%{_target_platform}/%{gcc_version}/include/gnu -%{_prefix}/lib/gcc-lib/%{_target_platform}/%{gcc_version}/include/gcj -%{_prefix}/lib/gcc-lib/%{_target_platform}/%{gcc_version}/include/org -%doc rpm.doc/boehm-gc/* rpm.doc/fastjar/* rpm.doc/libffi/* -%doc rpm.doc/libjava/* - -%if %{build_ada} -%files gnat -%defattr(-,root,root) -%{_prefix}/bin/gnat* -%{_infodir}/gnat* -%dir %{_prefix}/lib/gcc-lib -%dir %{_prefix}/lib/gcc-lib/%{_target_platform} -%dir %{_prefix}/lib/gcc-lib/%{_target_platform}/%{gcc_version} -%{_prefix}/lib/gcc-lib/%{_target_platform}/%{gcc_version}/adainclude -%{_prefix}/lib/gcc-lib/%{_target_platform}/%{gcc_version}/adalib -%{_prefix}/lib/gcc-lib/%{_target_platform}/%{gcc_version}/gnat1 -%doc gcc/ada/ChangeLog - -%files -n libgnat -%defattr(-,root,root) -%{_prefix}/%{_lib}/libgnat-*.so.* -%{_prefix}/%{_lib}/libgnarl-*.so.* -%endif -%endif - -%changelog -* Tue Sep 3 2002 Bill Nottingham 3.2-7 -- fix calling of C++ destructors in certain cases - -* Tue Sep 3 2002 Jakub Jelinek 3.2-6 -- update from CVS (but revert C++ tail padding patches - for now) -- further fixes to make libstdc++-v3 build on glibc 2.3 -- run libstdc++-v3 make check-abi on IA-32 during testing - -* Fri Aug 30 2002 Jakub Jelinek 3.2-5 -- disable tail copy patches, they seem to still have problems -- make libstdc++-v3 build on glibc 2.3 (and use thread-local - locale model) -- fix c89 and c99 scripts (#73104) - -* Wed Aug 26 2002 Jakub Jelinek 3.2-4 -- reorder alpha_encode_section_info checks slightly to fix an ICE - when building glibc and to take better advantage of visibility - attribute on Alpha -- as gdb is not there yet, disable -momit-leaf-frame-pointer - by default for now on IA-32 -- fix IA-64 bootstrap with tail padding patch (Jason Merrill, Daniel Berlin) -- fix x86-64 %RIP to %rip, only output (%rip) if no other relocation - is used (Richard Henderson) - -* Fri Aug 23 2002 Jakub Jelinek 3.2-3 -- take advantage of __attribute__((visibility())) on Alpha -- avoid copying tail padding (Jason Merrill) - -* Thu Aug 22 2002 Jakub Jelinek 3.2-2 -- fixed Dwarf2 DW_OP_GNU_push_tls_address patch from Richard Henderson -- don't mention removed -a and -ax options in the documentation - (Nathan Sidwell, #72233) -- fixed __typeof() followed by __asm() redirection from Alexandre Oliva - -* Wed Aug 14 2002 Jakub Jelinek 3.2-1 -- update to 3.2 release -- fix x86-64 PR target/7559 (Jan Hubicka) -- fix -fprefetch-loop-arrays (Janis Johnson) -- fix x86-64 prefetch (Jan Hubicka) - -* Fri Aug 9 2002 Jakub Jelinek 3.2-0.3 -- istream fix (Benjamin Kosnik) -- emit Dwarf2 DW_OP_GNU_push_tls_address extension for TLS (Richard Henderson) -- temporarily disable __typeof() + __asm() fix - -* Thu Aug 8 2002 Jakub Jelinek 3.2-0.2 -- update from 3.2 branch - - ABI incompatible changes in libstdc++.so.5, long long bitfield - layout on IA-32 (both C and C++), oversized bitfields layout - on IA-32 and bitfields with base type with __attribute__((aligned ())) - - fix strstream segfaults (#68292, Benjamin Kosnik) -- fix __attribute__((visibility())) together with __asm__() - function redirection -- fix __typeof() followed by __asm() redirection (Alexandre Oliva) -- fix TLS ICE on glibc (#70061) -- fix K6 ICE on linux kernel (#69989, Richard Sandiford, Jan Hubicka) -- fix inlining bug with labels (#70941) -- fix fold-const bug (#70541) -- fix PR preprocessor/7358 (Neil Booth) -- error when mixing __thread and non-__thread declarations - (#70059, Aldy Hernandez) -- fix TLS bug on g++.dg/tls/diag-1.C (Jason Merrill) -- add -mcmodel= x86-64 documentation (Andreas Jaeger) -- avoid TLS emitting movl %gs:0, MEMORY on IA-32 (#71033) - -* Mon Jul 22 2002 Jakub Jelinek 3.2-0.1 -- first attempt for gcc 3.2 -- remove .la files - -* Sat Jul 20 2002 Jakub Jelinek 3.1-10 -- update from 3.1 branch - - add throw() to set_new_handler (Andreas Schwab) - - fixed PR optimization/7147, optimization/7153 -- make sure pic register is set up even when the only @PLT calls - are done in EH basic blocks (Richard Henderson) - -* Sun Jul 14 2002 Jakub Jelinek 3.1-9 -- define %%_gnu to nothing for compatibility - -* Sat Jul 13 2002 Jakub Jelinek 3.1-8 -- update from 3.1 branch - - fix OpenOffice miscompilation (PR c++/7279, Jason Merrill) - - PRs c++/7224, c++/6255, optimization/7145, c++/6706, preprocessor/7070, - middle-end/6963, target/6841, target/6770, target/6719, - other/6836, libstdc++/7057, libstdc++/7097, libstdc++/3946, - libstdc++/7173 - - fix a GC bug with named labels in C++ (Jim Wilson) - - fix ICE on Mesa (Bernd Schmidt, #65771) -- added some NRV tests -- fix typo in i386 specs (PR c/7242) -- fix IA-32 ICE with shifts by negative values followed by compare - (PR middle-end/7245, #68395) -- fixed DWARF-2 output for const char * (PR debug/7241) -- actually enable __cxa_atexit for standard compliance at configury time -- added PPC as Ada enabled architecture - -* Wed Jun 19 2002 Jakub Jelinek 3.1-7 -- update from 3.1 branch - - PRs target/6922, opt/6722, c/7030, c/6677, objc/6834, c++/6892, - c++/6723, opt/6793 -- use __cxa_atexit for standard compliance: - if your C++ project knows it won't call atexit from within its - static constructors, use -fno-use-cxa-atexit to optimize it -- share hard register rtxs where possible to speed the compiler up (Jeff Law) -- optimize tree_code_* arrays (Kaveh Ghazi) -- don't link prefix.o into libgnat, link libgnat against libgcc_s and - libgnarl against libgnat -- fix typo in GNAT %%post (#66847, #66941, #66639) -- add TLS support - -* Fri Jun 7 2002 Jakub Jelinek 3.1-6 -- add GNAT -- remove DT_RPATH from Java binaries (#66103) -- obsolete kaffe, install jar as %{_prefix}/bin/jar -- add include/org directory in java -- add rmic and rmiregistry programs to libgcj -- add info documentation for gcj and various man pages -- add message catalogues for da, el, es, fr, ja, nl, sv, tr -- don't put IA-64 vtables with relocations into read-only sections - with -fpic - -* Tue Jun 4 2002 Jakub Jelinek 3.1-5 -- update from 3.1 branch - - PRs optimization/6822, preprocessor/6844, target/6838, target/6788, - libstdc++/6886, libstdc++/6795, libstdc++/6811 -- m$ compatibility for unnamed fields as typedef of struct/union - (PR c/6660) -- fix -fverbose-asm with unnamed fields (PR c/6809) -- fix -mmmx ICE (PR optimization/6842) -- default to -momit-leaf-frame-pointer on i386 (Richard Henderson) -- use linkonce section/hidden symbol for i686 pic getpc thunks - (Richard Henderson) - -* Tue May 28 2002 Jakub Jelinek 3.1-4 -- rebuilt - -* Sat May 25 2002 Jakub Jelinek 3.1-3 -- update from 3.1 branch - - PRs other/6782, preprocessor/6780, preprocessor/6517, - libstdc++/6282, libstdc++/6701, libstdc++/6701 - - fix out << "" bug (Ben Kosnik, #65409, PR libstdc++/6750) -- 3 new patches - - fix C++ __PRETTY_FUNCTION__ (PR c++/6794) - - fix ICE on jikes (#65379) - - add test for fixed mozilla miscompilation -- include intrinsic headers on IA-32/x86-64, include altivec.h on PPC - -* Wed May 22 2002 Jakub Jelinek 3.1-2 -- update from 3.1 branch -- 8 new patches - - fix as version test for 2.12.1 and newer binutils non-CVS releases - - fix ICE in do_subst (#65049) - - fix SSE conditional move (PR target/6753) - - fix SPARC CSE ICE (PR optimization/6759) - - fix x86_64 dbx64_register_map typo (Jan Hubicka) - - fix DWARF-2 with flag_asynchronous_unwind_tables set for leaf - functions (Jan Hubicka) - - fix DWARF-2 x86_64 __builtin_dwarf_reg_sizes (Jan Hubicka) - - fix x86_64 movabsdi (Michael Matz) - -* Wed May 15 2002 Jakub Jelinek 3.1-1 -- update to 3.1 final -- 15 new patches - - fix PR c/6643 - - fix fold-const.c typo - - fix unitialized pointer-to-member values (Alexandre Oliva) - - fix templates with asm inputs (Jason Merrill) - - fix -fdata-section (Andreas Schwab) - - readd warning about i386 -malign-double into documentation (Jan Hubicka) - - fix PR libstdc++/6594 (Ben Kosnik) - - fix PR PR libstdc++/6648 (Paolo Carlini) - - fix libstdc++ testsuite rlimits (Rainer Orth) - - s390 java support (Gerhard Tonn) - - rotate testcases (Tom Rix) - - build libiberty with -fpic on x86_64 (Andreas Schwab) - - fix x86_64 multilib build (Bo Thorsen) - - fix x86_64 ASM_OUTPUT_MI_THUNK (Jan Hubicka) - - fix loop-2[cd].c tests on i386 (Eric Botcazou) -- fix typo in g77 info files tweaking -- fix libgcj.so symlink - -* Thu May 9 2002 Jakub Jelinek 3.1-0.28 -- update to CVS 3.1 branch - - PR c++/6212, target/6429, opt/6534, c/6543, target/6561, c/6569 -- fix x86_64 q_regs_operand (Jan Hubicka) -- better PR c++/6381 fix (Jason Merrill) - -* Fri May 3 2002 Jakub Jelinek 3.1-0.27 -- update to CVS 3.1 branch - - PR target/5628, libstdc++/5820, c++/6396, preprocessor/6489, - libstdc++/6501, libstdc++/6511, target/6512, libstdc++/6513, - bootstrap/6514, opt/6516, bootstrap/6525, c++/6527, libstdc++/6533, - target/6540 -- fix PR target/6542, target/6522, libstdc++/6549 - -* Mon Apr 29 2002 Jakub Jelinek 3.1-0.26 -- update to CVS 3.1 branch - - PR c/3581, libstdc++/4150, libstdc++/4164, c/5154, c/5430, c++/5504, - c++/5658, c++/5719, f/6138, libgcj/6158, middle-end/6205, c++/6256, - c/6300, c++/6331, c/6343, c/6344, c++/6352, c/6358, libstdc++/6360, - c++/6395, target/6413, libstdc++/6414, target/6422, bootstrap/6445, - optimization/6475, target/6476, c++/6477, c++/6479, c++/6486, c++/6492, - target/6494, target/6496, c/6497, target/6500 -- fix PR c++/6396 -- run make check as part of build process - -* Thu Apr 18 2002 Jakub Jelinek 3.1-0.25 -- update to CVS 3.1 branch - - PR opt/420, c++/525, target/817, target/1538, opt/3967, target/3997, - opt/4120, bootstrap/4191, opt/4311, optimization/4328, c++/4884, c++/4934, - c/5078, c++/5104, opt/5120, c++/5189, c++/5373, target/5446, c/5484, - c++/5507, c++/5571, c++/5636, target/5672, target/5715, target/5886, - c++/5933, c++/5964, c++/5998, opt/6007, target/6032, target/6041, - target/6054, c++/6073, target/6082, optimization/6086, target/6087, - middle-end/6096, middle-end/6098, middle-end/6099, middle-end/6100, - middle-end/6102, fortran/6106, c++/6119, opt/6165, optimization/6177, - c++/6179, optimization/6189, c/6202, c/6223, optimization/6233, - middle-end/6279, c/6290, optimization/6305, target/6305, bootstrap/6315, - c++/6320... -- fix PR c++/6316 - -* Wed Mar 27 2002 Jakub Jelinek 3.1-0.24 -- update to CVS 3.1 branch - - PRs c/5656, c/5972, bootstrap/4192, target/4792, bootstrap/4195, - optimization/5854, target/6043, c++/6037, bootstrap/4128, target/5740, - c/5597, optimization/5863, optimization/5742, target/3177, c/5354, - optimization/5999, target/5977, middle-end/5731, target/5312... - -* Fri Mar 15 2002 Jakub Jelinek 3.1-0.23.1 -- fix info and man page generation - -* Thu Mar 14 2002 Jakub Jelinek 3.1-0.23 -- update to CVS 3.1 branch - - fix IA-64 packet selection (PR optimization/5892) - - make highest_pow2_factor work for all constants (PR middle-end/5877) - - fix -Wunused (#61047) - - fix loop on mixed mode class assignments (#60923) - - fix wide character literals - - support SPARC v9 long distance branches (PR target/5626) - - fix SPARC leaf functions - - fix a rtl sharing problem (Richard Henderson, #60760, - PR optimization/5844) - - fix va_arg with variable size types (PR c/3711) - - PRs optimization/5901, optimization/5878, 5693, preprocessor/5899 -- fix C++ ?: at the end of stmt expr (PR c++/5373) -- fix loop unrolling with sibcalls (PR optimization/5891) - -* Thu Mar 7 2002 Jakub Jelinek 3.1-0.22 -- update to CVS 3.1 branch - - fix ICE with volatile long long (#60650) - - fix tempbuf.h (Philipp Thomas, #60212) - - fix -fssa-ccp (Jeff Law, #60651) - - versioned libstdc++ - - backport __attribute__((visibility("..."))) patches from trunk -- include libstdc++ html documentation - -* Tue Feb 5 2002 Jakub Jelinek 3.1-0.21 -- update to CVS HEAD - - fix demangler (H.J. Lu, #59300, #59310) - - fix typo in IA-32 specs file (#59081) - - support moving SFmode values in MMX regs if -mmmx (#59083) - - fix recog_for_combine (#59084) - - don't ICE when inserting insns on edge from bb0 to bb0 (Bernd Schmidt, - #59087) - - make sure configure has not time in the future (#59203) - - fix division/modulo by certain constants (#58065, PR c/5304) - - fix -Wswitch (PR c/4475) - -* Thu Jan 31 2002 Jakub Jelinek 3.1-0.20 -- update to CVS HEAD - - fix jar (Tom Tromey) - - fix loop unrolling (Richard Henderson) - -* Wed Jan 30 2002 Jakub Jelinek 3.1-0.19 -- update to CVS HEAD - - fix a reload bug on ia32 (#58579, #58648) - - issue error about unknown -W* options (#58909) - - fix ia64 libbfd miscompilation (#58694) - - register all pending unparsed_text structures with GC (#58647) - - fix __builtin_apply with ia32 -msse (#58447) - - prevent ia64 prologue insns saving regs required for eh from being - deleted (#58387) - -* Tue Jan 15 2002 Jakub Jelinek 3.1-0.18 -- update to CVS HEAD - - handle static x[] = { [X...Y] = (foo) { Z } } (#58338) - - fix getdents.os miscompilation (Richard Henderson, #58308) - - fix ICE in try_forward_edges (#58125) - - fix ICE with -fexceptions -foptimize-sibling-calls - -* Tue Jan 8 2002 Jakub Jelinek 3.1-0.17 -- avoid division by 0 when computing prediction probabilities (#57992) -- fix ICE due to store_expr not adjusting value back for mode -- increase -ftemplate-depth default value to 500 - -* Mon Jan 7 2002 Jakub Jelinek 3.1-0.16 -- if using PT_GNU_EH_FRAME registry, work around assembler bug resp. feature - and don't provide weak prototypes of functions which won't be used -- on Alpha, fix a typo so that crtbeginT.o is built and installed -- fix glibc inl-tester miscompilation on ia32 - -* Sun Jan 6 2002 Jakub Jelinek 3.1-0.15 -- update to CVS HEAD (fix glibc bootstrap failure) - -* Thu Jan 3 2002 Jakub Jelinek 3.1-0.14 -- update to CVS HEAD (#57907) - - fix alpha bootstrap (Richard Henderson) -- fix simplification of (div:SI (???:DI ???) (const_int 1)) - (#57916) -- add contrib/gcc_update --touch - -* Tue Jan 1 2002 Jakub Jelinek 3.1-0.13 -- update to CVS HEAD (fix glibc miscompilation on alpha) -- fix objc to not emit __objc_class_name_* without type and size - -* Mon Dec 31 2001 Jakub Jelinek 3.1-0.12 -- update to CVS HEAD -- fix sed commands for .la files -- make Alpha use PT_GNU_EH_FRAME - -* Thu Dec 27 2001 Jakub Jelinek 3.1-0.11 -- update to CVS HEAD (#57165, #57212, #57467, #57488, #57502, - #57505, #57574) -- readd .la files after fixing them up by sed -- add %%defattr(-,root,root) to libobjc subpackage - -* Mon Dec 3 2001 Jakub Jelinek 3.1-0.10 -- one more gcc.spec fix for passing --gdwarf-2 resp. --gstabs to as -- fix conditional register dead computation on IA-64 -- fix extern array of incomplete structures handling -- fix gcc -xc - -- fix Fortran ICEs with SAVE_EXPRs (Richard Kenner) - -* Tue Nov 27 2001 Jakub Jelinek 3.1-0.9 -- update to CVS HEAD -- make DWARF 2 preferred debugging format on Linux - -* Mon Nov 12 2001 Jakub Jelinek 3.1-0.8 -- don't ship .la files (#56072) -- include libfrtbegin.a (#56098) - -* Mon Nov 12 2001 Jakub Jelinek 3.1-0.7 -- update to CVS HEAD -- back out Nov 7th loop.c change for now - -* Fri Nov 9 2001 Jakub Jelinek 3.1-0.6 -- update to CVS HEAD -- frame unwind compatibility with 7.[12] binutils - -* Tue Nov 6 2001 Jakub Jelinek 3.1-0.5 -- update to CVS HEAD -- merge DW_EH_PE_indirect constants and their relocs - -* Thu Oct 25 2001 Jakub Jelinek 3.1-0.4 -- don't loop forever or ICE on bogus array initializers (#53704) -- fix store motion with pure calls -- disable store motion for now - -* Tue Oct 23 2001 Jakub Jelinek 3.1-0.3 -- fix inlining of C nested functions with auto prototypes - -* Mon Oct 22 2001 Jakub Jelinek 3.1-0.2 -- update to CVS HEAD -- tree inlining fix from Alexandre Oliva -- fix anonymous union ICE on alpha - -* Mon Oct 15 2001 Jakub Jelinek 3.1-0.1 -- switch package to main compiler from alternate compiler -- update to CVS HEAD -- early gcc-2.96-RH compatibility in __frame_state_for -- change weak function tests for functions always present in GLIBC 2.2 - into simple non-weak calls in crt*.o to avoid unnecessary symbol - lookups and prelink conflicts -- don't link against libgcc_s C shared libraries - -* Tue Oct 2 2001 Jakub Jelinek 3.0.1-4 -- update from CVS 3.0 branch - - ia64 function descriptors in vtables -- handle large files in Fortran (#53328) -- allow Java programs to be statically linked (#53605) -- remove #include_next patch, Benjamin commited it - -* Thu Sep 6 2001 Jakub Jelinek 3.0.1-3 -- don't use #include_next in headers (Benjamin Kosnik, #53262) - -* Wed Sep 5 2001 Jakub Jelinek 3.0.1-2 -- update from CVS 3.0 branch -- check all gcc-2.96-RH patches whether they have made it into 3.0.1, - and if not, whether they are appropriate for 3.0.1 -- 8 new patches - - add 36 testcases from gcc-2.96-RH - - fix ICE on very questionable C++ code from JDK (#39858, #52960) - - fix -frepo (Nathan Sidwell, #52877) - - avoid generating bogus .stabs (#49214) - - issue a clear error message about invalid ia32 floating point - asm constraints (#27137) - - fix some comment typos - - fix ADDRESSOF recognition (#29686) - -* Mon Aug 27 2001 Jakub Jelinek 3.0.1-1 -- update from CVS (3.0.1 final) -- properly handle throw() exception specifiers in template decls (#51824) -- fix IA-64 varargs handling in presence of additional anonymous arguments - (#50757) -- fix boehm-gc for prelink -- fix a typo in gcc3-c++ description (#52323) -- remove Chill from package summary (#51764) - -* Tue Aug 7 2001 Jakub Jelinek 3.0-6 -- update from CVS - - fix glibc vfprintf miscompilation -- don't warn about if (&foo) if foo is weak (H.J.Lu, #50855) - -* Wed Jul 25 2001 Jakub Jelinek 3.0-5 -- include libgcjgc.a in libgcj3-devel -- include libgcjgc.so.* in libgcj3 on ia64 -- remove dependency on libgcj on ia64 -- add ldconfig to libgcj3 post/postun - -* Tue Jul 24 2001 Jakub Jelinek 3.0-4 -- update from CVS -- make gcc3-java/libgcj3* packages, so that they can coexist - with 2.96-RH Java -- make sure shared Java libraries are built with proper dependencies - -* Wed Jul 11 2001 Jakub Jelinek 3.0-3 -- fix libgcc_s.so and libstdc++.so symlinks -- don't ship jar - -* Tue Jul 10 2001 Jakub Jelinek 3.0-2 -- move libstdc++.so into gcc-lib -- add libobjc.so symlink - -* Tue Jul 10 2001 Jakub Jelinek 3.0-1 -- new rpm diff --git a/patches/gcc/3.2.3/README-sh b/patches/gcc/3.2.3/README-sh deleted file mode 100644 index a75042a..0000000 --- a/patches/gcc/3.2.3/README-sh +++ /dev/null @@ -1,16 +0,0 @@ -http://mirror.sh-linux.org/rpm-2003/SRPMS/gcc-3.2.3-3.src.rpm contains the following patches: - -gcc-20030210-sh-linux-1.patch -gcc-3.2.3-libffi-1.patch -gcc-3.2.3-sh-linux-dwarf2-1.patch (*not* applied by the spec file, it's in there by accident) - -gcc-3.2.3-libffi-1.patch was needed just to build, I think. - -After that was applied, sh4 gcc seemed to compile fine, but c++ programs -failed to execute because libstdc++.so.5 was built without version -info. This was caused directly by libstdc++-v3/configure setting -SYMVER_MAP=config/linker-map.dummy because it sees that -no libgcc_s.so was generated; configure says - checking for shared libgcc... no. - -Applying gcc-20030210-sh-linux-1.patch in hopes it makes those problems go away. diff --git a/patches/gcc/3.2.3/gcc-sh-linux.spec b/patches/gcc/3.2.3/gcc-sh-linux.spec deleted file mode 100644 index d647bb2..0000000 --- a/patches/gcc/3.2.3/gcc-sh-linux.spec +++ /dev/null @@ -1,739 +0,0 @@ -Summary: The GNU Compiler Collection for SuperH. -%define GCC_VERSION 3.2.3 -%define arch_list sh3-linux sh3eb-linux sh4-linux sh4eb-linux -%define TARGET_LIBSTDC 1 -%define TARGET_JAVA 1 - -Name: gcc -Version: 3.2.3 -Release: 3 - -Copyright: GPL -Group: Development/Languages -Source0: gcc-%{GCC_VERSION}.tar.bz2 -Patch1: gcc-20030210-sh-linux-1.patch -Patch2: gcc-3.2.3-libffi-1.patch -Patch3: gcc-3.2.3-sh-linux-dwarf2-1.patch -Buildroot: /var/tmp/gcc-%{_target}-root -ExclusiveArch: i386 sh3 sh3eb sh4 sh4eb - -%description -This package contains the GNU Compiler Collection: gcc and g++. -You'll need this package in order to compile C/C++ code. - -%ifarch i386 - -# ==================== Cross Compiler =============================== - -%package sh-linux -Summary: The GNU Compiler Collection for sh-linux. -Group: Development/Languages -Requires: binutils-sh-linux >= 2.13.2 -Provides: gcc-sh-linux -Obsoletes: gcc-sh3-linux gcc-sh3eb-linux gcc-sh4-linux gcc-sh4eb-linux -Obsoletes: gcc-sh3-linux-c++ gcc-sh3eb-linux-c++ gcc-sh4-linux-c++ gcc-sh4eb-linux-c++ -Obsoletes: libstdc++-sh3-linux libstdc++-sh3eb-linux libstdc++-sh4-linux libstdc++-sh4eb-linux -AutoReqProv: no - -%description sh-linux -The gcc-sh-linux package contains GNU Compiler Collection: gcc g++ and libstdc++-v3. - -It includes support for most of the current C++ specification, including templates and -exception handling. It does also include the standard C++ library and C++ header files. -You'll need this package in order to cross compile C/C++ code for sh-linux. - -%package -n libgcj-sh-linux -Summary: Header files and libraries for sh-linux Java development. -Group: Development/Libraries -Requires: gcc-sh-linux = %{version}-%{release} -AutoReqProv: no - -%description -n libgcj-sh-linux -The Java static libraries and C header files. You will need this -package to compile your Java programs for sh-linux using the gcc Java compiler (gcj). - -%else -# =========================== Native Compiler ================================= -%package libgcc -Summary: runtime libraries for the GNU Compiler Collection. -Group: System Environment/Libraries - -%description libgcc -This package contains libgcc shared libraries for the GNU C Compiler Collection. -You'll need this package in order to execute C,C++,JAVA code -that uses shared libgcc. - -%package c++ -Summary: C++ support for gcc -Group: Development/Languages -Requires: gcc = %{version}-%{release} - -%description c++ -This package adds C++ support to the GNU Compiler Collection. It includes -support for most of the current C++ specification, including templates and -exception handling. It does include the static standard C++ -library and C++ header files; the library for dynamically linking -programs is available separately. - -%package -n libstdc++ -Summary: GNU c++ library. -Group: System Environment/Libraries - -%description -n libstdc++ -The libstdc++ package contains a snapshot of the GCC Standard C++ -Library v3, an ongoing project to implement the ISO 14882 Standard C++ -library. - -%package -n libstdc++-devel -Summary: Header files and libraries for C++ development -Group: Development/Libraries -Requires: libstdc++ = %{version}-%{release}, gcc-c++ = %{version}-%{release} - -%description -n libstdc++-devel -This is the GNU implementation of the standard C++ libraries. This -package includes the header files and libraries needed for C++ -development. This includes SGI's implementation of the STL. - -%package java -Summary: Java support for gcc -Group: Development/Languages -Requires: gcc = %{version}-%{release}, libgcj = %{version}-%{release}, libgcj-devel = %{version}-%{release} - -%description java -This package adds experimental support for compiling Java(tm) programs and -bytecode into native code. To use this you will also need the libgcj and -libgcj-devel packages. - -%package -n libgcj -Summary: Java runtime library for gcc. -Group: System Environment/Libraries - -%description -n libgcj -The Java runtime library. You will need this package to run your Java -programs compiled using the gcc Java compiler (gcj). - -%package -n libgcj-devel -Summary: Header files and libraries for Java development. -Group: Development/Libraries -Requires: libgcj = %{version}-%{release} - -%description -n libgcj-devel -The Java static libraries and C header files. You will need this -package to compile your Java programs using the gcc Java compiler (gcj). - -%endif - -%prep -%setup -q -n gcc-%{GCC_VERSION} -%patch1 -p1 -%patch2 -p1 -##%patch3 -p1 - -%build -%ifarch i386 -# build cross compiler for i386-linux host -for arch in sh-linux; do - rm -rf ${arch} - mkdir ${arch} - - CONFIG_ARGS="\ - --prefix=%{_prefix} \ - --mandir=%{_mandir} \ - --infodir=%{_infodir} \ - --target=${arch} \ - --host=%{_host} \ - --build=%{_build} \ - --enable-languages=c,c++,java \ - --with-system-zlib \ - --with-gxx-include-dir=%{_prefix}/${arch}/include/g++-v3 \ - --includedir=%{_prefix}/${arch}/include \ - --disable-checking \ - --disable-shared \ - --enable-__cxa_atexit \ - --enable-c99 \ - --enable-threads=posix \ - --enable-long-long" - if [ %{TARGET_JAVA} -ne 0 ]; then - CONFIG_ARGS="$CONFIG_ARGS --enable-libgcj" - fi - ( cd $arch - ../configure ${CONFIG_ARGS} - ) - if [ %{TARGET_LIBSTDC} -ne 0 -o %{TARGET_JAVA} -ne 0 ]; then - sed -e s:-Dinhibit_libc::g ${arch}/gcc/Makefile >${arch}/gcc/Makefile.$$$ - mv -f ${arch}/gcc/Makefile.$$$ ${arch}/gcc/Makefile - fi - make all-gcc -C ${arch} - - if [ %{TARGET_LIBSTDC} -ne 0 ]; then - CONFIG_ARGS="`echo $CONFIG_ARGS | sed -e s/--disable-shared/--enable-shared/`" - make TARGET_CONFIGARGS="${CONFIG_ARGS} --with-cross-host" all-target-libstdc++-v3 -C ${arch} - fi - - if [ %{TARGET_JAVA} -ne 0 ]; then - make all-fastjar -C ${arch} - CONFIG_ARGS="`echo $CONFIG_ARGS | sed -e s/--host=%{_host}/--host=${arch}/`" - dir=`pwd` - - ac_cv_file__proc_self_exe=yes \ - ac_cv_prog_GCJ="$dir/$arch/gcc/gcj -B$dir/$arch/$arch/libjava/ -B$dir/$arch/gcc/ -B%{_prefix}/$arch/bin/ -B%{_prefix}/$arch/lib/ -isystem %{_prefix}/$arch/include" \ - make TARGET_CONFIGARGS="${CONFIG_ARGS} --with-cross-host --enable-multilib --with-target-subdir=${arch} --with-x=no" \ - all-target-libjava -C ${arch} - fi - -%else -# Canadian cross (build native compiler) -for arch in %{_target}; do - rm -rf ${arch} - mkdir -p ${arch} - CONFIG_ARGS="\ - --prefix=%{_prefix} \ - --mandir=%{_mandir} \ - --infodir=%{_infodir} \ - --target=${arch} \ - --host=${arch} \ - --build=%{_build} \ - --enable-languages=c,c++,java \ - --with-system-zlib \ - --with-gxx-include-dir=%{_prefix}/include/g++-v3 \ - --disable-checking \ - --disable-shared \ - --enable-__cxa_atexit \ - --enable-c99 \ - --enable-threads=posix \ - --enable-long-long" - - if [ %{TARGET_JAVA} -ne 0 ]; then - CONFIG_ARGS="$CONFIG_ARGS --enable-libgcj" - fi - - ( cd ${arch} - CC=${arch}-gcc AR=${arch}-ar RANLIB=${arch}-ranlib CXX=${arch}-g++ \ - ../configure $CONFIG_ARGS - ) - - if [ %{TARGET_LIBSTDC} -ne 0 -o %{TARGET_JAVA} -ne 0 ]; then - sed -e s:-Dinhibit_libc::g ${arch}/gcc/Makefile >${arch}/gcc/Makefile.$$$ - mv -f ${arch}/gcc/Makefile.$$$ ${arch}/gcc/Makefile - fi - - make all-build-libiberty all-gcc -C ${arch} - - if [ %{TARGET_LIBSTDC} -ne 0 ]; then - CONFIG_ARGS="`echo $CONFIG_ARGS | sed -e s/--disable-shared/--enable-shared/`" - make TARGET_CONFIGARGS="${CONFIG_ARGS}" all-target-libstdc++-v3 -C ${arch} - if [ %{TARGET_JAVA} -ne 0 ]; then - ( mkdir -p ${arch}/fastjar; cd ${arch}/fastjar; rm *; ../../fastjar/configure --with-system-zlib; make ) - ac_cv_file__proc_self_exe=yes \ - CC=${arch}-gcc AR=${arch}-ar RANLIB=${arch}-ranlib CXX=${arch}-g++ GCJ=${arch}-gcj \ - make TARGET_CONFIGARGS="${CONFIG_ARGS} --with-x=no" configure-target-libjava -C ${arch} - - make -C ${arch}/${arch}/libffi - make -C ${arch}/${arch}/boehm-gc - make -C ${arch}/${arch}/zlib - make GCJ=${arch}-gcj GCJH=${arch}-gcjh ZIP=${arch}-jar -C ${arch}/${arch}/libjava - ( - rm -rf ${arch}/${arch}/fastjar - mkdir -p ${arch}/${arch}/fastjar - cd ${arch}/${arch}/fastjar - - ac_cv_sizeof_char=1 \ - ac_cv_sizeof_short=2 \ - ac_cv_sizeof_int=4 \ - ac_cv_sizeof_long=4 \ - ac_cv_sizeof_long_long=8 \ - ac_cv_sizeof_float=4 \ - ac_cv_sizeof_double=8 \ - ac_cv_sizeof_long_double=8 \ - ac_cv_sizeof_void_p=4 \ - ac_cv_file__proc_self_exe=yes \ - ac_cv_header_langinfo_h=yes \ - CC=${arch}-gcc ../../../fastjar/configure $CONFIG_ARGS - - make - ) - - fi - fi -%endif -done - -%install -rm -rf $RPM_BUILD_ROOT -mkdir -p ${RPM_BUILD_ROOT}/{%{_prefix}/bin,lib} - -%ifarch i386 - ARCH_STRTIP=strip - EXESUFFIX="" - arch=sh-linux - TOOLPREFIX=${arch}- - mkdir -p ${RPM_BUILD_ROOT}%{_prefix}/${arch}/{bin,include,lib,share} - mkdir -p ${RPM_BUILD_ROOT}%{_prefix}/${arch}/lib/{m4,mb/m4} - make DESTDIR=${RPM_BUILD_ROOT} \ - install-gcc \ - install-fastjar \ - -C ${arch} -%if 0 - ( cd ${RPM_BUILD_ROOT}%{_prefix}/sh-linux/lib - rm -f libgcc_s_*.so - mv libgcc_s_mb.so.1 mb/libgcc_s.so.1 - mv libgcc_s_m4.so.1 m4/libgcc_s.so.1 - mv libgcc_s_mb_m4.so.1 mb/m4/libgcc_s.so.1 - ln -s libgcc_s.so.1 mb/libgcc_s.so - ln -s libgcc_s.so.1 m4/libgcc_s.so - ln -s libgcc_s.so.1 mb/m4/libgcc_s.so - ) -%endif - - if [ %{TARGET_LIBSTDC} -ne 0 ]; then - make DESTDIR=${RPM_BUILD_ROOT} \ - install-target-libstdc++-v3 \ - -C ${arch} - fi - if [ %{TARGET_JAVA} -ne 0 ]; then - make DESTDIR=${RPM_BUILD_ROOT} \ - install-target-libjava \ - install-target-boehm-gc \ - install-target-zlib \ - -C ${arch} - make DESTDIR=${RPM_BUILD_ROOT} prefix=%{_prefix}/${arch} \ - install -C ${arch}/${arch}/libffi - mv -f $RPM_BUILD_ROOT%{_prefix}/share/java $RPM_BUILD_ROOT%{_prefix}/sh-linux/share/ - fi - rm -f $RPM_BUILD_ROOT%{_prefix}/bin/{gcov,gccbug} - rm -f $RPM_BUILD_ROOT%{_prefix}/${arch}/bin/{gij,jv-convert} - sed -e 's/@@VERSION@@/%{GCC_VERSION}/g' debian/shCPU-linux-GCC >$RPM_BUILD_ROOT%{_prefix}/bin/shCPU-linux-GCC - chmod 0755 $RPM_BUILD_ROOT%{_prefix}/bin/shCPU-linux-GCC - - LIBSTDC=`cd $RPM_BUILD_ROOT%{_prefix}/sh-linux/lib; echo libstdc++.so*` - LIBGCJ=`cd $RPM_BUILD_ROOT%{_prefix}/sh-linux/lib; echo libgcj.so*` - LIBFFI=`cd $RPM_BUILD_ROOT%{_prefix}/sh-linux/lib; echo libffi*.so*` - # literally (binary-ly) same - PROGS="cpp c++ g++ g77 gcc gcj" - DRIVERS="cc1 cc1obj cc1plus collect2 cpp0 f771 jc1 tradcpp0 jvgenmain" - OBJS="crtbegin.o crtbeginS.o crtend.o crtendS.o crtbeginT.o" - LIBS="libgcc.a libgcc_eh.a libobjc.a" - LIBS_1="$LIBSTDC \ - $LIBGCJ libgcj.spec \ - $LIBFFI " - LIBS_2="libstdc++.a libstdc++.la \ - libsupc++.a libsupc++.la \ - libgcj.a libgcj.la \ - libffi.a libffi.la" - INCLUDE="include" - - for CPU in sh3 sh3eb sh4 sh4eb; do - mkdir -p ${RPM_BUILD_ROOT}%{_prefix}/lib/gcc-lib/${CPU}-linux/%{GCC_VERSION} - mkdir -p ${RPM_BUILD_ROOT}%{_prefix}/${CPU}-linux/{lib,share/java} - # Make symbolic links for include dir. - ln -s ../sh-linux/include $RPM_BUILD_ROOT%{_prefix}/${CPU}-linux/include - - # Make symbolic links for libgcj.jar - ln -s ../../sh-linux/share/java/libgcj-%{GCC_VERSION}.jar $RPM_BUILD_ROOT%{_prefix}/${CPU}-linux/share/java/libgcj-%{GCC_VERSION}.jar - - # Make symbolic links for executables. - for p in ${PROGS}; do - ln -s shCPU-linux-GCC $RPM_BUILD_ROOT%{_prefix}/bin/${CPU}-linux-$p - done - ln -s sh-linux-gcjh $RPM_BUILD_ROOT%{_prefix}/bin/${CPU}-linux-gcjh - - case "${CPU}" in - sh3) - MULTILIBDIR= - MULTIPARENTDIR= - AS_ENDIAN_FLAG="-little" - CPP_ENDIAN_DEF="-D__LITTLE_ENDIAN__" - CPP_CPU_DEFS='-D__SH3__ -D__sh3__' - CC1_CPU_ENDIAN_FLAGS="-ml -m3" - CC1PLUS_CPU_ENDIAN_FLAGS="-ml -m3" - LINKER_CPU_ENDIAN_FLAGS="-m shlelf_linux -EL --architecture sh3" - LINKER_RPATH_LINK_FLAG="-rpath-link %{_prefix}/sh3-linux/lib" - ;; - sh3eb) - MULTILIBDIR=/mb - MULTIPARENTDIR=../ - AS_ENDIAN_FLAG="-big" - CPP_ENDIAN_DEF="-D__BIG_ENDIAN__" - CPP_CPU_DEFS='-D__SH3__ -D__sh3__' - CC1_CPU_ENDIAN_FLAGS="-mb -m3" - CC1PLUS_CPU_ENDIAN_FLAGS="-mb -m3" - LINKER_CPU_ENDIAN_FLAGS="-m shelf_linux -EB --architecture sh3" - LINKER_RPATH_LINK_FLAG="-rpath-link %{_prefix}/sh3eb-linux/lib" - ;; - sh4) - MULTILIBDIR=/m4 - MULTIPARENTDIR=../ - AS_ENDIAN_FLAG="-little" - CPP_ENDIAN_DEF="-D__LITTLE_ENDIAN__" - CPP_CPU_DEFS="-D__SH4__" - CC1_CPU_ENDIAN_FLAGS="-ml -m4" - CC1PLUS_CPU_ENDIAN_FLAGS="-ml -m4" - LINKER_CPU_ENDIAN_FLAGS="-m shlelf_linux -EL --architecture sh4" - LINKER_RPATH_LINK_FLAG="-rpath-link %{_prefix}/sh4-linux/lib" - ;; - sh4eb) - MULTILIBDIR=/mb/m4 - MULTIPARENTDIR=../../ - AS_ENDIAN_FLAG="-big" - CPP_ENDIAN_DEF="-D__BIG_ENDIAN__" - CPP_CPU_DEFS="-D__SH4__" - CC1_CPU_ENDIAN_FLAGS="-mb -m4" - CC1PLUS_CPU_ENDIAN_FLAGS="-mb -m4" - LINKER_CPU_ENDIAN_FLAGS="-m shelf_linux -EB --architecture sh4" - LINKER_RPATH_LINK_FLAG="-rpath-link %{_prefix}/sh4eb-linux/lib" - ;; - esac - - # Make symbolic links for GCC drivers, objects, libraries, and include dir. - for f in ${DRIVERS} ${INCLUDE}; do - if [ -a $RPM_BUILD_ROOT%{_prefix}/lib/gcc-lib/sh-linux/%{GCC_VERSION}/$f ]; then - ln -s ../../sh-linux/%{GCC_VERSION}/$f $RPM_BUILD_ROOT%{_prefix}/lib/gcc-lib/${CPU}-linux/%{GCC_VERSION}/$f - fi - done - for f in ${OBJS} ${LIBS}; do - if [ -a $RPM_BUILD_ROOT%{_prefix}/lib/gcc-lib/sh-linux/%{GCC_VERSION}${MULTILIBDIR}/$f ]; then - ln -s ../../sh-linux/%{GCC_VERSION}${MULTILIBDIR}/$f $RPM_BUILD_ROOT%{_prefix}/lib/gcc-lib/${CPU}-linux/%{GCC_VERSION}/$f - fi - done - - for f in ${LIBS_1} ${LIBS_2}; do - if [ -e $RPM_BUILD_ROOT%{_prefix}/sh-linux/lib${MULTILIBDIR}/$f ]; then - mv -f $RPM_BUILD_ROOT%{_prefix}/sh-linux/lib${MULTILIBDIR}/$f $RPM_BUILD_ROOT%{_prefix}/${CPU}-linux/lib - ln -s ${MULTIPARENTDIR}../../${CPU}-linux/lib/$f $RPM_BUILD_ROOT%{_prefix}/sh-linux/lib${MULTILIBDIR}/$f - fi - done - - sed -e "s+@AS_ENDIAN_FLAG@+${AS_ENDIAN_FLAG}+" \ - -e "s+@CPP_ENDIAN_DEF@+${CPP_ENDIAN_DEF}+" \ - -e "s+@CPP_CPU_DEFS@+${CPP_CPU_DEFS}+" \ - -e "s+@CC1_CPU_ENDIAN_FLAGS@+${CC1_CPU_ENDIAN_FLAGS}+" \ - -e "s+@CC1PLUS_CPU_ENDIAN_FLAGS@+${CC1PLUS_CPU_ENDIAN_FLAGS}+" \ - -e "s+@LINKER_CPU_ENDIAN_FLAGS@+${LINKER_CPU_ENDIAN_FLAGS}+" \ - -e "s+@LINKER_RPATH_LINK_FLAG@+${LINKER_RPATH_LINK_FLAG}+" \ - debian/edit-specs.in >${arch}/edit-specs-${CPU}.sed - - sed -f ${arch}/edit-specs-${CPU}.sed \ - $RPM_BUILD_ROOT%{_prefix}/lib/gcc-lib/sh-linux/%{GCC_VERSION}/specs \ - > $RPM_BUILD_ROOT%{_prefix}/lib/gcc-lib/${CPU}-linux/%{GCC_VERSION}/specs - - done - -%else - ARCH_STRTIP=%{_target}-strip - EXESUFFIX="" - TOOLPREFIX="" - ln -s ..%{_prefix}/bin/cpp ${RPM_BUILD_ROOT}/lib/cpp - ln -s gcc ${RPM_BUILD_ROOT}%{_prefix}/bin/cc - arch=%{_target} - make DESTDIR=${RPM_BUILD_ROOT} \ - install -C ${arch} - if [ %{TARGET_JAVA} -ne 0 ]; then - make DESTDIR=${RPM_BUILD_ROOT} install -C ${arch}/${arch}/libffi - make DESTDIR=${RPM_BUILD_ROOT} install -C ${arch}/${arch}/fastjar - mv -f ${RPM_BUILD_ROOT}/%{_prefix}/%{_lib}/libgcj.spec \ - ${RPM_BUILD_ROOT}/%{_prefix}/lib/gcc-lib/${arch}/%{GCC_VERSION}/ - fi - $ARCH_STRTIP $RPM_BUILD_ROOT%{_prefix}/bin/gcov$EXESUFFIX || : - -cat >${arch}/edit-specs <${RPM_BUILD_ROOT}%{_prefix}/lib/gcc-lib/${arch}/%{GCC_VERSION}/specs.$$ - mv -f ${RPM_BUILD_ROOT}%{_prefix}/lib/gcc-lib/${arch}/%{GCC_VERSION}/specs.$$ \ - ${RPM_BUILD_ROOT}%{_prefix}/lib/gcc-lib/${arch}/%{GCC_VERSION}/specs - - sed -e "s/dependency_libs=.*/dependency_libs='-lm -lgcc -lc -lgcc'/" \ - ${RPM_BUILD_ROOT}%{_prefix}/lib/libstdc++.la \ - >${RPM_BUILD_ROOT}%{_prefix}/lib/libstdc++.la.$$ - mv -f ${RPM_BUILD_ROOT}%{_prefix}/lib/libstdc++.la.$$ \ - ${RPM_BUILD_ROOT}%{_prefix}/lib/libstdc++.la - - sed -e "s/dependency_libs=.*/dependency_libs='-lpthread -ldl -lz -lm -lgcc -lc -lgcc'/" \ - ${RPM_BUILD_ROOT}%{_prefix}/lib/libgcj.la \ - >${RPM_BUILD_ROOT}%{_prefix}/lib/libgcj.la.$$ - mv -f ${RPM_BUILD_ROOT}%{_prefix}/lib/libgcj.la.$$ \ - ${RPM_BUILD_ROOT}%{_prefix}/lib/libgcj.la - -cat >$RPM_BUILD_ROOT%{_prefix}/lib/gcc-lib/%{_target}/%{GCC_VERSION}/include/syslimits.h < -#undef _GCC_NEXT_LIMITS_H -EOF - -%endif - - $ARCH_STRTIP $RPM_BUILD_ROOT%{_prefix}/bin/${TOOLPREFIX}{gcc,cpp,c++,c++filt,gcj,gcjh,gij,jar,grepjar,jcf-dump,jv-convert,jv-scan}$EXESUFFIX || : - FULLPATH=$(dirname $RPM_BUILD_ROOT%{_prefix}/lib/gcc-lib/${arch}/%{GCC_VERSION}/cc1${EXESUFFIX}) - $ARCH_STRTIP $FULLPATH/{cc1${EXESUFFIX},cc1plus${EXESUFFIX},cpp0${EXESUFFIX},tradcpp0${EXESUFFIX},collect2${EXESUFFIX},jc1${EXESUFFIX},jvgenmain${EXESUFFIX}} || : - - # Strip static libraries - sh-linux-strip -S -R .comment `find $RPM_BUILD_ROOT -type f -name "*.a"` || : - - # Strip ELF shared objects - for f in `find $RPM_BUILD_ROOT -type f \( -perm -0100 -or -perm -0010 -or -perm -0001 \) `; do - if file $f | grep -q "shared object.*not stripped"; then - sh-linux-strip --strip-unneeded -R .comment $f - fi - done - -%clean -rm -rf $RPM_BUILD_ROOT - -# ==================== Cross Compiler =============================== -%ifarch i386 - -%files sh-linux -%defattr(-,root,root) -%{_prefix}/bin/sh* -%dir %{_prefix}/lib/gcc-lib/sh-linux -%dir %{_prefix}/lib/gcc-lib/sh-linux/%{GCC_VERSION} -%dir %{_prefix}/lib/gcc-lib/sh-linux/%{GCC_VERSION}/include -%dir %{_prefix}/lib/gcc-lib/sh3-linux -%dir %{_prefix}/lib/gcc-lib/sh3-linux/%{GCC_VERSION} -%dir %{_prefix}/lib/gcc-lib/sh3eb-linux -%dir %{_prefix}/lib/gcc-lib/sh3eb-linux/%{GCC_VERSION} -%dir %{_prefix}/lib/gcc-lib/sh4-linux -%dir %{_prefix}/lib/gcc-lib/sh4-linux/%{GCC_VERSION} -%dir %{_prefix}/lib/gcc-lib/sh4eb-linux -%dir %{_prefix}/lib/gcc-lib/sh4eb-linux/%{GCC_VERSION} -%{_prefix}/lib/gcc-lib/sh-linux/%{GCC_VERSION}/cc1 -%{_prefix}/lib/gcc-lib/sh-linux/%{GCC_VERSION}/cc1plus -%{_prefix}/lib/gcc-lib/sh-linux/%{GCC_VERSION}/collect2 -%{_prefix}/lib/gcc-lib/sh-linux/%{GCC_VERSION}/cpp0 -%{_prefix}/lib/gcc-lib/sh-linux/%{GCC_VERSION}/*.o -%{_prefix}/lib/gcc-lib/sh-linux/%{GCC_VERSION}/libgcc*.a -%{_prefix}/lib/gcc-lib/sh-linux/%{GCC_VERSION}/specs -%{_prefix}/lib/gcc-lib/sh-linux/%{GCC_VERSION}/tradcpp0 -%{_prefix}/lib/gcc-lib/sh-linux/%{GCC_VERSION}/jc1 -%{_prefix}/lib/gcc-lib/sh-linux/%{GCC_VERSION}/jvgenmain -%{_prefix}/lib/gcc-lib/sh-linux/%{GCC_VERSION}/m4 -%{_prefix}/lib/gcc-lib/sh-linux/%{GCC_VERSION}/mb -%{_prefix}/lib/gcc-lib/sh-linux/%{GCC_VERSION}/include/stddef.h -%{_prefix}/lib/gcc-lib/sh-linux/%{GCC_VERSION}/include/stdarg.h -%{_prefix}/lib/gcc-lib/sh-linux/%{GCC_VERSION}/include/varargs.h -%{_prefix}/lib/gcc-lib/sh-linux/%{GCC_VERSION}/include/float.h -%{_prefix}/lib/gcc-lib/sh-linux/%{GCC_VERSION}/include/limits.h -%{_prefix}/lib/gcc-lib/sh-linux/%{GCC_VERSION}/include/stdbool.h -%{_prefix}/lib/gcc-lib/sh-linux/%{GCC_VERSION}/include/iso646.h -%{_prefix}/lib/gcc-lib/sh-linux/%{GCC_VERSION}/include/syslimits.h -%{_prefix}/lib/gcc-lib/sh-linux/%{GCC_VERSION}/include/README -%{_prefix}/lib/gcc-lib/sh3-linux/%{GCC_VERSION}/* -%{_prefix}/lib/gcc-lib/sh3eb-linux/%{GCC_VERSION}/* -%{_prefix}/lib/gcc-lib/sh4-linux/%{GCC_VERSION}/* -%{_prefix}/lib/gcc-lib/sh4eb-linux/%{GCC_VERSION}/* -%{_mandir}/man1/sh-linux-* -%dir %{_prefix}/sh-linux/include -%{_prefix}/sh3-linux/include -%{_prefix}/sh3eb-linux/include -%{_prefix}/sh4-linux/include -%{_prefix}/sh4eb-linux/include -%endif - -%if %{TARGET_LIBSTDC} -%ifarch i386 -%{_prefix}/sh-linux/include/g++-v3 -%{_prefix}/sh-linux/lib/libs* -%{_prefix}/sh-linux/lib/m4/libs* -%{_prefix}/sh-linux/lib/mb/libs* -%{_prefix}/sh-linux/lib/mb/m4/libs* -%{_prefix}/sh3-linux/lib/libs* -%{_prefix}/sh4-linux/lib/libs* -%{_prefix}/sh3eb-linux/lib/libs* -%{_prefix}/sh4eb-linux/lib/libs* -%endif -%endif - -%if %{TARGET_JAVA} -%ifarch i386 -%files -n libgcj-sh-linux -%defattr(-,root,root) -%{_prefix}/sh-linux/include/*.h -%{_prefix}/sh-linux/include/gcj -%{_prefix}/sh-linux/include/gnu/* -%{_prefix}/sh-linux/include/java -%{_prefix}/sh-linux/lib/lib*gcj* -%{_prefix}/sh-linux/lib/m4/lib*gcj* -%{_prefix}/sh-linux/lib/mb/lib*gcj* -%{_prefix}/sh-linux/lib/mb/m4/lib*gcj* -%{_prefix}/sh-linux/lib/libffi* -%{_prefix}/sh-linux/lib/m4/libffi* -%{_prefix}/sh-linux/lib/mb/libffi* -%{_prefix}/sh-linux/lib/mb/m4/libffi* -%{_prefix}/sh-linux/share/java/libgcj-%{GCC_VERSION}.jar -%{_prefix}/sh3-linux/lib/lib*gcj* -%{_prefix}/sh3-linux/lib/libffi* -%{_prefix}/sh3-linux/share/java/libgcj-%{GCC_VERSION}.jar -%{_prefix}/sh4-linux/lib/lib*gcj* -%{_prefix}/sh4-linux/lib/libffi* -%{_prefix}/sh4-linux/share/java/libgcj-%{GCC_VERSION}.jar -%{_prefix}/sh3eb-linux/lib/lib*gcj* -%{_prefix}/sh3eb-linux/lib/libffi* -%{_prefix}/sh3eb-linux/share/java/libgcj-%{GCC_VERSION}.jar -%{_prefix}/sh4eb-linux/lib/lib*gcj* -%{_prefix}/sh4eb-linux/lib/libffi* -%{_prefix}/sh4eb-linux/share/java/libgcj-%{GCC_VERSION}.jar -%endif -%endif - -%ifarch sh3 sh3eb sh4 sh4eb -# =========================== Native Compiler ================================= -%files -%defattr(-,root,root) -%dir %{_prefix}/lib/gcc-lib/%{_target} -%dir %{_prefix}/lib/gcc-lib/%{_target}/%{GCC_VERSION} -%dir %{_prefix}/lib/gcc-lib/%{_target}/%{GCC_VERSION}/include -%{_prefix}/lib/gcc-lib/%{_target}/%{GCC_VERSION}/cc1 -%{_prefix}/lib/gcc-lib/%{_target}/%{GCC_VERSION}/collect2 -%{_prefix}/lib/gcc-lib/%{_target}/%{GCC_VERSION}/cpp0 -%{_prefix}/lib/gcc-lib/%{_target}/%{GCC_VERSION}/crt*.o -%{_prefix}/lib/gcc-lib/%{_target}/%{GCC_VERSION}/libgcc*.a -%{_prefix}/lib/gcc-lib/%{_target}/%{GCC_VERSION}/specs -%{_prefix}/lib/gcc-lib/%{_target}/%{GCC_VERSION}/tradcpp0 -%{_prefix}/lib/gcc-lib/%{_target}/%{GCC_VERSION}/include/stddef.h -%{_prefix}/lib/gcc-lib/%{_target}/%{GCC_VERSION}/include/stdarg.h -%{_prefix}/lib/gcc-lib/%{_target}/%{GCC_VERSION}/include/varargs.h -%{_prefix}/lib/gcc-lib/%{_target}/%{GCC_VERSION}/include/float.h -%{_prefix}/lib/gcc-lib/%{_target}/%{GCC_VERSION}/include/limits.h -%{_prefix}/lib/gcc-lib/%{_target}/%{GCC_VERSION}/include/stdbool.h -%{_prefix}/lib/gcc-lib/%{_target}/%{GCC_VERSION}/include/iso646.h -%{_prefix}/lib/gcc-lib/%{_target}/%{GCC_VERSION}/include/syslimits.h -%{_prefix}/lib/gcc-lib/%{_target}/%{GCC_VERSION}/include/README -%{_prefix}/bin/gcc -%{_prefix}/bin/%{_target}-gcc -%{_prefix}/bin/cpp -%{_prefix}/bin/gccbug -%{_prefix}/bin/gcov -%{_prefix}/bin/cc -/lib/cpp -%{_infodir}/cpp* -%{_infodir}/gcc* - -%if 0 -%files libgcc -%defattr(-,root,root) -/lib/libgcc_s.so* -%endif - -%files c++ -%defattr(-,root,root) -%{_prefix}/bin/c++ -%{_prefix}/bin/g++ -%{_prefix}/bin/c++filt -%{_prefix}/bin/%{_target}-c++ -%{_prefix}/bin/%{_target}-g++ -%{_prefix}/lib/gcc-lib/%{_target}/%{GCC_VERSION}/cc1plus -%endif - -%if %{TARGET_LIBSTDC} -%ifarch sh3 sh3eb sh4 sh4eb -%files -n libstdc++ -%defattr(-,root,root) -%{_prefix}/lib/libstdc++.so* - -%files -n libstdc++-devel -%defattr(-,root,root) -%{_prefix}/include/g++-v3 -%{_prefix}/lib/libstdc++.*a -%endif -%endif - -%if %{TARGET_JAVA} -%ifarch sh3 sh3eb sh4 sh4eb -%files java -%defattr(-,root,root) -%{_prefix}/bin/addr2name.awk -%{_prefix}/bin/gcj -%{_prefix}/bin/gcjh -%{_prefix}/bin/gij -%{_prefix}/bin/jar -%{_prefix}/bin/grepjar -%{_prefix}/bin/jcf-dump -%{_prefix}/bin/jv-convert -%{_prefix}/bin/jv-scan -%dir %{_prefix}/lib/gcc-lib -%dir %{_prefix}/lib/gcc-lib/%{_target} -%dir %{_prefix}/lib/gcc-lib/%{_target}/%{GCC_VERSION} -%{_prefix}/lib/gcc-lib/%{_target}/%{GCC_VERSION}/jc1 -%{_prefix}/lib/gcc-lib/%{_target}/%{GCC_VERSION}/jvgenmain -%{_infodir}/gcj* - -%files -n libgcj -%defattr(-,root,root) -%{_prefix}/%{_lib}/libgcj.so* -%{_prefix}/%{_lib}/libffi*.so* -%{_prefix}/lib/gcc-lib/%{_target}/%{GCC_VERSION}/libgcj.spec -%{_prefix}/share/java/libgcj-%{GCC_VERSION}.jar - -%files -n libgcj-devel -%defattr(-,root,root) -%{_prefix}/include/*.h -%{_prefix}/include/gcj -%{_prefix}/include/gnu/* -%{_prefix}/include/java -%{_prefix}/lib/libgcj.*a -%{_prefix}/lib/libffi.*a -%endif -%endif - -%changelog -* Wed Feb 19 2003 SUGIOKA Toshinobu -- version 3.2.2. - -* Tue Feb 19 2002 SUGIOKA Toshinobu -- version 3.0.4. - -* Tue Feb 12 2002 SUGIOKA Toshinobu -- add java support. - -* Thu Feb 7 2002 SUGIOKA Toshinobu -- follow debian/SH update. - -* Tue Feb 5 2002 SUGIOKA Toshinobu -- follow debian/SH update. - -* Thu Jan 24 2002 SUGIOKA Toshinobu -- rebuild with new binutils. - -* Tue Jan 22 2002 SUGIOKA Toshinobu -- leaf function optimization fixed. - -* Thu Dec 06 2001 SUGIOKA Toshinobu -- add gcc-ice-rml patch. - -* Tue Nov 13 2001 SUGIOKA Toshinobu -- add configure option. - -* Thu Nov 01 2001 SUGIOKA Toshinobu -- tablejump fix by gniibe. - -* Mon Oct 22 2001 SUGIOKA Toshinobu -- updated gcc patch. - -* Wed Oct 17 2001 SUGIOKA Toshinobu -- updated gcc patch. - -* Tue Oct 02 2001 SUGIOKA Toshinobu -- gcc/config/sh/sh.c bug fix. - -* Fri Aug 24 2001 SUGIOKA Toshinobu -- gcc version 3.0.1. - -* Thu Jun 28 2001 SUGIOKA Toshinobu -- gcc version 3.0. -- Add libstdc++ package. - -* Mon Apr 23 2001 SUGIOKA Toshinobu -- Add cygwin host. - -* Sat Dec 23 2000 SUGIOKA Toshinobu -- fix file attribute. -- add asmspecs patch. - -* Sat Nov 11 2000 SUGIOKA Toshinobu -- initial version. diff --git a/patches/gcc/3.3.6/100-fix-fixincl.patch b/patches/gcc/3.3.6/100-fix-fixincl.patch deleted file mode 100644 index 7936b19..0000000 --- a/patches/gcc/3.3.6/100-fix-fixincl.patch +++ /dev/null @@ -1,70 +0,0 @@ -See http://gcc.gnu.org/PR22541 - -From: Dan Kegel - -When building gcc-3.4.3 or gcc-4.0.0 as a cross into a clean $PREFIX -(the only two I've tried like this), the configure script happily copies -the glibc include files from include to sys-include; here's the line -from the log file (with $PREFIX instead of the real prefix): - -Copying $PREFIX/i686-unknown-linux-gnu/include to $PREFIX/i686-unknown-linux-gnu/sys-include - -But later, when running fixincludes, it gives the error message - The directory that should contain system headers does not exist: - $PREFIX/lib/gcc/i686-unknown-linux-gnu/3.4.3/../../../../i686-unknown-linux-gnu/sys-include - -Nevertheless, it continues building; the header files it installs in - $PREFIX/lib/gcc/i686-unknown-linux-gnu/3.4.3/include -do not include the boilerplate that would cause it to #include_next the -glibc headers in the system header directory. -Thus the resulting toolchain can't compile the following program: -#include -int x = PATH_MAX; -because its limits.h doesn't include the glibc header. - -That's not nice. I suspect the problem is that gcc/Makefile.in assumes that -it can refer to $PREFIX/i686-unknown-linux-gnu with the path - $PREFIX/lib/../i686-unknown-linux-gnu, but -that fails because the directory $PREFIX/lib doesn't exist during 'make all'; -it is only created later, during 'make install'. (Which makes this problem -confusing, since one only notices the breakage well after 'make install', -at which point the path configure complained about does exist, and has the -right stuff in it.) - -A possible fix is to replace the line in gcc/Makefile.in that says - SYSTEM_HEADER_DIR = @SYSTEM_HEADER_DIR@ -with a version that gets rid of extra ..'s, e.g. - SYSTEM_HEADER_DIR = `echo @SYSTEM_HEADER_DIR@ | sed -e :a -e "s,[^/]*/\.\.\/,,;ta"` -(hey, that's the first time I've ever used a label in a sed script; thanks to the sed faq -for explaining the :a ... ta method of looping to repeat a search-and-replace until it doesn't match.) - - ---- gcc-3.4.3/gcc/Makefile.in.foo 2005-05-20 11:41:39.000000000 -0700 -+++ gcc-3.4.3/gcc/Makefile.in 2005-05-20 12:08:46.000000000 -0700 -@@ -350,7 +350,10 @@ - CROSS_SYSTEM_HEADER_DIR = @CROSS_SYSTEM_HEADER_DIR@ - - # autoconf sets SYSTEM_HEADER_DIR to one of the above. --SYSTEM_HEADER_DIR = @SYSTEM_HEADER_DIR@ -+# Purge it of unneccessary internal relative paths -+# to directories that might not exist yet. -+# The sed idiom for this is to repeat the search-and-replace until it doesn't match, using :a ... ta. -+SYSTEM_HEADER_DIR = `echo @SYSTEM_HEADER_DIR@ | sed -e :a -e "s,[^/]*/\.\.\/,," -e ta` - - # Control whether to run fixproto and fixincludes. - STMP_FIXPROTO = @STMP_FIXPROTO@ -@@ -2532,11 +2535,13 @@ - $(SHELL) ${srcdir}/mkinstalldirs $(DESTDIR)$(gcc_tooldir) - - # Build fixed copies of system files. -+# Abort if no system headers available, unless building a crosscompiler. -+# FIXME: abort unless building --without-headers would be more accurate and less ugly - stmp-fixinc: fixinc.sh gsyslimits.h - @if test ! -d ${SYSTEM_HEADER_DIR}; then \ - echo The directory that should contain system headers does not exist: >&2 ; \ - echo " ${SYSTEM_HEADER_DIR}" >&2 ; \ -- if test "x${SYSTEM_HEADER_DIR}" = "x${gcc_tooldir}/sys-include"; \ -+ if test "x${SYSTEM_HEADER_DIR}" = "x`echo "${gcc_tooldir}/sys-include" | sed -e :a -e "s,[^/]*/\.\.\/,," -e ta`"; \ - then sleep 1; else exit 1; fi; \ - fi - rm -rf include; mkdir include diff --git a/patches/gcc/3.3.6/110-arm-bigendian.patch b/patches/gcc/3.3.6/110-arm-bigendian.patch deleted file mode 100644 index 0816b83..0000000 --- a/patches/gcc/3.3.6/110-arm-bigendian.patch +++ /dev/null @@ -1,62 +0,0 @@ -diff -urN gcc-3.3.4.orig/gcc/config/arm/linux-elf.h gcc-3.3.4/gcc/config/arm/linux-elf.h ---- gcc-3.3.4.orig/gcc/config/arm/linux-elf.h 2004-03-30 22:43:45.000000000 +0200 -+++ gcc-3.3.4/gcc/config/arm/linux-elf.h 2004-08-20 02:13:02.969084177 +0200 -@@ -30,17 +30,31 @@ - /* Do not assume anything about header files. */ - #define NO_IMPLICIT_EXTERN_C - -+/* -+ * 'config.gcc' defines TARGET_BIG_ENDIAN_DEFAULT as 1 for arm*b-* -+ * (big endian) configurations. -+ */ -+#if TARGET_BIG_ENDIAN_DEFAULT -+#define TARGET_ENDIAN_DEFAULT ARM_FLAG_BIG_END -+#define TARGET_ENDIAN_OPTION "mbig-endian" -+#define TARGET_LINKER_EMULATION "armelfb_linux" -+#else -+#define TARGET_ENDIAN_DEFAULT 0 -+#define TARGET_ENDIAN_OPTION "mlittle-endian" -+#define TARGET_LINKER_EMULATION "armelf_linux" -+#endif -+ - /* Default is to use APCS-32 mode. */ - #undef TARGET_DEFAULT --#define TARGET_DEFAULT (ARM_FLAG_APCS_32 | ARM_FLAG_MMU_TRAPS) -+#define TARGET_DEFAULT (ARM_FLAG_APCS_32 | ARM_FLAG_MMU_TRAPS | TARGET_ENDIAN_DEFAULT) - - #define SUBTARGET_CPU_DEFAULT TARGET_CPU_arm6 - --#define SUBTARGET_EXTRA_LINK_SPEC " -m armelf_linux -p" -+#define SUBTARGET_EXTRA_LINK_SPEC " -m " TARGET_LINKER_EMULATION " -p" - - #undef MULTILIB_DEFAULTS - #define MULTILIB_DEFAULTS \ -- { "marm", "mlittle-endian", "mhard-float", "mapcs-32", "mno-thumb-interwork" } -+ { "marm", TARGET_ENDIAN_OPTION, "mhard-float", "mapcs-32", "mno-thumb-interwork" } - - #define CPP_APCS_PC_DEFAULT_SPEC "-D__APCS_32__" - -@@ -88,7 +102,7 @@ - %{rdynamic:-export-dynamic} \ - %{!dynamic-linker:-dynamic-linker /lib/ld-linux.so.2} \ - -X \ -- %{mbig-endian:-EB}" \ -+ %{mbig-endian:-EB} %{mlittle-endian:-EL}" \ - SUBTARGET_EXTRA_LINK_SPEC - - #define TARGET_OS_CPP_BUILTINS() \ -diff -urN gcc-3.3.4.orig/gcc/config.gcc gcc-3.3.4/gcc/config.gcc ---- gcc-3.3.4.orig/gcc/config.gcc 2004-04-29 06:42:47.000000000 +0200 -+++ gcc-3.3.4/gcc/config.gcc 2004-08-20 02:11:04.326143343 +0200 -@@ -699,6 +699,11 @@ - ;; - arm*-*-linux*) # ARM GNU/Linux with ELF - tm_file="dbxelf.h elfos.h arm/elf.h arm/linux-gas.h arm/linux-elf.h arm/aout.h arm/arm.h" -+ case $machine in -+ arm*b-*) -+ tm_defines="TARGET_BIG_ENDIAN_DEFAULT=1 $tm_defines" -+ ;; -+ esac - tmake_file="t-slibgcc-elf-ver t-linux arm/t-linux" - extra_parts="crtbegin.o crtbeginS.o crtend.o crtendS.o" - gnu_ld=yes diff --git a/patches/gcc/3.3.6/120-arm-pr22528.patch b/patches/gcc/3.3.6/120-arm-pr22528.patch deleted file mode 100644 index 0611e2c..0000000 --- a/patches/gcc/3.3.6/120-arm-pr22528.patch +++ /dev/null @@ -1,71 +0,0 @@ -From http://gcc.gnu.org/ml/gcc-patches/2003-11/msg00832.html, by -Richard Earnshaw. Fixes http://gcc.gnu.org/PR22528 - ---- gcc-3.3.4/gcc/config/arm/arm.md.orig 2004-03-30 22:43:44.000000000 +0200 -+++ gcc-3.3.4/gcc/config/arm/arm.md 2005-08-15 12:21:55.000000000 +0200 -@@ -4275,7 +4275,7 @@ - (set (match_dup 2) - (ashiftrt:SI (match_operand 0 "" "") (const_int 8))) - ;; store the high byte -- (set (match_dup 4) (subreg:QI (match_dup 2) 0))] ;explicit subreg safe -+ (set (match_dup 4) (match_dup 5))] - "TARGET_ARM" - " - { -@@ -4291,7 +4291,8 @@ - operands[1] = adjust_address (operands[1], QImode, 0); - operands[3] = gen_lowpart (QImode, operands[0]); - operands[0] = gen_lowpart (SImode, operands[0]); -- operands[2] = gen_reg_rtx (SImode); -+ operands[2] = gen_reg_rtx (SImode); -+ operands[5] = gen_lowpart (QImode, operands[2]); - }" - ) - -@@ -4299,7 +4300,7 @@ - [(set (match_dup 4) (match_dup 3)) - (set (match_dup 2) - (ashiftrt:SI (match_operand 0 "" "") (const_int 8))) -- (set (match_operand 1 "" "") (subreg:QI (match_dup 2) 3))] -+ (set (match_operand 1 "" "") (match_dup 5))] - "TARGET_ARM" - " - { -@@ -4316,13 +4317,14 @@ - operands[3] = gen_lowpart (QImode, operands[0]); - operands[0] = gen_lowpart (SImode, operands[0]); - operands[2] = gen_reg_rtx (SImode); -+ operands[5] = gen_lowpart (QImode, operands[2]); - }" - ) - - ;; Subroutine to store a half word integer constant into memory. - (define_expand "storeinthi" - [(set (match_operand 0 "" "") -- (subreg:QI (match_operand 1 "" "") 0)) -+ (match_operand 1 "" "")) - (set (match_dup 3) (match_dup 2))] - "TARGET_ARM" - " -@@ -4363,6 +4365,7 @@ - operands[3] = adjust_address (op0, QImode, 1); - operands[0] = adjust_address (operands[0], QImode, 0); - operands[2] = gen_lowpart (QImode, operands[2]); -+ operands[1] = gen_lowpart (QImode, operands[1]); - }" - ) - -@@ -4682,11 +4685,12 @@ - (set (match_dup 3) - (ashiftrt:SI (match_dup 2) (const_int 16))) - (set (match_operand:HI 0 "s_register_operand" "") -- (subreg:HI (match_dup 3) 0))] -+ (match_dup 4))] - "TARGET_ARM" - " - operands[2] = gen_reg_rtx (SImode); - operands[3] = gen_reg_rtx (SImode); -+ operands[4] = gen_lowpart (HImode, operands[3]); - " - ) - diff --git a/patches/gcc/4.0.0/100-fix-fixincl.patch b/patches/gcc/4.0.0/100-fix-fixincl.patch deleted file mode 100644 index 8051f31..0000000 --- a/patches/gcc/4.0.0/100-fix-fixincl.patch +++ /dev/null @@ -1,72 +0,0 @@ -See http://gcc.gnu.org/PR22541 - -From: Dan Kegel - -When building gcc-3.4.3 or gcc-4.0.[01] into a clean $PREFIX (the only two I've tried like this), -the configure script happily copies the glibc include files from include to sys-include; -here's the line from the log file (with $PREFIX instead of the real prefix): - -Copying $PREFIX/i686-unknown-linux-gnu/include to $PREFIX/i686-unknown-linux-gnu/sys-include - -But later, when running fixincludes, it gives the error message - The directory that should contain system headers does not exist: - $PREFIX/lib/gcc/i686-unknown-linux-gnu/3.4.3/../../../../i686-unknown-linux-gnu/sys-include - -Nevertheless, it continues building; the header files it installs in - $PREFIX/lib/gcc/i686-unknown-linux-gnu/3.4.3/include -do not include the boilerplate that would cause it to #include_next the -glibc headers in the system header directory. -Thus the resulting toolchain can't compile the following program: -#include -int x = PATH_MAX; -because its limits.h doesn't include the glibc header. - -That's not nice. I suspect the problem is that gcc/Makefile.in assumes that -it can refer to $PREFIX/i686-unknown-linux-gnu with the path - $PREFIX/lib/../i686-unknown-linux-gnu, but -that fails because the directory $PREFIX/lib doesn't exist during 'make all'; -it is only created later, during 'make install'. (Which makes this problem -confusing, since one only notices the breakage well after 'make install', -at which point the path configure complained about does exist, and has the -right stuff in it.) - -A possible fix is to replace the line in gcc/Makefile.in that says - SYSTEM_HEADER_DIR = @SYSTEM_HEADER_DIR@ -with a version that gets rid of extra ..'s, e.g. - SYSTEM_HEADER_DIR = `echo @SYSTEM_HEADER_DIR@ | sed -e :a -e "s,[^/]*/\.\.\/,,;ta"` -(hey, that's the first time I've ever used a label in a sed script; thanks to the sed faq -for explaining the :a ... ta method of looping to repeat a search-and-replace until it doesn't match.) - -[rediffed against gcc-4.0.0] - ---- gcc-4.0.0/gcc/Makefile.in.orig 2005-04-04 12:45:13.000000000 -0700 -+++ gcc-4.0.0/gcc/Makefile.in 2005-05-20 12:33:43.000000000 -0700 -@@ -378,7 +378,10 @@ - CROSS_SYSTEM_HEADER_DIR = @CROSS_SYSTEM_HEADER_DIR@ - - # autoconf sets SYSTEM_HEADER_DIR to one of the above. --SYSTEM_HEADER_DIR = @SYSTEM_HEADER_DIR@ -+# Purge it of unneccessary internal relative paths -+# to directories that might not exist yet. -+# The sed idiom for this is to repeat the search-and-replace until it doesn't match, using :a ... ta. -+SYSTEM_HEADER_DIR = `echo @SYSTEM_HEADER_DIR@ | sed -e :a -e "s,[^/]*/\.\.\/,," -e ta` - - # Control whether to run fixproto and fixincludes. - STMP_FIXPROTO = @STMP_FIXPROTO@ -@@ -2838,13 +2841,15 @@ - ../$(build_subdir)/fixincludes/fixincl: ; @ : - - # Build fixed copies of system files. -+# Abort if no system headers available, unless building a crosscompiler. -+# FIXME: abort unless building --without-headers would be more accurate and less ugly - stmp-fixinc: gsyslimits.h macro_list \ - ../$(build_subdir)/fixincludes/fixincl \ - ../$(build_subdir)/fixincludes/fixinc.sh - @if test ! -d ${SYSTEM_HEADER_DIR}; then \ - echo The directory that should contain system headers does not exist: >&2 ; \ - echo " ${SYSTEM_HEADER_DIR}" >&2 ; \ -- if test "x${SYSTEM_HEADER_DIR}" = "x${gcc_tooldir}/sys-include"; \ -+ if test "x${SYSTEM_HEADER_DIR}" = "x`echo "${gcc_tooldir}/sys-include" | sed -e :a -e "s,[^/]*/\.\.\/,," -e ta`"; \ - then sleep 1; else exit 1; fi; \ - fi - rm -rf include; mkdir include diff --git a/patches/gcc/4.0.0/110-arm-bigendian.patch b/patches/gcc/4.0.0/110-arm-bigendian.patch deleted file mode 100644 index d9bcffe..0000000 --- a/patches/gcc/4.0.0/110-arm-bigendian.patch +++ /dev/null @@ -1,79 +0,0 @@ -By Lennert Buytenhek -Adds support for arm*b-linux* big-endian ARM targets - -Fixes following build error for big-endian ARM targets: - -armeb-unknown-linux-gnu/gcc-4.0.0-20050410-glibc-2.3.4/bin/../lib/gcc/armeb-unknown-linux-gnu/4.0.0/../../../../armeb-unknown-linux-gnu/bin/ld: unrecognised emulation mode: armelf_linux -Supported emulations: armelfb_linux armelfb -collect2: ld returned 1 exit status -make[2]: *** [crosstool-0.32/build/armeb-unknown-linux-gnu/gcc-4.0.0-20050410-glibc-2.3.4/build-glibc/csu/crt1.o] Error 1 -make[2]: Leaving directory `crosstool-0.32/build/armeb-unknown-linux-gnu/gcc-4.0.0-20050410-glibc-2.3.4/glibc-2.3.4/csu' -make[1]: *** [csu/subdir_lib] Error 2 -make[1]: Leaving directory `crosstool-0.32/build/armeb-unknown-linux-gnu/gcc-4.0.0-20050410-glibc-2.3.4/glibc-2.3.4' -make: *** [lib] Error 2 - - -See http://gcc.gnu.org/PR16350 - ---- gcc-4.0-20050305/gcc/config/arm/linux-elf.h.orig 2005-03-23 18:44:54.822707377 +0100 -+++ gcc-4.0-20050305/gcc/config/arm/linux-elf.h 2005-03-23 18:46:18.228560206 +0100 -@@ -31,19 +31,33 @@ - /* Do not assume anything about header files. */ - #define NO_IMPLICIT_EXTERN_C - -+/* -+ * 'config.gcc' defines TARGET_BIG_ENDIAN_DEFAULT as 1 for -+ * arm*b-*-linux* (big endian) configurations. -+ */ -+#if TARGET_BIG_ENDIAN_DEFAULT -+#define TARGET_ENDIAN_DEFAULT ARM_FLAG_BIG_END -+#define TARGET_ENDIAN_OPTION "mbig-endian" -+#define TARGET_LINKER_EMULATION "armelfb_linux" -+#else -+#define TARGET_ENDIAN_DEFAULT 0 -+#define TARGET_ENDIAN_OPTION "mlittle-endian" -+#define TARGET_LINKER_EMULATION "armelf_linux" -+#endif -+ - #undef TARGET_DEFAULT_FLOAT_ABI - #define TARGET_DEFAULT_FLOAT_ABI ARM_FLOAT_ABI_HARD - - #undef TARGET_DEFAULT --#define TARGET_DEFAULT (0) -+#define TARGET_DEFAULT (TARGET_ENDIAN_DEFAULT) - - #define SUBTARGET_CPU_DEFAULT TARGET_CPU_arm6 - --#define SUBTARGET_EXTRA_LINK_SPEC " -m armelf_linux -p" -+#define SUBTARGET_EXTRA_LINK_SPEC " -m " TARGET_LINKER_EMULATION " -p" - - #undef MULTILIB_DEFAULTS - #define MULTILIB_DEFAULTS \ -- { "marm", "mlittle-endian", "mhard-float", "mno-thumb-interwork" } -+ { "marm", TARGET_ENDIAN_OPTION, "mhard-float", "mno-thumb-interwork" } - - /* The GNU C++ standard library requires that these macros be defined. */ - #undef CPLUSPLUS_CPP_SPEC -@@ -90,7 +104,7 @@ - %{rdynamic:-export-dynamic} \ - %{!dynamic-linker:-dynamic-linker /lib/ld-linux.so.2} \ - -X \ -- %{mbig-endian:-EB}" \ -+ %{mbig-endian:-EB} %{mlittle-endian:-EL}" \ - SUBTARGET_EXTRA_LINK_SPEC - - #define TARGET_OS_CPP_BUILTINS() \ ---- gcc-4.0-20050305/gcc/config.gcc.orig 2005-03-23 18:46:23.318105335 +0100 -+++ gcc-4.0-20050305/gcc/config.gcc 2005-03-23 18:47:41.592546386 +0100 -@@ -650,6 +650,11 @@ - ;; - arm*-*-linux*) # ARM GNU/Linux with ELF - 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-*-linux*) -+ tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=1" -+ ;; -+ esac - tmake_file="${tmake_file} arm/t-arm arm/t-linux" - extra_parts="crtbegin.o crtbeginS.o crtend.o crtendS.o" - gnu_ld=yes diff --git a/patches/gcc/4.0.0/120-pr20815-fix.patch b/patches/gcc/4.0.0/120-pr20815-fix.patch deleted file mode 100644 index 7ac8ab5..0000000 --- a/patches/gcc/4.0.0/120-pr20815-fix.patch +++ /dev/null @@ -1,121 +0,0 @@ -Date: 18 May 2005 22:47:59 -0000 -Message-ID: <20050518224759.7352.qmail@sourceware.org> -From: "hubicka at ucw dot cz" -To: dank@kegel.com -References: <20050407215701.20815.dank@kegel.com> -Reply-To: gcc-bugzilla@gcc.gnu.org -Subject: [Bug gcov/profile/20815] -fprofile-use barfs with "coverage mismatch for function '...' while reading counter 'arcs'." - - -------- Additional Comments From hubicka at ucw dot cz 2005-05-18 22:47 ------- -Subject: Re: [Bug gcov/profile/20815] -fprofile-use barfs with "coverage mismatch for function '...' while reading counter 'arcs'." - -> -> ------- Additional Comments From hubicka at ucw dot cz 2005-05-18 22:22 ------- -> Subject: Re: [Bug gcov/profile/20815] -fprofile-use barfs with "coverage mismatch for function '...' while reading counter 'arcs'." -> -> coverage_checksum_string already knows a bit about ignoring random seed -> produced mess. It looks like this needs to be extended somehow to -> handle namespaces too... - -This seems to solve the missmatch. Would it be possible to test it on -bigger testcase and if it works distile a testcase that don't use -file IO so it is more suitable for gcc regtesting? - -Index: coverage.c -=================================================================== -RCS file: /cvs/gcc/gcc/gcc/coverage.c,v -retrieving revision 1.6.2.12.2.12 -diff -c -3 -p -r1.6.2.12.2.12 coverage.c -*** gcc-old/gcc/coverage.c 18 May 2005 07:37:31 -0000 1.6.2.12.2.12 ---- gcc/gcc/coverage.c 18 May 2005 22:45:36 -0000 -*************** coverage_checksum_string (unsigned chksu -*** 471,505 **** - as the checksums are used only for sanity checking. */ - for (i = 0; string[i]; i++) - { - if (!strncmp (string + i, "_GLOBAL__", 9)) -! for (i = i + 9; string[i]; i++) -! if (string[i]=='_') -! { -! int y; -! unsigned seed; -! int scan; -! -! for (y = 1; y < 9; y++) -! if (!(string[i + y] >= '0' && string[i + y] <= '9') -! && !(string[i + y] >= 'A' && string[i + y] <= 'F')) -! break; -! if (y != 9 || string[i + 9] != '_') -! continue; -! for (y = 10; y < 18; y++) -! if (!(string[i + y] >= '0' && string[i + y] <= '9') -! && !(string[i + y] >= 'A' && string[i + y] <= 'F')) -! break; -! if (y != 18) -! continue; -! scan = sscanf (string + i + 10, "%X", &seed); -! gcc_assert (scan); -! if (seed != crc32_string (0, flag_random_seed)) -! continue; -! string = dup = xstrdup (string); -! for (y = 10; y < 18; y++) -! dup[i + y] = '0'; -! break; -! } - break; - } - ---- 471,511 ---- - as the checksums are used only for sanity checking. */ - for (i = 0; string[i]; i++) - { -+ int offset = 0; -+ if (!strncmp (string + i, "_GLOBAL__N_", 11)) -+ offset = 11; - if (!strncmp (string + i, "_GLOBAL__", 9)) -! offset = 9; -! -! /* C++ namespaces do have scheme: -! _GLOBAL__N___functionname -! since filename might contain extra underscores there seems -! to be no better chance then walk all possible offsets looking -! for magicnuber. */ -! if (offset) -! for (;string[offset]; offset++) -! for (i = i + offset; string[i]; i++) -! if (string[i]=='_') -! { -! int y; -! -! for (y = 1; y < 9; y++) -! if (!(string[i + y] >= '0' && string[i + y] <= '9') -! && !(string[i + y] >= 'A' && string[i + y] <= 'F')) -! break; -! if (y != 9 || string[i + 9] != '_') -! continue; -! for (y = 10; y < 18; y++) -! if (!(string[i + y] >= '0' && string[i + y] <= '9') -! && !(string[i + y] >= 'A' && string[i + y] <= 'F')) -! break; -! if (y != 18) -! continue; -! if (!dup) -! string = dup = xstrdup (string); -! for (y = 10; y < 18; y++) -! dup[i + y] = '0'; -! } - break; - } - - - --- - - -http://gcc.gnu.org/bugzilla/show_bug.cgi?id=20815 - -------- You are receiving this mail because: ------- -You reported the bug, or are watching the reporter. - - diff --git a/patches/gcc/4.0.0/130-pr20973-fix.patch b/patches/gcc/4.0.0/130-pr20973-fix.patch deleted file mode 100644 index 7451219..0000000 --- a/patches/gcc/4.0.0/130-pr20973-fix.patch +++ /dev/null @@ -1,80 +0,0 @@ -http://gcc.gnu.org/PR20973 - -"gcc 4 (about RC1) miscompiles khtml, in fact something in CSS, which basically -leads to all websites being misrendered. I can't easily reduce the testcase, -but have applied the whole preprocessed source of css/cssstyleselector.ii. - -It is to be compiled with g++ -O2 -fPIC -march=i586 -mtune=i686 --fno-exceptions. A more detailed analysis will follow, as we've found out -some things already." - ---- - -Subject: Bug 20973 - -CVSROOT: /cvs/gcc -Module name: gcc -Branch: gcc-4_0-branch -Changes by: matz@gcc.gnu.org 2005-04-22 17:30:21 - -Modified files: - gcc : ChangeLog reload.c - -Log message: - PR middle-end/20973 - * reload.c (push_reload, find_dummy_reload): Check for uninitialized - pseudos. - -Patches: -http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/ChangeLog.diff?cvsroot=gcc&only_with_tag=gcc-4_0-branch&r1=2.7592.2.177&r2=2.7592.2.178 -http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/reload.c.diff?cvsroot=gcc&only_with_tag=gcc-4_0-branch&r1=1.268&r2=1.268.2.1 - ---- - -=================================================================== -RCS file: /cvs/gcc/gcc/gcc/reload.c,v -retrieving revision 1.268 -retrieving revision 1.268.2.1 -diff -u -r1.268 -r1.268.2.1 ---- gcc/gcc/reload.c 2005/02/24 22:06:06 1.268 -+++ gcc/gcc/reload.c 2005/04/22 17:30:15 1.268.2.1 -@@ -1520,7 +1520,7 @@ - But if there is no spilling in this block, that is OK. - An explicitly used hard reg cannot be a spill reg. */ - -- if (rld[i].reg_rtx == 0 && in != 0) -+ if (rld[i].reg_rtx == 0 && in != 0 && hard_regs_live_known) - { - rtx note; - int regno; -@@ -1534,6 +1534,11 @@ - && REG_P (XEXP (note, 0)) - && (regno = REGNO (XEXP (note, 0))) < FIRST_PSEUDO_REGISTER - && reg_mentioned_p (XEXP (note, 0), in) -+ /* Check that we don't use a hardreg for an uninitialized -+ pseudo. See also find_dummy_reload(). */ -+ && (ORIGINAL_REGNO (XEXP (note, 0)) < FIRST_PSEUDO_REGISTER -+ || ! bitmap_bit_p (ENTRY_BLOCK_PTR->global_live_at_end, -+ ORIGINAL_REGNO (XEXP (note, 0)))) - && ! refers_to_regno_for_reload_p (regno, - (regno - + hard_regno_nregs[regno] -@@ -1997,7 +2002,17 @@ - is a subreg, and in that case, out - has a real mode. */ - (GET_MODE (out) != VOIDmode -- ? GET_MODE (out) : outmode))) -+ ? GET_MODE (out) : outmode)) -+ /* But only do all this if we can be sure, that this input -+ operand doesn't correspond with an uninitialized pseudoreg. -+ global can assign some hardreg to it, which is the same as -+ a different pseudo also currently live (as it can ignore the -+ conflict). So we never must introduce writes to such hardregs, -+ as they would clobber the other live pseudo using the same. -+ See also PR20973. */ -+ && (ORIGINAL_REGNO (in) < FIRST_PSEUDO_REGISTER -+ || ! bitmap_bit_p (ENTRY_BLOCK_PTR->global_live_at_end, -+ ORIGINAL_REGNO (in)))) - { - unsigned int regno = REGNO (in) + in_offset; - unsigned int nwords = hard_regno_nregs[regno][inmode]; diff --git a/patches/gcc/4.0.0/140-pr21173-fix.patch b/patches/gcc/4.0.0/140-pr21173-fix.patch deleted file mode 100644 index 0582d75..0000000 --- a/patches/gcc/4.0.0/140-pr21173-fix.patch +++ /dev/null @@ -1,66 +0,0 @@ -See http://gcc.gnu.org/PR21173 -This is a fix for a last minute brown-bag bug with gcc-4.0.0 - - ------- Additional Comment #24 From CVS Commits 2005-04-25 14:03 [reply] ------- -Subject: Bug 21173 - -CVSROOT: /cvs/gcc -Module name: gcc -Branch: gcc-4_0-branch -Changes by: dberlin@gcc.gnu.org 2005-04-25 14:02:38 - -Modified files: - gcc : ChangeLog tree-ssa-pre.c - -Log message: - 2005-04-25 Daniel Berlin - - Fix PR tree-optimization/21173 - - * tree-ssa-pre.c (create_expression_by_pieces): Call unshare_expr - on things we pass to force_gimple_operand. Don't try to special - case min_invariants. - -Patches: -http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/ChangeLog.diff?cvsroot=gcc&only_with_tag=gcc-4_0-branch&r1=2.7592.2.192&r2=2.7592.2.193 -http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/tree-ssa-pre.c.diff?cvsroot=gcc&only_with_tag=gcc-4_0-branch&r1=2.65.4.2&r2=2.65.4.3 - -=================================================================== -RCS file: /cvs/gcc/gcc/gcc/tree-ssa-pre.c,v -retrieving revision 2.65.4.2 -retrieving revision 2.65.4.3 -diff -u -r2.65.4.2 -r2.65.4.3 ---- gcc/gcc/tree-ssa-pre.c 2005/04/17 23:40:31 2.65.4.2 -+++ gcc/gcc/tree-ssa-pre.c 2005/04/25 14:02:31 2.65.4.3 -@@ -1330,7 +1330,8 @@ - - folded = fold (build (TREE_CODE (expr), TREE_TYPE (expr), - genop1, genop2)); -- newexpr = force_gimple_operand (folded, &forced_stmts, false, NULL); -+ newexpr = force_gimple_operand (unshare_expr (folded), -+ &forced_stmts, false, NULL); - if (forced_stmts) - { - tsi = tsi_start (forced_stmts); -@@ -1372,14 +1373,8 @@ - add_referenced_tmp_var (temp); - folded = fold (build (TREE_CODE (expr), TREE_TYPE (expr), - genop1)); -- /* If the generated operand is already GIMPLE min_invariant -- just use it instead of calling force_gimple_operand on it, -- since that may make it not invariant by copying it into an -- assignment. */ -- if (!is_gimple_min_invariant (genop1)) -- newexpr = force_gimple_operand (folded, &forced_stmts, false, NULL); -- else -- newexpr = genop1; -+ newexpr = force_gimple_operand (unshare_expr (folded), -+ &forced_stmts, false, NULL); - if (forced_stmts) - { - tsi = tsi_start (forced_stmts); - - 0K . 1.24 MB/s - -13:16:54 (1.24 MB/s) - `-' saved [1303] - diff --git a/patches/gcc/4.0.0/150-pr21951.patch b/patches/gcc/4.0.0/150-pr21951.patch deleted file mode 100644 index 8c5ffb9..0000000 --- a/patches/gcc/4.0.0/150-pr21951.patch +++ /dev/null @@ -1,153 +0,0 @@ -Workaround for buglet in std::vector etc. when compiling -with gcc-4.0.0 -Wall -O -fno-exceptions -Fixes: - -.../include/c++/4.0.0/bits/vector.tcc: In member function 'void std::vector<_Tp, -_Alloc>::reserve(size_t) [with _Tp = int, _Alloc = std::allocator]': -.../include/c++/4.0.0/bits/vector.tcc:78: warning: control may reach end of -non-void function 'typename _Alloc::pointer std::vector<_Tp, -_Alloc>::_M_allocate_and_copy(size_t, _ForwardIterator, _ForwardIterator) [with -_ForwardIterator = int*, _Tp = int, _Alloc = std::allocator]' being inlined - -See http://gcc.gnu.org/PR21951 - ---- gcc-4.0.1-20050607/libstdc++-v3/include/bits/stl_vector.h.old 2005-06-11 03:58:20.000000000 -0700 -+++ gcc-4.0.1-20050607/libstdc++-v3/include/bits/stl_vector.h 2005-06-11 04:01:21.000000000 -0700 -@@ -765,13 +765,13 @@ - { - std::__uninitialized_copy_a(__first, __last, __result, - this->get_allocator()); -- return __result; - } - catch(...) - { - _M_deallocate(__result, __n); - __throw_exception_again; - } -+ return __result; - } - - ---- gcc-4.0.1-20050607/libstdc++-v3/include/bits/stl_uninitialized.h.old 2005-06-11 03:58:20.000000000 -0700 -+++ gcc-4.0.1-20050607/libstdc++-v3/include/bits/stl_uninitialized.h 2005-06-11 04:05:18.990003248 -0700 -@@ -84,13 +84,13 @@ - { - for (; __first != __last; ++__first, ++__cur) - std::_Construct(&*__cur, *__first); -- return __cur; - } - catch(...) - { - std::_Destroy(__result, __cur); - __throw_exception_again; - } -+ return __cur; - } - - /** -@@ -236,13 +236,13 @@ - { - for (; __first != __last; ++__first, ++__cur) - __alloc.construct(&*__cur, *__first); -- return __cur; - } - catch(...) - { - std::_Destroy(__result, __cur, __alloc); - __throw_exception_again; - } -+ return __cur; - } - - template -@@ -337,11 +337,13 @@ - { - return std::__uninitialized_copy_a(__first2, __last2, __mid, __alloc); - } -+#ifdef __EXCEPTIONS // work around http://gcc.gnu.org/PR21951 in gcc-4.0 only - catch(...) - { - std::_Destroy(__result, __mid, __alloc); - __throw_exception_again; - } -+#endif - } - - // __uninitialized_fill_copy -@@ -360,11 +362,13 @@ - { - return std::__uninitialized_copy_a(__first, __last, __mid, __alloc); - } -+#ifdef __EXCEPTIONS // work around http://gcc.gnu.org/PR21951 in gcc-4.0 only - catch(...) - { - std::_Destroy(__result, __mid, __alloc); - __throw_exception_again; - } -+#endif - } - - // __uninitialized_copy_fill ---- gcc-4.0.1-20050607/libstdc++-v3/include/ext/rope.old 2005-06-11 03:58:20.000000000 -0700 -+++ gcc-4.0.1-20050607/libstdc++-v3/include/ext/rope 2005-06-11 04:13:26.628870872 -0700 -@@ -1645,11 +1645,13 @@ - _S_cond_store_eos(__buf[__size]); - try - { return _S_new_RopeLeaf(__buf, __size, __a); } -+#ifdef __EXCEPTIONS // work around http://gcc.gnu.org/PR21951 in gcc-4.0 only - catch(...) - { - _RopeRep::__STL_FREE_STRING(__buf, __size, __a); - __throw_exception_again; - } -+#endif - } - - // Concatenation of nonempty strings. ---- gcc-4.0.1-20050607/libstdc++-v3/include/ext/memory.old 2005-06-11 03:58:20.000000000 -0700 -+++ gcc-4.0.1-20050607/libstdc++-v3/include/ext/memory 2005-06-11 04:13:52.897877376 -0700 -@@ -85,11 +85,13 @@ - std::_Construct(&*__cur, *__first); - return pair<_InputIter, _ForwardIter>(__first, __cur); - } -+#ifdef __EXCEPTIONS // work around http://gcc.gnu.org/PR21951 in gcc-4.0 only - catch(...) - { - std::_Destroy(__result, __cur); - __throw_exception_again; - } -+#endif - } - - template -@@ -144,11 +146,13 @@ - __alloc.construct(&*__cur, *__first); - return pair<_InputIter, _ForwardIter>(__first, __cur); - } -+#ifdef __EXCEPTIONS // work around http://gcc.gnu.org/PR21951 in gcc-4.0 only - catch(...) - { - std::_Destroy(__result, __cur, __alloc); - __throw_exception_again; - } -+#endif - } - - templateget_allocator().construct(&__n->_M_val, __obj); -- return __n; - } - catch(...) - { - _M_put_node(__n); - __throw_exception_again; - } -+ return __n; - } - - void diff --git a/patches/gcc/4.0.1/100-fix-fixincl.patch b/patches/gcc/4.0.1/100-fix-fixincl.patch deleted file mode 100644 index 8051f31..0000000 --- a/patches/gcc/4.0.1/100-fix-fixincl.patch +++ /dev/null @@ -1,72 +0,0 @@ -See http://gcc.gnu.org/PR22541 - -From: Dan Kegel - -When building gcc-3.4.3 or gcc-4.0.[01] into a clean $PREFIX (the only two I've tried like this), -the configure script happily copies the glibc include files from include to sys-include; -here's the line from the log file (with $PREFIX instead of the real prefix): - -Copying $PREFIX/i686-unknown-linux-gnu/include to $PREFIX/i686-unknown-linux-gnu/sys-include - -But later, when running fixincludes, it gives the error message - The directory that should contain system headers does not exist: - $PREFIX/lib/gcc/i686-unknown-linux-gnu/3.4.3/../../../../i686-unknown-linux-gnu/sys-include - -Nevertheless, it continues building; the header files it installs in - $PREFIX/lib/gcc/i686-unknown-linux-gnu/3.4.3/include -do not include the boilerplate that would cause it to #include_next the -glibc headers in the system header directory. -Thus the resulting toolchain can't compile the following program: -#include -int x = PATH_MAX; -because its limits.h doesn't include the glibc header. - -That's not nice. I suspect the problem is that gcc/Makefile.in assumes that -it can refer to $PREFIX/i686-unknown-linux-gnu with the path - $PREFIX/lib/../i686-unknown-linux-gnu, but -that fails because the directory $PREFIX/lib doesn't exist during 'make all'; -it is only created later, during 'make install'. (Which makes this problem -confusing, since one only notices the breakage well after 'make install', -at which point the path configure complained about does exist, and has the -right stuff in it.) - -A possible fix is to replace the line in gcc/Makefile.in that says - SYSTEM_HEADER_DIR = @SYSTEM_HEADER_DIR@ -with a version that gets rid of extra ..'s, e.g. - SYSTEM_HEADER_DIR = `echo @SYSTEM_HEADER_DIR@ | sed -e :a -e "s,[^/]*/\.\.\/,,;ta"` -(hey, that's the first time I've ever used a label in a sed script; thanks to the sed faq -for explaining the :a ... ta method of looping to repeat a search-and-replace until it doesn't match.) - -[rediffed against gcc-4.0.0] - ---- gcc-4.0.0/gcc/Makefile.in.orig 2005-04-04 12:45:13.000000000 -0700 -+++ gcc-4.0.0/gcc/Makefile.in 2005-05-20 12:33:43.000000000 -0700 -@@ -378,7 +378,10 @@ - CROSS_SYSTEM_HEADER_DIR = @CROSS_SYSTEM_HEADER_DIR@ - - # autoconf sets SYSTEM_HEADER_DIR to one of the above. --SYSTEM_HEADER_DIR = @SYSTEM_HEADER_DIR@ -+# Purge it of unneccessary internal relative paths -+# to directories that might not exist yet. -+# The sed idiom for this is to repeat the search-and-replace until it doesn't match, using :a ... ta. -+SYSTEM_HEADER_DIR = `echo @SYSTEM_HEADER_DIR@ | sed -e :a -e "s,[^/]*/\.\.\/,," -e ta` - - # Control whether to run fixproto and fixincludes. - STMP_FIXPROTO = @STMP_FIXPROTO@ -@@ -2838,13 +2841,15 @@ - ../$(build_subdir)/fixincludes/fixincl: ; @ : - - # Build fixed copies of system files. -+# Abort if no system headers available, unless building a crosscompiler. -+# FIXME: abort unless building --without-headers would be more accurate and less ugly - stmp-fixinc: gsyslimits.h macro_list \ - ../$(build_subdir)/fixincludes/fixincl \ - ../$(build_subdir)/fixincludes/fixinc.sh - @if test ! -d ${SYSTEM_HEADER_DIR}; then \ - echo The directory that should contain system headers does not exist: >&2 ; \ - echo " ${SYSTEM_HEADER_DIR}" >&2 ; \ -- if test "x${SYSTEM_HEADER_DIR}" = "x${gcc_tooldir}/sys-include"; \ -+ if test "x${SYSTEM_HEADER_DIR}" = "x`echo "${gcc_tooldir}/sys-include" | sed -e :a -e "s,[^/]*/\.\.\/,," -e ta`"; \ - then sleep 1; else exit 1; fi; \ - fi - rm -rf include; mkdir include diff --git a/patches/gcc/4.0.1/110-pr20815-fix.patch b/patches/gcc/4.0.1/110-pr20815-fix.patch deleted file mode 100644 index 7ac8ab5..0000000 --- a/patches/gcc/4.0.1/110-pr20815-fix.patch +++ /dev/null @@ -1,121 +0,0 @@ -Date: 18 May 2005 22:47:59 -0000 -Message-ID: <20050518224759.7352.qmail@sourceware.org> -From: "hubicka at ucw dot cz" -To: dank@kegel.com -References: <20050407215701.20815.dank@kegel.com> -Reply-To: gcc-bugzilla@gcc.gnu.org -Subject: [Bug gcov/profile/20815] -fprofile-use barfs with "coverage mismatch for function '...' while reading counter 'arcs'." - - -------- Additional Comments From hubicka at ucw dot cz 2005-05-18 22:47 ------- -Subject: Re: [Bug gcov/profile/20815] -fprofile-use barfs with "coverage mismatch for function '...' while reading counter 'arcs'." - -> -> ------- Additional Comments From hubicka at ucw dot cz 2005-05-18 22:22 ------- -> Subject: Re: [Bug gcov/profile/20815] -fprofile-use barfs with "coverage mismatch for function '...' while reading counter 'arcs'." -> -> coverage_checksum_string already knows a bit about ignoring random seed -> produced mess. It looks like this needs to be extended somehow to -> handle namespaces too... - -This seems to solve the missmatch. Would it be possible to test it on -bigger testcase and if it works distile a testcase that don't use -file IO so it is more suitable for gcc regtesting? - -Index: coverage.c -=================================================================== -RCS file: /cvs/gcc/gcc/gcc/coverage.c,v -retrieving revision 1.6.2.12.2.12 -diff -c -3 -p -r1.6.2.12.2.12 coverage.c -*** gcc-old/gcc/coverage.c 18 May 2005 07:37:31 -0000 1.6.2.12.2.12 ---- gcc/gcc/coverage.c 18 May 2005 22:45:36 -0000 -*************** coverage_checksum_string (unsigned chksu -*** 471,505 **** - as the checksums are used only for sanity checking. */ - for (i = 0; string[i]; i++) - { - if (!strncmp (string + i, "_GLOBAL__", 9)) -! for (i = i + 9; string[i]; i++) -! if (string[i]=='_') -! { -! int y; -! unsigned seed; -! int scan; -! -! for (y = 1; y < 9; y++) -! if (!(string[i + y] >= '0' && string[i + y] <= '9') -! && !(string[i + y] >= 'A' && string[i + y] <= 'F')) -! break; -! if (y != 9 || string[i + 9] != '_') -! continue; -! for (y = 10; y < 18; y++) -! if (!(string[i + y] >= '0' && string[i + y] <= '9') -! && !(string[i + y] >= 'A' && string[i + y] <= 'F')) -! break; -! if (y != 18) -! continue; -! scan = sscanf (string + i + 10, "%X", &seed); -! gcc_assert (scan); -! if (seed != crc32_string (0, flag_random_seed)) -! continue; -! string = dup = xstrdup (string); -! for (y = 10; y < 18; y++) -! dup[i + y] = '0'; -! break; -! } - break; - } - ---- 471,511 ---- - as the checksums are used only for sanity checking. */ - for (i = 0; string[i]; i++) - { -+ int offset = 0; -+ if (!strncmp (string + i, "_GLOBAL__N_", 11)) -+ offset = 11; - if (!strncmp (string + i, "_GLOBAL__", 9)) -! offset = 9; -! -! /* C++ namespaces do have scheme: -! _GLOBAL__N___functionname -! since filename might contain extra underscores there seems -! to be no better chance then walk all possible offsets looking -! for magicnuber. */ -! if (offset) -! for (;string[offset]; offset++) -! for (i = i + offset; string[i]; i++) -! if (string[i]=='_') -! { -! int y; -! -! for (y = 1; y < 9; y++) -! if (!(string[i + y] >= '0' && string[i + y] <= '9') -! && !(string[i + y] >= 'A' && string[i + y] <= 'F')) -! break; -! if (y != 9 || string[i + 9] != '_') -! continue; -! for (y = 10; y < 18; y++) -! if (!(string[i + y] >= '0' && string[i + y] <= '9') -! && !(string[i + y] >= 'A' && string[i + y] <= 'F')) -! break; -! if (y != 18) -! continue; -! if (!dup) -! string = dup = xstrdup (string); -! for (y = 10; y < 18; y++) -! dup[i + y] = '0'; -! } - break; - } - - - --- - - -http://gcc.gnu.org/bugzilla/show_bug.cgi?id=20815 - -------- You are receiving this mail because: ------- -You reported the bug, or are watching the reporter. - - diff --git a/patches/gcc/4.0.1/120-pr21951-fix2.patch b/patches/gcc/4.0.1/120-pr21951-fix2.patch deleted file mode 100644 index 5e35a1e..0000000 --- a/patches/gcc/4.0.1/120-pr21951-fix2.patch +++ /dev/null @@ -1,71 +0,0 @@ -Workaround for buglet in std::vector etc. when compiling -with gcc-4.0.1 -Wall -O -fno-exceptions -Fixes: - -.../include/c++/4.0.0/bits/vector.tcc: In member function 'void std::vector<_Tp, -_Alloc>::reserve(size_t) [with _Tp = int, _Alloc = std::allocator]': -.../include/c++/4.0.0/bits/vector.tcc:78: warning: control may reach end of -non-void function 'typename _Alloc::pointer std::vector<_Tp, -_Alloc>::_M_allocate_and_copy(size_t, _ForwardIterator, _ForwardIterator) [with -_ForwardIterator = int*, _Tp = int, _Alloc = std::allocator]' being inlined - -See http://gcc.gnu.org/PR21951 - -To: gcc-patches at gcc dot gnu dot org -Subject: [4.0.x] may reach end warning in system headers -Message-Id: <20050701183024.E138714C16A9@geoffk5.apple.com> -Date: Fri, 1 Jul 2005 11:30:24 -0700 (PDT) -From: gkeating at apple dot com (Geoffrey Keating) - - -One of our users was getting - -/usr/include/gcc/darwin/4.0/c++/bits/stl_uninitialized.h:113: warning: -control may reach end of non-void function '_ForwardIterator -std::__uninitialized_copy_aux(_InputIterator, _InputIterator, -_ForwardIterator, __false_type) [with _InputIterator = -__gnu_cxx::__normal_iterator > >, _ForwardIterator = -__gnu_cxx::__normal_iterator > >]' being inlined - -which shouldn't be happening, he has no way to change a standard C++ -header. The warning is bogus anyway, but it's fixed in 4.1 through -the CFG changes, which I don't really want to backport to the 4.0 -branch, so instead I'll add this patch. Other warnings generated from -tree-inline.c check for DECL_SYSTEM_HEADER like this. - -Bootstrapped & tested on powerpc-darwin8, I'll commit when the branch -is unfrozen. - --- -- Geoffrey Keating - -===File ~/patches/gcc-40-4121982.patch====================== -Index: ChangeLog -2005-06-28 Geoffrey Keating - - * tree-inline.c (expand_call_inline): Prevent 'may reach end' - warning in system headers. - -Index: tree-inline.c -=================================================================== -RCS file: /cvs/gcc/gcc/gcc/tree-inline.c,v -retrieving revision 1.170.8.4 -diff -u -p -u -p -r1.170.8.4 tree-inline.c ---- gcc-4.0.1/gcc/tree-inline.c.old 6 Jun 2005 19:20:32 -0000 1.170.8.4 -+++ gcc-4.0.1/gcc/tree-inline.c 1 Jul 2005 18:27:26 -0000 -@@ -1693,7 +1693,8 @@ expand_call_inline (tree *tp, int *walk_ - && !TREE_NO_WARNING (fn) - && !VOID_TYPE_P (TREE_TYPE (TREE_TYPE (fn))) - && return_slot_addr == NULL_TREE -- && block_may_fallthru (copy)) -+ && block_may_fallthru (copy) -+ && !DECL_IN_SYSTEM_HEADER (fn)) - { - warning ("control may reach end of non-void function %qD being inlined", - fn); -============================================================ - diff --git a/patches/gcc/4.0.2/100-fix-fixincl.patch b/patches/gcc/4.0.2/100-fix-fixincl.patch deleted file mode 100644 index 8051f31..0000000 --- a/patches/gcc/4.0.2/100-fix-fixincl.patch +++ /dev/null @@ -1,72 +0,0 @@ -See http://gcc.gnu.org/PR22541 - -From: Dan Kegel - -When building gcc-3.4.3 or gcc-4.0.[01] into a clean $PREFIX (the only two I've tried like this), -the configure script happily copies the glibc include files from include to sys-include; -here's the line from the log file (with $PREFIX instead of the real prefix): - -Copying $PREFIX/i686-unknown-linux-gnu/include to $PREFIX/i686-unknown-linux-gnu/sys-include - -But later, when running fixincludes, it gives the error message - The directory that should contain system headers does not exist: - $PREFIX/lib/gcc/i686-unknown-linux-gnu/3.4.3/../../../../i686-unknown-linux-gnu/sys-include - -Nevertheless, it continues building; the header files it installs in - $PREFIX/lib/gcc/i686-unknown-linux-gnu/3.4.3/include -do not include the boilerplate that would cause it to #include_next the -glibc headers in the system header directory. -Thus the resulting toolchain can't compile the following program: -#include -int x = PATH_MAX; -because its limits.h doesn't include the glibc header. - -That's not nice. I suspect the problem is that gcc/Makefile.in assumes that -it can refer to $PREFIX/i686-unknown-linux-gnu with the path - $PREFIX/lib/../i686-unknown-linux-gnu, but -that fails because the directory $PREFIX/lib doesn't exist during 'make all'; -it is only created later, during 'make install'. (Which makes this problem -confusing, since one only notices the breakage well after 'make install', -at which point the path configure complained about does exist, and has the -right stuff in it.) - -A possible fix is to replace the line in gcc/Makefile.in that says - SYSTEM_HEADER_DIR = @SYSTEM_HEADER_DIR@ -with a version that gets rid of extra ..'s, e.g. - SYSTEM_HEADER_DIR = `echo @SYSTEM_HEADER_DIR@ | sed -e :a -e "s,[^/]*/\.\.\/,,;ta"` -(hey, that's the first time I've ever used a label in a sed script; thanks to the sed faq -for explaining the :a ... ta method of looping to repeat a search-and-replace until it doesn't match.) - -[rediffed against gcc-4.0.0] - ---- gcc-4.0.0/gcc/Makefile.in.orig 2005-04-04 12:45:13.000000000 -0700 -+++ gcc-4.0.0/gcc/Makefile.in 2005-05-20 12:33:43.000000000 -0700 -@@ -378,7 +378,10 @@ - CROSS_SYSTEM_HEADER_DIR = @CROSS_SYSTEM_HEADER_DIR@ - - # autoconf sets SYSTEM_HEADER_DIR to one of the above. --SYSTEM_HEADER_DIR = @SYSTEM_HEADER_DIR@ -+# Purge it of unneccessary internal relative paths -+# to directories that might not exist yet. -+# The sed idiom for this is to repeat the search-and-replace until it doesn't match, using :a ... ta. -+SYSTEM_HEADER_DIR = `echo @SYSTEM_HEADER_DIR@ | sed -e :a -e "s,[^/]*/\.\.\/,," -e ta` - - # Control whether to run fixproto and fixincludes. - STMP_FIXPROTO = @STMP_FIXPROTO@ -@@ -2838,13 +2841,15 @@ - ../$(build_subdir)/fixincludes/fixincl: ; @ : - - # Build fixed copies of system files. -+# Abort if no system headers available, unless building a crosscompiler. -+# FIXME: abort unless building --without-headers would be more accurate and less ugly - stmp-fixinc: gsyslimits.h macro_list \ - ../$(build_subdir)/fixincludes/fixincl \ - ../$(build_subdir)/fixincludes/fixinc.sh - @if test ! -d ${SYSTEM_HEADER_DIR}; then \ - echo The directory that should contain system headers does not exist: >&2 ; \ - echo " ${SYSTEM_HEADER_DIR}" >&2 ; \ -- if test "x${SYSTEM_HEADER_DIR}" = "x${gcc_tooldir}/sys-include"; \ -+ if test "x${SYSTEM_HEADER_DIR}" = "x`echo "${gcc_tooldir}/sys-include" | sed -e :a -e "s,[^/]*/\.\.\/,," -e ta`"; \ - then sleep 1; else exit 1; fi; \ - fi - rm -rf include; mkdir include diff --git a/patches/gcc/4.0.2/110-pr20815-fix.patch b/patches/gcc/4.0.2/110-pr20815-fix.patch deleted file mode 100644 index 7ac8ab5..0000000 --- a/patches/gcc/4.0.2/110-pr20815-fix.patch +++ /dev/null @@ -1,121 +0,0 @@ -Date: 18 May 2005 22:47:59 -0000 -Message-ID: <20050518224759.7352.qmail@sourceware.org> -From: "hubicka at ucw dot cz" -To: dank@kegel.com -References: <20050407215701.20815.dank@kegel.com> -Reply-To: gcc-bugzilla@gcc.gnu.org -Subject: [Bug gcov/profile/20815] -fprofile-use barfs with "coverage mismatch for function '...' while reading counter 'arcs'." - - -------- Additional Comments From hubicka at ucw dot cz 2005-05-18 22:47 ------- -Subject: Re: [Bug gcov/profile/20815] -fprofile-use barfs with "coverage mismatch for function '...' while reading counter 'arcs'." - -> -> ------- Additional Comments From hubicka at ucw dot cz 2005-05-18 22:22 ------- -> Subject: Re: [Bug gcov/profile/20815] -fprofile-use barfs with "coverage mismatch for function '...' while reading counter 'arcs'." -> -> coverage_checksum_string already knows a bit about ignoring random seed -> produced mess. It looks like this needs to be extended somehow to -> handle namespaces too... - -This seems to solve the missmatch. Would it be possible to test it on -bigger testcase and if it works distile a testcase that don't use -file IO so it is more suitable for gcc regtesting? - -Index: coverage.c -=================================================================== -RCS file: /cvs/gcc/gcc/gcc/coverage.c,v -retrieving revision 1.6.2.12.2.12 -diff -c -3 -p -r1.6.2.12.2.12 coverage.c -*** gcc-old/gcc/coverage.c 18 May 2005 07:37:31 -0000 1.6.2.12.2.12 ---- gcc/gcc/coverage.c 18 May 2005 22:45:36 -0000 -*************** coverage_checksum_string (unsigned chksu -*** 471,505 **** - as the checksums are used only for sanity checking. */ - for (i = 0; string[i]; i++) - { - if (!strncmp (string + i, "_GLOBAL__", 9)) -! for (i = i + 9; string[i]; i++) -! if (string[i]=='_') -! { -! int y; -! unsigned seed; -! int scan; -! -! for (y = 1; y < 9; y++) -! if (!(string[i + y] >= '0' && string[i + y] <= '9') -! && !(string[i + y] >= 'A' && string[i + y] <= 'F')) -! break; -! if (y != 9 || string[i + 9] != '_') -! continue; -! for (y = 10; y < 18; y++) -! if (!(string[i + y] >= '0' && string[i + y] <= '9') -! && !(string[i + y] >= 'A' && string[i + y] <= 'F')) -! break; -! if (y != 18) -! continue; -! scan = sscanf (string + i + 10, "%X", &seed); -! gcc_assert (scan); -! if (seed != crc32_string (0, flag_random_seed)) -! continue; -! string = dup = xstrdup (string); -! for (y = 10; y < 18; y++) -! dup[i + y] = '0'; -! break; -! } - break; - } - ---- 471,511 ---- - as the checksums are used only for sanity checking. */ - for (i = 0; string[i]; i++) - { -+ int offset = 0; -+ if (!strncmp (string + i, "_GLOBAL__N_", 11)) -+ offset = 11; - if (!strncmp (string + i, "_GLOBAL__", 9)) -! offset = 9; -! -! /* C++ namespaces do have scheme: -! _GLOBAL__N___functionname -! since filename might contain extra underscores there seems -! to be no better chance then walk all possible offsets looking -! for magicnuber. */ -! if (offset) -! for (;string[offset]; offset++) -! for (i = i + offset; string[i]; i++) -! if (string[i]=='_') -! { -! int y; -! -! for (y = 1; y < 9; y++) -! if (!(string[i + y] >= '0' && string[i + y] <= '9') -! && !(string[i + y] >= 'A' && string[i + y] <= 'F')) -! break; -! if (y != 9 || string[i + 9] != '_') -! continue; -! for (y = 10; y < 18; y++) -! if (!(string[i + y] >= '0' && string[i + y] <= '9') -! && !(string[i + y] >= 'A' && string[i + y] <= 'F')) -! break; -! if (y != 18) -! continue; -! if (!dup) -! string = dup = xstrdup (string); -! for (y = 10; y < 18; y++) -! dup[i + y] = '0'; -! } - break; - } - - - --- - - -http://gcc.gnu.org/bugzilla/show_bug.cgi?id=20815 - -------- You are receiving this mail because: ------- -You reported the bug, or are watching the reporter. - - diff --git a/patches/gcc/4.0.2/120-pr21623-workaround.patch b/patches/gcc/4.0.2/120-pr21623-workaround.patch deleted file mode 100644 index 90453fb..0000000 --- a/patches/gcc/4.0.2/120-pr21623-workaround.patch +++ /dev/null @@ -1,53 +0,0 @@ -Message-ID: <434576E1.6020305@sscd.de> -Date: Thu, 06 Oct 2005 21:11:29 +0200 -From: Alexander Sieb -To: crossgcc@sourceware.org -Subject: Crosstool sh4-linux-gcc-4.0.2-glibc-2.3.5 patches - -Hi, - -attached you find the files I needed to add to crosstool-0.38 -in order to build a sh4-linux gcc-4.0.2-glibc-2.3.5 tool chain. - -Files attached: - -sh4-gcc4.dat: - * gcc4 needs --with-multilib-list=m4,m4-nofpu otherwise a linux - kernel won't build as it uses the -m4-nofpu option. - -gcc-pr21623.patch: - * Kaz Kojima provided a patch [really, a workaround -dank] for http://gcc.gnu.org/PR21623 - -glibc-2.3.5-sh-memset.patch: - * A patch for glibc-2.3.5 which corrects memset. From SUGIOKA Toshinobu. - See content for rationale. - --- snip -- - --- Here's patch 1 of 2, plus URLs showing where it is in CVS -- - -[http://gcc.gnu.org/ml/gcc-cvs/2005-10/msg00081.html] - -2005-09-30 Kaz Kojima - - * config/sh/sh.c (sh_register_move_cost): Add case for moving - from T_REGS to FP register class. - -[http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/config/sh/sh.c.diff?cvsroot=gcc&r1=1.347&r2=1.348] - -RCS file: /cvs/gcc/gcc/gcc/config/sh/sh.c,v -retrieving revision 1.347 -retrieving revision 1.348 -diff -u -r1.347 -r1.348 ---- gcc/gcc/config/sh/sh.c 2005/09/05 12:45:22 1.347 -+++ gcc/gcc/config/sh/sh.c 2005/10/03 22:07:08 1.348 -@@ -9491,6 +9491,9 @@ sh_register_move_cost (enum machine_mode - && REGCLASS_HAS_FP_REG (dstclass)) - return 4; - -+ if (REGCLASS_HAS_FP_REG (dstclass) && srcclass == T_REGS) -+ return ((TARGET_HARD_SH4 && !optimize_size) ? 10 : 7); -+ - if ((REGCLASS_HAS_FP_REG (dstclass) && srcclass == MAC_REGS) - || (dstclass == MAC_REGS && REGCLASS_HAS_FP_REG (srcclass))) - return 9; diff --git a/patches/gcc/4.0.3/100-uclibc-conf.patch b/patches/gcc/4.0.3/100-uclibc-conf.patch deleted file mode 100644 index 3be7d09..0000000 --- a/patches/gcc/4.0.3/100-uclibc-conf.patch +++ /dev/null @@ -1,553 +0,0 @@ ---- gcc-4.0.2/gcc/config/t-linux-uclibc -+++ gcc-4.0.2/gcc/config/t-linux-uclibc -@@ -0,0 +1,5 @@ -+# Remove glibc specific files added in t-linux -+SHLIB_MAPFILES := $(filter-out $(srcdir)/config/libgcc-glibc.ver, $(SHLIB_MAPFILES)) -+ -+# Use unwind-dw2-fde instead of unwind-dw2-fde-glibc -+LIB2ADDEH := $(subst unwind-dw2-fde-glibc.c,unwind-dw2-fde.c,$(LIB2ADDEH)) ---- gcc-4.0.2/gcc/config.gcc -+++ gcc-4.0.2/gcc/config.gcc -@@ -1778,7 +1778,7 @@ - ;; - sh-*-elf* | sh[12346l]*-*-elf* | sh*-*-kaos* | \ - sh-*-symbianelf* | sh[12346l]*-*-symbianelf* | \ -- sh-*-linux* | sh[346lbe]*-*-linux* | \ -+ sh*-*-linux* | sh[346lbe]*-*-linux* | \ - sh-*-netbsdelf* | shl*-*-netbsdelf* | sh5-*-netbsd* | sh5l*-*-netbsd* | \ - sh64-*-netbsd* | sh64l*-*-netbsd*) - tmake_file="${tmake_file} sh/t-sh sh/t-elf" -@@ -2234,10 +2234,16 @@ - *) - echo "*** Configuration ${target} not supported" 1>&2 - exit 1 - ;; - esac -+ -+# Rather than hook into each target, just do it after all the linux -+# targets have been processed -+case ${target} in -+*-linux-uclibc*) tm_defines="${tm_defines} USE_UCLIBC" ; tmake_file="${tmake_file} t-linux-uclibc" -+esac - - case ${target} in - i[34567]86-*-linux*aout* | i[34567]86-*-linux*libc1) - tmake_file="${tmake_file} i386/t-gmm_malloc" - ;; ---- gcc-4.0.2/gcc/config/alpha/linux-elf.h -+++ gcc-4.0.2/gcc/config/alpha/linux-elf.h -@@ -27,7 +27,11 @@ - #define SUBTARGET_EXTRA_SPECS \ - { "elf_dynamic_linker", ELF_DYNAMIC_LINKER }, - -+#ifdef USE_UCLIBC -+#define ELF_DYNAMIC_LINKER "/lib/ld-uClibc.so.0" -+#else - #define ELF_DYNAMIC_LINKER "/lib/ld-linux.so.2" -+#endif - - #define LINK_SPEC "-m elf64alpha %{G*} %{relax:-relax} \ - %{O*:-O3} %{!O*:-O1} \ ---- gcc-4.0.2/gcc/config/arm/linux-elf.h -+++ gcc-4.0.2/gcc/config/arm/linux-elf.h -@@ -81,14 +81,19 @@ - #define ENDFILE_SPEC \ - "%{!shared:crtend.o%s} %{shared:crtendS.o%s} crtn.o%s" - -+#ifdef USE_UCLIBC -+#define ELF_DYNAMIC_LINKER "/lib/ld-uClibc.so.0" -+#else -+#define ELF_DYNAMIC_LINKER "/lib/ld-linux.so.2" -+#endif - #undef LINK_SPEC - #define LINK_SPEC "%{h*} %{version:-v} \ - %{b} %{Wl,*:%*} \ - %{static:-Bstatic} \ - %{shared:-shared} \ - %{symbolic:-Bsymbolic} \ - %{rdynamic:-export-dynamic} \ -- %{!dynamic-linker:-dynamic-linker /lib/ld-linux.so.2} \ -+ %{!dynamic-linker:-dynamic-linker " ELF_DYNAMIC_LINKER "} \ - -X \ - %{mbig-endian:-EB}" \ - SUBTARGET_EXTRA_LINK_SPEC ---- gcc-4.0.2/gcc/config/cris/linux.h -+++ gcc-4.0.2/gcc/config/cris/linux.h -@@ -79,6 +79,25 @@ - #undef CRIS_DEFAULT_CPU_VERSION - #define CRIS_DEFAULT_CPU_VERSION CRIS_CPU_NG - -+#ifdef USE_UCLIBC -+ -+#undef CRIS_SUBTARGET_VERSION -+#define CRIS_SUBTARGET_VERSION " - cris-axis-linux-uclibc" -+ -+#undef CRIS_LINK_SUBTARGET_SPEC -+#define CRIS_LINK_SUBTARGET_SPEC \ -+ "-mcrislinux\ -+ -rpath-link include/asm/../..%s\ -+ %{shared} %{static}\ -+ %{symbolic:-Bdynamic} %{shlib:-Bdynamic} %{static:-Bstatic}\ -+ %{!shared: \ -+ %{!static: \ -+ %{rdynamic:-export-dynamic} \ -+ %{!dynamic-linker:-dynamic-linker /lib/ld-uClibc.so.0}}} \ -+ %{!r:%{O2|O3: --gc-sections}}" -+ -+#else /* USE_UCLIBC */ -+ - #undef CRIS_SUBTARGET_VERSION - #define CRIS_SUBTARGET_VERSION " - cris-axis-linux-gnu" - -@@ -93,6 +112,8 @@ - %{!shared:%{!static:%{rdynamic:-export-dynamic}}}\ - %{!r:%{O2|O3: --gc-sections}}" - -+#endif /* USE_UCLIBC */ -+ - - /* Node: Run-time Target */ - ---- gcc-4.0.2/gcc/config/i386/linux.h -+++ gcc-4.0.2/gcc/config/i386/linux.h -@@ -107,6 +107,11 @@ - #define LINK_EMULATION "elf_i386" - #define DYNAMIC_LINKER "/lib/ld-linux.so.2" - -+#ifdef USE_UCLIBC -+#undef DYNAMIC_LINKER -+#define DYNAMIC_LINKER "/lib/ld-uClibc.so.0" -+#endif -+ - #undef SUBTARGET_EXTRA_SPECS - #define SUBTARGET_EXTRA_SPECS \ - { "link_emulation", LINK_EMULATION },\ ---- gcc-4.0.2/gcc/config/i386/linux64.h -+++ gcc-4.0.2/gcc/config/i386/linux64.h -@@ -54,14 +54,21 @@ - When the -shared link option is used a final link is not being - done. */ - -+#ifdef USE_UCLIBC -+#define ELF32_DYNAMIC_LINKER "/lib/ld-uClibc.so.0" -+#define ELF64_DYNAMIC_LINKER "/lib/ld64-uClibc.so.0" -+#else -+#define ELF32_DYNAMIC_LINKER "/lib/ld-linux.so.2" -+#define ELF64_DYNAMIC_LINKER "/lib64/ld-linux-x86-64.so.2" -+#endif - #undef LINK_SPEC - #define LINK_SPEC "%{!m32:-m elf_x86_64} %{m32:-m elf_i386} \ - %{shared:-shared} \ - %{!shared: \ - %{!static: \ - %{rdynamic:-export-dynamic} \ -- %{m32:%{!dynamic-linker:-dynamic-linker /lib/ld-linux.so.2}} \ -- %{!m32:%{!dynamic-linker:-dynamic-linker /lib64/ld-linux-x86-64.so.2}}} \ -+ %{m32:%{!dynamic-linker:-dynamic-linker " ELF32_DYNAMIC_LINKER "}} \ -+ %{!m32:%{!dynamic-linker:-dynamic-linker " ELF64_DYNAMIC_LINKER "}}} \ - %{static:-static}}" - - #define MULTILIB_DEFAULTS { "m64" } ---- gcc-4.0.2/gcc/config/ia64/linux.h -+++ gcc-4.0.2/gcc/config/ia64/linux.h -@@ -37,13 +37,18 @@ - /* Define this for shared library support because it isn't in the main - linux.h file. */ - -+#ifdef USE_UCLIBC -+#define ELF_DYNAMIC_LINKER "/lib/ld-uClibc.so.0" -+#else -+#define ELF_DYNAMIC_LINKER "/lib/ld-linux-ia64.so.2" -+#endif - #undef LINK_SPEC - #define LINK_SPEC "\ - %{shared:-shared} \ - %{!shared: \ - %{!static: \ - %{rdynamic:-export-dynamic} \ -- %{!dynamic-linker:-dynamic-linker /lib/ld-linux-ia64.so.2}} \ -+ %{!dynamic-linker:-dynamic-linker " ELF_DYNAMIC_LINKER "}} \ - %{static:-static}}" - - ---- gcc-4.0.2/gcc/config/m68k/linux.h -+++ gcc-4.0.2/gcc/config/m68k/linux.h -@@ -127,12 +127,17 @@ - - /* If ELF is the default format, we should not use /lib/elf. */ - -+#ifdef USE_UCLIBC -+#define ELF_DYNAMIC_LINKER "/lib/ld-uClibc.so.0" -+#else -+#define ELF_DYNAMIC_LINKER "/lib/ld.so.1" -+#endif - #undef LINK_SPEC - #define LINK_SPEC "-m m68kelf %{shared} \ - %{!shared: \ - %{!static: \ - %{rdynamic:-export-dynamic} \ -- %{!dynamic-linker*:-dynamic-linker /lib/ld.so.1}} \ -+ %{!dynamic-linker*:-dynamic-linker " ELF_DYNAMIC_LINKER "}} \ - %{static}}" - - /* For compatibility with linux/a.out */ ---- gcc-4.0.2/gcc/config/mips/linux.h -+++ gcc-4.0.2/gcc/config/mips/linux.h -@@ -108,14 +108,19 @@ - - /* Borrowed from sparc/linux.h */ - #undef LINK_SPEC -+#ifdef USE_UCLIBC -+#define ELF_DYNAMIC_LINKER "/lib/ld-uClibc.so.0" -+#else -+#define ELF_DYNAMIC_LINKER "/lib/ld.so.1" -+#endif - #define LINK_SPEC \ - "%(endian_spec) \ - %{shared:-shared} \ - %{!shared: \ - %{!ibcs: \ - %{!static: \ - %{rdynamic:-export-dynamic} \ -- %{!dynamic-linker:-dynamic-linker /lib/ld.so.1}} \ -+ %{!dynamic-linker:-dynamic-linker " ELF_DYNAMIC_LINKER "}} \ - %{static:-static}}}" - - #undef SUBTARGET_ASM_SPEC ---- gcc-4.0.2/gcc/config/pa/pa-linux.h -+++ gcc-4.0.2/gcc/config/pa/pa-linux.h -@@ -82,13 +82,18 @@ - /* Define this for shared library support because it isn't in the main - linux.h file. */ - -+#ifdef USE_UCLIBC -+#define ELF_DYNAMIC_LINKER "/lib/ld-uClibc.so.0" -+#else -+#define ELF_DYNAMIC_LINKER "/lib/ld.so.1" -+#endif - #undef LINK_SPEC - #define LINK_SPEC "\ - %{shared:-shared} \ - %{!shared: \ - %{!static: \ - %{rdynamic:-export-dynamic} \ -- %{!dynamic-linker:-dynamic-linker /lib/ld.so.1}} \ -+ %{!dynamic-linker:-dynamic-linker " ELF_DYNAMIC_LINKER "}} \ - %{static:-static}}" - - /* glibc's profiling functions don't need gcc to allocate counters. */ ---- gcc-4.0.2/gcc/config/rs6000/linux.h -+++ gcc-4.0.2/gcc/config/rs6000/linux.h -@@ -69,7 +69,11 @@ - #define LINK_START_DEFAULT_SPEC "%(link_start_linux)" - - #undef LINK_OS_DEFAULT_SPEC -+#ifdef USE_UCLIBC -+#define LINK_OS_DEFAULT_SPEC "%(link_os_linux_uclibc)" -+#else - #define LINK_OS_DEFAULT_SPEC "%(link_os_linux)" -+#endif - - #define LINK_GCC_C_SEQUENCE_SPEC \ - "%{static:--start-group} %G %L %{static:--end-group}%{!static:%G}" ---- gcc-4.0.2/gcc/config/rs6000/sysv4.h -+++ gcc-4.0.2/gcc/config/rs6000/sysv4.h -@@ -949,6 +949,7 @@ - mcall-linux : %(link_os_linux) ; \ - mcall-gnu : %(link_os_gnu) ; \ - mcall-netbsd : %(link_os_netbsd) ; \ -+ mcall-linux-uclibc : %(link_os_linux_uclibc); \ - mcall-openbsd: %(link_os_openbsd) ; \ - : %(link_os_default) }" - -@@ -1127,6 +1128,10 @@ - %{rdynamic:-export-dynamic} \ - %{!dynamic-linker:-dynamic-linker /lib/ld.so.1}}}" - -+#define LINK_OS_LINUX_UCLIBC_SPEC "-m elf32ppclinux %{!shared: %{!static: \ -+ %{rdynamic:-export-dynamic} \ -+ %{!dynamic-linker:-dynamic-linker /lib/ld-uClibc.so.0}}}" -+ - #if defined(HAVE_LD_EH_FRAME_HDR) - # define LINK_EH_SPEC "%{!static:--eh-frame-hdr} " - #endif -@@ -1293,6 +1298,7 @@ - { "link_os_sim", LINK_OS_SIM_SPEC }, \ - { "link_os_freebsd", LINK_OS_FREEBSD_SPEC }, \ - { "link_os_linux", LINK_OS_LINUX_SPEC }, \ -+ { "link_os_linux_uclibc", LINK_OS_LINUX_UCLIBC_SPEC }, \ - { "link_os_gnu", LINK_OS_GNU_SPEC }, \ - { "link_os_netbsd", LINK_OS_NETBSD_SPEC }, \ - { "link_os_openbsd", LINK_OS_OPENBSD_SPEC }, \ ---- gcc-4.0.2/gcc/config/s390/linux.h -+++ gcc-4.0.2/gcc/config/s390/linux.h -@@ -77,6 +77,13 @@ - #define MULTILIB_DEFAULTS { "m31" } - #endif - -+#ifdef USE_UCLIBC -+#define ELF31_DYNAMIC_LINKER "/lib/ld-uClibc.so.0" -+#define ELF64_DYNAMIC_LINKER "/lib/ld64-uClibc.so.0" -+#else -+#define ELF31_DYNAMIC_LINKER "/lib/ld.so.1" -+#define ELF64_DYNAMIC_LINKER "/lib/ld64.so.1" -+#endif - #undef LINK_SPEC - #define LINK_SPEC \ - "%{m31:-m elf_s390}%{m64:-m elf64_s390} \ -@@ -86,8 +93,8 @@ - %{!static: \ - %{rdynamic:-export-dynamic} \ - %{!dynamic-linker: \ -- %{m31:-dynamic-linker /lib/ld.so.1} \ -- %{m64:-dynamic-linker /lib/ld64.so.1}}}}" -+ %{m31:-dynamic-linker " ELF31_DYNAMIC_LINKER "} \ -+ %{m64:-dynamic-linker " ELF64_DYNAMIC_LINKER "}}}}" - - - #define TARGET_ASM_FILE_END file_end_indicate_exec_stack ---- gcc-4.0.2/gcc/config/sh/linux.h -+++ gcc-4.0.2/gcc/config/sh/linux.h -@@ -67,11 +67,16 @@ - #undef SUBTARGET_LINK_EMUL_SUFFIX - #define SUBTARGET_LINK_EMUL_SUFFIX "_linux" - #undef SUBTARGET_LINK_SPEC -+#ifdef USE_UCLIBC -+#define ELF_DYNAMIC_LINKER "/lib/ld-uClibc.so.0" -+#else -+#define ELF_DYNAMIC_LINKER "/lib/ld-linux.so.2" -+#endif - #define SUBTARGET_LINK_SPEC \ - "%{shared:-shared} \ - %{!static: \ - %{rdynamic:-export-dynamic} \ -- %{!dynamic-linker:-dynamic-linker /lib/ld-linux.so.2}} \ -+ %{!dynamic-linker:-dynamic-linker " ELF_DYNAMIC_LINKER "}} \ - %{static:-static}" - - #undef LIB_SPEC ---- gcc-4.0.2/gcc/config/sparc/linux.h -+++ gcc-4.0.2/gcc/config/sparc/linux.h -@@ -130,14 +130,19 @@ - - /* If ELF is the default format, we should not use /lib/elf. */ - -+#ifdef USE_UCLIBC -+#define ELF_DYNAMIC_LINKER "/lib/ld-uClibc.so.0" -+#else -+#define ELF_DYNAMIC_LINKER "/lib/ld-linux.so.2" -+#endif - #undef LINK_SPEC - #define LINK_SPEC "-m elf32_sparc -Y P,/usr/lib %{shared:-shared} \ - %{!mno-relax:%{!r:-relax}} \ - %{!shared: \ - %{!ibcs: \ - %{!static: \ - %{rdynamic:-export-dynamic} \ -- %{!dynamic-linker:-dynamic-linker /lib/ld-linux.so.2}} \ -+ %{!dynamic-linker:-dynamic-linker " ELF_DYNAMIC_LINKER "}} \ - %{static:-static}}}" - - /* The sun bundled assembler doesn't accept -Yd, (and neither does gas). ---- gcc-4.0.2/gcc/config/sparc/linux64.h -+++ gcc-4.0.2/gcc/config/sparc/linux64.h -@@ -167,12 +166,17 @@ - { "link_arch_default", LINK_ARCH_DEFAULT_SPEC }, \ - { "link_arch", LINK_ARCH_SPEC }, - -+#ifdef USE_UCLIBC -+#define ELF_DYNAMIC_LINKER "/lib/ld-uClibc.so.0" -+#else -+#define ELF_DYNAMIC_LINKER "/lib/ld-linux.so.2" -+#endif - #define LINK_ARCH32_SPEC "-m elf32_sparc -Y P,/usr/lib %{shared:-shared} \ - %{!shared: \ - %{!ibcs: \ - %{!static: \ - %{rdynamic:-export-dynamic} \ -- %{!dynamic-linker:-dynamic-linker /lib/ld-linux.so.2}} \ -+ %{!dynamic-linker:-dynamic-linker " ELF_DYNAMIC_LINKER "}} \ - %{static:-static}}} \ - " - ---- gcc-4.0.2/libtool.m4 -+++ gcc-4.0.2/libtool.m4 -@@ -682,6 +682,11 @@ - lt_cv_deplibs_check_method=pass_all - ;; - -+linux-uclibc*) -+ lt_cv_deplibs_check_method=pass_all -+ lt_cv_file_magic_test_file=`echo /lib/libuClibc-*.so` -+ ;; -+ - netbsd* | knetbsd*-gnu) - if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then - [lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$'] ---- gcc-4.0.2/ltconfig -+++ gcc-4.0.2/ltconfig -@@ -603,6 +603,7 @@ - - # Transform linux* to *-*-linux-gnu*, to support old configure scripts. - case $host_os in -+linux-uclibc*) ;; - linux-gnu*) ;; - linux*) host=`echo $host | sed 's/^\(.*-.*-linux\)\(.*\)$/\1-gnu\2/'` - esac -@@ -1274,6 +1275,23 @@ - dynamic_linker='GNU/Linux ld.so' - ;; - -+linux-uclibc*) -+ version_type=linux -+ need_lib_prefix=no -+ need_version=no -+ library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' -+ soname_spec='${libname}${release}.so$major' -+ finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' -+ shlibpath_var=LD_LIBRARY_PATH -+ shlibpath_overrides_runpath=no -+ # This implies no fast_install, which is unacceptable. -+ # Some rework will be needed to allow for fast_install -+ # before this can be enabled. -+ hardcode_into_libs=yes -+ # Assume using the uClibc dynamic linker. -+ dynamic_linker="uClibc ld.so" -+ ;; -+ - netbsd*) - need_lib_prefix=no - need_version=no ---- gcc-4.0.2/libffi/configure -+++ gcc-4.0.2/libffi/configure -@@ -3457,6 +3457,11 @@ - lt_cv_deplibs_check_method=pass_all - ;; - -+linux-uclibc*) -+ lt_cv_deplibs_check_method=pass_all -+ lt_cv_file_magic_test_file=`echo /lib/libuClibc-*.so` -+ ;; -+ - netbsd* | knetbsd*-gnu) - if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then - lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$' ---- gcc-4.0.2/libgfortran/configure -+++ gcc-4.0.2/libgfortran/configure -@@ -3681,6 +3681,11 @@ - lt_cv_deplibs_check_method=pass_all - ;; - -+linux-uclibc*) -+ lt_cv_deplibs_check_method=pass_all -+ lt_cv_file_magic_test_file=`echo /lib/libuClibc-*.so` -+ ;; -+ - netbsd* | knetbsd*-gnu) - if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then - lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$' ---- gcc-4.0.2/libjava/configure -+++ gcc-4.0.2/libjava/configure -@@ -4351,6 +4351,11 @@ - lt_cv_deplibs_check_method=pass_all - ;; - -+linux-uclibc*) -+ lt_cv_deplibs_check_method=pass_all -+ lt_cv_file_magic_test_file=`echo /lib/libuClibc-*.so` -+ ;; -+ - netbsd* | knetbsd*-gnu) - if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then - lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$' ---- gcc-4.0.2/libmudflap/configure -+++ gcc-4.0.2/libmudflap/configure -@@ -5380,6 +5380,11 @@ - lt_cv_deplibs_check_method=pass_all - ;; - -+linux-uclibc*) -+ lt_cv_deplibs_check_method=pass_all -+ lt_cv_file_magic_test_file=`echo /lib/libuClibc-*.so` -+ ;; -+ - netbsd* | knetbsd*-gnu) - if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then - lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$' ---- gcc-4.0.2/libobjc/configure -+++ gcc-4.0.2/libobjc/configure -@@ -3283,6 +3283,11 @@ - lt_cv_deplibs_check_method=pass_all - ;; - -+linux-uclibc*) -+ lt_cv_deplibs_check_method=pass_all -+ lt_cv_file_magic_test_file=`echo /lib/libuClibc-*.so` -+ ;; -+ - netbsd* | knetbsd*-gnu) - if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then - lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$' ---- gcc-4.0.2/boehm-gc/configure -+++ gcc-4.0.2/boehm-gc/configure -@@ -4320,6 +4320,11 @@ - lt_cv_deplibs_check_method=pass_all - ;; - -+linux-uclibc*) -+ lt_cv_deplibs_check_method=pass_all -+ lt_cv_file_magic_test_file=`echo /lib/libuClibc-*.so` -+ ;; -+ - netbsd* | knetbsd*-gnu) - if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then - lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$' ---- gcc-4.0.2/configure -+++ gcc-4.0.2/configure -@@ -1141,7 +1141,7 @@ - ;; - "") - case "${target}" in -- *-*-linux*-gnu | *-*-gnu* | *-*-k*bsd*-gnu) -+ *-*-linux*-gnu | *-*-gnu* | *-*-k*bsd*-gnu | *-*-linux-uclibc*) - # Enable libmudflap by default in GNU and friends. - ;; - *-*-freebsd*) ---- gcc-4.0.2/configure.in -+++ gcc-4.0.2/configure.in -@@ -350,7 +350,7 @@ - ;; - "") - case "${target}" in -- *-*-linux*-gnu | *-*-gnu* | *-*-k*bsd*-gnu) -+ *-*-linux*-gnu | *-*-gnu* | *-*-k*bsd*-gnu | *-*-linux-uclibc*) - # Enable libmudflap by default in GNU and friends. - ;; - *-*-freebsd*) ---- gcc-4.0.2/contrib/regression/objs-gcc.sh -+++ gcc-4.0.2/contrib/regression/objs-gcc.sh -@@ -105,6 +105,10 @@ - then - make all-gdb all-dejagnu all-ld || exit 1 - make install-gdb install-dejagnu install-ld || exit 1 -+elif [ $H_REAL_TARGET = $H_REAL_HOST -a $H_REAL_TARGET = i686-pc-linux-uclibc ] -+ then -+ make all-gdb all-dejagnu all-ld || exit 1 -+ make install-gdb install-dejagnu install-ld || exit 1 - elif [ $H_REAL_TARGET = $H_REAL_HOST ] ; then - make bootstrap || exit 1 - make install || exit 1 ---- gcc-4.0.2/zlib/configure -+++ gcc-4.0.2/zlib/configure -@@ -3426,6 +3426,11 @@ - lt_cv_deplibs_check_method=pass_all - ;; - -+linux-uclibc*) -+ lt_cv_deplibs_check_method=pass_all -+ lt_cv_file_magic_test_file=`echo /lib/libuClibc-*.so` -+ ;; -+ - netbsd* | knetbsd*-gnu) - if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then - lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$' diff --git a/patches/gcc/4.0.3/110-uclibc-locale.patch b/patches/gcc/4.0.3/110-uclibc-locale.patch deleted file mode 100644 index ac4cf97..0000000 --- a/patches/gcc/4.0.3/110-uclibc-locale.patch +++ /dev/null @@ -1,3237 +0,0 @@ -diff -urN gcc-4.0.0-100/libstdc++-v3/acinclude.m4 gcc-4.0.0/libstdc++-v3/acinclude.m4 ---- gcc-4.0.0-100/libstdc++-v3/acinclude.m4 2005-04-30 13:06:53.000000000 -0500 -+++ gcc-4.0.0/libstdc++-v3/acinclude.m4 2005-04-28 20:19:01.000000000 -0500 -@@ -1104,7 +1104,7 @@ - AC_MSG_CHECKING([for C locale to use]) - GLIBCXX_ENABLE(clocale,auto,[@<:@=MODEL@:>@], - [use MODEL for target locale package], -- [permit generic|gnu|ieee_1003.1-2001|yes|no|auto]) -+ [permit generic|gnu|ieee_1003.1-2001|uclibc|yes|no|auto]) - - # If they didn't use this option switch, or if they specified --enable - # with no specific model, we'll have to look for one. If they -@@ -1120,6 +1120,9 @@ - # Default to "generic". - if test $enable_clocale_flag = auto; then - case ${target_os} in -+ *-uclibc*) -+ enable_clocale_flag=uclibc -+ ;; - linux* | gnu* | kfreebsd*-gnu | knetbsd*-gnu) - AC_EGREP_CPP([_GLIBCXX_ok], [ - #include -@@ -1263,6 +1266,40 @@ - CTIME_CC=config/locale/generic/time_members.cc - CLOCALE_INTERNAL_H=config/locale/generic/c++locale_internal.h - ;; -+ uclibc) -+ AC_MSG_RESULT(uclibc) -+ -+ # Declare intention to use gettext, and add support for specific -+ # languages. -+ # For some reason, ALL_LINGUAS has to be before AM-GNU-GETTEXT -+ ALL_LINGUAS="de fr" -+ -+ # Don't call AM-GNU-GETTEXT here. Instead, assume glibc. -+ AC_CHECK_PROG(check_msgfmt, msgfmt, yes, no) -+ if test x"$check_msgfmt" = x"yes" && test x"$enable_nls" = x"yes"; then -+ USE_NLS=yes -+ fi -+ # Export the build objects. -+ for ling in $ALL_LINGUAS; do \ -+ glibcxx_MOFILES="$glibcxx_MOFILES $ling.mo"; \ -+ glibcxx_POFILES="$glibcxx_POFILES $ling.po"; \ -+ done -+ AC_SUBST(glibcxx_MOFILES) -+ AC_SUBST(glibcxx_POFILES) -+ -+ CLOCALE_H=config/locale/uclibc/c_locale.h -+ CLOCALE_CC=config/locale/uclibc/c_locale.cc -+ CCODECVT_CC=config/locale/uclibc/codecvt_members.cc -+ CCOLLATE_CC=config/locale/uclibc/collate_members.cc -+ CCTYPE_CC=config/locale/uclibc/ctype_members.cc -+ CMESSAGES_H=config/locale/uclibc/messages_members.h -+ CMESSAGES_CC=config/locale/uclibc/messages_members.cc -+ CMONEY_CC=config/locale/uclibc/monetary_members.cc -+ CNUMERIC_CC=config/locale/uclibc/numeric_members.cc -+ CTIME_H=config/locale/uclibc/time_members.h -+ CTIME_CC=config/locale/uclibc/time_members.cc -+ CLOCALE_INTERNAL_H=config/locale/uclibc/c++locale_internal.h -+ ;; - esac - - # This is where the testsuite looks for locale catalogs, using the -diff -urN gcc-4.0.0-100/libstdc++-v3/config/locale/uclibc/c++locale_internal.h gcc-4.0.0/libstdc++-v3/config/locale/uclibc/c++locale_internal.h ---- gcc-4.0.0-100/libstdc++-v3/config/locale/uclibc/c++locale_internal.h 1969-12-31 18:00:00.000000000 -0600 -+++ gcc-4.0.0/libstdc++-v3/config/locale/uclibc/c++locale_internal.h 2005-04-28 01:13:15.000000000 -0500 -@@ -0,0 +1,59 @@ -+// Prototypes for GLIBC thread locale __-prefixed functions -*- C++ -*- -+ -+// Copyright (C) 2002, 2004 Free Software Foundation, Inc. -+// -+// This file is part of the GNU ISO C++ Library. This library is free -+// software; you can redistribute it and/or modify it under the -+// terms of the GNU General Public License as published by the -+// Free Software Foundation; either version 2, or (at your option) -+// any later version. -+ -+// This library is distributed in the hope that it will be useful, -+// but WITHOUT ANY WARRANTY; without even the implied warranty of -+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+// GNU General Public License for more details. -+ -+// You should have received a copy of the GNU General Public License along -+// with this library; see the file COPYING. If not, write to the Free -+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, -+// USA. -+ -+// As a special exception, you may use this file as part of a free software -+// library without restriction. Specifically, if other files instantiate -+// templates or use macros or inline functions from this file, or you compile -+// this file and link it with other files to produce an executable, this -+// file does not by itself cause the resulting executable to be covered by -+// the GNU General Public License. This exception does not however -+// invalidate any other reasons why the executable file might be covered by -+// the GNU General Public License. -+ -+// Written by Jakub Jelinek -+ -+#include -+ -+#ifdef __UCLIBC_MJN3_ONLY__ -+#warning clean this up -+#endif -+ -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ -+extern "C" __typeof(iswctype_l) __iswctype_l; -+extern "C" __typeof(nl_langinfo_l) __nl_langinfo_l; -+extern "C" __typeof(strcoll_l) __strcoll_l; -+extern "C" __typeof(strftime_l) __strftime_l; -+extern "C" __typeof(strtod_l) __strtod_l; -+extern "C" __typeof(strtof_l) __strtof_l; -+extern "C" __typeof(strtold_l) __strtold_l; -+extern "C" __typeof(strxfrm_l) __strxfrm_l; -+extern "C" __typeof(towlower_l) __towlower_l; -+extern "C" __typeof(towupper_l) __towupper_l; -+extern "C" __typeof(wcscoll_l) __wcscoll_l; -+extern "C" __typeof(wcsftime_l) __wcsftime_l; -+extern "C" __typeof(wcsxfrm_l) __wcsxfrm_l; -+extern "C" __typeof(wctype_l) __wctype_l; -+extern "C" __typeof(newlocale) __newlocale; -+extern "C" __typeof(freelocale) __freelocale; -+extern "C" __typeof(duplocale) __duplocale; -+extern "C" __typeof(uselocale) __uselocale; -+ -+#endif // GLIBC 2.3 and later -diff -urN gcc-4.0.0-100/libstdc++-v3/config/locale/uclibc/c_locale.cc gcc-4.0.0/libstdc++-v3/config/locale/uclibc/c_locale.cc ---- gcc-4.0.0-100/libstdc++-v3/config/locale/uclibc/c_locale.cc 1969-12-31 18:00:00.000000000 -0600 -+++ gcc-4.0.0/libstdc++-v3/config/locale/uclibc/c_locale.cc 2005-04-28 01:13:15.000000000 -0500 -@@ -0,0 +1,160 @@ -+// Wrapper for underlying C-language localization -*- C++ -*- -+ -+// Copyright (C) 2001, 2002, 2003 Free Software Foundation, Inc. -+// -+// This file is part of the GNU ISO C++ Library. This library is free -+// software; you can redistribute it and/or modify it under the -+// terms of the GNU General Public License as published by the -+// Free Software Foundation; either version 2, or (at your option) -+// any later version. -+ -+// This library is distributed in the hope that it will be useful, -+// but WITHOUT ANY WARRANTY; without even the implied warranty of -+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+// GNU General Public License for more details. -+ -+// You should have received a copy of the GNU General Public License along -+// with this library; see the file COPYING. If not, write to the Free -+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, -+// USA. -+ -+// As a special exception, you may use this file as part of a free software -+// library without restriction. Specifically, if other files instantiate -+// templates or use macros or inline functions from this file, or you compile -+// this file and link it with other files to produce an executable, this -+// file does not by itself cause the resulting executable to be covered by -+// the GNU General Public License. This exception does not however -+// invalidate any other reasons why the executable file might be covered by -+// the GNU General Public License. -+ -+// -+// ISO C++ 14882: 22.8 Standard locale categories. -+// -+ -+// Written by Benjamin Kosnik -+ -+#include // For errno -+#include -+#include -+#include -+#include -+ -+#ifndef __UCLIBC_HAS_XLOCALE__ -+#define __strtol_l(S, E, B, L) strtol((S), (E), (B)) -+#define __strtoul_l(S, E, B, L) strtoul((S), (E), (B)) -+#define __strtoll_l(S, E, B, L) strtoll((S), (E), (B)) -+#define __strtoull_l(S, E, B, L) strtoull((S), (E), (B)) -+#define __strtof_l(S, E, L) strtof((S), (E)) -+#define __strtod_l(S, E, L) strtod((S), (E)) -+#define __strtold_l(S, E, L) strtold((S), (E)) -+#warning should dummy __newlocale check for C|POSIX ? -+#define __newlocale(a, b, c) NULL -+#define __freelocale(a) ((void)0) -+#define __duplocale(a) __c_locale() -+#endif -+ -+namespace std -+{ -+ template<> -+ void -+ __convert_to_v(const char* __s, float& __v, ios_base::iostate& __err, -+ const __c_locale& __cloc) -+ { -+ if (!(__err & ios_base::failbit)) -+ { -+ char* __sanity; -+ errno = 0; -+ float __f = __strtof_l(__s, &__sanity, __cloc); -+ if (__sanity != __s && errno != ERANGE) -+ __v = __f; -+ else -+ __err |= ios_base::failbit; -+ } -+ } -+ -+ template<> -+ void -+ __convert_to_v(const char* __s, double& __v, ios_base::iostate& __err, -+ const __c_locale& __cloc) -+ { -+ if (!(__err & ios_base::failbit)) -+ { -+ char* __sanity; -+ errno = 0; -+ double __d = __strtod_l(__s, &__sanity, __cloc); -+ if (__sanity != __s && errno != ERANGE) -+ __v = __d; -+ else -+ __err |= ios_base::failbit; -+ } -+ } -+ -+ template<> -+ void -+ __convert_to_v(const char* __s, long double& __v, ios_base::iostate& __err, -+ const __c_locale& __cloc) -+ { -+ if (!(__err & ios_base::failbit)) -+ { -+ char* __sanity; -+ errno = 0; -+ long double __ld = __strtold_l(__s, &__sanity, __cloc); -+ if (__sanity != __s && errno != ERANGE) -+ __v = __ld; -+ else -+ __err |= ios_base::failbit; -+ } -+ } -+ -+ void -+ locale::facet::_S_create_c_locale(__c_locale& __cloc, const char* __s, -+ __c_locale __old) -+ { -+ __cloc = __newlocale(1 << LC_ALL, __s, __old); -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ if (!__cloc) -+ { -+ // This named locale is not supported by the underlying OS. -+ __throw_runtime_error(__N("locale::facet::_S_create_c_locale " -+ "name not valid")); -+ } -+#endif -+ } -+ -+ void -+ locale::facet::_S_destroy_c_locale(__c_locale& __cloc) -+ { -+ if (_S_get_c_locale() != __cloc) -+ __freelocale(__cloc); -+ } -+ -+ __c_locale -+ locale::facet::_S_clone_c_locale(__c_locale& __cloc) -+ { return __duplocale(__cloc); } -+} // namespace std -+ -+namespace __gnu_cxx -+{ -+ const char* const category_names[6 + _GLIBCXX_NUM_CATEGORIES] = -+ { -+ "LC_CTYPE", -+ "LC_NUMERIC", -+ "LC_TIME", -+ "LC_COLLATE", -+ "LC_MONETARY", -+ "LC_MESSAGES", -+#if _GLIBCXX_NUM_CATEGORIES != 0 -+ "LC_PAPER", -+ "LC_NAME", -+ "LC_ADDRESS", -+ "LC_TELEPHONE", -+ "LC_MEASUREMENT", -+ "LC_IDENTIFICATION" -+#endif -+ }; -+} -+ -+namespace std -+{ -+ const char* const* const locale::_S_categories = __gnu_cxx::category_names; -+} // namespace std -diff -urN gcc-4.0.0-100/libstdc++-v3/config/locale/uclibc/c_locale.h gcc-4.0.0/libstdc++-v3/config/locale/uclibc/c_locale.h ---- gcc-4.0.0-100/libstdc++-v3/config/locale/uclibc/c_locale.h 1969-12-31 18:00:00.000000000 -0600 -+++ gcc-4.0.0/libstdc++-v3/config/locale/uclibc/c_locale.h 2005-04-28 01:13:15.000000000 -0500 -@@ -0,0 +1,115 @@ -+// Wrapper for underlying C-language localization -*- C++ -*- -+ -+// Copyright (C) 2001, 2002, 2003, 2004 Free Software Foundation, Inc. -+// -+// This file is part of the GNU ISO C++ Library. This library is free -+// software; you can redistribute it and/or modify it under the -+// terms of the GNU General Public License as published by the -+// Free Software Foundation; either version 2, or (at your option) -+// any later version. -+ -+// This library is distributed in the hope that it will be useful, -+// but WITHOUT ANY WARRANTY; without even the implied warranty of -+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+// GNU General Public License for more details. -+ -+// You should have received a copy of the GNU General Public License along -+// with this library; see the file COPYING. If not, write to the Free -+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, -+// USA. -+ -+// As a special exception, you may use this file as part of a free software -+// library without restriction. Specifically, if other files instantiate -+// templates or use macros or inline functions from this file, or you compile -+// this file and link it with other files to produce an executable, this -+// file does not by itself cause the resulting executable to be covered by -+// the GNU General Public License. This exception does not however -+// invalidate any other reasons why the executable file might be covered by -+// the GNU General Public License. -+ -+// -+// ISO C++ 14882: 22.8 Standard locale categories. -+// -+ -+// Written by Benjamin Kosnik -+ -+#ifndef _C_LOCALE_H -+#define _C_LOCALE_H 1 -+ -+#pragma GCC system_header -+ -+#include // get std::strlen -+#include // get std::snprintf or std::sprintf -+#include -+#include // For codecvt -+#ifdef __UCLIBC_MJN3_ONLY__ -+#warning fix this -+#endif -+#ifdef __UCLIBC_HAS_LOCALE__ -+#include // For codecvt using iconv, iconv_t -+#endif -+#ifdef __UCLIBC_HAS_GETTEXT_AWARENESS__ -+#include // For messages -+#endif -+ -+#ifdef __UCLIBC_MJN3_ONLY__ -+#warning what is _GLIBCXX_C_LOCALE_GNU for -+#endif -+#define _GLIBCXX_C_LOCALE_GNU 1 -+ -+#ifdef __UCLIBC_MJN3_ONLY__ -+#warning fix categories -+#endif -+// #define _GLIBCXX_NUM_CATEGORIES 6 -+#define _GLIBCXX_NUM_CATEGORIES 0 -+ -+#ifdef __UCLIBC_HAS_XLOCALE__ -+namespace __gnu_cxx -+{ -+ extern "C" __typeof(uselocale) __uselocale; -+} -+#endif -+ -+namespace std -+{ -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ typedef __locale_t __c_locale; -+#else -+ typedef int* __c_locale; -+#endif -+ -+ // Convert numeric value of type _Tv to string and return length of -+ // string. If snprintf is available use it, otherwise fall back to -+ // the unsafe sprintf which, in general, can be dangerous and should -+ // be avoided. -+ template -+ int -+ __convert_from_v(char* __out, const int __size, const char* __fmt, -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ _Tv __v, const __c_locale& __cloc, int __prec) -+ { -+ __c_locale __old = __gnu_cxx::__uselocale(__cloc); -+#else -+ _Tv __v, const __c_locale&, int __prec) -+ { -+# ifdef __UCLIBC_HAS_LOCALE__ -+ char* __old = std::setlocale(LC_ALL, NULL); -+ char* __sav = new char[std::strlen(__old) + 1]; -+ std::strcpy(__sav, __old); -+ std::setlocale(LC_ALL, "C"); -+# endif -+#endif -+ -+ const int __ret = std::snprintf(__out, __size, __fmt, __prec, __v); -+ -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __gnu_cxx::__uselocale(__old); -+#elif defined __UCLIBC_HAS_LOCALE__ -+ std::setlocale(LC_ALL, __sav); -+ delete [] __sav; -+#endif -+ return __ret; -+ } -+} -+ -+#endif -diff -urN gcc-4.0.0-100/libstdc++-v3/config/locale/uclibc/codecvt_members.cc gcc-4.0.0/libstdc++-v3/config/locale/uclibc/codecvt_members.cc ---- gcc-4.0.0-100/libstdc++-v3/config/locale/uclibc/codecvt_members.cc 1969-12-31 18:00:00.000000000 -0600 -+++ gcc-4.0.0/libstdc++-v3/config/locale/uclibc/codecvt_members.cc 2005-04-28 01:13:15.000000000 -0500 -@@ -0,0 +1,306 @@ -+// std::codecvt implementation details, GNU version -*- C++ -*- -+ -+// Copyright (C) 2002, 2003 Free Software Foundation, Inc. -+// -+// This file is part of the GNU ISO C++ Library. This library is free -+// software; you can redistribute it and/or modify it under the -+// terms of the GNU General Public License as published by the -+// Free Software Foundation; either version 2, or (at your option) -+// any later version. -+ -+// This library is distributed in the hope that it will be useful, -+// but WITHOUT ANY WARRANTY; without even the implied warranty of -+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+// GNU General Public License for more details. -+ -+// You should have received a copy of the GNU General Public License along -+// with this library; see the file COPYING. If not, write to the Free -+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, -+// USA. -+ -+// As a special exception, you may use this file as part of a free software -+// library without restriction. Specifically, if other files instantiate -+// templates or use macros or inline functions from this file, or you compile -+// this file and link it with other files to produce an executable, this -+// file does not by itself cause the resulting executable to be covered by -+// the GNU General Public License. This exception does not however -+// invalidate any other reasons why the executable file might be covered by -+// the GNU General Public License. -+ -+// -+// ISO C++ 14882: 22.2.1.5 - Template class codecvt -+// -+ -+// Written by Benjamin Kosnik -+ -+#include -+#include -+ -+namespace std -+{ -+ // Specializations. -+#ifdef _GLIBCXX_USE_WCHAR_T -+ codecvt_base::result -+ codecvt:: -+ do_out(state_type& __state, const intern_type* __from, -+ const intern_type* __from_end, const intern_type*& __from_next, -+ extern_type* __to, extern_type* __to_end, -+ extern_type*& __to_next) const -+ { -+ result __ret = ok; -+ state_type __tmp_state(__state); -+ -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __c_locale __old = __uselocale(_M_c_locale_codecvt); -+#endif -+ -+ // wcsnrtombs is *very* fast but stops if encounters NUL characters: -+ // in case we fall back to wcrtomb and then continue, in a loop. -+ // NB: wcsnrtombs is a GNU extension -+ for (__from_next = __from, __to_next = __to; -+ __from_next < __from_end && __to_next < __to_end -+ && __ret == ok;) -+ { -+ const intern_type* __from_chunk_end = wmemchr(__from_next, L'\0', -+ __from_end - __from_next); -+ if (!__from_chunk_end) -+ __from_chunk_end = __from_end; -+ -+ __from = __from_next; -+ const size_t __conv = wcsnrtombs(__to_next, &__from_next, -+ __from_chunk_end - __from_next, -+ __to_end - __to_next, &__state); -+ if (__conv == static_cast(-1)) -+ { -+ // In case of error, in order to stop at the exact place we -+ // have to start again from the beginning with a series of -+ // wcrtomb. -+ for (; __from < __from_next; ++__from) -+ __to_next += wcrtomb(__to_next, *__from, &__tmp_state); -+ __state = __tmp_state; -+ __ret = error; -+ } -+ else if (__from_next && __from_next < __from_chunk_end) -+ { -+ __to_next += __conv; -+ __ret = partial; -+ } -+ else -+ { -+ __from_next = __from_chunk_end; -+ __to_next += __conv; -+ } -+ -+ if (__from_next < __from_end && __ret == ok) -+ { -+ extern_type __buf[MB_LEN_MAX]; -+ __tmp_state = __state; -+ const size_t __conv = wcrtomb(__buf, *__from_next, &__tmp_state); -+ if (__conv > static_cast(__to_end - __to_next)) -+ __ret = partial; -+ else -+ { -+ memcpy(__to_next, __buf, __conv); -+ __state = __tmp_state; -+ __to_next += __conv; -+ ++__from_next; -+ } -+ } -+ } -+ -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __uselocale(__old); -+#endif -+ -+ return __ret; -+ } -+ -+ codecvt_base::result -+ codecvt:: -+ do_in(state_type& __state, const extern_type* __from, -+ const extern_type* __from_end, const extern_type*& __from_next, -+ intern_type* __to, intern_type* __to_end, -+ intern_type*& __to_next) const -+ { -+ result __ret = ok; -+ state_type __tmp_state(__state); -+ -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __c_locale __old = __uselocale(_M_c_locale_codecvt); -+#endif -+ -+ // mbsnrtowcs is *very* fast but stops if encounters NUL characters: -+ // in case we store a L'\0' and then continue, in a loop. -+ // NB: mbsnrtowcs is a GNU extension -+ for (__from_next = __from, __to_next = __to; -+ __from_next < __from_end && __to_next < __to_end -+ && __ret == ok;) -+ { -+ const extern_type* __from_chunk_end; -+ __from_chunk_end = static_cast(memchr(__from_next, '\0', -+ __from_end -+ - __from_next)); -+ if (!__from_chunk_end) -+ __from_chunk_end = __from_end; -+ -+ __from = __from_next; -+ size_t __conv = mbsnrtowcs(__to_next, &__from_next, -+ __from_chunk_end - __from_next, -+ __to_end - __to_next, &__state); -+ if (__conv == static_cast(-1)) -+ { -+ // In case of error, in order to stop at the exact place we -+ // have to start again from the beginning with a series of -+ // mbrtowc. -+ for (;; ++__to_next, __from += __conv) -+ { -+ __conv = mbrtowc(__to_next, __from, __from_end - __from, -+ &__tmp_state); -+ if (__conv == static_cast(-1) -+ || __conv == static_cast(-2)) -+ break; -+ } -+ __from_next = __from; -+ __state = __tmp_state; -+ __ret = error; -+ } -+ else if (__from_next && __from_next < __from_chunk_end) -+ { -+ // It is unclear what to return in this case (see DR 382). -+ __to_next += __conv; -+ __ret = partial; -+ } -+ else -+ { -+ __from_next = __from_chunk_end; -+ __to_next += __conv; -+ } -+ -+ if (__from_next < __from_end && __ret == ok) -+ { -+ if (__to_next < __to_end) -+ { -+ // XXX Probably wrong for stateful encodings -+ __tmp_state = __state; -+ ++__from_next; -+ *__to_next++ = L'\0'; -+ } -+ else -+ __ret = partial; -+ } -+ } -+ -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __uselocale(__old); -+#endif -+ -+ return __ret; -+ } -+ -+ int -+ codecvt:: -+ do_encoding() const throw() -+ { -+ // XXX This implementation assumes that the encoding is -+ // stateless and is either single-byte or variable-width. -+ int __ret = 0; -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __c_locale __old = __uselocale(_M_c_locale_codecvt); -+#endif -+ if (MB_CUR_MAX == 1) -+ __ret = 1; -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __uselocale(__old); -+#endif -+ return __ret; -+ } -+ -+ int -+ codecvt:: -+ do_max_length() const throw() -+ { -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __c_locale __old = __uselocale(_M_c_locale_codecvt); -+#endif -+ // XXX Probably wrong for stateful encodings. -+ int __ret = MB_CUR_MAX; -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __uselocale(__old); -+#endif -+ return __ret; -+ } -+ -+ int -+ codecvt:: -+ do_length(state_type& __state, const extern_type* __from, -+ const extern_type* __end, size_t __max) const -+ { -+ int __ret = 0; -+ state_type __tmp_state(__state); -+ -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __c_locale __old = __uselocale(_M_c_locale_codecvt); -+#endif -+ -+ // mbsnrtowcs is *very* fast but stops if encounters NUL characters: -+ // in case we advance past it and then continue, in a loop. -+ // NB: mbsnrtowcs is a GNU extension -+ -+ // A dummy internal buffer is needed in order for mbsnrtocws to consider -+ // its fourth parameter (it wouldn't with NULL as first parameter). -+ wchar_t* __to = static_cast(__builtin_alloca(sizeof(wchar_t) -+ * __max)); -+ while (__from < __end && __max) -+ { -+ const extern_type* __from_chunk_end; -+ __from_chunk_end = static_cast(memchr(__from, '\0', -+ __end -+ - __from)); -+ if (!__from_chunk_end) -+ __from_chunk_end = __end; -+ -+ const extern_type* __tmp_from = __from; -+ size_t __conv = mbsnrtowcs(__to, &__from, -+ __from_chunk_end - __from, -+ __max, &__state); -+ if (__conv == static_cast(-1)) -+ { -+ // In case of error, in order to stop at the exact place we -+ // have to start again from the beginning with a series of -+ // mbrtowc. -+ for (__from = __tmp_from;; __from += __conv) -+ { -+ __conv = mbrtowc(NULL, __from, __end - __from, -+ &__tmp_state); -+ if (__conv == static_cast(-1) -+ || __conv == static_cast(-2)) -+ break; -+ } -+ __state = __tmp_state; -+ __ret += __from - __tmp_from; -+ break; -+ } -+ if (!__from) -+ __from = __from_chunk_end; -+ -+ __ret += __from - __tmp_from; -+ __max -= __conv; -+ -+ if (__from < __end && __max) -+ { -+ // XXX Probably wrong for stateful encodings -+ __tmp_state = __state; -+ ++__from; -+ ++__ret; -+ --__max; -+ } -+ } -+ -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __uselocale(__old); -+#endif -+ -+ return __ret; -+ } -+#endif -+} -diff -urN gcc-4.0.0-100/libstdc++-v3/config/locale/uclibc/collate_members.cc gcc-4.0.0/libstdc++-v3/config/locale/uclibc/collate_members.cc ---- gcc-4.0.0-100/libstdc++-v3/config/locale/uclibc/collate_members.cc 1969-12-31 18:00:00.000000000 -0600 -+++ gcc-4.0.0/libstdc++-v3/config/locale/uclibc/collate_members.cc 2005-04-28 01:13:15.000000000 -0500 -@@ -0,0 +1,80 @@ -+// std::collate implementation details, GNU version -*- C++ -*- -+ -+// Copyright (C) 2001, 2002 Free Software Foundation, Inc. -+// -+// This file is part of the GNU ISO C++ Library. This library is free -+// software; you can redistribute it and/or modify it under the -+// terms of the GNU General Public License as published by the -+// Free Software Foundation; either version 2, or (at your option) -+// any later version. -+ -+// This library is distributed in the hope that it will be useful, -+// but WITHOUT ANY WARRANTY; without even the implied warranty of -+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+// GNU General Public License for more details. -+ -+// You should have received a copy of the GNU General Public License along -+// with this library; see the file COPYING. If not, write to the Free -+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, -+// USA. -+ -+// As a special exception, you may use this file as part of a free software -+// library without restriction. Specifically, if other files instantiate -+// templates or use macros or inline functions from this file, or you compile -+// this file and link it with other files to produce an executable, this -+// file does not by itself cause the resulting executable to be covered by -+// the GNU General Public License. This exception does not however -+// invalidate any other reasons why the executable file might be covered by -+// the GNU General Public License. -+ -+// -+// ISO C++ 14882: 22.2.4.1.2 collate virtual functions -+// -+ -+// Written by Benjamin Kosnik -+ -+#include -+#include -+ -+#ifndef __UCLIBC_HAS_XLOCALE__ -+#define __strcoll_l(S1, S2, L) strcoll((S1), (S2)) -+#define __strxfrm_l(S1, S2, N, L) strxfrm((S1), (S2), (N)) -+#define __wcscoll_l(S1, S2, L) wcscoll((S1), (S2)) -+#define __wcsxfrm_l(S1, S2, N, L) wcsxfrm((S1), (S2), (N)) -+#endif -+ -+namespace std -+{ -+ // These are basically extensions to char_traits, and perhaps should -+ // be put there instead of here. -+ template<> -+ int -+ collate::_M_compare(const char* __one, const char* __two) const -+ { -+ int __cmp = __strcoll_l(__one, __two, _M_c_locale_collate); -+ return (__cmp >> (8 * sizeof (int) - 2)) | (__cmp != 0); -+ } -+ -+ template<> -+ size_t -+ collate::_M_transform(char* __to, const char* __from, -+ size_t __n) const -+ { return __strxfrm_l(__to, __from, __n, _M_c_locale_collate); } -+ -+#ifdef _GLIBCXX_USE_WCHAR_T -+ template<> -+ int -+ collate::_M_compare(const wchar_t* __one, -+ const wchar_t* __two) const -+ { -+ int __cmp = __wcscoll_l(__one, __two, _M_c_locale_collate); -+ return (__cmp >> (8 * sizeof (int) - 2)) | (__cmp != 0); -+ } -+ -+ template<> -+ size_t -+ collate::_M_transform(wchar_t* __to, const wchar_t* __from, -+ size_t __n) const -+ { return __wcsxfrm_l(__to, __from, __n, _M_c_locale_collate); } -+#endif -+} -diff -urN gcc-4.0.0-100/libstdc++-v3/config/locale/uclibc/ctype_members.cc gcc-4.0.0/libstdc++-v3/config/locale/uclibc/ctype_members.cc ---- gcc-4.0.0-100/libstdc++-v3/config/locale/uclibc/ctype_members.cc 1969-12-31 18:00:00.000000000 -0600 -+++ gcc-4.0.0/libstdc++-v3/config/locale/uclibc/ctype_members.cc 2005-04-28 01:13:15.000000000 -0500 -@@ -0,0 +1,300 @@ -+// std::ctype implementation details, GNU version -*- C++ -*- -+ -+// Copyright (C) 2001, 2002, 2003, 2004 Free Software Foundation, Inc. -+// -+// This file is part of the GNU ISO C++ Library. This library is free -+// software; you can redistribute it and/or modify it under the -+// terms of the GNU General Public License as published by the -+// Free Software Foundation; either version 2, or (at your option) -+// any later version. -+ -+// This library is distributed in the hope that it will be useful, -+// but WITHOUT ANY WARRANTY; without even the implied warranty of -+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+// GNU General Public License for more details. -+ -+// You should have received a copy of the GNU General Public License along -+// with this library; see the file COPYING. If not, write to the Free -+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, -+// USA. -+ -+// As a special exception, you may use this file as part of a free software -+// library without restriction. Specifically, if other files instantiate -+// templates or use macros or inline functions from this file, or you compile -+// this file and link it with other files to produce an executable, this -+// file does not by itself cause the resulting executable to be covered by -+// the GNU General Public License. This exception does not however -+// invalidate any other reasons why the executable file might be covered by -+// the GNU General Public License. -+ -+// -+// ISO C++ 14882: 22.2.1.1.2 ctype virtual functions. -+// -+ -+// Written by Benjamin Kosnik -+ -+#define _LIBC -+#include -+#undef _LIBC -+#include -+ -+#ifndef __UCLIBC_HAS_XLOCALE__ -+#define __wctype_l(S, L) wctype((S)) -+#define __towupper_l(C, L) towupper((C)) -+#define __towlower_l(C, L) towlower((C)) -+#define __iswctype_l(C, M, L) iswctype((C), (M)) -+#endif -+ -+namespace std -+{ -+ // NB: The other ctype specializations are in src/locale.cc and -+ // various /config/os/* files. -+ template<> -+ ctype_byname::ctype_byname(const char* __s, size_t __refs) -+ : ctype(0, false, __refs) -+ { -+ if (std::strcmp(__s, "C") != 0 && std::strcmp(__s, "POSIX") != 0) -+ { -+ this->_S_destroy_c_locale(this->_M_c_locale_ctype); -+ this->_S_create_c_locale(this->_M_c_locale_ctype, __s); -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ this->_M_toupper = this->_M_c_locale_ctype->__ctype_toupper; -+ this->_M_tolower = this->_M_c_locale_ctype->__ctype_tolower; -+ this->_M_table = this->_M_c_locale_ctype->__ctype_b; -+#endif -+ } -+ } -+ -+#ifdef _GLIBCXX_USE_WCHAR_T -+ ctype::__wmask_type -+ ctype::_M_convert_to_wmask(const mask __m) const -+ { -+ __wmask_type __ret; -+ switch (__m) -+ { -+ case space: -+ __ret = __wctype_l("space", _M_c_locale_ctype); -+ break; -+ case print: -+ __ret = __wctype_l("print", _M_c_locale_ctype); -+ break; -+ case cntrl: -+ __ret = __wctype_l("cntrl", _M_c_locale_ctype); -+ break; -+ case upper: -+ __ret = __wctype_l("upper", _M_c_locale_ctype); -+ break; -+ case lower: -+ __ret = __wctype_l("lower", _M_c_locale_ctype); -+ break; -+ case alpha: -+ __ret = __wctype_l("alpha", _M_c_locale_ctype); -+ break; -+ case digit: -+ __ret = __wctype_l("digit", _M_c_locale_ctype); -+ break; -+ case punct: -+ __ret = __wctype_l("punct", _M_c_locale_ctype); -+ break; -+ case xdigit: -+ __ret = __wctype_l("xdigit", _M_c_locale_ctype); -+ break; -+ case alnum: -+ __ret = __wctype_l("alnum", _M_c_locale_ctype); -+ break; -+ case graph: -+ __ret = __wctype_l("graph", _M_c_locale_ctype); -+ break; -+ default: -+ __ret = __wmask_type(); -+ } -+ return __ret; -+ } -+ -+ wchar_t -+ ctype::do_toupper(wchar_t __c) const -+ { return __towupper_l(__c, _M_c_locale_ctype); } -+ -+ const wchar_t* -+ ctype::do_toupper(wchar_t* __lo, const wchar_t* __hi) const -+ { -+ while (__lo < __hi) -+ { -+ *__lo = __towupper_l(*__lo, _M_c_locale_ctype); -+ ++__lo; -+ } -+ return __hi; -+ } -+ -+ wchar_t -+ ctype::do_tolower(wchar_t __c) const -+ { return __towlower_l(__c, _M_c_locale_ctype); } -+ -+ const wchar_t* -+ ctype::do_tolower(wchar_t* __lo, const wchar_t* __hi) const -+ { -+ while (__lo < __hi) -+ { -+ *__lo = __towlower_l(*__lo, _M_c_locale_ctype); -+ ++__lo; -+ } -+ return __hi; -+ } -+ -+ bool -+ ctype:: -+ do_is(mask __m, wchar_t __c) const -+ { -+ // Highest bitmask in ctype_base == 10, but extra in "C" -+ // library for blank. -+ bool __ret = false; -+ const size_t __bitmasksize = 11; -+ for (size_t __bitcur = 0; __bitcur <= __bitmasksize; ++__bitcur) -+ if (__m & _M_bit[__bitcur] -+ && __iswctype_l(__c, _M_wmask[__bitcur], _M_c_locale_ctype)) -+ { -+ __ret = true; -+ break; -+ } -+ return __ret; -+ } -+ -+ const wchar_t* -+ ctype:: -+ do_is(const wchar_t* __lo, const wchar_t* __hi, mask* __vec) const -+ { -+ for (; __lo < __hi; ++__vec, ++__lo) -+ { -+ // Highest bitmask in ctype_base == 10, but extra in "C" -+ // library for blank. -+ const size_t __bitmasksize = 11; -+ mask __m = 0; -+ for (size_t __bitcur = 0; __bitcur <= __bitmasksize; ++__bitcur) -+ if (__iswctype_l(*__lo, _M_wmask[__bitcur], _M_c_locale_ctype)) -+ __m |= _M_bit[__bitcur]; -+ *__vec = __m; -+ } -+ return __hi; -+ } -+ -+ const wchar_t* -+ ctype:: -+ do_scan_is(mask __m, const wchar_t* __lo, const wchar_t* __hi) const -+ { -+ while (__lo < __hi && !this->do_is(__m, *__lo)) -+ ++__lo; -+ return __lo; -+ } -+ -+ const wchar_t* -+ ctype:: -+ do_scan_not(mask __m, const char_type* __lo, const char_type* __hi) const -+ { -+ while (__lo < __hi && this->do_is(__m, *__lo) != 0) -+ ++__lo; -+ return __lo; -+ } -+ -+ wchar_t -+ ctype:: -+ do_widen(char __c) const -+ { return _M_widen[static_cast(__c)]; } -+ -+ const char* -+ ctype:: -+ do_widen(const char* __lo, const char* __hi, wchar_t* __dest) const -+ { -+ while (__lo < __hi) -+ { -+ *__dest = _M_widen[static_cast(*__lo)]; -+ ++__lo; -+ ++__dest; -+ } -+ return __hi; -+ } -+ -+ char -+ ctype:: -+ do_narrow(wchar_t __wc, char __dfault) const -+ { -+ if (__wc >= 0 && __wc < 128 && _M_narrow_ok) -+ return _M_narrow[__wc]; -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __c_locale __old = __uselocale(_M_c_locale_ctype); -+#endif -+ const int __c = wctob(__wc); -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __uselocale(__old); -+#endif -+ return (__c == EOF ? __dfault : static_cast(__c)); -+ } -+ -+ const wchar_t* -+ ctype:: -+ do_narrow(const wchar_t* __lo, const wchar_t* __hi, char __dfault, -+ char* __dest) const -+ { -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __c_locale __old = __uselocale(_M_c_locale_ctype); -+#endif -+ if (_M_narrow_ok) -+ while (__lo < __hi) -+ { -+ if (*__lo >= 0 && *__lo < 128) -+ *__dest = _M_narrow[*__lo]; -+ else -+ { -+ const int __c = wctob(*__lo); -+ *__dest = (__c == EOF ? __dfault : static_cast(__c)); -+ } -+ ++__lo; -+ ++__dest; -+ } -+ else -+ while (__lo < __hi) -+ { -+ const int __c = wctob(*__lo); -+ *__dest = (__c == EOF ? __dfault : static_cast(__c)); -+ ++__lo; -+ ++__dest; -+ } -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __uselocale(__old); -+#endif -+ return __hi; -+ } -+ -+ void -+ ctype::_M_initialize_ctype() -+ { -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __c_locale __old = __uselocale(_M_c_locale_ctype); -+#endif -+ wint_t __i; -+ for (__i = 0; __i < 128; ++__i) -+ { -+ const int __c = wctob(__i); -+ if (__c == EOF) -+ break; -+ else -+ _M_narrow[__i] = static_cast(__c); -+ } -+ if (__i == 128) -+ _M_narrow_ok = true; -+ else -+ _M_narrow_ok = false; -+ for (size_t __j = 0; -+ __j < sizeof(_M_widen) / sizeof(wint_t); ++__j) -+ _M_widen[__j] = btowc(__j); -+ -+ for (size_t __k = 0; __k <= 11; ++__k) -+ { -+ _M_bit[__k] = static_cast(_ISbit(__k)); -+ _M_wmask[__k] = _M_convert_to_wmask(_M_bit[__k]); -+ } -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __uselocale(__old); -+#endif -+ } -+#endif // _GLIBCXX_USE_WCHAR_T -+} -diff -urN gcc-4.0.0-100/libstdc++-v3/config/locale/uclibc/messages_members.cc gcc-4.0.0/libstdc++-v3/config/locale/uclibc/messages_members.cc ---- gcc-4.0.0-100/libstdc++-v3/config/locale/uclibc/messages_members.cc 1969-12-31 18:00:00.000000000 -0600 -+++ gcc-4.0.0/libstdc++-v3/config/locale/uclibc/messages_members.cc 2005-04-28 01:13:15.000000000 -0500 -@@ -0,0 +1,100 @@ -+// std::messages implementation details, GNU version -*- C++ -*- -+ -+// Copyright (C) 2001, 2002 Free Software Foundation, Inc. -+// -+// This file is part of the GNU ISO C++ Library. This library is free -+// software; you can redistribute it and/or modify it under the -+// terms of the GNU General Public License as published by the -+// Free Software Foundation; either version 2, or (at your option) -+// any later version. -+ -+// This library is distributed in the hope that it will be useful, -+// but WITHOUT ANY WARRANTY; without even the implied warranty of -+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+// GNU General Public License for more details. -+ -+// You should have received a copy of the GNU General Public License along -+// with this library; see the file COPYING. If not, write to the Free -+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, -+// USA. -+ -+// As a special exception, you may use this file as part of a free software -+// library without restriction. Specifically, if other files instantiate -+// templates or use macros or inline functions from this file, or you compile -+// this file and link it with other files to produce an executable, this -+// file does not by itself cause the resulting executable to be covered by -+// the GNU General Public License. This exception does not however -+// invalidate any other reasons why the executable file might be covered by -+// the GNU General Public License. -+ -+// -+// ISO C++ 14882: 22.2.7.1.2 messages virtual functions -+// -+ -+// Written by Benjamin Kosnik -+ -+#include -+#include -+ -+#ifdef __UCLIBC_MJN3_ONLY__ -+#warning fix gettext stuff -+#endif -+#ifdef __UCLIBC_HAS_GETTEXT_AWARENESS__ -+extern "C" char *__dcgettext(const char *domainname, -+ const char *msgid, int category); -+#undef gettext -+#define gettext(msgid) __dcgettext(NULL, msgid, LC_MESSAGES) -+#else -+#undef gettext -+#define gettext(msgid) (msgid) -+#endif -+ -+namespace std -+{ -+ // Specializations. -+ template<> -+ string -+ messages::do_get(catalog, int, int, const string& __dfault) const -+ { -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __c_locale __old = __uselocale(_M_c_locale_messages); -+ const char* __msg = const_cast(gettext(__dfault.c_str())); -+ __uselocale(__old); -+ return string(__msg); -+#elif defined __UCLIBC_HAS_LOCALE__ -+ char* __old = strdup(setlocale(LC_ALL, NULL)); -+ setlocale(LC_ALL, _M_name_messages); -+ const char* __msg = gettext(__dfault.c_str()); -+ setlocale(LC_ALL, __old); -+ free(__old); -+ return string(__msg); -+#else -+ const char* __msg = gettext(__dfault.c_str()); -+ return string(__msg); -+#endif -+ } -+ -+#ifdef _GLIBCXX_USE_WCHAR_T -+ template<> -+ wstring -+ messages::do_get(catalog, int, int, const wstring& __dfault) const -+ { -+# ifdef __UCLIBC_HAS_XLOCALE__ -+ __c_locale __old = __uselocale(_M_c_locale_messages); -+ char* __msg = gettext(_M_convert_to_char(__dfault)); -+ __uselocale(__old); -+ return _M_convert_from_char(__msg); -+# elif defined __UCLIBC_HAS_LOCALE__ -+ char* __old = strdup(setlocale(LC_ALL, NULL)); -+ setlocale(LC_ALL, _M_name_messages); -+ char* __msg = gettext(_M_convert_to_char(__dfault)); -+ setlocale(LC_ALL, __old); -+ free(__old); -+ return _M_convert_from_char(__msg); -+# else -+ char* __msg = gettext(_M_convert_to_char(__dfault)); -+ return _M_convert_from_char(__msg); -+# endif -+ } -+#endif -+} -diff -urN gcc-4.0.0-100/libstdc++-v3/config/locale/uclibc/messages_members.h gcc-4.0.0/libstdc++-v3/config/locale/uclibc/messages_members.h ---- gcc-4.0.0-100/libstdc++-v3/config/locale/uclibc/messages_members.h 1969-12-31 18:00:00.000000000 -0600 -+++ gcc-4.0.0/libstdc++-v3/config/locale/uclibc/messages_members.h 2005-04-28 01:13:15.000000000 -0500 -@@ -0,0 +1,118 @@ -+// std::messages implementation details, GNU version -*- C++ -*- -+ -+// Copyright (C) 2001, 2002, 2003, 2004 Free Software Foundation, Inc. -+// -+// This file is part of the GNU ISO C++ Library. This library is free -+// software; you can redistribute it and/or modify it under the -+// terms of the GNU General Public License as published by the -+// Free Software Foundation; either version 2, or (at your option) -+// any later version. -+ -+// This library is distributed in the hope that it will be useful, -+// but WITHOUT ANY WARRANTY; without even the implied warranty of -+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+// GNU General Public License for more details. -+ -+// You should have received a copy of the GNU General Public License along -+// with this library; see the file COPYING. If not, write to the Free -+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, -+// USA. -+ -+// As a special exception, you may use this file as part of a free software -+// library without restriction. Specifically, if other files instantiate -+// templates or use macros or inline functions from this file, or you compile -+// this file and link it with other files to produce an executable, this -+// file does not by itself cause the resulting executable to be covered by -+// the GNU General Public License. This exception does not however -+// invalidate any other reasons why the executable file might be covered by -+// the GNU General Public License. -+ -+// -+// ISO C++ 14882: 22.2.7.1.2 messages functions -+// -+ -+// Written by Benjamin Kosnik -+ -+#ifdef __UCLIBC_MJN3_ONLY__ -+#warning fix prototypes for *textdomain funcs -+#endif -+#ifdef __UCLIBC_HAS_GETTEXT_AWARENESS__ -+extern "C" char *__textdomain(const char *domainname); -+extern "C" char *__bindtextdomain(const char *domainname, -+ const char *dirname); -+#else -+#undef __textdomain -+#undef __bindtextdomain -+#define __textdomain(D) ((void)0) -+#define __bindtextdomain(D,P) ((void)0) -+#endif -+ -+ // Non-virtual member functions. -+ template -+ messages<_CharT>::messages(size_t __refs) -+ : facet(__refs), _M_c_locale_messages(_S_get_c_locale()), -+ _M_name_messages(_S_get_c_name()) -+ { } -+ -+ template -+ messages<_CharT>::messages(__c_locale __cloc, const char* __s, -+ size_t __refs) -+ : facet(__refs), _M_c_locale_messages(_S_clone_c_locale(__cloc)), -+ _M_name_messages(__s) -+ { -+ char* __tmp = new char[std::strlen(__s) + 1]; -+ std::strcpy(__tmp, __s); -+ _M_name_messages = __tmp; -+ } -+ -+ template -+ typename messages<_CharT>::catalog -+ messages<_CharT>::open(const basic_string& __s, const locale& __loc, -+ const char* __dir) const -+ { -+ __bindtextdomain(__s.c_str(), __dir); -+ return this->do_open(__s, __loc); -+ } -+ -+ // Virtual member functions. -+ template -+ messages<_CharT>::~messages() -+ { -+ if (_M_name_messages != _S_get_c_name()) -+ delete [] _M_name_messages; -+ _S_destroy_c_locale(_M_c_locale_messages); -+ } -+ -+ template -+ typename messages<_CharT>::catalog -+ messages<_CharT>::do_open(const basic_string& __s, -+ const locale&) const -+ { -+ // No error checking is done, assume the catalog exists and can -+ // be used. -+ __textdomain(__s.c_str()); -+ return 0; -+ } -+ -+ template -+ void -+ messages<_CharT>::do_close(catalog) const -+ { } -+ -+ // messages_byname -+ template -+ messages_byname<_CharT>::messages_byname(const char* __s, size_t __refs) -+ : messages<_CharT>(__refs) -+ { -+ if (this->_M_name_messages != locale::facet::_S_get_c_name()) -+ delete [] this->_M_name_messages; -+ char* __tmp = new char[std::strlen(__s) + 1]; -+ std::strcpy(__tmp, __s); -+ this->_M_name_messages = __tmp; -+ -+ if (std::strcmp(__s, "C") != 0 && std::strcmp(__s, "POSIX") != 0) -+ { -+ this->_S_destroy_c_locale(this->_M_c_locale_messages); -+ this->_S_create_c_locale(this->_M_c_locale_messages, __s); -+ } -+ } -diff -urN gcc-4.0.0-100/libstdc++-v3/config/locale/uclibc/monetary_members.cc gcc-4.0.0/libstdc++-v3/config/locale/uclibc/monetary_members.cc ---- gcc-4.0.0-100/libstdc++-v3/config/locale/uclibc/monetary_members.cc 1969-12-31 18:00:00.000000000 -0600 -+++ gcc-4.0.0/libstdc++-v3/config/locale/uclibc/monetary_members.cc 2005-04-28 01:23:02.000000000 -0500 -@@ -0,0 +1,692 @@ -+// std::moneypunct implementation details, GNU version -*- C++ -*- -+ -+// Copyright (C) 2001, 2002, 2003, 2004 Free Software Foundation, Inc. -+// -+// This file is part of the GNU ISO C++ Library. This library is free -+// software; you can redistribute it and/or modify it under the -+// terms of the GNU General Public License as published by the -+// Free Software Foundation; either version 2, or (at your option) -+// any later version. -+ -+// This library is distributed in the hope that it will be useful, -+// but WITHOUT ANY WARRANTY; without even the implied warranty of -+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+// GNU General Public License for more details. -+ -+// You should have received a copy of the GNU General Public License along -+// with this library; see the file COPYING. If not, write to the Free -+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, -+// USA. -+ -+// As a special exception, you may use this file as part of a free software -+// library without restriction. Specifically, if other files instantiate -+// templates or use macros or inline functions from this file, or you compile -+// this file and link it with other files to produce an executable, this -+// file does not by itself cause the resulting executable to be covered by -+// the GNU General Public License. This exception does not however -+// invalidate any other reasons why the executable file might be covered by -+// the GNU General Public License. -+ -+// -+// ISO C++ 14882: 22.2.6.3.2 moneypunct virtual functions -+// -+ -+// Written by Benjamin Kosnik -+ -+#define _LIBC -+#include -+#undef _LIBC -+#include -+ -+#ifdef __UCLIBC_MJN3_ONLY__ -+#warning optimize this for uclibc -+#warning tailor for stub locale support -+#endif -+ -+#ifndef __UCLIBC_HAS_XLOCALE__ -+#define __nl_langinfo_l(N, L) nl_langinfo((N)) -+#endif -+ -+namespace std -+{ -+ // Construct and return valid pattern consisting of some combination of: -+ // space none symbol sign value -+ money_base::pattern -+ money_base::_S_construct_pattern(char __precedes, char __space, char __posn) -+ { -+ pattern __ret; -+ -+ // This insanely complicated routine attempts to construct a valid -+ // pattern for use with monyepunct. A couple of invariants: -+ -+ // if (__precedes) symbol -> value -+ // else value -> symbol -+ -+ // if (__space) space -+ // else none -+ -+ // none == never first -+ // space never first or last -+ -+ // Any elegant implementations of this are welcome. -+ switch (__posn) -+ { -+ case 0: -+ case 1: -+ // 1 The sign precedes the value and symbol. -+ __ret.field[0] = sign; -+ if (__space) -+ { -+ // Pattern starts with sign. -+ if (__precedes) -+ { -+ __ret.field[1] = symbol; -+ __ret.field[3] = value; -+ } -+ else -+ { -+ __ret.field[1] = value; -+ __ret.field[3] = symbol; -+ } -+ __ret.field[2] = space; -+ } -+ else -+ { -+ // Pattern starts with sign and ends with none. -+ if (__precedes) -+ { -+ __ret.field[1] = symbol; -+ __ret.field[2] = value; -+ } -+ else -+ { -+ __ret.field[1] = value; -+ __ret.field[2] = symbol; -+ } -+ __ret.field[3] = none; -+ } -+ break; -+ case 2: -+ // 2 The sign follows the value and symbol. -+ if (__space) -+ { -+ // Pattern either ends with sign. -+ if (__precedes) -+ { -+ __ret.field[0] = symbol; -+ __ret.field[2] = value; -+ } -+ else -+ { -+ __ret.field[0] = value; -+ __ret.field[2] = symbol; -+ } -+ __ret.field[1] = space; -+ __ret.field[3] = sign; -+ } -+ else -+ { -+ // Pattern ends with sign then none. -+ if (__precedes) -+ { -+ __ret.field[0] = symbol; -+ __ret.field[1] = value; -+ } -+ else -+ { -+ __ret.field[0] = value; -+ __ret.field[1] = symbol; -+ } -+ __ret.field[2] = sign; -+ __ret.field[3] = none; -+ } -+ break; -+ case 3: -+ // 3 The sign immediately precedes the symbol. -+ if (__precedes) -+ { -+ __ret.field[0] = sign; -+ __ret.field[1] = symbol; -+ if (__space) -+ { -+ __ret.field[2] = space; -+ __ret.field[3] = value; -+ } -+ else -+ { -+ __ret.field[2] = value; -+ __ret.field[3] = none; -+ } -+ } -+ else -+ { -+ __ret.field[0] = value; -+ if (__space) -+ { -+ __ret.field[1] = space; -+ __ret.field[2] = sign; -+ __ret.field[3] = symbol; -+ } -+ else -+ { -+ __ret.field[1] = sign; -+ __ret.field[2] = symbol; -+ __ret.field[3] = none; -+ } -+ } -+ break; -+ case 4: -+ // 4 The sign immediately follows the symbol. -+ if (__precedes) -+ { -+ __ret.field[0] = symbol; -+ __ret.field[1] = sign; -+ if (__space) -+ { -+ __ret.field[2] = space; -+ __ret.field[3] = value; -+ } -+ else -+ { -+ __ret.field[2] = value; -+ __ret.field[3] = none; -+ } -+ } -+ else -+ { -+ __ret.field[0] = value; -+ if (__space) -+ { -+ __ret.field[1] = space; -+ __ret.field[2] = symbol; -+ __ret.field[3] = sign; -+ } -+ else -+ { -+ __ret.field[1] = symbol; -+ __ret.field[2] = sign; -+ __ret.field[3] = none; -+ } -+ } -+ break; -+ default: -+ __ret = pattern(); -+ } -+ return __ret; -+ } -+ -+ template<> -+ void -+ moneypunct::_M_initialize_moneypunct(__c_locale __cloc, -+ const char*) -+ { -+ if (!_M_data) -+ _M_data = new __moneypunct_cache; -+ -+ if (!__cloc) -+ { -+ // "C" locale -+ _M_data->_M_decimal_point = '.'; -+ _M_data->_M_thousands_sep = ','; -+ _M_data->_M_grouping = ""; -+ _M_data->_M_grouping_size = 0; -+ _M_data->_M_curr_symbol = ""; -+ _M_data->_M_curr_symbol_size = 0; -+ _M_data->_M_positive_sign = ""; -+ _M_data->_M_positive_sign_size = 0; -+ _M_data->_M_negative_sign = ""; -+ _M_data->_M_negative_sign_size = 0; -+ _M_data->_M_frac_digits = 0; -+ _M_data->_M_pos_format = money_base::_S_default_pattern; -+ _M_data->_M_neg_format = money_base::_S_default_pattern; -+ -+ for (size_t __i = 0; __i < money_base::_S_end; ++__i) -+ _M_data->_M_atoms[__i] = money_base::_S_atoms[__i]; -+ } -+ else -+ { -+ // Named locale. -+ _M_data->_M_decimal_point = *(__nl_langinfo_l(__MON_DECIMAL_POINT, -+ __cloc)); -+ _M_data->_M_thousands_sep = *(__nl_langinfo_l(__MON_THOUSANDS_SEP, -+ __cloc)); -+ _M_data->_M_grouping = __nl_langinfo_l(__MON_GROUPING, __cloc); -+ _M_data->_M_grouping_size = strlen(_M_data->_M_grouping); -+ _M_data->_M_positive_sign = __nl_langinfo_l(__POSITIVE_SIGN, __cloc); -+ _M_data->_M_positive_sign_size = strlen(_M_data->_M_positive_sign); -+ -+ char __nposn = *(__nl_langinfo_l(__INT_N_SIGN_POSN, __cloc)); -+ if (!__nposn) -+ _M_data->_M_negative_sign = "()"; -+ else -+ _M_data->_M_negative_sign = __nl_langinfo_l(__NEGATIVE_SIGN, -+ __cloc); -+ _M_data->_M_negative_sign_size = strlen(_M_data->_M_negative_sign); -+ -+ // _Intl == true -+ _M_data->_M_curr_symbol = __nl_langinfo_l(__INT_CURR_SYMBOL, __cloc); -+ _M_data->_M_curr_symbol_size = strlen(_M_data->_M_curr_symbol); -+ _M_data->_M_frac_digits = *(__nl_langinfo_l(__INT_FRAC_DIGITS, -+ __cloc)); -+ char __pprecedes = *(__nl_langinfo_l(__INT_P_CS_PRECEDES, __cloc)); -+ char __pspace = *(__nl_langinfo_l(__INT_P_SEP_BY_SPACE, __cloc)); -+ char __pposn = *(__nl_langinfo_l(__INT_P_SIGN_POSN, __cloc)); -+ _M_data->_M_pos_format = _S_construct_pattern(__pprecedes, __pspace, -+ __pposn); -+ char __nprecedes = *(__nl_langinfo_l(__INT_N_CS_PRECEDES, __cloc)); -+ char __nspace = *(__nl_langinfo_l(__INT_N_SEP_BY_SPACE, __cloc)); -+ _M_data->_M_neg_format = _S_construct_pattern(__nprecedes, __nspace, -+ __nposn); -+ } -+ } -+ -+ template<> -+ void -+ moneypunct::_M_initialize_moneypunct(__c_locale __cloc, -+ const char*) -+ { -+ if (!_M_data) -+ _M_data = new __moneypunct_cache; -+ -+ if (!__cloc) -+ { -+ // "C" locale -+ _M_data->_M_decimal_point = '.'; -+ _M_data->_M_thousands_sep = ','; -+ _M_data->_M_grouping = ""; -+ _M_data->_M_grouping_size = 0; -+ _M_data->_M_curr_symbol = ""; -+ _M_data->_M_curr_symbol_size = 0; -+ _M_data->_M_positive_sign = ""; -+ _M_data->_M_positive_sign_size = 0; -+ _M_data->_M_negative_sign = ""; -+ _M_data->_M_negative_sign_size = 0; -+ _M_data->_M_frac_digits = 0; -+ _M_data->_M_pos_format = money_base::_S_default_pattern; -+ _M_data->_M_neg_format = money_base::_S_default_pattern; -+ -+ for (size_t __i = 0; __i < money_base::_S_end; ++__i) -+ _M_data->_M_atoms[__i] = money_base::_S_atoms[__i]; -+ } -+ else -+ { -+ // Named locale. -+ _M_data->_M_decimal_point = *(__nl_langinfo_l(__MON_DECIMAL_POINT, -+ __cloc)); -+ _M_data->_M_thousands_sep = *(__nl_langinfo_l(__MON_THOUSANDS_SEP, -+ __cloc)); -+ _M_data->_M_grouping = __nl_langinfo_l(__MON_GROUPING, __cloc); -+ _M_data->_M_grouping_size = strlen(_M_data->_M_grouping); -+ _M_data->_M_positive_sign = __nl_langinfo_l(__POSITIVE_SIGN, __cloc); -+ _M_data->_M_positive_sign_size = strlen(_M_data->_M_positive_sign); -+ -+ char __nposn = *(__nl_langinfo_l(__N_SIGN_POSN, __cloc)); -+ if (!__nposn) -+ _M_data->_M_negative_sign = "()"; -+ else -+ _M_data->_M_negative_sign = __nl_langinfo_l(__NEGATIVE_SIGN, -+ __cloc); -+ _M_data->_M_negative_sign_size = strlen(_M_data->_M_negative_sign); -+ -+ // _Intl == false -+ _M_data->_M_curr_symbol = __nl_langinfo_l(__CURRENCY_SYMBOL, __cloc); -+ _M_data->_M_curr_symbol_size = strlen(_M_data->_M_curr_symbol); -+ _M_data->_M_frac_digits = *(__nl_langinfo_l(__FRAC_DIGITS, __cloc)); -+ char __pprecedes = *(__nl_langinfo_l(__P_CS_PRECEDES, __cloc)); -+ char __pspace = *(__nl_langinfo_l(__P_SEP_BY_SPACE, __cloc)); -+ char __pposn = *(__nl_langinfo_l(__P_SIGN_POSN, __cloc)); -+ _M_data->_M_pos_format = _S_construct_pattern(__pprecedes, __pspace, -+ __pposn); -+ char __nprecedes = *(__nl_langinfo_l(__N_CS_PRECEDES, __cloc)); -+ char __nspace = *(__nl_langinfo_l(__N_SEP_BY_SPACE, __cloc)); -+ _M_data->_M_neg_format = _S_construct_pattern(__nprecedes, __nspace, -+ __nposn); -+ } -+ } -+ -+ template<> -+ moneypunct::~moneypunct() -+ { delete _M_data; } -+ -+ template<> -+ moneypunct::~moneypunct() -+ { delete _M_data; } -+ -+#ifdef _GLIBCXX_USE_WCHAR_T -+ template<> -+ void -+ moneypunct::_M_initialize_moneypunct(__c_locale __cloc, -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ const char*) -+#else -+ const char* __name) -+#endif -+ { -+ if (!_M_data) -+ _M_data = new __moneypunct_cache; -+ -+ if (!__cloc) -+ { -+ // "C" locale -+ _M_data->_M_decimal_point = L'.'; -+ _M_data->_M_thousands_sep = L','; -+ _M_data->_M_grouping = ""; -+ _M_data->_M_grouping_size = 0; -+ _M_data->_M_curr_symbol = L""; -+ _M_data->_M_curr_symbol_size = 0; -+ _M_data->_M_positive_sign = L""; -+ _M_data->_M_positive_sign_size = 0; -+ _M_data->_M_negative_sign = L""; -+ _M_data->_M_negative_sign_size = 0; -+ _M_data->_M_frac_digits = 0; -+ _M_data->_M_pos_format = money_base::_S_default_pattern; -+ _M_data->_M_neg_format = money_base::_S_default_pattern; -+ -+ // Use ctype::widen code without the facet... -+ for (size_t __i = 0; __i < money_base::_S_end; ++__i) -+ _M_data->_M_atoms[__i] = -+ static_cast(money_base::_S_atoms[__i]); -+ } -+ else -+ { -+ // Named locale. -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __c_locale __old = __uselocale(__cloc); -+#else -+ // Switch to named locale so that mbsrtowcs will work. -+ char* __old = strdup(setlocale(LC_ALL, NULL)); -+ setlocale(LC_ALL, __name); -+#endif -+ -+#ifdef __UCLIBC_MJN3_ONLY__ -+#warning fix this... should be monetary -+#endif -+#ifdef __UCLIBC__ -+# ifdef __UCLIBC_HAS_XLOCALE__ -+ _M_data->_M_decimal_point = __cloc->decimal_point_wc; -+ _M_data->_M_thousands_sep = __cloc->thousands_sep_wc; -+# else -+ _M_data->_M_decimal_point = __global_locale->decimal_point_wc; -+ _M_data->_M_thousands_sep = __global_locale->thousands_sep_wc; -+# endif -+#else -+ union { char *__s; wchar_t __w; } __u; -+ __u.__s = __nl_langinfo_l(_NL_MONETARY_DECIMAL_POINT_WC, __cloc); -+ _M_data->_M_decimal_point = __u.__w; -+ -+ __u.__s = __nl_langinfo_l(_NL_MONETARY_THOUSANDS_SEP_WC, __cloc); -+ _M_data->_M_thousands_sep = __u.__w; -+#endif -+ _M_data->_M_grouping = __nl_langinfo_l(__MON_GROUPING, __cloc); -+ _M_data->_M_grouping_size = strlen(_M_data->_M_grouping); -+ -+ const char* __cpossign = __nl_langinfo_l(__POSITIVE_SIGN, __cloc); -+ const char* __cnegsign = __nl_langinfo_l(__NEGATIVE_SIGN, __cloc); -+ const char* __ccurr = __nl_langinfo_l(__INT_CURR_SYMBOL, __cloc); -+ -+ wchar_t* __wcs_ps = 0; -+ wchar_t* __wcs_ns = 0; -+ const char __nposn = *(__nl_langinfo_l(__INT_N_SIGN_POSN, __cloc)); -+ try -+ { -+ mbstate_t __state; -+ size_t __len = strlen(__cpossign); -+ if (__len) -+ { -+ ++__len; -+ memset(&__state, 0, sizeof(mbstate_t)); -+ __wcs_ps = new wchar_t[__len]; -+ mbsrtowcs(__wcs_ps, &__cpossign, __len, &__state); -+ _M_data->_M_positive_sign = __wcs_ps; -+ } -+ else -+ _M_data->_M_positive_sign = L""; -+ _M_data->_M_positive_sign_size = wcslen(_M_data->_M_positive_sign); -+ -+ __len = strlen(__cnegsign); -+ if (!__nposn) -+ _M_data->_M_negative_sign = L"()"; -+ else if (__len) -+ { -+ ++__len; -+ memset(&__state, 0, sizeof(mbstate_t)); -+ __wcs_ns = new wchar_t[__len]; -+ mbsrtowcs(__wcs_ns, &__cnegsign, __len, &__state); -+ _M_data->_M_negative_sign = __wcs_ns; -+ } -+ else -+ _M_data->_M_negative_sign = L""; -+ _M_data->_M_negative_sign_size = wcslen(_M_data->_M_negative_sign); -+ -+ // _Intl == true. -+ __len = strlen(__ccurr); -+ if (__len) -+ { -+ ++__len; -+ memset(&__state, 0, sizeof(mbstate_t)); -+ wchar_t* __wcs = new wchar_t[__len]; -+ mbsrtowcs(__wcs, &__ccurr, __len, &__state); -+ _M_data->_M_curr_symbol = __wcs; -+ } -+ else -+ _M_data->_M_curr_symbol = L""; -+ _M_data->_M_curr_symbol_size = wcslen(_M_data->_M_curr_symbol); -+ } -+ catch (...) -+ { -+ delete _M_data; -+ _M_data = 0; -+ delete __wcs_ps; -+ delete __wcs_ns; -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __uselocale(__old); -+#else -+ setlocale(LC_ALL, __old); -+ free(__old); -+#endif -+ __throw_exception_again; -+ } -+ -+ _M_data->_M_frac_digits = *(__nl_langinfo_l(__INT_FRAC_DIGITS, -+ __cloc)); -+ char __pprecedes = *(__nl_langinfo_l(__INT_P_CS_PRECEDES, __cloc)); -+ char __pspace = *(__nl_langinfo_l(__INT_P_SEP_BY_SPACE, __cloc)); -+ char __pposn = *(__nl_langinfo_l(__INT_P_SIGN_POSN, __cloc)); -+ _M_data->_M_pos_format = _S_construct_pattern(__pprecedes, __pspace, -+ __pposn); -+ char __nprecedes = *(__nl_langinfo_l(__INT_N_CS_PRECEDES, __cloc)); -+ char __nspace = *(__nl_langinfo_l(__INT_N_SEP_BY_SPACE, __cloc)); -+ _M_data->_M_neg_format = _S_construct_pattern(__nprecedes, __nspace, -+ __nposn); -+ -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __uselocale(__old); -+#else -+ setlocale(LC_ALL, __old); -+ free(__old); -+#endif -+ } -+ } -+ -+ template<> -+ void -+ moneypunct::_M_initialize_moneypunct(__c_locale __cloc, -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ const char*) -+#else -+ const char* __name) -+#endif -+ { -+ if (!_M_data) -+ _M_data = new __moneypunct_cache; -+ -+ if (!__cloc) -+ { -+ // "C" locale -+ _M_data->_M_decimal_point = L'.'; -+ _M_data->_M_thousands_sep = L','; -+ _M_data->_M_grouping = ""; -+ _M_data->_M_grouping_size = 0; -+ _M_data->_M_curr_symbol = L""; -+ _M_data->_M_curr_symbol_size = 0; -+ _M_data->_M_positive_sign = L""; -+ _M_data->_M_positive_sign_size = 0; -+ _M_data->_M_negative_sign = L""; -+ _M_data->_M_negative_sign_size = 0; -+ _M_data->_M_frac_digits = 0; -+ _M_data->_M_pos_format = money_base::_S_default_pattern; -+ _M_data->_M_neg_format = money_base::_S_default_pattern; -+ -+ // Use ctype::widen code without the facet... -+ for (size_t __i = 0; __i < money_base::_S_end; ++__i) -+ _M_data->_M_atoms[__i] = -+ static_cast(money_base::_S_atoms[__i]); -+ } -+ else -+ { -+ // Named locale. -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __c_locale __old = __uselocale(__cloc); -+#else -+ // Switch to named locale so that mbsrtowcs will work. -+ char* __old = strdup(setlocale(LC_ALL, NULL)); -+ setlocale(LC_ALL, __name); -+#endif -+ -+#ifdef __UCLIBC_MJN3_ONLY__ -+#warning fix this... should be monetary -+#endif -+#ifdef __UCLIBC__ -+# ifdef __UCLIBC_HAS_XLOCALE__ -+ _M_data->_M_decimal_point = __cloc->decimal_point_wc; -+ _M_data->_M_thousands_sep = __cloc->thousands_sep_wc; -+# else -+ _M_data->_M_decimal_point = __global_locale->decimal_point_wc; -+ _M_data->_M_thousands_sep = __global_locale->thousands_sep_wc; -+# endif -+#else -+ union { char *__s; wchar_t __w; } __u; -+ __u.__s = __nl_langinfo_l(_NL_MONETARY_DECIMAL_POINT_WC, __cloc); -+ _M_data->_M_decimal_point = __u.__w; -+ -+ __u.__s = __nl_langinfo_l(_NL_MONETARY_THOUSANDS_SEP_WC, __cloc); -+ _M_data->_M_thousands_sep = __u.__w; -+#endif -+ _M_data->_M_grouping = __nl_langinfo_l(__MON_GROUPING, __cloc); -+ _M_data->_M_grouping_size = strlen(_M_data->_M_grouping); -+ -+ const char* __cpossign = __nl_langinfo_l(__POSITIVE_SIGN, __cloc); -+ const char* __cnegsign = __nl_langinfo_l(__NEGATIVE_SIGN, __cloc); -+ const char* __ccurr = __nl_langinfo_l(__CURRENCY_SYMBOL, __cloc); -+ -+ wchar_t* __wcs_ps = 0; -+ wchar_t* __wcs_ns = 0; -+ const char __nposn = *(__nl_langinfo_l(__N_SIGN_POSN, __cloc)); -+ try -+ { -+ mbstate_t __state; -+ size_t __len; -+ __len = strlen(__cpossign); -+ if (__len) -+ { -+ ++__len; -+ memset(&__state, 0, sizeof(mbstate_t)); -+ __wcs_ps = new wchar_t[__len]; -+ mbsrtowcs(__wcs_ps, &__cpossign, __len, &__state); -+ _M_data->_M_positive_sign = __wcs_ps; -+ } -+ else -+ _M_data->_M_positive_sign = L""; -+ _M_data->_M_positive_sign_size = wcslen(_M_data->_M_positive_sign); -+ -+ __len = strlen(__cnegsign); -+ if (!__nposn) -+ _M_data->_M_negative_sign = L"()"; -+ else if (__len) -+ { -+ ++__len; -+ memset(&__state, 0, sizeof(mbstate_t)); -+ __wcs_ns = new wchar_t[__len]; -+ mbsrtowcs(__wcs_ns, &__cnegsign, __len, &__state); -+ _M_data->_M_negative_sign = __wcs_ns; -+ } -+ else -+ _M_data->_M_negative_sign = L""; -+ _M_data->_M_negative_sign_size = wcslen(_M_data->_M_negative_sign); -+ -+ // _Intl == true. -+ __len = strlen(__ccurr); -+ if (__len) -+ { -+ ++__len; -+ memset(&__state, 0, sizeof(mbstate_t)); -+ wchar_t* __wcs = new wchar_t[__len]; -+ mbsrtowcs(__wcs, &__ccurr, __len, &__state); -+ _M_data->_M_curr_symbol = __wcs; -+ } -+ else -+ _M_data->_M_curr_symbol = L""; -+ _M_data->_M_curr_symbol_size = wcslen(_M_data->_M_curr_symbol); -+ } -+ catch (...) -+ { -+ delete _M_data; -+ _M_data = 0; -+ delete __wcs_ps; -+ delete __wcs_ns; -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __uselocale(__old); -+#else -+ setlocale(LC_ALL, __old); -+ free(__old); -+#endif -+ __throw_exception_again; -+ } -+ -+ _M_data->_M_frac_digits = *(__nl_langinfo_l(__FRAC_DIGITS, __cloc)); -+ char __pprecedes = *(__nl_langinfo_l(__P_CS_PRECEDES, __cloc)); -+ char __pspace = *(__nl_langinfo_l(__P_SEP_BY_SPACE, __cloc)); -+ char __pposn = *(__nl_langinfo_l(__P_SIGN_POSN, __cloc)); -+ _M_data->_M_pos_format = _S_construct_pattern(__pprecedes, __pspace, -+ __pposn); -+ char __nprecedes = *(__nl_langinfo_l(__N_CS_PRECEDES, __cloc)); -+ char __nspace = *(__nl_langinfo_l(__N_SEP_BY_SPACE, __cloc)); -+ _M_data->_M_neg_format = _S_construct_pattern(__nprecedes, __nspace, -+ __nposn); -+ -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __uselocale(__old); -+#else -+ setlocale(LC_ALL, __old); -+ free(__old); -+#endif -+ } -+ } -+ -+ template<> -+ moneypunct::~moneypunct() -+ { -+ if (_M_data->_M_positive_sign_size) -+ delete [] _M_data->_M_positive_sign; -+ if (_M_data->_M_negative_sign_size -+ && wcscmp(_M_data->_M_negative_sign, L"()") != 0) -+ delete [] _M_data->_M_negative_sign; -+ if (_M_data->_M_curr_symbol_size) -+ delete [] _M_data->_M_curr_symbol; -+ delete _M_data; -+ } -+ -+ template<> -+ moneypunct::~moneypunct() -+ { -+ if (_M_data->_M_positive_sign_size) -+ delete [] _M_data->_M_positive_sign; -+ if (_M_data->_M_negative_sign_size -+ && wcscmp(_M_data->_M_negative_sign, L"()") != 0) -+ delete [] _M_data->_M_negative_sign; -+ if (_M_data->_M_curr_symbol_size) -+ delete [] _M_data->_M_curr_symbol; -+ delete _M_data; -+ } -+#endif -+} -diff -urN gcc-4.0.0-100/libstdc++-v3/config/locale/uclibc/numeric_members.cc gcc-4.0.0/libstdc++-v3/config/locale/uclibc/numeric_members.cc ---- gcc-4.0.0-100/libstdc++-v3/config/locale/uclibc/numeric_members.cc 1969-12-31 18:00:00.000000000 -0600 -+++ gcc-4.0.0/libstdc++-v3/config/locale/uclibc/numeric_members.cc 2005-04-28 01:20:20.000000000 -0500 -@@ -0,0 +1,173 @@ -+// std::numpunct implementation details, GNU version -*- C++ -*- -+ -+// Copyright (C) 2001, 2002, 2003, 2004 Free Software Foundation, Inc. -+// -+// This file is part of the GNU ISO C++ Library. This library is free -+// software; you can redistribute it and/or modify it under the -+// terms of the GNU General Public License as published by the -+// Free Software Foundation; either version 2, or (at your option) -+// any later version. -+ -+// This library is distributed in the hope that it will be useful, -+// but WITHOUT ANY WARRANTY; without even the implied warranty of -+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+// GNU General Public License for more details. -+ -+// You should have received a copy of the GNU General Public License along -+// with this library; see the file COPYING. If not, write to the Free -+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, -+// USA. -+ -+// As a special exception, you may use this file as part of a free software -+// library without restriction. Specifically, if other files instantiate -+// templates or use macros or inline functions from this file, or you compile -+// this file and link it with other files to produce an executable, this -+// file does not by itself cause the resulting executable to be covered by -+// the GNU General Public License. This exception does not however -+// invalidate any other reasons why the executable file might be covered by -+// the GNU General Public License. -+ -+// -+// ISO C++ 14882: 22.2.3.1.2 numpunct virtual functions -+// -+ -+// Written by Benjamin Kosnik -+ -+#define _LIBC -+#include -+#undef _LIBC -+#include -+ -+#ifdef __UCLIBC_MJN3_ONLY__ -+#warning tailor for stub locale support -+#endif -+#ifndef __UCLIBC_HAS_XLOCALE__ -+#define __nl_langinfo_l(N, L) nl_langinfo((N)) -+#endif -+ -+namespace std -+{ -+ template<> -+ void -+ numpunct::_M_initialize_numpunct(__c_locale __cloc) -+ { -+ if (!_M_data) -+ _M_data = new __numpunct_cache; -+ -+ if (!__cloc) -+ { -+ // "C" locale -+ _M_data->_M_grouping = ""; -+ _M_data->_M_grouping_size = 0; -+ _M_data->_M_use_grouping = false; -+ -+ _M_data->_M_decimal_point = '.'; -+ _M_data->_M_thousands_sep = ','; -+ -+ for (size_t __i = 0; __i < __num_base::_S_oend; ++__i) -+ _M_data->_M_atoms_out[__i] = __num_base::_S_atoms_out[__i]; -+ -+ for (size_t __j = 0; __j < __num_base::_S_iend; ++__j) -+ _M_data->_M_atoms_in[__j] = __num_base::_S_atoms_in[__j]; -+ } -+ else -+ { -+ // Named locale. -+ _M_data->_M_decimal_point = *(__nl_langinfo_l(DECIMAL_POINT, -+ __cloc)); -+ _M_data->_M_thousands_sep = *(__nl_langinfo_l(THOUSANDS_SEP, -+ __cloc)); -+ -+ // Check for NULL, which implies no grouping. -+ if (_M_data->_M_thousands_sep == '\0') -+ _M_data->_M_grouping = ""; -+ else -+ _M_data->_M_grouping = __nl_langinfo_l(GROUPING, __cloc); -+ _M_data->_M_grouping_size = strlen(_M_data->_M_grouping); -+ } -+ -+ // NB: There is no way to extact this info from posix locales. -+ // _M_truename = __nl_langinfo_l(YESSTR, __cloc); -+ _M_data->_M_truename = "true"; -+ _M_data->_M_truename_size = 4; -+ // _M_falsename = __nl_langinfo_l(NOSTR, __cloc); -+ _M_data->_M_falsename = "false"; -+ _M_data->_M_falsename_size = 5; -+ } -+ -+ template<> -+ numpunct::~numpunct() -+ { delete _M_data; } -+ -+#ifdef _GLIBCXX_USE_WCHAR_T -+ template<> -+ void -+ numpunct::_M_initialize_numpunct(__c_locale __cloc) -+ { -+ if (!_M_data) -+ _M_data = new __numpunct_cache; -+ -+ if (!__cloc) -+ { -+ // "C" locale -+ _M_data->_M_grouping = ""; -+ _M_data->_M_grouping_size = 0; -+ _M_data->_M_use_grouping = false; -+ -+ _M_data->_M_decimal_point = L'.'; -+ _M_data->_M_thousands_sep = L','; -+ -+ // Use ctype::widen code without the facet... -+ for (size_t __i = 0; __i < __num_base::_S_oend; ++__i) -+ _M_data->_M_atoms_out[__i] = -+ static_cast(__num_base::_S_atoms_out[__i]); -+ -+ for (size_t __j = 0; __j < __num_base::_S_iend; ++__j) -+ _M_data->_M_atoms_in[__j] = -+ static_cast(__num_base::_S_atoms_in[__j]); -+ } -+ else -+ { -+ // Named locale. -+ // NB: In the GNU model wchar_t is always 32 bit wide. -+#ifdef __UCLIBC_MJN3_ONLY__ -+#warning fix this -+#endif -+#ifdef __UCLIBC__ -+# ifdef __UCLIBC_HAS_XLOCALE__ -+ _M_data->_M_decimal_point = __cloc->decimal_point_wc; -+ _M_data->_M_thousands_sep = __cloc->thousands_sep_wc; -+# else -+ _M_data->_M_decimal_point = __global_locale->decimal_point_wc; -+ _M_data->_M_thousands_sep = __global_locale->thousands_sep_wc; -+# endif -+#else -+ union { char *__s; wchar_t __w; } __u; -+ __u.__s = __nl_langinfo_l(_NL_NUMERIC_DECIMAL_POINT_WC, __cloc); -+ _M_data->_M_decimal_point = __u.__w; -+ -+ __u.__s = __nl_langinfo_l(_NL_NUMERIC_THOUSANDS_SEP_WC, __cloc); -+ _M_data->_M_thousands_sep = __u.__w; -+#endif -+ -+ if (_M_data->_M_thousands_sep == L'\0') -+ _M_data->_M_grouping = ""; -+ else -+ _M_data->_M_grouping = __nl_langinfo_l(GROUPING, __cloc); -+ _M_data->_M_grouping_size = strlen(_M_data->_M_grouping); -+ } -+ -+ // NB: There is no way to extact this info from posix locales. -+ // _M_truename = __nl_langinfo_l(YESSTR, __cloc); -+ _M_data->_M_truename = L"true"; -+ _M_data->_M_truename_size = 4; -+ // _M_falsename = __nl_langinfo_l(NOSTR, __cloc); -+ _M_data->_M_falsename = L"false"; -+ _M_data->_M_falsename_size = 5; -+ } -+ -+ template<> -+ numpunct::~numpunct() -+ { delete _M_data; } -+ #endif -+} -diff -urN gcc-4.0.0-100/libstdc++-v3/config/locale/uclibc/time_members.cc gcc-4.0.0/libstdc++-v3/config/locale/uclibc/time_members.cc ---- gcc-4.0.0-100/libstdc++-v3/config/locale/uclibc/time_members.cc 1969-12-31 18:00:00.000000000 -0600 -+++ gcc-4.0.0/libstdc++-v3/config/locale/uclibc/time_members.cc 2005-04-28 01:13:15.000000000 -0500 -@@ -0,0 +1,406 @@ -+// std::time_get, std::time_put implementation, GNU version -*- C++ -*- -+ -+// Copyright (C) 2001, 2002, 2003, 2004 Free Software Foundation, Inc. -+// -+// This file is part of the GNU ISO C++ Library. This library is free -+// software; you can redistribute it and/or modify it under the -+// terms of the GNU General Public License as published by the -+// Free Software Foundation; either version 2, or (at your option) -+// any later version. -+ -+// This library is distributed in the hope that it will be useful, -+// but WITHOUT ANY WARRANTY; without even the implied warranty of -+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+// GNU General Public License for more details. -+ -+// You should have received a copy of the GNU General Public License along -+// with this library; see the file COPYING. If not, write to the Free -+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, -+// USA. -+ -+// As a special exception, you may use this file as part of a free software -+// library without restriction. Specifically, if other files instantiate -+// templates or use macros or inline functions from this file, or you compile -+// this file and link it with other files to produce an executable, this -+// file does not by itself cause the resulting executable to be covered by -+// the GNU General Public License. This exception does not however -+// invalidate any other reasons why the executable file might be covered by -+// the GNU General Public License. -+ -+// -+// ISO C++ 14882: 22.2.5.1.2 - time_get virtual functions -+// ISO C++ 14882: 22.2.5.3.2 - time_put virtual functions -+// -+ -+// Written by Benjamin Kosnik -+ -+#include -+#include -+ -+#ifdef __UCLIBC_MJN3_ONLY__ -+#warning tailor for stub locale support -+#endif -+#ifndef __UCLIBC_HAS_XLOCALE__ -+#define __nl_langinfo_l(N, L) nl_langinfo((N)) -+#endif -+ -+namespace std -+{ -+ template<> -+ void -+ __timepunct:: -+ _M_put(char* __s, size_t __maxlen, const char* __format, -+ const tm* __tm) const -+ { -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ const size_t __len = __strftime_l(__s, __maxlen, __format, __tm, -+ _M_c_locale_timepunct); -+#else -+ char* __old = strdup(setlocale(LC_ALL, NULL)); -+ setlocale(LC_ALL, _M_name_timepunct); -+ const size_t __len = strftime(__s, __maxlen, __format, __tm); -+ setlocale(LC_ALL, __old); -+ free(__old); -+#endif -+ // Make sure __s is null terminated. -+ if (__len == 0) -+ __s[0] = '\0'; -+ } -+ -+ template<> -+ void -+ __timepunct::_M_initialize_timepunct(__c_locale __cloc) -+ { -+ if (!_M_data) -+ _M_data = new __timepunct_cache; -+ -+ if (!__cloc) -+ { -+ // "C" locale -+ _M_c_locale_timepunct = _S_get_c_locale(); -+ -+ _M_data->_M_date_format = "%m/%d/%y"; -+ _M_data->_M_date_era_format = "%m/%d/%y"; -+ _M_data->_M_time_format = "%H:%M:%S"; -+ _M_data->_M_time_era_format = "%H:%M:%S"; -+ _M_data->_M_date_time_format = ""; -+ _M_data->_M_date_time_era_format = ""; -+ _M_data->_M_am = "AM"; -+ _M_data->_M_pm = "PM"; -+ _M_data->_M_am_pm_format = ""; -+ -+ // Day names, starting with "C"'s Sunday. -+ _M_data->_M_day1 = "Sunday"; -+ _M_data->_M_day2 = "Monday"; -+ _M_data->_M_day3 = "Tuesday"; -+ _M_data->_M_day4 = "Wednesday"; -+ _M_data->_M_day5 = "Thursday"; -+ _M_data->_M_day6 = "Friday"; -+ _M_data->_M_day7 = "Saturday"; -+ -+ // Abbreviated day names, starting with "C"'s Sun. -+ _M_data->_M_aday1 = "Sun"; -+ _M_data->_M_aday2 = "Mon"; -+ _M_data->_M_aday3 = "Tue"; -+ _M_data->_M_aday4 = "Wed"; -+ _M_data->_M_aday5 = "Thu"; -+ _M_data->_M_aday6 = "Fri"; -+ _M_data->_M_aday7 = "Sat"; -+ -+ // Month names, starting with "C"'s January. -+ _M_data->_M_month01 = "January"; -+ _M_data->_M_month02 = "February"; -+ _M_data->_M_month03 = "March"; -+ _M_data->_M_month04 = "April"; -+ _M_data->_M_month05 = "May"; -+ _M_data->_M_month06 = "June"; -+ _M_data->_M_month07 = "July"; -+ _M_data->_M_month08 = "August"; -+ _M_data->_M_month09 = "September"; -+ _M_data->_M_month10 = "October"; -+ _M_data->_M_month11 = "November"; -+ _M_data->_M_month12 = "December"; -+ -+ // Abbreviated month names, starting with "C"'s Jan. -+ _M_data->_M_amonth01 = "Jan"; -+ _M_data->_M_amonth02 = "Feb"; -+ _M_data->_M_amonth03 = "Mar"; -+ _M_data->_M_amonth04 = "Apr"; -+ _M_data->_M_amonth05 = "May"; -+ _M_data->_M_amonth06 = "Jun"; -+ _M_data->_M_amonth07 = "Jul"; -+ _M_data->_M_amonth08 = "Aug"; -+ _M_data->_M_amonth09 = "Sep"; -+ _M_data->_M_amonth10 = "Oct"; -+ _M_data->_M_amonth11 = "Nov"; -+ _M_data->_M_amonth12 = "Dec"; -+ } -+ else -+ { -+ _M_c_locale_timepunct = _S_clone_c_locale(__cloc); -+ -+ _M_data->_M_date_format = __nl_langinfo_l(D_FMT, __cloc); -+ _M_data->_M_date_era_format = __nl_langinfo_l(ERA_D_FMT, __cloc); -+ _M_data->_M_time_format = __nl_langinfo_l(T_FMT, __cloc); -+ _M_data->_M_time_era_format = __nl_langinfo_l(ERA_T_FMT, __cloc); -+ _M_data->_M_date_time_format = __nl_langinfo_l(D_T_FMT, __cloc); -+ _M_data->_M_date_time_era_format = __nl_langinfo_l(ERA_D_T_FMT, -+ __cloc); -+ _M_data->_M_am = __nl_langinfo_l(AM_STR, __cloc); -+ _M_data->_M_pm = __nl_langinfo_l(PM_STR, __cloc); -+ _M_data->_M_am_pm_format = __nl_langinfo_l(T_FMT_AMPM, __cloc); -+ -+ // Day names, starting with "C"'s Sunday. -+ _M_data->_M_day1 = __nl_langinfo_l(DAY_1, __cloc); -+ _M_data->_M_day2 = __nl_langinfo_l(DAY_2, __cloc); -+ _M_data->_M_day3 = __nl_langinfo_l(DAY_3, __cloc); -+ _M_data->_M_day4 = __nl_langinfo_l(DAY_4, __cloc); -+ _M_data->_M_day5 = __nl_langinfo_l(DAY_5, __cloc); -+ _M_data->_M_day6 = __nl_langinfo_l(DAY_6, __cloc); -+ _M_data->_M_day7 = __nl_langinfo_l(DAY_7, __cloc); -+ -+ // Abbreviated day names, starting with "C"'s Sun. -+ _M_data->_M_aday1 = __nl_langinfo_l(ABDAY_1, __cloc); -+ _M_data->_M_aday2 = __nl_langinfo_l(ABDAY_2, __cloc); -+ _M_data->_M_aday3 = __nl_langinfo_l(ABDAY_3, __cloc); -+ _M_data->_M_aday4 = __nl_langinfo_l(ABDAY_4, __cloc); -+ _M_data->_M_aday5 = __nl_langinfo_l(ABDAY_5, __cloc); -+ _M_data->_M_aday6 = __nl_langinfo_l(ABDAY_6, __cloc); -+ _M_data->_M_aday7 = __nl_langinfo_l(ABDAY_7, __cloc); -+ -+ // Month names, starting with "C"'s January. -+ _M_data->_M_month01 = __nl_langinfo_l(MON_1, __cloc); -+ _M_data->_M_month02 = __nl_langinfo_l(MON_2, __cloc); -+ _M_data->_M_month03 = __nl_langinfo_l(MON_3, __cloc); -+ _M_data->_M_month04 = __nl_langinfo_l(MON_4, __cloc); -+ _M_data->_M_month05 = __nl_langinfo_l(MON_5, __cloc); -+ _M_data->_M_month06 = __nl_langinfo_l(MON_6, __cloc); -+ _M_data->_M_month07 = __nl_langinfo_l(MON_7, __cloc); -+ _M_data->_M_month08 = __nl_langinfo_l(MON_8, __cloc); -+ _M_data->_M_month09 = __nl_langinfo_l(MON_9, __cloc); -+ _M_data->_M_month10 = __nl_langinfo_l(MON_10, __cloc); -+ _M_data->_M_month11 = __nl_langinfo_l(MON_11, __cloc); -+ _M_data->_M_month12 = __nl_langinfo_l(MON_12, __cloc); -+ -+ // Abbreviated month names, starting with "C"'s Jan. -+ _M_data->_M_amonth01 = __nl_langinfo_l(ABMON_1, __cloc); -+ _M_data->_M_amonth02 = __nl_langinfo_l(ABMON_2, __cloc); -+ _M_data->_M_amonth03 = __nl_langinfo_l(ABMON_3, __cloc); -+ _M_data->_M_amonth04 = __nl_langinfo_l(ABMON_4, __cloc); -+ _M_data->_M_amonth05 = __nl_langinfo_l(ABMON_5, __cloc); -+ _M_data->_M_amonth06 = __nl_langinfo_l(ABMON_6, __cloc); -+ _M_data->_M_amonth07 = __nl_langinfo_l(ABMON_7, __cloc); -+ _M_data->_M_amonth08 = __nl_langinfo_l(ABMON_8, __cloc); -+ _M_data->_M_amonth09 = __nl_langinfo_l(ABMON_9, __cloc); -+ _M_data->_M_amonth10 = __nl_langinfo_l(ABMON_10, __cloc); -+ _M_data->_M_amonth11 = __nl_langinfo_l(ABMON_11, __cloc); -+ _M_data->_M_amonth12 = __nl_langinfo_l(ABMON_12, __cloc); -+ } -+ } -+ -+#ifdef _GLIBCXX_USE_WCHAR_T -+ template<> -+ void -+ __timepunct:: -+ _M_put(wchar_t* __s, size_t __maxlen, const wchar_t* __format, -+ const tm* __tm) const -+ { -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __wcsftime_l(__s, __maxlen, __format, __tm, _M_c_locale_timepunct); -+ const size_t __len = __wcsftime_l(__s, __maxlen, __format, __tm, -+ _M_c_locale_timepunct); -+#else -+ char* __old = strdup(setlocale(LC_ALL, NULL)); -+ setlocale(LC_ALL, _M_name_timepunct); -+ const size_t __len = wcsftime(__s, __maxlen, __format, __tm); -+ setlocale(LC_ALL, __old); -+ free(__old); -+#endif -+ // Make sure __s is null terminated. -+ if (__len == 0) -+ __s[0] = L'\0'; -+ } -+ -+ template<> -+ void -+ __timepunct::_M_initialize_timepunct(__c_locale __cloc) -+ { -+ if (!_M_data) -+ _M_data = new __timepunct_cache; -+ -+#warning wide time stuff -+// if (!__cloc) -+ { -+ // "C" locale -+ _M_c_locale_timepunct = _S_get_c_locale(); -+ -+ _M_data->_M_date_format = L"%m/%d/%y"; -+ _M_data->_M_date_era_format = L"%m/%d/%y"; -+ _M_data->_M_time_format = L"%H:%M:%S"; -+ _M_data->_M_time_era_format = L"%H:%M:%S"; -+ _M_data->_M_date_time_format = L""; -+ _M_data->_M_date_time_era_format = L""; -+ _M_data->_M_am = L"AM"; -+ _M_data->_M_pm = L"PM"; -+ _M_data->_M_am_pm_format = L""; -+ -+ // Day names, starting with "C"'s Sunday. -+ _M_data->_M_day1 = L"Sunday"; -+ _M_data->_M_day2 = L"Monday"; -+ _M_data->_M_day3 = L"Tuesday"; -+ _M_data->_M_day4 = L"Wednesday"; -+ _M_data->_M_day5 = L"Thursday"; -+ _M_data->_M_day6 = L"Friday"; -+ _M_data->_M_day7 = L"Saturday"; -+ -+ // Abbreviated day names, starting with "C"'s Sun. -+ _M_data->_M_aday1 = L"Sun"; -+ _M_data->_M_aday2 = L"Mon"; -+ _M_data->_M_aday3 = L"Tue"; -+ _M_data->_M_aday4 = L"Wed"; -+ _M_data->_M_aday5 = L"Thu"; -+ _M_data->_M_aday6 = L"Fri"; -+ _M_data->_M_aday7 = L"Sat"; -+ -+ // Month names, starting with "C"'s January. -+ _M_data->_M_month01 = L"January"; -+ _M_data->_M_month02 = L"February"; -+ _M_data->_M_month03 = L"March"; -+ _M_data->_M_month04 = L"April"; -+ _M_data->_M_month05 = L"May"; -+ _M_data->_M_month06 = L"June"; -+ _M_data->_M_month07 = L"July"; -+ _M_data->_M_month08 = L"August"; -+ _M_data->_M_month09 = L"September"; -+ _M_data->_M_month10 = L"October"; -+ _M_data->_M_month11 = L"November"; -+ _M_data->_M_month12 = L"December"; -+ -+ // Abbreviated month names, starting with "C"'s Jan. -+ _M_data->_M_amonth01 = L"Jan"; -+ _M_data->_M_amonth02 = L"Feb"; -+ _M_data->_M_amonth03 = L"Mar"; -+ _M_data->_M_amonth04 = L"Apr"; -+ _M_data->_M_amonth05 = L"May"; -+ _M_data->_M_amonth06 = L"Jun"; -+ _M_data->_M_amonth07 = L"Jul"; -+ _M_data->_M_amonth08 = L"Aug"; -+ _M_data->_M_amonth09 = L"Sep"; -+ _M_data->_M_amonth10 = L"Oct"; -+ _M_data->_M_amonth11 = L"Nov"; -+ _M_data->_M_amonth12 = L"Dec"; -+ } -+#if 0 -+ else -+ { -+ _M_c_locale_timepunct = _S_clone_c_locale(__cloc); -+ -+ union { char *__s; wchar_t *__w; } __u; -+ -+ __u.__s = __nl_langinfo_l(_NL_WD_FMT, __cloc); -+ _M_data->_M_date_format = __u.__w; -+ __u.__s = __nl_langinfo_l(_NL_WERA_D_FMT, __cloc); -+ _M_data->_M_date_era_format = __u.__w; -+ __u.__s = __nl_langinfo_l(_NL_WT_FMT, __cloc); -+ _M_data->_M_time_format = __u.__w; -+ __u.__s = __nl_langinfo_l(_NL_WERA_T_FMT, __cloc); -+ _M_data->_M_time_era_format = __u.__w; -+ __u.__s = __nl_langinfo_l(_NL_WD_T_FMT, __cloc); -+ _M_data->_M_date_time_format = __u.__w; -+ __u.__s = __nl_langinfo_l(_NL_WERA_D_T_FMT, __cloc); -+ _M_data->_M_date_time_era_format = __u.__w; -+ __u.__s = __nl_langinfo_l(_NL_WAM_STR, __cloc); -+ _M_data->_M_am = __u.__w; -+ __u.__s = __nl_langinfo_l(_NL_WPM_STR, __cloc); -+ _M_data->_M_pm = __u.__w; -+ __u.__s = __nl_langinfo_l(_NL_WT_FMT_AMPM, __cloc); -+ _M_data->_M_am_pm_format = __u.__w; -+ -+ // Day names, starting with "C"'s Sunday. -+ __u.__s = __nl_langinfo_l(_NL_WDAY_1, __cloc); -+ _M_data->_M_day1 = __u.__w; -+ __u.__s = __nl_langinfo_l(_NL_WDAY_2, __cloc); -+ _M_data->_M_day2 = __u.__w; -+ __u.__s = __nl_langinfo_l(_NL_WDAY_3, __cloc); -+ _M_data->_M_day3 = __u.__w; -+ __u.__s = __nl_langinfo_l(_NL_WDAY_4, __cloc); -+ _M_data->_M_day4 = __u.__w; -+ __u.__s = __nl_langinfo_l(_NL_WDAY_5, __cloc); -+ _M_data->_M_day5 = __u.__w; -+ __u.__s = __nl_langinfo_l(_NL_WDAY_6, __cloc); -+ _M_data->_M_day6 = __u.__w; -+ __u.__s = __nl_langinfo_l(_NL_WDAY_7, __cloc); -+ _M_data->_M_day7 = __u.__w; -+ -+ // Abbreviated day names, starting with "C"'s Sun. -+ __u.__s = __nl_langinfo_l(_NL_WABDAY_1, __cloc); -+ _M_data->_M_aday1 = __u.__w; -+ __u.__s = __nl_langinfo_l(_NL_WABDAY_2, __cloc); -+ _M_data->_M_aday2 = __u.__w; -+ __u.__s = __nl_langinfo_l(_NL_WABDAY_3, __cloc); -+ _M_data->_M_aday3 = __u.__w; -+ __u.__s = __nl_langinfo_l(_NL_WABDAY_4, __cloc); -+ _M_data->_M_aday4 = __u.__w; -+ __u.__s = __nl_langinfo_l(_NL_WABDAY_5, __cloc); -+ _M_data->_M_aday5 = __u.__w; -+ __u.__s = __nl_langinfo_l(_NL_WABDAY_6, __cloc); -+ _M_data->_M_aday6 = __u.__w; -+ __u.__s = __nl_langinfo_l(_NL_WABDAY_7, __cloc); -+ _M_data->_M_aday7 = __u.__w; -+ -+ // Month names, starting with "C"'s January. -+ __u.__s = __nl_langinfo_l(_NL_WMON_1, __cloc); -+ _M_data->_M_month01 = __u.__w; -+ __u.__s = __nl_langinfo_l(_NL_WMON_2, __cloc); -+ _M_data->_M_month02 = __u.__w; -+ __u.__s = __nl_langinfo_l(_NL_WMON_3, __cloc); -+ _M_data->_M_month03 = __u.__w; -+ __u.__s = __nl_langinfo_l(_NL_WMON_4, __cloc); -+ _M_data->_M_month04 = __u.__w; -+ __u.__s = __nl_langinfo_l(_NL_WMON_5, __cloc); -+ _M_data->_M_month05 = __u.__w; -+ __u.__s = __nl_langinfo_l(_NL_WMON_6, __cloc); -+ _M_data->_M_month06 = __u.__w; -+ __u.__s = __nl_langinfo_l(_NL_WMON_7, __cloc); -+ _M_data->_M_month07 = __u.__w; -+ __u.__s = __nl_langinfo_l(_NL_WMON_8, __cloc); -+ _M_data->_M_month08 = __u.__w; -+ __u.__s = __nl_langinfo_l(_NL_WMON_9, __cloc); -+ _M_data->_M_month09 = __u.__w; -+ __u.__s = __nl_langinfo_l(_NL_WMON_10, __cloc); -+ _M_data->_M_month10 = __u.__w; -+ __u.__s = __nl_langinfo_l(_NL_WMON_11, __cloc); -+ _M_data->_M_month11 = __u.__w; -+ __u.__s = __nl_langinfo_l(_NL_WMON_12, __cloc); -+ _M_data->_M_month12 = __u.__w; -+ -+ // Abbreviated month names, starting with "C"'s Jan. -+ __u.__s = __nl_langinfo_l(_NL_WABMON_1, __cloc); -+ _M_data->_M_amonth01 = __u.__w; -+ __u.__s = __nl_langinfo_l(_NL_WABMON_2, __cloc); -+ _M_data->_M_amonth02 = __u.__w; -+ __u.__s = __nl_langinfo_l(_NL_WABMON_3, __cloc); -+ _M_data->_M_amonth03 = __u.__w; -+ __u.__s = __nl_langinfo_l(_NL_WABMON_4, __cloc); -+ _M_data->_M_amonth04 = __u.__w; -+ __u.__s = __nl_langinfo_l(_NL_WABMON_5, __cloc); -+ _M_data->_M_amonth05 = __u.__w; -+ __u.__s = __nl_langinfo_l(_NL_WABMON_6, __cloc); -+ _M_data->_M_amonth06 = __u.__w; -+ __u.__s = __nl_langinfo_l(_NL_WABMON_7, __cloc); -+ _M_data->_M_amonth07 = __u.__w; -+ __u.__s = __nl_langinfo_l(_NL_WABMON_8, __cloc); -+ _M_data->_M_amonth08 = __u.__w; -+ __u.__s = __nl_langinfo_l(_NL_WABMON_9, __cloc); -+ _M_data->_M_amonth09 = __u.__w; -+ __u.__s = __nl_langinfo_l(_NL_WABMON_10, __cloc); -+ _M_data->_M_amonth10 = __u.__w; -+ __u.__s = __nl_langinfo_l(_NL_WABMON_11, __cloc); -+ _M_data->_M_amonth11 = __u.__w; -+ __u.__s = __nl_langinfo_l(_NL_WABMON_12, __cloc); -+ _M_data->_M_amonth12 = __u.__w; -+ } -+#endif // 0 -+ } -+#endif -+} -diff -urN gcc-4.0.0-100/libstdc++-v3/config/locale/uclibc/time_members.h gcc-4.0.0/libstdc++-v3/config/locale/uclibc/time_members.h ---- gcc-4.0.0-100/libstdc++-v3/config/locale/uclibc/time_members.h 1969-12-31 18:00:00.000000000 -0600 -+++ gcc-4.0.0/libstdc++-v3/config/locale/uclibc/time_members.h 2004-05-22 18:46:31.000000000 -0500 -@@ -0,0 +1,68 @@ -+// std::time_get, std::time_put implementation, GNU version -*- C++ -*- -+ -+// Copyright (C) 2001, 2002, 2003, 2004 Free Software Foundation, Inc. -+// -+// This file is part of the GNU ISO C++ Library. This library is free -+// software; you can redistribute it and/or modify it under the -+// terms of the GNU General Public License as published by the -+// Free Software Foundation; either version 2, or (at your option) -+// any later version. -+ -+// This library is distributed in the hope that it will be useful, -+// but WITHOUT ANY WARRANTY; without even the implied warranty of -+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+// GNU General Public License for more details. -+ -+// You should have received a copy of the GNU General Public License along -+// with this library; see the file COPYING. If not, write to the Free -+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, -+// USA. -+ -+// As a special exception, you may use this file as part of a free software -+// library without restriction. Specifically, if other files instantiate -+// templates or use macros or inline functions from this file, or you compile -+// this file and link it with other files to produce an executable, this -+// file does not by itself cause the resulting executable to be covered by -+// the GNU General Public License. This exception does not however -+// invalidate any other reasons why the executable file might be covered by -+// the GNU General Public License. -+ -+// -+// ISO C++ 14882: 22.2.5.1.2 - time_get functions -+// ISO C++ 14882: 22.2.5.3.2 - time_put functions -+// -+ -+// Written by Benjamin Kosnik -+ -+ template -+ __timepunct<_CharT>::__timepunct(size_t __refs) -+ : facet(__refs), _M_data(NULL), _M_c_locale_timepunct(NULL), -+ _M_name_timepunct(_S_get_c_name()) -+ { _M_initialize_timepunct(); } -+ -+ template -+ __timepunct<_CharT>::__timepunct(__cache_type* __cache, size_t __refs) -+ : facet(__refs), _M_data(__cache), _M_c_locale_timepunct(NULL), -+ _M_name_timepunct(_S_get_c_name()) -+ { _M_initialize_timepunct(); } -+ -+ template -+ __timepunct<_CharT>::__timepunct(__c_locale __cloc, const char* __s, -+ size_t __refs) -+ : facet(__refs), _M_data(NULL), _M_c_locale_timepunct(NULL), -+ _M_name_timepunct(__s) -+ { -+ char* __tmp = new char[std::strlen(__s) + 1]; -+ std::strcpy(__tmp, __s); -+ _M_name_timepunct = __tmp; -+ _M_initialize_timepunct(__cloc); -+ } -+ -+ template -+ __timepunct<_CharT>::~__timepunct() -+ { -+ if (_M_name_timepunct != _S_get_c_name()) -+ delete [] _M_name_timepunct; -+ delete _M_data; -+ _S_destroy_c_locale(_M_c_locale_timepunct); -+ } -diff -urN gcc-4.0.0-100/libstdc++-v3/config/os/uclibc/ctype_base.h gcc-4.0.0/libstdc++-v3/config/os/uclibc/ctype_base.h ---- gcc-4.0.0-100/libstdc++-v3/config/os/uclibc/ctype_base.h 1969-12-31 18:00:00.000000000 -0600 -+++ gcc-4.0.0/libstdc++-v3/config/os/uclibc/ctype_base.h 2005-04-28 01:10:27.000000000 -0500 -@@ -0,0 +1,64 @@ -+// Locale support -*- C++ -*- -+ -+// Copyright (C) 1997, 1998, 1999, 2000, 2002, 2003, 2004 -+// Free Software Foundation, Inc. -+// -+// This file is part of the GNU ISO C++ Library. This library is free -+// software; you can redistribute it and/or modify it under the -+// terms of the GNU General Public License as published by the -+// Free Software Foundation; either version 2, or (at your option) -+// any later version. -+ -+// This library is distributed in the hope that it will be useful, -+// but WITHOUT ANY WARRANTY; without even the implied warranty of -+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+// GNU General Public License for more details. -+ -+// You should have received a copy of the GNU General Public License along -+// with this library; see the file COPYING. If not, write to the Free -+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, -+// USA. -+ -+// As a special exception, you may use this file as part of a free software -+// library without restriction. Specifically, if other files instantiate -+// templates or use macros or inline functions from this file, or you compile -+// this file and link it with other files to produce an executable, this -+// file does not by itself cause the resulting executable to be covered by -+// the GNU General Public License. This exception does not however -+// invalidate any other reasons why the executable file might be covered by -+// the GNU General Public License. -+ -+// -+// ISO C++ 14882: 22.1 Locales -+// -+ -+/** @file ctype_base.h -+ * This is an internal header file, included by other library headers. -+ * You should not attempt to use it directly. -+ */ -+ -+// Information as gleaned from /usr/include/ctype.h -+ -+ /// @brief Base class for ctype. -+ struct ctype_base -+ { -+ // Note: In uClibc, the following two types depend on configuration. -+ -+ // Non-standard typedefs. -+ typedef const __ctype_touplow_t* __to_type; -+ -+ // NB: Offsets into ctype::_M_table force a particular size -+ // on the mask type. Because of this, we don't use an enum. -+ typedef __ctype_mask_t mask; -+ static const mask upper = _ISupper; -+ static const mask lower = _ISlower; -+ static const mask alpha = _ISalpha; -+ static const mask digit = _ISdigit; -+ static const mask xdigit = _ISxdigit; -+ static const mask space = _ISspace; -+ static const mask print = _ISprint; -+ static const mask graph = _ISalpha | _ISdigit | _ISpunct; -+ static const mask cntrl = _IScntrl; -+ static const mask punct = _ISpunct; -+ static const mask alnum = _ISalpha | _ISdigit; -+ }; -diff -urN gcc-4.0.0-100/libstdc++-v3/config/os/uclibc/ctype_inline.h gcc-4.0.0/libstdc++-v3/config/os/uclibc/ctype_inline.h ---- gcc-4.0.0-100/libstdc++-v3/config/os/uclibc/ctype_inline.h 1969-12-31 18:00:00.000000000 -0600 -+++ gcc-4.0.0/libstdc++-v3/config/os/uclibc/ctype_inline.h 2002-06-24 00:49:19.000000000 -0500 -@@ -0,0 +1,69 @@ -+// Locale support -*- C++ -*- -+ -+// Copyright (C) 2000, 2002 Free Software Foundation, Inc. -+// -+// This file is part of the GNU ISO C++ Library. This library is free -+// software; you can redistribute it and/or modify it under the -+// terms of the GNU General Public License as published by the -+// Free Software Foundation; either version 2, or (at your option) -+// any later version. -+ -+// This library is distributed in the hope that it will be useful, -+// but WITHOUT ANY WARRANTY; without even the implied warranty of -+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+// GNU General Public License for more details. -+ -+// You should have received a copy of the GNU General Public License along -+// with this library; see the file COPYING. If not, write to the Free -+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, -+// USA. -+ -+// As a special exception, you may use this file as part of a free software -+// library without restriction. Specifically, if other files instantiate -+// templates or use macros or inline functions from this file, or you compile -+// this file and link it with other files to produce an executable, this -+// file does not by itself cause the resulting executable to be covered by -+// the GNU General Public License. This exception does not however -+// invalidate any other reasons why the executable file might be covered by -+// the GNU General Public License. -+ -+// -+// ISO C++ 14882: 22.1 Locales -+// -+ -+// ctype bits to be inlined go here. Non-inlinable (ie virtual do_*) -+// functions go in ctype.cc -+ -+ bool -+ ctype:: -+ is(mask __m, char __c) const -+ { return _M_table[static_cast(__c)] & __m; } -+ -+ const char* -+ ctype:: -+ is(const char* __low, const char* __high, mask* __vec) const -+ { -+ while (__low < __high) -+ *__vec++ = _M_table[static_cast(*__low++)]; -+ return __high; -+ } -+ -+ const char* -+ ctype:: -+ scan_is(mask __m, const char* __low, const char* __high) const -+ { -+ while (__low < __high -+ && !(_M_table[static_cast(*__low)] & __m)) -+ ++__low; -+ return __low; -+ } -+ -+ const char* -+ ctype:: -+ scan_not(mask __m, const char* __low, const char* __high) const -+ { -+ while (__low < __high -+ && (_M_table[static_cast(*__low)] & __m) != 0) -+ ++__low; -+ return __low; -+ } -diff -urN gcc-4.0.0-100/libstdc++-v3/config/os/uclibc/ctype_noninline.h gcc-4.0.0/libstdc++-v3/config/os/uclibc/ctype_noninline.h ---- gcc-4.0.0-100/libstdc++-v3/config/os/uclibc/ctype_noninline.h 1969-12-31 18:00:00.000000000 -0600 -+++ gcc-4.0.0/libstdc++-v3/config/os/uclibc/ctype_noninline.h 2005-04-28 01:10:27.000000000 -0500 -@@ -0,0 +1,92 @@ -+// Locale support -*- C++ -*- -+ -+// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2004 -+// Free Software Foundation, Inc. -+// -+// This file is part of the GNU ISO C++ Library. This library is free -+// software; you can redistribute it and/or modify it under the -+// terms of the GNU General Public License as published by the -+// Free Software Foundation; either version 2, or (at your option) -+// any later version. -+ -+// This library is distributed in the hope that it will be useful, -+// but WITHOUT ANY WARRANTY; without even the implied warranty of -+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+// GNU General Public License for more details. -+ -+// You should have received a copy of the GNU General Public License along -+// with this library; see the file COPYING. If not, write to the Free -+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, -+// USA. -+ -+// As a special exception, you may use this file as part of a free software -+// library without restriction. Specifically, if other files instantiate -+// templates or use macros or inline functions from this file, or you compile -+// this file and link it with other files to produce an executable, this -+// file does not by itself cause the resulting executable to be covered by -+// the GNU General Public License. This exception does not however -+// invalidate any other reasons why the executable file might be covered by -+// the GNU General Public License. -+ -+// -+// ISO C++ 14882: 22.1 Locales -+// -+ -+// Information as gleaned from /usr/include/ctype.h -+ -+ const ctype_base::mask* -+ ctype::classic_table() throw() -+ { return __C_ctype_b; } -+ -+ ctype::ctype(__c_locale, const mask* __table, bool __del, -+ size_t __refs) -+ : facet(__refs), _M_c_locale_ctype(_S_get_c_locale()), -+ _M_del(__table != 0 && __del), _M_widen_ok(0), _M_narrow_ok(0) -+ { -+ _M_toupper = __C_ctype_toupper; -+ _M_tolower = __C_ctype_tolower; -+ _M_table = __table ? __table : __C_ctype_b; -+ memset(_M_widen, 0, sizeof(_M_widen)); -+ memset(_M_narrow, 0, sizeof(_M_narrow)); -+ } -+ -+ ctype::ctype(const mask* __table, bool __del, size_t __refs) -+ : facet(__refs), _M_c_locale_ctype(_S_get_c_locale()), -+ _M_del(__table != 0 && __del), _M_widen_ok(0), _M_narrow_ok(0) -+ { -+ _M_toupper = __C_ctype_toupper; -+ _M_tolower = __C_ctype_tolower; -+ _M_table = __table ? __table : __C_ctype_b; -+ memset(_M_widen, 0, sizeof(_M_widen)); -+ memset(_M_narrow, 0, sizeof(_M_narrow)); -+ } -+ -+ char -+ ctype::do_toupper(char __c) const -+ { return _M_toupper[static_cast(__c)]; } -+ -+ const char* -+ ctype::do_toupper(char* __low, const char* __high) const -+ { -+ while (__low < __high) -+ { -+ *__low = _M_toupper[static_cast(*__low)]; -+ ++__low; -+ } -+ return __high; -+ } -+ -+ char -+ ctype::do_tolower(char __c) const -+ { return _M_tolower[static_cast(__c)]; } -+ -+ const char* -+ ctype::do_tolower(char* __low, const char* __high) const -+ { -+ while (__low < __high) -+ { -+ *__low = _M_tolower[static_cast(*__low)]; -+ ++__low; -+ } -+ return __high; -+ } -diff -urN gcc-4.0.0-100/libstdc++-v3/config/os/uclibc/os_defines.h gcc-4.0.0/libstdc++-v3/config/os/uclibc/os_defines.h ---- gcc-4.0.0-100/libstdc++-v3/config/os/uclibc/os_defines.h 1969-12-31 18:00:00.000000000 -0600 -+++ gcc-4.0.0/libstdc++-v3/config/os/uclibc/os_defines.h 2005-04-28 01:10:27.000000000 -0500 -@@ -0,0 +1,44 @@ -+// Specific definitions for GNU/Linux -*- C++ -*- -+ -+// Copyright (C) 2000, 2001, 2002, 2003 Free Software Foundation, Inc. -+// -+// This file is part of the GNU ISO C++ Library. This library is free -+// software; you can redistribute it and/or modify it under the -+// terms of the GNU General Public License as published by the -+// Free Software Foundation; either version 2, or (at your option) -+// any later version. -+ -+// This library is distributed in the hope that it will be useful, -+// but WITHOUT ANY WARRANTY; without even the implied warranty of -+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+// GNU General Public License for more details. -+ -+// You should have received a copy of the GNU General Public License along -+// with this library; see the file COPYING. If not, write to the Free -+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, -+// USA. -+ -+// As a special exception, you may use this file as part of a free software -+// library without restriction. Specifically, if other files instantiate -+// templates or use macros or inline functions from this file, or you compile -+// this file and link it with other files to produce an executable, this -+// file does not by itself cause the resulting executable to be covered by -+// the GNU General Public License. This exception does not however -+// invalidate any other reasons why the executable file might be covered by -+// the GNU General Public License. -+ -+#ifndef _GLIBCXX_OS_DEFINES -+#define _GLIBCXX_OS_DEFINES 1 -+ -+// System-specific #define, typedefs, corrections, etc, go here. This -+// file will come before all others. -+ -+// This keeps isanum, et al from being propagated as macros. -+#define __NO_CTYPE 1 -+ -+#include -+ -+// We must not see the optimized string functions GNU libc defines. -+#define __NO_STRING_INLINES -+ -+#endif -diff -urN gcc-4.0.0-100/libstdc++-v3/configure gcc-4.0.0/libstdc++-v3/configure ---- gcc-4.0.0-100/libstdc++-v3/configure 2005-04-30 13:06:53.683055232 -0500 -+++ gcc-4.0.0/libstdc++-v3/configure 2005-04-30 12:24:24.000000000 -0500 -@@ -3998,6 +3998,11 @@ - lt_cv_deplibs_check_method=pass_all - ;; - -+linux-uclibc*) -+ lt_cv_deplibs_check_method=pass_all -+ lt_cv_file_magic_test_file=`echo /lib/libuClibc-*.so` -+ ;; -+ - netbsd* | knetbsd*-gnu) - if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then - lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$' -@@ -5672,7 +5677,7 @@ - enableval="$enable_clocale" - - case "$enableval" in -- generic|gnu|ieee_1003.1-2001|yes|no|auto) ;; -+ generic|gnu|ieee_1003.1-2001|uclibc|yes|no|auto) ;; - *) { { echo "$as_me:$LINENO: error: Unknown argument to enable/disable clocale" >&5 - echo "$as_me: error: Unknown argument to enable/disable clocale" >&2;} - { (exit 1); exit 1; }; } ;; -@@ -5697,6 +5702,9 @@ - # Default to "generic". - if test $enable_clocale_flag = auto; then - case ${target_os} in -+ linux-uclibc*) -+ enable_clocale_flag=uclibc -+ ;; - linux* | gnu* | kfreebsd*-gnu | knetbsd*-gnu) - cat >conftest.$ac_ext <<_ACEOF - /* confdefs.h. */ -@@ -5927,6 +5935,76 @@ - CTIME_CC=config/locale/generic/time_members.cc - CLOCALE_INTERNAL_H=config/locale/generic/c++locale_internal.h - ;; -+ uclibc) -+ echo "$as_me:$LINENO: result: uclibc" >&5 -+echo "${ECHO_T}uclibc" >&6 -+ -+ # Declare intention to use gettext, and add support for specific -+ # languages. -+ # For some reason, ALL_LINGUAS has to be before AM-GNU-GETTEXT -+ ALL_LINGUAS="de fr" -+ -+ # Don't call AM-GNU-GETTEXT here. Instead, assume glibc. -+ # Extract the first word of "msgfmt", so it can be a program name with args. -+set dummy msgfmt; ac_word=$2 -+echo "$as_me:$LINENO: checking for $ac_word" >&5 -+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -+if test "${ac_cv_prog_check_msgfmt+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ if test -n "$check_msgfmt"; then -+ ac_cv_prog_check_msgfmt="$check_msgfmt" # Let the user override the test. -+else -+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -+for as_dir in $PATH -+do -+ IFS=$as_save_IFS -+ test -z "$as_dir" && as_dir=. -+ for ac_exec_ext in '' $ac_executable_extensions; do -+ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then -+ ac_cv_prog_check_msgfmt="yes" -+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 -+ break 2 -+ fi -+done -+done -+ -+ test -z "$ac_cv_prog_check_msgfmt" && ac_cv_prog_check_msgfmt="no" -+fi -+fi -+check_msgfmt=$ac_cv_prog_check_msgfmt -+if test -n "$check_msgfmt"; then -+ echo "$as_me:$LINENO: result: $check_msgfmt" >&5 -+echo "${ECHO_T}$check_msgfmt" >&6 -+else -+ echo "$as_me:$LINENO: result: no" >&5 -+echo "${ECHO_T}no" >&6 -+fi -+ -+ if test x"$check_msgfmt" = x"yes" && test x"$enable_nls" = x"yes"; then -+ USE_NLS=yes -+ fi -+ # Export the build objects. -+ for ling in $ALL_LINGUAS; do \ -+ glibcxx_MOFILES="$glibcxx_MOFILES $ling.mo"; \ -+ glibcxx_POFILES="$glibcxx_POFILES $ling.po"; \ -+ done -+ -+ -+ -+ CLOCALE_H=config/locale/uclibc/c_locale.h -+ CLOCALE_CC=config/locale/uclibc/c_locale.cc -+ CCODECVT_CC=config/locale/uclibc/codecvt_members.cc -+ CCOLLATE_CC=config/locale/uclibc/collate_members.cc -+ CCTYPE_CC=config/locale/uclibc/ctype_members.cc -+ CMESSAGES_H=config/locale/uclibc/messages_members.h -+ CMESSAGES_CC=config/locale/uclibc/messages_members.cc -+ CMONEY_CC=config/locale/uclibc/monetary_members.cc -+ CNUMERIC_CC=config/locale/uclibc/numeric_members.cc -+ CTIME_H=config/locale/uclibc/time_members.h -+ CTIME_CC=config/locale/uclibc/time_members.cc -+ CLOCALE_INTERNAL_H=config/locale/uclibc/c++locale_internal.h -+ ;; - esac - - # This is where the testsuite looks for locale catalogs, using the -diff -urN gcc-4.0.0-100/libstdc++-v3/configure.host gcc-4.0.0/libstdc++-v3/configure.host ---- gcc-4.0.0-100/libstdc++-v3/configure.host 2005-04-30 13:06:53.688054472 -0500 -+++ gcc-4.0.0/libstdc++-v3/configure.host 2005-04-28 20:20:32.000000000 -0500 -@@ -249,6 +249,12 @@ - ;; - esac - -+# Override for uClibc since linux-uclibc gets mishandled above. -+case "${host_os}" in -+ *-uclibc*) -+ os_include_dir="os/uclibc" -+ ;; -+esac - - # Set any OS-dependent and CPU-dependent bits. - # THIS TABLE IS SORTED. KEEP IT THAT WAY. -diff -urN gcc-4.0.0-100/libstdc++-v3/crossconfig.m4 gcc-4.0.0/libstdc++-v3/crossconfig.m4 ---- gcc-4.0.0-100/libstdc++-v3/crossconfig.m4 2005-04-30 13:06:53.689054320 -0500 -+++ gcc-4.0.0/libstdc++-v3/crossconfig.m4 2005-04-28 20:27:15.000000000 -0500 -@@ -142,6 +142,98 @@ - ;; - esac - ;; -+ *-uclibc*) -+# Temporary hack until we implement the float versions of the libm funcs -+ AC_CHECK_HEADERS([nan.h ieeefp.h endian.h sys/isa_defs.h \ -+ machine/endian.h machine/param.h sys/machine.h sys/types.h \ -+ fp.h float.h endian.h inttypes.h locale.h float.h stdint.h]) -+ SECTION_FLAGS='-ffunction-sections -fdata-sections' -+ AC_SUBST(SECTION_FLAGS) -+ GLIBCXX_CHECK_LINKER_FEATURES -+ GLIBCXX_CHECK_COMPLEX_MATH_SUPPORT -+ GLIBCXX_CHECK_WCHAR_T_SUPPORT -+ -+ # For LFS. -+ AC_DEFINE(HAVE_INT64_T) -+ case "$target" in -+ *-uclinux*) -+ # Don't enable LFS with uClinux -+ ;; -+ *) -+ AC_DEFINE(_GLIBCXX_USE_LFS) -+ esac -+ -+ # For showmanyc_helper(). -+ AC_CHECK_HEADERS(sys/ioctl.h sys/filio.h) -+ GLIBCXX_CHECK_POLL -+ GLIBCXX_CHECK_S_ISREG_OR_S_IFREG -+ -+ # For xsputn_2(). -+ AC_CHECK_HEADERS(sys/uio.h) -+ GLIBCXX_CHECK_WRITEV -+ -+# AC_DEFINE(HAVE_ACOSF) -+# AC_DEFINE(HAVE_ASINF) -+# AC_DEFINE(HAVE_ATANF) -+# AC_DEFINE(HAVE_ATAN2F) -+ AC_DEFINE(HAVE_CEILF) -+ AC_DEFINE(HAVE_COPYSIGN) -+# AC_DEFINE(HAVE_COPYSIGNF) -+# AC_DEFINE(HAVE_COSF) -+# AC_DEFINE(HAVE_COSHF) -+# AC_DEFINE(HAVE_EXPF) -+# AC_DEFINE(HAVE_FABSF) -+ AC_DEFINE(HAVE_FINITE) -+ AC_DEFINE(HAVE_FINITEF) -+ AC_DEFINE(HAVE_FLOORF) -+# AC_DEFINE(HAVE_FMODF) -+# AC_DEFINE(HAVE_FREXPF) -+ AC_DEFINE(HAVE_HYPOT) -+# AC_DEFINE(HAVE_HYPOTF) -+ AC_DEFINE(HAVE_ISINF) -+ AC_DEFINE(HAVE_ISINFF) -+ AC_DEFINE(HAVE_ISNAN) -+ AC_DEFINE(HAVE_ISNANF) -+# AC_DEFINE(HAVE_LOGF) -+# AC_DEFINE(HAVE_LOG10F) -+# AC_DEFINE(HAVE_MODFF) -+# AC_DEFINE(HAVE_SINF) -+# AC_DEFINE(HAVE_SINHF) -+# AC_DEFINE(HAVE_SINCOS) -+# AC_DEFINE(HAVE_SINCOSF) -+ AC_DEFINE(HAVE_SQRTF) -+# AC_DEFINE(HAVE_TANF) -+# AC_DEFINE(HAVE_TANHF) -+ if test x"long_double_math_on_this_cpu" = x"yes"; then -+# AC_DEFINE(HAVE_ACOSL) -+# AC_DEFINE(HAVE_ASINL) -+# AC_DEFINE(HAVE_ATANL) -+# AC_DEFINE(HAVE_ATAN2L) -+# AC_DEFINE(HAVE_CEILL) -+# AC_DEFINE(HAVE_COPYSIGNL) -+# AC_DEFINE(HAVE_COSL) -+# AC_DEFINE(HAVE_COSHL) -+# AC_DEFINE(HAVE_EXPL) -+# AC_DEFINE(HAVE_FABSL) -+# AC_DEFINE(HAVE_FINITEL) -+# AC_DEFINE(HAVE_FLOORL) -+# AC_DEFINE(HAVE_FMODL) -+# AC_DEFINE(HAVE_FREXPL) -+# AC_DEFINE(HAVE_HYPOTL) -+# AC_DEFINE(HAVE_ISINFL) -+# AC_DEFINE(HAVE_ISNANL) -+# AC_DEFINE(HAVE_LOGL) -+# AC_DEFINE(HAVE_LOG10L) -+# AC_DEFINE(HAVE_MODFL) -+# AC_DEFINE(HAVE_POWL) -+# AC_DEFINE(HAVE_SINL) -+# AC_DEFINE(HAVE_SINHL) -+# AC_DEFINE(HAVE_SINCOSL) -+# AC_DEFINE(HAVE_SQRTL) -+# AC_DEFINE(HAVE_TANL) -+# AC_DEFINE(HAVE_TANHL) -+ fi -+ ;; - *-linux* | *-uclinux* | *-gnu* | *-kfreebsd*-gnu | *-knetbsd*-gnu) - AC_CHECK_HEADERS([nan.h ieeefp.h endian.h sys/isa_defs.h \ - machine/endian.h machine/param.h sys/machine.h sys/types.h \ -@@ -156,7 +248,7 @@ - AC_DEFINE(HAVE_INT64_T) - case "$target" in - *-uclinux*) -- # Don't enable LFS with uClibc -+ # Don't enable LFS with uClinux - ;; - *) - AC_DEFINE(_GLIBCXX_USE_LFS) -diff -urN gcc-4.0.0-100/libstdc++-v3/include/c_compatibility/wchar.h gcc-4.0.0/libstdc++-v3/include/c_compatibility/wchar.h ---- gcc-4.0.0-100/libstdc++-v3/include/c_compatibility/wchar.h 2005-04-30 13:06:53.690054168 -0500 -+++ gcc-4.0.0/libstdc++-v3/include/c_compatibility/wchar.h 2005-04-28 20:15:56.000000000 -0500 -@@ -101,7 +101,9 @@ - using std::wmemcpy; - using std::wmemmove; - using std::wmemset; -+#if _GLIBCXX_HAVE_WCSFTIME - using std::wcsftime; -+#endif - - #if _GLIBCXX_USE_C99 - using std::wcstold; -diff -urN gcc-4.0.0-100/libstdc++-v3/include/c_std/std_cwchar.h gcc-4.0.0/libstdc++-v3/include/c_std/std_cwchar.h ---- gcc-4.0.0-100/libstdc++-v3/include/c_std/std_cwchar.h 2005-04-30 13:06:53.691054016 -0500 -+++ gcc-4.0.0/libstdc++-v3/include/c_std/std_cwchar.h 2005-04-28 20:15:56.000000000 -0500 -@@ -179,7 +179,9 @@ - using ::wcscoll; - using ::wcscpy; - using ::wcscspn; -+#if _GLIBCXX_HAVE_WCSFTIME - using ::wcsftime; -+#endif - using ::wcslen; - using ::wcsncat; - using ::wcsncmp; diff --git a/patches/gcc/4.0.3/120-libstdc++-pic.patch b/patches/gcc/4.0.3/120-libstdc++-pic.patch deleted file mode 100644 index a9d6e71..0000000 --- a/patches/gcc/4.0.3/120-libstdc++-pic.patch +++ /dev/null @@ -1,45 +0,0 @@ ---- gcc-4.0.0/libstdc++-v3/src/Makefile.am -+++ gcc-4.0.0/libstdc++-v3/src/Makefile.am -@@ -214,6 +214,10 @@ - $(OPT_LDFLAGS) $(SECTION_LDFLAGS) $(AM_CXXFLAGS) $(LDFLAGS) -o $@ - - -+install-exec-local: -+ $(AR) cru libstdc++_pic.a *.o $(top_builddir)/libsupc++/*.o -+ $(INSTALL_DATA) libstdc++_pic.a $(DESTDIR)$(toolexeclibdir) -+ - # Added bits to build debug library. - if GLIBCXX_BUILD_DEBUG - all-local: build_debug ---- gcc-4.0.0/libstdc++-v3/src/Makefile.in -+++ gcc-4.0.0/libstdc++-v3/src/Makefile.in -@@ -625,7 +625,7 @@ - - install-data-am: install-data-local - --install-exec-am: install-toolexeclibLTLIBRARIES -+install-exec-am: install-toolexeclibLTLIBRARIES install-exec-local - - install-info: install-info-am - -@@ -664,7 +664,7 @@ - maintainer-clean-generic mostlyclean mostlyclean-compile \ - mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ - tags uninstall uninstall-am uninstall-info-am \ -- uninstall-toolexeclibLTLIBRARIES -+ uninstall-toolexeclibLTLIBRARIES install-exec-local - - @GLIBCXX_BUILD_VERSIONED_SHLIB_TRUE@libstdc++-symbol.ver: ${glibcxx_srcdir}/$(SYMVER_MAP) - @GLIBCXX_BUILD_VERSIONED_SHLIB_TRUE@ cp ${glibcxx_srcdir}/$(SYMVER_MAP) ./libstdc++-symbol.ver -@@ -743,6 +743,11 @@ - install_debug: - (cd ${debugdir} && $(MAKE) \ - toolexeclibdir=$(glibcxx_toolexeclibdir)/debug install) -+ -+install-exec-local: -+ $(AR) cru libstdc++_pic.a *.o $(top_builddir)/libsupc++/*.o -+ $(INSTALL_DATA) libstdc++_pic.a $(DESTDIR)$(toolexeclibdir) -+ - # Tell versions [3.59,3.63) of GNU make to not export all variables. - # Otherwise a system limit (for SysV at least) may be exceeded. - .NOEXPORT: diff --git a/patches/gcc/4.0.3/130-missing-execinfo_h.patch b/patches/gcc/4.0.3/130-missing-execinfo_h.patch deleted file mode 100644 index 0e2092f..0000000 --- a/patches/gcc/4.0.3/130-missing-execinfo_h.patch +++ /dev/null @@ -1,11 +0,0 @@ ---- gcc-4.0.0/boehm-gc/include/gc.h-orig 2005-04-28 22:28:57.000000000 -0500 -+++ gcc-4.0.0/boehm-gc/include/gc.h 2005-04-28 22:30:38.000000000 -0500 -@@ -500,7 +500,7 @@ - #ifdef __linux__ - # include - # if (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1 || __GLIBC__ > 2) \ -- && !defined(__ia64__) -+ && !defined(__ia64__) && !defined(__UCLIBC__) - # ifndef GC_HAVE_BUILTIN_BACKTRACE - # define GC_HAVE_BUILTIN_BACKTRACE - # endif diff --git a/patches/gcc/4.0.3/140-c99-snprintf.patch b/patches/gcc/4.0.3/140-c99-snprintf.patch deleted file mode 100644 index dfb22d6..0000000 --- a/patches/gcc/4.0.3/140-c99-snprintf.patch +++ /dev/null @@ -1,11 +0,0 @@ ---- gcc-4.0.0/libstdc++-v3/include/c_std/std_cstdio.h-orig 2005-04-29 00:08:41.000000000 -0500 -+++ gcc-4.0.0/libstdc++-v3/include/c_std/std_cstdio.h 2005-04-29 00:08:45.000000000 -0500 -@@ -142,7 +142,7 @@ - using ::vsprintf; - } - --#if _GLIBCXX_USE_C99 -+#if _GLIBCXX_USE_C99 || defined(__UCLIBC__) - - #undef snprintf - #undef vfscanf diff --git a/patches/gcc/4.0.3/150-c99-complex-ugly-hack.patch b/patches/gcc/4.0.3/150-c99-complex-ugly-hack.patch deleted file mode 100644 index 2ccc80d..0000000 --- a/patches/gcc/4.0.3/150-c99-complex-ugly-hack.patch +++ /dev/null @@ -1,12 +0,0 @@ ---- gcc-4.0.0/libstdc++-v3/configure-old 2005-04-30 22:04:48.061603912 -0500 -+++ gcc-4.0.0/libstdc++-v3/configure 2005-04-30 22:06:13.678588152 -0500 -@@ -7194,6 +7194,9 @@ - cat >>conftest.$ac_ext <<_ACEOF - /* end confdefs.h. */ - #include -+#ifdef __UCLIBC__ -+#error ugly hack to make sure configure test fails here for cross until uClibc supports the complex funcs -+#endif - int - main () - { diff --git a/patches/gcc/4.0.3/160-index_macro.patch b/patches/gcc/4.0.3/160-index_macro.patch deleted file mode 100644 index 1fac112..0000000 --- a/patches/gcc/4.0.3/160-index_macro.patch +++ /dev/null @@ -1,24 +0,0 @@ ---- gcc-4.1.0/libstdc++-v3/include/ext/rope.mps 2006-03-24 01:49:51 +0100 -+++ gcc-4.1.0/libstdc++-v3/include/ext/rope 2006-03-24 01:49:37 +0100 -@@ -59,6 +59,9 @@ - #include - #include - -+/* cope w/ index defined as macro, SuSv3 proposal */ -+#undef index -+ - # ifdef __GC - # define __GC_CONST const - # else ---- gcc-4.1.0/libstdc++-v3/include/ext/ropeimpl.h.mps 2006-03-24 01:50:04 +0100 -+++ gcc-4.1.0/libstdc++-v3/include/ext/ropeimpl.h 2006-03-24 01:50:28 +0100 -@@ -53,6 +53,9 @@ - #include // For uninitialized_copy_n - #include // For power - -+/* cope w/ index defined as macro, SuSv3 proposal */ -+#undef index -+ - namespace __gnu_cxx - { - using std::size_t; diff --git a/patches/gcc/4.0.3/170-sdk-libstdc++-includes.patch b/patches/gcc/4.0.3/170-sdk-libstdc++-includes.patch deleted file mode 100644 index c7676ae..0000000 --- a/patches/gcc/4.0.3/170-sdk-libstdc++-includes.patch +++ /dev/null @@ -1,22 +0,0 @@ -diff -urN gcc-4.0.0-100/libstdc++-v3/fragment.am gcc-4.0.0/libstdc++-v3/fragment.am ---- gcc-4.0.0-100/libstdc++-v3/fragment.am 2004-10-25 15:32:40.000000000 -0500 -+++ gcc-4.0.0/libstdc++-v3/fragment.am 2005-04-28 21:48:43.000000000 -0500 -@@ -18,5 +18,5 @@ - $(WARN_FLAGS) $(WERROR) -fdiagnostics-show-location=once - - # -I/-D flags to pass when compiling. --AM_CPPFLAGS = $(GLIBCXX_INCLUDES) -+AM_CPPFLAGS = $(GLIBCXX_INCLUDES) -I$(toplevel_srcdir)/include - -diff -urN gcc-4.0.0-100/libstdc++-v3/libmath/Makefile.am gcc-4.0.0/libstdc++-v3/libmath/Makefile.am ---- gcc-4.0.0-100/libstdc++-v3/libmath/Makefile.am 2003-08-27 16:29:42.000000000 -0500 -+++ gcc-4.0.0/libstdc++-v3/libmath/Makefile.am 2005-04-28 21:48:43.000000000 -0500 -@@ -32,7 +32,7 @@ - - libmath_la_SOURCES = stubs.c - --AM_CPPFLAGS = $(CANADIAN_INCLUDES) -+AM_CPPFLAGS = $(CANADIAN_INCLUDES) -I$(toplevel_srcdir)/include - - # Only compiling "C" sources in this directory. - LIBTOOL = @LIBTOOL@ --tag CC diff --git a/patches/gcc/4.0.3/180-arm-bigendian.patch b/patches/gcc/4.0.3/180-arm-bigendian.patch deleted file mode 100644 index 307aea3..0000000 --- a/patches/gcc/4.0.3/180-arm-bigendian.patch +++ /dev/null @@ -1,67 +0,0 @@ -By Lennert Buytenhek -Adds support for arm*b-linux* big-endian ARM targets - -See http://gcc.gnu.org/PR16350 - ---- gcc-4.0.3/gcc/config/arm/linux-elf.h -+++ gcc-4.0.3/gcc/config/arm/linux-elf.h -@@ -31,19 +31,33 @@ - /* Do not assume anything about header files. */ - #define NO_IMPLICIT_EXTERN_C - -+/* -+ * 'config.gcc' defines TARGET_BIG_ENDIAN_DEFAULT as 1 for arm*b-* -+ * (big endian) configurations. -+ */ -+#if TARGET_BIG_ENDIAN_DEFAULT -+#define TARGET_ENDIAN_DEFAULT ARM_FLAG_BIG_END -+#define TARGET_ENDIAN_OPTION "mbig-endian" -+#define TARGET_LINKER_EMULATION "armelfb_linux" -+#else -+#define TARGET_ENDIAN_DEFAULT 0 -+#define TARGET_ENDIAN_OPTION "mlittle-endian" -+#define TARGET_LINKER_EMULATION "armelf_linux" -+#endif -+ - #undef TARGET_DEFAULT_FLOAT_ABI - #define TARGET_DEFAULT_FLOAT_ABI ARM_FLOAT_ABI_HARD - - #undef TARGET_DEFAULT --#define TARGET_DEFAULT (0) -+#define TARGET_DEFAULT (TARGET_ENDIAN_DEFAULT) - - #define SUBTARGET_CPU_DEFAULT TARGET_CPU_arm6 - --#define SUBTARGET_EXTRA_LINK_SPEC " -m armelf_linux -p" -+#define SUBTARGET_EXTRA_LINK_SPEC " -m " TARGET_LINKER_EMULATION " -p" - - #undef MULTILIB_DEFAULTS - #define MULTILIB_DEFAULTS \ -- { "marm", "mlittle-endian", "mhard-float", "mno-thumb-interwork" } -+ { "marm", TARGET_ENDIAN_OPTION, "mhard-float", "mno-thumb-interwork" } - - /* The GNU C++ standard library requires that these macros be defined. */ - #undef CPLUSPLUS_CPP_SPEC -@@ -90,7 +104,7 @@ - %{rdynamic:-export-dynamic} \ - %{!dynamic-linker:-dynamic-linker /lib/ld-linux.so.2} \ - -X \ -- %{mbig-endian:-EB}" \ -+ %{mbig-endian:-EB} %{mlittle-endian:-EL}" \ - SUBTARGET_EXTRA_LINK_SPEC - - #define TARGET_OS_CPP_BUILTINS() \ ---- gcc-4.0.3/gcc/config.gcc -+++ gcc-4.0.3/gcc/config.gcc -@@ -672,6 +672,11 @@ - ;; - arm*-*-linux*) # ARM GNU/Linux with ELF - 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="${tmake_file} arm/t-arm arm/t-linux" - extra_parts="crtbegin.o crtbeginS.o crtend.o crtendS.o" - gnu_ld=yes diff --git a/patches/gcc/4.1.0/100-fix-fixincl.patch b/patches/gcc/4.1.0/100-fix-fixincl.patch deleted file mode 100644 index 3928705..0000000 --- a/patches/gcc/4.1.0/100-fix-fixincl.patch +++ /dev/null @@ -1,71 +0,0 @@ -See http://gcc.gnu.org/PR22541 - -From: Dan Kegel - -When building gcc-3.4.3 or gcc-4.x into a clean $PREFIX, -the configure script happily copies the glibc include files from include to sys-include; -here's the line from the log file (with $PREFIX instead of the real prefix): - -Copying $PREFIX/i686-unknown-linux-gnu/include to $PREFIX/i686-unknown-linux-gnu/sys-include - -But later, when running fixincludes, it gives the error message - The directory that should contain system headers does not exist: - $PREFIX/lib/gcc/i686-unknown-linux-gnu/3.4.3/../../../../i686-unknown-linux-gnu/sys-include - -Nevertheless, it continues building; the header files it installs in - $PREFIX/lib/gcc/i686-unknown-linux-gnu/3.4.3/include -do not include the boilerplate that would cause it to #include_next the -glibc headers in the system header directory. -Thus the resulting toolchain can't compile the following program: -#include -int x = PATH_MAX; -because its limits.h doesn't include the glibc header. - -The problem is that gcc/Makefile.in assumes that -it can refer to $PREFIX/i686-unknown-linux-gnu with the path - $PREFIX/lib/../i686-unknown-linux-gnu, but -that fails because the directory $PREFIX/lib doesn't exist during 'make all'; -it is only created later, during 'make install'. (Which makes this problem -confusing, since one only notices the breakage well after 'make install', -at which point the path configure complained about does exist, and has the -right stuff in it.) - -A fix that I've been using for a while is to use sed to canonicalize -the path. The sed syntax is a bit obtuse, but it works. - -(hey, that's the first time I've ever used a label in a sed script; thanks to the sed faq -for explaining the :a ... ta method of looping to repeat a search-and-replace until it doesn't match.) - -[rediffed against gcc-4.1-20060210] - ---- gcc-4.1-20060210/gcc/Makefile.in.old 2006-01-11 06:29:29.000000000 -0800 -+++ gcc-4.1-20060210/gcc/Makefile.in 2006-02-14 16:08:54.000000000 -0800 -@@ -388,7 +388,10 @@ - CROSS_SYSTEM_HEADER_DIR = @CROSS_SYSTEM_HEADER_DIR@ - - # autoconf sets SYSTEM_HEADER_DIR to one of the above. --SYSTEM_HEADER_DIR = @SYSTEM_HEADER_DIR@ -+# Purge it of unneccessary internal relative paths -+# to directories that might not exist yet. -+# The sed idiom for this is to repeat the search-and-replace until it doesn't match, using :a ... ta. -+SYSTEM_HEADER_DIR = `echo @SYSTEM_HEADER_DIR@ | sed -e :a -e "s,[^/]*/\.\.\/,," -e ta` - - # Control whether to run fixproto and fixincludes. - STMP_FIXPROTO = @STMP_FIXPROTO@ -@@ -3167,13 +3170,15 @@ - ../$(build_subdir)/fixincludes/fixincl: ; @ : - - # Build fixed copies of system files. -+# Abort if no system headers available, unless building a crosscompiler. -+# Canonicalize $gcc_tooldir/sys-include in same way as $SYSTEM_HEADER_DIR was canonicalized so test still works - stmp-fixinc: gsyslimits.h macro_list \ - $(build_objdir)/fixincludes/fixincl \ - $(build_objdir)/fixincludes/fixinc.sh - @if ! $(inhibit_libc) && test ! -d ${SYSTEM_HEADER_DIR}; then \ - echo The directory that should contain system headers does not exist: >&2 ; \ - echo " ${SYSTEM_HEADER_DIR}" >&2 ; \ -- if test "x${SYSTEM_HEADER_DIR}" = "x${gcc_tooldir}/sys-include"; \ -+ if test "x${SYSTEM_HEADER_DIR}" = "x`echo "${gcc_tooldir}/sys-include" | sed -e :a -e "s,[^/]*/\.\.\/,," -e ta`"; \ - then sleep 1; else exit 1; fi; \ - fi - rm -rf include; mkdir include diff --git a/patches/gcc/4.1.1/100-uclibc-conf.patch b/patches/gcc/4.1.1/100-uclibc-conf.patch deleted file mode 100644 index 49d576c..0000000 --- a/patches/gcc/4.1.1/100-uclibc-conf.patch +++ /dev/null @@ -1,544 +0,0 @@ ---- gcc-4.1.0/gcc/config/t-linux-uclibc -+++ gcc-4.1.0/gcc/config/t-linux-uclibc -@@ -0,0 +1,5 @@ -+# Remove glibc specific files added in t-linux -+SHLIB_MAPFILES := $(filter-out $(srcdir)/config/libgcc-glibc.ver, $(SHLIB_MAPFILES)) -+ -+# Use unwind-dw2-fde instead of unwind-dw2-fde-glibc -+LIB2ADDEH := $(subst unwind-dw2-fde-glibc.c,unwind-dw2-fde.c,$(LIB2ADDEH)) ---- gcc-4.1.0/gcc/config.gcc -+++ gcc-4.1.0/gcc/config.gcc -@@ -1887,7 +1887,7 @@ s390x-ibm-tpf*) - ;; - sh-*-elf* | sh[12346l]*-*-elf* | sh*-*-kaos* | \ - sh-*-symbianelf* | sh[12346l]*-*-symbianelf* | \ -- sh-*-linux* | sh[346lbe]*-*-linux* | \ -+ sh*-*-linux* | sh[346lbe]*-*-linux* | \ - sh-*-netbsdelf* | shl*-*-netbsdelf* | sh5-*-netbsd* | sh5l*-*-netbsd* | \ - sh64-*-netbsd* | sh64l*-*-netbsd*) - tmake_file="${tmake_file} sh/t-sh sh/t-elf" -@@ -2341,6 +2341,12 @@ m32c-*-elf*) - ;; - esac - -+# Rather than hook into each target, just do it after all the linux -+# targets have been processed -+case ${target} in -+*-linux-uclibc*) tm_defines="${tm_defines} USE_UCLIBC" ; tmake_file="${tmake_file} t-linux-uclibc" -+esac -+ - case ${target} in - i[34567]86-*-linux*aout* | i[34567]86-*-linux*libc1) - tmake_file="${tmake_file} i386/t-gmm_malloc" ---- gcc-4.1.0/boehm-gc/configure -+++ gcc-4.1.0/boehm-gc/configure -@@ -4320,6 +4320,11 @@ linux-gnu*) - lt_cv_deplibs_check_method=pass_all - ;; - -+linux-uclibc*) -+ lt_cv_deplibs_check_method=pass_all -+ lt_cv_file_magic_test_file=`echo /lib/libuClibc-*.so` -+ ;; -+ - netbsd* | knetbsd*-gnu) - if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then - lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$' ---- gcc-4.1.0/configure -+++ gcc-4.1.0/configure -@@ -1133,7 +1133,7 @@ no) - ;; - "") - case "${target}" in -- *-*-linux*-gnu | *-*-gnu* | *-*-k*bsd*-gnu) -+ *-*-linux*-gnu | *-*-gnu* | *-*-k*bsd*-gnu | *-*-linux-uclibc*) - # Enable libmudflap by default in GNU and friends. - ;; - *-*-freebsd*) ---- gcc-4.1.0/configure.in -+++ gcc-4.1.0/configure.in -@@ -341,7 +341,7 @@ no) - ;; - "") - case "${target}" in -- *-*-linux*-gnu | *-*-gnu* | *-*-k*bsd*-gnu) -+ *-*-linux*-gnu | *-*-gnu* | *-*-k*bsd*-gnu | *-*-linux-uclibc*) - # Enable libmudflap by default in GNU and friends. - ;; - *-*-freebsd*) ---- gcc-4.1.0/contrib/regression/objs-gcc.sh -+++ gcc-4.1.0/contrib/regression/objs-gcc.sh -@@ -105,6 +105,10 @@ if [ $H_REAL_TARGET = $H_REAL_HOST -a $H - then - make all-gdb all-dejagnu all-ld || exit 1 - make install-gdb install-dejagnu install-ld || exit 1 -+elif [ $H_REAL_TARGET = $H_REAL_HOST -a $H_REAL_TARGET = i686-pc-linux-uclibc ] -+ then -+ make all-gdb all-dejagnu all-ld || exit 1 -+ make install-gdb install-dejagnu install-ld || exit 1 - elif [ $H_REAL_TARGET = $H_REAL_HOST ] ; then - make bootstrap || exit 1 - make install || exit 1 ---- gcc-4.1.0/gcc/config/alpha/linux-elf.h -+++ gcc-4.1.0/gcc/config/alpha/linux-elf.h -@@ -27,7 +27,11 @@ Boston, MA 02110-1301, USA. */ - #define SUBTARGET_EXTRA_SPECS \ - { "elf_dynamic_linker", ELF_DYNAMIC_LINKER }, - -+#if defined USE_UCLIBC -+#define ELF_DYNAMIC_LINKER "/lib/ld-uClibc.so.0" -+#else - #define ELF_DYNAMIC_LINKER "/lib/ld-linux.so.2" -+#endif - - #define LINK_SPEC "-m elf64alpha %{G*} %{relax:-relax} \ - %{O*:-O3} %{!O*:-O1} \ ---- gcc-4.1.0/gcc/config/arm/linux-elf.h -+++ gcc-4.1.0/gcc/config/arm/linux-elf.h -@@ -51,7 +51,11 @@ - - #define LIBGCC_SPEC "%{msoft-float:-lfloat} %{mfloat-abi=soft*:-lfloat} -lgcc" - -+#ifdef USE_UCLIBC -+#define LINUX_TARGET_INTERPRETER "/lib/ld-uClibc.so.0" -+#else - #define LINUX_TARGET_INTERPRETER "/lib/ld-linux.so.2" -+#endif - - #define LINUX_TARGET_LINK_SPEC "%{h*} %{version:-v} \ - %{b} \ ---- gcc-4.1.0/gcc/config/cris/linux.h -+++ gcc-4.1.0/gcc/config/cris/linux.h -@@ -73,6 +73,25 @@ Boston, MA 02110-1301, USA. */ - #undef CRIS_DEFAULT_CPU_VERSION - #define CRIS_DEFAULT_CPU_VERSION CRIS_CPU_NG - -+#ifdef USE_UCLIBC -+ -+#undef CRIS_SUBTARGET_VERSION -+#define CRIS_SUBTARGET_VERSION " - cris-axis-linux-uclibc" -+ -+#undef CRIS_LINK_SUBTARGET_SPEC -+#define CRIS_LINK_SUBTARGET_SPEC \ -+ "-mcrislinux\ -+ -rpath-link include/asm/../..%s\ -+ %{shared} %{static}\ -+ %{symbolic:-Bdynamic} %{shlib:-Bdynamic} %{static:-Bstatic}\ -+ %{!shared: \ -+ %{!static: \ -+ %{rdynamic:-export-dynamic} \ -+ %{!dynamic-linker:-dynamic-linker /lib/ld-uClibc.so.0}}} \ -+ %{!r:%{O2|O3: --gc-sections}}" -+ -+#else /* USE_UCLIBC */ -+ - #undef CRIS_SUBTARGET_VERSION - #define CRIS_SUBTARGET_VERSION " - cris-axis-linux-gnu" - -@@ -87,6 +106,8 @@ Boston, MA 02110-1301, USA. */ - %{!shared:%{!static:%{rdynamic:-export-dynamic}}}\ - %{!r:%{O2|O3: --gc-sections}}" - -+#endif /* USE_UCLIBC */ -+ - - /* Node: Run-time Target */ - ---- gcc-4.1.0/gcc/config/i386/linux.h -+++ gcc-4.1.0/gcc/config/i386/linux.h -@@ -107,6 +107,11 @@ Boston, MA 02110-1301, USA. */ - #define LINK_EMULATION "elf_i386" - #define DYNAMIC_LINKER "/lib/ld-linux.so.2" - -+#if defined USE_UCLIBC -+#undef DYNAMIC_LINKER -+#define DYNAMIC_LINKER "/lib/ld-uClibc.so.0" -+#endif -+ - #undef SUBTARGET_EXTRA_SPECS - #define SUBTARGET_EXTRA_SPECS \ - { "link_emulation", LINK_EMULATION },\ ---- gcc-4.1.0/gcc/config/i386/linux64.h -+++ gcc-4.1.0/gcc/config/i386/linux64.h -@@ -54,14 +54,21 @@ Boston, MA 02110-1301, USA. */ - When the -shared link option is used a final link is not being - done. */ - -+#ifdef USE_UCLIBC -+#define ELF32_DYNAMIC_LINKER "/lib/ld-uClibc.so.0" -+#define ELF64_DYNAMIC_LINKER "/lib/ld64-uClibc.so.0" -+#else -+#define ELF32_DYNAMIC_LINKER "/lib/ld-linux.so.2" -+#define ELF64_DYNAMIC_LINKER "/lib64/ld-linux-x86-64.so.2" -+#endif - #undef LINK_SPEC - #define LINK_SPEC "%{!m32:-m elf_x86_64} %{m32:-m elf_i386} \ - %{shared:-shared} \ - %{!shared: \ - %{!static: \ - %{rdynamic:-export-dynamic} \ -- %{m32:%{!dynamic-linker:-dynamic-linker /lib/ld-linux.so.2}} \ -- %{!m32:%{!dynamic-linker:-dynamic-linker /lib64/ld-linux-x86-64.so.2}}} \ -+ %{m32:%{!dynamic-linker:-dynamic-linker " ELF32_DYNAMIC_LINKER "}} \ -+ %{!m32:%{!dynamic-linker:-dynamic-linker " ELF64_DYNAMIC_LINKER "}}} \ - %{static:-static}}" - - /* Similar to standard Linux, but adding -ffast-math support. */ ---- gcc-4.1.0/gcc/config/ia64/linux.h -+++ gcc-4.1.0/gcc/config/ia64/linux.h -@@ -37,13 +37,18 @@ do { \ - /* Define this for shared library support because it isn't in the main - linux.h file. */ - -+#ifdef USE_UCLIBC -+#define ELF_DYNAMIC_LINKER "/lib/ld-uClibc.so.0" -+#else -+#define ELF_DYNAMIC_LINKER "/lib/ld-linux-ia64.so.2" -+#endif - #undef LINK_SPEC - #define LINK_SPEC "\ - %{shared:-shared} \ - %{!shared: \ - %{!static: \ - %{rdynamic:-export-dynamic} \ -- %{!dynamic-linker:-dynamic-linker /lib/ld-linux-ia64.so.2}} \ -+ %{!dynamic-linker:-dynamic-linker " ELF_DYNAMIC_LINKER "}} \ - %{static:-static}}" - - ---- gcc-4.1.0/gcc/config/m68k/linux.h -+++ gcc-4.1.0/gcc/config/m68k/linux.h -@@ -123,12 +123,17 @@ Boston, MA 02110-1301, USA. */ - - /* If ELF is the default format, we should not use /lib/elf. */ - -+#ifdef USE_UCLIBC -+#define ELF_DYNAMIC_LINKER "/lib/ld-uClibc.so.0" -+#else -+#define ELF_DYNAMIC_LINKER "/lib/ld.so.1" -+#endif - #undef LINK_SPEC - #define LINK_SPEC "-m m68kelf %{shared} \ - %{!shared: \ - %{!static: \ - %{rdynamic:-export-dynamic} \ -- %{!dynamic-linker*:-dynamic-linker /lib/ld.so.1}} \ -+ %{!dynamic-linker*:-dynamic-linker " ELF_DYNAMIC_LINKER "}} \ - %{static}}" - - /* For compatibility with linux/a.out */ ---- gcc-4.1.0/gcc/config/mips/linux.h -+++ gcc-4.1.0/gcc/config/mips/linux.h -@@ -105,6 +105,11 @@ Boston, MA 02110-1301, USA. */ - - /* Borrowed from sparc/linux.h */ - #undef LINK_SPEC -+#ifdef USE_UCLIBC -+#define ELF_DYNAMIC_LINKER "/lib/ld-uClibc.so.0" -+#else -+#define ELF_DYNAMIC_LINKER "/lib/ld.so.1" -+#endif - #define LINK_SPEC \ - "%(endian_spec) \ - %{shared:-shared} \ -@@ -112,7 +117,7 @@ Boston, MA 02110-1301, USA. */ - %{!ibcs: \ - %{!static: \ - %{rdynamic:-export-dynamic} \ -- %{!dynamic-linker:-dynamic-linker /lib/ld.so.1}} \ -+ %{!dynamic-linker:-dynamic-linker " ELF_DYNAMIC_LINKER "}} \ - %{static:-static}}}" - - #undef SUBTARGET_ASM_SPEC ---- gcc-4.1.0/gcc/config/pa/pa-linux.h -+++ gcc-4.1.0/gcc/config/pa/pa-linux.h -@@ -49,13 +49,18 @@ Boston, MA 02110-1301, USA. */ - /* Define this for shared library support because it isn't in the main - linux.h file. */ - -+#ifdef USE_UCLIBC -+#define ELF_DYNAMIC_LINKER "/lib/ld-uClibc.so.0" -+#else -+#define ELF_DYNAMIC_LINKER "/lib/ld.so.1" -+#endif - #undef LINK_SPEC - #define LINK_SPEC "\ - %{shared:-shared} \ - %{!shared: \ - %{!static: \ - %{rdynamic:-export-dynamic} \ -- %{!dynamic-linker:-dynamic-linker /lib/ld.so.1}} \ -+ %{!dynamic-linker:-dynamic-linker " ELF_DYNAMIC_LINKER "}} \ - %{static:-static}}" - - /* glibc's profiling functions don't need gcc to allocate counters. */ ---- gcc-4.1.0/gcc/config/rs6000/linux.h -+++ gcc-4.1.0/gcc/config/rs6000/linux.h -@@ -72,7 +72,11 @@ - #define LINK_START_DEFAULT_SPEC "%(link_start_linux)" - - #undef LINK_OS_DEFAULT_SPEC -+#ifdef USE_UCLIBC -+#define LINK_OS_DEFAULT_SPEC "%(link_os_linux_uclibc)" -+#else - #define LINK_OS_DEFAULT_SPEC "%(link_os_linux)" -+#endif - - #define LINK_GCC_C_SEQUENCE_SPEC \ - "%{static:--start-group} %G %L %{static:--end-group}%{!static:%G}" ---- gcc-4.1.0/gcc/config/rs6000/sysv4.h -+++ gcc-4.1.0/gcc/config/rs6000/sysv4.h -@@ -866,6 +866,7 @@ extern int fixuplabelno; - mcall-linux : %(link_os_linux) ; \ - mcall-gnu : %(link_os_gnu) ; \ - mcall-netbsd : %(link_os_netbsd) ; \ -+ mcall-linux-uclibc : %(link_os_linux_uclibc); \ - mcall-openbsd: %(link_os_openbsd) ; \ - : %(link_os_default) }" - -@@ -1043,6 +1044,10 @@ extern int fixuplabelno; - %{rdynamic:-export-dynamic} \ - %{!dynamic-linker:-dynamic-linker /lib/ld.so.1}}}" - -+#define LINK_OS_LINUX_UCLIBC_SPEC "-m elf32ppclinux %{!shared: %{!static: \ -+ %{rdynamic:-export-dynamic} \ -+ %{!dynamic-linker:-dynamic-linker /lib/ld-uClibc.so.0}}}" -+ - #if defined(HAVE_LD_EH_FRAME_HDR) - # define LINK_EH_SPEC "%{!static:--eh-frame-hdr} " - #endif -@@ -1209,6 +1214,7 @@ ncrtn.o%s" - { "link_os_sim", LINK_OS_SIM_SPEC }, \ - { "link_os_freebsd", LINK_OS_FREEBSD_SPEC }, \ - { "link_os_linux", LINK_OS_LINUX_SPEC }, \ -+ { "link_os_linux_uclibc", LINK_OS_LINUX_UCLIBC_SPEC }, \ - { "link_os_gnu", LINK_OS_GNU_SPEC }, \ - { "link_os_netbsd", LINK_OS_NETBSD_SPEC }, \ - { "link_os_openbsd", LINK_OS_OPENBSD_SPEC }, \ ---- gcc-4.1.0/gcc/config/s390/linux.h -+++ gcc-4.1.0/gcc/config/s390/linux.h -@@ -77,6 +77,13 @@ Software Foundation, 51 Franklin Street, - #define MULTILIB_DEFAULTS { "m31" } - #endif - -+#ifdef USE_UCLIBC -+#define ELF31_DYNAMIC_LINKER "/lib/ld-uClibc.so.0" -+#define ELF64_DYNAMIC_LINKER "/lib/ld64-uClibc.so.0" -+#else -+#define ELF31_DYNAMIC_LINKER "/lib/ld.so.1" -+#define ELF64_DYNAMIC_LINKER "/lib/ld64.so.1" -+#endif - #undef LINK_SPEC - #define LINK_SPEC \ - "%{m31:-m elf_s390}%{m64:-m elf64_s390} \ -@@ -86,8 +93,8 @@ Software Foundation, 51 Franklin Street, - %{!static: \ - %{rdynamic:-export-dynamic} \ - %{!dynamic-linker: \ -- %{m31:-dynamic-linker /lib/ld.so.1} \ -- %{m64:-dynamic-linker /lib/ld64.so.1}}}}" -+ %{m31:-dynamic-linker " ELF31_DYNAMIC_LINKER "} \ -+ %{m64:-dynamic-linker " ELF64_DYNAMIC_LINKER "}}}}" - - - #define TARGET_ASM_FILE_END file_end_indicate_exec_stack ---- gcc-4.1.0/gcc/config/sh/linux.h -+++ gcc-4.1.0/gcc/config/sh/linux.h -@@ -56,12 +56,21 @@ Boston, MA 02110-1301, USA. */ - #undef SUBTARGET_LINK_EMUL_SUFFIX - #define SUBTARGET_LINK_EMUL_SUFFIX "_linux" - #undef SUBTARGET_LINK_SPEC -+#ifdef USE_UCLIBC -+#define SUBTARGET_LINK_SPEC \ -+ "%{shared:-shared} \ -+ %{!static: \ -+ %{rdynamic:-export-dynamic} \ -+ %{!dynamic-linker:-dynamic-linker /lib/ld-uClibc.so.0}} \ -+ %{static:-static}" -+#else - #define SUBTARGET_LINK_SPEC \ - "%{shared:-shared} \ - %{!static: \ - %{rdynamic:-export-dynamic} \ - %{!dynamic-linker:-dynamic-linker /lib/ld-linux.so.2}} \ - %{static:-static}" -+#endif - - /* Output assembler code to STREAM to call the profiler. */ - ---- gcc-4.1.0/gcc/config/sparc/linux.h -+++ gcc-4.1.0/gcc/config/sparc/linux.h -@@ -125,6 +125,11 @@ Boston, MA 02110-1301, USA. */ - - /* If ELF is the default format, we should not use /lib/elf. */ - -+#ifdef USE_UCLIBC -+#define ELF_DYNAMIC_LINKER "/lib/ld-uClibc.so.0" -+#else -+#define ELF_DYNAMIC_LINKER "/lib/ld-linux.so.2" -+#endif - #undef LINK_SPEC - #define LINK_SPEC "-m elf32_sparc -Y P,/usr/lib %{shared:-shared} \ - %{!mno-relax:%{!r:-relax}} \ -@@ -132,7 +137,7 @@ Boston, MA 02110-1301, USA. */ - %{!ibcs: \ - %{!static: \ - %{rdynamic:-export-dynamic} \ -- %{!dynamic-linker:-dynamic-linker /lib/ld-linux.so.2}} \ -+ %{!dynamic-linker:-dynamic-linker " ELF_DYNAMIC_LINKER "}} \ - %{static:-static}}}" - - /* The sun bundled assembler doesn't accept -Yd, (and neither does gas). ---- gcc-4.1.0/gcc/config/sparc/linux64.h -+++ gcc-4.1.0/gcc/config/sparc/linux64.h -@@ -162,12 +162,17 @@ Boston, MA 02110-1301, USA. */ - { "link_arch_default", LINK_ARCH_DEFAULT_SPEC }, \ - { "link_arch", LINK_ARCH_SPEC }, - -+#ifdef USE_UCLIBC -+#define ELF_DYNAMIC_LINKER "/lib/ld-uClibc.so.0" -+#else -+#define ELF_DYNAMIC_LINKER "/lib/ld-linux.so.2" -+#endif - #define LINK_ARCH32_SPEC "-m elf32_sparc -Y P,/usr/lib %{shared:-shared} \ - %{!shared: \ - %{!ibcs: \ - %{!static: \ - %{rdynamic:-export-dynamic} \ -- %{!dynamic-linker:-dynamic-linker /lib/ld-linux.so.2}} \ -+ %{!dynamic-linker:-dynamic-linker " ELF_DYNAMIC_LINKER "}} \ - %{static:-static}}} \ - " - ---- gcc-4.1.0/libffi/configure -+++ gcc-4.1.0/libffi/configure -@@ -3457,6 +3457,11 @@ linux-gnu*) - lt_cv_deplibs_check_method=pass_all - ;; - -+linux-uclibc*) -+ lt_cv_deplibs_check_method=pass_all -+ lt_cv_file_magic_test_file=`echo /lib/libuClibc-*.so` -+ ;; -+ - netbsd* | knetbsd*-gnu) - if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then - lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$' ---- gcc-4.1.0/libgfortran/configure -+++ gcc-4.1.0/libgfortran/configure -@@ -3699,6 +3699,11 @@ linux-gnu*) - lt_cv_deplibs_check_method=pass_all - ;; - -+linux-uclibc*) -+ lt_cv_deplibs_check_method=pass_all -+ lt_cv_file_magic_test_file=`echo /lib/libuClibc-*.so` -+ ;; -+ - netbsd* | knetbsd*-gnu) - if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then - lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$' ---- gcc-4.1.0/libjava/configure -+++ gcc-4.1.0/libjava/configure -@@ -5137,6 +5137,11 @@ linux-gnu*) - lt_cv_deplibs_check_method=pass_all - ;; - -+linux-uclibc*) -+ lt_cv_deplibs_check_method=pass_all -+ lt_cv_file_magic_test_file=`echo /lib/libuClibc-*.so` -+ ;; -+ - netbsd* | knetbsd*-gnu) - if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then - lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$' ---- gcc-4.1.0/libmudflap/configure -+++ gcc-4.1.0/libmudflap/configure -@@ -5382,6 +5382,11 @@ linux-gnu*) - lt_cv_deplibs_check_method=pass_all - ;; - -+linux-uclibc*) -+ lt_cv_deplibs_check_method=pass_all -+ lt_cv_file_magic_test_file=`echo /lib/libuClibc-*.so` -+ ;; -+ - netbsd* | knetbsd*-gnu) - if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then - lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$' ---- gcc-4.1.0/libobjc/configure -+++ gcc-4.1.0/libobjc/configure -@@ -3312,6 +3312,11 @@ linux-gnu*) - lt_cv_deplibs_check_method=pass_all - ;; - -+linux-uclibc*) -+ lt_cv_deplibs_check_method=pass_all -+ lt_cv_file_magic_test_file=`echo /lib/libuClibc-*.so` -+ ;; -+ - netbsd* | knetbsd*-gnu) - if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then - lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$' ---- gcc-4.1.0/libtool.m4 -+++ gcc-4.1.0/libtool.m4 -@@ -743,6 +743,11 @@ linux-gnu*) - lt_cv_deplibs_check_method=pass_all - ;; - -+linux-uclibc*) -+ lt_cv_deplibs_check_method=pass_all -+ lt_cv_file_magic_test_file=`echo /lib/libuClibc-*.so` -+ ;; -+ - netbsd* | knetbsd*-gnu) - if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then - [lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$'] ---- gcc-4.1.0/ltconfig -+++ gcc-4.1.0/ltconfig -@@ -603,6 +603,7 @@ host_os=`echo $host | sed 's/^\([^-]*\)- - - # Transform linux* to *-*-linux-gnu*, to support old configure scripts. - case $host_os in -+linux-uclibc*) ;; - linux-gnu*) ;; - linux*) host=`echo $host | sed 's/^\(.*-.*-linux\)\(.*\)$/\1-gnu\2/'` - esac -@@ -1274,6 +1275,23 @@ linux-gnu*) - dynamic_linker='GNU/Linux ld.so' - ;; - -+linux-uclibc*) -+ version_type=linux -+ need_lib_prefix=no -+ need_version=no -+ library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' -+ soname_spec='${libname}${release}.so$major' -+ finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' -+ shlibpath_var=LD_LIBRARY_PATH -+ shlibpath_overrides_runpath=no -+ # This implies no fast_install, which is unacceptable. -+ # Some rework will be needed to allow for fast_install -+ # before this can be enabled. -+ hardcode_into_libs=yes -+ # Assume using the uClibc dynamic linker. -+ dynamic_linker="uClibc ld.so" -+ ;; -+ - netbsd*) - need_lib_prefix=no - need_version=no ---- gcc-4.1.0/zlib/configure -+++ gcc-4.1.0/zlib/configure -@@ -3426,6 +3426,11 @@ linux-gnu*) - lt_cv_deplibs_check_method=pass_all - ;; - -+linux-uclibc*) -+ lt_cv_deplibs_check_method=pass_all -+ lt_cv_file_magic_test_file=`echo /lib/libuClibc-*.so` -+ ;; -+ - netbsd* | knetbsd*-gnu) - if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then - lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$' diff --git a/patches/gcc/4.1.1/110-arm-eabi.patch b/patches/gcc/4.1.1/110-arm-eabi.patch deleted file mode 100644 index 1657e7b..0000000 --- a/patches/gcc/4.1.1/110-arm-eabi.patch +++ /dev/null @@ -1,27 +0,0 @@ ---- gcc-2005q3-1.orig/gcc/config.gcc 2005-10-31 19:02:54.000000000 +0300 -+++ gcc-2005q3-1/gcc/config.gcc 2006-01-27 01:09:09.000000000 +0300 -@@ -674,7 +674,7 @@ - tm_file="dbxelf.h elfos.h linux.h arm/elf.h arm/linux-gas.h arm/linux-elf.h" - tmake_file="${tmake_file} t-linux arm/t-arm" - case ${target} in -- arm*-*-linux-gnueabi) -+ arm*-*-linux-gnueabi | arm*-*-linux-uclibcgnueabi) - tm_file="$tm_file arm/bpabi.h arm/linux-eabi.h" - tmake_file="$tmake_file arm/t-arm-elf arm/t-bpabi arm/t-linux-eabi" - # The BPABI long long divmod functions return a 128-bit value in - -diff -urN gcc-2005q3-2/gcc/config/arm/linux-eabi.h gcc-2005q3-2.new/gcc/config/arm/linux-eabi.h ---- gcc-2005q3-2/gcc/config/arm/linux-eabi.h 2005-12-07 23:14:16.000000000 +0300 -+++ gcc-2005q3-2.new/gcc/config/arm/linux-eabi.h 2006-03-29 19:02:34.000000000 +0400 -@@ -53,7 +53,11 @@ - /* Use ld-linux.so.3 so that it will be possible to run "classic" - GNU/Linux binaries on an EABI system. */ - #undef LINUX_TARGET_INTERPRETER -+#ifdef USE_UCLIBC -+#define LINUX_TARGET_INTERPRETER "/lib/ld-uClibc.so.0" -+#else - #define LINUX_TARGET_INTERPRETER "/lib/ld-linux.so.3" -+#endif - - /* At this point, bpabi.h will have clobbered LINK_SPEC. We want to - use the GNU/Linux version, not the generic BPABI version. */ diff --git a/patches/gcc/4.1.1/120-uclibc-locale.patch b/patches/gcc/4.1.1/120-uclibc-locale.patch deleted file mode 100644 index e5d712e..0000000 --- a/patches/gcc/4.1.1/120-uclibc-locale.patch +++ /dev/null @@ -1,3239 +0,0 @@ ---- gcc-4.1.0-dist/libstdc++-v3/acinclude.m4 -+++ gcc-4.1.0/libstdc++-v3/acinclude.m4 -@@ -1071,7 +1071,7 @@ - AC_MSG_CHECKING([for C locale to use]) - GLIBCXX_ENABLE(clocale,auto,[@<:@=MODEL@:>@], - [use MODEL for target locale package], -- [permit generic|gnu|ieee_1003.1-2001|yes|no|auto]) -+ [permit generic|gnu|ieee_1003.1-2001|uclibc|yes|no|auto]) - - # If they didn't use this option switch, or if they specified --enable - # with no specific model, we'll have to look for one. If they -@@ -1087,6 +1087,9 @@ - # Default to "generic". - if test $enable_clocale_flag = auto; then - case ${target_os} in -+ *-uclibc*) -+ enable_clocale_flag=uclibc -+ ;; - linux* | gnu* | kfreebsd*-gnu | knetbsd*-gnu) - AC_EGREP_CPP([_GLIBCXX_ok], [ - #include -@@ -1230,6 +1233,40 @@ - CTIME_CC=config/locale/generic/time_members.cc - CLOCALE_INTERNAL_H=config/locale/generic/c++locale_internal.h - ;; -+ uclibc) -+ AC_MSG_RESULT(uclibc) -+ -+ # Declare intention to use gettext, and add support for specific -+ # languages. -+ # For some reason, ALL_LINGUAS has to be before AM-GNU-GETTEXT -+ ALL_LINGUAS="de fr" -+ -+ # Don't call AM-GNU-GETTEXT here. Instead, assume glibc. -+ AC_CHECK_PROG(check_msgfmt, msgfmt, yes, no) -+ if test x"$check_msgfmt" = x"yes" && test x"$enable_nls" = x"yes"; then -+ USE_NLS=yes -+ fi -+ # Export the build objects. -+ for ling in $ALL_LINGUAS; do \ -+ glibcxx_MOFILES="$glibcxx_MOFILES $ling.mo"; \ -+ glibcxx_POFILES="$glibcxx_POFILES $ling.po"; \ -+ done -+ AC_SUBST(glibcxx_MOFILES) -+ AC_SUBST(glibcxx_POFILES) -+ -+ CLOCALE_H=config/locale/uclibc/c_locale.h -+ CLOCALE_CC=config/locale/uclibc/c_locale.cc -+ CCODECVT_CC=config/locale/uclibc/codecvt_members.cc -+ CCOLLATE_CC=config/locale/uclibc/collate_members.cc -+ CCTYPE_CC=config/locale/uclibc/ctype_members.cc -+ CMESSAGES_H=config/locale/uclibc/messages_members.h -+ CMESSAGES_CC=config/locale/uclibc/messages_members.cc -+ CMONEY_CC=config/locale/uclibc/monetary_members.cc -+ CNUMERIC_CC=config/locale/uclibc/numeric_members.cc -+ CTIME_H=config/locale/uclibc/time_members.h -+ CTIME_CC=config/locale/uclibc/time_members.cc -+ CLOCALE_INTERNAL_H=config/locale/uclibc/c++locale_internal.h -+ ;; - esac - - # This is where the testsuite looks for locale catalogs, using the ---- gcc-4.1.0-dist/libstdc++-v3/config/locale/uclibc/c++locale_internal.h -+++ gcc-4.1.0/libstdc++-v3/config/locale/uclibc/c++locale_internal.h -@@ -0,0 +1,63 @@ -+// Prototypes for GLIBC thread locale __-prefixed functions -*- C++ -*- -+ -+// Copyright (C) 2002, 2004, 2005 Free Software Foundation, Inc. -+// -+// This file is part of the GNU ISO C++ Library. This library is free -+// software; you can redistribute it and/or modify it under the -+// terms of the GNU General Public License as published by the -+// Free Software Foundation; either version 2, or (at your option) -+// any later version. -+ -+// This library is distributed in the hope that it will be useful, -+// but WITHOUT ANY WARRANTY; without even the implied warranty of -+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+// GNU General Public License for more details. -+ -+// You should have received a copy of the GNU General Public License along -+// with this library; see the file COPYING. If not, write to the Free -+// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, -+// USA. -+ -+// As a special exception, you may use this file as part of a free software -+// library without restriction. Specifically, if other files instantiate -+// templates or use macros or inline functions from this file, or you compile -+// this file and link it with other files to produce an executable, this -+// file does not by itself cause the resulting executable to be covered by -+// the GNU General Public License. This exception does not however -+// invalidate any other reasons why the executable file might be covered by -+// the GNU General Public License. -+ -+// Written by Jakub Jelinek -+ -+#include -+#include -+ -+#ifdef __UCLIBC_MJN3_ONLY__ -+#warning clean this up -+#endif -+ -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ -+extern "C" __typeof(nl_langinfo_l) __nl_langinfo_l; -+extern "C" __typeof(strcoll_l) __strcoll_l; -+extern "C" __typeof(strftime_l) __strftime_l; -+extern "C" __typeof(strtod_l) __strtod_l; -+extern "C" __typeof(strtof_l) __strtof_l; -+extern "C" __typeof(strtold_l) __strtold_l; -+extern "C" __typeof(strxfrm_l) __strxfrm_l; -+extern "C" __typeof(newlocale) __newlocale; -+extern "C" __typeof(freelocale) __freelocale; -+extern "C" __typeof(duplocale) __duplocale; -+extern "C" __typeof(uselocale) __uselocale; -+ -+#ifdef _GLIBCXX_USE_WCHAR_T -+extern "C" __typeof(iswctype_l) __iswctype_l; -+extern "C" __typeof(towlower_l) __towlower_l; -+extern "C" __typeof(towupper_l) __towupper_l; -+extern "C" __typeof(wcscoll_l) __wcscoll_l; -+extern "C" __typeof(wcsftime_l) __wcsftime_l; -+extern "C" __typeof(wcsxfrm_l) __wcsxfrm_l; -+extern "C" __typeof(wctype_l) __wctype_l; -+#endif -+ -+#endif // GLIBC 2.3 and later ---- gcc-4.1.0-dist/libstdc++-v3/config/locale/uclibc/c_locale.cc -+++ gcc-4.1.0/libstdc++-v3/config/locale/uclibc/c_locale.cc -@@ -0,0 +1,152 @@ -+// Wrapper for underlying C-language localization -*- C++ -*- -+ -+// Copyright (C) 2001, 2002, 2003, 2004, 2005 -+// Free Software Foundation, Inc. -+// -+// This file is part of the GNU ISO C++ Library. This library is free -+// software; you can redistribute it and/or modify it under the -+// terms of the GNU General Public License as published by the -+// Free Software Foundation; either version 2, or (at your option) -+// any later version. -+ -+// This library is distributed in the hope that it will be useful, -+// but WITHOUT ANY WARRANTY; without even the implied warranty of -+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+// GNU General Public License for more details. -+ -+// You should have received a copy of the GNU General Public License along -+// with this library; see the file COPYING. If not, write to the Free -+// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, -+// USA. -+ -+// As a special exception, you may use this file as part of a free software -+// library without restriction. Specifically, if other files instantiate -+// templates or use macros or inline functions from this file, or you compile -+// this file and link it with other files to produce an executable, this -+// file does not by itself cause the resulting executable to be covered by -+// the GNU General Public License. This exception does not however -+// invalidate any other reasons why the executable file might be covered by -+// the GNU General Public License. -+ -+// -+// ISO C++ 14882: 22.8 Standard locale categories. -+// -+ -+// Written by Benjamin Kosnik -+ -+#include // For errno -+#include -+#include -+#include -+#include -+ -+#ifndef __UCLIBC_HAS_XLOCALE__ -+#define __strtol_l(S, E, B, L) strtol((S), (E), (B)) -+#define __strtoul_l(S, E, B, L) strtoul((S), (E), (B)) -+#define __strtoll_l(S, E, B, L) strtoll((S), (E), (B)) -+#define __strtoull_l(S, E, B, L) strtoull((S), (E), (B)) -+#define __strtof_l(S, E, L) strtof((S), (E)) -+#define __strtod_l(S, E, L) strtod((S), (E)) -+#define __strtold_l(S, E, L) strtold((S), (E)) -+#warning should dummy __newlocale check for C|POSIX ? -+#define __newlocale(a, b, c) NULL -+#define __freelocale(a) ((void)0) -+#define __duplocale(a) __c_locale() -+#endif -+ -+namespace std -+{ -+ template<> -+ void -+ __convert_to_v(const char* __s, float& __v, ios_base::iostate& __err, -+ const __c_locale& __cloc) -+ { -+ char* __sanity; -+ errno = 0; -+ float __f = __strtof_l(__s, &__sanity, __cloc); -+ if (__sanity != __s && errno != ERANGE) -+ __v = __f; -+ else -+ __err |= ios_base::failbit; -+ } -+ -+ template<> -+ void -+ __convert_to_v(const char* __s, double& __v, ios_base::iostate& __err, -+ const __c_locale& __cloc) -+ { -+ char* __sanity; -+ errno = 0; -+ double __d = __strtod_l(__s, &__sanity, __cloc); -+ if (__sanity != __s && errno != ERANGE) -+ __v = __d; -+ else -+ __err |= ios_base::failbit; -+ } -+ -+ template<> -+ void -+ __convert_to_v(const char* __s, long double& __v, ios_base::iostate& __err, -+ const __c_locale& __cloc) -+ { -+ char* __sanity; -+ errno = 0; -+ long double __ld = __strtold_l(__s, &__sanity, __cloc); -+ if (__sanity != __s && errno != ERANGE) -+ __v = __ld; -+ else -+ __err |= ios_base::failbit; -+ } -+ -+ void -+ locale::facet::_S_create_c_locale(__c_locale& __cloc, const char* __s, -+ __c_locale __old) -+ { -+ __cloc = __newlocale(1 << LC_ALL, __s, __old); -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ if (!__cloc) -+ { -+ // This named locale is not supported by the underlying OS. -+ __throw_runtime_error(__N("locale::facet::_S_create_c_locale " -+ "name not valid")); -+ } -+#endif -+ } -+ -+ void -+ locale::facet::_S_destroy_c_locale(__c_locale& __cloc) -+ { -+ if (__cloc && _S_get_c_locale() != __cloc) -+ __freelocale(__cloc); -+ } -+ -+ __c_locale -+ locale::facet::_S_clone_c_locale(__c_locale& __cloc) -+ { return __duplocale(__cloc); } -+} // namespace std -+ -+namespace __gnu_cxx -+{ -+ const char* const category_names[6 + _GLIBCXX_NUM_CATEGORIES] = -+ { -+ "LC_CTYPE", -+ "LC_NUMERIC", -+ "LC_TIME", -+ "LC_COLLATE", -+ "LC_MONETARY", -+ "LC_MESSAGES", -+#if _GLIBCXX_NUM_CATEGORIES != 0 -+ "LC_PAPER", -+ "LC_NAME", -+ "LC_ADDRESS", -+ "LC_TELEPHONE", -+ "LC_MEASUREMENT", -+ "LC_IDENTIFICATION" -+#endif -+ }; -+} -+ -+namespace std -+{ -+ const char* const* const locale::_S_categories = __gnu_cxx::category_names; -+} // namespace std ---- gcc-4.1.0-dist/libstdc++-v3/config/locale/uclibc/c_locale.h -+++ gcc-4.1.0/libstdc++-v3/config/locale/uclibc/c_locale.h -@@ -0,0 +1,117 @@ -+// Wrapper for underlying C-language localization -*- C++ -*- -+ -+// Copyright (C) 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc. -+// -+// This file is part of the GNU ISO C++ Library. This library is free -+// software; you can redistribute it and/or modify it under the -+// terms of the GNU General Public License as published by the -+// Free Software Foundation; either version 2, or (at your option) -+// any later version. -+ -+// This library is distributed in the hope that it will be useful, -+// but WITHOUT ANY WARRANTY; without even the implied warranty of -+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+// GNU General Public License for more details. -+ -+// You should have received a copy of the GNU General Public License along -+// with this library; see the file COPYING. If not, write to the Free -+// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, -+// USA. -+ -+// As a special exception, you may use this file as part of a free software -+// library without restriction. Specifically, if other files instantiate -+// templates or use macros or inline functions from this file, or you compile -+// this file and link it with other files to produce an executable, this -+// file does not by itself cause the resulting executable to be covered by -+// the GNU General Public License. This exception does not however -+// invalidate any other reasons why the executable file might be covered by -+// the GNU General Public License. -+ -+// -+// ISO C++ 14882: 22.8 Standard locale categories. -+// -+ -+// Written by Benjamin Kosnik -+ -+#ifndef _C_LOCALE_H -+#define _C_LOCALE_H 1 -+ -+#pragma GCC system_header -+ -+#include // get std::strlen -+#include // get std::snprintf or std::sprintf -+#include -+#include // For codecvt -+#ifdef __UCLIBC_MJN3_ONLY__ -+#warning fix this -+#endif -+#ifdef __UCLIBC_HAS_LOCALE__ -+#include // For codecvt using iconv, iconv_t -+#endif -+#ifdef __UCLIBC_HAS_GETTEXT_AWARENESS__ -+#include // For messages -+#endif -+ -+#ifdef __UCLIBC_MJN3_ONLY__ -+#warning what is _GLIBCXX_C_LOCALE_GNU for -+#endif -+#define _GLIBCXX_C_LOCALE_GNU 1 -+ -+#ifdef __UCLIBC_MJN3_ONLY__ -+#warning fix categories -+#endif -+// #define _GLIBCXX_NUM_CATEGORIES 6 -+#define _GLIBCXX_NUM_CATEGORIES 0 -+ -+#ifdef __UCLIBC_HAS_XLOCALE__ -+namespace __gnu_cxx -+{ -+ extern "C" __typeof(uselocale) __uselocale; -+} -+#endif -+ -+namespace std -+{ -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ typedef __locale_t __c_locale; -+#else -+ typedef int* __c_locale; -+#endif -+ -+ // Convert numeric value of type _Tv to string and return length of -+ // string. If snprintf is available use it, otherwise fall back to -+ // the unsafe sprintf which, in general, can be dangerous and should -+ // be avoided. -+ template -+ int -+ __convert_from_v(char* __out, -+ const int __size __attribute__ ((__unused__)), -+ const char* __fmt, -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ _Tv __v, const __c_locale& __cloc, int __prec) -+ { -+ __c_locale __old = __gnu_cxx::__uselocale(__cloc); -+#else -+ _Tv __v, const __c_locale&, int __prec) -+ { -+# ifdef __UCLIBC_HAS_LOCALE__ -+ char* __old = std::setlocale(LC_ALL, NULL); -+ char* __sav = new char[std::strlen(__old) + 1]; -+ std::strcpy(__sav, __old); -+ std::setlocale(LC_ALL, "C"); -+# endif -+#endif -+ -+ const int __ret = std::snprintf(__out, __size, __fmt, __prec, __v); -+ -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __gnu_cxx::__uselocale(__old); -+#elif defined __UCLIBC_HAS_LOCALE__ -+ std::setlocale(LC_ALL, __sav); -+ delete [] __sav; -+#endif -+ return __ret; -+ } -+} -+ -+#endif ---- gcc-4.1.0-dist/libstdc++-v3/config/locale/uclibc/codecvt_members.cc -+++ gcc-4.1.0/libstdc++-v3/config/locale/uclibc/codecvt_members.cc -@@ -0,0 +1,306 @@ -+// std::codecvt implementation details, GNU version -*- C++ -*- -+ -+// Copyright (C) 2002, 2003 Free Software Foundation, Inc. -+// -+// This file is part of the GNU ISO C++ Library. This library is free -+// software; you can redistribute it and/or modify it under the -+// terms of the GNU General Public License as published by the -+// Free Software Foundation; either version 2, or (at your option) -+// any later version. -+ -+// This library is distributed in the hope that it will be useful, -+// but WITHOUT ANY WARRANTY; without even the implied warranty of -+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+// GNU General Public License for more details. -+ -+// You should have received a copy of the GNU General Public License along -+// with this library; see the file COPYING. If not, write to the Free -+// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, -+// USA. -+ -+// As a special exception, you may use this file as part of a free software -+// library without restriction. Specifically, if other files instantiate -+// templates or use macros or inline functions from this file, or you compile -+// this file and link it with other files to produce an executable, this -+// file does not by itself cause the resulting executable to be covered by -+// the GNU General Public License. This exception does not however -+// invalidate any other reasons why the executable file might be covered by -+// the GNU General Public License. -+ -+// -+// ISO C++ 14882: 22.2.1.5 - Template class codecvt -+// -+ -+// Written by Benjamin Kosnik -+ -+#include -+#include -+ -+namespace std -+{ -+ // Specializations. -+#ifdef _GLIBCXX_USE_WCHAR_T -+ codecvt_base::result -+ codecvt:: -+ do_out(state_type& __state, const intern_type* __from, -+ const intern_type* __from_end, const intern_type*& __from_next, -+ extern_type* __to, extern_type* __to_end, -+ extern_type*& __to_next) const -+ { -+ result __ret = ok; -+ state_type __tmp_state(__state); -+ -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __c_locale __old = __uselocale(_M_c_locale_codecvt); -+#endif -+ -+ // wcsnrtombs is *very* fast but stops if encounters NUL characters: -+ // in case we fall back to wcrtomb and then continue, in a loop. -+ // NB: wcsnrtombs is a GNU extension -+ for (__from_next = __from, __to_next = __to; -+ __from_next < __from_end && __to_next < __to_end -+ && __ret == ok;) -+ { -+ const intern_type* __from_chunk_end = wmemchr(__from_next, L'\0', -+ __from_end - __from_next); -+ if (!__from_chunk_end) -+ __from_chunk_end = __from_end; -+ -+ __from = __from_next; -+ const size_t __conv = wcsnrtombs(__to_next, &__from_next, -+ __from_chunk_end - __from_next, -+ __to_end - __to_next, &__state); -+ if (__conv == static_cast(-1)) -+ { -+ // In case of error, in order to stop at the exact place we -+ // have to start again from the beginning with a series of -+ // wcrtomb. -+ for (; __from < __from_next; ++__from) -+ __to_next += wcrtomb(__to_next, *__from, &__tmp_state); -+ __state = __tmp_state; -+ __ret = error; -+ } -+ else if (__from_next && __from_next < __from_chunk_end) -+ { -+ __to_next += __conv; -+ __ret = partial; -+ } -+ else -+ { -+ __from_next = __from_chunk_end; -+ __to_next += __conv; -+ } -+ -+ if (__from_next < __from_end && __ret == ok) -+ { -+ extern_type __buf[MB_LEN_MAX]; -+ __tmp_state = __state; -+ const size_t __conv = wcrtomb(__buf, *__from_next, &__tmp_state); -+ if (__conv > static_cast(__to_end - __to_next)) -+ __ret = partial; -+ else -+ { -+ memcpy(__to_next, __buf, __conv); -+ __state = __tmp_state; -+ __to_next += __conv; -+ ++__from_next; -+ } -+ } -+ } -+ -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __uselocale(__old); -+#endif -+ -+ return __ret; -+ } -+ -+ codecvt_base::result -+ codecvt:: -+ do_in(state_type& __state, const extern_type* __from, -+ const extern_type* __from_end, const extern_type*& __from_next, -+ intern_type* __to, intern_type* __to_end, -+ intern_type*& __to_next) const -+ { -+ result __ret = ok; -+ state_type __tmp_state(__state); -+ -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __c_locale __old = __uselocale(_M_c_locale_codecvt); -+#endif -+ -+ // mbsnrtowcs is *very* fast but stops if encounters NUL characters: -+ // in case we store a L'\0' and then continue, in a loop. -+ // NB: mbsnrtowcs is a GNU extension -+ for (__from_next = __from, __to_next = __to; -+ __from_next < __from_end && __to_next < __to_end -+ && __ret == ok;) -+ { -+ const extern_type* __from_chunk_end; -+ __from_chunk_end = static_cast(memchr(__from_next, '\0', -+ __from_end -+ - __from_next)); -+ if (!__from_chunk_end) -+ __from_chunk_end = __from_end; -+ -+ __from = __from_next; -+ size_t __conv = mbsnrtowcs(__to_next, &__from_next, -+ __from_chunk_end - __from_next, -+ __to_end - __to_next, &__state); -+ if (__conv == static_cast(-1)) -+ { -+ // In case of error, in order to stop at the exact place we -+ // have to start again from the beginning with a series of -+ // mbrtowc. -+ for (;; ++__to_next, __from += __conv) -+ { -+ __conv = mbrtowc(__to_next, __from, __from_end - __from, -+ &__tmp_state); -+ if (__conv == static_cast(-1) -+ || __conv == static_cast(-2)) -+ break; -+ } -+ __from_next = __from; -+ __state = __tmp_state; -+ __ret = error; -+ } -+ else if (__from_next && __from_next < __from_chunk_end) -+ { -+ // It is unclear what to return in this case (see DR 382). -+ __to_next += __conv; -+ __ret = partial; -+ } -+ else -+ { -+ __from_next = __from_chunk_end; -+ __to_next += __conv; -+ } -+ -+ if (__from_next < __from_end && __ret == ok) -+ { -+ if (__to_next < __to_end) -+ { -+ // XXX Probably wrong for stateful encodings -+ __tmp_state = __state; -+ ++__from_next; -+ *__to_next++ = L'\0'; -+ } -+ else -+ __ret = partial; -+ } -+ } -+ -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __uselocale(__old); -+#endif -+ -+ return __ret; -+ } -+ -+ int -+ codecvt:: -+ do_encoding() const throw() -+ { -+ // XXX This implementation assumes that the encoding is -+ // stateless and is either single-byte or variable-width. -+ int __ret = 0; -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __c_locale __old = __uselocale(_M_c_locale_codecvt); -+#endif -+ if (MB_CUR_MAX == 1) -+ __ret = 1; -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __uselocale(__old); -+#endif -+ return __ret; -+ } -+ -+ int -+ codecvt:: -+ do_max_length() const throw() -+ { -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __c_locale __old = __uselocale(_M_c_locale_codecvt); -+#endif -+ // XXX Probably wrong for stateful encodings. -+ int __ret = MB_CUR_MAX; -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __uselocale(__old); -+#endif -+ return __ret; -+ } -+ -+ int -+ codecvt:: -+ do_length(state_type& __state, const extern_type* __from, -+ const extern_type* __end, size_t __max) const -+ { -+ int __ret = 0; -+ state_type __tmp_state(__state); -+ -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __c_locale __old = __uselocale(_M_c_locale_codecvt); -+#endif -+ -+ // mbsnrtowcs is *very* fast but stops if encounters NUL characters: -+ // in case we advance past it and then continue, in a loop. -+ // NB: mbsnrtowcs is a GNU extension -+ -+ // A dummy internal buffer is needed in order for mbsnrtocws to consider -+ // its fourth parameter (it wouldn't with NULL as first parameter). -+ wchar_t* __to = static_cast(__builtin_alloca(sizeof(wchar_t) -+ * __max)); -+ while (__from < __end && __max) -+ { -+ const extern_type* __from_chunk_end; -+ __from_chunk_end = static_cast(memchr(__from, '\0', -+ __end -+ - __from)); -+ if (!__from_chunk_end) -+ __from_chunk_end = __end; -+ -+ const extern_type* __tmp_from = __from; -+ size_t __conv = mbsnrtowcs(__to, &__from, -+ __from_chunk_end - __from, -+ __max, &__state); -+ if (__conv == static_cast(-1)) -+ { -+ // In case of error, in order to stop at the exact place we -+ // have to start again from the beginning with a series of -+ // mbrtowc. -+ for (__from = __tmp_from;; __from += __conv) -+ { -+ __conv = mbrtowc(NULL, __from, __end - __from, -+ &__tmp_state); -+ if (__conv == static_cast(-1) -+ || __conv == static_cast(-2)) -+ break; -+ } -+ __state = __tmp_state; -+ __ret += __from - __tmp_from; -+ break; -+ } -+ if (!__from) -+ __from = __from_chunk_end; -+ -+ __ret += __from - __tmp_from; -+ __max -= __conv; -+ -+ if (__from < __end && __max) -+ { -+ // XXX Probably wrong for stateful encodings -+ __tmp_state = __state; -+ ++__from; -+ ++__ret; -+ --__max; -+ } -+ } -+ -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __uselocale(__old); -+#endif -+ -+ return __ret; -+ } -+#endif -+} ---- gcc-4.1.0-dist/libstdc++-v3/config/locale/uclibc/collate_members.cc -+++ gcc-4.1.0/libstdc++-v3/config/locale/uclibc/collate_members.cc -@@ -0,0 +1,80 @@ -+// std::collate implementation details, GNU version -*- C++ -*- -+ -+// Copyright (C) 2001, 2002 Free Software Foundation, Inc. -+// -+// This file is part of the GNU ISO C++ Library. This library is free -+// software; you can redistribute it and/or modify it under the -+// terms of the GNU General Public License as published by the -+// Free Software Foundation; either version 2, or (at your option) -+// any later version. -+ -+// This library is distributed in the hope that it will be useful, -+// but WITHOUT ANY WARRANTY; without even the implied warranty of -+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+// GNU General Public License for more details. -+ -+// You should have received a copy of the GNU General Public License along -+// with this library; see the file COPYING. If not, write to the Free -+// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, -+// USA. -+ -+// As a special exception, you may use this file as part of a free software -+// library without restriction. Specifically, if other files instantiate -+// templates or use macros or inline functions from this file, or you compile -+// this file and link it with other files to produce an executable, this -+// file does not by itself cause the resulting executable to be covered by -+// the GNU General Public License. This exception does not however -+// invalidate any other reasons why the executable file might be covered by -+// the GNU General Public License. -+ -+// -+// ISO C++ 14882: 22.2.4.1.2 collate virtual functions -+// -+ -+// Written by Benjamin Kosnik -+ -+#include -+#include -+ -+#ifndef __UCLIBC_HAS_XLOCALE__ -+#define __strcoll_l(S1, S2, L) strcoll((S1), (S2)) -+#define __strxfrm_l(S1, S2, N, L) strxfrm((S1), (S2), (N)) -+#define __wcscoll_l(S1, S2, L) wcscoll((S1), (S2)) -+#define __wcsxfrm_l(S1, S2, N, L) wcsxfrm((S1), (S2), (N)) -+#endif -+ -+namespace std -+{ -+ // These are basically extensions to char_traits, and perhaps should -+ // be put there instead of here. -+ template<> -+ int -+ collate::_M_compare(const char* __one, const char* __two) const -+ { -+ int __cmp = __strcoll_l(__one, __two, _M_c_locale_collate); -+ return (__cmp >> (8 * sizeof (int) - 2)) | (__cmp != 0); -+ } -+ -+ template<> -+ size_t -+ collate::_M_transform(char* __to, const char* __from, -+ size_t __n) const -+ { return __strxfrm_l(__to, __from, __n, _M_c_locale_collate); } -+ -+#ifdef _GLIBCXX_USE_WCHAR_T -+ template<> -+ int -+ collate::_M_compare(const wchar_t* __one, -+ const wchar_t* __two) const -+ { -+ int __cmp = __wcscoll_l(__one, __two, _M_c_locale_collate); -+ return (__cmp >> (8 * sizeof (int) - 2)) | (__cmp != 0); -+ } -+ -+ template<> -+ size_t -+ collate::_M_transform(wchar_t* __to, const wchar_t* __from, -+ size_t __n) const -+ { return __wcsxfrm_l(__to, __from, __n, _M_c_locale_collate); } -+#endif -+} ---- gcc-4.1.0-dist/libstdc++-v3/config/locale/uclibc/ctype_members.cc -+++ gcc-4.1.0/libstdc++-v3/config/locale/uclibc/ctype_members.cc -@@ -0,0 +1,314 @@ -+// std::ctype implementation details, GNU version -*- C++ -*- -+ -+// Copyright (C) 2001, 2002, 2003, 2004 Free Software Foundation, Inc. -+// -+// This file is part of the GNU ISO C++ Library. This library is free -+// software; you can redistribute it and/or modify it under the -+// terms of the GNU General Public License as published by the -+// Free Software Foundation; either version 2, or (at your option) -+// any later version. -+ -+// This library is distributed in the hope that it will be useful, -+// but WITHOUT ANY WARRANTY; without even the implied warranty of -+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+// GNU General Public License for more details. -+ -+// You should have received a copy of the GNU General Public License along -+// with this library; see the file COPYING. If not, write to the Free -+// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, -+// USA. -+ -+// As a special exception, you may use this file as part of a free software -+// library without restriction. Specifically, if other files instantiate -+// templates or use macros or inline functions from this file, or you compile -+// this file and link it with other files to produce an executable, this -+// file does not by itself cause the resulting executable to be covered by -+// the GNU General Public License. This exception does not however -+// invalidate any other reasons why the executable file might be covered by -+// the GNU General Public License. -+ -+// -+// ISO C++ 14882: 22.2.1.1.2 ctype virtual functions. -+// -+ -+// Written by Benjamin Kosnik -+ -+#define _LIBC -+#include -+#undef _LIBC -+#include -+ -+#ifndef __UCLIBC_HAS_XLOCALE__ -+#define __wctype_l(S, L) wctype((S)) -+#define __towupper_l(C, L) towupper((C)) -+#define __towlower_l(C, L) towlower((C)) -+#define __iswctype_l(C, M, L) iswctype((C), (M)) -+#endif -+ -+namespace std -+{ -+ // NB: The other ctype specializations are in src/locale.cc and -+ // various /config/os/* files. -+ template<> -+ ctype_byname::ctype_byname(const char* __s, size_t __refs) -+ : ctype(0, false, __refs) -+ { -+ if (std::strcmp(__s, "C") != 0 && std::strcmp(__s, "POSIX") != 0) -+ { -+ this->_S_destroy_c_locale(this->_M_c_locale_ctype); -+ this->_S_create_c_locale(this->_M_c_locale_ctype, __s); -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ this->_M_toupper = this->_M_c_locale_ctype->__ctype_toupper; -+ this->_M_tolower = this->_M_c_locale_ctype->__ctype_tolower; -+ this->_M_table = this->_M_c_locale_ctype->__ctype_b; -+#endif -+ } -+ } -+ -+#ifdef _GLIBCXX_USE_WCHAR_T -+ ctype::__wmask_type -+ ctype::_M_convert_to_wmask(const mask __m) const -+ { -+ __wmask_type __ret; -+ switch (__m) -+ { -+ case space: -+ __ret = __wctype_l("space", _M_c_locale_ctype); -+ break; -+ case print: -+ __ret = __wctype_l("print", _M_c_locale_ctype); -+ break; -+ case cntrl: -+ __ret = __wctype_l("cntrl", _M_c_locale_ctype); -+ break; -+ case upper: -+ __ret = __wctype_l("upper", _M_c_locale_ctype); -+ break; -+ case lower: -+ __ret = __wctype_l("lower", _M_c_locale_ctype); -+ break; -+ case alpha: -+ __ret = __wctype_l("alpha", _M_c_locale_ctype); -+ break; -+ case digit: -+ __ret = __wctype_l("digit", _M_c_locale_ctype); -+ break; -+ case punct: -+ __ret = __wctype_l("punct", _M_c_locale_ctype); -+ break; -+ case xdigit: -+ __ret = __wctype_l("xdigit", _M_c_locale_ctype); -+ break; -+ case alnum: -+ __ret = __wctype_l("alnum", _M_c_locale_ctype); -+ break; -+ case graph: -+ __ret = __wctype_l("graph", _M_c_locale_ctype); -+ break; -+ default: -+ __ret = __wmask_type(); -+ } -+ return __ret; -+ } -+ -+ wchar_t -+ ctype::do_toupper(wchar_t __c) const -+ { return __towupper_l(__c, _M_c_locale_ctype); } -+ -+ const wchar_t* -+ ctype::do_toupper(wchar_t* __lo, const wchar_t* __hi) const -+ { -+ while (__lo < __hi) -+ { -+ *__lo = __towupper_l(*__lo, _M_c_locale_ctype); -+ ++__lo; -+ } -+ return __hi; -+ } -+ -+ wchar_t -+ ctype::do_tolower(wchar_t __c) const -+ { return __towlower_l(__c, _M_c_locale_ctype); } -+ -+ const wchar_t* -+ ctype::do_tolower(wchar_t* __lo, const wchar_t* __hi) const -+ { -+ while (__lo < __hi) -+ { -+ *__lo = __towlower_l(*__lo, _M_c_locale_ctype); -+ ++__lo; -+ } -+ return __hi; -+ } -+ -+ bool -+ ctype:: -+ do_is(mask __m, wchar_t __c) const -+ { -+ // The case of __m == ctype_base::space is particularly important, -+ // due to its use in many istream functions. Therefore we deal with -+ // it first, exploiting the knowledge that on GNU systems _M_bit[5] -+ // is the mask corresponding to ctype_base::space. NB: an encoding -+ // change would not affect correctness! -+ bool __ret = false; -+ if (__m == _M_bit[5]) -+ __ret = __iswctype_l(__c, _M_wmask[5], _M_c_locale_ctype); -+ else -+ { -+ // Highest bitmask in ctype_base == 10, but extra in "C" -+ // library for blank. -+ const size_t __bitmasksize = 11; -+ for (size_t __bitcur = 0; __bitcur <= __bitmasksize; ++__bitcur) -+ if (__m & _M_bit[__bitcur]) -+ { -+ if (__iswctype_l(__c, _M_wmask[__bitcur], _M_c_locale_ctype)) -+ { -+ __ret = true; -+ break; -+ } -+ else if (__m == _M_bit[__bitcur]) -+ break; -+ } -+ } -+ return __ret; -+ } -+ -+ const wchar_t* -+ ctype:: -+ do_is(const wchar_t* __lo, const wchar_t* __hi, mask* __vec) const -+ { -+ for (; __lo < __hi; ++__vec, ++__lo) -+ { -+ // Highest bitmask in ctype_base == 10, but extra in "C" -+ // library for blank. -+ const size_t __bitmasksize = 11; -+ mask __m = 0; -+ for (size_t __bitcur = 0; __bitcur <= __bitmasksize; ++__bitcur) -+ if (__iswctype_l(*__lo, _M_wmask[__bitcur], _M_c_locale_ctype)) -+ __m |= _M_bit[__bitcur]; -+ *__vec = __m; -+ } -+ return __hi; -+ } -+ -+ const wchar_t* -+ ctype:: -+ do_scan_is(mask __m, const wchar_t* __lo, const wchar_t* __hi) const -+ { -+ while (__lo < __hi && !this->do_is(__m, *__lo)) -+ ++__lo; -+ return __lo; -+ } -+ -+ const wchar_t* -+ ctype:: -+ do_scan_not(mask __m, const char_type* __lo, const char_type* __hi) const -+ { -+ while (__lo < __hi && this->do_is(__m, *__lo) != 0) -+ ++__lo; -+ return __lo; -+ } -+ -+ wchar_t -+ ctype:: -+ do_widen(char __c) const -+ { return _M_widen[static_cast(__c)]; } -+ -+ const char* -+ ctype:: -+ do_widen(const char* __lo, const char* __hi, wchar_t* __dest) const -+ { -+ while (__lo < __hi) -+ { -+ *__dest = _M_widen[static_cast(*__lo)]; -+ ++__lo; -+ ++__dest; -+ } -+ return __hi; -+ } -+ -+ char -+ ctype:: -+ do_narrow(wchar_t __wc, char __dfault) const -+ { -+ if (__wc >= 0 && __wc < 128 && _M_narrow_ok) -+ return _M_narrow[__wc]; -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __c_locale __old = __uselocale(_M_c_locale_ctype); -+#endif -+ const int __c = wctob(__wc); -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __uselocale(__old); -+#endif -+ return (__c == EOF ? __dfault : static_cast(__c)); -+ } -+ -+ const wchar_t* -+ ctype:: -+ do_narrow(const wchar_t* __lo, const wchar_t* __hi, char __dfault, -+ char* __dest) const -+ { -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __c_locale __old = __uselocale(_M_c_locale_ctype); -+#endif -+ if (_M_narrow_ok) -+ while (__lo < __hi) -+ { -+ if (*__lo >= 0 && *__lo < 128) -+ *__dest = _M_narrow[*__lo]; -+ else -+ { -+ const int __c = wctob(*__lo); -+ *__dest = (__c == EOF ? __dfault : static_cast(__c)); -+ } -+ ++__lo; -+ ++__dest; -+ } -+ else -+ while (__lo < __hi) -+ { -+ const int __c = wctob(*__lo); -+ *__dest = (__c == EOF ? __dfault : static_cast(__c)); -+ ++__lo; -+ ++__dest; -+ } -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __uselocale(__old); -+#endif -+ return __hi; -+ } -+ -+ void -+ ctype::_M_initialize_ctype() -+ { -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __c_locale __old = __uselocale(_M_c_locale_ctype); -+#endif -+ wint_t __i; -+ for (__i = 0; __i < 128; ++__i) -+ { -+ const int __c = wctob(__i); -+ if (__c == EOF) -+ break; -+ else -+ _M_narrow[__i] = static_cast(__c); -+ } -+ if (__i == 128) -+ _M_narrow_ok = true; -+ else -+ _M_narrow_ok = false; -+ for (size_t __j = 0; -+ __j < sizeof(_M_widen) / sizeof(wint_t); ++__j) -+ _M_widen[__j] = btowc(__j); -+ -+ for (size_t __k = 0; __k <= 11; ++__k) -+ { -+ _M_bit[__k] = static_cast(_ISbit(__k)); -+ _M_wmask[__k] = _M_convert_to_wmask(_M_bit[__k]); -+ } -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __uselocale(__old); -+#endif -+ } -+#endif // _GLIBCXX_USE_WCHAR_T -+} ---- gcc-4.1.0-dist/libstdc++-v3/config/locale/uclibc/messages_members.cc -+++ gcc-4.1.0/libstdc++-v3/config/locale/uclibc/messages_members.cc -@@ -0,0 +1,100 @@ -+// std::messages implementation details, GNU version -*- C++ -*- -+ -+// Copyright (C) 2001, 2002 Free Software Foundation, Inc. -+// -+// This file is part of the GNU ISO C++ Library. This library is free -+// software; you can redistribute it and/or modify it under the -+// terms of the GNU General Public License as published by the -+// Free Software Foundation; either version 2, or (at your option) -+// any later version. -+ -+// This library is distributed in the hope that it will be useful, -+// but WITHOUT ANY WARRANTY; without even the implied warranty of -+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+// GNU General Public License for more details. -+ -+// You should have received a copy of the GNU General Public License along -+// with this library; see the file COPYING. If not, write to the Free -+// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, -+// USA. -+ -+// As a special exception, you may use this file as part of a free software -+// library without restriction. Specifically, if other files instantiate -+// templates or use macros or inline functions from this file, or you compile -+// this file and link it with other files to produce an executable, this -+// file does not by itself cause the resulting executable to be covered by -+// the GNU General Public License. This exception does not however -+// invalidate any other reasons why the executable file might be covered by -+// the GNU General Public License. -+ -+// -+// ISO C++ 14882: 22.2.7.1.2 messages virtual functions -+// -+ -+// Written by Benjamin Kosnik -+ -+#include -+#include -+ -+#ifdef __UCLIBC_MJN3_ONLY__ -+#warning fix gettext stuff -+#endif -+#ifdef __UCLIBC_HAS_GETTEXT_AWARENESS__ -+extern "C" char *__dcgettext(const char *domainname, -+ const char *msgid, int category); -+#undef gettext -+#define gettext(msgid) __dcgettext(NULL, msgid, LC_MESSAGES) -+#else -+#undef gettext -+#define gettext(msgid) (msgid) -+#endif -+ -+namespace std -+{ -+ // Specializations. -+ template<> -+ string -+ messages::do_get(catalog, int, int, const string& __dfault) const -+ { -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __c_locale __old = __uselocale(_M_c_locale_messages); -+ const char* __msg = const_cast(gettext(__dfault.c_str())); -+ __uselocale(__old); -+ return string(__msg); -+#elif defined __UCLIBC_HAS_LOCALE__ -+ char* __old = strdup(setlocale(LC_ALL, NULL)); -+ setlocale(LC_ALL, _M_name_messages); -+ const char* __msg = gettext(__dfault.c_str()); -+ setlocale(LC_ALL, __old); -+ free(__old); -+ return string(__msg); -+#else -+ const char* __msg = gettext(__dfault.c_str()); -+ return string(__msg); -+#endif -+ } -+ -+#ifdef _GLIBCXX_USE_WCHAR_T -+ template<> -+ wstring -+ messages::do_get(catalog, int, int, const wstring& __dfault) const -+ { -+# ifdef __UCLIBC_HAS_XLOCALE__ -+ __c_locale __old = __uselocale(_M_c_locale_messages); -+ char* __msg = gettext(_M_convert_to_char(__dfault)); -+ __uselocale(__old); -+ return _M_convert_from_char(__msg); -+# elif defined __UCLIBC_HAS_LOCALE__ -+ char* __old = strdup(setlocale(LC_ALL, NULL)); -+ setlocale(LC_ALL, _M_name_messages); -+ char* __msg = gettext(_M_convert_to_char(__dfault)); -+ setlocale(LC_ALL, __old); -+ free(__old); -+ return _M_convert_from_char(__msg); -+# else -+ char* __msg = gettext(_M_convert_to_char(__dfault)); -+ return _M_convert_from_char(__msg); -+# endif -+ } -+#endif -+} ---- gcc-4.1.0-dist/libstdc++-v3/config/locale/uclibc/messages_members.h -+++ gcc-4.1.0/libstdc++-v3/config/locale/uclibc/messages_members.h -@@ -0,0 +1,121 @@ -+// std::messages implementation details, GNU version -*- C++ -*- -+ -+// Copyright (C) 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc. -+// -+// This file is part of the GNU ISO C++ Library. This library is free -+// software; you can redistribute it and/or modify it under the -+// terms of the GNU General Public License as published by the -+// Free Software Foundation; either version 2, or (at your option) -+// any later version. -+ -+// This library is distributed in the hope that it will be useful, -+// but WITHOUT ANY WARRANTY; without even the implied warranty of -+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+// GNU General Public License for more details. -+ -+// You should have received a copy of the GNU General Public License along -+// with this library; see the file COPYING. If not, write to the Free -+// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, -+// USA. -+ -+// As a special exception, you may use this file as part of a free software -+// library without restriction. Specifically, if other files instantiate -+// templates or use macros or inline functions from this file, or you compile -+// this file and link it with other files to produce an executable, this -+// file does not by itself cause the resulting executable to be covered by -+// the GNU General Public License. This exception does not however -+// invalidate any other reasons why the executable file might be covered by -+// the GNU General Public License. -+ -+// -+// ISO C++ 14882: 22.2.7.1.2 messages functions -+// -+ -+// Written by Benjamin Kosnik -+ -+#ifdef __UCLIBC_MJN3_ONLY__ -+#warning fix prototypes for *textdomain funcs -+#endif -+#ifdef __UCLIBC_HAS_GETTEXT_AWARENESS__ -+extern "C" char *__textdomain(const char *domainname); -+extern "C" char *__bindtextdomain(const char *domainname, -+ const char *dirname); -+#else -+#undef __textdomain -+#undef __bindtextdomain -+#define __textdomain(D) ((void)0) -+#define __bindtextdomain(D,P) ((void)0) -+#endif -+ -+ // Non-virtual member functions. -+ template -+ messages<_CharT>::messages(size_t __refs) -+ : facet(__refs), _M_c_locale_messages(_S_get_c_locale()), -+ _M_name_messages(_S_get_c_name()) -+ { } -+ -+ template -+ messages<_CharT>::messages(__c_locale __cloc, const char* __s, -+ size_t __refs) -+ : facet(__refs), _M_c_locale_messages(NULL), _M_name_messages(NULL) -+ { -+ const size_t __len = std::strlen(__s) + 1; -+ char* __tmp = new char[__len]; -+ std::memcpy(__tmp, __s, __len); -+ _M_name_messages = __tmp; -+ -+ // Last to avoid leaking memory if new throws. -+ _M_c_locale_messages = _S_clone_c_locale(__cloc); -+ } -+ -+ template -+ typename messages<_CharT>::catalog -+ messages<_CharT>::open(const basic_string& __s, const locale& __loc, -+ const char* __dir) const -+ { -+ __bindtextdomain(__s.c_str(), __dir); -+ return this->do_open(__s, __loc); -+ } -+ -+ // Virtual member functions. -+ template -+ messages<_CharT>::~messages() -+ { -+ if (_M_name_messages != _S_get_c_name()) -+ delete [] _M_name_messages; -+ _S_destroy_c_locale(_M_c_locale_messages); -+ } -+ -+ template -+ typename messages<_CharT>::catalog -+ messages<_CharT>::do_open(const basic_string& __s, -+ const locale&) const -+ { -+ // No error checking is done, assume the catalog exists and can -+ // be used. -+ __textdomain(__s.c_str()); -+ return 0; -+ } -+ -+ template -+ void -+ messages<_CharT>::do_close(catalog) const -+ { } -+ -+ // messages_byname -+ template -+ messages_byname<_CharT>::messages_byname(const char* __s, size_t __refs) -+ : messages<_CharT>(__refs) -+ { -+ if (this->_M_name_messages != locale::facet::_S_get_c_name()) -+ delete [] this->_M_name_messages; -+ char* __tmp = new char[std::strlen(__s) + 1]; -+ std::strcpy(__tmp, __s); -+ this->_M_name_messages = __tmp; -+ -+ if (std::strcmp(__s, "C") != 0 && std::strcmp(__s, "POSIX") != 0) -+ { -+ this->_S_destroy_c_locale(this->_M_c_locale_messages); -+ this->_S_create_c_locale(this->_M_c_locale_messages, __s); -+ } -+ } ---- gcc-4.1.0-dist/libstdc++-v3/config/locale/uclibc/monetary_members.cc -+++ gcc-4.1.0/libstdc++-v3/config/locale/uclibc/monetary_members.cc -@@ -0,0 +1,692 @@ -+// std::moneypunct implementation details, GNU version -*- C++ -*- -+ -+// Copyright (C) 2001, 2002, 2003, 2004 Free Software Foundation, Inc. -+// -+// This file is part of the GNU ISO C++ Library. This library is free -+// software; you can redistribute it and/or modify it under the -+// terms of the GNU General Public License as published by the -+// Free Software Foundation; either version 2, or (at your option) -+// any later version. -+ -+// This library is distributed in the hope that it will be useful, -+// but WITHOUT ANY WARRANTY; without even the implied warranty of -+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+// GNU General Public License for more details. -+ -+// You should have received a copy of the GNU General Public License along -+// with this library; see the file COPYING. If not, write to the Free -+// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, -+// USA. -+ -+// As a special exception, you may use this file as part of a free software -+// library without restriction. Specifically, if other files instantiate -+// templates or use macros or inline functions from this file, or you compile -+// this file and link it with other files to produce an executable, this -+// file does not by itself cause the resulting executable to be covered by -+// the GNU General Public License. This exception does not however -+// invalidate any other reasons why the executable file might be covered by -+// the GNU General Public License. -+ -+// -+// ISO C++ 14882: 22.2.6.3.2 moneypunct virtual functions -+// -+ -+// Written by Benjamin Kosnik -+ -+#define _LIBC -+#include -+#undef _LIBC -+#include -+ -+#ifdef __UCLIBC_MJN3_ONLY__ -+#warning optimize this for uclibc -+#warning tailor for stub locale support -+#endif -+ -+#ifndef __UCLIBC_HAS_XLOCALE__ -+#define __nl_langinfo_l(N, L) nl_langinfo((N)) -+#endif -+ -+namespace std -+{ -+ // Construct and return valid pattern consisting of some combination of: -+ // space none symbol sign value -+ money_base::pattern -+ money_base::_S_construct_pattern(char __precedes, char __space, char __posn) -+ { -+ pattern __ret; -+ -+ // This insanely complicated routine attempts to construct a valid -+ // pattern for use with monyepunct. A couple of invariants: -+ -+ // if (__precedes) symbol -> value -+ // else value -> symbol -+ -+ // if (__space) space -+ // else none -+ -+ // none == never first -+ // space never first or last -+ -+ // Any elegant implementations of this are welcome. -+ switch (__posn) -+ { -+ case 0: -+ case 1: -+ // 1 The sign precedes the value and symbol. -+ __ret.field[0] = sign; -+ if (__space) -+ { -+ // Pattern starts with sign. -+ if (__precedes) -+ { -+ __ret.field[1] = symbol; -+ __ret.field[3] = value; -+ } -+ else -+ { -+ __ret.field[1] = value; -+ __ret.field[3] = symbol; -+ } -+ __ret.field[2] = space; -+ } -+ else -+ { -+ // Pattern starts with sign and ends with none. -+ if (__precedes) -+ { -+ __ret.field[1] = symbol; -+ __ret.field[2] = value; -+ } -+ else -+ { -+ __ret.field[1] = value; -+ __ret.field[2] = symbol; -+ } -+ __ret.field[3] = none; -+ } -+ break; -+ case 2: -+ // 2 The sign follows the value and symbol. -+ if (__space) -+ { -+ // Pattern either ends with sign. -+ if (__precedes) -+ { -+ __ret.field[0] = symbol; -+ __ret.field[2] = value; -+ } -+ else -+ { -+ __ret.field[0] = value; -+ __ret.field[2] = symbol; -+ } -+ __ret.field[1] = space; -+ __ret.field[3] = sign; -+ } -+ else -+ { -+ // Pattern ends with sign then none. -+ if (__precedes) -+ { -+ __ret.field[0] = symbol; -+ __ret.field[1] = value; -+ } -+ else -+ { -+ __ret.field[0] = value; -+ __ret.field[1] = symbol; -+ } -+ __ret.field[2] = sign; -+ __ret.field[3] = none; -+ } -+ break; -+ case 3: -+ // 3 The sign immediately precedes the symbol. -+ if (__precedes) -+ { -+ __ret.field[0] = sign; -+ __ret.field[1] = symbol; -+ if (__space) -+ { -+ __ret.field[2] = space; -+ __ret.field[3] = value; -+ } -+ else -+ { -+ __ret.field[2] = value; -+ __ret.field[3] = none; -+ } -+ } -+ else -+ { -+ __ret.field[0] = value; -+ if (__space) -+ { -+ __ret.field[1] = space; -+ __ret.field[2] = sign; -+ __ret.field[3] = symbol; -+ } -+ else -+ { -+ __ret.field[1] = sign; -+ __ret.field[2] = symbol; -+ __ret.field[3] = none; -+ } -+ } -+ break; -+ case 4: -+ // 4 The sign immediately follows the symbol. -+ if (__precedes) -+ { -+ __ret.field[0] = symbol; -+ __ret.field[1] = sign; -+ if (__space) -+ { -+ __ret.field[2] = space; -+ __ret.field[3] = value; -+ } -+ else -+ { -+ __ret.field[2] = value; -+ __ret.field[3] = none; -+ } -+ } -+ else -+ { -+ __ret.field[0] = value; -+ if (__space) -+ { -+ __ret.field[1] = space; -+ __ret.field[2] = symbol; -+ __ret.field[3] = sign; -+ } -+ else -+ { -+ __ret.field[1] = symbol; -+ __ret.field[2] = sign; -+ __ret.field[3] = none; -+ } -+ } -+ break; -+ default: -+ __ret = pattern(); -+ } -+ return __ret; -+ } -+ -+ template<> -+ void -+ moneypunct::_M_initialize_moneypunct(__c_locale __cloc, -+ const char*) -+ { -+ if (!_M_data) -+ _M_data = new __moneypunct_cache; -+ -+ if (!__cloc) -+ { -+ // "C" locale -+ _M_data->_M_decimal_point = '.'; -+ _M_data->_M_thousands_sep = ','; -+ _M_data->_M_grouping = ""; -+ _M_data->_M_grouping_size = 0; -+ _M_data->_M_curr_symbol = ""; -+ _M_data->_M_curr_symbol_size = 0; -+ _M_data->_M_positive_sign = ""; -+ _M_data->_M_positive_sign_size = 0; -+ _M_data->_M_negative_sign = ""; -+ _M_data->_M_negative_sign_size = 0; -+ _M_data->_M_frac_digits = 0; -+ _M_data->_M_pos_format = money_base::_S_default_pattern; -+ _M_data->_M_neg_format = money_base::_S_default_pattern; -+ -+ for (size_t __i = 0; __i < money_base::_S_end; ++__i) -+ _M_data->_M_atoms[__i] = money_base::_S_atoms[__i]; -+ } -+ else -+ { -+ // Named locale. -+ _M_data->_M_decimal_point = *(__nl_langinfo_l(__MON_DECIMAL_POINT, -+ __cloc)); -+ _M_data->_M_thousands_sep = *(__nl_langinfo_l(__MON_THOUSANDS_SEP, -+ __cloc)); -+ _M_data->_M_grouping = __nl_langinfo_l(__MON_GROUPING, __cloc); -+ _M_data->_M_grouping_size = strlen(_M_data->_M_grouping); -+ _M_data->_M_positive_sign = __nl_langinfo_l(__POSITIVE_SIGN, __cloc); -+ _M_data->_M_positive_sign_size = strlen(_M_data->_M_positive_sign); -+ -+ char __nposn = *(__nl_langinfo_l(__INT_N_SIGN_POSN, __cloc)); -+ if (!__nposn) -+ _M_data->_M_negative_sign = "()"; -+ else -+ _M_data->_M_negative_sign = __nl_langinfo_l(__NEGATIVE_SIGN, -+ __cloc); -+ _M_data->_M_negative_sign_size = strlen(_M_data->_M_negative_sign); -+ -+ // _Intl == true -+ _M_data->_M_curr_symbol = __nl_langinfo_l(__INT_CURR_SYMBOL, __cloc); -+ _M_data->_M_curr_symbol_size = strlen(_M_data->_M_curr_symbol); -+ _M_data->_M_frac_digits = *(__nl_langinfo_l(__INT_FRAC_DIGITS, -+ __cloc)); -+ char __pprecedes = *(__nl_langinfo_l(__INT_P_CS_PRECEDES, __cloc)); -+ char __pspace = *(__nl_langinfo_l(__INT_P_SEP_BY_SPACE, __cloc)); -+ char __pposn = *(__nl_langinfo_l(__INT_P_SIGN_POSN, __cloc)); -+ _M_data->_M_pos_format = _S_construct_pattern(__pprecedes, __pspace, -+ __pposn); -+ char __nprecedes = *(__nl_langinfo_l(__INT_N_CS_PRECEDES, __cloc)); -+ char __nspace = *(__nl_langinfo_l(__INT_N_SEP_BY_SPACE, __cloc)); -+ _M_data->_M_neg_format = _S_construct_pattern(__nprecedes, __nspace, -+ __nposn); -+ } -+ } -+ -+ template<> -+ void -+ moneypunct::_M_initialize_moneypunct(__c_locale __cloc, -+ const char*) -+ { -+ if (!_M_data) -+ _M_data = new __moneypunct_cache; -+ -+ if (!__cloc) -+ { -+ // "C" locale -+ _M_data->_M_decimal_point = '.'; -+ _M_data->_M_thousands_sep = ','; -+ _M_data->_M_grouping = ""; -+ _M_data->_M_grouping_size = 0; -+ _M_data->_M_curr_symbol = ""; -+ _M_data->_M_curr_symbol_size = 0; -+ _M_data->_M_positive_sign = ""; -+ _M_data->_M_positive_sign_size = 0; -+ _M_data->_M_negative_sign = ""; -+ _M_data->_M_negative_sign_size = 0; -+ _M_data->_M_frac_digits = 0; -+ _M_data->_M_pos_format = money_base::_S_default_pattern; -+ _M_data->_M_neg_format = money_base::_S_default_pattern; -+ -+ for (size_t __i = 0; __i < money_base::_S_end; ++__i) -+ _M_data->_M_atoms[__i] = money_base::_S_atoms[__i]; -+ } -+ else -+ { -+ // Named locale. -+ _M_data->_M_decimal_point = *(__nl_langinfo_l(__MON_DECIMAL_POINT, -+ __cloc)); -+ _M_data->_M_thousands_sep = *(__nl_langinfo_l(__MON_THOUSANDS_SEP, -+ __cloc)); -+ _M_data->_M_grouping = __nl_langinfo_l(__MON_GROUPING, __cloc); -+ _M_data->_M_grouping_size = strlen(_M_data->_M_grouping); -+ _M_data->_M_positive_sign = __nl_langinfo_l(__POSITIVE_SIGN, __cloc); -+ _M_data->_M_positive_sign_size = strlen(_M_data->_M_positive_sign); -+ -+ char __nposn = *(__nl_langinfo_l(__N_SIGN_POSN, __cloc)); -+ if (!__nposn) -+ _M_data->_M_negative_sign = "()"; -+ else -+ _M_data->_M_negative_sign = __nl_langinfo_l(__NEGATIVE_SIGN, -+ __cloc); -+ _M_data->_M_negative_sign_size = strlen(_M_data->_M_negative_sign); -+ -+ // _Intl == false -+ _M_data->_M_curr_symbol = __nl_langinfo_l(__CURRENCY_SYMBOL, __cloc); -+ _M_data->_M_curr_symbol_size = strlen(_M_data->_M_curr_symbol); -+ _M_data->_M_frac_digits = *(__nl_langinfo_l(__FRAC_DIGITS, __cloc)); -+ char __pprecedes = *(__nl_langinfo_l(__P_CS_PRECEDES, __cloc)); -+ char __pspace = *(__nl_langinfo_l(__P_SEP_BY_SPACE, __cloc)); -+ char __pposn = *(__nl_langinfo_l(__P_SIGN_POSN, __cloc)); -+ _M_data->_M_pos_format = _S_construct_pattern(__pprecedes, __pspace, -+ __pposn); -+ char __nprecedes = *(__nl_langinfo_l(__N_CS_PRECEDES, __cloc)); -+ char __nspace = *(__nl_langinfo_l(__N_SEP_BY_SPACE, __cloc)); -+ _M_data->_M_neg_format = _S_construct_pattern(__nprecedes, __nspace, -+ __nposn); -+ } -+ } -+ -+ template<> -+ moneypunct::~moneypunct() -+ { delete _M_data; } -+ -+ template<> -+ moneypunct::~moneypunct() -+ { delete _M_data; } -+ -+#ifdef _GLIBCXX_USE_WCHAR_T -+ template<> -+ void -+ moneypunct::_M_initialize_moneypunct(__c_locale __cloc, -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ const char*) -+#else -+ const char* __name) -+#endif -+ { -+ if (!_M_data) -+ _M_data = new __moneypunct_cache; -+ -+ if (!__cloc) -+ { -+ // "C" locale -+ _M_data->_M_decimal_point = L'.'; -+ _M_data->_M_thousands_sep = L','; -+ _M_data->_M_grouping = ""; -+ _M_data->_M_grouping_size = 0; -+ _M_data->_M_curr_symbol = L""; -+ _M_data->_M_curr_symbol_size = 0; -+ _M_data->_M_positive_sign = L""; -+ _M_data->_M_positive_sign_size = 0; -+ _M_data->_M_negative_sign = L""; -+ _M_data->_M_negative_sign_size = 0; -+ _M_data->_M_frac_digits = 0; -+ _M_data->_M_pos_format = money_base::_S_default_pattern; -+ _M_data->_M_neg_format = money_base::_S_default_pattern; -+ -+ // Use ctype::widen code without the facet... -+ for (size_t __i = 0; __i < money_base::_S_end; ++__i) -+ _M_data->_M_atoms[__i] = -+ static_cast(money_base::_S_atoms[__i]); -+ } -+ else -+ { -+ // Named locale. -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __c_locale __old = __uselocale(__cloc); -+#else -+ // Switch to named locale so that mbsrtowcs will work. -+ char* __old = strdup(setlocale(LC_ALL, NULL)); -+ setlocale(LC_ALL, __name); -+#endif -+ -+#ifdef __UCLIBC_MJN3_ONLY__ -+#warning fix this... should be monetary -+#endif -+#ifdef __UCLIBC__ -+# ifdef __UCLIBC_HAS_XLOCALE__ -+ _M_data->_M_decimal_point = __cloc->decimal_point_wc; -+ _M_data->_M_thousands_sep = __cloc->thousands_sep_wc; -+# elif defined __UCLIBC_HAS_LOCALE__ -+ _M_data->_M_decimal_point = __global_locale->decimal_point_wc; -+ _M_data->_M_thousands_sep = __global_locale->thousands_sep_wc; -+# endif -+#else -+ union { char *__s; wchar_t __w; } __u; -+ __u.__s = __nl_langinfo_l(_NL_MONETARY_DECIMAL_POINT_WC, __cloc); -+ _M_data->_M_decimal_point = __u.__w; -+ -+ __u.__s = __nl_langinfo_l(_NL_MONETARY_THOUSANDS_SEP_WC, __cloc); -+ _M_data->_M_thousands_sep = __u.__w; -+#endif -+ _M_data->_M_grouping = __nl_langinfo_l(__MON_GROUPING, __cloc); -+ _M_data->_M_grouping_size = strlen(_M_data->_M_grouping); -+ -+ const char* __cpossign = __nl_langinfo_l(__POSITIVE_SIGN, __cloc); -+ const char* __cnegsign = __nl_langinfo_l(__NEGATIVE_SIGN, __cloc); -+ const char* __ccurr = __nl_langinfo_l(__INT_CURR_SYMBOL, __cloc); -+ -+ wchar_t* __wcs_ps = 0; -+ wchar_t* __wcs_ns = 0; -+ const char __nposn = *(__nl_langinfo_l(__INT_N_SIGN_POSN, __cloc)); -+ try -+ { -+ mbstate_t __state; -+ size_t __len = strlen(__cpossign); -+ if (__len) -+ { -+ ++__len; -+ memset(&__state, 0, sizeof(mbstate_t)); -+ __wcs_ps = new wchar_t[__len]; -+ mbsrtowcs(__wcs_ps, &__cpossign, __len, &__state); -+ _M_data->_M_positive_sign = __wcs_ps; -+ } -+ else -+ _M_data->_M_positive_sign = L""; -+ _M_data->_M_positive_sign_size = wcslen(_M_data->_M_positive_sign); -+ -+ __len = strlen(__cnegsign); -+ if (!__nposn) -+ _M_data->_M_negative_sign = L"()"; -+ else if (__len) -+ { -+ ++__len; -+ memset(&__state, 0, sizeof(mbstate_t)); -+ __wcs_ns = new wchar_t[__len]; -+ mbsrtowcs(__wcs_ns, &__cnegsign, __len, &__state); -+ _M_data->_M_negative_sign = __wcs_ns; -+ } -+ else -+ _M_data->_M_negative_sign = L""; -+ _M_data->_M_negative_sign_size = wcslen(_M_data->_M_negative_sign); -+ -+ // _Intl == true. -+ __len = strlen(__ccurr); -+ if (__len) -+ { -+ ++__len; -+ memset(&__state, 0, sizeof(mbstate_t)); -+ wchar_t* __wcs = new wchar_t[__len]; -+ mbsrtowcs(__wcs, &__ccurr, __len, &__state); -+ _M_data->_M_curr_symbol = __wcs; -+ } -+ else -+ _M_data->_M_curr_symbol = L""; -+ _M_data->_M_curr_symbol_size = wcslen(_M_data->_M_curr_symbol); -+ } -+ catch (...) -+ { -+ delete _M_data; -+ _M_data = 0; -+ delete __wcs_ps; -+ delete __wcs_ns; -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __uselocale(__old); -+#else -+ setlocale(LC_ALL, __old); -+ free(__old); -+#endif -+ __throw_exception_again; -+ } -+ -+ _M_data->_M_frac_digits = *(__nl_langinfo_l(__INT_FRAC_DIGITS, -+ __cloc)); -+ char __pprecedes = *(__nl_langinfo_l(__INT_P_CS_PRECEDES, __cloc)); -+ char __pspace = *(__nl_langinfo_l(__INT_P_SEP_BY_SPACE, __cloc)); -+ char __pposn = *(__nl_langinfo_l(__INT_P_SIGN_POSN, __cloc)); -+ _M_data->_M_pos_format = _S_construct_pattern(__pprecedes, __pspace, -+ __pposn); -+ char __nprecedes = *(__nl_langinfo_l(__INT_N_CS_PRECEDES, __cloc)); -+ char __nspace = *(__nl_langinfo_l(__INT_N_SEP_BY_SPACE, __cloc)); -+ _M_data->_M_neg_format = _S_construct_pattern(__nprecedes, __nspace, -+ __nposn); -+ -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __uselocale(__old); -+#else -+ setlocale(LC_ALL, __old); -+ free(__old); -+#endif -+ } -+ } -+ -+ template<> -+ void -+ moneypunct::_M_initialize_moneypunct(__c_locale __cloc, -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ const char*) -+#else -+ const char* __name) -+#endif -+ { -+ if (!_M_data) -+ _M_data = new __moneypunct_cache; -+ -+ if (!__cloc) -+ { -+ // "C" locale -+ _M_data->_M_decimal_point = L'.'; -+ _M_data->_M_thousands_sep = L','; -+ _M_data->_M_grouping = ""; -+ _M_data->_M_grouping_size = 0; -+ _M_data->_M_curr_symbol = L""; -+ _M_data->_M_curr_symbol_size = 0; -+ _M_data->_M_positive_sign = L""; -+ _M_data->_M_positive_sign_size = 0; -+ _M_data->_M_negative_sign = L""; -+ _M_data->_M_negative_sign_size = 0; -+ _M_data->_M_frac_digits = 0; -+ _M_data->_M_pos_format = money_base::_S_default_pattern; -+ _M_data->_M_neg_format = money_base::_S_default_pattern; -+ -+ // Use ctype::widen code without the facet... -+ for (size_t __i = 0; __i < money_base::_S_end; ++__i) -+ _M_data->_M_atoms[__i] = -+ static_cast(money_base::_S_atoms[__i]); -+ } -+ else -+ { -+ // Named locale. -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __c_locale __old = __uselocale(__cloc); -+#else -+ // Switch to named locale so that mbsrtowcs will work. -+ char* __old = strdup(setlocale(LC_ALL, NULL)); -+ setlocale(LC_ALL, __name); -+#endif -+ -+#ifdef __UCLIBC_MJN3_ONLY__ -+#warning fix this... should be monetary -+#endif -+#ifdef __UCLIBC__ -+# ifdef __UCLIBC_HAS_XLOCALE__ -+ _M_data->_M_decimal_point = __cloc->decimal_point_wc; -+ _M_data->_M_thousands_sep = __cloc->thousands_sep_wc; -+# elif defined __UCLIBC_HAS_LOCALE__ -+ _M_data->_M_decimal_point = __global_locale->decimal_point_wc; -+ _M_data->_M_thousands_sep = __global_locale->thousands_sep_wc; -+# endif -+#else -+ union { char *__s; wchar_t __w; } __u; -+ __u.__s = __nl_langinfo_l(_NL_MONETARY_DECIMAL_POINT_WC, __cloc); -+ _M_data->_M_decimal_point = __u.__w; -+ -+ __u.__s = __nl_langinfo_l(_NL_MONETARY_THOUSANDS_SEP_WC, __cloc); -+ _M_data->_M_thousands_sep = __u.__w; -+#endif -+ _M_data->_M_grouping = __nl_langinfo_l(__MON_GROUPING, __cloc); -+ _M_data->_M_grouping_size = strlen(_M_data->_M_grouping); -+ -+ const char* __cpossign = __nl_langinfo_l(__POSITIVE_SIGN, __cloc); -+ const char* __cnegsign = __nl_langinfo_l(__NEGATIVE_SIGN, __cloc); -+ const char* __ccurr = __nl_langinfo_l(__CURRENCY_SYMBOL, __cloc); -+ -+ wchar_t* __wcs_ps = 0; -+ wchar_t* __wcs_ns = 0; -+ const char __nposn = *(__nl_langinfo_l(__N_SIGN_POSN, __cloc)); -+ try -+ { -+ mbstate_t __state; -+ size_t __len; -+ __len = strlen(__cpossign); -+ if (__len) -+ { -+ ++__len; -+ memset(&__state, 0, sizeof(mbstate_t)); -+ __wcs_ps = new wchar_t[__len]; -+ mbsrtowcs(__wcs_ps, &__cpossign, __len, &__state); -+ _M_data->_M_positive_sign = __wcs_ps; -+ } -+ else -+ _M_data->_M_positive_sign = L""; -+ _M_data->_M_positive_sign_size = wcslen(_M_data->_M_positive_sign); -+ -+ __len = strlen(__cnegsign); -+ if (!__nposn) -+ _M_data->_M_negative_sign = L"()"; -+ else if (__len) -+ { -+ ++__len; -+ memset(&__state, 0, sizeof(mbstate_t)); -+ __wcs_ns = new wchar_t[__len]; -+ mbsrtowcs(__wcs_ns, &__cnegsign, __len, &__state); -+ _M_data->_M_negative_sign = __wcs_ns; -+ } -+ else -+ _M_data->_M_negative_sign = L""; -+ _M_data->_M_negative_sign_size = wcslen(_M_data->_M_negative_sign); -+ -+ // _Intl == true. -+ __len = strlen(__ccurr); -+ if (__len) -+ { -+ ++__len; -+ memset(&__state, 0, sizeof(mbstate_t)); -+ wchar_t* __wcs = new wchar_t[__len]; -+ mbsrtowcs(__wcs, &__ccurr, __len, &__state); -+ _M_data->_M_curr_symbol = __wcs; -+ } -+ else -+ _M_data->_M_curr_symbol = L""; -+ _M_data->_M_curr_symbol_size = wcslen(_M_data->_M_curr_symbol); -+ } -+ catch (...) -+ { -+ delete _M_data; -+ _M_data = 0; -+ delete __wcs_ps; -+ delete __wcs_ns; -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __uselocale(__old); -+#else -+ setlocale(LC_ALL, __old); -+ free(__old); -+#endif -+ __throw_exception_again; -+ } -+ -+ _M_data->_M_frac_digits = *(__nl_langinfo_l(__FRAC_DIGITS, __cloc)); -+ char __pprecedes = *(__nl_langinfo_l(__P_CS_PRECEDES, __cloc)); -+ char __pspace = *(__nl_langinfo_l(__P_SEP_BY_SPACE, __cloc)); -+ char __pposn = *(__nl_langinfo_l(__P_SIGN_POSN, __cloc)); -+ _M_data->_M_pos_format = _S_construct_pattern(__pprecedes, __pspace, -+ __pposn); -+ char __nprecedes = *(__nl_langinfo_l(__N_CS_PRECEDES, __cloc)); -+ char __nspace = *(__nl_langinfo_l(__N_SEP_BY_SPACE, __cloc)); -+ _M_data->_M_neg_format = _S_construct_pattern(__nprecedes, __nspace, -+ __nposn); -+ -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __uselocale(__old); -+#else -+ setlocale(LC_ALL, __old); -+ free(__old); -+#endif -+ } -+ } -+ -+ template<> -+ moneypunct::~moneypunct() -+ { -+ if (_M_data->_M_positive_sign_size) -+ delete [] _M_data->_M_positive_sign; -+ if (_M_data->_M_negative_sign_size -+ && wcscmp(_M_data->_M_negative_sign, L"()") != 0) -+ delete [] _M_data->_M_negative_sign; -+ if (_M_data->_M_curr_symbol_size) -+ delete [] _M_data->_M_curr_symbol; -+ delete _M_data; -+ } -+ -+ template<> -+ moneypunct::~moneypunct() -+ { -+ if (_M_data->_M_positive_sign_size) -+ delete [] _M_data->_M_positive_sign; -+ if (_M_data->_M_negative_sign_size -+ && wcscmp(_M_data->_M_negative_sign, L"()") != 0) -+ delete [] _M_data->_M_negative_sign; -+ if (_M_data->_M_curr_symbol_size) -+ delete [] _M_data->_M_curr_symbol; -+ delete _M_data; -+ } -+#endif -+} ---- gcc-4.1.0-dist/libstdc++-v3/config/locale/uclibc/numeric_members.cc -+++ gcc-4.1.0/libstdc++-v3/config/locale/uclibc/numeric_members.cc -@@ -0,0 +1,173 @@ -+// std::numpunct implementation details, GNU version -*- C++ -*- -+ -+// Copyright (C) 2001, 2002, 2003, 2004 Free Software Foundation, Inc. -+// -+// This file is part of the GNU ISO C++ Library. This library is free -+// software; you can redistribute it and/or modify it under the -+// terms of the GNU General Public License as published by the -+// Free Software Foundation; either version 2, or (at your option) -+// any later version. -+ -+// This library is distributed in the hope that it will be useful, -+// but WITHOUT ANY WARRANTY; without even the implied warranty of -+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+// GNU General Public License for more details. -+ -+// You should have received a copy of the GNU General Public License along -+// with this library; see the file COPYING. If not, write to the Free -+// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, -+// USA. -+ -+// As a special exception, you may use this file as part of a free software -+// library without restriction. Specifically, if other files instantiate -+// templates or use macros or inline functions from this file, or you compile -+// this file and link it with other files to produce an executable, this -+// file does not by itself cause the resulting executable to be covered by -+// the GNU General Public License. This exception does not however -+// invalidate any other reasons why the executable file might be covered by -+// the GNU General Public License. -+ -+// -+// ISO C++ 14882: 22.2.3.1.2 numpunct virtual functions -+// -+ -+// Written by Benjamin Kosnik -+ -+#define _LIBC -+#include -+#undef _LIBC -+#include -+ -+#ifdef __UCLIBC_MJN3_ONLY__ -+#warning tailor for stub locale support -+#endif -+#ifndef __UCLIBC_HAS_XLOCALE__ -+#define __nl_langinfo_l(N, L) nl_langinfo((N)) -+#endif -+ -+namespace std -+{ -+ template<> -+ void -+ numpunct::_M_initialize_numpunct(__c_locale __cloc) -+ { -+ if (!_M_data) -+ _M_data = new __numpunct_cache; -+ -+ if (!__cloc) -+ { -+ // "C" locale -+ _M_data->_M_grouping = ""; -+ _M_data->_M_grouping_size = 0; -+ _M_data->_M_use_grouping = false; -+ -+ _M_data->_M_decimal_point = '.'; -+ _M_data->_M_thousands_sep = ','; -+ -+ for (size_t __i = 0; __i < __num_base::_S_oend; ++__i) -+ _M_data->_M_atoms_out[__i] = __num_base::_S_atoms_out[__i]; -+ -+ for (size_t __j = 0; __j < __num_base::_S_iend; ++__j) -+ _M_data->_M_atoms_in[__j] = __num_base::_S_atoms_in[__j]; -+ } -+ else -+ { -+ // Named locale. -+ _M_data->_M_decimal_point = *(__nl_langinfo_l(DECIMAL_POINT, -+ __cloc)); -+ _M_data->_M_thousands_sep = *(__nl_langinfo_l(THOUSANDS_SEP, -+ __cloc)); -+ -+ // Check for NULL, which implies no grouping. -+ if (_M_data->_M_thousands_sep == '\0') -+ _M_data->_M_grouping = ""; -+ else -+ _M_data->_M_grouping = __nl_langinfo_l(GROUPING, __cloc); -+ _M_data->_M_grouping_size = strlen(_M_data->_M_grouping); -+ } -+ -+ // NB: There is no way to extact this info from posix locales. -+ // _M_truename = __nl_langinfo_l(YESSTR, __cloc); -+ _M_data->_M_truename = "true"; -+ _M_data->_M_truename_size = 4; -+ // _M_falsename = __nl_langinfo_l(NOSTR, __cloc); -+ _M_data->_M_falsename = "false"; -+ _M_data->_M_falsename_size = 5; -+ } -+ -+ template<> -+ numpunct::~numpunct() -+ { delete _M_data; } -+ -+#ifdef _GLIBCXX_USE_WCHAR_T -+ template<> -+ void -+ numpunct::_M_initialize_numpunct(__c_locale __cloc) -+ { -+ if (!_M_data) -+ _M_data = new __numpunct_cache; -+ -+ if (!__cloc) -+ { -+ // "C" locale -+ _M_data->_M_grouping = ""; -+ _M_data->_M_grouping_size = 0; -+ _M_data->_M_use_grouping = false; -+ -+ _M_data->_M_decimal_point = L'.'; -+ _M_data->_M_thousands_sep = L','; -+ -+ // Use ctype::widen code without the facet... -+ for (size_t __i = 0; __i < __num_base::_S_oend; ++__i) -+ _M_data->_M_atoms_out[__i] = -+ static_cast(__num_base::_S_atoms_out[__i]); -+ -+ for (size_t __j = 0; __j < __num_base::_S_iend; ++__j) -+ _M_data->_M_atoms_in[__j] = -+ static_cast(__num_base::_S_atoms_in[__j]); -+ } -+ else -+ { -+ // Named locale. -+ // NB: In the GNU model wchar_t is always 32 bit wide. -+#ifdef __UCLIBC_MJN3_ONLY__ -+#warning fix this -+#endif -+#ifdef __UCLIBC__ -+# ifdef __UCLIBC_HAS_XLOCALE__ -+ _M_data->_M_decimal_point = __cloc->decimal_point_wc; -+ _M_data->_M_thousands_sep = __cloc->thousands_sep_wc; -+# elif defined __UCLIBC_HAS_LOCALE__ -+ _M_data->_M_decimal_point = __global_locale->decimal_point_wc; -+ _M_data->_M_thousands_sep = __global_locale->thousands_sep_wc; -+# endif -+#else -+ union { char *__s; wchar_t __w; } __u; -+ __u.__s = __nl_langinfo_l(_NL_NUMERIC_DECIMAL_POINT_WC, __cloc); -+ _M_data->_M_decimal_point = __u.__w; -+ -+ __u.__s = __nl_langinfo_l(_NL_NUMERIC_THOUSANDS_SEP_WC, __cloc); -+ _M_data->_M_thousands_sep = __u.__w; -+#endif -+ -+ if (_M_data->_M_thousands_sep == L'\0') -+ _M_data->_M_grouping = ""; -+ else -+ _M_data->_M_grouping = __nl_langinfo_l(GROUPING, __cloc); -+ _M_data->_M_grouping_size = strlen(_M_data->_M_grouping); -+ } -+ -+ // NB: There is no way to extact this info from posix locales. -+ // _M_truename = __nl_langinfo_l(YESSTR, __cloc); -+ _M_data->_M_truename = L"true"; -+ _M_data->_M_truename_size = 4; -+ // _M_falsename = __nl_langinfo_l(NOSTR, __cloc); -+ _M_data->_M_falsename = L"false"; -+ _M_data->_M_falsename_size = 5; -+ } -+ -+ template<> -+ numpunct::~numpunct() -+ { delete _M_data; } -+ #endif -+} ---- gcc-4.1.0-dist/libstdc++-v3/config/locale/uclibc/time_members.cc -+++ gcc-4.1.0/libstdc++-v3/config/locale/uclibc/time_members.cc -@@ -0,0 +1,406 @@ -+// std::time_get, std::time_put implementation, GNU version -*- C++ -*- -+ -+// Copyright (C) 2001, 2002, 2003, 2004 Free Software Foundation, Inc. -+// -+// This file is part of the GNU ISO C++ Library. This library is free -+// software; you can redistribute it and/or modify it under the -+// terms of the GNU General Public License as published by the -+// Free Software Foundation; either version 2, or (at your option) -+// any later version. -+ -+// This library is distributed in the hope that it will be useful, -+// but WITHOUT ANY WARRANTY; without even the implied warranty of -+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+// GNU General Public License for more details. -+ -+// You should have received a copy of the GNU General Public License along -+// with this library; see the file COPYING. If not, write to the Free -+// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, -+// USA. -+ -+// As a special exception, you may use this file as part of a free software -+// library without restriction. Specifically, if other files instantiate -+// templates or use macros or inline functions from this file, or you compile -+// this file and link it with other files to produce an executable, this -+// file does not by itself cause the resulting executable to be covered by -+// the GNU General Public License. This exception does not however -+// invalidate any other reasons why the executable file might be covered by -+// the GNU General Public License. -+ -+// -+// ISO C++ 14882: 22.2.5.1.2 - time_get virtual functions -+// ISO C++ 14882: 22.2.5.3.2 - time_put virtual functions -+// -+ -+// Written by Benjamin Kosnik -+ -+#include -+#include -+ -+#ifdef __UCLIBC_MJN3_ONLY__ -+#warning tailor for stub locale support -+#endif -+#ifndef __UCLIBC_HAS_XLOCALE__ -+#define __nl_langinfo_l(N, L) nl_langinfo((N)) -+#endif -+ -+namespace std -+{ -+ template<> -+ void -+ __timepunct:: -+ _M_put(char* __s, size_t __maxlen, const char* __format, -+ const tm* __tm) const -+ { -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ const size_t __len = __strftime_l(__s, __maxlen, __format, __tm, -+ _M_c_locale_timepunct); -+#else -+ char* __old = strdup(setlocale(LC_ALL, NULL)); -+ setlocale(LC_ALL, _M_name_timepunct); -+ const size_t __len = strftime(__s, __maxlen, __format, __tm); -+ setlocale(LC_ALL, __old); -+ free(__old); -+#endif -+ // Make sure __s is null terminated. -+ if (__len == 0) -+ __s[0] = '\0'; -+ } -+ -+ template<> -+ void -+ __timepunct::_M_initialize_timepunct(__c_locale __cloc) -+ { -+ if (!_M_data) -+ _M_data = new __timepunct_cache; -+ -+ if (!__cloc) -+ { -+ // "C" locale -+ _M_c_locale_timepunct = _S_get_c_locale(); -+ -+ _M_data->_M_date_format = "%m/%d/%y"; -+ _M_data->_M_date_era_format = "%m/%d/%y"; -+ _M_data->_M_time_format = "%H:%M:%S"; -+ _M_data->_M_time_era_format = "%H:%M:%S"; -+ _M_data->_M_date_time_format = ""; -+ _M_data->_M_date_time_era_format = ""; -+ _M_data->_M_am = "AM"; -+ _M_data->_M_pm = "PM"; -+ _M_data->_M_am_pm_format = ""; -+ -+ // Day names, starting with "C"'s Sunday. -+ _M_data->_M_day1 = "Sunday"; -+ _M_data->_M_day2 = "Monday"; -+ _M_data->_M_day3 = "Tuesday"; -+ _M_data->_M_day4 = "Wednesday"; -+ _M_data->_M_day5 = "Thursday"; -+ _M_data->_M_day6 = "Friday"; -+ _M_data->_M_day7 = "Saturday"; -+ -+ // Abbreviated day names, starting with "C"'s Sun. -+ _M_data->_M_aday1 = "Sun"; -+ _M_data->_M_aday2 = "Mon"; -+ _M_data->_M_aday3 = "Tue"; -+ _M_data->_M_aday4 = "Wed"; -+ _M_data->_M_aday5 = "Thu"; -+ _M_data->_M_aday6 = "Fri"; -+ _M_data->_M_aday7 = "Sat"; -+ -+ // Month names, starting with "C"'s January. -+ _M_data->_M_month01 = "January"; -+ _M_data->_M_month02 = "February"; -+ _M_data->_M_month03 = "March"; -+ _M_data->_M_month04 = "April"; -+ _M_data->_M_month05 = "May"; -+ _M_data->_M_month06 = "June"; -+ _M_data->_M_month07 = "July"; -+ _M_data->_M_month08 = "August"; -+ _M_data->_M_month09 = "September"; -+ _M_data->_M_month10 = "October"; -+ _M_data->_M_month11 = "November"; -+ _M_data->_M_month12 = "December"; -+ -+ // Abbreviated month names, starting with "C"'s Jan. -+ _M_data->_M_amonth01 = "Jan"; -+ _M_data->_M_amonth02 = "Feb"; -+ _M_data->_M_amonth03 = "Mar"; -+ _M_data->_M_amonth04 = "Apr"; -+ _M_data->_M_amonth05 = "May"; -+ _M_data->_M_amonth06 = "Jun"; -+ _M_data->_M_amonth07 = "Jul"; -+ _M_data->_M_amonth08 = "Aug"; -+ _M_data->_M_amonth09 = "Sep"; -+ _M_data->_M_amonth10 = "Oct"; -+ _M_data->_M_amonth11 = "Nov"; -+ _M_data->_M_amonth12 = "Dec"; -+ } -+ else -+ { -+ _M_c_locale_timepunct = _S_clone_c_locale(__cloc); -+ -+ _M_data->_M_date_format = __nl_langinfo_l(D_FMT, __cloc); -+ _M_data->_M_date_era_format = __nl_langinfo_l(ERA_D_FMT, __cloc); -+ _M_data->_M_time_format = __nl_langinfo_l(T_FMT, __cloc); -+ _M_data->_M_time_era_format = __nl_langinfo_l(ERA_T_FMT, __cloc); -+ _M_data->_M_date_time_format = __nl_langinfo_l(D_T_FMT, __cloc); -+ _M_data->_M_date_time_era_format = __nl_langinfo_l(ERA_D_T_FMT, -+ __cloc); -+ _M_data->_M_am = __nl_langinfo_l(AM_STR, __cloc); -+ _M_data->_M_pm = __nl_langinfo_l(PM_STR, __cloc); -+ _M_data->_M_am_pm_format = __nl_langinfo_l(T_FMT_AMPM, __cloc); -+ -+ // Day names, starting with "C"'s Sunday. -+ _M_data->_M_day1 = __nl_langinfo_l(DAY_1, __cloc); -+ _M_data->_M_day2 = __nl_langinfo_l(DAY_2, __cloc); -+ _M_data->_M_day3 = __nl_langinfo_l(DAY_3, __cloc); -+ _M_data->_M_day4 = __nl_langinfo_l(DAY_4, __cloc); -+ _M_data->_M_day5 = __nl_langinfo_l(DAY_5, __cloc); -+ _M_data->_M_day6 = __nl_langinfo_l(DAY_6, __cloc); -+ _M_data->_M_day7 = __nl_langinfo_l(DAY_7, __cloc); -+ -+ // Abbreviated day names, starting with "C"'s Sun. -+ _M_data->_M_aday1 = __nl_langinfo_l(ABDAY_1, __cloc); -+ _M_data->_M_aday2 = __nl_langinfo_l(ABDAY_2, __cloc); -+ _M_data->_M_aday3 = __nl_langinfo_l(ABDAY_3, __cloc); -+ _M_data->_M_aday4 = __nl_langinfo_l(ABDAY_4, __cloc); -+ _M_data->_M_aday5 = __nl_langinfo_l(ABDAY_5, __cloc); -+ _M_data->_M_aday6 = __nl_langinfo_l(ABDAY_6, __cloc); -+ _M_data->_M_aday7 = __nl_langinfo_l(ABDAY_7, __cloc); -+ -+ // Month names, starting with "C"'s January. -+ _M_data->_M_month01 = __nl_langinfo_l(MON_1, __cloc); -+ _M_data->_M_month02 = __nl_langinfo_l(MON_2, __cloc); -+ _M_data->_M_month03 = __nl_langinfo_l(MON_3, __cloc); -+ _M_data->_M_month04 = __nl_langinfo_l(MON_4, __cloc); -+ _M_data->_M_month05 = __nl_langinfo_l(MON_5, __cloc); -+ _M_data->_M_month06 = __nl_langinfo_l(MON_6, __cloc); -+ _M_data->_M_month07 = __nl_langinfo_l(MON_7, __cloc); -+ _M_data->_M_month08 = __nl_langinfo_l(MON_8, __cloc); -+ _M_data->_M_month09 = __nl_langinfo_l(MON_9, __cloc); -+ _M_data->_M_month10 = __nl_langinfo_l(MON_10, __cloc); -+ _M_data->_M_month11 = __nl_langinfo_l(MON_11, __cloc); -+ _M_data->_M_month12 = __nl_langinfo_l(MON_12, __cloc); -+ -+ // Abbreviated month names, starting with "C"'s Jan. -+ _M_data->_M_amonth01 = __nl_langinfo_l(ABMON_1, __cloc); -+ _M_data->_M_amonth02 = __nl_langinfo_l(ABMON_2, __cloc); -+ _M_data->_M_amonth03 = __nl_langinfo_l(ABMON_3, __cloc); -+ _M_data->_M_amonth04 = __nl_langinfo_l(ABMON_4, __cloc); -+ _M_data->_M_amonth05 = __nl_langinfo_l(ABMON_5, __cloc); -+ _M_data->_M_amonth06 = __nl_langinfo_l(ABMON_6, __cloc); -+ _M_data->_M_amonth07 = __nl_langinfo_l(ABMON_7, __cloc); -+ _M_data->_M_amonth08 = __nl_langinfo_l(ABMON_8, __cloc); -+ _M_data->_M_amonth09 = __nl_langinfo_l(ABMON_9, __cloc); -+ _M_data->_M_amonth10 = __nl_langinfo_l(ABMON_10, __cloc); -+ _M_data->_M_amonth11 = __nl_langinfo_l(ABMON_11, __cloc); -+ _M_data->_M_amonth12 = __nl_langinfo_l(ABMON_12, __cloc); -+ } -+ } -+ -+#ifdef _GLIBCXX_USE_WCHAR_T -+ template<> -+ void -+ __timepunct:: -+ _M_put(wchar_t* __s, size_t __maxlen, const wchar_t* __format, -+ const tm* __tm) const -+ { -+#ifdef __UCLIBC_HAS_XLOCALE__ -+ __wcsftime_l(__s, __maxlen, __format, __tm, _M_c_locale_timepunct); -+ const size_t __len = __wcsftime_l(__s, __maxlen, __format, __tm, -+ _M_c_locale_timepunct); -+#else -+ char* __old = strdup(setlocale(LC_ALL, NULL)); -+ setlocale(LC_ALL, _M_name_timepunct); -+ const size_t __len = wcsftime(__s, __maxlen, __format, __tm); -+ setlocale(LC_ALL, __old); -+ free(__old); -+#endif -+ // Make sure __s is null terminated. -+ if (__len == 0) -+ __s[0] = L'\0'; -+ } -+ -+ template<> -+ void -+ __timepunct::_M_initialize_timepunct(__c_locale __cloc) -+ { -+ if (!_M_data) -+ _M_data = new __timepunct_cache; -+ -+#warning wide time stuff -+// if (!__cloc) -+ { -+ // "C" locale -+ _M_c_locale_timepunct = _S_get_c_locale(); -+ -+ _M_data->_M_date_format = L"%m/%d/%y"; -+ _M_data->_M_date_era_format = L"%m/%d/%y"; -+ _M_data->_M_time_format = L"%H:%M:%S"; -+ _M_data->_M_time_era_format = L"%H:%M:%S"; -+ _M_data->_M_date_time_format = L""; -+ _M_data->_M_date_time_era_format = L""; -+ _M_data->_M_am = L"AM"; -+ _M_data->_M_pm = L"PM"; -+ _M_data->_M_am_pm_format = L""; -+ -+ // Day names, starting with "C"'s Sunday. -+ _M_data->_M_day1 = L"Sunday"; -+ _M_data->_M_day2 = L"Monday"; -+ _M_data->_M_day3 = L"Tuesday"; -+ _M_data->_M_day4 = L"Wednesday"; -+ _M_data->_M_day5 = L"Thursday"; -+ _M_data->_M_day6 = L"Friday"; -+ _M_data->_M_day7 = L"Saturday"; -+ -+ // Abbreviated day names, starting with "C"'s Sun. -+ _M_data->_M_aday1 = L"Sun"; -+ _M_data->_M_aday2 = L"Mon"; -+ _M_data->_M_aday3 = L"Tue"; -+ _M_data->_M_aday4 = L"Wed"; -+ _M_data->_M_aday5 = L"Thu"; -+ _M_data->_M_aday6 = L"Fri"; -+ _M_data->_M_aday7 = L"Sat"; -+ -+ // Month names, starting with "C"'s January. -+ _M_data->_M_month01 = L"January"; -+ _M_data->_M_month02 = L"February"; -+ _M_data->_M_month03 = L"March"; -+ _M_data->_M_month04 = L"April"; -+ _M_data->_M_month05 = L"May"; -+ _M_data->_M_month06 = L"June"; -+ _M_data->_M_month07 = L"July"; -+ _M_data->_M_month08 = L"August"; -+ _M_data->_M_month09 = L"September"; -+ _M_data->_M_month10 = L"October"; -+ _M_data->_M_month11 = L"November"; -+ _M_data->_M_month12 = L"December"; -+ -+ // Abbreviated month names, starting with "C"'s Jan. -+ _M_data->_M_amonth01 = L"Jan"; -+ _M_data->_M_amonth02 = L"Feb"; -+ _M_data->_M_amonth03 = L"Mar"; -+ _M_data->_M_amonth04 = L"Apr"; -+ _M_data->_M_amonth05 = L"May"; -+ _M_data->_M_amonth06 = L"Jun"; -+ _M_data->_M_amonth07 = L"Jul"; -+ _M_data->_M_amonth08 = L"Aug"; -+ _M_data->_M_amonth09 = L"Sep"; -+ _M_data->_M_amonth10 = L"Oct"; -+ _M_data->_M_amonth11 = L"Nov"; -+ _M_data->_M_amonth12 = L"Dec"; -+ } -+#if 0 -+ else -+ { -+ _M_c_locale_timepunct = _S_clone_c_locale(__cloc); -+ -+ union { char *__s; wchar_t *__w; } __u; -+ -+ __u.__s = __nl_langinfo_l(_NL_WD_FMT, __cloc); -+ _M_data->_M_date_format = __u.__w; -+ __u.__s = __nl_langinfo_l(_NL_WERA_D_FMT, __cloc); -+ _M_data->_M_date_era_format = __u.__w; -+ __u.__s = __nl_langinfo_l(_NL_WT_FMT, __cloc); -+ _M_data->_M_time_format = __u.__w; -+ __u.__s = __nl_langinfo_l(_NL_WERA_T_FMT, __cloc); -+ _M_data->_M_time_era_format = __u.__w; -+ __u.__s = __nl_langinfo_l(_NL_WD_T_FMT, __cloc); -+ _M_data->_M_date_time_format = __u.__w; -+ __u.__s = __nl_langinfo_l(_NL_WERA_D_T_FMT, __cloc); -+ _M_data->_M_date_time_era_format = __u.__w; -+ __u.__s = __nl_langinfo_l(_NL_WAM_STR, __cloc); -+ _M_data->_M_am = __u.__w; -+ __u.__s = __nl_langinfo_l(_NL_WPM_STR, __cloc); -+ _M_data->_M_pm = __u.__w; -+ __u.__s = __nl_langinfo_l(_NL_WT_FMT_AMPM, __cloc); -+ _M_data->_M_am_pm_format = __u.__w; -+ -+ // Day names, starting with "C"'s Sunday. -+ __u.__s = __nl_langinfo_l(_NL_WDAY_1, __cloc); -+ _M_data->_M_day1 = __u.__w; -+ __u.__s = __nl_langinfo_l(_NL_WDAY_2, __cloc); -+ _M_data->_M_day2 = __u.__w; -+ __u.__s = __nl_langinfo_l(_NL_WDAY_3, __cloc); -+ _M_data->_M_day3 = __u.__w; -+ __u.__s = __nl_langinfo_l(_NL_WDAY_4, __cloc); -+ _M_data->_M_day4 = __u.__w; -+ __u.__s = __nl_langinfo_l(_NL_WDAY_5, __cloc); -+ _M_data->_M_day5 = __u.__w; -+ __u.__s = __nl_langinfo_l(_NL_WDAY_6, __cloc); -+ _M_data->_M_day6 = __u.__w; -+ __u.__s = __nl_langinfo_l(_NL_WDAY_7, __cloc); -+ _M_data->_M_day7 = __u.__w; -+ -+ // Abbreviated day names, starting with "C"'s Sun. -+ __u.__s = __nl_langinfo_l(_NL_WABDAY_1, __cloc); -+ _M_data->_M_aday1 = __u.__w; -+ __u.__s = __nl_langinfo_l(_NL_WABDAY_2, __cloc); -+ _M_data->_M_aday2 = __u.__w; -+ __u.__s = __nl_langinfo_l(_NL_WABDAY_3, __cloc); -+ _M_data->_M_aday3 = __u.__w; -+ __u.__s = __nl_langinfo_l(_NL_WABDAY_4, __cloc); -+ _M_data->_M_aday4 = __u.__w; -+ __u.__s = __nl_langinfo_l(_NL_WABDAY_5, __cloc); -+ _M_data->_M_aday5 = __u.__w; -+ __u.__s = __nl_langinfo_l(_NL_WABDAY_6, __cloc); -+ _M_data->_M_aday6 = __u.__w; -+ __u.__s = __nl_langinfo_l(_NL_WABDAY_7, __cloc); -+ _M_data->_M_aday7 = __u.__w; -+ -+ // Month names, starting with "C"'s January. -+ __u.__s = __nl_langinfo_l(_NL_WMON_1, __cloc); -+ _M_data->_M_month01 = __u.__w; -+ __u.__s = __nl_langinfo_l(_NL_WMON_2, __cloc); -+ _M_data->_M_month02 = __u.__w; -+ __u.__s = __nl_langinfo_l(_NL_WMON_3, __cloc); -+ _M_data->_M_month03 = __u.__w; -+ __u.__s = __nl_langinfo_l(_NL_WMON_4, __cloc); -+ _M_data->_M_month04 = __u.__w; -+ __u.__s = __nl_langinfo_l(_NL_WMON_5, __cloc); -+ _M_data->_M_month05 = __u.__w; -+ __u.__s = __nl_langinfo_l(_NL_WMON_6, __cloc); -+ _M_data->_M_month06 = __u.__w; -+ __u.__s = __nl_langinfo_l(_NL_WMON_7, __cloc); -+ _M_data->_M_month07 = __u.__w; -+ __u.__s = __nl_langinfo_l(_NL_WMON_8, __cloc); -+ _M_data->_M_month08 = __u.__w; -+ __u.__s = __nl_langinfo_l(_NL_WMON_9, __cloc); -+ _M_data->_M_month09 = __u.__w; -+ __u.__s = __nl_langinfo_l(_NL_WMON_10, __cloc); -+ _M_data->_M_month10 = __u.__w; -+ __u.__s = __nl_langinfo_l(_NL_WMON_11, __cloc); -+ _M_data->_M_month11 = __u.__w; -+ __u.__s = __nl_langinfo_l(_NL_WMON_12, __cloc); -+ _M_data->_M_month12 = __u.__w; -+ -+ // Abbreviated month names, starting with "C"'s Jan. -+ __u.__s = __nl_langinfo_l(_NL_WABMON_1, __cloc); -+ _M_data->_M_amonth01 = __u.__w; -+ __u.__s = __nl_langinfo_l(_NL_WABMON_2, __cloc); -+ _M_data->_M_amonth02 = __u.__w; -+ __u.__s = __nl_langinfo_l(_NL_WABMON_3, __cloc); -+ _M_data->_M_amonth03 = __u.__w; -+ __u.__s = __nl_langinfo_l(_NL_WABMON_4, __cloc); -+ _M_data->_M_amonth04 = __u.__w; -+ __u.__s = __nl_langinfo_l(_NL_WABMON_5, __cloc); -+ _M_data->_M_amonth05 = __u.__w; -+ __u.__s = __nl_langinfo_l(_NL_WABMON_6, __cloc); -+ _M_data->_M_amonth06 = __u.__w; -+ __u.__s = __nl_langinfo_l(_NL_WABMON_7, __cloc); -+ _M_data->_M_amonth07 = __u.__w; -+ __u.__s = __nl_langinfo_l(_NL_WABMON_8, __cloc); -+ _M_data->_M_amonth08 = __u.__w; -+ __u.__s = __nl_langinfo_l(_NL_WABMON_9, __cloc); -+ _M_data->_M_amonth09 = __u.__w; -+ __u.__s = __nl_langinfo_l(_NL_WABMON_10, __cloc); -+ _M_data->_M_amonth10 = __u.__w; -+ __u.__s = __nl_langinfo_l(_NL_WABMON_11, __cloc); -+ _M_data->_M_amonth11 = __u.__w; -+ __u.__s = __nl_langinfo_l(_NL_WABMON_12, __cloc); -+ _M_data->_M_amonth12 = __u.__w; -+ } -+#endif // 0 -+ } -+#endif -+} ---- gcc-4.1.0-dist/libstdc++-v3/config/locale/uclibc/time_members.h -+++ gcc-4.1.0/libstdc++-v3/config/locale/uclibc/time_members.h -@@ -0,0 +1,76 @@ -+// std::time_get, std::time_put implementation, GNU version -*- C++ -*- -+ -+// Copyright (C) 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc. -+// -+// This file is part of the GNU ISO C++ Library. This library is free -+// software; you can redistribute it and/or modify it under the -+// terms of the GNU General Public License as published by the -+// Free Software Foundation; either version 2, or (at your option) -+// any later version. -+ -+// This library is distributed in the hope that it will be useful, -+// but WITHOUT ANY WARRANTY; without even the implied warranty of -+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+// GNU General Public License for more details. -+ -+// You should have received a copy of the GNU General Public License along -+// with this library; see the file COPYING. If not, write to the Free -+// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, -+// USA. -+ -+// As a special exception, you may use this file as part of a free software -+// library without restriction. Specifically, if other files instantiate -+// templates or use macros or inline functions from this file, or you compile -+// this file and link it with other files to produce an executable, this -+// file does not by itself cause the resulting executable to be covered by -+// the GNU General Public License. This exception does not however -+// invalidate any other reasons why the executable file might be covered by -+// the GNU General Public License. -+ -+// -+// ISO C++ 14882: 22.2.5.1.2 - time_get functions -+// ISO C++ 14882: 22.2.5.3.2 - time_put functions -+// -+ -+// Written by Benjamin Kosnik -+ -+ template -+ __timepunct<_CharT>::__timepunct(size_t __refs) -+ : facet(__refs), _M_data(NULL), _M_c_locale_timepunct(NULL), -+ _M_name_timepunct(_S_get_c_name()) -+ { _M_initialize_timepunct(); } -+ -+ template -+ __timepunct<_CharT>::__timepunct(__cache_type* __cache, size_t __refs) -+ : facet(__refs), _M_data(__cache), _M_c_locale_timepunct(NULL), -+ _M_name_timepunct(_S_get_c_name()) -+ { _M_initialize_timepunct(); } -+ -+ template -+ __timepunct<_CharT>::__timepunct(__c_locale __cloc, const char* __s, -+ size_t __refs) -+ : facet(__refs), _M_data(NULL), _M_c_locale_timepunct(NULL), -+ _M_name_timepunct(NULL) -+ { -+ const size_t __len = std::strlen(__s) + 1; -+ char* __tmp = new char[__len]; -+ std::memcpy(__tmp, __s, __len); -+ _M_name_timepunct = __tmp; -+ -+ try -+ { _M_initialize_timepunct(__cloc); } -+ catch(...) -+ { -+ delete [] _M_name_timepunct; -+ __throw_exception_again; -+ } -+ } -+ -+ template -+ __timepunct<_CharT>::~__timepunct() -+ { -+ if (_M_name_timepunct != _S_get_c_name()) -+ delete [] _M_name_timepunct; -+ delete _M_data; -+ _S_destroy_c_locale(_M_c_locale_timepunct); -+ } ---- gcc-4.1.0-dist/libstdc++-v3/config/os/uclibc/ctype_base.h -+++ gcc-4.1.0/libstdc++-v3/config/os/uclibc/ctype_base.h -@@ -0,0 +1,64 @@ -+// Locale support -*- C++ -*- -+ -+// Copyright (C) 1997, 1998, 1999, 2000, 2002, 2003, 2004 -+// Free Software Foundation, Inc. -+// -+// This file is part of the GNU ISO C++ Library. This library is free -+// software; you can redistribute it and/or modify it under the -+// terms of the GNU General Public License as published by the -+// Free Software Foundation; either version 2, or (at your option) -+// any later version. -+ -+// This library is distributed in the hope that it will be useful, -+// but WITHOUT ANY WARRANTY; without even the implied warranty of -+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+// GNU General Public License for more details. -+ -+// You should have received a copy of the GNU General Public License along -+// with this library; see the file COPYING. If not, write to the Free -+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, -+// USA. -+ -+// As a special exception, you may use this file as part of a free software -+// library without restriction. Specifically, if other files instantiate -+// templates or use macros or inline functions from this file, or you compile -+// this file and link it with other files to produce an executable, this -+// file does not by itself cause the resulting executable to be covered by -+// the GNU General Public License. This exception does not however -+// invalidate any other reasons why the executable file might be covered by -+// the GNU General Public License. -+ -+// -+// ISO C++ 14882: 22.1 Locales -+// -+ -+/** @file ctype_base.h -+ * This is an internal header file, included by other library headers. -+ * You should not attempt to use it directly. -+ */ -+ -+// Information as gleaned from /usr/include/ctype.h -+ -+ /// @brief Base class for ctype. -+ struct ctype_base -+ { -+ // Note: In uClibc, the following two types depend on configuration. -+ -+ // Non-standard typedefs. -+ typedef const __ctype_touplow_t* __to_type; -+ -+ // NB: Offsets into ctype::_M_table force a particular size -+ // on the mask type. Because of this, we don't use an enum. -+ typedef __ctype_mask_t mask; -+ static const mask upper = _ISupper; -+ static const mask lower = _ISlower; -+ static const mask alpha = _ISalpha; -+ static const mask digit = _ISdigit; -+ static const mask xdigit = _ISxdigit; -+ static const mask space = _ISspace; -+ static const mask print = _ISprint; -+ static const mask graph = _ISalpha | _ISdigit | _ISpunct; -+ static const mask cntrl = _IScntrl; -+ static const mask punct = _ISpunct; -+ static const mask alnum = _ISalpha | _ISdigit; -+ }; ---- gcc-4.1.0-dist/libstdc++-v3/config/os/uclibc/ctype_inline.h -+++ gcc-4.1.0/libstdc++-v3/config/os/uclibc/ctype_inline.h -@@ -0,0 +1,69 @@ -+// Locale support -*- C++ -*- -+ -+// Copyright (C) 2000, 2002 Free Software Foundation, Inc. -+// -+// This file is part of the GNU ISO C++ Library. This library is free -+// software; you can redistribute it and/or modify it under the -+// terms of the GNU General Public License as published by the -+// Free Software Foundation; either version 2, or (at your option) -+// any later version. -+ -+// This library is distributed in the hope that it will be useful, -+// but WITHOUT ANY WARRANTY; without even the implied warranty of -+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+// GNU General Public License for more details. -+ -+// You should have received a copy of the GNU General Public License along -+// with this library; see the file COPYING. If not, write to the Free -+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, -+// USA. -+ -+// As a special exception, you may use this file as part of a free software -+// library without restriction. Specifically, if other files instantiate -+// templates or use macros or inline functions from this file, or you compile -+// this file and link it with other files to produce an executable, this -+// file does not by itself cause the resulting executable to be covered by -+// the GNU General Public License. This exception does not however -+// invalidate any other reasons why the executable file might be covered by -+// the GNU General Public License. -+ -+// -+// ISO C++ 14882: 22.1 Locales -+// -+ -+// ctype bits to be inlined go here. Non-inlinable (ie virtual do_*) -+// functions go in ctype.cc -+ -+ bool -+ ctype:: -+ is(mask __m, char __c) const -+ { return _M_table[static_cast(__c)] & __m; } -+ -+ const char* -+ ctype:: -+ is(const char* __low, const char* __high, mask* __vec) const -+ { -+ while (__low < __high) -+ *__vec++ = _M_table[static_cast(*__low++)]; -+ return __high; -+ } -+ -+ const char* -+ ctype:: -+ scan_is(mask __m, const char* __low, const char* __high) const -+ { -+ while (__low < __high -+ && !(_M_table[static_cast(*__low)] & __m)) -+ ++__low; -+ return __low; -+ } -+ -+ const char* -+ ctype:: -+ scan_not(mask __m, const char* __low, const char* __high) const -+ { -+ while (__low < __high -+ && (_M_table[static_cast(*__low)] & __m) != 0) -+ ++__low; -+ return __low; -+ } ---- gcc-4.1.0-dist/libstdc++-v3/config/os/uclibc/ctype_noninline.h -+++ gcc-4.1.0/libstdc++-v3/config/os/uclibc/ctype_noninline.h -@@ -0,0 +1,92 @@ -+// Locale support -*- C++ -*- -+ -+// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2004 -+// Free Software Foundation, Inc. -+// -+// This file is part of the GNU ISO C++ Library. This library is free -+// software; you can redistribute it and/or modify it under the -+// terms of the GNU General Public License as published by the -+// Free Software Foundation; either version 2, or (at your option) -+// any later version. -+ -+// This library is distributed in the hope that it will be useful, -+// but WITHOUT ANY WARRANTY; without even the implied warranty of -+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+// GNU General Public License for more details. -+ -+// You should have received a copy of the GNU General Public License along -+// with this library; see the file COPYING. If not, write to the Free -+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, -+// USA. -+ -+// As a special exception, you may use this file as part of a free software -+// library without restriction. Specifically, if other files instantiate -+// templates or use macros or inline functions from this file, or you compile -+// this file and link it with other files to produce an executable, this -+// file does not by itself cause the resulting executable to be covered by -+// the GNU General Public License. This exception does not however -+// invalidate any other reasons why the executable file might be covered by -+// the GNU General Public License. -+ -+// -+// ISO C++ 14882: 22.1 Locales -+// -+ -+// Information as gleaned from /usr/include/ctype.h -+ -+ const ctype_base::mask* -+ ctype::classic_table() throw() -+ { return __C_ctype_b; } -+ -+ ctype::ctype(__c_locale, const mask* __table, bool __del, -+ size_t __refs) -+ : facet(__refs), _M_c_locale_ctype(_S_get_c_locale()), -+ _M_del(__table != 0 && __del), _M_widen_ok(0), _M_narrow_ok(0) -+ { -+ _M_toupper = __C_ctype_toupper; -+ _M_tolower = __C_ctype_tolower; -+ _M_table = __table ? __table : __C_ctype_b; -+ memset(_M_widen, 0, sizeof(_M_widen)); -+ memset(_M_narrow, 0, sizeof(_M_narrow)); -+ } -+ -+ ctype::ctype(const mask* __table, bool __del, size_t __refs) -+ : facet(__refs), _M_c_locale_ctype(_S_get_c_locale()), -+ _M_del(__table != 0 && __del), _M_widen_ok(0), _M_narrow_ok(0) -+ { -+ _M_toupper = __C_ctype_toupper; -+ _M_tolower = __C_ctype_tolower; -+ _M_table = __table ? __table : __C_ctype_b; -+ memset(_M_widen, 0, sizeof(_M_widen)); -+ memset(_M_narrow, 0, sizeof(_M_narrow)); -+ } -+ -+ char -+ ctype::do_toupper(char __c) const -+ { return _M_toupper[static_cast(__c)]; } -+ -+ const char* -+ ctype::do_toupper(char* __low, const char* __high) const -+ { -+ while (__low < __high) -+ { -+ *__low = _M_toupper[static_cast(*__low)]; -+ ++__low; -+ } -+ return __high; -+ } -+ -+ char -+ ctype::do_tolower(char __c) const -+ { return _M_tolower[static_cast(__c)]; } -+ -+ const char* -+ ctype::do_tolower(char* __low, const char* __high) const -+ { -+ while (__low < __high) -+ { -+ *__low = _M_tolower[static_cast(*__low)]; -+ ++__low; -+ } -+ return __high; -+ } ---- gcc-4.1.0-dist/libstdc++-v3/config/os/uclibc/os_defines.h -+++ gcc-4.1.0/libstdc++-v3/config/os/uclibc/os_defines.h -@@ -0,0 +1,44 @@ -+// Specific definitions for GNU/Linux -*- C++ -*- -+ -+// Copyright (C) 2000, 2001, 2002, 2003 Free Software Foundation, Inc. -+// -+// This file is part of the GNU ISO C++ Library. This library is free -+// software; you can redistribute it and/or modify it under the -+// terms of the GNU General Public License as published by the -+// Free Software Foundation; either version 2, or (at your option) -+// any later version. -+ -+// This library is distributed in the hope that it will be useful, -+// but WITHOUT ANY WARRANTY; without even the implied warranty of -+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+// GNU General Public License for more details. -+ -+// You should have received a copy of the GNU General Public License along -+// with this library; see the file COPYING. If not, write to the Free -+// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, -+// USA. -+ -+// As a special exception, you may use this file as part of a free software -+// library without restriction. Specifically, if other files instantiate -+// templates or use macros or inline functions from this file, or you compile -+// this file and link it with other files to produce an executable, this -+// file does not by itself cause the resulting executable to be covered by -+// the GNU General Public License. This exception does not however -+// invalidate any other reasons why the executable file might be covered by -+// the GNU General Public License. -+ -+#ifndef _GLIBCXX_OS_DEFINES -+#define _GLIBCXX_OS_DEFINES 1 -+ -+// System-specific #define, typedefs, corrections, etc, go here. This -+// file will come before all others. -+ -+// This keeps isanum, et al from being propagated as macros. -+#define __NO_CTYPE 1 -+ -+#include -+ -+// We must not see the optimized string functions GNU libc defines. -+#define __NO_STRING_INLINES -+ -+#endif ---- gcc-4.1.0-dist/libstdc++-v3/configure -+++ gcc-4.1.0/libstdc++-v3/configure -@@ -4005,6 +4005,11 @@ - lt_cv_deplibs_check_method=pass_all - ;; - -+linux-uclibc*) -+ lt_cv_deplibs_check_method=pass_all -+ lt_cv_file_magic_test_file=`echo /lib/libuClibc-*.so` -+ ;; -+ - netbsd* | knetbsd*-gnu) - if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then - lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$' -@@ -5740,7 +5745,7 @@ - enableval="$enable_clocale" - - case "$enableval" in -- generic|gnu|ieee_1003.1-2001|yes|no|auto) ;; -+ generic|gnu|ieee_1003.1-2001|uclibc|yes|no|auto) ;; - *) { { echo "$as_me:$LINENO: error: Unknown argument to enable/disable clocale" >&5 - echo "$as_me: error: Unknown argument to enable/disable clocale" >&2;} - { (exit 1); exit 1; }; } ;; -@@ -5765,6 +5770,9 @@ - # Default to "generic". - if test $enable_clocale_flag = auto; then - case ${target_os} in -+ linux-uclibc*) -+ enable_clocale_flag=uclibc -+ ;; - linux* | gnu* | kfreebsd*-gnu | knetbsd*-gnu) - cat >conftest.$ac_ext <<_ACEOF - /* confdefs.h. */ -@@ -5995,6 +6003,76 @@ - CTIME_CC=config/locale/generic/time_members.cc - CLOCALE_INTERNAL_H=config/locale/generic/c++locale_internal.h - ;; -+ uclibc) -+ echo "$as_me:$LINENO: result: uclibc" >&5 -+echo "${ECHO_T}uclibc" >&6 -+ -+ # Declare intention to use gettext, and add support for specific -+ # languages. -+ # For some reason, ALL_LINGUAS has to be before AM-GNU-GETTEXT -+ ALL_LINGUAS="de fr" -+ -+ # Don't call AM-GNU-GETTEXT here. Instead, assume glibc. -+ # Extract the first word of "msgfmt", so it can be a program name with args. -+set dummy msgfmt; ac_word=$2 -+echo "$as_me:$LINENO: checking for $ac_word" >&5 -+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -+if test "${ac_cv_prog_check_msgfmt+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ if test -n "$check_msgfmt"; then -+ ac_cv_prog_check_msgfmt="$check_msgfmt" # Let the user override the test. -+else -+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -+for as_dir in $PATH -+do -+ IFS=$as_save_IFS -+ test -z "$as_dir" && as_dir=. -+ for ac_exec_ext in '' $ac_executable_extensions; do -+ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then -+ ac_cv_prog_check_msgfmt="yes" -+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 -+ break 2 -+ fi -+done -+done -+ -+ test -z "$ac_cv_prog_check_msgfmt" && ac_cv_prog_check_msgfmt="no" -+fi -+fi -+check_msgfmt=$ac_cv_prog_check_msgfmt -+if test -n "$check_msgfmt"; then -+ echo "$as_me:$LINENO: result: $check_msgfmt" >&5 -+echo "${ECHO_T}$check_msgfmt" >&6 -+else -+ echo "$as_me:$LINENO: result: no" >&5 -+echo "${ECHO_T}no" >&6 -+fi -+ -+ if test x"$check_msgfmt" = x"yes" && test x"$enable_nls" = x"yes"; then -+ USE_NLS=yes -+ fi -+ # Export the build objects. -+ for ling in $ALL_LINGUAS; do \ -+ glibcxx_MOFILES="$glibcxx_MOFILES $ling.mo"; \ -+ glibcxx_POFILES="$glibcxx_POFILES $ling.po"; \ -+ done -+ -+ -+ -+ CLOCALE_H=config/locale/uclibc/c_locale.h -+ CLOCALE_CC=config/locale/uclibc/c_locale.cc -+ CCODECVT_CC=config/locale/uclibc/codecvt_members.cc -+ CCOLLATE_CC=config/locale/uclibc/collate_members.cc -+ CCTYPE_CC=config/locale/uclibc/ctype_members.cc -+ CMESSAGES_H=config/locale/uclibc/messages_members.h -+ CMESSAGES_CC=config/locale/uclibc/messages_members.cc -+ CMONEY_CC=config/locale/uclibc/monetary_members.cc -+ CNUMERIC_CC=config/locale/uclibc/numeric_members.cc -+ CTIME_H=config/locale/uclibc/time_members.h -+ CTIME_CC=config/locale/uclibc/time_members.cc -+ CLOCALE_INTERNAL_H=config/locale/uclibc/c++locale_internal.h -+ ;; - esac - - # This is where the testsuite looks for locale catalogs, using the ---- gcc-4.1.0-dist/libstdc++-v3/configure.host -+++ gcc-4.1.0/libstdc++-v3/configure.host -@@ -261,6 +261,12 @@ - ;; - esac - -+# Override for uClibc since linux-uclibc gets mishandled above. -+case "${host_os}" in -+ *-uclibc*) -+ os_include_dir="os/uclibc" -+ ;; -+esac - - # Set any OS-dependent and CPU-dependent bits. - # THIS TABLE IS SORTED. KEEP IT THAT WAY. ---- gcc-4.1.0-dist/libstdc++-v3/crossconfig.m4 -+++ gcc-4.1.0/libstdc++-v3/crossconfig.m4 -@@ -143,6 +143,99 @@ - ;; - esac - ;; -+ *-uclibc*) -+# Temporary hack until we implement the float versions of the libm funcs -+ AC_CHECK_HEADERS([nan.h ieeefp.h endian.h sys/isa_defs.h \ -+ machine/endian.h machine/param.h sys/machine.h sys/types.h \ -+ fp.h float.h endian.h inttypes.h locale.h float.h stdint.h]) -+ SECTION_FLAGS='-ffunction-sections -fdata-sections' -+ AC_SUBST(SECTION_FLAGS) -+ GLIBCXX_CHECK_LINKER_FEATURES -+ GLIBCXX_CHECK_COMPLEX_MATH_SUPPORT -+ GLIBCXX_CHECK_WCHAR_T_SUPPORT -+ -+ # For LFS. -+ AC_DEFINE(HAVE_INT64_T) -+ case "$target" in -+ *-uclinux*) -+ # Don't enable LFS with uClinux -+ ;; -+ *) -+ AC_DEFINE(_GLIBCXX_USE_LFS) -+ esac -+ -+ # For showmanyc_helper(). -+ AC_CHECK_HEADERS(sys/ioctl.h sys/filio.h) -+ GLIBCXX_CHECK_POLL -+ GLIBCXX_CHECK_S_ISREG_OR_S_IFREG -+ -+ # For xsputn_2(). -+ AC_CHECK_HEADERS(sys/uio.h) -+ GLIBCXX_CHECK_WRITEV -+ -+# AC_DEFINE(HAVE_ACOSF) -+# AC_DEFINE(HAVE_ASINF) -+# AC_DEFINE(HAVE_ATANF) -+# AC_DEFINE(HAVE_ATAN2F) -+ AC_DEFINE(HAVE_CEILF) -+ AC_DEFINE(HAVE_COPYSIGN) -+# AC_DEFINE(HAVE_COPYSIGNF) -+# AC_DEFINE(HAVE_COSF) -+# AC_DEFINE(HAVE_COSHF) -+# AC_DEFINE(HAVE_EXPF) -+# AC_DEFINE(HAVE_FABSF) -+ AC_DEFINE(HAVE_FINITE) -+ AC_DEFINE(HAVE_FINITEF) -+ AC_DEFINE(HAVE_FLOORF) -+# AC_DEFINE(HAVE_FMODF) -+# AC_DEFINE(HAVE_FREXPF) -+ AC_DEFINE(HAVE_HYPOT) -+# AC_DEFINE(HAVE_HYPOTF) -+ AC_DEFINE(HAVE_ISINF) -+ AC_DEFINE(HAVE_ISINFF) -+ AC_DEFINE(HAVE_ISNAN) -+ AC_DEFINE(HAVE_ISNANF) -+# AC_DEFINE(HAVE_LOGF) -+# AC_DEFINE(HAVE_LOG10F) -+# AC_DEFINE(HAVE_MODFF) -+# AC_DEFINE(HAVE_SINF) -+# AC_DEFINE(HAVE_SINHF) -+# AC_DEFINE(HAVE_SINCOS) -+# AC_DEFINE(HAVE_SINCOSF) -+ AC_DEFINE(HAVE_SQRTF) -+# AC_DEFINE(HAVE_TANF) -+# AC_DEFINE(HAVE_TANHF) -+ if test x"long_double_math_on_this_cpu" = x"yes"; then -+ AC_MSG_ERROR([long_double_math_on_this_cpu is yes!]) -+# AC_DEFINE(HAVE_ACOSL) -+# AC_DEFINE(HAVE_ASINL) -+# AC_DEFINE(HAVE_ATANL) -+# AC_DEFINE(HAVE_ATAN2L) -+# AC_DEFINE(HAVE_CEILL) -+# AC_DEFINE(HAVE_COPYSIGNL) -+# AC_DEFINE(HAVE_COSL) -+# AC_DEFINE(HAVE_COSHL) -+# AC_DEFINE(HAVE_EXPL) -+# AC_DEFINE(HAVE_FABSL) -+# AC_DEFINE(HAVE_FINITEL) -+# AC_DEFINE(HAVE_FLOORL) -+# AC_DEFINE(HAVE_FMODL) -+# AC_DEFINE(HAVE_FREXPL) -+# AC_DEFINE(HAVE_HYPOTL) -+# AC_DEFINE(HAVE_ISINFL) -+# AC_DEFINE(HAVE_ISNANL) -+# AC_DEFINE(HAVE_LOGL) -+# AC_DEFINE(HAVE_LOG10L) -+# AC_DEFINE(HAVE_MODFL) -+# AC_DEFINE(HAVE_POWL) -+# AC_DEFINE(HAVE_SINL) -+# AC_DEFINE(HAVE_SINHL) -+# AC_DEFINE(HAVE_SINCOSL) -+# AC_DEFINE(HAVE_SQRTL) -+# AC_DEFINE(HAVE_TANL) -+# AC_DEFINE(HAVE_TANHL) -+ fi -+ ;; - *-linux* | *-uclinux* | *-gnu* | *-kfreebsd*-gnu | *-knetbsd*-gnu) - AC_CHECK_HEADERS([nan.h ieeefp.h endian.h sys/isa_defs.h \ - machine/endian.h machine/param.h sys/machine.h sys/types.h \ -@@ -157,7 +250,7 @@ - AC_DEFINE(HAVE_INT64_T) - case "$target" in - *-uclinux*) -- # Don't enable LFS with uClibc -+ # Don't enable LFS with uClinux - ;; - *) - AC_DEFINE(_GLIBCXX_USE_LFS) ---- gcc-4.1.0-dist/libstdc++-v3/include/c_compatibility/wchar.h -+++ gcc-4.1.0/libstdc++-v3/include/c_compatibility/wchar.h -@@ -101,7 +101,9 @@ - using std::wmemcpy; - using std::wmemmove; - using std::wmemset; -+#if _GLIBCXX_HAVE_WCSFTIME - using std::wcsftime; -+#endif - - #if _GLIBCXX_USE_C99 - using std::wcstold; ---- gcc-4.1.0-dist/libstdc++-v3/include/c_std/std_cwchar.h -+++ gcc-4.1.0/libstdc++-v3/include/c_std/std_cwchar.h -@@ -180,7 +180,9 @@ - using ::wcscoll; - using ::wcscpy; - using ::wcscspn; -+#if _GLIBCXX_HAVE_WCSFTIME - using ::wcsftime; -+#endif - using ::wcslen; - using ::wcsncat; - using ::wcsncmp; diff --git a/patches/gcc/4.1.1/130-libstdc++-pic.patch b/patches/gcc/4.1.1/130-libstdc++-pic.patch deleted file mode 100644 index 560bcb2..0000000 --- a/patches/gcc/4.1.1/130-libstdc++-pic.patch +++ /dev/null @@ -1,50 +0,0 @@ -# DP: Build and install libstdc++_pic.a library. - ---- gcc/libstdc++-v3/src/Makefile.am -+++ gcc/libstdc++-v3/src/Makefile.am -@@ -214,6 +214,12 @@ - $(OPT_LDFLAGS) $(SECTION_LDFLAGS) $(AM_CXXFLAGS) $(LDFLAGS) -o $@ - - -+install-exec-local: -+ifeq ($(enable_shared),yes) -+ $(AR) cru libstdc++_pic.a .libs/*.o $(top_builddir)/libsupc++/*.o -+ $(INSTALL_DATA) libstdc++_pic.a $(DESTDIR)$(toolexeclibdir) -+endif -+ - # Added bits to build debug library. - if GLIBCXX_BUILD_DEBUG - all-local: build_debug ---- gcc/libstdc++-v3/src/Makefile.in -+++ gcc/libstdc++-v3/src/Makefile.in -@@ -627,7 +627,7 @@ - - install-data-am: install-data-local - --install-exec-am: install-toolexeclibLTLIBRARIES -+install-exec-am: install-toolexeclibLTLIBRARIES install-exec-local - - install-info: install-info-am - -@@ -660,6 +660,7 @@ - distclean-libtool distclean-tags distdir dvi dvi-am html \ - html-am info info-am install install-am install-data \ - install-data-am install-data-local install-exec \ -+ install-exec-local \ - install-exec-am install-info install-info-am install-man \ - install-strip install-toolexeclibLTLIBRARIES installcheck \ - installcheck-am installdirs maintainer-clean \ -@@ -743,6 +743,13 @@ - install_debug: - (cd ${debugdir} && $(MAKE) \ - toolexeclibdir=$(glibcxx_toolexeclibdir)/debug install) -+ -+install-exec-local: -+ifeq ($(enable_shared),yes) -+ $(AR) cru libstdc++_pic.a *.o $(top_builddir)/libsupc++/*.o -+ $(INSTALL_DATA) libstdc++_pic.a $(DESTDIR)$(toolexeclibdir) -+endif -+ - # Tell versions [3.59,3.63) of GNU make to not export all variables. - # Otherwise a system limit (for SysV at least) may be exceeded. - .NOEXPORT: diff --git a/patches/gcc/4.1.1/140-missing-execinfo_h.patch b/patches/gcc/4.1.1/140-missing-execinfo_h.patch deleted file mode 100644 index 0e2092f..0000000 --- a/patches/gcc/4.1.1/140-missing-execinfo_h.patch +++ /dev/null @@ -1,11 +0,0 @@ ---- gcc-4.0.0/boehm-gc/include/gc.h-orig 2005-04-28 22:28:57.000000000 -0500 -+++ gcc-4.0.0/boehm-gc/include/gc.h 2005-04-28 22:30:38.000000000 -0500 -@@ -500,7 +500,7 @@ - #ifdef __linux__ - # include - # if (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1 || __GLIBC__ > 2) \ -- && !defined(__ia64__) -+ && !defined(__ia64__) && !defined(__UCLIBC__) - # ifndef GC_HAVE_BUILTIN_BACKTRACE - # define GC_HAVE_BUILTIN_BACKTRACE - # endif diff --git a/patches/gcc/4.1.1/150-c99-snprintf.patch b/patches/gcc/4.1.1/150-c99-snprintf.patch deleted file mode 100644 index dfb22d6..0000000 --- a/patches/gcc/4.1.1/150-c99-snprintf.patch +++ /dev/null @@ -1,11 +0,0 @@ ---- gcc-4.0.0/libstdc++-v3/include/c_std/std_cstdio.h-orig 2005-04-29 00:08:41.000000000 -0500 -+++ gcc-4.0.0/libstdc++-v3/include/c_std/std_cstdio.h 2005-04-29 00:08:45.000000000 -0500 -@@ -142,7 +142,7 @@ - using ::vsprintf; - } - --#if _GLIBCXX_USE_C99 -+#if _GLIBCXX_USE_C99 || defined(__UCLIBC__) - - #undef snprintf - #undef vfscanf diff --git a/patches/gcc/4.1.1/160-c99-complex-ugly-hack.patch b/patches/gcc/4.1.1/160-c99-complex-ugly-hack.patch deleted file mode 100644 index 2ccc80d..0000000 --- a/patches/gcc/4.1.1/160-c99-complex-ugly-hack.patch +++ /dev/null @@ -1,12 +0,0 @@ ---- gcc-4.0.0/libstdc++-v3/configure-old 2005-04-30 22:04:48.061603912 -0500 -+++ gcc-4.0.0/libstdc++-v3/configure 2005-04-30 22:06:13.678588152 -0500 -@@ -7194,6 +7194,9 @@ - cat >>conftest.$ac_ext <<_ACEOF - /* end confdefs.h. */ - #include -+#ifdef __UCLIBC__ -+#error ugly hack to make sure configure test fails here for cross until uClibc supports the complex funcs -+#endif - int - main () - { diff --git a/patches/gcc/4.1.1/170-index_macro.patch b/patches/gcc/4.1.1/170-index_macro.patch deleted file mode 100644 index 1fac112..0000000 --- a/patches/gcc/4.1.1/170-index_macro.patch +++ /dev/null @@ -1,24 +0,0 @@ ---- gcc-4.1.0/libstdc++-v3/include/ext/rope.mps 2006-03-24 01:49:51 +0100 -+++ gcc-4.1.0/libstdc++-v3/include/ext/rope 2006-03-24 01:49:37 +0100 -@@ -59,6 +59,9 @@ - #include - #include - -+/* cope w/ index defined as macro, SuSv3 proposal */ -+#undef index -+ - # ifdef __GC - # define __GC_CONST const - # else ---- gcc-4.1.0/libstdc++-v3/include/ext/ropeimpl.h.mps 2006-03-24 01:50:04 +0100 -+++ gcc-4.1.0/libstdc++-v3/include/ext/ropeimpl.h 2006-03-24 01:50:28 +0100 -@@ -53,6 +53,9 @@ - #include // For uninitialized_copy_n - #include // For power - -+/* cope w/ index defined as macro, SuSv3 proposal */ -+#undef index -+ - namespace __gnu_cxx - { - using std::size_t; diff --git a/patches/gcc/4.1.1/180-sh-pr24836.patch b/patches/gcc/4.1.1/180-sh-pr24836.patch deleted file mode 100644 index 7992282..0000000 --- a/patches/gcc/4.1.1/180-sh-pr24836.patch +++ /dev/null @@ -1,25 +0,0 @@ -http://sourceforge.net/mailarchive/forum.php?thread_id=8959304&forum_id=5348 -http://gcc.gnu.org/bugzilla/show_bug.cgi?id=24836 - ---- gcc/gcc/configure.ac (revision 106699) -+++ gcc/gcc/configure.ac (working copy) -@@ -2446,7 +2446,7 @@ - tls_first_minor=14 - tls_as_opt="-m64 -Aesame --fatal-warnings" - ;; -- sh-*-* | sh[34]-*-*) -+ sh-*-* | sh[34]*-*-*) - conftest_s=' - .section ".tdata","awT",@progbits - foo: .long 25 ---- gcc/gcc/configure -+++ gcc/gcc/configure -@@ -14846,7 +14846,7 @@ - tls_first_minor=14 - tls_as_opt="-m64 -Aesame --fatal-warnings" - ;; -- sh-*-* | sh[34]-*-*) -+ sh-*-* | sh[34]*-*-*) - conftest_s=' - .section ".tdata","awT",@progbits - foo: .long 25 diff --git a/patches/gcc/4.1.1/190-arm-bigendian.patch b/patches/gcc/4.1.1/190-arm-bigendian.patch deleted file mode 100644 index 1fa5ae1..0000000 --- a/patches/gcc/4.1.1/190-arm-bigendian.patch +++ /dev/null @@ -1,67 +0,0 @@ -By Lennert Buytenhek -Adds support for arm*b-linux* big-endian ARM targets - -See http://gcc.gnu.org/PR16350 - ---- gcc-4.1.0/gcc/config/arm/linux-elf.h -+++ gcc-4.1.0/gcc/config/arm/linux-elf.h -@@ -28,19 +28,33 @@ - #undef TARGET_VERSION - #define TARGET_VERSION fputs (" (ARM GNU/Linux with ELF)", stderr); - -+/* -+ * 'config.gcc' defines TARGET_BIG_ENDIAN_DEFAULT as 1 for arm*b-* -+ * (big endian) configurations. -+ */ -+#if TARGET_BIG_ENDIAN_DEFAULT -+#define TARGET_ENDIAN_DEFAULT MASK_BIG_END -+#define TARGET_ENDIAN_OPTION "mbig-endian" -+#define TARGET_LINKER_EMULATION "armelfb_linux" -+#else -+#define TARGET_ENDIAN_DEFAULT 0 -+#define TARGET_ENDIAN_OPTION "mlittle-endian" -+#define TARGET_LINKER_EMULATION "armelf_linux" -+#endif -+ - #undef TARGET_DEFAULT_FLOAT_ABI - #define TARGET_DEFAULT_FLOAT_ABI ARM_FLOAT_ABI_HARD - - #undef TARGET_DEFAULT --#define TARGET_DEFAULT (0) -+#define TARGET_DEFAULT (TARGET_ENDIAN_DEFAULT) - - #define SUBTARGET_CPU_DEFAULT TARGET_CPU_arm6 - --#define SUBTARGET_EXTRA_LINK_SPEC " -m armelf_linux -p" -+#define SUBTARGET_EXTRA_LINK_SPEC " -m " TARGET_LINKER_EMULATION " -p" - - #undef MULTILIB_DEFAULTS - #define MULTILIB_DEFAULTS \ -- { "marm", "mlittle-endian", "mhard-float", "mno-thumb-interwork" } -+ { "marm", TARGET_ENDIAN_OPTION, "mhard-float", "mno-thumb-interwork" } - - /* Now we define the strings used to build the spec file. */ - #undef LIB_SPEC -@@ -61,7 +75,7 @@ - %{rdynamic:-export-dynamic} \ - %{!dynamic-linker:-dynamic-linker " LINUX_TARGET_INTERPRETER "} \ - -X \ -- %{mbig-endian:-EB}" \ -+ %{mbig-endian:-EB} %{mlittle-endian:-EL}" \ - SUBTARGET_EXTRA_LINK_SPEC - - #undef LINK_SPEC ---- gcc-4.1.0/gcc/config.gcc -+++ gcc-4.1.0/gcc/config.gcc -@@ -672,6 +672,11 @@ - ;; - arm*-*-linux*) # ARM GNU/Linux with ELF - tm_file="dbxelf.h elfos.h linux.h arm/elf.h arm/linux-gas.h arm/linux-elf.h" -+ case $target in -+ arm*b-*) -+ tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=1" -+ ;; -+ esac - tmake_file="${tmake_file} t-linux arm/t-arm" - case ${target} in - arm*-*-linux-gnueabi) diff --git a/patches/gcc/4.1.1/200-softfloat-fix.patch b/patches/gcc/4.1.1/200-softfloat-fix.patch deleted file mode 100644 index 844c9a0..0000000 --- a/patches/gcc/4.1.1/200-softfloat-fix.patch +++ /dev/null @@ -1,58 +0,0 @@ -This patch (C) 2007 Yann E. MORIN -Licensed under GPL v2. - -First hunk of this patch solves compiling uClibc-0.9.28{,.1} : - -make[1]: Entering directory `/home/ymorin/x-tools/build/armeb-unknown-linux-uclibc/gcc-4.1.1-uClibc-0.9.28.1/build-libc' - LD libuClibc-0.9.29.so -libc/libc_so.a(difftime.os): In function `difftime': -difftime.c:(.text+0x8): undefined reference to `__floatsidf' -difftime.c:(.text+0x2c): undefined reference to `__subdf3' -libc/libc_so.a(_fpmaxtostr.os): In function `_fpmaxtostr': -_fpmaxtostr.c:(.text+0xd4): undefined reference to `__nedf2' -_fpmaxtostr.c:(.text+0xf8): undefined reference to `__eqdf2' -_fpmaxtostr.c:(.text+0x114): undefined reference to `__divdf3' -_fpmaxtostr.c:(.text+0x120): undefined reference to `__ltdf2' -_fpmaxtostr.c:(.text+0x1c4): undefined reference to `__muldf3' -_fpmaxtostr.c:(.text+0x388): undefined reference to `__gedf2' -_fpmaxtostr.c:(.text+0x430): undefined reference to `__adddf3' -libc/libc_so.a(__psfs_do_numeric.os): In function `__psfs_do_numeric': -__psfs_do_numeric.c:(.text+0x520): undefined reference to `__truncdfsf2' -libc/libc_so.a(strtof.os): In function `strtof': -strtof.c:(.text+0x1c): undefined reference to `__extendsfdf2' -/home/ymorin/x-tools/build/armeb-unknown-linux-uclibc/gcc-4.1.1-uClibc-0.9.28.1/cc_core_prefix/lib/gcc/arm-linux-uclibc/4.1.1/libgcc.a(_fixunsdfsi.o): -In function `__fixunsdfsi': -libgcc2.c:(.text+0x34): undefined reference to `__fixdfsi' -make[2]: *** [lib/libc.so] Error 1 -make[1]: *** [lib/libc.so.0] Error 2 -make[1]: Leaving directory `/home/ymorin/x-tools/build/armeb-unknown-linux-uclibc/gcc-4.1.1-uClibc-0.9.28.1/build-libc' -make: *** [/home/ymorin/x-tools/build/armeb-unknown-linux-uclibc/gcc-4.1.1-uClibc-0.9.28.1/build-libc/lib/libc.a] -Error 2 - -The second hunk fixes building final gcc because soft-float implies using -lfloat (which we don't have). - - -diff -dur gcc-4.1.1.no-softfloat-fix/gcc/config.gcc gcc-4.1.1/gcc/config.gcc ---- gcc-4.1.1.no-softfloat-fix/gcc/config.gcc 2007-02-01 21:57:17.000000000 +0100 -+++ gcc-4.1.1/gcc/config.gcc 2007-02-01 22:11:06.000000000 +0100 -@@ -690,7 +690,7 @@ - default_use_cxa_atexit=yes - ;; - *) -- tmake_file="$tmake_file arm/t-linux" -+ tmake_file="$tmake_file arm/t-linux arm/t-arm-elf" - ;; - esac - tm_file="$tm_file arm/aout.h arm/arm.h" -diff -dur gcc-4.1.1.-lfloat/gcc/config/arm/linux-elf.h gcc-4.1.1/gcc/config/arm/linux-elf.h ---- gcc-4.1.1.-lfloat/gcc/config/arm/linux-elf.h 2007-02-01 21:57:17.000000000 +0100 -+++ gcc-4.1.1/gcc/config/arm/linux-elf.h 2007-02-01 23:00:42.000000000 +0100 -@@ -63,7 +63,7 @@ - %{shared:-lc} \ - %{!shared:%{profile:-lc_p}%{!profile:-lc}}" - --#define LIBGCC_SPEC "%{msoft-float:-lfloat} %{mfloat-abi=soft*:-lfloat} -lgcc" -+#define LIBGCC_SPEC "-lgcc" - - #ifdef USE_UCLIBC - #define LINUX_TARGET_INTERPRETER "/lib/ld-uClibc.so.0" diff --git a/patches/gdb/6.4/100-uclibc-conf.patch b/patches/gdb/6.4/100-uclibc-conf.patch deleted file mode 100644 index 9d8fd4e..0000000 --- a/patches/gdb/6.4/100-uclibc-conf.patch +++ /dev/null @@ -1,78 +0,0 @@ ---- gdb-6.3/bfd/configure.orig Fri Oct 8 16:53:56 2004 -+++ gdb-6.3/bfd/configure Sun Feb 27 18:32:58 2005 -@@ -3583,6 +3583,11 @@ - lt_cv_file_magic_test_file=`echo /lib/libc.so* /lib/libc-*.so` - ;; - -+linux-uclibc*) -+ lt_cv_deplibs_check_method=pass_all -+ lt_cv_file_magic_test_file=`echo /lib/libuClibc-*.so` -+ ;; -+ - netbsd* | knetbsd*-gnu) - if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then - lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$' ---- gdb-6.3/libtool.m4.orig Wed Jul 21 21:21:41 2004 -+++ gdb-6.3/libtool.m4 Mon Feb 28 00:08:11 2005 -@@ -653,6 +653,11 @@ - fi - ;; - -+linux-uclibc*) -+ lt_cv_deplibs_check_method=pass_all -+ lt_cv_file_magic_test_file=`echo /lib/libuClibc-*.so` -+ ;; -+ - newsos6) - [lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (executable|dynamic lib)'] - lt_cv_file_magic_cmd=/usr/bin/file ---- gdb-6.3/ltconfig.orig Tue Oct 5 15:34:42 2004 -+++ gdb-6.3/ltconfig Sun Feb 27 18:14:41 2005 -@@ -602,7 +602,7 @@ - - # Transform linux* to *-*-linux-gnu*, to support old configure scripts. - case $host_os in --linux-gnu*) ;; -+linux-gnu*|linux-uclibc*) ;; - linux*) host=`echo $host | sed 's/^\(.*-.*-linux\)\(.*\)$/\1-gnu\2/'` - esac - -@@ -1270,6 +1270,24 @@ - dynamic_linker='GNU/Linux ld.so' - ;; - -+linux-uclibc*) -+ version_type=linux -+ need_lib_prefix=no -+ need_version=no -+ library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' -+ soname_spec='${libname}${release}.so$major' -+ finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' -+ shlibpath_var=LD_LIBRARY_PATH -+ shlibpath_overrides_runpath=no -+ # This implies no fast_install, which is unacceptable. -+ # Some rework will be needed to allow for fast_install -+ # before this can be enabled. -+ # Note: copied from linux-gnu, and may not be appropriate. -+ hardcode_into_libs=yes -+ # Assume using the uClibc dynamic linker. -+ dynamic_linker="uClibc ld.so" -+ ;; -+ - netbsd*) - need_lib_prefix=no - need_version=no ---- gdb-6.3/opcodes/configure.orig Fri Sep 17 08:13:38 2004 -+++ gdb-6.3/opcodes/configure Mon Feb 28 00:09:42 2005 -@@ -3595,6 +3595,11 @@ - fi - ;; - -+linux-uclibc*) -+ lt_cv_deplibs_check_method=pass_all -+ lt_cv_file_magic_test_file=`echo /lib/libuClibc-*.so` -+ ;; -+ - newsos6) - lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (executable|dynamic lib)' - lt_cv_file_magic_cmd=/usr/bin/file diff --git a/patches/gdb/6.4/110-uclibc-readline-conf.patch b/patches/gdb/6.4/110-uclibc-readline-conf.patch deleted file mode 100644 index ffe792d..0000000 --- a/patches/gdb/6.4/110-uclibc-readline-conf.patch +++ /dev/null @@ -1,15 +0,0 @@ ---- gdb-6.1.1-dist/readline/configure 2003-05-27 18:29:47.000000000 -0500 -+++ gdb-6.1.1/readline/configure 2004-08-09 14:20:23.000000000 -0500 -@@ -6249,7 +6249,12 @@ - - - echo "$as_me:$LINENO: checking for mbstate_t" >&5 -+echo $ECHO_N "bash_cv_have_mbstate_t=$bash_cv_have_mbstate_t" >&6 - echo $ECHO_N "checking for mbstate_t... $ECHO_C" >&6 -+if test "${bash_cv_have_mbstate_t+set}" != set; then -+ bash_cv_have_mbstate_t=yes -+ echo $ECHO_N "WARNING!! forcing to yes!!! $ECHO_C" >&6 -+fi - if test "${bash_cv_have_mbstate_t+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 - else diff --git a/patches/gdb/6.4/120-thread-timeout.patch b/patches/gdb/6.4/120-thread-timeout.patch deleted file mode 100644 index 6db0a7a..0000000 --- a/patches/gdb/6.4/120-thread-timeout.patch +++ /dev/null @@ -1,34 +0,0 @@ ---- gdb-6.3.org/gdb/gdbserver/thread-db.c 2004-10-17 02:42:00.000000000 +0900 -+++ gdb-6.3/gdb/gdbserver/thread-db.c 2005-01-27 12:19:29.000000000 +0900 -@@ -21,6 +21,7 @@ - Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ - -+#include - #include "server.h" - - #include "linux-low.h" -@@ -142,6 +143,7 @@ - td_event_msg_t msg; - td_err_e err; - struct inferior_linux_data *tdata; -+ int timeout; - - if (debug_threads) - fprintf (stderr, "Thread creation event.\n"); -@@ -152,7 +154,13 @@ - In the LinuxThreads implementation, this is safe, - because all events come from the manager thread - (except for its own creation, of course). */ -- err = td_ta_event_getmsg (thread_agent, &msg); -+ for (timeout = 0; timeout < 50000; timeout++) -+ { -+ err = td_ta_event_getmsg (thread_agent, &msg); -+ if (err != TD_NOMSG) -+ break; -+ usleep(1000); -+ } - if (err != TD_OK) - fprintf (stderr, "thread getmsg err: %s\n", - thread_db_err_str (err)); - diff --git a/patches/gdb/6.4/130-fix-compile-flag-mismatch.patch b/patches/gdb/6.4/130-fix-compile-flag-mismatch.patch deleted file mode 100644 index 659a5f0..0000000 --- a/patches/gdb/6.4/130-fix-compile-flag-mismatch.patch +++ /dev/null @@ -1,87 +0,0 @@ -diff -ur gdb-6.4/gdb/configure gdb-6.4-patched/gdb/configure ---- gdb-6.4/gdb/configure 2005-07-25 10:08:40.000000000 -0500 -+++ gdb-6.4-patched/gdb/configure 2007-02-05 13:22:36.000000000 -0600 -@@ -309,7 +309,7 @@ - # include - #endif" - --ac_subdirs_all="$ac_subdirs_all doc testsuite" -+ac_subdirs_all="$ac_subdirs_all doc" - ac_subdirs_all="$ac_subdirs_all gdbtk" - ac_subdirs_all="$ac_subdirs_all multi-ice" - ac_subdirs_all="$ac_subdirs_all gdbserver" -@@ -5940,7 +5940,7 @@ - - - --subdirs="$subdirs doc testsuite" -+subdirs="$subdirs doc" - - - . $srcdir/configure.host -diff -ur gdb-6.4/gdb/gdbserver/configure gdb-6.4-patched/gdb/gdbserver/configure ---- gdb-6.4/gdb/gdbserver/configure 2005-09-17 18:14:37.000000000 -0500 -+++ gdb-6.4-patched/gdb/gdbserver/configure 2007-02-05 13:22:58.000000000 -0600 -@@ -1239,7 +1239,7 @@ - ac_cache_corrupted=: ;; - ,);; - *) -- if test "x$ac_old_val" != "x$ac_new_val"; then -+ if test "`echo $ac_old_val`" != "`echo $ac_new_val`"; then - { echo "$as_me:$LINENO: error: \`$ac_var' has changed since the previous run:" >&5 - echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} - { echo "$as_me:$LINENO: former value: $ac_old_val" >&5 -diff -ur gdb-6.4/gdb/testsuite/configure gdb-6.4-patched/gdb/testsuite/configure ---- gdb-6.4/gdb/testsuite/configure 2005-04-11 09:13:12.000000000 -0500 -+++ gdb-6.4-patched/gdb/testsuite/configure 2007-02-05 13:22:36.000000000 -0600 -@@ -1248,7 +1248,7 @@ - ac_cache_corrupted=: ;; - ,);; - *) -- if test "x$ac_old_val" != "x$ac_new_val"; then -+ if test "`echo $ac_old_val" != "`echo $ac_new_val"; then - { echo "$as_me:$LINENO: error: \`$ac_var' has changed since the previous run:" >&5 - echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} - { echo "$as_me:$LINENO: former value: $ac_old_val" >&5 -diff -ur gdb-6.4/Makefile.in gdb-6.4-patched/Makefile.in ---- gdb-6.4/Makefile.in 2005-12-01 23:29:54.000000000 -0600 -+++ gdb-6.4-patched/Makefile.in 2007-02-05 13:22:36.000000000 -0600 -@@ -383,7 +383,7 @@ - # CFLAGS will be just -g. We want to ensure that TARGET libraries - # (which we know are built with gcc) are built with optimizations so - # prepend -O2 when setting CFLAGS_FOR_TARGET. --CFLAGS_FOR_TARGET = -O2 $(CFLAGS) $(SYSROOT_CFLAGS_FOR_TARGET) -+CFLAGS_FOR_TARGET = $(strip $(CFLAGS) $(SYSROOT_CFLAGS_FOR_TARGET)) - SYSROOT_CFLAGS_FOR_TARGET = @SYSROOT_CFLAGS_FOR_TARGET@ - - # If GCC_FOR_TARGET is not overriden on the command line, then this -@@ -423,7 +423,7 @@ - fi; \ - fi` - --CXXFLAGS_FOR_TARGET = $(CXXFLAGS) $(SYSROOT_CFLAGS_FOR_TARGET) -+CXXFLAGS_FOR_TARGET = $(strip $(CXXFLAGS) $(SYSROOT_CFLAGS_FOR_TARGET)) - LIBCXXFLAGS_FOR_TARGET = $(CXXFLAGS_FOR_TARGET) -fno-implicit-templates - - GCJ_FOR_TARGET=$(STAGE_CC_WRAPPER) @GCJ_FOR_TARGET@ $(FLAGS_FOR_TARGET) -diff -ur gdb-6.4/Makefile.tpl gdb-6.4-patched/Makefile.tpl ---- gdb-6.4/Makefile.tpl 2005-10-22 05:37:55.000000000 -0500 -+++ gdb-6.4-patched/Makefile.tpl 2007-02-05 13:22:36.000000000 -0600 -@@ -386,7 +386,7 @@ - # CFLAGS will be just -g. We want to ensure that TARGET libraries - # (which we know are built with gcc) are built with optimizations so - # prepend -O2 when setting CFLAGS_FOR_TARGET. --CFLAGS_FOR_TARGET = -O2 $(CFLAGS) $(SYSROOT_CFLAGS_FOR_TARGET) -+CFLAGS_FOR_TARGET = $(strip $(CFLAGS) $(SYSROOT_CFLAGS_FOR_TARGET)) - SYSROOT_CFLAGS_FOR_TARGET = @SYSROOT_CFLAGS_FOR_TARGET@ - - # If GCC_FOR_TARGET is not overriden on the command line, then this -@@ -426,7 +426,7 @@ - fi; \ - fi` - --CXXFLAGS_FOR_TARGET = $(CXXFLAGS) $(SYSROOT_CFLAGS_FOR_TARGET) -+CXXFLAGS_FOR_TARGET = $(strip $(CXXFLAGS) $(SYSROOT_CFLAGS_FOR_TARGET)) - LIBCXXFLAGS_FOR_TARGET = $(CXXFLAGS_FOR_TARGET) -fno-implicit-templates - - GCJ_FOR_TARGET=$(STAGE_CC_WRAPPER) @GCJ_FOR_TARGET@ $(FLAGS_FOR_TARGET) diff --git a/patches/gdb/6.4/400-mips-coredump.patch-2.4.23-29 b/patches/gdb/6.4/400-mips-coredump.patch-2.4.23-29 deleted file mode 100644 index 4e17ba7..0000000 --- a/patches/gdb/6.4/400-mips-coredump.patch-2.4.23-29 +++ /dev/null @@ -1,28 +0,0 @@ -Sometime around 2.4.22-23, the mips pt_regs.h fields were reordered, breaking -coredump handling by gdb for current kernels. Update the hardcoded constants -to reflect the change. ---- gdb-6.2.1/gdb/mips-linux-tdep.c-orig 2004-10-29 14:23:55.000000000 -0500 -+++ gdb-6.2.1/gdb/mips-linux-tdep.c 2004-10-29 14:26:44.000000000 -0500 -@@ -53,12 +53,22 @@ - - #define EF_REG0 6 - #define EF_REG31 37 -+ -+#if 0 - #define EF_LO 38 - #define EF_HI 39 - #define EF_CP0_EPC 40 - #define EF_CP0_BADVADDR 41 - #define EF_CP0_STATUS 42 - #define EF_CP0_CAUSE 43 -+#else -+#define EF_CP0_STATUS 38 -+#define EF_LO 39 -+#define EF_HI 40 -+#define EF_CP0_BADVADDR 41 -+#define EF_CP0_CAUSE 42 -+#define EF_CP0_EPC 43 -+#endif - - #define EF_SIZE 180 - diff --git a/patches/gdb/6.5/100-uclibc-conf.patch b/patches/gdb/6.5/100-uclibc-conf.patch deleted file mode 100644 index 9d8fd4e..0000000 --- a/patches/gdb/6.5/100-uclibc-conf.patch +++ /dev/null @@ -1,78 +0,0 @@ ---- gdb-6.3/bfd/configure.orig Fri Oct 8 16:53:56 2004 -+++ gdb-6.3/bfd/configure Sun Feb 27 18:32:58 2005 -@@ -3583,6 +3583,11 @@ - lt_cv_file_magic_test_file=`echo /lib/libc.so* /lib/libc-*.so` - ;; - -+linux-uclibc*) -+ lt_cv_deplibs_check_method=pass_all -+ lt_cv_file_magic_test_file=`echo /lib/libuClibc-*.so` -+ ;; -+ - netbsd* | knetbsd*-gnu) - if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then - lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$' ---- gdb-6.3/libtool.m4.orig Wed Jul 21 21:21:41 2004 -+++ gdb-6.3/libtool.m4 Mon Feb 28 00:08:11 2005 -@@ -653,6 +653,11 @@ - fi - ;; - -+linux-uclibc*) -+ lt_cv_deplibs_check_method=pass_all -+ lt_cv_file_magic_test_file=`echo /lib/libuClibc-*.so` -+ ;; -+ - newsos6) - [lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (executable|dynamic lib)'] - lt_cv_file_magic_cmd=/usr/bin/file ---- gdb-6.3/ltconfig.orig Tue Oct 5 15:34:42 2004 -+++ gdb-6.3/ltconfig Sun Feb 27 18:14:41 2005 -@@ -602,7 +602,7 @@ - - # Transform linux* to *-*-linux-gnu*, to support old configure scripts. - case $host_os in --linux-gnu*) ;; -+linux-gnu*|linux-uclibc*) ;; - linux*) host=`echo $host | sed 's/^\(.*-.*-linux\)\(.*\)$/\1-gnu\2/'` - esac - -@@ -1270,6 +1270,24 @@ - dynamic_linker='GNU/Linux ld.so' - ;; - -+linux-uclibc*) -+ version_type=linux -+ need_lib_prefix=no -+ need_version=no -+ library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' -+ soname_spec='${libname}${release}.so$major' -+ finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' -+ shlibpath_var=LD_LIBRARY_PATH -+ shlibpath_overrides_runpath=no -+ # This implies no fast_install, which is unacceptable. -+ # Some rework will be needed to allow for fast_install -+ # before this can be enabled. -+ # Note: copied from linux-gnu, and may not be appropriate. -+ hardcode_into_libs=yes -+ # Assume using the uClibc dynamic linker. -+ dynamic_linker="uClibc ld.so" -+ ;; -+ - netbsd*) - need_lib_prefix=no - need_version=no ---- gdb-6.3/opcodes/configure.orig Fri Sep 17 08:13:38 2004 -+++ gdb-6.3/opcodes/configure Mon Feb 28 00:09:42 2005 -@@ -3595,6 +3595,11 @@ - fi - ;; - -+linux-uclibc*) -+ lt_cv_deplibs_check_method=pass_all -+ lt_cv_file_magic_test_file=`echo /lib/libuClibc-*.so` -+ ;; -+ - newsos6) - lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (executable|dynamic lib)' - lt_cv_file_magic_cmd=/usr/bin/file diff --git a/patches/gdb/6.5/110-uclibc-readline-conf.patch b/patches/gdb/6.5/110-uclibc-readline-conf.patch deleted file mode 100644 index ffe792d..0000000 --- a/patches/gdb/6.5/110-uclibc-readline-conf.patch +++ /dev/null @@ -1,15 +0,0 @@ ---- gdb-6.1.1-dist/readline/configure 2003-05-27 18:29:47.000000000 -0500 -+++ gdb-6.1.1/readline/configure 2004-08-09 14:20:23.000000000 -0500 -@@ -6249,7 +6249,12 @@ - - - echo "$as_me:$LINENO: checking for mbstate_t" >&5 -+echo $ECHO_N "bash_cv_have_mbstate_t=$bash_cv_have_mbstate_t" >&6 - echo $ECHO_N "checking for mbstate_t... $ECHO_C" >&6 -+if test "${bash_cv_have_mbstate_t+set}" != set; then -+ bash_cv_have_mbstate_t=yes -+ echo $ECHO_N "WARNING!! forcing to yes!!! $ECHO_C" >&6 -+fi - if test "${bash_cv_have_mbstate_t+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 - else diff --git a/patches/gdb/6.5/120-thread-timeout.patch b/patches/gdb/6.5/120-thread-timeout.patch deleted file mode 100644 index d6f5dd8..0000000 --- a/patches/gdb/6.5/120-thread-timeout.patch +++ /dev/null @@ -1,33 +0,0 @@ ---- gdb-6.5/./gdb/gdbserver/thread-db.c.orig 2006-03-15 08:13:29.000000000 -0800 -+++ gdb-6.5/./gdb/gdbserver/thread-db.c 2008-04-01 21:21:23.000000000 -0700 -@@ -21,6 +21,7 @@ - Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110-1301, USA. */ - -+#include - #include "server.h" - - #include "linux-low.h" -@@ -134,6 +135,7 @@ thread_db_create_event (CORE_ADDR where) - td_event_msg_t msg; - td_err_e err; - struct inferior_linux_data *tdata; -+ int timeout; - - if (debug_threads) - fprintf (stderr, "Thread creation event.\n"); -@@ -144,7 +146,13 @@ thread_db_create_event (CORE_ADDR where) - In the LinuxThreads implementation, this is safe, - because all events come from the manager thread - (except for its own creation, of course). */ -- err = td_ta_event_getmsg (thread_agent, &msg); -+ for (timeout = 0; timeout < 50000; timeout++) -+ { -+ err = td_ta_event_getmsg (thread_agent, &msg); -+ if (err != TD_NOMSG) -+ break; -+ usleep(1000); -+ } - if (err != TD_OK) - fprintf (stderr, "thread getmsg err: %s\n", - thread_db_err_str (err)); diff --git a/patches/gdb/6.5/130-fix-compile-flag-mismatch.patch b/patches/gdb/6.5/130-fix-compile-flag-mismatch.patch deleted file mode 100644 index ba98482..0000000 --- a/patches/gdb/6.5/130-fix-compile-flag-mismatch.patch +++ /dev/null @@ -1,69 +0,0 @@ -diff -ur gdb-6.4/gdb/configure gdb-6.4-patched/gdb/configure ---- gdb-6.4/gdb/configure 2005-07-25 10:08:40.000000000 -0500 -+++ gdb-6.4-patched/gdb/configure 2007-02-05 13:22:36.000000000 -0600 -@@ -309,7 +309,7 @@ - # include - #endif" - --ac_subdirs_all="$ac_subdirs_all doc testsuite" -+ac_subdirs_all="$ac_subdirs_all doc" - ac_subdirs_all="$ac_subdirs_all gdbtk" - ac_subdirs_all="$ac_subdirs_all multi-ice" - ac_subdirs_all="$ac_subdirs_all gdbserver" -@@ -5940,7 +5940,7 @@ - - - --subdirs="$subdirs doc testsuite" -+subdirs="$subdirs doc" - - - . $srcdir/configure.host -diff -ur gdb-6.4/gdb/gdbserver/configure gdb-6.4-patched/gdb/gdbserver/configure ---- gdb-6.4/gdb/gdbserver/configure 2005-09-17 18:14:37.000000000 -0500 -+++ gdb-6.4-patched/gdb/gdbserver/configure 2007-02-05 13:22:58.000000000 -0600 -@@ -1239,7 +1239,7 @@ - ac_cache_corrupted=: ;; - ,);; - *) -- if test "x$ac_old_val" != "x$ac_new_val"; then -+ if test "`echo $ac_old_val`" != "`echo $ac_new_val`"; then - { echo "$as_me:$LINENO: error: \`$ac_var' has changed since the previous run:" >&5 - echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} - { echo "$as_me:$LINENO: former value: $ac_old_val" >&5 -diff -ur gdb-6.4/gdb/testsuite/configure gdb-6.4-patched/gdb/testsuite/configure ---- gdb-6.4/gdb/testsuite/configure 2005-04-11 09:13:12.000000000 -0500 -+++ gdb-6.4-patched/gdb/testsuite/configure 2007-02-05 13:22:36.000000000 -0600 -@@ -1248,7 +1248,7 @@ - ac_cache_corrupted=: ;; - ,);; - *) -- if test "x$ac_old_val" != "x$ac_new_val"; then -+ if test "`echo $ac_old_val" != "`echo $ac_new_val"; then - { echo "$as_me:$LINENO: error: \`$ac_var' has changed since the previous run:" >&5 - echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} - { echo "$as_me:$LINENO: former value: $ac_old_val" >&5 -diff -ur gdb-6.4/Makefile.in gdb-6.4-patched/Makefile.in ---- gdb-6.4/Makefile.in 2005-12-01 23:29:54.000000000 -0600 -+++ gdb-6.4-patched/Makefile.in 2007-02-05 13:22:36.000000000 -0600 -@@ -383,7 +383,7 @@ - # CFLAGS will be just -g. We want to ensure that TARGET libraries - # (which we know are built with gcc) are built with optimizations so - # prepend -O2 when setting CFLAGS_FOR_TARGET. --CFLAGS_FOR_TARGET = -O2 $(CFLAGS) $(SYSROOT_CFLAGS_FOR_TARGET) -+CFLAGS_FOR_TARGET = $(strip $(CFLAGS) $(SYSROOT_CFLAGS_FOR_TARGET)) - SYSROOT_CFLAGS_FOR_TARGET = @SYSROOT_CFLAGS_FOR_TARGET@ - - # If GCC_FOR_TARGET is not overriden on the command line, then this -diff -ur gdb-6.4/Makefile.tpl gdb-6.4-patched/Makefile.tpl ---- gdb-6.4/Makefile.tpl 2005-10-22 05:37:55.000000000 -0500 -+++ gdb-6.4-patched/Makefile.tpl 2007-02-05 13:22:36.000000000 -0600 -@@ -386,7 +386,7 @@ - # CFLAGS will be just -g. We want to ensure that TARGET libraries - # (which we know are built with gcc) are built with optimizations so - # prepend -O2 when setting CFLAGS_FOR_TARGET. --CFLAGS_FOR_TARGET = -O2 $(CFLAGS) $(SYSROOT_CFLAGS_FOR_TARGET) -+CFLAGS_FOR_TARGET = $(strip $(CFLAGS) $(SYSROOT_CFLAGS_FOR_TARGET)) - SYSROOT_CFLAGS_FOR_TARGET = @SYSROOT_CFLAGS_FOR_TARGET@ - - # If GCC_FOR_TARGET is not overriden on the command line, then this diff --git a/patches/gdb/6.5/400-mips-coredump.patch-2.4.23-29 b/patches/gdb/6.5/400-mips-coredump.patch-2.4.23-29 deleted file mode 100644 index 4e17ba7..0000000 --- a/patches/gdb/6.5/400-mips-coredump.patch-2.4.23-29 +++ /dev/null @@ -1,28 +0,0 @@ -Sometime around 2.4.22-23, the mips pt_regs.h fields were reordered, breaking -coredump handling by gdb for current kernels. Update the hardcoded constants -to reflect the change. ---- gdb-6.2.1/gdb/mips-linux-tdep.c-orig 2004-10-29 14:23:55.000000000 -0500 -+++ gdb-6.2.1/gdb/mips-linux-tdep.c 2004-10-29 14:26:44.000000000 -0500 -@@ -53,12 +53,22 @@ - - #define EF_REG0 6 - #define EF_REG31 37 -+ -+#if 0 - #define EF_LO 38 - #define EF_HI 39 - #define EF_CP0_EPC 40 - #define EF_CP0_BADVADDR 41 - #define EF_CP0_STATUS 42 - #define EF_CP0_CAUSE 43 -+#else -+#define EF_CP0_STATUS 38 -+#define EF_LO 39 -+#define EF_HI 40 -+#define EF_CP0_BADVADDR 41 -+#define EF_CP0_CAUSE 42 -+#define EF_CP0_EPC 43 -+#endif - - #define EF_SIZE 180 - diff --git a/patches/uClibc/0.9.28.1/100-string-functions.patch b/patches/uClibc/0.9.28.1/100-string-functions.patch deleted file mode 100644 index ab6c255..0000000 --- a/patches/uClibc/0.9.28.1/100-string-functions.patch +++ /dev/null @@ -1,14 +0,0 @@ -Give preference to target-optimised functions over glibc's ones, -which in turn ahave precedence over generic ones. - ---- uClibc.orig/libc/Makefile 2005-07-20 08:10:44.000000000 +0200 -+++ uclibc/libc/Makefile 2005-07-28 13:33:40.000000000 +0200 -@@ -59,7 +59,7 @@ - $(AR) dN 2 $(LIBNAME) $$objs && \ - $(AR) dN 2 $(LIBNAME) $$objs - @for objfile in obj.signal \ -- obj.string.generic obj.string.$(TARGET_ARCH) obj.string \ -+ obj.string obj.string.generic obj.string.$(TARGET_ARCH) \ - obj.sysdeps.common obj.sysdeps.$(TARGET_ARCH) ; do \ - if [ -e $$objfile ] ; then \ - echo $(AR) $(ARFLAGS) $(LIBNAME) $$objfile ; \ diff --git a/patches/uClibc/0.9.28.1/110-install_dev.patch b/patches/uClibc/0.9.28.1/110-install_dev.patch deleted file mode 100644 index 2fefe83..0000000 --- a/patches/uClibc/0.9.28.1/110-install_dev.patch +++ /dev/null @@ -1,22 +0,0 @@ -We know that the kernel headers are in place. Don't try to install them. - -diff -dur uClibc-0.9.28.1.orig/Makefile uClibc-0.9.28.1/Makefile ---- uClibc-0.9.28.1.orig/Makefile 2007-01-28 06:38:00.000000000 +0100 -+++ uClibc-0.9.28.1/Makefile 2007-01-28 18:55:46.000000000 +0100 -@@ -158,12 +158,10 @@ - $(INSTALL) -d $(PREFIX)$(DEVEL_PREFIX)lib - $(INSTALL) -d $(PREFIX)$(DEVEL_PREFIX)include - -$(INSTALL) -m 644 lib/*.[ao] $(PREFIX)$(DEVEL_PREFIX)lib/ -- if [ "$(KERNEL_SOURCE)" = "$(DEVEL_PREFIX)" ] ; then \ -- extra_exclude="--exclude include/linux --exclude include/asm'*'" ; \ -- else \ -- extra_exclude="" ; \ -- fi ; \ -- tar -chf - include --exclude .svn --exclude CVS $$extra_exclude \ -+ extra_exclude="--exclude include/linux --exclude include/asm'*'" ; \ -+ tar -chf - include --exclude .svn --exclude CVS \ -+ --exclude include/linux \ -+ --exclude include/asm'*' \ - | tar -xf - -C $(PREFIX)$(DEVEL_PREFIX) - ifneq ($(strip $(UCLIBC_HAS_FLOATS)),y) - # Remove floating point related headers since float support is disabled. diff --git a/patches/uClibc/0.9.28.1/120-no_LFS-no_readahead.patch b/patches/uClibc/0.9.28.1/120-no_LFS-no_readahead.patch deleted file mode 100644 index ca0568c..0000000 --- a/patches/uClibc/0.9.28.1/120-no_LFS-no_readahead.patch +++ /dev/null @@ -1,14 +0,0 @@ -diff -dur uClibc-0.9.28.1.orig/libc/sysdeps/linux/common/Makefile uClibc-0.9.28.1/libc/sysdeps/linux/common/Makefile ---- uClibc-0.9.28.1.orig/libc/sysdeps/linux/common/Makefile 2007-01-26 00:54:19.000000000 +0100 -+++ uClibc-0.9.28.1/libc/sysdeps/linux/common/Makefile 2007-02-01 08:44:37.000000000 +0100 -@@ -25,6 +25,10 @@ - SRCS := $(filter-out sbrk.c,$(SRCS)) - endif - -+ifneq ($(strip $(UCLIBC_HAS_LFS)),y) -+SRCS := $(filter-out readahead.c,$(SRCS)) -+endif -+ - ifneq ($(strip $(UCLIBC_HAS_SSP)),y) - SRCS := $(filter-out ssp.c,$(SRCS)) - endif diff --git a/patches/uClibc/0.9.28.1/130-time-locale.patch b/patches/uClibc/0.9.28.1/130-time-locale.patch deleted file mode 100644 index f449ad6..0000000 --- a/patches/uClibc/0.9.28.1/130-time-locale.patch +++ /dev/null @@ -1,15 +0,0 @@ -Index: libc/misc/time/time.c -=================================================================== ---- a/libc/misc/time/time.c (revision 17534) -+++ b/libc/misc/time/time.c (revision 17647) -@@ -158,7 +158,9 @@ - #endif - - #if defined (L_tzset) || defined (L_localtime_r) || defined(L_strftime) || \ -- defined(L__time_mktime) || defined(L__time_mktime_tzi) -+ defined(L__time_mktime) || defined(L__time_mktime_tzi) || \ -+ ((defined(L_strftime) || defined(L_strftime_l)) && \ -+ defined(__UCLIBC_HAS_XLOCALE__)) - - void _time_tzset (int); - diff --git a/patches/uClibc/0.9.28.1/140-ctype.patch b/patches/uClibc/0.9.28.1/140-ctype.patch deleted file mode 100644 index b07ccdb..0000000 --- a/patches/uClibc/0.9.28.1/140-ctype.patch +++ /dev/null @@ -1,17 +0,0 @@ -diff -urN uClibc-dist/libc/sysdeps/linux/common/bits/uClibc_touplow.h uClibc/libc/sysdeps/linux/common/bits/uClibc_touplow.h ---- uClibc-dist/libc/sysdeps/linux/common/bits/uClibc_touplow.h Fri Jun 3 13:30:25 2005 -+++ uClibc/libc/sysdeps/linux/common/bits/uClibc_touplow.h Fri Jun 3 13:30:39 2005 -@@ -34,11 +34,11 @@ - - /* glibc uses the equivalent of - typedef __int32_t __ctype_touplow_t; */ - --typedef __uint16_t __ctype_mask_t; -+typedef __uint32_t __ctype_mask_t; - - #ifdef __UCLIBC_HAS_CTYPE_SIGNED__ - --typedef __int16_t __ctype_touplow_t; -+typedef __int32_t __ctype_touplow_t; - #define __UCLIBC_CTYPE_B_TBL_OFFSET 128 - #define __UCLIBC_CTYPE_TO_TBL_OFFSET 128 - diff --git a/patches/uClibc/0.9.28.1/150-custom-ISA.patch b/patches/uClibc/0.9.28.1/150-custom-ISA.patch deleted file mode 100644 index 2cc9bcb..0000000 --- a/patches/uClibc/0.9.28.1/150-custom-ISA.patch +++ /dev/null @@ -1,31 +0,0 @@ -diff -dur uClibc-0.9.28.orig/Rules.mak uClibc-0.9.28/Rules.mak ---- uClibc-0.9.28.orig/Rules.mak 2005-08-18 00:49:49.000000000 +0200 -+++ uClibc-0.9.28/Rules.mak 2007-01-30 10:53:34.000000000 +0100 -@@ -168,6 +168,7 @@ - CPU_CFLAGS-$(CONFIG_MIPS_ISA_4)+=-mips4 -mtune=mips4 - CPU_CFLAGS-$(CONFIG_MIPS_ISA_MIPS32)+=-mips32 -mtune=mips32 - CPU_CFLAGS-$(CONFIG_MIPS_ISA_MIPS64)+=-mips64 -mtune=mips32 -+ CPU_CFLAGS-$(CONFIG_MIPS_ISA_CUSTOM)+=-march=$(CONFIG_MIPS_CPU_CFLAGS_CUSTOM) - endif - - ifeq ($(strip $(TARGET_ARCH)),sh) -diff -dur uClibc-0.9.28.orig/extra/Configs/Config.mips uClibc-0.9.28/extra/Configs/Config.mips ---- uClibc-0.9.28.orig/extra/Configs/Config.mips 2005-08-18 00:49:41.000000000 +0200 -+++ uClibc-0.9.28/extra/Configs/Config.mips 2007-01-30 10:52:12.000000000 +0100 -@@ -63,4 +63,16 @@ - config CONFIG_MIPS_ISA_MIPS64 - bool "MIPS64" - -+config CONFIG_MIPS_ISA_CUSTOM -+ bool "Custom" -+ - endchoice -+ -+config CONFIG_MIPS_CPU_CFLAGS_CUSTOM -+ string -+ prompt "Custon ISA" -+ depends on CONFIG_MIPS_ISA_CUSTOM -+ default "" -+ help -+ Enter your custom ISA here (eg: lx4189!). -+ diff --git a/patches/uClibc/0.9.28.1/160-mips-asm.h.patch b/patches/uClibc/0.9.28.1/160-mips-asm.h.patch deleted file mode 100644 index 285feed..0000000 --- a/patches/uClibc/0.9.28.1/160-mips-asm.h.patch +++ /dev/null @@ -1,41 +0,0 @@ -diff -dur uClibc-0.9.28.1.orig/libc/sysdeps/linux/mips/clone.S uClibc-0.9.28.1/libc/sysdeps/linux/mips/clone.S ---- uClibc-0.9.28.1.orig/libc/sysdeps/linux/mips/clone.S 2007-02-07 11:18:12.000000000 +0100 -+++ uClibc-0.9.28.1/libc/sysdeps/linux/mips/clone.S 2007-02-07 10:41:34.000000000 +0100 -@@ -24,7 +24,7 @@ - #include - #define _ERRNO_H 1 - #include --#include -+#include - - /* int clone(int (*fn)(void *arg), void *child_stack, int flags, void *arg) */ - -diff -dur uClibc-0.9.28.1.orig/libc/sysdeps/linux/mips/pipe.S uClibc-0.9.28.1/libc/sysdeps/linux/mips/pipe.S ---- uClibc-0.9.28.1.orig/libc/sysdeps/linux/mips/pipe.S 2007-02-07 11:18:12.000000000 +0100 -+++ uClibc-0.9.28.1/libc/sysdeps/linux/mips/pipe.S 2007-02-07 11:16:52.000000000 +0100 -@@ -3,9 +3,9 @@ - /*see uClibc's sh/pipe.c and glibc-2.2.4's mips/pipe.S */ - - #include --#include -+#include - #include --#include -+#include - - .globl pipe - .ent pipe, 0 -diff -dur uClibc-0.9.28.1.orig/libc/sysdeps/linux/mips/syscall.S uClibc-0.9.28.1/libc/sysdeps/linux/mips/syscall.S ---- uClibc-0.9.28.1.orig/libc/sysdeps/linux/mips/syscall.S 2007-02-07 11:18:12.000000000 +0100 -+++ uClibc-0.9.28.1/libc/sysdeps/linux/mips/syscall.S 2007-02-07 11:17:03.000000000 +0100 -@@ -17,8 +17,8 @@ - 02111-1307 USA. */ - - #include --#include --#include -+#include -+#include - - #ifdef __PIC__ - .option pic2 diff --git a/patches/uClibc/0.9.28.2/100-string-functions.patch b/patches/uClibc/0.9.28.2/100-string-functions.patch deleted file mode 100644 index ab6c255..0000000 --- a/patches/uClibc/0.9.28.2/100-string-functions.patch +++ /dev/null @@ -1,14 +0,0 @@ -Give preference to target-optimised functions over glibc's ones, -which in turn ahave precedence over generic ones. - ---- uClibc.orig/libc/Makefile 2005-07-20 08:10:44.000000000 +0200 -+++ uclibc/libc/Makefile 2005-07-28 13:33:40.000000000 +0200 -@@ -59,7 +59,7 @@ - $(AR) dN 2 $(LIBNAME) $$objs && \ - $(AR) dN 2 $(LIBNAME) $$objs - @for objfile in obj.signal \ -- obj.string.generic obj.string.$(TARGET_ARCH) obj.string \ -+ obj.string obj.string.generic obj.string.$(TARGET_ARCH) \ - obj.sysdeps.common obj.sysdeps.$(TARGET_ARCH) ; do \ - if [ -e $$objfile ] ; then \ - echo $(AR) $(ARFLAGS) $(LIBNAME) $$objfile ; \ diff --git a/patches/uClibc/0.9.28.2/110-install_dev.patch b/patches/uClibc/0.9.28.2/110-install_dev.patch deleted file mode 100644 index 4b42467..0000000 --- a/patches/uClibc/0.9.28.2/110-install_dev.patch +++ /dev/null @@ -1,22 +0,0 @@ -We know that the kernel headers are in place. Don't try to install them. - -diff -dur uClibc-0.9.28.1.orig/Makefile uClibc-0.9.28.1/Makefile ---- uClibc-0.9.28.1.orig/Makefile 2007-01-28 06:38:00.000000000 +0100 -+++ uClibc-0.9.28.1/Makefile 2007-01-28 18:55:46.000000000 +0100 -@@ -158,12 +158,10 @@ - $(INSTALL) -d $(PREFIX)$(DEVEL_PREFIX)lib - $(INSTALL) -d $(PREFIX)$(DEVEL_PREFIX)include - -$(INSTALL) -m 644 lib/*.[ao] $(PREFIX)$(DEVEL_PREFIX)lib/ -- if [ "$(KERNEL_SOURCE)" = "$(DEVEL_PREFIX)" ] ; then \ -- extra_exclude="--exclude include/linux --exclude include/asm'*'" ; \ -- else \ -- extra_exclude="" ; \ -- fi ; \ -- tar -chf - include --exclude .svn --exclude CVS $$extra_exclude \ -+ extra_exclude="--exclude include/linux --exclude include/asm'*'" ; \ -+ tar -chf - include --exclude .svn --exclude CVS \ -+ --exclude include/linux \ -+ --exclude include/asm'*' \ - | tar -xf - -C $(PREFIX)$(DEVEL_PREFIX) - echo '/* Dont use _syscall#() macros; use the syscall() function */' > \ - $(PREFIX)$(DEVEL_PREFIX)include/bits/syscalls.h diff --git a/patches/uClibc/0.9.28.2/120-no_LFS-no_readahead.patch b/patches/uClibc/0.9.28.2/120-no_LFS-no_readahead.patch deleted file mode 100644 index ca0568c..0000000 --- a/patches/uClibc/0.9.28.2/120-no_LFS-no_readahead.patch +++ /dev/null @@ -1,14 +0,0 @@ -diff -dur uClibc-0.9.28.1.orig/libc/sysdeps/linux/common/Makefile uClibc-0.9.28.1/libc/sysdeps/linux/common/Makefile ---- uClibc-0.9.28.1.orig/libc/sysdeps/linux/common/Makefile 2007-01-26 00:54:19.000000000 +0100 -+++ uClibc-0.9.28.1/libc/sysdeps/linux/common/Makefile 2007-02-01 08:44:37.000000000 +0100 -@@ -25,6 +25,10 @@ - SRCS := $(filter-out sbrk.c,$(SRCS)) - endif - -+ifneq ($(strip $(UCLIBC_HAS_LFS)),y) -+SRCS := $(filter-out readahead.c,$(SRCS)) -+endif -+ - ifneq ($(strip $(UCLIBC_HAS_SSP)),y) - SRCS := $(filter-out ssp.c,$(SRCS)) - endif diff --git a/patches/uClibc/0.9.28.2/130-ctype.patch b/patches/uClibc/0.9.28.2/130-ctype.patch deleted file mode 100644 index b07ccdb..0000000 --- a/patches/uClibc/0.9.28.2/130-ctype.patch +++ /dev/null @@ -1,17 +0,0 @@ -diff -urN uClibc-dist/libc/sysdeps/linux/common/bits/uClibc_touplow.h uClibc/libc/sysdeps/linux/common/bits/uClibc_touplow.h ---- uClibc-dist/libc/sysdeps/linux/common/bits/uClibc_touplow.h Fri Jun 3 13:30:25 2005 -+++ uClibc/libc/sysdeps/linux/common/bits/uClibc_touplow.h Fri Jun 3 13:30:39 2005 -@@ -34,11 +34,11 @@ - - /* glibc uses the equivalent of - typedef __int32_t __ctype_touplow_t; */ - --typedef __uint16_t __ctype_mask_t; -+typedef __uint32_t __ctype_mask_t; - - #ifdef __UCLIBC_HAS_CTYPE_SIGNED__ - --typedef __int16_t __ctype_touplow_t; -+typedef __int32_t __ctype_touplow_t; - #define __UCLIBC_CTYPE_B_TBL_OFFSET 128 - #define __UCLIBC_CTYPE_TO_TBL_OFFSET 128 - diff --git a/patches/uClibc/0.9.28.2/140-custom-ISA.patch b/patches/uClibc/0.9.28.2/140-custom-ISA.patch deleted file mode 100644 index 2cc9bcb..0000000 --- a/patches/uClibc/0.9.28.2/140-custom-ISA.patch +++ /dev/null @@ -1,31 +0,0 @@ -diff -dur uClibc-0.9.28.orig/Rules.mak uClibc-0.9.28/Rules.mak ---- uClibc-0.9.28.orig/Rules.mak 2005-08-18 00:49:49.000000000 +0200 -+++ uClibc-0.9.28/Rules.mak 2007-01-30 10:53:34.000000000 +0100 -@@ -168,6 +168,7 @@ - CPU_CFLAGS-$(CONFIG_MIPS_ISA_4)+=-mips4 -mtune=mips4 - CPU_CFLAGS-$(CONFIG_MIPS_ISA_MIPS32)+=-mips32 -mtune=mips32 - CPU_CFLAGS-$(CONFIG_MIPS_ISA_MIPS64)+=-mips64 -mtune=mips32 -+ CPU_CFLAGS-$(CONFIG_MIPS_ISA_CUSTOM)+=-march=$(CONFIG_MIPS_CPU_CFLAGS_CUSTOM) - endif - - ifeq ($(strip $(TARGET_ARCH)),sh) -diff -dur uClibc-0.9.28.orig/extra/Configs/Config.mips uClibc-0.9.28/extra/Configs/Config.mips ---- uClibc-0.9.28.orig/extra/Configs/Config.mips 2005-08-18 00:49:41.000000000 +0200 -+++ uClibc-0.9.28/extra/Configs/Config.mips 2007-01-30 10:52:12.000000000 +0100 -@@ -63,4 +63,16 @@ - config CONFIG_MIPS_ISA_MIPS64 - bool "MIPS64" - -+config CONFIG_MIPS_ISA_CUSTOM -+ bool "Custom" -+ - endchoice -+ -+config CONFIG_MIPS_CPU_CFLAGS_CUSTOM -+ string -+ prompt "Custon ISA" -+ depends on CONFIG_MIPS_ISA_CUSTOM -+ default "" -+ help -+ Enter your custom ISA here (eg: lx4189!). -+ diff --git a/patches/uClibc/0.9.28.2/150-mips-asm.h.patch b/patches/uClibc/0.9.28.2/150-mips-asm.h.patch deleted file mode 100644 index 285feed..0000000 --- a/patches/uClibc/0.9.28.2/150-mips-asm.h.patch +++ /dev/null @@ -1,41 +0,0 @@ -diff -dur uClibc-0.9.28.1.orig/libc/sysdeps/linux/mips/clone.S uClibc-0.9.28.1/libc/sysdeps/linux/mips/clone.S ---- uClibc-0.9.28.1.orig/libc/sysdeps/linux/mips/clone.S 2007-02-07 11:18:12.000000000 +0100 -+++ uClibc-0.9.28.1/libc/sysdeps/linux/mips/clone.S 2007-02-07 10:41:34.000000000 +0100 -@@ -24,7 +24,7 @@ - #include - #define _ERRNO_H 1 - #include --#include -+#include - - /* int clone(int (*fn)(void *arg), void *child_stack, int flags, void *arg) */ - -diff -dur uClibc-0.9.28.1.orig/libc/sysdeps/linux/mips/pipe.S uClibc-0.9.28.1/libc/sysdeps/linux/mips/pipe.S ---- uClibc-0.9.28.1.orig/libc/sysdeps/linux/mips/pipe.S 2007-02-07 11:18:12.000000000 +0100 -+++ uClibc-0.9.28.1/libc/sysdeps/linux/mips/pipe.S 2007-02-07 11:16:52.000000000 +0100 -@@ -3,9 +3,9 @@ - /*see uClibc's sh/pipe.c and glibc-2.2.4's mips/pipe.S */ - - #include --#include -+#include - #include --#include -+#include - - .globl pipe - .ent pipe, 0 -diff -dur uClibc-0.9.28.1.orig/libc/sysdeps/linux/mips/syscall.S uClibc-0.9.28.1/libc/sysdeps/linux/mips/syscall.S ---- uClibc-0.9.28.1.orig/libc/sysdeps/linux/mips/syscall.S 2007-02-07 11:18:12.000000000 +0100 -+++ uClibc-0.9.28.1/libc/sysdeps/linux/mips/syscall.S 2007-02-07 11:17:03.000000000 +0100 -@@ -17,8 +17,8 @@ - 02111-1307 USA. */ - - #include --#include --#include -+#include -+#include - - #ifdef __PIC__ - .option pic2 diff --git a/patches/uClibc/0.9.28/100-string-functions.patch b/patches/uClibc/0.9.28/100-string-functions.patch deleted file mode 100644 index 4436bfe..0000000 --- a/patches/uClibc/0.9.28/100-string-functions.patch +++ /dev/null @@ -1,11 +0,0 @@ ---- uClibc.orig/libc/Makefile 2005-07-20 08:10:44.000000000 +0200 -+++ uclibc/libc/Makefile 2005-07-28 13:33:40.000000000 +0200 -@@ -59,7 +59,7 @@ - $(AR) dN 2 $(LIBNAME) $$objs && \ - $(AR) dN 2 $(LIBNAME) $$objs - @for objfile in obj.signal \ -- obj.string.generic obj.string.$(TARGET_ARCH) obj.string \ -+ obj.string obj.string.generic obj.string.$(TARGET_ARCH) \ - obj.sysdeps.common obj.sysdeps.$(TARGET_ARCH) ; do \ - if [ -e $$objfile ] ; then \ - echo $(AR) $(ARFLAGS) $(LIBNAME) $$objfile ; \ diff --git a/patches/uClibc/0.9.28/110-install_dev.patch b/patches/uClibc/0.9.28/110-install_dev.patch deleted file mode 100644 index 476525b..0000000 --- a/patches/uClibc/0.9.28/110-install_dev.patch +++ /dev/null @@ -1,39 +0,0 @@ -There are at least three weird glitches in the Makefile: - - the test operator is a dual-equal sign (==) when it should be a single one (=); - - the exclude options are not accepted as is by GNU tar; - - how on earth could KERNEL_SOURCE possibly be equal to DEVEL_PREFIX ??? - -We (Cedric DUVAL and I, Yann E. MORIN) are not quite sure why it is that way. -We're not quite sure either on how to solve this. - -What we need is to built a toolchain; in no way we need to install the linux headers. - ==> systematically exclude them from the [s]tar command. - -This patch is inspired by the svn repository of uClibc as of 20060209. -diff -dur /home/ymorin/dev/uClibc-0.9.28/Makefile uClibc-0.9.28/Makefile ---- /home/ymorin/dev/uClibc-0.9.28/Makefile 2005-08-18 00:49:49.000000000 +0200 -+++ uClibc-0.9.28/Makefile 2006-02-09 17:06:58.000000000 +0100 -@@ -158,12 +158,17 @@ - $(INSTALL) -d $(PREFIX)$(DEVEL_PREFIX)lib - $(INSTALL) -d $(PREFIX)$(DEVEL_PREFIX)include - -$(INSTALL) -m 644 lib/*.[ao] $(PREFIX)$(DEVEL_PREFIX)lib/ -- if [ "$(KERNEL_SOURCE)" == "$(DEVEL_PREFIX)" ] ; then \ -- extra_exclude="--exclude include/linux --exclude include/asm'*'" ; \ -- else \ -- extra_exclude="" ; \ -- fi ; \ -- tar -chf - include --exclude .svn --exclude CVS $$extra_exclude \ -+# if [ "$(KERNEL_SOURCE)" == "$(DEVEL_PREFIX)" ] ; then \ -+# extra_exclude="--exclude include/linux --exclude include/asm'*'" ; \ -+# else \ -+# extra_exclude="" ; \ -+# fi ; \ -+# tar -chf - include --exclude .svn --exclude CVS $$extra_exclude \ -+# | tar -xf - -C $(PREFIX)$(DEVEL_PREFIX) -+ printf ".svn\n.cvsignore\nCVS\n" > tar_exclude ; \ -+ ls -1d include/linux include/asm* >> tar_exclude ; \ -+ tar -chf - -X tar_exclude include \ - | tar -xf - -C $(PREFIX)$(DEVEL_PREFIX) -+ rm -f tar_exclude - ifneq ($(strip $(UCLIBC_HAS_FLOATS)),y) - # Remove floating point related headers since float support is disabled. diff --git a/patches/uClibc/0.9.28/120-no_LFS-no_readahead.patch b/patches/uClibc/0.9.28/120-no_LFS-no_readahead.patch deleted file mode 100644 index ca0568c..0000000 --- a/patches/uClibc/0.9.28/120-no_LFS-no_readahead.patch +++ /dev/null @@ -1,14 +0,0 @@ -diff -dur uClibc-0.9.28.1.orig/libc/sysdeps/linux/common/Makefile uClibc-0.9.28.1/libc/sysdeps/linux/common/Makefile ---- uClibc-0.9.28.1.orig/libc/sysdeps/linux/common/Makefile 2007-01-26 00:54:19.000000000 +0100 -+++ uClibc-0.9.28.1/libc/sysdeps/linux/common/Makefile 2007-02-01 08:44:37.000000000 +0100 -@@ -25,6 +25,10 @@ - SRCS := $(filter-out sbrk.c,$(SRCS)) - endif - -+ifneq ($(strip $(UCLIBC_HAS_LFS)),y) -+SRCS := $(filter-out readahead.c,$(SRCS)) -+endif -+ - ifneq ($(strip $(UCLIBC_HAS_SSP)),y) - SRCS := $(filter-out ssp.c,$(SRCS)) - endif diff --git a/patches/uClibc/0.9.28/130-ctype.patch b/patches/uClibc/0.9.28/130-ctype.patch deleted file mode 100644 index b07ccdb..0000000 --- a/patches/uClibc/0.9.28/130-ctype.patch +++ /dev/null @@ -1,17 +0,0 @@ -diff -urN uClibc-dist/libc/sysdeps/linux/common/bits/uClibc_touplow.h uClibc/libc/sysdeps/linux/common/bits/uClibc_touplow.h ---- uClibc-dist/libc/sysdeps/linux/common/bits/uClibc_touplow.h Fri Jun 3 13:30:25 2005 -+++ uClibc/libc/sysdeps/linux/common/bits/uClibc_touplow.h Fri Jun 3 13:30:39 2005 -@@ -34,11 +34,11 @@ - - /* glibc uses the equivalent of - typedef __int32_t __ctype_touplow_t; */ - --typedef __uint16_t __ctype_mask_t; -+typedef __uint32_t __ctype_mask_t; - - #ifdef __UCLIBC_HAS_CTYPE_SIGNED__ - --typedef __int16_t __ctype_touplow_t; -+typedef __int32_t __ctype_touplow_t; - #define __UCLIBC_CTYPE_B_TBL_OFFSET 128 - #define __UCLIBC_CTYPE_TO_TBL_OFFSET 128 - diff --git a/patches/uClibc/0.9.28/140-fix_includes.sh.patch b/patches/uClibc/0.9.28/140-fix_includes.sh.patch deleted file mode 100644 index 0311c83..0000000 --- a/patches/uClibc/0.9.28/140-fix_includes.sh.patch +++ /dev/null @@ -1,316 +0,0 @@ ---- uClibc-0.9.28/extra/scripts/fix_includes.sh.orig 2006-12-13 05:44:21.000000000 -0700 -+++ uClibc-0.9.28/extra/scripts/fix_includes.sh 2006-12-13 05:44:35.000000000 -0700 -@@ -1,183 +1,155 @@ - #!/bin/sh --# Copyright (C) 2003 Erik Andersen - # --# This program is free software; you can redistribute it and/or --# modify it under the terms of the GNU Library General Public --# License as published by the Free Software Foundation; either --# version 2 of the License, or (at your option) any later --# version. --# --# This program is distributed in the hope that it will be useful, --# but WITHOUT ANY WARRANTY; without even the implied warranty of --# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the --# GNU Library General Public License for more details. --# --# You should have received a copy of the GNU Library General --# Public License along with this program; if not, write to the --# Free Software Foundation, Inc., 59 Temple Place, Suite 330, --# Boston, MA 02111-1307 USA -- --usage () { -- echo "" -- echo "usage: "`basename $0`" -k KERNEL_SOURCE_DIRECTORY -t TARGET_ARCH" -- echo "" -- echo "This utility scans the KERNEL_SOURCE_DIRECTORY directory and" -- echo "checks that it contains well formed kernel headers suitable" -- echo "for inclusion as the include/linux/ directory provided by" -- echo "uClibc." -- echo "" -- echo "If the specified kernel headers are present and already" -- echo "configured for the architecture specified by TARGET_ARCH," -- echo "they will be used as-is." -- echo "" -- echo "If the specified kernel headers are missing entirely, this" -- echo "script will return an error." -- echo "" -- echo "If the specified kernel headers are present, but are either" -- echo "not yet configured or are configured for an architecture" -- echo "different than that specified by TARGET_ARCH, this script" -- echo "will attempt to 'fix' the kernel headers and make them" -- echo "suitable for use by uClibc. This fixing process may fail." -- echo "It is therefore best to always provide kernel headers that" -- echo "are already configured for the selected architecture." -- echo "" -- echo "Most Linux distributions provide 'kernel-headers' packages" -- echo "that are suitable for use by uClibc." -- echo "" -- echo "" -- exit 1; -+# Copyright (C) 2000-2005 Erik Andersen -+# -+# Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball. -+# -+ -+usage() { -+ echo "" -+ echo "usage: "`basename $0`" -k KERNEL_SOURCE_DIRECTORY -t TARGET_ARCH" -+ echo "" -+ echo "This utility scans the KERNEL_SOURCE_DIRECTORY directory and" -+ echo "checks that it contains well formed kernel headers suitable" -+ echo "for inclusion as the include/linux/ directory provided by" -+ echo "uClibc." -+ echo "" -+ echo "If the specified kernel headers are present and already" -+ echo "configured for the architecture specified by TARGET_ARCH," -+ echo "they will be used as-is." -+ echo "" -+ echo "If the specified kernel headers are missing entirely, this" -+ echo "script will return an error." -+ echo "" -+ echo "If the specified kernel headers are present, but are either" -+ echo "not yet configured or are configured for an architecture" -+ echo "different than that specified by TARGET_ARCH, this script" -+ echo "will attempt to 'fix' the kernel headers and make them" -+ echo "suitable for use by uClibc. This fixing process may fail." -+ echo "It is therefore best to always provide kernel headers that" -+ echo "are already configured for the selected architecture." -+ echo "" -+ echo "Most Linux distributions provide 'kernel-headers' packages" -+ echo "that are suitable for use by uClibc." -+ echo "" -+ echo "" -+ exit 1 - } - --HAS_MMU="y"; -+ -+# -+# Parse our arguments -+# -+HAS_MMU="y" - while [ -n "$1" ]; do -- case $1 in -- -k ) shift; if [ -n "$1" ]; then KERNEL_SOURCE=$1; shift; else usage; fi; ;; -- -t ) shift; if [ -n "$1" ]; then TARGET_ARCH=$1; shift; else usage; fi; ;; -- -n ) shift; HAS_MMU="n"; ;; -- -* ) usage; ;; -- * ) usage; ;; -- esac; --done; -+ case $1 in -+ -k ) shift; if [ -n "$1" ]; then KERNEL_SOURCE=$1; shift; else usage; fi; ;; -+ -t ) shift; if [ -n "$1" ]; then TARGET_ARCH=$1; shift; else usage; fi; ;; -+ -n ) shift; HAS_MMU="n"; ;; -+ -* ) usage; ;; -+ * ) usage; ;; -+ esac -+done - --if [ ! -f "$KERNEL_SOURCE/Makefile" -a ! -f "$KERNEL_SOURCE/include/linux/version.h" ]; then -- echo ""; -- echo ""; -- echo "The file $KERNEL_SOURCE/Makefile or $KERNEL_SOURCE/include/linux/version.h is missing!"; -- echo "Perhaps your kernel source is broken?" -- echo ""; -- echo ""; -- exit 1; --fi; - --if [ ! -d "$KERNEL_SOURCE" ]; then -- echo ""; -- echo ""; -- echo "$KERNEL_SOURCE is not a directory"; -- echo ""; -- echo ""; -- exit 1; --fi; -- --if [ -f "$KERNEL_SOURCE/Makefile" ] ; then --# set current VERSION, PATCHLEVEL, SUBLEVEL, EXTRAVERSION --eval `sed -n -e 's/^\([A-Z]*\) = \([0-9]*\)$/\1=\2/p' -e 's/^\([A-Z]*\) = \(-[-a-z0-9]*\)$/\1=\2/p' $KERNEL_SOURCE/Makefile` --else --ver=`grep UTS_RELEASE $KERNEL_SOURCE/include/linux/version.h | cut -d '"' -f 2` --VERSION=`echo "$ver" | cut -d '.' -f 1` --PATCHLEVEL=`echo "$ver" | cut -d '.' -f 2` --if echo "$ver" | grep -q '-' ; then --SUBLEVEL=`echo "$ver" | sed "s/${VERSION}.${PATCHLEVEL}.//" | cut -d '-' -f 1` --EXTRAVERSION=`echo "$ver" | sed "s/${VERSION}.${PATCHLEVEL}.${SUBLEVEL}-//"` --else --SUBLEVEL=`echo "$ver" | cut -d '.' -f 3` --#EXTRAVERSION= --fi -+# -+# Perform some sanity checks on our kernel sources -+# -+if [ ! -f "$KERNEL_SOURCE/Makefile" -a ! -f "$KERNEL_SOURCE/include/linux/version.h" ]; then -+ echo "" -+ echo "" -+ echo "The file $KERNEL_SOURCE/Makefile or $KERNEL_SOURCE/include/linux/version.h is missing!" -+ echo "Perhaps your kernel source is broken?" -+ echo "" -+ echo "" -+ exit 1 - fi --if [ -z "$VERSION" -o -z "$PATCHLEVEL" -o -z "$SUBLEVEL" ] --then -- echo "Unable to determine version for kernel headers" -- echo -e "\tprovided in directory $KERNEL_SOURCE" -- exit 1 -+if [ ! -d "$KERNEL_SOURCE" ]; then -+ echo "" -+ echo "" -+ echo "$KERNEL_SOURCE is not a directory" -+ echo "" -+ echo "" -+ exit 1 - fi - --if [ "$MAKE_IS_SILENT" != "y" ]; then --echo "Current kernel version is $VERSION.$PATCHLEVEL.$SUBLEVEL${EXTRAVERSION}" --echo -e "\n" --echo "Using kernel headers from $VERSION.$PATCHLEVEL.$SUBLEVEL${EXTRAVERSION} for architecture '$TARGET_ARCH'" --echo -e "\tprovided in directory $KERNEL_SOURCE" --echo -e "\n" --fi - -+# - # Create a symlink to include/asm -- -+# - rm -f include/asm* - if [ ! -d "$KERNEL_SOURCE/include/asm" ]; then -- echo ""; -- echo ""; -- echo "The symlink $KERNEL_SOURCE/include/asm is missing\!"; -- echo "Perhaps you forgot to configure your kernel source?"; -- echo "You really should configure your kernel source tree so I"; -- echo "do not have to try and guess about this sort of thing."; -- echo "" -- echo "Attempting to guess a usable value...."; -- echo "" -- echo ""; -- sleep 1; -- -- if [ "$TARGET_ARCH" = "powerpc" ];then -- set -x; -- ln -fs $KERNEL_SOURCE/include/asm-ppc include/asm; -- set +x; -- elif [ "$TARGET_ARCH" = "mips" ];then -- set -x; -- ln -fs $KERNEL_SOURCE/include/asm-mips include/asm; -- set +x; -- elif [ "$TARGET_ARCH" = "arm" ];then -- set -x; -- ln -fs $KERNEL_SOURCE/include/asm-arm include/asm; -- set +x; -- if [ ! -L $KERNEL_SOURCE/include/asm-arm/proc ] ; then -- if [ ! -L proc ] ; then -- (cd include/asm; -- ln -fs proc-armv proc; -- ln -fs arch-ebsa285 arch); -- fi -+ echo "" -+ echo "" -+ echo "The symlink $KERNEL_SOURCE/include/asm is missing\!" -+ echo "Perhaps you forgot to configure your kernel source?" -+ echo "You really should configure your kernel source tree so I" -+ echo "do not have to try and guess about this sort of thing." -+ echo "" -+ echo "Attempting to guess a usable value...." -+ echo "" -+ echo "" -+ sleep 1 -+ -+ if [ "$TARGET_ARCH" = "powerpc" ]; then -+ set -x -+ ln -fs $KERNEL_SOURCE/include/asm-ppc include/asm -+ set +x -+ elif [ "$TARGET_ARCH" = "mips" ]; then -+ set -x -+ ln -fs $KERNEL_SOURCE/include/asm-mips include/asm -+ set +x -+ elif [ "$TARGET_ARCH" = "arm" ]; then -+ set -x -+ ln -fs $KERNEL_SOURCE/include/asm-arm include/asm -+ set +x -+ if [ ! -L $KERNEL_SOURCE/include/asm-arm/proc ]; then -+ if [ ! -L proc ]; then -+ ( -+ cd include/asm -+ ln -fs proc-armv proc -+ ln -fs arch-ebsa285 arch -+ ) -+ fi -+ fi -+ elif [ "$TARGET_ARCH" = "cris" ]; then -+ set -x -+ ln -fs $KERNEL_SOURCE/include/asm-cris include/asm -+ set +x -+ elif [ "$HAS_MMU" != "y" ]; then -+ if [ -d $KERNEL_SOURCE/include/asm-${TARGET_ARCH}nommu ]; then -+ set -x -+ ln -fs $KERNEL_SOURCE/include/asm-${TARGET_ARCH}nommu include/asm -+ set +x -+ else -+ set -x -+ ln -fs $KERNEL_SOURCE/include/asm-$TARGET_ARCH include/asm -+ set +x -+ fi -+ else -+ set -x -+ ln -fs $KERNEL_SOURCE/include/asm-$TARGET_ARCH include/asm -+ set +x - fi; -- elif [ "$TARGET_ARCH" = "cris" ]; then -- set -x; -- ln -fs $KERNEL_SOURCE/include/asm-cris include/asm; -- set +x; -- elif [ "$HAS_MMU" != "y" ]; then -- if [ -d $KERNEL_SOURCE/include/asm-${TARGET_ARCH}nommu ] ; then -- set -x; -- ln -fs $KERNEL_SOURCE/include/asm-${TARGET_ARCH}nommu include/asm; -- set +x; -- else -- set -x; -- ln -fs $KERNEL_SOURCE/include/asm-$TARGET_ARCH include/asm; -- set +x; -- fi; -- else -- set -x; -- ln -fs $KERNEL_SOURCE/include/asm-$TARGET_ARCH include/asm; -- set +x; -- fi; - else --# No guessing required..... --ln -fs $KERNEL_SOURCE/include/asm include/asm --if [ -e $KERNEL_SOURCE/include/asm-$TARGET_ARCH ] ; then --ln -fs $KERNEL_SOURCE/include/asm-$TARGET_ARCH include/asm-$TARGET_ARCH -+ # No guessing required..... -+ for x in $KERNEL_SOURCE/include/asm* ; do -+ ln -fs ${x} include/ -+ done - fi --fi; - - -+# - # Annoyingly, 2.6.x kernel headers also need an include/asm-generic/ directory --if [ $VERSION -eq 2 ] && [ $PATCHLEVEL -ge 6 ] ; then -- ln -fs $KERNEL_SOURCE/include/asm-generic include/asm-generic --fi; -+# -+if [ -e $KERNEL_SOURCE/include/asm-generic ]; then -+ rm -f include/asm-generic -+ ln -fs $KERNEL_SOURCE/include/asm-generic include/asm-generic -+fi - - -+# - # Create the include/linux symlink. -+# - rm -f include/linux - ln -fs $KERNEL_SOURCE/include/linux include/linux -- diff --git a/patches/uClibc/0.9.28/150-custom-ISA.patch b/patches/uClibc/0.9.28/150-custom-ISA.patch deleted file mode 100644 index 2cc9bcb..0000000 --- a/patches/uClibc/0.9.28/150-custom-ISA.patch +++ /dev/null @@ -1,31 +0,0 @@ -diff -dur uClibc-0.9.28.orig/Rules.mak uClibc-0.9.28/Rules.mak ---- uClibc-0.9.28.orig/Rules.mak 2005-08-18 00:49:49.000000000 +0200 -+++ uClibc-0.9.28/Rules.mak 2007-01-30 10:53:34.000000000 +0100 -@@ -168,6 +168,7 @@ - CPU_CFLAGS-$(CONFIG_MIPS_ISA_4)+=-mips4 -mtune=mips4 - CPU_CFLAGS-$(CONFIG_MIPS_ISA_MIPS32)+=-mips32 -mtune=mips32 - CPU_CFLAGS-$(CONFIG_MIPS_ISA_MIPS64)+=-mips64 -mtune=mips32 -+ CPU_CFLAGS-$(CONFIG_MIPS_ISA_CUSTOM)+=-march=$(CONFIG_MIPS_CPU_CFLAGS_CUSTOM) - endif - - ifeq ($(strip $(TARGET_ARCH)),sh) -diff -dur uClibc-0.9.28.orig/extra/Configs/Config.mips uClibc-0.9.28/extra/Configs/Config.mips ---- uClibc-0.9.28.orig/extra/Configs/Config.mips 2005-08-18 00:49:41.000000000 +0200 -+++ uClibc-0.9.28/extra/Configs/Config.mips 2007-01-30 10:52:12.000000000 +0100 -@@ -63,4 +63,16 @@ - config CONFIG_MIPS_ISA_MIPS64 - bool "MIPS64" - -+config CONFIG_MIPS_ISA_CUSTOM -+ bool "Custom" -+ - endchoice -+ -+config CONFIG_MIPS_CPU_CFLAGS_CUSTOM -+ string -+ prompt "Custon ISA" -+ depends on CONFIG_MIPS_ISA_CUSTOM -+ default "" -+ help -+ Enter your custom ISA here (eg: lx4189!). -+ diff --git a/patches/uClibc/0.9.28/160-mips-asm.h.patch b/patches/uClibc/0.9.28/160-mips-asm.h.patch deleted file mode 100644 index 285feed..0000000 --- a/patches/uClibc/0.9.28/160-mips-asm.h.patch +++ /dev/null @@ -1,41 +0,0 @@ -diff -dur uClibc-0.9.28.1.orig/libc/sysdeps/linux/mips/clone.S uClibc-0.9.28.1/libc/sysdeps/linux/mips/clone.S ---- uClibc-0.9.28.1.orig/libc/sysdeps/linux/mips/clone.S 2007-02-07 11:18:12.000000000 +0100 -+++ uClibc-0.9.28.1/libc/sysdeps/linux/mips/clone.S 2007-02-07 10:41:34.000000000 +0100 -@@ -24,7 +24,7 @@ - #include - #define _ERRNO_H 1 - #include --#include -+#include - - /* int clone(int (*fn)(void *arg), void *child_stack, int flags, void *arg) */ - -diff -dur uClibc-0.9.28.1.orig/libc/sysdeps/linux/mips/pipe.S uClibc-0.9.28.1/libc/sysdeps/linux/mips/pipe.S ---- uClibc-0.9.28.1.orig/libc/sysdeps/linux/mips/pipe.S 2007-02-07 11:18:12.000000000 +0100 -+++ uClibc-0.9.28.1/libc/sysdeps/linux/mips/pipe.S 2007-02-07 11:16:52.000000000 +0100 -@@ -3,9 +3,9 @@ - /*see uClibc's sh/pipe.c and glibc-2.2.4's mips/pipe.S */ - - #include --#include -+#include - #include --#include -+#include - - .globl pipe - .ent pipe, 0 -diff -dur uClibc-0.9.28.1.orig/libc/sysdeps/linux/mips/syscall.S uClibc-0.9.28.1/libc/sysdeps/linux/mips/syscall.S ---- uClibc-0.9.28.1.orig/libc/sysdeps/linux/mips/syscall.S 2007-02-07 11:18:12.000000000 +0100 -+++ uClibc-0.9.28.1/libc/sysdeps/linux/mips/syscall.S 2007-02-07 11:17:03.000000000 +0100 -@@ -17,8 +17,8 @@ - 02111-1307 USA. */ - - #include --#include --#include -+#include -+#include - - #ifdef __PIC__ - .option pic2 diff --git a/patches/uClibc/20080801/100-ifaddrs.patch b/patches/uClibc/20080801/100-ifaddrs.patch deleted file mode 100644 index 97b1984..0000000 --- a/patches/uClibc/20080801/100-ifaddrs.patch +++ /dev/null @@ -1,190 +0,0 @@ -Copyright 2008 Yann E. MORIN. - -This patch is needed to make gcc-4.3.1 able to build the Java frontend. - -Index: uClibc/libc/inet/ifaddrs.c -=================================================================== ---- uClibc/libc/inet/ifaddrs.c (revision 23002) -+++ uClibc/libc/inet/ifaddrs.c (working copy) -@@ -22,7 +22,7 @@ - #include - #include - #include --#include "ifaddrs.h" -+#include - #include - #include - #include -Index: uClibc/libc/inet/ifaddrs.h -=================================================================== ---- uClibc/libc/inet/ifaddrs.h (revision 23002) -+++ uClibc/libc/inet/ifaddrs.h (working copy) -@@ -1,76 +0,0 @@ --/* ifaddrs.h -- declarations for getting network interface addresses -- Copyright (C) 2002 Free Software Foundation, Inc. -- This file is part of the GNU C Library. -- -- The GNU C Library is free software; you can redistribute it and/or -- modify it under the terms of the GNU Lesser General Public -- License as published by the Free Software Foundation; either -- version 2.1 of the License, or (at your option) any later version. -- -- The GNU C Library is distributed in the hope that it will be useful, -- but WITHOUT ANY WARRANTY; without even the implied warranty of -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -- Lesser General Public License for more details. -- -- You should have received a copy of the GNU Lesser General Public -- License along with the GNU C Library; if not, write to the Free -- Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA -- 02111-1307 USA. */ -- --#ifndef _IFADDRS_H --#define _IFADDRS_H 1 -- --#include --#include --#include --#include -- --__BEGIN_DECLS -- --/* The `getifaddrs' function generates a linked list of these structures. -- Each element of the list describes one network interface. */ --struct ifaddrs --{ -- struct ifaddrs *ifa_next; /* Pointer to the next structure. */ -- -- char *ifa_name; /* Name of this network interface. */ -- unsigned int ifa_flags; /* Flags as from SIOCGIFFLAGS ioctl. */ -- -- struct sockaddr *ifa_addr; /* Network address of this interface. */ -- struct sockaddr *ifa_netmask; /* Netmask of this interface. */ -- union -- { -- /* At most one of the following two is valid. If the IFF_BROADCAST -- bit is set in `ifa_flags', then `ifa_broadaddr' is valid. If the -- IFF_POINTOPOINT bit is set, then `ifa_dstaddr' is valid. -- It is never the case that both these bits are set at once. */ -- struct sockaddr *ifu_broadaddr; /* Broadcast address of this interface. */ -- struct sockaddr *ifu_dstaddr; /* Point-to-point destination address. */ -- } ifa_ifu; -- /* These very same macros are defined by for `struct ifaddr'. -- So if they are defined already, the existing definitions will be fine. */ --# ifndef ifa_broadaddr --# define ifa_broadaddr ifa_ifu.ifu_broadaddr --# endif --# ifndef ifa_dstaddr --# define ifa_dstaddr ifa_ifu.ifu_dstaddr --# endif -- -- void *ifa_data; /* Address-specific data (may be unused). */ --}; -- -- --/* Create a linked list of `struct ifaddrs' structures, one for each -- network interface on the host machine. If successful, store the -- list in *IFAP and return 0. On errors, return -1 and set `errno'. -- -- The storage returned in *IFAP is allocated dynamically and can -- only be properly freed by passing it to `freeifaddrs'. */ --extern int getifaddrs (struct ifaddrs **__ifap) __THROW; -- --/* Reclaim the storage allocated by a previous `getifaddrs' call. */ --extern void freeifaddrs (struct ifaddrs *__ifa) __THROW; -- --__END_DECLS -- --#endif /* ifaddrs.h */ -Index: uClibc/libc/inet/getaddrinfo.c -=================================================================== ---- uClibc/libc/inet/getaddrinfo.c (revision 23002) -+++ uClibc/libc/inet/getaddrinfo.c (working copy) -@@ -68,7 +68,7 @@ - #include - #include - #include --#include "ifaddrs.h" -+#include - - /* Experimentally off - libc_hidden_proto(memcpy) */ - /* Experimentally off - libc_hidden_proto(memset) */ ---- /dev/null 2008-08-04 09:44:45.624322752 +0200 -+++ uClibc/include/ifaddrs.h 2008-08-05 09:31:20.000000000 +0200 -@@ -0,0 +1,76 @@ -+/* ifaddrs.h -- declarations for getting network interface addresses -+ Copyright (C) 2002 Free Software Foundation, Inc. -+ This file is part of the GNU C Library. -+ -+ The GNU C Library is free software; you can redistribute it and/or -+ modify it under the terms of the GNU Lesser General Public -+ License as published by the Free Software Foundation; either -+ version 2.1 of the License, or (at your option) any later version. -+ -+ The GNU C Library is distributed in the hope that it will be useful, -+ but WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+ Lesser General Public License for more details. -+ -+ You should have received a copy of the GNU Lesser General Public -+ License along with the GNU C Library; if not, write to the Free -+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA -+ 02111-1307 USA. */ -+ -+#ifndef _IFADDRS_H -+#define _IFADDRS_H 1 -+ -+#include -+#include -+#include -+#include -+ -+__BEGIN_DECLS -+ -+/* The `getifaddrs' function generates a linked list of these structures. -+ Each element of the list describes one network interface. */ -+struct ifaddrs -+{ -+ struct ifaddrs *ifa_next; /* Pointer to the next structure. */ -+ -+ char *ifa_name; /* Name of this network interface. */ -+ unsigned int ifa_flags; /* Flags as from SIOCGIFFLAGS ioctl. */ -+ -+ struct sockaddr *ifa_addr; /* Network address of this interface. */ -+ struct sockaddr *ifa_netmask; /* Netmask of this interface. */ -+ union -+ { -+ /* At most one of the following two is valid. If the IFF_BROADCAST -+ bit is set in `ifa_flags', then `ifa_broadaddr' is valid. If the -+ IFF_POINTOPOINT bit is set, then `ifa_dstaddr' is valid. -+ It is never the case that both these bits are set at once. */ -+ struct sockaddr *ifu_broadaddr; /* Broadcast address of this interface. */ -+ struct sockaddr *ifu_dstaddr; /* Point-to-point destination address. */ -+ } ifa_ifu; -+ /* These very same macros are defined by for `struct ifaddr'. -+ So if they are defined already, the existing definitions will be fine. */ -+# ifndef ifa_broadaddr -+# define ifa_broadaddr ifa_ifu.ifu_broadaddr -+# endif -+# ifndef ifa_dstaddr -+# define ifa_dstaddr ifa_ifu.ifu_dstaddr -+# endif -+ -+ void *ifa_data; /* Address-specific data (may be unused). */ -+}; -+ -+ -+/* Create a linked list of `struct ifaddrs' structures, one for each -+ network interface on the host machine. If successful, store the -+ list in *IFAP and return 0. On errors, return -1 and set `errno'. -+ -+ The storage returned in *IFAP is allocated dynamically and can -+ only be properly freed by passing it to `freeifaddrs'. */ -+extern int getifaddrs (struct ifaddrs **__ifap) __THROW; -+ -+/* Reclaim the storage allocated by a previous `getifaddrs' call. */ -+extern void freeifaddrs (struct ifaddrs *__ifa) __THROW; -+ -+__END_DECLS -+ -+#endif /* ifaddrs.h */ diff --git a/patches/uClibc/20080801/200-mips-typeof.patch b/patches/uClibc/20080801/200-mips-typeof.patch deleted file mode 100644 index 668e568..0000000 --- a/patches/uClibc/20080801/200-mips-typeof.patch +++ /dev/null @@ -1,112 +0,0 @@ -Index: uClibc/libc/sysdeps/linux/mips/bits/atomic.h -=================================================================== ---- uClibc/libc/sysdeps/linux/mips/bits/atomic.h (revision 23002) -+++ uClibc/libc/sysdeps/linux/mips/bits/atomic.h (working copy) -@@ -110,22 +110,22 @@ - /* For all "bool" routines, we return FALSE if exchange succesful. */ - - #define __arch_compare_and_exchange_bool_8_int(mem, new, old, rel, acq) \ --({ typeof (*mem) __prev; int __cmp; \ -+({ __typeof (*mem) __prev; int __cmp; \ - __arch_compare_and_exchange_xxx_8_int(mem, new, old, rel, acq); \ - !__cmp; }) - - #define __arch_compare_and_exchange_bool_16_int(mem, new, old, rel, acq) \ --({ typeof (*mem) __prev; int __cmp; \ -+({ __typeof (*mem) __prev; int __cmp; \ - __arch_compare_and_exchange_xxx_16_int(mem, new, old, rel, acq); \ - !__cmp; }) - - #define __arch_compare_and_exchange_bool_32_int(mem, new, old, rel, acq) \ --({ typeof (*mem) __prev; int __cmp; \ -+({ __typeof (*mem) __prev; int __cmp; \ - __arch_compare_and_exchange_xxx_32_int(mem, new, old, rel, acq); \ - !__cmp; }) - - #define __arch_compare_and_exchange_bool_64_int(mem, new, old, rel, acq) \ --({ typeof (*mem) __prev; int __cmp; \ -+({ __typeof (*mem) __prev; int __cmp; \ - __arch_compare_and_exchange_xxx_64_int(mem, new, old, rel, acq); \ - !__cmp; }) - -@@ -133,24 +133,24 @@ - successful or not. */ - - #define __arch_compare_and_exchange_val_8_int(mem, new, old, rel, acq) \ --({ typeof (*mem) __prev; int __cmp; \ -+({ __typeof (*mem) __prev; int __cmp; \ - __arch_compare_and_exchange_xxx_8_int(mem, new, old, rel, acq); \ -- (typeof (*mem))__prev; }) -+ (__typeof (*mem))__prev; }) - - #define __arch_compare_and_exchange_val_16_int(mem, new, old, rel, acq) \ --({ typeof (*mem) __prev; int __cmp; \ -+({ __typeof (*mem) __prev; int __cmp; \ - __arch_compare_and_exchange_xxx_16_int(mem, new, old, rel, acq); \ -- (typeof (*mem))__prev; }) -+ (__typeof (*mem))__prev; }) - - #define __arch_compare_and_exchange_val_32_int(mem, new, old, rel, acq) \ --({ typeof (*mem) __prev; int __cmp; \ -+({ __typeof (*mem) __prev; int __cmp; \ - __arch_compare_and_exchange_xxx_32_int(mem, new, old, rel, acq); \ -- (typeof (*mem))__prev; }) -+ (__typeof (*mem))__prev; }) - - #define __arch_compare_and_exchange_val_64_int(mem, new, old, rel, acq) \ --({ typeof (*mem) __prev; int __cmp; \ -+({ __typeof (*mem) __prev; int __cmp; \ - __arch_compare_and_exchange_xxx_64_int(mem, new, old, rel, acq); \ -- (typeof (*mem))__prev; }) -+ (__typeof (*mem))__prev; }) - - /* Compare and exchange with "acquire" semantics, ie barrier after. */ - -@@ -183,7 +183,7 @@ - (abort (), 0) - - #define __arch_exchange_xxx_32_int(mem, newval, rel, acq) \ --({ typeof (*mem) __prev; int __cmp; \ -+({ __typeof (*mem) __prev; int __cmp; \ - __asm__ __volatile__ ("\n" \ - ".set push\n\t" \ - MIPS_PUSH_MIPS2 \ -@@ -207,7 +207,7 @@ - (abort (), 0) - #else - #define __arch_exchange_xxx_64_int(mem, newval, rel, acq) \ --({ typeof (*mem) __prev; int __cmp; \ -+({ __typeof (*mem) __prev; int __cmp; \ - __asm__ __volatile__ ("\n" \ - ".set push\n\t" \ - MIPS_PUSH_MIPS2 \ -@@ -236,13 +236,13 @@ - /* Atomically add value and return the previous (unincremented) value. */ - - #define __arch_exchange_and_add_8_int(mem, newval, rel, acq) \ -- (abort (), (typeof(*mem)) 0) -+ (abort (), (__typeof(*mem)) 0) - - #define __arch_exchange_and_add_16_int(mem, newval, rel, acq) \ -- (abort (), (typeof(*mem)) 0) -+ (abort (), (__typeof(*mem)) 0) - - #define __arch_exchange_and_add_32_int(mem, value, rel, acq) \ --({ typeof (*mem) __prev; int __cmp; \ -+({ __typeof (*mem) __prev; int __cmp; \ - __asm__ __volatile__ ("\n" \ - ".set push\n\t" \ - MIPS_PUSH_MIPS2 \ -@@ -263,10 +263,10 @@ - #if _MIPS_SIM == _ABIO32 - /* We can't do an atomic 64-bit operation in O32. */ - #define __arch_exchange_and_add_64_int(mem, value, rel, acq) \ -- (abort (), (typeof(*mem)) 0) -+ (abort (), (__typeof(*mem)) 0) - #else - #define __arch_exchange_and_add_64_int(mem, value, rel, acq) \ --({ typeof (*mem) __prev; int __cmp; \ -+({ __typeof (*mem) __prev; int __cmp; \ - __asm__ __volatile__ ( \ - ".set push\n\t" \ - MIPS_PUSH_MIPS2 \ diff --git a/patches/uClibc/20080801/300-fix-asm.patch b/patches/uClibc/20080801/300-fix-asm.patch deleted file mode 100644 index 1f57e5c..0000000 --- a/patches/uClibc/20080801/300-fix-asm.patch +++ /dev/null @@ -1,175 +0,0 @@ -Index: uClibc/ldso/ldso/sparc/dl-sysdep.h -=================================================================== ---- uClibc/ldso/ldso/sparc/dl-sysdep.h (revision 23055) -+++ uClibc/ldso/ldso/sparc/dl-sysdep.h (working copy) -@@ -141,7 +141,7 @@ - static __inline__ Elf32_Addr - elf_machine_load_address (void) - { -- register Elf32_Addr *pc __asm__ ("%o7"), *got __asm ("%l7"); -+ register Elf32_Addr *pc __asm__ ("%o7"), *got __asm__ ("%l7"); - - __asm__ ("sethi %%hi(_GLOBAL_OFFSET_TABLE_-4), %1\n\t" - "call 1f\n\t" -Index: uClibc/libc/sysdeps/linux/i386/bits/mathinline.h -=================================================================== ---- uClibc/libc/sysdeps/linux/i386/bits/mathinline.h (revision 23055) -+++ uClibc/libc/sysdeps/linux/i386/bits/mathinline.h (working copy) -@@ -299,12 +299,12 @@ - __extension__ long long int __p = (long long int) __x; \ - if (__x == (long double) __p) \ - { \ -- __asm __volatile__ \ -+ __asm__ __volatile__ \ - ("fscale" \ - : "=t" (__value) : "0" (1.0), "u" (__x)); \ - return __value; \ - } \ -- __asm __volatile__ \ -+ __asm__ __volatile__ \ - ("fld %%st(0)\n\t" \ - "frndint # int(x)\n\t" \ - "fxch\n\t" \ -@@ -312,7 +312,7 @@ - "f2xm1 # 2^(fract(x)) - 1\n\t" \ - : "=t" (__value), "=u" (__exponent) : "0" (__x)); \ - __value += 1.0; \ -- __asm __volatile__ \ -+ __asm__ __volatile__ \ - ("fscale" \ - : "=t" (__value) : "0" (__value), "u" (__exponent)); \ - return __value) -@@ -321,7 +321,7 @@ - # define __sincos_code \ - register long double __cosr; \ - register long double __sinr; \ -- __asm __volatile__ \ -+ __asm__ __volatile__ \ - ("fsincos\n\t" \ - "fnstsw %%ax\n\t" \ - "testl $0x400, %%eax\n\t" \ -@@ -373,7 +373,7 @@ - register long double __value; \ - register long double __exponent; \ - register long double __temp; \ -- __asm __volatile__ \ -+ __asm__ __volatile__ \ - ("fldl2e # e^x - 1 = 2^(x * log2(e)) - 1\n\t" \ - "fmul %%st(1) # x * log2(e)\n\t" \ - "fst %%st(1)\n\t" \ -@@ -383,7 +383,7 @@ - "f2xm1 # 2^(fract(x * log2(e))) - 1\n\t" \ - "fscale # 2^(x * log2(e)) - 2^(int(x * log2(e)))\n\t" \ - : "=t" (__value), "=u" (__exponent) : "0" (__x)); \ -- __asm __volatile__ \ -+ __asm__ __volatile__ \ - ("fscale # 2^int(x * log2(e))\n\t" \ - : "=t" (__temp) : "0" (1.0), "u" (__exponent)); \ - __temp -= 1.0; \ -@@ -398,7 +398,7 @@ - # define __exp_code \ - register long double __value; \ - register long double __exponent; \ -- __asm __volatile__ \ -+ __asm__ __volatile__ \ - ("fldl2e # e^x = 2^(x * log2(e))\n\t" \ - "fmul %%st(1) # x * log2(e)\n\t" \ - "fst %%st(1)\n\t" \ -@@ -408,7 +408,7 @@ - "f2xm1 # 2^(fract(x * log2(e))) - 1\n\t" \ - : "=t" (__value), "=u" (__exponent) : "0" (__x)); \ - __value += 1.0; \ -- __asm __volatile__ \ -+ __asm__ __volatile__ \ - ("fscale" \ - : "=t" (__value) : "0" (__value), "u" (__exponent)); \ - return __value -@@ -421,7 +421,7 @@ - __inline_mathcodeNP (tan, __x, \ - register long double __value; \ - register long double __value2 __attribute__ ((__unused__)); \ -- __asm __volatile__ \ -+ __asm__ __volatile__ \ - ("fptan" \ - : "=t" (__value2), "=u" (__value) : "0" (__x)); \ - return __value) -@@ -435,7 +435,7 @@ - #else - # define __atan2_code \ - register long double __value; \ -- __asm __volatile__ \ -+ __asm__ __volatile__ \ - ("fpatan" \ - : "=t" (__value) : "0" (__x), "u" (__y) : "st(1)"); \ - return __value -@@ -449,7 +449,7 @@ - #if defined __FAST_MATH__ && !__GNUC_PREREQ (3, 5) - __inline_mathcodeNP2 (fmod, __x, __y, \ - register long double __value; \ -- __asm __volatile__ \ -+ __asm__ __volatile__ \ - ("1: fprem\n\t" \ - "fnstsw %%ax\n\t" \ - "sahf\n\t" \ -@@ -552,7 +552,7 @@ - #ifdef __FAST_MATH__ - # define __ldexp_code \ - register long double __value; \ -- __asm __volatile__ \ -+ __asm__ __volatile__ \ - ("fscale" \ - : "=t" (__value) : "0" (__x), "u" ((long double) __y)); \ - return __value -@@ -581,7 +581,7 @@ - if (__fabsl (__x) >= 1.0 - 0.5 * __M_SQRT2) \ - __value = logl (1.0 + __x); \ - else \ -- __asm __volatile__ \ -+ __asm__ __volatile__ \ - ("fldln2\n\t" \ - "fxch\n\t" \ - "fyl2xp1" \ -@@ -611,7 +611,7 @@ - __inline_mathcodeNP(logb, __x, \ - register long double __value; \ - register long double __junk; \ -- __asm __volatile__ \ -+ __asm__ __volatile__ \ - ("fxtract\n\t" \ - : "=t" (__junk), "=u" (__value) : "0" (__x)); \ - return __value) -@@ -699,7 +699,7 @@ - __inline_mathcodeNP2 (drem, __x, __y, \ - register double __value; \ - register int __clobbered; \ -- __asm __volatile__ \ -+ __asm__ __volatile__ \ - ("1: fprem1\n\t" \ - "fstsw %%ax\n\t" \ - "sahf\n\t" \ -Index: uClibc/libc/sysdeps/linux/x86_64/sigaction.c -=================================================================== ---- uClibc/libc/sysdeps/linux/x86_64/sigaction.c (revision 23055) -+++ uClibc/libc/sysdeps/linux/x86_64/sigaction.c (working copy) -@@ -135,7 +135,7 @@ - - #define RESTORE(name, syscall) RESTORE2 (name, syscall) - # define RESTORE2(name, syscall) \ --asm \ -+__asm__ \ - ( \ - ".text\n" \ - "__" #name ":\n" \ -Index: uClibc/libc/sysdeps/linux/mips/sigaction.c -=================================================================== ---- uClibc/libc/sysdeps/linux/mips/sigaction.c (revision 23055) -+++ uClibc/libc/sysdeps/linux/mips/sigaction.c (working copy) -@@ -140,7 +140,7 @@ - - #define RESTORE(name, syscall) RESTORE2 (name, syscall) - #define RESTORE2(name, syscall) \ --asm \ -+__asm__ \ - ( \ - ".align 4\n" \ - "__" #name ":\n" \ -- cgit v0.10.2-6-g49f6