BFD maintains relocations in much the same way it maintains
symbols: they are left alone until required, then read in
en-masse and translated into an internal form. A common
routine bfd_perform_relocation
acts upon the
canonical form to do the fixup.
Relocations are maintained on a per section basis, while symbols are maintained on a per BFD basis.
All that a back end has to do to fit the BFD interface is to create
a struct reloc_cache_entry
for each relocation
in a particular section, and fill in the right bits of the structures.