263 lines
10 KiB
Diff
263 lines
10 KiB
Diff
Subject: [PATCH 21/23] test: basic MI test for the dynamic array support.
|
|
Message-Id: <1401861266-6240-22-git-send-email-keven.boell@intel.com>
|
|
|
|
Tests dynamic array evaluations using MI protocol.
|
|
|
|
2014-05-28 Keven Boell <keven.boell@intel.com>
|
|
Sanimir Agovic <sanimir.agovic@intel.com>
|
|
|
|
testsuite/gdb.mi/:
|
|
|
|
* mi-vla-fortran.exp: New file.
|
|
* vla.f90: New file.
|
|
|
|
Change-Id: I37caa85b1498478f5eff0f52d3fd431388aaab6f
|
|
|
|
Signed-off-by: Keven Boell <keven.boell@intel.com>
|
|
---
|
|
gdb/testsuite/gdb.mi/mi-vla-fortran.exp | 182 +++++++++++++++++++++++++++++++
|
|
gdb/testsuite/gdb.mi/vla.f90 | 42 +++++++
|
|
2 files changed, 224 insertions(+)
|
|
create mode 100644 gdb/testsuite/gdb.mi/mi-vla-fortran.exp
|
|
create mode 100644 gdb/testsuite/gdb.mi/vla.f90
|
|
|
|
diff --git a/gdb/testsuite/gdb.mi/mi-vla-fortran.exp b/gdb/testsuite/gdb.mi/mi-vla-fortran.exp
|
|
new file mode 100644
|
|
index 0000000..72b0be2
|
|
--- /dev/null
|
|
+++ b/gdb/testsuite/gdb.mi/mi-vla-fortran.exp
|
|
@@ -0,0 +1,182 @@
|
|
+# Copyright 2014 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/>.
|
|
+
|
|
+# Verify that, using the MI, we can evaluate a simple C Variable Length
|
|
+# Array (VLA).
|
|
+
|
|
+load_lib mi-support.exp
|
|
+set MIFLAGS "-i=mi"
|
|
+
|
|
+gdb_exit
|
|
+if [mi_gdb_start] {
|
|
+ continue
|
|
+}
|
|
+
|
|
+standard_testfile vla.f90
|
|
+
|
|
+if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable \
|
|
+ {debug f90}] != "" } {
|
|
+ untested mi-vla-fortran.exp
|
|
+ return -1
|
|
+}
|
|
+
|
|
+mi_delete_breakpoints
|
|
+mi_gdb_reinitialize_dir $srcdir/$subdir
|
|
+mi_gdb_load ${binfile}
|
|
+
|
|
+set bp_lineno [gdb_get_line_number "vla1-not-allocated"]
|
|
+mi_create_breakpoint "-t vla.f90:$bp_lineno" 1 "del" "vla" \
|
|
+ ".*vla.f90" $bp_lineno $hex \
|
|
+ "insert breakpoint at line $bp_lineno (vla not allocated)"
|
|
+mi_run_cmd
|
|
+mi_expect_stop "breakpoint-hit" "vla" "" ".*vla.f90" "$bp_lineno" \
|
|
+ { "" "disp=\"del\"" } "run to breakpoint at line $bp_lineno"
|
|
+mi_gdb_test "500-data-evaluate-expression vla1" \
|
|
+ "500\\^done,value=\"<not allocated>\"" "evaluate not allocated vla"
|
|
+
|
|
+mi_create_varobj_checked vla1_not_allocated vla1 "<not allocated>" \
|
|
+ "create local variable vla1_not_allocated"
|
|
+mi_gdb_test "501-var-info-type vla1_not_allocated" \
|
|
+ "501\\^done,type=\"<not allocated>\"" \
|
|
+ "info type variable vla1_not_allocated"
|
|
+mi_gdb_test "502-var-show-format vla1_not_allocated" \
|
|
+ "502\\^done,format=\"natural\"" \
|
|
+ "show format variable vla1_not_allocated"
|
|
+mi_gdb_test "503-var-evaluate-expression vla1_not_allocated" \
|
|
+ "503\\^done,value=\"\\\[0\\\]\"" \
|
|
+ "eval variable vla1_not_allocated"
|
|
+mi_list_array_varobj_children_with_index "vla1_not_allocated" "0" "1" \
|
|
+ "real\\\(kind=4\\\)" "get children of vla1_not_allocated"
|
|
+
|
|
+
|
|
+
|
|
+set bp_lineno [gdb_get_line_number "vla1-allocated"]
|
|
+mi_create_breakpoint "-t vla.f90:$bp_lineno" 2 "del" "vla" ".*vla.f90" \
|
|
+ $bp_lineno $hex "insert breakpoint at line $bp_lineno (vla allocated)"
|
|
+mi_run_cmd
|
|
+mi_expect_stop "breakpoint-hit" "vla" "" ".*vla.f90" "$bp_lineno" \
|
|
+ { "" "disp=\"del\"" } "run to breakpoint at line $bp_lineno"
|
|
+mi_gdb_test "510-data-evaluate-expression vla1" \
|
|
+ "510\\^done,value=\"\\(0, 0, 0, 0, 0\\)\"" "evaluate allocated vla"
|
|
+
|
|
+mi_create_varobj_checked vla1_allocated vla1 "real\\\(kind=4\\\) \\\(5\\\)" \
|
|
+ "create local variable vla1_allocated"
|
|
+mi_gdb_test "511-var-info-type vla1_allocated" \
|
|
+ "511\\^done,type=\"real\\\(kind=4\\\) \\\(5\\\)\"" \
|
|
+ "info type variable vla1_allocated"
|
|
+mi_gdb_test "512-var-show-format vla1_allocated" \
|
|
+ "512\\^done,format=\"natural\"" \
|
|
+ "show format variable vla1_allocated"
|
|
+mi_gdb_test "513-var-evaluate-expression vla1_allocated" \
|
|
+ "513\\^done,value=\"\\\[5\\\]\"" \
|
|
+ "eval variable vla1_allocated"
|
|
+mi_list_array_varobj_children_with_index "vla1_allocated" "5" "1" \
|
|
+ "real\\\(kind=4\\\)" "get children of vla1_allocated"
|
|
+
|
|
+
|
|
+set bp_lineno [gdb_get_line_number "vla1-filled"]
|
|
+mi_create_breakpoint "-t vla.f90:$bp_lineno" 3 "del" "vla" ".*vla.f90" \
|
|
+ $bp_lineno $hex "insert breakpoint at line $bp_lineno"
|
|
+mi_run_cmd
|
|
+mi_expect_stop "breakpoint-hit" "vla" "" ".*vla.f90" "$bp_lineno" \
|
|
+ { "" "disp=\"del\"" } "run to breakpoint at line $bp_lineno"
|
|
+mi_gdb_test "520-data-evaluate-expression vla1" \
|
|
+ "520\\^done,value=\"\\(1, 1, 1, 1, 1\\)\"" "evaluate filled vla"
|
|
+
|
|
+
|
|
+set bp_lineno [gdb_get_line_number "vla1-modified"]
|
|
+mi_create_breakpoint "-t vla.f90:$bp_lineno" 4 "del" "vla" ".*vla.f90" \
|
|
+ $bp_lineno $hex "insert breakpoint at line $bp_lineno"
|
|
+mi_run_cmd
|
|
+mi_expect_stop "breakpoint-hit" "vla" "" ".*vla.f90" "$bp_lineno" \
|
|
+ { "" "disp=\"del\"" } "run to breakpoint at line $bp_lineno"
|
|
+mi_gdb_test "530-data-evaluate-expression vla1" \
|
|
+ "530\\^done,value=\"\\(1, 42, 1, 24, 1\\)\"" "evaluate filled vla"
|
|
+mi_gdb_test "540-data-evaluate-expression vla1(1)" \
|
|
+ "540\\^done,value=\"1\"" "evaluate filled vla"
|
|
+mi_gdb_test "550-data-evaluate-expression vla1(2)" \
|
|
+ "550\\^done,value=\"42\"" "evaluate filled vla"
|
|
+mi_gdb_test "560-data-evaluate-expression vla1(4)" \
|
|
+ "560\\^done,value=\"24\"" "evaluate filled vla"
|
|
+
|
|
+
|
|
+set bp_lineno [gdb_get_line_number "vla1-deallocated"]
|
|
+mi_create_breakpoint "-t vla.f90:$bp_lineno" 5 "del" "vla" ".*vla.f90" \
|
|
+ $bp_lineno $hex "insert breakpoint at line $bp_lineno"
|
|
+mi_run_cmd
|
|
+mi_expect_stop "breakpoint-hit" "vla" "" ".*vla.f90" "$bp_lineno" \
|
|
+ { "" "disp=\"del\"" } "run to breakpoint at line $bp_lineno"
|
|
+mi_gdb_test "570-data-evaluate-expression vla1" \
|
|
+ "570\\^done,value=\"<not allocated>\"" "evaluate not allocated vla"
|
|
+
|
|
+
|
|
+set bp_lineno [gdb_get_line_number "pvla2-not-associated"]
|
|
+mi_create_breakpoint "-t vla.f90:$bp_lineno" 6 "del" "vla" ".*vla.f90" \
|
|
+ $bp_lineno $hex "insert breakpoint at line $bp_lineno"
|
|
+mi_run_cmd
|
|
+mi_expect_stop "breakpoint-hit" "vla" "" ".*vla.f90" "$bp_lineno" \
|
|
+ { "" "disp=\"del\"" } "run to breakpoint at line $bp_lineno"
|
|
+mi_gdb_test "580-data-evaluate-expression pvla2" \
|
|
+ "580\\^done,value=\"<not associated>\"" "evaluate not associated vla"
|
|
+
|
|
+mi_create_varobj_checked pvla2_not_associated pvla2 "<not associated>" \
|
|
+ "create local variable pvla2_not_associated"
|
|
+mi_gdb_test "581-var-info-type pvla2_not_associated" \
|
|
+ "581\\^done,type=\"<not associated>\"" \
|
|
+ "info type variable pvla2_not_associated"
|
|
+mi_gdb_test "582-var-show-format pvla2_not_associated" \
|
|
+ "582\\^done,format=\"natural\"" \
|
|
+ "show format variable pvla2_not_associated"
|
|
+mi_gdb_test "583-var-evaluate-expression pvla2_not_associated" \
|
|
+ "583\\^done,value=\"\\\[0\\\]\"" \
|
|
+ "eval variable pvla2_not_associated"
|
|
+mi_list_array_varobj_children_with_index "pvla2_not_associated" "0" "1" \
|
|
+ "real\\\(kind=4\\\)" "get children of pvla2_not_associated"
|
|
+
|
|
+
|
|
+set bp_lineno [gdb_get_line_number "pvla2-associated"]
|
|
+mi_create_breakpoint "-t vla.f90:$bp_lineno" 7 "del" "vla" ".*vla.f90" \
|
|
+ $bp_lineno $hex "insert breakpoint at line $bp_lineno"
|
|
+mi_run_cmd
|
|
+mi_expect_stop "breakpoint-hit" "vla" "" ".*vla.f90" "$bp_lineno" \
|
|
+ { "" "disp=\"del\"" } "run to breakpoint at line $bp_lineno"
|
|
+mi_gdb_test "590-data-evaluate-expression pvla2" \
|
|
+ "590\\^done,value=\"\\(\\( 2, 2, 2, 2, 2\\) \\( 2, 2, 2, 2, 2\\) \\)\"" \
|
|
+ "evaluate associated vla"
|
|
+
|
|
+mi_create_varobj_checked pvla2_associated pvla2 \
|
|
+ "real\\\(kind=4\\\) \\\(5,2\\\)" "create local variable pvla2_associated"
|
|
+mi_gdb_test "591-var-info-type pvla2_associated" \
|
|
+ "591\\^done,type=\"real\\\(kind=4\\\) \\\(5,2\\\)\"" \
|
|
+ "info type variable pvla2_associated"
|
|
+mi_gdb_test "592-var-show-format pvla2_associated" \
|
|
+ "592\\^done,format=\"natural\"" \
|
|
+ "show format variable pvla2_associated"
|
|
+mi_gdb_test "593-var-evaluate-expression pvla2_associated" \
|
|
+ "593\\^done,value=\"\\\[2\\\]\"" \
|
|
+ "eval variable pvla2_associated"
|
|
+
|
|
+
|
|
+set bp_lineno [gdb_get_line_number "pvla2-set-to-null"]
|
|
+mi_create_breakpoint "-t vla.f90:$bp_lineno" 8 "del" "vla" ".*vla.f90" \
|
|
+ $bp_lineno $hex "insert breakpoint at line $bp_lineno"
|
|
+mi_run_cmd
|
|
+mi_expect_stop "breakpoint-hit" "vla" "" ".*vla.f90" "$bp_lineno" \
|
|
+ { "" "disp=\"del\"" } "run to breakpoint at line $bp_lineno"
|
|
+mi_gdb_test "600-data-evaluate-expression pvla2" \
|
|
+ "600\\^done,value=\"<not associated>\"" "evaluate vla pointer set to null"
|
|
+
|
|
+mi_gdb_exit
|
|
+return 0
|
|
diff --git a/gdb/testsuite/gdb.mi/vla.f90 b/gdb/testsuite/gdb.mi/vla.f90
|
|
new file mode 100644
|
|
index 0000000..46edad2
|
|
--- /dev/null
|
|
+++ b/gdb/testsuite/gdb.mi/vla.f90
|
|
@@ -0,0 +1,42 @@
|
|
+! Copyright 2014 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/>.
|
|
+
|
|
+program vla
|
|
+ real, allocatable :: vla1 (:)
|
|
+ real, target, allocatable :: vla2(:, :)
|
|
+ real, pointer :: pvla2 (:, :)
|
|
+ logical :: l
|
|
+
|
|
+ allocate (vla1 (5)) ! vla1-not-allocated
|
|
+ l = allocated(vla1) ! vla1-allocated
|
|
+
|
|
+ vla1(:) = 1
|
|
+ vla1(2) = 42 ! vla1-filled
|
|
+ vla1(4) = 24
|
|
+
|
|
+ deallocate (vla1) ! vla1-modified
|
|
+ l = allocated(vla1) ! vla1-deallocated
|
|
+
|
|
+ allocate (vla2 (5, 2))
|
|
+ vla2(:, :) = 2
|
|
+
|
|
+ pvla2 => vla2 ! pvla2-not-associated
|
|
+ l = associated(pvla2) ! pvla2-associated
|
|
+
|
|
+ pvla2(2, 1) = 42
|
|
+
|
|
+ pvla2 => null()
|
|
+ l = associated(pvla2) ! pvla2-set-to-null
|
|
+end program vla
|
|
--
|
|
1.7.9.5
|
|
|