diff options
author | Yao Qi <yao.qi@linaro.org> | 2016-04-25 09:53:51 +0100 |
---|---|---|
committer | Yao Qi <yao.qi@linaro.org> | 2016-04-25 09:53:51 +0100 |
commit | f3abeff575541dd80e1facd6d0f920e10f77fede (patch) | |
tree | c3ddc63db0c792b81623b9376fe52a8c4075725d /gdb | |
parent | 484b3c325d8182cd7b7da4ceeaedc238c7f80b5c (diff) | |
download | gdb-f3abeff575541dd80e1facd6d0f920e10f77fede.zip gdb-f3abeff575541dd80e1facd6d0f920e10f77fede.tar.gz gdb-f3abeff575541dd80e1facd6d0f920e10f77fede.tar.bz2 |
New test case gdb.base/branch-to-self.exp
gdb/testsuite:
2016-04-25 Yao Qi <yao.qi@linaro.org>
* gdb.base/branch-to-self.c: New file.
* gdb.base/branch-to-self.exp: New file.
Diffstat (limited to 'gdb')
-rw-r--r-- | gdb/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gdb/testsuite/gdb.base/branch-to-self.c | 40 | ||||
-rw-r--r-- | gdb/testsuite/gdb.base/branch-to-self.exp | 69 |
3 files changed, 114 insertions, 0 deletions
diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog index c7c9d58..c919c47 100644 --- a/gdb/testsuite/ChangeLog +++ b/gdb/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2016-04-25 Yao Qi <yao.qi@linaro.org> + + * gdb.base/branch-to-self.c: New file. + * gdb.base/branch-to-self.exp: New file. + 2016-04-22 Yao Qi <yao.qi@linaro.org> * gdb.trace/unavailable.exp (gdb_collect_globals_test_1): Match diff --git a/gdb/testsuite/gdb.base/branch-to-self.c b/gdb/testsuite/gdb.base/branch-to-self.c new file mode 100644 index 0000000..594214b --- /dev/null +++ b/gdb/testsuite/gdb.base/branch-to-self.c @@ -0,0 +1,40 @@ +/* This testcase is part of GDB, the GNU debugger. + + Copyright 2016 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 <unistd.h> +#include <stdlib.h> +#include <signal.h> + +volatile int counter = 0; + +static void +handler (int sig) +{ + counter = 5; +} + +int +main (void) +{ + signal (SIGALRM, handler); + alarm (5); + + /* Compiler may generate a single instruction which branches to + itself. */ + for (;;); /* loop-line */ + return 0; +} diff --git a/gdb/testsuite/gdb.base/branch-to-self.exp b/gdb/testsuite/gdb.base/branch-to-self.exp new file mode 100644 index 0000000..2fd3b38 --- /dev/null +++ b/gdb/testsuite/gdb.base/branch-to-self.exp @@ -0,0 +1,69 @@ +# This testcase is part of GDB, the GNU debugger. +# +# Copyright 2016 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/>. + +standard_testfile + +if { [build_executable ${testfile}.exp ${testfile} $srcfile {debug}] == -1 } { + return -1 +} + +with_test_prefix "single-step" { + global testfile + + clean_restart ${testfile} + if ![runto_main] { + return -1 + } + set line_num [gdb_get_line_number "loop-line" ${testfile}.c] + + gdb_test "break ${testfile}.c:${line_num}" "Breakpoint .*" \ + "set breakpoint" + gdb_continue_to_breakpoint "hit breakpoint" + gdb_test "si" ".*${testfile}.c:${line_num}.*" +} + +with_test_prefix "break-cond" { + global testfile + + foreach_with_prefix side {"host" "target"} { + + clean_restart ${testfile} + + if ![runto_main] { + return -1 + } + + set test "set breakpoint condition-evaluation $side" + gdb_test_multiple $test $test { + -re "warning: Target does not support breakpoint condition evaluation.\r\nUsing host evaluation mode instead.\r\n$gdb_prompt $" { + # Target doesn't support breakpoint condition + # evaluation on its side. Skip the test. + continue + } + -re "^$test\r\n$gdb_prompt $" { + } + } + + set line_num [gdb_get_line_number "loop-line" ${testfile}.c] + gdb_test "break ${testfile}.c:${line_num} if counter > 3" \ + "Breakpoint .*" "set breakpoint with condition" + + gdb_continue_to_breakpoint "continue to break" + + gdb_test "p counter" ".* = 5" + } +} |