Hello, seeing the ffsl* commits, I wonder if I missed some new rule to always use a (visible) __libc_X() function within libc. Earlier visible __libc_X() functions were used, if these were needed "internally" in another lib* within uClibc (for ex. cancellation). I this particular case I cannot find any reference in code, that a visible __libc_ffsl() is needed, not even the *hidden_proto/hidden_def part. See proposed change attached -- Schon gehört? GMX hat einen genialen Phishing-Filter in die Toolbar eingebaut! http://www.gmx.net/de/go/toolbar
>From cda3f2658389330999ad35390ed2676a7dc37325 Mon Sep 17 00:00:00 2001 From: Peter S. Mazinger <[email protected]> Date: Sun, 6 Mar 2011 17:08:38 +0100 Subject: [PATCH 2/2] simplify ffs* code
Remove __libc_ffs*, unneeded Signed-off-by: Peter S. Mazinger <[email protected]> --- include/string.h | 8 +------- libc/inet/rpc/svc.c | 3 ++- libc/string/ffs.c | 11 ++++------- libc/string/ffsll.c | 14 +++++--------- 4 files changed, 12 insertions(+), 24 deletions(-) diff --git a/include/string.h b/include/string.h index 66f64e7..c71a85c 100644 --- a/include/string.h +++ b/include/string.h @@ -374,6 +374,7 @@ extern char *rindex (__const char *__s, int __c) /* Return the position of the first bit set in I, or 0 if none are set. The least-significant bit is position 1, the most-significant 32. */ extern int ffs (int __i) __THROW __attribute__ ((__const__)); +libc_hidden_proto(ffs) /* The following two functions are non-standard but necessary for non-32 bit platforms. */ @@ -385,13 +386,6 @@ __extension__ extern int ffsll (long long int __ll) # endif # endif -#ifdef _LIBC -extern __typeof(ffs) __libc_ffs; -libc_hidden_proto(__libc_ffs); -extern __typeof(ffsll) __libc_ffsll; -libc_hidden_proto(__libc_ffsll) -#endif - /* Compare S1 and S2, ignoring case. */ extern int strcasecmp (__const char *__s1, __const char *__s2) __THROW __attribute_pure__ __nonnull ((1, 2)); diff --git a/libc/inet/rpc/svc.c b/libc/inet/rpc/svc.c index 03b4062..b28485d 100644 --- a/libc/inet/rpc/svc.c +++ b/libc/inet/rpc/svc.c @@ -41,6 +41,7 @@ #include <errno.h> #include <unistd.h> +#include <string.h> #include "rpc_private.h" #include <rpc/svc.h> #include <rpc/pmap_clnt.h> @@ -452,7 +453,7 @@ svc_getreqset (fd_set *readfds) setsize = _rpc_dtablesize (); maskp = (u_int32_t *) readfds->fds_bits; for (sock = 0; sock < setsize; sock += 32) - for (mask = *maskp++; (bit = __libc_ffs (mask)); mask ^= (1 << (bit - 1))) + for (mask = *maskp++; (bit = ffs (mask)); mask ^= (1 << (bit - 1))) svc_getreq_common (sock + bit - 1); } libc_hidden_def(svc_getreqset) diff --git a/libc/string/ffs.c b/libc/string/ffs.c index 4a5336d..f39d304 100644 --- a/libc/string/ffs.c +++ b/libc/string/ffs.c @@ -6,11 +6,9 @@ */ #include <limits.h> -#define ffsl __something_else -#include "_string.h" -#undef ffsl +#include <string.h> -int __libc_ffs(int i) +int ffs(int i) { #if 1 /* inlined binary search method */ @@ -51,8 +49,7 @@ int __libc_ffs(int i) return n; #endif } -libc_hidden_def(__libc_ffs) -weak_alias(__libc_ffs,ffs) +libc_hidden_def(ffs) #if ULONG_MAX == UINT_MAX -weak_alias (__libc_ffs, ffsl) +strong_alias_untyped(ffs, ffsl) #endif diff --git a/libc/string/ffsll.c b/libc/string/ffsll.c index 29e9ba9..a766290 100644 --- a/libc/string/ffsll.c +++ b/libc/string/ffsll.c @@ -18,23 +18,19 @@ 02111-1307 USA. */ #include <limits.h> -#define ffsl __something_else -#include "_string.h" -#undef ffsl +#include <string.h> /* Find the first bit set in I. */ -int __libc_ffsll (long long int i) +int ffsll (long long int i) { unsigned long long int x = i & -i; if (x <= 0xffffffff) - return __libc_ffs (i); + return ffs (i); else - return 32 + __libc_ffs (i >> 32); + return 32 + ffs (i >> 32); } -libc_hidden_def(__libc_ffsll) -weak_alias (__libc_ffsll, ffsll) #if ULONG_MAX != UINT_MAX -weak_alias (__libc_ffsll, ffsl) +strong_alias_untyped(ffsll, ffsl) #endif -- 1.7.3.4
_______________________________________________ uClibc mailing list [email protected] http://lists.busybox.net/mailman/listinfo/uclibc
