]> git.ipfire.org Git - thirdparty/valgrind.git/commitdiff
Implement required stubs for Android on arm when built with clang/llvm.
authorIvo Raisr <ivosh@ivosh.net>
Tue, 16 May 2017 08:50:48 +0000 (08:50 +0000)
committerIvo Raisr <ivosh@ivosh.net>
Tue, 16 May 2017 08:50:48 +0000 (08:50 +0000)
Fixes BZ#368529
Slightly modified patch by: Elliott Hughes <enh@google.com>

git-svn-id: svn://svn.valgrind.org/valgrind/trunk@16384

NEWS
coregrind/m_main.c

diff --git a/NEWS b/NEWS
index 6c8a9921e4ee2f508838d7546d5a5925cb5234a4..f98c78e7e8c2fedd8b0371c8b8c2dc384bb06fec 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -117,6 +117,7 @@ where XXXXXX is the bug number as listed below.
 362223  assertion failed when .valgrindrc is a directory instead of a file
 367543  bt/btc/btr/bts x86/x86_64 instructions are poorly-handled wrt flags
 367942  Segfault vgPlain_do_sys_sigaction (m_signals.c:1138)
+368529  Android arm target link error, missing atexit and pthread_atfork
 368863  WARNING: unhandled arm64-linux syscall: 100 (get_robust_list)
 368865  WARNING: unhandled arm64-linux syscall: 272 (kcmp)
 368868  disInstr(arm64): unhandled instruction 0xD53BE000 = cntfrq_el0 (ARMv8)
index d580b9949dacad3fde24641c2a0356d0f06210e5..8054152529e3f761d986fb36f2e04b76750405b8 100644 (file)
@@ -2439,7 +2439,47 @@ void __aeabi_unwind_cpp_pr1(void){
    VG_(printf)("Something called __aeabi_unwind_cpp_pr1()\n");
    vg_assert(0);
 }
-#endif
+
+#if defined(__ANDROID__)
+/* Replace __aeabi_memcpy* functions with vgPlain_memcpy. */
+void *__aeabi_memcpy(void *dest, const void *src, SizeT n);
+void *__aeabi_memcpy(void *dest, const void *src, SizeT n)
+{
+    return VG_(memcpy)(dest, src, n);
+}
+
+void *__aeabi_memcpy4(void *dest, const void *src, SizeT n);
+void *__aeabi_memcpy4(void *dest, const void *src, SizeT n)
+{
+    return VG_(memcpy)(dest, src, n);
+}
+
+void *__aeabi_memcpy8(void *dest, const void *src, SizeT n);
+void *__aeabi_memcpy8(void *dest, const void *src, SizeT n)
+{
+    return VG_(memcpy)(dest, src, n);
+}
+
+/* Replace __aeabi_memclr* functions with vgPlain_memset. */
+void *__aeabi_memclr(void *dest, SizeT n);
+void *__aeabi_memclr(void *dest, SizeT n)
+{
+    return VG_(memset)(dest, 0, n);
+}
+
+void *__aeabi_memclr4(void *dest, SizeT n);
+void *__aeabi_memclr4(void *dest, SizeT n)
+{
+    return VG_(memset)(dest, 0, n);
+}
+
+void *__aeabi_memclr8(void *dest, SizeT n);
+void *__aeabi_memclr8(void *dest, SizeT n)
+{
+    return VG_(memset)(dest, 0, n);
+}
+#endif /* defined(__ANDROID__) */
+#endif /* defined(VGP_arm_linux) */
 
 /* ---------------- Requirement 2 ---------------- */