]> git.ipfire.org Git - thirdparty/valgrind.git/commitdiff
Add test for correct errno handling in threaded programs.
authorJulian Seward <jseward@acm.org>
Sun, 13 Jul 2003 11:13:37 +0000 (11:13 +0000)
committerJulian Seward <jseward@acm.org>
Sun, 13 Jul 2003 11:13:37 +0000 (11:13 +0000)
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@1755

memcheck/tests/Makefile.am
memcheck/tests/threadederrno.c [new file with mode: 0644]
memcheck/tests/threadederrno.stderr.exp [new file with mode: 0644]
memcheck/tests/threadederrno.stdout.exp [new file with mode: 0644]
memcheck/tests/threadederrno.vgtest [new file with mode: 0644]

index 1faab0756cec724173ba7bf196f9885b82b818ad..e44951f5bcde21a433da9015421fd9b301f5af25 100644 (file)
@@ -54,7 +54,8 @@ EXTRA_DIST = $(noinst_SCRIPTS) \
        trivialleak.stderr.exp trivialleak.vgtest \
        tronical.stderr.exp tronical.vgtest \
        weirdioctl.stderr.exp weirdioctl.stdout.exp weirdioctl.vgtest \
-       metadata.stderr.exp metadata.stdout.exp metadata.vgtest
+       metadata.stderr.exp metadata.stdout.exp metadata.vgtest \
+       threadederrno.stderr.exp threadederrno.stdout.exp threadederrno.vgtest
 
 check_PROGRAMS = \
        badaddrvalue badfree badjump badloop buflen_check clientperm \
@@ -65,7 +66,7 @@ check_PROGRAMS = \
        overlap pushfpopf \
        realloc1 realloc2 sigaltstack signal2 supp1 supp2 suppfree \
        trivialleak tronical weirdioctl \
-       mismatches new_override metadata
+       mismatches new_override metadata threadederrno
 
 AM_CPPFLAGS = -I$(top_srcdir)/include
 AM_CFLAGS   = $(WERROR) -Winline -Wall -Wshadow -g 
@@ -111,6 +112,8 @@ trivialleak_SOURCES         = trivialleak.c
 tronical_SOURCES       = tronical.S
 weirdioctl_SOURCES     = weirdioctl.c
 metadata_SOURCES       = metadata.c
+threadederrno_SOURCES  = threadederrno.c
+threadederrno_LDADD    = -lpthread
 
 # C++ ones
 mismatches_SOURCES     = mismatches.cpp
diff --git a/memcheck/tests/threadederrno.c b/memcheck/tests/threadederrno.c
new file mode 100644 (file)
index 0000000..bc05be5
--- /dev/null
@@ -0,0 +1,38 @@
+
+#include <pthread.h>
+#include <stdio.h>
+#include <errno.h>
+
+
+
+void* thr2 ( void* v )
+{
+  FILE* f = fopen("bogus2", "r");
+  printf("f2 = %p, errno2 = %d\n", f, errno);
+  perror("wurble2");
+  return NULL;
+}
+
+void* thr3 ( void* v )
+{
+  FILE* f = fopen("bogus3", "r");
+  printf("f3 = %p, errno3 = %d\n", f, errno);
+  perror("wurble3");
+  return NULL;
+}
+
+
+int main ( void )
+{
+  FILE* f;
+  pthread_t tid2, tid3;
+  pthread_create(&tid2, NULL, &thr2, NULL);
+  pthread_create(&tid3, NULL, &thr3, NULL);
+  f = fopen("bogus", "r");
+  printf("f1 = %p, errno1 = %d\n", f, errno);
+  perror("wurble1");
+  pthread_join(tid2, NULL);
+  pthread_join(tid3, NULL);
+  return 0;
+}
+
diff --git a/memcheck/tests/threadederrno.stderr.exp b/memcheck/tests/threadederrno.stderr.exp
new file mode 100644 (file)
index 0000000..99cd1a3
--- /dev/null
@@ -0,0 +1,3 @@
+wurble1: No such file or directory
+wurble2: No such file or directory
+wurble3: No such file or directory
diff --git a/memcheck/tests/threadederrno.stdout.exp b/memcheck/tests/threadederrno.stdout.exp
new file mode 100644 (file)
index 0000000..a05dec2
--- /dev/null
@@ -0,0 +1,3 @@
+f1 = (nil), errno1 = 2
+f2 = (nil), errno2 = 2
+f3 = (nil), errno3 = 2
diff --git a/memcheck/tests/threadederrno.vgtest b/memcheck/tests/threadederrno.vgtest
new file mode 100644 (file)
index 0000000..a9fa6be
--- /dev/null
@@ -0,0 +1,2 @@
+prog: threadederrno
+vgopts: -q