Next: , Previous: Symbols, Up: Symbols


2.7.1 Reading symbols

There are two stages to reading a symbol table from a BFD: allocating storage, and the actual reading process. This is an excerpt from an application which reads the symbol table:

              long storage_needed;
              asymbol **symbol_table;
              long number_of_symbols;
              long i;
     
              storage_needed = bfd_get_symtab_upper_bound (abfd);
     
              if (storage_needed < 0)
                FAIL
     
              if (storage_needed == 0)
                return;
     
              symbol_table = xmalloc (storage_needed);
                ...
              number_of_symbols =
                 bfd_canonicalize_symtab (abfd, symbol_table);
     
              if (number_of_symbols < 0)
                FAIL
     
              for (i = 0; i < number_of_symbols; i++)
                process_symbol (symbol_table[i]);

All storage for the symbols themselves is in an objalloc connected to the BFD; it is freed when the BFD is closed.