PATCH: PR ld/12730: regression] crash when allocating in a static constructor

Alan Modra amodra@gmail.com
Sat May 7 08:11:00 GMT 2011


On Fri, May 06, 2011 at 09:16:20AM -0700, H.J. Lu wrote:
> How about this patch?

Much better, thanks.  But,

> 	* elf.c (_bfd_elf_section_reloc_offset): New.

why not put your changes in _bfd_elf_section_offset?

> 	* elf64-x86-64.c (elf_x86_64_relocate_section): Call
> 	_bfd_elf_section_reloc_offset instead of
> 	_bfd_elf_section_offset.
> 	* elfxx-ia64.c (elfNN_ia64_install_dyn_reloc): Likewise.

The world is more than just Intel..  Every other ELF target will need
the same as you've done for x86_64 and ia64, and it would be better to
reverse relocs even for REL targets just in case you have a reloc
against a global sym.

> +	  /* We need to reverse-copy input .ctors/.dtors sections if
> +	     they are placed in .init_array/.finit_array for output.  */
> +	  if (o->size > address_size
> +	      && ((strcmp (o->name, ".ctors") == 0

strncmp (o->name, ".ctors", 6) == 0
&& (o->name[6] == 0 || o->name[6] == '.')

Ditto for dtors, or explain to me why not.  Seems to me that .ctors.nn
section could possibly have more than one constructor.

-- 
Alan Modra
Australia Development Lab, IBM



More information about the Binutils mailing list