Re: Help needed: Porting IRAF to MIPS

David Kuehling <[email protected]>
Newsgroups gmane.linux.debian.ports.mips
Message-ID <[email protected]>
The code needs some more changes to be compiled and work as part of a
shared library.  Note: you need to compile assembly sources via '$(CC)
$(CFLAGS) -c' so that options like -fPIC make it to the assembler.

Patch below works with both static and shared libraries.  Makefile
patched so that shared library test can be built as well (set LIBEXT to
either ".a" or ".so" and comment out CFLAGS+=-fPIC accordingly).
010-add-mipsel-support.patch (text/x-diff, 1.7 KB)
Index: zsvjmp/zsvjmp-mipsel.s
===================================================================
--- /dev/null	1970-01-01 00:00:00.000000000 +0000
+++ zsvjmp/zsvjmp-mipsel.s	2014-05-08 02:06:41.733234949 +0200
@@ -0,0 +1,28 @@
+	.file	"zsvjmp.s"
+
+# Copyright (c) 2014 David Kuehling <dvdkhlng AT posteo TOD de>
+# Distributable under the same license as IRAF
+# This file contains the Linux mipsel version of ZSVJMP for Debian.
+
+	.set mips1
+	.abicalls
+	.text
+	.global	zsvjmp_
+	.ent zsvjmp_
+	.type	zsvjmp_, %function
+
+zsvjmp_:
+	.set noreorder
+	.cpload $t9
+	.set reorder
+	sw  $a1, 0($a0)		# buf[0]=status
+	sw  $zero, 0($a1)	# *status=0
+	addiu  $a0, $a0, 4	# &buf[1] --> 1st arg for sigsetjmp
+	move    $a1, $zero	# 2nd arg is zero
+
+	# this call sequence is required when used inside shared library
+	la $t9, __sigsetjmp
+	j $t9
+	##  note: no delay slot, filled by GAS
+
+	.end 	zsvjmp_
Index: zsvjmp/Makefile
===================================================================
--- zsvjmp.orig/Makefile	2014-05-05 10:50:35.000000000 +0200
+++ zsvjmp/Makefile	2014-05-08 02:02:08.515737053 +0200
@@ -2,16 +2,25 @@
 FC=gfortran
 FFLAGS+=-ff2c
 
+LIBEXT=.so
+CFLAGS += -fPIC # uncomment when LIBEXT=.a
+
+%.o : %.s
+	$(CC) $(CFLAGS) -o $@ -c $<
+
 libzsvjmp.a: zdojmp.o zsvjmp.o
 	$(AR) cr $@ $^
 
+libzsvjmp.so: zdojmp.o zsvjmp.o
+	gcc -shared -fPIC -o $@ $^
+
 zsvjmp.s: zsvjmp-$(ARCH).s
 	ln -sf $< $@
 
-jmptest: jmptest.o libzsvjmp.a
+jmptest: jmptest.o libzsvjmp$(LIBEXT)
 	$(FC) -o $@ $< -L. -lzsvjmp
 
-zzdebug: zzdebug.o libzsvjmp.a
+zzdebug: zzdebug.o libzsvjmp$(LIBEXT)
 	$(CC) -o $@ $< -L. -lzsvjmp
 
 test: jmptest zzdebug
@@ -19,5 +28,5 @@
 	./jmptest
 
 clean:
-	rm -f *.o zsvjmp.s jmptest zzdebug *.a
+	rm -f *.o zsvjmp.s jmptest zzdebug *.a *.so
signature.asc (application/pgp-signature, 229 B)
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.12 (GNU/Linux)

iF4EAREIAAYFAlNqytEACgkQk15vCORXIF9pAwD8Cfd3sWWqSGKYBwmJWu9qDxhJ
E2ByShCPN95JGjbEJwkA/0j3vGRMRUrt7YFkgAtWqGtO15tdYaTXQfJwf5bNgYu7
=a550
-----END PGP SIGNATURE-----
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.