[gdb/symtab] Fix gdb.base/fission-macro.exp with unix/-m32
[binutils-gdb.git] / gdb / testsuite / gdb.threads / infcall-from-bp-cond-simple.c
blob2e23f1229c599f9c4f3faabb346996130ee9103a
1 /* Copyright 2022-2024 Free Software Foundation, Inc.
3 This file is part of GDB.
5 This program is free software; you can redistribute it and/or modify
6 it under the terms of the GNU General Public License as published by
7 the Free Software Foundation; either version 3 of the License, or
8 (at your option) any later version.
10 This program is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 GNU General Public License for more details.
15 You should have received a copy of the GNU General Public License
16 along with this program. If not, see <http://www.gnu.org/licenses/>. */
18 #include <pthread.h>
19 #include <unistd.h>
21 #define NUM_THREADS 3
23 int
24 is_matching_tid (int *tid_ptr, int tid_value)
26 return *tid_ptr == tid_value;
29 int
30 return_true ()
32 return 1;
35 int
36 return_false ()
38 return 0;
41 int
42 function_that_segfaults ()
44 int *p = 0;
45 *p = 1; /* Segfault happens here. */
48 int
49 function_with_breakpoint ()
51 return 1; /* Nested breakpoint. */
54 void *
55 worker_func (void *arg)
57 int a = 42; /* Breakpoint here. */
60 void
61 stop_marker ()
63 int b = 99; /* Stop marker. */
66 int
67 main ()
69 pthread_t threads[NUM_THREADS];
70 int args[NUM_THREADS];
72 alarm (300);
74 for (int i = 0; i < NUM_THREADS; i++)
76 args[i] = i;
77 pthread_create (&threads[i], NULL, worker_func, &args[i]);
80 for (int i = 0; i < NUM_THREADS; i++)
82 void *retval;
83 pthread_join (threads[i], &retval);
86 stop_marker ();
88 return 0;