Fixed semaphore vector clock updating / simplified semaphore tracing.

git-svn-id: svn://svn.valgrind.org/valgrind/trunk@8836 a5019735-40e9-0310-863c-91ae7b9d1cf9
diff --git a/drd/drd_clientobj.h b/drd/drd_clientobj.h
index 39e97f9..98f4fd9 100644
--- a/drd/drd_clientobj.h
+++ b/drd/drd_clientobj.h
@@ -32,6 +32,7 @@
 #include "pub_tool_basics.h"
 #include "pub_tool_execontext.h" /* ExeContext */
 #include "pub_tool_oset.h"
+#include "pub_tool_xarray.h"
 
 
 // Forward declarations.
@@ -91,7 +92,7 @@
   UInt        value;             // Semaphore value.
   UWord       waiters;           // Number of threads inside sem_wait().
   DrdThreadId last_sem_post_tid; // Thread ID associated with last sem_post().
-  Segment*    last_sem_post_segment;
+  XArray*     last_sem_post_seg; // array of Segment*, used as a stack.
 };
 
 struct barrier_info