2014-12-01 0:41 GMT-02:00 François Bissey <francois.bis...@canterbury.ac.nz>: > In sage-on-gentoo I don't seem to hit that problem with 4.9.2 > either. I am really curious about your default building flags.
Actually, it was partly my fault. I was using an early patch to adapt to use ntl6, what is no longer required as sagemath now uses ntl6. Just removing that patch correct the problem. But, the patch was working previously, basically it was a "typedef struct someZZ someZZ;" and update prototypes to use the typedef. I could not create a small reproducer. But found it interesting that adding an explicit: +#ifdef __cplusplus +extern "C" +#endif int ZZ_p_to_int(const ZZ_p& x ) to not_wrap.c would cause a compilation failure telling it was not compatible with EXTERN int ZZ_p_to_int(const ZZ_p& x) defined in ntl_wrap.h. The non expanded EXTERN was weird. And apparently the issue happens because I am trying to build with ntl-6.2.1, as with previous ntl it did not happen. > Francois > > On Mon, 01 Dec 2014 12:51:50 François Bissey wrote: >> Very strange I don't have it in sage-on-gentoo. >> objdump -T --demangle /usr/lib64/libcsage.so |grep ZZ_p_to_int >> 0000000000009320 g DF .text 000000000000000e Base ZZ_p_to_int >> >> sage -v >> Sage Version 6.5.beta1, Release Date: 2014-11-23 >> >> We had a few issue with C++ ompiling during the upgrade and more have >> surfaced on my side with people trying out -flto but not that particular >> symbol. flto seems to mess up inline templates the same way that we found >> not all versions of were producing symbol for them in >> http://trac.sagemath.org/ticket/16882 >> as pointed out by Volker. >> >> Since gcc 4.9.2 is shipped in sage and a number of people are using it >> I would be looking at any flags you are using. I may have a shot at >> gcc 4.9.2 here. >> >> Francois >> >> On Sun, 30 Nov 2014 11:44:09 Paulo César Pereira de Andrade wrote: >> > I think this may have been working somewhat of by accident >> > >> > before, because it says 'extern "C"' in one place and in another >> > say '// sorry, if you want a C version, feel free to add it' >> > >> > I delayed a bit sagemath 6.4 update due to some dependencies >> > >> > needing to be updated in Fedora, in the meantime 6.4.1 was >> > released. >> > >> > Trying to update to Fedora sagemath rpm to 6.4.1 I am being >> > >> > hit by this: >> > >> > ---%<--- >> > >> > File >> > >> > "/home/pcpa/rpmbuild/BUILDROOT/sagemath-6.4.1-1.fc22.x86_64/usr/lib64/pyth >> > o >> > n2.7/site-packages/sage/libs/ntl/__init__.py", line 1, in <module> >> > >> > import all >> > >> > File >> > >> > "/home/pcpa/rpmbuild/BUILDROOT/sagemath-6.4.1-1.fc22.x86_64/usr/lib64/pyth >> > o >> > n2.7/site-packages/sage/libs/ntl/all.py", line 34, in <module> >> > >> > from sage.libs.ntl.ntl_ZZ_p import ( >> > >> > ImportError: >> > /home/pcpa/rpmbuild/BUILDROOT/sagemath-6.4.1-1.fc22.x86_64/usr/lib64/pytho >> > n >> > 2.7/site-packages/sage/libs/ntl/ntl_ZZ_p.so: undefined symbol: ZZ_p_to_int >> > error: Bad exit status from /var/tmp/rpm-tmp.moMkJq (%install) >> > ---%<--- >> > >> > Previously it was exported as a "C" symbol: >> > $ rpm -q sagemath >> > sagemath-6.3-3.fc22.x86_64 >> > $ objdump -T --demangle /usr/lib64/libcsage.so | grep ZZ_p_to_int >> > 0000000000008760 g DF .text 0000000000000005 Base ZZ_p_to_int >> > >> > But the newly generated libcsage.so does only show a C++ symbol: >> > $ objdump -T --demangle BUILD/sage-6.4.1/src/c_lib/libcsage.so | grep >> > ZZ_p_to_int >> > 00000000000087d0 g DF .text 0000000000000005 Base >> > ZZ_p_to_int(NTL::ZZ_p const&) >> > >> > So, it may be required some extra wrapping, but more likely, >> > >> > patch the cython code to only use ZZ_to_int(ZZ*). >> > >> > This may also be useful... >> > >> > $ rpm -q gcc binutils >> > gcc-4.9.2-1.fc22.x86_64 >> > binutils-2.24-29.fc22.x86_64 Thanks, Paulo -- You received this message because you are subscribed to the Google Groups "sage-devel" group. To unsubscribe from this group and stop receiving emails from it, send an email to sage-devel+unsubscr...@googlegroups.com. To post to this group, send email to sage-devel@googlegroups.com. Visit this group at http://groups.google.com/group/sage-devel. For more options, visit https://groups.google.com/d/optout.