mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2024-11-23 18:14:13 +08:00
* 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.
This commit is contained in:
parent
952dc227b2
commit
c04ea773f9
@ -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
|
||||
|
16
bfd/cache.c
16
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);
|
||||
}
|
||||
|
||||
|
@ -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.
|
||||
|
@ -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
|
||||
}
|
||||
|
@ -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);
|
||||
|
@ -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;
|
||||
|
@ -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."));
|
||||
|
Loading…
Reference in New Issue
Block a user