1999-01-19 Fernando Nasser <fnasser@totem.to.cygnus.com>
[deliverable/binutils-gdb.git] / gdb / remote-sim.c
index 853fd4025e7f6a82cb85dfdbdfbe80ebbe1e0a73..e10fcedd6b760ebfbb53768baac7624f5d5d43a7 100644 (file)
@@ -97,7 +97,7 @@ static void gdbsim_mourn_inferior PARAMS ((void));
 
 static void gdbsim_stop PARAMS ((void));
 
-static void simulator_command PARAMS ((char *args, int from_tty));
+void simulator_command PARAMS ((char *args, int from_tty));
 
 /* Naming convention:
 
@@ -345,7 +345,7 @@ gdbsim_fetch_register (regno)
       for (regno = 0; regno < NUM_REGS; regno++)
        gdbsim_fetch_register (regno);
     }
-  else if (reg_names[regno] != NULL && *reg_names[regno] != '\0')
+  else if (REGISTER_NAME (regno) != NULL && *REGISTER_NAME (regno) != '\0')
     {
       char buf[MAX_REGISTER_RAW_SIZE];
       int nr_bytes = sim_fetch_register (gdbsim_desc, regno, buf, REGISTER_RAW_SIZE (regno));
@@ -356,7 +356,7 @@ gdbsim_fetch_register (regno)
               && warn_user)
        {
          printf_unfiltered ("Size of register %s (%d) incorrect (%d instead of %d))",
-                            reg_names [regno], regno,
+                            REGISTER_NAME (regno), regno,
                             nr_bytes, REGISTER_RAW_SIZE (regno));
          warn_user = 0;
        }
@@ -380,7 +380,7 @@ gdbsim_store_register (regno)
       for (regno = 0; regno < NUM_REGS; regno++)
        gdbsim_store_register (regno);
     }
-  else if (reg_names[regno] != NULL && *reg_names[regno] != '\0')
+  else if (REGISTER_NAME (regno) != NULL && *REGISTER_NAME (regno) != '\0')
     {
       char tmp[MAX_REGISTER_RAW_SIZE];
       int nr_bytes;
@@ -456,7 +456,7 @@ gdbsim_create_inferior (exec_file, args, env)
   char *arg_buf,**argv;
 
   if (exec_file == 0 || exec_bfd == 0)
-    warning ("No exec file specified.");
+    warning ("No executable file specified.");
   if (! program_loaded)
     warning ("No program loaded.");
 
@@ -478,7 +478,7 @@ gdbsim_create_inferior (exec_file, args, env)
       strcat (arg_buf, " ");
       strcat (arg_buf, args);
       argv = buildargv (arg_buf);
-      make_cleanup (freeargv, (char *) argv);
+      make_cleanup ((make_cleanup_func) freeargv, argv);
     }
   else
     argv = NULL;
@@ -528,8 +528,8 @@ gdbsim_open (args, from_tty)
   strcpy (arg_buf, "gdbsim"); /* 7 */
   /* Specify the byte order for the target when it is both selectable
      and explicitly specified by the user (not auto detected). */
-#ifdef TARGET_BYTE_ORDER_SELECTABLE
-  if (!target_byte_order_auto)
+  if (TARGET_BYTE_ORDER_SELECTABLE_P
+      && !TARGET_BYTE_ORDER_AUTO)
     {
       switch (TARGET_BYTE_ORDER)
        {
@@ -543,13 +543,12 @@ gdbsim_open (args, from_tty)
          fatal ("Value of TARGET_BYTE_ORDER unknown");
        }
     }
-#endif
   /* Specify the architecture of the target when it has been
      explicitly specified */
-  if (!target_architecture_auto)
+  if (!TARGET_ARCHITECTURE_AUTO)
     {
       strcat (arg_buf, " --architecture=");
-      strcat (arg_buf, target_architecture->printable_name);
+      strcat (arg_buf, TARGET_ARCHITECTURE->printable_name);
     }
   /* finally, any explicit args */
   if (args)
@@ -560,7 +559,7 @@ gdbsim_open (args, from_tty)
   argv = buildargv (arg_buf);
   if (argv == NULL)
     error ("Insufficient memory available to allocate simulator arg list.");
-  make_cleanup (freeargv, (char *) argv);
+  make_cleanup ((make_cleanup_func) freeargv, argv);
 
   init_callbacks ();
   gdbsim_desc = sim_open (SIM_OPEN_DEBUG, &gdb_callback, exec_bfd, argv);
@@ -889,7 +888,7 @@ gdbsim_remove_breakpoint (addr, contents_cache)
 /* Pass the command argument through to the simulator verbatim.  The
    simulator must do any command interpretation work.  */
 
-static void
+void
 simulator_command (args, from_tty)
      char *args;
      int from_tty;
@@ -911,22 +910,32 @@ simulator_command (args, from_tty)
     }
 
   sim_do_command (gdbsim_desc, args);
+
+  /* Invalidate the register cache, in case the simulator command does
+     something funny. */
+  registers_changed (); 
 }
 
 /* Define the target subroutine names */
 
 struct target_ops gdbsim_ops ;
-static void init_gdbsim_ops(void)
+
+static void 
+init_gdbsim_ops(void)
 {
   gdbsim_ops.to_shortname =   "sim";           
   gdbsim_ops.to_longname =   "simulator";              
   gdbsim_ops.to_doc =   "Use the compiled-in simulator.";  
   gdbsim_ops.to_open =   gdbsim_open;          
   gdbsim_ops.to_close =   gdbsim_close;                
-  gdbsim_ops.to_attach =   NULL;               
-  gdbsim_ops.to_detach =   gdbsim_detach;      
+  gdbsim_ops.to_attach =   NULL;
+  gdbsim_ops.to_post_attach = NULL;  
+  gdbsim_ops.to_require_attach = NULL; 
+  gdbsim_ops.to_detach =   gdbsim_detach;
+  gdbsim_ops.to_require_detach = NULL; 
   gdbsim_ops.to_resume =   gdbsim_resume;      
-  gdbsim_ops.to_wait  =   gdbsim_wait;         
+  gdbsim_ops.to_wait  =   gdbsim_wait;
+  gdbsim_ops.to_post_wait = NULL;              
   gdbsim_ops.to_fetch_registers  =   gdbsim_fetch_register;
   gdbsim_ops.to_store_registers  =   gdbsim_store_register;
   gdbsim_ops.to_prepare_to_store =   gdbsim_prepare_to_store;
@@ -943,11 +952,30 @@ static void init_gdbsim_ops(void)
   gdbsim_ops.to_load  =   gdbsim_load; 
   gdbsim_ops.to_lookup_symbol =   NULL;        
   gdbsim_ops.to_create_inferior =   gdbsim_create_inferior;
+  gdbsim_ops.to_post_startup_inferior = NULL;
+  gdbsim_ops.to_acknowledge_created_inferior = NULL;
+  gdbsim_ops.to_clone_and_follow_inferior = NULL;
+  gdbsim_ops.to_post_follow_inferior_by_clone = NULL;
+  gdbsim_ops.to_insert_fork_catchpoint = NULL;
+  gdbsim_ops.to_remove_fork_catchpoint = NULL;
+  gdbsim_ops.to_insert_vfork_catchpoint = NULL;
+  gdbsim_ops.to_remove_vfork_catchpoint = NULL;
+  gdbsim_ops.to_has_forked = NULL;
+  gdbsim_ops.to_has_vforked = NULL;
+  gdbsim_ops.to_can_follow_vfork_prior_to_exec = NULL;
+  gdbsim_ops.to_post_follow_vfork = NULL;
+  gdbsim_ops.to_insert_exec_catchpoint = NULL;
+  gdbsim_ops.to_remove_exec_catchpoint = NULL;
+  gdbsim_ops.to_has_execd = NULL;
+  gdbsim_ops.to_reported_exec_events_per_exec_call = NULL;
+  gdbsim_ops.to_has_exited = NULL;
   gdbsim_ops.to_mourn_inferior =   gdbsim_mourn_inferior;
   gdbsim_ops.to_can_run  =   0;                        
   gdbsim_ops.to_notice_signals =   0;          
   gdbsim_ops.to_thread_alive  =   0;           
-  gdbsim_ops.to_stop  =   gdbsim_stop;         
+  gdbsim_ops.to_stop  =   gdbsim_stop;
+  gdbsim_ops.to_pid_to_exec_file = NULL;       
+  gdbsim_ops.to_core_file_to_sym_file = NULL;  
   gdbsim_ops.to_stratum =   process_stratum;   
   gdbsim_ops.DONT_USE =   NULL;                
   gdbsim_ops.to_has_all_memory =   1;  
@@ -958,6 +986,10 @@ static void init_gdbsim_ops(void)
   gdbsim_ops.to_sections =   NULL;     
   gdbsim_ops.to_sections_end =   NULL; 
   gdbsim_ops.to_magic =   OPS_MAGIC;   
+
+#ifdef TARGET_REDEFINE_DEFAULT_OPS
+  TARGET_REDEFINE_DEFAULT_OPS (&gdbsim_ops);
+#endif
 }
 
 void
This page took 0.025201 seconds and 4 git commands to generate.