Re: Starting FriCAS not in the $HOME directory

GrĂ©gory Vanuxem <[email protected]> Thu, 5 Jun 2025 09:06:33 +0200
Newsgroups gmane.comp.mathematics.algebra.fricas.devel,gmane.lisp.gcl.devel
Message-ID <CAHnU2daC=kV89WKkQdkM1fze+QcYCXiBoctHMKEKt6DC9gwP2g@mail.gmail.com>
--0000000000002894fb0636cdc395
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

Hello Camm, *,

I am testing your instructions to load and use an external library
dynamically linked and I have a couple of issues.
First, I am unable to load libjula.so because of an undefined symbol:

Use (help) to get some basic information on how to use GCL.
Temporary directory for compiler files set to /tmp/

>(si:mdlsym "jl_init" "libjulia.so")

Error:
Fast links are on: do (si::use-fast-links nil) for debugging
Signalled by SYSTEM:MDLSYM.

Condition in SYSTEM:MDLSYM [or a callee]: INTERNAL-SIMPLE-ERROR: dlopen
failure on "libjulia.so": "/usr/local/lib/libjulia.so: undefined symbol:
jl_pgcstack_static_semaphore"

Broken at SYSTEM:MDLSYM.  Type :H for Help.
    1  Return to top level.

This is the same with your macro below. This does not happen with SBCL,
Clozure CL or pure C (just tested). I looked at the Julia code and it
almost not used; the only pieces of code (MIT licence) are:

In a header file:
#if !defined(_OS_DARWIN_) && !defined(_OS_WINDOWS_)
#define JULIA_DEFINE_FAST_TLS
                    \
static __attribute__((tls_model("local-exec"))) __thread jl_gcframe_t
**jl_pgcstack_localexec;
 \
JL_DLLEXPORT _Atomic(char) jl_pgcstack_static_semaphore;
                     \
JL_DLLEXPORT jl_gcframe_t **jl_get_pgcstack_static(void)
                     \
{
                    \
    return jl_pgcstack_localexec;
                    \
}
                    \
JL_DLLEXPORT jl_gcframe_t ***jl_pgcstack_addr_static(void)
                     \
{
                    \
    return &jl_pgcstack_localexec;
                     \
}
#else
#define JULIA_DEFINE_FAST_TLS
#endif

and in a C file:

#if !defined(_OS_WINDOWS_) && !defined(_OS_DARWIN_)
    void (*jl_pgcstack_setkey)(void*, void*(*)(void)) =3D lookup_symbol(
libjulia_internal, "jl_pgcstack_setkey");
    if (jl_pgcstack_setkey =3D=3D NULL) {
        jl_loader_print_stderr("ERROR: Cannot find jl_pgcstack_setkey()
function within libjulia-internal!\n");
        exit(1);
    }
    void *fptr =3D lookup_symbol(RTLD_DEFAULT, "jl_get_pgcstack_static");
    void *(*key)(void) =3D lookup_symbol(RTLD_DEFAULT,
"jl_pgcstack_addr_static");
    _Atomic(char) *semaphore =3D lookup_symbol(RTLD_DEFAULT,
"jl_pgcstack_static_semaphore");
    if (fptr !=3D NULL && key !=3D NULL && semaphore !=3D NULL) {
        char already_used =3D 0;
        atomic_compare_exchange_strong(semaphore, &already_used, 1);
        if (already_used =3D=3D 0) // RMW succeeded - we have exclusive acc=
ess
            jl_pgcstack_setkey(fptr, key);
    }
#endif

So, since it seems to me it is just an optimization, for experimental
purpose, I removed those pieces of code and rebuilt Julia and was able to
load libjulia. I still wonder why GCL, contrary to the mentioned CL
implementations, encounters the error above: undefined symbol.

The second issue is related to the macro you mentioned below, I cannot give
a path to the library at run time:

(si::defdlfun (:void "jl_init" (|make_absolute_filename|
"/lib/julia_wrap.so")) :void)

julia_wrap.so is in a FriCAS lib directory and not in the ld library path
so I need to give the full path. Here '(|make_absolute_filename|
"/lib/julia_wrap.so")' is not executed so GCLcomplains about the fact it's
not of type STRING. Accessory I do not know if ':void' instead of ':void*'
can be used. I tested the two.

Do you think I need to use more low-level operations with lib-name, mdl
etc. the one used above in GCL, etc. and in fact, I do not know how?

julia_wrap.so is a wrapper linked against libjulia, and dload-ed by FriCAS,
it's necessary, see some examples here eventually:
https://docs.julialang.org/en/v1/manual/embedding/

Maybe later I will ask some other questions about the GCL garbage collector
to know if there is a "terminate" hook in it, I need it, I have two
interface types in my Julia interface one where Julia operates directly on
CL arrays, and another one where datas are in the Julia process stored in a
hashed dictionary, so when GCL is GC-ing CL variables (a very simple class
object in my interface that contains the key) I need to inform the Julia GC
it can also GC them, i.e. delete them from the dictionary.

Hoping I am relatively clear, regards,

- Greg




Le jeu. 29 mai 2025 =C3=A0 22:23, Camm Maguire <[email protected]> a =
=C3=A9crit :

> Greetings!
>
> Gr=C3=A9gory Vanuxem <[email protected]> writes:
>
> > Hi Waldek,
> >
> > Many thanks for this quick response and fix. Just tested on official
> FriCAS and the 2 problems you mentioned previously gone away.
> >
> > The .fricas.input file is still not "read" but for my mid-term work it
> is not a big problem, my startup file is just displaying computation time=
s
> and augmenting line
> > length of output to 110. Maybe this is related to my Kali distribution
> on WSL2, I don't know.
> >
> > The )read command is to blame on my settings:
> >
> > (1) -> )sys pws
> >
> >    >> System error:
> >    INTERNAL-SIMPLE-ERROR: The assertion !posix_spawnp(&pid, *p1,
> &file_actions, &attr, (void *)p1, environ) on line 65 of o/unixsys.c in
> function vsystem failed:
> > No such file or directory
> >
> > (1) -> )sys pwd
> > /home/greg
> > (1) -> )sys ls -l .fricas.input
> > -rw-r--r-- 1 greg greg 35 Feb 11 09:42 .fricas.input
> > (1) -> )read .fricas.input
> >
> >    The file .fricas.input is needed but does not exist.
> >
> > BTW great improvements have been done for gcl-2.7.1, thanks to you and
> > Camm, it's a very good thing for me since I plan to code a wrapper in
> > Common Lisp using my C wrapper to Julia compatible with GCL. I did one
> > for Axiom in the past, a coding LISP game for me containing only
> > "and", "or "and "not" keywords (no
>
> Most happy to see a satisfied customer!
>
> > loops or conditionals). A direct wrapper to Fortran BLAS in fact. Now
> > I have to look at documentation changes for the GCL-2.7 series FFI.
> >
>
> I turn your attention to defdlfun.  In 2.7.x we can establish persistent
> (across image saves) bindings to new external shared libraries on the
> fly, with the call overhead being a single pointer dereference:
>
>
> >(describe 'defdlfun)
>
> DEFDLFUN - internal symbol in COMMON-LISP-USER package
> From ((DEFDLFUN . External Shared Libraries) gcl-si.info):
>
>  -- Macro: DEFDLFUN
>      Package:SYSTEM
>
>      Syntax:
>           (compile (DEFDLFUN {RETURN NAME &optional LIBNAME) ARGS*))
>
>      GCL specific: Produces an entry function to function NAME in
>      external shared library LIBNAME with the specified args/return
>      signature.  This function must be compiled to run.  When inlined,
>      the function call collapses to a single reference to a pointer
>      which is automatically updated to the location of the external
>      function at image startup.  The connection to the external library
>      is persistent across image saves and re-executions.  The RETURN and
>      ARGS specifiers are keywords from the following list corresponding
>      to the accompanying C programming types:
>
>      :char :short :int :long :float :double
>
>      Unsigned versions available are:
>
>      :uchar :ushort :uint
>
>      Complex float and complex double types can be access via:
>
>      :fcomplex :dcomples
>
>      Pointers to types available are
>
>      :void* :char* :long* :float* :double*
>
>      Example usage:
>
>
>
>
>           GCL (GNU Common Lisp)  2.7.0 Thu Oct 26 12:00:01 PM EDT 2023
> CLtL1    git: Version_2_7_0pre38
>           Source License: LGPL(gcl,gmp), GPL(unexec,bfd,xgcl)
>           Binary License:  GPL due to GPL'ed components: (XGCL READLINE
> 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/
>
>           >(do-symbols (s :lib) (print s))
>
>           LIB:|libm|
>           LIB:|libc|
>           NIL
>
>           >(compile (si::defdlfun (:double "cblas_ddot" "libblas.so")
> :uint :double* :uint :double* :uint))
>
>           ;; Compiling /tmp/gazonk_653784_0.lsp.
>           ;; End of Pass 1.
>           ;; End of Pass 2.
>           OPTIMIZE levels: Safety=3D0 (No runtime error checking), Space=
=3D0,
> Speed=3D3
>           ;; Finished compiling /tmp/gazonk_653784_0.o.
>           ;; Loading #P"/tmp/gazonk_653784_0.o"
>           ;; start address for /tmp/gazonk_653784_0.o 0x2700860
>           ;; Finished loading #P"/tmp/gazonk_653784_0.o"
>           #<function 0000000001a4a860>
>           NIL
>           NIL
>
>           >(do-symbols (s :lib) (print s))
>
>           LIB:|libblas|
>           LIB:|libm|
>           LIB:|libc|
>           NIL
>
>           >(do-symbols (s 'lib::|libblas|) (unless (find-symbol
> (symbol-name s) :user) (print s)))
>
>           |libblas|:|cblas_ddot|
>           NIL
>           NIL
>
>           >(setq a (make-array 3 :element-type 'long-float) b (make-array
> 3 :element-type 'long-float))
>
>           #(0.0 0.0 0.0)
>
>           >(setf (aref a 1) 1.2 (aref b 1) 2.3)
>
>           2.3
>
>           >(|libblas|:|cblas_ddot| 3 a 1 b 1)
>
>           2.76
>
>           >(compile (defun foo (a b) (declare ((vector long-float) a b))
> (|libblas|:|cblas_ddot| (length a) a 1 b 1)))
>
>           ;; Compiling /tmp/gazonk_653784_0.lsp.
>           ;; End of Pass 1.
>           ;; End of Pass 2.
>           OPTIMIZE levels: Safety=3D0 (No runtime error checking), Space=
=3D0,
> Speed=3D3
>           ;; Finished compiling /tmp/gazonk_653784_0.o.
>           ;; Loading #P"/tmp/gazonk_653784_0.o"
>           ;; start address for /tmp/gazonk_653784_0.o 0x2715050
>           ;; Finished loading #P"/tmp/gazonk_653784_0.o"
>           #<function 0000000001a62140>
>           NIL
>           NIL
>
>           >(compile (defun bar (a b) (declare (inline
> |libblas|:|cblas_ddot|) ((vector long-float) a b)) (|libblas|:|cblas_ddot=
|
> (length a) a 1 b 1)))
>
>           ;; Compiling /tmp/gazonk_653784_0.lsp.
>           ;; End of Pass 1.
>           ;; End of Pass 2.
>           OPTIMIZE levels: Safety=3D0 (No runtime error checking), Space=
=3D0,
> Speed=3D3
>           ;; Finished compiling /tmp/gazonk_653784_0.o.
>           ;; Loading #P"/tmp/gazonk_653784_0.o"
>           ;; start address for /tmp/gazonk_653784_0.o 0x2729570
>           ;; Finished loading #P"/tmp/gazonk_653784_0.o"
>           #<function 0000000001a62740>
>           NIL
>           NIL
>
>           >(foo a b)
>
>           2.76
>
>           >(bar a b)
>
>           2.76
>
>           >(setq compiler::*disassemble-objdump* nil)
>
>           NIL
>
>           >(disassemble '|libblas|:|cblas_ddot|)
>
>           ;; Compiling /tmp/gazonk_653784_0.lsp.
>           ;; End of Pass 1.
>           ;; End of Pass 2.
>           OPTIMIZE levels: Safety=3D0 (No runtime error checking), Space=
=3D0,
> Speed=3D3
>           ;; Finished compiling /tmp/gazonk_653784_0.o.
>
>           #include "gazonk_653784_0.h"
>           void init_code(){do_init((void *)VV);}
>           /*    local entry for function libblas::cblas_ddot    */
>
>           static object LI1__cblas_ddot___gazonk_653784_0(fixnum V6,objec=
t
> V7,fixnum V8,object V9,fixnum V10)
>           {      VMB1 VMS1 VMV1
>                 if(!(((char)tp0(make_fixnum(V6)))=3D=3D(1))){
>                 goto T8;
>                 }
>                 if(!((0)<=3D(V6))){
>                 goto T13;
>                 }
>                 if(!((V6)<=3D((fixnum)4294967295))){
>                 goto T11;
>                 }
>                 goto T12;
>
>                 goto T13;
>           T13:;
>                 goto T11;
>
>                 goto T12;
>           T12:;
>                 goto T7;
>
>                 goto T11;
>           T11:;
>                 goto T6;
>
>                 goto T8;
>           T8:;
>                 goto T6;
>
>                 goto T7;
>           T7:;
>                 goto T5;
>
>                 goto T6;
>           T6:;
>                 goto T3;
>
>                 goto T5;
>           T5:;
>                 goto T2;
>
>                 goto T3;
>           T3:;
>                 V11=3D CMPmake_fixnum(V6);
>                 V6=3D fixint((fcall.argd=3D4,/* SYSTEM::CHECK-TYPE-SYMBOL
> */(object )(*LnkLI2)(((object)VV[1]),(V11),((object)VV[2]),Cnil)));
>                 goto T2;
>           T2:;
>                 switch(tp6(V7)){
>                 case 428:
>                 goto T27;
>           T27:;
>                 case 492:
>                 goto T28;
>           T28:;
>                 goto T25;
>
>                 default:
>                 goto T29;
>           T29:;
>                 goto T24;
>
>                 goto T24;
>                 }
>                 goto T24;
>
>                 goto T25;
>           T25:;
>                 goto T23;
>
>                 goto T24;
>           T24:;
>                 goto T22;
>
>                 goto T23;
>           T23:;
>                 goto T21;
>
>                 goto T22;
>           T22:;
>                 goto T19;
>
>                 goto T21;
>           T21:;
>                 goto T18;
>
>                 goto T19;
>           T19:;
>                 V7=3D (fcall.argd=3D4,/* SYSTEM::CHECK-TYPE-SYMBOL */(obj=
ect
> )(*LnkLI2)(((object)VV[3]),(V7),((object)VV[4]),Cnil));
>                 goto T18;
>           T18:;
>                 if(!(((char)tp0(make_fixnum(V8)))=3D=3D(1))){
>                 goto T39;
>                 }
>                 if(!((0)<=3D(V8))){
>                 goto T44;
>                 }
>                 if(!((V8)<=3D((fixnum)4294967295))){
>                 goto T42;
>                 }
>                 goto T43;
>
>                 goto T44;
>           T44:;
>                 goto T42;
>
>                 goto T43;
>           T43:;
>                 goto T38;
>
>                 goto T42;
>           T42:;
>                 goto T37;
>
>                 goto T39;
>           T39:;
>                 goto T37;
>
>                 goto T38;
>           T38:;
>                 goto T36;
>
>                 goto T37;
>           T37:;
>                 goto T34;
>
>                 goto T36;
>           T36:;
>                 goto T33;
>
>                 goto T34;
>           T34:;
>                 V12=3D CMPmake_fixnum(V8);
>                 V8=3D fixint((fcall.argd=3D4,/* SYSTEM::CHECK-TYPE-SYMBOL
> */(object )(*LnkLI2)(((object)VV[5]),(V12),((object)VV[2]),Cnil)));
>                 goto T33;
>           T33:;
>                 switch(tp6(V9)){
>                 case 428:
>                 goto T58;
>           T58:;
>                 case 492:
>                 goto T59;
>           T59:;
>                 goto T56;
>
>                 default:
>                 goto T60;
>           T60:;
>                 goto T55;
>
>                 goto T55;
>                 }
>                 goto T55;
>
>                 goto T56;
>           T56:;
>                 goto T54;
>
>                 goto T55;
>           T55:;
>                 goto T53;
>
>                 goto T54;
>           T54:;
>                 goto T52;
>
>                 goto T53;
>           T53:;
>                 goto T50;
>
>                 goto T52;
>           T52:;
>                 goto T49;
>
>                 goto T50;
>           T50:;
>                 V9=3D (fcall.argd=3D4,/* SYSTEM::CHECK-TYPE-SYMBOL */(obj=
ect
> )(*LnkLI2)(((object)VV[6]),(V9),((object)VV[4]),Cnil));
>                 goto T49;
>           T49:;
>                 if(!(((char)tp0(make_fixnum(V10)))=3D=3D(1))){
>                 goto T70;
>                 }
>                 if(!((0)<=3D(V10))){
>                 goto T75;
>                 }
>                 if(!((V10)<=3D((fixnum)4294967295))){
>                 goto T73;
>                 }
>                 goto T74;
>
>                 goto T75;
>           T75:;
>                 goto T73;
>
>                 goto T74;
>           T74:;
>                 goto T69;
>
>                 goto T73;
>           T73:;
>                 goto T68;
>
>                 goto T70;
>           T70:;
>                 goto T68;
>
>                 goto T69;
>           T69:;
>                 goto T67;
>
>                 goto T68;
>           T68:;
>                 goto T65;
>
>                 goto T67;
>           T67:;
>                 goto T64;
>
>                 goto T65;
>           T65:;
>                 V13=3D CMPmake_fixnum(V10);
>                 V10=3D fixint((fcall.argd=3D4,/* SYSTEM::CHECK-TYPE-SYMBO=
L
> */(object )(*LnkLI2)(((object)VV[7]),(V13),((object)VV[2]),Cnil)));
>                 goto T64;
>           T64:;
>                 {object V14 =3D
> make_longfloat(((double(*)(uint,double*,uint,double*,uint))(dlcblas_ddot)=
)((uint)V6,(double*)V7->v.v_self,(uint)V8,(double*)V9->v.v_self,(uint)V10))=
;
>                 VMR1(V14);}
>           }
>           static object  LnkTLI2(object first,...){object V1;va_list
> ap;va_start(ap,first);V1=3D(object
> )call_proc_new(((object)VV[0]),0,262147,(void **)(void
> *)&LnkLI2,0,first,ap);va_end(ap);return V1;} /* SYSTEM::CHECK-TYPE-SYMBOL=
 */
>           (9 (MAPC 'EVAL *COMPILER-COMPILE-DATA*))
>           static object LI1__cblas_ddot___gazonk_653784_0(fixnum V6,objec=
t
> V7,fixnum V8,object V9,fixnum V10)
>           ;
>           static void *dlcblas_ddot;
>           #define VMB1  object  V13 ,V12 ,V11;
>           #define VMS1
>           #define VMV1
>           #define VMRV1(a_,b_) return((object )a_);
>           #define VMR1(a_) VMRV1(a_,0);
>           #define VM1 0
>           static void * VVi[9]=3D{
>           #define Cdata VV[8]
>           (void *)(&dlcblas_ddot),
>           (void *)(LI1__cblas_ddot___gazonk_653784_0)
>           };
>           #define VV (VVi)
>           static object  LnkTLI2(object,...);
>           static object  (*LnkLI2)() =3D (object (*)()) LnkTLI2;
>           NIL
>
>           >(disassemble 'foo)
>
>           ;; Compiling /tmp/gazonk_653784_0.lsp.
>           ;; End of Pass 1.
>           ;; End of Pass 2.
>           OPTIMIZE levels: Safety=3D0 (No runtime error checking), Space=
=3D0,
> Speed=3D3
>           ;; Finished compiling /tmp/gazonk_653784_0.o.
>
>           #include "gazonk_653784_0.h"
>           void init_code(){do_init((void *)VV);}
>           /*    local entry for function COMMON-LISP-USER::FOO  */
>
>           static object LI1__FOO___gazonk_653784_0(object V3,object V4)
>           {      VMB1 VMS1 VMV1
>
> if(!(((char)((fixnum)((uchar*)((fixnum)V3))[(fixnum)2]&(fixnum)1))=3D=3D(=
0))){
>                 goto T5;
>                 }
>                 goto T2;
>
>                 goto T5;
>           T5:;
>                 V5=3D ((fixnum)((uint*)((fixnum)V3))[(fixnum)4]&268435455=
);
>                 goto T1;
>
>                 goto T2;
>           T2:;
>                 V5=3D
> (((fixnum)((uint*)((fixnum)V3))[(fixnum)1]>>(fixnum)3)&268435455);
>                 goto T1;
>           T1:;
>                 {object V6 =3D (/* libblas::cblas_ddot */(object
> )(*LnkLI2)(V5,(V3),(fixnum)1,(V4),(fixnum)1));
>                 VMR1(V6);}
>           }
>           static object  LnkTLI2(object first,...){object V1;va_list
> ap;va_start(ap,first);V1=3D(object )call_proc_new(((object)VV[0]),0,5,(vo=
id
> **)(void *)&LnkLI2,1092,first,ap);va_end(ap);return V1;} /*
> libblas::cblas_ddot */
>           (2 (MAPC 'EVAL *COMPILER-COMPILE-DATA*))
>           static object LI1__FOO___gazonk_653784_0(object V3,object V4)
>           ;
>           #define VMB1  fixnum  V5;
>           #define VMS1
>           #define VMV1
>           #define VMRV1(a_,b_) return((object )a_);
>           #define VMR1(a_) VMRV1(a_,0);
>           #define VM1 0
>           static void * VVi[2]=3D{
>           #define Cdata VV[1]
>           (void *)(LI1__FOO___gazonk_653784_0)
>           };
>           #define VV (VVi)
>           static object  LnkTLI2(object,...);
>           static object  (*LnkLI2)() =3D (object (*)()) LnkTLI2;
>           NIL
>
>           >(disassemble 'bar)
>
>           ;; Compiling /tmp/gazonk_653784_0.lsp.
>           ;; End of Pass 1.
>           ;; End of Pass 2.
>           OPTIMIZE levels: Safety=3D0 (No runtime error checking), Space=
=3D0,
> Speed=3D3
>           ;; Finished compiling /tmp/gazonk_653784_0.o.
>
>           #include "gazonk_653784_0.h"
>           void init_code(){do_init((void *)VV);}
>           /*    local entry for function COMMON-LISP-USER::BAR  */
>
>           static object LI1__BAR___gazonk_653784_0(object V3,object V4)
>           {      VMB1 VMS1 VMV1
>                 {fixnum V5;
>
> if(!(((char)((fixnum)((uchar*)((fixnum)V3))[(fixnum)2]&(fixnum)1))=3D=3D(=
0))){
>                 goto T5;
>                 }
>                 goto T2;
>
>                 goto T5;
>           T5:;
>                 V5=3D ((fixnum)((uint*)((fixnum)V3))[(fixnum)4]&268435455=
);
>                 goto T1;
>
>                 goto T2;
>           T2:;
>                 V5=3D
> (((fixnum)((uint*)((fixnum)V3))[(fixnum)1]>>(fixnum)3)&268435455);
>                 goto T1;
>           T1:;
>                 {object V6 =3D
> make_longfloat(((double(*)(uint,double*,uint,double*,uint))(dlcblas_ddot)=
)((uint)V5,(double*)V3->v.v_self,(uint)1,(double*)V4->v.v_self,(uint)1));
>                 VMR1(V6);}}
>           }
>           (2 (MAPC 'EVAL *COMPILER-COMPILE-DATA*))
>           static object LI1__BAR___gazonk_653784_0(object V3,object V4)
>           ;
>           static void *dlcblas_ddot;
>           #define VMB1
>           #define VMS1
>           #define VMV1
>           #define VMRV1(a_,b_) return((object )a_);
>           #define VMR1(a_) VMRV1(a_,0);
>           #define VM1 0
>           static void * VVi[2]=3D{
>           #define Cdata VV[1]
>           (void *)(&dlcblas_ddot),
>           (void *)(LI1__BAR___gazonk_653784_0)
>           };
>           #define VV (VVi)
>           NIL
>
>           >(si::save-system "ff")
>           $ ./ff
>           GCL (GNU Common Lisp)  2.7.0 Thu Oct 26 12:00:01 PM EDT 2023
> CLtL1    git: Version_2_7_0pre38
>           Source License: LGPL(gcl,gmp), GPL(unexec,bfd,xgcl)
>           Binary License:  GPL due to GPL'ed components: (XGCL READLINE
> 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/
>
>           >(foo a b)
>
>           2.76
>
>           >(bar a b)
>
>           2.76
>
>           >
>
>
> Take care,
>
>
> >
>
> > - Greg
> >
> > PS / I Cc-ed to gcl-devel
> >
> > Le sam. 24 mai 2025 =C3=A0 15:30, Waldek Hebisch <[email protected]> a =
=C3=A9crit :
> >
> >  On Fri, May 23, 2025 at 09:56:29PM +0200, Gr=C3=A9gory Vanuxem wrote:
> >  > Hello,
> >  >
> >  > I don't know if you can reproduce this: if I start FriCAS from $HOME
> it
> >  > starts nicely but if I start in another directory see the snippet
> below.
> >  > I tried with gcl2.7.1-4 from a Debian based distribution and after
> with the
> >  > official Debian sid and the same happens:
> >  >
> >  <snip>
> >  >
> >  >    >> System error:
> >  >    INTERNAL-SIMPLE-PARSE-ERROR: "/home/greg//.fricas.input" is not a
> valid
> >  > pathname on host NIL
> >  >
> >  >
> >  >    >> System error:
> >  >    INTERNAL-SIMPLE-ERROR: The tag |top_level| is undefined.
> >
> >  Should be fixed now.
> >
> >  --
> >                                Waldek Hebisch
> >
> >  --
> >  You received this message because you are subscribed to the Google
> Groups "FriCAS - computer algebra system" group.
> >  To unsubscribe from this group and stop receiving emails from it, send
> an email to [email protected].
> >  To view this discussion visit
> https://groups.google.com/d/msgid/fricas-devel/aDHJ1HqJwLlykCMl%40fricas.=
org
> .
>
> --
> Camm Maguire                                        [email protected]=
g
> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
> "The earth is but one country, and mankind its citizens."  --  Baha'u'lla=
h
>
> --
> You received this message because you are subscribed to the Google Groups
> "FriCAS - computer algebra system" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to [email protected].
> To view this discussion visit
> https://groups.google.com/d/msgid/fricas-devel/87cybryxm6.fsf%40maguirefa=
mily.org
> .
>

--=20
You received this message because you are subscribed to the Google Groups "=
FriCAS - computer algebra system" group.
To unsubscribe from this group and stop receiving emails from it, send an e=
mail to [email protected].
To view this discussion visit https://groups.google.com/d/msgid/fricas-deve=
l/CAHnU2daC%3DkV89WKkQdkM1fze%2BQcYCXiBoctHMKEKt6DC9gwP2g%40mail.gmail.com.

--0000000000002894fb0636cdc395
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr"><div dir=3D"ltr">Hello Camm, *,<div><br></div><div>I am te=
sting your instructions to load and use an external library dynamically lin=
ked and I have a couple of issues.</div><div>First, I am unable to load lib=
jula.so because of an undefined symbol:</div><div><br></div><div>Use (help)=
 to get some basic information on how to use GCL.<br>Temporary directory fo=
r compiler files set to /tmp/<br><br>&gt;(si:mdlsym &quot;jl_init&quot; &qu=
ot;libjulia.so&quot;)<br><br>Error:<br>Fast links are on: do (si::use-fast-=
links nil) for debugging<br>Signalled by SYSTEM:MDLSYM.<br><br>Condition in=
 SYSTEM:MDLSYM [or a callee]: INTERNAL-SIMPLE-ERROR: dlopen failure on &quo=
t;libjulia.so&quot;: &quot;/usr/local/lib/libjulia.so: undefined symbol: jl=
_pgcstack_static_semaphore&quot;<br><br>Broken at SYSTEM:MDLSYM.=C2=A0 Type=
 :H for Help.<br>=C2=A0 =C2=A0 1 =C2=A0Return to top level.</div><div><br><=
/div><div>This is the same with your macro below. This does=C2=A0not happen=
 with SBCL, Clozure CL or pure=C2=A0C (just tested). I looked at the Julia =
code and it almost not used; the only pieces of code (MIT licence) are:</di=
v><div><br></div><div>In a header file:</div><div><div style=3D"color:rgb(1=
71,178,191);background-color:rgb(35,39,46);font-family:Consolas,&quot;Couri=
er New&quot;,monospace;font-size:14px;line-height:19px;white-space:pre"><di=
v><span style=3D"color:rgb(198,120,221)">#if</span> <span style=3D"color:rg=
b(86,182,194)">!</span><span style=3D"color:rgb(198,120,221)">defined</span=
>(<span style=3D"color:rgb(97,175,239)">_OS_DARWIN_</span>) <span style=3D"=
color:rgb(86,182,194)">&amp;&amp;</span> <span style=3D"color:rgb(86,182,19=
4)">!</span><span style=3D"color:rgb(198,120,221)">defined</span>(<span sty=
le=3D"color:rgb(97,175,239)">_OS_WINDOWS_</span>)</div><div><span style=3D"=
color:rgb(198,120,221)">#define</span> <span style=3D"color:rgb(97,175,239)=
">JULIA_DEFINE_FAST_TLS</span> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 <span style=3D"color:rgb(86,182,1=
94)">\</span></div><div><span style=3D"color:rgb(198,120,221)">static</span=
> <span style=3D"color:rgb(97,175,239)">__attribute__</span>((<span style=
=3D"color:rgb(97,175,239)">tls_model</span>(<span style=3D"color:rgb(152,19=
5,121)">&quot;local-exec&quot;</span>))) __thread <span style=3D"color:rgb(=
86,182,194)">jl_gcframe_t</span> <span style=3D"color:rgb(198,120,221)">**<=
/span>jl_pgcstack_localexec; =C2=A0<span style=3D"color:rgb(86,182,194)">\<=
/span></div><div><span style=3D"color:rgb(229,192,123)">JL_DLLEXPORT</span>=
 <span style=3D"color:rgb(97,175,239)">_Atomic</span>(<span style=3D"color:=
rgb(198,120,221)">char</span>) jl_pgcstack_static_semaphore; =C2=A0 =C2=A0 =
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0<span style=3D"color:rg=
b(86,182,194)">\</span></div><div>JL_DLLEXPORT <span style=3D"color:rgb(86,=
182,194)">jl_gcframe_t</span> <span style=3D"color:rgb(198,120,221)">**</sp=
an><span style=3D"color:rgb(97,175,239)">jl_get_pgcstack_static</span>(<spa=
n style=3D"color:rgb(198,120,221)">void</span>) =C2=A0 =C2=A0 =C2=A0 =C2=A0=
 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0<span style=3D"color:rgb(86,182,194)"=
>\</span></div><div>{ =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 <span style=3D"colo=
r:rgb(86,182,194)">\</span></div><div>=C2=A0 =C2=A0 <span style=3D"color:rg=
b(198,120,221)">return</span> jl_pgcstack_localexec; =C2=A0 =C2=A0 =C2=A0 =
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 <span style=3D"color:rgb(8=
6,182,194)">\</span></div><div>} =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 <span st=
yle=3D"color:rgb(86,182,194)">\</span></div><div>JL_DLLEXPORT <span style=
=3D"color:rgb(86,182,194)">jl_gcframe_t</span> <span style=3D"color:rgb(198=
,120,221)">***</span><span style=3D"color:rgb(97,175,239)">jl_pgcstack_addr=
_static</span>(<span style=3D"color:rgb(198,120,221)">void</span>) =C2=A0 =
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0<span style=3D"color:rg=
b(86,182,194)">\</span></div><div>{ =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 <span=
 style=3D"color:rgb(86,182,194)">\</span></div><div>=C2=A0 =C2=A0 <span sty=
le=3D"color:rgb(198,120,221)">return</span> <span style=3D"color:rgb(86,182=
,194)">&amp;</span>jl_pgcstack_localexec; =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0<span style=3D"color:rgb(86,182,194)"=
>\</span></div><div>}</div><div><span style=3D"color:rgb(198,120,221)">#els=
e</span></div><div><span style=3D"color:rgb(198,120,221)">#define</span> <s=
pan style=3D"color:rgb(97,175,239)">JULIA_DEFINE_FAST_TLS</span></div><div>=
<span style=3D"color:rgb(198,120,221)">#endif</span></div></div></div><div>=
<br></div><div>and in a C file:</div><div><br></div><div><div style=3D"colo=
r:rgb(171,178,191);background-color:rgb(35,39,46);font-family:Consolas,&quo=
t;Courier New&quot;,monospace;font-size:14px;line-height:19px;white-space:p=
re"><div><span style=3D"color:rgb(198,120,221)">#if</span> <span style=3D"c=
olor:rgb(86,182,194)">!</span><span style=3D"color:rgb(198,120,221)">define=
d</span>(<span style=3D"color:rgb(97,175,239)">_OS_WINDOWS_</span>) <span s=
tyle=3D"color:rgb(86,182,194)">&amp;&amp;</span> <span style=3D"color:rgb(8=
6,182,194)">!</span><span style=3D"color:rgb(198,120,221)">defined</span>(<=
span style=3D"color:rgb(97,175,239)">_OS_DARWIN_</span>)</div><div>=C2=A0 =
=C2=A0 <span style=3D"color:rgb(198,120,221)">void</span> (<span style=3D"c=
olor:rgb(198,120,221)">*</span><span style=3D"color:rgb(224,108,117)">jl_pg=
cstack_setkey</span>)(<span style=3D"color:rgb(198,120,221)">void*</span>, =
<span style=3D"color:rgb(198,120,221)">void*</span>(<span style=3D"color:rg=
b(198,120,221)">*</span>)(<span style=3D"color:rgb(198,120,221)">void</span=
>)) <span style=3D"color:rgb(198,120,221)">=3D</span> <span style=3D"color:=
rgb(97,175,239)">lookup_symbol</span>(<span style=3D"color:rgb(224,108,117)=
">libjulia_internal</span>, <span style=3D"color:rgb(152,195,121)">&quot;jl=
_pgcstack_setkey&quot;</span>);</div><div>=C2=A0 =C2=A0 <span style=3D"colo=
r:rgb(198,120,221)">if</span> (<span style=3D"color:rgb(224,108,117)">jl_pg=
cstack_setkey</span> <span style=3D"color:rgb(198,120,221)">=3D=3D</span> <=
span style=3D"color:rgb(209,154,102)">NULL</span>) {</div><div>=C2=A0 =C2=
=A0 =C2=A0 =C2=A0 <span style=3D"color:rgb(97,175,239)">jl_loader_print_std=
err</span>(<span style=3D"color:rgb(152,195,121)">&quot;ERROR: Cannot find =
jl_pgcstack_setkey() function within libjulia-internal!</span><span style=
=3D"color:rgb(86,182,194)">\n</span><span style=3D"color:rgb(152,195,121)">=
&quot;</span>);</div><div>=C2=A0 =C2=A0 =C2=A0 =C2=A0 <span style=3D"color:=
rgb(97,175,239)">exit</span>(<span style=3D"color:rgb(209,154,102)">1</span=
>);</div><div>=C2=A0 =C2=A0 }</div><div>=C2=A0 =C2=A0 <span style=3D"color:=
rgb(198,120,221)">void</span> <span style=3D"color:rgb(198,120,221)">*</spa=
n><span style=3D"color:rgb(224,108,117)">fptr</span> <span style=3D"color:r=
gb(198,120,221)">=3D</span> <span style=3D"color:rgb(97,175,239)">lookup_sy=
mbol</span>(<span style=3D"color:rgb(209,154,102)">RTLD_DEFAULT</span>, <sp=
an style=3D"color:rgb(152,195,121)">&quot;jl_get_pgcstack_static&quot;</spa=
n>);</div><div>=C2=A0 =C2=A0 <span style=3D"color:rgb(198,120,221)">void</s=
pan> <span style=3D"color:rgb(198,120,221)">*</span>(<span style=3D"color:r=
gb(198,120,221)">*</span><span style=3D"color:rgb(224,108,117)">key</span>)=
(<span style=3D"color:rgb(198,120,221)">void</span>) <span style=3D"color:r=
gb(198,120,221)">=3D</span> <span style=3D"color:rgb(97,175,239)">lookup_sy=
mbol</span>(<span style=3D"color:rgb(209,154,102)">RTLD_DEFAULT</span>, <sp=
an style=3D"color:rgb(152,195,121)">&quot;jl_pgcstack_addr_static&quot;</sp=
an>);</div><div>=C2=A0 =C2=A0 <span style=3D"color:rgb(97,175,239)">_Atomic=
</span>(<span style=3D"color:rgb(198,120,221)">char</span>) <span style=3D"=
color:rgb(198,120,221)">*</span><span style=3D"color:rgb(224,108,117)">sema=
phore</span> <span style=3D"color:rgb(198,120,221)">=3D</span> <span style=
=3D"color:rgb(97,175,239)">lookup_symbol</span>(<span style=3D"color:rgb(20=
9,154,102)">RTLD_DEFAULT</span>, <span style=3D"color:rgb(152,195,121)">&qu=
ot;jl_pgcstack_static_semaphore&quot;</span>);</div><div>=C2=A0 =C2=A0 <spa=
n style=3D"color:rgb(198,120,221)">if</span> (<span style=3D"color:rgb(224,=
108,117)">fptr</span> <span style=3D"color:rgb(198,120,221)">!=3D</span> <s=
pan style=3D"color:rgb(209,154,102)">NULL</span> <span style=3D"color:rgb(8=
6,182,194)">&amp;&amp;</span> <span style=3D"color:rgb(224,108,117)">key</s=
pan> <span style=3D"color:rgb(198,120,221)">!=3D</span> <span style=3D"colo=
r:rgb(209,154,102)">NULL</span> <span style=3D"color:rgb(86,182,194)">&amp;=
&amp;</span> <span style=3D"color:rgb(224,108,117)">semaphore</span> <span =
style=3D"color:rgb(198,120,221)">!=3D</span> <span style=3D"color:rgb(209,1=
54,102)">NULL</span>) {</div><div>=C2=A0 =C2=A0 =C2=A0 =C2=A0 <span style=
=3D"color:rgb(198,120,221)">char</span> <span style=3D"color:rgb(224,108,11=
7)">already_used</span> <span style=3D"color:rgb(198,120,221)">=3D</span> <=
span style=3D"color:rgb(209,154,102)">0</span>;</div><div>=C2=A0 =C2=A0 =C2=
=A0 =C2=A0 <span style=3D"color:rgb(209,154,102)">atomic_compare_exchange_s=
trong</span>(<span style=3D"color:rgb(224,108,117)">semaphore</span>, <span=
 style=3D"color:rgb(198,120,221)">&amp;</span><span style=3D"color:rgb(224,=
108,117)">already_used</span>, <span style=3D"color:rgb(209,154,102)">1</sp=
an>);</div><div>=C2=A0 =C2=A0 =C2=A0 =C2=A0 <span style=3D"color:rgb(198,12=
0,221)">if</span> (<span style=3D"color:rgb(224,108,117)">already_used</spa=
n> <span style=3D"color:rgb(198,120,221)">=3D=3D</span> <span style=3D"colo=
r:rgb(209,154,102)">0</span>)<span style=3D"color:rgb(127,132,142)"> // RMW=
 succeeded - we have exclusive access</span></div><div>=C2=A0 =C2=A0 =C2=A0=
 =C2=A0 =C2=A0 =C2=A0 <span style=3D"color:rgb(224,108,117)">jl_pgcstack_se=
tkey</span>(<span style=3D"color:rgb(224,108,117)">fptr</span>, <span style=
=3D"color:rgb(224,108,117)">key</span>);</div><div>=C2=A0 =C2=A0 }</div><di=
v><span style=3D"color:rgb(198,120,221)">#endif</span></div></div></div><di=
v><br></div><div>So, since it seems to me it is just an optimization, for e=
xperimental purpose, I removed those pieces of code and rebuilt Julia and w=
as able to load libjulia. I still wonder why GCL, contrary to the mentioned=
 CL implementations, encounters the error above: undefined symbol.</div><di=
v><br></div><div>The second issue is related to the macro you mentioned bel=
ow, I cannot give a path to the library at run time:</div><div><br></div><d=
iv>(si::defdlfun (:void &quot;jl_init&quot; (|make_absolute_filename| &quot=
;/lib/julia_wrap.so&quot;)) :void)</div><div><br></div><div>julia_wrap.so i=
s in a FriCAS lib directory and not in the ld library path so I need to giv=
e the full path. Here &#39;(|make_absolute_filename| &quot;/lib/julia_wrap.=
so&quot;)&#39; is not executed so GCLcomplains about the fact it&#39;s not =
of type STRING. Accessory I do not know if &#39;:void&#39; instead of &#39;=
:void*&#39; can be used. I tested the two.</div><div><br></div><div>Do you =
think I need to use more low-level operations with lib-name, mdl etc. the o=
ne used above in GCL, etc. and in fact, I do not know how?</div><div><br></=
div><div>julia_wrap.so is a wrapper linked against libjulia, and dload-ed b=
y FriCAS, it&#39;s necessary, see some examples here eventually:</div><div>=
<a href=3D"https://docs.julialang.org/en/v1/manual/embedding/">https://docs=
.julialang.org/en/v1/manual/embedding/</a></div><div><br></div><div>Maybe l=
ater I will ask some other questions about the GCL garbage collector to kno=
w if there is a &quot;terminate&quot; hook in it, I need it, I have two int=
erface types in my Julia interface one where Julia operates directly on CL =
arrays, and another one where datas are in the Julia process stored in a ha=
shed dictionary, so when GCL is GC-ing CL variables (a very simple class ob=
ject in my interface that contains the key) I need to inform the Julia GC i=
t can also GC them, i.e. delete them from the dictionary.</div><div><br></d=
iv><div>Hoping I am relatively clear, regards,</div><div><br></div><div>- G=
reg</div><div><br></div><div><br></div><div><br></div></div><br><div class=
=3D"gmail_quote gmail_quote_container"><div dir=3D"ltr" class=3D"gmail_attr=
">Le=C2=A0jeu. 29 mai 2025 =C3=A0=C2=A022:23, Camm Maguire &lt;<a href=3D"m=
ailto:[email protected]">[email protected]</a>&gt; a =C3=A9crit=
=C2=A0:<br></div><blockquote class=3D"gmail_quote" style=3D"margin:0px 0px =
0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Greeting=
s!<br>
<br>
Gr=C3=A9gory Vanuxem &lt;<a href=3D"mailto:[email protected]" target=3D"_=
blank">[email protected]</a>&gt; writes:<br>
<br>
&gt; Hi Waldek,<br>
&gt;<br>
&gt; Many thanks for this quick response and fix. Just tested on official F=
riCAS and the 2 problems you mentioned previously gone away.<br>
&gt;<br>
&gt; The .fricas.input file is still not &quot;read&quot; but for my mid-te=
rm work it is not a big problem, my startup file is just displaying computa=
tion times and augmenting line<br>
&gt; length of output to 110. Maybe this is related to my Kali distribution=
 on WSL2, I don&#39;t know.<br>
&gt;<br>
&gt; The )read command is to blame on my settings:<br>
&gt;<br>
&gt; (1) -&gt; )sys pws<br>
&gt;<br>
&gt;=C2=A0 =C2=A0 &gt;&gt; System error:<br>
&gt;=C2=A0 =C2=A0 INTERNAL-SIMPLE-ERROR: The assertion !posix_spawnp(&amp;p=
id, *p1, &amp;file_actions, &amp;attr, (void *)p1, environ) on line 65 of o=
/unixsys.c in function vsystem failed:<br>
&gt; No such file or directory<br>
&gt;<br>
&gt; (1) -&gt; )sys pwd<br>
&gt; /home/greg<br>
&gt; (1) -&gt; )sys ls -l .fricas.input<br>
&gt; -rw-r--r-- 1 greg greg 35 Feb 11 09:42 .fricas.input<br>
&gt; (1) -&gt; )read .fricas.input<br>
&gt;<br>
&gt;=C2=A0 =C2=A0 The file .fricas.input is needed but does not exist.<br>
&gt;<br>
&gt; BTW great improvements have been done for gcl-2.7.1, thanks to you and=
<br>
&gt; Camm, it&#39;s a very good thing for me since I plan to code a wrapper=
 in<br>
&gt; Common Lisp using my C wrapper to Julia compatible with GCL. I did one=
<br>
&gt; for Axiom in the past, a coding LISP game for me containing only<br>
&gt; &quot;and&quot;, &quot;or &quot;and &quot;not&quot; keywords (no<br>
<br>
Most happy to see a satisfied customer!<br>
<br>
&gt; loops or conditionals). A direct wrapper to Fortran BLAS in fact. Now<=
br>
&gt; I have to look at documentation changes for the GCL-2.7 series FFI.<br=
>
&gt;<br>
<br>
I turn your attention to defdlfun.=C2=A0 In 2.7.x we can establish persiste=
nt<br>
(across image saves) bindings to new external shared libraries on the<br>
fly, with the call overhead being a single pointer dereference:<br>
<br>
<br>
&gt;(describe &#39;defdlfun)<br>
<br>
DEFDLFUN - internal symbol in COMMON-LISP-USER package<br>
From ((DEFDLFUN . External Shared Libraries) <a href=3D"http://gcl-si.info"=
 rel=3D"noreferrer" target=3D"_blank">gcl-si.info</a>):<br>
<br>
=C2=A0-- Macro: DEFDLFUN<br>
=C2=A0 =C2=A0 =C2=A0Package:SYSTEM<br>
<br>
=C2=A0 =C2=A0 =C2=A0Syntax:<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 (compile (DEFDLFUN {RETURN NAME &amp;opt=
ional LIBNAME) ARGS*))<br>
<br>
=C2=A0 =C2=A0 =C2=A0GCL specific: Produces an entry function to function NA=
ME in<br>
=C2=A0 =C2=A0 =C2=A0external shared library LIBNAME with the specified args=
/return<br>
=C2=A0 =C2=A0 =C2=A0signature.=C2=A0 This function must be compiled to run.=
=C2=A0 When inlined,<br>
=C2=A0 =C2=A0 =C2=A0the function call collapses to a single reference to a =
pointer<br>
=C2=A0 =C2=A0 =C2=A0which is automatically updated to the location of the e=
xternal<br>
=C2=A0 =C2=A0 =C2=A0function at image startup.=C2=A0 The connection to the =
external library<br>
=C2=A0 =C2=A0 =C2=A0is persistent across image saves and re-executions.=C2=
=A0 The RETURN and<br>
=C2=A0 =C2=A0 =C2=A0ARGS specifiers are keywords from the following list co=
rresponding<br>
=C2=A0 =C2=A0 =C2=A0to the accompanying C programming types:<br>
<br>
=C2=A0 =C2=A0 =C2=A0:char :short :int :long :float :double<br>
<br>
=C2=A0 =C2=A0 =C2=A0Unsigned versions available are:<br>
<br>
=C2=A0 =C2=A0 =C2=A0:uchar :ushort :uint<br>
<br>
=C2=A0 =C2=A0 =C2=A0Complex float and complex double types can be access vi=
a:<br>
<br>
=C2=A0 =C2=A0 =C2=A0:fcomplex :dcomples<br>
<br>
=C2=A0 =C2=A0 =C2=A0Pointers to types available are<br>
<br>
=C2=A0 =C2=A0 =C2=A0:void* :char* :long* :float* :double*<br>
<br>
=C2=A0 =C2=A0 =C2=A0Example usage:<br>
<br>
<br>
<br>
<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 GCL (GNU Common Lisp)=C2=A0 2.7.0 Thu Oc=
t 26 12:00:01 PM EDT 2023=C2=A0 CLtL1=C2=A0 =C2=A0 git: Version_2_7_0pre38<=
br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 Source License: LGPL(gcl,gmp), GPL(unexe=
c,bfd,xgcl)<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 Binary License:=C2=A0 GPL due to GPL&#39=
;ed components: (XGCL READLINE UNEXEC)<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 Modifications of this banner must retain=
 notice of a compatible license<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 Dedicated to the memory of W. Schelter<b=
r>
<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 Use (help) to get some basic information=
 on how to use GCL.<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 Temporary directory for compiler files s=
et to /tmp/<br>
<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 &gt;(do-symbols (s :lib) (print s))<br>
<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 LIB:|libm|<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 LIB:|libc|<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 NIL<br>
<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 &gt;(compile (si::defdlfun (:double &quo=
t;cblas_ddot&quot; &quot;libblas.so&quot;) :uint :double* :uint :double* :u=
int))<br>
<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 ;; Compiling /tmp/gazonk_653784_0.lsp.<b=
r>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 ;; End of Pass 1.<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 ;; End of Pass 2.<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 OPTIMIZE levels: Safety=3D0 (No runtime =
error checking), Space=3D0, Speed=3D3<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 ;; Finished compiling /tmp/gazonk_653784=
_0.o.<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 ;; Loading #P&quot;/tmp/gazonk_653784_0.=
o&quot;<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 ;; start address for /tmp/gazonk_653784_=
0.o 0x2700860<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 ;; Finished loading #P&quot;/tmp/gazonk_=
653784_0.o&quot;<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 #&lt;function 0000000001a4a860&gt;<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 NIL<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 NIL<br>
<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 &gt;(do-symbols (s :lib) (print s))<br>
<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 LIB:|libblas|<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 LIB:|libm|<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 LIB:|libc|<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 NIL<br>
<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 &gt;(do-symbols (s &#39;lib::|libblas|) =
(unless (find-symbol (symbol-name s) :user) (print s)))<br>
<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 |libblas|:|cblas_ddot|<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 NIL<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 NIL<br>
<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 &gt;(setq a (make-array 3 :element-type =
&#39;long-float) b (make-array 3 :element-type &#39;long-float))<br>
<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 #(0.0 0.0 0.0)<br>
<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 &gt;(setf (aref a 1) 1.2 (aref b 1) 2.3)=
<br>
<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 2.3<br>
<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 &gt;(|libblas|:|cblas_ddot| 3 a 1 b 1)<b=
r>
<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 2.76<br>
<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 &gt;(compile (defun foo (a b) (declare (=
(vector long-float) a b)) (|libblas|:|cblas_ddot| (length a) a 1 b 1)))<br>
<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 ;; Compiling /tmp/gazonk_653784_0.lsp.<b=
r>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 ;; End of Pass 1.<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 ;; End of Pass 2.<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 OPTIMIZE levels: Safety=3D0 (No runtime =
error checking), Space=3D0, Speed=3D3<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 ;; Finished compiling /tmp/gazonk_653784=
_0.o.<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 ;; Loading #P&quot;/tmp/gazonk_653784_0.=
o&quot;<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 ;; start address for /tmp/gazonk_653784_=
0.o 0x2715050<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 ;; Finished loading #P&quot;/tmp/gazonk_=
653784_0.o&quot;<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 #&lt;function 0000000001a62140&gt;<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 NIL<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 NIL<br>
<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 &gt;(compile (defun bar (a b) (declare (=
inline |libblas|:|cblas_ddot|) ((vector long-float) a b)) (|libblas|:|cblas=
_ddot| (length a) a 1 b 1)))<br>
<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 ;; Compiling /tmp/gazonk_653784_0.lsp.<b=
r>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 ;; End of Pass 1.<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 ;; End of Pass 2.<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 OPTIMIZE levels: Safety=3D0 (No runtime =
error checking), Space=3D0, Speed=3D3<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 ;; Finished compiling /tmp/gazonk_653784=
_0.o.<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 ;; Loading #P&quot;/tmp/gazonk_653784_0.=
o&quot;<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 ;; start address for /tmp/gazonk_653784_=
0.o 0x2729570<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 ;; Finished loading #P&quot;/tmp/gazonk_=
653784_0.o&quot;<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 #&lt;function 0000000001a62740&gt;<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 NIL<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 NIL<br>
<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 &gt;(foo a b)<br>
<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 2.76<br>
<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 &gt;(bar a b)<br>
<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 2.76<br>
<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 &gt;(setq compiler::*disassemble-objdump=
* nil)<br>
<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 NIL<br>
<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 &gt;(disassemble &#39;|libblas|:|cblas_d=
dot|)<br>
<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 ;; Compiling /tmp/gazonk_653784_0.lsp.<b=
r>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 ;; End of Pass 1.<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 ;; End of Pass 2.<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 OPTIMIZE levels: Safety=3D0 (No runtime =
error checking), Space=3D0, Speed=3D3<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 ;; Finished compiling /tmp/gazonk_653784=
_0.o.<br>
<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 #include &quot;gazonk_653784_0.h&quot;<b=
r>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 void init_code(){do_init((void *)VV);}<b=
r>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 /*=C2=A0 =C2=A0 local entry for function=
 libblas::cblas_ddot=C2=A0 =C2=A0 */<br>
<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 static object LI1__cblas_ddot___gazonk_6=
53784_0(fixnum V6,object V7,fixnum V8,object V9,fixnum V10)<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 {=C2=A0 =C2=A0 =C2=A0 VMB1 VMS1 VMV1<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 if(!(((char)tp0(mak=
e_fixnum(V6)))=3D=3D(1))){<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T8;<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 }<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 if(!((0)&lt;=3D(V6)=
)){<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T13;<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 }<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 if(!((V6)&lt;=3D((f=
ixnum)4294967295))){<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T11;<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 }<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T12;<br>
<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T13;<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 T13:;<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T11;<br>
<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T12;<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 T12:;<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T7;<br>
<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T11;<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 T11:;<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T6;<br>
<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T8;<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 T8:;<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T6;<br>
<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T7;<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 T7:;<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T5;<br>
<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T6;<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 T6:;<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T3;<br>
<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T5;<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 T5:;<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T2;<br>
<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T3;<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 T3:;<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 V11=3D CMPmake_fixn=
um(V6);<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 V6=3D fixint((fcall=
.argd=3D4,/* SYSTEM::CHECK-TYPE-SYMBOL */(object )(*LnkLI2)(((object)VV[1])=
,(V11),((object)VV[2]),Cnil)));<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T2;<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 T2:;<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 switch(tp6(V7)){<br=
>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 case 428:<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T27;<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 T27:;<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 case 492:<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T28;<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 T28:;<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T25;<br>
<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 default:<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T29;<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 T29:;<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T24;<br>
<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T24;<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 }<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T24;<br>
<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T25;<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 T25:;<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T23;<br>
<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T24;<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 T24:;<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T22;<br>
<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T23;<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 T23:;<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T21;<br>
<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T22;<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 T22:;<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T19;<br>
<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T21;<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 T21:;<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T18;<br>
<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T19;<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 T19:;<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 V7=3D (fcall.argd=
=3D4,/* SYSTEM::CHECK-TYPE-SYMBOL */(object )(*LnkLI2)(((object)VV[3]),(V7)=
,((object)VV[4]),Cnil));<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T18;<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 T18:;<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 if(!(((char)tp0(mak=
e_fixnum(V8)))=3D=3D(1))){<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T39;<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 }<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 if(!((0)&lt;=3D(V8)=
)){<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T44;<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 }<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 if(!((V8)&lt;=3D((f=
ixnum)4294967295))){<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T42;<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 }<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T43;<br>
<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T44;<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 T44:;<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T42;<br>
<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T43;<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 T43:;<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T38;<br>
<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T42;<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 T42:;<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T37;<br>
<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T39;<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 T39:;<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T37;<br>
<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T38;<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 T38:;<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T36;<br>
<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T37;<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 T37:;<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T34;<br>
<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T36;<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 T36:;<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T33;<br>
<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T34;<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 T34:;<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 V12=3D CMPmake_fixn=
um(V8);<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 V8=3D fixint((fcall=
.argd=3D4,/* SYSTEM::CHECK-TYPE-SYMBOL */(object )(*LnkLI2)(((object)VV[5])=
,(V12),((object)VV[2]),Cnil)));<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T33;<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 T33:;<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 switch(tp6(V9)){<br=
>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 case 428:<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T58;<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 T58:;<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 case 492:<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T59;<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 T59:;<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T56;<br>
<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 default:<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T60;<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 T60:;<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T55;<br>
<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T55;<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 }<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T55;<br>
<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T56;<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 T56:;<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T54;<br>
<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T55;<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 T55:;<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T53;<br>
<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T54;<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 T54:;<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T52;<br>
<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T53;<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 T53:;<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T50;<br>
<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T52;<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 T52:;<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T49;<br>
<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T50;<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 T50:;<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 V9=3D (fcall.argd=
=3D4,/* SYSTEM::CHECK-TYPE-SYMBOL */(object )(*LnkLI2)(((object)VV[6]),(V9)=
,((object)VV[4]),Cnil));<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T49;<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 T49:;<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 if(!(((char)tp0(mak=
e_fixnum(V10)))=3D=3D(1))){<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T70;<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 }<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 if(!((0)&lt;=3D(V10=
))){<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T75;<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 }<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 if(!((V10)&lt;=3D((=
fixnum)4294967295))){<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T73;<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 }<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T74;<br>
<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T75;<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 T75:;<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T73;<br>
<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T74;<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 T74:;<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T69;<br>
<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T73;<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 T73:;<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T68;<br>
<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T70;<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 T70:;<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T68;<br>
<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T69;<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 T69:;<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T67;<br>
<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T68;<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 T68:;<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T65;<br>
<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T67;<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 T67:;<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T64;<br>
<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T65;<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 T65:;<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 V13=3D CMPmake_fixn=
um(V10);<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 V10=3D fixint((fcal=
l.argd=3D4,/* SYSTEM::CHECK-TYPE-SYMBOL */(object )(*LnkLI2)(((object)VV[7]=
),(V13),((object)VV[2]),Cnil)));<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T64;<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 T64:;<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 {object V14 =3D mak=
e_longfloat(((double(*)(uint,double*,uint,double*,uint))(dlcblas_ddot))((ui=
nt)V6,(double*)V7-&gt;v.v_self,(uint)V8,(double*)V9-&gt;v.v_self,(uint)V10)=
);<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 VMR1(V14);}<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 }<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 static object=C2=A0 LnkTLI2(object first=
,...){object V1;va_list ap;va_start(ap,first);V1=3D(object )call_proc_new((=
(object)VV[0]),0,262147,(void **)(void *)&amp;LnkLI2,0,first,ap);va_end(ap)=
;return V1;} /* SYSTEM::CHECK-TYPE-SYMBOL */<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 (9 (MAPC &#39;EVAL *COMPILER-COMPILE-DAT=
A*))<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 static object LI1__cblas_ddot___gazonk_6=
53784_0(fixnum V6,object V7,fixnum V8,object V9,fixnum V10)<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 ;<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 static void *dlcblas_ddot;<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 #define VMB1=C2=A0 object=C2=A0 V13 ,V12=
 ,V11;<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 #define VMS1<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 #define VMV1<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 #define VMRV1(a_,b_) return((object )a_)=
;<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 #define VMR1(a_) VMRV1(a_,0);<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 #define VM1 0<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 static void * VVi[9]=3D{<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 #define Cdata VV[8]<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 (void *)(&amp;dlcblas_ddot),<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 (void *)(LI1__cblas_ddot___gazonk_653784=
_0)<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 };<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 #define VV (VVi)<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 static object=C2=A0 LnkTLI2(object,...);=
<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 static object=C2=A0 (*LnkLI2)() =3D (obj=
ect (*)()) LnkTLI2;<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 NIL<br>
<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 &gt;(disassemble &#39;foo)<br>
<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 ;; Compiling /tmp/gazonk_653784_0.lsp.<b=
r>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 ;; End of Pass 1.<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 ;; End of Pass 2.<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 OPTIMIZE levels: Safety=3D0 (No runtime =
error checking), Space=3D0, Speed=3D3<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 ;; Finished compiling /tmp/gazonk_653784=
_0.o.<br>
<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 #include &quot;gazonk_653784_0.h&quot;<b=
r>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 void init_code(){do_init((void *)VV);}<b=
r>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 /*=C2=A0 =C2=A0 local entry for function=
 COMMON-LISP-USER::FOO=C2=A0 */<br>
<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 static object LI1__FOO___gazonk_653784_0=
(object V3,object V4)<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 {=C2=A0 =C2=A0 =C2=A0 VMB1 VMS1 VMV1<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 if(!(((char)((fixnu=
m)((uchar*)((fixnum)V3))[(fixnum)2]&amp;(fixnum)1))=3D=3D(0))){<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T5;<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 }<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T2;<br>
<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T5;<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 T5:;<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 V5=3D ((fixnum)((ui=
nt*)((fixnum)V3))[(fixnum)4]&amp;268435455);<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T1;<br>
<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T2;<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 T2:;<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 V5=3D (((fixnum)((u=
int*)((fixnum)V3))[(fixnum)1]&gt;&gt;(fixnum)3)&amp;268435455);<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T1;<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 T1:;<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 {object V6 =3D (/* =
libblas::cblas_ddot */(object )(*LnkLI2)(V5,(V3),(fixnum)1,(V4),(fixnum)1))=
;<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 VMR1(V6);}<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 }<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 static object=C2=A0 LnkTLI2(object first=
,...){object V1;va_list ap;va_start(ap,first);V1=3D(object )call_proc_new((=
(object)VV[0]),0,5,(void **)(void *)&amp;LnkLI2,1092,first,ap);va_end(ap);r=
eturn V1;} /* libblas::cblas_ddot */<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 (2 (MAPC &#39;EVAL *COMPILER-COMPILE-DAT=
A*))<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 static object LI1__FOO___gazonk_653784_0=
(object V3,object V4)<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 ;<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 #define VMB1=C2=A0 fixnum=C2=A0 V5;<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 #define VMS1<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 #define VMV1<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 #define VMRV1(a_,b_) return((object )a_)=
;<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 #define VMR1(a_) VMRV1(a_,0);<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 #define VM1 0<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 static void * VVi[2]=3D{<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 #define Cdata VV[1]<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 (void *)(LI1__FOO___gazonk_653784_0)<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 };<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 #define VV (VVi)<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 static object=C2=A0 LnkTLI2(object,...);=
<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 static object=C2=A0 (*LnkLI2)() =3D (obj=
ect (*)()) LnkTLI2;<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 NIL<br>
<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 &gt;(disassemble &#39;bar)<br>
<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 ;; Compiling /tmp/gazonk_653784_0.lsp.<b=
r>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 ;; End of Pass 1.<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 ;; End of Pass 2.<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 OPTIMIZE levels: Safety=3D0 (No runtime =
error checking), Space=3D0, Speed=3D3<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 ;; Finished compiling /tmp/gazonk_653784=
_0.o.<br>
<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 #include &quot;gazonk_653784_0.h&quot;<b=
r>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 void init_code(){do_init((void *)VV);}<b=
r>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 /*=C2=A0 =C2=A0 local entry for function=
 COMMON-LISP-USER::BAR=C2=A0 */<br>
<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 static object LI1__BAR___gazonk_653784_0=
(object V3,object V4)<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 {=C2=A0 =C2=A0 =C2=A0 VMB1 VMS1 VMV1<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 {fixnum V5;<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 if(!(((char)((fixnu=
m)((uchar*)((fixnum)V3))[(fixnum)2]&amp;(fixnum)1))=3D=3D(0))){<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T5;<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 }<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T2;<br>
<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T5;<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 T5:;<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 V5=3D ((fixnum)((ui=
nt*)((fixnum)V3))[(fixnum)4]&amp;268435455);<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T1;<br>
<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T2;<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 T2:;<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 V5=3D (((fixnum)((u=
int*)((fixnum)V3))[(fixnum)1]&gt;&gt;(fixnum)3)&amp;268435455);<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto T1;<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 T1:;<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 {object V6 =3D make=
_longfloat(((double(*)(uint,double*,uint,double*,uint))(dlcblas_ddot))((uin=
t)V5,(double*)V3-&gt;v.v_self,(uint)1,(double*)V4-&gt;v.v_self,(uint)1));<b=
r>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 VMR1(V6);}}<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 }<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 (2 (MAPC &#39;EVAL *COMPILER-COMPILE-DAT=
A*))<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 static object LI1__BAR___gazonk_653784_0=
(object V3,object V4)<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 ;<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 static void *dlcblas_ddot;<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 #define VMB1<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 #define VMS1<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 #define VMV1<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 #define VMRV1(a_,b_) return((object )a_)=
;<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 #define VMR1(a_) VMRV1(a_,0);<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 #define VM1 0<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 static void * VVi[2]=3D{<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 #define Cdata VV[1]<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 (void *)(&amp;dlcblas_ddot),<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 (void *)(LI1__BAR___gazonk_653784_0)<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 };<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 #define VV (VVi)<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 NIL<br>
<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 &gt;(si::save-system &quot;ff&quot;)<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 $ ./ff<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 GCL (GNU Common Lisp)=C2=A0 2.7.0 Thu Oc=
t 26 12:00:01 PM EDT 2023=C2=A0 CLtL1=C2=A0 =C2=A0 git: Version_2_7_0pre38<=
br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 Source License: LGPL(gcl,gmp), GPL(unexe=
c,bfd,xgcl)<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 Binary License:=C2=A0 GPL due to GPL&#39=
;ed components: (XGCL READLINE UNEXEC)<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 Modifications of this banner must retain=
 notice of a compatible license<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 Dedicated to the memory of W. Schelter<b=
r>
<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 Use (help) to get some basic information=
 on how to use GCL.<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 Temporary directory for compiler files s=
et to /tmp/<br>
<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 &gt;(foo a b)<br>
<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 2.76<br>
<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 &gt;(bar a b)<br>
<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 2.76<br>
<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 &gt;<br>
<br>
<br>
Take care,<br>
<br>
<br>
&gt;<br>
<br>
&gt; - Greg<br>
&gt;<br>
&gt; PS / I Cc-ed to gcl-devel <br>
&gt;<br>
&gt; Le sam. 24 mai 2025 =C3=A0 15:30, Waldek Hebisch &lt;<a href=3D"mailto=
:[email protected]" target=3D"_blank">[email protected]</a>&gt; a =C3=A9crit =
:<br>
&gt;<br>
&gt;=C2=A0 On Fri, May 23, 2025 at 09:56:29PM +0200, Gr=C3=A9gory Vanuxem w=
rote:<br>
&gt;=C2=A0 &gt; Hello,<br>
&gt;=C2=A0 &gt; <br>
&gt;=C2=A0 &gt; I don&#39;t know if you can reproduce this: if I start FriC=
AS from $HOME it<br>
&gt;=C2=A0 &gt; starts nicely but if I start in another directory see the s=
nippet below.<br>
&gt;=C2=A0 &gt; I tried with gcl2.7.1-4 from a Debian based distribution an=
d after with the<br>
&gt;=C2=A0 &gt; official Debian sid and the same happens:<br>
&gt;=C2=A0 &gt;<br>
&gt;=C2=A0 &lt;snip&gt; <br>
&gt;=C2=A0 &gt; <br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 &gt;&gt; System error:<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 INTERNAL-SIMPLE-PARSE-ERROR: &quot;/home/greg/=
/.fricas.input&quot; is not a valid<br>
&gt;=C2=A0 &gt; pathname on host NIL<br>
&gt;=C2=A0 &gt; <br>
&gt;=C2=A0 &gt; <br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 &gt;&gt; System error:<br>
&gt;=C2=A0 &gt;=C2=A0 =C2=A0 INTERNAL-SIMPLE-ERROR: The tag |top_level| is =
undefined.<br>
&gt;<br>
&gt;=C2=A0 Should be fixed now.<br>
&gt;<br>
&gt;=C2=A0 -- <br>
&gt;=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 Waldek Hebisch<br>
&gt;<br>
&gt;=C2=A0 -- <br>
&gt;=C2=A0 You received this message because you are subscribed to the Goog=
le Groups &quot;FriCAS - computer algebra system&quot; group.<br>
&gt;=C2=A0 To unsubscribe from this group and stop receiving emails from it=
, send an email to <a href=3D"mailto:fricas-devel%2Bunsubscribe@googlegroup=
s.com" target=3D"_blank">[email protected]</a>.<br>
&gt;=C2=A0 To view this discussion visit <a href=3D"https://groups.google.c=
om/d/msgid/fricas-devel/aDHJ1HqJwLlykCMl%40fricas.org" rel=3D"noreferrer" t=
arget=3D"_blank">https://groups.google.com/d/msgid/fricas-devel/aDHJ1HqJwLl=
ykCMl%40fricas.org</a>.<br>
<br>
-- <br>
Camm Maguire=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=
=A0 <a href=3D"mailto:[email protected]" target=3D"_blank">camm@maguir=
efamily.org</a><br>
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D<br=
>
&quot;The earth is but one country, and mankind its citizens.&quot;=C2=A0 -=
-=C2=A0 Baha&#39;u&#39;llah<br>
<br>
-- <br>
You received this message because you are subscribed to the Google Groups &=
quot;FriCAS - computer algebra system&quot; group.<br>
To unsubscribe from this group and stop receiving emails from it, send an e=
mail to <a href=3D"mailto:fricas-devel%[email protected]" targ=
et=3D"_blank">[email protected]</a>.<br>
To view this discussion visit <a href=3D"https://groups.google.com/d/msgid/=
fricas-devel/87cybryxm6.fsf%40maguirefamily.org" rel=3D"noreferrer" target=
=3D"_blank">https://groups.google.com/d/msgid/fricas-devel/87cybryxm6.fsf%4=
0maguirefamily.org</a>.<br>
</blockquote></div></div>

<p></p>

-- <br />
You received this message because you are subscribed to the Google Groups &=
quot;FriCAS - computer algebra system&quot; group.<br />
To unsubscribe from this group and stop receiving emails from it, send an e=
mail to <a href=3D"mailto:[email protected]">fricas=
[email protected]</a>.<br />
To view this discussion visit <a href=3D"https://groups.google.com/d/msgid/=
fricas-devel/CAHnU2daC%3DkV89WKkQdkM1fze%2BQcYCXiBoctHMKEKt6DC9gwP2g%40mail=
.gmail.com?utm_medium=3Demail&utm_source=3Dfooter">https://groups.google.co=
m/d/msgid/fricas-devel/CAHnU2daC%3DkV89WKkQdkM1fze%2BQcYCXiBoctHMKEKt6DC9gw=
P2g%40mail.gmail.com</a>.<br />

--0000000000002894fb0636cdc395--