aboutsummaryrefslogtreecommitdiff
path: root/gdb/testsuite/gdb.mi/pthreads.c
diff options
context:
space:
mode:
authorKeith Seitz <keiths@redhat.com>2002-09-24 19:36:06 +0000
committerKeith Seitz <keiths@redhat.com>2002-09-24 19:36:06 +0000
commitd1a2f204347cd6608e4c9e5962573232769e50ef (patch)
tree3c4c25a5a9f43cb7664901f6bc7a9d27caf4d2b0 /gdb/testsuite/gdb.mi/pthreads.c
parent94b66fa77de33288655d56ec5b0b1dc2f3f8e1bd (diff)
downloadgdb-d1a2f204347cd6608e4c9e5962573232769e50ef.zip
gdb-d1a2f204347cd6608e4c9e5962573232769e50ef.tar.gz
gdb-d1a2f204347cd6608e4c9e5962573232769e50ef.tar.bz2
* configure.in: Add config header.
Check for pthread.h. * configure: Regenerate. * config.in: New file. * pthreads.c: New file. * mi-pthreads.exp: New file to test thread functionality. * gdb669.exp: New file.
Diffstat (limited to 'gdb/testsuite/gdb.mi/pthreads.c')
-rw-r--r--gdb/testsuite/gdb.mi/pthreads.c80
1 files changed, 80 insertions, 0 deletions
diff --git a/gdb/testsuite/gdb.mi/pthreads.c b/gdb/testsuite/gdb.mi/pthreads.c
new file mode 100644
index 0000000..c3e17bc
--- /dev/null
+++ b/gdb/testsuite/gdb.mi/pthreads.c
@@ -0,0 +1,80 @@
+#include <stdio.h>
+
+#include "config.h"
+
+#ifndef HAVE_PTHREAD_H
+
+/* Don't even try to compile. In fact, cause a syntax error that we can
+ look for as a compiler error message and know that we have no pthread
+ support. In that case we can just suppress the test completely. */
+
+#error "no posix threads support"
+
+#else
+
+/* OK. We have the right header. If we try to compile this and fail, then
+ there is something wrong and the user should know about it so the testsuite
+ should issue an ERROR result.. */
+
+#ifdef __linux__
+#define _MIT_POSIX_THREADS 1 /* GNU/Linux (or at least RedHat 4.0)
+ needs this */
+#endif
+
+#include <pthread.h>
+
+/* Under OSF 2.0 & 3.0 and HPUX 10, the second arg of pthread_create
+ is prototyped to be just a "pthread_attr_t", while under Solaris it
+ is a "pthread_attr_t *". Arg! */
+
+#if defined (__osf__) || defined (__hpux__)
+#define PTHREAD_CREATE_ARG2(arg) arg
+#define PTHREAD_CREATE_NULL_ARG2 null_attr
+static pthread_attr_t null_attr;
+#else
+#define PTHREAD_CREATE_ARG2(arg) &arg
+#define PTHREAD_CREATE_NULL_ARG2 NULL
+#endif
+
+void *
+routine (void *arg)
+{
+ sleep (9);
+ printf ("hello thread\n");
+}
+
+/* Marker function for the testsuite */
+void
+done_making_threads (void)
+{
+ /* Nothing */
+};
+
+void
+create_thread (void)
+{
+ pthread_t tid;
+
+ if (pthread_create (&tid, PTHREAD_CREATE_NULL_ARG2, routine, (void *) 0xfeedface))
+ {
+ perror ("pthread_create 1");
+ exit (1);
+ }
+}
+
+int
+main (int argc, char *argv[])
+{
+ int i;
+
+ /* Create a few threads */
+ for (i = 0; i < 5; i++)
+ create_thread ();
+ done_making_threads ();
+
+ printf ("hello\n");
+ printf ("hello\n");
+ return 0;
+}
+
+#endif /* ifndef HAVE_PTHREAD_H */