diff --git a/ffcall-avcall-Makefile.devel.patch b/ffcall-avcall-Makefile.devel.patch new file mode 100644 index 0000000..f39dc52 --- /dev/null +++ b/ffcall-avcall-Makefile.devel.patch @@ -0,0 +1,248 @@ +--- ffcall.orig/avcall/Makefile.devel 2006-04-22 18:54:28.000000000 +0200 ++++ ffcall/avcall/Makefile.devel 2010-04-06 14:04:04.670017347 +0200 +@@ -11,8 +11,8 @@ ROFF_MAN = groff -Tascii -mandoc + + all : avcall-i386-macro.S avcall-i386-msvc.c avcall-i386-mingw32.c avcall.h.msvc avcall.h.mingw32 avcall-m68k.mit.S avcall-m68k.mot.s avcall-m68k-amiga.s avcall-mips.S avcall-mipsn32.S avcall-mips64.S avcall-sparc.S avcall-sparc64.S avcall-alpha.s avcall-hppa.s avcall-arm.S avcall-powerpc-aix.old.s avcall-powerpc-aix.new.s avcall-powerpc-sysv4.s avcall-powerpc-macos.s avcall-powerpc64.s avcall-m88k.s avcall-convex.s avcall-ia64.s avcall-x86_64.s avcall.man + +-avcall-i386-macro.S : avcall-i386.c avcall.h.in asmi386.sh +- $(GCC) -V 2.7.2 -b i486-linuxaout $(GCCFLAGS) -D__i386__ -fno-omit-frame-pointer -S avcall-i386.c -o avcall-i386.s ++avcall-i386-macro.S : avcall-i386.c avcall.h asmi386.sh ++ $(GCC) $(GCCFLAGS) -D__i386__ -fno-omit-frame-pointer -S avcall-i386.c -o avcall-i386.s + (echo '#include "asmi386.h"' ; sed -e '/\.align.*,0x90$$/d' < avcall-i386.s | ./asmi386.sh) > avcall-i386-macro.S + $(RM) avcall-i386.s + +@@ -22,91 +22,91 @@ avcall-i386-msvc.c : avcall-i386-macro.S + avcall-i386-mingw32.c : avcall-i386-macro.S + cp -p avcall-i386-macro.S avcall-i386-mingw32.c + +-avcall.h.msvc : avcall.h.in +- sed -e 's,^#undef __i386__$$,#define __i386__ 1,' -e 's,^#undef __SMALL_STRUCT_RETURN__$$,#define __SMALL_STRUCT_RETURN__ 1,' < avcall.h.in > avcall.h.msvc ++avcall.h.msvc : avcall.h ++ sed -e 's,^#undef __i386__$$,#define __i386__ 1,' -e 's,^#undef __SMALL_STRUCT_RETURN__$$,#define __SMALL_STRUCT_RETURN__ 1,' < avcall.h > avcall.h.msvc + +-avcall.h.mingw32 : avcall.h.in +- sed -e 's,^#undef __i386__$$,#define __i386__ 1,' -e 's,^#undef __SMALL_STRUCT_RETURN__$$,#define __SMALL_STRUCT_RETURN__ 1,' < avcall.h.in > avcall.h.mingw32 ++avcall.h.mingw32 : avcall.h ++ sed -e 's,^#undef __i386__$$,#define __i386__ 1,' -e 's,^#undef __SMALL_STRUCT_RETURN__$$,#define __SMALL_STRUCT_RETURN__ 1,' < avcall.h > avcall.h.mingw32 + +-avcall-m68k.mit.S : avcall-m68k.c avcall.h.in asmm68k.sh +- $(GCC) -V 2.95.2 -b m68k-sun $(GCCFLAGS) -D__m68k__ -S avcall-m68k.c -o avcall-m68k.mit.s ++avcall-m68k.mit.S : avcall-m68k.c avcall.h asmm68k.sh ++ $(GCC) $(GCCFLAGS) -D__m68k__ -S avcall-m68k.c -o avcall-m68k.mit.s + (echo '#include "asmm68k.h"' ; ./asmm68k.sh < avcall-m68k.mit.s) > avcall-m68k.mit.S + $(RM) avcall-m68k.mit.s + +-avcall-m68k.mot.s : avcall-m68k.c avcall.h.in +- $(GCC) -V 2.95.2 -b m68k-linux $(GCCFLAGS) -D__m68k__ -S avcall-m68k.c -o avcall-m68k.mot.s ++avcall-m68k.mot.s : avcall-m68k.c avcall.h ++ $(GCC) $(GCCFLAGS) -D__m68k__ -S avcall-m68k.c -o avcall-m68k.mot.s + +-avcall-m68k-amiga.s : avcall-m68k-amiga.c avcall.h.in +- $(GCC) -V 2.95.2 -b m68k-sun -m68000 $(GCCFLAGS) -D__m68k__ -DAMIGA -S avcall-m68k-amiga.c -o avcall-m68k-amiga.s ++avcall-m68k-amiga.s : avcall-m68k-amiga.c avcall.h ++ $(GCC) $(GCCFLAGS) -D__m68k__ -DAMIGA -S avcall-m68k-amiga.c -o avcall-m68k-amiga.s + +-avcall-mips.S : avcall-mips.c avcall.h.in asmmips.sh +- $(GCC) -V 2.95.2 -b mips-sgi $(GCCFLAGS) -D__mips__ -fno-omit-frame-pointer -S avcall-mips.c -o avcall-mips.s ++avcall-mips.S : avcall-mips.c avcall.h asmmips.sh ++ $(GCC) $(GCCFLAGS) -D__mips__ -fno-omit-frame-pointer -S avcall-mips.c -o avcall-mips.s + (echo '#include "asmmips.h"' ; ./asmmips.sh < avcall-mips.s) > avcall-mips.S + $(RM) avcall-mips.s + +-avcall-mipsn32.S : avcall-mipsn32.c avcall.h.in asmmips.sh +- $(GCC) -V 2.95.2 -b mips-sgi-irix6 $(GCCFLAGS) -D__mipsn32__ -fno-omit-frame-pointer -S avcall-mipsn32.c -o avcall-mipsn32.s ++avcall-mipsn32.S : avcall-mipsn32.c avcall.h asmmips.sh ++ $(GCC) $(GCCFLAGS) -D__mipsn32__ -fno-omit-frame-pointer -S avcall-mipsn32.c -o avcall-mipsn32.s + (echo '#include "asmmips.h"' ; ./asmmips.sh < avcall-mipsn32.s) > avcall-mipsn32.S + $(RM) avcall-mipsn32.s + +-avcall-mips64.S : avcall-mips64.c avcall.h.in asmmips.sh +- $(GCC) -V 2.95.2 -b mips-sgi -mips3 -mlong64 $(GCCFLAGS) -U__mips__ -D__mips64__ -fno-omit-frame-pointer -S avcall-mips64.c -o avcall-mips64.s ++avcall-mips64.S : avcall-mips64.c avcall.h asmmips.sh ++ $(GCC) $(GCCFLAGS) -U__mips__ -D__mips64__ -fno-omit-frame-pointer -S avcall-mips64.c -o avcall-mips64.s + (echo '#include "asmmips.h"' ; ./asmmips.sh < avcall-mips64.s) > avcall-mips64.S + $(RM) avcall-mips64.s + +-avcall-sparc.S : avcall-sparc.c avcall.h.in asmsparc.sh +- $(GCC) -V 2.95.2 -b sparc-sun $(GCCFLAGS) -D__sparc__ -S avcall-sparc.c -o avcall-sparc.s ++avcall-sparc.S : avcall-sparc.c avcall.h asmsparc.sh ++ $(GCC) $(GCCFLAGS) -D__sparc__ -S avcall-sparc.c -o avcall-sparc.s + (echo '#include "asmsparc.h"' ; ./asmsparc.sh < avcall-sparc.s) > avcall-sparc.S + $(RM) avcall-sparc.s + +-avcall-sparc64.S : avcall-sparc64.c avcall.h.in asmsparc.sh +- sparc64-linux-gcc -V 2.95.2 -b sparc64-linux $(GCCFLAGS) -D__sparc64__ -S avcall-sparc64.c -o avcall-sparc64.s ++avcall-sparc64.S : avcall-sparc64.c avcall.h asmsparc.sh ++ $(GCC) $(GCCFLAGS) -D__sparc64__ -S avcall-sparc64.c -o avcall-sparc64.s + (echo '#include "asmsparc.h"' ; ./asmsparc64.sh < avcall-sparc64.s) > avcall-sparc64.S + $(RM) avcall-sparc64.s + + # Patrick Bridges says that on Linux/Alpha, avcall-alpha.s compiled with "-O" + # works but compiled with "-O2" doesn't work. +-avcall-alpha.s : avcall-alpha.c avcall.h.in +- $(GCC) -V 2.7.2 -b alpha-dec-osf $(GCCFLAGS) -O1 -D__alpha__ -S avcall-alpha.c -o avcall-alpha-temp.s ++avcall-alpha.s : avcall-alpha.c avcall.h ++ $(GCC) $(GCCFLAGS) -O1 -D__alpha__ -S avcall-alpha.c -o avcall-alpha-temp.s + $(SED) -e '/ldgp/d' < avcall-alpha-temp.s > avcall-alpha.s + $(RM) avcall-alpha-temp.s + +-avcall-hppa.s : avcall-hppa.c avcall.h.in +- $(GCC) -V 2.6.3 -b hppa1.0-hpux $(GCCFLAGS) -D__hppa__ -S avcall-hppa.c -o avcall-hppa-temp.s ++avcall-hppa.s : avcall-hppa.c avcall.h ++ $(GCC) $(GCCFLAGS) -D__hppa__ -S avcall-hppa.c -o avcall-hppa-temp.s + $(SED) -e 's/120/1060/g' < avcall-hppa-temp.s > avcall-hppa.s + $(RM) avcall-hppa-temp.s + +-avcall-arm.S : avcall-arm.c avcall.h.in asmarm.sh +- $(GCC) -V 2.6.3 -b arm-acorn-riscix $(GCCFLAGS) -D__arm__ -S avcall-arm.c -o avcall-arm.s ++avcall-arm.S : avcall-arm.c avcall.h asmarm.sh ++ $(GCC) $(GCCFLAGS) -D__arm__ -S avcall-arm.c -o avcall-arm.s + (echo '#include "asmarm.h"' ; ./asmarm.sh < avcall-arm.s) > avcall-arm.S + $(RM) avcall-arm.s + +-avcall-powerpc-aix.old.s : avcall-powerpc.c avcall.h.in +- $(GCC) -V 2.95.2 -b rs6000 -mno-power -mno-power2 -mno-powerpc -mold-mnemonics $(GCCFLAGS) -D__powerpc__ -S avcall-powerpc.c -o avcall-powerpc-aix.old.s ++avcall-powerpc-aix.old.s : avcall-powerpc.c avcall.h ++ $(GCC) $(GCCFLAGS) -D__powerpc__ -S avcall-powerpc.c -o avcall-powerpc-aix.old.s + +-avcall-powerpc-aix.new.s : avcall-powerpc.c avcall.h.in +- $(GCC) -V 2.95.2 -b rs6000 -mno-power -mno-power2 -mno-powerpc -mnew-mnemonics $(GCCFLAGS) -D__powerpc__ -S avcall-powerpc.c -o avcall-powerpc-aix.new.s ++avcall-powerpc-aix.new.s : avcall-powerpc.c avcall.h ++ $(GCC) $(GCCFLAGS) -D__powerpc__ -S avcall-powerpc.c -o avcall-powerpc-aix.new.s + +-avcall-powerpc-sysv4.s : avcall-powerpc.c avcall.h.in +- $(GCC) -V 2.95.2 -b ppc-linux -mno-power -mno-power2 -mno-powerpc $(GCCFLAGS) -D__powerpc__ -S avcall-powerpc.c -o avcall-powerpc-sysv4.s ++avcall-powerpc-sysv4.s : avcall-powerpc.c avcall.h ++ $(GCC) $(GCCFLAGS) -D__powerpc__ -S avcall-powerpc.c -o avcall-powerpc-sysv4.s + +-avcall-powerpc-macos.s : avcall-powerpc.c avcall.h.in +- $(GCC) -V 3.3.2 -b powerpc-darwin $(GCCFLAGS) -D__powerpc__ -S avcall-powerpc.c -o avcall-powerpc-macos.s ++avcall-powerpc-macos.s : avcall-powerpc.c avcall.h ++ $(GCC) $(GCCFLAGS) -D__powerpc__ -S avcall-powerpc.c -o avcall-powerpc-macos.s + +-avcall-powerpc64.s : avcall-powerpc64.c avcall.h.in +- /cross/powerpc64-linux-tools/bin/powerpc64-linux-gcc $(GCCFLAGS) -D__powerpc64__ -S avcall-powerpc64.c -o avcall-powerpc64.s ++avcall-powerpc64.s : avcall-powerpc64.c avcall.h ++ $(GCC) $(GCCFLAGS) -D__powerpc64__ -S avcall-powerpc64.c -o avcall-powerpc64.s + +-avcall-m88k.s : avcall-m88k.c avcall.h.in +- $(GCC) -V 2.95.2 -b m88k-dgux $(GCCFLAGS) -D__m88k__ -S avcall-m88k.c -o avcall-m88k.s ++avcall-m88k.s : avcall-m88k.c avcall.h ++ $(GCC) $(GCCFLAGS) -D__m88k__ -S avcall-m88k.c -o avcall-m88k.s + +-avcall-convex.s : avcall-convex.c avcall.h.in +- $(GCC) -V 2.6.3 -b convex-c2 $(GCCFLAGS) -D__convex__ -S avcall-convex.c -o avcall-convex.s ++avcall-convex.s : avcall-convex.c avcall.h ++ $(GCC) $(GCCFLAGS) -D__convex__ -S avcall-convex.c -o avcall-convex.s + +-avcall-ia64.s : avcall-ia64.c avcall.h.in +- $(GCC) -V 2.9-ia64-000216 -b ia64-hp-linux $(GCCFLAGS) -D__ia64__ -S avcall-ia64.c -o avcall-ia64.s ++avcall-ia64.s : avcall-ia64.c avcall.h ++ $(GCC) $(GCCFLAGS) -D__ia64__ -S avcall-ia64.c -o avcall-ia64.s + +-avcall-x86_64.s : avcall-x86_64.c avcall.h.in +- $(GCC) -V 3.2.2 -b x86_64-suse-linux $(GCCFLAGS) -D__x86_64__ -S avcall-x86_64.c -o avcall-x86_64.s ++avcall-x86_64.s : avcall-x86_64.c avcall.h ++ $(GCC) $(GCCFLAGS) -D__x86_64__ -S avcall-x86_64.c -o avcall-x86_64.s + + avcall.man : avcall.3 + $(ROFF_MAN) avcall.3 > avcall.man +@@ -115,63 +115,39 @@ avcall.man : avcall.3 + tests : tests-i386.s tests-m68k.s tests-mips.s tests-sparc.s tests-alpha.s tests-hppa.s tests-arm.s tests-powerpc.s tests-m88k.s tests-convex.s tests-ia64.s tests-x86_64.s + true + +-tests-i386.s : tests.c avcall.h.in +- $(LN) avcall.h.in avcall.h +- $(GCC) -V 2.7.2 -b i486-linuxaout $(GCCFLAGS) -I/usr/include -D__i386__ -S tests.c -o tests-i386.s +- $(RM) avcall.h +- +-tests-m68k.s : tests.c avcall.h.in +- $(LN) avcall.h.in avcall.h +- $(GCC) -V 2.95.2 -b m68k-sun $(GCCFLAGS) -I/usr/include -D__m68k__ -S tests.c -o tests-m68k.s +- $(RM) avcall.h +- +-tests-mips.s : tests.c avcall.h.in +- $(LN) avcall.h.in avcall.h +- $(GCC) -V 2.95.2 -b mips-sgi $(GCCFLAGS) -I/usr/include -D__mips__ -S tests.c -o tests-mips.s +- $(RM) avcall.h +- +-tests-sparc.s : tests.c avcall.h.in +- $(LN) avcall.h.in avcall.h +- $(GCC) -V 2.95.2 -b sparc-sun $(GCCFLAGS) -I/usr/include -D__sparc__ -S tests.c -o tests-sparc.s +- $(RM) avcall.h +- +-tests-alpha.s : tests.c avcall.h.in +- $(LN) avcall.h.in avcall.h +- $(GCC) -V 2.7.2 -b alpha-dec-osf $(GCCFLAGS) -I/usr/include -D__alpha__ -S tests.c -o tests-alpha.s +- $(RM) avcall.h +- +-tests-hppa.s : tests.c avcall.h.in +- $(LN) avcall.h.in avcall.h +- $(GCC) -V 2.6.3 -b hppa1.0-hpux $(GCCFLAGS) -I/usr/include -D__hppa__ -S tests.c -o tests-hppa.s +- $(RM) avcall.h +- +-tests-arm.s : tests.c avcall.h.in +- $(LN) avcall.h.in avcall.h +- $(GCC) -V 2.6.3 -b arm-acorn-riscix $(GCCFLAGS) -I/usr/include -D__arm__ -S tests.c -o tests-arm.s +- $(RM) avcall.h +- +-tests-powerpc.s : tests.c avcall.h.in +- $(LN) avcall.h.in avcall.h +- $(GCC) -V 2.95.2 -b rs6000 $(GCCFLAGS) -I/usr/include -D__powerpc__ -S tests.c -o tests-powerpc.s +- $(RM) avcall.h +- +-tests-m88k.s : tests.c avcall.h.in +- $(LN) avcall.h.in avcall.h +- $(GCC) -V 2.95.2 -b m88k-dgux $(GCCFLAGS) -I/usr/include -D__m88k__ -S tests.c -o tests-m88k.s +- $(RM) avcall.h +- +-tests-convex.s : tests.c avcall.h.in +- $(LN) avcall.h.in avcall.h +- $(GCC) -V 2.6.3 -b convex-c2 $(GCCFLAGS) -I/usr/include -D__convex__ -S tests.c -o tests-convex.s +- $(RM) avcall.h +- +-tests-ia64.s : tests.c avcall.h.in +- $(LN) avcall.h.in avcall.h +- $(GCC) -V 2.9-ia64-000216 -b ia64-hp-linux $(GCCFLAGS) -I/usr/include -D__ia64__ -S tests.c -o tests-ia64.s +- $(RM) avcall.h +- +-tests-x86_64.s : tests.c avcall.h.in +- $(LN) avcall.h.in avcall.h +- $(GCC) -V 3.2.2 -b x86_64-suse-linux $(GCCFLAGS) -I/usr/include -D__x86_64__ -S tests.c -o tests-x86_64.s +- $(RM) avcall.h ++tests-i386.s : tests.c avcall.h ++ $(GCC) $(GCCFLAGS) -I/usr/include -D__i386__ -S tests.c -o tests-i386.s ++ ++tests-m68k.s : tests.c avcall.h ++ $(GCC) $(GCCFLAGS) -I/usr/include -D__m68k__ -S tests.c -o tests-m68k.s ++ ++tests-mips.s : tests.c avcall.h ++ $(GCC) $(GCCFLAGS) -I/usr/include -D__mips__ -S tests.c -o tests-mips.s ++ ++tests-sparc.s : tests.c avcall.h ++ $(GCC) $(GCCFLAGS) -I/usr/include -D__sparc__ -S tests.c -o tests-sparc.s ++ ++tests-alpha.s : tests.c avcall.h ++ $(GCC) $(GCCFLAGS) -I/usr/include -D__alpha__ -S tests.c -o tests-alpha.s ++ ++tests-hppa.s : tests.c avcall.h ++ $(GCC) $(GCCFLAGS) -I/usr/include -D__hppa__ -S tests.c -o tests-hppa.s ++ ++tests-arm.s : tests.c avcall.h ++ $(GCC) $(GCCFLAGS) -I/usr/include -D__arm__ -S tests.c -o tests-arm.s ++ ++tests-powerpc.s : tests.c avcall.h ++ $(GCC) $(GCCFLAGS) -I/usr/include -D__powerpc__ -S tests.c -o tests-powerpc.s ++ ++tests-m88k.s : tests.c avcall.h ++ $(GCC) $(GCCFLAGS) -I/usr/include -D__m88k__ -S tests.c -o tests-m88k.s ++ ++tests-convex.s : tests.c avcall.h ++ $(GCC) $(GCCFLAGS) -I/usr/include -D__convex__ -S tests.c -o tests-convex.s ++ ++tests-ia64.s : tests.c avcall.h ++ $(GCC) $(GCCFLAGS) -I/usr/include -D__ia64__ -S tests.c -o tests-ia64.s ++ ++tests-x86_64.s : tests.c avcall.h ++ $(GCC) $(GCCFLAGS) -I/usr/include -D__x86_64__ -S tests.c -o tests-x86_64.s + diff --git a/ffcall-avcall-sparc64.c.patch b/ffcall-avcall-sparc64.c.patch new file mode 100644 index 0000000..d856d97 --- /dev/null +++ b/ffcall-avcall-sparc64.c.patch @@ -0,0 +1,133 @@ +--- ffcall-20091110cvs.orig/avcall/avcall-sparc64.c 2005-05-23 12:17:21.000000000 +0200 ++++ ffcall-20091110cvs/avcall/avcall-sparc64.c 2010-04-04 12:44:30.460013164 +0200 +@@ -86,7 +86,6 @@ + #define RETURN(TYPE,VAL) (*(TYPE*)l->raddr = (TYPE)(VAL)) + #define OFFSETOF(struct,member) ((int)&(((struct*)0)->member)) + +-register void* callee __asm__("%g2"); /* any global or local register */ + register __avword o0 __asm__("%o0"); + register __avword o1 __asm__("%o1"); + register __avword o2 __asm__("%o2"); +@@ -102,83 +101,58 @@ __builtin_avcall(av_alist* l) + register double dret __asm__("%f0"); /* %f0,%f1 */ + + __avword trampoline[6]; /* room for a trampoline */ +- __avword space[__AV_ALIST_WORDS]; /* space for callee's stack frame */ +- __avword *argframe = sp + 17; /* stack offset for argument list */ + int arglen = l->aptr - l->args; + __avword i; + +- if (l->farg_mask) { +- /* push leading float args */ +- if (l->farg_mask & (1<<0)) +- __asm__("ld %1(%0),%%f1" : : "p" (l), "i" OFFSETOF(av_alist,args[0])); +- if (l->farg_mask & (1<<1)) +- __asm__("ld %1(%0),%%f3" : : "p" (l), "i" OFFSETOF(av_alist,args[1])); +- if (l->farg_mask & (1<<2)) +- __asm__("ld %1(%0),%%f5" : : "p" (l), "i" OFFSETOF(av_alist,args[2])); +- if (l->farg_mask & (1<<3)) +- __asm__("ld %1(%0),%%f7" : : "p" (l), "i" OFFSETOF(av_alist,args[3])); +- if (l->farg_mask & (1<<4)) +- __asm__("ld %1(%0),%%f9" : : "p" (l), "i" OFFSETOF(av_alist,args[4])); +- if (l->farg_mask & (1<<5)) +- __asm__("ld %1(%0),%%f11" : : "p" (l), "i" OFFSETOF(av_alist,args[5])); +- if (l->farg_mask & (1<<6)) +- __asm__("ld %1(%0),%%f13" : : "p" (l), "i" OFFSETOF(av_alist,args[6])); +- if (l->farg_mask & (1<<7)) +- __asm__("ld %1(%0),%%f15" : : "p" (l), "i" OFFSETOF(av_alist,args[7])); +- if (l->farg_mask & (1<<8)) +- __asm__("ld %1(%0),%%f17" : : "p" (l), "i" OFFSETOF(av_alist,args[8])); +- if (l->farg_mask & (1<<9)) +- __asm__("ld %1(%0),%%f19" : : "p" (l), "i" OFFSETOF(av_alist,args[9])); +- if (l->farg_mask & (1<<10)) +- __asm__("ld %1(%0),%%f21" : : "p" (l), "i" OFFSETOF(av_alist,args[10])); +- if (l->farg_mask & (1<<11)) +- __asm__("ld %1(%0),%%f23" : : "p" (l), "i" OFFSETOF(av_alist,args[11])); +- if (l->farg_mask & (1<<12)) +- __asm__("ld %1(%0),%%f25" : : "p" (l), "i" OFFSETOF(av_alist,args[12])); +- if (l->farg_mask & (1<<13)) +- __asm__("ld %1(%0),%%f27" : : "p" (l), "i" OFFSETOF(av_alist,args[13])); +- if (l->farg_mask & (1<<14)) +- __asm__("ld %1(%0),%%f29" : : "p" (l), "i" OFFSETOF(av_alist,args[14])); +- if (l->farg_mask & (1<<15)) +- __asm__("ld %1(%0),%%f31" : : "p" (l), "i" OFFSETOF(av_alist,args[15])); +- } + if (l->darg_mask) { +- /* push leading double args */ ++ /* push leading float/double args */ + if (l->darg_mask & (1<<0)) +- __asm__("ldd %1(%0),%%f0" : : "p" (l), "i" OFFSETOF(av_alist,args[0])); ++ __asm__("ldd [%0+%1],%%f0" : : "p" (l), "i" OFFSETOF(av_alist,args[0])); + if (l->darg_mask & (1<<1)) +- __asm__("ldd %1(%0),%%f2" : : "p" (l), "i" OFFSETOF(av_alist,args[1])); ++ __asm__("ldd [%0+%1],%%f2" : : "p" (l), "i" OFFSETOF(av_alist,args[1])); + if (l->darg_mask & (1<<2)) +- __asm__("ldd %1(%0),%%f4" : : "p" (l), "i" OFFSETOF(av_alist,args[2])); ++ __asm__("ldd [%0+%1],%%f4" : : "p" (l), "i" OFFSETOF(av_alist,args[2])); + if (l->darg_mask & (1<<3)) +- __asm__("ldd %1(%0),%%f6" : : "p" (l), "i" OFFSETOF(av_alist,args[3])); ++ __asm__("ldd [%0+%1],%%f6" : : "p" (l), "i" OFFSETOF(av_alist,args[3])); + if (l->darg_mask & (1<<4)) +- __asm__("ldd %1(%0),%%f8" : : "p" (l), "i" OFFSETOF(av_alist,args[4])); ++ __asm__("ldd [%0+%1],%%f8" : : "p" (l), "i" OFFSETOF(av_alist,args[4])); + if (l->darg_mask & (1<<5)) +- __asm__("ldd %1(%0),%%f10" : : "p" (l), "i" OFFSETOF(av_alist,args[5])); ++ __asm__("ldd [%0+%1],%%f10" : : "p" (l), "i" OFFSETOF(av_alist,args[5])); + if (l->darg_mask & (1<<6)) +- __asm__("ldd %1(%0),%%f12" : : "p" (l), "i" OFFSETOF(av_alist,args[6])); ++ __asm__("ldd [%0+%1],%%f12" : : "p" (l), "i" OFFSETOF(av_alist,args[6])); + if (l->darg_mask & (1<<7)) +- __asm__("ldd %1(%0),%%f14" : : "p" (l), "i" OFFSETOF(av_alist,args[7])); ++ __asm__("ldd [%0+%1],%%f14" : : "p" (l), "i" OFFSETOF(av_alist,args[7])); + if (l->darg_mask & (1<<8)) +- __asm__("ldd %1(%0),%%f16" : : "p" (l), "i" OFFSETOF(av_alist,args[8])); ++ __asm__("ldd [%0+%1],%%f16" : : "p" (l), "i" OFFSETOF(av_alist,args[8])); + if (l->darg_mask & (1<<9)) +- __asm__("ldd %1(%0),%%f18" : : "p" (l), "i" OFFSETOF(av_alist,args[9])); ++ __asm__("ldd [%0+%1],%%f18" : : "p" (l), "i" OFFSETOF(av_alist,args[9])); + if (l->darg_mask & (1<<10)) +- __asm__("ldd %1(%0),%%f20" : : "p" (l), "i" OFFSETOF(av_alist,args[10])); ++ __asm__("ldd [%0+%1],%%f20" : : "p" (l), "i" OFFSETOF(av_alist,args[10])); + if (l->darg_mask & (1<<11)) +- __asm__("ldd %1(%0),%%f22" : : "p" (l), "i" OFFSETOF(av_alist,args[11])); ++ __asm__("ldd [%0+%1],%%f22" : : "p" (l), "i" OFFSETOF(av_alist,args[11])); + if (l->darg_mask & (1<<12)) +- __asm__("ldd %1(%0),%%f24" : : "p" (l), "i" OFFSETOF(av_alist,args[12])); ++ __asm__("ldd [%0+%1],%%f24" : : "p" (l), "i" OFFSETOF(av_alist,args[12])); + if (l->darg_mask & (1<<13)) +- __asm__("ldd %1(%0),%%f26" : : "p" (l), "i" OFFSETOF(av_alist,args[13])); ++ __asm__("ldd [%0+%1],%%f26" : : "p" (l), "i" OFFSETOF(av_alist,args[13])); + if (l->darg_mask & (1<<14)) +- __asm__("ldd %1(%0),%%f28" : : "p" (l), "i" OFFSETOF(av_alist,args[14])); ++ __asm__("ldd [%0+%1],%%f28" : : "p" (l), "i" OFFSETOF(av_alist,args[14])); + if (l->darg_mask & (1<<15)) +- __asm__("ldd %1(%0),%%f30" : : "p" (l), "i" OFFSETOF(av_alist,args[15])); ++ __asm__("ldd [%0+%1],%%f30" : : "p" (l), "i" OFFSETOF(av_alist,args[15])); + } + +- { ++ if (arglen > 6) { ++ /* alloca space is separated from the extra outgoing args area by ++ * the area for compiler temps (addressable with postive offsets from sp) ++ * but they shouldn't be needed for this function, so, effectively, ++ * space returned by alloca is safe to use as the area for extra args. ++ */ ++ void *extra_args_area = __builtin_alloca(sizeof(__avword) * (arglen - 6)); ++ __avword *argframe = (__avword *)extra_args_area - 6; ++#if 0 ++ /* "by construction" */ ++ assert(argframe == (void *)((unsigned long)(sp + 16)+2047)); ++#endif ++ + int i; + for (i = 6; i < arglen; i++) /* push excess function args */ + argframe[i] = l->args[i]; +@@ -188,7 +162,7 @@ __builtin_avcall(av_alist* l) + i = ({ register __avword iret __asm__ ("%o0"); + iret = (*l->func)(l->args[0], l->args[1], l->args[2], + l->args[3], l->args[4], l->args[5]); +- asm ("nop"); /* struct returning functions skip this instruction */ ++ asm __volatile__("nop"); /* struct returning functions skip this instruction */ + iret; + }); + diff --git a/ffcall-avcall.h.in.patch b/ffcall-avcall.h.in.patch new file mode 100644 index 0000000..017e990 --- /dev/null +++ b/ffcall-avcall.h.in.patch @@ -0,0 +1,43 @@ +--- ffcall-20091110cvs.orig/avcall/avcall.h.in 2009-10-16 20:09:06.000000000 +0200 ++++ ffcall-20091110cvs/avcall/avcall.h.in 2010-04-04 12:43:50.500013405 +0200 +@@ -351,8 +351,7 @@ typedef struct + #if defined(__sparc64__) + /* store the floating-point arguments in an extra array */ + int anum; /* redundant: (LIST).aptr = &(LIST).args[(LIST).anum] */ +- unsigned int farg_mask; /* bitmask of those entries in farg[] which have a value */ +- unsigned int darg_mask; /* bitmask of those entries in args[] which have a double value */ ++ unsigned int darg_mask; /* bitmask of those entries in args[] which have a float or double value */ + #endif + #if defined(__ia64__) || defined(__x86_64__) + /* store the floating-point arguments in an extra array */ +@@ -436,7 +435,6 @@ typedef struct + #if defined(__sparc64__) + #define __av_start1(LIST) \ + (LIST).anum = 0, \ +- (LIST).farg_mask = 0, \ + (LIST).darg_mask = 0, \ + (LIST).aptr = &(LIST).args[0], \ + (LIST).eptr = &(LIST).args[__AV_ALIST_WORDS], +@@ -902,8 +900,8 @@ typedef struct + */ + #define av_float(LIST,VAL) \ + ((LIST).aptr >= __av_eptr(LIST) \ +- ? -1 : (((LIST).anum < 16 && ((LIST).farg_mask |= (1 << (LIST).anum))), \ +- (*(float*)(LIST).aptr = (float)(VAL)), \ ++ ? -1 : (((LIST).anum < 16 && ((LIST).darg_mask |= (1 << (LIST).anum))), \ ++ (((float*)(LIST).aptr)[1] = (float)(VAL)), \ + (LIST).anum++, \ + (LIST).aptr++, \ + 0)) +@@ -1332,10 +1330,8 @@ typedef struct + ? -1 : (ASSIGN(TYPE,TYPE_SIZE,TYPE_ALIGN,(void*)((__avword)(LIST).aptr-(TYPE_SIZE)),VAL),\ + (LIST).aptr = (__avword*)(((__avword)(LIST).aptr+sizeof(__avword)-1) & -(long)sizeof(__avword)),\ + ((LIST).anum < 16 \ +- && ((LIST).farg_mask |= (-1 << (LIST).anum), \ +- (LIST).darg_mask |= (-1 << (LIST).anum))), \ ++ && ((LIST).darg_mask |= (-1 << (LIST).anum))), \ + (LIST).anum += (((((TYPE_SIZE)+(TYPE_ALIGN)-1) & -(long)(TYPE_ALIGN)) + sizeof(__avword)-1) & -(long)sizeof(__avword))/sizeof(__avword),\ +- (LIST).farg_mask &= (1 << ((LIST).anum < 16 ? (LIST).anum : 16)) - 1, \ + (LIST).darg_mask &= (1 << ((LIST).anum < 16 ? (LIST).anum : 16)) - 1, \ + 0))) + #endif diff --git a/ffcall-vacall-Makefile.devel.patch b/ffcall-vacall-Makefile.devel.patch new file mode 100644 index 0000000..1b2431b --- /dev/null +++ b/ffcall-vacall-Makefile.devel.patch @@ -0,0 +1,257 @@ +--- ffcall.orig/vacall/Makefile.devel 2007-11-02 16:24:53.000000000 +0100 ++++ ffcall/vacall/Makefile.devel 2010-04-06 14:04:51.440013472 +0200 +@@ -12,8 +12,8 @@ ROFF_MAN = groff -Tascii -mandoc + all : vacall-i386-macro.S vacall-i386-msvc.c vacall-i386-mingw32.c vacall-m68k.mit.S vacall-m68k.mot.s vacall-mips.S vacall-mipsn32.S vacall-mips64.S vacall-sparc.S vacall-sparc64.S vacall-alpha.s vacall-hppa.s vacall-arm.S vacall-powerpc-aix.old.s vacall-powerpc-aix.new.s vacall-powerpc-sysv4.s vacall-powerpc-macos.s vacall-powerpc64.s vacall-m88k.s vacall-convex.s vacall-ia64.s vacall-x86_64.s vacall.man \ + vacall.h.msvc config.h.msvc vacall.h.mingw32 config.h.mingw32 + +-vacall-i386-macro.S : vacall-i386.c vacall.h.in asmi386.sh +- $(GCC) -V 2.7.2 -b i486-linuxaout $(GCCFLAGS) -D__i386__ -S vacall-i386.c -o vacall-i386.s ++vacall-i386-macro.S : vacall-i386.c vacall.h asmi386.sh ++ $(GCC) $(GCCFLAGS) -D__i386__ -S vacall-i386.c -o vacall-i386.s + (echo '#include "asmi386.h"' ; sed -e '/\.align.*,0x90$$/d' < vacall-i386.s | ./asmi386.sh) > vacall-i386-macro.S + $(RM) vacall-i386.s + +@@ -23,159 +23,133 @@ vacall-i386-msvc.c : vacall-i386-macro.S + vacall-i386-mingw32.c : vacall-i386-macro.S + (echo '#ifdef __MINGW32__' ; echo '#include "vacall.h"' ; echo '#endif' ; cat vacall-i386-macro.S) > vacall-i386-mingw32.c + +-vacall-m68k.mit.S : vacall-m68k.c vacall.h.in asmm68k.sh +- $(GCC) -V 2.95.2 -b m68k-sun $(GCCFLAGS) -D__m68k__ -S vacall-m68k.c -o vacall-m68k.mit.s ++vacall-m68k.mit.S : vacall-m68k.c vacall.h asmm68k.sh ++ $(GCC) $(GCCFLAGS) -D__m68k__ -S vacall-m68k.c -o vacall-m68k.mit.s + (echo '#include "asmm68k.h"' ; ./asmm68k.sh < vacall-m68k.mit.s) > vacall-m68k.mit.S + $(RM) vacall-m68k.mit.s + +-vacall-m68k.mot.s : vacall-m68k.c vacall.h.in +- $(GCC) -V 2.95.2 -b m68k-linux $(GCCFLAGS) -D__m68k__ -S vacall-m68k.c -o vacall-m68k.mot.s ++vacall-m68k.mot.s : vacall-m68k.c vacall.h ++ $(GCC) $(GCCFLAGS) -D__m68k__ -S vacall-m68k.c -o vacall-m68k.mot.s + +-vacall-mips.S : vacall-mips.c vacall.h.in asmmips.sh +- $(GCC) -V 2.95.2 -b mips-sgi $(GCCFLAGS) -D__mips__ -fno-omit-frame-pointer -S vacall-mips.c -o vacall-mips.s ++vacall-mips.S : vacall-mips.c vacall.h asmmips.sh ++ $(GCC) $(GCCFLAGS) -D__mips__ -fno-omit-frame-pointer -S vacall-mips.c -o vacall-mips.s + (echo '#include "asmmips.h"' ; ./asmmips.sh < vacall-mips.s) > vacall-mips.S + $(RM) vacall-mips.s + +-vacall-mipsn32.S : vacall-mipsn32.c vacall.h.in asmmips.sh +- $(GCC) -V 2.95.2 -b mips-sgi-irix6 $(GCCFLAGS) -D__mipsn32__ -S vacall-mipsn32.c -o vacall-mipsn32.s ++vacall-mipsn32.S : vacall-mipsn32.c vacall.h asmmips.sh ++ $(GCC) $(GCCFLAGS) -D__mipsn32__ -S vacall-mipsn32.c -o vacall-mipsn32.s + (echo '#include "asmmips.h"' ; $(SED) -e 's/\$$sp,\$$sp,192/$$sp,$$sp,256/' -e 's/\$$sp,192,/$$sp,256,/' < vacall-mipsn32.s | ./asmmips.sh) > vacall-mipsn32.S + $(RM) vacall-mipsn32.s + +-vacall-mips64.S : vacall-mips64.c vacall.h.in asmmips.sh +- $(GCC) -V 2.95.2 -b mips-sgi -mips3 -mlong64 $(GCCFLAGS) -U__mips__ -D__mips64__ -S vacall-mips64.c -o vacall-mips64.s ++vacall-mips64.S : vacall-mips64.c vacall.h asmmips.sh ++ $(GCC) $(GCCFLAGS) -U__mips__ -D__mips64__ -S vacall-mips64.c -o vacall-mips64.s + (echo '#include "asmmips.h"' ; ./asmmips.sh < vacall-mips64.s) > vacall-mips64.S + $(RM) vacall-mips64.s + +-vacall-sparc.S : vacall-sparc.c vacall.h.in asmsparc.sh +- $(GCC) -V 2.95.2 -b sparc-sun $(GCCFLAGS) -D__sparc__ -S vacall-sparc.c -o vacall-sparc.s ++vacall-sparc.S : vacall-sparc.c vacall.h asmsparc.sh ++ $(GCC) $(GCCFLAGS) -D__sparc__ -S vacall-sparc.c -o vacall-sparc.s + (echo '#include "asmsparc.h"' ; ./asmsparc.sh < vacall-sparc.s) > vacall-sparc.S + $(RM) vacall-sparc.s + +-vacall-sparc64.S : vacall-sparc64.c vacall.h.in asmsparc.sh +- sparc64-linux-gcc -V 2.95.2 -b sparc64-linux $(GCCFLAGS) -D__sparc64__ -S vacall-sparc64.c -o vacall-sparc64.s ++vacall-sparc64.S : vacall-sparc64.c vacall.h asmsparc.sh ++ $(GCC) $(GCCFLAGS) -D__sparc64__ -S vacall-sparc64.c -o vacall-sparc64.s + (echo '#include "asmsparc.h"' ; ./asmsparc64.sh < vacall-sparc64.s) > vacall-sparc64.S + $(RM) vacall-sparc64.s + +-vacall-alpha.s : vacall-alpha.c vacall.h.in +- $(GCC) -V 2.7.2 -b alpha-dec-osf $(GCCFLAGS) -D__alpha__ -S vacall-alpha.c -o vacall-alpha-temp.s ++vacall-alpha.s : vacall-alpha.c vacall.h ++ $(GCC) $(GCCFLAGS) -D__alpha__ -S vacall-alpha.c -o vacall-alpha-temp.s + cat < vacall-alpha-temp.s > vacall-alpha.s + $(RM) vacall-alpha-temp.s + +-vacall-hppa.s : vacall-hppa.c vacall.h.in +- $(GCC) -V 2.6.3 -b hppa1.0-hpux $(GCCFLAGS) -D__hppa__ -S vacall-hppa.c -o vacall-hppa.s ++vacall-hppa.s : vacall-hppa.c vacall.h ++ $(GCC) $(GCCFLAGS) -D__hppa__ -S vacall-hppa.c -o vacall-hppa.s + +-vacall-arm.S : vacall-arm.c vacall.h.in asmarm.sh +- $(GCC) -V 2.6.3 -b arm-acorn-riscix $(GCCFLAGS) -D__arm__ -S vacall-arm.c -o vacall-arm.s ++vacall-arm.S : vacall-arm.c vacall.h asmarm.sh ++ $(GCC) $(GCCFLAGS) -D__arm__ -S vacall-arm.c -o vacall-arm.s + (echo '#include "asmarm.h"' ; ./asmarm.sh < vacall-arm.s) > vacall-arm.S + $(RM) vacall-arm.s + +-vacall-powerpc-aix.old.s : vacall-powerpc.c vacall.h.in +- $(GCC) -V 2.95.2 -b rs6000 -mno-power -mno-power2 -mno-powerpc -mold-mnemonics $(GCCFLAGS) -D__powerpc__ -S vacall-powerpc.c -o vacall-powerpc-aix.old.s ++vacall-powerpc-aix.old.s : vacall-powerpc.c vacall.h ++ $(GCC) $(GCCFLAGS) -D__powerpc__ -S vacall-powerpc.c -o vacall-powerpc-aix.old.s + +-vacall-powerpc-aix.new.s : vacall-powerpc.c vacall.h.in +- $(GCC) -V 2.95.2 -b rs6000 -mno-power -mno-power2 -mno-powerpc -mnew-mnemonics $(GCCFLAGS) -D__powerpc__ -S vacall-powerpc.c -o vacall-powerpc-aix.new.s ++vacall-powerpc-aix.new.s : vacall-powerpc.c vacall.h ++ $(GCC) $(GCCFLAGS) -D__powerpc__ -S vacall-powerpc.c -o vacall-powerpc-aix.new.s + +-vacall-powerpc-sysv4.s : vacall-powerpc.c vacall.h.in +- $(GCC) -V 2.95.2 -b ppc-linux -mno-power -mno-power2 -mno-powerpc $(GCCFLAGS) -D__powerpc__ -S vacall-powerpc.c -o vacall-powerpc-sysv4.s ++vacall-powerpc-sysv4.s : vacall-powerpc.c vacall.h ++ $(GCC) $(GCCFLAGS) -D__powerpc__ -S vacall-powerpc.c -o vacall-powerpc-sysv4.s + +-vacall-powerpc-macos.s : vacall-powerpc.c vacall.h.in +- $(GCC) -V 3.3.2 -b powerpc-darwin $(GCCFLAGS) -D__powerpc__ -S vacall-powerpc.c -o vacall-powerpc-macos.s ++vacall-powerpc-macos.s : vacall-powerpc.c vacall.h ++ $(GCC) $(GCCFLAGS) -D__powerpc__ -S vacall-powerpc.c -o vacall-powerpc-macos.s + +-vacall-powerpc64.s : vacall-powerpc64.c vacall.h.in +- /cross/powerpc64-linux-tools/bin/powerpc64-linux-gcc $(GCCFLAGS) -D__powerpc64__ -S vacall-powerpc64.c -o vacall-powerpc64.s ++vacall-powerpc64.s : vacall-powerpc64.c vacall.h ++ $(GCC) $(GCCFLAGS) -D__powerpc64__ -S vacall-powerpc64.c -o vacall-powerpc64.s + +-vacall-m88k.s : vacall-m88k.c vacall.h.in +- $(GCC) -V 2.95.2 -b m88k-dgux $(GCCFLAGS) -D__m88k__ -S vacall-m88k.c -o vacall-m88k.s ++vacall-m88k.s : vacall-m88k.c vacall.h ++ $(GCC) $(GCCFLAGS) -D__m88k__ -S vacall-m88k.c -o vacall-m88k.s + +-vacall-convex.s : vacall-convex.c vacall.h.in +- $(GCC) -V 2.6.3 -b convex-c2 $(GCCFLAGS) -D__convex__ -S vacall-convex.c -o vacall-convex.s ++vacall-convex.s : vacall-convex.c vacall.h ++ $(GCC) $(GCCFLAGS) -D__convex__ -S vacall-convex.c -o vacall-convex.s + +-vacall-ia64.s : vacall-ia64.c vacall.h.in +- $(GCC) -V 2.9-ia64-000216 -b ia64-hp-linux $(GCCFLAGS) -D__ia64__ -S vacall-ia64.c -o vacall-ia64.s ++vacall-ia64.s : vacall-ia64.c vacall.h ++ $(GCC) $(GCCFLAGS) -D__ia64__ -S vacall-ia64.c -o vacall-ia64.s + +-vacall-x86_64.s : vacall-x86_64.c vacall.h.in +- $(GCC) -V 3.2.2 -b x86_64-suse-linux $(GCCFLAGS) -D__x86_64__ -S vacall-x86_64.c -o vacall-x86_64.s ++vacall-x86_64.s : vacall-x86_64.c vacall.h ++ $(GCC) $(GCCFLAGS) -D__x86_64__ -S vacall-x86_64.c -o vacall-x86_64.s + + vacall.man : vacall.3 + $(ROFF_MAN) vacall.3 > vacall.man + +-vacall.h.msvc : vacall.h.in +- sed -e 's,^#undef __i386__$$,#define __i386__ 1,' -e 's,^#undef __SMALL_STRUCT_RETURN__$$,#define __SMALL_STRUCT_RETURN__ 1,' < vacall.h.in > vacall.h.msvc ++vacall.h.msvc : vacall.h ++ sed -e 's,^#undef __i386__$$,#define __i386__ 1,' -e 's,^#undef __SMALL_STRUCT_RETURN__$$,#define __SMALL_STRUCT_RETURN__ 1,' < vacall.h > vacall.h.msvc + +-vacall.h.mingw32 : vacall.h.in +- sed -e 's,^#undef __i386__$$,#define __i386__ 1,' -e 's,^#undef __SMALL_STRUCT_RETURN__$$,#define __SMALL_STRUCT_RETURN__ 1,' < vacall.h.in > vacall.h.mingw32 ++vacall.h.mingw32 : vacall.h ++ sed -e 's,^#undef __i386__$$,#define __i386__ 1,' -e 's,^#undef __SMALL_STRUCT_RETURN__$$,#define __SMALL_STRUCT_RETURN__ 1,' < vacall.h > vacall.h.mingw32 + +-config.h.msvc : config.h.in +- cp config.h.in config.h.msvc ++config.h.msvc : config.h ++ cp config.h config.h.msvc + +-config.h.mingw32 : config.h.in +- cp config.h.in config.h.mingw32 ++config.h.mingw32 : config.h ++ cp config.h config.h.mingw32 + + tests : tests-i386.s tests-m68k.s tests-mips.s tests-sparc.s tests-alpha.s tests-hppa.s tests-arm.s tests-powerpc.s tests-powerpc64.s tests-m88k.s tests-convex.s tests-ia64.s tests-x86_64.s + true + +-tests-i386.s : tests.c vacall.h.in +- $(LN) vacall.h.in vacall.h +- $(GCC) -V 2.7.2 -b i486-linuxaout $(GCCFLAGS) -I/usr/include -D__i386__ -S tests.c -o tests-i386.s +- $(RM) vacall.h +- +-tests-m68k.s : tests.c vacall.h.in +- $(LN) vacall.h.in vacall.h +- $(GCC) -V 2.95.2 -b m68k-sun $(GCCFLAGS) -I/usr/include -D__m68k__ -S tests.c -o tests-m68k.s +- $(RM) vacall.h +- +-tests-mips.s : tests.c vacall.h.in +- $(LN) vacall.h.in vacall.h +- $(GCC) -V 2.95.2 -b mips-sgi $(GCCFLAGS) -I/usr/include -D__mips__ -S tests.c -o tests-mips.s +- $(RM) vacall.h +- +-tests-sparc.s : tests.c vacall.h.in +- $(LN) vacall.h.in vacall.h +- $(GCC) -V 2.95.2 -b sparc-sun $(GCCFLAGS) -I/usr/include -D__sparc__ -S tests.c -o tests-sparc.s +- $(RM) vacall.h +- +-tests-alpha.s : tests.c vacall.h.in +- $(LN) vacall.h.in vacall.h +- $(GCC) -V 2.7.2 -b alpha-dec-osf $(GCCFLAGS) -I/usr/include -D__alpha__ -S tests.c -o tests-alpha.s +- $(RM) vacall.h +- +-tests-hppa.s : tests.c vacall.h.in +- $(LN) vacall.h.in vacall.h +- $(GCC) -V 2.6.3 -b hppa1.0-hpux $(GCCFLAGS) -I/usr/include -D__hppa__ -S tests.c -o tests-hppa.s +- $(RM) vacall.h +- +-tests-arm.s : tests.c vacall.h.in +- $(LN) vacall.h.in vacall.h +- $(GCC) -V 2.6.3 -b arm-acorn-riscix $(GCCFLAGS) -I/usr/include -D__arm__ -S tests.c -o tests-arm.s +- $(RM) vacall.h +- +-tests-powerpc.s : tests.c vacall.h.in +- $(LN) vacall.h.in vacall.h +- $(GCC) -V 2.95.2 -b rs6000 $(GCCFLAGS) -I/usr/include -D__powerpc__ -S tests.c -o tests-powerpc.s +- $(RM) vacall.h +- +-tests-powerpc64.s : tests.c vacall.h.in +- $(LN) vacall.h.in vacall.h +- /cross/powerpc64-linux-tools/bin/powerpc64-linux-gcc $(GCCFLAGS) -I/usr/include -D__powerpc64__ -S tests.c -o tests-powerpc64.s +- $(RM) vacall.h +- +-tests-m88k.s : tests.c vacall.h.in +- $(LN) vacall.h.in vacall.h +- $(GCC) -V 2.95.2 -b m88k-dgux $(GCCFLAGS) -I/usr/include -D__m88k__ -S tests.c -o tests-m88k.s +- $(RM) vacall.h +- +-tests-convex.s : tests.c vacall.h.in +- $(LN) vacall.h.in vacall.h +- $(GCC) -V 2.6.3 -b convex-c2 $(GCCFLAGS) -I/usr/include -D__convex__ -S tests.c -o tests-convex.s +- $(RM) vacall.h +- +-tests-ia64.s : tests.c vacall.h.in +- $(LN) vacall.h.in vacall.h +- $(GCC) -V 2.9-ia64-000216 -b ia64-hp-linux $(GCCFLAGS) -I/usr/include -D__ia64__ -S tests.c -o tests-ia64.s +- $(RM) vacall.h +- +-tests-x86_64.s : tests.c vacall.h.in +- $(LN) vacall.h.in vacall.h +- $(GCC) -V 3.2.2 -b x86_64-suse-linux $(GCCFLAGS) -I/usr/include -D__x86_64__ -S tests.c -o tests-x86_64.s +- $(RM) vacall.h ++tests-i386.s : tests.c vacall.h ++ $(GCC) $(GCCFLAGS) -I/usr/include -D__i386__ -S tests.c -o tests-i386.s ++ ++tests-m68k.s : tests.c vacall.h ++ $(GCC) $(GCCFLAGS) -I/usr/include -D__m68k__ -S tests.c -o tests-m68k.s ++ ++tests-mips.s : tests.c vacall.h ++ $(GCC) $(GCCFLAGS) -I/usr/include -D__mips__ -S tests.c -o tests-mips.s ++ ++tests-sparc.s : tests.c vacall.h ++ $(GCC) $(GCCFLAGS) -I/usr/include -D__sparc__ -S tests.c -o tests-sparc.s ++ ++tests-alpha.s : tests.c vacall.h ++ $(GCC) $(GCCFLAGS) -I/usr/include -D__alpha__ -S tests.c -o tests-alpha.s ++ ++tests-hppa.s : tests.c vacall.h ++ $(GCC) $(GCCFLAGS) -I/usr/include -D__hppa__ -S tests.c -o tests-hppa.s ++ ++tests-arm.s : tests.c vacall.h ++ $(GCC) $(GCCFLAGS) -I/usr/include -D__arm__ -S tests.c -o tests-arm.s ++ ++tests-powerpc.s : tests.c vacall.h ++ $(GCC) $(GCCFLAGS) -I/usr/include -D__powerpc__ -S tests.c -o tests-powerpc.s ++ ++tests-powerpc64.s : tests.c vacall.h ++ $(GCC) $(GCCFLAGS) -I/usr/include -D__powerpc64__ -S tests.c -o tests-powerpc64.s ++ ++tests-m88k.s : tests.c vacall.h ++ $(GCC) $(GCCFLAGS) -I/usr/include -D__m88k__ -S tests.c -o tests-m88k.s ++ ++tests-convex.s : tests.c vacall.h ++ $(GCC) $(GCCFLAGS) -I/usr/include -D__convex__ -S tests.c -o tests-convex.s ++ ++tests-ia64.s : tests.c vacall.h ++ $(GCC) $(GCCFLAGS) -I/usr/include -D__ia64__ -S tests.c -o tests-ia64.s ++ ++tests-x86_64.s : tests.c vacall.h ++ $(GCC) $(GCCFLAGS) -I/usr/include -D__x86_64__ -S tests.c -o tests-x86_64.s + diff --git a/ffcall-vacall_r-Makefile.devel.patch b/ffcall-vacall_r-Makefile.devel.patch new file mode 100644 index 0000000..fe0e99f --- /dev/null +++ b/ffcall-vacall_r-Makefile.devel.patch @@ -0,0 +1,157 @@ +--- ffcall.orig/callback/vacall_r/Makefile.devel 2007-11-02 16:24:53.000000000 +0100 ++++ ffcall/callback/vacall_r/Makefile.devel 2010-04-06 14:04:31.740013296 +0200 +@@ -12,8 +12,8 @@ ROFF_MAN = groff -Tascii -mandoc + all : vacall-i386-macro.S vacall-i386-msvc.c vacall-i386-mingw32.c vacall-m68k.mit.S vacall-m68k.mot.s vacall-m68k-netbsd.S vacall-mips.S vacall-mipsn32.S vacall-mips64.S vacall-sparc.S vacall-sparc64.S vacall-alpha.s vacall-hppa.s vacall-arm.S vacall-powerpc-aix.old.s vacall-powerpc-aix.new.s vacall-powerpc-sysv4.s vacall-powerpc-macos.s vacall-powerpc64.s vacall-m88k.s vacall-convex.s vacall-ia64.s vacall-x86_64.s \ + vacall_r.h.msvc config.h.msvc vacall_r.h.mingw32 config.h.mingw32 + +-vacall-i386-macro.S : vacall-i386.c vacall_r.h.in asmi386.sh +- $(GCC) -V 2.7.2 -b i486-linuxaout $(GCCFLAGS) -D__i386__ -S vacall-i386.c -o vacall-i386.s ++vacall-i386-macro.S : vacall-i386.c vacall_r.h asmi386.sh ++ $(GCC) $(GCCFLAGS) -D__i386__ -S vacall-i386.c -o vacall-i386.s + (echo '#include "asmi386.h"' ; sed -e '/\.align.*,0x90$$/d' < vacall-i386.s | ./asmi386.sh) > vacall-i386-macro.S + $(RM) vacall-i386.s + +@@ -23,95 +23,95 @@ vacall-i386-msvc.c : vacall-i386-macro.S + vacall-i386-mingw32.c : vacall-i386-macro.S + (echo '#ifdef __MINGW32__' ; echo '#include "vacall_r.h"' ; echo '#endif' ; cat vacall-i386-macro.S) > vacall-i386-mingw32.c + +-vacall-m68k.mit.S : vacall-m68k.c vacall_r.h.in asmm68k.sh +- $(GCC) -V 2.95.2 -b m68k-sun $(GCCFLAGS) -D__m68k__ -S vacall-m68k.c -o vacall-m68k.mit.s ++vacall-m68k.mit.S : vacall-m68k.c vacall_r.h asmm68k.sh ++ $(GCC) $(GCCFLAGS) -D__m68k__ -S vacall-m68k.c -o vacall-m68k.mit.s + (echo '#include "asmm68k.h"' ; ./asmm68k.sh < vacall-m68k.mit.s) > vacall-m68k.mit.S + $(RM) vacall-m68k.mit.s + +-vacall-m68k.mot.s : vacall-m68k.c vacall_r.h.in +- $(GCC) -V 2.95.2 -b m68k-linux $(GCCFLAGS) -D__m68k__ -S vacall-m68k.c -o vacall-m68k.mot.s ++vacall-m68k.mot.s : vacall-m68k.c vacall_r.h ++ $(GCC) $(GCCFLAGS) -D__m68k__ -S vacall-m68k.c -o vacall-m68k.mot.s + +-vacall-m68k-netbsd.S : vacall-m68k.c vacall_r.h.in +- $(GCC) -V 2.95.2 -b m68k-sun $(GCCFLAGS) -D__m68k__ -D__NetBSD__ -S vacall-m68k.c -o vacall-m68k-netbsd.s ++vacall-m68k-netbsd.S : vacall-m68k.c vacall_r.h ++ $(GCC) $(GCCFLAGS) -D__m68k__ -D__NetBSD__ -S vacall-m68k.c -o vacall-m68k-netbsd.s + (echo '#include "asmm68k.h"' ; ./asmm68k.sh < vacall-m68k-netbsd.s) > vacall-m68k-netbsd.S + $(RM) vacall-m68k-netbsd.s + +-vacall-mips.S : vacall-mips.c vacall_r.h.in asmmips.sh +- $(GCC) -V 2.95.2 -b mips-sgi $(GCCFLAGS) -D__mips__ -fno-omit-frame-pointer -S vacall-mips.c -o vacall-mips.s ++vacall-mips.S : vacall-mips.c vacall_r.h asmmips.sh ++ $(GCC) $(GCCFLAGS) -D__mips__ -fno-omit-frame-pointer -S vacall-mips.c -o vacall-mips.s + (echo '#include "asmmips.h"' ; ./asmmips.sh < vacall-mips.s) > vacall-mips.S + $(RM) vacall-mips.s + +-vacall-mipsn32.S : vacall-mipsn32.c vacall_r.h.in asmmips.sh +- $(GCC) -V 2.95.2 -b mips-sgi-irix6 $(GCCFLAGS) -D__mipsn32__ -S vacall-mipsn32.c -o vacall-mipsn32.s ++vacall-mipsn32.S : vacall-mipsn32.c vacall_r.h asmmips.sh ++ $(GCC) $(GCCFLAGS) -D__mipsn32__ -S vacall-mipsn32.c -o vacall-mipsn32.s + (echo '#include "asmmips.h"' ; $(SED) -e 's/\$$sp,\$$sp,192/$$sp,$$sp,256/' -e 's/\$$sp,192,/$$sp,256,/' < vacall-mipsn32.s | ./asmmips.sh) > vacall-mipsn32.S + $(RM) vacall-mipsn32.s + +-vacall-mips64.S : vacall-mips64.c vacall_r.h.in asmmips.sh +- $(GCC) -V 2.95.2 -b mips-sgi -mips3 -mlong64 $(GCCFLAGS) -U__mips__ -D__mips64__ -S vacall-mips64.c -o vacall-mips64.s ++vacall-mips64.S : vacall-mips64.c vacall_r.h asmmips.sh ++ $(GCC) $(GCCFLAGS) -U__mips__ -D__mips64__ -S vacall-mips64.c -o vacall-mips64.s + (echo '#include "asmmips.h"' ; ./asmmips.sh < vacall-mips64.s) > vacall-mips64.S + $(RM) vacall-mips64.s + +-vacall-sparc.S : vacall-sparc.c vacall_r.h.in asmsparc.sh +- $(GCC) -V 2.95.2 -b sparc-sun $(GCCFLAGS) -D__sparc__ -S vacall-sparc.c -o vacall-sparc.s ++vacall-sparc.S : vacall-sparc.c vacall_r.h asmsparc.sh ++ $(GCC) $(GCCFLAGS) -D__sparc__ -S vacall-sparc.c -o vacall-sparc.s + (echo '#include "asmsparc.h"' ; ./asmsparc.sh < vacall-sparc.s) > vacall-sparc.S + $(RM) vacall-sparc.s + +-vacall-sparc64.S : vacall-sparc64.c vacall_r.h.in asmsparc.sh +- sparc64-linux-gcc -V 2.95.2 -b sparc64-linux $(GCCFLAGS) -D__sparc64__ -S vacall-sparc64.c -o vacall-sparc64.s ++vacall-sparc64.S : vacall-sparc64.c vacall_r.h asmsparc.sh ++ $(GCC) $(GCCFLAGS) -D__sparc64__ -S vacall-sparc64.c -o vacall-sparc64.s + (echo '#include "asmsparc.h"' ; ./asmsparc64.sh < vacall-sparc64.s) > vacall-sparc64.S + $(RM) vacall-sparc64.s + +-vacall-alpha.s : vacall-alpha.c vacall_r.h.in +- $(GCC) -V 2.7.2 -b alpha-dec-osf $(GCCFLAGS) -D__alpha__ -S vacall-alpha.c -o vacall-alpha-temp.s ++vacall-alpha.s : vacall-alpha.c vacall_r.h ++ $(GCC) $(GCCFLAGS) -D__alpha__ -S vacall-alpha.c -o vacall-alpha-temp.s + $(SED) -e '/ldgp/d' < vacall-alpha-temp.s > vacall-alpha.s + $(RM) vacall-alpha-temp.s + +-vacall-hppa.s : vacall-hppa.c vacall_r.h.in +- $(GCC) -V 2.6.3 -b hppa1.0-hpux $(GCCFLAGS) -D__hppa__ -S vacall-hppa.c -o vacall-hppa.s ++vacall-hppa.s : vacall-hppa.c vacall_r.h ++ $(GCC) $(GCCFLAGS) -D__hppa__ -S vacall-hppa.c -o vacall-hppa.s + +-vacall-arm.S : vacall-arm.c vacall_r.h.in asmarm.sh +- $(GCC) -V 2.6.3 -b arm-acorn-riscix $(GCCFLAGS) -D__arm__ -S vacall-arm.c -o vacall-arm.s ++vacall-arm.S : vacall-arm.c vacall_r.h asmarm.sh ++ $(GCC) $(GCCFLAGS) -D__arm__ -S vacall-arm.c -o vacall-arm.s + (echo '#include "asmarm.h"' ; ./asmarm.sh < vacall-arm.s) > vacall-arm.S + $(RM) vacall-arm.s + +-vacall-powerpc-aix.old.s : vacall-powerpc.c vacall_r.h.in +- $(GCC) -V 2.95.2 -b rs6000 -mno-power -mno-power2 -mno-powerpc -mold-mnemonics $(GCCFLAGS) -D__powerpc__ -S vacall-powerpc.c -o vacall-powerpc-aix.old.s ++vacall-powerpc-aix.old.s : vacall-powerpc.c vacall_r.h ++ $(GCC) $(GCCFLAGS) -D__powerpc__ -S vacall-powerpc.c -o vacall-powerpc-aix.old.s + +-vacall-powerpc-aix.new.s : vacall-powerpc.c vacall_r.h.in +- $(GCC) -V 2.95.2 -b rs6000 -mno-power -mno-power2 -mno-powerpc -mnew-mnemonics $(GCCFLAGS) -D__powerpc__ -S vacall-powerpc.c -o vacall-powerpc-aix.new.s ++vacall-powerpc-aix.new.s : vacall-powerpc.c vacall_r.h ++ $(GCC) $(GCCFLAGS) -D__powerpc__ -S vacall-powerpc.c -o vacall-powerpc-aix.new.s + +-vacall-powerpc-sysv4.s : vacall-powerpc.c vacall_r.h.in +- $(GCC) -V 2.95.2 -b ppc-linux -mno-power -mno-power2 -mno-powerpc $(GCCFLAGS) -D__powerpc__ -S vacall-powerpc.c -o vacall-powerpc-sysv4.s ++vacall-powerpc-sysv4.s : vacall-powerpc.c vacall_r.h ++ $(GCC) $(GCCFLAGS) -D__powerpc__ -S vacall-powerpc.c -o vacall-powerpc-sysv4.s + +-vacall-powerpc-macos.s : vacall-powerpc.c vacall_r.h.in +- $(GCC) -V 3.3.2 -b powerpc-darwin $(GCCFLAGS) -D__powerpc__ -S vacall-powerpc.c -o vacall-powerpc-macos.s ++vacall-powerpc-macos.s : vacall-powerpc.c vacall_r.h ++ $(GCC) $(GCCFLAGS) -D__powerpc__ -S vacall-powerpc.c -o vacall-powerpc-macos.s + +-vacall-powerpc64.s : vacall-powerpc64.c vacall_r.h.in +- /cross/powerpc64-linux-tools/bin/powerpc64-linux-gcc $(GCCFLAGS) -D__powerpc64__ -S vacall-powerpc64.c -o vacall-powerpc64.s ++vacall-powerpc64.s : vacall-powerpc64.c vacall_r.h ++ $(GCC) $(GCCFLAGS) -D__powerpc64__ -S vacall-powerpc64.c -o vacall-powerpc64.s + +-vacall-m88k.s : vacall-m88k.c vacall_r.h.in +- $(GCC) -V 2.95.2 -b m88k-dgux $(GCCFLAGS) -D__m88k__ -S vacall-m88k.c -o vacall-m88k.s ++vacall-m88k.s : vacall-m88k.c vacall_r.h ++ $(GCC) $(GCCFLAGS) -D__m88k__ -S vacall-m88k.c -o vacall-m88k.s + +-vacall-convex.s : vacall-convex.c vacall_r.h.in +- $(GCC) -V 2.6.3 -b convex-c2 $(GCCFLAGS) -D__convex__ -S vacall-convex.c -o vacall-convex.s ++vacall-convex.s : vacall-convex.c vacall_r.h ++ $(GCC) $(GCCFLAGS) -D__convex__ -S vacall-convex.c -o vacall-convex.s + +-vacall-ia64.s : vacall-ia64.c vacall_r.h.in +- $(GCC) -V 2.9-ia64-000216 -b ia64-hp-linux $(GCCFLAGS) -D__ia64__ -S vacall-ia64.c -o vacall-ia64.s ++vacall-ia64.s : vacall-ia64.c vacall_r.h ++ $(GCC) $(GCCFLAGS) -D__ia64__ -S vacall-ia64.c -o vacall-ia64.s + +-vacall-x86_64.s : vacall-x86_64.c vacall_r.h.in +- $(GCC) -V 3.2.2 -b x86_64-suse-linux $(GCCFLAGS) -D__x86_64__ -S vacall-x86_64.c -o vacall-x86_64.s ++vacall-x86_64.s : vacall-x86_64.c vacall_r.h ++ $(GCC) $(GCCFLAGS) -D__x86_64__ -S vacall-x86_64.c -o vacall-x86_64.s + + vacall_r.man : vacall_r.3 + $(ROFF_MAN) vacall_r.3 > vacall_r.man + +-vacall_r.h.msvc : vacall_r.h.in +- sed -e 's,^#undef __i386__$$,#define __i386__ 1,' -e 's,^#undef __SMALL_STRUCT_RETURN__$$,#define __SMALL_STRUCT_RETURN__ 1,' < vacall_r.h.in > vacall_r.h.msvc ++vacall_r.h.msvc : vacall_r.h ++ sed -e 's,^#undef __i386__$$,#define __i386__ 1,' -e 's,^#undef __SMALL_STRUCT_RETURN__$$,#define __SMALL_STRUCT_RETURN__ 1,' < vacall_r.h > vacall_r.h.msvc + +-vacall_r.h.mingw32 : vacall_r.h.in +- sed -e 's,^#undef __i386__$$,#define __i386__ 1,' -e 's,^#undef __SMALL_STRUCT_RETURN__$$,#define __SMALL_STRUCT_RETURN__ 1,' < vacall_r.h.in > vacall_r.h.mingw32 ++vacall_r.h.mingw32 : vacall_r.h ++ sed -e 's,^#undef __i386__$$,#define __i386__ 1,' -e 's,^#undef __SMALL_STRUCT_RETURN__$$,#define __SMALL_STRUCT_RETURN__ 1,' < vacall_r.h > vacall_r.h.mingw32 + +-config.h.msvc : config.h.in +- cp config.h.in config.h.msvc ++config.h.msvc : config.h ++ cp config.h config.h.msvc + +-config.h.mingw32 : config.h.in +- cp config.h.in config.h.mingw32 ++config.h.mingw32 : config.h ++ cp config.h config.h.mingw32 diff --git a/ffcall.spec b/ffcall.spec index 21decbc..e037ea6 100644 --- a/ffcall.spec +++ b/ffcall.spec @@ -1,6 +1,6 @@ Name: ffcall Version: 1.10 -Release: 4.20080704cvs%{?dist}.1 +Release: 5.20080704cvs%{?dist}.1 Summary: Libraries for foreign function call interfaces Group: System Environment/Libraries @@ -9,6 +9,11 @@ URL: http://www.haible.de/bruno/packages-ffcall-README.html Source0: ftp://ftp.santafe.edu/pub/gnu/ffcall-20080704cvs.tar.bz2 BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) +Patch0: ffcall-vacall-Makefile.devel.patch +Patch1: ffcall-avcall-Makefile.devel.patch +Patch2: ffcall-vacall_r-Makefile.devel.patch +Patch3: ffcall-avcall-sparc64.c.patch +Patch4: ffcall-avcall.h.in.patch %description This is a collection of four libraries which can be used to build @@ -18,10 +23,33 @@ foreign function call interfaces in embedded interpreters. %prep %setup -q -n ffcall +%patch0 -p1 +%patch1 -p1 +%patch2 -p1 +%patch3 -p1 +%patch4 -p1 %build export CFLAGS="$RPM_OPT_FLAGS -fPIC" %configure + +%ifarch sparc64 +cd vacall +rm vacall-sparc64.S +make -f Makefile.devel vacall-sparc64.S +cd .. + +cd avcall +rm avcall-sparc64.S +make -f Makefile.devel avcall-sparc64.S +cd .. + +cd callback/vacall_r/ +rm vacall-sparc64.S +make -f Makefile.devel vacall-sparc64.S +cd ../../ +%endif + make # %{?_smp_mflags} %install @@ -49,6 +77,27 @@ rm -rf $RPM_BUILD_ROOT %changelog +* Tue Apr 6 2010 Patrick Ale +- Add Patch0: ffcall-vacall-Makefile.devel.patch + Use native gcc shipped with distribution for all compile actions in Makefile.devel + Depend on configure generated vacall.h instead of unprocessed vacall.h.in + Depend on configure generated config.h instead of unprocessed config.h.in +- Add Patch1: ffcall-avcall-Makefile.devel.patch + Use native gcc shipped with distribution for all compile actions in Makefile.devel + Depend on configure generated vacall.h instead of unprocessed vacall.h.in + Depend on configure generated config.h instead of unprocessed config.h.in +- Add Patch2: ffcall-vacall_r-Makefile.devel.patch + Use native gcc shipped with distribution for all compile actions in Makefile.devel + Depend on configure generated vacall.h instead of unprocessed vacall.h.in + Depend on configure generated config.h instead of unprocessed config.h.in +- Add Patch3: ffcall-avcall-sparc64.c.patch + Code fixes to make avcall-sparc64.c compile on sparc64. + Patch cherry picked from http://savannah.gnu.org/bugs/?22081 +- Add Patch4: ffcall-avcall.h.in.patch + Code fixes to make avcall-sparc64 compile on sparc64. +- ffcall.spec: Add implementation of Patch0,Patch1,Patch2,Patch3,Patch4. + Add %ifarch block for sparc64 to remove pregenerated assembly and regenerate using native compiler. + * Fri Jul 24 2009 Fedora Release Engineering - 1.10-4.20080704cvs.1 - Rebuilt for https://fedoraproject.org/wiki/Fedora_12_Mass_Rebuild