[Ecls-list] Error reporting to slime for c-inline/redirecting gcc output?

Seth Burleigh seth at tewebs.com
Thu Mar 18 14:03:26 UTC 2010


I was wondering if it would be possible to somehow communicate the
errors that occur while compiling a function with inline c. For example,
when I compile this in slime:

(defun sin (x)
 (ffi:clines "#include <matha.h>")
 (ffi:c-inline (x) (:double) :double "sin(#0)" 
    :one-liner t :side-effects t))

I get the following output:

;;; Compiling (DEFUN SIN ...).
;;; Emitting code for SIN.
;;; Note:
;;;   Invoking external command:
;;;   gcc "-I/usr/local/include/"  -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64
-g -O2 -fPIC  -Dlinux -O -w -c "/tmp/ecl-swank-tmpfile-86RG8R.c" -o
"/tmp/ecl-swank-tmpfile-86RG8R.o"
;;; 
;;; Note:
;;;   Invoking external command:
;;;   gcc -o "/tmp/ecl-swank-tmpfile-86RG8R.fas" -L"/usr/local/lib/"
"/tmp/ecl-swank-tmpfile-86RG8R.o"   '-ldb' -shared    -lecl  -lgmp -ldl
-lm 


So, no description of error. However, when I compile on the command
prompt, I get this:

;;;
;;; Compiling /home/seth/random/t2.lisp.
;;; OPTIMIZE levels: Safety=2, Space=0, Speed=3, Debug=0
;;;
;;; Compiling (DEFUN SIN ...).
;;; End of Pass 1.
;;; Emitting code for SIN.
;;; Note:
;;;   Invoking external command:
;;;   gcc "-I/usr/local/include/"  -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64
-g -O2 -fPIC  -Dlinux -O -w -c "/home/seth/random/t2.c" -o
"/home/seth/random/t2.o"
In file included from /home/seth/random/t2.c:6:
/home/seth/random/t2.h:7:19: error: mathd.h: No such file or directory
;;; 
;;; Internal error:
;;;   ** (SYSTEM "gcc \"-I/usr/local/include/\"  -D_GNU_SOURCE
-D_FILE_OFFSET_BITS=64 -g -O2 -fPIC  -Dlinux -O -w -c
\"/home/seth/random/t2.c\" -o \"/home/seth/random/t2.o\"") returned
non-zero value 1
NIL
NIL
NIL

If you'll notice, the error: mathd.h output is in purple, so I believe
it is outputed by the gcc compiler.



Is there any way to 'capture' this output and send it over to slime
along with everything else? This would be tremendously helpful for
debugging.










More information about the ecl-devel mailing list