https://bugs.kde.org/show_bug.cgi?id=407307

            Bug ID: 407307
           Summary: Intercept stpcpy also in ld.so for arm64
           Product: valgrind
           Version: 3.15 SVN
          Platform: Other
                OS: Linux
            Status: REPORTED
          Severity: normal
          Priority: NOR
         Component: memcheck
          Assignee: jsew...@acm.org
          Reporter: m...@klomp.org
  Target Milestone: ---

On other arches stpcpy () is intercepted for both libc.so and ld.so. But not on
arm64, where it is only intercepted for libc.so.

This can cause memcheck warnings about the use of stpcpy () in ld.so when
called through dlopen () because ld.so contains its own copy of that functions.

==3145== Use of uninitialised value of size 8
==3145==    at 0x4018014: stpcpy (strcpy.S:158)
==3145==    by 0x4007607: _dl_dst_substitute (dl-load.c:327)
==3145==    by 0x40081EB: _dl_map_object (dl-load.c:2173)
==3145==    by 0x4011ADB: dl_open_worker (dl-open.c:217)
==3145==    by 0x4A2C047: _dl_catch_exception (dl-error-skeleton.c:196)
==3145==    by 0x40116B7: _dl_open (dl-open.c:588)
==3145==    by 0x48F1093: dlopen_doit (dlopen.c:66)
==3145==    by 0x4A2C047: _dl_catch_exception (dl-error-skeleton.c:196)
==3145==    by 0x4A2C0EF: _dl_catch_error (dl-error-skeleton.c:215)
==3145==    by 0x48F17DF: _dlerror_run (dlerror.c:163)
==3145==    by 0x48F1133: dlopen@@GLIBC_2.17 (dlopen.c:87)

The following proposed patch gets rid of this warning:

diff --git a/include/pub_tool_redir.h b/include/pub_tool_redir.h
index c97941ff4..15ba67fdb 100644
--- a/include/pub_tool_redir.h
+++ b/include/pub_tool_redir.h
@@ -313,7 +313,9 @@
 #define  VG_Z_LD_SO_1               ldZdsoZd1                  // ld.so.1
 #define  VG_U_LD_SO_1               "ld.so.1"

+#define  VG_Z_LD_LINUX_AARCH64_SO_1  ldZhlinuxZhaarch64ZdsoZd1
 #define  VG_U_LD_LINUX_AARCH64_SO_1 "ld-linux-aarch64.so.1"
+
 #define  VG_U_LD_LINUX_ARMHF_SO_3   "ld-linux-armhf.so.3"

 #endif
diff --git a/shared/vg_replace_strmem.c b/shared/vg_replace_strmem.c
index 89a7dccb7..19143cf15 100644
--- a/shared/vg_replace_strmem.c
+++ b/shared/vg_replace_strmem.c
@@ -1160,6 +1160,7 @@ static inline void my_exit ( int x )
  STPCPY(VG_Z_LIBC_SONAME,          __stpcpy_sse2_unaligned)
  STPCPY(VG_Z_LD_LINUX_SO_2,        stpcpy)
  STPCPY(VG_Z_LD_LINUX_X86_64_SO_2, stpcpy)
+ STPCPY(VG_Z_LD_LINUX_AARCH64_SO_1,stpcpy)

 #elif defined(VGO_darwin)
  //STPCPY(VG_Z_LIBC_SONAME,          stpcpy)

-- 
You are receiving this mail because:
You are watching all bug changes.

Reply via email to