Subject: Re: Package archive needs more stuff--here's an inventory
To: Olaf Seibert <rhialto@mbfys.kun.nl>
From: Scott Reynolds <scottr@Plexus.COM>
List: netbsd-users
Date: 03/16/1995 10:36:36
On Tue, 14 Mar 1995, Olaf Seibert wrote:
> I installed gcc 2.6.3 from the binary package at ftp.netbsd.org,
> and with g++ I'm having trouble with template functions being
> multiply defined.
>
> /var/tmp/cc0004021.o: Definition of symbol `_split__t10DoubleList1Zi' (multiply defined)
> /var/tmp/cc0004022.o: Definition of symbol `_split__t10DoubleList1Zi' (multiply defined)
I extracted the sources out of your example and tried with my
slightly-patched version of gcc-2.6.3. I had no problems. (It's this
same patch that allows gcc-2.6.3 to successfully compile libg++-2.6.2 on
NetBSD.) Perhaps it could be included in the binary package?
[forwarded message follows]
This patch fixes the multiply defined template functions bug
which was introduced in 2.6.1.
Jason
*** ../../gcc-2.6.3/cp/pt.c Mon Nov 14 23:34:29 1994
--- pt.c Mon Dec 12 21:10:06 1994
***************
*** 2302,2307 ****
--- 2302,2311 ----
else if (! flag_implicit_templates)
DECIDE (0);
+ if (i->interface == 1)
+ /* OK, it was an implicit instantiation. */
+ TREE_PUBLIC (t) = 0;
+
/* If it's a method, let the class type decide it.
@@ What if the method template is in a separate file?
Maybe both file contexts should be taken into account?
Scott Reynolds
System Administrator
Technology Group, Inc.
#include <std/disclaimer.h>