PR 7023, sparc ld memory exhausted

Alan Modra amodra@bigpond.net.au
Wed Nov 12 22:05:00 GMT 2008


Apparently some versions of the Sun assembler generate zero size
.symtab with a sh_info of one.  This leads to GNU ld trying to
malloc(-1).  I believe older versions of GNU ld would do exactly the
same so this must be a new problem with Sun as.  Unless shown
otherwise, I don't think this is worth adding a workaround.

	PR 7023
	* elf.c (bfd_section_from_shdr <SHT_SYMTAB>): Fail on invalid sh_info.

Index: bfd/elf.c
===================================================================
RCS file: /cvs/src/src/bfd/elf.c,v
retrieving revision 1.468
diff -u -p -r1.468 elf.c
--- bfd/elf.c	11 Nov 2008 04:26:13 -0000	1.468
+++ bfd/elf.c	12 Nov 2008 21:47:28 -0000
@@ -1608,6 +1608,8 @@ bfd_section_from_shdr (bfd *abfd, unsign
 
       if (hdr->sh_entsize != bed->s->sizeof_sym)
 	return FALSE;
+      if (hdr->sh_info * hdr->sh_entsize > hdr->sh_size)
+	return FALSE;
       BFD_ASSERT (elf_onesymtab (abfd) == 0);
       elf_onesymtab (abfd) = shindex;
       elf_tdata (abfd)->symtab_hdr = *hdr;

-- 
Alan Modra
Australia Development Lab, IBM



More information about the Binutils mailing list