X-Git-Url: https://git.saurik.com/apple/xnu.git/blobdiff_plain/39236c6e673c41db228275375ab7fdb0f837b292..94ff46dc2849db4d43eaaf144872decc522aafb4:/libsyscall/wrappers/string/memset.c diff --git a/libsyscall/wrappers/string/memset.c b/libsyscall/wrappers/string/memset.c index 3ae3c7717..f8fc25597 100644 --- a/libsyscall/wrappers/string/memset.c +++ b/libsyscall/wrappers/string/memset.c @@ -33,23 +33,25 @@ #include "strings.h" #include -#define wsize sizeof(u_int) -#define wmask (wsize - 1) +#define wsize sizeof(u_int) +#define wmask (wsize - 1) +// n.b. this must be compiled with -fno-builtin or it might get optimized into +// a recursive call to bzero. __attribute__((visibility("hidden"))) void -bzero(void *dst0, size_t length) +_libkernel_bzero(void *dst0, size_t length) { - return (void)memset(dst0, 0, length); + return (void)_libkernel_memset(dst0, 0, length); } -#define RETURN return (dst0) -#define VAL c0 -#define WIDEVAL c +#define RETURN return (dst0) +#define VAL c0 +#define WIDEVAL c __attribute__((visibility("hidden"))) void * -memset(void *dst0, int c0, size_t length) +_libkernel_memset(void *dst0, int c0, size_t length) { size_t t; u_int c; @@ -77,13 +79,13 @@ memset(void *dst0, int c0, size_t length) RETURN; } - if ((c = (u_char)c0) != 0) { /* Fill the word. */ - c = (c << 8) | c; /* u_int is 16 bits. */ + if ((c = (u_char)c0) != 0) { /* Fill the word. */ + c = (c << 8) | c; /* u_int is 16 bits. */ #if UINT_MAX > 0xffff - c = (c << 16) | c; /* u_int is 32 bits. */ + c = (c << 16) | c; /* u_int is 32 bits. */ #endif #if UINT_MAX > 0xffffffff - c = (c << 32) | c; /* u_int is 64 bits. */ + c = (c << 32) | c; /* u_int is 64 bits. */ #endif } /* Align destination by filling in bytes. */ @@ -104,9 +106,10 @@ memset(void *dst0, int c0, size_t length) /* Mop up trailing bytes, if any. */ t = length & wmask; - if (t != 0) + if (t != 0) { do { *dst++ = VAL; } while (--t != 0); + } RETURN; }