#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. ---*/
#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