From 3e3ffd2b74c0321e887da2ca396070c6f61b0e1a Mon Sep 17 00:00:00 2001 From: Michael Chastain Date: Sat, 28 Aug 2004 23:55:48 +0000 Subject: [PATCH] 2004-08-27 Michael Chastain With code from Manoj Iyer : * lib/gdb.exp (gdb_file_cmd): Return more information in the return value. Add an arm for "no debugging symbols found". Change a stray "error" to "perror". (gdb_run_cmd): Adapt to new return value. * gdb.base/remote.exp: Adapt to new return value. * gdb.gdb/complaints.exp: Likewise. * gdb.gdb/observer.exp: Likewise. * gdb.gdb/selftest.exp: Likewise. * gdb.gdb/xfullpath.exp: Likewise. --- gdb/testsuite/ChangeLog | 13 ++++++ gdb/testsuite/gdb.base/remote.exp | 7 +++- gdb/testsuite/gdb.gdb/complaints.exp | 18 ++++---- gdb/testsuite/gdb.gdb/observer.exp | 11 ++--- gdb/testsuite/gdb.gdb/selftest.exp | 14 +++---- gdb/testsuite/gdb.gdb/xfullpath.exp | 18 ++++---- gdb/testsuite/lib/gdb.exp | 79 +++++++++++++++++++++++------------- 7 files changed, 96 insertions(+), 64 deletions(-) diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog index 1831362..ad2524d 100644 --- a/gdb/testsuite/ChangeLog +++ b/gdb/testsuite/ChangeLog @@ -1,3 +1,16 @@ +2004-08-27 Michael Chastain + + With code from Manoj Iyer : + * lib/gdb.exp (gdb_file_cmd): Return more information in the + return value. Add an arm for "no debugging symbols found". + Change a stray "error" to "perror". + (gdb_run_cmd): Adapt to new return value. + * gdb.base/remote.exp: Adapt to new return value. + * gdb.gdb/complaints.exp: Likewise. + * gdb.gdb/observer.exp: Likewise. + * gdb.gdb/selftest.exp: Likewise. + * gdb.gdb/xfullpath.exp: Likewise. + 2004-08-27 Joel Brobecker * gdb.threads/bp_in_thread.exp: New testcase. diff --git a/gdb/testsuite/gdb.base/remote.exp b/gdb/testsuite/gdb.base/remote.exp index e2967c6..49430d7 100644 --- a/gdb/testsuite/gdb.base/remote.exp +++ b/gdb/testsuite/gdb.base/remote.exp @@ -1,4 +1,4 @@ -# Copyright 1999, 2001 Free Software Foundation, Inc. +# Copyright 1999, 2001, 2004 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -119,7 +119,10 @@ proc gdb_load_timed {executable downloadsize class writesize} { set load_begin_time [clock clicks] set result [gdb_load $executable] set load_end_time [clock clicks] - if {$result < 0} then { fail "$test - loading executable"; return } + if { [lindex $result 0] != "" } then { + fail "$test - loading executable" + return + } verbose "$test - time [expr ($load_end_time - $load_begin_time) / 1000] ms" pass $test } diff --git a/gdb/testsuite/gdb.gdb/complaints.exp b/gdb/testsuite/gdb.gdb/complaints.exp index 3d3426f..719065f 100644 --- a/gdb/testsuite/gdb.gdb/complaints.exp +++ b/gdb/testsuite/gdb.gdb/complaints.exp @@ -1,5 +1,5 @@ -# Copyright 2002 -# Free Software Foundation, Inc. +# Copyright 2002, 2004 +# Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -15,9 +15,6 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -# Please email any bugs, comments, and/or additions to this file to: -# bug-gdb@prep.ai.mit.edu - # This file was written by Andrew Cagney (cagney at redhat dot com), # derived from xfullpath.exp (written by Joel Brobecker), derived from # selftest.exp (written by Rob Savoye). @@ -51,14 +48,15 @@ proc setup_test { executable } { set oldtimeout $timeout set timeout 600 verbose "Timeout is now $timeout seconds" 2 - if {[gdb_load $executable] <0} then { - set timeout $oldtimeout - verbose "Timeout is now $timeout seconds" 2 - return -1 - } + + set result [gdb_load $executable] set timeout $oldtimeout verbose "Timeout is now $timeout seconds" 2 + if { [lindex $result 0] != "" } then { + return -1 + } + # Set a breakpoint at main gdb_test "break captured_command_loop" \ "Breakpoint.*at.* file.*, line.*" \ diff --git a/gdb/testsuite/gdb.gdb/observer.exp b/gdb/testsuite/gdb.gdb/observer.exp index 5b466e6..a012387 100644 --- a/gdb/testsuite/gdb.gdb/observer.exp +++ b/gdb/testsuite/gdb.gdb/observer.exp @@ -46,14 +46,15 @@ proc setup_test { executable } { set oldtimeout $timeout set timeout 600 verbose "Timeout is now $timeout seconds" 2 - if {[gdb_load $executable] <0} then { - set timeout $oldtimeout - verbose "Timeout is now $timeout seconds" 2 - return -1 - } + + set result [gdb_load $executable] set timeout $oldtimeout verbose "Timeout is now $timeout seconds" 2 + if { [lindex $result 0] != "" } then { + return -1 + } + # Set a breakpoint at main gdb_test "break captured_main" \ "Breakpoint.*at.* file.*, line.*" \ diff --git a/gdb/testsuite/gdb.gdb/selftest.exp b/gdb/testsuite/gdb.gdb/selftest.exp index 54105d2..02ad806 100644 --- a/gdb/testsuite/gdb.gdb/selftest.exp +++ b/gdb/testsuite/gdb.gdb/selftest.exp @@ -15,9 +15,6 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -# Please email any bugs, comments, and/or additions to this file to: -# bug-gdb@prep.ai.mit.edu - # This file was written by Rob Savoye. (rob@cygnus.com) if $tracelevel then { @@ -243,14 +240,15 @@ proc test_with_self { executable } { set oldtimeout $timeout set timeout 600 verbose "Timeout is now $timeout seconds" 2 - if {[gdb_load $executable] <0} then { - set timeout $oldtimeout - verbose "Timeout is now $timeout seconds" 2 - return -1 - } + + set result [gdb_load $executable] set timeout $oldtimeout verbose "Timeout is now $timeout seconds" 2 + if { [lindex $result 0] != "" } then { + return -1 + } + # disassemble yourself gdb_test "x/10i main" \ "x/10i.*main.*main.$decimal.*main.$decimal.*" \ diff --git a/gdb/testsuite/gdb.gdb/xfullpath.exp b/gdb/testsuite/gdb.gdb/xfullpath.exp index 60449a3..bc3dc45 100644 --- a/gdb/testsuite/gdb.gdb/xfullpath.exp +++ b/gdb/testsuite/gdb.gdb/xfullpath.exp @@ -1,5 +1,5 @@ -# Copyright 2002, 2003 -# Free Software Foundation, Inc. +# Copyright 2002, 2003, 2004 +# Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -15,9 +15,6 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -# Please email any bugs, comments, and/or additions to this file to: -# bug-gdb@prep.ai.mit.edu - # This file was written by Joel Brobecker. (brobecker@gnat.com), derived # from selftest.exp, written by Rob Savoye. @@ -50,14 +47,15 @@ proc setup_test { executable } { set oldtimeout $timeout set timeout 600 verbose "Timeout is now $timeout seconds" 2 - if {[gdb_load $executable] <0} then { - set timeout $oldtimeout - verbose "Timeout is now $timeout seconds" 2 - return -1 - } + + set result [gdb_load $executable] set timeout $oldtimeout verbose "Timeout is now $timeout seconds" 2 + if { [lindex $result 0] != "" } then { + return -1 + } + # Set a breakpoint at main gdb_test "break captured_main" \ "Breakpoint.*at.* file.*, line.*" \ diff --git a/gdb/testsuite/lib/gdb.exp b/gdb/testsuite/lib/gdb.exp index 6495059..433015f 100644 --- a/gdb/testsuite/lib/gdb.exp +++ b/gdb/testsuite/lib/gdb.exp @@ -180,7 +180,8 @@ proc gdb_run_cmd {args} { if [target_info exists gdb,do_reload_on_run] { # Specifying no file, defaults to the executable # currently being debugged. - if { [gdb_load ""] < 0 } { + set status [gdb_load ""] + if { [lindex $status 0] != "" } { return; } send_gdb "continue\n"; @@ -225,7 +226,8 @@ proc gdb_run_cmd {args} { send_gdb "y\n" } -re "The program is not being run.*$gdb_prompt $" { - if { [gdb_load ""] < 0 } { + set status [gdb_load ""] + if { [lindex $status 0] != ""] } { return; } send_gdb "jump *$start\n"; @@ -247,7 +249,8 @@ proc gdb_run_cmd {args} { } if [target_info exists gdb,do_reload_on_run] { - if { [gdb_load ""] < 0 } { + set status [gdb_load ""] + if { [lindex $status 0] != "" } { return; } } @@ -953,35 +956,49 @@ proc default_gdb_exit {} { unset gdb_spawn_id } +# Load a file into the debugger. +# The return value is a list with the following information: # -# load a file into the debugger. -# return a -1 if anything goes wrong. +# { message word ... } +# +# MESSAGE has the following values: +# +# "" file was loaded successfully +# "..." file was not loaded successfully. +# A perror has been generated with MESSAGE. +# +# If the MESSAGE is "", then there is an optional set of words. +# The words may be: # +# nodebug this file does not contain debug information +# +# TODO: gdb.base/sepdebug.exp and gdb.stabs/weird.exp might +# be able to use this if they can get more information +# in the return value. + proc gdb_file_cmd { arg } { + global gdb_prompt global verbose - global loadpath - global loadfile global GDB - global gdb_prompt - upvar timeout timeout if [is_remote host] { - set arg [remote_download host $arg]; + set arg [remote_download host $arg] if { $arg == "" } { - error "download failed" - return -1; + set message "download failed" + perror $message + return { $message } } } send_gdb "file $arg\n" gdb_expect 120 { + -re "Reading symbols from.*no debugging symbols found.*done.*$gdb_prompt $" { + verbose "\t\tLoaded $arg into the $GDB with no debugging symbols" + return { "" nodebug } + } -re "Reading symbols from.*done.*$gdb_prompt $" { verbose "\t\tLoaded $arg into the $GDB" - return 0 - } - -re "has no symbol-table.*$gdb_prompt $" { - perror "$arg wasn't compiled with \"-g\"" - return -1 + return { "" } } -re "A program is being debugged already.*Kill it.*y or n. $" { send_gdb "y\n" @@ -993,32 +1010,37 @@ proc gdb_file_cmd { arg } { gdb_expect 120 { -re "Reading symbols from.*done.*$gdb_prompt $" { verbose "\t\tLoaded $arg with new symbol table into $GDB" - return 0 + return { "" } } timeout { - perror "(timeout) Couldn't load $arg, other program already loaded." - return -1 + set message "(timeout) Couldn't load $arg, other program already loaded." + perror $message + return { $message } } } } -re "No such file or directory.*$gdb_prompt $" { - perror "($arg) No such file or directory\n" - return -1 + set message "($arg) No such file or directory" + perror $message + return { $message } } -re "$gdb_prompt $" { - perror "couldn't load $arg into $GDB." - return -1 + set message "couldn't load $arg into $GDB." + perror $message + return { $message } } timeout { - perror "couldn't load $arg into $GDB (timed out)." - return -1 + set message "couldn't load $arg into $GDB (timed out)." + perror $message + return { $message } } eof { # This is an attempt to detect a core dump, but seems not to # work. Perhaps we need to match .* followed by eof, in which # gdb_expect does not seem to have a way to do that. - perror "couldn't load $arg into $GDB (end of file)." - return -1 + set message "couldn't load $arg into $GDB (end of file)." + perror $message + return { $message } } } } @@ -1633,7 +1655,6 @@ proc gdb_exit { } { # # gdb_load -- load a file into the debugger. -# return a -1 if anything goes wrong. # proc gdb_load { arg } { return [gdb_file_cmd $arg] -- 2.7.4