From: msnyder Date: Tue, 14 Nov 2000 22:12:25 +0000 (+0000) Subject: 2000-11-03 Michael Snyder X-Git-Url: http://git.osdn.net/view?a=commitdiff_plain;h=689013aae9e0c05167c324c7a7671d3fe0a00212;p=pf3gnuchains%2Fsourceware.git 2000-11-03 Michael Snyder * 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. --- diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog index 4a1f04e336..45efe3738f 100644 --- a/gdb/testsuite/ChangeLog +++ b/gdb/testsuite/ChangeLog @@ -1,3 +1,20 @@ +2000-11-03 Michael Snyder + + * 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 From Orjan Friberg : diff --git a/gdb/testsuite/gdb.base/a2-run.exp b/gdb/testsuite/gdb.base/a2-run.exp index 87a0edf293..c00442ec22 100644 --- a/gdb/testsuite/gdb.base/a2-run.exp +++ b/gdb/testsuite/gdb.base/a2-run.exp @@ -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" diff --git a/gdb/testsuite/gdb.base/corefile.exp b/gdb/testsuite/gdb.base/corefile.exp index 83b78c4be9..44c9427f0c 100644 --- a/gdb/testsuite/gdb.base/corefile.exp +++ b/gdb/testsuite/gdb.base/corefile.exp @@ -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." diff --git a/gdb/testsuite/gdb.base/display.exp b/gdb/testsuite/gdb.base/display.exp index f5c2641226..37007487b0 100644 --- a/gdb/testsuite/gdb.base/display.exp +++ b/gdb/testsuite/gdb.base/display.exp @@ -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.*.*" "" -gdb_test "p/a main+1000" ".*= 0x.*<.*>.*" "" -gdb_test "p/a \\\$pc" ".*= 0x.*.*" "" -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.*.*" +# 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.*.*" +gdb_test "print/a &&j" ".*A .* error in expression.*" # Done! # diff --git a/gdb/testsuite/gdb.base/recurse.exp b/gdb/testsuite/gdb.base/recurse.exp index ac994f24d5..c222233b97 100644 --- a/gdb/testsuite/gdb.base/recurse.exp +++ b/gdb/testsuite/gdb.base/recurse.exp @@ -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. diff --git a/gdb/testsuite/gdb.base/restore.exp b/gdb/testsuite/gdb.base/restore.exp index 64b714bd1b..ff563efa5e 100644 --- a/gdb/testsuite/gdb.base/restore.exp +++ b/gdb/testsuite/gdb.base/restore.exp @@ -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 diff --git a/gdb/testsuite/gdb.base/watchpoint.exp b/gdb/testsuite/gdb.base/watchpoint.exp index df796baf29..c096306e93 100644 --- a/gdb/testsuite/gdb.base/watchpoint.exp +++ b/gdb/testsuite/gdb.base/watchpoint.exp @@ -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