Removed superflous code.
[deliverable/binutils-gdb.git] / gdb / corelow.c
index 48bc1843f7b06110b9bfc0684b05c86546fa4bc0..831b4b29539649f4555158d79cc0684c041d86b4 100644 (file)
@@ -1,5 +1,5 @@
 /* Core dump and executable file functions below target vector, for GDB.
-   Copyright 1986, 1987, 1989, 1991, 1992, 1993, 1994, 1995
+   Copyright 1986, 87, 89, 91, 92, 93, 94, 95, 96, 97, 1998
    Free Software Foundation, Inc.
 
 This file is part of GDB.
@@ -30,7 +30,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
 #include "bfd.h"
 #include "target.h"
 #include "gdbcore.h"
-#include "thread.h"
+#include "gdbthread.h"
 
 /* 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
@@ -52,6 +52,12 @@ static void core_close PARAMS ((int));
 
 static void get_core_registers PARAMS ((int));
 
+static void add_to_thread_list PARAMS ((bfd *, asection *, PTR));
+
+static int ignore PARAMS ((CORE_ADDR, char *));
+
+void _initialize_corelow PARAMS ((void));
+
 /* Link a new core_fns into the global core_file_fns list.  Called on gdb
    startup by the _initialize routine in each core file register reader, to
    register information about each format the the reader is prepared to
@@ -76,10 +82,10 @@ core_close (quitting)
 {
   char *name;
 
-  inferior_pid = 0;            /* Avoid confusion from thread stuff */
-
   if (core_bfd)
     {
+      inferior_pid = 0;                /* Avoid confusion from thread stuff */
+
       name = bfd_get_filename (core_bfd);
       if (!bfd_close (core_bfd))
        warning ("cannot close \"%s\": %s",
@@ -133,7 +139,8 @@ add_to_thread_list (abfd, asect, reg_sect_arg)
 
 /* Warning, Will Robinson, looking at BFD private data! */
 
-  if (asect->filepos == reg_sect->filepos) /* Did we find .reg? */
+  if (reg_sect != NULL
+      && asect->filepos == reg_sect->filepos) /* Did we find .reg? */
     inferior_pid = thread_id;  /* Yes, make it current */
 }
 
@@ -184,7 +191,7 @@ core_open (filename, from_tty)
       /* FIXME: should be checking for errors from bfd_close (for one thing,
         on error it does not free all the storage associated with the
         bfd).  */
-      make_cleanup (bfd_close, temp_bfd);
+      make_cleanup ((make_cleanup_func) bfd_close, temp_bfd);
       error ("\"%s\" is not a core dump: %s",
             filename, bfd_errmsg (bfd_get_error ()));
     }
@@ -194,7 +201,7 @@ core_open (filename, from_tty)
   discard_cleanups (old_chain);                /* Don't free filename any more */
   unpush_target (&core_ops);
   core_bfd = temp_bfd;
-  old_chain = make_cleanup (core_close, core_bfd);
+  old_chain = make_cleanup ((make_cleanup_func) core_close, core_bfd);
 
   validate_files ();
 
@@ -273,9 +280,9 @@ get_core_registers (regno)
   sec_ptr reg_sec;
   unsigned size;
   char *the_regs;
-  char secname[10];
+  char secname[30];
   enum bfd_flavour our_flavour = bfd_get_flavour (core_bfd);
-  struct core_fns *cf;
+  struct core_fns *cf = NULL;
 
   if (core_file_fns == NULL)
     {
@@ -412,8 +419,17 @@ struct target_ops core_ops = {
   OPS_MAGIC,                   /* to_magic */
 };
 
+/* non-zero if we should not do the add_target call in
+   _initialize_corelow; not initialized (i.e., bss) so that
+   the target can initialize it (i.e., data) if appropriate.
+   This needs to be set at compile time because we don't know
+   for sure whether the target's initialize routine is called
+   before us or after us. */
+int coreops_suppress_target;
+
 void
-_initialize_corelow()
+_initialize_corelow ()
 {
-  add_target (&core_ops);
+  if (!coreops_suppress_target)
+    add_target (&core_ops);
 }
This page took 0.024253 seconds and 4 git commands to generate.