From 098514179bf63599ca6bdbdf6975eba5056e9b49 Mon Sep 17 00:00:00 2001 From: Joel Brobecker Date: Fri, 6 Oct 2006 17:46:56 +0000 Subject: [PATCH] * gdb.ada/watch_arg/watch.adb: New file. * gdb.ada/watch_arg.exp: New testcase. --- gdb/testsuite/ChangeLog | 5 ++ gdb/testsuite/gdb.ada/watch_arg.exp | 61 +++++++++++++++++++++++ gdb/testsuite/gdb.ada/watch_arg/watch.adb | 31 ++++++++++++ 3 files changed, 97 insertions(+) create mode 100644 gdb/testsuite/gdb.ada/watch_arg.exp create mode 100644 gdb/testsuite/gdb.ada/watch_arg/watch.adb diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog index 1c2d6f3f64d..38f67bacc64 100644 --- a/gdb/testsuite/ChangeLog +++ b/gdb/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2006-10-06 Joel Brobecker + + * gdb.ada/watch_arg/watch.adb: New file. + * gdb.ada/watch_arg.exp: New testcase. + 2006-10-02 Vladimir Prus * gdb.mi/mi-basics.exp (test_path_specification): Pass orig_path diff --git a/gdb/testsuite/gdb.ada/watch_arg.exp b/gdb/testsuite/gdb.ada/watch_arg.exp new file mode 100644 index 00000000000..81b9b9ae305 --- /dev/null +++ b/gdb/testsuite/gdb.ada/watch_arg.exp @@ -0,0 +1,61 @@ +# Copyright 2006 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 2 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, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, +# MA 02110-1301, USA + +if $tracelevel then { + strace $tracelevel +} + +load_lib "ada.exp" + +set testdir "watch_arg" +set testfile "${testdir}/watch" +set srcfile ${srcdir}/${subdir}/${testfile}.adb +set binfile ${objdir}/${subdir}/${testfile} + +file mkdir ${objdir}/${subdir}/${testdir} +if {[gdb_compile_ada "${srcfile}" "${binfile}" executable [list debug ]] != "" } { + return -1 +} + +gdb_exit +gdb_start +gdb_reinitialize_dir $srcdir/$subdir +gdb_load ${binfile} + +set bp_location [gdb_get_line_number "BREAK1" ${testdir}/watch.adb] +runto "watch.adb:$bp_location" + +# Insert a watchpoint on argument X + +gdb_test "watch x" \ + ".*atchpoint \[0-9\]+: x" \ + "Set watchpoint on function argument X" + +# Then insert a breakpoint at the location we'd like to continue to... +set bp_location [gdb_get_line_number "BREAK2" ${testdir}/watch.adb] +gdb_test "break watch.adb:$bp_location" \ + "Breakpoint \[0-9\]+ at.*: file .*watch.adb, line \[0-9\]+." \ + "insert second breakpoint in watch.adb" + +# Then continue to that breakpoint, and verify that the watchpoint +# did not interfere with that. + +gdb_test "cont" \ + "Breakpoint \[0-9\]+, watch \\(\\).*" \ + "Continuing to second breakpoint" + + diff --git a/gdb/testsuite/gdb.ada/watch_arg/watch.adb b/gdb/testsuite/gdb.ada/watch_arg/watch.adb new file mode 100644 index 00000000000..e3cc4f6eebc --- /dev/null +++ b/gdb/testsuite/gdb.ada/watch_arg/watch.adb @@ -0,0 +1,31 @@ +-- Copyright 2006 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 2 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, write to the Free Software +-- Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, +-- MA 02110-1301, USA + +procedure Watch is + + procedure Foo (X : access Integer) is + begin + X.all := 3; -- BREAK1 + end Foo; + + X : aliased Integer := 1; + +begin + Foo (X'Access); + X := 2; -- BREAK2 +end Watch; + -- 2.30.2