GNU Info

Info Node: (bfd.info)Writing Symbols

(bfd.info)Writing Symbols


Next: Mini Symbols Prev: Reading Symbols Up: Symbols
Enter node , (file) or (file)node

Writing symbols
---------------

   Writing of a symbol table is automatic when a BFD open for writing
is closed. The application attaches a vector of pointers to pointers to
symbols to the BFD being written, and fills in the symbol count. The
close and cleanup code reads through the table provided and performs
all the necessary operations. The BFD output code must always be
provided with an "owned" symbol: one which has come from another BFD,
or one which has been created using `bfd_make_empty_symbol'.  Here is an
example showing the creation of a symbol table with only one element:

            #include "bfd.h"
            main()
            {
              bfd *abfd;
              asymbol *ptrs[2];
              asymbol *new;
     
              abfd = bfd_openw("foo","a.out-sunos-big");
              bfd_set_format(abfd, bfd_object);
              new = bfd_make_empty_symbol(abfd);
              new->name = "dummy_symbol";
              new->section = bfd_make_section_old_way(abfd, ".text");
              new->flags = BSF_GLOBAL;
              new->value = 0x12345;
     
              ptrs[0] = new;
              ptrs[1] = (asymbol *)0;
     
              bfd_set_symtab(abfd, ptrs, 1);
              bfd_close(abfd);
            }
     
            ./makesym
            nm foo
            00012345 A dummy_symbol

   Many formats cannot represent arbitary symbol information; for
instance, the `a.out' object format does not allow an arbitary number
of sections. A symbol pointing to a section which is not one  of
`.text', `.data' or `.bss' cannot be described.


automatically generated by info2www version 1.2.2.9