memchr, memchr2: add valgrind exception
authorEric Blake <ebb9@byu.net>
Mon, 15 Jun 2009 17:04:21 +0000 (11:04 -0600)
committerEric Blake <ebb9@byu.net>
Tue, 16 Jun 2009 03:05:08 +0000 (21:05 -0600)
* lib/memchr.valgrind: New file.
* lib/memchr2.valgrind: New file.
* modules/memchr (Files): Distribute valgrind file.
* modules/memchr2 (Files): Likewise.

Signed-off-by: Eric Blake <ebb9@byu.net>
ChangeLog
lib/memchr.valgrind [new file with mode: 0644]
lib/memchr2.valgrind [new file with mode: 0644]
modules/memchr
modules/memchr2

index 5bcd64d..e8ffc64 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,11 @@
 2009-06-15  Eric Blake  <ebb9@byu.net>
 
+       memchr, memchr2: add valgrind exception
+       * lib/memchr.valgrind: New file.
+       * lib/memchr2.valgrind: New file.
+       * modules/memchr (Files): Distribute valgrind file.
+       * modules/memchr2 (Files): Likewise.
+
        docs: memchr is no longer obsolete
        * MODULES.html.sh: Move memchr from obsolete to string.h section.
        * lib/string.in.h (memchr): Simplify logic.
diff --git a/lib/memchr.valgrind b/lib/memchr.valgrind
new file mode 100644 (file)
index 0000000..60f247e
--- /dev/null
@@ -0,0 +1,14 @@
+# Suppress a valgrind message about use of uninitialized memory in memchr().
+# POSIX states that when the character is found, memchr must not read extra
+# bytes in an overestimated length (for example, where memchr is used to
+# implement strnlen).  However, we use a safe word read to provide a speedup.
+{
+    memchr-value4
+    Memcheck:Value4
+    fun:rpl_memchr
+}
+{
+    memchr-value8
+    Memcheck:Value8
+    fun:rpl_memchr
+}
diff --git a/lib/memchr2.valgrind b/lib/memchr2.valgrind
new file mode 100644 (file)
index 0000000..778fe86
--- /dev/null
@@ -0,0 +1,14 @@
+# Suppress a valgrind message about use of uninitialized memory in memchr2().
+# Like memchr, it is safe to overestimate the length when the terminator
+# is guaranteed to be found.  In this case, we may end up reading a word
+# that is partially uninitialized, but this use is OK for a speedup.
+{
+    memchr2-value4
+    Memcheck:Value4
+    fun:memchr2
+}
+{
+    memchr2-value8
+    Memcheck:Value8
+    fun:memchr2
+}
index a77bec5..855c8db 100644 (file)
@@ -3,6 +3,7 @@ memchr() function: scan memory for a byte.
 
 Files:
 lib/memchr.c
+lib/memchr.valgrind
 m4/memchr.m4
 m4/mmap-anon.m4
 
index 88337ac..99e4b85 100644 (file)
@@ -4,6 +4,7 @@ memchr2() function: scan memory for the first of two bytes.
 Files:
 lib/memchr2.h
 lib/memchr2.c
+lib/memchr2.valgrind
 
 Depends-on:
 stdint