gdb/testsuite/
authorYao Qi <yao@codesourcery.com>
Sun, 18 Sep 2011 02:36:27 +0000 (02:36 +0000)
committerYao Qi <yao@codesourcery.com>
Sun, 18 Sep 2011 02:36:27 +0000 (02:36 +0000)
* lib/gdb.exp (can_single_step_to_signal_handler): New.
* gdb.base/kill-after-signal.exp: Call it.  Skip if target doesn't
support single step to signal handler.

gdb/testsuite/ChangeLog
gdb/testsuite/gdb.base/kill-after-signal.exp
gdb/testsuite/lib/gdb.exp

index e48d7c2..132351a 100644 (file)
@@ -1,5 +1,11 @@
 2011-09-17  Yao Qi  <yao@codesourcery.com>
 
+       * lib/gdb.exp (can_single_step_to_signal_handler): New.
+       * gdb.base/kill-after-signal.exp: Call it.  Skip if target doesn't
+       support single step to signal handler.
+
+2011-09-17  Yao Qi  <yao@codesourcery.com>
+
        * gdb.base/disp-step-fork.c: New.
        * gdb.base/disp-step-syscall.exp: New.
        * gdb.base/disp-step-vfork.c: New.
index eecad2e..8bb0659 100644 (file)
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 set testfile "kill-after-signal"
+
+if { ![can_single_step_to_signal_handler] } {
+    untested ${testfile}.exp
+    return
+}
+
 if [prepare_for_testing ${testfile}.exp ${testfile}] {
     return -1
 }
index b22e322..1476c19 100644 (file)
@@ -1527,6 +1527,22 @@ proc support_complex_tests {} {
     return $support_complex_tests_saved
 }
 
+# Return 1 if target hardware or OS supports single stepping to signal
+# handler, otherwise, return 0.
+
+proc can_single_step_to_signal_handler {} {
+
+    # Targets don't have hardware single step.  On these targets, when
+    # a signal is delivered during software single step, gdb is unable
+    # to determine the next instruction addresses, because start of signal
+    # handler is one of them.
+    if { [istarget "arm*-*-*"] || [istarget "mips*-*-*"] } {
+       return 0
+    }
+
+    return 1
+}
+
 # Return 1 if target is ILP32.
 # This cannot be decided simply from looking at the target string,
 # as it might depend on externally passed compiler options like -m64.