File indexing completed on 2026-05-10 08:43:51
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013 #ifndef LLVM_EXECUTIONENGINE_ORC_DEBUGGERSUPPORTPLUGIN_H
0014 #define LLVM_EXECUTIONENGINE_ORC_DEBUGGERSUPPORTPLUGIN_H
0015
0016 #include "llvm/ExecutionEngine/Orc/Core.h"
0017 #include "llvm/ExecutionEngine/Orc/EPCDebugObjectRegistrar.h"
0018 #include "llvm/ExecutionEngine/Orc/ObjectLinkingLayer.h"
0019
0020 namespace llvm {
0021 namespace orc {
0022
0023
0024
0025
0026
0027
0028 class GDBJITDebugInfoRegistrationPlugin : public ObjectLinkingLayer::Plugin {
0029 public:
0030 class DebugSectionSynthesizer {
0031 public:
0032 virtual ~DebugSectionSynthesizer() = default;
0033 virtual Error startSynthesis() = 0;
0034 virtual Error completeSynthesisAndRegister() = 0;
0035 };
0036
0037 static Expected<std::unique_ptr<GDBJITDebugInfoRegistrationPlugin>>
0038 Create(ExecutionSession &ES, JITDylib &ProcessJD, const Triple &TT);
0039
0040 GDBJITDebugInfoRegistrationPlugin(ExecutorAddr RegisterActionAddr)
0041 : RegisterActionAddr(RegisterActionAddr) {}
0042
0043 Error notifyFailed(MaterializationResponsibility &MR) override;
0044 Error notifyRemovingResources(JITDylib &JD, ResourceKey K) override;
0045
0046 void notifyTransferringResources(JITDylib &JD, ResourceKey DstKey,
0047 ResourceKey SrcKey) override;
0048
0049 void modifyPassConfig(MaterializationResponsibility &MR,
0050 jitlink::LinkGraph &LG,
0051 jitlink::PassConfiguration &PassConfig) override;
0052
0053 private:
0054 void modifyPassConfigForMachO(MaterializationResponsibility &MR,
0055 jitlink::LinkGraph &LG,
0056 jitlink::PassConfiguration &PassConfig);
0057
0058 ExecutorAddr RegisterActionAddr;
0059 };
0060
0061 }
0062 }
0063
0064 #endif