bfd: Relocating the section contents
2.17.3.2 Relocating the section contents
........................................
The '_bfd_final_link' function should look through the 'link_order'
structures attached to each section of the output file. Each
'link_order' structure should either be handled specially, or it should
be passed to the function '_bfd_default_link_order' which will do the
right thing ('_bfd_default_link_order' is defined in 'linker.c').
For efficiency, a 'link_order' of type 'bfd_indirect_link_order'
whose associated section belongs to a BFD of the same format as the
output BFD must be handled specially. This type of 'link_order'
describes part of an output section in terms of a section belonging to
one of the input files. The '_bfd_final_link' function should read the
contents of the section and any associated relocs, apply the relocs to
the section contents, and write out the modified section contents. If
performing a relocatable link, the relocs themselves must also be
modified and written out.
The functions '_bfd_relocate_contents' and '_bfd_final_link_relocate'
provide some general support for performing the actual relocations,
notably overflow checking. Their arguments include information about
the symbol the relocation is against and a 'reloc_howto_type' argument
which describes the relocation to perform. These functions are defined
in 'reloc.c'.
The a.out function which handles reading, relocating, and writing
section contents is 'aout_link_input_section'. The actual relocation is
done in 'aout_link_input_section_std' and 'aout_link_input_section_ext'.