This is the mail archive of the binutils@sourceware.org mailing list for the binutils project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

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


On Sat, May 7, 2011 at 1:10 AM, Alan Modra <amodra@gmail.com> wrote:
> 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.
>

Here is the updated patch.  OK to install?

Thanks.

-- 
H.J.
---
bfd/

2011-05-07  H.J. Lu  <hongjiu.lu@intel.com>

	PR ld/12730
	* elf.c (_bfd_elf_section_offset): Check SEC_ELF_REVERSE_COPY.

	* elflink.c (elf_link_input_bfd): Reverse copy .ctors/.dtors
	sections if needed.

	* section.c (SEC_ELF_REVERSE_COPY): New.
	* bfd-in2.h: Regenerated.

ld/testsuite/

2011-05-07  H.J. Lu  <hongjiu.lu@intel.com>

	PR ld/12730
	* ld-elf/elf.exp (array_tests): Add "pr12730".
	(array_tests_pie): New.
	(array_tests_static): Add -static for ""static init array mixed".
	Add "static pr12730".  Run array_tests_pie for Linux.

	* ld-elf/init-mixed.c (ctor1007): Renamed to ...
	(ctor1007a): This.
	(ctor1007b): New.
	(ctors1007): Remove ctor1007.  Add ctor1007b and ctor1007a.
	(dtor1007): Renamed to ...
	(dtor1007a): This.
	(dtor1007b): New.
	(dtors1007): Remove dtor1007.  Add dtor1007b and dtor1007a.
	(ctor65535): Renamed to ...
	(ctor65535a): This.
	(ctor65535b): New.
	(ctors65535): Remove ctor65535.  Add ctor65535b and ctor65535a.
	(dtor65535): Renamed to ...
	(dtor65535a): This.
	(dtor65535b): New.
	(dtors65535): Remove dtor65535.  Add dtor65535b and dtor65535a.

	* ld-elf/pr12730.cc: New.
	* ld-elf/pr12730.out: Likewise.

Attachment: binutils-pr12730-4.patch
Description: Text document


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]