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: current-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>