Displaying 20 results from an estimated 7000 matches similar to: "[LLVMdev] TLS with MCJIT (an experimental patch)"
2013 May 09
2
[LLVMdev] TLS with MCJIT (an experimental patch)
Can you try it without the MAP_32BIT part? It won't be as reliable, but if the memory addresses it is asking for are available it could work.
I agree that there are good reasons not to lock in on a single memory address, but I'm curious as to what other obstacles might be lurking behind the ones we know about. If the patch works when memory is loaded below 2GB then it would be possible
2013 May 09
0
[LLVMdev] TLS with MCJIT (an experimental patch)
Hi,
Unfortunately, I can't compile this patch. MAP_32BIT is a Linuxism that doesn't work on FreeBSD (or OS X, or, as far as I can tell, anywhere except Linux). We can consider adding something similar to FreeBSD (although I'm hesitant to encourage anything that increases the determinism of the memory layout of JITed code, for security reasons), but it doesn't seem ideal.
2013 May 10
0
[LLVMdev] TLS with MCJIT (an experimental patch)
Without the MSP_32BIT part, I consistently hit this assertion:
Assertion failed: ((Type == ELF::R_X86_64_32 && (Value <= UINT32_MAX)) || (Type == ELF::R_X86_64_32S && ((int64_t)Value <= INT32_MAX && (int64_t)Value >= INT32_MIN))), function resolveX86_64Relocation, file ../lib/ExecutionEngine/RuntimeDyld/RuntimeDyldELF.cpp, line 222.
David
On 9 May 2013, at
2013 May 15
0
[LLVMdev] TLS with MCJIT (an experimental patch)
Can you elaborate on why MCJIT TLS support needs code in the low 2 GB?
What piece of data do you need to be reachable? It sounds like this was
discussed on IRC, but I'm curious.
Does the MCJIT even have the reachability problems of the old JIT? If you
build an object file in memory, presumably you can measure it and then
allocate +x memory for it all at once, instead of the old model of
2013 May 15
7
[LLVMdev] TLS with MCJIT (an experimental patch)
Hi David,
I believe that assertion indicates that something didn't get loaded into the lower 2GB of address space. That is, the memory manager isn't allocating memory in that range.
I'm sure there must be a way to allocate memory in that range on FreeBSD. The system loader has to do it, right? I just don't know what makes it happen.
-Andy
-----Original Message-----
From: Dr
2013 Oct 22
2
[LLVMdev] Size limitations in MCJIT / ELF Dynamic Linker/ ELF codegen?
Hi,
Thanks for your ideas.
Memory allocation already exceeds 2x64K in the "working" case so it's not
the condition of allocating more than 64K. To be sure I had modified
SectionMemoryManager::allocateSection to allocate four time the required
memory but it did not trigger more crashes.I debugged through the
allocation code including the Win32 code and it seems to work well. I have
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 22
2
[LLVMdev] Size limitations in MCJIT / ELF Dynamic Linker/ ELF codegen?
Yes, this is correct code address accessing bad data address.
However, there is no other relocation before .text or near it. I'll send
you the full debug printout, maybe you'll note something.
The problem could be result of something else entirely else than the linker
such as some library initialization code that by chance worked with smaller
code but fails now.
I need to debug and see
2013 Oct 23
3
[LLVMdev] Size limitations in MCJIT / ELF Dynamic Linker/ ELF codegen?
YES, this is the problem!
The program work ok, even a 5x larger version works well.
Clearly the _chkstk calls must be emitted with ELF target on Windows as
well - why not?
I'd like to make a patch and fix this right.
I experimented with both changes and practically only the
lib/Target/X86/X86ISelLowering.cpp fixes the problem. The other change
lib/Target/X86/X86FrameLowering.cpp was not
2013 Jan 31
2
[LLVMdev] Assertions in RuntimeDyldELF in ExecutionEngine/MCJIT tests
On Wed, Jan 30, 2013 at 8:34 PM, Kaylor, Andrew <andrew.kaylor at intel.com>wrote:
> Yes, at some point we definitely should introduce stubs as a last resort
> for x86-64 relocations when the sections are too far apart, but I’d like to
> avoid it whenever possible.****
>
> ** **
>
> What I meant in my previous message was that I’d have
> RecordingMemoryManager use
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 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 Jan 31
0
[LLVMdev] Assertions in RuntimeDyldELF in ExecutionEngine/MCJIT tests
It's probably best to open a bug.
-Andy
From: Alexey Samsonov [mailto:samsonov at google.com]
Sent: Thursday, January 31, 2013 12:27 AM
To: Kaylor, Andrew
Cc: LLVM Developers Mailing List
Subject: Re: Assertions in RuntimeDyldELF in ExecutionEngine/MCJIT tests
On Wed, Jan 30, 2013 at 8:34 PM, Kaylor, Andrew <andrew.kaylor at intel.com<mailto:andrew.kaylor at intel.com>> wrote:
2013 Jan 30
0
[LLVMdev] Assertions in RuntimeDyldELF in ExecutionEngine/MCJIT tests
Yes, at some point we definitely should introduce stubs as a last resort for x86-64 relocations when the sections are too far apart, but I'd like to avoid it whenever possible.
What I meant in my previous message was that I'd have RecordingMemoryManager use something other than malloc (such as the memory API used by SectionMemoryManager) to keep section near one another.
-Andy
From:
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?
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 Jan 30
2
[LLVMdev] Assertions in RuntimeDyldELF in ExecutionEngine/MCJIT tests
Hi Andrew,
Looks like RecordingMemoryManager in lli just calls malloc() and it would
be strange to make assumptions (or enforce) that the difference between two
returned pointers in 64-bit
virtual address space will be fit into 32 bits. Can we do smth similar to
what Adhemerval proposed (see the special case in processRelocationRef for
ELF::R_PPC64_REL24 relocations)?
On Tue, Jan 29, 2013 at
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
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 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