Mark Wielaard cb8636
commit fc75e5ea3e57d58bbbbd3fd8fff3a71de9a1b172
Mark Wielaard cb8636
Author: tom <tom@a5019735-40e9-0310-863c-91ae7b9d1cf9>
Mark Wielaard cb8636
Date:   Thu Feb 28 12:50:55 2013 +0000
Mark Wielaard cb8636
Mark Wielaard cb8636
    Don't check the flags word in msghdr for sendmsg as the
Mark Wielaard cb8636
    kernel will neither read nor write it.
Mark Wielaard cb8636
    
Mark Wielaard cb8636
    Patch from Mark Wielaard to fix BZ#315441.
Mark Wielaard cb8636
    
Mark Wielaard cb8636
    
Mark Wielaard cb8636
    git-svn-id: svn://svn.valgrind.org/valgrind/trunk@13294 a5019735-40e9-0310-863c-91ae7b9d1cf9
Mark Wielaard cb8636
Mark Wielaard cb8636
diff --git a/memcheck/tests/filter_stderr b/memcheck/tests/filter_stderr
Mark Wielaard cb8636
index abd6792..3d62d94 100755
Mark Wielaard cb8636
--- a/memcheck/tests/filter_stderr
Mark Wielaard cb8636
+++ b/memcheck/tests/filter_stderr
Mark Wielaard cb8636
@@ -22,6 +22,9 @@ sed "s/checked [0-9,]* bytes./checked ... bytes./" |
Mark Wielaard cb8636
 # records.  So we filter out the loss record numbers.
Mark Wielaard cb8636
 perl -p -e "s/in loss record \d+ of \d+/in loss record ... of .../" |
Mark Wielaard cb8636
 
Mark Wielaard cb8636
+# Filter out glibc debuginfo if installed.
Mark Wielaard cb8636
+perl -p -e "s/\(syscall-template.S:[0-9]*\)/(in \/...libc...)/" |
Mark Wielaard cb8636
+
Mark Wielaard cb8636
 $dir/../../memcheck/tests/filter_memcheck "$@"
Mark Wielaard cb8636
 
Mark Wielaard cb8636
 exit 0
Mark Wielaard 447d28
diff --git a/memcheck/tests/sendmsg.c b/memcheck/tests/sendmsg.c
Mark Wielaard 447d28
new file mode 100644
Mark Wielaard cb8636
index 0000000..2039f07
Mark Wielaard 447d28
--- /dev/null
Mark Wielaard 447d28
+++ b/memcheck/tests/sendmsg.c
Mark Wielaard cb8636
@@ -0,0 +1,74 @@
Mark Wielaard 447d28
+#include <netinet/ip.h>
Mark Wielaard 447d28
+#include <stdio.h>
Mark Wielaard 447d28
+#include <stdlib.h>
Mark Wielaard 447d28
+#include <string.h>
Mark Wielaard 447d28
+#include <sys/types.h>
Mark Wielaard 447d28
+#include <sys/socket.h>
Mark Wielaard 447d28
+
Mark Wielaard 447d28
+#define PORT 12345
Mark Wielaard 447d28
+
Mark Wielaard 447d28
+int
Mark Wielaard 447d28
+main (int argc, char **argv)
Mark Wielaard 447d28
+{
Mark Wielaard 447d28
+  int fd;
Mark Wielaard 447d28
+  struct sockaddr_in sa;
Mark Wielaard 447d28
+  struct msghdr msg;
Mark Wielaard 447d28
+  struct iovec iov[2];
Mark Wielaard 447d28
+
Mark Wielaard 447d28
+  fd = socket (AF_INET, SOCK_DGRAM, 0);
Mark Wielaard 447d28
+  if (fd == -1)
Mark Wielaard 447d28
+    {
Mark Wielaard 447d28
+      perror ("socket()");
Mark Wielaard 447d28
+      exit (EXIT_FAILURE);
Mark Wielaard 447d28
+    }
Mark Wielaard 447d28
+
Mark Wielaard 447d28
+  sa.sin_family = AF_INET;
Mark Wielaard 447d28
+  sa.sin_addr.s_addr = htonl (INADDR_LOOPBACK);
Mark Wielaard 447d28
+  sa.sin_port = htons (PORT);
Mark Wielaard 447d28
+  if (connect (fd, (struct sockaddr *) &sa, sizeof (sa)) == -1)
Mark Wielaard 447d28
+    {
Mark Wielaard 447d28
+      perror ("connect ()");
Mark Wielaard 447d28
+      exit (EXIT_FAILURE);
Mark Wielaard 447d28
+    }
Mark Wielaard 447d28
+
Mark Wielaard cb8636
+  // Create msg_hdr. Oops, we forget to set msg_name...
Mark Wielaard 447d28
+  msg.msg_namelen = 0;
Mark Wielaard 447d28
+  iov[0].iov_base = "one";
Mark Wielaard 447d28
+  iov[0].iov_len = 3;
Mark Wielaard 447d28
+  iov[1].iov_base = "two";
Mark Wielaard 447d28
+  iov[1].iov_len = 3;
Mark Wielaard 447d28
+  msg.msg_iov = &iov;
Mark Wielaard 447d28
+  msg.msg_iovlen = 2;
Mark Wielaard 447d28
+  msg.msg_control = NULL;
Mark Wielaard 447d28
+  msg.msg_controllen = 0;
Mark Wielaard 447d28
+
Mark Wielaard cb8636
+  size_t s = sendmsg (fd, &msg, 0);
Mark Wielaard cb8636
+
Mark Wielaard cb8636
+  // Note how we now do set msg_name, but don't set msg_flags.
Mark Wielaard cb8636
+  // The msg_flags field is ignored by sendmsg.
Mark Wielaard cb8636
+  msg.msg_name = NULL;
Mark Wielaard cb8636
+
Mark Wielaard cb8636
+  fd = socket (AF_INET, SOCK_DGRAM, 0);
Mark Wielaard cb8636
+  if (fd == -1)
Mark Wielaard cb8636
+    {
Mark Wielaard cb8636
+      perror ("socket()");
Mark Wielaard cb8636
+      exit (EXIT_FAILURE);
Mark Wielaard cb8636
+    }
Mark Wielaard cb8636
+
Mark Wielaard cb8636
+  if (connect (fd, (struct sockaddr *) &sa, sizeof (sa)) == -1)
Mark Wielaard cb8636
+    {
Mark Wielaard cb8636
+      perror ("connect ()");
Mark Wielaard cb8636
+      exit (EXIT_FAILURE);
Mark Wielaard cb8636
+    }
Mark Wielaard cb8636
+
Mark Wielaard cb8636
+  s = sendmsg (fd, &msg, 0);
Mark Wielaard 447d28
+  if (s == -1)
Mark Wielaard 447d28
+    {
Mark Wielaard 447d28
+      perror ("sendmsg ()");
Mark Wielaard 447d28
+      exit (EXIT_FAILURE);
Mark Wielaard 447d28
+    }
Mark Wielaard 447d28
+  else
Mark Wielaard 447d28
+    fprintf (stderr, "sendmsg: %d\n", (int) s);
Mark Wielaard 447d28
+
Mark Wielaard 447d28
+  exit(0);
Mark Wielaard 447d28
+}
Mark Wielaard 447d28
diff --git a/memcheck/tests/sendmsg.stderr.exp b/memcheck/tests/sendmsg.stderr.exp
Mark Wielaard 447d28
new file mode 100644
Mark Wielaard cb8636
index 0000000..38e20c5
Mark Wielaard 447d28
--- /dev/null
Mark Wielaard 447d28
+++ b/memcheck/tests/sendmsg.stderr.exp
Mark Wielaard cb8636
@@ -0,0 +1,6 @@
Mark Wielaard cb8636
+Syscall param sendmsg(msg) points to uninitialised byte(s)
Mark Wielaard cb8636
+   at 0x........: sendmsg (in /...libc...)
Mark Wielaard cb8636
+   by 0x........: main (sendmsg.c:45)
Mark Wielaard cb8636
+ Address 0x........ is on thread 1's stack
Mark Wielaard cb8636
+
Mark Wielaard 447d28
+sendmsg: 6
Mark Wielaard 447d28
diff --git a/memcheck/tests/sendmsg.vgtest b/memcheck/tests/sendmsg.vgtest
Mark Wielaard 447d28
new file mode 100644
Mark Wielaard 447d28
index 0000000..f252b62
Mark Wielaard 447d28
--- /dev/null
Mark Wielaard 447d28
+++ b/memcheck/tests/sendmsg.vgtest
Mark Wielaard 447d28
@@ -0,0 +1,2 @@
Mark Wielaard 447d28
+prog: sendmsg
Mark Wielaard 447d28
+vgopts: -q
Mark Wielaard 447d28
--- valgrind-3.8.1/memcheck/tests/Makefile.in.orig	2013-02-19 14:46:14.305186272 +0100
Mark Wielaard 447d28
+++ valgrind-3.8.1/memcheck/tests/Makefile.in	2013-02-19 14:59:41.284835217 +0100
Mark Wielaard 447d28
@@ -105,20 +105,20 @@
Mark Wielaard 447d28
 	partial_load$(EXEEXT) pdb-realloc$(EXEEXT) \
Mark Wielaard 447d28
 	pdb-realloc2$(EXEEXT) pipe$(EXEEXT) pointer-trace$(EXEEXT) \
Mark Wielaard 447d28
 	post-syscall$(EXEEXT) realloc1$(EXEEXT) realloc2$(EXEEXT) \
Mark Wielaard 447d28
-	realloc3$(EXEEXT) sbfragment$(EXEEXT) sh-mem$(EXEEXT) \
Mark Wielaard 447d28
-	sh-mem-random$(EXEEXT) sigaltstack$(EXEEXT) signal2$(EXEEXT) \
Mark Wielaard 447d28
-	sigprocmask$(EXEEXT) static_malloc$(EXEEXT) sigkill$(EXEEXT) \
Mark Wielaard 447d28
-	stpncpy$(EXEEXT) strchr$(EXEEXT) str_tester$(EXEEXT) \
Mark Wielaard 447d28
-	supp_unknown$(EXEEXT) supp1$(EXEEXT) supp2$(EXEEXT) \
Mark Wielaard 447d28
-	suppfree$(EXEEXT) test-plo$(EXEEXT) trivialleak$(EXEEXT) \
Mark Wielaard 447d28
-	unit_libcbase$(EXEEXT) unit_oset$(EXEEXT) varinfo1$(EXEEXT) \
Mark Wielaard 447d28
-	varinfo2$(EXEEXT) varinfo3$(EXEEXT) varinfo4$(EXEEXT) \
Mark Wielaard 447d28
-	varinfo5$(EXEEXT) varinfo5so.so$(EXEEXT) varinfo6$(EXEEXT) \
Mark Wielaard 447d28
-	vcpu_fbench$(EXEEXT) vcpu_fnfns$(EXEEXT) wcs$(EXEEXT) \
Mark Wielaard 447d28
-	xml1$(EXEEXT) wrap1$(EXEEXT) wrap2$(EXEEXT) wrap3$(EXEEXT) \
Mark Wielaard 447d28
-	wrap4$(EXEEXT) wrap5$(EXEEXT) wrap6$(EXEEXT) wrap7$(EXEEXT) \
Mark Wielaard 447d28
-	wrap7so.so$(EXEEXT) wrap8$(EXEEXT) writev1$(EXEEXT) \
Mark Wielaard 447d28
-	$(am__EXEEXT_1)
Mark Wielaard 447d28
+	realloc3$(EXEEXT) sbfragment$(EXEEXT) sendmsg$(EXEEXT) \
Mark Wielaard 447d28
+	sh-mem$(EXEEXT) sh-mem-random$(EXEEXT) sigaltstack$(EXEEXT) \
Mark Wielaard 447d28
+	signal2$(EXEEXT) sigprocmask$(EXEEXT) static_malloc$(EXEEXT) \
Mark Wielaard 447d28
+	sigkill$(EXEEXT) stpncpy$(EXEEXT) strchr$(EXEEXT) \
Mark Wielaard 447d28
+	str_tester$(EXEEXT) supp_unknown$(EXEEXT) supp1$(EXEEXT) \
Mark Wielaard 447d28
+	supp2$(EXEEXT) suppfree$(EXEEXT) test-plo$(EXEEXT) \
Mark Wielaard 447d28
+	trivialleak$(EXEEXT) unit_libcbase$(EXEEXT) unit_oset$(EXEEXT) \
Mark Wielaard 447d28
+	varinfo1$(EXEEXT) varinfo2$(EXEEXT) varinfo3$(EXEEXT) \
Mark Wielaard 447d28
+	varinfo4$(EXEEXT) varinfo5$(EXEEXT) varinfo5so.so$(EXEEXT) \
Mark Wielaard 447d28
+	varinfo6$(EXEEXT) vcpu_fbench$(EXEEXT) vcpu_fnfns$(EXEEXT) \
Mark Wielaard 447d28
+	wcs$(EXEEXT) xml1$(EXEEXT) wrap1$(EXEEXT) wrap2$(EXEEXT) \
Mark Wielaard 447d28
+	wrap3$(EXEEXT) wrap4$(EXEEXT) wrap5$(EXEEXT) wrap6$(EXEEXT) \
Mark Wielaard 447d28
+	wrap7$(EXEEXT) wrap7so.so$(EXEEXT) wrap8$(EXEEXT) \
Mark Wielaard 447d28
+	writev1$(EXEEXT) $(am__EXEEXT_1)
Mark Wielaard 447d28
 @DWARF4_TRUE@am__append_12 = dw4
Mark Wielaard 447d28
 subdir = memcheck/tests
Mark Wielaard 447d28
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
Mark Wielaard 447d28
@@ -434,6 +434,9 @@
Mark Wielaard 447d28
 sbfragment_SOURCES = sbfragment.c
Mark Wielaard 447d28
 sbfragment_OBJECTS = sbfragment.$(OBJEXT)
Mark Wielaard 447d28
 sbfragment_LDADD = $(LDADD)
Mark Wielaard 447d28
+sendmsg_SOURCES = sendmsg.c
Mark Wielaard 447d28
+sendmsg_OBJECTS = sendmsg.$(OBJEXT)
Mark Wielaard 447d28
+sendmsg_LDADD = $(LDADD)
Mark Wielaard 447d28
 sh_mem_SOURCES = sh-mem.c
Mark Wielaard 447d28
 sh_mem_OBJECTS = sh-mem.$(OBJEXT)
Mark Wielaard 447d28
 sh_mem_LDADD = $(LDADD)
Mark Wielaard 447d28
@@ -610,8 +613,8 @@
Mark Wielaard 447d28
 	origin3-no.c origin4-many.c origin5-bz2.c origin6-fp.c \
Mark Wielaard 447d28
 	overlap.c partial_load.c partiallydefinedeq.c pdb-realloc.c \
Mark Wielaard 447d28
 	pdb-realloc2.c pipe.c pointer-trace.c post-syscall.c \
Mark Wielaard 447d28
-	realloc1.c realloc2.c realloc3.c sbfragment.c sh-mem.c \
Mark Wielaard 447d28
-	sh-mem-random.c sigaltstack.c sigkill.c signal2.c \
Mark Wielaard 447d28
+	realloc1.c realloc2.c realloc3.c sbfragment.c sendmsg.c \
Mark Wielaard 447d28
+	sh-mem.c sh-mem-random.c sigaltstack.c sigkill.c signal2.c \
Mark Wielaard 447d28
 	sigprocmask.c static_malloc.c stpncpy.c str_tester.c strchr.c \
Mark Wielaard 447d28
 	$(supp1_SOURCES) $(supp2_SOURCES) $(supp_unknown_SOURCES) \
Mark Wielaard 447d28
 	suppfree.c test-plo.c trivialleak.c unit_libcbase.c \
Mark Wielaard 447d28
@@ -641,8 +644,8 @@
Mark Wielaard 447d28
 	origin3-no.c origin4-many.c origin5-bz2.c origin6-fp.c \
Mark Wielaard 447d28
 	overlap.c partial_load.c partiallydefinedeq.c pdb-realloc.c \
Mark Wielaard 447d28
 	pdb-realloc2.c pipe.c pointer-trace.c post-syscall.c \
Mark Wielaard 447d28
-	realloc1.c realloc2.c realloc3.c sbfragment.c sh-mem.c \
Mark Wielaard 447d28
-	sh-mem-random.c sigaltstack.c sigkill.c signal2.c \
Mark Wielaard 447d28
+	realloc1.c realloc2.c realloc3.c sbfragment.c sendmsg.c \
Mark Wielaard 447d28
+	sh-mem.c sh-mem-random.c sigaltstack.c sigkill.c signal2.c \
Mark Wielaard 447d28
 	sigprocmask.c static_malloc.c stpncpy.c str_tester.c strchr.c \
Mark Wielaard 447d28
 	$(supp1_SOURCES) $(supp2_SOURCES) $(supp_unknown_SOURCES) \
Mark Wielaard 447d28
 	suppfree.c test-plo.c trivialleak.c unit_libcbase.c \
Mark Wielaard 447d28
@@ -1112,6 +1115,7 @@
Mark Wielaard 447d28
 	realloc2.stderr.exp realloc2.vgtest \
Mark Wielaard 447d28
 	realloc3.stderr.exp realloc3.vgtest \
Mark Wielaard 447d28
 	sbfragment.stdout.exp sbfragment.stderr.exp sbfragment.vgtest \
Mark Wielaard 447d28
+	sendmsg.stderr.exp sendmsg.vgtest \
Mark Wielaard 447d28
 	sh-mem.stderr.exp sh-mem.vgtest \
Mark Wielaard 447d28
 	sh-mem-random.stderr.exp sh-mem-random.stdout.exp64 \
Mark Wielaard 447d28
 	sh-mem-random.stdout.exp sh-mem-random.vgtest \
Mark Wielaard 447d28
@@ -1560,6 +1564,9 @@
Mark Wielaard 447d28
 sbfragment$(EXEEXT): $(sbfragment_OBJECTS) $(sbfragment_DEPENDENCIES) 
Mark Wielaard 447d28
 	@rm -f sbfragment$(EXEEXT)
Mark Wielaard 447d28
 	$(LINK) $(sbfragment_OBJECTS) $(sbfragment_LDADD) $(LIBS)
Mark Wielaard 447d28
+sendmsg$(EXEEXT): $(sendmsg_OBJECTS) $(sendmsg_DEPENDENCIES) 
Mark Wielaard 447d28
+	@rm -f sendmsg$(EXEEXT)
Mark Wielaard 447d28
+	$(LINK) $(sendmsg_OBJECTS) $(sendmsg_LDADD) $(LIBS)
Mark Wielaard 447d28
 sh-mem$(EXEEXT): $(sh_mem_OBJECTS) $(sh_mem_DEPENDENCIES) 
Mark Wielaard 447d28
 	@rm -f sh-mem$(EXEEXT)
Mark Wielaard 447d28
 	$(LINK) $(sh_mem_OBJECTS) $(sh_mem_LDADD) $(LIBS)
Mark Wielaard 447d28
@@ -1775,6 +1782,7 @@
Mark Wielaard 447d28
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/realloc2.Po@am__quote@
Mark Wielaard 447d28
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/realloc3.Po@am__quote@
Mark Wielaard 447d28
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sbfragment.Po@am__quote@
Mark Wielaard 447d28
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sendmsg.Po@am__quote@
Mark Wielaard 447d28
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sh-mem-random.Po@am__quote@
Mark Wielaard 447d28
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sh-mem.Po@am__quote@
Mark Wielaard 447d28
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sigaltstack.Po@am__quote@
Mark Wielaard cb8636
--- a/coregrind/m_syswrap/syswrap-generic.c.orig	2013-02-28 15:14:08.035441439 +0100
Mark Wielaard cb8636
+++ b/coregrind/m_syswrap/syswrap-generic.c	2013-02-28 15:18:13.035249059 +0100
Mark Wielaard cb8636
@@ -848,7 +848,8 @@
Mark Wielaard cb8636
         Char *name,
Mark Wielaard cb8636
         struct vki_msghdr *msg,
Mark Wielaard cb8636
         UInt length,
Mark Wielaard cb8636
-        void (*foreach_func)( ThreadId, Bool, Char *, Addr, SizeT ) 
Mark Wielaard cb8636
+        void (*foreach_func)( ThreadId, Bool, Char *, Addr, SizeT ),
Mark Wielaard cb8636
+	Bool recv
Mark Wielaard cb8636
      )
Mark Wielaard cb8636
 {
Mark Wielaard cb8636
    Char *fieldName;
Mark Wielaard cb8636
@@ -866,7 +867,11 @@
Mark Wielaard cb8636
    foreach_func ( tid, True, fieldName, (Addr)&msg->msg_iovlen, sizeof( msg->msg_iovlen ) );
Mark Wielaard cb8636
    foreach_func ( tid, True, fieldName, (Addr)&msg->msg_control, sizeof( msg->msg_control ) );
Mark Wielaard cb8636
    foreach_func ( tid, True, fieldName, (Addr)&msg->msg_controllen, sizeof( msg->msg_controllen ) );
Mark Wielaard cb8636
-   foreach_func ( tid, False, fieldName, (Addr)&msg->msg_flags, sizeof( msg->msg_flags ) );
Mark Wielaard cb8636
+
Mark Wielaard cb8636
+   /* msg_flags is completely ignored for send_mesg, recv_mesg doesn't read
Mark Wielaard cb8636
+      the field, but does write to it. */
Mark Wielaard cb8636
+   if ( recv )
Mark Wielaard cb8636
+      foreach_func ( tid, False, fieldName, (Addr)&msg->msg_flags, sizeof( msg->msg_flags ) );
Mark Wielaard cb8636
 
Mark Wielaard cb8636
    if ( msg->msg_name ) {
Mark Wielaard cb8636
       VG_(sprintf) ( fieldName, "(%s.msg_name)", name );
Mark Wielaard cb8636
@@ -1509,7 +1514,7 @@
Mark Wielaard cb8636
 void 
Mark Wielaard cb8636
 ML_(generic_PRE_sys_sendmsg) ( ThreadId tid, Char *name, struct vki_msghdr *msg )
Mark Wielaard cb8636
 {
Mark Wielaard cb8636
-   msghdr_foreachfield ( tid, name, msg, ~0, pre_mem_read_sendmsg );
Mark Wielaard cb8636
+   msghdr_foreachfield ( tid, name, msg, ~0, pre_mem_read_sendmsg, False );
Mark Wielaard cb8636
 }
Mark Wielaard cb8636
 
Mark Wielaard cb8636
 /* ------ */
Mark Wielaard cb8636
@@ -1517,13 +1522,13 @@
Mark Wielaard cb8636
 void
Mark Wielaard cb8636
 ML_(generic_PRE_sys_recvmsg) ( ThreadId tid, Char *name, struct vki_msghdr *msg )
Mark Wielaard cb8636
 {
Mark Wielaard cb8636
-   msghdr_foreachfield ( tid, name, msg, ~0, pre_mem_write_recvmsg );
Mark Wielaard cb8636
+   msghdr_foreachfield ( tid, name, msg, ~0, pre_mem_write_recvmsg, True );
Mark Wielaard cb8636
 }
Mark Wielaard cb8636
 
Mark Wielaard cb8636
 void 
Mark Wielaard cb8636
 ML_(generic_POST_sys_recvmsg) ( ThreadId tid, Char *name, struct vki_msghdr *msg, UInt length )
Mark Wielaard cb8636
 {
Mark Wielaard cb8636
-   msghdr_foreachfield( tid, name, msg, length, post_mem_write_recvmsg );
Mark Wielaard cb8636
+   msghdr_foreachfield( tid, name, msg, length, post_mem_write_recvmsg, True );
Mark Wielaard cb8636
    check_cmsg_for_fds( tid, msg );
Mark Wielaard cb8636
 }
Mark Wielaard cb8636
 
Mark Wielaard cb8636
--- a/memcheck/tests/Makefile.am.orig	2013-02-28 15:14:08.220442048 +0100
Mark Wielaard cb8636
+++ b/memcheck/tests/Makefile.am	2013-02-28 15:20:17.575659460 +0100
Mark Wielaard cb8636
@@ -179,6 +179,7 @@
Mark Wielaard cb8636
 	realloc2.stderr.exp realloc2.vgtest \
Mark Wielaard cb8636
 	realloc3.stderr.exp realloc3.vgtest \
Mark Wielaard cb8636
 	sbfragment.stdout.exp sbfragment.stderr.exp sbfragment.vgtest \
Mark Wielaard cb8636
+	sendmsg.stderr.exp sendmsg.vgtest \
Mark Wielaard cb8636
 	sh-mem.stderr.exp sh-mem.vgtest \
Mark Wielaard cb8636
 	sh-mem-random.stderr.exp sh-mem-random.stdout.exp64 \
Mark Wielaard cb8636
 	sh-mem-random.stdout.exp sh-mem-random.vgtest \
Mark Wielaard cb8636
@@ -282,6 +283,7 @@
Mark Wielaard cb8636
 	post-syscall \
Mark Wielaard cb8636
 	realloc1 realloc2 realloc3 \
Mark Wielaard cb8636
 	sbfragment \
Mark Wielaard cb8636
+	sendmsg \
Mark Wielaard cb8636
 	sh-mem sh-mem-random \
Mark Wielaard cb8636
 	sigaltstack signal2 sigprocmask static_malloc sigkill \
Mark Wielaard cb8636
 	stpncpy \