* gdb.threads/bp_in_thread.c: New file, copied from
authorJoel Brobecker <brobecker@gnat.com>
Fri, 29 Oct 2004 21:35:20 +0000 (21:35 +0000)
committerJoel Brobecker <brobecker@gnat.com>
Fri, 29 Oct 2004 21:35:20 +0000 (21:35 +0000)
        pthread_cond_wait.c.
        * gdb.threads/bp_in_thread.c: Use bp_in_thread.c as the source
        file, rather than reusing the .c file from another testcase.

gdb/testsuite/ChangeLog
gdb/testsuite/gdb.threads/bp_in_thread.c [new file with mode: 0644]
gdb/testsuite/gdb.threads/bp_in_thread.exp

index db5e6aac5d2da1e847bfef16e800f22389022d86..56bce5599ea20cc7f8f2d0227668fa8111cc220c 100644 (file)
@@ -1,3 +1,10 @@
+2004-10-29  Joel Brobecker  <brobecker@gnat.com>
+
+       * gdb.threads/bp_in_thread.c: New file, copied from
+       pthread_cond_wait.c.
+       * gdb.threads/bp_in_thread.c: Use bp_in_thread.c as the source
+       file, rather than reusing the .c file from another testcase.
+
 2004-10-20  Joel Brobecker  <brobecker@gnat.com>
 
        * gdb.ada/null_record.exp: Check where we stopped after
diff --git a/gdb/testsuite/gdb.threads/bp_in_thread.c b/gdb/testsuite/gdb.threads/bp_in_thread.c
new file mode 100644 (file)
index 0000000..ae87f8c
--- /dev/null
@@ -0,0 +1,76 @@
+/* A small multi-threaded test case.
+
+   Copyright 2004
+   Free Software Foundation, Inc.
+
+   This file is part of GDB.
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 2 of the License, or
+   (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program; if not, write to the Free Software
+   Foundation, Inc., 59 Temple Place - Suite 330,
+   Boston, MA 02111-1307, USA.  */
+
+#include <pthread.h>
+#include <stdio.h>
+#include <time.h>
+
+void
+cond_wait (pthread_cond_t *cond, pthread_mutex_t *mut)
+{
+  pthread_mutex_lock(mut);
+  pthread_cond_wait (cond, mut);
+  pthread_mutex_unlock (mut);
+}
+
+void
+noreturn (void)
+{
+  pthread_mutex_t mut;
+  pthread_cond_t cond;
+
+  pthread_mutex_init (&mut, NULL);
+  pthread_cond_init (&cond, NULL);
+
+  /* Wait for a condition that will never be signaled, so we effectively
+     block the thread here.  */
+  cond_wait (&cond, &mut);
+}
+
+void *
+forever_pthread (void *unused)
+{
+  noreturn ();
+}
+
+void
+break_me (void)
+{
+  /* Just an anchor to help putting a breakpoint.  */
+}
+
+int
+main (void)
+{
+  pthread_t forever;
+  const struct timespec ts = { 0, 10000000 }; /* 0.01 sec */
+
+  pthread_create (&forever, NULL, forever_pthread, NULL);
+  for (;;)
+    {
+      nanosleep (&ts, NULL);
+      break_me();
+    }
+
+  return 0;
+}
+
index 91c328332dd4c0f3b6f087d062b40a0ea83b6b74..cd35d040fdf0a4af866f6183667c4b749c529e67 100644 (file)
@@ -23,7 +23,7 @@ if $tracelevel then {
        strace $tracelevel
 }
 
-set testfile "pthread_cond_wait"
+set testfile "bp_in_thread"
 set srcfile ${testfile}.c
 set binfile ${objdir}/${subdir}/${testfile}