[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