/* Core dump and executable file functions above target vector, for GDB.
Copyright (C) 1986, 1987, 1989, 1991, 1992, 1993, 1994, 1996, 1997, 1998,
- 1999, 2000, 2001, 2003, 2006, 2007 Free Software Foundation, Inc.
+ 1999, 2000, 2001, 2003, 2006, 2007, 2008 Free Software Foundation, Inc.
This file is part of GDB.
/* 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);
+ else
+ /* If we accessed the file since last opening it, close it now;
+ this stops GDB from holding the executable open after it
+ exits. */
+ bfd_cache_close_all ();
#endif
}
\f
/* Actually, address between memaddr and memaddr + len
was out of bounds. */
fprintf_unfiltered (tmp_stream, "Cannot access memory at address ");
- deprecated_print_address_numeric (memaddr, 1, tmp_stream);
+ fputs_filtered (paddress (memaddr), tmp_stream);
}
else
{
fprintf_filtered (tmp_stream, "Error accessing memory address ");
- deprecated_print_address_numeric (memaddr, 1, tmp_stream);
+ fputs_filtered (paddress (memaddr), tmp_stream);
fprintf_filtered (tmp_stream, ": %s.",
safe_strerror (status));
}