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>>(si:mdlsym "jl_init" &qu=
ot;libjulia.so")<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": "/usr/local/lib/libjulia.so: undefined symbol: jl=
_pgcstack_static_semaphore"<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,"Couri=
er New",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)">&&</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)">"local-exec"</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)">&</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",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)">&&</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)">"jl=
_pgcstack_setkey"</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)">"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)">=
"</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)">"jl_get_pgcstack_static"</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)">"jl_pgcstack_addr_static"</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"</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)">&&</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)">&=
&</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)">&</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 "jl_init" (|make_absolute_filename| "=
;/lib/julia_wrap.so")) :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 '(|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.</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'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 "terminate" 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 <<a href=3D"m=
ailto:[email protected]">[email protected]</a>> 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 <<a href=3D"mailto:[email protected]" target=3D"_=
blank">[email protected]</a>> writes:<br>
<br>
> Hi Waldek,<br>
><br>
> Many thanks for this quick response and fix. Just tested on official F=
riCAS and the 2 problems you mentioned previously gone away.<br>
><br>
> The .fricas.input file is still not "read" 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>
> length of output to 110. Maybe this is related to my Kali distribution=
on WSL2, I don't know.<br>
><br>
> The )read command is to blame on my settings:<br>
><br>
> (1) -> )sys pws<br>
><br>
>=C2=A0 =C2=A0 >> System error:<br>
>=C2=A0 =C2=A0 INTERNAL-SIMPLE-ERROR: The assertion !posix_spawnp(&p=
id, *p1, &file_actions, &attr, (void *)p1, environ) on line 65 of o=
/unixsys.c in function vsystem failed:<br>
> No such file or directory<br>
><br>
> (1) -> )sys pwd<br>
> /home/greg<br>
> (1) -> )sys ls -l .fricas.input<br>
> -rw-r--r-- 1 greg greg 35 Feb 11 09:42 .fricas.input<br>
> (1) -> )read .fricas.input<br>
><br>
>=C2=A0 =C2=A0 The file .fricas.input is needed but does not exist.<br>
><br>
> BTW great improvements have been done for gcl-2.7.1, thanks to you and=
<br>
> Camm, it's a very good thing for me since I plan to code a wrapper=
in<br>
> Common Lisp using my C wrapper to Julia compatible with GCL. I did one=
<br>
> for Axiom in the past, a coding LISP game for me containing only<br>
> "and", "or "and "not" keywords (no<br>
<br>
Most happy to see a satisfied customer!<br>
<br>
> loops or conditionals). A direct wrapper to Fortran BLAS in fact. Now<=
br>
> I have to look at documentation changes for the GCL-2.7 series FFI.<br=
>
><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>
>(describe '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 &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'=
;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 >(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 >(compile (si::defdlfun (:double &quo=
t;cblas_ddot" "libblas.so") :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"/tmp/gazonk_653784_0.=
o"<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"/tmp/gazonk_=
653784_0.o"<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 #<function 0000000001a4a860><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 >(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 >(do-symbols (s '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 >(setq a (make-array 3 :element-type =
'long-float) b (make-array 3 :element-type '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 >(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 >(|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 >(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"/tmp/gazonk_653784_0.=
o"<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"/tmp/gazonk_=
653784_0.o"<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 #<function 0000000001a62140><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 >(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"/tmp/gazonk_653784_0.=
o"<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"/tmp/gazonk_=
653784_0.o"<br>
=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 #<function 0000000001a62740><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 >(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 >(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 >(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 >(disassemble '|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 "gazonk_653784_0.h"<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)<=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)<=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)<=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)<=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)<=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)<=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->v.v_self,(uint)V8,(double*)V9->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 *)&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 '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 *)(&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 >(disassemble '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 "gazonk_653784_0.h"<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]&(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]&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]>>(fixnum)3)&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 *)&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 '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 >(disassemble '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 "gazonk_653784_0.h"<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]&(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]&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]>>(fixnum)3)&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->v.v_self,(uint)1,(double*)V4->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 '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 *)(&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 >(si::save-system "ff")<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'=
;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 >(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 >(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 ><br>
<br>
<br>
Take care,<br>
<br>
<br>
><br>
<br>
> - Greg<br>
><br>
> PS / I Cc-ed to gcl-devel <br>
><br>
> Le sam. 24 mai 2025 =C3=A0 15:30, Waldek Hebisch <<a href=3D"mailto=
:[email protected]" target=3D"_blank">[email protected]</a>> a =C3=A9crit =
:<br>
><br>
>=C2=A0 On Fri, May 23, 2025 at 09:56:29PM +0200, Gr=C3=A9gory Vanuxem w=
rote:<br>
>=C2=A0 > Hello,<br>
>=C2=A0 > <br>
>=C2=A0 > I don't know if you can reproduce this: if I start FriC=
AS from $HOME it<br>
>=C2=A0 > starts nicely but if I start in another directory see the s=
nippet below.<br>
>=C2=A0 > I tried with gcl2.7.1-4 from a Debian based distribution an=
d after with the<br>
>=C2=A0 > official Debian sid and the same happens:<br>
>=C2=A0 ><br>
>=C2=A0 <snip> <br>
>=C2=A0 > <br>
>=C2=A0 >=C2=A0 =C2=A0 >> System error:<br>
>=C2=A0 >=C2=A0 =C2=A0 INTERNAL-SIMPLE-PARSE-ERROR: "/home/greg/=
/.fricas.input" is not a valid<br>
>=C2=A0 > pathname on host NIL<br>
>=C2=A0 > <br>
>=C2=A0 > <br>
>=C2=A0 >=C2=A0 =C2=A0 >> System error:<br>
>=C2=A0 >=C2=A0 =C2=A0 INTERNAL-SIMPLE-ERROR: The tag |top_level| is =
undefined.<br>
><br>
>=C2=A0 Should be fixed now.<br>
><br>
>=C2=A0 -- <br>
>=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>
><br>
>=C2=A0 -- <br>
>=C2=A0 You received this message because you are subscribed to the Goog=
le Groups "FriCAS - computer algebra system" group.<br>
>=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>
>=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=
>
"The earth is but one country, and mankind its citizens."=C2=A0 -=
-=C2=A0 Baha'u'llah<br>
<br>
-- <br>
You received this message because you are subscribed to the Google Groups &=
quot;FriCAS - computer algebra system" 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" 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--