|
From: <sv...@va...> - 2009-01-31 15:02:13
|
Author: sewardj
Date: 2009-01-31 15:02:07 +0000 (Sat, 31 Jan 2009)
New Revision: 9093
Log:
Merge from the trunk, some Drd-related changes:
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.
Modified:
branches/VALGRIND_3_4_BRANCH/coregrind/m_redir.c
branches/VALGRIND_3_4_BRANCH/drd/drd_main.c
branches/VALGRIND_3_4_BRANCH/glibc-2.X-drd.supp
Modified: branches/VALGRIND_3_4_BRANCH/coregrind/m_redir.c
===================================================================
--- branches/VALGRIND_3_4_BRANCH/coregrind/m_redir.c 2009-01-30 18:31:54 UTC (rev 9092)
+++ branches/VALGRIND_3_4_BRANCH/coregrind/m_redir.c 2009-01-31 15:02:07 UTC (rev 9093)
@@ -906,15 +906,6 @@
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 @@
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
- );
}
}
Modified: branches/VALGRIND_3_4_BRANCH/drd/drd_main.c
===================================================================
--- branches/VALGRIND_3_4_BRANCH/drd/drd_main.c 2009-01-30 18:31:54 UTC (rev 9092)
+++ branches/VALGRIND_3_4_BRANCH/drd/drd_main.c 2009-01-31 15:02:07 UTC (rev 9093)
@@ -524,7 +524,8 @@
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 @@
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);
Modified: branches/VALGRIND_3_4_BRANCH/glibc-2.X-drd.supp
===================================================================
--- branches/VALGRIND_3_4_BRANCH/glibc-2.X-drd.supp 2009-01-30 18:31:54 UTC (rev 9092)
+++ branches/VALGRIND_3_4_BRANCH/glibc-2.X-drd.supp 2009-01-31 15:02:07 UTC (rev 9093)
@@ -21,7 +21,6 @@
drd:ConflictingAccess
obj:/lib*/ld-*.so
obj:/lib*/ld-*.so
- obj:/lib*/ld-*.so
}
{
dl-dlsym-1
@@ -48,6 +47,11 @@
fun:backtrace_symbols
}
{
+ libc-stdio
+ drd:ConflictingAccess
+ obj:/lib*/libc-*
+}
+{
libc
drd:ConflictingAccess
fun:__libc_enable_asynccancel
|