From fc9b693caa73cacf0db23d3bea3812389ea862bd Mon Sep 17 00:00:00 2001 From: Jan Kratochvil Date: Wed, 26 Nov 2008 05:25:56 +0000 Subject: [PATCH] * gdb.base/breakpoint-shadow.exp, gdb.base/breakpoint-shadow.c: New. * gdb.base/start.exp: New comment about an alternative - `runto_main'. --- gdb/testsuite/ChangeLog | 5 +++ gdb/testsuite/gdb.base/breakpoint-shadow.c | 27 ++++++++++++ gdb/testsuite/gdb.base/breakpoint-shadow.exp | 63 ++++++++++++++++++++++++++++ gdb/testsuite/gdb.base/start.exp | 4 +- 4 files changed, 98 insertions(+), 1 deletion(-) create mode 100644 gdb/testsuite/gdb.base/breakpoint-shadow.c create mode 100644 gdb/testsuite/gdb.base/breakpoint-shadow.exp diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog index cc95257..85e6a3b 100644 --- a/gdb/testsuite/ChangeLog +++ b/gdb/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2008-11-25 Jan Kratochvil + + * gdb.base/breakpoint-shadow.exp, gdb.base/breakpoint-shadow.c: New. + * gdb.base/start.exp: New comment about an alternative - `runto_main'. + 2008-11-20 Andreas Schwab * gdb.base/foll-fork.exp (catch_fork_child_follow): Fix patterns diff --git a/gdb/testsuite/gdb.base/breakpoint-shadow.c b/gdb/testsuite/gdb.base/breakpoint-shadow.c new file mode 100644 index 0000000..81ffc76 --- /dev/null +++ b/gdb/testsuite/gdb.base/breakpoint-shadow.c @@ -0,0 +1,27 @@ +/* This testcase is part of GDB, the GNU debugger. + + Copyright 2008 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 . */ + +int +main (void) +{ + volatile int i; + + i = 1; /* break-first */ + i = 2; /* break-second */ + + return 0; +} diff --git a/gdb/testsuite/gdb.base/breakpoint-shadow.exp b/gdb/testsuite/gdb.base/breakpoint-shadow.exp new file mode 100644 index 0000000..d19d2d2 --- /dev/null +++ b/gdb/testsuite/gdb.base/breakpoint-shadow.exp @@ -0,0 +1,63 @@ +# Copyright 2008 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 . + +set testfile breakpoint-shadow +set srcfile ${testfile}.c +set binfile ${objdir}/${subdir}/${testfile} +if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {debug}] != "" } { + untested "Couldn't compile test program" + return -1 +} + +gdb_exit +gdb_start +gdb_reinitialize_dir $srcdir/$subdir +gdb_load ${binfile} + +# We need to start the inferior to place the breakpoints in the memory at all. +if ![runto_main] { + untested start + return -1 +} + +# The default "auto" mode removes all the breakpoints when we stop (and not +# running the nonstop mode). We would not be able to test the shadow. +gdb_test "set breakpoint always-inserted on" +gdb_test "show breakpoint always-inserted" "Always inserted breakpoint mode is on." + +set match "\nDump of assembler code for function main:\r\n(.*)End of assembler dump.\r\n$gdb_prompt $" + +set test "disassembly without breakpoints" +gdb_test_multiple "disass main" $test { + -re $match { + set orig $expect_out(1,string) + pass $test + } +} + +gdb_test "b [gdb_get_line_number "break-first"]" "Breakpoint \[0-9\] at .*" "First breakpoint placed" +gdb_test "b [gdb_get_line_number "break-second"]" "Breakpoint \[0-9\] at .*" "Second breakpoint placed" + +set test "disassembly with breakpoints" +gdb_test_multiple "disass main" $test { + -re $match { + set got $expect_out(1,string) + if [string equal -nocase $orig $got] { + pass $test + } else { + fail $test + } + } +} diff --git a/gdb/testsuite/gdb.base/start.exp b/gdb/testsuite/gdb.base/start.exp index f4f9cd9..a6d5a60 100644 --- a/gdb/testsuite/gdb.base/start.exp +++ b/gdb/testsuite/gdb.base/start.exp @@ -35,6 +35,9 @@ gdb_start gdb_reinitialize_dir $srcdir/$subdir gdb_load ${binfile} +# This is a testcase specifically for the `start' GDB command. For regular +# stop-in-main goal in the testcases consider using `runto_main' instead. + # For C programs, "start" should stop in main(). if { [gdb_start_cmd] < 0 } { untested start @@ -44,4 +47,3 @@ if { [gdb_start_cmd] < 0 } { gdb_test "" \ "main \\(\\) at .*start.c.*" \ "start" - -- 2.7.4