Subject: lib/16000: citrus_ctype.c introduces undefined symbols into libc if compiled without _I18N_DYNAMIC defined
To: None <gnats-bugs@gnats.netbsd.org>
From: None <ww@GROOVY.NET>
List: netbsd-bugs
Date: 03/21/2002 18:17:44
>Number:         16000
>Category:       lib
>Synopsis:       citrus_ctype.c introduces undefined symbols into libc if compiled without _I18N_DYNAMIC defined
>Confidential:   no
>Severity:       serious
>Priority:       high
>Responsible:    lib-bug-people
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Thu Mar 21 15:24:00 PST 2002
>Closed-Date:
>Last-Modified:
>Originator:     ww@GROOVY.NET
>Release:        NetBSD 1.5ZC
>Organization:
	Groovy Network Services
>Environment:
System: NetBSD epanaphora 1.5ZC NetBSD 1.5ZC (EPANAPHORA-$Revision: 1.2 $) #16: Mon Mar 18 16:37:18 EST 2002 ww@epanaphora:/src/NetBSD/src/sys/arch/sparc64/compile/EPANAPHORA sparc64
Architecture: sparc64
Machine: sparc64
>Description:

_citrus_ctype_default is defined inside the '#ifdef _I18N_DYNAMIC' clause but referenced
after the corresponding '#else' clause. This causes an undefined symbol in libc that 
prevents linking static binaries.

>How-To-Repeat:

The problem showed up when doing a build with build.sh when it attempted to build a
static gzip binary.

>Fix:

% cvs diff citrus_ctype.c
Index: citrus_ctype.c
===================================================================
RCS file: /cvs/NetBSD/basesrc/lib/libc/citrus/citrus_ctype.c,v
retrieving revision 1.1
diff -r1.1 citrus_ctype.c
52,56d51
< #ifdef _I18N_DYNAMIC
< 
< static int _initctypemodule(_citrus_ctype_t, char const *, _citrus_module_t,
< 			    void *, size_t, size_t);
< 
61a57,61
> 
> #ifdef _I18N_DYNAMIC
> 
> static int _initctypemodule(_citrus_ctype_t, char const *, _citrus_module_t,
> 			    void *, size_t, size_t);
>Release-Note:
>Audit-Trail:
>Unformatted: