Author: Vassil Vassilev Date: 2023-04-18T18:33:52Z New Revision: 310ee08d5d45d9388333842a79bf4cef761afddf
URL: https://github.com/llvm/llvm-project/commit/310ee08d5d45d9388333842a79bf4cef761afddf DIFF: https://github.com/llvm/llvm-project/commit/310ee08d5d45d9388333842a79bf4cef761afddf.diff LOG: Reland "[clang-repl] Enable debugging of JIT-ed code." Original commit message: " [clang-repl] Enable debugging of JIT-ed code. This change follows llvm/llvm-project@21b5ebd and makes use of the jitlink infrastructure. In order to use this feature inside lldb one needs to run the lldb command: settings set plugin.jit-loader.gdb.enable on This works currently only on Darwin since jitlink is not a default ELF/x86-64 backend yet. Differential revision: https://reviews.llvm.org/D148481 " This patch reverts commit e64fbf2cca8c4763a058ba59a48ab8e4b8193028 and adds the missing library dependencies which caused the initial failure. Added: Modified: clang/lib/Interpreter/CMakeLists.txt clang/lib/Interpreter/IncrementalExecutor.cpp Removed: ################################################################################ diff --git a/clang/lib/Interpreter/CMakeLists.txt b/clang/lib/Interpreter/CMakeLists.txt index c9236248dccb2..721864c0cc1ea 100644 --- a/clang/lib/Interpreter/CMakeLists.txt +++ b/clang/lib/Interpreter/CMakeLists.txt @@ -3,6 +3,8 @@ set(LLVM_LINK_COMPONENTS native Option OrcJit + OrcShared + OrcTargetProcess Support Target TargetParser diff --git a/clang/lib/Interpreter/IncrementalExecutor.cpp b/clang/lib/Interpreter/IncrementalExecutor.cpp index fdf12dd214148..3f8d60630de41 100644 --- a/clang/lib/Interpreter/IncrementalExecutor.cpp +++ b/clang/lib/Interpreter/IncrementalExecutor.cpp @@ -21,11 +21,18 @@ #include "llvm/ExecutionEngine/Orc/IRCompileLayer.h" #include "llvm/ExecutionEngine/Orc/LLJIT.h" #include "llvm/ExecutionEngine/Orc/RTDyldObjectLinkingLayer.h" +#include "llvm/ExecutionEngine/Orc/TargetProcess/JITLoaderGDB.h" #include "llvm/ExecutionEngine/SectionMemoryManager.h" #include "llvm/IR/Module.h" #include "llvm/Support/ManagedStatic.h" #include "llvm/Support/TargetSelect.h" +// Force linking some of the runtimes that helps attaching to a debugger. +LLVM_ATTRIBUTE_USED void linkComponents() { + llvm::errs() << (void *)&llvm_orc_registerJITLoaderGDBWrapper + << (void *)&llvm_orc_registerJITLoaderGDBAllocAction; +} + namespace clang { IncrementalExecutor::IncrementalExecutor(llvm::orc::ThreadSafeContext &TSC, @@ -37,7 +44,12 @@ IncrementalExecutor::IncrementalExecutor(llvm::orc::ThreadSafeContext &TSC, auto JTMB = JITTargetMachineBuilder(TI.getTriple()); JTMB.addFeatures(TI.getTargetOpts().Features); - if (auto JitOrErr = LLJITBuilder().setJITTargetMachineBuilder(JTMB).create()) + LLJITBuilder Builder; + Builder.setJITTargetMachineBuilder(JTMB); + // Enable debugging of JIT'd code (only works on JITLink for ELF and MachO). + Builder.setEnableDebuggerSupport(true); + + if (auto JitOrErr = Builder.create()) Jit = std::move(*JitOrErr); else { Err = JitOrErr.takeError(); _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits