gdb/
authorDaniel Jacobowitz <drow@false.org>
Mon, 24 Jul 2006 20:38:08 +0000 (20:38 +0000)
committerDaniel Jacobowitz <drow@false.org>
Mon, 24 Jul 2006 20:38:08 +0000 (20:38 +0000)
* corefile.c (reopen_exec_file): Only check for an open exec file.
Use exec_file_attach.
* exec.c (exec_open): Make static.
(exec_file_command): Don't use target_preopen.  Query directly about
changing the file.
* gdbcore.h (exec_open): Remove prototype.
gdb/testsuite/
* gdb.base/completion.exp: Update for change in "file" behavior.
* gdb.stabs/weird.exp: Likewise.
* lib/mi-support.exp (mi_gdb_file_cmd): Likewise.
* lib/gdb.exp (gdb_file_cmd): Likewise.  Kill the program explicitly.

gdb/ChangeLog
gdb/corefile.c
gdb/exec.c
gdb/gdbcore.h
gdb/testsuite/ChangeLog
gdb/testsuite/gdb.base/completion.exp
gdb/testsuite/gdb.stabs/weird.exp
gdb/testsuite/lib/gdb.exp
gdb/testsuite/lib/mi-support.exp

index ebb2450..b92727c 100644 (file)
@@ -1,4 +1,13 @@
-2006-07-21  Frederic Riss  <frederic.riss@st.com>
+2006-07-24  Daniel Jacobowitz  <dan@codesourcery.com>
+
+       * corefile.c (reopen_exec_file): Only check for an open exec file.
+       Use exec_file_attach.
+       * exec.c (exec_open): Make static.
+       (exec_file_command): Don't use target_preopen.  Query directly about
+       changing the file.
+       * gdbcore.h (exec_open): Remove prototype.
+
+2006-07-24  Frederic Riss  <frederic.riss@st.com>
 
        * regcache.c (struct regcache): Make register_valid_p a signed char 
        array.
index c49d00c..03e853b 100644 (file)
@@ -156,8 +156,8 @@ reopen_exec_file (void)
   struct stat st;
   long mtime;
 
-  /* Don't do anything if the current target isn't exec. */
-  if (exec_bfd == NULL || strcmp (target_shortname, "exec") != 0)
+  /* Don't do anything if there isn't an exec file. */
+  if (exec_bfd == NULL)
     return;
 
   /* If the timestamp of the exec file has changed, reopen it. */
@@ -167,9 +167,7 @@ reopen_exec_file (void)
   res = stat (filename, &st);
 
   if (mtime && mtime != st.st_mtime)
-    {
-      exec_open (filename, 0);
-    }
+    exec_file_attach (filename, 0);
 #endif
 }
 \f
index 7bd2ccd..9653c24 100644 (file)
@@ -85,7 +85,7 @@ show_write_files (struct ui_file *file, int from_tty,
 
 struct vmap *vmap;
 
-void
+static void
 exec_open (char *args, int from_tty)
 {
   target_preopen (from_tty);
@@ -286,8 +286,11 @@ exec_file_command (char *args, int from_tty)
 {
   char **argv;
   char *filename;
-  
-  target_preopen (from_tty);
+
+  if (from_tty && target_has_execution
+      && !query (_("A program is being debugged already.\n"
+                  "Are you sure you want to change the file? ")))
+    error (_("File not changed."));
 
   if (args)
     {
index eb4c46d..d72a17b 100644 (file)
@@ -123,8 +123,6 @@ extern int write_files;
 
 extern void core_file_command (char *filename, int from_tty);
 
-extern void exec_open (char *filename, int from_tty);
-
 extern void exec_file_attach (char *filename, int from_tty);
 
 extern void exec_file_clear (int from_tty);
index 641cdd2..f145210 100644 (file)
@@ -1,3 +1,10 @@
+2006-07-24  Daniel Jacobowitz  <dan@codesourcery.com>
+
+       * gdb.base/completion.exp: Update for change in "file" behavior.
+       * gdb.stabs/weird.exp: Likewise.
+       * lib/mi-support.exp (mi_gdb_file_cmd): Likewise.
+       * lib/gdb.exp (gdb_file_cmd): Likewise.  Kill the program explicitly.
+
 2006-07-24  Nathan Sidwell  <nathan@codesourcery.com>
 
        * gdb.base/auxv.exp: Skip on non-linux, non-solaris targets.
index 2961cb5..23d6902 100644 (file)
@@ -671,19 +671,14 @@ sleep 1
 gdb_expect  {
         -re "^file ./gdb.base/completion\\.exp $"\
             { send_gdb "\n"
-              gdb_expect {
-                      -re "\r\nA program is being debugged already\\.  Kill it\\? \\(y or n\\) $"
-                      { send_gdb "n\n"
-                        gdb_expect {
-                                -re "\r\nProgram not killed\\.\r\n$gdb_prompt $"\
-                                        { pass "complete 'file ./gdb.base/complet'"}
-                                -re ".*$gdb_prompt $" { fail "complete 'file ./gdb.base/complet'"}
-                                timeout           {fail "(timeout) complete 'file ./gdb.base/complet'"}
-                               }
-                      }
-                      -re ".*$gdb_prompt $" { fail "complete 'file ./gdb.base/complet'"}
-                      timeout           {fail "(timeout) complete 'file ./gdb.base/complet'"}
-                     }
+             # Ignore the exact error message.
+             gdb_test_multiple "" "complete 'file ./gdb.base/complet'" {
+                 -re "\r\nA program is being debugged already\\.\[\r\n\]+Are you sure you want to change the file\\? \\(y or n\\) $" {
+                     send_gdb "n\n"
+                     exp_continue
+                 }
+                 -re ".*$gdb_prompt $" { pass "complete 'file ./gdb.base/complet'" }
+             }
             }
         -re ".*$gdb_prompt $"       { fail "complete 'file ./gdb.base/complet'" }
         timeout         { fail "(timeout) complete 'file ./gdb.base/complet'" }
index 7f67ccb..fca9701 100644 (file)
@@ -313,7 +313,7 @@ gdb_expect 60 {
     -re "^file (\[^ \]| +\008)*\r*\n" {
        exp_continue
     }
-    -re "A program is being debugged already.  Kill it\\? \\(y or n\\)" {
+    -re "A program is being debugged already.\[\r\n\]+Are you sure you want to change the file\\? \\(y or n\\)" {
        send_gdb "y\n"
        exp_continue
     }
index eca2a50..047bf50 100644 (file)
@@ -1008,6 +1008,20 @@ proc gdb_file_cmd { arg } {
        }
     }
 
+    # The file command used to kill the remote target.  For the benefit
+    # of the testsuite, preserve this behavior.
+    send_gdb "kill\n"
+    gdb_expect 120 {
+       -re "Kill the program being debugged. .y or n. $" {
+           send_gdb "y\n"
+           verbose "\t\tKilling previous program being debugged"
+           exp_continue
+       }
+       -re "$gdb_prompt $" {
+           # OK.
+       }
+    }
+
     send_gdb "file $arg\n"
     gdb_expect 120 {
        -re "Reading symbols from.*no debugging symbols found.*done.*$gdb_prompt $" {
@@ -1020,11 +1034,6 @@ proc gdb_file_cmd { arg } {
            set gdb_file_cmd_debug_info "debug"
            return 0
         }
-        -re "A program is being debugged already.*Kill it.*y or n. $" {
-            send_gdb "y\n"
-           verbose "\t\tKilling previous program being debugged"
-            exp_continue
-        }
         -re "Load new symbol table from \".*\".*y or n. $" {
             send_gdb "y\n"
             gdb_expect 120 {
index fa99c53..5d5af94 100644 (file)
@@ -411,11 +411,6 @@ proc mi_gdb_file_cmd { arg } {
             perror "$arg wasn't compiled with \"-g\""
             return -1
         }
-        -re "A program is being debugged already.*Kill it.*y or n. $" {
-            send_gdb "y\n"
-                verbose "\t\tKilling previous program being debugged"
-            exp_continue
-        }
         -re "Load new symbol table from \".*\".*y or n. $" {
             send_gdb "y\n"
             gdb_expect 120 {