diff options
-rw-r--r-- | main/coregrind/m_main.c | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/main/coregrind/m_main.c b/main/coregrind/m_main.c index 9ac838737..77dcdc59a 100644 --- a/main/coregrind/m_main.c +++ b/main/coregrind/m_main.c @@ -2660,6 +2660,23 @@ void* memcpy(void *dest, const void *src, SizeT n); void* memcpy(void *dest, const void *src, SizeT n) { return VG_(memcpy)(dest,src,n); } +void* memmove(void *dest, const void *src, SizeT n); +void* memmove(void *a, const void *b, SizeT size) { + char *A = (char*)a; + const char *B = (const char*)b; + if (A < B) { + unsigned long i; + for (i = 0; i < size; i++) { + A[i] = B[i]; + } + } else if(A > B) { + unsigned long i; + for (i = 0; i < size; i++) { + A[size - i - 1] = B[size - i - 1]; + } + } + return a; +} void* memset(void *s, int c, SizeT n); void* memset(void *s, int c, SizeT n) { return VG_(memset)(s,c,n); @@ -2693,6 +2710,21 @@ void __aeabi_unwind_cpp_pr1(void){ VG_(printf)("Something called __aeabi_unwind_cpp_pr1()\n"); vg_assert(0); } + +void __aeabi_memcpy(void *d, const void *s, SizeT n); +void __aeabi_memcpy(void *d, const void *s, SizeT n) { + memcpy(d, s, n); +} + +void __aeabi_memmove(void *d, const void *s, SizeT n); +void __aeabi_memmove(void *d, const void *s, SizeT n) { + memmove(d, s, n); +} + +void __aeabi_memset(void *d, SizeT n, int c); +void __aeabi_memset(void *d, SizeT n, int c) { + memset(d, c, n); +} #endif /* ---------------- Requirement 2 ---------------- */ |