[PATCH] D34035: [LLD][ELF] Introduce Thunk reuse compatibility

Peter Smith via llvm-commits llvm-commits at lists.llvm.org
Tue Jul 4 08:31:05 PDT 2017


Thank you, much appreciated, I had hoped people were just too busy.

Peter

On 4 July 2017 at 16:29, Rafael Avila de Espindola
<rafael.espindola at gmail.com> wrote:
> Peter Smith via Phabricator <reviews at reviews.llvm.org> writes:
>
>> peter.smith added a comment.
>>
>> Is there anything I can do to help get the Range Thunks patches looked at? To avoid pinging 11 separate patches I've listed all the reviews here and what the intention behind them is. I'm happy to restructure these in a different way if that would help?
>
> I am terribly sorry. I was busy with other stuff (including MC last
> week). I will try to review some of these today.
>
>> There are 11 patches to get to a full implementation.
>> These two don't need to touch anything outside of the Thunk implementation, they don't add any functionality, but do prepare some of the groundwork.
>> https://reviews.llvm.org/D34035 [LLD][ELF] Introduce Thunk reuse compatibility
>> https://reviews.llvm.org/D34037 [LLD][ELF] Allow multiple thunks to be added for a symbol.
>>
>> These two are the only significant changes outside of the Thunk implementation, for range thunks what I need to do is to be able to calculate addresses in order to check ranges. This is just one approach to get to that point, I'm happy to go for a different approach or help in any refactoring.
>> https://reviews.llvm.org/D34344 [LLD][ELF] Extract allocateHeaders() from assignAddresses()
>> https://reviews.llvm.org/D34345 [LLD][ELF] Reset any accumulated state before calculating addresses
>> https://reviews.llvm.org/D34688 [LLD][ELF] Add call to assignAddresses() before createThunks() [NFC]
>>
>> These patches apart from one small change to Writer.cpp to enable multiple passes in https://reviews.llvm.org/D34692 are all within the Thunk implementation. The design for range thunks is to use the address information to pre-create one or more ThunkSections per InputSectionDescription that we can use place Thunks in range of their callers. https://reviews.llvm.org/D34691 is enough for simple cases, https://reviews.llvm.org/D34692 deals with corner cases that can occur if you are unlucky.
>> https://reviews.llvm.org/D34689 [LLD][ELF] Pre-create ThunkSections at Target specific intervals
>> https://reviews.llvm.org/D34690 [LLD][ELF] Introduce target specific inBranchRange() function
>> https://reviews.llvm.org/D34691 [LLD][ELF] Introduce range extension thunks for ARM
>> https://reviews.llvm.org/D34692 [LLD][ELF] Add support for multiple passes to createThunks()
>>
>> I've separated out the test cases as they are by far the largest amount of changes. The majority need all the changes in https://reviews.llvm.org/D34692 to run successfully. I could extract some of these tests for 34691
>> https://reviews.llvm.org/D31665 [LLD][ELF] Add test cases for range extension thunks (no linkerscripts)
>> https://reviews.llvm.org/D31666 [LLD][ELF] Add test cases for range extension thunks using linker scripts
>>
>>
>> https://reviews.llvm.org/D34035


More information about the llvm-commits mailing list