7f50b2
commit 89423f5d8ba05a099c2c62227a00a4f4eec59eb3
7f50b2
Author: Mark Wielaard <mark@klomp.org>
7f50b2
Date:   Tue May 7 21:20:04 2019 +0200
7f50b2
7f50b2
    Intercept stpcpy also in ld.so for arm64
7f50b2
    
7f50b2
    On other arches stpcpy () is intercepted for both libc.so and ld.so.
7f50b2
    But not on arm64, where it is only intercepted for libc.so.
7f50b2
    
7f50b2
    This can cause memcheck warnings about the use of stpcpy () in ld.so
7f50b2
    when called through dlopen () because ld.so contains its own copy of
7f50b2
    that functions.
7f50b2
    
7f50b2
    Fix by introducing VG_Z_LD_LINUX_AARCH64_SO_1 (the encoded name of
7f50b2
    ld.so on arm64) and using that in vg_replace_strmem.c to intercept
7f50b2
    stpcpy.
7f50b2
    
7f50b2
    https://bugs.kde.org/show_bug.cgi?id=407307
7f50b2
7f50b2
diff --git a/include/pub_tool_redir.h b/include/pub_tool_redir.h
7f50b2
index c97941f..15ba67f 100644
7f50b2
--- a/include/pub_tool_redir.h
7f50b2
+++ b/include/pub_tool_redir.h
7f50b2
@@ -313,7 +313,9 @@
7f50b2
 #define  VG_Z_LD_SO_1               ldZdsoZd1                  // ld.so.1
7f50b2
 #define  VG_U_LD_SO_1               "ld.so.1"
7f50b2
 
7f50b2
+#define  VG_Z_LD_LINUX_AARCH64_SO_1  ldZhlinuxZhaarch64ZdsoZd1
7f50b2
 #define  VG_U_LD_LINUX_AARCH64_SO_1 "ld-linux-aarch64.so.1"
7f50b2
+
7f50b2
 #define  VG_U_LD_LINUX_ARMHF_SO_3   "ld-linux-armhf.so.3"
7f50b2
 
7f50b2
 #endif
7f50b2
diff --git a/shared/vg_replace_strmem.c b/shared/vg_replace_strmem.c
7f50b2
index 89a7dcc..19143cf 100644
7f50b2
--- a/shared/vg_replace_strmem.c
7f50b2
+++ b/shared/vg_replace_strmem.c
7f50b2
@@ -1160,6 +1160,7 @@ static inline void my_exit ( int x )
7f50b2
  STPCPY(VG_Z_LIBC_SONAME,          __stpcpy_sse2_unaligned)
7f50b2
  STPCPY(VG_Z_LD_LINUX_SO_2,        stpcpy)
7f50b2
  STPCPY(VG_Z_LD_LINUX_X86_64_SO_2, stpcpy)
7f50b2
+ STPCPY(VG_Z_LD_LINUX_AARCH64_SO_1,stpcpy)
7f50b2
 
7f50b2
 #elif defined(VGO_darwin)
7f50b2
  //STPCPY(VG_Z_LIBC_SONAME,          stpcpy)