Luis,

Got this report from a fello Lispnyk (thx, dimitri). Looks to my uninformed eyes as if the x86 and >0.9.3 requirements for callbacks are met. Thoughts?

kenny

-------- Original Message --------
Subject:        Re: [Lisp] testing CFFI
Date:   Sat, 17 Sep 2005 12:19:59 -0400
From:   Dimitry Gashinsky <[EMAIL PROTECTED]>
Reply-To:       [EMAIL PROTECTED]
To:     Kenny Tilton <[EMAIL PROTECTED]>
CC:     LISP NYC <[EMAIL PROTECTED]>
References:     <[EMAIL PROTECTED]>



Hi Kenny,

I just tried running CFFI on Linux X86_64. I found couple of problems.

CL-USER(3): :c cffi-tests

; loading system definition from
; /home/dig/src/cffi-luis-050916-0148/cffi-tests.asd into #<PACKAGE "ASDF4061">
; registering #<SYSTEM CFFI-TESTS {1000F01F11}> as CFFI-TESTS
; loading system definition from /usr/share/common-lisp/systems/rt.asd into
; #<PACKAGE "ASDF4088">
; registering #<SYSTEM :RT {10009C6D51}> as RT
; $ cd /home/dig/src/cffi-luis-050916-0148/tests/; make
gcc -o libtest.so -shared -lm -Wall -ansi -pedantic libtest.c
/usr/lib/gcc/x86_64-pc-linux-gnu/3.4.4/../../../../x86_64-pc-linux-gnu/bin/ld:
/tmp/ccsyYRJ7.o: relocation R_X86_64_32 against `a local symbol' can
not be used when making a shared object; recompile with -fPIC
/tmp/ccsyYRJ7.o: could not read symbols: Bad value
collect2: ld returned 1 exit status
make: *** [libtest.so] Error 1

debugger invoked on a ASDF:OPERATION-ERROR in thread #<THREAD "initial
thread" {1000003981}>:
 erred while invoking #<COMPILE-OP NIL {100105BA71}> on
 #<C-TEST-LIB "libtest" {10011559F1}>

Type HELP for debugger help, or (SB-EXT:QUIT) to exit from SBCL.

restarts (invokable by number or by possibly-abbreviated name):
 0: [RETRY ] Retry performing #<ASDF:COMPILE-OP NIL {100105BA71}> on
             #<CFFI-TESTS-SYSTEM::C-TEST-LIB "libtest" {10011559F1}>.
 1: [ACCEPT] Continue, treating #<ASDF:COMPILE-OP NIL {100105BA71}> on
             #<CFFI-TESTS-SYSTEM::C-TEST-LIB "libtest" {10011559F1}> as having
             been successful.
 2: [ABORT ] Exit debugger, returning to top level.

((SB-PCL::FAST-METHOD ASDF:PERFORM
                     (ASDF:COMPILE-OP CFFI-TESTS-SYSTEM::C-TEST-LIB))
#<unused argument>
#<unused argument>
#<ASDF:COMPILE-OP NIL {100105BA71}>
#<CFFI-TESTS-SYSTEM::C-TEST-LIB "libtest" {10011559F1}>)
source: (ERROR 'ASDF:OPERATION-ERROR
              :COMPONENT
              CFFI-TESTS-SYSTEM::C
              :OPERATION
              CFFI-TESTS-SYSTEM::O)
0]

The first problem coud be easily resolved by adding -fPIC to LDFLAGS.


; file: /home/dig/src/cffi-luis-050916-0148/tests/callbacks.lisp
; in: DEFCALLBACK SUM-CHAR
;     (CFFI:DEFCALLBACK CFFI-TESTS::SUM-CHAR
;                     :CHAR
;                     ((CFFI-TESTS::A :CHAR) (CFFI-TESTS::B :CHAR))
;                     "Test if the named block is present and the
docstring too."
;                     (RETURN-FROM CFFI-TESTS::SUM-CHAR
;                       (+ CFFI-TESTS::A CFFI-TESTS::B)))
; --> PROGN CFFI-SYS:%DEFCALLBACK SETF LET* LET* MULTIPLE-VALUE-BIND LET
; --> ALIEN-SAP LOCALLY PROGN ALIEN-SAP SB-ALIEN::ALIEN-LAMBDA
; ==>
;   (SB-ALIEN-INTERNALS:ALIEN-CALLBACK (FUNCTION CHAR CHAR CHAR)
;                                      (LAMBDA (CFFI-TESTS::A CFFI-TESTS::B)
;                                        (CFFI::INVERSE-TRANSLATE-OBJECTS
;                                         (CFFI-TESTS::A CFFI-TESTS::B)
;                                         (:CHAR :CHAR)
;                                         :CHAR
;                                         (BLOCK CFFI-TESTS::SUM-CHAR
;                                           (RETURN-FROM CFFI-TESTS::SUM-CHAR
;                                             #)))))
;
; caught ERROR:
;   (in macroexpansion of (SB-ALIEN-INTERNALS:ALIEN-CALLBACK # #))
;   (hint: For more precise location, try *BREAK-ON-SIGNALS*.)
;   The function SB-ALIEN-INTERNALS:ALIEN-CALLBACK-ACCESSOR-FORM is undefined.

This seems that my SBCL does not support ALIEN-CALLBACK-ACCESSOR-FORM.
Here is my features.

This is SBCL 0.9.4, an implementation of ANSI Common Lisp.
...
(:ASDF :SB-THREAD
      :ANSI-CL
      :COMMON-LISP
      :SBCL
      :UNIX
      :SB-DOC
      :SB-PACKAGE-LOCKS
      :SB-UNICODE
      :IEEE-FLOATING-POINT
      :X86-64
      :ELF
      :LINUX
      :GENCGC
      :STACK-GROWS-DOWNWARD-NOT-UPWARD
      :C-STACK-IS-CONTROL-STACK
      :LINKAGE-TABLE
      :STACK-ALLOCATABLE-CLOSURES
      :OS-PROVIDES-DLOPEN
      :OS-PROVIDES-DLADDR)

If I accept callback failure and continue with testing all the tests
pass! I guess there is no tests for CALLBACK yet.

Hope this helps,
Dig

On 9/16/05, Kenny Tilton <[EMAIL PROTECTED]> wrote:
Thought I would make it a little easier:

1. Download latest CFFI-LUIS from here (last is latest):

     http://common-lisp.net/project/cffi/tarballs/

2. Download RT from here:

     http://files.b9.com/rt/

3: Adjust the following to match where you put stuff:

#-asdf
 (load "/0devtools/asdf.lisp")

(progn
  #+lispworks
  (setf hcl::*handle-existing-defpackage* (list :add))

  (push (make-pathname :directory '(:absolute "0devtools" "cffi"))
    asdf:*central-registry*)

  (push (make-pathname :directory '(:absolute "0devtools" "rt"))
    asdf:*central-registry*)

  (asdf:operate 'asdf:load-op 'cffi-tests))

Ok, now you can run the tests:

   (cffi-tests::do-tests) ;; runs all tests trapping errors, reporting
only number of failures

To see what the first failure (if any) is:

   (let ((cffi-tests::*catch-errors* nil))
       (cffi-tests::do-tests))

Thx.

--
Kenny

Why Lisp? http://wiki.alu.org/RtL_Highlight_Film

"I've wrestled with reality for 35 years, Doctor, and I'm happy to state I finally 
won out over it."
    Elwood P. Dowd, "Harvey", 1950



_______________________________________________
Lisp mailing list
[EMAIL PROTECTED]
http://www.lispnyc.org/mailman/listinfo.cgi/lisp



--
((LAMBDA (LAMBDA) `(,LAMBDA ',LAMBDA)) '(LAMBDA (LAMBDA) `(,LAMBDA ',LAMBDA)))




--
Kenny

Why Lisp? http://wiki.alu.org/RtL_Highlight_Film

"I've wrestled with reality for 35 years, Doctor, and I'm happy to state I finally 
won out over it."
   Elwood P. Dowd, "Harvey", 1950



_______________________________________________
cffi-devel mailing list
cffi-devel@common-lisp.net
http://common-lisp.net/cgi-bin/mailman/listinfo/cffi-devel

Reply via email to