aboutsummaryrefslogtreecommitdiff
path: root/tools
diff options
context:
space:
mode:
author_ov4 <ov4@ov4.org>2026-10-16 14:09:08 +0000
committer_ov4 <ov4@ov4.org>2026-10-16 14:09:08 +0000
commit3001dfeb97adebf0cb326d9aa664098e0aced5b5 (patch)
treee29122d246e8805aa54267b05c0f6071d3400e32 /tools
parente44bdc6a2a0cf624b08046ecc7e5c5d5d9d2d66c (diff)
fix(jit): always emit DWARF unwind frames on macOS
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Diffstat (limited to 'tools')
-rw-r--r--tools/driver/EmbeddedRunner.cc7
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) {