BXZERO undefined in libbigloo_s-4.6a.so with recent bignumber changes

Joseph Donaldson <[email protected]> Sun, 15 Sep 2024 18:01:47 +0000 (UTC)
Newsgroups gmane.lisp.scheme.bigloo
Message-ID <[email protected]>
------=_Part_8229151_1931656855.1726423307558
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: quoted-printable

Hello, Manuel,
With recent bignumber changes, I am seeing BXZERO undefined errors when com=
piling bdb when configured to build the full bee.=C2=A0 The error is:


Linking...


/usr/bin/ld: /home/jwd/bigloo_srcs/bigloo-1/lib/bigloo/4.6a/libbigloo_s-4.6=
a.so: undefined reference to `BXZERO'



From what I have seen, this is due to differences in the generic and gmp im=
plementations of bignumbers. The generic implementation defines and exports=
 the functions BXZERO, BXPOSITIVE, and BXNEGATIVE. The gmp implementation d=
oes not. However, when compiling the runtime library with BGL_BOOT=3D1, it =
appears we are mixing the 2 implementations, resulting in unsafe/rsa.scm be=
ing miscompiled. It rends up eferencing the function BXZERO (due to extern =
definitions in bigloo_bignumber.h) which is not defined for the GMP bignumb=
er implementation. I am not sure why this does not show up elsewhere but it=
 does surface when compiling bdb. I have not been able to find any easy wor=
karounds. My guess is that the 2 implementations need to be reworked a bit =
to have equivalent interfaces, i.e., both export BXZERO, BXPOSITIVE, and BX=
NEGATIVE or not, but maybe, there is a better way that I have not thought o=
f.
Thanks,=C2=A0Joseph Donaldson=C2=A0 =C2=A0=20

------=_Part_8229151_1931656855.1726423307558
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable

<html><head></head><body><div class=3D"yahoo-style-wrap" style=3D"font-fami=
ly:Helvetica Neue, Helvetica, Arial, sans-serif;font-size:13px;"><div dir=
=3D"ltr" data-setdir=3D"false">Hello, Manuel,</div><div dir=3D"ltr" data-se=
tdir=3D"false"><br></div><div dir=3D"ltr" data-setdir=3D"false">With recent=
 bignumber changes, I am seeing BXZERO undefined errors when compiling bdb =
when configured to build the full bee.&nbsp; The error is:<br></div><div di=
r=3D"ltr" data-setdir=3D"false"><br></div><div dir=3D"ltr" data-setdir=3D"f=
alse"><div><blockquote>Linking...<br></blockquote><blockquote>/usr/bin/ld: =
/home/jwd/bigloo_srcs/bigloo-1/lib/bigloo/4.6a/libbigloo_s-4.6a.so: undefin=
ed reference to `BXZERO'<br><br></blockquote><br></div>From what I have see=
n, this is due to differences in the generic and gmp implementations of big=
numbers. The generic implementation defines and exports the functions BXZER=
O, BXPOSITIVE, and BXNEGATIVE. The gmp implementation does not. However, wh=
en compiling the runtime library with BGL_BOOT=3D1, it appears we are mixin=
g the 2 implementations, resulting in unsafe/rsa.scm being miscompiled. It =
rends up eferencing the function BXZERO (due to extern definitions in biglo=
o_bignumber.h) which is not defined for the GMP bignumber implementation. I=
 am not sure why this does not show up elsewhere but it does surface when c=
ompiling bdb. I have not been able to find any easy workarounds. My guess i=
s that the 2 implementations need to be reworked a bit to have equivalent i=
nterfaces, i.e., both export BXZERO, BXPOSITIVE, and BXNEGATIVE or not, but=
 maybe, there is a better way that I have not thought of.</div><div dir=3D"=
ltr" data-setdir=3D"false"><br></div><div dir=3D"ltr" data-setdir=3D"false"=
>Thanks,&nbsp;</div><div dir=3D"ltr" data-setdir=3D"false">Joseph Donaldson=
&nbsp; &nbsp; <br></div></div></body></html>
------=_Part_8229151_1931656855.1726423307558--