This is the mail archive of the gdb-patches@sourceware.org mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [RFA] Fix mi-var-child-f.exp failures


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)"


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]