Index: gdb/corefile.c |
diff --git a/gdb/corefile.c b/gdb/corefile.c |
index c07447b20913a4b61f2b5e2f0b38e44b368b467a..ac8eff55a6e2559878c001601ed29ca5a41f883f 100644 |
--- a/gdb/corefile.c |
+++ b/gdb/corefile.c |
@@ -34,6 +34,7 @@ |
#include "gdb_stat.h" |
#include "completer.h" |
#include "exceptions.h" |
+#include "observer.h" |
/* Local function declarations. */ |
@@ -60,7 +61,7 @@ static int exec_file_hook_count = 0; /* Size of array. */ |
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; |
@@ -72,8 +73,7 @@ core_file_command (char *filename, int from_tty) |
{ |
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); |
@@ -132,26 +132,9 @@ specify_exec_file_hook (void (*hook) (char *)) |
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; |
@@ -175,7 +158,6 @@ reopen_exec_file (void) |
bfd_cache_close_all (); |
do_cleanups (cleanups); |
-#endif |
} |
/* If we have both a core file and an exec file, |
@@ -232,7 +214,7 @@ memory_error (int status, CORE_ADDR memaddr) |
/* 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; |
@@ -244,7 +226,7 @@ read_memory (CORE_ADDR memaddr, gdb_byte *myaddr, int len) |
/* 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; |
@@ -371,7 +353,7 @@ read_memory_typed_address (CORE_ADDR addr, struct type *type) |
write. */ |
void |
write_memory (CORE_ADDR memaddr, |
- const bfd_byte *myaddr, int len) |
+ const bfd_byte *myaddr, ssize_t len) |
{ |
int status; |
@@ -380,6 +362,16 @@ write_memory (CORE_ADDR memaddr, |
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 |