Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
emscripten-core
GitHub Repository: emscripten-core/emscripten
Path: blob/main/system/lib/libc/emscripten_memmove.c
6162 views
1
// XXX EMSCRIPTEN ASAN: build an uninstrumented version of memmove
2
#if defined(__EMSCRIPTEN__) && defined(__has_feature)
3
#if __has_feature(address_sanitizer)
4
#define memmove __attribute__((no_sanitize("address"))) emscripten_builtin_memmove
5
#endif
6
#endif
7
8
#ifdef EMSCRIPTEN_OPTIMIZE_FOR_OZ
9
10
#include <stddef.h>
11
12
void *memcpy(void *dest, const void *src, size_t n);
13
14
void *memmove(void *dest, const void *src, size_t n) {
15
if (dest < src) return memcpy(dest, src, n);
16
unsigned char *d = (unsigned char *)dest + n;
17
const unsigned char *s = (const unsigned char *)src + n;
18
#pragma clang loop unroll(disable)
19
while(n--) *--d = *--s;
20
return dest;
21
}
22
23
#else
24
25
#include "musl/src/string/memmove.c"
26
27
#endif
28
29