[llvm-dev] LLJit, Windows, exported symbols and COFFObjectFile

David Blaikie via llvm-dev llvm-dev at lists.llvm.org
Sat Oct 12 17:32:23 PDT 2019


+Lang in case he's got some thoughts here. I know he's working
predominantly in MachO, so some non-MachO object file issues might linger a
little.

On Sat, Oct 12, 2019 at 8:07 AM Janus Lynggaard Thorborg via llvm-dev <
llvm-dev at lists.llvm.org> wrote:

> Hi!
>
> So after seeing the great tutorial on the new LLJit by Lang Hames, I went
> ahead and converted my llvm jitter. I much prefer this new API, btw.
>
> It's starting to work well, except on Windows. Any extern "C" exported
> symbol leads to assertions about mismatching symbol flags. Tracing through
> the inconsistency, it seems JITSymbolFlags::fromObjectSymbol returns a
> different result than what the frontend (?) expects.
>
> Namely, exported symbols in COFFObjectFiles are flagged with SF_Global,
> not SF_Exported. fromObjectSymbol ignores that flag. Previously I had this
> working with varying levels of success by flagging jit symbols as exported
> if SF_Global exists (or alternatively have COFFObjectFile::getSymbolFlags
> flag both SF_Global and SF_Exported).
>
> But this breaks in other ways....
>
> Looking at git blame, I can see I'm not the first one to try this hack
> (?), so I wanted to ask whether there are any workarounds or planned work
> to get the LLJit working on Windows?
>
> I've attached an example llvm module that breaks.
> Additionally, it seems lljit doesn't record constructors properly?
> Attached a diff for a fix.
>
> Regards, Janus
> _______________________________________________
> LLVM Developers mailing list
> llvm-dev at lists.llvm.org
> https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20191012/d140188b/attachment.html>


More information about the llvm-dev mailing list