[LLVMdev] setjmp, longjmp and unwind

Greg Pettyjohn gregp at ccs.neu.edu
Wed Apr 20 12:07:58 PDT 2005


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$

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




More information about the llvm-dev mailing list