aboutsummaryrefslogtreecommitdiff
path: root/tools
diff options
context:
space:
mode:
author_ov4 <ov4@ov4.org>2026-10-16 15:27:15 +0000
committer_ov4 <ov4@ov4.org>2026-10-16 15:27:15 +0000
commitc9ff1f3ca62d83afd6900c1527f115a46d7ad0df (patch)
tree4782848cc4fc2e5ce950c30d38603ef02a529bd2 /tools
parent0fdab23ba2c9d435de12ebf59c89c921a660a840 (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')
-rw-r--r--tools/driver/EmbeddedRunner.cc11
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.