Date
Wednesday, October 28, 2026
Name
No More ELF on Windows: Bringing an ORC/JITLink JIT to Native COFF � the ELF hack that ran on Windows, until LLVM 21 called our bluff
Session Type
Technical Talk
Abstract

How do you run a JIT on Windows when you've spent years avoiding native COFF? For a long time our answer was to lie to it: we appended -elf to the target triple so the JIT emitted ELF objects on Windows and rode LLVM's default DWARF .eh_frame unwinder for its own JIT'd frames. That held up for our use case, as long as an exception never had to cross into a native SEH-based frame. Then an LLVM upgrade forced the issue: the ORC EH-frame–registration API the hack depended on was deprecated, then removed, and the JIT stopped linking. So we finally did Windows for real. This talk is our field report on bringing an ORC/JITLink JIT to native COFF without adopting COFFPlatform, and what that cost us: registering .pdata unwind tables with the Windows runtime ourselves, pinning __ImageBase so RVAs don't overflow, and synthesizing far-call stubs for the external calls that land more than 2 GB away in separately-loaded host DLLs. If you embed LLVM's JIT and have been putting off Windows, or have wondered what COFFPlatform actually does for you, we hope this is a useful map of the minefield we crossed, and the small set of plugins that got us through it.

Location Name
California Ballroom