From 092d27ff4797e721d10b5de0394a2725ff8a966e Mon Sep 17 00:00:00 2001 From: Tristan Gingold Date: Wed, 3 Aug 2011 08:12:07 +0000 Subject: [PATCH] 2011-08-03 Tristan Gingold * mach-o.c (bfd_mach_o_canonicalize_symtab): Handle no symbols case. (bfd_mach_o_read_symtab_symbols): Return if no symbols. --- bfd/ChangeLog | 5 +++++ bfd/mach-o.c | 14 ++++++++++++-- 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/bfd/ChangeLog b/bfd/ChangeLog index 9d25437136..825487dbcc 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,3 +1,8 @@ +2011-08-03 Tristan Gingold + + * mach-o.c (bfd_mach_o_canonicalize_symtab): Handle no symbols case. + (bfd_mach_o_read_symtab_symbols): Return if no symbols. + 2011-08-02 Maciej W. Rozycki * elfxx-mips.c (check_4byte_branch): Remove function. diff --git a/bfd/mach-o.c b/bfd/mach-o.c index fe196c77b1..069414a665 100644 --- a/bfd/mach-o.c +++ b/bfd/mach-o.c @@ -376,6 +376,13 @@ bfd_mach_o_canonicalize_symtab (bfd *abfd, asymbol **alocation) if (nsyms < 0) return nsyms; + if (nsyms == 0) + { + /* Do not try to read symbols if there are none. */ + alocation[0] = NULL; + return 0; + } + if (bfd_mach_o_read_symtab_symbols (abfd) != 0) { (*_bfd_error_handler) (_("bfd_mach_o_canonicalize_symtab: unable to load symbols")); @@ -1830,8 +1837,11 @@ bfd_mach_o_read_symtab_symbols (bfd *abfd) unsigned long i; int ret; - if (sym->symbols) - return 0; + if (sym == NULL || sym->symbols) + { + /* Return now if there are no symbols or if already loaded. */ + return 0; + } sym->symbols = bfd_alloc (abfd, sym->nsyms * sizeof (bfd_mach_o_asymbol));