aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Jacobowitz <drow@false.org>2008-03-14 18:39:43 +0000
committerDaniel Jacobowitz <drow@false.org>2008-03-14 18:39:43 +0000
commitc04ea773f9e9764a17382e6c1e0cf5a8d24df67a (patch)
tree562abf1cccaba1620d6d4edcda52252a8c3632a1
parent952dc227b2fbc938feb2c4b8b9d5a4d5ed7473ad (diff)
downloadgdb-c04ea773f9e9764a17382e6c1e0cf5a8d24df67a.zip
gdb-c04ea773f9e9764a17382e6c1e0cf5a8d24df67a.tar.gz
gdb-c04ea773f9e9764a17382e6c1e0cf5a8d24df67a.tar.bz2
* cache.c (close_one): Remove mtime hack.
* corefile.c (reopen_exec_file): Use exec_bfd_mtime. * exec.c (exec_bfd_mtime): Define. (exec_close): Clear it. (exec_file_attach): Set it. * gdbcore.h (exec_bfd_mtime): Declare. * source.c (find_source_lines): Do not use bfd_get_mtime.
-rw-r--r--bfd/ChangeLog4
-rw-r--r--bfd/cache.c16
-rw-r--r--gdb/ChangeLog9
-rw-r--r--gdb/corefile.c3
-rw-r--r--gdb/exec.c4
-rw-r--r--gdb/gdbcore.h3
-rw-r--r--gdb/source.c4
7 files changed, 23 insertions, 20 deletions
diff --git a/bfd/ChangeLog b/bfd/ChangeLog
index 54f5a9b..b49f99d 100644
--- a/bfd/ChangeLog
+++ b/bfd/ChangeLog
@@ -1,3 +1,7 @@
+2008-03-14 Daniel Jacobowitz <dan@codesourcery.com>
+
+ * cache.c (close_one): Remove mtime hack.
+
2008-03-14 H.J. Lu <hongjiu.lu@intel.com>
PR ld/5913
diff --git a/bfd/cache.c b/bfd/cache.c
index 064cebe..eb6120d 100644
--- a/bfd/cache.c
+++ b/bfd/cache.c
@@ -166,22 +166,6 @@ close_one (void)
kill->where = real_ftell ((FILE *) kill->iostream);
- /* Save the file st_mtime. This is a hack so that gdb can detect when
- an executable has been deleted and recreated. The only thing that
- makes this reasonable is that st_mtime doesn't change when a file
- is unlinked, so saving st_mtime makes BFD's file cache operation
- a little more transparent for this particular usage pattern. If we
- hadn't closed the file then we would not have lost the original
- contents, st_mtime etc. Of course, if something is writing to an
- existing file, then this is the wrong thing to do.
- FIXME: gdb should save these times itself on first opening a file,
- and this hack be removed. */
- if (kill->direction == no_direction || kill->direction == read_direction)
- {
- bfd_get_mtime (kill);
- kill->mtime_set = TRUE;
- }
-
return bfd_cache_delete (kill);
}
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 075a799..082c44c 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,12 @@
+2008-03-14 Daniel Jacobowitz <dan@codesourcery.com>
+
+ * corefile.c (reopen_exec_file): Use exec_bfd_mtime.
+ * exec.c (exec_bfd_mtime): Define.
+ (exec_close): Clear it.
+ (exec_file_attach): Set it.
+ * gdbcore.h (exec_bfd_mtime): Declare.
+ * source.c (find_source_lines): Do not use bfd_get_mtime.
+
2008-03-14 Vladimir Prus <vladimir@codesourcery.com>
* top.c (simplified_command_loop): Remove.
diff --git a/gdb/corefile.c b/gdb/corefile.c
index 7452f50..b1dbc6b 100644
--- a/gdb/corefile.c
+++ b/gdb/corefile.c
@@ -160,10 +160,9 @@ reopen_exec_file (void)
/* If the timestamp of the exec file has changed, reopen it. */
filename = xstrdup (bfd_get_filename (exec_bfd));
make_cleanup (xfree, filename);
- mtime = bfd_get_mtime (exec_bfd);
res = stat (filename, &st);
- if (mtime && mtime != st.st_mtime)
+ if (exec_bfd_mtime && exec_bfd_mtime != st.st_mtime)
exec_file_attach (filename, 0);
#endif
}
diff --git a/gdb/exec.c b/gdb/exec.c
index 7648b03..a759ab5 100644
--- a/gdb/exec.c
+++ b/gdb/exec.c
@@ -69,6 +69,7 @@ struct target_ops exec_ops;
/* The Binary File Descriptor handle for the executable file. */
bfd *exec_bfd = NULL;
+long exec_bfd_mtime = 0;
/* Whether to open exec and core files read-only or read-write. */
@@ -136,6 +137,7 @@ exec_close (int quitting)
name, bfd_errmsg (bfd_get_error ()));
xfree (name);
exec_bfd = NULL;
+ exec_bfd_mtime = 0;
}
if (exec_ops.to_sections)
@@ -260,6 +262,8 @@ exec_file_attach (char *filename, int from_tty)
scratch_pathname, bfd_errmsg (bfd_get_error ()));
}
+ exec_bfd_mtime = bfd_get_mtime (exec_bfd);
+
validate_files ();
set_gdbarch_from_file (exec_bfd);
diff --git a/gdb/gdbcore.h b/gdb/gdbcore.h
index 383cc3f..6d8d2eb 100644
--- a/gdb/gdbcore.h
+++ b/gdb/gdbcore.h
@@ -104,6 +104,9 @@ extern void specify_exec_file_hook (void (*hook) (char *filename));
extern bfd *core_bfd;
extern bfd *exec_bfd;
+/* The mtime when we last opened exec_bfd. */
+extern long exec_bfd_mtime;
+
/* Whether to open exec and core files read-only or read-write. */
extern int write_files;
diff --git a/gdb/source.c b/gdb/source.c
index 7cbd55f..2c69547 100644
--- a/gdb/source.c
+++ b/gdb/source.c
@@ -1127,9 +1127,9 @@ find_source_lines (struct symtab *s, int desc)
perror_with_name (s->filename);
if (s->objfile && s->objfile->obfd)
- mtime = bfd_get_mtime (s->objfile->obfd);
+ mtime = s->objfile->mtime;
else if (exec_bfd)
- mtime = bfd_get_mtime (exec_bfd);
+ mtime = exec_bfd_mtime;
if (mtime && mtime < st.st_mtime)
warning (_("Source file is more recent than executable."));