diff options
author | Martin Schlemmer <azarah@gentoo.org> | 2003-01-26 15:25:01 +0000 |
---|---|---|
committer | Martin Schlemmer <azarah@gentoo.org> | 2003-01-26 15:25:01 +0000 |
commit | a295bdb3b58e55e2c9a6ce280ef0bdb616c01193 (patch) | |
tree | 37cdad5358f487c57bcf663b5b7475d7262e9723 /sys-devel/binutils | |
parent | version bump (diff) | |
download | historical-a295bdb3b58e55e2c9a6ce280ef0bdb616c01193.tar.gz historical-a295bdb3b58e55e2c9a6ce280ef0bdb616c01193.tar.bz2 historical-a295bdb3b58e55e2c9a6ce280ef0bdb616c01193.zip |
new version
Diffstat (limited to 'sys-devel/binutils')
5 files changed, 291 insertions, 1 deletions
diff --git a/sys-devel/binutils/ChangeLog b/sys-devel/binutils/ChangeLog index e428976d8935..4aeb53b1a5b0 100644 --- a/sys-devel/binutils/ChangeLog +++ b/sys-devel/binutils/ChangeLog @@ -1,6 +1,11 @@ # ChangeLog for sys-devel/binutils # Copyright 2002 Gentoo Technologies, Inc.; Distributed under the GPL -# $Header: /var/cvsroot/gentoo-x86/sys-devel/binutils/ChangeLog,v 1.23 2003/01/19 20:28:42 tuxus Exp $ +# $Header: /var/cvsroot/gentoo-x86/sys-devel/binutils/ChangeLog,v 1.24 2003/01/26 15:25:01 azarah Exp $ + +*binutils-2.13.90.0.18 (26 Jan 2003) + + 26 Jan 2003; Martin Schlemmer <azarah@gentoo.org> binutils-2.13.90.0.18.ebuild : + New version. Some cleanups + patches. 08 Jan 2003; Martin Schlemmer <azarah@gentoo.org> binutils-2.13.90.0.16-r1.ebuild : Mark stable. diff --git a/sys-devel/binutils/binutils-2.13.90.0.18.ebuild b/sys-devel/binutils/binutils-2.13.90.0.18.ebuild new file mode 100644 index 000000000000..9047f7369571 --- /dev/null +++ b/sys-devel/binutils/binutils-2.13.90.0.18.ebuild @@ -0,0 +1,168 @@ +# Copyright 1999-2002 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.18.ebuild,v 1.1 2003/01/26 15:25:01 azarah Exp $ + +IUSE="nls bootstrap static 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" + +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" + +DEPEND="virtual/glibc + >=sys-apps/portage-2.0.21 + nls? ( sys-devel/gettext ) + || ( sys-devel/perl + ( !build? ( sys-devel/perl ) ) + ( !bootstrap? ( sys-devel/perl ) ) + )" +# This is a hairy one. Basically depend on sys-devel/perl +# if "build" or "bootstrap" not in USE. + +src_unpack() { + + unpack ${A} + + cd ${S} + # Various patches from Redhat/Mandrake... + epatch ${FILESDIR}/2.13/${PN}-2.13.90.0.16-sparc-nonpic.patch + epatch ${FILESDIR}/2.13/${PN}-2.13.90.0.10-glibc21.patch + epatch ${FILESDIR}/2.13/${PN}-2.13.90.0.10-ia64-brl.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 +# This one needs to be ported, but I dont feel like it right now. +# epatch ${FILESDIR}/2.13/${PN}-2.13.90.0.16-eh-frame-ro.patch + use x86 &> /dev/null \ + && epatch ${FILESDIR}/2.13/${PN}-2.13.90.0.16-array-sects-compat.patch + + # Add patches for mips + if [ "${ARCH}" = "mips" ] + then + cd ${S} + chmod +x mips/README + ./mips/README + 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 + + if [ "`use static`" ] + then + emake tooldir="${ROOT}/usr/bin" \ + -e LDFLAGS="-all-static" \ + all || die + else + emake tooldir="${ROOT}/usr/bin" \ + all || die + fi + + 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.16-array-sects-compat.patch b/sys-devel/binutils/files/2.13/binutils-2.13.90.0.16-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.16-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.16-sparc-nonpic.patch b/sys-devel/binutils/files/2.13/binutils-2.13.90.0.16-sparc-nonpic.patch new file mode 100644 index 000000000000..2639a82e92fe --- /dev/null +++ b/sys-devel/binutils/files/2.13/binutils-2.13.90.0.16-sparc-nonpic.patch @@ -0,0 +1,96 @@ +2002-04-20 Jakub Jelinek <jakub@redhat.com> + + * elf32-sparc.c (elf32_sparc_relocate_section): Find real output + section with SEC_MERGE. + * elf64-sparc.c (sparc64_elf_relocate_section): Likewise. + +--- bfd/elf32-sparc.c.jj Sat Apr 20 22:11:57 2002 ++++ bfd/elf32-sparc.c Sat Apr 20 23:06:33 2002 +@@ -1144,7 +1144,7 @@ elf32_sparc_relocate_section (output_bfd + struct elf_link_hash_entry *h; + Elf_Internal_Sym *sym; + asection *sec; +- bfd_vma relocation, off; ++ bfd_vma relocation, off, orig_addend = 0; + bfd_reloc_status_type r; + boolean is_plt = false; + boolean unresolved_reloc; +@@ -1192,6 +1192,7 @@ elf32_sparc_relocate_section (output_bfd + { + sym = local_syms + r_symndx; + sec = local_sections[r_symndx]; ++ orig_addend = rel->r_addend; + relocation = _bfd_elf_rela_local_sym (output_bfd, sym, sec, rel); + } + else +@@ -1527,6 +1528,25 @@ elf32_sparc_relocate_section (output_bfd + asection *osec; + + osec = sec->output_section; ++ /* FIXME: As soon as making sections zero size ++ is possible, this if can go away. */ ++ if (bfd_is_abs_section (osec) ++ && h == NULL ++ && (sec->flags & SEC_MERGE) ++ && ELF_ST_TYPE (sym->st_info) == STT_SECTION ++ && (elf_section_data (sec)->sec_info_type ++ == ELF_INFO_TYPE_MERGE)) ++ { ++ asection *msec; ++ ++ msec = sec; ++ _bfd_merged_section_offset (output_bfd, &msec, ++ elf_section_data (sec)->sec_info, ++ sym->st_value + orig_addend, ++ (bfd_vma) 0); ++ osec = msec->output_section; ++ } ++ + indx = elf_section_data (osec)->dynindx; + + /* FIXME: we really should be able to link non-pic +--- bfd/elf64-sparc.c.jj Sat Apr 20 22:11:57 2002 ++++ bfd/elf64-sparc.c Sat Apr 20 23:12:18 2002 +@@ -1939,7 +1939,7 @@ sparc64_elf_relocate_section (output_bfd + struct elf_link_hash_entry *h; + Elf_Internal_Sym *sym; + asection *sec; +- bfd_vma relocation, off; ++ bfd_vma relocation, off, orig_addend = 0; + bfd_reloc_status_type r; + boolean is_plt = false; + boolean unresolved_reloc; +@@ -1982,6 +1982,7 @@ sparc64_elf_relocate_section (output_bfd + { + sym = local_syms + r_symndx; + sec = local_sections[r_symndx]; ++ orig_addend = rel->r_addend; + relocation = _bfd_elf_rela_local_sym (output_bfd, sym, sec, rel); + } + else +@@ -2211,6 +2212,25 @@ sparc64_elf_relocate_section (output_bfd + asection *osec; + + osec = sec->output_section; ++ /* FIXME: As soon as making sections zero size ++ is possible, this if can go away. */ ++ if (bfd_is_abs_section (osec) ++ && h == NULL ++ && (sec->flags & SEC_MERGE) ++ && ELF_ST_TYPE (sym->st_info) == STT_SECTION ++ && (elf_section_data (sec)->sec_info_type ++ == ELF_INFO_TYPE_MERGE)) ++ { ++ asection *msec; ++ ++ msec = sec; ++ _bfd_merged_section_offset (output_bfd, &msec, ++ elf_section_data (sec)->sec_info, ++ sym->st_value + orig_addend, ++ (bfd_vma) 0); ++ osec = msec->output_section; ++ } ++ + indx = elf_section_data (osec)->dynindx; + + /* FIXME: we really should be able to link non-pic diff --git a/sys-devel/binutils/files/digest-binutils-2.13.90.0.18 b/sys-devel/binutils/files/digest-binutils-2.13.90.0.18 new file mode 100644 index 000000000000..a07b33c1f3e4 --- /dev/null +++ b/sys-devel/binutils/files/digest-binutils-2.13.90.0.18 @@ -0,0 +1 @@ +MD5 422a6fc64ebf785cad64a76defd4a4b6 binutils-2.13.90.0.18.tar.bz2 9849479 |