Hi,
I played a bit with installed uclibc headers
(result of make install) and I noticed a few things:
features.h:
/* uClibc does not support *at interfaces. */
#undef _ATFILE_SOURCE
#undef __USE_ATFILE
Is this still frue? I saw some patches flying around...
Looks like _LIB define actually means "at libc build time"
(wow, a textbook example of a bad name).
#ifdef _LIBC
# include <libc-internal.h>
#endif
That's what I used UCLIBC_INTERNAL for (because I didn't know
about/_LIBC), but UCLIBC_INTERNAL also is unifdef'ed
out of installed headers. Are we better to also unifdef _LIBC?
And lastly, libc-internal.h and libc-symbols.h seem to be
of interest only to uclibc itself. These are also the only
files with pattern libc-XXXX.h. Should we exclude all such files?
This would be useful for other internal things too.
For one, I plan to add some optimized assembly
for inlined memsets etc, and I don't want it to spill over
into installed headers. libc-string-$ARCH.h would be a good place...
(OTOH:
hmm maybe i _should_ make it appear in installed headers?
User program:
#define UCLIBC_GIVE_ME_GOOD_STUFF
#include <string.h> // your memset now a clever macro (maybe)
)
Example of changes in installed headers by attached patch:
--- /usr/srcdevel/uclibc/fix/uClibc.t6/!INSTALL/i386/usr/include/features.h
Thu Dec 11 00:36:36 2008
+++ !INSTALL/i386/usr/include/features.h Thu Dec 11 01:05:33 2008
@@ -410,9 +410,6 @@
#undef _ATFILE_SOURCE
#undef __USE_ATFILE
-#ifdef _LIBC
-# include <libc-internal.h>
-#endif
/* Some people like to build up uClibc with *-elf toolchains, so
* a little grease here until we drop '#ifdef __linux__' checks
Only in /usr/srcdevel/uclibc/fix/uClibc.t6/!INSTALL:
i386/usr/include/libc-symbols.h
--- /usr/srcdevel/uclibc/fix/uClibc.t6/!INSTALL/i386/usr/include/malloc.h
Thu Dec 11 00:36:36 2008
+++ !INSTALL/i386/usr/include/malloc.h Thu Dec 11 01:05:33 2008
@@ -51,11 +51,7 @@
# define __malloc_ptr_t char *
#endif
-#ifdef _LIBC
-/* Used by GNU libc internals. */
-# define __malloc_size_t size_t
-# define __malloc_ptrdiff_t ptrdiff_t
-#elif !defined __attribute_malloc__
+#if !defined __attribute_malloc__
# define __attribute_malloc__
#endif
The patch itself is below. Is it ok?
--
vda
diff -d -urpN uClibc.6/extra/scripts/install_headers.sh
uClibc.7/extra/scripts/install_headers.sh
--- uClibc.6/extra/scripts/install_headers.sh 2008-11-29 16:37:45.000000000
+0100
+++ uClibc.7/extra/scripts/install_headers.sh 2008-12-11 01:09:20.000000000
+0100
@@ -41,13 +41,17 @@ IFS=''
while read -r filename; do
if test -d "$1/$filename"; then
mkdir -p "$2/$filename" 2>/dev/null
- else
- # NB: unifdef exits with 1 if output is not
- # exactly the same as input. That's ok.
- # Do not abort the script if unifdef "fails"!
- "$top_builddir/extra/scripts/unifdef" -UUCLIBC_INTERNAL
"$1/$filename" \
- | sed -e
'/^\(rtld\|lib\(c\|m\|resolv\|dl\|intl\|rt\|nsl\|util\|crypt\|pthread\)\)_hidden_proto[
]*([a-zA-Z0-9_]*)$/d' >"$2/$filename"
+ continue
+ fi
+ if test x"${filename##libc-*.h}" = x""; then
+ # Do not install libc-XXXX.h files
+ continue
fi
+ # NB: unifdef exits with 1 if output is not
+ # exactly the same as input. That's ok.
+ # Do not abort the script if unifdef "fails"!
+ "$top_builddir/extra/scripts/unifdef" -UUCLIBC_INTERNAL -U_LIBC
"$1/$filename" \
+ | sed -e
'/^\(rtld\|lib\(c\|m\|resolv\|dl\|intl\|rt\|nsl\|util\|crypt\|pthread\)\)_hidden_proto[
]*([a-zA-Z0-9_]*)$/d' >"$2/$filename"
done
)
_______________________________________________
uClibc mailing list
[email protected]
http://busybox.net/cgi-bin/mailman/listinfo/uclibc