More missing symbols.

Tobias Poschwatta tp at fonz.de
Sat Nov 29 20:51:50 UTC 2008


On Sat, Nov 29, 2008 at 09:42:53PM +0100, Denys Vlasenko wrote:
> This one carries this comment:
> 
> /* exposing these would be fundamentally *wrong*! fix you, instead! */
> /* libc_hidden_proto(fputc_unlocked) */
> strong_alias(__fputc_unlocked,fputc_unlocked)
> /* exposing these would be fundamentally *wrong*! fix you, instead! */
> /* libc_hidden_def(fputc_unlocked) */

I've seen these comments, too. But since recently, gcc-4.3 compilation
failes with "undefined reference to `fputc_unlocked'" messages.

Also, in include/stdio.h, there's:

#ifdef __USE_MISC
/* Faster version when locking is not necessary.

   This function is not part of POSIX and therefore no official
   cancellation point.  But due to similarity with an POSIX interface
   or due to the implementation it is a cancellation point and
   therefore not marked with __THROW.  */
extern int fputc_unlocked (int __c, FILE *__stream);
libc_hidden_proto(fputc_unlocked)
#endif /* Use MISC.  */

Afaict, __USE_MISC is defined if __BSD_SOURCE or __SVID_SOURCE is.
So, if there's no exported 'fputc_unlocked' symbol in libc.so, is an
extern declaration correct here?

T.



More information about the uClibc mailing list