06.02.2013 Views

ARM Compiler toolchain Using the Linker - ARM Information Center

ARM Compiler toolchain Using the Linker - ARM Information Center

ARM Compiler toolchain Using the Linker - ARM Information Center

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

5.16 About reordering of tail calling sections<br />

5.16.1 See also<br />

<strong>Using</strong> linker optimizations<br />

A tail calling section is a section that contains a branch instruction at <strong>the</strong> end of <strong>the</strong> section. If<br />

<strong>the</strong> branch instruction has a relocation that targets a function at <strong>the</strong> start of ano<strong>the</strong>r section, <strong>the</strong><br />

linker can place <strong>the</strong> tail calling section immediately before <strong>the</strong> called section. The linker can<br />

<strong>the</strong>n optimize <strong>the</strong> branch instruction at <strong>the</strong> end of <strong>the</strong> tail calling section to a NOP instruction.<br />

You can take advantage of this behavior by using <strong>the</strong> command-line option --tailreorder to<br />

move tail calling sections immediately before <strong>the</strong>ir target.<br />

Use <strong>the</strong> --info=tailreorder command-line option to display information about any tail call<br />

optimizations performed by <strong>the</strong> linker.<br />

Concepts<br />

• Veneer types on page 4-28<br />

• Handling branches that optimize to a NOP on page 5-21<br />

• Restrictions on reordering of tail calling sections on page 5-23.<br />

Reference<br />

<strong>Linker</strong> Reference:<br />

• --info=topic[,topic,...] on page 2-80<br />

• --tailreorder, --no_tailreorder on page 2-171.<br />

<strong>ARM</strong> DUI 0474C Copyright © 2010-2011 <strong>ARM</strong>. All rights reserved. 5-22<br />

ID080411 Non-Confidential

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!