aboutsummaryrefslogtreecommitdiff
path: root/libbb
diff options
context:
space:
mode:
Diffstat (limited to 'libbb')
-rw-r--r--libbb/xfuncs.c14
1 files changed, 4 insertions, 10 deletions
diff --git a/libbb/xfuncs.c b/libbb/xfuncs.c
index 3db526b85..f1f988f80 100644
--- a/libbb/xfuncs.c
+++ b/libbb/xfuncs.c
@@ -14,15 +14,7 @@
14#include <stdlib.h> 14#include <stdlib.h>
15#include <unistd.h> 15#include <unistd.h>
16#include <fcntl.h> 16#include <fcntl.h>
17 17#include "busybox.h"
18/* Since gcc always inlines strlen(), this saves a byte or two, but we need
19 * the #undef here to avoid endless loop from #define strlen bb_strlen */
20#ifdef L_strlen
21#define BB_STRLEN_IMPLEMENTATION
22#endif
23
24#include "libbb.h"
25
26 18
27#ifndef DMALLOC 19#ifndef DMALLOC
28#ifdef L_xmalloc 20#ifdef L_xmalloc
@@ -182,10 +174,12 @@ void bb_xfflush_stdout(void)
182} 174}
183#endif 175#endif
184 176
177// GCC forces inlining of strlen everywhere, which is generally a byte
178// larger than calling a function, and it's called a lot so it adds up.
185#ifdef L_strlen 179#ifdef L_strlen
186size_t bb_strlen(const char *string) 180size_t bb_strlen(const char *string)
187{ 181{
188 return(strlen(string)); 182 return(__builtin_strlen(string));
189} 183}
190#endif 184#endif
191 185