James Long wrote:
Hello,
You could compile the FFI into a module which you can load in the interpreter. Then you can debug other code.
Loading the program as a module in gsi would sure be of great help! I'm currently trying to compile my program (a tetris game) in a shared library so that it can get loaded by gsi (is this what you meant by compile my FFI into a module?), but I get an error which I don't understand... :(
Here is how it goes...
[dave@localhost tetris]$ make clean; make gsi-tetris.o1 rm -rf *.c *.o* gsc -c board.scm gsc -c blocks.scm gsc -c block-list.scm gsc -c matrix.scm gsc -c lib.scm gsc -c colors.scm gsc -c ui.scm gsc -c ui-sdl.scm gsc -c tetris.scm gsc -link -flat -o gsi-tetris.o1.c board.scm blocks.scm block-list.scm matrix.scm lib.scm colors.scm ui.scm ui-sdl.scm tetris.scm board.scm: blocks.scm: block-list.scm: matrix.scm: lib.scm: colors.scm: ui.scm: ui-sdl.scm: tetris.scm: *** WARNING -- "##direct-structure-ref" is not defined, *** referenced in: ("blocks.c") *** WARNING -- "##direct-structure-set!" is not defined, *** referenced in: ("blocks.c") *** WARNING -- "##make-uninterned-symbol" is not defined, *** referenced in: ("blocks.c") *** WARNING -- "##quasi-cons" is not defined, *** referenced in: ("board.c") *** WARNING -- "##quasi-list" is not defined, *** referenced in: ("board.c") *** WARNING -- "##structure" is not defined, *** referenced in: ("blocks.c") *** WARNING -- "##type-type" is not defined, *** referenced in: ("blocks.c") *** WARNING -- "*" is not defined, *** referenced in: ("tetris.c" "ui.c" "matrix.c") *** WARNING -- "+" is not defined, *** referenced in: ("tetris.c" "ui.c" "matrix.c" "blocks.c" "board.c") *** WARNING -- "-" is not defined, *** referenced in: ("ui.c" "lib.c" "blocks.c" "board.c") *** WARNING -- "/" is not defined, *** referenced in: ("tetris.c" "ui-sdl.c") *** WARNING -- "<" is not defined, *** referenced in: ("matrix.c" "board.c") *** WARNING -- "=" is not defined, *** referenced in: ("tetris.c" "ui.c" "board.c") *** WARNING -- ">=" is not defined, *** referenced in: ("tetris.c" "board.c") *** WARNING -- "apply" is not defined, *** referenced in: ("ui-sdl.c" "lib.c") *** WARNING -- "arithmetic-shift" is not defined, *** referenced in: ("ui-sdl.c") *** WARNING -- "assoc" is not defined, *** referenced in: ("ui-sdl.c") *** WARNING -- "bitwise-ior" is not defined, *** referenced in: ("ui-sdl.c") *** WARNING -- "car" is not defined, *** referenced in: ("lib.c" "matrix.c" "blocks.c") *** WARNING -- "cdr" is not defined, *** referenced in: ("ui-sdl.c" "lib.c" "matrix.c") *** WARNING -- "ceiling" is not defined, *** referenced in: ("tetris.c") *** WARNING -- "cons" is not defined, *** referenced in: ("tetris.c" "lib.c" "block-list.c" "blocks.c") *** WARNING -- "display" is not defined, *** referenced in: ("board.c") *** WARNING -- "end-game!" is not defined, *** referenced in: ("ui-sdl.c") *** WARNING -- "eq?" is not defined, *** referenced in: ("ui.c" "board.c") *** WARNING -- "equal?" is not defined, *** referenced in: ("tetris.c") *** WARNING -- "error" is not defined, *** referenced in: ("ui-sdl.c" "ui.c") *** WARNING -- "for-each" is not defined, *** referenced in: ("board.c") *** WARNING -- "inexact->exact" is not defined, *** referenced in: ("tetris.c") *** WARNING -- "integer->char" is not defined, *** referenced in: ("board.c") *** WARNING -- "length" is not defined, *** referenced in: ("lib.c" "blocks.c") *** WARNING -- "list" is not defined, *** referenced in: ("block-list.c" "blocks.c" "board.c") *** WARNING -- "list-ref" is not defined, *** referenced in: ("lib.c" "blocks.c") *** WARNING -- "make-mutex" is not defined, *** referenced in: ("tetris.c") *** WARNING -- "make-thread" is not defined, *** referenced in: ("ui-sdl.c") *** WARNING -- "make-vector" is not defined, *** referenced in: ("ui.c" "matrix.c" "board.c") *** WARNING -- "map" is not defined, *** referenced in: ("tetris.c" "blocks.c" "board.c") *** WARNING -- "modulo" is not defined, *** referenced in: ("blocks.c" "board.c") *** WARNING -- "mutex-lock!" is not defined, *** referenced in: ("board.c") *** WARNING -- "mutex-unlock!" is not defined, *** referenced in: ("board.c") *** WARNING -- "newline" is not defined, *** referenced in: ("board.c") *** WARNING -- "not" is not defined, *** referenced in: ("tetris.c" "ui-sdl.c" "ui.c" "lib.c" "board.c") *** WARNING -- "null?" is not defined, *** referenced in: ("lib.c") *** WARNING -- "pair?" is not defined, *** referenced in: ("lib.c") *** WARNING -- "pp" is not defined, *** referenced in: ("board.c") *** WARNING -- "random-integer" is not defined, *** referenced in: ("lib.c" "blocks.c") *** WARNING -- "reverse" is not defined, *** referenced in: ("board.c") *** WARNING -- "string->symbol" is not defined, *** referenced in: ("ui-sdl.c" "lib.c") *** WARNING -- "string-append" is not defined, *** referenced in: ("ui.c" "lib.c") *** WARNING -- "string?" is not defined, *** referenced in: ("ui-sdl.c") *** WARNING -- "symbol->string" is not defined, *** referenced in: ("lib.c") *** WARNING -- "symbol?" is not defined, *** referenced in: ("ui-sdl.c") *** WARNING -- "thread-sleep!" is not defined, *** referenced in: ("tetris.c" "ui-sdl.c") *** WARNING -- "thread-start!" is not defined, *** referenced in: ("ui-sdl.c") *** WARNING -- "tk" is not defined, *** referenced in: ("ui.c") *** WARNING -- "tk-end" is not defined, *** referenced in: ("ui.c") *** WARNING -- "tk-event-loop" is not defined, *** referenced in: ("ui.c") *** WARNING -- "tk-start" is not defined, *** referenced in: ("ui.c") *** WARNING -- "tk/bind" is not defined, *** referenced in: ("ui.c") *** WARNING -- "tk/message-box" is not defined, *** referenced in: ("ui.c") *** WARNING -- "tk/pack" is not defined, *** referenced in: ("ui.c") *** WARNING -- "tk/wm" is not defined, *** referenced in: ("ui.c") *** WARNING -- "vector" is not defined, *** referenced in: ("matrix.c") *** WARNING -- "vector->list" is not defined, *** referenced in: ("board.c") *** WARNING -- "vector-length" is not defined, *** referenced in: ("matrix.c" "board.c") *** WARNING -- "vector-ref" is not defined, *** referenced in: ("tetris.c" "ui.c" "matrix.c" "blocks.c" "board.c") *** WARNING -- "vector-set!" is not defined, *** referenced in: ("ui.c" "matrix.c" "board.c") g++ -shared -D___DYNAMIC -rdynamic -I/opt/g4/current/include -I/usr/X11R6/include -D___SINGLE_HOST -O3 -ffast-math -o gsi-tetris.o1 board.c blocks.c block-list.c matrix.c lib.c colors.c ui.c ui-sdl.c tetris.c gsi-tetris.o1.c -L/usr/X11R6/lib -L/opt/g4/current/lib/ -lgambc -lGL -lGLU -lXxf86vm -lXext -lX11 -lutil -ldl -lSDL -lSDL_image -lSDL_gfx ui-sdl.c:219:31: warning: extra tokens at end of #include directive [dave@localhost tetris]$ gsi gsi-tetris.o1 *** ERROR IN ##main -- /home/dave/projet/mgdt/tetris/gsi-tetris.o1: cannot restore segment prot after reloc: Permission denied (load "gsi-tetris.o1")
Is there something wrong with the way I compiled my compiled module?
Thank you very much for your help! ^_^Y
David