Fri Sep 4 13:57:43 1998 Jakub Jelinek <jj@sunsite.ms.mff.cuni.cz>
[deliverable/binutils-gdb.git] / gdb / remote-eb.c
index 605945c7663565011475a6e38bba22cbfb9cb817..6fbea888c24114ded245c9c1e95aaf6406ecd4de 100644 (file)
@@ -16,7 +16,7 @@ GNU General Public License for more details.
 
 You should have received a copy of the GNU General Public License
 along with this program; if not, write to the Free Software
-Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.  */
+Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
 
 /* This is like remote.c but is for an esoteric situation--
    having a a29k board in a PC hooked up to a unix machine with
@@ -25,12 +25,12 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.  */
    has PC/NFS, so it can access the same executables that gdb can,
    over the net in real time.  */
 
-#define         TM_FILE_OVERRIDE
 #include "defs.h"
-#include <string.h>
-#include "a29k/tm-a29k.h"
+#include "gdb_string.h"
 
 #include "inferior.h"
+#include "bfd.h"
+#include "symfile.h"
 #include "wait.h"
 #include "value.h"
 #include <ctype.h>
@@ -198,7 +198,7 @@ get_hex_regs (n, regno)
       val = 0;
       for (j = 0; j < 8; j++)
        val = (val << 4) + get_hex_digit (j == 0);
-      supply_register (regno++, &val);
+      supply_register (regno++, (char *) &val);
     }
 }
 
@@ -252,10 +252,6 @@ eb_create_inferior (execfile, args, env)
 
   entry_pt = (int) bfd_get_start_address (exec_bfd);
 
-#ifdef CREATE_INFERIOR_HOOK
-  CREATE_INFERIOR_HOOK (0);            /* No process-ID */
-#endif  
-
   {
     /* OK, now read in the file.  Y=read, C=COFF, D=no symbols
        0=start address, %s=filename.  */
@@ -289,7 +285,7 @@ eb_create_inferior (execfile, args, env)
   target_terminal_inferior ();
 
   /* insert_step_breakpoint ();  FIXME, do we need this?  */
-  proceed ((CORE_ADDR)entry_pt, -1, 0);                /* Let 'er rip... */
+  proceed ((CORE_ADDR)entry_pt, TARGET_SIGNAL_DEFAULT, 0);             /* Let 'er rip... */
 }
 
 /* Translate baud rates from integers to damn B_codes.  Unix should
@@ -479,8 +475,9 @@ eb_detach (from_tty)
 /* Tell the remote machine to resume.  */
 
 void
-eb_resume (step, sig)
-     int step, sig;
+eb_resume (pid, step, sig)
+     int pid, step;
+     enum target_signal sig;
 {
   if (step)
     {
@@ -521,7 +518,7 @@ eb_resume (step, sig)
 
 int
 eb_wait (status)
-     WAITTYPE *status;
+     struct target_waitstatus *status;
 {
   /* Strings to look for.  '?' means match any single character.  
      Note that with the algorithm we use, the initial character
@@ -546,11 +543,13 @@ eb_wait (status)
 
   int old_timeout = timeout;
 
-  WSETEXIT ((*status), 0);
+  status->kind = TARGET_WAITKIND_EXITED;
+  status->value.integer = 0;
 
   if (need_artificial_trap != 0)
     {
-      WSETSTOP ((*status), SIGTRAP);
+      status->kind = TARGET_WAITKIND_STOPPED;
+      status->value.sig = TARGET_SIGNAL_TRAP;
       need_artificial_trap--;
       return 0;
     }
@@ -599,9 +598,15 @@ eb_wait (status)
     }
   expect_prompt ();
   if (*bp== '\0')
-    WSETSTOP ((*status), SIGTRAP);
+    {
+      status->kind = TARGET_WAITKIND_STOPPED;
+      status->value.sig = TARGET_SIGNAL_TRAP;
+    }
   else
-    WSETEXIT ((*status), 0);
+    {
+      status->kind = TARGET_WAITKIND_EXITED;
+      status->value.integer = 0;
+    }
   timeout = old_timeout;
 
   return 0;
@@ -717,10 +722,10 @@ eb_fetch_registers ()
   /* There doesn't seem to be any way to get these.  */
   {
     int val = -1;
-    supply_register (FPE_REGNUM, &val);
-    supply_register (INTE_REGNUM, &val);
-    supply_register (FPS_REGNUM, &val);
-    supply_register (EXO_REGNUM, &val);
+    supply_register (FPE_REGNUM, (char *) &val);
+    supply_register (INTE_REGNUM, (char *) &val);
+    supply_register (FPS_REGNUM, (char *) &val);
+    supply_register (EXO_REGNUM, (char *) &val);
   }
 
   write (eb_desc, "dw gr1,gr1\n", 11);
@@ -964,39 +969,63 @@ void
 eb_mourn_inferior ()
 {
   remove_breakpoints ();
+  unpush_target (&eb_ops);
   generic_mourn_inferior ();   /* Do all the proper things now */
 }
 /* Define the target subroutine names */
 
-struct target_ops eb_ops = {
-       "amd-eb", "Remote serial AMD EBMON target",
-       "Use a remote computer running EBMON connected by a serial line.\n\
+struct target_ops eb_ops ;
+static void init_eb_ops(void)
+{
+  eb_ops.to_shortname =        "amd-eb";
+  eb_ops.to_longname =         "Remote serial AMD EBMON target";
+  eb_ops.to_doc =      "Use a remote computer running EBMON connected by a serial line.\n\
 Arguments are the name of the device for the serial line,\n\
 the speed to connect at in bits per second, and the filename of the\n\
 executable as it exists on the remote computer.  For example,\n\
-        target amd-eb /dev/ttya 9600 demo",
-       eb_open, eb_close, 
-       0, eb_detach, eb_resume, eb_wait,
-       eb_fetch_register, eb_store_register,
-       eb_prepare_to_store,
-       eb_xfer_inferior_memory, eb_files_info,
-       0, 0,   /* Breakpoints */
-       0, 0, 0, 0, 0,  /* Terminal handling */
-       eb_kill,
-       0,      /* load */
-       0, /* lookup_symbol */
-       eb_create_inferior,
-       eb_mourn_inferior,
-       0,      /* can_run */
-       0, /* notice_signals */
-       process_stratum, 0, /* next */
-       1, 1, 1, 1, 1,  /* all mem, mem, stack, regs, exec */
-       0, 0,                   /* Section pointers */
-       OPS_MAGIC,              /* Always the last thing */
+target amd-eb /dev/ttya 9600 demo",
+    eb_ops.to_open =   eb_open;
+  eb_ops.to_close =    eb_close;
+  eb_ops.to_attach =   0;
+  eb_ops.to_detach =   eb_detach;
+  eb_ops.to_resume =   eb_resume;
+  eb_ops.to_wait  =    eb_wait;
+  eb_ops.to_fetch_registers  =         eb_fetch_register;
+  eb_ops.to_store_registers  =         eb_store_register;
+  eb_ops.to_prepare_to_store =         eb_prepare_to_store;
+  eb_ops.to_xfer_memory  =     eb_xfer_inferior_memory;
+  eb_ops.to_files_info  =      eb_files_info;
+  eb_ops.to_insert_breakpoint =        0;
+  eb_ops.to_remove_breakpoint =        0;      /* Breakpoints */
+  eb_ops.to_terminal_init  =   0;
+  eb_ops.to_terminal_inferior =        0;
+  eb_ops.to_terminal_ours_for_output =         0;
+  eb_ops.to_terminal_ours  =   0;
+  eb_ops.to_terminal_info  =   0;      /* Terminal handling */
+  eb_ops.to_kill  =    eb_kill;
+  eb_ops.to_load  =    generic_load;   /* load */
+  eb_ops.to_lookup_symbol =    0; /* lookup_symbol */
+  eb_ops.to_create_inferior =  eb_create_inferior;
+  eb_ops.to_mourn_inferior =   eb_mourn_inferior;
+  eb_ops.to_can_run  =         0;      /* can_run */
+  eb_ops.to_notice_signals =           0; /* notice_signals */
+  eb_ops.to_thread_alive  =    0; /* thread-alive */
+  eb_ops.to_stop  =    0;                      /* to_stop */
+  eb_ops.to_stratum =  process_stratum;
+  eb_ops.DONT_USE =    0; /* next */
+  eb_ops.to_has_all_memory =   1;
+  eb_ops.to_has_memory =       1;
+  eb_ops.to_has_stack =        1;
+  eb_ops.to_has_registers =    1;
+  eb_ops.to_has_execution =    1;      /* all mem, mem, stack, regs, exec */
+  eb_ops.to_sections =         0; /* sections */
+  eb_ops.to_sections_end =     0; /* sections end */
+  eb_ops.to_magic =    OPS_MAGIC;              /* Always the last thing */
 };
 
 void
 _initialize_remote_eb ()
 {
+  init_eb_ops() ;
   add_target (&eb_ops);
 }
This page took 0.026086 seconds and 4 git commands to generate.