summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests')
-rw-r--r--tests/CMakeLists.txt2
-rw-r--r--tests/helgrind.supp11
2 files changed, 12 insertions, 1 deletions
diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt
index 068af00..6884473 100644
--- a/tests/CMakeLists.txt
+++ b/tests/CMakeLists.txt
@@ -73,7 +73,7 @@ endforeach()
if (HELGRIND_TESTING)
find_program(VALGRIND_EXECUTABLE valgrind)
if (VALGRIND_EXECUTABLE)
- set(VALGRIND_HELGRIND_OPTIONS -v --trace-children=yes --tool=helgrind --error-exitcode=1 --read-var-info=yes)
+ set(VALGRIND_HELGRIND_OPTIONS -v --trace-children=yes --tool=helgrind --error-exitcode=1 --read-var-info=yes --suppressions=${CMAKE_CURRENT_SOURCE_DIR}/helgrind.supp)
foreach(_TEST ${SWRAP_THREADED_TESTS})
set(_HELGRIND_TEST "helgrind_${_TEST}")
diff --git a/tests/helgrind.supp b/tests/helgrind.supp
new file mode 100644
index 0000000..733f714
--- /dev/null
+++ b/tests/helgrind.supp
@@ -0,0 +1,11 @@
+# The swrap_bind_symbol_lib* macros have a thread race condition on purpose!
+#
+# As an optimization we do not lock the access. However if the obj is not
+# bound, we lock it with a mutex and reread it again. And binding the symbol is
+# protected.
+{
+ SWRAP_SYMBOL_ACCESS
+ Helgrind:Race
+ fun:libc_*
+ fun:swrap_*
+}