/* 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, 2008, 2009, 2010, 2011
+ Copyright (C) 1986-1987, 1989, 1991-1994, 1996-2001, 2003, 2006-2012
Free Software Foundation, Inc.
This file is part of GDB.
#include "gdb_stat.h"
#include "completer.h"
#include "exceptions.h"
+#include "observer.h"
/* Local function declarations. */
bfd *core_bfd = NULL;
-/* corelow.c target (if included for this gdb target). */
+/* corelow.c target. It is never NULL after GDB initialization. */
struct target_ops *core_target;
\f
{
dont_repeat (); /* Either way, seems bogus. */
- if (core_target == NULL)
- error (_("GDB can't read core files on this machine."));
+ gdb_assert (core_target != NULL);
if (!filename)
(core_target->to_detach) (core_target, filename, from_tty);
deprecated_exec_file_display_hook = hook;
}
-/* The exec file must be closed before running an inferior.
- If it is needed again after the inferior dies, it must
- be reopened. */
-
-void
-close_exec_file (void)
-{
-#if 0 /* FIXME */
- if (exec_bfd)
- bfd_tempclose (exec_bfd);
-#endif
-}
-
void
reopen_exec_file (void)
{
-#if 0 /* FIXME */
- if (exec_bfd)
- bfd_reopen (exec_bfd);
-#else
char *filename;
int res;
struct stat st;
bfd_cache_close_all ();
do_cleanups (cleanups);
-#endif
}
\f
/* If we have both a core file and an exec file,
/* Same as target_read_memory, but report an error if can't read. */
void
-read_memory (CORE_ADDR memaddr, gdb_byte *myaddr, int len)
+read_memory (CORE_ADDR memaddr, gdb_byte *myaddr, ssize_t len)
{
int status;
/* Same as target_read_stack, but report an error if can't read. */
void
-read_stack (CORE_ADDR memaddr, gdb_byte *myaddr, int len)
+read_stack (CORE_ADDR memaddr, gdb_byte *myaddr, ssize_t len)
{
int status;
write. */
void
write_memory (CORE_ADDR memaddr,
- const bfd_byte *myaddr, int len)
+ const bfd_byte *myaddr, ssize_t len)
{
int status;
memory_error (status, memaddr);
}
+/* Same as write_memory, but notify 'memory_changed' observers. */
+
+void
+write_memory_with_notification (CORE_ADDR memaddr, const bfd_byte *myaddr,
+ ssize_t len)
+{
+ write_memory (memaddr, myaddr, len);
+ observer_notify_memory_changed (memaddr, len, myaddr);
+}
+
/* Store VALUE at ADDR in the inferior as a LEN-byte unsigned
integer. */
void