Linker reordering of tail calling sections
There are some situations when you might want the linker to reorder tail calling sections.
A tail calling section is a section that contains a branch instruction at the end of the
section. If the branch instruction has a relocation that targets a function at the start of
another section, the linker can place the tail calling section immediately before the called
section. The linker can then optimize the branch instruction at the end of the tail calling
section to a NOP
instruction.
To take advantage of this behavior, use the command-line option
--tailreorder
to move tail calling sections immediately before their
target.
Use the --info=tailreorder
command-line option to display information
about any tail call optimizations performed by the linker.