diff options
Diffstat (limited to 'gdb/testsuite')
-rw-r--r-- | gdb/testsuite/ChangeLog | 4 | ||||
-rw-r--r-- | gdb/testsuite/gdb.ada/mi_ref_changeable.exp | 71 | ||||
-rw-r--r-- | gdb/testsuite/gdb.ada/mi_ref_changeable/foo_rb20_056.adb | 28 | ||||
-rw-r--r-- | gdb/testsuite/gdb.ada/mi_ref_changeable/pck.adb | 26 | ||||
-rw-r--r-- | gdb/testsuite/gdb.ada/mi_ref_changeable/pck.ads | 20 |
5 files changed, 149 insertions, 0 deletions
diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog index 1369b5a..d963997 100644 --- a/gdb/testsuite/ChangeLog +++ b/gdb/testsuite/ChangeLog @@ -1,3 +1,7 @@ +2019-02-10 Joel Brobecker <brobecker@adacore.com> + + * gdb.ada/mi_ref_changeable: New testcase. + 2019-02-07 Alan Hayward <alan.hayward@arm.com> * gdb.base/attach.exp: Add double attach test. diff --git a/gdb/testsuite/gdb.ada/mi_ref_changeable.exp b/gdb/testsuite/gdb.ada/mi_ref_changeable.exp new file mode 100644 index 0000000..933ad3e --- /dev/null +++ b/gdb/testsuite/gdb.ada/mi_ref_changeable.exp @@ -0,0 +1,71 @@ +# Copyright 2018 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/>. + +load_lib "ada.exp" + +standard_ada_testfile foo_rb20_056 + +if {[gdb_compile_ada "${srcfile}" "${binfile}" executable [list debug]] != "" } { + return -1 +} + +load_lib mi-support.exp +set MIFLAGS "-i=mi" + +gdb_exit +if [mi_gdb_start] { + continue +} + +mi_delete_breakpoints +mi_gdb_reinitialize_dir $srcdir/$subdir +mi_gdb_load ${binfile} + +if ![mi_run_to_main] then { + fail "cannot run to main, testcase aborted" + return 0 +} + +# Continue until STOP_1, and create a varobj for variables "A" and "B". + +set bp_location [gdb_get_line_number "STOP_1" ${testdir}/foo_rb20_056.adb] +mi_continue_to_line \ + "foo_rb20_056.adb:$bp_location" \ + "stop at STOP_1" + +mi_gdb_test "-var-create a * a" \ + "\\^done,name=\"a\",numchild=\"19\",.*" \ + "create varobj for a" + +mi_gdb_test "-var-create b * b" \ + "\\^done,name=\"b\",numchild=\"19\",.*" \ + "create varobj for b" + +# Continue until STOP_2, and request an update of varobjs a and b. +# One should reported as changed (b), and the other should report +# no change. + +set bp_location [gdb_get_line_number "STOP_2" ${testdir}/foo_rb20_056.adb] +mi_continue_to_line \ + "foo_rb20_056.adb:$bp_location" \ + "stop at STOP_2" + +mi_gdb_test "-var-update a" \ + "\\^done,changelist=\\\[\\\]" \ + "-var-update a at STOP_2" + +mi_gdb_test "-var-update b" \ + "\\^done,changelist=\\\[{name=\"b\".*}\\\]" \ + "-var-update b at STOP_2" diff --git a/gdb/testsuite/gdb.ada/mi_ref_changeable/foo_rb20_056.adb b/gdb/testsuite/gdb.ada/mi_ref_changeable/foo_rb20_056.adb new file mode 100644 index 0000000..52975be --- /dev/null +++ b/gdb/testsuite/gdb.ada/mi_ref_changeable/foo_rb20_056.adb @@ -0,0 +1,28 @@ +-- Copyright 2018 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/>. + +with System; +with Pck; use Pck; + +procedure Foo_RB20_056 is + A : String := Get_Name; + B : String := Get_Name; +begin + Do_Nothing (A'Address); + Do_Nothing (B'Address); + B (B'First) := 's'; -- STOP_1 + Do_Nothing (A'Address); -- STOP_2 + Do_Nothing (B'Address); +end Foo_RB20_056; diff --git a/gdb/testsuite/gdb.ada/mi_ref_changeable/pck.adb b/gdb/testsuite/gdb.ada/mi_ref_changeable/pck.adb new file mode 100644 index 0000000..120052e --- /dev/null +++ b/gdb/testsuite/gdb.ada/mi_ref_changeable/pck.adb @@ -0,0 +1,26 @@ +-- Copyright 2018 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/>. + +package body Pck is + procedure Do_Nothing (A : System.Address) is + begin + null; + end Do_Nothing; + + function Get_Name return String is + begin + return "Some kind of string"; + end Get_Name; +end Pck; diff --git a/gdb/testsuite/gdb.ada/mi_ref_changeable/pck.ads b/gdb/testsuite/gdb.ada/mi_ref_changeable/pck.ads new file mode 100644 index 0000000..0a96dfb --- /dev/null +++ b/gdb/testsuite/gdb.ada/mi_ref_changeable/pck.ads @@ -0,0 +1,20 @@ +-- Copyright 2018 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/>. + +with System; +package Pck is + procedure Do_Nothing (A : System.Address); + function Get_Name return String; +end Pck; |