* configure.ac: Use AC_CHECK_DECLS instead of gcc_AC_CHECK_DECLS
[deliverable/binutils-gdb.git] / gdb / corelow.c
index c0b782dfd2216fd16e311075a996fd8dbb8f8378..9e052c5fab8be9330a42da1ee7f6a25622232098 100644 (file)
 #include "symfile.h"
 #include "exec.h"
 #include "readline/readline.h"
-
+#include "observer.h"
 #include "gdb_assert.h"
+#include "exceptions.h"
 
 #ifndef O_BINARY
 #define O_BINARY 0
 #endif
 
-/* List of all available core_fns.  On gdb startup, each core file register
-   reader calls add_core_fns() to register information on each core format it
-   is prepared to read. */
+#ifndef O_LARGEFILE
+#define O_LARGEFILE 0
+#endif
+
+/* List of all available core_fns.  On gdb startup, each core file
+   register reader calls deprecated_add_core_fns() to register
+   information on each core format it is prepared to read.  */
 
 static struct core_fns *core_file_fns = NULL;
 
@@ -104,7 +109,7 @@ struct target_ops core_ops;
    handle. */
 
 void
-add_core_fns (struct core_fns *cf)
+deprecated_add_core_fns (struct core_fns *cf)
 {
   cf->next = core_file_fns;
   core_file_fns = cf;
@@ -280,6 +285,7 @@ core_open (char *filename, int from_tty)
   bfd *temp_bfd;
   int ontop;
   int scratch_chan;
+  int flags;
 
   target_preopen (from_tty);
   if (!filename)
@@ -299,7 +305,12 @@ core_open (char *filename, int from_tty)
 
   old_chain = make_cleanup (xfree, filename);
 
-  scratch_chan = open (filename, O_BINARY | ( write_files ? O_RDWR : O_RDONLY ), 0);
+  flags = O_BINARY | O_LARGEFILE;
+  if (write_files)
+    flags |= O_RDWR;
+  else
+    flags |= O_RDONLY;
+  scratch_chan = open (filename, flags, 0);
   if (scratch_chan < 0)
     perror_with_name (filename);
 
@@ -355,6 +366,10 @@ core_open (char *filename, int from_tty)
   ontop = !push_target (&core_ops);
   discard_cleanups (old_chain);
 
+  /* This is done first, before anything has a chance to query the
+     inferior for information such as symbols.  */
+  observer_notify_inferior_created (&core_ops, from_tty);
+
   p = bfd_core_file_failing_command (core_bfd);
   if (p)
     printf_filtered ("Core was generated by `%s'.\n", p);
@@ -388,8 +403,7 @@ core_open (char *filename, int from_tty)
       /* Now, set up the frame cache, and print the top of stack.  */
       flush_cached_frames ();
       select_frame (get_current_frame ());
-      print_stack_frame (deprecated_selected_frame,
-                        frame_relative_level (deprecated_selected_frame), 1);
+      print_stack_frame (get_selected_frame (NULL), 1, SRC_AND_LOC);
     }
   else
     {
@@ -525,11 +539,11 @@ core_xfer_partial (struct target_ops *ops, enum target_object object,
     {
     case TARGET_OBJECT_MEMORY:
       if (readbuf)
-       return (*ops->to_xfer_memory) (offset, readbuf, len, 0/*write*/,
-                                      NULL, ops);
+       return (*ops->deprecated_xfer_memory) (offset, readbuf, len,
+                                              0/*write*/, NULL, ops);
       if (writebuf)
-       return (*ops->to_xfer_memory) (offset, readbuf, len, 1/*write*/,
-                                      NULL, ops);
+       return (*ops->deprecated_xfer_memory) (offset, readbuf, len,
+                                              1/*write*/, NULL, ops);
       return -1;
 
     case TARGET_OBJECT_AUXV:
@@ -642,7 +656,7 @@ init_core_ops (void)
   core_ops.to_detach = core_detach;
   core_ops.to_fetch_registers = get_core_registers;
   core_ops.to_xfer_partial = core_xfer_partial;
-  core_ops.to_xfer_memory = xfer_memory;
+  core_ops.deprecated_xfer_memory = xfer_memory;
   core_ops.to_files_info = core_files_info;
   core_ops.to_insert_breakpoint = ignore;
   core_ops.to_remove_breakpoint = ignore;
This page took 0.02465 seconds and 4 git commands to generate.