.rela.rela.dyn on ppc64

Alan Modra amodra@bigpond.net.au
Tue Aug 8 14:30:00 GMT 2006


When linking very large shared libs with --emit-relocs on PowerPC64, a
bug in the handling of relocations for long branch stubs will result in
a bogus .rela.rela.dyn section being created.  It also causes ld to warn
that an assertion failed.

	* elf64-ppc.c (ppc64_elf_build_stubs): Clear relbrlt reloc_count
	after stubs have been built.

Index: bfd/elf64-ppc.c
===================================================================
RCS file: /cvs/src/src/bfd/elf64-ppc.c,v
retrieving revision 1.241
diff -u -p -r1.241 elf64-ppc.c
--- bfd/elf64-ppc.c	23 Jun 2006 02:58:01 -0000	1.241
+++ bfd/elf64-ppc.c	8 Aug 2006 14:16:37 -0000
@@ -9561,6 +9561,9 @@ ppc64_elf_build_stubs (bfd_boolean emit_
   /* Build the stubs as directed by the stub hash table.  */
   bfd_hash_traverse (&htab->stub_hash_table, ppc_build_one_stub, info);
 
+  if (htab->relbrlt != NULL)
+    htab->relbrlt->reloc_count = 0;
+
   for (stub_sec = htab->stub_bfd->sections;
        stub_sec != NULL;
        stub_sec = stub_sec->next)

-- 
Alan Modra
IBM OzLabs - Linux Technology Centre



More information about the Binutils mailing list