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
You can take advantage of this behavior by using the command-line
--tailreorder to move tail calling sections
immediately before their target.
--info=tailreorder command-line option
to display information about any tail call optimizations performed
by the linker.
The linker does not reorder tail calling functions in AArch64 state.