From a4096d768fc6bc5e4d95c33a09dbbbe501d1c56b Mon Sep 17 00:00:00 2001 From: Jan Kratochvil Date: Oct 30 2008 08:08:34 +0000 Subject: - binutils-devel now requires zlib-devel (BZ 463101 comment 5). - Fix complains on .gnu.linkonce.r relocations to their discarded .gnu.linkonce.t counterparts. --- diff --git a/binutils-2.18.50.0.9-linkonce-r-discard.patch b/binutils-2.18.50.0.9-linkonce-r-discard.patch new file mode 100644 index 0000000..bcee4f7 --- /dev/null +++ b/binutils-2.18.50.0.9-linkonce-r-discard.patch @@ -0,0 +1,77 @@ +http://sourceware.org/ml/binutils/2008-10/msg00235.html + +2008-10-26 Jan Kratochvil + + * elflink.c (elf_link_input_bfd): Handle pre-COMDAT g++-3.4 relocations + in `.gnu.linkonce.r.*' referencing its `.gnu.linkonce.t.*'. + +2008-10-26 Jan Kratochvil + + * ld-elf/linkoncerdiff.d, ld-elf/linkoncerdiff1.s, + ld-elf/linkoncerdiff2.s: New. + +--- bfd/elflink.c 2008-10-22 21:08:20.000000000 +0200 ++++ bfd/elflink.c 2008-10-29 18:18:43.000000000 +0100 +@@ -7649,7 +7649,23 @@ elf_link_input_bfd (struct elf_final_lin + if ((sec = *ps) != NULL && elf_discarded_section (sec)) + { + BFD_ASSERT (r_symndx != 0); +- if (action_discarded & COMPLAIN) ++ ++ /* Do not complain on unresolved relocations in ++ `.gnu.linkonce.r.F' referencing its discarded ++ `.gnu.linkonce.t.F' counterpart - g++-3.4 specific as ++ g++-4.x is using COMDAT groups (without the ++ `.gnu.linkonce' prefix) instead. `.gnu.linkonce.r.*' ++ were the `.rodata' part of its matching ++ `.gnu.linkonce.t.*'. If `.gnu.linkonce.r.F' is not ++ discarded with its `.gnu.linkonce.t.F' being discarded ++ means we chose one-only `.gnu.linkonce.t.F' section ++ from an other file not needing any `.gnu.linkonce.r.F' ++ and thus `.gnu.linkonce.r.F' could be in fact also ++ discarded. */ ++ if ((action_discarded & COMPLAIN) ++ && !(CONST_STRNEQ (o->name, ".gnu.linkonce.r.") ++ && CONST_STRNEQ (sec->name, ".gnu.linkonce.t.") ++ && strcmp (o->name + 16, sec->name + 16) == 0)) + (*finfo->info->callbacks->einfo) + (_("%X`%s' referenced in section `%A' of %B: " + "defined in discarded section `%A' of %B\n"), +--- ld/testsuite/ld-elf/linkoncerdiff.d 2008-10-22 21:16:04.000000000 +0200 ++++ ld/testsuite/ld-elf/linkoncerdiff.d 2008-10-29 18:17:07.000000000 +0100 +@@ -0,0 +1,5 @@ ++#source: linkoncerdiff1.s ++#source: linkoncerdiff2.s ++#notarget: arc* d30v* dlx* openrisc* or32* pj* ++#ld: -r ++#error: `.gnu.linkonce.t.bar' referenced in section `.gnu.linkonce.r.foo' of tmpdir/dump1.o: defined in discarded section `.gnu.linkonce.t.bar' of tmpdir/dump1.o +--- ld/testsuite/ld-elf/linkoncerdiff1.s 2008-10-22 21:16:04.000000000 +0200 ++++ ld/testsuite/ld-elf/linkoncerdiff1.s 2008-10-29 18:17:07.000000000 +0100 +@@ -0,0 +1,7 @@ ++ .section .gnu.linkonce.t.foo, "a", %progbits ++ .globl symfoo ++symfoo: ++ ++ .section .gnu.linkonce.t.bar, "a", %progbits ++ .globl symbar ++symbar: +--- ld/testsuite/ld-elf/linkoncerdiff2.s 2008-10-22 21:16:04.000000000 +0200 ++++ ld/testsuite/ld-elf/linkoncerdiff2.s 2008-10-29 18:17:07.000000000 +0100 +@@ -0,0 +1,17 @@ ++ .section .gnu.linkonce.t.foo, "a", %progbits ++1: ++ .globl symfoo ++symfoo: ++ .long 0 ++ ++ .section .gnu.linkonce.t.bar, "a", %progbits ++2: ++ .globl symbar ++symbar: ++ .long 0 ++ ++ .section .gnu.linkonce.r.foo, "a", %progbits ++ .long 1b ++ .long symfoo ++ .long 2b ++ .long symbar diff --git a/binutils.spec b/binutils.spec index 07502c2..012da66 100644 --- a/binutils.spec +++ b/binutils.spec @@ -17,7 +17,7 @@ Summary: A GNU collection of binary utilities Name: %{?cross}binutils%{?_with_debug:-debug} Version: 2.18.50.0.9 -Release: 5%{?dist} +Release: 6%{?dist} License: GPLv3+ Group: Development/Tools URL: http://sources.redhat.com/binutils @@ -32,6 +32,7 @@ Patch7: binutils-2.18.50.0.6-version.patch Patch11: binutils-2.18.50.0.9-largefile.patch Patch12: binutils-2.18.50.0.9-set-long-long.patch Patch13: binutils-2.18.50.0.9-upstream.patch +Patch14: binutils-2.18.50.0.9-linkonce-r-discard.patch %if 0%{?_with_debug:1} # Define this if you want to skip the strip step and preserve debug info. @@ -81,6 +82,7 @@ Group: System Environment/Libraries Conflicts: binutils < 2.17.50.0.3-4 Requires(post): /sbin/install-info Requires(preun): /sbin/install-info +Requires: zlib-devel %description devel This package contains BFD and opcodes static libraries and associated @@ -103,6 +105,7 @@ to consider using libelf instead of BFD. %patch11 -p0 -b .largefile~ %patch12 -p0 -b .set-long-long~ %patch13 -p0 -b .upstream~ +%patch14 -p0 -b .linkonce-r-discard~ # We cannot run autotools as there is an exact requirement of autoconf-2.59. @@ -347,6 +350,11 @@ fi %endif # %{isnative} %changelog +* Thu Oct 30 2008 Jan Kratochvil 2.18.50.0.9-6 +- binutils-devel now requires zlib-devel (BZ 463101 comment 5). +- Fix complains on .gnu.linkonce.r relocations to their discarded + .gnu.linkonce.t counterparts. + * Mon Sep 22 2008 Jan Kratochvil 2.18.50.0.9-5 - Remove %%makeinstall to comply with the spu-binutils review (BZ 452211).