svn commit: trunk/busybox: include libbb

landley at busybox.net landley at busybox.net
Thu May 4 21:22:32 UTC 2006


Author: landley
Date: 2006-05-04 14:22:27 -0700 (Thu, 04 May 2006)
New Revision: 15000

Log:
Not quite compiler independent, but we've never tried to be gcc independent
anyway.  This is at least less ugly than what was there before, and fixes
building all sources at once.


Modified:
   trunk/busybox/include/libbb.h
   trunk/busybox/include/platform.h
   trunk/busybox/libbb/xfuncs.c


Changeset:
Modified: trunk/busybox/include/libbb.h
===================================================================
--- trunk/busybox/include/libbb.h	2006-05-04 20:56:43 UTC (rev 14999)
+++ trunk/busybox/include/libbb.h	2006-05-04 21:22:27 UTC (rev 15000)
@@ -414,12 +414,6 @@
 void add_to_ino_dev_hashtable(const struct stat *statbuf, const char *name);
 void reset_ino_dev_hashtable(void);
 
-/* Stupid gcc always includes its own builtin strlen()... */
-extern size_t bb_strlen(const char *string);
-#ifndef BB_STRLEN_IMPLEMENTATION
-#define strlen(x)   bb_strlen(x)
-#endif
-
 char *bb_xasprintf(const char *format, ...) __attribute__ ((format (printf, 1, 2)));
 
 #define FAIL_DELAY    3

Modified: trunk/busybox/include/platform.h
===================================================================
--- trunk/busybox/include/platform.h	2006-05-04 20:56:43 UTC (rev 14999)
+++ trunk/busybox/include/platform.h	2006-05-04 21:22:27 UTC (rev 15000)
@@ -32,17 +32,6 @@
 # endif
 #endif
 
-#if 0
-/* Attribute __malloc__ on functions was valid as of gcc 2.96. */
-#ifndef ATTRIBUTE_MALLOC
-# if __GNUC_PREREQ (2,96)
-#  define ATTRIBUTE_MALLOC __attribute__ ((__malloc__))
-# else
-#  define ATTRIBUTE_MALLOC
-# endif /* GNUC >= 2.96 */
-#endif /* ATTRIBUTE_MALLOC */
-#endif
-
 #ifndef ATTRIBUTE_UNUSED
 # define ATTRIBUTE_UNUSED __attribute__ ((__unused__))
 #endif /* ATTRIBUTE_UNUSED */
@@ -78,6 +67,11 @@
 # endif
 #endif
 
+#ifdef __GNUC__
+#define strlen(x) bb_strlen(x)
+extern size_t bb_strlen(const char *string);
+#endif
+
 /* ---- Endian Detection ------------------------------------ */
 #ifndef __APPLE__
 # include <byteswap.h>

Modified: trunk/busybox/libbb/xfuncs.c
===================================================================
--- trunk/busybox/libbb/xfuncs.c	2006-05-04 20:56:43 UTC (rev 14999)
+++ trunk/busybox/libbb/xfuncs.c	2006-05-04 21:22:27 UTC (rev 15000)
@@ -14,16 +14,8 @@
 #include <stdlib.h>
 #include <unistd.h>
 #include <fcntl.h>
+#include "busybox.h"
 
-/* Since gcc always inlines strlen(), this saves a byte or two, but we need
- * the #undef here to avoid endless loop from #define strlen bb_strlen */
-#ifdef L_strlen
-#define BB_STRLEN_IMPLEMENTATION
-#endif
-
-#include "libbb.h"
-
-
 #ifndef DMALLOC
 #ifdef L_xmalloc
 void *xmalloc(size_t size)
@@ -182,10 +174,12 @@
 }
 #endif
 
+// GCC forces inlining of strlen everywhere, which is generally a byte
+// larger than calling a function, and it's called a lot so it adds up.
 #ifdef L_strlen
 size_t bb_strlen(const char *string)
 {
-	    return(strlen(string));
+	    return(__builtin_strlen(string));
 }
 #endif
 




More information about the busybox-cvs mailing list