diff options
Diffstat (limited to 'libbb')
-rw-r--r-- | libbb/xfuncs.c | 14 |
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 |
186 | size_t bb_strlen(const char *string) | 180 | size_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 | ||