Am 26.10.2012 17:17, schrieb Arun Sharma:
> On Fri, Oct 26, 2012 at 4:42 AM, Ole Streicher <[email protected]> wrote:
>> I am working on the packaging of the "IRAF" package
>> <http://iraf.noao.edu/>. The package uses a special variant of
>> setjmp()/longjmp() called from Fortran. Due to the nature of setjmp(),
>> this cannot be called directly from a subroutine.
> 
> The reason why a x86_64 asm version had to be written had to do with
> %rax getting clobbered by a portable implementation. This caused C++
> exception handling to break.
> 
> Not very familiar with the ABIs of the other archs to know if a
> portable implementation is possible.

In principle it is. Just two points need to be solved there:

* the setjmp library should actually be built,
* the jmpbuf.h should be publicely accessible

I had the problems with both; for some reason on x86 (32 and 64 bit) the
setjmp library appears to be almost empty. "nm *.o" in this directory gives

-----------------8<-----------------
longjmp.o:
         U abort
00000000 t __nonworking__longjmp
         U _UI_longjmp_cont
         U _ULx86_get_reg
         U _ULx86_init_local
         U _ULx86_resume
         U _ULx86_set_reg
         U _ULx86_step
         U _Ux86_getcontext

siglongjmp.o:
-----------------8<-----------------

setjmp.c was even not compiled via "configure; make". How does one get a
working setjmp/longjmp library?

Best regards

Ole


_______________________________________________
Libunwind-devel mailing list
[email protected]
https://lists.nongnu.org/mailman/listinfo/libunwind-devel

Reply via email to