gdb/
authorJan Kratochvil <jan.kratochvil@redhat.com>
Tue, 2 Nov 2010 01:37:32 +0000 (01:37 +0000)
committerJan Kratochvil <jan.kratochvil@redhat.com>
Tue, 2 Nov 2010 01:37:32 +0000 (01:37 +0000)
Revert:
2010-10-17  Jan Kratochvil  <jan.kratochvil@redhat.com>
    Pedro Alves  <pedro@codesourcery.com>
* 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/
Revert:
2010-10-17  Jan Kratochvil  <jan.kratochvil@redhat.com>
* gdb.threads/sigstep-threads.exp: New file.
* gdb.threads/sigstep-threads.c: New file.

gdb/ChangeLog
gdb/gdbthread.h
gdb/infrun.c
gdb/linux-nat.c
gdb/remote.c
gdb/testsuite/ChangeLog
gdb/testsuite/gdb.threads/sigstep-threads.c [deleted file]
gdb/testsuite/gdb.threads/sigstep-threads.exp [deleted file]

index b2c9650c5a844673ecfedac3a9460f770600abf5..eb5d6d694c453087974bf4e2a636089e5fae4aa6 100644 (file)
@@ -1,3 +1,20 @@
+2010-11-02  Jan Kratochvil  <jan.kratochvil@redhat.com>
+
+       Revert:
+       2010-10-17  Jan Kratochvil  <jan.kratochvil@redhat.com>
+                   Pedro Alves  <pedro@codesourcery.com>
+       * 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.
+
 2010-11-01  Hui Zhu  <teawater@gmail.com>
 
        * tracepoint.c (tfile_xfer_partial): Change lma to vma.
index e89e88d346abee90ca880747c233f430f9233236..cd24eaf2fb08e57aae782c55caa635b3cfb0e95b 100644 (file)
@@ -352,6 +352,4 @@ extern struct thread_info* inferior_thread (void);
 
 extern void update_thread_list (void);
 
-extern int currently_stepping (struct thread_info *tp);
-
 #endif /* GDBTHREAD_H */
index edd4a40db641768a7b2c1e2eb8353fcdee344ad2..240cd958fc45306ae1fe05c286acd1ffeec9aa7d 100644 (file)
@@ -74,6 +74,8 @@ static int follow_fork (void);
 static void set_schedlock_func (char *args, int from_tty,
                                struct cmd_list_element *c);
 
+static int currently_stepping (struct thread_info *tp);
+
 static int currently_stepping_or_nexting_callback (struct thread_info *tp,
                                                   void *data);
 
@@ -4849,7 +4851,7 @@ infrun: not switching back to stepped thread, it has vanished\n");
 
 /* Is thread TP in the middle of single-stepping?  */
 
-int
+static int
 currently_stepping (struct thread_info *tp)
 {
   return ((tp->step_range_end && tp->step_resume_breakpoint == NULL)
index f8de481a694d4cb4b285565d33ed97c5ed225e7d..0e18034994b07c45d3d3808faab4623168860b50 100644 (file)
@@ -1820,26 +1820,20 @@ resume_callback (struct lwp_info *lp, void *data)
     }
   else if (lp->stopped && lp->status == 0)
     {
-      struct thread_info *tp = find_thread_ptid (lp->ptid);
-      /* lp->step may already contain a stale value.  */
-      int step = tp ? currently_stepping (tp) : 0;
-
       if (debug_linux_nat)
        fprintf_unfiltered (gdb_stdlog,
-                           "RC:  %s %s, 0, 0 (resuming sibling)\n",
-                           step ? "PTRACE_SINGLESTEP" : "PTRACE_CONT",
+                           "RC:  PTRACE_CONT %s, 0, 0 (resuming sibling)\n",
                            target_pid_to_str (lp->ptid));
 
       linux_ops->to_resume (linux_ops,
                            pid_to_ptid (GET_LWP (lp->ptid)),
-                           step, TARGET_SIGNAL_0);
+                           0, TARGET_SIGNAL_0);
       if (debug_linux_nat)
        fprintf_unfiltered (gdb_stdlog,
-                           "RC:  %s %s, 0, 0 (resume sibling)\n",
-                           step ? "PTRACE_SINGLESTEP" : "PTRACE_CONT",
+                           "RC:  PTRACE_CONT %s, 0, 0 (resume sibling)\n",
                            target_pid_to_str (lp->ptid));
       lp->stopped = 0;
-      lp->step = step;
+      lp->step = 0;
       memset (&lp->siginfo, 0, sizeof (lp->siginfo));
       lp->stopped_by_watchpoint = 0;
     }
index 68e5678bf79a9724097a5433151bc49669897b97..a4860bc21e1151455b30d48046f8697da3f6dfba 100644 (file)
@@ -4416,12 +4416,6 @@ append_resumption (char *p, char *endp,
   return p;
 }
 
-static int
-currently_stepping_callback (struct thread_info *tp, void *data)
-{
-  return currently_stepping (tp);
-}
-
 /* Resume the remote inferior by using a "vCont" packet.  The thread
    to be resumed is PTID; STEP and SIGGNAL indicate whether the
    resumed thread should be single-stepped and/or signalled.  If PTID
@@ -4464,8 +4458,6 @@ remote_vcont_resume (ptid_t ptid, int step, enum target_signal siggnal)
     }
   else if (ptid_equal (ptid, minus_one_ptid) || ptid_is_pid (ptid))
     {
-      struct thread_info *tp;
-
       /* Resume all threads (of all processes, or of a single
         process), with preference for INFERIOR_PTID.  This assumes
         inferior_ptid belongs to the set of all threads we are about
@@ -4476,12 +4468,6 @@ remote_vcont_resume (ptid_t ptid, int step, enum target_signal siggnal)
          p = append_resumption (p, endp, inferior_ptid, step, siggnal);
        }
 
-      tp = iterate_over_threads (currently_stepping_callback, NULL);
-      if (tp && !ptid_equal (tp->ptid, inferior_ptid))
-       {
-         p = append_resumption (p, endp, tp->ptid, 1, TARGET_SIGNAL_0);
-       }
-
       /* And continue others without a signal.  */
       p = append_resumption (p, endp, ptid, /*step=*/ 0, TARGET_SIGNAL_0);
     }
index 8c07761c11ba9d7393a26cd83f94c758ae9cf37a..c70d9142b83d14fc97fe40c7d1b74f528fa380aa 100644 (file)
@@ -1,3 +1,10 @@
+2010-11-02  Jan Kratochvil  <jan.kratochvil@redhat.com>
+
+       Revert:
+       2010-10-17  Jan Kratochvil  <jan.kratochvil@redhat.com>
+       * gdb.threads/sigstep-threads.exp: New file.
+       * gdb.threads/sigstep-threads.c: New file.
+
 2010-10-20  Michael Snyder  <msnyder@vmware.com>
 
        * gdb.threads/fork-child-threads.exp: Don't run on remote target.
diff --git a/gdb/testsuite/gdb.threads/sigstep-threads.c b/gdb/testsuite/gdb.threads/sigstep-threads.c
deleted file mode 100644 (file)
index 7e04c32..0000000
+++ /dev/null
@@ -1,54 +0,0 @@
-/* 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;
-}
diff --git a/gdb/testsuite/gdb.threads/sigstep-threads.exp b/gdb/testsuite/gdb.threads/sigstep-threads.exp
deleted file mode 100644 (file)
index 5110706..0000000
+++ /dev/null
@@ -1,74 +0,0 @@
-# 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/>.
-
-set testfile sigstep-threads
-set srcfile ${testfile}.c
-set executable ${testfile}
-set binfile ${objdir}/${subdir}/${executable}
-
-if { [gdb_compile_pthreads "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {debug}] != "" } {
-    untested ${testfile}.exp
-    return -1
-}
-
-clean_restart $executable
-
-if ![runto_main] {
-    return -1;
-}
-
-# `noprint' would not test the full logic of GDB.
-gdb_test "handle SIGUSR1 nostop print pass" "\r\nSIGUSR1\[ \t\]+No\[ \t\]+Yes\[ \t\]+Yes\[ \t\].*"
-
-gdb_test_no_output "set scheduler-locking off"
-
-gdb_breakpoint [gdb_get_line_number "step-1"]
-gdb_test_no_output {set $step1=$bpnum}
-gdb_continue_to_breakpoint "step-1" ".* step-1 .*"
-gdb_test_no_output {disable $step1}
-
-# 1 as we are now stopped at the `step-1' label.
-set step_at 1
-for {set i 0} {$i < 100} {incr i} {
-    set test "step $i"
-    # Presume this step failed - as in the case of a timeout.
-    set failed 1
-    gdb_test_multiple "step" $test {
-       -re "\r\nProgram received signal SIGUSR1, User defined signal 1.\r\n" {
-           exp_continue -continue_timer
-       }
-       -re "step-(\[012\]).*\r\n$gdb_prompt $" {
-           set now $expect_out(1,string)
-           if {$step_at == 2 && $now == 1} {
-               set failed 0
-           } elseif {$step_at == 1 && $now == 2} {
-               set failed 0
-               # Continue over the re-signalling back to the handle entry.
-               gdb_test_no_output {enable $step1} ""
-               gdb_test "continue" " step-1 .*" ""
-               set now 1
-               gdb_test_no_output {disable $step1} ""
-           } else  {
-               fail $test
-           }
-           set step_at $now
-       }
-    }
-    if $failed {
-       return
-    }
-}
-# We can never reliably say the racy problematic case has been tested.
-pass "step"