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.