[llvm-dev] [RFC] [ARM] Execute only support

David Chisnall via llvm-dev llvm-dev at lists.llvm.org
Sat Dec 5 02:16:42 PST 2015


On 4 Dec 2015, at 17:11, Tim Northover via llvm-dev <llvm-dev at lists.llvm.org> wrote:
> 
> Another option is moving litpools to one of the data sections (as they
> are in AArch64, for example). I'm not sure exactly where the crossover
> is, but I'd be a little surprised if movw/movt/vmov was more efficient
> for 128-bit constants.

Another option, with a little bit of linker support, would be to add an invariant that the literal pools are in a page that will be mapped at a fixed offset from the code.  ARMv8 is designed to support large immediate offsets to allow execute-only mappings, but materialising a constant of a fixed power of two is cheap on ARMv7 and loading literals from pc - 64KB (for example) would allow binaries to be mapped in alternating superpages of execute-only and read-only chunks.

David



More information about the llvm-dev mailing list