This is the mail archive of the gdb-patches@sources.redhat.com 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]

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


Corinna Vinschen wrote:
> 
> 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.
> 

Fine.  Please check it in.

Thanks for the patch.

Fernando


> 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

-- 
Fernando Nasser
Red Hat - Toronto                       E-Mail:  fnasser@redhat.com
2323 Yonge Street, Suite #300
Toronto, Ontario   M4P 2C9


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