5db
How it works: an outline of BFD
As different information from the object files is required, BFD reads from
different sections of the file and processes them. For example, a very common
operation for the linker is processing symbol tables. Each BFD back end provides a
routine for converting between the object file’s representation of symbols and
an internal canonical format. When the linker asks for the symbol table of an
object file, it calls through a memory pointer to the routine from the relevant
BFD back end which reads and converts the table into a canonical form. The
linker then operates upon the canonical form. When the link is finished and the
linker writes the output file’s symbol table, another BFD back end routine is
called to take the newly created symbol table and convert it into the chosen output
format.