OSDN Git Service

2000-11-03 Michael Snyder <msnyder@cleaver.cygnus.com>
authormsnyder <msnyder>
Tue, 14 Nov 2000 22:12:25 +0000 (22:12 +0000)
committermsnyder <msnyder>
Tue, 14 Nov 2000 22:12:25 +0000 (22:12 +0000)
        * gdb.base/a2-run.exp: Use gdb_skip_stdio_test.
        * gdb.base/corefile.exp: Expect the message "Program is being
        debugged already" when we send the "corefile" command, since
        the preceeding gdb_load may have connected gdb to a remote target.
        * gdb.base/display.exp: Disable hardware watchpoints if new
        board info variable "no_hardware_watchpoints" is true.
        Replace single-letter commands with more readable ones.
        * gdb.base/recurse.exp (recurse_tests): Disable hardware watchpoints
        if new board info variable "no_hardware_watchpoints" is true.
        * gdb.base/restore.exp (restore_tests): Call gdb_skip_stdio_tests
        to see if stdio (printf) testing is possible.
        * gdb.base/watchpoint.exp: Disable hardware watchpoints if new
        board info variable "no_hardware_watchpoints" is true.  Use new
        proc "gdb_skip_stdio_tests" to see if printf tests are possible.

gdb/testsuite/ChangeLog
gdb/testsuite/gdb.base/a2-run.exp
gdb/testsuite/gdb.base/corefile.exp
gdb/testsuite/gdb.base/display.exp
gdb/testsuite/gdb.base/recurse.exp
gdb/testsuite/gdb.base/restore.exp
gdb/testsuite/gdb.base/watchpoint.exp

index 4a1f04e..45efe37 100644 (file)
@@ -1,3 +1,20 @@
+2000-11-03  Michael Snyder  <msnyder@cleaver.cygnus.com>
+
+       * gdb.base/a2-run.exp: Use gdb_skip_stdio_test.
+       * gdb.base/corefile.exp: Expect the message "Program is being
+       debugged already" when we send the "corefile" command, since
+       the preceeding gdb_load may have connected gdb to a remote target.
+       * gdb.base/display.exp: Disable hardware watchpoints if new
+       board info variable "no_hardware_watchpoints" is true.
+       Replace single-letter commands with more readable ones.
+       * gdb.base/recurse.exp (recurse_tests): Disable hardware watchpoints
+       if new board info variable "no_hardware_watchpoints" is true.
+       * gdb.base/restore.exp (restore_tests): Call gdb_skip_stdio_tests
+       to see if stdio (printf) testing is possible.
+       * gdb.base/watchpoint.exp: Disable hardware watchpoints if new
+       board info variable "no_hardware_watchpoints" is true.  Use new
+       proc "gdb_skip_stdio_tests" to see if printf tests are possible.
+
 2000-11-13  Fernando Nasser  <fnasser@redhat.com>
 
        From Orjan Friberg  <orjanf@axis.com>:
index 87a0edf..c00442e 100644 (file)
@@ -26,8 +26,8 @@ if [target_info exists noargs] then {
     return
 }
 
-if [target_info exists gdb,noinferiorio] {
-    verbose "Skipping a2-run.exp because of noinferiorio."
+# Can't do this test without stdio support.
+if [gdb_skip_stdio_test "a2run.exp"] {
     return
 }
 
@@ -109,7 +109,7 @@ if [istarget "*-*-vxworks*"] then {
     verbose "Timeout is now $timeout seconds" 2
     gdb_expect -re "$gdb_prompt $" {}
 } else {
-       setup_xfail "mips-idt-*" "arm-*-coff"
+       setup_xfail "mips-idt-*" "arm-*-coff strongarm-*-coff"
        gdb_run_cmd 5
        gdb_expect {
            -re ".*120.*$gdb_prompt $"\
@@ -137,7 +137,7 @@ if [istarget "*-*-vxworks*"] then {
     verbose "Timeout is now $timeout seconds" 2
     gdb_expect -re "$gdb_prompt $" {}
 } else {
-    setup_xfail "arm-*-coff"
+    setup_xfail "arm-*-coff strongarm-*-coff"
     gdb_expect {
            -re ".*120.*$gdb_prompt $"\
                                { pass "run \"$testfile\" again with same args" }
@@ -215,7 +215,7 @@ if [istarget "*-*-vxworks*"] then {
     verbose "Timeout is now $timeout seconds" 2
     gdb_expect -re "$gdb_prompt $" {}
 } else {
-    setup_xfail "arm-*-coff"
+    setup_xfail "arm-*-coff strongarm-*-coff"
     gdb_expect {
            -re ".*720.*$gdb_prompt $" {
                pass "run \"$testfile\" again after setting args"
index 83b78c4..44c9427 100644 (file)
@@ -164,6 +164,11 @@ gdb_load ${binfile}
 
 send_gdb "core-file $objdir/$subdir/corefile\n"
 gdb_expect {
+    -re ".* program is being debugged already.*y or n. $" {
+       # gdb_load may connect us to a gdbserver.
+       send_gdb "y\n"
+       exp_continue;
+    }
     -re "Core was generated by .*coremaker.*\r\n\#0  .*\(\).*\r\n$gdb_prompt $" {
        pass "core-file command"
     }
@@ -183,13 +188,13 @@ gdb_test "print coremaker_data" "\\\$$decimal = 202"
 gdb_test "print coremaker_bss" "\\\$$decimal = 10"
 gdb_test "print coremaker_ro" "\\\$$decimal = 201"
 
-if {!$gcc_compiled} then { setup_xfail "hppa*-*-hpux*" }
 gdb_test "print func2::coremaker_local" "\\\$$decimal = {0, 1, 2, 3, 4}"
 
 # Somehow we better test the ability to read the registers out of the core
 # file correctly.  I don't think the other tests do this.
 
 gdb_test "bt" "abort.*func2.*func1.*main.*" "backtrace in corefile.exp"
+gdb_test "up" "#\[0-9\]* *\[0-9xa-fH'\]* in .* \\(.*\\).*" "up in corefile.exp"
 
 # Test ability to read mmap'd data
 
@@ -217,7 +222,7 @@ gdb_expect {
 # test reinit_frame_cache
 
 gdb_load ${binfile}
-setup_xfail "*-*-*"
-gdb_test "up" "#\[0-9\]* *\[0-9xa-fH'\]* in .* \\(\\)" "up in corefile.exp"
+setup_xfail "*-*-*" CLLbs17002
+gdb_test "up" "#\[0-9\]* *\[0-9xa-fH'\]* in .* \\(\\)" "up in corefile.exp (reinit)"
 
 gdb_test "core" "No core file now."
index f5c2641..3700748 100644 (file)
@@ -47,17 +47,41 @@ gdb_start
 gdb_reinitialize_dir $srcdir/$subdir
 gdb_load ${binfile}
 
+# Some coverage stuff
+#
+gdb_test "kill" ".*The program is not being run.*"
+gdb_test "detach" ".*"
+gdb_test "run" ".*"
+
+gdb_load ${binfile}
+gdb_test "kill" ".*"
+gdb_test "detach" ".*"
+
 # Ok, on to real life
 #
-gdb_test "b main"     ".*Breakpoint 1.*" "break main"
-gdb_test "r"          ".*Breakpoint 1, main.*" "get to main"
-gdb_test "b 14" ".*Breakpoint 2.*" "break do_loops"
-gdb_test "c"          ".*Breakpoint 2, do_loops.*" "get to do_loops"
+
+gdb_exit
+gdb_start
+gdb_reinitialize_dir $srcdir/$subdir
+gdb_load ${binfile}
+
+if ![runto_main] then {
+    fail "Could not run to main - other tests will fail."
+    continue
+}
+
+# Disable hardware watchpoints if necessary.
+if [target_info exists gdb,no_hardware_watchpoints] {
+    gdb_test "set can-use-hw-watchpoints 0" "" ""
+}
+
+gdb_test "break 14" ".*Breakpoint 2.*"           "break  do_loops"
+gdb_test "cont"     ".*Breakpoint 2, do_loops.*" "get to do_loops"
 
 # Create stopping points.
 #
-gdb_test "wat sum"    ".*\[Ww\]atchpoint 3: sum.*" "set watch"
-gdb_test "b 19"       ".*Breakpoint 4.*" "break 19"
+gdb_test "watch sum"    ".*\[Ww\]atchpoint 3: sum.*" "set watch"
+gdb_test "break 19"     ".*Breakpoint 4.*" "break 19"
 
 # Create displays for those points
 #
@@ -70,18 +94,18 @@ gdb_test "disp/s &sum" ".*5: x/s &sum  $hex.*sum.:.*" "display/s &sum"
 
 # Hit the displays
 #
-gdb_test "c" ".*\[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 "c" ".*\[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 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 "enab  disp 6" ".*No display number 6..*" "catch err"
-gdb_test "disab disp 1" ".*" "disab"
-gdb_test "disab disp 2" ".*" ""
+gdb_test "disab disp 1" ".*" "disab disp 1"
+gdb_test "disab disp 2" ".*" "disab disp 2"
 gdb_test "enab disp 1"  ".*" "re-enab"
 gdb_test "enab disp 1"  ".*" "re-enab of enab"
 gdb_test "undisp 5"     ".*" "undisp"
-gdb_test "i 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 sum.*y  /1bi &k.*n  /x j.*y  i.*" "info disp"
 
-gdb_test "c" ".*\[Ww\]atch.*4.20389539e-45.*.*i = 0.*" "next hit"
+gdb_test "cont" ".*\[Ww\]atch.*4.20389539e-45.*.*i = 0.*" "next hit"
 
 send_gdb "undisp\n"
 gdb_expect {
@@ -106,40 +130,73 @@ gdb_expect {
     timeout { fail "timeout" }
 }
 
-gdb_test "disab 3" ".*.*" ""
-gdb_test "c" ".*Breakpoint 4.*" "watch off"
+gdb_test "disab 3" ".*.*" "disab 3"
+gdb_test "cont" ".*Breakpoint 4.*" "watch off"
 
 # Now the printf tests
 #
-gdb_test "fin" ".*Run till exit.*Value returned is.*= 10.*" "finish"
-gdb_test "s" ".*do_vars.*.*25" ""
-gdb_test "tb 35" ".*Breakpoint 5 a.*" ""
-gdb_test "c" ".*do_vars.*35.*35.*" ""
+# The "finish" command may leave us mid-line in the caller on some
+# targets, including but not limited to the m68k, i386 & PA.  So we
+# have to arrange to step until we hit the line with the call to
+# "do_vars".
+send_gdb "finish\n"
+gdb_expect {
+    -re ".*do_loops\\(\\);.*$gdb_prompt $" {
+       send_gdb "step\n"
+       exp_continue
+    }
+    -re ".*do_vars.*$gdb_prompt $" {
+       pass "finish"
+    }
+    -re ".*$gdb_prompt $" {
+       fail "finish"
+       gdb_suppress_tests
+    }
+    timeout  {
+       fail "(timeout) finish"
+       gdb_suppress_tests
+    }
+}
+
+gdb_test "step"      ".*do_vars.*.*27.*"
+gdb_test "tbreak 37" ".*Breakpoint 5 a.*"
+gdb_test "cont"      ".*do_vars.*37.*37.*"
 
 # Beat on printf a bit
 #
-gdb_test "printf" ".*Argument required.*" ""
-gdb_test "printf %d" ".*Bad format string, missing.*" ""
-gdb_test "printf \"%d" ".*Bad format string, non-terminated.*" ""
-gdb_test "printf \"%d%d\",i" ".*Wrong number of arguments.*" ""
-gdb_test "printf \"\\\\!\\a\\f\\r\\t\\v\\b\"" ".*!.*" ""
+gdb_test "printf" ".*Argument required.*"
+gdb_test "printf %d" ".*Bad format string, missing.*"
+gdb_test "printf \"%d" ".*Bad format string, non-terminated.*"
+gdb_test "printf \"%d%d\",i" ".*Wrong number of arguments.*"
+gdb_test "printf \"\\\\!\\a\\f\\r\\t\\v\\b\\n\"" ".*!.*"
 gdb_test "printf \"\"" ".*" "re-set term"
-gdb_test "printf \"\\w\"" ".*Unrecognized escape character.*" ""
-gdb_test "printf \"%d\" j" ".*Invalid argument syntax.*" ""
+gdb_test "printf \"\\w\"" ".*Unrecognized escape character.*"
+gdb_test "printf \"%d\" j" ".*Invalid argument syntax.*"
 
-# play with "p", too
+# play with "print", too
 #
-gdb_test "p/r j" ".*Undefined output format.*" ""
-#gdb_test "x/rx j" ".*Cannot access memory.*" "no error!"
-gdb_test "x/0 j" ".*" "x/0 j"
-gdb_test "p/0 j" ".*Item count other than 1 is meaningless.*" "p/0 j"
-gdb_test "p/s sum" ".*Format letter.*is meaningless.*" " no s"
-gdb_test "p/i sum" ".*Format letter.*is meaningless.*.*" "no i"
-gdb_test "p/a &sum" ".*= 0x.*<sum>.*" ""
-gdb_test "p/a main+1000" ".*= 0x.*<.*>.*" ""
-gdb_test "p/a \\\$pc" ".*= 0x.*<do_vars+.*>.*" ""
-gdb_test "p/a &j" ".*= 0x.*<.*>.*" ""
-gdb_test "p/a &&j" ".*A syntax error.*" ""
+gdb_test "print/r j" ".*Undefined output format.*"
+gdb_test "print j"   ".*" "debug test output"
+
+# x/0 j doesn't produce any output and terminates PA64 process when testing
+if [istarget "hppa2.0w-hp-hpux11*"] {
+    xfail "'x/0 j' terminates PA64 process - skipped test point"
+} else {
+    gdb_test "x/0 j" ".*"
+}
+if [istarget "hppa*-hp-hpux*"] {
+    # on HP-UX you could access the first page without getting an error
+    gdb_test "x/rx j" ".*(Cannot access|Error accessing) memory.*|.*0xa:\[ \t\]*\[0-9\]+.*"
+}
+gdb_test "print/0 j" ".*Item count other than 1 is meaningless.*" "print/0 j"
+gdb_test "print/s sum" ".*Format letter.*is meaningless.*" " no s"
+gdb_test "print/i sum" ".*Format letter.*is meaningless.*.*" "no i"
+gdb_test "print/a &sum" ".*= $hex.*<sum>.*"
+# If the constant below is larger than the length of main, then
+# this test will (incorrectly) fail.  So use a small number.
+gdb_test "print/a main+4" ".*= $hex.*<.*>.*"
+gdb_test "print/a \$pc" ".*= $hex.*<do_vars+.*>.*"
+gdb_test "print/a &&j" ".*A .* error in expression.*"
 
 # Done!
 #
index ac994f2..c222233 100644 (file)
@@ -42,6 +42,11 @@ gdb_load ${binfile}
 
 proc recurse_tests {} {
 
+    # Disable hardware watchpoints if necessary.
+    if [target_info exists gdb,no_hardware_watchpoints] {
+       gdb_test "set can-use-hw-watchpoints 0" "" ""
+    }
+
     if [runto recurse] then {
        # First we need to step over the assignment of b, so it has a known
        # value.
index 64b714b..ff563ef 100644 (file)
@@ -80,26 +80,31 @@ proc restore_tests { } {
             # Check that the values of the local variables are what
            # they should be.
             for {set var 1} {$var <= $c} {incr var} {
-                set expected [expr 0xfeeb + $var]
+                set expected [expr 0x7eeb + $var]
                gdb_test "print l$var" " = $expected" \
                          "caller$c called callee$e; variable l$var restored"
             }
         }
     }
 
-    send_gdb "continue\n"
-
-    gdb_expect {
-        -re "exiting" {
-             pass "run to completion"
-        }
-        timeout { 
-             fail "(timeout) run to completion"
-        }
+    if ![gdb_skip_stdio_test "run to completion"] {
+       send_gdb "continue\n"
+
+       gdb_expect {
+           -re "exiting" {
+               pass "run to completion"
+           }
+           timeout { 
+               fail "(timeout) run to completion"
+           }
+       }
+    } else {
+       gdb_test "continue" "" ""
     }
 }
 
 
+
 # Start with a fresh gdb.
 
 gdb_exit
index df796ba..c096306 100644 (file)
@@ -63,6 +63,11 @@ proc initialize {} {
     global srcfile
     global wp_set
 
+    # Disable hardware watchpoints if necessary.
+    if [target_info exists gdb,no_hardware_watchpoints] {
+       gdb_test "set can-use-hw-watchpoints 0" "" ""
+    }
+
     if [gdb_test "break marker1" "Breakpoint 1 at $hex: file .*$srcfile, line $decimal.*" "set breakpoint at marker1" ] { 
       return 0; 
     }
@@ -460,9 +465,9 @@ proc test_stepping {} {
 proc test_watchpoint_triggered_in_syscall {} {
     global gdb_prompt
 
-    if [target_info exists gdb,noinferiorio] {
-       verbose "Skipping test_watchpoint_triggered_in_syscall due to noinferiorio"
-       return
+    # These tests won't work without printf support.
+    if [gdb_skip_stdio_test "watchpoints triggered in syscall"] {
+       return;
     }
     # Run until we get to the first marker function.
     set x 0