Fix for PR 13484:
authorMark Alexander <marka@cygnus>
Thu, 14 May 1998 04:01:13 +0000 (04:01 +0000)
committerMark Alexander <marka@cygnus>
Thu, 14 May 1998 04:01:13 +0000 (04:01 +0000)
* corefile.c (reopen_exec_file): Reopen the exec file if
it has changed.

gdb/ChangeLog
gdb/corefile.c

index ea454eb..da48741 100644 (file)
@@ -1,3 +1,8 @@
+Wed May 13 20:58:02 1998  Mark Alexander  <marka@cygnus.com>
+
+       * corefile.c (reopen_exec_file): Reopen the exec file if
+       it has changed.
+
 Wed May 13 15:22:02 1998  Mark Alexander  <marka@cygnus.com>
 
        * sparc-tdep.c (fetch_instruction): New function.
index ddaee62..7f66ec1 100644 (file)
@@ -33,6 +33,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
 #include "gdbcore.h"
 #include "dis-asm.h"
 #include "language.h"
+#include "gdb_stat.h"
 
 extern char registers[];
 
@@ -149,6 +150,24 @@ reopen_exec_file ()
 #if 0 /* FIXME */
   if (exec_bfd)
     bfd_reopen (exec_bfd);
+#else
+  char *filename;
+  int res;
+  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)
+    return;
+  /* If the timestamp of the exec file has changed, reopen it. */
+  filename = strdup (bfd_get_filename (exec_bfd));
+  make_cleanup (free, filename);
+  mtime = bfd_get_mtime(exec_bfd);
+  res = stat (filename, &st);
+
+  if (mtime && mtime != st.st_mtime)
+    exec_file_command (filename, 0);
 #endif
 }
 \f