hg05_race2.stderr.exp-glibc25-x86 \
hg06_readshared.vgtest hg06_readshared.stdout.exp \
hg06_readshared.stderr.exp-glibc25-amd64 \
+ rwlock_race.vgtest rwlock_race.stdout.exp \
+ rwlock_race.stderr.exp-glibc25-amd64 \
+ rwlock_test.vgtest rwlock_test.stdout.exp \
+ rwlock_test.stderr.exp-glibc25-amd64 \
tc01_simple_race.vgtest tc01_simple_race.stdout.exp \
tc01_simple_race.stderr.exp-glibc25-amd64 \
tc01_simple_race.stderr.exp-glibc25-x86 \
hg04_race \
hg05_race2 \
hg06_readshared \
+ rwlock_race \
+ rwlock_test \
tc01_simple_race \
tc02_simple_tls \
tc03_re_excl \
# are these necessary?
AM_CFLAGS = $(WERROR) -Winline -Wall -Wshadow -g $(AM_FLAG_M3264_PRI)
-
LDADD = -lpthread
+
+# only needed because of referencing sources in drd/tests
+rwlock_race_SOURCES = ../../drd/tests/rwlock_race.c
+rwlock_test_SOURCES = ../../drd/tests/rwlock_test.c
--- /dev/null
+
+Thread #3 was created
+ at 0x........: clone (in /...libc...)
+ by 0x........: ...
+ by 0x........: pthread_create@GLIBC_ (in /lib/libpthread...)
+ by 0x........: pthread_create@* (hg_intercepts.c:...)
+ by 0x........: main (rwlock_race.c:48)
+
+Thread #2 was created
+ at 0x........: clone (in /...libc...)
+ by 0x........: ...
+ by 0x........: pthread_create@GLIBC_ (in /lib/libpthread...)
+ by 0x........: pthread_create@* (hg_intercepts.c:...)
+ by 0x........: main (rwlock_race.c:47)
+
+Possible data race during write of size 4 at 0x........ by thread #3
+ at 0x........: thread_func (rwlock_race.c:29)
+ by 0x........: mythread_wrapper (hg_intercepts.c:...)
+ by 0x........: ...
+ by 0x........: ...
+ This conflicts with a previous access by thread #2
+ at 0x........: thread_func (rwlock_race.c:29)
+ by 0x........: mythread_wrapper (hg_intercepts.c:...)
+ by 0x........: ...
+ by 0x........: ...
+ Location 0x........ is 0 bytes inside local var "s_racy"
+ declared at rwlock_race.c:18, in frame #0 of thread 3
+Result: 2
+
+ERROR SUMMARY: 1 errors from 1 contexts (suppressed: 0 from 0)