Fix stale memory references.
	* elfread.c (elf_symfile_read): Replace xmalloc by bfd_alloc, drop
	xfree, new comment.
This commit is contained in:
Jan Kratochvil 2010-11-19 22:30:47 +00:00
parent e552509bcb
commit 3f1eff0a2c
2 changed files with 14 additions and 2 deletions

View File

@ -1,3 +1,9 @@
2010-11-19 Jan Kratochvil <jan.kratochvil@redhat.com>
Fix stale memory references.
* elfread.c (elf_symfile_read): Replace xmalloc by bfd_alloc, drop
xfree, new comment.
2010-11-19 Jan Kratochvil <jan.kratochvil@redhat.com>
Tom Tromey <tromey@redhat.com>

View File

@ -790,8 +790,14 @@ elf_symfile_read (struct objfile *objfile, int symfile_flags)
if (storage_needed > 0)
{
dyn_symbol_table = (asymbol **) xmalloc (storage_needed);
make_cleanup (xfree, dyn_symbol_table);
/* Memory gets permanently referenced from ABFD after
bfd_get_synthetic_symtab so it must not get freed before ABFD gets.
It happens only in the case when elf_slurp_reloc_table sees
asection->relocation NULL. Determining which section is asection is
done by _bfd_elf_get_synthetic_symtab which is all a bfd
implementation detail, though. */
dyn_symbol_table = bfd_alloc (abfd, storage_needed);
dynsymcount = bfd_canonicalize_dynamic_symtab (objfile->obfd,
dyn_symbol_table);