diff options
author | Nicholas Wourms <dragon@gentoo.org> | 2003-03-22 16:34:31 +0000 |
---|---|---|
committer | Nicholas Wourms <dragon@gentoo.org> | 2003-03-22 16:34:31 +0000 |
commit | df8a894547cd367a2774b666768c730cc2e038dc (patch) | |
tree | 7872bfa5ccefc6ffd233dee9db31579d6cee043b /sys-devel | |
parent | missing ~ppc (diff) | |
download | gentoo-2-df8a894547cd367a2774b666768c730cc2e038dc.tar.gz gentoo-2-df8a894547cd367a2774b666768c730cc2e038dc.tar.bz2 gentoo-2-df8a894547cd367a2774b666768c730cc2e038dc.zip |
Bump the binutils ebuild to a new beta to resolve critical mips gas issues. Made keywords "-arch" for all other platforms.
Diffstat (limited to 'sys-devel')
7 files changed, 258 insertions, 1 deletions
diff --git a/sys-devel/binutils/ChangeLog b/sys-devel/binutils/ChangeLog index 52fddb11c8ee..d36b810f8099 100644 --- a/sys-devel/binutils/ChangeLog +++ b/sys-devel/binutils/ChangeLog @@ -1,6 +1,21 @@ # ChangeLog for sys-devel/binutils # Copyright 2002-2003 Gentoo Technologies, Inc.; Distributed under the GPL v2 -# $Header: /var/cvsroot/gentoo-x86/sys-devel/binutils/ChangeLog,v 1.37 2003/03/09 02:51:07 azarah Exp $ +# $Header: /var/cvsroot/gentoo-x86/sys-devel/binutils/ChangeLog,v 1.38 2003/03/22 16:34:31 dragon Exp $ + +*binutils-2.13.90.0.20 (22 Mar 2003) + + 22 Mar 2003; Nicholas Wourms <dragon@gentoo.org> + binutils-2.13.90.0.20.ebuild, + files/2.13/binutils-2.13.90.0.10-x86_64-gotpcrel.patch, + files/2.13/binutils-2.13.90.0.18-testsuite-Wall-fixes.patch, + files/2.13/binutils-2.13.90.0.20-array-sects-compat.patch, + files/2.13/binutils-2.13.90.0.20-gas-mips-gprel.patch: + Bump to new beta version. This release contains a boatload of fixes for + a wide variety of platforms. It also fixes a critical bug in the previous + version for the mips platform. Due to the beta nature of this version and + the proximity to a new gentoo release, I have set keywords to "-arch" for + all platforms except mips. However, it should be tested on these other + platforms and keywords modified as necessary. *binutils-2.13.90.0.18-r1 (08 Mar 2003) diff --git a/sys-devel/binutils/binutils-2.13.90.0.20.ebuild b/sys-devel/binutils/binutils-2.13.90.0.20.ebuild new file mode 100644 index 000000000000..5299a1873367 --- /dev/null +++ b/sys-devel/binutils/binutils-2.13.90.0.20.ebuild @@ -0,0 +1,164 @@ +# 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.13.90.0.20.ebuild,v 1.1 2003/03/22 16:34:31 dragon 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="ftp://ftp.kernel.org/pub/linux/devel/binutils/${P}.tar.bz2 + ftp://ftp.kernel.org/pub/linux/devel/binutils/test/${P}.tar.bz2" +HOMEPAGE="http://sources.redhat.com/binutils/" + +SLOT="0" +LICENSE="GPL-2|LGPL-2" +KEYWORDS="-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} + # Various patches from Redhat/Mandrake... + epatch ${FILESDIR}/2.13/${PN}-2.13.90.0.10-glibc21.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-eh-frame-ro.patch + epatch ${FILESDIR}/2.13/${PN}-2.13.90.0.18-ltconfig-multilib.patch + epatch ${FILESDIR}/2.13/${PN}-2.13.90.0.18-testsuite-Wall-fixes.patch + use x86 &> /dev/null \ + && epatch ${FILESDIR}/2.13/${P}-array-sects-compat.patch + epatch ${FILESDIR}/2.13/${PN}-2.13.90.0.18-s390-file-loc.patch + + # Add patches for mips + if [ "${ARCH}" = "mips" ] + then + epatch ${FILESDIR}/2.13/${P}-gas-mips-gprel.patch + fi + +} + +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! + 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.13/binutils-2.13.90.0.10-x86_64-gotpcrel.patch b/sys-devel/binutils/files/2.13/binutils-2.13.90.0.10-x86_64-gotpcrel.patch index 263e7920966e..9c895d45a3dc 100644 --- a/sys-devel/binutils/files/2.13/binutils-2.13.90.0.10-x86_64-gotpcrel.patch +++ b/sys-devel/binutils/files/2.13/binutils-2.13.90.0.10-x86_64-gotpcrel.patch @@ -1,3 +1,7 @@ +2002-08-26 Jan Hubicka <jh@suse.cz> + + * tc-i386.c (tc_i386_fix_adjustable): Recognize GOTPCREL properly. + --- binutils-2.13.90.0.10/gas/config/tc-i386.c.x86_64-gotpcrel 2002-11-15 15:16:42.000000000 +0100 +++ binutils-2.13.90.0.10/gas/config/tc-i386.c 2002-11-15 15:22:40.000000000 +0100 @@ -1220,6 +1220,12 @@ tc_i386_fix_adjustable (fixP) diff --git a/sys-devel/binutils/files/2.13/binutils-2.13.90.0.18-testsuite-Wall-fixes.patch b/sys-devel/binutils/files/2.13/binutils-2.13.90.0.18-testsuite-Wall-fixes.patch new file mode 100644 index 000000000000..213c2032effb --- /dev/null +++ b/sys-devel/binutils/files/2.13/binutils-2.13.90.0.18-testsuite-Wall-fixes.patch @@ -0,0 +1,32 @@ +2003-02-15 Gwenole Beauchesne <gbeauchesne@mandrakesoft.com> + + * ld/testsuite/ld-shared/main.c (main): -Wall fixes. + +--- binutils-2.13.90.0.18/ld/testsuite/ld-shared/main.c.testsuite-Wall-fixes 2001-06-09 03:13:02.000000000 -0400 ++++ binutils-2.13.90.0.18/ld/testsuite/ld-shared/main.c 2003-02-15 03:47:05.000000000 -0500 +@@ -38,8 +38,6 @@ shlib_overriddencall2 () + int + main () + { +- int (*p) (); +- + printf ("mainvar == %d\n", mainvar); + printf ("overriddenvar == %d\n", overriddenvar); + printf ("shlibvar1 == %d\n", shlibvar1); +@@ -62,6 +60,8 @@ main () + printf ("shlib_checkfunptr2 (main_called) == %d\n", + shlib_checkfunptr2 (main_called)); + #endif ++ { ++ int (*p) (); + p = shlib_getfunptr1 (); + printf ("shlib_getfunptr1 () "); + if (p == shlib_shlibvar1) +@@ -78,6 +78,7 @@ main () + printf ("!="); + printf (" main_called\n"); + #endif ++ } + #endif + printf ("shlib_check () == %d\n", shlib_check ()); + return 0; diff --git a/sys-devel/binutils/files/2.13/binutils-2.13.90.0.20-array-sects-compat.patch b/sys-devel/binutils/files/2.13/binutils-2.13.90.0.20-array-sects-compat.patch new file mode 100644 index 000000000000..2f2993ffe5b3 --- /dev/null +++ b/sys-devel/binutils/files/2.13/binutils-2.13.90.0.20-array-sects-compat.patch @@ -0,0 +1,20 @@ +--- ld/scripttempl/elf.sc.array-sects-compat~ 2003-01-03 22:21:16.000000000 -0200 ++++ ld/scripttempl/elf.sc 2003-01-03 22:27:42.000000000 -0200 +@@ -288,6 +288,17 @@ + ${CREATE_SHLIB-${RELOCATING+. = ${DATA_ADDR-${DATA_SEGMENT_ALIGN}};}} + ${CREATE_SHLIB+${RELOCATING+. = ${SHLIB_DATA_ADDR-${DATA_SEGMENT_ALIGN}};}} + ++ /* For backward-compatibility with tools that don't support the ++ *_array_* sections below, our glibc's crt files contain weak ++ definitions of symbols that they reference. We don't want to use ++ them, though, unless they're strictly necessary, because they'd ++ bring us empty sections, unlike PROVIDE below, so we drop the ++ sections from the crt files here. */ ++ /DISCARD/ : { ++ */crti.o(.init_array .fini_array .preinit_array) ++ */crtn.o(.init_array .fini_array .preinit_array) ++ } ++ + /* Ensure the __preinit_array_start label is properly aligned. We + could instead move the label definition inside the section, but + the linker would then create the section even if it turns out to diff --git a/sys-devel/binutils/files/2.13/binutils-2.13.90.0.20-gas-mips-gprel.patch b/sys-devel/binutils/files/2.13/binutils-2.13.90.0.20-gas-mips-gprel.patch new file mode 100644 index 000000000000..2b1c637d9f19 --- /dev/null +++ b/sys-devel/binutils/files/2.13/binutils-2.13.90.0.20-gas-mips-gprel.patch @@ -0,0 +1,21 @@ +diff -Naurp binutils-2.13.90.0.18.orig/gas/config/tc-mips.c binutils-2.13.90.0.18/gas/config/tc-mips.c +--- binutils-2.13.90.0.18.orig/gas/config/tc-mips.c 2003-02-28 11:22:14.000000000 -0500 ++++ binutils-2.13.90.0.18/gas/config/tc-mips.c 2003-02-28 11:23:28.000000000 -0500 +@@ -13402,7 +13402,16 @@ tc_gen_reloc (section, fixp) + && (code == BFD_RELOC_GPREL16 || code == BFD_RELOC_MIPS16_GPREL) + && reloc->addend != 0 + && mips_need_elf_addend_fixup (fixp)) +- reloc->addend += S_GET_VALUE (fixp->fx_addsy); ++ { ++ /* gbl: in o32 GPREL16 is always inplace, but in n32 and 64 ++ it isn't. I wish someone would get rid of this "fix". */ ++ reloc_howto_type *howto; ++ ++ howto = bfd_reloc_type_lookup (stdoutput, fixp->fx_r_type); ++ if (howto->partial_inplace) { ++ reloc->addend += S_GET_VALUE (fixp->fx_addsy); ++ } ++ } + #endif + + reloc->howto = bfd_reloc_type_lookup (stdoutput, code); diff --git a/sys-devel/binutils/files/digest-binutils-2.13.90.0.20 b/sys-devel/binutils/files/digest-binutils-2.13.90.0.20 new file mode 100644 index 000000000000..f6bf489a3570 --- /dev/null +++ b/sys-devel/binutils/files/digest-binutils-2.13.90.0.20 @@ -0,0 +1 @@ +MD5 cfbad8b279410a3edbcdea9684943015 binutils-2.13.90.0.20.tar.bz2 10157139 |