Hello Lang, I noticed, if I load a obj-File without a main-function, the Jitter won't resolve any address. But if I have a main, everything works fine. Why is this so? Is there a way to stop this? Kind regards Björn Als GmbH eingetragen im Handelsregister Bad Homburg v.d.H. HRB 9816, USt.ID-Nr. DE 114 165 789 Geschäftsführer: Hiroshi Kawamura, Dr Hiroshi Nakamura, Markus Bode, Heiko Lampert, Takashi Nagano, Takeshi Fukushima. -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20170512/583df25b/attachment.html>
Lang Hames via llvm-dev
2017-May-16 16:36 UTC
[llvm-dev] JIT - Resolve obj file without a main
Hi Björn, I don't recall ever seeing this behavior before. Can you describe the situation in more detail? Is this specifically for object files loaded via RTDyldLinkingLayer::addObjectSet, or does it apply to IR Modules without a main too? When you say the JIT won't resolve an address, do you mean that you can't find anything when you call findSymbol on the JIT, or that the JIT isn't calling your SymbolResolver back to find addresses? Was this for MacOS, Linux, or Windows? Cheers, Lang. On Fri, May 12, 2017 at 6:47 AM, <bjoern.gaier at horiba.com> wrote:> Hello Lang, > > I noticed, if I load a obj-File without a main-function, the Jitter won't > resolve any address. But if I have a main, everything works fine. Why is > this so? Is there a way to stop this? > > Kind regards > Björn > Als GmbH eingetragen im Handelsregister Bad Homburg v.d.H. HRB 9816, > USt.ID-Nr. DE 114 165 789 > Geschäftsführer: Hiroshi Kawamura, Dr Hiroshi Nakamura, Markus Bode, Heiko > Lampert, Takashi Nagano, Takeshi Fukushima.-------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20170516/664e8461/attachment.html>
Hi Lang, I'm using Windows. I was parsing an IR-File and added the Module to the ExectuionEngine. If I than searched for a function, I just got 0. But when the module had a main, I got an address. I solved the problem via a call to "generateCodeForModule". The JIT didn't even called my SymbolResolver in this special case. Could you please tell me, if there is a way to allocate the memory for the codemodules more precise? I would like to allocate the memory for strings from a separated memory-pool. But how can I detect a string? The only moment I can do this is in "notifyObjectLoaded" via the names of the symbols. But than it is impossible for my to get the address of the symbols. I noticed that some strings are stored in .rdata, but this is no guarantee. Kind regards Björn From: Lang Hames <lhames at gmail.com> To: bjoern.gaier at horiba.com Cc: Clang Dev <cfe-dev at lists.llvm.org>, LLVM Developers Mailing List <llvm-dev at lists.llvm.org> Date: 16.05.2017 18:37 Subject: Re: JIT - Resolve obj file without a main Hi Björn, I don't recall ever seeing this behavior before. Can you describe the situation in more detail? Is this specifically for object files loaded via RTDyldLinkingLayer::addObjectSet, or does it apply to IR Modules without a main too? When you say the JIT won't resolve an address, do you mean that you can't find anything when you call findSymbol on the JIT, or that the JIT isn't calling your SymbolResolver back to find addresses? Was this for MacOS, Linux, or Windows? Cheers, Lang. On Fri, May 12, 2017 at 6:47 AM, <bjoern.gaier at horiba.com> wrote: Hello Lang, I noticed, if I load a obj-File without a main-function, the Jitter won't resolve any address. But if I have a main, everything works fine. Why is this so? Is there a way to stop this? Kind regards Björn Als GmbH eingetragen im Handelsregister Bad Homburg v.d.H. HRB 9816, USt.ID-Nr. DE 114 165 789 Geschäftsführer: Hiroshi Kawamura, Dr Hiroshi Nakamura, Markus Bode, Heiko Lampert, Takashi Nagano, Takeshi Fukushima. Als GmbH eingetragen im Handelsregister Bad Homburg v.d.H. HRB 9816, USt.ID-Nr. DE 114 165 789 Geschäftsführer: Hiroshi Kawamura, Dr Hiroshi Nakamura, Markus Bode, Heiko Lampert, Takashi Nagano, Takeshi Fukushima. -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20170517/d5004fd0/attachment.html>
Hello friendly Clang-World, working with the JIT is real great and I'm learning great things. But one thing I couldn't get along with. I created an object-file, with a simple exception-handling. One functions throws an integer and another catches the exception. When I try to run the code, the application crashes. I noticed, that the reference "??_7type_info@@6B@" couldn't be resolved. Some research later, I discovered, that this value is the "type_info::vftable". But passing a fake-virtual-table to the reference didn't lead to a function being called. Later I found this article: https://groups.google.com/forum/#!topic/llvm-dev/Fd-ggDDWwRg But using the msvcrt.lib didn't help me too, because there were other undefined references and the application continued crashing. So - what can I do? Loading every *.lib Windows is providing? Or is there a simpler solution? Couldn't I just change the exception type, when clang compiles my cpp-Files? Kind regards Björn Als GmbH eingetragen im Handelsregister Bad Homburg v.d.H. HRB 9816, USt.ID-Nr. DE 114 165 789 Geschäftsführer: Hiroshi Kawamura, Dr Hiroshi Nakamura, Markus Bode, Heiko Lampert, Takashi Nagano, Takeshi Fukushima. -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20170530/04b6d8a7/attachment.html>