This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
What fixed weak symbols/template code between 3.0 and 3.0.1 CVS?
- To: gcc at gcc dot gnu dot org
- Subject: What fixed weak symbols/template code between 3.0 and 3.0.1 CVS?
- From: Richard Chan <cshihpin at dso dot org dot sg>
- Date: Mon, 6 Aug 2001 10:34:17 +0800
- Cc: weidai at eskimo dot com
Hi, I am curious to know what recent changed in 3.0.1 CVS has fixed a weak
symbol/template code problem I have encounterd.
When trying to compile Crypto++ v.4.1 from http://www.eskimo.com
using GCC 3.0 and GCC 3.0.1 CVS. I observed the following:
With GCC 3.0 release some weak symbols in templated code were
not being emitted, so linking failed. Example is the ec2n.cpp file.
Output of 3.0 release
000019d0 T _ZNK8CryptoPP4EC2N6DoubleERKNS_9EC2NPointE
Output of 3.0.1 CVS
00000000 W _ZNK8CryptoPP13AbstractGroupINS_9EC2NPointEE6DoubleERKS1_
000010d0 T _ZNK8CryptoPP4EC2N6DoubleERKNS_9EC2NPointE
(BTW the class EC2N publically inherits fm the template
AbstractGroup<EC2NPoint>.)
As you can see the W symbol was not being emitted in 3.0. This
caused some linker failures later on.
BTW GCC 3.0.1 CVS can now successfully compile Crypto++ V4.1 (with very minor
fixes) and pass the validation test.
Cheers
Richard