diff options
author | Jan Kratochvil <jan.kratochvil@redhat.com> | 2010-10-17 18:24:47 +0000 |
---|---|---|
committer | Jan Kratochvil <jan.kratochvil@redhat.com> | 2010-10-17 18:24:47 +0000 |
commit | 8aeb23f3648c6ef10c5715e30f04563d1cc28709 (patch) | |
tree | 09ebcca5a6758a48adbce553314e6b2fc71befe3 /gdb/testsuite/gdb.threads/sigstep-threads.c | |
parent | c1e56572463d2126e46eda8ce8d4bce221667f98 (diff) | |
download | binutils-8aeb23f3648c6ef10c5715e30f04563d1cc28709.zip binutils-8aeb23f3648c6ef10c5715e30f04563d1cc28709.tar.gz binutils-8aeb23f3648c6ef10c5715e30f04563d1cc28709.tar.bz2 |
gdb/
* gdbthread.h (currently_stepping): New declaration.
* infrun.c (currently_stepping): Remove the forward declaration.
(currently_stepping): Make it global.
* linux-nat.c (resume_callback) <lp->stopped && lp->status == 0>: New
variables tp and step, initialized them. Pass STEP to to_resume.
Print also possibly "PTRACE_SINGLESTEP" if STEP. Initialize LP->STEP.
* remote.c (currently_stepping_callback): New.
(remote_vcont_resume)
<ptid_equal (ptid, minus_one_ptid) || ptid_is_pid (ptid)>:
New variable tp. Call currently_stepping_callback and step such
thread.
gdb/testsuite/
* gdb.threads/sigstep-threads.exp: New file.
* gdb.threads/sigstep-threads.c: New file.
Diffstat (limited to 'gdb/testsuite/gdb.threads/sigstep-threads.c')
-rw-r--r-- | gdb/testsuite/gdb.threads/sigstep-threads.c | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/gdb/testsuite/gdb.threads/sigstep-threads.c b/gdb/testsuite/gdb.threads/sigstep-threads.c new file mode 100644 index 0000000..7e04c32 --- /dev/null +++ b/gdb/testsuite/gdb.threads/sigstep-threads.c @@ -0,0 +1,54 @@ +/* This testcase is part of GDB, the GNU debugger. + + Copyright 2010 Free Software Foundation, Inc. + + 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 3 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, see <http://www.gnu.org/licenses/>. */ + +#include <pthread.h> +#include <assert.h> +#include <signal.h> + +#include <asm/unistd.h> +#include <unistd.h> +#define tgkill(tgid, tid, sig) syscall (__NR_tgkill, (tgid), (tid), (sig)) +#define gettid() syscall (__NR_gettid) + +static volatile int var; + +static void +handler (int signo) /* step-0 */ +{ /* step-0 */ + var++; /* step-1 */ + tgkill (getpid (), gettid (), SIGUSR1); /* step-2 */ +} + +static void * +start (void *arg) +{ + signal (SIGUSR1, handler); + tgkill (getpid (), gettid (), SIGUSR1); + assert (0); + + return NULL; +} + +int +main (void) +{ + pthread_t thread; + + pthread_create (&thread, NULL, start, NULL); + start (NULL); /* main-start */ + return 0; +} |