From b99d18333dd47aa5750a26999e683480f16fb1d4 Mon Sep 17 00:00:00 2001 From: Alan Modra Date: Wed, 27 Mar 2002 00:16:54 +0000 Subject: [PATCH] * elf.c (_bfd_elf_get_symtab_upper_bound): Leave space for terminating NULL if empty symbol table. (_bfd_elf_get_dynamic_symtab_upper_bound): Likewise. --- bfd/ChangeLog | 6 ++++++ bfd/elf.c | 8 ++++++-- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/bfd/ChangeLog b/bfd/ChangeLog index b28e9780d7..c32ee17d48 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,3 +1,9 @@ +2002-03-27 Gregory Steuck + + * elf.c (_bfd_elf_get_symtab_upper_bound): Leave space for + terminating NULL if empty symbol table. + (_bfd_elf_get_dynamic_symtab_upper_bound): Likewise. + 2002-03-26 H.J. Lu (hjl@gnu.org) * elflink.h (elf_link_input_bfd): Revert the last change since diff --git a/bfd/elf.c b/bfd/elf.c index 020771bcbc..3cc0dd5f18 100644 --- a/bfd/elf.c +++ b/bfd/elf.c @@ -5113,7 +5113,9 @@ _bfd_elf_get_symtab_upper_bound (abfd) Elf_Internal_Shdr *hdr = &elf_tdata (abfd)->symtab_hdr; symcount = hdr->sh_size / get_elf_backend_data (abfd)->s->sizeof_sym; - symtab_size = (symcount - 1 + 1) * (sizeof (asymbol *)); + symtab_size = (symcount + 1) * (sizeof (asymbol *)); + if (symcount > 0) + symtab_size -= sizeof (asymbol *); return symtab_size; } @@ -5133,7 +5135,9 @@ _bfd_elf_get_dynamic_symtab_upper_bound (abfd) } symcount = hdr->sh_size / get_elf_backend_data (abfd)->s->sizeof_sym; - symtab_size = (symcount - 1 + 1) * (sizeof (asymbol *)); + symtab_size = (symcount + 1) * (sizeof (asymbol *)); + if (symcount > 0) + symtab_size -= sizeof (asymbol *); return symtab_size; } -- 2.34.1