(ppc32) Only include hacky redirects for malloc-replacing tools.
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@5180 a5019735-40e9-0310-863c-91ae7b9d1cf9
diff --git a/coregrind/m_redir.c b/coregrind/m_redir.c
index a20574f..2a1820c 100644
--- a/coregrind/m_redir.c
+++ b/coregrind/m_redir.c
@@ -42,6 +42,8 @@
#include "pub_core_redir.h"
#include "pub_core_trampoline.h"
#include "pub_core_transtab.h"
+#include "pub_core_tooliface.h" // VG_(needs).malloc_replacement
+
/*------------------------------------------------------------*/
/*--- General purpose redirection. ---*/
@@ -375,14 +377,19 @@
#elif defined(VGP_ppc32_linux)
- add_redirect_sym_to_addr(
- "soname:ld.so.1", "strlen",
- (Addr)&VG_(ppc32_linux_REDIR_FOR_strlen)
- );
- add_redirect_sym_to_addr(
- "soname:ld.so.1", "strcmp",
- (Addr)&VG_(ppc32_linux_REDIR_FOR_strcmp)
- );
+ /* these two drive memcheck nuts if not replaced, and unfortunately
+ they need to be replaced right at the start, before the dynamic
+ linker starts. */
+ if (VG_(needs).malloc_replacement) {
+ add_redirect_sym_to_addr(
+ "soname:ld.so.1", "strlen",
+ (Addr)&VG_(ppc32_linux_REDIR_FOR_strlen)
+ );
+ add_redirect_sym_to_addr(
+ "soname:ld.so.1", "strcmp",
+ (Addr)&VG_(ppc32_linux_REDIR_FOR_strcmp)
+ );
+ }
#else
# error Unknown platform