| #include "emscripten_internal.h" // for emscripten_memset_big |
| |
| #if defined(__has_feature) && __has_feature(address_sanitizer) |
| // build an uninstrumented version of memset |
| __attribute__((no_sanitize("address"))) void *__musl_memset(void *str, int c, size_t n); |
| __attribute__((no_sanitize("address"))) void *__memset(void *str, int c, size_t n); |
| #endif |
| |
| __attribute__((__weak__)) void *__musl_memset(void *str, int c, size_t n); |
| __attribute__((__weak__)) void *__memset(void *str, int c, size_t n); |
| |
| #ifdef EMSCRIPTEN_OPTIMIZE_FOR_OZ |
| |
| void *__memset(void *str, int c, size_t n) { |
| unsigned char *s = (unsigned char *)str; |
| #pragma clang loop unroll(disable) |
| while(n--) *s++ = c; |
| return str; |
| } |
| |
| #elif defined(__wasm_bulk_memory__) |
| |
| void *__memset(void *str, int c, size_t n) { |
| return emscripten_memset_bulkmem(str, c, n); |
| } |
| |
| #else |
| |
| #define memset __memset |
| #include "musl/src/string/memset.c" |
| #undef memset |
| |
| #endif |
| |
| weak_alias(__memset, emscripten_builtin_memset); |
| weak_alias(__memset, memset); |