Added more of Helgrind's regression tests.

git-svn-id: svn://svn.valgrind.org/valgrind/trunk@7462 a5019735-40e9-0310-863c-91ae7b9d1cf9
diff --git a/exp-drd/tests/Makefile.am b/exp-drd/tests/Makefile.am
index f7a6fd2..f935ec7 100644
--- a/exp-drd/tests/Makefile.am
+++ b/exp-drd/tests/Makefile.am
@@ -15,6 +15,18 @@
 	fp_race.stderr.exp2                                     \
 	fp_race2.vgtest                                         \
 	fp_race2.stdout.exp fp_race2.stderr.exp                 \
+        hg01_all_ok.vgtest                                      \
+        hg01_all_ok.stderr.exp                                  \
+        hg02_deadlock.vgtest                                    \
+        hg02_deadlock.stderr.exp                                \
+        hg03_inherit.vgtest                                     \
+        hg03_inherit.stderr.exp                                 \
+        hg04_race.vgtest                                        \
+        hg04_race.stderr.exp                                    \
+        hg05_race2.vgtest                                       \
+        hg05_race2.stderr.exp                                   \
+        hg06_readshared.vgtest                                  \
+        hg06_readshared.stderr.exp                              \
 	matinv.vgtest                                           \
 	matinv.stdout.exp matinv.stderr.exp                     \
 	pth_barrier.vgtest                                      \
@@ -35,10 +47,46 @@
 	sem_as_mutex.stderr.exp sem_as_mutex.stderr.exp2        \
 	sem_as_mutex2.vgtest                                    \
 	sem_as_mutex2.stderr.exp                                \
-	tc17_sembar.vgtest                                      \
-	tc17_sembar.stderr.exp                                  \
-	tc18_semabuse.vgtest                                    \
-	tc18_semabuse.stderr.exp                                \
+        tc01_simple_race.vgtest                                 \
+        tc01_simple_race.stderr.exp                             \
+        tc02_simple_tls.vgtest                                  \
+        tc02_simple_tls.stderr.exp                              \
+        tc03_re_excl.vgtest                                     \
+        tc03_re_excl.stderr.exp                                 \
+        tc04_free_lock.vgtest                                   \
+        tc04_free_lock.stderr.exp                               \
+        tc07_hbl1.vgtest                                        \
+        tc07_hbl1.stderr.exp                                    \
+        tc09_bad_unlock.vgtest                                  \
+        tc09_bad_unlock.stderr.exp                              \
+        tc10_rec_lock.vgtest                                    \
+        tc10_rec_lock.stderr.exp                                \
+        tc11_XCHG.vgtest                                        \
+        tc11_XCHG.stderr.exp                                    \
+        tc12_rwl_trivial.vgtest                                 \
+        tc12_rwl_trivial.stderr.exp                             \
+        tc13_laog1.vgtest                                       \
+        tc13_laog1.stderr.exp                                   \
+        tc15_laog_lockdel.vgtest                                \
+        tc15_laog_lockdel.stderr.exp                            \
+        tc16_byterace.vgtest                                    \
+        tc16_byterace.stderr.exp                                \
+        tc17_sembar.vgtest                                      \
+        tc17_sembar.stderr.exp                                  \
+        tc18_semabuse.vgtest                                    \
+        tc18_semabuse.stderr.exp                                \
+        tc19_shadowmem.vgtest                                   \
+        tc19_shadowmem.stderr.exp                               \
+        tc20_verifywrap.vgtest                                  \
+        tc20_verifywrap.stderr.exp                              \
+        tc21_pthonce.vgtest                                     \
+        tc21_pthonce.stderr.exp                                 \
+        tc22_exit_w_lock.vgtest                                 \
+        tc22_exit_w_lock.stderr.exp                             \
+        tc23_bogus_condwait.vgtest                              \
+        tc23_bogus_condwait.stderr.exp                          \
+        tc24_nonzero_sem.vgtest                                 \
+        tc24_nonzero_sem.stderr.exp                             \
 	sigalrm.vgtest                                          \
 	sigalrm.stdout.exp sigalrm.stderr.exp
 
@@ -46,48 +94,150 @@
 AM_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/include -I$(top_builddir)/include
 AM_CXXFLAGS = $(AM_CFLAGS)
 
-check_PROGRAMS =   \
-  fp_race          \
-  matinv           \
-  pth_barrier      \
-  pth_broadcast    \
-  pth_cond_race    \
-  pth_create_chain \
-  pth_detached     \
-  sem_as_mutex     \
-  sigalrm          \
-  tc17_sembar      \
-  tc18_semabuse
+check_PROGRAMS =      \
+  fp_race             \
+  hg01_all_ok         \
+  hg02_deadlock       \
+  hg03_inherit        \
+  hg04_race           \
+  hg05_race2          \
+  hg06_readshared     \
+  matinv              \
+  pth_barrier         \
+  pth_broadcast       \
+  pth_cond_race       \
+  pth_create_chain    \
+  pth_detached        \
+  sem_as_mutex        \
+  sigalrm             \
+  tc01_simple_race    \
+  tc02_simple_tls     \
+  tc03_re_excl        \
+  tc04_free_lock      \
+  tc07_hbl1           \
+  tc09_bad_unlock     \
+  tc10_rec_lock       \
+  tc11_XCHG           \
+  tc12_rwl_trivial    \
+  tc13_laog1          \
+  tc15_laog_lockdel   \
+  tc16_byterace       \
+  tc17_sembar         \
+  tc18_semabuse       \
+  tc19_shadowmem      \
+  tc20_verifywrap     \
+  tc21_pthonce        \
+  tc22_exit_w_lock    \
+  tc23_bogus_condwait \
+  tc24_nonzero_sem
 
-fp_race_SOURCES          = fp_race.c
-fp_race_LDADD            = -lpthread
+#  tc05_simple_race    -- result depends on scheduler.
+#  tc06_two_races      -- result depends on scheduler.
+#  tc08_hbl2           -- result depends on scheduler.
+#  tc14_laog_dinphils  -- hangs.
 
-matinv_SOURCES           = matinv.c
-matinv_LDADD             = -lpthread -lm
 
-pth_barrier_SOURCES      = pth_barrier.c
-pth_barrier_LDADD        = -lpthread
+fp_race_SOURCES             = fp_race.c
+fp_race_LDADD               = -lpthread
 
-pth_broadcast_SOURCES    = pth_broadcast.c
-pth_broadcast_LDADD      = -lpthread
+hg01_all_ok_SOURCES         = ../../helgrind/tests/hg01_all_ok.c
+hg01_all_ok_LDADD           = -lpthread
 
-pth_cond_race_SOURCES    = pth_cond_race.c
-pth_cond_race_LDADD      = -lpthread
+hg02_deadlock_SOURCES       = ../../helgrind/tests/hg02_deadlock.c
+hg02_deadlock_LDADD         = -lpthread
 
-pth_create_chain_SOURCES = pth_create_chain.c
-pth_create_chain_LDADD   = -lpthread
+hg03_inherit_SOURCES        = ../../helgrind/tests/hg03_inherit.c
+hg03_inherit_LDADD          = -lpthread
 
-pth_detached_SOURCES     = pth_detached.c
-pth_detached_LDADD       = -lpthread
+hg04_race_SOURCES           = ../../helgrind/tests/hg04_race.c
+hg04_race_LDADD             = -lpthread
 
-sem_as_mutex_SOURCES     = sem_as_mutex.c
-sem_as_mutex_LDADD       = -lpthread
+hg05_race2_SOURCES          = ../../helgrind/tests/hg05_race2.c
+hg05_race2_LDADD            = -lpthread
 
-sigalrm_SOURCES          = sigalrm.c
-sigalrm_LDADD            = -lpthread
+hg06_readshared_SOURCES     = ../../helgrind/tests/hg06_readshared.c
+hg06_readshared_LDADD       = -lpthread
 
-tc17_sembar_SOURCES      = ../../helgrind/tests/tc17_sembar.c
-tc17_sembar_LDADD        = -lpthread
+matinv_SOURCES              = matinv.c
+matinv_LDADD                = -lpthread -lm
 
-tc18_semabuse_SOURCES    = ../../helgrind/tests/tc18_semabuse.c
-tc18_semabuse_LDADD      = -lpthread
+pth_barrier_SOURCES         = pth_barrier.c
+pth_barrier_LDADD           = -lpthread
+
+pth_broadcast_SOURCES       = pth_broadcast.c
+pth_broadcast_LDADD         = -lpthread
+
+pth_cond_race_SOURCES       = pth_cond_race.c
+pth_cond_race_LDADD         = -lpthread
+
+pth_create_chain_SOURCES    = pth_create_chain.c
+pth_create_chain_LDADD      = -lpthread
+
+pth_detached_SOURCES        = pth_detached.c
+pth_detached_LDADD          = -lpthread
+
+sem_as_mutex_SOURCES        = sem_as_mutex.c
+sem_as_mutex_LDADD          = -lpthread
+
+sigalrm_SOURCES             = sigalrm.c
+sigalrm_LDADD               = -lpthread
+
+tc01_simple_race_SOURCES    = ../../helgrind/tests/tc01_simple_race.c
+tc01_simple_race_LDADD      = -lpthread
+
+tc02_simple_tls_SOURCES     = ../../helgrind/tests/tc02_simple_tls.c
+tc02_simple_tls_LDADD       = -lpthread
+
+tc03_re_excl_SOURCES        = ../../helgrind/tests/tc03_re_excl.c
+tc03_re_excl_LDADD          = -lpthread
+
+tc04_free_lock_SOURCES      = ../../helgrind/tests/tc04_free_lock.c
+tc04_free_lock_LDADD        = -lpthread
+
+tc07_hbl1_SOURCES           = ../../helgrind/tests/tc07_hbl1.c
+tc07_hbl1_LDADD             = -lpthread
+
+tc09_bad_unlock_SOURCES     = ../../helgrind/tests/tc09_bad_unlock.c
+tc09_bad_unlock_LDADD       = -lpthread
+
+tc10_rec_lock_SOURCES       = ../../helgrind/tests/tc10_rec_lock.c
+tc10_rec_lock_LDADD         = -lpthread
+
+tc11_XCHG_SOURCES           = ../../helgrind/tests/tc11_XCHG.c
+tc11_XCHG_LDADD             = -lpthread
+
+tc12_rwl_trivial_SOURCES    = ../../helgrind/tests/tc12_rwl_trivial.c
+tc12_rwl_trivial_LDADD      = -lpthread
+
+tc13_laog1_SOURCES          = ../../helgrind/tests/tc13_laog1.c
+tc13_laog1_LDADD            = -lpthread
+
+tc15_laog_lockdel_SOURCES   = ../../helgrind/tests/tc15_laog_lockdel.c
+tc15_laog_lockdel_LDADD     = -lpthread
+
+tc16_byterace_SOURCES       = ../../helgrind/tests/tc16_byterace.c
+tc16_byterace_LDADD         = -lpthread
+
+tc17_sembar_SOURCES         = ../../helgrind/tests/tc17_sembar.c
+tc17_sembar_LDADD           = -lpthread
+
+tc18_semabuse_SOURCES       = ../../helgrind/tests/tc18_semabuse.c
+tc18_semabuse_LDADD         = -lpthread
+
+tc19_shadowmem_SOURCES      = ../../helgrind/tests/tc19_shadowmem.c
+tc19_shadowmem_LDADD        = -lpthread
+
+tc20_verifywrap_SOURCES     = ../../helgrind/tests/tc20_verifywrap.c
+tc20_verifywrap_LDADD       = -lpthread
+
+tc21_pthonce_SOURCES        = ../../helgrind/tests/tc21_pthonce.c
+tc21_pthonce_LDADD          = -lpthread
+
+tc22_exit_w_lock_SOURCES    = ../../helgrind/tests/tc22_exit_w_lock.c
+tc22_exit_w_lock_LDADD      = -lpthread
+
+tc23_bogus_condwait_SOURCES = ../../helgrind/tests/tc23_bogus_condwait.c
+tc23_bogus_condwait_LDADD   = -lpthread
+
+tc24_nonzero_sem_SOURCES    = ../../helgrind/tests/tc24_nonzero_sem.c
+tc24_nonzero_sem_LDADD      = -lpthread
diff --git a/exp-drd/tests/hg01_all_ok.stderr.exp b/exp-drd/tests/hg01_all_ok.stderr.exp
new file mode 100644
index 0000000..d18786f
--- /dev/null
+++ b/exp-drd/tests/hg01_all_ok.stderr.exp
@@ -0,0 +1,3 @@
+
+
+ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0)
diff --git a/exp-drd/tests/hg01_all_ok.vgtest b/exp-drd/tests/hg01_all_ok.vgtest
new file mode 100644
index 0000000..9524976
--- /dev/null
+++ b/exp-drd/tests/hg01_all_ok.vgtest
@@ -0,0 +1 @@
+prog: hg01_all_ok
diff --git a/exp-drd/tests/hg02_deadlock.stderr.exp b/exp-drd/tests/hg02_deadlock.stderr.exp
new file mode 100644
index 0000000..d18786f
--- /dev/null
+++ b/exp-drd/tests/hg02_deadlock.stderr.exp
@@ -0,0 +1,3 @@
+
+
+ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0)
diff --git a/exp-drd/tests/hg02_deadlock.vgtest b/exp-drd/tests/hg02_deadlock.vgtest
new file mode 100644
index 0000000..ff0deb7
--- /dev/null
+++ b/exp-drd/tests/hg02_deadlock.vgtest
@@ -0,0 +1 @@
+prog: hg02_deadlock
diff --git a/exp-drd/tests/hg03_inherit.stderr.exp b/exp-drd/tests/hg03_inherit.stderr.exp
new file mode 100644
index 0000000..274c6a7
--- /dev/null
+++ b/exp-drd/tests/hg03_inherit.stderr.exp
@@ -0,0 +1,31 @@
+
+Thread 3:
+Conflicting store by thread 3 at 0x........ size 4
+   at 0x........: t2 (hg03_inherit.c:28)
+   by 0x........: vg_thread_wrapper (drd_intercepts.c:?)
+   by 0x........: start_thread (in libpthread-?.?.so)
+   by 0x........: clone (in /...libc...)
+Allocation context: unknown
+Other segment start (thread 1)
+   at 0x........: pthread_join (drd_intercepts.c:?)
+   by 0x........: main (hg03_inherit.c:49)
+Other segment end (thread 1)
+   at 0x........: pthread_join (in libpthread-?.?.so)
+   by 0x........: pthread_join (drd_intercepts.c:?)
+   by 0x........: main (hg03_inherit.c:63)
+
+Conflicting store by thread 3 at 0x........ size 4
+   at 0x........: t2 (hg03_inherit.c:29)
+   by 0x........: vg_thread_wrapper (drd_intercepts.c:?)
+   by 0x........: start_thread (in libpthread-?.?.so)
+   by 0x........: clone (in /...libc...)
+Allocation context: unknown
+Other segment start (thread 1)
+   at 0x........: pthread_join (drd_intercepts.c:?)
+   by 0x........: main (hg03_inherit.c:49)
+Other segment end (thread 1)
+   at 0x........: pthread_join (in libpthread-?.?.so)
+   by 0x........: pthread_join (drd_intercepts.c:?)
+   by 0x........: main (hg03_inherit.c:63)
+
+ERROR SUMMARY: 2 errors from 2 contexts (suppressed: 0 from 0)
diff --git a/exp-drd/tests/hg03_inherit.vgtest b/exp-drd/tests/hg03_inherit.vgtest
new file mode 100644
index 0000000..b3ac039
--- /dev/null
+++ b/exp-drd/tests/hg03_inherit.vgtest
@@ -0,0 +1 @@
+prog: hg03_inherit
diff --git a/exp-drd/tests/hg04_race.stderr.exp b/exp-drd/tests/hg04_race.stderr.exp
new file mode 100644
index 0000000..c713aff
--- /dev/null
+++ b/exp-drd/tests/hg04_race.stderr.exp
@@ -0,0 +1,25 @@
+
+Thread 2:
+Conflicting load by thread 2 at 0x........ size 4
+   at 0x........: th (hg04_race.c:10)
+   by 0x........: vg_thread_wrapper (drd_intercepts.c:?)
+   by 0x........: start_thread (in libpthread-?.?.so)
+   by 0x........: clone (in /...libc...)
+Allocation context: unknown
+Other segment start (thread 2)
+   (thread finished, call stack no longer available)
+Other segment end (thread 2)
+   (thread finished, call stack no longer available)
+
+Conflicting store by thread 2 at 0x........ size 4
+   at 0x........: th (hg04_race.c:10)
+   by 0x........: vg_thread_wrapper (drd_intercepts.c:?)
+   by 0x........: start_thread (in libpthread-?.?.so)
+   by 0x........: clone (in /...libc...)
+Allocation context: unknown
+Other segment start (thread 2)
+   (thread finished, call stack no longer available)
+Other segment end (thread 2)
+   (thread finished, call stack no longer available)
+
+ERROR SUMMARY: 2 errors from 2 contexts (suppressed: 0 from 0)
diff --git a/exp-drd/tests/hg04_race.vgtest b/exp-drd/tests/hg04_race.vgtest
new file mode 100644
index 0000000..92b7099
--- /dev/null
+++ b/exp-drd/tests/hg04_race.vgtest
@@ -0,0 +1 @@
+prog: hg04_race
diff --git a/exp-drd/tests/hg05_race2.stderr.exp b/exp-drd/tests/hg05_race2.stderr.exp
new file mode 100644
index 0000000..4d57a29
--- /dev/null
+++ b/exp-drd/tests/hg05_race2.stderr.exp
@@ -0,0 +1,25 @@
+
+Thread 2:
+Conflicting load by thread 2 at 0x........ size 4
+   at 0x........: th (hg05_race2.c:17)
+   by 0x........: vg_thread_wrapper (drd_intercepts.c:?)
+   by 0x........: start_thread (in libpthread-?.?.so)
+   by 0x........: clone (in /...libc...)
+Allocation context: stack of thread 1, offset -5584
+Other segment start (thread 2)
+   (thread finished, call stack no longer available)
+Other segment end (thread 2)
+   (thread finished, call stack no longer available)
+
+Conflicting store by thread 2 at 0x........ size 4
+   at 0x........: th (hg05_race2.c:17)
+   by 0x........: vg_thread_wrapper (drd_intercepts.c:?)
+   by 0x........: start_thread (in libpthread-?.?.so)
+   by 0x........: clone (in /...libc...)
+Allocation context: stack of thread 1, offset -5584
+Other segment start (thread 2)
+   (thread finished, call stack no longer available)
+Other segment end (thread 2)
+   (thread finished, call stack no longer available)
+
+ERROR SUMMARY: 2 errors from 2 contexts (suppressed: 0 from 0)
diff --git a/exp-drd/tests/hg05_race2.vgtest b/exp-drd/tests/hg05_race2.vgtest
new file mode 100644
index 0000000..a93db5e
--- /dev/null
+++ b/exp-drd/tests/hg05_race2.vgtest
@@ -0,0 +1 @@
+prog: hg05_race2
diff --git a/exp-drd/tests/hg06_readshared.stderr.exp b/exp-drd/tests/hg06_readshared.stderr.exp
new file mode 100644
index 0000000..d18786f
--- /dev/null
+++ b/exp-drd/tests/hg06_readshared.stderr.exp
@@ -0,0 +1,3 @@
+
+
+ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0)
diff --git a/exp-drd/tests/hg06_readshared.vgtest b/exp-drd/tests/hg06_readshared.vgtest
new file mode 100644
index 0000000..c5accee
--- /dev/null
+++ b/exp-drd/tests/hg06_readshared.vgtest
@@ -0,0 +1 @@
+prog: hg06_readshared
diff --git a/exp-drd/tests/tc01_simple_race.stderr.exp b/exp-drd/tests/tc01_simple_race.stderr.exp
new file mode 100644
index 0000000..8a2b91a
--- /dev/null
+++ b/exp-drd/tests/tc01_simple_race.stderr.exp
@@ -0,0 +1,18 @@
+
+Conflicting load by thread 1 at 0x........ size 4
+   at 0x........: main (tc01_simple_race.c:28)
+Allocation context: unknown
+Other segment start (thread 2)
+   (thread finished, call stack no longer available)
+Other segment end (thread 2)
+   (thread finished, call stack no longer available)
+
+Conflicting store by thread 1 at 0x........ size 4
+   at 0x........: main (tc01_simple_race.c:28)
+Allocation context: unknown
+Other segment start (thread 2)
+   (thread finished, call stack no longer available)
+Other segment end (thread 2)
+   (thread finished, call stack no longer available)
+
+ERROR SUMMARY: 2 errors from 2 contexts (suppressed: 0 from 0)
diff --git a/exp-drd/tests/tc01_simple_race.vgtest b/exp-drd/tests/tc01_simple_race.vgtest
new file mode 100644
index 0000000..44f3045
--- /dev/null
+++ b/exp-drd/tests/tc01_simple_race.vgtest
@@ -0,0 +1 @@
+prog: tc01_simple_race
diff --git a/exp-drd/tests/tc02_simple_tls.stderr.exp b/exp-drd/tests/tc02_simple_tls.stderr.exp
new file mode 100644
index 0000000..d18786f
--- /dev/null
+++ b/exp-drd/tests/tc02_simple_tls.stderr.exp
@@ -0,0 +1,3 @@
+
+
+ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0)
diff --git a/exp-drd/tests/tc02_simple_tls.vgtest b/exp-drd/tests/tc02_simple_tls.vgtest
new file mode 100644
index 0000000..57db35c
--- /dev/null
+++ b/exp-drd/tests/tc02_simple_tls.vgtest
@@ -0,0 +1 @@
+prog: tc02_simple_tls
diff --git a/exp-drd/tests/tc03_re_excl.stderr.exp b/exp-drd/tests/tc03_re_excl.stderr.exp
new file mode 100644
index 0000000..d18786f
--- /dev/null
+++ b/exp-drd/tests/tc03_re_excl.stderr.exp
@@ -0,0 +1,3 @@
+
+
+ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0)
diff --git a/exp-drd/tests/tc03_re_excl.vgtest b/exp-drd/tests/tc03_re_excl.vgtest
new file mode 100644
index 0000000..e12924a
--- /dev/null
+++ b/exp-drd/tests/tc03_re_excl.vgtest
@@ -0,0 +1 @@
+prog: tc03_re_excl
diff --git a/exp-drd/tests/tc04_free_lock.stderr.exp b/exp-drd/tests/tc04_free_lock.stderr.exp
new file mode 100644
index 0000000..d18786f
--- /dev/null
+++ b/exp-drd/tests/tc04_free_lock.stderr.exp
@@ -0,0 +1,3 @@
+
+
+ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0)
diff --git a/exp-drd/tests/tc04_free_lock.vgtest b/exp-drd/tests/tc04_free_lock.vgtest
new file mode 100644
index 0000000..27d28bf
--- /dev/null
+++ b/exp-drd/tests/tc04_free_lock.vgtest
@@ -0,0 +1 @@
+prog: tc04_free_lock
diff --git a/exp-drd/tests/tc07_hbl1.stderr.exp b/exp-drd/tests/tc07_hbl1.stderr.exp
new file mode 100644
index 0000000..10f0ca1
--- /dev/null
+++ b/exp-drd/tests/tc07_hbl1.stderr.exp
@@ -0,0 +1,18 @@
+
+Conflicting load by thread 1 at 0x........ size 4
+   at 0x........: main (tc07_hbl1.c:68)
+Allocation context: unknown
+Other segment start (thread 2)
+   (thread finished, call stack no longer available)
+Other segment end (thread 2)
+   (thread finished, call stack no longer available)
+
+Conflicting store by thread 1 at 0x........ size 4
+   at 0x........: main (tc07_hbl1.c:68)
+Allocation context: unknown
+Other segment start (thread 2)
+   (thread finished, call stack no longer available)
+Other segment end (thread 2)
+   (thread finished, call stack no longer available)
+
+ERROR SUMMARY: 2 errors from 2 contexts (suppressed: 0 from 0)
diff --git a/exp-drd/tests/tc07_hbl1.vgtest b/exp-drd/tests/tc07_hbl1.vgtest
new file mode 100644
index 0000000..71c463f
--- /dev/null
+++ b/exp-drd/tests/tc07_hbl1.vgtest
@@ -0,0 +1 @@
+prog: tc07_hbl1
diff --git a/exp-drd/tests/tc09_bad_unlock.stderr.exp b/exp-drd/tests/tc09_bad_unlock.stderr.exp
new file mode 100644
index 0000000..b3bc83a
--- /dev/null
+++ b/exp-drd/tests/tc09_bad_unlock.stderr.exp
@@ -0,0 +1,40 @@
+
+Attempt to unlock a mutex that is not locked / mutex 0x........ (recursion count -1, owner 1)
+   at 0x........: pthread_mutex_unlock (drd_intercepts.c:?)
+   by 0x........: nearly_main (tc09_bad_unlock.c:27)
+   by 0x........: main (tc09_bad_unlock.c:49)
+
+Thread 2:
+Mutex not unlocked by owner thread / mutex 0x........ (recursion count 1, owner 1)
+   at 0x........: pthread_mutex_unlock (drd_intercepts.c:?)
+   by 0x........: child_fn (tc09_bad_unlock.c:11)
+   by 0x........: vg_thread_wrapper (drd_intercepts.c:?)
+   by 0x........: start_thread (in libpthread-?.?.so)
+   by 0x........: clone (in /...libc...)
+
+Thread 1:
+Not a mutex / mutex 0x........ (recursion count 0, owner 0)
+   at 0x........: pthread_mutex_unlock (drd_intercepts.c:?)
+   by 0x........: nearly_main (tc09_bad_unlock.c:41)
+   by 0x........: main (tc09_bad_unlock.c:49)
+
+Attempt to unlock a mutex that is not locked / mutex 0x........ (recursion count -1, owner 1)
+   at 0x........: pthread_mutex_unlock (drd_intercepts.c:?)
+   by 0x........: nearly_main (tc09_bad_unlock.c:27)
+   by 0x........: main (tc09_bad_unlock.c:50)
+
+Thread 2:
+Mutex not unlocked by owner thread / mutex 0x........ (recursion count 1, owner 1)
+   at 0x........: pthread_mutex_unlock (drd_intercepts.c:?)
+   by 0x........: child_fn (tc09_bad_unlock.c:11)
+   by 0x........: vg_thread_wrapper (drd_intercepts.c:?)
+   by 0x........: start_thread (in libpthread-?.?.so)
+   by 0x........: clone (in /...libc...)
+
+Thread 1:
+Not a mutex / mutex 0x........ (recursion count 0, owner 0)
+   at 0x........: pthread_mutex_unlock (drd_intercepts.c:?)
+   by 0x........: nearly_main (tc09_bad_unlock.c:41)
+   by 0x........: main (tc09_bad_unlock.c:50)
+
+ERROR SUMMARY: 6 errors from 6 contexts (suppressed: 0 from 0)
diff --git a/exp-drd/tests/tc09_bad_unlock.vgtest b/exp-drd/tests/tc09_bad_unlock.vgtest
new file mode 100644
index 0000000..d09a702
--- /dev/null
+++ b/exp-drd/tests/tc09_bad_unlock.vgtest
@@ -0,0 +1 @@
+prog: tc09_bad_unlock
diff --git a/exp-drd/tests/tc10_rec_lock.stderr.exp b/exp-drd/tests/tc10_rec_lock.stderr.exp
new file mode 100644
index 0000000..d7ba119
--- /dev/null
+++ b/exp-drd/tests/tc10_rec_lock.stderr.exp
@@ -0,0 +1,14 @@
+
+before lock #1
+before lock #2
+before lock #3
+before unlock #1
+before unlock #2
+before unlock #3
+before unlock #4
+Attempt to unlock a mutex that is not locked / mutex 0x........ (recursion count -1, owner 1)
+   at 0x........: pthread_mutex_unlock (drd_intercepts.c:?)
+   by 0x........: nearly_main (tc10_rec_lock.c:42)
+   by 0x........: main (tc10_rec_lock.c:47)
+
+ERROR SUMMARY: 1 errors from 1 contexts (suppressed: 0 from 0)
diff --git a/exp-drd/tests/tc10_rec_lock.vgtest b/exp-drd/tests/tc10_rec_lock.vgtest
new file mode 100644
index 0000000..bfd0f89
--- /dev/null
+++ b/exp-drd/tests/tc10_rec_lock.vgtest
@@ -0,0 +1 @@
+prog: tc10_rec_lock
diff --git a/exp-drd/tests/tc11_XCHG.stderr.exp b/exp-drd/tests/tc11_XCHG.stderr.exp
new file mode 100644
index 0000000..f715e4b
--- /dev/null
+++ b/exp-drd/tests/tc11_XCHG.stderr.exp
@@ -0,0 +1,18 @@
+
+Conflicting load by thread 1 at 0x........ size 4
+   at 0x........: main (tc11_XCHG.c:78)
+Allocation context: unknown
+Other segment start (thread 2)
+   (thread finished, call stack no longer available)
+Other segment end (thread 2)
+   (thread finished, call stack no longer available)
+
+Conflicting store by thread 1 at 0x........ size 4
+   at 0x........: main (tc11_XCHG.c:78)
+Allocation context: unknown
+Other segment start (thread 2)
+   (thread finished, call stack no longer available)
+Other segment end (thread 2)
+   (thread finished, call stack no longer available)
+
+ERROR SUMMARY: 2 errors from 2 contexts (suppressed: 0 from 0)
diff --git a/exp-drd/tests/tc11_XCHG.vgtest b/exp-drd/tests/tc11_XCHG.vgtest
new file mode 100644
index 0000000..342199b
--- /dev/null
+++ b/exp-drd/tests/tc11_XCHG.vgtest
@@ -0,0 +1 @@
+prog: tc11_XCHG
diff --git a/exp-drd/tests/tc12_rwl_trivial.stderr.exp b/exp-drd/tests/tc12_rwl_trivial.stderr.exp
new file mode 100644
index 0000000..d18786f
--- /dev/null
+++ b/exp-drd/tests/tc12_rwl_trivial.stderr.exp
@@ -0,0 +1,3 @@
+
+
+ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0)
diff --git a/exp-drd/tests/tc12_rwl_trivial.vgtest b/exp-drd/tests/tc12_rwl_trivial.vgtest
new file mode 100644
index 0000000..fdcd644
--- /dev/null
+++ b/exp-drd/tests/tc12_rwl_trivial.vgtest
@@ -0,0 +1 @@
+prog: tc12_rwl_trivial
diff --git a/exp-drd/tests/tc13_laog1.stderr.exp b/exp-drd/tests/tc13_laog1.stderr.exp
new file mode 100644
index 0000000..d18786f
--- /dev/null
+++ b/exp-drd/tests/tc13_laog1.stderr.exp
@@ -0,0 +1,3 @@
+
+
+ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0)
diff --git a/exp-drd/tests/tc13_laog1.vgtest b/exp-drd/tests/tc13_laog1.vgtest
new file mode 100644
index 0000000..9fa71cd
--- /dev/null
+++ b/exp-drd/tests/tc13_laog1.vgtest
@@ -0,0 +1 @@
+prog: tc13_laog1
diff --git a/exp-drd/tests/tc15_laog_lockdel.stderr.exp b/exp-drd/tests/tc15_laog_lockdel.stderr.exp
new file mode 100644
index 0000000..ac7a574
--- /dev/null
+++ b/exp-drd/tests/tc15_laog_lockdel.stderr.exp
@@ -0,0 +1,8 @@
+
+Establish order 1 -> 2
+Try order 2 -> 1.  This gives an error.
+Free 2 and re-allocate it.  This gives it a new identity,
+so a second locking sequence 2 -> 1 should now be OK.
+done
+
+ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0)
diff --git a/exp-drd/tests/tc15_laog_lockdel.vgtest b/exp-drd/tests/tc15_laog_lockdel.vgtest
new file mode 100644
index 0000000..bd7a2ec
--- /dev/null
+++ b/exp-drd/tests/tc15_laog_lockdel.vgtest
@@ -0,0 +1 @@
+prog: tc15_laog_lockdel
diff --git a/exp-drd/tests/tc16_byterace.stderr.exp b/exp-drd/tests/tc16_byterace.stderr.exp
new file mode 100644
index 0000000..84db3ce
--- /dev/null
+++ b/exp-drd/tests/tc16_byterace.stderr.exp
@@ -0,0 +1,18 @@
+
+Conflicting load by thread 1 at 0x........ size 1
+   at 0x........: main (tc16_byterace.c:34)
+Allocation context: unknown
+Other segment start (thread 2)
+   (thread finished, call stack no longer available)
+Other segment end (thread 2)
+   (thread finished, call stack no longer available)
+
+Conflicting store by thread 1 at 0x........ size 1
+   at 0x........: main (tc16_byterace.c:34)
+Allocation context: unknown
+Other segment start (thread 2)
+   (thread finished, call stack no longer available)
+Other segment end (thread 2)
+   (thread finished, call stack no longer available)
+
+ERROR SUMMARY: 2 errors from 2 contexts (suppressed: 0 from 0)
diff --git a/exp-drd/tests/tc16_byterace.vgtest b/exp-drd/tests/tc16_byterace.vgtest
new file mode 100644
index 0000000..a8bf0f1
--- /dev/null
+++ b/exp-drd/tests/tc16_byterace.vgtest
@@ -0,0 +1 @@
+prog: tc16_byterace
diff --git a/exp-drd/tests/tc19_shadowmem.stderr.exp b/exp-drd/tests/tc19_shadowmem.stderr.exp
new file mode 100644
index 0000000..6b8bf05
--- /dev/null
+++ b/exp-drd/tests/tc19_shadowmem.stderr.exp
@@ -0,0 +1,2 @@
+valgrind: Bad option '--cmp-race-err-addrs=yes'; aborting.
+valgrind: Use --help for more information.
diff --git a/exp-drd/tests/tc19_shadowmem.vgtest b/exp-drd/tests/tc19_shadowmem.vgtest
new file mode 100644
index 0000000..233e8e4
--- /dev/null
+++ b/exp-drd/tests/tc19_shadowmem.vgtest
@@ -0,0 +1,2 @@
+prog: tc19_shadowmem
+vgopts: --cmp-race-err-addrs=yes --error-limit=no
diff --git a/exp-drd/tests/tc20_verifywrap.stderr.exp b/exp-drd/tests/tc20_verifywrap.stderr.exp
new file mode 100644
index 0000000..2ad2498
--- /dev/null
+++ b/exp-drd/tests/tc20_verifywrap.stderr.exp
@@ -0,0 +1,63 @@
+
+
+
+------ This is output for >= glibc 2.4 ------
+
+---------------- pthread_create/join ----------------
+
+Conflicting store by thread 1 at 0x........ size 2
+   at 0x........: main (tc20_verifywrap.c:78)
+Allocation context: unknown
+Other segment start (thread 2)
+   (thread finished, call stack no longer available)
+Other segment end (thread 2)
+   (thread finished, call stack no longer available)
+
+---------------- pthread_mutex_lock et al ----------------
+
+
+Destroying locked mutex / mutex 0x........ (recursion count 1, owner 1)
+   at 0x........: pthread_mutex_destroy (drd_intercepts.c:?)
+   by 0x........: main (tc20_verifywrap.c:102)
+
+Not a mutex / mutex 0x........ (recursion count 0, owner 0)
+   at 0x........: pthread_mutex_unlock (drd_intercepts.c:?)
+   by 0x........: main (tc20_verifywrap.c:125)
+
+---------------- pthread_cond_wait et al ----------------
+
+
+Not a mutex / mutex 0x........ (recursion count 0, owner 0)
+   at 0x........: pthread_cond_wait* (drd_intercepts.c:?)
+   by 0x........: main (tc20_verifywrap.c:147)
+
+FIXME: can't figure out how to verify wrap of pthread_cond_signal
+
+
+FIXME: can't figure out how to verify wrap of pthread_broadcast_signal
+
+
+---------------- pthread_rwlock_* ----------------
+
+(1) no error on next line
+(2) no error on next line
+(3)    ERROR on next line
+(4) no error on next line
+(5) no error on next line
+(6) no error on next line
+(7) no error on next line
+(8)    ERROR on next line
+
+---------------- sem_* ----------------
+
+
+FIXME: can't figure out how to verify wrap of sem_destroy
+
+
+FIXME: can't figure out how to verify wrap of sem_post
+
+
+------------ dealloc of mem holding locks ------------
+
+
+ERROR SUMMARY: 4 errors from 4 contexts (suppressed: 0 from 0)
diff --git a/exp-drd/tests/tc20_verifywrap.vgtest b/exp-drd/tests/tc20_verifywrap.vgtest
new file mode 100644
index 0000000..bc61bd6
--- /dev/null
+++ b/exp-drd/tests/tc20_verifywrap.vgtest
@@ -0,0 +1 @@
+prog: tc20_verifywrap
diff --git a/exp-drd/tests/tc21_pthonce.stderr.exp b/exp-drd/tests/tc21_pthonce.stderr.exp
new file mode 100644
index 0000000..d18786f
--- /dev/null
+++ b/exp-drd/tests/tc21_pthonce.stderr.exp
@@ -0,0 +1,3 @@
+
+
+ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0)
diff --git a/exp-drd/tests/tc21_pthonce.vgtest b/exp-drd/tests/tc21_pthonce.vgtest
new file mode 100644
index 0000000..d9b9a81
--- /dev/null
+++ b/exp-drd/tests/tc21_pthonce.vgtest
@@ -0,0 +1 @@
+prog: tc21_pthonce
diff --git a/exp-drd/tests/tc22_exit_w_lock.stderr.exp b/exp-drd/tests/tc22_exit_w_lock.stderr.exp
new file mode 100644
index 0000000..8cdf780
--- /dev/null
+++ b/exp-drd/tests/tc22_exit_w_lock.stderr.exp
@@ -0,0 +1,123 @@
+
+Conflicting load by thread 1 at 0x........ size 4
+   at 0x........: __deallocate_stack (in libpthread-?.?.so)
+   by 0x........: pthread_join (in libpthread-?.?.so)
+   by 0x........: pthread_join (drd_intercepts.c:?)
+   by 0x........: main (tc22_exit_w_lock.c:43)
+Allocation context: stack_cache_lock (offset 0, size 4) in libpthread-?.?.so, libpthread.so.0:BSS
+Other segment start (thread 2)
+   (thread finished, call stack no longer available)
+Other segment end (thread 2)
+   (thread finished, call stack no longer available)
+
+Conflicting store by thread 1 at 0x........ size 4
+   at 0x........: __deallocate_stack (in libpthread-?.?.so)
+   by 0x........: pthread_join (in libpthread-?.?.so)
+   by 0x........: pthread_join (drd_intercepts.c:?)
+   by 0x........: main (tc22_exit_w_lock.c:43)
+Allocation context: stack_cache_lock (offset 0, size 4) in libpthread-?.?.so, libpthread.so.0:BSS
+Other segment start (thread 2)
+   (thread finished, call stack no longer available)
+Other segment end (thread 2)
+   (thread finished, call stack no longer available)
+
+Conflicting store by thread 1 at 0x........ size 8
+   at 0x........: __deallocate_stack (in libpthread-?.?.so)
+   by 0x........: pthread_join (in libpthread-?.?.so)
+   by 0x........: pthread_join (drd_intercepts.c:?)
+   by 0x........: main (tc22_exit_w_lock.c:43)
+Allocation context: stack_used (offset 8, size 16) in libpthread-?.?.so, libpthread.so.0:Data
+Other segment start (thread 2)
+   (thread finished, call stack no longer available)
+Other segment end (thread 2)
+   (thread finished, call stack no longer available)
+
+Conflicting store by thread 1 at 0x........ size 8
+   at 0x........: __deallocate_stack (in libpthread-?.?.so)
+   by 0x........: pthread_join (in libpthread-?.?.so)
+   by 0x........: pthread_join (drd_intercepts.c:?)
+   by 0x........: main (tc22_exit_w_lock.c:43)
+Allocation context: stack_used (offset 0, size 16) in libpthread-?.?.so, libpthread.so.0:Data
+Other segment start (thread 2)
+   (thread finished, call stack no longer available)
+Other segment end (thread 2)
+   (thread finished, call stack no longer available)
+
+Conflicting load by thread 1 at 0x........ size 8
+   at 0x........: __deallocate_stack (in libpthread-?.?.so)
+   by 0x........: pthread_join (in libpthread-?.?.so)
+   by 0x........: pthread_join (drd_intercepts.c:?)
+   by 0x........: main (tc22_exit_w_lock.c:43)
+Allocation context: stack_cache (offset 0, size 16) in libpthread-?.?.so, libpthread.so.0:Data
+Other segment start (thread 2)
+   (thread finished, call stack no longer available)
+Other segment end (thread 2)
+   (thread finished, call stack no longer available)
+
+Conflicting store by thread 1 at 0x........ size 8
+   at 0x........: __deallocate_stack (in libpthread-?.?.so)
+   by 0x........: pthread_join (in libpthread-?.?.so)
+   by 0x........: pthread_join (drd_intercepts.c:?)
+   by 0x........: main (tc22_exit_w_lock.c:43)
+Allocation context: stack_cache (offset 8, size 16) in libpthread-?.?.so, libpthread.so.0:Data
+Other segment start (thread 2)
+   (thread finished, call stack no longer available)
+Other segment end (thread 2)
+   (thread finished, call stack no longer available)
+
+Conflicting store by thread 1 at 0x........ size 8
+   at 0x........: __deallocate_stack (in libpthread-?.?.so)
+   by 0x........: pthread_join (in libpthread-?.?.so)
+   by 0x........: pthread_join (drd_intercepts.c:?)
+   by 0x........: main (tc22_exit_w_lock.c:43)
+Allocation context: stack_cache (offset 0, size 16) in libpthread-?.?.so, libpthread.so.0:Data
+Other segment start (thread 2)
+   (thread finished, call stack no longer available)
+Other segment end (thread 2)
+   (thread finished, call stack no longer available)
+
+Conflicting load by thread 1 at 0x........ size 8
+   at 0x........: __deallocate_stack (in libpthread-?.?.so)
+   by 0x........: pthread_join (in libpthread-?.?.so)
+   by 0x........: pthread_join (drd_intercepts.c:?)
+   by 0x........: main (tc22_exit_w_lock.c:43)
+Allocation context: stack_cache_actsize (offset 0, size 8) in libpthread-?.?.so, libpthread.so.0:BSS
+Other segment start (thread 2)
+   (thread finished, call stack no longer available)
+Other segment end (thread 2)
+   (thread finished, call stack no longer available)
+
+Conflicting store by thread 1 at 0x........ size 8
+   at 0x........: __deallocate_stack (in libpthread-?.?.so)
+   by 0x........: pthread_join (in libpthread-?.?.so)
+   by 0x........: pthread_join (drd_intercepts.c:?)
+   by 0x........: main (tc22_exit_w_lock.c:43)
+Allocation context: stack_cache_actsize (offset 0, size 8) in libpthread-?.?.so, libpthread.so.0:BSS
+Other segment start (thread 2)
+   (thread finished, call stack no longer available)
+Other segment end (thread 2)
+   (thread finished, call stack no longer available)
+
+Conflicting load by thread 1 at 0x........ size 4
+   at 0x........: __deallocate_stack (in libpthread-?.?.so)
+   by 0x........: pthread_join (in libpthread-?.?.so)
+   by 0x........: pthread_join (drd_intercepts.c:?)
+   by 0x........: main (tc22_exit_w_lock.c:43)
+Allocation context: stack_cache_lock (offset 0, size 4) in libpthread-?.?.so, libpthread.so.0:BSS
+Other segment start (thread 2)
+   (thread finished, call stack no longer available)
+Other segment end (thread 2)
+   (thread finished, call stack no longer available)
+
+Conflicting store by thread 1 at 0x........ size 4
+   at 0x........: __deallocate_stack (in libpthread-?.?.so)
+   by 0x........: pthread_join (in libpthread-?.?.so)
+   by 0x........: pthread_join (drd_intercepts.c:?)
+   by 0x........: main (tc22_exit_w_lock.c:43)
+Allocation context: stack_cache_lock (offset 0, size 4) in libpthread-?.?.so, libpthread.so.0:BSS
+Other segment start (thread 2)
+   (thread finished, call stack no longer available)
+Other segment end (thread 2)
+   (thread finished, call stack no longer available)
+
+ERROR SUMMARY: 11 errors from 11 contexts (suppressed: 0 from 0)
diff --git a/exp-drd/tests/tc22_exit_w_lock.vgtest b/exp-drd/tests/tc22_exit_w_lock.vgtest
new file mode 100644
index 0000000..4f85dd5
--- /dev/null
+++ b/exp-drd/tests/tc22_exit_w_lock.vgtest
@@ -0,0 +1 @@
+prog: tc22_exit_w_lock
diff --git a/exp-drd/tests/tc23_bogus_condwait.stderr.exp b/exp-drd/tests/tc23_bogus_condwait.stderr.exp
new file mode 100644
index 0000000..40ee726
--- /dev/null
+++ b/exp-drd/tests/tc23_bogus_condwait.stderr.exp
@@ -0,0 +1,69 @@
+
+Not a mutex / mutex 0x........ (recursion count 0, owner 0)
+   at 0x........: pthread_cond_wait* (drd_intercepts.c:?)
+   by 0x........: main (tc23_bogus_condwait.c:69)
+
+Thread 3:
+Race condition: condition variable 0x........ has been signalled but the associated mutex 0x........ is not locked by the signalling thread
+   at 0x........: pthread_cond_signal* (drd_intercepts.c:?)
+   by 0x........: rescue_me (tc23_bogus_condwait.c:20)
+   by 0x........: vg_thread_wrapper (drd_intercepts.c:?)
+   by 0x........: start_thread (in libpthread-?.?.so)
+   by 0x........: clone (in /...libc...)
+
+Thread 1:
+Not a mutex / mutex 0x........ (recursion count 0, owner 0)
+   at 0x........: pthread_cond_wait* (drd_intercepts.c:?)
+   by 0x........: main (tc23_bogus_condwait.c:69)
+
+Not a mutex / mutex 0x........ (recursion count 0, owner 0)
+   at 0x........: pthread_cond_wait* (drd_intercepts.c:?)
+   by 0x........: main (tc23_bogus_condwait.c:69)
+
+Not a mutex / mutex 0x........ (recursion count 0, owner 0)
+   at 0x........: pthread_cond_wait* (drd_intercepts.c:?)
+   by 0x........: main (tc23_bogus_condwait.c:72)
+
+Thread 3:
+Race condition: condition variable 0x........ has been signalled but the associated mutex 0x........ is not locked by the signalling thread
+   at 0x........: pthread_cond_signal* (drd_intercepts.c:?)
+   by 0x........: rescue_me (tc23_bogus_condwait.c:24)
+   by 0x........: vg_thread_wrapper (drd_intercepts.c:?)
+   by 0x........: start_thread (in libpthread-?.?.so)
+   by 0x........: clone (in /...libc...)
+
+Thread 1:
+Not a mutex / mutex 0x........ (recursion count 0, owner 0)
+   at 0x........: pthread_cond_wait* (drd_intercepts.c:?)
+   by 0x........: main (tc23_bogus_condwait.c:75)
+
+Thread 3:
+Race condition: condition variable 0x........ has been signalled but the associated mutex 0x........ is not locked by the signalling thread
+   at 0x........: pthread_cond_signal* (drd_intercepts.c:?)
+   by 0x........: rescue_me (tc23_bogus_condwait.c:28)
+   by 0x........: vg_thread_wrapper (drd_intercepts.c:?)
+   by 0x........: start_thread (in libpthread-?.?.so)
+   by 0x........: clone (in /...libc...)
+
+Thread 1:
+Mutex not unlocked by owner thread / mutex 0x........ (recursion count 1, owner 2)
+   at 0x........: pthread_cond_wait* (drd_intercepts.c:?)
+   by 0x........: main (tc23_bogus_condwait.c:78)
+
+Thread 3:
+Race condition: condition variable 0x........ has been signalled but the associated mutex 0x........ is not locked by the signalling thread
+   at 0x........: pthread_cond_signal* (drd_intercepts.c:?)
+   by 0x........: rescue_me (tc23_bogus_condwait.c:32)
+   by 0x........: vg_thread_wrapper (drd_intercepts.c:?)
+   by 0x........: start_thread (in libpthread-?.?.so)
+   by 0x........: clone (in /...libc...)
+
+Thread 2:
+Mutex not unlocked by owner thread / mutex 0x........ (recursion count 1, owner 1)
+   at 0x........: pthread_mutex_unlock (drd_intercepts.c:?)
+   by 0x........: grab_the_lock (tc23_bogus_condwait.c:42)
+   by 0x........: vg_thread_wrapper (drd_intercepts.c:?)
+   by 0x........: start_thread (in libpthread-?.?.so)
+   by 0x........: clone (in /...libc...)
+
+ERROR SUMMARY: 11 errors from 11 contexts (suppressed: 0 from 0)
diff --git a/exp-drd/tests/tc23_bogus_condwait.vgtest b/exp-drd/tests/tc23_bogus_condwait.vgtest
new file mode 100644
index 0000000..31c3ed8
--- /dev/null
+++ b/exp-drd/tests/tc23_bogus_condwait.vgtest
@@ -0,0 +1 @@
+prog: tc23_bogus_condwait
diff --git a/exp-drd/tests/tc24_nonzero_sem.stderr.exp b/exp-drd/tests/tc24_nonzero_sem.stderr.exp
new file mode 100644
index 0000000..14a75de
--- /dev/null
+++ b/exp-drd/tests/tc24_nonzero_sem.stderr.exp
@@ -0,0 +1,2 @@
+valgrind: Bad option '--hg-sanity-flags=111111'; aborting.
+valgrind: Use --help for more information.
diff --git a/exp-drd/tests/tc24_nonzero_sem.vgtest b/exp-drd/tests/tc24_nonzero_sem.vgtest
new file mode 100644
index 0000000..1a43121
--- /dev/null
+++ b/exp-drd/tests/tc24_nonzero_sem.vgtest
@@ -0,0 +1,2 @@
+prog: tc24_nonzero_sem
+vgopts: --hg-sanity-flags=111111