This commit is contained in:
Yann E. MORIN" 2009-10-29 00:10:06 +01:00
commit de8f2cea32
236 changed files with 2424 additions and 31076 deletions

View File

@ -2,29 +2,15 @@
comment "GNU binutils"
config BINUTILS_VERSION
string
choice
bool
prompt "binutils version"
# Don't remove next line
# CT_INSERT_VERSION_BELOW
config BINUTILS_V_2_19_51_0_2
config BINUTILS_V_2_20
bool
prompt "2.19.51.0.2 (EXPERIMENTAL)"
depends on EXPERIMENTAL
config BINUTILS_V_2_19_51_0_1
bool
prompt "2.19.51.0.1 (EXPERIMENTAL)"
depends on EXPERIMENTAL
config BINUTILS_V_2_19_50_0_1
bool
prompt "2.19.50.0.1 (EXPERIMENTAL)"
depends on EXPERIMENTAL
prompt "2.20"
config BINUTILS_V_2_19_1
bool
@ -34,71 +20,18 @@ config BINUTILS_V_2_19
bool
prompt "2.19"
config BINUTILS_V_2_18_93
bool
prompt "2.18.93 (EXPERIMENTAL)"
depends on EXPERIMENTAL
config BINUTILS_V_2_18_92
bool
prompt "2.18.92 (EXPERIMENTAL)"
depends on EXPERIMENTAL
config BINUTILS_V_2_18_91
bool
prompt "2.18.91 (EXPERIMENTAL)"
depends on EXPERIMENTAL
config BINUTILS_V_2_18_90
bool
prompt "2.18.90 (EXPERIMENTAL)"
depends on EXPERIMENTAL
config BINUTILS_V_2_18_50_0_9
bool
prompt "2.18.50.0.9 (EXPERIMENTAL)"
depends on EXPERIMENTAL
config BINUTILS_V_2_18_50_0_8
bool
prompt "2.18.50.0.8 (EXPERIMENTAL)"
depends on EXPERIMENTAL
config BINUTILS_V_2_18_50_0_7
bool
prompt "2.18.50.0.7 (EXPERIMENTAL)"
depends on EXPERIMENTAL
config BINUTILS_V_2_18_50_0_6
bool
prompt "2.18.50.0.6 (EXPERIMENTAL)"
depends on EXPERIMENTAL
config BINUTILS_V_2_18_50_0_4
bool
prompt "2.18.50.0.4 (EXPERIMENTAL)"
depends on EXPERIMENTAL
config BINUTILS_V_2_18
bool
prompt "2.18"
config BINUTILS_V_2_17
bool
prompt "2.17"
prompt "2.17 (OBSOLETE)"
depends on OBSOLETE
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)"
prompt "2.16.1 (OBSOLETE)"
depends on OBSOLETE
endchoice
@ -107,25 +40,12 @@ config BINUTILS_VERSION
string
# Don't remove next line
# CT_INSERT_VERSION_STRING_BELOW
default "2.19.51.0.2" if BINUTILS_V_2_19_51_0_2
default "2.19.51.0.1" if BINUTILS_V_2_19_51_0_1
default "2.19.50.0.1" if BINUTILS_V_2_19_50_0_1
default "2.20" if BINUTILS_V_2_20
default "2.19.1" if BINUTILS_V_2_19_1
default "2.19" if BINUTILS_V_2_19
default "2.18.93" if BINUTILS_V_2_18_93
default "2.18.92" if BINUTILS_V_2_18_92
default "2.18.91" if BINUTILS_V_2_18_91
default "2.18.90" if BINUTILS_V_2_18_90
default "2.18.50.0.9" if BINUTILS_V_2_18_50_0_9
default "2.18.50.0.8" if BINUTILS_V_2_18_50_0_8
default "2.18.50.0.7" if BINUTILS_V_2_18_50_0_7
default "2.18.50.0.6" if BINUTILS_V_2_18_50_0_6
default "2.18.50.0.4" if BINUTILS_V_2_18_50_0_4
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

View File

@ -4,9 +4,6 @@ if ARCH_BINFMT_FLAT
comment "elf2flt"
config ELF2FLT_VERSION
string
choice
bool
prompt "elf2flt version"

View File

@ -19,6 +19,13 @@ choice
# Don't remove next line
# CT_INSERT_VERSION_BELOW
config CC_V_4_4_2
bool
prompt "4.4.2 (EXPERIMENTAL)"
depends on EXPERIMENTAL
select CC_GCC_4_3_or_later
select CC_GCC_4_4_or_later
config CC_V_4_4_1
bool
prompt "4.4.1 (EXPERIMENTAL)"
@ -65,7 +72,8 @@ config CC_V_4_2_4
config CC_V_4_2_3
bool
prompt "4.2.3"
prompt "4.2.3 (OBSOLETE)"
depends on OBSOLETE
config CC_V_4_2_2
bool
@ -73,48 +81,22 @@ config CC_V_4_2_2
config CC_V_4_2_1
bool
prompt "4.2.1"
prompt "4.2.1 (OBSOLETE)"
depends on OBSOLETE
config CC_V_4_2_0
bool
prompt "4.2.0"
prompt "4.2.0 (OBSOLETE)"
depends on OBSOLETE
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)"
prompt "4.1.2 (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)"
prompt "4.0.4 (OBSOLETE)"
depends on OBSOLETE
config CC_V_3_4_6
@ -122,16 +104,6 @@ config CC_V_3_4_6
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
@ -148,6 +120,7 @@ config CC_VERSION
string
# Don't remove next line
# CT_INSERT_VERSION_STRING_BELOW
default "4.4.2" if CC_V_4_4_2
default "4.4.1" if CC_V_4_4_1
default "4.4.0" if CC_V_4_4_0
default "4.3.4" if CC_V_4_3_4
@ -161,16 +134,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

View File

@ -16,15 +16,18 @@ config CLOOG_V_0_15_6
config CLOOG_V_0_15_5
bool
prompt "0.15.5"
prompt "0.15.5 (OBSOLETE)"
depends on OBSOLETE
config CLOOG_V_0_15_4
bool
prompt "0.15.4"
prompt "0.15.4 (OBSOLETE)"
depends on OBSOLETE
config CLOOG_V_0_15_3
bool
prompt "0.15.3"
prompt "0.15.3 (OBSOLETE)"
depends on OBSOLETE
endchoice

View File

@ -16,11 +16,13 @@ config GMP_V_4_3_0
config GMP_V_4_2_4
bool
prompt "4.2.4"
prompt "4.2.4 (OBSOLETE)"
depends on OBSOLETE
config GMP_V_4_2_2
bool
prompt "4.2.2"
prompt "4.2.2 (OBSOLETE)"
depends on OBSOLETE
endchoice

View File

@ -12,7 +12,8 @@ config MPC_V_0_7
config MPC_V_0_6
bool
prompt "0.6"
prompt "0.6 (OBSOLETE)"
depends on OBSOLETE
endchoice

View File

@ -16,11 +16,13 @@ config MPFR_V_2_4_0
config MPFR_V_2_3_2
bool
prompt "2.3.2"
prompt "2.3.2 (OBSOLETE)"
depends on OBSOLETE
config MPFR_V_2_3_1
bool
prompt "2.3.1"
prompt "2.3.1 (OBSOLETE)"
depends on OBSOLETE
endchoice

View File

@ -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

View File

@ -29,19 +29,23 @@ config DUMA_V_2_5_15
config DUMA_V_2_5_14
bool
prompt "2_5_14"
prompt "2_5_14 (OBSOLETE)"
depends on OBSOLETE
config DUMA_V_2_5_12
bool
prompt "2_5_12"
prompt "2_5_12 (OBSOLETE)"
depends on OBSOLETE
config DUMA_V_2_5_8
bool
prompt "2_5_8"
prompt "2_5_8 (OBSOLETE)"
depends on OBSOLETE
config DUMA_V_2_5_1
bool
prompt "2_5_1"
prompt "2_5_1 (OBSOLETE)"
depends on OBSOLETE
endchoice

View File

@ -99,34 +99,15 @@ choice
# Don't remove next line
# CT_INSERT_VERSION_BELOW
config GDB_V_7_0
bool
prompt "7.0 (EXPERIMENTAL)"
depends on EXPERIMENTAL
config GDB_V_6_8
bool
prompt "6.8"
config GDB_V_6_7_1
bool
prompt "6.7.1 (EXPERIMENTAL)"
depends on EXPERIMENTAL
config GDB_V_6_7
bool
prompt "6.7 (EXPERIMENTAL)"
depends on EXPERIMENTAL
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)"
@ -139,12 +120,8 @@ config GDB_VERSION
string
# Don't remove next line
# CT_INSERT_VERSION_STRING_BELOW
default "7.0" if GDB_V_7_0
default "6.8" if GDB_V_6_8
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
@ -161,7 +138,8 @@ config NCURSES_V_5_7
config NCURSES_V_5_6
bool
prompt "5.6"
prompt "5.6 (OBSOLETE)"
depends on OBSOLETE
endchoice

View File

@ -25,11 +25,13 @@ config LTRACE_V_0_5_1
config LTRACE_V_0_5
bool
prompt "0.5"
prompt "0.5 (OBSOLETE)"
depends on OBSOLETE
config LTRACE_V_0_4
bool
prompt "0.4"
prompt "0.4 (OBSOLETE)"
depends on OBSOLETE
endchoice

View File

@ -8,31 +8,28 @@ choice
# Don't remove next line
# CT_INSERT_VERSION_BELOW
config STRACE_V_4_5_19
bool
prompt "4.5.19 (EXPERIMENTAL)"
depends on EXPERIMENTAL
config STRACE_V_4_5_18
bool
prompt "4.5.18 (EXPERIMENTAL)"
depends on EXPERIMENTAL
prompt "4.5.18"
config STRACE_V_4_5_17
bool
prompt "4.5.17"
prompt "4.5.17 (OBSOLETE)"
depends on OBSOLETE
config STRACE_V_4_5_16
bool
prompt "4.5.16"
prompt "4.5.16 (OBSOLETE)"
depends on OBSOLETE
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)"
prompt "4.5.15 (OBSOLETE)"
depends on OBSOLETE
endchoice
@ -41,9 +38,8 @@ config STRACE_VERSION
string
# Don't remove next line
# CT_INSERT_VERSION_STRING_BELOW
default "4.5.19" if STRACE_V_4_5_19
default "4.5.18" if STRACE_V_4_5_18
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

View File

@ -34,6 +34,22 @@ choice
# Don't remove next line
# CT_INSERT_VERSION_BELOW
config KERNEL_V_2_6_31_5
bool
prompt "2.6.31.5"
config KERNEL_V_2_6_31_4
bool
prompt "2.6.31.4"
config KERNEL_V_2_6_31_3
bool
prompt "2.6.31.3"
config KERNEL_V_2_6_31_2
bool
prompt "2.6.31.2"
config KERNEL_V_2_6_31_1
bool
prompt "2.6.31.1"
@ -42,6 +58,10 @@ config KERNEL_V_2_6_31
bool
prompt "2.6.31"
config KERNEL_V_3_6_30_9
bool
prompt "3.6.30.9"
config KERNEL_V_3_6_30_8
bool
prompt "3.6.30.8"
@ -80,75 +100,31 @@ config KERNEL_V_2_6_30
config KERNEL_V_2_6_29_6
bool
prompt "2.6.29.6"
prompt "2.6.29.6 (OBSOLETE)"
depends on OBSOLETE
config KERNEL_V_2_6_28_10
bool
prompt "2.6.28.10"
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)"
prompt "2.6.28.10 (OBSOLETE)"
depends on OBSOLETE
config KERNEL_V_2_6_25_20
config KERNEL_V_2_6_27_38
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)"
depends on EXPERIMENTAL
prompt "2.6.27.38 (long-term stable)"
endchoice
config KERNEL_VERSION
string
prompt "Kernel version" if KERNEL_V_select
# Don't remove next line
# CT_INSERT_VERSION_STRING_BELOW
default "2.6.31.5" if KERNEL_V_2_6_31_5
default "2.6.31.4" if KERNEL_V_2_6_31_4
default "2.6.31.3" if KERNEL_V_2_6_31_3
default "2.6.31.2" if KERNEL_V_2_6_31_2
default "2.6.31.1" if KERNEL_V_2_6_31_1
default "2.6.31" if KERNEL_V_2_6_31
default "3.6.30.9" if KERNEL_V_3_6_30_9
default "3.6.30.8" if KERNEL_V_3_6_30_8
default "3.6.30.7" if KERNEL_V_3_6_30_7
default "2.6.30.6" if KERNEL_V_2_6_30_6
@ -159,25 +135,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:
V: VERSION
P: PATCHLEVEL
S: SUBLEVEL
E: EXTRAVERSION
default "2.6.27.38" if KERNEL_V_2_6_27_38
choice
bool

View File

@ -28,19 +28,23 @@ config EGLIBC_V_2_9
config EGLIBC_V_2_8
bool
prompt "2_8"
prompt "2_8 (OBSOLETE)"
depends on OBSOLETE
config EGLIBC_V_2_7
bool
prompt "2_7"
prompt "2_7 (OBSOLETE)"
depends on OBSOLETE
config EGLIBC_V_2_6
bool
prompt "2_6"
prompt "2_6 (OBSOLETE)"
depends on OBSOLETE
config EGLIBC_V_2_5
bool
prompt "2_5"
prompt "2_5 (OBSOLETE)"
depends on OBSOLETE
config EGLIBC_V_TRUNK
bool

View File

@ -26,23 +26,28 @@ config LIBC_V_2_8
config LIBC_V_2_7
bool
prompt "2.7"
prompt "2.7 (OBSOLETE)"
depends on OBSOLETE
config LIBC_V_2_6_1
bool
prompt "2.6.1"
prompt "2.6.1 (OBSOLETE)"
depends on OBSOLETE
config LIBC_V_2_6
bool
prompt "2.6"
prompt "2.6 (OBSOLETE)"
depends on OBSOLETE
config LIBC_V_2_5_1
bool
prompt "2.5.1"
prompt "2.5.1 (OBSOLETE)"
depends on OBSOLETE
config LIBC_V_2_5
bool
prompt "2.5"
prompt "2.5 (OBSOLETE)"
depends on OBSOLETE
config LIBC_V_2_3_6
bool

View File

@ -26,25 +26,12 @@ config LIBC_V_0_9_30
config LIBC_V_0_9_29
bool
prompt "0.9.29"
prompt "0.9.29 (OBSOLETE)"
depends on OBSOLETE
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)"
prompt "0.9.28.3 (OBSOLETE)"
depends on OBSOLETE
config LIBC_V_snapshot
@ -68,9 +55,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

View File

@ -21,7 +21,8 @@ config LIBELF_V_0_8_11
config LIBELF_V_0_8_10
bool
prompt "0.8.10"
prompt "0.8.10 (OBSOLETE)"
depends on OBSOLETE
endchoice

View File

@ -19,7 +19,8 @@ config SSTRIP_BUILDROOT
config SSTRIP_ELFKICKERS
bool
prompt "ELFkickers"
prompt "ELFkickers (OBSOLETE)"
depends on OBSOLETE
help
The original, ageing version, of sstrip from ELFkickers.
Fully functional, but not maintained anymore.

View File

@ -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 <kkojima@rr.iij4u.or.jp>
Dan Kegel <dank@kegel.com> 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;
}

View File

@ -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[] = ";";

View File

@ -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[] = ";";

View File

@ -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] =
{

View File

@ -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]+$'

View File

@ -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

View File

@ -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. */

View File

@ -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))

View File

@ -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. */

View File

@ -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 */

View File

@ -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)
{

View File

@ -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)

View File

@ -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. */

View File

@ -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:

View File

@ -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 <schwab at suse dot de>
To: Nathan Sidwell <nathan at codesourcery dot com>
Cc: Ian Lance Taylor <ian at wasabisystems dot com>, 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 <nathan@codesourcery.com> 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 <schwab@suse.de>
* 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&#xC3;e 5, 90409 N&#xC3;rnberg, Germany
Key fingerprint = 58CA 54C7 6D53 942B 1756 01D3 44D5 214B 8276 4ED5
"And now for something completely different."

View File

@ -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.

View File

@ -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 */

View File

@ -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 <jakub@redhat.com>
* 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 <rocallahan@novell.com>
* 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 <<NULL>>.
+
+*/
+
+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
{

View File

@ -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;

View File

@ -1,42 +0,0 @@
Message-ID: <000801c48f60$cec16630$9103a8c0@ULOC5012>
From: "Michael Geiger" <mcgege@gmx.de>
To: <dank@kegel.com>
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

View File

@ -1,35 +0,0 @@
Original patch from: ../crosstool-NG/ct-ng.trunk/patches/binutils/2.18.50.0.4/100-arm-uclibcgnueabi.patch
-= BEGIN original header =-
Patch from buildroot, updated to binutils-2.18.50.0.6.
binutils-2.18.50.0.6/configure | 2 1 1 0 +-
binutils-2.18.50.0.6/configure.ac | 2 1 1 0 +-
2 files changed, 2 insertions(+), 2 deletions(-)
-= END original header =-
diff -durN binutils-2.18.50.0.4.orig/configure binutils-2.18.50.0.4/configure
--- binutils-2.18.50.0.4.orig/configure 2008-02-08 17:44:09.000000000 +0100
+++ binutils-2.18.50.0.4/configure 2009-03-07 12:17:29.000000000 +0100
@@ -2249,7 +2249,7 @@
noconfigdirs="$noconfigdirs target-libffi target-qthreads"
libgloss_dir=arm
;;
- arm*-*-linux-gnueabi)
+ arm*-*-linux-gnueabi | arm*-*-linux-uclibcgnueabi)
noconfigdirs="$noconfigdirs target-qthreads"
noconfigdirs="$noconfigdirs target-libobjc"
case ${with_newlib} in
diff -durN binutils-2.18.50.0.4.orig/configure.ac binutils-2.18.50.0.4/configure.ac
--- binutils-2.18.50.0.4.orig/configure.ac 2008-02-08 17:44:09.000000000 +0100
+++ binutils-2.18.50.0.4/configure.ac 2009-03-07 12:17:30.000000000 +0100
@@ -526,7 +526,7 @@
noconfigdirs="$noconfigdirs target-libffi target-qthreads"
libgloss_dir=arm
;;
- arm*-*-linux-gnueabi)
+ arm*-*-linux-gnueabi | arm*-*-linux-uclibcgnueabi)
noconfigdirs="$noconfigdirs target-qthreads"
noconfigdirs="$noconfigdirs target-libobjc"
case ${with_newlib} in

View File

@ -1,35 +0,0 @@
Original patch from: ../crosstool-NG/ct-ng.trunk/patches/binutils/2.18.50.0.4/110-ld-makefile-path.patch
-= BEGIN original header =-
Fix ld scripts path, copied from buildroot.
binutils-2.18.50.0.6/ld/Makefile.am | 2 1 1 0 +-
binutils-2.18.50.0.6/ld/Makefile.in | 2 1 1 0 +-
2 files changed, 2 insertions(+), 2 deletions(-)
-= END original header =-
diff -durN binutils-2.18.50.0.4.orig/ld/Makefile.am binutils-2.18.50.0.4/ld/Makefile.am
--- binutils-2.18.50.0.4.orig/ld/Makefile.am 2007-11-03 21:40:37.000000000 +0100
+++ binutils-2.18.50.0.4/ld/Makefile.am 2009-03-07 12:17:30.000000000 +0100
@@ -18,7 +18,7 @@
# We put the scripts in the directory $(scriptdir)/ldscripts.
# We can't put the scripts in $(datadir) because the SEARCH_DIR
# directives need to be different for native and cross linkers.
-scriptdir = $(tooldir)/lib
+scriptdir = $(libdir)
EMUL = @EMUL@
EMULATION_OFILES = @EMULATION_OFILES@
diff -durN binutils-2.18.50.0.4.orig/ld/Makefile.in binutils-2.18.50.0.4/ld/Makefile.in
--- binutils-2.18.50.0.4.orig/ld/Makefile.in 2007-11-03 21:40:37.000000000 +0100
+++ binutils-2.18.50.0.4/ld/Makefile.in 2009-03-07 12:17:30.000000000 +0100
@@ -287,7 +287,7 @@
# We put the scripts in the directory $(scriptdir)/ldscripts.
# We can't put the scripts in $(datadir) because the SEARCH_DIR
# directives need to be different for native and cross linkers.
-scriptdir = $(tooldir)/lib
+scriptdir = $(libdir)
BASEDIR = $(srcdir)/..
BFDDIR = $(BASEDIR)/bfd
INCDIR = $(BASEDIR)/include

View File

@ -1,31 +0,0 @@
Original patch from: ../crosstool-NG/ct-ng.trunk/patches/binutils/2.18.50.0.4/120-check-ldrunpath-length.patch
-= BEGIN original header =-
Check LD_RUN_PATH length, copied from buildroot.
binutils-2.18.50.0.6/ld/emultempl/elf32.em | 4 4 0 0 ++++
1 file changed, 4 insertions(+)
-= END original header =-
diff -durN binutils-2.18.50.0.4.orig/ld/emultempl/elf32.em binutils-2.18.50.0.4/ld/emultempl/elf32.em
--- binutils-2.18.50.0.4.orig/ld/emultempl/elf32.em 2008-02-08 17:44:55.000000000 +0100
+++ binutils-2.18.50.0.4/ld/emultempl/elf32.em 2009-03-07 12:17:31.000000000 +0100
@@ -1220,6 +1220,8 @@
&& command_line.rpath == NULL)
{
lib_path = (const char *) getenv ("LD_RUN_PATH");
+ if ((lib_path) && (strlen (lib_path) == 0))
+ lib_path = NULL;
if (gld${EMULATION_NAME}_search_needed (lib_path, &n,
force))
break;
@@ -1404,6 +1406,8 @@
rpath = command_line.rpath;
if (rpath == NULL)
rpath = (const char *) getenv ("LD_RUN_PATH");
+ if ((rpath) && (strlen (rpath) == 0))
+ rpath = NULL;
if (! (bfd_elf_size_dynamic_sections
(output_bfd, command_line.soname, rpath,
command_line.filter_shlib,

View File

@ -1,69 +0,0 @@
Original patch from: ../crosstool-NG/ct-ng.trunk/patches/binutils/2.18.50.0.4/130-i386-no-divide-comment.patch
-= BEGIN original header =-
-= END original header =-
diff -durN binutils-2.18.50.0.4.orig/gas/config/tc-i386.c binutils-2.18.50.0.4/gas/config/tc-i386.c
--- binutils-2.18.50.0.4.orig/gas/config/tc-i386.c 2008-02-08 17:44:10.000000000 +0100
+++ binutils-2.18.50.0.4/gas/config/tc-i386.c 2009-03-07 12:17:31.000000000 +0100
@@ -300,24 +300,10 @@
#endif
;
-#if (defined (TE_I386AIX) \
- || ((defined (OBJ_ELF) || defined (OBJ_MAYBE_ELF)) \
- && !defined (TE_GNU) \
- && !defined (TE_LINUX) \
- && !defined (TE_NETWARE) \
- && !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. The option
- --divide will remove '/' from this list. */
-const char *i386_comment_chars = "#/";
-#define SVR4_COMMENT_CHARS 1
-#define PREFIX_SEPARATOR '\\'
-
-#else
+ pre-processor is disabled, these aren't very useful. */
const char *i386_comment_chars = "#";
#define PREFIX_SEPARATOR '/'
-#endif
/* 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'
@@ -7243,20 +7229,6 @@
break;
case OPTION_DIVIDE:
-#ifdef SVR4_COMMENT_CHARS
- {
- char *n, *t;
- const char *s;
-
- n = (char *) xmalloc (strlen (i386_comment_chars) + 1);
- t = n;
- for (s = i386_comment_chars; *s != '\0'; s++)
- if (*s != '/')
- *t++ = *s;
- *t = '\0';
- i386_comment_chars = n;
- }
-#endif
break;
case OPTION_MARCH:
@@ -7392,13 +7364,8 @@
fprintf (stream, _("\
--32/--64 generate 32bit/64bit code\n"));
#endif
-#ifdef SVR4_COMMENT_CHARS
- fprintf (stream, _("\
- --divide do not treat `/' as a comment character\n"));
-#else
fprintf (stream, _("\
--divide ignored\n"));
-#endif
fprintf (stream, _("\
-march=CPU[,+EXTENSION...]\n\
generate code for CPU and EXTENSION, CPU is one of:\n\

View File

@ -1,30 +0,0 @@
Patch from buildroot, updated to binutils-2.18.50.0.6.
binutils-2.18.50.0.6/configure | 2 1 1 0 +-
binutils-2.18.50.0.6/configure.ac | 2 1 1 0 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff -durN binutils-2.18.50.0.6.orig/configure binutils-2.18.50.0.6/configure
--- binutils-2.18.50.0.6.orig/configure 2008-04-03 18:54:04.000000000 +0200
+++ binutils-2.18.50.0.6/configure 2008-05-02 23:18:42.000000000 +0200
@@ -2298,7 +2298,7 @@
noconfigdirs="$noconfigdirs target-libffi target-qthreads"
libgloss_dir=arm
;;
- arm*-*-linux-gnueabi)
+ arm*-*-linux-gnueabi | arm*-*-linux-uclibcgnueabi)
noconfigdirs="$noconfigdirs target-qthreads"
noconfigdirs="$noconfigdirs target-libobjc"
case ${with_newlib} in
diff -durN binutils-2.18.50.0.6.orig/configure.ac binutils-2.18.50.0.6/configure.ac
--- binutils-2.18.50.0.6.orig/configure.ac 2008-04-03 18:54:04.000000000 +0200
+++ binutils-2.18.50.0.6/configure.ac 2008-05-02 23:18:01.000000000 +0200
@@ -560,7 +560,7 @@
noconfigdirs="$noconfigdirs target-libffi target-qthreads"
libgloss_dir=arm
;;
- arm*-*-linux-gnueabi)
+ arm*-*-linux-gnueabi | arm*-*-linux-uclibcgnueabi)
noconfigdirs="$noconfigdirs target-qthreads"
noconfigdirs="$noconfigdirs target-libobjc"
case ${with_newlib} in

View File

@ -1,30 +0,0 @@
Fix ld scripts path, copied from buildroot.
binutils-2.18.50.0.6/ld/Makefile.am | 2 1 1 0 +-
binutils-2.18.50.0.6/ld/Makefile.in | 2 1 1 0 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff -durN binutils-2.18.50.0.6.orig/ld/Makefile.am binutils-2.18.50.0.6/ld/Makefile.am
--- binutils-2.18.50.0.6.orig/ld/Makefile.am 2008-04-03 18:54:05.000000000 +0200
+++ binutils-2.18.50.0.6/ld/Makefile.am 2008-05-02 23:25:14.000000000 +0200
@@ -18,7 +18,7 @@
# We put the scripts in the directory $(scriptdir)/ldscripts.
# We can't put the scripts in $(datadir) because the SEARCH_DIR
# directives need to be different for native and cross linkers.
-scriptdir = $(tooldir)/lib
+scriptdir = $(libdir)
EMUL = @EMUL@
EMULATION_OFILES = @EMULATION_OFILES@
diff -durN binutils-2.18.50.0.6.orig/ld/Makefile.in binutils-2.18.50.0.6/ld/Makefile.in
--- binutils-2.18.50.0.6.orig/ld/Makefile.in 2008-04-03 18:54:05.000000000 +0200
+++ binutils-2.18.50.0.6/ld/Makefile.in 2008-05-02 23:25:14.000000000 +0200
@@ -288,7 +288,7 @@
# We put the scripts in the directory $(scriptdir)/ldscripts.
# We can't put the scripts in $(datadir) because the SEARCH_DIR
# directives need to be different for native and cross linkers.
-scriptdir = $(tooldir)/lib
+scriptdir = $(libdir)
BASEDIR = $(srcdir)/..
BFDDIR = $(BASEDIR)/bfd
INCDIR = $(BASEDIR)/include

View File

@ -1,26 +0,0 @@
Check LD_RUN_PATH length, copied from buildroot.
binutils-2.18.50.0.6/ld/emultempl/elf32.em | 4 4 0 0 ++++
1 file changed, 4 insertions(+)
diff -durN binutils-2.18.50.0.6.orig/ld/emultempl/elf32.em binutils-2.18.50.0.6/ld/emultempl/elf32.em
--- binutils-2.18.50.0.6.orig/ld/emultempl/elf32.em 2008-04-03 18:54:25.000000000 +0200
+++ binutils-2.18.50.0.6/ld/emultempl/elf32.em 2008-05-02 23:30:08.000000000 +0200
@@ -1220,6 +1220,8 @@
&& command_line.rpath == NULL)
{
lib_path = (const char *) getenv ("LD_RUN_PATH");
+ if ((lib_path) && (strlen (lib_path) == 0))
+ lib_path = NULL;
if (gld${EMULATION_NAME}_search_needed (lib_path, &n,
force))
break;
@@ -1405,6 +1407,8 @@
rpath = command_line.rpath;
if (rpath == NULL)
rpath = (const char *) getenv ("LD_RUN_PATH");
+ if ((rpath) && (strlen (rpath) == 0))
+ rpath = NULL;
if (! (bfd_elf_size_dynamic_sections
(link_info.output_bfd, command_line.soname, rpath,
command_line.filter_shlib,

View File

@ -1,64 +0,0 @@
diff -durN binutils-2.18.50.0.6.orig/gas/config/tc-i386.c binutils-2.18.50.0.6/gas/config/tc-i386.c
--- binutils-2.18.50.0.6.orig/gas/config/tc-i386.c 2008-04-03 18:54:04.000000000 +0200
+++ binutils-2.18.50.0.6/gas/config/tc-i386.c 2008-09-22 09:09:23.000000000 +0200
@@ -312,24 +312,10 @@
#endif
;
-#if (defined (TE_I386AIX) \
- || ((defined (OBJ_ELF) || defined (OBJ_MAYBE_ELF)) \
- && !defined (TE_GNU) \
- && !defined (TE_LINUX) \
- && !defined (TE_NETWARE) \
- && !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. The option
- --divide will remove '/' from this list. */
-const char *i386_comment_chars = "#/";
-#define SVR4_COMMENT_CHARS 1
-#define PREFIX_SEPARATOR '\\'
-
-#else
+ pre-processor is disabled, these aren't very useful. */
const char *i386_comment_chars = "#";
#define PREFIX_SEPARATOR '/'
-#endif
/* 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'
@@ -7876,20 +7862,6 @@
break;
case OPTION_DIVIDE:
-#ifdef SVR4_COMMENT_CHARS
- {
- char *n, *t;
- const char *s;
-
- n = (char *) xmalloc (strlen (i386_comment_chars) + 1);
- t = n;
- for (s = i386_comment_chars; *s != '\0'; s++)
- if (*s != '/')
- *t++ = *s;
- *t = '\0';
- i386_comment_chars = n;
- }
-#endif
break;
case OPTION_MARCH:
@@ -8029,13 +8001,8 @@
fprintf (stream, _("\
--32/--64 generate 32bit/64bit code\n"));
#endif
-#ifdef SVR4_COMMENT_CHARS
- fprintf (stream, _("\
- --divide do not treat `/' as a comment character\n"));
-#else
fprintf (stream, _("\
--divide ignored\n"));
-#endif
fprintf (stream, _("\
-march=CPU[,+EXTENSION...]\n\
generate code for CPU and EXTENSION, CPU is one of:\n\

View File

@ -1,30 +0,0 @@
Patch from buildroot, updated to binutils-2.18.50.0.6.
binutils-2.18.50.0.6/configure | 2 1 1 0 +-
binutils-2.18.50.0.6/configure.ac | 2 1 1 0 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff -durN binutils-2.18.50.0.6.orig/configure binutils-2.18.50.0.6/configure
--- binutils-2.18.50.0.6.orig/configure 2008-04-03 18:54:04.000000000 +0200
+++ binutils-2.18.50.0.6/configure 2008-05-02 23:18:42.000000000 +0200
@@ -2298,7 +2298,7 @@
noconfigdirs="$noconfigdirs target-libffi target-qthreads"
libgloss_dir=arm
;;
- arm*-*-linux-gnueabi)
+ arm*-*-linux-gnueabi | arm*-*-linux-uclibcgnueabi)
noconfigdirs="$noconfigdirs target-qthreads"
noconfigdirs="$noconfigdirs target-libobjc"
case ${with_newlib} in
diff -durN binutils-2.18.50.0.6.orig/configure.ac binutils-2.18.50.0.6/configure.ac
--- binutils-2.18.50.0.6.orig/configure.ac 2008-04-03 18:54:04.000000000 +0200
+++ binutils-2.18.50.0.6/configure.ac 2008-05-02 23:18:01.000000000 +0200
@@ -560,7 +560,7 @@
noconfigdirs="$noconfigdirs target-libffi target-qthreads"
libgloss_dir=arm
;;
- arm*-*-linux-gnueabi)
+ arm*-*-linux-gnueabi | arm*-*-linux-uclibcgnueabi)
noconfigdirs="$noconfigdirs target-qthreads"
noconfigdirs="$noconfigdirs target-libobjc"
case ${with_newlib} in

View File

@ -1,30 +0,0 @@
Fix ld scripts path, copied from buildroot.
binutils-2.18.50.0.6/ld/Makefile.am | 2 1 1 0 +-
binutils-2.18.50.0.6/ld/Makefile.in | 2 1 1 0 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff -durN binutils-2.18.50.0.6.orig/ld/Makefile.am binutils-2.18.50.0.6/ld/Makefile.am
--- binutils-2.18.50.0.6.orig/ld/Makefile.am 2008-04-03 18:54:05.000000000 +0200
+++ binutils-2.18.50.0.6/ld/Makefile.am 2008-05-02 23:25:14.000000000 +0200
@@ -18,7 +18,7 @@
# We put the scripts in the directory $(scriptdir)/ldscripts.
# We can't put the scripts in $(datadir) because the SEARCH_DIR
# directives need to be different for native and cross linkers.
-scriptdir = $(tooldir)/lib
+scriptdir = $(libdir)
EMUL = @EMUL@
EMULATION_OFILES = @EMULATION_OFILES@
diff -durN binutils-2.18.50.0.6.orig/ld/Makefile.in binutils-2.18.50.0.6/ld/Makefile.in
--- binutils-2.18.50.0.6.orig/ld/Makefile.in 2008-04-03 18:54:05.000000000 +0200
+++ binutils-2.18.50.0.6/ld/Makefile.in 2008-05-02 23:25:14.000000000 +0200
@@ -288,7 +288,7 @@
# We put the scripts in the directory $(scriptdir)/ldscripts.
# We can't put the scripts in $(datadir) because the SEARCH_DIR
# directives need to be different for native and cross linkers.
-scriptdir = $(tooldir)/lib
+scriptdir = $(libdir)
BASEDIR = $(srcdir)/..
BFDDIR = $(BASEDIR)/bfd
INCDIR = $(BASEDIR)/include

View File

@ -1,26 +0,0 @@
Check LD_RUN_PATH length, copied from buildroot.
binutils-2.18.50.0.6/ld/emultempl/elf32.em | 4 4 0 0 ++++
1 file changed, 4 insertions(+)
diff -durN binutils-2.18.50.0.6.orig/ld/emultempl/elf32.em binutils-2.18.50.0.6/ld/emultempl/elf32.em
--- binutils-2.18.50.0.6.orig/ld/emultempl/elf32.em 2008-04-03 18:54:25.000000000 +0200
+++ binutils-2.18.50.0.6/ld/emultempl/elf32.em 2008-05-02 23:30:08.000000000 +0200
@@ -1220,6 +1220,8 @@
&& command_line.rpath == NULL)
{
lib_path = (const char *) getenv ("LD_RUN_PATH");
+ if ((lib_path) && (strlen (lib_path) == 0))
+ lib_path = NULL;
if (gld${EMULATION_NAME}_search_needed (lib_path, &n,
force))
break;
@@ -1405,6 +1407,8 @@
rpath = command_line.rpath;
if (rpath == NULL)
rpath = (const char *) getenv ("LD_RUN_PATH");
+ if ((rpath) && (strlen (rpath) == 0))
+ rpath = NULL;
if (! (bfd_elf_size_dynamic_sections
(link_info.output_bfd, command_line.soname, rpath,
command_line.filter_shlib,

View File

@ -1,64 +0,0 @@
diff -durN binutils-2.18.50.0.7.orig/gas/config/tc-i386.c binutils-2.18.50.0.7/gas/config/tc-i386.c
--- binutils-2.18.50.0.7.orig/gas/config/tc-i386.c 2008-05-04 16:28:10.000000000 +0200
+++ binutils-2.18.50.0.7/gas/config/tc-i386.c 2008-09-22 09:11:19.000000000 +0200
@@ -312,24 +312,10 @@
#endif
;
-#if (defined (TE_I386AIX) \
- || ((defined (OBJ_ELF) || defined (OBJ_MAYBE_ELF)) \
- && !defined (TE_GNU) \
- && !defined (TE_LINUX) \
- && !defined (TE_NETWARE) \
- && !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. The option
- --divide will remove '/' from this list. */
-const char *i386_comment_chars = "#/";
-#define SVR4_COMMENT_CHARS 1
-#define PREFIX_SEPARATOR '\\'
-
-#else
+ pre-processor is disabled, these aren't very useful. */
const char *i386_comment_chars = "#";
#define PREFIX_SEPARATOR '/'
-#endif
/* 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'
@@ -7920,20 +7906,6 @@
break;
case OPTION_DIVIDE:
-#ifdef SVR4_COMMENT_CHARS
- {
- char *n, *t;
- const char *s;
-
- n = (char *) xmalloc (strlen (i386_comment_chars) + 1);
- t = n;
- for (s = i386_comment_chars; *s != '\0'; s++)
- if (*s != '/')
- *t++ = *s;
- *t = '\0';
- i386_comment_chars = n;
- }
-#endif
break;
case OPTION_MARCH:
@@ -8084,13 +8056,8 @@
fprintf (stream, _("\
--32/--64 generate 32bit/64bit code\n"));
#endif
-#ifdef SVR4_COMMENT_CHARS
- fprintf (stream, _("\
- --divide do not treat `/' as a comment character\n"));
-#else
fprintf (stream, _("\
--divide ignored\n"));
-#endif
fprintf (stream, _("\
-march=CPU[,+EXTENSION...]\n\
generate code for CPU and EXTENSION, CPU is one of:\n\

View File

@ -1,24 +0,0 @@
diff -durN binutils-2.18.50.0.8.orig/configure binutils-2.18.50.0.8/configure
--- binutils-2.18.50.0.8.orig/configure 2008-07-10 17:32:56.000000000 +0200
+++ binutils-2.18.50.0.8/configure 2008-07-13 23:08:13.000000000 +0200
@@ -2313,7 +2313,7 @@
noconfigdirs="$noconfigdirs target-libffi target-qthreads"
libgloss_dir=arm
;;
- arm*-*-linux-gnueabi)
+ arm*-*-linux-gnueabi | arm*-*-linux-uclibcgnueabi)
noconfigdirs="$noconfigdirs target-qthreads"
case ${with_newlib} in
no) noconfigdirs="$noconfigdirs target-newlib target-libgloss"
diff -durN binutils-2.18.50.0.8.orig/configure.ac binutils-2.18.50.0.8/configure.ac
--- binutils-2.18.50.0.8.orig/configure.ac 2008-07-10 17:32:56.000000000 +0200
+++ binutils-2.18.50.0.8/configure.ac 2008-07-13 23:08:13.000000000 +0200
@@ -562,7 +562,7 @@
noconfigdirs="$noconfigdirs target-libffi target-qthreads"
libgloss_dir=arm
;;
- arm*-*-linux-gnueabi)
+ arm*-*-linux-gnueabi | arm*-*-linux-uclibcgnueabi)
noconfigdirs="$noconfigdirs target-qthreads"
case ${with_newlib} in
no) noconfigdirs="$noconfigdirs target-newlib target-libgloss"

View File

@ -1,24 +0,0 @@
diff -durN binutils-2.18.50.0.8.orig/ld/Makefile.am binutils-2.18.50.0.8/ld/Makefile.am
--- binutils-2.18.50.0.8.orig/ld/Makefile.am 2008-04-03 18:54:05.000000000 +0200
+++ binutils-2.18.50.0.8/ld/Makefile.am 2008-07-13 23:15:40.000000000 +0200
@@ -18,7 +18,7 @@
# We put the scripts in the directory $(scriptdir)/ldscripts.
# We can't put the scripts in $(datadir) because the SEARCH_DIR
# directives need to be different for native and cross linkers.
-scriptdir = $(tooldir)/lib
+scriptdir = $(libdir)
EMUL = @EMUL@
EMULATION_OFILES = @EMULATION_OFILES@
diff -durN binutils-2.18.50.0.8.orig/ld/Makefile.in binutils-2.18.50.0.8/ld/Makefile.in
--- binutils-2.18.50.0.8.orig/ld/Makefile.in 2008-07-10 17:32:58.000000000 +0200
+++ binutils-2.18.50.0.8/ld/Makefile.in 2008-07-13 23:15:40.000000000 +0200
@@ -290,7 +290,7 @@
# We put the scripts in the directory $(scriptdir)/ldscripts.
# We can't put the scripts in $(datadir) because the SEARCH_DIR
# directives need to be different for native and cross linkers.
-scriptdir = $(tooldir)/lib
+scriptdir = $(libdir)
BASEDIR = $(srcdir)/..
BFDDIR = $(BASEDIR)/bfd
INCDIR = $(BASEDIR)/include

View File

@ -1,21 +0,0 @@
diff -durN binutils-2.18.50.0.8.orig/ld/emultempl/elf32.em binutils-2.18.50.0.8/ld/emultempl/elf32.em
--- binutils-2.18.50.0.8.orig/ld/emultempl/elf32.em 2008-07-10 17:33:23.000000000 +0200
+++ binutils-2.18.50.0.8/ld/emultempl/elf32.em 2008-07-13 23:19:29.000000000 +0200
@@ -1220,6 +1220,8 @@
&& command_line.rpath == NULL)
{
lib_path = (const char *) getenv ("LD_RUN_PATH");
+ if ((lib_path) && (strlen (lib_path) == 0))
+ lib_path = NULL;
if (gld${EMULATION_NAME}_search_needed (lib_path, &n,
force))
break;
@@ -1405,6 +1407,8 @@
rpath = command_line.rpath;
if (rpath == NULL)
rpath = (const char *) getenv ("LD_RUN_PATH");
+ if ((rpath) && (strlen (rpath) == 0))
+ rpath = NULL;
if (! (bfd_elf_size_dynamic_sections
(link_info.output_bfd, command_line.soname, rpath,
command_line.filter_shlib,

View File

@ -1,64 +0,0 @@
diff -durN binutils-2.18.50.0.8.orig/gas/config/tc-i386.c binutils-2.18.50.0.8/gas/config/tc-i386.c
--- binutils-2.18.50.0.8.orig/gas/config/tc-i386.c 2008-07-10 17:32:58.000000000 +0200
+++ binutils-2.18.50.0.8/gas/config/tc-i386.c 2008-09-22 09:12:39.000000000 +0200
@@ -313,24 +313,10 @@
#endif
;
-#if (defined (TE_I386AIX) \
- || ((defined (OBJ_ELF) || defined (OBJ_MAYBE_ELF)) \
- && !defined (TE_GNU) \
- && !defined (TE_LINUX) \
- && !defined (TE_NETWARE) \
- && !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. The option
- --divide will remove '/' from this list. */
-const char *i386_comment_chars = "#/";
-#define SVR4_COMMENT_CHARS 1
-#define PREFIX_SEPARATOR '\\'
-
-#else
+ pre-processor is disabled, these aren't very useful. */
const char *i386_comment_chars = "#";
#define PREFIX_SEPARATOR '/'
-#endif
/* 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'
@@ -7952,20 +7938,6 @@
break;
case OPTION_DIVIDE:
-#ifdef SVR4_COMMENT_CHARS
- {
- char *n, *t;
- const char *s;
-
- n = (char *) xmalloc (strlen (i386_comment_chars) + 1);
- t = n;
- for (s = i386_comment_chars; *s != '\0'; s++)
- if (*s != '/')
- *t++ = *s;
- *t = '\0';
- i386_comment_chars = n;
- }
-#endif
break;
case OPTION_MARCH:
@@ -8116,13 +8088,8 @@
fprintf (stream, _("\
--32/--64 generate 32bit/64bit code\n"));
#endif
-#ifdef SVR4_COMMENT_CHARS
- fprintf (stream, _("\
- --divide do not treat `/' as a comment character\n"));
-#else
fprintf (stream, _("\
--divide ignored\n"));
-#endif
fprintf (stream, _("\
-march=CPU[,+EXTENSION...]\n\
generate code for CPU and EXTENSION, CPU is one of:\n\

View File

@ -1,24 +0,0 @@
diff -durN binutils-2.18.50.0.8.orig/configure binutils-2.18.50.0.8/configure
--- binutils-2.18.50.0.8.orig/configure 2008-07-10 17:32:56.000000000 +0200
+++ binutils-2.18.50.0.8/configure 2008-07-13 23:08:13.000000000 +0200
@@ -2313,7 +2313,7 @@
noconfigdirs="$noconfigdirs target-libffi target-qthreads"
libgloss_dir=arm
;;
- arm*-*-linux-gnueabi)
+ arm*-*-linux-gnueabi | arm*-*-linux-uclibcgnueabi)
noconfigdirs="$noconfigdirs target-qthreads"
case ${with_newlib} in
no) noconfigdirs="$noconfigdirs target-newlib target-libgloss"
diff -durN binutils-2.18.50.0.8.orig/configure.ac binutils-2.18.50.0.8/configure.ac
--- binutils-2.18.50.0.8.orig/configure.ac 2008-07-10 17:32:56.000000000 +0200
+++ binutils-2.18.50.0.8/configure.ac 2008-07-13 23:08:13.000000000 +0200
@@ -562,7 +562,7 @@
noconfigdirs="$noconfigdirs target-libffi target-qthreads"
libgloss_dir=arm
;;
- arm*-*-linux-gnueabi)
+ arm*-*-linux-gnueabi | arm*-*-linux-uclibcgnueabi)
noconfigdirs="$noconfigdirs target-qthreads"
case ${with_newlib} in
no) noconfigdirs="$noconfigdirs target-newlib target-libgloss"

View File

@ -1,24 +0,0 @@
diff -durN binutils-2.18.50.0.8.orig/ld/Makefile.am binutils-2.18.50.0.8/ld/Makefile.am
--- binutils-2.18.50.0.8.orig/ld/Makefile.am 2008-04-03 18:54:05.000000000 +0200
+++ binutils-2.18.50.0.8/ld/Makefile.am 2008-07-13 23:15:40.000000000 +0200
@@ -18,7 +18,7 @@
# We put the scripts in the directory $(scriptdir)/ldscripts.
# We can't put the scripts in $(datadir) because the SEARCH_DIR
# directives need to be different for native and cross linkers.
-scriptdir = $(tooldir)/lib
+scriptdir = $(libdir)
EMUL = @EMUL@
EMULATION_OFILES = @EMULATION_OFILES@
diff -durN binutils-2.18.50.0.8.orig/ld/Makefile.in binutils-2.18.50.0.8/ld/Makefile.in
--- binutils-2.18.50.0.8.orig/ld/Makefile.in 2008-07-10 17:32:58.000000000 +0200
+++ binutils-2.18.50.0.8/ld/Makefile.in 2008-07-13 23:15:40.000000000 +0200
@@ -290,7 +290,7 @@
# We put the scripts in the directory $(scriptdir)/ldscripts.
# We can't put the scripts in $(datadir) because the SEARCH_DIR
# directives need to be different for native and cross linkers.
-scriptdir = $(tooldir)/lib
+scriptdir = $(libdir)
BASEDIR = $(srcdir)/..
BFDDIR = $(BASEDIR)/bfd
INCDIR = $(BASEDIR)/include

View File

@ -1,21 +0,0 @@
diff -durN binutils-2.18.50.0.8.orig/ld/emultempl/elf32.em binutils-2.18.50.0.8/ld/emultempl/elf32.em
--- binutils-2.18.50.0.8.orig/ld/emultempl/elf32.em 2008-07-10 17:33:23.000000000 +0200
+++ binutils-2.18.50.0.8/ld/emultempl/elf32.em 2008-07-13 23:19:29.000000000 +0200
@@ -1220,6 +1220,8 @@
&& command_line.rpath == NULL)
{
lib_path = (const char *) getenv ("LD_RUN_PATH");
+ if ((lib_path) && (strlen (lib_path) == 0))
+ lib_path = NULL;
if (gld${EMULATION_NAME}_search_needed (lib_path, &n,
force))
break;
@@ -1405,6 +1407,8 @@
rpath = command_line.rpath;
if (rpath == NULL)
rpath = (const char *) getenv ("LD_RUN_PATH");
+ if ((rpath) && (strlen (rpath) == 0))
+ rpath = NULL;
if (! (bfd_elf_size_dynamic_sections
(link_info.output_bfd, command_line.soname, rpath,
command_line.filter_shlib,

View File

@ -1,64 +0,0 @@
diff -durN binutils-2.18.50.0.8.orig/gas/config/tc-i386.c binutils-2.18.50.0.8/gas/config/tc-i386.c
--- binutils-2.18.50.0.8.orig/gas/config/tc-i386.c 2008-07-10 17:32:58.000000000 +0200
+++ binutils-2.18.50.0.8/gas/config/tc-i386.c 2008-09-22 09:12:39.000000000 +0200
@@ -313,24 +313,10 @@
#endif
;
-#if (defined (TE_I386AIX) \
- || ((defined (OBJ_ELF) || defined (OBJ_MAYBE_ELF)) \
- && !defined (TE_GNU) \
- && !defined (TE_LINUX) \
- && !defined (TE_NETWARE) \
- && !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. The option
- --divide will remove '/' from this list. */
-const char *i386_comment_chars = "#/";
-#define SVR4_COMMENT_CHARS 1
-#define PREFIX_SEPARATOR '\\'
-
-#else
+ pre-processor is disabled, these aren't very useful. */
const char *i386_comment_chars = "#";
#define PREFIX_SEPARATOR '/'
-#endif
/* 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'
@@ -7952,20 +7938,6 @@
break;
case OPTION_DIVIDE:
-#ifdef SVR4_COMMENT_CHARS
- {
- char *n, *t;
- const char *s;
-
- n = (char *) xmalloc (strlen (i386_comment_chars) + 1);
- t = n;
- for (s = i386_comment_chars; *s != '\0'; s++)
- if (*s != '/')
- *t++ = *s;
- *t = '\0';
- i386_comment_chars = n;
- }
-#endif
break;
case OPTION_MARCH:
@@ -8116,13 +8088,8 @@
fprintf (stream, _("\
--32/--64 generate 32bit/64bit code\n"));
#endif
-#ifdef SVR4_COMMENT_CHARS
- fprintf (stream, _("\
- --divide do not treat `/' as a comment character\n"));
-#else
fprintf (stream, _("\
--divide ignored\n"));
-#endif
fprintf (stream, _("\
-march=CPU[,+EXTENSION...]\n\
generate code for CPU and EXTENSION, CPU is one of:\n\

View File

@ -0,0 +1,16 @@
--- bfd/elf64-ppc.c.jj 2004-09-27 16:46:06.000000000 -0400
+++ bfd/elf64-ppc.c 2004-10-04 09:09:50.000000000 -0400
@@ -9681,7 +9681,12 @@ ppc64_elf_relocate_section (bfd *output_
else if (!SYMBOL_REFERENCES_LOCAL (info, &h->elf)
&& !is_opd
&& r_type != R_PPC64_TOC)
- outrel.r_info = ELF64_R_INFO (h->elf.dynindx, r_type);
+ {
+ outrel.r_info = ELF64_R_INFO (h->elf.dynindx, r_type);
+ if (h->elf.dynindx == -1
+ && h->elf.root.type == bfd_link_hash_undefweak)
+ memset (&outrel, 0, sizeof outrel);
+ }
else
{
/* This symbol is local, or marked to become local,

View File

@ -0,0 +1,13 @@
http://sourceware.org/ml/binutils/2007-07/msg00401.html
http://sourceware.org/bugzilla/show_bug.cgi?id=4970
--- configure
+++ configure
@@ -5601,6 +5601,7 @@ case "${host}" in
*-*-mingw* | *-*-cygwin ) RPATH_ENVVAR=PATH ;;
*) RPATH_ENVVAR=LD_LIBRARY_PATH ;;
esac
+RPATH_ENVVAR="cant_touch_this_nah_nah_nah"
# On systems where the dynamic library environment variable is PATH,
if test "$RPATH_ENVVAR" = PATH; then

View File

@ -0,0 +1,47 @@
r10231 | lethal | 2005-05-02 09:58:00 -0400 (Mon, 02 May 2005) | 13 lines
Likewise, binutils has no idea about any of these new targets either, so we
fix that up too.. now we're able to actually build a real toolchain for
sh2a_nofpu- and other more ineptly named toolchains (and yes, there are more
inept targets than that one, really. Go look, I promise).
--- binutils-2.16.90.0.2-dist/configure
+++ binutils-2.16.90.0.2/configure
@@ -1207,7 +1207,7 @@
am33_2.0-*-linux*)
noconfigdirs="$noconfigdirs ${libgcj} target-newlib target-libgloss"
;;
- sh-*-linux*)
+ sh*-*-linux*)
noconfigdirs="$noconfigdirs ${libgcj} target-newlib target-libgloss"
;;
sh*-*-pe|mips*-*-pe|*arm-wince-pe)
@@ -1495,7 +1495,7 @@
romp-*-*)
noconfigdirs="$noconfigdirs bfd binutils ld gas opcodes target-libgloss ${libgcj}"
;;
- sh-*-* | sh64-*-*)
+ sh*-*-* | sh64-*-*)
case "${host}" in
i[3456789]86-*-vsta) ;; # don't add gprof back in
i[3456789]86-*-go32*) ;; # don't add gprof back in
--- binutils-2.16.90.0.2-dist/configure.ac
+++ binutils-2.16.90.0.2/configure.ac
@@ -424,7 +424,7 @@
am33_2.0-*-linux*)
noconfigdirs="$noconfigdirs ${libgcj} target-newlib target-libgloss"
;;
- sh-*-linux*)
+ sh*-*-linux*)
noconfigdirs="$noconfigdirs ${libgcj} target-newlib target-libgloss"
;;
sh*-*-pe|mips*-*-pe|*arm-wince-pe)
@@ -712,7 +712,7 @@
romp-*-*)
noconfigdirs="$noconfigdirs bfd binutils ld gas opcodes target-libgloss ${libgcj}"
;;
- sh-*-* | sh64-*-*)
+ sh*-*-* | sh64-*-*)
case "${host}" in
i[[3456789]]86-*-vsta) ;; # don't add gprof back in
i[[3456789]]86-*-go32*) ;; # don't add gprof back in

View File

@ -0,0 +1,36 @@
Signed-off-by: Sven Rebhan <odinshorse@googlemail.com>
Always try to prepend the sysroot prefix to absolute filenames first.
http://bugs.gentoo.org/275666
http://sourceware.org/bugzilla/show_bug.cgi?id=10340
--- ld/ldfile.c
+++ ld/ldfile.c
@@ -308,18 +308,24 @@
directory first. */
if (! entry->is_archive)
{
- if (entry->sysrooted && IS_ABSOLUTE_PATH (entry->filename))
+ /* For absolute pathnames, try to always open the file in the
+ sysroot first. If this fails, try to open the file at the
+ given location. */
+ entry->sysrooted = is_sysrooted_pathname(entry->filename, FALSE);
+ if (IS_ABSOLUTE_PATH (entry->filename) && ld_sysroot && ! entry->sysrooted)
{
char *name = concat (ld_sysroot, entry->filename,
(const char *) NULL);
if (ldfile_try_open_bfd (name, entry))
{
entry->filename = name;
+ entry->sysrooted = TRUE;
return TRUE;
}
free (name);
}
- else if (ldfile_try_open_bfd (entry->filename, entry))
+
+ if (ldfile_try_open_bfd (entry->filename, entry))
{
entry->sysrooted = IS_ABSOLUTE_PATH (entry->filename)
&& is_sysrooted_pathname (entry->filename, TRUE);

View File

@ -0,0 +1,47 @@
#!/bin/sh -e
## 012_check_ldrunpath_length.dpatch by Chris Chimelis <chris@debian.org>
##
## All lines beginning with `## DP:' are a description of the patch.
## DP: Only generate an RPATH entry if LD_RUN_PATH is not empty, for
## DP: cases where -rpath isn't specified. (#151024)
if [ $# -ne 1 ]; then
echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
exit 1
fi
[ -f debian/patches/00patch-opts ] && . debian/patches/00patch-opts
patch_opts="${patch_opts:--f --no-backup-if-mismatch}"
case "$1" in
-patch) patch $patch_opts -p1 < $0;;
-unpatch) patch $patch_opts -p1 -R < $0;;
*)
echo >&2 "`basename $0`: script expects -patch|-unpatch as argument"
exit 1;;
esac
exit 0
@DPATCH@
diff -urNad /home/james/debian/packages/binutils/new/binutils-2.15/ld/emultempl/elf32.em binutils-2.15/ld/emultempl/elf32.em
--- /home/james/debian/packages/binutils/new/binutils-2.15/ld/emultempl/elf32.em 2004-05-21 23:12:58.000000000 +0100
+++ binutils-2.15/ld/emultempl/elf32.em 2004-05-21 23:12:59.000000000 +0100
@@ -692,6 +692,8 @@
&& command_line.rpath == NULL)
{
lib_path = (const char *) getenv ("LD_RUN_PATH");
+ if ((lib_path) && (strlen (lib_path) == 0))
+ lib_path = NULL;
if (gld${EMULATION_NAME}_search_needed (lib_path, &n,
force))
break;
@@ -871,6 +873,8 @@
rpath = command_line.rpath;
if (rpath == NULL)
rpath = (const char *) getenv ("LD_RUN_PATH");
+ if ((rpath) && (strlen (rpath) == 0))
+ rpath = NULL;
if (! (bfd_elf_size_dynamic_sections
(output_bfd, command_line.soname, rpath,
command_line.filter_shlib,

View File

@ -0,0 +1,238 @@
--- binutils-2.20/bfd/elf-bfd.h
+++ binutils-2.20/bfd/elf-bfd.h
@@ -1527,6 +1527,9 @@ struct elf_obj_tdata
/* Segment flags for the PT_GNU_STACK segment. */
unsigned int stack_flags;
+ /* Segment flags for the PT_PAX_FLAGS segment. */
+ unsigned int pax_flags;
+
/* Symbol version definitions in external objects. */
Elf_Internal_Verdef *verdef;
--- binutils-2.20/bfd/elf.c
+++ binutils-2.20/bfd/elf.c
@@ -1081,6 +1081,7 @@ get_segment_type (unsigned int p_type)
case PT_GNU_EH_FRAME: pt = "EH_FRAME"; break;
case PT_GNU_STACK: pt = "STACK"; break;
case PT_GNU_RELRO: pt = "RELRO"; break;
+ case PT_PAX_FLAGS: pt = "PAX_FLAGS"; break;
default: pt = NULL; break;
}
return pt;
@@ -2379,6 +2380,9 @@ bfd_section_from_phdr (bfd *abfd, Elf_Internal_Phdr *hdr, int index)
case PT_GNU_RELRO:
return _bfd_elf_make_section_from_phdr (abfd, hdr, index, "relro");
+ case PT_PAX_FLAGS:
+ return _bfd_elf_make_section_from_phdr (abfd, hdr, index, "pax_flags");
+
default:
/* Check for any processor-specific program segment types. */
bed = get_elf_backend_data (abfd);
@@ -3393,6 +3397,11 @@ get_program_header_size (bfd *abfd, struct bfd_link_info *info)
++segs;
}
+ {
+ /* We need a PT_PAX_FLAGS segment. */
+ ++segs;
+ }
+
for (s = abfd->sections; s != NULL; s = s->next)
{
if ((s->flags & SEC_LOAD) != 0
@@ -3972,6 +3981,20 @@ _bfd_elf_map_sections_to_segments (bfd *abfd, struct bfd_link_info *info)
}
}
+ {
+ amt = sizeof (struct elf_segment_map);
+ m = bfd_zalloc (abfd, amt);
+ if (m == NULL)
+ goto error_return;
+ m->next = NULL;
+ m->p_type = PT_PAX_FLAGS;
+ m->p_flags = elf_tdata (abfd)->pax_flags;
+ m->p_flags_valid = 1;
+
+ *pm = m;
+ pm = &m->next;
+ }
+
free (sections);
elf_tdata (abfd)->segment_map = mfirst;
}
@@ -5176,7 +5199,8 @@ rewrite_elf_program_header (bfd *ibfd, bfd *obfd)
6. PT_TLS segment includes only SHF_TLS sections.
7. SHF_TLS sections are only in PT_TLS or PT_LOAD segments.
8. PT_DYNAMIC should not contain empty sections at the beginning
- (with the possible exception of .dynamic). */
+ (with the possible exception of .dynamic).
+ 9. PT_PAX_FLAGS segments do not include any sections. */
#define IS_SECTION_IN_INPUT_SEGMENT(section, segment, bed) \
((((segment->p_paddr \
? IS_CONTAINED_BY_LMA (section, segment, segment->p_paddr) \
@@ -5184,6 +5208,7 @@ rewrite_elf_program_header (bfd *ibfd, bfd *obfd)
&& (section->flags & SEC_ALLOC) != 0) \
|| IS_NOTE (segment, section)) \
&& segment->p_type != PT_GNU_STACK \
+ && segment->p_type != PT_PAX_FLAGS \
&& (segment->p_type != PT_TLS \
|| (section->flags & SEC_THREAD_LOCAL)) \
&& (segment->p_type == PT_LOAD \
--- binutils-2.20/bfd/elflink.c
+++ binutils-2.20/bfd/elflink.c
@@ -5465,16 +5465,30 @@ bfd_elf_size_dynamic_sections (bfd *output_bfd,
return TRUE;
bed = get_elf_backend_data (output_bfd);
+
+ elf_tdata (output_bfd)->pax_flags = PF_NORANDEXEC;
+ if (info->execheap)
+ elf_tdata (output_bfd)->pax_flags |= PF_NOMPROTECT;
+ else if (info->noexecheap)
+ elf_tdata (output_bfd)->pax_flags |= PF_MPROTECT;
+
if (info->execstack)
- elf_tdata (output_bfd)->stack_flags = PF_R | PF_W | PF_X;
+ {
+ elf_tdata (output_bfd)->stack_flags = PF_R | PF_W | PF_X;
+ elf_tdata (output_bfd)->pax_flags |= PF_EMUTRAMP;
+ }
else if (info->noexecstack)
- elf_tdata (output_bfd)->stack_flags = PF_R | PF_W;
+ {
+ elf_tdata (output_bfd)->stack_flags = PF_R | PF_W;
+ elf_tdata (output_bfd)->pax_flags |= PF_NOEMUTRAMP;
+ }
else
{
bfd *inputobj;
asection *notesec = NULL;
int exec = 0;
+ elf_tdata (output_bfd)->pax_flags |= PF_NOEMUTRAMP;
for (inputobj = info->input_bfds;
inputobj;
inputobj = inputobj->link_next)
@@ -5487,7 +5501,11 @@ bfd_elf_size_dynamic_sections (bfd *output_bfd,
if (s)
{
if (s->flags & SEC_CODE)
- exec = PF_X;
+ {
+ elf_tdata (output_bfd)->pax_flags &= ~PF_NOEMUTRAMP;
+ elf_tdata (output_bfd)->pax_flags |= PF_EMUTRAMP;
+ exec = PF_X;
+ }
notesec = s;
}
else if (bed->default_execstack)
--- binutils-2.20/binutils/readelf.c
+++ binutils-2.20/binutils/readelf.c
@@ -2556,6 +2556,7 @@ get_segment_type (unsigned long p_type)
return "GNU_EH_FRAME";
case PT_GNU_STACK: return "GNU_STACK";
case PT_GNU_RELRO: return "GNU_RELRO";
+ case PT_PAX_FLAGS: return "PAX_FLAGS";
default:
if ((p_type >= PT_LOPROC) && (p_type <= PT_HIPROC))
--- binutils-2.20/include/bfdlink.h
+++ binutils-2.20/include/bfdlink.h
@@ -319,6 +319,14 @@ struct bfd_link_info
/* TRUE if PT_GNU_RELRO segment should be created. */
unsigned int relro: 1;
+ /* TRUE if PT_PAX_FLAGS segment should be created with PF_NOMPROTECT
+ flags. */
+ unsigned int execheap: 1;
+
+ /* TRUE if PT_PAX_FLAGS segment should be created with PF_MPROTECT
+ flags. */
+ unsigned int noexecheap: 1;
+
/* TRUE if we should warn when adding a DT_TEXTREL to a shared object. */
unsigned int warn_shared_textrel: 1;
--- binutils-2.20/include/elf/common.h
+++ binutils-2.20/include/elf/common.h
@@ -422,6 +422,7 @@
#define PT_SUNW_EH_FRAME PT_GNU_EH_FRAME /* Solaris uses the same value */
#define PT_GNU_STACK (PT_LOOS + 0x474e551) /* Stack flags */
#define PT_GNU_RELRO (PT_LOOS + 0x474e552) /* Read-only after relocation */
+#define PT_PAX_FLAGS (PT_LOOS + 0x5041580) /* PaX flags */
/* Program segment permissions, in program header p_flags field. */
@@ -432,6 +433,21 @@
#define PF_MASKOS 0x0FF00000 /* New value, Oct 4, 1999 Draft */
#define PF_MASKPROC 0xF0000000 /* Processor-specific reserved bits */
+/* Flags to control PaX behavior. */
+
+#define PF_PAGEEXEC (1 << 4) /* Enable PAGEEXEC */
+#define PF_NOPAGEEXEC (1 << 5) /* Disable PAGEEXEC */
+#define PF_SEGMEXEC (1 << 6) /* Enable SEGMEXEC */
+#define PF_NOSEGMEXEC (1 << 7) /* Disable SEGMEXEC */
+#define PF_MPROTECT (1 << 8) /* Enable MPROTECT */
+#define PF_NOMPROTECT (1 << 9) /* Disable MPROTECT */
+#define PF_RANDEXEC (1 << 10) /* Enable RANDEXEC */
+#define PF_NORANDEXEC (1 << 11) /* Disable RANDEXEC */
+#define PF_EMUTRAMP (1 << 12) /* Enable EMUTRAMP */
+#define PF_NOEMUTRAMP (1 << 13) /* Disable EMUTRAMP */
+#define PF_RANDMMAP (1 << 14) /* Enable RANDMMAP */
+#define PF_NORANDMMAP (1 << 15) /* Disable RANDMMAP */
+
/* Values for section header, sh_type field. */
#define SHT_NULL 0 /* Section header table entry unused */
--- binutils-2.20/ld/emultempl/elf32.em
+++ binutils-2.20/ld/emultempl/elf32.em
@@ -2159,6 +2159,16 @@ fragment <<EOF
link_info.noexecstack = TRUE;
link_info.execstack = FALSE;
}
+ else if (strcmp (optarg, "execheap") == 0)
+ {
+ link_info.execheap = TRUE;
+ link_info.noexecheap = FALSE;
+ }
+ else if (strcmp (optarg, "noexecheap") == 0)
+ {
+ link_info.noexecheap = TRUE;
+ link_info.execheap = FALSE;
+ }
EOF
if test -n "$COMMONPAGESIZE"; then
@@ -2237,6 +2247,8 @@ fragment <<EOF
fprintf (file, _("\
-z execstack Mark executable as requiring executable stack\n"));
fprintf (file, _("\
+ -z execheap Mark executable as requiring executable heap\n"));
+ fprintf (file, _("\
-z initfirst Mark DSO to be initialized first at runtime\n"));
fprintf (file, _("\
-z interpose Mark object to interpose all DSOs but executable\n"));
@@ -2260,6 +2272,8 @@ fragment <<EOF
-z nodump Mark DSO not available to dldump\n"));
fprintf (file, _("\
-z noexecstack Mark executable as not requiring executable stack\n"));
+ fprintf (file, _("\
+ -z noexecheap Mark executable as not requiring executable heap\n"));
EOF
if test -n "$COMMONPAGESIZE"; then
--- binutils-2.20/ld/ldgram.y
+++ binutils-2.20/ld/ldgram.y
@@ -1116,6 +1116,8 @@ phdr_type:
$$ = exp_intop (0x6474e550);
else if (strcmp (s, "PT_GNU_STACK") == 0)
$$ = exp_intop (0x6474e551);
+ else if (strcmp (s, "PT_PAX_FLAGS") == 0)
+ $$ = exp_intop (0x65041580);
else
{
einfo (_("\

View File

@ -0,0 +1,16 @@
--- binutils/ld/emulparams/elf_i386.sh
+++ binutils/ld/emulparams/elf_i386.sh
@@ -13,3 +13,13 @@
NO_SMALL_DATA=yes
SEPARATE_GOTPLT=12
IREL_IN_PLT=
+
+# In Gentoo, we install 32bit libs into /lib32 in an
+# ABI setup with amd64/x86
+case "$target" in
+ x86_64*-linux*)
+ case "$EMULATION_NAME" in
+ *i386*) LIBPATH_SUFFIX=32 ;;
+ esac
+ ;;
+esac

View File

@ -0,0 +1,59 @@
textrels are bad for forcing copy-on-write (this affects everyone),
and for security/runtime code generation, this affects security ppl.
But in either case, it doesn't matter who needs textrels, it's
the very fact that they're needed at all.
2006-06-10 Ned Ludd <solar@gentoo.org>, Mike Frysinger <vapier@gentoo.org>
* bfd/elflink.c (bfd_elf_final_link): Check all objects for TEXTRELs.
* ld/ldmain.c (main): Change textrel warning default to true.
* ld/testsuite/lib/ld-lib.exp (default_ld_simple_link): Scrub TEXTREL
warnings from ld output.
--- bfd/elflink.c
+++ bfd/elflink.c
@@ -8652,14 +8652,12 @@
goto error_return;
/* Check for DT_TEXTREL (late, in case the backend removes it). */
- if (info->warn_shared_textrel && info->shared)
+ o = bfd_get_section_by_name (dynobj, ".dynamic");
+ if (info->warn_shared_textrel && o != NULL)
{
bfd_byte *dyncon, *dynconend;
/* Fix up .dynamic entries. */
- o = bfd_get_section_by_name (dynobj, ".dynamic");
- BFD_ASSERT (o != NULL);
-
dyncon = o->contents;
dynconend = o->contents + o->size;
for (; dyncon < dynconend; dyncon += bed->s->sizeof_dyn)
@@ -8702,7 +8702,7 @@ bfd_elf_final_link (bfd *abfd, struct bf
if (dyn.d_tag == DT_TEXTREL)
{
info->callbacks->einfo
- (_("%P: warning: creating a DT_TEXTREL in a shared object.\n"));
+ (_("%P: warning: creating a DT_TEXTREL in object.\n"));
break;
}
}
--- ld/ldmain.c
+++ ld/ldmain.c
@@ -282,2 +282,3 @@ main (int argc, char **argv)
link_info.spare_dynamic_tags = 5;
+ link_info.warn_shared_textrel = TRUE;
link_info.sharable_sections = FALSE;
--- ld/testsuite/lib/ld-lib.exp
+++ ld/testsuite/lib/ld-lib.exp
@@ -181,6 +181,10 @@ proc default_ld_simple_link { ld target
# symbol, since the default linker script might use ENTRY.
regsub -all "(^|\n)(\[^\n\]*: warning: cannot find entry symbol\[^\n\]*\n?)" $exec_output "\\1" exec_output
+ # Gentoo tweak:
+ # We want to ignore TEXTREL warnings since we force enable them by default
+ regsub -all "^lt-ld-new: warning: creating a DT_TEXTREL in object\." $exec_output "\\1" exec_output
+
if [string match "" $exec_output] then {
return 1
} else {

View File

@ -0,0 +1,25 @@
Don't generate RPATH if we're going to be generating RUNPATH.
need to ponder what ramifications this has before enabling it
--- binutils/bfd/elflink.c
+++ binutils/bfd/elflink.c
@@ -5382,11 +5382,15 @@
indx = _bfd_elf_strtab_add (elf_hash_table (info)->dynstr, rpath,
TRUE);
- if (indx == (bfd_size_type) -1
- || !_bfd_elf_add_dynamic_entry (info, DT_RPATH, indx))
+ if (indx == (bfd_size_type) -1)
return FALSE;
- if (info->new_dtags)
+ if (!info->new_dtags)
+ {
+ if (!_bfd_elf_add_dynamic_entry (info, DT_RPATH, indx))
+ return FALSE;
+ }
+ else
{
_bfd_elf_strtab_addref (elf_hash_table (info)->dynstr, indx);
if (!_bfd_elf_add_dynamic_entry (info, DT_RUNPATH, indx))

View File

@ -0,0 +1,10 @@
--- binutils/ld/ldmain.c
+++ binutils/ld/ldmain.c
@@ -296,6 +296,7 @@ main (int argc, char **argv)
link_info.allow_undefined_version = TRUE;
link_info.keep_memory = TRUE;
+ link_info.new_dtags = TRUE;
link_info.combreloc = TRUE;
link_info.strip_discarded = TRUE;
link_info.callbacks = &link_callbacks;

View File

@ -0,0 +1,16 @@
Index: binutils-2.19.51.0.5/ld/ld.texinfo
===================================================================
--- binutils-2.19.51.0.5.orig/ld/ld.texinfo
+++ binutils-2.19.51.0.5/ld/ld.texinfo
@@ -2036,8 +2036,9 @@ This linker can create the new dynamic t
systems may not understand them. If you specify
@option{--enable-new-dtags}, the dynamic tags will be created as needed.
If you specify @option{--disable-new-dtags}, no new dynamic tags will be
-created. By default, the new dynamic tags are not created. Note that
-those options are only available for ELF systems.
+created. On Gentoo, by default, the new dynamic tags are created (this
+differs from upstream behaviour). Note that those options are only
+available for ELF systems.
@kindex --hash-size=@var{number}
@item --hash-size=@var{number}

View File

@ -0,0 +1,8 @@
--- binutils/ld/ldmain.c
+++ binutils/ld/ldmain.c
@@ -273,2 +273,5 @@ main (int argc, char **argv)
link_info.emit_hash = TRUE;
+#ifndef __mips__
+ link_info.emit_gnu_hash = TRUE;
+#endif
link_info.callbacks = &link_callbacks;

View File

@ -0,0 +1,6 @@
--- binutils/ld/ldmain.c
+++ binutils/ld/ldmain.c
@@ -293,2 +293,3 @@ main (int argc, char **argv)
link_info.combreloc = TRUE;
+ link_info.relro = TRUE;
link_info.strip_discarded = TRUE;

View File

@ -0,0 +1,10 @@
--- libiberty/Makefile.in.mps 2004-05-13 15:53:17.000000000 +0200
+++ libiberty/Makefile.in 2004-05-13 15:52:53.000000000 +0200
@@ -224,6 +224,7 @@ $(TARGETLIB): $(REQUIRED_OFILES) $(EXTRA
$(AR) $(AR_FLAGS) $(TARGETLIB) \
$(REQUIRED_OFILES) $(EXTRA_OFILES) $(LIBOBJS); \
$(RANLIB) $(TARGETLIB); \
+ cp $(TARGETLIB) ../ ; \
cd ..; \
else true; fi

View File

@ -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=<n> 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=<n> 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 <rmk92@ecs.soton.ac.uk>.
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:

View File

@ -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

View File

@ -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
;;

File diff suppressed because it is too large Load Diff

View File

@ -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 <pedwards at disaster dot jaj dot com>
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 <pcarlini@unitus.it>
* 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 {

View File

@ -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

View File

@ -1,44 +0,0 @@
#
# Submitted-By: Marc Kleine-Budde <mkl@pengutronix.de>, 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

View File

@ -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 <errno.h>
#ifdef HAVE_SYS_ERRLIST
+#undef sys_nerr
#undef sys_errlist
#endif

View File

@ -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

View File

@ -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

View File

@ -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"

File diff suppressed because it is too large Load Diff

View File

@ -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"
}

File diff suppressed because it is too large Load Diff

View File

@ -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 <waz@quahog.npt.nuwc.navy.mil>
===================================================================
--- 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 ""

View File

@ -1,45 +0,0 @@
#
# Submitted-By: Marc Kleine-Budde <mkl@pengutronix.de>, 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

View File

@ -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<mem_fun1_ref_t<void,Elem,int> >::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 *, binder2nd<mem_fun1_ref_t<void,Elem,int> > >(Elem *, Elem *, binder2nd<mem_fun1_ref_t<void,Elem,int> >)'^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<void,Elem,int>::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

File diff suppressed because it is too large Load Diff

View File

@ -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.

View File

@ -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 <<EOF
/^*cross_compile:$/ {
n
c\\
0
}
EOF
sed -f ${arch}/edit-specs -e 's#-rpath-link.*/usr/%{_target}/lib##' \
${RPM_BUILD_ROOT}%{_prefix}/lib/gcc-lib/${arch}/%{GCC_VERSION}/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 <<EOF
#define _GCC_NEXT_LIMITS_H /* tell gcc's limits.h to recurse */
#include_next <limits.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 <sugioka@itonet.co.jp>
- version 3.2.2.
* Tue Feb 19 2002 SUGIOKA Toshinobu <sugioka@itonet.co.jp>
- version 3.0.4.
* Tue Feb 12 2002 SUGIOKA Toshinobu <sugioka@itonet.co.jp>
- add java support.
* Thu Feb 7 2002 SUGIOKA Toshinobu <sugioka@itonet.co.jp>
- follow debian/SH update.
* Tue Feb 5 2002 SUGIOKA Toshinobu <sugioka@itonet.co.jp>
- follow debian/SH update.
* Thu Jan 24 2002 SUGIOKA Toshinobu <sugioka@itonet.co.jp>
- rebuild with new binutils.
* Tue Jan 22 2002 SUGIOKA Toshinobu <sugioka@itonet.co.jp>
- leaf function optimization fixed.
* Thu Dec 06 2001 SUGIOKA Toshinobu <sugioka@itonet.co.jp>
- add gcc-ice-rml patch.
* Tue Nov 13 2001 SUGIOKA Toshinobu <sugioka@itonet.co.jp>
- add configure option.
* Thu Nov 01 2001 SUGIOKA Toshinobu <sugioka@itonet.co.jp>
- tablejump fix by gniibe.
* Mon Oct 22 2001 SUGIOKA Toshinobu <sugioka@itonet.co.jp>
- updated gcc patch.
* Wed Oct 17 2001 SUGIOKA Toshinobu <sugioka@itonet.co.jp>
- updated gcc patch.
* Tue Oct 02 2001 SUGIOKA Toshinobu <sugioka@itonet.co.jp>
- gcc/config/sh/sh.c bug fix.
* Fri Aug 24 2001 SUGIOKA Toshinobu <sugioka@itonet.co.jp>
- gcc version 3.0.1.
* Thu Jun 28 2001 SUGIOKA Toshinobu <sugioka@itonet.co.jp>
- gcc version 3.0.
- Add libstdc++ package.
* Mon Apr 23 2001 SUGIOKA Toshinobu <sugioka@itonet.co.jp>
- Add cygwin host.
* Sat Dec 23 2000 SUGIOKA Toshinobu <sugioka@itonet.co.jp>
- fix file attribute.
- add asmspecs patch.
* Sat Nov 11 2000 SUGIOKA Toshinobu <sugioka@itonet.co.jp>
- initial version.

View File

@ -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 <limits.h>
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

View File

@ -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

View File

@ -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]);
"
)

View File

@ -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 <limits.h>
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

View File

@ -1,79 +0,0 @@
By Lennert Buytenhek <buytenh@wantstofly.org>
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

View File

@ -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" <gcc-bugzilla@gcc.gnu.org>
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_<filename>_<wrongmagicnumber>_<magicnumber>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.

View File

@ -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];

View File

@ -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 <dberlin@dberlin.org>
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]

Some files were not shown because too many files have changed in this diff Show More