Semaphore and barrier reinitialization are now reported.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@8297 a5019735-40e9-0310-863c-91ae7b9d1cf9
diff --git a/exp-drd/drd_semaphore.c b/exp-drd/drd_semaphore.c
index 0e97ea0..4bedf8f 100644
--- a/exp-drd/drd_semaphore.c
+++ b/exp-drd/drd_semaphore.c
@@ -123,11 +123,22 @@
                  thread_get_running_tid(),
                  semaphore);
   }
-  if (semaphore_get(semaphore))
+  p = semaphore_get(semaphore);
+  if (p)
   {
-    // To do: print an error message that a semaphore is being reinitialized.
+    const ThreadId vg_tid = VG_(get_running_tid)();
+    SemaphoreErrInfo SEI = { semaphore };
+    VG_(maybe_record_error)(vg_tid,
+                            SemaphoreErr,
+                            VG_(get_IP)(vg_tid),
+                            "Semaphore reinitialization",
+                            &SEI);
   }
-  p = semaphore_get_or_allocate(semaphore);
+  else
+  {
+    p = semaphore_get_or_allocate(semaphore);
+  }
+  tl_assert(p);
   p->value = value;
   return p;
 }