[PATCH]: testsuite/gdb.base/display.exp: Change nonportable floating point test

Corinna Vinschen vinschen@redhat.com
Fri Sep 14 03:16:00 GMT 2001


Hi,

the testsuite test display.exp contains a non-portable test for
displaying a floating point variable.  It's non-portable since
it uses the int variable `sum' to print it as a float:

	display.c:	int sum;

	display.exp:	disp/f sum

The result expected by the test is only generated by gdb when
sizeof(int) == sizeof(float) for that target. 

My following patch changes the test to use a real floating point
number for the test instead.  The additional 60 seconds of
timeout is needed since some simulated targets are very slow
in floating point arithmetic.

2001-09-14  Corinna Vinschen  <vinschen@redhat.com>

	* gdb.base/display.c (do_loops): Add float variable `f'.
	Increment f in loop.
	* gdb.base/display.exp: Increment timeout by 60 seconds.
	Change float display test to use variable `f'.

Index: display.c
===================================================================
RCS file: /cvs/cvsfiles/devo/gdb/testsuite/gdb.base/display.c,v
retrieving revision 1.2
diff -u -p -r1.2 display.c
--- display.c	1999/01/04 15:34:31	1.2
+++ display.c	2001/09/14 10:09:09
@@ -10,11 +10,11 @@ int do_loops()
     int i=0;
     int k=0;
     int j=0;
-    
+    float f=3.1415;
     for( i = 0; i < LOOP; i++ ) {
         for( j = 0; j < LOOP; j++ ) {
             for( k = 0; k < LOOP; k++ ) {
-                sum++;
+                sum++; f++;
             }
         }
     } 
Index: display.exp
===================================================================
RCS file: /cvs/cvsfiles/devo/gdb/testsuite/gdb.base/display.exp,v
retrieving revision 1.17
diff -u -p -r1.17 display.exp
--- display.exp	2001/03/26 19:55:24	1.17
+++ display.exp	2001/09/14 10:09:09
@@ -38,6 +38,11 @@ if [target_info exists gdb_stub] {
     gdb_step_for_stub;
 }
 
+# Preserve the old timeout, and set a new one that should be
+# sufficient to avoid timing out during this test.
+set oldtimeout $timeout
+set timeout [expr "$timeout + 60"]
+verbose "Timeout is now $timeout seconds" 2
 
 # use this to debug:
 #log_user 1
@@ -90,13 +95,13 @@ gdb_test "info disp" ".*There are no aut
 gdb_test "disp i" ".*1: i = 0.*" "display i"
 gdb_test "disp/x j" ".*2: /x j = 0x0.*" "display j"
 gdb_test "disp/i &k" ".*3: x/i &k  $hex:.*" "display &k"
-gdb_test "disp/f sum" ".*4: /f sum = 0.*" "display/f sum"
+gdb_test "disp/f f" ".*4: /f f = 3.1415*" "display/f f"
 gdb_test "disp/s &sum" ".*5: x/s &sum  $hex.*sum.:.*" "display/s &sum"
 
 # Hit the displays
 #
-gdb_test "cont" ".*\[Ww\]atchpoint 3: sum.*\[1-9\]*: x/s &sum.*\[1-9\]*: /f sum = 1.40129846e.45\r\n\[1-9\]*: x/i &k.*\r\n\[1-9\]*: /x j = 0x0\r\n\[1-9\]*: i = 0.*" "first disp"
-gdb_test "cont" ".*\[Ww\]atchpoint 3: sum.*\[1-9\]*: x/s &sum.*\[1-9\]*: /f sum = 2.80259693e.45\r\n\[1-9\]*: x/i &k.*\r\n\[1-9\]*: /x j = 0x0.*\[1-9\]*: i = 0.*" "second disp"
+gdb_test "cont" ".*\[Ww\]atchpoint 3: sum.*\[1-9\]*: x/s &sum.*\[1-9\]*: /f f = 3.1415\r\n\[1-9\]*: x/i &k.*\r\n\[1-9\]*: /x j = 0x0\r\n\[1-9\]*: i = 0.*" "first disp"
+gdb_test "cont" ".*\[Ww\]atchpoint 3: sum.*\[1-9\]*: x/s &sum.*\[1-9\]*: /f f = 4.1415\r\n\[1-9\]*: x/i &k.*\r\n\[1-9\]*: /x j = 0x0.*\[1-9\]*: i = 0.*" "second disp"
 
 gdb_test "enab  disp 6" ".*No display number 6..*" "catch err"
 gdb_test "disab disp 1" ".*" "disab disp 1"
@@ -104,9 +109,9 @@ gdb_test "disab disp 2" ".*" "disab disp
 gdb_test "enab disp 1"  ".*" "re-enab"
 gdb_test "enab disp 1"  ".*" "re-enab of enab"
 gdb_test "undisp 5"     ".*" "undisp"
-gdb_test "info disp"    ".*Auto-display expressions now in effect.*y  /f sum.*y  /1bi &k.*n  /x j.*y  i.*" "info disp"
+gdb_test "info disp"    ".*Auto-display expressions now in effect.*y  /f f.*y  /1bi &k.*n  /x j.*y  i.*" "info disp"
 
-gdb_test "cont" ".*\[Ww\]atch.*4.20389539e-45.*.*i = 0.*" "next hit"
+gdb_test "cont" ".*\[Ww\]atch.*5.1415.*.*i = 0.*" "next hit"
 
 send_gdb "undisp\n"
 gdb_expect {
@@ -202,4 +207,9 @@ gdb_test "print/a &&j" ".*A .* error in 
 # Done!
 #
 gdb_exit
+
+# Restore the preserved old timeout value.
+set timeout $oldtimeout
+verbose "Timeout is now $timeout seconds" 2
+
 return 0

Corinna

-- 
Corinna Vinschen
Cygwin Developer
Red Hat, Inc.
mailto:vinschen@redhat.com



More information about the Gdb-patches mailing list