Problem with CLN on Alpha

Richard B. Kreckel kreckel at thep.physik.uni-mainz.de
Mon Feb 12 17:20:58 CET 2001


Hi Ladislav,

First, your email address (the maxa@ -one) is screwed.  Each time I reply
the message bounces, yet you respond...

On Fri, 9 Feb 101 maxa at frodo.jia.czn.cz wrote:
> > >  I am trying to compile CLN library on an Alpha machine. Now I upgraded  the
> > > compiler and binutils but I am still getting a lot of undefined symbols (see
> > > below). Can anybody help? Was anybody able to compile cln on an Alpha machi-
> > > ne?
> > 
> > Yes, me.  No problem at all.  Actually I was extremely careful testing 
> > version 1.1 on any platform I could get my hands on before I released it.
> 
>  Thanks for the reply. Very interesting indeed. Can we compare  a  little  bit
> more?

Sure.

> > About *how* many undefined symbols did you get?  
> > [ ] about 10
> > [X] about 100
> > [ ] about 1000
> Just exactly:
> grep -e "undefined" --count make.logfile
> 178

Aha, it doesn't look like such a simple linker screw as I had expected
first.

> > For me, the link line in your report works just fine.  You obviously have
> > some linker confusion.  Don't you have a local Linux guru who might help
> > you out with this stuff?
> 
> Unfortunately there is no Linux guru aroung, except me. Looking at the problem
> in more details, all undefined symbols comes from names like
> 
>         _GLOBAL_$I$cl_module__cl_*__firstglobalfun
> or
>         _GLOBAL_$D$cl_module__cl_*__firstglobalfun
> 
> . Looking at object files (which I am linking), none of them has those symbols
> defined, so I think my linker is right. Are those  symbols  defined?  If  yes,
> where they should be defined?

The global ctors and dtors are sitting right there where they belong 
to.  I just tried compiling CLN-1.1 from scratch on a Debian potato Alpha
box.  Looking at all the object files I see them there:

wino:/tmp/cln-1.1$ uname -a
Linux wino 2.2.17 #1 Wed Sep 27 17:00:52 CEST 2000 alpha unknown
wino:/tmp/cln-1.1$ ld -v
GNU ld version 2.9.5 (with BFD 2.9.5.0.37)
wino:/tmp/cln-1.1$ gcc -v
Reading specs from /usr/lib/gcc-lib/alpha-linux/2.95.2/specs
gcc version 2.95.2 20000220 (Debian GNU/Linux)
wino:/tmp/cln-1.1/src$ for i in *.o; do nm $i |grep "T _GLOBAL_\$I\$cl_module__cl_" |grep "__firstglobalfun" >> /dev/null && echo "$i "; done
cl_0_ring.o
cl_C_ring.o
cl_DF_globals.o
cl_FF_globals.o
cl_F_catalanconst_var.o
cl_F_epsneg.o
cl_F_epspos.o
cl_F_eulerconst_var.o
cl_F_exp1_var.o
cl_F_leastneg.o
cl_F_leastpos.o
cl_F_ln10_var.o
cl_F_ln2_var.o
cl_F_mostneg.o
cl_F_mostpos.o
cl_F_pi_var.o
cl_GV_I.o
cl_GV_number.o
cl_I_doublefactorial.o
cl_I_factorial.o
cl_I_ring.o
cl_LF_globals.o
cl_MI.o
cl_RA_ring.o
cl_R_ring.o
cl_SV_number.o
cl_SV_ringelt.o
cl_UP.o
cl_UP_named.o
cl_UP_no_ring.o
cl_UP_unnamed.o
cl_fmt_floatstring.o
cl_fmt_scaleexp.o
cl_ieee.o
cl_no_ring.o
cl_prin_globals.o
cl_random_def.o
cl_st_null.o
cl_symbol.o

>  Could the problem be related to the configure? There is one line which  makes
> me wonder if it's right:
> 
> checking whether the global constructors function need to be exported... yes

No, that is just fine.  That macro checks whether to export the global
ctor/dtor, as needed by the scope of EGCS >= 1.1.2.  Another macro checks
whether it is _GLOBAL_$D$cl_module__ (as on Alpha) or
GLOBAL_.D.cl_module__ (as on Intel) or even something else.  So I am still
rather clueless what is happening.  You were having optimization switched
on so you didn't fall into that include/cln/modules.h trap.  Really, I
have no idea...

> > You could also try a static library only.
> > 
>  I have already tried, but that's the same problem.

For your convenience, I have uploaded the static library I just compiled
to <ftp://ftpthep.physik.uni-mainz.de/pub/kreckel/>.  You should be able
to do some debugging with this.  Please do tell us when you find out what
was wrong.

Regards
     -richy.
-- 
Richard Kreckel
<Richard.Kreckel at Uni-Mainz.DE>
<http://wwwthep.physik.uni-mainz.de/~kreckel/>





More information about the GiNaC-devel mailing list