undefined symbols in uclibc from today

Filippo ARCIDIACONO filippo.arcidiacono at st.com
Tue Nov 25 14:29:39 UTC 2008


 

> -----Original Message-----
> From: uclibc-bounces at uclibc.org 
> [mailto:uclibc-bounces at uclibc.org] On Behalf Of Khem Raj
> Sent: Sunday, November 23, 2008 9:22 AM
> To: Denys Vlasenko
> Cc: uclibc at uclibc.org
> Subject: Re: undefined symbols in uclibc from today
> 
> On Sat, Nov 22, 2008 at 6:39 AM, Denys Vlasenko 
> <vda.linux at googlemail.com> wrote:
> > On Saturday 22 November 2008 07:24, Khem Raj wrote:
> >> Hmm so this wcsxfrm is guarded by UCLIBC_HAS_LOCALE config option.
> >> your patch just exposed it.
> >
> > If you are saying that I am not guilty that's nice to hear, 
> bur I am 
> > also interested how exactly my patch exposed that.
> 
> Well no blame game here. I am just saying that earlier this 
> symbol was exported even if locales were not configured. But 
> now with your patch its doing the right thing.
> 
> > Can you describe in more details?
> >
> >> I thought they should be wide char
> >> routines and I do have wide char support turned on in config.
> >
> > Manpage seems to say that it is locale-related indeed:
> >
> >       size_t wcsxfrm(wchar_t *restrict ws1, const wchar_t 
> *restrict ws2,
> >              size_t n);
> > DESCRIPTION
> >       The  wcsxfrm()  function  shall  transform  the  
> wide-character  string
> >       pointed to by ws2 and place the resulting  
> wide-character  string  into
> >       the  array  pointed to by ws1. The transformation 
> shall be such that if
> >       wcscmp() is applied to two transformed wide strings, 
> it shall return  a
> >       value  greater  than,  equal  to,  or less than 0, 
> corresponding to the
> >       result of wcscoll() applied to the  same  two  
> original  wide-character
> >       strings.
> >
> > The point is, wcscoll() is a locale function:
> >
> >       The  wcscoll() function shall compare the 
> wide-character string pointed
> >       to by ws1 to the wide-character string pointed to by 
> ws2,  both  inter-
> >       preted as appropriate to the LC_COLLATE category of 
> the current locale.
> >
> > thus wcsxfrm() has to understand locale to work properly.
> 
> yeah thats what I figured out.
> 
> >
> > But maybe, if locale support is configured out, wcsxfrm() 
> should still 
> > be present, and work as if C locale is in effect?
> 
> Yeah probably I should just enable locales end of story.
IMO the function wcsxfrm() have to be defined without UCLIBC_HAS_LOCALE
Enabled. After some investigation I had fix the problem adding
libc_hidden_def(wcsxfrm) in libc/string/strlcpy.c (included by wcslcpy.c).
When locale is on the wcsxfrm() function is defined in _collate.c
(included by wcsxfrm.c).

> 
> >
> > --
> > vda
> >
Cheers,
Filippo.
> _______________________________________________
> uClibc mailing list
> uClibc at uclibc.org
> http://busybox.net/cgi-bin/mailman/listinfo/uclibc
> 




More information about the uClibc mailing list