[LLVMdev] setjmp, longjmp and unwind
Chris Lattner
sabre at nondot.org
Thu Apr 21 10:01:13 PDT 2005
On Wed, 20 Apr 2005, Greg Pettyjohn wrote:
> First I try it with bytecodes:
> ~/compiler/temp$ llvmgcc sjmp01.c -o sjmp01
> ~/compiler/temp$ ./sjmp01
> Hello World!
> Abort trap
>
> Same results for lli sjmp01.bc
>
> Now I try converting to native code:
> ~/compiler/temp$ llc sjmp01.bc -enable-correct-eh-support -o sjmp01.s
> ~/compiler/temp$ gcc sjmp01.s -o sjmp01.native
> ~/compiler/temp$ ./sjmp01.native
> Hello World!
> Bus error
> ~/compiler/temp$
Ooops, sorry about that. It turns out that this was a bug in our handling
of setjmp. Please try this patch:
http://mail.cs.uiuc.edu/pipermail/llvm-commits/Week-of-Mon-20050418/025529.html
Sorry again, but thanks for reporting the bug! :)
-Chris
> On Apr 20, 2005, at 3:08 PM, Chris Lattner wrote:
>
>> On Wed, 20 Apr 2005, Greg Pettyjohn wrote:
>>> I'm trying to get unwind to work.
>>>
>>> I was unable to get an unwind example to work directly,
>>> so I decided to compile a c program that uses setjmp
>>> and longjmp and work backwards.
>>>
>>> I keep running into a "Abort trap" problem, whatever "Abort trap" is.
>>>
>>> Anyway, here's an example of a C program that compiles
>>> and works properly under normal gcc, but that fails with
>>> an "Abort trap" under LLVM:
>>>
>>> #include <setjmp.h>
>>>
>>> long (*g_pfunc) ();
>>> jmp_buf g_jbuf;
>>>
>>> long foo() {
>>> printf("Hello World!\n");
>>> longjmp(g_jbuf, 0);
>>> return 0;
>>> }
>>>
>>> main () {
>>> g_pfunc = foo;
>>>
>>> setjmp(g_jbuf);
>>> g_pfunc();
>>> }
>>>
>>> I'm using Mac OS X version 10.3.8
>>> I just installed and build LLVM yesterday from CVS.
>>
>> How are you compiling and running this program?
>>
>> -Chris
>>
>> --
>> http://nondot.org/sabre/
>> http://llvm.cs.uiuc.edu/
>>
>> _______________________________________________
>> LLVM Developers mailing list
>> LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu
>> http://mail.cs.uiuc.edu/mailman/listinfo/llvmdev
>
> _______________________________________________
> LLVM Developers mailing list
> LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu
> http://mail.cs.uiuc.edu/mailman/listinfo/llvmdev
>
-Chris
--
http://nondot.org/sabre/
http://llvm.cs.uiuc.edu/
More information about the llvm-dev
mailing list