Re: Help needed: small piece of assembler code for IRAF
Adam Sampson <[email protected]>
| Newsgroups | gmane.linux.debian.ports.68k |
|---|---|
| Message-ID | <[email protected]> |
Hi Ole, Ole Streicher <[email protected]> writes: > I created a small repository [4] that contains the assembler I > collected so far as well as two test programs. The code you've written looks OK -- the only problem is that in glibc, sigsetjmp is a macro which calls the real function __sigsetjmp: https://sourceware.org/git/?p=glibc.git;a=blob;f=setjmp/setjmp.h;hb=HEAD#l72 So you need "jra __sigsetjmp" (as you've done on other architectures), rather than "jra sigsetjmp". With that change, your tests work on an emulated m68k machine: $ git diff diff --git a/zsvjmp-m68k.s b/zsvjmp-m68k.s index 3b12e5d..43ca08c 100644 --- a/zsvjmp-m68k.s +++ b/zsvjmp-m68k.s @@ -12,7 +12,7 @@ zsvjmp_: move.l %a1,(%a0)+ clr.l 8(%sp) move.l %a0,4(%sp) - jra sigsetjmp + jra __sigsetjmp .size zsvjmp_, .-zsvjmp_ .section .note.GNU-stack,"",@progbits $ make ARCH=m68k test gfortran -ff2c -g -c -o jmptest.o jmptest.f gcc -g -c -o zdojmp.o zdojmp.c as -o zsvjmp-m68k.o zsvjmp-m68k.s ar cr libzsvjmp.a zdojmp.o zsvjmp-m68k.o gfortran -o jmptest jmptest.o -L. -lzsvjmp gcc -g -c -o zzdebug.o zzdebug.c gcc -g -g -o zzdebug zzdebug.o -L. -lzsvjmp ./zzdebug Status = 0, step = 0 Calling zdojmp Status = 1, step = 1 All OK ./jmptest Status = 0 step = 0 Calling zdojmp Status = 4294967296 step = 1 All OK STOP 0 Thanks,