]> git.ipfire.org Git - thirdparty/valgrind.git/commitdiff
(ppc32) Only include hacky redirects for malloc-replacing tools.
authorJulian Seward <jseward@acm.org>
Thu, 17 Nov 2005 20:15:04 +0000 (20:15 +0000)
committerJulian Seward <jseward@acm.org>
Thu, 17 Nov 2005 20:15:04 +0000 (20:15 +0000)
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@5180

coregrind/m_redir.c

index a20574f77e9b1dfba7271b92406e20d755145915..2a1820c218780f6656f8dae15f423f0a726d41a3 100644 (file)
@@ -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 @@ void VG_(setup_code_redirect_table) ( void )
 
 #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