On Apr 11, 2007, at 10:38 PM, Gary Byers wrote:
Are you trying to load a 32-bit foreign library in a 64-bit lisp ? (I don't know what "libtest.so" is, but the value of CFFI::ARGUMENTS in frame 0 makes me wonder about that.)
If this is the problem, I imagine that the CFFI test suite has options to generate 64-bit test libraries; I seem to remember a similar issue with ppc64.
In the shell,
shell> file /path/to/libtest.so
or
shell> lipo /path/to/libtest.so -info
might help to determine the architecture of the library.
How right you are...
~/lisp/Lisp_Sources/site/cffi/tests $ file libtest.so libtest.so: Mach-O bundle i386 ~/lisp/Lisp_Sources/site/cffi/tests $ file libtest2.so libtest2.so: Mach-O bundle i386 ~/lisp/Lisp_Sources/site/cffi/tests $ lipo libtest.so -info Non-fat file: libtest.so is architecture: i386 ~/lisp/Lisp_Sources/site/cffi/tests $ lipo libtest2.so -info Non-fat file: libtest2.so is architecture: i386
I added a -m64 flag to the makefile for the test libs, now they are
~/lisp/Lisp_Sources/site/cffi/tests $ lipo libtest2.so -info Non-fat file: libtest2.so is architecture: x86_64 ~/lisp/Lisp_Sources/site/cffi/tests $ lipo libtest.so -info Non-fat file: libtest.so is architecture: x86_64 ~/lisp/Lisp_Sources/site/cffi/tests $ file libtest2.so libtest2.so: Mach-O 64-bit bundle x86_64
CFFI-tests now infini-loops with cpu usage at 100% while compiling the file calbacks.lisp (that is a problem for another night...), however if I interrupt and do the following...
CL-USER> (asdf:oos 'asdf:load-op 'cffi-tests) ; loading system definition from /Users/hirvine/lisp/Lisp_Sources/ systems/cffi-tests.asd into #<Package "ASDF0"> ; registering #<SYSTEM CFFI-TESTS #x30004114729D> as CFFI-TESTS ; loading system definition from /Users/hirvine/lisp/Lisp_Sources/ systems/rt.asd into #<Package "ASDF0"> ; registering #<SYSTEM :RT #x30004119034D> as RT ; loading system definition from /Users/hirvine/lisp/Lisp_Sources/ systems/cffi.asd into #<Package "ASDF0"> ; registering #<SYSTEM CFFI #x3000411AB2CD> as CFFI ; $ cd /Users/hirvine/lisp/Lisp_Sources/site/cffi/tests/; make make: Nothing to be done for `shlibs'. Invoking restart: Skip compiling #P"/Users/hirvine/lisp/Lisp_Sources/ site/cffi/tests/callbacks.lisp" Invoking restart: Continue, treating #<COMPILE-OP NIL #x300040FFF4FD> on #<CL-SOURCE-FILE "callbacks" #x3000410048FD> as having been successful. Invoking restart: Skip loading #P"/Users/hirvine/lisp/Lisp_Sources/ compiled/.fasls/openmcl-unix-x86-64-1.1/Users/hirvine/lisp/ Lisp_Sources/site/cffi/tests/callbacks.dx64fsl" NIL CL-USER> (asdf:oos 'asdf:test-op 'cffi-tests)
How many times shall we run the tests (uncompiled)? [1]:
Doing 182 pending tests of 182 tests total. --- snip --- No tests failed. ;;; Finished running tests (uncompiled) 1 times.
How many times shall we run the tests (compiled)? [1]:
Doing 182 pending tests of 182 tests total. --- snip --- No tests failed. ;;; Finished running tests (compiled) 1 times. NIL
Thanks Gary!
On 12/04/07, Henry Irvine henryirvine@yahoo.com wrote:
I added a -m64 flag to the makefile for the test libs, now they are
I don't have access to darwin/x86-64, so I can't test this. A patch to the Makefile would be great. :-)