HomePhabricator

Add Thunk support framework for ARM and Mips

Authored by peter.smith on Jul 8 2016, 4:13 AM.

Description

Add Thunk support framework for ARM and Mips

Generalise the Mips LA25 Thunk code and implement ARM and Thumb
interworking Thunks.

- Introduce a new module Thunks.cpp to store the Target Specific Thunk
  implementations.
- DefinedRegular and Shared have a ThunkData field to record Thunk.
- A Target can have more than one type of Thunk.
- Support PC-relative calls to Thunks.
- Support Thunks to PLT entries.
- Existing Mips LA25 Thunk code integrated.
- Support for ARMv7A interworking Thunks.

Limitations:
- Only one Thunk per SymbolBody, this is sufficient for all currently
  implemented Thunks.
- ARM thunks assume presence of V6T2 MOVT and MOVW instructions.

Differential revision: http://reviews.llvm.org/D21891

llvm-svn: 274836

Details

Committed
peter.smithJul 8 2016, 4:13 AM
Parents
rG67d582169566: [ASTMatchers] Add missing forEachArgumentWithParam() to code sample
Branches
Unknown
Tags
Unknown