mirror of
https://github.com/llvm/llvm-project.git
synced 2025-04-29 11:16:07 +00:00

This patch introduces functionality used by BOLT when re-linking the final binary. It adds to MemoryManager a new member function allowStubAllocation to control whether this MemoryManager supports increasing code size with stubs or not. Since BOLT can rewrite some files in-place, it needs to avoid stub insertion done by the linker. This patch also introduces allowsZeroSymbols to the JITSymbolResolver class, enabling us to finish a link successfully even when some symbols resolve to the value zero. When rewriting a binary, sometimes we do need to resolve a target to zero in case the input binary calls address zero and we want to be bug compatible. We also expose reassignSectionAddress as it is used by BOLT. Reviewed By: lhames Differential Revision: https://reviews.llvm.org/D97898