| #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); |
| |
| #if defined(EMSCRIPTEN_OPTIMIZE_FOR_OZ) |
| |
| void *__memset(void *str, int c, size_t n) { |
| // memory.fill traps on OOB zero-length sets, but memset must not. |
| if (n) { |
| __builtin_wasm_memory_fill(0, str, c, n); |
| } |
| return str; |
| } |
| |
| #else |
| |
| #define memset __memset |
| #include "musl/src/string/memset.c" |
| #undef memset |
| |
| #endif |
| |
| weak_alias(__memset, emscripten_builtin_memset); |
| weak_alias(__memset, memset); |