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 | ||
