bfd/
authorTristan Gingold <gingold@adacore.com>
Wed, 4 Jan 2012 10:14:25 +0000 (10:14 +0000)
committerTristan Gingold <gingold@adacore.com>
Wed, 4 Jan 2012 10:14:25 +0000 (10:14 +0000)
2012-01-04  Tristan Gingold  <gingold@adacore.com>

* mach-o.c (bfd_mach_o_get_synthetic_symtab): Add comments.

bfd/ChangeLog
bfd/mach-o.c

index e3d2a4882b87ad7717761bbb4cec571ee91a69bc..4e440ebfb6df198c242cb2b2c13de4dbe824df64 100644 (file)
@@ -1,3 +1,7 @@
+2012-01-04  Tristan Gingold  <gingold@adacore.com>
+
+       * mach-o.c (bfd_mach_o_get_synthetic_symtab): Add comments.
+
 2012-01-04  Tristan Gingold  <gingold@adacore.com>
 
        * mach-o.h: Reindent header.
index 57c37d88dec007c9f1744c6c163c3481bdd78eee..ddc8944feefe97342541635d135bc20f369d34e6 100644 (file)
@@ -651,6 +651,8 @@ bfd_mach_o_canonicalize_symtab (bfd *abfd, asymbol **alocation)
   return nsyms;
 }
 
+/* Create synthetic symbols for indirect symbols.  */
+
 long
 bfd_mach_o_get_synthetic_symtab (bfd *abfd,
                                  long symcount ATTRIBUTE_UNUSED,
@@ -670,19 +672,23 @@ bfd_mach_o_get_synthetic_symtab (bfd *abfd,
 
   *ret = NULL;
 
+  /* Stop now if no symbols or no indirect symbols.  */
   if (dysymtab == NULL || symtab == NULL || symtab->symbols == NULL)
     return 0;
 
   if (dysymtab->nindirectsyms == 0)
     return 0;
 
+  /* We need to allocate a bfd symbol for every indirect symbol and to
+     allocate the memory for its name.  */
   count = dysymtab->nindirectsyms;
   size = count * sizeof (asymbol) + 1;
 
   for (j = 0; j < count; j++)
     {
       unsigned int isym = dysymtab->indirect_syms[j];
-              
+
+      /* Some indirect symbols are anonymous.  */
       if (isym < symtab->nsyms && symtab->symbols[isym].symbol.name)
         size += strlen (symtab->symbols[isym].symbol.name) + sizeof ("$stub");
     }
@@ -707,6 +713,7 @@ bfd_mach_o_get_synthetic_symtab (bfd *abfd,
         case BFD_MACH_O_S_NON_LAZY_SYMBOL_POINTERS:
         case BFD_MACH_O_S_LAZY_SYMBOL_POINTERS:
         case BFD_MACH_O_S_SYMBOL_STUBS:
+          /* Only these sections have indirect symbols.  */
           first = sec->reserved1;
           last = first + bfd_mach_o_section_get_nbr_indirect (abfd, sec);
           addr = sec->addr;