This is the mail archive of the gdb-patches@sourceware.org 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]
Other format: [Raw text]

[patch] Handle eof in nested gdb_expect in gdb_file_cmd


Hi.
I couldn't understand why the nested gdb_expect in gdb_file_cmd
was behaving weirdly until I realized gdb was crashing
(which my test was trying to trigger :-)).

This patch adds an eof case to the nested gdb_expect.
The outer gdb_expect has an eof case, and there's a comment
there that says it doesn't work. I don't know the details,
but I do know it works for my testcase.

I also cleaned up some of the perror text to make it more consistent.

I will check this in in a few days if there are no objections.

2012-09-20  Doug Evans  <dje@google.com>

	* lib/gdb.exp (gdb_unload): Change wording of perror text to be
	more consistent.
	(runto,gdb_debug_format): Ditto.
	(gdb_file_cmd): Watch for eof in nested gdb_expect.
	Clean up logging and error messages.

Index: testsuite/lib/gdb.exp
===================================================================
RCS file: /cvs/src/src/gdb/testsuite/lib/gdb.exp,v
retrieving revision 1.216
diff -u -p -r1.216 gdb.exp
--- testsuite/lib/gdb.exp	24 Aug 2012 15:26:23 -0000	1.216
+++ testsuite/lib/gdb.exp	20 Sep 2012 22:18:56 -0000
@@ -148,7 +148,7 @@ proc gdb_unload {} {
 	}
 	-re "$gdb_prompt $" {}
 	timeout {
-	    perror "couldn't unload file in $GDB (timed out)."
+	    perror "couldn't unload file in $GDB (timeout)."
 	    return -1
 	}
     }
@@ -438,7 +438,7 @@ proc runto { function args } {
 	    return 0
 	}
 	eof { 
-	    fail "running to $function in runto (end of file)"
+	    fail "running to $function in runto (eof)"
 	    return 0
 	}
 	timeout { 
@@ -1218,6 +1218,7 @@ proc gdb_file_cmd { arg } {
     global GDB
     global last_loaded_file
 
+    # Save this for the benefit of gdbserver-support.exp.
     set last_loaded_file $arg
 
     # Set whether debug info was found.
@@ -1250,12 +1251,12 @@ proc gdb_file_cmd { arg } {
     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"
+	    verbose "\t\tLoaded $arg into $GDB with no debugging symbols"
 	    set gdb_file_cmd_debug_info "nodebug"
 	    return 0
 	}
         -re "Reading symbols from.*done.*$gdb_prompt $" {
-            verbose "\t\tLoaded $arg into the $GDB"
+            verbose "\t\tLoaded $arg into $GDB"
 	    set gdb_file_cmd_debug_info "debug"
 	    return 0
         }
@@ -1268,9 +1269,13 @@ proc gdb_file_cmd { arg } {
 		    return 0
                 }
                 timeout {
-                    perror "(timeout) Couldn't load $arg, other program already loaded."
+                    perror "Couldn't load $arg, other program already loaded (timeout)."
 		    return -1
                 }
+		eof {
+		    perror "Couldn't load $arg, other program already loaded (eof)."
+		    return -1
+		}
             }
 	}
         -re "No such file or directory.*$gdb_prompt $" {
@@ -1278,18 +1283,18 @@ proc gdb_file_cmd { arg } {
 	    return -1
         }
         -re "$gdb_prompt $" {
-            perror "couldn't load $arg into $GDB."
+            perror "Couldn't load $arg into $GDB."
 	    return -1
             }
         timeout {
-            perror "couldn't load $arg into $GDB (timed out)."
+            perror "Couldn't load $arg into $GDB (timeout)."
 	    return -1
         }
         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)."
+            perror "Couldn't load $arg into $GDB (eof)."
 	    return -1
         }
     }
@@ -3316,7 +3321,7 @@ proc get_debug_format { } {
 	    return 1;
 	}
 	timeout {
-	    warning "couldn't check debug format (timed out)."
+	    warning "couldn't check debug format (timeout)."
 	    return 1;
 	}
     }


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