diff options
| author | _ov4 <ov4@ov4.org> | 2026-10-16 15:27:15 +0000 |
|---|---|---|
| committer | _ov4 <ov4@ov4.org> | 2026-10-16 15:27:15 +0000 |
| commit | c9ff1f3ca62d83afd6900c1527f115a46d7ad0df (patch) | |
| tree | 4782848cc4fc2e5ce950c30d38603ef02a529bd2 /tools/driver/EmbeddedRunner.cc | |
| parent | 0fdab23ba2c9d435de12ebf59c89c921a660a840 (diff) | |
fix(jit): set COFF auto-claim flags on custom ObjectLinkingLayer
Windows execution awaits CI verification.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Diffstat (limited to 'tools/driver/EmbeddedRunner.cc')
| -rw-r--r-- | tools/driver/EmbeddedRunner.cc | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/tools/driver/EmbeddedRunner.cc b/tools/driver/EmbeddedRunner.cc index cc69849..eb29bac 100644 --- a/tools/driver/EmbeddedRunner.cc +++ b/tools/driver/EmbeddedRunner.cc @@ -354,6 +354,17 @@ int runEmbedded(const cps::CodeGen &CG) { } std::unique_ptr<llvm::orc::LLJIT> J = std::move(*JITOrErr); + // LLJIT's default layer sets these for COFF; our custom JITLink layer + // must do the same or IR-added modules report Unexpected definitions + // for backend-added symbols like __ImageBase. + if (J->getTargetTriple().isOSBinFormatCOFF()) { + if (auto *COFFObjLayer = llvm::dyn_cast<llvm::orc::ObjectLinkingLayer>( + &J->getObjLinkingLayer())) { + COFFObjLayer->setOverrideObjectFlagsWithResponsibilityFlags(true); + COFFObjLayer->setAutoClaimResponsibilityForObjectSymbols(true); + } + } + #if defined(_WIN32) && defined(__x86_64__) // Register MinGW SEH tables through JITLink; failures surface as link // errors below and prevent entry to JIT code. |
