gcl-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Gcl-devel] Re: [Maxima] [Axiom-developer] New dynamic library access in


From: Camm Maguire
Subject: [Gcl-devel] Re: [Maxima] [Axiom-developer] New dynamic library access in GCL
Date: 26 Jun 2007 16:26:53 -0400
User-agent: Gnus/5.09 (Gnus v5.9.0) Emacs/21.2

Greetings!

Gernot Hueber <address@hidden> writes:

> Hi Camm,
> 
> Thanks for your reply. 
> 
> On Tue, 2007-06-26 at 13:35 -0400, Camm Maguire wrote:
> > Greetings!
> > 
> > Gernot Hueber <address@hidden> writes:
> > 
> > > Dear Camm,
> > > 
> > > this is great! Thanks for your effort related to this issue.
> > > 
> > > First I want to ask, is this version running on FreeBSD as well and how
> > > can I access the source for this version?
> > > 
> > 
> > Probably, but untested.
> > 
> > export CVSROOT=:pserver:address@hidden:/sources/gcl
> > cvs -z9 -q co -d gclcvs-2.7.0 -r HEAD gcl
> 
> No success yet (options from FreeBSDs gcl port for 2.6.7 and some
> variations). Plain "configure" ends in troubles with bfd.
> Furthermore, --enable-dlopen does not work (FreeBSD includes dl
> functions in libc, there is no libdl).
> 
> ./configure --disable-dynsysbfd --disable-statsysbfd --disable-locbfd
> --enable-custreloc
> 

I'd avoid this one.  This is a legacy relocator that we still only
need on windows.

> [...]
> gcc -fsigned-char -pipe -Wall  -O3 -fomit-frame-pointer
> -I/usr/home/ghue/src/gclcvs-2.7.0/o -I../h -I../o -o rsym rsym.c^M
> In file included from ../h/include.h:37,^M
>                  from rsym.c:15:^M
> ../h/config.h:69:1: warning: "HZ" redefined^M
> In file included from ../h/include.h:36,^M
>                  from rsym.c:15:^M
> ../h/gclincl.h:223:1: warning: this is the location of the previous
> definition^Mcp init_pre_gcl.lsp.in init_pre_gcl.lsp.tmp^M
> touch raw_pre_gcl_map^M
> gcc -o raw_pre_gcl  \^M
>                 -L.   -Wl,-Map raw_pre_gcl_map   -lpre_gcl
> -Wl,-T ../unixport/gcl.script      -lreadline -lncurses  -lm -lc -lgclp
> ^M
> gcc: ../unixport/gcl.script: No such file or directory^M
> gmake[1]: *** [raw_pre_gcl_map] Error 1^M
> gmake[1]: Leaving directory `/usr/home/ghue/src/gclcvs-2.7.0/unixport'^M
> gmake: *** [unixport/saved_pre_gcl] Error 2^M
> %exit^M^M
> [...]
> 
> ./configure --disable-dynsysbfd --disable-statsysbfd --disable-locbfd
> --enable-custreloc --enable-ansi
> 
> [...]
> gcc -c -fsigned-char -pipe -Wall  -O3 -fomit-frame-pointer
> -I/usr/home/ghue/src/gclcvs-2.7.0/o -I../h -I../gcl-tk file.c ^M
> In file included from ../h/include.h:37,^M
>                  from file.d:40:^M
> ../h/config.h:69:1: warning: "HZ" redefined^M
> In file included from ../h/include.h:36,^M
>                  from file.d:40:^M
> ../h/gclincl.h:223:1: warning: this is the location of the previous
> definition^Mfile.d: In function `Lsocket':^M
> file.d:3292: warning: implicit declaration of function `on_exit'^M
> rm file.c^M
> ../bin/dpp read^M
> dpp: read.d -> read.c^M
> 
> [...]
> ../h/config.h:69:1: warning: "HZ" redefined^M
> In file included from ../h/include.h:36,^M
>                  from rsym.c:15:^M
> ../h/gclincl.h:223:1: warning: this is the location of the previous
> definition^Mcp init_pre_gcl.lsp.in init_pre_gcl.lsp.tmp^M
> touch raw_pre_gcl_map^M
> gcc -o raw_pre_gcl  \^M
>                 -L.   -Wl,-Map raw_pre_gcl_map   -lpre_gcl
> -Wl,-T ../unixport/gcl.script      -lreadline -lncurses  -lm -lc -lgclp
> ^M
> ./libpre_gcl.a(sfasl.o)(.text+0x1c6): In function
> `build_symbol_table':^M
> : undefined reference to `my_plt'^M
> ./libpre_gcl.a(file.o)(.text+0x745c): In function `Lsocket':^M
> : undefined reference to `on_exit'^M
> gmake[1]: *** [raw_pre_gcl_map] Error 1^M
> gmake[1]: Leaving directory `/usr/home/ghue/src/gclcvs-2.7.0/unixport'^M
> gmake: *** [unixport/saved_pre_gcl] Error 2^M
> [...]
> 
> /configure --disable-dynsysbfd --disable-statsysbfd --enable-locbfd
> --disable-custreloc --enable-ansi
> 
> [...]
> ranlib libgclp.a^M
> cp init_pre_gcl.lsp.in init_pre_gcl.lsp.tmp^M
> touch raw_pre_gcl_map^M
> gcc -o raw_pre_gcl  \^M
>                 -L.   -Wl,-Map raw_pre_gcl_map   -lpre_gcl
> -Wl,-T ../unixport/gcl.script      -lreadline -lncurses  -lm -lc -lgclp
> ^M
> ./libpre_gcl.a(sfasl.o)(.text+0xcdb): In function
> `build_symbol_table':^M
> : undefined reference to `_mcount'^M
> ./libpre_gcl.a(sfasl.o)(.text+0xcf4): In function
> `build_symbol_table':^M
> : undefined reference to `_mcount'^M
> ./libpre_gcl.a(sfasl.o)(.text+0xd25): In function
> `build_symbol_table':^M
> : undefined reference to `_mcount'^M
> ./libpre_gcl.a(sfasl.o)(.text+0xee7): In function
> `build_symbol_table':^M
> : undefined reference to `_mcount'^M
> ./libpre_gcl.a(sfasl.o)(.text+0xefc): In function
> `build_symbol_table':^M
> : undefined reference to `_mcount'^M
> ./libpre_gcl.a(file.o)(.text+0x745c): In function `Lsocket':^M
> : undefined reference to `on_exit'^M
> gmake[1]: *** [raw_pre_gcl_map] Error 1^M
> gmake[1]: Leaving directory `/usr/home/ghue/src/gclcvs-2.7.0/unixport'^M
> gmake: *** [unixport/saved_pre_gcl] Error 2^M
> 

OK, I need to add a little configure logic to determine what the added
function calls are when compiling with -pg, or drop gprof profiling
support on freebsd, etc.  Right now you can just not use
--enable-gprof (default is off) and comment out these lines from
sfasli.c:

    sethash(make_simple_string("_mcount"),
            sSAlink_hash_tableA->s.s_dbind,
            make_fixnum((fixnum)_mcount));
    sethash(make_simple_string("mcount"),
            sSAlink_hash_tableA->s.s_dbind,
            make_fixnum((fixnum)_mcount));


Please let me know if problems persist.

Take care,


> 
> > 
> > 
> > > Secondly, what types are supported by defdlfun and does it make sense to
> > > finish cffi-gcl from your point. cffi seems to be the most actively
> > 
> > Right now just:
> 
> You say just?! That is pretty much!
> 
> > 
> > (dolist (l '((:float      "make_shortfloat"      short-float     cnum)
> >          (:double     "make_longfloat"       long-float      cnum)
> >          (:char       "code_char"            char            cnum)
> >          (:short      "make_fixnum"          short           cnum)
> >          (:int        "make_fixnum"          int             cnum)
> >          (:fixnum     "make_fixnum"          fixnum          cnum)
> >          (:fcomplex   "make_fcomplex"        fcomplex        cnum)
> >          (:dcomplex   "make_dcomplex"        dcomplex        cnum)
> >          (:string     "make_simple_string"   string)
> >          (:float*     nil                    nil             (array 
> > short-float) "->sfa.sfa_self")
> >          (:double*    nil                    nil             (array 
> > long-float)  "->lfa.lfa_self")
> >          (:long*      nil                    nil             (array fixnum) 
> >      "->fixa.fixa_self")
> >          (:void*      nil                    nil             (array)        
> >      "->v.v_self")))
> > 
> > I need to change string to :char*, I think.  Also would like to add
> > support for :fcomplex* and :dcomplex*.  Any others you can think of?
> > You comments most appreciated.  Obviously generic C structures and
> > pointers thereto will need some thought.  If we are very lucky, their
> > binary representation will be the same as the lisp struct.
> > 
> > BTW, you might enjoy experimenting with
> > 
> > (defdlfun (:double "cblas_ddot" "libblas.so") :int :double* :int :double* 
> > :int)
> 
> I really would like to ... ;-) but it looks really fine!
> 
> > 
> > and the like.  I hope to get a complete interface file in at some
> > point.
> > 
> > Note -- there is currently no automatic protection enforcing :static
> > arrays, so external calls which malloc might cause problems if the
> > user does not explicitly use :static.  Non-static arrays are faster,
> > and so should be allowed for those routines which do not malloc.
> > 
> > 
> > > developed and used ffi for lisp and opens the door to use swig as
> > > well :-). There is already some work done to support GCL, but still more
> > > effort needed.
> > 
> > I haven't looked at it due to time pressure.  It would seem that if
> > the above proves stable, then the hooks into a generic ffi might be
> > simple.
> 
> I agree with you - first getting it stable, then think of further steps.
> 
> Thanks for your effort!
> 
> Best regards,
> 
> Gernot
> 
> > 
> > Take care,
> > 
> > > 
> > > Best regards,
> > > 
> > > Gernot
> > > 
> > > On Fri, 2007-06-15 at 20:15 -0400, Camm Maguire wrote:
> > > > Greetings!  GCL now has the ability to access arbitrary external
> > > > shared library routines in a persitent fashion -- i.e. the binding is
> > > > kept across image saves:
> > > > 
> > > > =============================================================================
> > > > address@hidden:/fix/t1/camm/debian/gcl/tmp/tmp/foo1$ unixport/saved_gcl
> > > > GCL (GNU Common Lisp)  2.7.0 CLtL1    Jun 15 2007 19:45:46
> > > > Source License: LGPL(gcl,gmp,pargcl), GPL(unexec,bfd,xgcl)
> > > > Binary License:  GPL due to GPL'ed components: (XGCL READLINE BFD 
> > > > UNEXEC)
> > > > Modifications of this banner must retain notice of a compatible license
> > > > Dedicated to the memory of W. Schelter
> > > > 
> > > > Use (help) to get some basic information on how to use GCL.
> > > > 
> > > > Temporary directory for compiler files set to /tmp/
> > > > 
> > > > >(|libm|:|erf| 1.0)
> > > > 
> > > > Error: ERROR "Cannot find the external symbol erf in #<\"libm\" 
> > > > package>."
> > > > Fast links are on: do (si::use-fast-links nil) for debugging
> > > > Signalled by READ.
> > > > ERROR "Cannot find the external symbol erf in #<\"libm\" package>."
> > > > 
> > > > Broken at READ.  Type :H for Help.
> > > > >:q
> > > > 
> > > > >(si::show-lib-syms)
> > > > 
> > > > (LIB:|libm| 1074447640 #<"libm" package>) 
> > > > (|libm|:|atan| 1094141472 #<compiled-function |libm|:|atan|>) 
> > > > (|libm|:|ctan| 1094156208 #<compiled-function |libm|:|ctan|>) 
> > > > (|libm|:|csqrt| 1094159152 #<compiled-function |libm|:|csqrt|>) 
> > > > (|libm|:|clogf| 1094183232 #<compiled-function |libm|:|clogf|>) 
> > > > (|libm|:|acosh| 1094146080 #<compiled-function |libm|:|acosh|>) 
> > > > (|libm|:|ccosh| 1094153584 #<compiled-function |libm|:|ccosh|>) 
> > > > (|libm|:|expf| 1094176432 #<compiled-function |libm|:|expf|>) 
> > > > (|libm|:|atanhf| 1094176064 #<compiled-function |libm|:|atanhf|>) 
> > > > (|libm|:|casin| 1094154864 #<compiled-function |libm|:|casin|>) 
> > > > (|libm|:|cexpf| 1094181648 #<compiled-function |libm|:|cexpf|>) 
> > > > (|libm|:|acosf| 1094175504 #<compiled-function |libm|:|acosf|>) 
> > > > (|libm|:|sqrtf| 1094180496 #<compiled-function |libm|:|sqrtf|>) 
> > > > (|libm|:|exp| 1094146864 #<compiled-function |libm|:|exp|>) 
> > > > (|libm|:|atanh| 1094146512 #<compiled-function |libm|:|atanh|>) 
> > > > (|libm|:|ccosf| 1094184128 #<compiled-function |libm|:|ccosf|>) 
> > > > (|libm|:|ctanh| 1094156960 #<compiled-function |libm|:|ctanh|>) 
> > > > (|libm|:|cosh| 1094146672 #<compiled-function |libm|:|cosh|>) 
> > > > (|libm|:|ccoshf| 1094182688 #<compiled-function |libm|:|ccoshf|>) 
> > > > (|libm|:|cosf| 1094172320 #<compiled-function |libm|:|cosf|>) 
> > > > (|libm|:|atanf| 1094172032 #<compiled-function |libm|:|atanf|>) 
> > > > (|libm|:|cos| 1094141792 #<compiled-function |libm|:|cos|>) 
> > > > (|libm|:|cacos| 1094157584 #<compiled-function |libm|:|cacos|>) 
> > > > (|libm|:|tanh| 1094145584 #<compiled-function |libm|:|tanh|>) 
> > > > (|libm|:|ctanf| 1094185024 #<compiled-function |libm|:|ctanf|>) 
> > > > (|libm|:|csinhf| 1094182144 #<compiled-function |libm|:|csinhf|>) 
> > > > (|libm|:|tanf| 1094175168 #<compiled-function |libm|:|tanf|>) 
> > > > (|libm|:|tan| 1094145536 #<compiled-function |libm|:|tan|>) 
> > > > (|libm|:|asin| 1094146208 #<compiled-function |libm|:|asin|>) 
> > > > (|libm|:|sinh| 1094150832 #<compiled-function |libm|:|sinh|>) 
> > > > (|libm|:|csin| 1094155520 #<compiled-function |libm|:|csin|>) 
> > > > (|libm|:|sinf| 1094175120 #<compiled-function |libm|:|sinf|>) 
> > > > (|libm|:|cabs| 1094152304 #<compiled-function |libm|:|cabs|>) 
> > > > (|libm|:|sin| 1094145488 #<compiled-function |libm|:|sin|>) 
> > > > (|libm|:|catanhf| 1094187072 #<compiled-function |libm|:|catanhf|>) 
> > > > (|libm|:|coshf| 1094176224 #<compiled-function |libm|:|coshf|>) 
> > > > (|libm|:|catanh| 1094158672 #<compiled-function |libm|:|catanh|>) 
> > > > (|libm|:|fabs| 1094144096 #<compiled-function |libm|:|fabs|>) 
> > > > (|libm|:|catanf| 1094183504 #<compiled-function |libm|:|catanf|>) 
> > > > (|libm|:|tanhf| 1094175216 #<compiled-function |libm|:|tanhf|>) 
> > > > (|libm|:|acoshf| 1094175632 #<compiled-function |libm|:|acoshf|>) 
> > > > (|libm|:|asinh| 1094141232 #<compiled-function |libm|:|asinh|>) 
> > > > (|libm|:|csinh| 1094152928 #<compiled-function |libm|:|csinh|>) 
> > > > (|libm|:|asinhf| 1094171792 #<compiled-function |libm|:|asinhf|>) 
> > > > (|libm|:|atan2f| 1094175888 #<compiled-function |libm|:|atan2f|>) 
> > > > (|libm|:|asinf| 1094175760 #<compiled-function |libm|:|asinf|>) 
> > > > (|libm|:|sinhf| 1094180368 #<compiled-function |libm|:|sinhf|>) 
> > > > (|libm|:|atan2| 1094146336 #<compiled-function |libm|:|atan2|>) 
> > > > (|libm|:|csinf| 1094184448 #<compiled-function |libm|:|csinf|>) 
> > > > (|libm|:|cabsf| 1094181552 #<compiled-function |libm|:|cabsf|>) 
> > > > (|libm|:|fabsf| 1094174288 #<compiled-function |libm|:|fabsf|>) 
> > > > (|libm|:|casinhf| 1094186160 #<compiled-function |libm|:|casinhf|>) 
> > > > (|libm|:|logf| 1094179104 #<compiled-function |libm|:|logf|>) 
> > > > (|libm|:|casinh| 1094157680 #<compiled-function |libm|:|casinh|>) 
> > > > (|libm|:|clog| 1094154112 #<compiled-function |libm|:|clog|>) 
> > > > (|libm|:|casinf| 1094183888 #<compiled-function |libm|:|casinf|>) 
> > > > (|libm|:|ctanhf| 1094185616 #<compiled-function |libm|:|ctanhf|>) 
> > > > (|libm|:|csqrtf| 1094187472 #<compiled-function |libm|:|csqrtf|>) 
> > > > (|libm|:|log| 1094149536 #<compiled-function |libm|:|log|>) 
> > > > (|libm|:|cacoshf| 1094186624 #<compiled-function |libm|:|cacoshf|>) 
> > > > (|libm|:|cacosh| 1094158144 #<compiled-function |libm|:|cacosh|>) 
> > > > (|libm|:|catan| 1094154432 #<compiled-function |libm|:|catan|>) 
> > > > (|libm|:|cacosf| 1094186080 #<compiled-function |libm|:|cacosf|>) 
> > > > (|libm|:|cexp| 1094152400 #<compiled-function |libm|:|cexp|>) 
> > > > (|libm|:|acos| 1094145952 #<compiled-function |libm|:|acos|>) 
> > > > (|libm|:|sqrt| 1094150976 #<compiled-function |libm|:|sqrt|>) 
> > > > (|libm|:|ccos| 1094155168 #<compiled-function |libm|:|ccos|>) 
> > > > (|libm|:|abs| 1090798240 #<compiled-function |libm|:|abs|>) 
> > > > (LIB:|libc| 1074448272 #<"libc" package>) 
> > > > (|libc|:|setjmp| 1090786864 NIL) 
> > > > (|libc|:|feof| 1090993296 NIL) 
> > > > (|libc|:|memset| 1091054096 NIL) 
> > > > (|libc|:|getc| 1090994720 NIL) 
> > > > (|libc|:|bzero| 1091054432 NIL) 
> > > > (|libc|:|putc| 1090995664 NIL) 
> > > > 
> > > > >(in-package 'compiler)
> > > > 
> > > > #<"COMPILER" package>
> > > > 
> > > > COMPILER>(defdlfun (:double "erf" "libm.so") :double)
> > > > 
> > > > |libm|:|erf|
> > > > 
> > > > COMPILER>(compile *)
> > > > 
> > > > ;; Compiling /tmp/gazonk_18613_0.lsp.
> > > > ;; End of Pass 1.  
> > > > ;; End of Pass 2.  
> > > > ;; OPTIMIZE levels: Safety=0 (No runtime error checking), Space=0, 
> > > > Speed=3, (Debug quality ignored)
> > > > ;; Finished compiling /tmp/gazonk_18613_0.o.
> > > > ;; Loading /tmp/gazonk_18613_0.o
> > > >  ;; start address -T 0xa02000 ;; Finished loading /tmp/gazonk_18613_0.o
> > > > #<compiled-function |libm|:|erf|>
> > > > NIL
> > > > NIL
> > > > 
> > > > COMPILER>(|libm|:|erf| 1.0)
> > > > 
> > > > 0.84270079294971489
> > > > 
> > > > COMPILER>(|libm|:|erf| 1.0s0)
> > > > 
> > > > Correctable error: TYPE-ERROR :DATUM 1.0S0 :EXPECTED-TYPE LONG-FLOAT NIL
> > > > Fast links are on: do (si::use-fast-links nil) for debugging
> > > > Signalled by EVAL.
> > > > If continued: choose a new value
> > > > TYPE-ERROR :DATUM 1.0S0 :EXPECTED-TYPE LONG-FLOAT NIL
> > > > 
> > > > Broken at EVAL.  Type :H for Help.
> > > > COMPILER>>:q
> > > > 
> > > > Top level.
> > > > COMPILER>(disassemble '(lambda (x) (|libm|:|erf| x)) nil)
> > > > 
> > > > ;; Compiling /tmp/gazonk_18613_0.lsp.
> > > > ;; End of Pass 1.  
> > > > ;; End of Pass 2.  
> > > > ;; OPTIMIZE levels: Safety=0 (No runtime error checking), Space=0, 
> > > > Speed=3, (Debug quality ignored)
> > > > ;; Finished compiling /tmp/gazonk_18613_0.o.
> > > > 
> > > > #include "gazonk_18613_0.h"
> > > > void init_code(){do_init((void *)VV);}
> > > > /*      local entry for function CMP-ANON       */
> > > > 
> > > > static object LI1(V2)
> > > > 
> > > > object V2;
> > > > {        VMB1 VMS1 VMV1
> > > >         goto TTL;
> > > > TTL:;
> > > >         {object V3 = (/* erf */(*LnkLI0)((V2)));VMR1
> > > >         (V3);}
> > > >         return Cnil;
> > > > }
> > > > static object  LnkTLI0(object first,...){object V1;va_list 
> > > > ap;va_start(ap,first);V1=(object 
> > > > )call_proc_new(((object)VV[0]),0,0,(void **)(void 
> > > > *)&LnkLI0,1,first,ap);va_end(ap);return V1;} /* erf */
> > > > #(#(erf
> > > >     (%INIT
> > > >      . #((LET ((*DISABLE-RECOMPILE* T))
> > > >            (MFSFUN 'CMP-ANON 0 1 0)
> > > >            (ADD-HASH 'CMP-ANON '((T) T) '((erf (FLOAT) T))COMPILER
> > > > libmerf-
> > > >                '/tmp/gazonk_18613_0.lsp))
> > > >          (DO-RECOMPILE)))))
> > > > static object LI1();
> > > > #define VMB1
> > > > #define VMS1
> > > > #define VMV1
> > > > #define VMR1(VMT1) return(VMT1);
> > > > #define VM1 0
> > > > static void * VVi[2]={
> > > > #define Cdata VV[1]
> > > > (void *)(LI1)
> > > > };
> > > > #define VV (VVi)
> > > > static object  LnkTLI0(object,...);
> > > > static object  (*LnkLI0)() = (object (*)()) LnkTLI0;
> > > > NIL
> > > > 
> > > > COMPILER>(disassemble '(lambda (x) (declare (long-float x)) 
> > > > (|libm|:|erf| x)) nil)
> > > > 
> > > > ;; Compiling /tmp/gazonk_18613_0.lsp.
> > > > ;; End of Pass 1.  
> > > > ;; End of Pass 2.  
> > > > ;; OPTIMIZE levels: Safety=0 (No runtime error checking), Space=0, 
> > > > Speed=3, (Debug quality ignored)
> > > > ;; Finished compiling /tmp/gazonk_18613_0.o.
> > > > 
> > > > #include "gazonk_18613_0.h"
> > > > void init_code(){do_init((void *)VV);}
> > > > /*      local entry for function CMP-ANON       */
> > > > 
> > > > static double LI1(V2)
> > > > 
> > > > double V2;
> > > > {        VMB1 VMS1 VMV1
> > > >         goto TTL;
> > > > TTL:;
> > > >         {double V3 = ((double(*)(double))dlerf)(V2);VMR1
> > > >         (V3);}
> > > > }
> > > > /*      global entry for the function CMP-ANON  */
> > > > 
> > > > static void L1()
> > > > {       register object *base=vs_base;
> > > >         base[0]=make_longfloat(LI1(lf(base[0])));
> > > >         vs_top=(vs_base=base)+1;
> > > > }
> > > > #(#(NIL
> > > >     (%INIT
> > > >      . #((MDL 'erf 'libm 1)
> > > >          (LET ((*DISABLE-RECOMPILE* T))
> > > >            (MF 'CMP-ANON 0)
> > > >            (ADD-HASH 'CMP-ANON '((LONG-FLOAT) LONG-FLOAT)
> > > >                '((erf (FLOAT) T))
> > > > LISPLAMBDA!!,DECLAR,OPTIMIZ,SAFETY
> > > > libmerf-
> > > >                '/tmp/gazonk_18613_0.lsp))
> > > >          (DO-RECOMPILE)))))
> > > > static void L1();
> > > > static double LI1();
> > > > static void *dlerf;
> > > > #define VMB1
> > > > #define VMS1
> > > > #define VMV1
> > > > #define VMR1(VMT1) return(VMT1);
> > > > #define VM1 0
> > > > static void * VVi[2]={
> > > > #define Cdata VV[1]
> > > > (void *)(L1),
> > > > (void *)(&dlerf)
> > > > };
> > > > #define VV (VVi)
> > > > NIL
> > > > 
> > > > COMPILER>(funcall (compile nil  '(lambda (x) (|libm|:|erf| x))) 1.0)
> > > > 
> > > > ;; Compiling /tmp/gazonk_18613_0.lsp.
> > > > ;; End of Pass 1.  
> > > > ;; End of Pass 2.  
> > > > ;; OPTIMIZE levels: Safety=0 (No runtime error checking), Space=0, 
> > > > Speed=3, (Debug quality ignored)
> > > > ;; Finished compiling /tmp/gazonk_18613_0.o.
> > > > ;; Loading /tmp/gazonk_18613_0.o
> > > >  ;; start address -T 0x9e8b08 ;; Finished loading /tmp/gazonk_18613_0.o
> > > > 0.84270079294971489
> > > > 
> > > > COMPILER>(funcall (compile nil  '(lambda (x) (declare (long-float x)) 
> > > > (|libm|:|erf| x))) 1.0)
> > > > 
> > > > ;; Compiling /tmp/gazonk_18613_0.lsp.
> > > > ;; End of Pass 1.  
> > > > ;; End of Pass 2.  
> > > > ;; OPTIMIZE levels: Safety=0 (No runtime error checking), Space=0, 
> > > > Speed=3, (Debug quality ignored)
> > > > ;; Finished compiling /tmp/gazonk_18613_0.o.
> > > > ;; Loading /tmp/gazonk_18613_0.o
> > > >  ;; start address -T 0xa08948 ;; Finished loading /tmp/gazonk_18613_0.o
> > > > 0.84270079294971489
> > > > 
> > > > COMPILER>(si::save-system "/tmp/h")
> > > > address@hidden:/fix/t1/camm/debian/gcl/tmp/tmp/foo1$ /tmp/h
> > > > GCL (GNU Common Lisp)  2.7.0 CLtL1    Jun 15 2007 19:45:46
> > > > Source License: LGPL(gcl,gmp,pargcl), GPL(unexec,bfd,xgcl)
> > > > Binary License:  GPL due to GPL'ed components: (XGCL READLINE BFD 
> > > > UNEXEC)
> > > > Modifications of this banner must retain notice of a compatible license
> > > > Dedicated to the memory of W. Schelter
> > > > 
> > > > Use (help) to get some basic information on how to use GCL.
> > > > 
> > > > Temporary directory for compiler files set to /tmp/
> > > > 
> > > > >(|libm|:|erf| 1.0)
> > > > 
> > > > 0.84270079294971489
> > > > 
> > > > >
> > > > =============================================================================
> > > > 
> > > > Notes: 
> > > > 
> > > > 0) based on dlopen
> > > > 1) Not yet tested on static linking
> > > > 2) Cannot run such functions interpreted for the moment
> > > > 3) compiling gives both a function with error checking, and an inline
> > > >    providing single instuction access through a C pointer where
> > > >    possible.
> > > > 4) Plan on shipping a little blas, maybe mpi and lapack file to be
> > > >    optionally loaded in the GCL distribution
> > > > 5) package LIB contains libary name symbols bound to the dlopen
> > > >    address of the library
> > > > 6) each library has its own package with symbols bound to the external
> > > >    function address.
> > > > 7) symbols are created and linked on .o load if necessary
> > > > 8) loaded .o code keeps a list of its external pointers in use, which
> > > >    are then reset on image re-execution.
> > > > 
> > > > Enjoy!
> > > > 
> > > -- 
> > > Gernot Hueber <address@hidden>
> > > _______________________________________________
> > > Maxima mailing list
> > > address@hidden
> > > http://www.math.utexas.edu/mailman/listinfo/maxima
> > > 
> > > 
> > > 
> > 
> -- 
> Gernot Hueber <address@hidden>
> 
> 
> 

-- 
Camm Maguire                                            address@hidden
==========================================================================
"The earth is but one country, and mankind its citizens."  --  Baha'u'llah




reply via email to

[Prev in Thread] Current Thread [Next in Thread]