diff options
| author | _ov4 <ov4@ov4.org> | 2026-10-16 14:09:08 +0000 |
|---|---|---|
| committer | _ov4 <ov4@ov4.org> | 2026-10-16 14:09:08 +0000 |
| commit | 3001dfeb97adebf0cb326d9aa664098e0aced5b5 (patch) | |
| tree | e29122d246e8805aa54267b05c0f6071d3400e32 /tools/driver/EmbeddedRunner.cc | |
| parent | e44bdc6a2a0cf624b08046ecc7e5c5d5d9d2d66c (diff) | |
fix(jit): always emit DWARF unwind frames on macOS
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Diffstat (limited to 'tools/driver/EmbeddedRunner.cc')
| -rw-r--r-- | tools/driver/EmbeddedRunner.cc | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/tools/driver/EmbeddedRunner.cc b/tools/driver/EmbeddedRunner.cc index cad1f84..05890ac 100644 --- a/tools/driver/EmbeddedRunner.cc +++ b/tools/driver/EmbeddedRunner.cc @@ -7,6 +7,7 @@ #include "llvm/Support/TargetSelect.h" #include "llvm/TargetParser/Host.h" #include "llvm/TargetParser/Triple.h" +#include "llvm/Target/TargetOptions.h" #include "llvm/Transforms/Utils/Cloning.h" #include <cstdio> #include <cstdlib> @@ -66,6 +67,12 @@ int runEmbedded(const cps::CodeGen &CG) { llvm::EngineBuilder Builder(std::move(Module)); Builder.setEngineKind(llvm::EngineKind::JIT); Builder.setErrorStr(&Error); +#ifdef __APPLE__ + // MCJIT registers DWARF frames, not Darwin's compact unwind records. + llvm::TargetOptions Options; + Options.MCOptions.EmitDwarfUnwind = llvm::EmitDwarfUnwindType::Always; + Builder.setTargetOptions(Options); +#endif Builder.setMCJITMemoryManager(std::make_unique<llvm::SectionMemoryManager>()); std::unique_ptr<llvm::ExecutionEngine> Engine(Builder.create()); if (!Engine) { |
