RE: [ROOT] rootcint-generated dictionary incompatible with gcc 3.4

From: Philippe Canal (pcanal@fnal.gov)
Date: Mon Dec 13 2004 - 19:34:52 MET


Hi John,

Thanks for reporting this problem.
The fix will be upload in CVS sometime today and will be part of ROOT
4.02/00

Cheers,
Philippe 

-----Original Message-----
From: owner-roottalk@pcroot.cern.ch [mailto:owner-roottalk@pcroot.cern.ch]
On Behalf Of John Pretz
Sent: Sunday, December 12, 2004 8:16 PM
To: roottalk@pcroot.cern.ch
Subject: [ROOT] rootcint-generated dictionary incompatible with gcc 3.4

Whasssup roottalk!

I'm having trouble compiling the attached code with gcc 3.4.  I'm running
Fedora Core 3, root 4.00.08f.

You can look at the attached example.  It involves a template inheriting
from its template paramters.

The attached example just builds the dictionary using rootcint, then
attempts to compile the dictionary.  The compilation succeeds under gcc
3.2 (RHEL) and fails under gcc 3.4

If you take a look at the link of the Dict.cxx that's failing to compile, it
looks like:
TClass *Template<ClassA,ClassB,ClassC>::fgIsA = 0;  // static to hold class
pointer

In updating my own code to gcc 3.4, I've had to change lines like this to
look like:
template <>
TClass *Template<ClassA,ClassB,ClassC>::fgIsA = 0;  // static to hold class
pointer

Indeed, if I make this one change to the dictionary by hand, the dictionary
compiles fine.

I have not tried this on my gcc 3.4 box with the dev version of root because
it's not completely stable on my box.
(cf
http://root.cern.ch/cgi-bin/print_hit_bold.pl/root/roottalk/roottalk04/3310.
html)
but I did try it with the dev version of root on a gcc 3.2 box.  Even though
the dictionary compiled fine on gcc 3.2, the dictionary contained the same
line that is a syntax error under gcc 3.4, so I don't think this has been
fixed even in the dev version of root.

Maybe I'm doing something wrong?

Thanks for looking,

John



This archive was generated by hypermail 2b29 : Sun Jan 02 2005 - 05:50:10 MET