3.6.4 Generation of position independent to absolute veneers

Calling from position independent code to absolute code requires a veneer.

The normal call instruction encodes the address of the target as an offset from the calling address. When calling from position independent (PI) code to absolute code the offset cannot be calculated at link time, so the linker must insert a long-branch veneer.
The generation of PI to absolute veneers can be controlled using the --piveneer option, that is set by default. When this option is turned off using --no_piveneer, the linker generates an error when a call from PI code to absolute code is detected.
Related concepts
3.6.1 What is a veneer?
Related reference
9.79 --max_veneer_passes=value
9.89 --piveneer, --no_piveneer
Non-ConfidentialPDF file icon PDF versionARM DUI0377G
Copyright © 2007, 2008, 2011, 2012, 2014, 2015 ARM. All rights reserved.