[llvm] r260338 - [Orc] Add lazy-JITting support for i386.
Lang Hames via llvm-commits
llvm-commits at lists.llvm.org
Sun Feb 21 12:20:46 PST 2016
Hi Dimitry,
This looks similar to the issue that Reid ran in to. I suspect it's a stack
alignment issue: This code assumes the stack is 16-byte aligned, and I
guess that's not true on Windows or BSD.
I'll add some stack realignment code now and see if it gets the builders
green again.
Cheers,
Lang.
On Sun, Feb 21, 2016 at 5:42 AM, Dimitry Andric <dimitry at andric.com> wrote:
> On 10 Feb 2016, at 02:02, Lang Hames via llvm-commits <
> llvm-commits at lists.llvm.org> wrote:
> >
> > Author: lhames
> > Date: Tue Feb 9 19:02:33 2016
> > New Revision: 260338
> >
> > URL: http://llvm.org/viewvc/llvm-project?rev=260338&view=rev
> > Log:
> > [Orc] Add lazy-JITting support for i386.
> >
> > This patch adds a new class, OrcI386, which contains the hooks needed to
> > support lazy-JITing on i386 (currently only for Pentium 2 or above, as
> the JIT
> > re-entry code uses the FXSAVE/FXRSTOR instructions).
> >
> > Support for i386 is enabled in the LLI lazy JIT and the Orc C API, and
> > regression and unit tests are enabled for this architecture.
>
> Hi,
>
> I was wondering why I was always getting OrcLazy test failures on
> i386-freebsd recently, but it appears to have been introduced with this
> commit. :)
>
> All the OrcLazy tests result in lli getting a SIGBUS:
>
> FAIL: LLVM :: ExecutionEngine/OrcLazy/anonymous_globals.ll (18054 of 25776)
> ******************** TEST 'LLVM ::
> ExecutionEngine/OrcLazy/anonymous_globals.ll' FAILED ********************
> Script:
> --
> /home/dim/obj/llvm-261275M-trunk-freebsd11-i386-ninja-rel-1/./bin/lli
> -jit-kind=orc-lazy
> /share/dim/src/llvm/trunk/test/ExecutionEngine/OrcLazy/anonymous_globals.ll
> --
> Exit Code: 138
>
> Command Output (stderr):
> --
> /home/dim/obj/llvm-261275M-trunk-freebsd11-i386-ninja-rel-1/test/ExecutionEngine/OrcLazy/Output/anonymous_globals.ll.script:
> line 1: 11213 Bus error (core dumped)
> /home/dim/obj/llvm-261275M-trunk-freebsd11-i386-ninja-rel-1/./bin/lli
> -jit-kind=orc-lazy
> /share/dim/src/llvm/trunk/test/ExecutionEngine/OrcLazy/anonymous_globals.ll
>
> --
>
> ********************
> Testing: 0 .. 10.. 20.. 30.. 40.. 50.. 60..
> FAIL: LLVM :: ExecutionEngine/OrcLazy/global_aliases.ll (18064 of 25776)
> ******************** TEST 'LLVM ::
> ExecutionEngine/OrcLazy/global_aliases.ll' FAILED ********************
> Script:
> --
> /home/dim/obj/llvm-261275M-trunk-freebsd11-i386-ninja-rel-1/./bin/lli
> -jit-kind=orc-lazy
> /share/dim/src/llvm/trunk/test/ExecutionEngine/OrcLazy/global_aliases.ll
> --
> Exit Code: 138
>
> Command Output (stderr):
> --
> /home/dim/obj/llvm-261275M-trunk-freebsd11-i386-ninja-rel-1/test/ExecutionEngine/OrcLazy/Output/global_aliases.ll.script:
> line 1: 11214 Bus error (core dumped)
> /home/dim/obj/llvm-261275M-trunk-freebsd11-i386-ninja-rel-1/./bin/lli
> -jit-kind=orc-lazy
> /share/dim/src/llvm/trunk/test/ExecutionEngine/OrcLazy/global_aliases.ll
>
> --
>
> ********************
> Testing: 0 .. 10.. 20.. 30.. 40.. 50.. 60..
> FAIL: LLVM :: ExecutionEngine/OrcLazy/hello.ll (18077 of 25776)
> ******************** TEST 'LLVM :: ExecutionEngine/OrcLazy/hello.ll'
> FAILED ********************
> Script:
> --
> /home/dim/obj/llvm-261275M-trunk-freebsd11-i386-ninja-rel-1/./bin/lli
> -jit-kind=orc-lazy -orc-lazy-debug=funcs-to-stdout
> /share/dim/src/llvm/trunk/test/ExecutionEngine/OrcLazy/hello.ll |
> /home/dim/obj/llvm-261275M-trunk-freebsd11-i386-ninja-rel-1/./bin/FileCheck
> /share/dim/src/llvm/trunk/test/ExecutionEngine/OrcLazy/hello.ll
> --
> Exit Code: 2
>
> Command Output (stderr):
> --
> FileCheck error: '-' is empty.
>
> --
>
> ********************
> Testing: 0 .. 10.. 20.. 30.. 40.. 50.. 60..
> FAIL: LLVM :: ExecutionEngine/OrcLazy/private_linkage.ll (18078 of 25776)
> ******************** TEST 'LLVM ::
> ExecutionEngine/OrcLazy/private_linkage.ll' FAILED ********************
> Script:
> --
> /home/dim/obj/llvm-261275M-trunk-freebsd11-i386-ninja-rel-1/./bin/lli
> -jit-kind=orc-lazy
> /share/dim/src/llvm/trunk/test/ExecutionEngine/OrcLazy/private_linkage.ll
> --
> Exit Code: 138
>
> Command Output (stderr):
> --
> /home/dim/obj/llvm-261275M-trunk-freebsd11-i386-ninja-rel-1/test/ExecutionEngine/OrcLazy/Output/private_linkage.ll.script:
> line 1: 11218 Bus error (core dumped)
> /home/dim/obj/llvm-261275M-trunk-freebsd11-i386-ninja-rel-1/./bin/lli
> -jit-kind=orc-lazy
> /share/dim/src/llvm/trunk/test/ExecutionEngine/OrcLazy/private_linkage.ll
>
> --
>
> ********************
> Testing: 0 .. 10.. 20.. 30.. 40.. 50.. 60.. 70.. 80.. 90.
> FAIL: LLVM-Unit ::
> ExecutionEngine/Orc/OrcJITTests/OrcCAPIExecutionTest.TestLazyIRCompilation
> (24756 of 25776)
> ******************** TEST 'LLVM-Unit ::
> ExecutionEngine/Orc/OrcJITTests/OrcCAPIExecutionTest.TestLazyIRCompilation'
> FAILED ********************
> Note: Google Test filter = OrcCAPIExecutionTest.TestLazyIRCompilation
> [==========] Running 1 test from 1 test case.
> [----------] Global test environment set-up.
> [----------] 1 test from OrcCAPIExecutionTest
> [ RUN ] OrcCAPIExecutionTest.TestLazyIRCompilation
>
> ********************
>
> Unfortunately, the debugger seems to have trouble following the execution,
> so it does not really show anything interesting in the stack trace:
>
> (gdb) run
> Starting program: /home/dim/obj/llvm-orc-r260338/bin/lli
> -jit-kind=orc-lazy
> /share/dim/src/llvm/trunk/test/ExecutionEngine/OrcLazy/private_linkage.ll
> [New Thread 29612000 (LWP 101099)]
>
> Program received signal SIGBUS, Bus error.
> [Switching to Thread 29612000 (LWP 101099)]
> 0x28fa600f in ?? ()
> (gdb) bt
> #0 0x28fa600f in ?? ()
> #1 0x2913aff5 in ?? ()
> #2 0x0815adcd in main (argc=<optimized out>, argv=<optimized out>,
> envp=<optimized out>)
> at /share/dim/src/llvm/trunk/tools/lli/lli.cpp:414
>
> It appears to die on an fxsave instruction, though:
>
> (gdb) disassemble 0x28fa6000,0x28fa6020
> Dump of assembler code from 0x28fa6000 to 0x28fa6020:
> 0x28fa6000: push %ebp
> 0x28fa6001: mov %esp,%ebp
> 0x28fa6003: push %eax
> 0x28fa6004: push %ebx
> 0x28fa6005: push %ecx
> 0x28fa6006: push %edx
> 0x28fa6007: push %esi
> 0x28fa6008: push %edi
> 0x28fa6009: sub $0x21c,%esp
> => 0x28fa600f: fxsave 0x10(%esp)
> 0x28fa6014: mov 0x4(%ebp),%esi
> 0x28fa6017: sub $0x5,%esi
> 0x28fa601a: mov %esi,0x4(%esp)
> 0x28fa601e: movl $0x296182c0,(%esp)
> End of assembler dump.
> (gdb) info registers
> eax 0xbfbfe6e0 -1077942560
> ecx 0x2913bff0 689160176
> edx 0x3 3
> ebx 0x905e994 151382420
> esp 0xbfbfd58c 0xbfbfd58c
> ebp 0xbfbfd7c0 0xbfbfd7c0
> esi 0xbfbfd7f0 -1077946384
> edi 0xbfbfd820 -1077946336
> eip 0x28fa600f 0x28fa600f
> eflags 0x210292 [ AF SF IF RF ID ]
> cs 0x33 51
> ss 0x3b 59
> ds 0x3b 59
> es 0x3b 59
> fs 0x3b 59
> gs 0x1b 27
>
> Any ideas on how to debug this further?
>
> -Dimitry
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20160221/a8ace50c/attachment.html>
More information about the llvm-commits
mailing list