-
Notifications
You must be signed in to change notification settings - Fork 180
Split-functions in large ARM64 binaries #104
Comments
Thanks for reporting. We should be inserting stubs in |
Hello @maksfb ! Sure, here it is:
BOLT-INFO: Starting stub-insertion pass |
The log shows that the pass creates stubs, but apparently it's missing some. I'll check if we can repro the scenario internally. If you can share the binary that would be helpful too (I understand if you cannot). |
I'm sorry, but it is not possible :( But if I comment-out this assert all the symbols are in placed in binary normally, but there will be something like |
@OpenStacksh As I know the problem is not resolver yet. Thank you! |
@OpenStacksh I believe the problem is solved and I will close the issue now. If you will have similar problem please open new issue |
Hello!
I've faced the problem when tried to use BOLT on big binaries using "-split-functions=2" option. The thing is that when BOLT splits function in to cold/hot sections it creates R_AARCH64_CONDBR19 relocation branch between some of them. This relocation could only be used if the relative distance between the branch place and its target address is smaller then 1Mb (2^20). But using the big binary (>25Mb) the distance is bigger, so we have triggered assert in RuntimeDyldELF.cpp file
case ELF::R_AARCH64_CONDBR19: { ... assert(isInt<21>(BranchImm)); ... }
Is there an easy way to fix this issue?
Thank you!
The text was updated successfully, but these errors were encountered: