-
Notifications
You must be signed in to change notification settings - Fork 10.9k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[lld][ARM] support absolute thunks for Armv4T Thumb and interworking
changes: - BLX: The Arm architecture versions that support the branch and link instruction (BLX), can rewrite BLs in place when a state change from Arm<->Thumb is required. Armv4T does not have BLX and so needs thunks for state changes. - v4T Thumb long branches needed their own thunk. We could have used the v6M implementation, but v6M doesn't have Arm state and must resolve to rather inefficient stack reshuffling. We also can't reuse v7 thumb thunks as they use MOVV/MOVT, which wasn't available yet for v4T. - Remove the `lack of BLX' warning. LLVM only supports Arm Architecture versions upwards of v4, which we now all support in LLD. - renamed existing thunks to better reflect their use: ARMV5ABSLongThunk -> ARMV5LongLdrPcThunk, ARMV5PILongThunk -> ARMV4PILongThunk - removed isCompatibleWith method from ARMV5ABSLongThunk and ARMV5PILongThunk, as they were identical to the ARMThunk parent class implementation. Support for (efficient) position independent thunks for v4T will be added in a follow-up patch, including possible related thunk renaming and code comment cleanup. Reviewed By: MaskRay, peter.smith Differential Revision: https://reviews.llvm.org/D139888
- Loading branch information
Showing
10 changed files
with
412 additions
and
122 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.