bfd.info: Writing Symbols

Go forward to Mini Symbols
Go backward to Reading Symbols
Go up to Symbols
Go to the top op bfd

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.