This is the mail archive of the
gdb-patches@sourceware.org
mailing list for the GDB project.
Re: [RFA] Fix mi-var-child-f.exp failures
- From: Keith Seitz <keiths at redhat dot com>
- To: Tom Tromey <tromey at redhat dot com>
- Cc: "gp >> \"gdb-patches at sourceware dot org ml\"" <gdb-patches at sourceware dot org>
- Date: Fri, 26 Jul 2013 08:08:42 -0700
- Subject: Re: [RFA] Fix mi-var-child-f.exp failures
- References: <51F1BB9A dot 6050607 at redhat dot com> <87txjhtn6x dot fsf at fleche dot redhat dot com>
On 07/26/2013 07:23 AM, Tom Tromey wrote:
"Keith" == Keith Seitz <keiths@redhat.com> writes:
Keith> 2013-07-25 Keith Seitz <keiths@redhat.com>
Keith> * gdb.mi/mi-var-child-f.exp: Use mi_create_varobj.
Keith> Use mi_list_varobj_children for the immediate children of `array'.
Keith> Add "has_more" attribute for grandchildren test.
This is ok. Thanks.
On irc you said this happens if you don't have f77 installed.
Is there a way to make the test also work with gfortran?
I think f77 is mostly dead.
Yes, pass F77_FOR_TARGET=gfortran in RUNTESTFLAGS. Alas, that exposes
another problem with the test. The type of "array" is reported as
"integer(kind=4)" with gfortran (simply "integer" with g77). There's a
blurb about/solution to this in gdb.fortran/multi-dim.exp which I've stolen.
I've also changed the compile settings to use F90 instead of F77. This
will make this test use gfortran instead of g77. The purpose of this
test is to test varobj not f77.
Ok?
Keith
testsuite/ChangeLog
2013-07-26 Keith Seitz <keiths@redhat.com>
* gdb.mi/mi-var-child-f.exp: Pass f90 to gdb_compile instead
of f77.
Allow for compiler variations of integer types.
Use mi_create_varobj.
Use mi_list_varobj_children for the immediate children of `array'.
Add "has_more" attribute for grandchildren test.
diff --git a/gdb/testsuite/gdb.mi/mi-var-child-f.exp
b/gdb/testsuite/gdb.mi/mi-var-child-f.exp
index 762a90d..79d49bd 100644
--- a/gdb/testsuite/gdb.mi/mi-var-child-f.exp
+++ b/gdb/testsuite/gdb.mi/mi-var-child-f.exp
@@ -28,7 +28,7 @@ if [mi_gdb_start] {
standard_testfile array.f
if {[gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" \
- executable {debug f77}] != ""} {
+ executable {debug f90}] != ""} {
return -1
}
@@ -37,14 +37,20 @@ mi_gdb_load ${binfile}
mi_runto MAIN__
-mi_gdb_test "-var-create array * array" \
- "\\^done,name=\"array\",numchild=\"3\",value=\".*\",type=\"integer
\\(2,-1:1\\)\"" \
- "create local variable array"
+mi_create_varobj "array" "array" "create local variable array"
-mi_gdb_test "-var-list-children --all-values array" \
-
"\\^done,numchild=\"3\",children=\\\[child=\{name=\"array.-1\",exp=\"-1\",numchild=\"2\",value=\"\\\[2\\\]\",type=\"integer
\\(2\\)\"\},child=\{name=\"array.0\",exp=\"0\",numchild=\"2\",value=\"\\\[2\\\]\",type=\"integer
\\(2\\)\"\},child=\{name=\"array.1\",exp=\"1\",numchild=\"2\",value=\"\\\[2\\\]\",type=\"integer
\\(2\\)\"\}\\\]" \
- "get children of array"
+
+# Depending on the compiler version being used, the name of the 4-byte
integer
+# and real types can be printed differently. For instance,
gfortran-4.1 uses
+# "int4" whereas gfortran-4.3 uses "integer(kind=4)".
+set int4 "(int4|integer\\(kind=4\\))"
+
+set children [list [list "array.-1" "-1" 2 "$int4 \\(2\\)"] \
+ [list "array.0" "0" 2 "$int4 \\(2\\)"] \
+ [list "array.1" "1" 2 "$int4 \\(2\\)"]]
+
+mi_list_varobj_children "array" $children "get children of array"
mi_gdb_test "-var-list-children --all-values array.-1" \
-
"\\^done,numchild=\"2\",children=\\\[child=\{name=\"array.-1.1\",exp=\"1\",numchild=\"0\",value=\"11\",type=\"integer\"\},child=\{name=\"array.-1.2\",exp=\"2\",numchild=\"0\",value=\"21\",type=\"integer\"\}\\\]"
\
+
"\\^done,numchild=\"2\",children=\\\[child=\{name=\"array.-1.1\",exp=\"1\",numchild=\"0\",value=\"11\",type=\"$int4\"\},child=\{name=\"array.-1.2\",exp=\"2\",numchild=\"0\",value=\"21\",type=\"$int4\"\}\\\],has_more=\"0\""
\
"get grandchildren of array (children of first element of second
index)"