OSDN Git Service

2011-08-03 Tristan Gingold <gingold@adacore.com>
authorgingold <gingold>
Wed, 3 Aug 2011 08:12:04 +0000 (08:12 +0000)
committergingold <gingold>
Wed, 3 Aug 2011 08:12:04 +0000 (08:12 +0000)
* mach-o.c (bfd_mach_o_canonicalize_symtab): Handle no symbols case.
(bfd_mach_o_read_symtab_symbols): Return if no symbols.

bfd/ChangeLog
bfd/mach-o.c

index 9d25437..825487d 100644 (file)
@@ -1,3 +1,8 @@
+2011-08-03  Tristan Gingold  <gingold@adacore.com>
+
+       * 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  <macro@codesourcery.com>
 
        * elfxx-mips.c (check_4byte_branch): Remove function.
index fe196c7..069414a 100644 (file)
@@ -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));