* hppa-tdep.c (hppa_push_arguments): Allocate enough space for
[deliverable/binutils-gdb.git] / gdb / remote-nindy.c
index 91b98ad99afbcef407610a6d24347c9fc80cf896..55efac778dacd76f295b15290bd7604916163f8c 100644 (file)
@@ -102,10 +102,11 @@ NINDY ROM monitor at the other end of the line.
 
 #include "frame.h"
 #include "inferior.h"
+#include "bfd.h"
+#include "symfile.h"
 #include "target.h"
 #include "gdbcore.h"
 #include "command.h"
-#include "bfd.h"
 #include "ieee-float.h"
 
 #include "wait.h"
@@ -121,11 +122,9 @@ extern int unlink();
 extern char *getenv();
 extern char *mktemp();
 
-extern char *coffstrip();
 extern void generic_mourn_inferior ();
 
 extern struct target_ops nindy_ops;
-extern jmp_buf to_top_level;
 extern FILE *instream;
 extern struct ext_format ext_format_i960;      /* i960-tdep.c */
 
@@ -272,57 +271,8 @@ nindy_files_info ()
          nindy_initial_brk? " with initial break": "");
 }
 \f
-/******************************************************************************
- * remote_load:
- *     Download an object file to the remote system by invoking the "comm960"
- *     utility.  We look for "comm960" in $G960BIN, $G960BASE/bin, and
- *     DEFAULT_BASE/bin/HOST/bin where
- *             DEFAULT_BASE is defined in env.h, and
- *             HOST must be defined on the compiler invocation line.
- ******************************************************************************/
-
-static void
-nindy_load( filename, from_tty )
-    char *filename;
-    int from_tty;
-{
-  asection *s;
-  /* Can't do unix style forking on a VMS system, so we'll use bfd to do
-     all the work for us 
-     */
-
-  bfd *file = bfd_openr(filename,0);
-  if (!file) 
-  {
-    perror_with_name(filename);
-    return;
-  }
-  
-  if (!bfd_check_format(file, bfd_object)) 
-  {
-    error("can't prove it's an object file\n");
-    return;
-  }
-  
-  for ( s = file->sections; s; s=s->next) 
-  {
-    if (s->flags & SEC_LOAD) 
-    {
-      char *buffer = xmalloc(s->_raw_size);
-      bfd_get_section_contents(file, s, buffer, 0, s->_raw_size);
-      printf("Loading section %s, size %x vma %x\n",
-            s->name, 
-            s->_raw_size,
-            s->vma);
-      ninMemPut(s->vma, buffer, s->_raw_size);
-      free(buffer);
-    }
-  }
-  bfd_close(file);
-}
-
-/* Return the number of characters in the buffer before the first DLE character.
- */
+/* Return the number of characters in the buffer before
+   the first DLE character.  */
 
 static
 int
@@ -885,9 +835,27 @@ void
 nindy_mourn_inferior ()
 {
   remove_breakpoints ();
+  unpush_target (&nindy_ops);
   generic_mourn_inferior ();   /* Do all the proper things now */
 }
 \f
+/* Pass the args the way catch_errors wants them.  */
+static int
+nindy_open_stub (arg)
+     char *arg;
+{
+  nindy_open (arg, 1);
+  return 1;
+}
+
+static int
+load_stub (arg)
+     char *arg;
+{
+  target_load (arg, 1);
+  return 1;
+}
+
 /* This routine is run as a hook, just before the main command loop is
    entered.  If gdb is configured for the i960, but has not had its
    nindy target specified yet, this will loop prompting the user to do so.
@@ -902,7 +870,6 @@ nindy_before_main_loop ()
   char ttyname[100];
   char *p, *p2;
 
-  setjmp(to_top_level);
   while (current_target != &nindy_ops) { /* remote tty not specified yet */
        if ( instream == stdin ){
                printf("\nAttach /dev/ttyNN -- specify NN, or \"quit\" to quit:  ");
@@ -925,13 +892,16 @@ nindy_before_main_loop ()
                exit(1);
        }
 
-       nindy_open( p, 1 );
-
-       /* Now that we have a tty open for talking to the remote machine,
-          download the executable file if one was specified.  */
-       if ( !setjmp(to_top_level) && exec_bfd ) {
-             target_load (bfd_get_filename (exec_bfd), 1);
-       }
+       if (catch_errors (nindy_open_stub, p, "", RETURN_MASK_ALL))
+         {
+           /* Now that we have a tty open for talking to the remote machine,
+              download the executable file if one was specified.  */
+           if (exec_bfd)
+             {
+               catch_errors (load_stub, bfd_get_filename (exec_bfd), "",
+                             RETURN_MASK_ALL);
+             }
+         }
   }
 }
 \f
@@ -955,7 +925,7 @@ specified when you started GDB.",
        0, 0, /* insert_breakpoint, remove_breakpoint, */
        0, 0, 0, 0, 0,  /* Terminal crud */
        nindy_kill,
-       nindy_load,
+       generic_load,
        0, /* lookup_symbol */
        nindy_create_inferior,
        nindy_mourn_inferior,
This page took 0.026638 seconds and 4 git commands to generate.