This is the mail archive of the binutils@sources.redhat.com 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]

Bad ELF reloc generation fixed


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;
    

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