2004-08-27 Michael Chastain <mec.gnu@mindspring.com>
authorMichael Chastain <mec@google.com>
Sat, 28 Aug 2004 23:55:48 +0000 (23:55 +0000)
committerMichael Chastain <mec@google.com>
Sat, 28 Aug 2004 23:55:48 +0000 (23:55 +0000)
With code from Manoj Iyer <manjo@austin.ibm.com>:
* 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
gdb/testsuite/gdb.base/remote.exp
gdb/testsuite/gdb.gdb/complaints.exp
gdb/testsuite/gdb.gdb/observer.exp
gdb/testsuite/gdb.gdb/selftest.exp
gdb/testsuite/gdb.gdb/xfullpath.exp
gdb/testsuite/lib/gdb.exp

index 1831362..ad2524d 100644 (file)
@@ -1,3 +1,16 @@
+2004-08-27  Michael Chastain  <mec.gnu@mindspring.com>
+
+       With code from Manoj Iyer <manjo@austin.ibm.com>:
+       * 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  <brobecker@gnat.com>
 
        * gdb.threads/bp_in_thread.exp: New testcase.
index e2967c6..49430d7 100644 (file)
@@ -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
 }
index 3d3426f..719065f 100644 (file)
@@ -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.*" \
index 5b466e6..a012387 100644 (file)
@@ -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.*" \
index 54105d2..02ad806 100644 (file)
@@ -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.*" \
index 60449a3..bc3dc45 100644 (file)
@@ -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.*" \
index 6495059..433015f 100644 (file)
@@ -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]