]> git.ipfire.org Git - thirdparty/valgrind.git/commitdiff
Merge from the trunk, some Drd-related changes:
authorJulian Seward <jseward@acm.org>
Sat, 31 Jan 2009 15:02:07 +0000 (15:02 +0000)
committerJulian Seward <jseward@acm.org>
Sat, 31 Jan 2009 15:02:07 +0000 (15:02 +0000)
9087 Suppress any error whose top frame is in libc.so. While not very
     elegant, this is an effective way to suppress data race reports
     triggered by glibc's stdio functions (which uses inlined locking
     functions).

9090 Do not only recognize .plt and .plt.got sections inside the
     mapped address range, but also outside the mapped address range
     (necessary for ppc).

9091 Generalized suppression patterns.

9092 Removed mandatory redirections for DRD since these made DRD
     impossible to use on openSUSE 10.3 ppc.

git-svn-id: svn://svn.valgrind.org/valgrind/branches/VALGRIND_3_4_BRANCH@9093

coregrind/m_redir.c
drd/drd_main.c
glibc-2.X-drd.supp

index 24f0488418c9a5443161ff9a32b727bdc0e36934..fbf6e7271b5bce00b5ae8cfe696ed3326ca369bd 100644 (file)
@@ -906,15 +906,6 @@ void VG_(redir_initialise) ( void )
          NULL /* not mandatory - so why bother at all? */
          /* glibc-2.6.1 (openSUSE 10.3, ppc32) seems fine without it */
       );
-   } else if (0 == VG_(strcmp)("drd", VG_(details).name)) {
-      /* Only continue if symbol information in ld.so.1 is present,   */
-      /* because otherwise drd's suppression patterns on ld.so do     */
-      /* not have any effect.                                         */
-      add_hardwired_spec(
-         "ld.so.1", "strlen",
-         (Addr)(&VG_(ppc32_linux_REDIR_FOR_strlen)),
-         croakage
-      );
    }
    }
 
@@ -940,16 +931,6 @@ void VG_(redir_initialise) ( void )
          NULL /* not mandatory - so why bother at all? */
          /* glibc-2.5 (FC6, ppc64) seems fine without it */
       );
-
-   } else if (0 == VG_(strcmp)("drd", VG_(details).name)) {
-      /* Only continue if symbol information in ld64.so.1 is present, */
-      /* because otherwise drd's suppression patterns on ld.so do     */
-      /* not have any effect.                                         */
-      add_hardwired_spec(
-         "ld64.so.1", "strlen",
-         (Addr)VG_(fnptr_to_fnentry)( &VG_(ppc64_linux_REDIR_FOR_strlen) ),
-         croakage
-      );
    }
    }
 
index eb082a271128cd29cce4ef38b6f1a637f1ff459c..4b8cdc22c63ded652ef05d6389a9fec0260ccc1e 100644 (file)
@@ -524,7 +524,8 @@ static void suppress_relocation_conflicts(const Addr a, const SizeT len)
 
     avma = VG_(seginfo_get_plt_avma)(di);
     size = VG_(seginfo_get_plt_size)(di);
-    if (size > 0 && a <= avma && avma + size <= a + len)
+    tl_assert((avma && size) || (avma == 0 && size == 0));
+    if (size > 0)
     {
 #if 0
       VG_(printf)("Suppressing .plt @ 0x%lx size %ld\n", avma, size);
@@ -535,7 +536,8 @@ static void suppress_relocation_conflicts(const Addr a, const SizeT len)
 
     avma = VG_(seginfo_get_gotplt_avma)(di);
     size = VG_(seginfo_get_gotplt_size)(di);
-    if (size > 0 && a <= avma && avma + size <= a + len)
+    tl_assert((avma && size) || (avma == 0 && size == 0));
+    if (size > 0)
     {
 #if 0
       VG_(printf)("Suppressing .got.plt @ 0x%lx size %ld\n", avma, size);
index 34db56cdaee288eca4154c17fd34d352b2cd28c6..30437f531ebbca4757fd8ce5b0d392706f4bf37b 100644 (file)
@@ -21,7 +21,6 @@
    drd:ConflictingAccess
    obj:/lib*/ld-*.so
    obj:/lib*/ld-*.so
-   obj:/lib*/ld-*.so
 }
 {
    dl-dlsym-1
    fun:_dl_addr
    fun:backtrace_symbols
 }
+{
+   libc-stdio
+   drd:ConflictingAccess
+   obj:/lib*/libc-*
+}
 {
    libc
    drd:ConflictingAccess