Displaying 20 results from an estimated 10000 matches similar to: "[LLVMdev] Exceptions do not work with MCJIT on Windows 7"
2013 Oct 22
0
[LLVMdev] An enhancement for MCJIT::getFunctionAddress
Hi Jim,
Clearly searching for name should not be linear in modules but with a map
of some kind.
After compilation to IR each module has a StringMap symbol table.
After compiling to MC and loading the object file, the dynamic linker has
a StringMap symbol table for all loaded modules.
In the usual use case you'll load module(s) into MCJIT and then compile /
link them and all is well, no
2013 Oct 22
1
[LLVMdev] SmallPtrSet patch for MCJIT
Hi Andy,
I added the runStaticConstructorsDestructors and FindFunctionNamed
functions. This also required making them virtual in EE.h.
I'm not sure about FindFunctionNamed:
In addition to searching finalized modules, should it search Added and
Loaded modules?
If it finds a Function in these, should it compile and finalize it before
returning the Function* ?
I modified the implementation
2013 Oct 22
0
[LLVMdev] Size limitations in MCJIT / ELF Dynamic Linker/ ELF codegen?
I would guess that it's crashing somewhere in the generated code. On Windows we don't have a way to get call stacks to the generated code (though if you want to try it on Linux, that should work). You can probably look at the address where the crash is occurring and verify that it is in the generated code.
There are a couple of things I would look for.
First, I'd take a look at the
2013 Oct 22
0
[LLVMdev] Size limitations in MCJIT / ELF Dynamic Linker/ ELF codegen?
So it looks like 0x0A3600D1 is a good code address and there's no problem executing the code there, but 0x00BC7680 is a bad data address. Is that correct?
If so, this is almost certainly a relocation problem. You just need to find a relocation that writes an entry (probably a relative offset) at 0x0A3600D1+the size of the instruction at that address.
BTW, what I said before about not being
2013 Oct 23
0
[LLVMdev] Size limitations in MCJIT / ELF Dynamic Linker/ ELF codegen?
This is the right fix if Cygwin wants calls to __chkstk. Otherwise you'll
want TargetTriple.isOSMSVCRT().
On Wed, Oct 23, 2013 at 2:50 AM, Yaron Keren <yaron.keren at gmail.com> wrote:
> If it's a Windows-only thing the correct tests would be:
>
> if (NumBytes >= 4096 && STI.isOSWindows()) {
>
> and
>
> if (Subtarget->isTargetWindows())
>
2013 Oct 23
0
[LLVMdev] Size limitations in MCJIT / ELF Dynamic Linker/ ELF codegen?
Glad that helped! As I understand it __chkstk is always required on Windows
regardless of output type, I had meant to file a bug about this but had
apparently forgotten to do so. I think the check needs to be that the
target is Windows and ignore the output type, Linux and OSX don't use this.
Cheers,
Andrew
On Wed, Oct 23, 2013 at 11:32 AM, Yaron Keren <yaron.keren at gmail.com>
2013 Oct 23
0
[LLVMdev] Size limitations in MCJIT / ELF Dynamic Linker/ ELF codegen?
Hi Yaron,
If you're outputting ELF on Windows this sounds like an issue we ran into
where __chkstk calls weren't being output in the assembly due to an
explicit check for COFF output. Once stack allocations in a given function
exceeded some amount we'd get exactly this kind of crash in the function
initialization.
If you take a look for isTargetCOFF() in
2013 Oct 21
0
[LLVMdev] An enhancement for MCJIT::getFunctionAddress
There's probably a lot that we could do, but I can't think of anything easy.
Basically every time we need to look up a symbol by name we're going to each module and saying "Do you have this symbol?" It would likely be much better if we grabbed the function names from the module and did the search ourselves so that we could keep some information about the things that
2013 Oct 22
0
[LLVMdev] SmallPtrSet patch for MCJIT
Hi Yaron,
Overall this looks great.
There are a couple of remaining holes. Specifically, MCJIT inherits implementations of the FindFunctionNamed and runStaticConstructorsDestructors methods from ExecutionEngine which use the old Modules vector, so you'll need to override these in MCJIT. (The implementations are fairly trivial.)
Beyond that I just have a couple of questions.
First,
2013 Oct 22
0
[LLVMdev] Size limitations in MCJIT / ELF Dynamic Linker/ ELF codegen?
I'm not aware of such a limitation.
What architecture, code model and relocation model are you using? Are you using the SectionMemoryManager?
-Andy
From: Yaron Keren [mailto:yaron.keren at gmail.com]
Sent: Tuesday, October 22, 2013 8:12 AM
To: <llvmdev at cs.uiuc.edu>; Kaylor, Andrew
Subject: Size limitations in MCJIT / ELF Dynamic Linker/ ELF codegen?
I'm running in MCJIT a
2013 Oct 30
1
[LLVMdev] Using MCJIT in a dynamic REPL environment
The new MCJIT is module-oriented, like a classic compiler+linker (which it
is) while the old JIT is function-oriented.
If I understand correctly, the main problems with the old JIT were the
duplication of the debug information code and EH code (both gone now).
Moreover, if we ignore the lazy evaluation mechanism then the current JIT
is actually quite simple module.
Would it be possible to keep
2013 Oct 18
0
[LLVMdev] EE, JIT, MCJIT class structure
Yes, we've been planning to separate the execution engines for a while now, and we've made some small steps (such as breaking out the RTDyldMemoryManager interface) in preparation for doing so. There are some serious entanglements, not least of which there are MCJIT clients (LLDB, for instance) which are using memory managers derived from the JITMemoryManager. Eventually (and soon)
2013 Oct 21
0
[LLVMdev] An enhancement for MCJIT::getFunctionAddress
I should have read this before sending my previous reply. :-)
I'm not a big fan of default parameters, but some form of what you are suggesting may be useful. See my other comments on this topic in the other reply.
-Andy
From: Yaron Keren [mailto:yaron.keren at gmail.com]
Sent: Saturday, October 19, 2013 3:17 PM
To: Kaylor, Andrew; <llvmdev at cs.uiuc.edu>
Subject: An enhancement
2013 Oct 15
0
[LLVMdev] A weird, reproducable problem with MCJIT
Yes, you are correct Yaron. Before we commit this we ought to put a check in to see what the target OS is. I just suggested the change below as a quick and easy way to verify that this was the cause of the problem. I'll clean it up.
-Andy
From: Yaron Keren [mailto:yaron.keren at gmail.com]
Sent: Monday, October 14, 2013 9:09 PM
To: Christian Schafmeister; Kaylor, Andrew; iain at
2013 Nov 08
1
[LLVMdev] UNREACHABLE executed at MCJIT.cpp:322!
It was the return type which was i64. I changed it also to my
abi_int_size and it works now. I have to take care of a few other type
translations, but it looks like MCJIT is working now.
Thank you.
On 08/11/13 18:12, Yaron Keren wrote:
> Something must be wrong with the Function Type. Try to debug into
> runFunction to see which if condition fails.
> Just a guess, if this is on 64
2013 Oct 15
1
[LLVMdev] A weird, reproducable problem with MCJIT
If I spoke incorrectly about what systems this problem/change effects I
apologize. I'll leave it to Andrew to determine that.
Best,
.Chris.
"Kaylor, Andrew" <andrew.kaylor at intel.com> writes:
> Yes, you are correct Yaron. Before we commit this we ought to put a
> check in to see what the target OS is. I just suggested the change
> below as a quick and easy way
2013 Nov 08
0
[LLVMdev] UNREACHABLE executed at MCJIT.cpp:322!
Something must be wrong with the Function Type. Try to debug into
runFunction to see which if condition fails.
Just a guess, if this is on 64 bit system the first argument type may be
int64 but needs to be int32.
Yaron
2013/11/8 edA-qa mort-ora-y <eda-qa at disemia.com>
> That makes it more mysterious then since I am indeed only calling a main
> function. Perhaps I have to invoke
2013 Oct 23
2
[LLVMdev] Size limitations in MCJIT / ELF Dynamic Linker/ ELF codegen?
If it's a Windows-only thing the correct tests would be:
if (NumBytes >= 4096 && STI.isOSWindows()) {
and
if (Subtarget->isTargetWindows())
where
bool isOSWindows() const { return TargetTriple.isOSWindows(); }
Yaron
2013/10/23 Andrew MacPherson <andrew.macp at gmail.com>
> Glad that helped! As I understand it __chkstk is always required on
> Windows
2013 Oct 22
2
[LLVMdev] Size limitations in MCJIT / ELF Dynamic Linker/ ELF codegen?
OS is Windows 7 64 bit OS, compiler is 32 bit Visual C++ 2012 with 32 bit.
The target which is i686-pc-mingw32-elf so I can use the ELF dynamic
loader.
Code model, relocation model and and memory manager are whatever default
for this - did not modify.
The Module comes from clang. The source is 1000 or more lines repeating C++
code in one big function:
A+1;
A*B.t();
where A and B are
2013 Oct 30
0
[LLVMdev] Using MCJIT in a dynamic REPL environment
Sure, that makes a lot of sense. The implementation details may get tricky, of course, but the concept is great.
-Jim
On Oct 30, 2013, at 12:20 PM, Yaron Keren <yaron.keren at gmail.com> wrote:
> Hi,
>
> I'm trying to transition from the JIT to MCJIT. The requirements are fast response time and dynamic unloading/replacement of modified functions. Lazy evaluation is *not*