summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMartin Schlemmer <azarah@gentoo.org>2003-08-03 21:01:37 +0000
committerMartin Schlemmer <azarah@gentoo.org>2003-08-03 21:01:37 +0000
commitf51cc4dd4b37bf4d9797adcd90c21edffea57c4c (patch)
tree372f6194bbf990f5f7feab83315ea3c132d17842 /sys-devel
parentinitial ebuild (diff)
downloadgentoo-2-f51cc4dd4b37bf4d9797adcd90c21edffea57c4c.tar.gz
gentoo-2-f51cc4dd4b37bf4d9797adcd90c21edffea57c4c.tar.bz2
gentoo-2-f51cc4dd4b37bf4d9797adcd90c21edffea57c4c.zip
update patches
Diffstat (limited to 'sys-devel')
-rw-r--r--sys-devel/binutils/Manifest51
-rw-r--r--sys-devel/binutils/binutils-2.14.90.0.5-r1.ebuild181
-rw-r--r--sys-devel/binutils/files/2.14/binutils-2.14.90.0.5-eh-frame-ro.patch426
-rw-r--r--sys-devel/binutils/files/2.14/binutils-2.14.90.0.5-ppc64-elfvsb.patch24
-rw-r--r--sys-devel/binutils/files/2.14/binutils-2.14.90.0.5-ppc64-fdesc.patch26
-rw-r--r--sys-devel/binutils/files/2.14/binutils-2.14.90.0.5-ppc64-ldr.patch26
-rw-r--r--sys-devel/binutils/files/2.14/binutils-2.14.90.0.5-ppc64-mask.patch33
-rw-r--r--sys-devel/binutils/files/2.14/binutils-2.14.90.0.5-ppc64-pie.patch16
-rw-r--r--sys-devel/binutils/files/2.14/binutils-2.14.90.0.5-ppc64-power4.patch15
-rw-r--r--sys-devel/binutils/files/2.14/binutils-2.14.90.0.5-s390-pie.patch59
-rw-r--r--sys-devel/binutils/files/digest-binutils-2.14.90.0.5-r11
11 files changed, 838 insertions, 20 deletions
diff --git a/sys-devel/binutils/Manifest b/sys-devel/binutils/Manifest
index b9ceb732711c..45e37e46a057 100644
--- a/sys-devel/binutils/Manifest
+++ b/sys-devel/binutils/Manifest
@@ -1,49 +1,52 @@
-MD5 6063dac8e70bf8afce548db499b63eb1 ChangeLog 13081
MD5 39c137509f3ea2ab526bb092b10a9c54 binutils-2.11.92.0.12.3-r2.ebuild 3055
MD5 011c5a33d84072e1af09ccf89cba6d61 binutils-2.11.92.0.7.ebuild 2357
MD5 368c85b995c3ab74a32a09e573aba1f9 binutils-2.12.90.0.15.ebuild 3512
MD5 fa1d184fbb7043a913d9307bd1b42fde binutils-2.12.90.0.7.ebuild 3594
MD5 5ed1c40a92233028ce782a0c337603d9 binutils-2.13.90.0.16-r1.ebuild 4740
+MD5 6063dac8e70bf8afce548db499b63eb1 ChangeLog 13081
MD5 2adeb2860e4df3cdcb96ef6cd5430ab1 binutils-2.13.90.0.18-r1.ebuild 5376
MD5 51bfea19ab266367baf39b3e6224be33 binutils-2.13.90.0.18.ebuild 4580
MD5 7a3bbb04c9a5243c92f1d972cb0b61ec binutils-2.13.90.0.20-r1.ebuild 5001
MD5 2e588e007eb122eb471c48aefcb04a41 binutils-2.14.90.0.1-r1.ebuild 5097
MD5 680471350a3b85f5c0616c3f626f7c13 binutils-2.14.90.0.2.ebuild 4845
-MD5 8e8914eebb88c363a128964a7941d66c binutils-2.14.90.0.4.1-r1.ebuild 5806
-MD5 8303a09e50b83d864db0735fd00cf7bd binutils-2.14.90.0.4.1.ebuild 4851
MD5 e7df35e2bb31fb0268d2150da19b27b9 binutils-2.14.90.0.4.ebuild 4842
+MD5 8303a09e50b83d864db0735fd00cf7bd binutils-2.14.90.0.4.1.ebuild 4851
+MD5 fe97bc8c0b91459bb6afe336d07ba6b5 binutils-2.14.90.0.5-r1.ebuild 5296
MD5 5690182afbd4c3cc29eff36bf253bdad binutils-2.14.90.0.5.ebuild 5127
+MD5 8e8914eebb88c363a128964a7941d66c binutils-2.14.90.0.4.1-r1.ebuild 5806
+MD5 f98c299ece4b2c6cd81e883bccb94793 .binutils-2.14.90.0.5-r1.ebuild.swp 20480
MD5 fe5fb935b171a472f5eb1a8bca63c136 files/binutils-2.12.90.0.14-glibc21.patch 7936
MD5 f453b3f208b17cd18380bc3653936487 files/binutils-2.12.90.0.14-x86_64-libpic.patch 1184
MD5 db3f89b51f6961b0cf92bdddf8127ea7 files/digest-binutils-2.11.92.0.12.3-r2 161
MD5 6c32de9a9503293bb03048f09dadc182 files/digest-binutils-2.11.92.0.7 74
MD5 e6b97971464cab854a321254d84ae44f files/digest-binutils-2.12.90.0.15 75
MD5 64f2cf145447cc0996540814afb15c68 files/digest-binutils-2.12.90.0.7 74
-MD5 b7ccd9bdcb0ab7c26bcf2a3e4c2e2afc files/digest-binutils-2.13.90.0.16-r1 75
+MD5 bac15ed517ba3cc1eb3c08f463654aad files/digest-binutils-2.14.90.0.2 75
+MD5 a63b47640cf272a430fb444e023dad44 files/digest-binutils-2.14.90.0.4 75
+MD5 c2028bfe76e16c23a00a4ad36a5a36f2 files/digest-binutils-2.14.90.0.4.1 77
MD5 4270b9eea6fb9d807bc63ba0a221ea9b files/digest-binutils-2.13.90.0.18 75
+MD5 b7ccd9bdcb0ab7c26bcf2a3e4c2e2afc files/digest-binutils-2.13.90.0.16-r1 75
+MD5 f2fca878c36319fd0efd1606f4baf24e files/digest-binutils-2.14.90.0.5 75
MD5 d435975192db69b96d36c62e2ad0876c files/digest-binutils-2.13.90.0.18-r1 160
MD5 b04e5a5665b4e9987cbef313d24bc349 files/digest-binutils-2.13.90.0.20-r1 172
MD5 f65088dfe30f5999e2491768b5fdadf8 files/digest-binutils-2.14.90.0.1-r1 169
-MD5 bac15ed517ba3cc1eb3c08f463654aad files/digest-binutils-2.14.90.0.2 75
-MD5 a63b47640cf272a430fb444e023dad44 files/digest-binutils-2.14.90.0.4 75
-MD5 c2028bfe76e16c23a00a4ad36a5a36f2 files/digest-binutils-2.14.90.0.4.1 77
MD5 c2028bfe76e16c23a00a4ad36a5a36f2 files/digest-binutils-2.14.90.0.4.1-r1 77
-MD5 f2fca878c36319fd0efd1606f4baf24e files/digest-binutils-2.14.90.0.5 75
-MD5 b811d65855a74369e0faccf7574b886b files/2.13/binutils-2.13.90.0.10-glibc21.patch 2931
-MD5 03bc9914be9e707ed18fdfc9a35332d3 files/2.13/binutils-2.13.90.0.10-ia64-brl.patch 436
-MD5 1841b2037b3da0e0dfddb0345a0526e8 files/2.13/binutils-2.13.90.0.10-x86_64-gotpcrel.patch 769
-MD5 cbf08de84154ca2dcf26e572f2892f00 files/2.13/binutils-2.13.90.0.10-x86_64-testsuite.patch 1205
-MD5 feebd067c397d519e1ca9340606968a8 files/2.13/binutils-2.13.90.0.16-array-sects-compat.patch 1054
-MD5 9cb4e1aa89e17b711543bfbc18e6dd42 files/2.13/binutils-2.13.90.0.16-eh-frame-ro.patch 17193
-MD5 c16f13adaeb21909a350b0a562b8a4d5 files/2.13/binutils-2.13.90.0.16-ia64-bootstrap.patch 3535
-MD5 5d6014cd92f7f981294fac37c677bc8b files/2.13/binutils-2.13.90.0.16-ppc-apuinfo.patch 518
+MD5 f2fca878c36319fd0efd1606f4baf24e files/digest-binutils-2.14.90.0.5-r1 75
+MD5 ddcb10d9ab716f378c1fe596673a6251 files/2.13/binutils-2.13.90.0.16-tls-strip.patch 5383
+MD5 8e6216c4ee8463ab38d9761a1be712f0 files/2.13/binutils-2.13.90.0.16-stt_tls.patch 6518
MD5 6dd59bc404c01dd65a21a68cf62c639e files/2.13/binutils-2.13.90.0.16-rodata-cst.patch 974
+MD5 5d6014cd92f7f981294fac37c677bc8b files/2.13/binutils-2.13.90.0.16-ppc-apuinfo.patch 518
+MD5 c16f13adaeb21909a350b0a562b8a4d5 files/2.13/binutils-2.13.90.0.16-ia64-bootstrap.patch 3535
+MD5 9cb4e1aa89e17b711543bfbc18e6dd42 files/2.13/binutils-2.13.90.0.16-eh-frame-ro.patch 17193
+MD5 cbf08de84154ca2dcf26e572f2892f00 files/2.13/binutils-2.13.90.0.10-x86_64-testsuite.patch 1205
+MD5 1841b2037b3da0e0dfddb0345a0526e8 files/2.13/binutils-2.13.90.0.10-x86_64-gotpcrel.patch 769
+MD5 03bc9914be9e707ed18fdfc9a35332d3 files/2.13/binutils-2.13.90.0.10-ia64-brl.patch 436
+MD5 b811d65855a74369e0faccf7574b886b files/2.13/binutils-2.13.90.0.10-glibc21.patch 2931
MD5 0670eef65a3797752d6f4376aee8bb3a files/2.13/binutils-2.13.90.0.16-sparc-nonpic.patch 3197
-MD5 8e6216c4ee8463ab38d9761a1be712f0 files/2.13/binutils-2.13.90.0.16-stt_tls.patch 6518
-MD5 ddcb10d9ab716f378c1fe596673a6251 files/2.13/binutils-2.13.90.0.16-tls-strip.patch 5383
+MD5 feebd067c397d519e1ca9340606968a8 files/2.13/binutils-2.13.90.0.16-array-sects-compat.patch 1054
+MD5 e0bd20dafcff53d856546d93a0d291f2 files/2.13/binutils-2.13.90.0.18-eh-frame-hdr.patch 3035
MD5 5eea3d007abf53ca4c416a1ef715d0da files/2.13/binutils-2.13.90.0.18-alpha-relax.patch 627
MD5 f4b4e9a06281de3fb837b2e337fe590e files/2.13/binutils-2.13.90.0.18-compatsym.patch 14498
-MD5 e0bd20dafcff53d856546d93a0d291f2 files/2.13/binutils-2.13.90.0.18-eh-frame-hdr.patch 3035
MD5 0a94baa713a60d9b3ec11847dc8f887f files/2.13/binutils-2.13.90.0.18-eh-frame-ro.patch 16506
MD5 081ac3fc51a0c66a797b1408fdbc11b9 files/2.13/binutils-2.13.90.0.18-libpath-suffix.patch 1244
MD5 fed0711b95edc0c64ee93ccfbc8e6268 files/2.13/binutils-2.13.90.0.18-ltconfig-multilib.patch 878
@@ -59,6 +62,7 @@ MD5 feebd067c397d519e1ca9340606968a8 files/2.13/binutils-2.13.90.0.20-array-sect
MD5 2183b775b86400dd7eda35bf1ccee678 files/2.13/binutils-2.13.90.0.20-gas-mips-gprel.patch 945
MD5 c98edbd5a87f00832a367a40a6e576d1 files/2.14/binutils-2.14.90.0.1-eh-frame-ro.patch 17942
MD5 e941bf2e41367989d389e2988672f87a files/2.14/binutils-2.14.90.0.1-sparc-nonpic.patch 3147
+MD5 03d6c934577cf40ec75b41bfc38b48a0 files/2.14/binutils-mips-openssl-got-fix.patch 540
MD5 d232bcf016de028994efd262aa2ff401 files/2.14/binutils-2.14.90.0.4-cfi.patch 74784
MD5 e7283a4967ce5101a016b31e747e8442 files/2.14/binutils-2.14.90.0.4-cfi2.patch 18449
MD5 42ecd945c2269a792b9b7aea542b9a16 files/2.14/binutils-2.14.90.0.4-cfi3.patch 13929
@@ -75,4 +79,11 @@ MD5 f8d0738db8174c369f4f3a6185d8f76b files/2.14/binutils-2.14.90.0.4-ppc64-ctors
MD5 5fa7bd6f7e2c4fa50b74367a85f37541 files/2.14/binutils-2.14.90.0.4-ppc64-prelink.patch 4721
MD5 e6f5f65fe3a3998c3c2845b92eef79e8 files/2.14/binutils-2.14.90.0.4-pt-gnu-stack.patch 8453
MD5 e941bf2e41367989d389e2988672f87a files/2.14/binutils-2.14.90.0.4-sparc-nonpic.patch 3147
-MD5 03d6c934577cf40ec75b41bfc38b48a0 files/2.14/binutils-mips-openssl-got-fix.patch 540
+MD5 09fbb09e0296aab8c563a76fbfe88acb files/2.14/binutils-2.14.90.0.5-eh-frame-ro.patch 14717
+MD5 9c5337bbe0b341173304747c1c9279e9 files/2.14/binutils-2.14.90.0.5-ppc64-elfvsb.patch 899
+MD5 ac3d7aa7ac1ff2a7f6979482506a4346 files/2.14/binutils-2.14.90.0.5-ppc64-fdesc.patch 962
+MD5 0d4022656708019a1b010c69dbf2442b files/2.14/binutils-2.14.90.0.5-ppc64-ldr.patch 825
+MD5 8b2e5222b6be2949bad3c41f65a80ec8 files/2.14/binutils-2.14.90.0.5-ppc64-mask.patch 918
+MD5 c1a6d53bb2eb89124a74f47b0bca0b89 files/2.14/binutils-2.14.90.0.5-ppc64-pie.patch 581
+MD5 bd68995fbb6476d0ebaded68d3b0cd19 files/2.14/binutils-2.14.90.0.5-ppc64-power4.patch 560
+MD5 d5afbb421242988c33551fdb2054581b files/2.14/binutils-2.14.90.0.5-s390-pie.patch 2016
diff --git a/sys-devel/binutils/binutils-2.14.90.0.5-r1.ebuild b/sys-devel/binutils/binutils-2.14.90.0.5-r1.ebuild
new file mode 100644
index 000000000000..f4d9d6cb68c9
--- /dev/null
+++ b/sys-devel/binutils/binutils-2.14.90.0.5-r1.ebuild
@@ -0,0 +1,181 @@
+# Copyright 1999-2003 Gentoo Technologies, Inc.
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/sys-devel/binutils/binutils-2.14.90.0.5-r1.ebuild,v 1.1 2003/08/03 21:01:37 azarah Exp $
+
+IUSE="nls bootstrap build"
+
+# NOTE to Maintainer: ChangeLog states that it no longer use perl to build
+# the manpages, but seems this is incorrect ....
+
+inherit eutils libtool flag-o-matic
+
+# Generate borked binaries. Bug #6730
+filter-flags "-fomit-frame-pointer -fssa"
+
+S="${WORKDIR}/${P}"
+DESCRIPTION="Tools necessary to build programs"
+SRC_URI="mirror://kernel/linux/devel/binutils/${P}.tar.bz2
+ mirror://kernel/linux/devel/binutils/test/${P}.tar.bz2"
+HOMEPAGE="http://sources.redhat.com/binutils/"
+
+SLOT="0"
+LICENSE="GPL-2 | LGPL-2"
+KEYWORDS="~amd64 ~x86 -ppc -alpha -sparc -mips -hppa -arm"
+
+DEPEND="virtual/glibc
+ >=sys-apps/portage-2.0.21
+ nls? ( sys-devel/gettext )
+ || ( dev-lang/perl
+ ( !build? ( dev-lang/perl ) )
+ ( !bootstrap? ( dev-lang/perl ) )
+ )"
+# This is a hairy one. Basically depend on dev-lang/perl
+# if "build" or "bootstrap" not in USE.
+
+
+# filter CFLAGS=".. -O2 .." on arm
+if [ "${ARCH}" = "arm" ]; then
+ CFLAGS="$(echo "${CFLAGS}" | sed -e 's,-O[2-9] ,-O1 ,')"
+fi
+
+src_unpack() {
+
+ unpack ${A}
+
+ cd ${S}
+ epatch ${FILESDIR}/2.13/${PN}-2.13.90.0.10-glibc21.patch
+ epatch ${FILESDIR}/2.14/${PN}-2.14.90.0.4-sparc-nonpic.patch
+ epatch ${FILESDIR}/2.14/${PN}-2.14.90.0.5-eh-frame-ro.patch
+ epatch ${FILESDIR}/2.14/${PN}-2.14.90.0.4-ltconfig-multilib.patch
+# Might think of adding the Prescott stuff later on
+# epatch ${FILESDIR}/2.14/${PN}-2.14.90.0.4-pni.patch
+ epatch ${FILESDIR}/2.14/${PN}-2.14.90.0.5-s390-pie.patch
+ epatch ${FILESDIR}/2.14/${PN}-2.14.90.0.5-ppc64-pie.patch
+ epatch ${FILESDIR}/2.14/${PN}-2.14.90.0.5-ppc64-ldr.patch
+ epatch ${FILESDIR}/2.14/${PN}-2.14.90.0.5-ppc64-power4.patch
+ epatch ${FILESDIR}/2.14/${PN}-2.14.90.0.5-ppc64-mask.patch
+ epatch ${FILESDIR}/2.14/${PN}-2.14.90.0.5-ppc64-fdesc.patch
+ epatch ${FILESDIR}/2.14/${PN}-2.14.90.0.5-ppc64-elfvsb.patch
+ epatch ${FILESDIR}/2.13/${PN}-2.13.90.0.10-x86_64-testsuite.patch
+ epatch ${FILESDIR}/2.13/${PN}-2.13.90.0.10-x86_64-gotpcrel.patch
+ epatch ${FILESDIR}/2.13/${PN}-2.13.90.0.18-testsuite-Wall-fixes.patch
+
+ use x86 &> /dev/null \
+ && epatch ${FILESDIR}/2.13/${PN}-2.13.90.0.20-array-sects-compat.patch
+
+ # Libtool is broken (Redhat).
+ for x in ${S}/opcodes/Makefile.{am,in}
+ do
+ cp ${x} ${x}.orig
+ gawk '
+ {
+ if ($0 ~ /LIBADD/)
+ gsub("../bfd/libbfd.la", "-L../bfd/.libs ../bfd/libbfd.la")
+
+ print
+ }' ${x}.orig > ${x}
+ rm -rf ${x}.orig
+ done
+}
+
+src_compile() {
+ local myconf=
+
+ use nls && \
+ myconf="${myconf} --without-included-gettext" || \
+ myconf="${myconf} --disable-nls"
+
+ # Fix /usr/lib/libbfd.la
+ elibtoolize --portage
+
+ ./configure --enable-shared \
+ --enable-64-bit-bfd \
+ --prefix=/usr \
+ --mandir=/usr/share/man \
+ --infodir=/usr/share/info \
+ --host=${CHOST} \
+ ${myconf} || die
+
+ make configure-bfd || die
+ make headers -C bfd || die
+ emake tooldir="${ROOT}/usr/bin" \
+ all || die
+
+ if [ -z "`use build`" ]
+ then
+ if [ -z "`use bootstrap`" ]
+ then
+ # Nuke the manpages to recreate them (only use this if we have perl)
+ find . -name '*.1' -exec rm -f {} \; || :
+ fi
+ # Make the info pages (makeinfo included with gcc is used)
+ make info || die
+ fi
+}
+
+src_install() {
+
+ make prefix=${D}/usr \
+ mandir=${D}/usr/share/man \
+ infodir=${D}/usr/share/info \
+ install || die
+
+ insinto /usr/include
+ doins include/libiberty.h
+
+ # c++filt is included with gcc -- what are these GNU people thinking?
+ # but not the manpage, so leave that!
+# We install it now, as gcc-3.3 do not have it any longer ...
+# rm -f ${D}/usr/bin/c++filt #${D}/usr/share/man/man1/c++filt*
+
+ # By default strip has a symlink going from /usr/${CHOST}/bin/strip to
+ # /usr/bin/strip we should reverse it:
+
+ rm ${D}/usr/${CHOST}/bin/strip; mv ${D}/usr/bin/strip ${D}/usr/${CHOST}/bin/strip
+ # The strip symlink gets created in the loop below
+
+ # By default ar, as, ld, nm, ranlib and strip are in two places; create
+ # symlinks. This will reduce the size of the tbz2 significantly. We also
+ # move all the stuff in /usr/bin to /usr/${CHOST}/bin and create the
+ # appropriate symlinks. Things are cleaner that way.
+ cd ${D}/usr/bin
+ local x=
+ for x in * strip
+ do
+ if [ ! -e ../${CHOST}/bin/${x} ]
+ then
+ mv ${x} ../${CHOST}/bin/${x}
+ else
+ rm -f ${x}
+ fi
+ ln -s ../${CHOST}/bin/${x} ${x}
+ done
+
+ cd ${S}
+ if [ -z "`use build`" ]
+ then
+ make prefix=${D}/usr \
+ mandir=${D}/usr/share/man \
+ infodir=${D}/usr/share/info \
+ install-info || die
+
+ dodoc COPYING* README
+ docinto bfd
+ dodoc bfd/ChangeLog* bfd/COPYING bfd/README bfd/PORTING bfd/TODO
+ docinto binutils
+ dodoc binutils/ChangeLog binutils/NEWS binutils/README
+ docinto gas
+ dodoc gas/ChangeLog* gas/CONTRIBUTORS gas/COPYING gas/NEWS gas/README*
+ docinto gprof
+ dodoc gprof/ChangeLog* gprof/TEST gprof/TODO
+ docinto ld
+ dodoc ld/ChangeLog* ld/README ld/NEWS ld/TODO
+ docinto libiberty
+ dodoc libiberty/ChangeLog* libiberty/COPYING.LIB libiberty/README
+ docinto opcodes
+ dodoc opcodes/ChangeLog*
+ # Install pre-generated manpages .. currently we do not ...
+ else
+ rm -rf ${D}/usr/share/man
+ fi
+}
diff --git a/sys-devel/binutils/files/2.14/binutils-2.14.90.0.5-eh-frame-ro.patch b/sys-devel/binutils/files/2.14/binutils-2.14.90.0.5-eh-frame-ro.patch
new file mode 100644
index 000000000000..42966d13982a
--- /dev/null
+++ b/sys-devel/binutils/files/2.14/binutils-2.14.90.0.5-eh-frame-ro.patch
@@ -0,0 +1,426 @@
+2002-11-22 Jakub Jelinek <jakub@redhat.com>
+
+ * ldgram.y (sect_constraint): New.
+ (ONLY_IF_RO, ONLY_IF_RW): New tokens.
+ (section): Add sect_constraint. Pass additional argument
+ to lang_enter_output_section_statement.
+ * mri.c (mri_draw_tree): Pass additional argument to
+ lang_enter_output_section_statement.
+ * emultempl/pe.em (place_orphan): Likewise.
+ (output_prev_sec_find): Disregard output section statements with
+ constraint == -1.
+ * emultempl/mmo.em (output_prev_sec_find): Likewise.
+ (mmo_place_orphan): Pass additional argument to
+ lang_enter_output_section_statement.
+ * emultempl/elf32.em (output_prev_sec_find): Disregard output section
+ statements with constraint == -1.
+ (place_orphan): Pass additional argument to
+ lang_enter_output_section_statement.
+ * ldlang.c (lang_enter_overlay_section): Likewise.
+ (lang_output_section_find_1): New.
+ (lang_output_section_find): Use it.
+ (lang_output_section_statement_lookup_1): New.
+ (lang_output_section_statement_lookup): Use it.
+ (check_section_callback, check_input_sections): New.
+ (map_input_to_output_sections): Check if all input sections
+ are readonly if ONLY_IF_RO or ONLY_IF_RW was seen.
+ (strip_excluded_output_sections): Disregard output section statements
+ with constraint == -1.
+ (lang_record_phdrs): Likewise.
+ (lang_enter_output_section_statement): Add constraint argument.
+ Use lang_output_section_statement_lookup_1.
+ * ldlang.h (lang_output_section_statement_type): Add constraint
+ and all_input_readonly fields.
+ (lang_enter_output_section_statement): Adjust prototype.
+ * ldlex.l (ONLY_IF_RO, ONLY_IF_RW): New tokens.
+ * scripttempl/elf.sc (.eh_frame, .gcc_except_table): Move into text
+ segment if all input sections are readonly.
+
+--- ld/emultempl/mmo.em.jj Wed Jul 23 11:08:12 2003
++++ ld/emultempl/mmo.em Mon Jul 28 07:14:02 2003
+@@ -47,6 +47,8 @@ output_prev_sec_find (lang_output_sectio
+ u = lookup->next)
+ {
+ lookup = &u->output_section_statement;
++ if (lookup->constraint == -1)
++ continue;
+ if (lookup == os)
+ break;
+ if (lookup->bfd_section != NULL
+@@ -130,7 +132,7 @@ mmo_place_orphan (lang_input_statement_t
+ (bfd_vma) 0,
+ (etree_type *) NULL,
+ (etree_type *) NULL,
+- (etree_type *) NULL);
++ (etree_type *) NULL, 0);
+
+ lang_add_section (&os->children, s, os, file);
+
+--- ld/emultempl/pe.em.jj Wed Jul 23 11:08:12 2003
++++ ld/emultempl/pe.em Mon Jul 28 07:14:02 2003
+@@ -1453,6 +1453,8 @@ output_prev_sec_find (lang_output_sectio
+ u = lookup->next)
+ {
+ lookup = &u->output_section_statement;
++ if (lookup->constraint == -1)
++ continue;
+ if (lookup == os)
+ return s;
+
+@@ -1617,7 +1619,7 @@ gld_${EMULATION_NAME}_place_orphan (lang
+ (bfd_vma) 0,
+ (etree_type *) NULL,
+ (etree_type *) NULL,
+- (etree_type *) NULL);
++ (etree_type *) NULL, 0);
+
+ lang_add_section (&add_child, s, os, file);
+
+--- ld/emultempl/elf32.em.jj Wed Jul 23 11:08:12 2003
++++ ld/emultempl/elf32.em Mon Jul 28 07:14:02 2003
+@@ -1010,7 +1010,8 @@ output_rel_find (asection *sec)
+ for (u = lang_output_section_statement.head; u; u = lookup->next)
+ {
+ lookup = &u->output_section_statement;
+- if (strncmp (".rel", lookup->name, 4) == 0)
++ if (lookup->constraint != -1
++ && strncmp (".rel", lookup->name, 4) == 0)
+ {
+ /* Don't place after .rel.plt as doing so results in wrong
+ dynamic tags. Also, place allocated reloc sections before
+@@ -1247,7 +1248,7 @@ gld${EMULATION_NAME}_place_orphan (lang_
+ (bfd_vma) 0,
+ (etree_type *) NULL,
+ (etree_type *) NULL,
+- load_base);
++ load_base, 0);
+
+ lang_add_section (&os->children, s, os, file);
+
+--- ld/scripttempl/elf.sc.jj Wed Jul 23 11:08:12 2003
++++ ld/scripttempl/elf.sc Mon Jul 28 07:14:02 2003
+@@ -283,6 +283,8 @@ cat <<EOF
+ ${CREATE_SHLIB-${SBSS2}}
+ ${OTHER_READONLY_SECTIONS}
+ .eh_frame_hdr : { *(.eh_frame_hdr) }
++ .eh_frame ${RELOCATING-0} : ONLY_IF_RO { KEEP (*(.eh_frame)) }
++ .gcc_except_table ${RELOCATING-0} : ONLY_IF_RO { *(.gcc_except_table) }
+
+ /* Adjust the address for the data segment. We want to adjust up to
+ the same address within the page on the next page up. */
+@@ -316,8 +318,8 @@ cat <<EOF
+ .data1 ${RELOCATING-0} : { *(.data1) }
+ .tdata ${RELOCATING-0} : { *(.tdata${RELOCATING+ .tdata.* .gnu.linkonce.td.*}) }
+ .tbss ${RELOCATING-0} : { *(.tbss${RELOCATING+ .tbss.* .gnu.linkonce.tb.*})${RELOCATING+ *(.tcommon)} }
+- .eh_frame ${RELOCATING-0} : { KEEP (*(.eh_frame)) }
+- .gcc_except_table ${RELOCATING-0} : { *(.gcc_except_table) }
++ .eh_frame ${RELOCATING-0} : ONLY_IF_RW { KEEP (*(.eh_frame)) }
++ .gcc_except_table ${RELOCATING-0} : ONLY_IF_RW { *(.gcc_except_table) }
+ ${WRITABLE_RODATA+${RODATA}}
+ ${OTHER_READWRITE_SECTIONS}
+ ${TEXT_DYNAMIC-${DYNAMIC}}
+--- ld/ldgram.y.jj Wed Jul 23 11:08:12 2003
++++ ld/ldgram.y Mon Jul 28 07:14:02 2003
+@@ -143,14 +143,14 @@ static int error_index;
+ %token ORIGIN FILL
+ %token LENGTH CREATE_OBJECT_SYMBOLS INPUT GROUP OUTPUT CONSTRUCTORS
+ %token ALIGNMOD AT PROVIDE
+-%type <token> assign_op atype attributes_opt
++%type <token> assign_op atype attributes_opt sect_constraint
+ %type <name> filename
+ %token CHIP LIST SECT ABSOLUTE LOAD NEWLINE ENDWORD ORDER NAMEWORD ASSERT_K
+ %token FORMAT PUBLIC DEFSYMEND BASE ALIAS TRUNCATE REL
+ %token INPUT_SCRIPT INPUT_MRI_SCRIPT INPUT_DEFSYM CASE EXTERN START
+ %token <name> VERS_TAG VERS_IDENTIFIER
+ %token GLOBAL LOCAL VERSIONK INPUT_VERSION_SCRIPT
+-%token KEEP
++%token KEEP ONLY_IF_RO ONLY_IF_RW
+ %token EXCLUDE_FILE
+ %type <versyms> vers_defns
+ %type <versnode> vers_tag
+@@ -828,21 +828,28 @@ opt_at:
+ | { $$ = 0; }
+ ;
+
++sect_constraint:
++ ONLY_IF_RO { $$ = ONLY_IF_RO; }
++ | ONLY_IF_RW { $$ = ONLY_IF_RW; }
++ | { $$ = 0; }
++ ;
++
+ section: NAME { ldlex_expression(); }
+ opt_exp_with_type
+ opt_at { ldlex_popstate (); ldlex_script (); }
++ sect_constraint
+ '{'
+ {
+ lang_enter_output_section_statement($1, $3,
+ sectype,
+- 0, 0, 0, $4);
++ 0, 0, 0, $4, $6);
+ }
+ statement_list_opt
+ '}' { ldlex_popstate (); ldlex_expression (); }
+ memspec_opt memspec_at_opt phdr_opt fill_opt
+ {
+ ldlex_popstate ();
+- lang_leave_output_section_statement ($14, $11, $13, $12);
++ lang_leave_output_section_statement ($15, $12, $14, $13);
+ }
+ opt_comma
+ {}
+--- ld/mri.c.jj Wed Jul 23 11:08:12 2003
++++ ld/mri.c Mon Jul 28 07:15:48 2003
+@@ -220,7 +220,7 @@ mri_draw_tree (void)
+
+ lang_enter_output_section_statement (p->name, base,
+ p->ok_to_load ? 0 : noload_section,
+- 1, align, subalign, NULL);
++ 1, align, subalign, NULL, 0);
+ base = 0;
+ tmp = xmalloc (sizeof *tmp);
+ tmp->next = NULL;
+--- ld/ldlang.h.jj Wed Jul 23 11:08:12 2003
++++ ld/ldlang.h Mon Jul 28 07:27:16 2003
+@@ -132,6 +132,8 @@ typedef struct lang_output_section_state
+
+ int subsection_alignment; /* alignment of components */
+ int section_alignment; /* alignment of start of section */
++ int constraint;
++ bfd_boolean all_input_readonly;
+
+ union etree_union *load_base;
+
+@@ -394,7 +396,7 @@ extern lang_output_section_statement_typ
+ bfd_vma block_value,
+ etree_type *align,
+ etree_type *subalign,
+- etree_type *);
++ etree_type *, int);
+ extern void lang_final
+ (void);
+ extern void lang_process
+--- ld/ldlang.c.jj Wed Jul 23 11:08:12 2003
++++ ld/ldlang.c Mon Jul 28 07:25:24 2003
+@@ -562,7 +562,7 @@ lang_memory_default (asection *section)
+ }
+
+ lang_output_section_statement_type *
+-lang_output_section_find (const char *const name)
++lang_output_section_find_1 (const char *const name, int constraint)
+ {
+ lang_statement_union_type *u;
+ lang_output_section_statement_type *lookup;
+@@ -570,18 +570,26 @@ lang_output_section_find (const char *co
+ for (u = lang_output_section_statement.head; u != NULL; u = lookup->next)
+ {
+ lookup = &u->output_section_statement;
+- if (strcmp (name, lookup->name) == 0)
++ if (strcmp (name, lookup->name) == 0
++ && lookup->constraint != -1
++ && (constraint == 0 || constraint == lookup->constraint))
+ return lookup;
+ }
+ return NULL;
+ }
+
+ lang_output_section_statement_type *
+-lang_output_section_statement_lookup (const char *const name)
++lang_output_section_find (const char *const name)
++{
++ return lang_output_section_find_1 (name, 0);
++}
++
++lang_output_section_statement_type *
++lang_output_section_statement_lookup_1 (const char *const name, int constraint)
+ {
+ lang_output_section_statement_type *lookup;
+
+- lookup = lang_output_section_find (name);
++ lookup = lang_output_section_find_1 (name, constraint);
+ if (lookup == NULL)
+ {
+ lookup = new_stat (lang_output_section_statement, stat_ptr);
+@@ -594,6 +602,7 @@ lang_output_section_statement_lookup (co
+ lookup->next = NULL;
+ lookup->bfd_section = NULL;
+ lookup->processed = FALSE;
++ lookup->constraint = constraint;
+ lookup->sectype = normal_section;
+ lookup->addr_tree = NULL;
+ lang_list_init (&lookup->children);
+@@ -613,6 +622,12 @@ lang_output_section_statement_lookup (co
+ return lookup;
+ }
+
++lang_output_section_statement_type *
++lang_output_section_statement_lookup (const char *const name)
++{
++ return lang_output_section_statement_lookup_1 (name, 0);
++}
++
+ static void
+ lang_map_flags (flagword flag)
+ {
+@@ -1278,6 +1293,30 @@ output_section_callback (lang_wild_state
+ }
+ }
+
++/* Check if all sections in a wild statement for a particular FILE
++ are readonly. */
++
++static void
++check_section_callback (lang_wild_statement_type *ptr ATTRIBUTE_UNUSED,
++ struct wildcard_list *sec ATTRIBUTE_UNUSED,
++ asection *section,
++ lang_input_statement_type *file ATTRIBUTE_UNUSED,
++ void *output)
++{
++ /* Exclude sections that match UNIQUE_SECTION_LIST. */
++ if (unique_section_p (bfd_get_section_name (file->the_bfd, section)))
++ return;
++
++ if (section->output_section == NULL)
++ {
++ flagword flags = bfd_get_section_flags (section->owner, section);
++
++ if ((flags & SEC_READONLY) == 0)
++ ((lang_output_section_statement_type *) output)->all_input_readonly
++ = FALSE;
++ }
++}
++
+ /* This is passed a file name which must have been seen already and
+ added to the statement tree. We will see if it has been opened
+ already and had its symbols read. If not then we'll read it. */
+@@ -1923,6 +1962,40 @@ lang_place_undefineds (void)
+ insert_undefined (ptr->name);
+ }
+
++/* Check for all readonly or some readwrite sections. */
++
++static void
++check_input_sections (lang_statement_union_type *s,
++ lang_output_section_statement_type *output_section_statement)
++{
++ for (; s != (lang_statement_union_type *) NULL; s = s->header.next)
++ {
++ switch (s->header.type)
++ {
++ case lang_wild_statement_enum:
++ walk_wild (&s->wild_statement, check_section_callback,
++ output_section_statement);
++ if (! output_section_statement->all_input_readonly)
++ return;
++ break;
++ case lang_constructors_statement_enum:
++ check_input_sections (constructor_list.head,
++ output_section_statement);
++ if (! output_section_statement->all_input_readonly)
++ return;
++ break;
++ case lang_group_statement_enum:
++ check_input_sections (s->group_statement.children.head,
++ output_section_statement);
++ if (! output_section_statement->all_input_readonly)
++ return;
++ break;
++ default:
++ break;
++ }
++ }
++}
++
+ /* Open input files and attach to output sections. */
+
+ static void
+@@ -1943,6 +2016,23 @@ map_input_to_output_sections
+ output_section_statement);
+ break;
+ case lang_output_section_statement_enum:
++ if (s->output_section_statement.constraint)
++ {
++ if (s->output_section_statement.constraint == -1)
++ break;
++ s->output_section_statement.all_input_readonly = TRUE;
++ check_input_sections (s->output_section_statement.children.head,
++ &s->output_section_statement);
++ if ((s->output_section_statement.all_input_readonly
++ && s->output_section_statement.constraint == ONLY_IF_RW)
++ || (!s->output_section_statement.all_input_readonly
++ && s->output_section_statement.constraint == ONLY_IF_RO))
++ {
++ s->output_section_statement.constraint = -1;
++ break;
++ }
++ }
++
+ map_input_to_output_sections (s->output_section_statement.children.head,
+ target,
+ &s->output_section_statement);
+@@ -2013,6 +2103,8 @@ strip_excluded_output_sections (void)
+ asection *s;
+
+ os = &u->output_section_statement;
++ if (os->constraint == -1)
++ continue;
+ s = os->bfd_section;
+ if (s != NULL && (s->flags & SEC_EXCLUDE) != 0)
+ {
+@@ -3857,13 +3949,15 @@ lang_enter_output_section_statement (con
+ bfd_vma block_value,
+ etree_type *align,
+ etree_type *subalign,
+- etree_type *ebase)
++ etree_type *ebase,
++ int constraint)
+ {
+ lang_output_section_statement_type *os;
+
+ current_section =
+ os =
+- lang_output_section_statement_lookup (output_section_statement_name);
++ lang_output_section_statement_lookup_1 (output_section_statement_name,
++ constraint);
+
+ /* Add this statement to tree. */
+ #if 0
+@@ -4558,6 +4652,8 @@ lang_record_phdrs (void)
+ struct lang_output_section_phdr_list *pl;
+
+ os = &u->output_section_statement;
++ if (os->constraint == -1)
++ continue;
+
+ pl = os->phdrs;
+ if (pl != NULL)
+@@ -4617,7 +4713,8 @@ lang_record_phdrs (void)
+ {
+ struct lang_output_section_phdr_list *pl;
+
+- if (u->output_section_statement.bfd_section == NULL)
++ if (u->output_section_statement.constraint == -1
++ || u->output_section_statement.bfd_section == NULL)
+ continue;
+
+ for (pl = u->output_section_statement.phdrs;
+@@ -4684,7 +4781,7 @@ lang_enter_overlay_section (const char *
+ etree_type *size;
+
+ lang_enter_output_section_statement (name, overlay_vma, normal_section,
+- 0, 0, 0, 0);
++ 0, 0, 0, 0, 0);
+
+ /* If this is the first section, then base the VMA of future
+ sections on this one. This will work correctly even if `.' is
+--- ld/ldlex.l.jj Wed Jul 23 11:08:12 2003
++++ ld/ldlex.l Mon Jul 28 07:14:02 2003
+@@ -299,6 +299,8 @@ V_IDENTIFIER [*?.$_a-zA-Z\[\]\-\!\^]([*?
+ <EXPRESSION,BOTH,SCRIPT>"COPY" { RTOKEN(COPY);}
+ <EXPRESSION,BOTH,SCRIPT>"INFO" { RTOKEN(INFO);}
+ <EXPRESSION,BOTH,SCRIPT>"OVERLAY" { RTOKEN(OVERLAY);}
++<EXPRESSION,BOTH,SCRIPT>"ONLY_IF_RO" { RTOKEN(ONLY_IF_RO); }
++<EXPRESSION,BOTH,SCRIPT>"ONLY_IF_RW" { RTOKEN(ONLY_IF_RW); }
+ <BOTH,SCRIPT>"o" { RTOKEN(ORIGIN);}
+ <BOTH,SCRIPT>"org" { RTOKEN(ORIGIN);}
+ <BOTH,SCRIPT>"l" { RTOKEN( LENGTH);}
diff --git a/sys-devel/binutils/files/2.14/binutils-2.14.90.0.5-ppc64-elfvsb.patch b/sys-devel/binutils/files/2.14/binutils-2.14.90.0.5-ppc64-elfvsb.patch
new file mode 100644
index 000000000000..8df8497a1609
--- /dev/null
+++ b/sys-devel/binutils/files/2.14/binutils-2.14.90.0.5-ppc64-elfvsb.patch
@@ -0,0 +1,24 @@
+2003-07-29 Jakub Jelinek <jakub@redhat.com>
+
+ * ld-elfvsb/elf-offset.ld: Add .rel.toc, .rela.toc and .toc
+ sections.
+
+--- ld/testsuite/ld-elfvsb/elf-offset.ld.jj 2003-05-19 17:12:47.000000000 -0400
++++ ld/testsuite/ld-elfvsb/elf-offset.ld 2003-07-29 05:39:34.000000000 -0400
+@@ -46,6 +46,8 @@ SECTIONS
+ }
+ .rel.got : { *(.rel.got) }
+ .rela.got : { *(.rela.got) }
++ .rel.toc : { *(.rel.toc) }
++ .rela.toc : { *(.rela.toc) }
+ .rel.ctors : { *(.rel.ctors) }
+ .rela.ctors : { *(.rela.ctors) }
+ .rel.dtors : { *(.rel.dtors) }
+@@ -111,6 +113,7 @@ SECTIONS
+ KEEP (*(.dtors))
+ }
+ .got : { *(.got.plt) *(.got) }
++ .toc : { *(.toc) }
+ .dynamic : { *(.dynamic) }
+ /* We want the small data sections together, so single-instruction offsets
+ can access them all, and initialized data all before uninitialized, so
diff --git a/sys-devel/binutils/files/2.14/binutils-2.14.90.0.5-ppc64-fdesc.patch b/sys-devel/binutils/files/2.14/binutils-2.14.90.0.5-ppc64-fdesc.patch
new file mode 100644
index 000000000000..754f81894923
--- /dev/null
+++ b/sys-devel/binutils/files/2.14/binutils-2.14.90.0.5-ppc64-fdesc.patch
@@ -0,0 +1,26 @@
+2003-07-29 Alan Modra <amodra@bigpond.net.au>
+
+ * elf64-ppc.c (func_desc_adjust): Give linker created function
+ descriptor symbols a size and type.
+ (ppc64_elf_relocate_section): Correct lq insn test.
+
+--- bfd/elf64-ppc.c 27 Jul 2003 09:05:08 -0000 1.121
++++ bfd/elf64-ppc.c 29 Jul 2003 06:47:10 -0000 1.122
+@@ -4310,6 +4310,8 @@ func_desc_adjust (struct elf_link_hash_e
+ }
+ fdh = (struct elf_link_hash_entry *) bh;
+ fdh->elf_link_hash_flags &= ~ELF_LINK_NON_ELF;
++ fdh->size = 24;
++ fdh->type = STT_OBJECT;
+ }
+
+ if (fdh != NULL
+@@ -8434,7 +8436,7 @@ ppc64_elf_relocate_section (bfd *output_
+ _DS relocs bloats all reloc switches in this file. It
+ doesn't seem to make much sense to use any of these relocs
+ in data, so testing the insn should be safe. */
+- if ((insn & (0x3f << 26)) == (56 << 26))
++ if ((insn & (0x3f << 26)) == (56u << 26))
+ mask = 15;
+ if (((relocation + addend) & mask) != 0)
+ {
diff --git a/sys-devel/binutils/files/2.14/binutils-2.14.90.0.5-ppc64-ldr.patch b/sys-devel/binutils/files/2.14/binutils-2.14.90.0.5-ppc64-ldr.patch
new file mode 100644
index 000000000000..87bca680c410
--- /dev/null
+++ b/sys-devel/binutils/files/2.14/binutils-2.14.90.0.5-ppc64-ldr.patch
@@ -0,0 +1,26 @@
+2003-07-28 Alan Modra <amodra@bigpond.net.au>
+
+ * emulparams/elf64ppc.sh (GOT): Fix for shell brace matching.
+
+ * emulparams/elf64ppc.sh (GOT): Don't merge .toc into .got for ld -r.
+
+--- ld/emulparams/elf64ppc.sh.jj Wed Jul 23 11:08:12 2003
++++ ld/emulparams/elf64ppc.sh Mon Jul 28 10:25:00 2003
+@@ -18,8 +18,15 @@ OTHER_BSS_SYMBOLS="
+ .tocbss ${RELOCATING-0}${RELOCATING+ALIGN(8)} : { *(.tocbss)}"
+ OTHER_PLT_RELOC_SECTIONS="
+ .rela.tocbss ${RELOCATING-0} : { *(.rela.tocbss) }"
+-GOT="
+- .got ${RELOCATING-0}${RELOCATING+ALIGN(8)} : { *(.got .toc) }"
++
++if test x${RELOCATING+set} = xset; then
++ GOT="
++ .got ALIGN(8) : { *(.got .toc) }"
++else
++ GOT="
++ .got 0 : { *(.got) }
++ .toc 0 : { *(.toc) }"
++fi
+ OTHER_GOT_RELOC_SECTIONS="
+ .rela.toc ${RELOCATING-0} : { *(.rela.toc) }"
+ OTHER_READWRITE_SECTIONS="
diff --git a/sys-devel/binutils/files/2.14/binutils-2.14.90.0.5-ppc64-mask.patch b/sys-devel/binutils/files/2.14/binutils-2.14.90.0.5-ppc64-mask.patch
new file mode 100644
index 000000000000..6098a6b63cf7
--- /dev/null
+++ b/sys-devel/binutils/files/2.14/binutils-2.14.90.0.5-ppc64-mask.patch
@@ -0,0 +1,33 @@
+2003-07-28 Jakub Jelinek <jakub@redhat.com>
+
+ * ppc-opc.c (insert_mbe, extract_mbe): Shift 1L instead of 1 up.
+
+--- opcodes/ppc-opc.c 7 Jul 2003 01:34:04 -0000 1.53
++++ opcodes/ppc-opc.c 28 Jul 2003 21:53:58 -0000
+@@ -1103,7 +1103,7 @@ insert_mbe (unsigned long insn,
+ /* me: location of last 1->0 transition */
+ /* count: # transitions */
+
+- for (mx = 0, mask = 1 << 31; mx < 32; ++mx, mask >>= 1)
++ for (mx = 0, mask = 1L << 31; mx < 32; ++mx, mask >>= 1)
+ {
+ if ((uval & mask) && !last)
+ {
+@@ -1144,7 +1144,7 @@ extract_mbe (unsigned long insn,
+ {
+ ret = 0;
+ for (i = mb; i <= me; i++)
+- ret |= 1 << (31 - i);
++ ret |= 1L << (31 - i);
+ }
+ else if (mb == me + 1)
+ ret = ~0;
+@@ -1152,7 +1152,7 @@ extract_mbe (unsigned long insn,
+ {
+ ret = ~0;
+ for (i = me + 1; i < mb; i++)
+- ret &= ~(1 << (31 - i));
++ ret &= ~(1L << (31 - i));
+ }
+ return ret;
+ }
diff --git a/sys-devel/binutils/files/2.14/binutils-2.14.90.0.5-ppc64-pie.patch b/sys-devel/binutils/files/2.14/binutils-2.14.90.0.5-ppc64-pie.patch
new file mode 100644
index 000000000000..cbb95d4c740f
--- /dev/null
+++ b/sys-devel/binutils/files/2.14/binutils-2.14.90.0.5-ppc64-pie.patch
@@ -0,0 +1,16 @@
+--- bfd/elf64-ppc.c.jj Wed Jul 23 11:08:09 2003
++++ bfd/elf64-ppc.c Mon Jul 28 07:54:27 2003
+@@ -8208,7 +8208,12 @@ ppc64_elf_relocate_section (bfd *output_
+ else if (!SYMBOL_REFERENCES_LOCAL (info, h)
+ && !is_opd
+ && r_type != R_PPC64_TOC)
+- outrel.r_info = ELF64_R_INFO (h->dynindx, r_type);
++ {
++ outrel.r_info = ELF64_R_INFO (h->dynindx, r_type);
++ if (h->dynindx == -1
++ && h->root.type == bfd_link_hash_undefweak)
++ memset (&outrel, 0, sizeof outrel);
++ }
+ else
+ {
+ /* This symbol is local, or marked to become local,
diff --git a/sys-devel/binutils/files/2.14/binutils-2.14.90.0.5-ppc64-power4.patch b/sys-devel/binutils/files/2.14/binutils-2.14.90.0.5-ppc64-power4.patch
new file mode 100644
index 000000000000..f5d828319d55
--- /dev/null
+++ b/sys-devel/binutils/files/2.14/binutils-2.14.90.0.5-ppc64-power4.patch
@@ -0,0 +1,15 @@
+2003-07-28 Jakub Jelinek <jakub@redhat.com>
+
+ * config/tc-ppc.c (md_apply_fix3): Fix check for lq insns.
+
+--- gas/config/tc-ppc.c.jj 2003-07-10 07:30:15.000000000 -0400
++++ gas/config/tc-ppc.c 2003-07-28 14:07:29.000000000 -0400
+@@ -5742,7 +5742,7 @@ md_apply_fix3 (fixP, valP, seg)
+ mask = 0xfffc;
+ /* lq insns reserve the four lsbs. */
+ if ((ppc_cpu & PPC_OPCODE_POWER4) != 0
+- && (val & (0x3f << 26)) == (56 << 26))
++ && (val & (0x3f << 26)) == (56u << 26))
+ mask = 0xfff0;
+ val |= value & mask;
+ if (target_big_endian)
diff --git a/sys-devel/binutils/files/2.14/binutils-2.14.90.0.5-s390-pie.patch b/sys-devel/binutils/files/2.14/binutils-2.14.90.0.5-s390-pie.patch
new file mode 100644
index 000000000000..33f38c87aee8
--- /dev/null
+++ b/sys-devel/binutils/files/2.14/binutils-2.14.90.0.5-s390-pie.patch
@@ -0,0 +1,59 @@
+2003-07-04 Jakub Jelinek <jakub@redhat.com>
+
+ * elf32-s390.c (allocate_dynrelocs): Use SYMBOL_REFERENCES_LOCAL
+ for pc relative relocs.
+ (elf_s390_relocate_section): Likewise.
+ * elf64-s390.c (allocate_dynrelocs): Use SYMBOL_REFERENCES_LOCAL
+ for pc relative relocs.
+ (elf_s390_relocate_section): Likewise.
+
+--- bfd/elf32-s390.c.jj Wed Jun 25 07:53:21 2003
++++ bfd/elf32-s390.c Fri Jul 4 12:08:11 2003
+@@ -1808,9 +1808,7 @@ allocate_dynrelocs (h, inf)
+
+ if (info->shared)
+ {
+- if ((h->elf_link_hash_flags & ELF_LINK_HASH_DEF_REGULAR) != 0
+- && ((h->elf_link_hash_flags & ELF_LINK_FORCED_LOCAL) != 0
+- || info->symbolic))
++ if (SYMBOL_REFERENCES_LOCAL (info, h))
+ {
+ struct elf_s390_dyn_relocs **pp;
+
+@@ -2519,10 +2517,7 @@ elf_s390_relocate_section (output_bfd, i
+ && r_type != R_390_PC32DBL
+ && r_type != R_390_PC32)
+ || (h != NULL
+- && h->dynindx != -1
+- && (! info->symbolic
+- || (h->elf_link_hash_flags
+- & ELF_LINK_HASH_DEF_REGULAR) == 0))))
++ && !SYMBOL_REFERENCES_LOCAL (info, h))))
+ || (ELIMINATE_COPY_RELOCS
+ && !info->shared
+ && h != NULL
+--- bfd/elf64-s390.c.jj 2003-07-04 15:10:57.000000000 -0400
++++ bfd/elf64-s390.c 2003-07-04 15:24:06.000000000 -0400
+@@ -1780,9 +1780,7 @@ allocate_dynrelocs (h, inf)
+
+ if (info->shared)
+ {
+- if ((h->elf_link_hash_flags & ELF_LINK_HASH_DEF_REGULAR) != 0
+- && ((h->elf_link_hash_flags & ELF_LINK_FORCED_LOCAL) != 0
+- || info->symbolic))
++ if (SYMBOL_REFERENCES_LOCAL (info, h))
+ {
+ struct elf_s390_dyn_relocs **pp;
+
+@@ -2498,10 +2496,7 @@ elf_s390_relocate_section (output_bfd, i
+ && r_type != R_390_PC32DBL
+ && r_type != R_390_PC64)
+ || (h != NULL
+- && h->dynindx != -1
+- && (! info->symbolic
+- || (h->elf_link_hash_flags
+- & ELF_LINK_HASH_DEF_REGULAR) == 0))))
++ && !SYMBOL_REFERENCES_LOCAL (info, h))))
+ || (ELIMINATE_COPY_RELOCS
+ && !info->shared
+ && h != NULL
diff --git a/sys-devel/binutils/files/digest-binutils-2.14.90.0.5-r1 b/sys-devel/binutils/files/digest-binutils-2.14.90.0.5-r1
new file mode 100644
index 000000000000..0e19b24ec983
--- /dev/null
+++ b/sys-devel/binutils/files/digest-binutils-2.14.90.0.5-r1
@@ -0,0 +1 @@
+MD5 023e0914937116121c2c34e59e0d1c4b binutils-2.14.90.0.5.tar.bz2 10381764