1999-01-19 Fernando Nasser <fnasser@totem.to.cygnus.com>
[deliverable/binutils-gdb.git] / gdb / remote-e7000.c
index 20cf774c1b273c7e077855969313a3bee38e0a85..c8caf182da434602ba387646f21ad39f6a8a6c1d 100644 (file)
@@ -1,5 +1,5 @@
 /* Remote debugging interface for Hitachi E7000 ICE, for GDB
-   Copyright 1993, 1994, 1996 Free Software Foundation, Inc.
+   Copyright 1993, 1994, 1996, 1997, 1998 Free Software Foundation, Inc.
    Contributed by Cygnus Support. 
 
    Written by Steve Chamberlain for Cygnus Support.
@@ -33,6 +33,7 @@
 
 #include "defs.h"
 #include "gdbcore.h"
+#include "gdbarch.h"
 #include "inferior.h"
 #include "target.h"
 #include "wait.h"
@@ -48,6 +49,7 @@
 #include <time.h>
 #include <ctype.h>
 
+
 #if 1
 #define HARD_BREAKPOINTS       /* Now handled by set option. */
 #define BC_BREAKPOINTS use_hard_breakpoints
@@ -381,7 +383,7 @@ e7000_create_inferior (execfile, args, env)
     error ("Can't pass arguments to remote E7000DEBUG process");
 
   if (execfile == 0 || exec_bfd == 0)
-    error ("No exec file specified");
+    error ("No executable file specified");
 
   entry_pt = (int) bfd_get_start_address (exec_bfd);
 
@@ -920,21 +922,19 @@ e7000_fetch_registers ()
 
 #ifdef GDB_TARGET_IS_SH
   wanted = want;
-  if (target_architecture->arch == bfd_arch_sh)
-    switch (target_architecture->mach)
+  if (TARGET_ARCHITECTURE->arch == bfd_arch_sh)
+    switch (TARGET_ARCHITECTURE->mach)
       {
       case bfd_mach_sh3:
       case bfd_mach_sh3e:
-       /* start-sanitize-sh4 */        
       case bfd_mach_sh4:
-       /* end-sanitize-sh4 */  
        wanted = want_sh3;
       }
 #else
   if (h8300smode)
     wanted = want_h8300s;
   else
-    wanted = want_h8300h);
+    wanted = want_h8300h;
 #endif
   fetch_regs_from_dump (gch, wanted);
 
@@ -1576,7 +1576,7 @@ e7000_load (args, from_tty)
       perror_with_name (filename);
       return;
     }
-  old_chain = make_cleanup (bfd_close, pbfd);
+  old_chain = make_cleanup ((make_cleanup_func) bfd_close, pbfd);
 
   if (!bfd_check_format (pbfd, bfd_object)) 
     error ("\"%s\" is not an object file: %s", filename,
@@ -1710,8 +1710,6 @@ e7000_mourn_inferior ()
 #define MAX_E7000DEBUG_BREAKPOINTS MAX_BREAKPOINTS
 #endif
 
-extern int memory_breakpoint_size;
-
 /* Since we can change to soft breakpoints dynamically, we must define 
    more than enough.  Was breakaddr[MAX_E7000DEBUG_BREAKPOINTS]. */
 static CORE_ADDR breakaddr[MAX_BREAKPOINTS] = {0};
@@ -2077,21 +2075,19 @@ e7000_wait (pid, status)
 
 #ifdef GDB_TARGET_IS_SH
   wanted_nopc = want_nopc;
-  if (target_architecture->arch == bfd_arch_sh)
-    switch (target_architecture->mach)
+  if (TARGET_ARCHITECTURE->arch == bfd_arch_sh)
+    switch (TARGET_ARCHITECTURE->mach)
       {
       case bfd_mach_sh3:
       case bfd_mach_sh3e:
-       /* start-sanitize-sh4 */        
       case bfd_mach_sh4:
-       /* end-sanitize-sh4 */  
        wanted_nopc = want_sh3_nopc;
       }
 #else
   if (h8300smode)
     wanted_nopc = want_nopc_h8300s;
   else
-    wanted_nopc = want_nopc_h8300h);
+    wanted_nopc = want_nopc_h8300h;
 #endif
   fetch_regs_from_dump (gch, wanted_nopc);
 
@@ -2163,59 +2159,84 @@ e7000_stop ()
 
 /* Define the target subroutine names. */
 
-struct target_ops e7000_ops =
+struct target_ops e7000_ops ;
+static void init_e7000_ops(void)
 {
-  "e7000",
-  "Remote Hitachi e7000 target",
-  "Use a remote Hitachi e7000 ICE connected by a serial line,\n\
+  e7000_ops.to_shortname =   "e7000";
+  e7000_ops.to_longname =   "Remote Hitachi e7000 target";
+  e7000_ops.to_doc =   "Use a remote Hitachi e7000 ICE connected by a serial line;\n\
 or a network connection.\n\
 Arguments are the name of the device for the serial line,\n\
 the speed to connect at in bits per second.\n\
 eg\n\
 target e7000 /dev/ttya 9600\n\
-target e7000 foobar",
-  e7000_open,                  /* to_open */
-  e7000_close,                 /* to_close */
-  0,                           /* to_attach */
-  e7000_detach,                        /* to_detach */
-  e7000_resume,                        /* to_resume */
-  e7000_wait,                  /* to_wait */
-  e7000_fetch_register,                /* to_fetch_registers */
-  e7000_store_register,                /* to_store_registers */
-  e7000_prepare_to_store,      /* to_prepare_to_store */
-  e7000_xfer_inferior_memory,  /* to_xfer_memory */
-  e7000_files_info,            /* to_files_info */
-  e7000_insert_breakpoint,     /* to_insert_breakpoint */
-  e7000_remove_breakpoint,     /* to_remove_breakpoint */
-  0,                           /* to_terminal_init */
-  0,                           /* to_terminal_inferior */
-  0,                           /* to_terminal_ours_for_output */
-  0,                           /* to_terminal_ours */
-  0,                           /* to_terminal_info */
-  e7000_kill,                  /* to_kill */
-  e7000_load,                  /* to_load */
-  0,                           /* to_lookup_symbol */
-  e7000_create_inferior,       /* to_create_inferior */
-  e7000_mourn_inferior,                /* to_mourn_inferior */
-  0,                           /* to_can_run */
-  0,                           /* to_notice_signals */
-  0,                           /* to_thread_alive */
-  e7000_stop,                  /* to_stop */
-  process_stratum,             /* to_stratum */
-  0,                           /* next (unused) */
-  1,                           /* to_has_all_memory */
-  1,                           /* to_has_memory */
-  1,                           /* to_has_stack */
-  1,                           /* to_has_registers */
-  1,                           /* to_has_execution */
-  0,                           /* to_sections */
-  0,                           /* to_sections_end */
-  OPS_MAGIC,                   /* Always the last thing */
+target e7000 foobar" ;
+  e7000_ops.to_open =   e7000_open;    
+  e7000_ops.to_close =   e7000_close;  
+  e7000_ops.to_attach =   0;
+  e7000_ops.to_post_attach = NULL;
+  e7000_ops.to_require_attach = NULL;  
+  e7000_ops.to_detach =   e7000_detach;
+  e7000_ops.to_require_detach = NULL;  
+  e7000_ops.to_resume =   e7000_resume;        
+  e7000_ops.to_wait  =   e7000_wait;
+  e7000_ops.to_post_wait = NULL;       
+  e7000_ops.to_fetch_registers  =   e7000_fetch_register;
+  e7000_ops.to_store_registers  =   e7000_store_register;
+  e7000_ops.to_prepare_to_store =   e7000_prepare_to_store;
+  e7000_ops.to_xfer_memory  =   e7000_xfer_inferior_memory;
+  e7000_ops.to_files_info  =   e7000_files_info;               
+  e7000_ops.to_insert_breakpoint =   e7000_insert_breakpoint;  
+  e7000_ops.to_remove_breakpoint =   e7000_remove_breakpoint;  
+  e7000_ops.to_terminal_init  =   0;                           
+  e7000_ops.to_terminal_inferior =   0;                                
+  e7000_ops.to_terminal_ours_for_output =   0;                 
+  e7000_ops.to_terminal_ours  =   0;                           
+  e7000_ops.to_terminal_info  =   0;                           
+  e7000_ops.to_kill  =   e7000_kill;           
+  e7000_ops.to_load  =   e7000_load;           
+  e7000_ops.to_lookup_symbol =   0;            
+  e7000_ops.to_create_inferior =   e7000_create_inferior;
+  e7000_ops.to_post_startup_inferior = NULL;
+  e7000_ops.to_acknowledge_created_inferior = NULL;
+  e7000_ops.to_clone_and_follow_inferior = NULL;          
+  e7000_ops.to_post_follow_inferior_by_clone = NULL;  
+  e7000_ops.to_insert_fork_catchpoint = NULL;
+  e7000_ops.to_remove_fork_catchpoint = NULL;
+  e7000_ops.to_insert_vfork_catchpoint = NULL;
+  e7000_ops.to_remove_vfork_catchpoint = NULL;                      
+  e7000_ops.to_has_forked = NULL;
+  e7000_ops.to_has_vforked = NULL;
+  e7000_ops.to_can_follow_vfork_prior_to_exec = NULL;                        
+  e7000_ops.to_post_follow_vfork = NULL;
+  e7000_ops.to_insert_exec_catchpoint = NULL;
+  e7000_ops.to_remove_exec_catchpoint = NULL;
+  e7000_ops.to_has_execd = NULL;
+  e7000_ops.to_reported_exec_events_per_exec_call = NULL;
+  e7000_ops.to_has_exited = NULL;
+  e7000_ops.to_mourn_inferior =   e7000_mourn_inferior;                
+  e7000_ops.to_can_run  =   0;                 
+  e7000_ops.to_notice_signals =   0;           
+  e7000_ops.to_thread_alive  =   0;            
+  e7000_ops.to_stop  =   e7000_stop;
+  e7000_ops.to_pid_to_exec_file = NULL;        
+  e7000_ops.to_core_file_to_sym_file = NULL;
+  e7000_ops.to_stratum =   process_stratum;    
+  e7000_ops.DONT_USE =   0;                    
+  e7000_ops.to_has_all_memory =   1;           
+  e7000_ops.to_has_memory =   1;               
+  e7000_ops.to_has_stack =   1;                        
+  e7000_ops.to_has_registers =   1;            
+  e7000_ops.to_has_execution =   1;            
+  e7000_ops.to_sections =   0;                 
+  e7000_ops.to_sections_end =   0;             
+  e7000_ops.to_magic =   OPS_MAGIC;            
 };
 
 void
 _initialize_remote_e7000 ()
 {
+  init_e7000_ops() ;
   add_target (&e7000_ops);
 
   add_com ("e7000", class_obscure, e7000_command,
This page took 0.025807 seconds and 4 git commands to generate.