uClibc_mutex.h and libc-lock.h

Timo Teräs timo.teras at iki.fi
Sun Apr 18 14:03:16 UTC 2010


Kevin Day wrote:
> Apparently with freetype, including #include <bits/libc-lock.h> causes
> compile time errors.
> The error has something to do with line 309 of bits/libc-lock.h where
> the function __libc_cleanup_routine gets defined.
> I simply commented out "#include <bits/libc-lock.h>" from
> uClibc_mutex.h and freetype compiled properly.
> 
> I had related problems with compiling gettext as well but was able to
> work around that.
> 
> The commit is: http://git.uclibc.org/uClibc/commit/?h=nptl&id=0eadd98d30c51d26fde4062e6b8c48f3c9b5148d
> 
> The error was:
> 
> In file included from /toolchain/include/bits/uClibc_mutex.h:16,
>                  from /toolchain/include/bits/uClibc_stdio.h:107,
>                  from /toolchain/include/stdio.h:72,
>                  from
> /work/freetype-2.3.11/include/freetype/config/ftstdlib.h:100,
>                  from ./builds/unix/ftconfig.h:43,
>                  from builds/unix/ftsystem.c:21:
> /toolchain/include/bits/libc-lock.h:309: error: expected '=', ',',
> ';', 'asm' or '__attribute__' before 'void'

Hmmh. Seems like I added that semi-incidentally. I was thinking of using
the glibc used "libc locking" macroes from libc-lock.h, but ended up using
the weak definitions. I think the whole uClibc_mutex.h should not be included
(or ifdeffed out) if we are not building libc. I guess the lock definition
defines are needed in public, headers; but at least the function macroes
should not be visible to applications.

Just removing the include should be ok though. But I suspect you might
get similar errors if you have the __USE_STDIO_FUTEXES__ defined, which
you probably should have enabled if you are using nptl.

Seems like we need to sprinkle some #ifdef _LIBC's.

- Timo


More information about the uClibc mailing list