[ORC] Update ELF debugger support plugin to use AllocActions #167866
+108
−79
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
The
DebugObjectManagerPluginimplements debugger support for ELF platforms with the GDB JIT Interface. It emits a separate debug object allocation in addition to the LinkGraph's own allocation. This used to happen in the plugin'snotifyEmitted()callback, i.e. after the LinkGraph's allocation was finalized. In the meantime, it had to block finalization of the corresponding materialization unit to make sure that the debugger can register the object before the code runs.This patch switches the plugin to use an allocation action instead. We can remove the
notifyEmitted()hook and implement all steps as JITLink passes:PostAllocationPassesPreFixupPasses, i.e. before the LinkGraph's allocation is finalized. This is great, because it can run in parallel to the LinkGraph's link phase 3.PostFixupPassesand run the GDB JIT Interface registration in anAllocActionwhen finalizing the LinkGraph's allocation.Main benefits are:
This PR implements the basic switch. I want to add some more improvements to the plugin in a follow-up (mostly NFC then).