From 091d73027cf6944a75fa7be5e3559cf486b4d13c Mon Sep 17 00:00:00 2001 From: Mark Alexander Date: Thu, 14 May 1998 04:01:13 +0000 Subject: Fix for PR 13484: * corefile.c (reopen_exec_file): Reopen the exec file if it has changed. --- gdb/ChangeLog | 5 +++++ gdb/corefile.c | 19 +++++++++++++++++++ 2 files changed, 24 insertions(+) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index ea454eb..da48741 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,8 @@ +Wed May 13 20:58:02 1998 Mark Alexander + + * corefile.c (reopen_exec_file): Reopen the exec file if + it has changed. + Wed May 13 15:22:02 1998 Mark Alexander * sparc-tdep.c (fetch_instruction): New function. diff --git a/gdb/corefile.c b/gdb/corefile.c index ddaee62..7f66ec1 100644 --- a/gdb/corefile.c +++ b/gdb/corefile.c @@ -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 } -- cgit v1.1