BFD
See the following documentation for more specific discussion of BFD.
The BFD libraries allow the linker to use the same routines to operate on
object files whatever the object file format. A different object file format can be
supported simply by creating a new BFD back end and adding it to the library.
To conserve runtime memory, however, the linker and associated tools are
usually configured to support only a subset of the object file formats available. You
can use
As with most implementations, BFD is a compromise between several conflicting
requirements. The major factor influencing BFD design was efficiency: any time
used converting between formats is time which would not have been spent had BFD
not been involved. This is partly offset by abstraction payback; since BFD
simplifies applications and back ends, more time and care may be spent optimizing
algorithms for a greater speed.
One minor artifact of the BFD solution which you should bear in mind is the
potential for information loss. There are two places where useful information can
be lost using the BFD mechanism: during conversion and during output. See