This is the mail archive of the
binutils@sources.redhat.com
mailing list for the binutils project.
Bad ELF reloc generation fixed
- To: binutils at sourceware dot cygnus dot com
- Subject: Bad ELF reloc generation fixed
- From: Nick Clifton <nickc at cygnus dot com>
- Date: Thu, 27 Jul 2000 15:39:01 -0700
Hi Guys,
I have checked in the patch below to fix a problem with some of the
MIPS toolchains whereby they could generate bad reloc information
when performing an incremental link.
In fact what was happening was that these toolchains were generating
both .rel and .rela sections, but only the contents of the .rel
section are actually initialised. Fortuitously under Linux, the
other section's contents were set to zero, but under Solaris this
does not happen. All that the patch does is to make this zero
initialisation explicit.
Cheers
Nick
2000-07-27 Nick Clifton <nickc@cygnus.com>
* elflink.h (elf_link_size_reloc_section): Zero the section's
allocated contents.
Index: bfd/elflink.h
===================================================================
RCS file: /cvs/src//src/bfd/elflink.h,v
retrieving revision 1.67
diff -p -r1.67 elflink.h
*** elflink.h 2000/07/21 03:58:32 1.67
--- elflink.h 2000/07/27 22:34:37
*************** elf_link_size_reloc_section (abfd, rel_h
*** 4013,4020 ****
rel_hdr->sh_size = rel_hdr->sh_entsize * reloc_count;
/* The contents field must last into write_object_contents, so we
! allocate it with bfd_alloc rather than malloc. */
! rel_hdr->contents = (PTR) bfd_alloc (abfd, rel_hdr->sh_size);
if (rel_hdr->contents == NULL && rel_hdr->sh_size != 0)
return false;
--- 4013,4022 ----
rel_hdr->sh_size = rel_hdr->sh_entsize * reloc_count;
/* The contents field must last into write_object_contents, so we
! allocate it with bfd_alloc rather than malloc. Also since we
! cannot be sure that the contents will actually be filled in,
! we zero the allocated space. */
! rel_hdr->contents = (PTR) bfd_zalloc (abfd, rel_hdr->sh_size);
if (rel_hdr->contents == NULL && rel_hdr->sh_size != 0)
return false;