*** empty log message ***
[deliverable/binutils-gdb.git] / gdb / gnu-nat.c
index 4527ba9e8e9d3de7767db9bd5390ef8742c1fb9b..4e0eef50ec49a6c15c69d8f783edf8cc5c3f4947 100644 (file)
@@ -1,5 +1,5 @@
 /* Interface GDB to the GNU Hurd.
-   Copyright 1992, 1995, 1996, 1997, 1998, 1999, 2000, 2001
+   Copyright (C) 1992, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2006, 2007
    Free Software Foundation, Inc.
 
    This file is part of GDB.
@@ -10,7 +10,7 @@
 
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
-   the Free Software Foundation; either version 2 of the License, or
+   the Free Software Foundation; either version 3 of the License, or
    (at your option) any later version.
 
    This program is distributed in the hope that it will be useful,
@@ -19,9 +19,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., 59 Temple Place - Suite 330,
-   Boston, MA 02111-1307, USA.
+   along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include <ctype.h>
@@ -45,6 +43,9 @@
 #include <hurd/msg.h>
 #include <hurd/msg_request.h>
 #include <hurd/process.h>
+/* Defined in <hurd/process.h>, but we need forward declarations from
+   <hurd/process_request.h> as well.  */
+#undef _process_user_
 #include <hurd/process_request.h>
 #include <hurd/signal.h>
 #include <hurd/sigpreempt.h>
@@ -1050,7 +1051,10 @@ inf_validate_procs (struct inf *inf)
            proc_debug (thread, "died!");
            thread->port = MACH_PORT_NULL;
            thread = _proc_free (thread);       /* THREAD is dead.  */
-           (last ? last->next : inf->threads) = thread;
+           if (last)
+             last->next = thread;
+           else
+             inf->threads = thread;
          }
       }
 
@@ -1063,7 +1067,10 @@ inf_validate_procs (struct inf *inf)
          /* THREADS[I] is a thread we don't know about yet!  */
          {
            thread = make_proc (inf, threads[i], next_thread_id++);
-           (last ? last->next : inf->threads) = thread;
+           if (last)
+             last->next = thread;
+           else
+             inf->threads = thread;
            last = thread;
            proc_debug (thread, "new thread: %d", threads[i]);
            add_thread (pid_to_ptid (thread->tid));     /* Tell GDB's generic thread code.  */
@@ -1972,7 +1979,7 @@ gnu_resume (ptid_t tid, int step, enum target_signal sig)
     {
       struct proc *thread = inf_tid_to_thread (inf, PIDGET (tid));
       if (!thread)
-       error (_("Can't run single thread id %d: no such thread!"));
+       error (_("Can't run single thread id %d: no such thread!"), inf->pid);
       inf_debug (inf, "running one thread: %d/%d", inf->pid, thread->tid);
       inf_set_threads_resume_sc (inf, thread, 0);
     }
@@ -2089,9 +2096,6 @@ gnu_create_inferior (char *exec_file, char *allargs, char **env,
     inf_steal_exc_ports (inf);
   else
     inf_restore_exc_ports (inf);
-
-  /* Here we go!  */
-  proceed ((CORE_ADDR) -1, 0, 0);
 }
 
 /* Mark our target-struct as eligible for stray "run" and "attach"
@@ -2113,7 +2117,7 @@ gnu_attach (char *args, int from_tty)
   struct inf *inf = cur_inf ();
 
   if (!args)
-    error_no_arg ("process-id to attach");
+    error_no_arg (_("process-id to attach"));
 
   pid = atoi (args);
 
@@ -2201,11 +2205,8 @@ gnu_terminal_init_inferior (void)
    that registers contains all the registers from the program being
    debugged.  */
 static void
-gnu_prepare_to_store (void)
+gnu_prepare_to_store (struct regcache *regcache)
 {
-#ifdef CHILD_PREPARE_TO_STORE
-  CHILD_PREPARE_TO_STORE ();
-#endif
 }
 
 static void
@@ -2254,7 +2255,7 @@ gnu_read_inferior (task_t task, CORE_ADDR addr, char *myaddr, int length)
   if (err)
     return 0;
 
-  err = hurd_safe_copyin (myaddr, (void *) addr - low_address + copied, length);
+  err = hurd_safe_copyin (myaddr, (void *) (addr - low_address + copied), length);
   if (err)
     {
       warning (_("Read from inferior faulted: %s"), safe_strerror (err));
@@ -2309,7 +2310,7 @@ gnu_write_inferior (task_t task, CORE_ADDR addr, char *myaddr, int length)
 
   deallocate++;
 
-  err = hurd_safe_copyout ((void *) addr - low_address + copied,
+  err = hurd_safe_copyout ((void *) (addr - low_address + copied),
                           myaddr, length);
   CHK_GOTO_OUT ("Write to inferior faulted", err);
 
@@ -2442,7 +2443,7 @@ out:
 /* Return 0 on failure, number of bytes handled otherwise.  TARGET
    is ignored. */
 static int
-gnu_xfer_memory (CORE_ADDR memaddr, char *myaddr, int len, int write,
+gnu_xfer_memory (CORE_ADDR memaddr, gdb_byte *myaddr, int len, int write,
                 struct mem_attrib *attrib,
                 struct target_ops *target)
 {
@@ -2578,8 +2579,8 @@ gnu_pid_to_str (ptid_t ptid)
 }
 
 \f
-extern void gnu_store_registers (int regno);
-extern void gnu_fetch_registers (int regno);
+extern void gnu_store_registers (struct regcache *regcache, int regno);
+extern void gnu_fetch_registers (struct regcache *regcache, int regno);
 
 struct target_ops gnu_ops;
 
@@ -3069,101 +3070,97 @@ info_port_rights_cmd (char *args, int from_tty)
 static void
 add_task_commands (void)
 {
-  add_cmd ("pause", class_run, set_thread_default_pause_cmd,
-          "Set whether the new threads are suspended while gdb has control.\n\
+  add_cmd ("pause", class_run, set_thread_default_pause_cmd, _("\
+Set whether the new threads are suspended while gdb has control.\n\
 This property normally has no effect because the whole task is\n\
 suspended, however, that may be disabled with \"set task pause off\".\n\
-The default value is \"off\".",
+The default value is \"off\"."),
           &set_thread_default_cmd_list);
-  add_cmd ("pause", no_class, show_thread_default_pause_cmd,
-          "Show whether new threads are suspended while gdb has control.",
+  add_cmd ("pause", no_class, show_thread_default_pause_cmd, _("\
+Show whether new threads are suspended while gdb has control."),
           &show_thread_default_cmd_list);
   
-  add_cmd ("run", class_run, set_thread_default_run_cmd,
-          "Set whether new threads are allowed to run \
-(once gdb has noticed them).",
+  add_cmd ("run", class_run, set_thread_default_run_cmd, _("\
+Set whether new threads are allowed to run (once gdb has noticed them)."),
           &set_thread_default_cmd_list);
-  add_cmd ("run", no_class, show_thread_default_run_cmd,
-          "Show whether new threads are allowed to run \
-(once gdb has noticed them).",
+  add_cmd ("run", no_class, show_thread_default_run_cmd, _("\
+Show whether new threads are allowed to run (once gdb has noticed them)."),
           &show_thread_default_cmd_list);
   
   add_cmd ("detach-suspend-count", class_run, set_thread_default_detach_sc_cmd,
-          "Set the default detach-suspend-count value for new threads.",
+          _("Set the default detach-suspend-count value for new threads."),
           &set_thread_default_cmd_list);
   add_cmd ("detach-suspend-count", no_class, show_thread_default_detach_sc_cmd,
-          "Show the default detach-suspend-count value for new threads.",
+          _("Show the default detach-suspend-count value for new threads."),
           &show_thread_default_cmd_list);
 
-  add_cmd ("signals", class_run, set_signals_cmd,
-          "Set whether the inferior process's signals will be intercepted.\n\
-Mach exceptions (such as breakpoint traps) are not affected.",
+  add_cmd ("signals", class_run, set_signals_cmd, _("\
+Set whether the inferior process's signals will be intercepted.\n\
+Mach exceptions (such as breakpoint traps) are not affected."),
           &setlist);
   add_alias_cmd ("sigs", "signals", class_run, 1, &setlist);
-  add_cmd ("signals", no_class, show_signals_cmd,
-          "Show whether the inferior process's signals will be intercepted.",
+  add_cmd ("signals", no_class, show_signals_cmd, _("\
+Show whether the inferior process's signals will be intercepted."),
           &showlist);
   add_alias_cmd ("sigs", "signals", no_class, 1, &showlist);
 
-  add_cmd ("signal-thread", class_run, set_sig_thread_cmd,
-          "Set the thread that gdb thinks is the libc signal thread.\n\
-This thread is run when delivering a signal to a non-stopped process.",
+  add_cmd ("signal-thread", class_run, set_sig_thread_cmd, _("\
+Set the thread that gdb thinks is the libc signal thread.\n\
+This thread is run when delivering a signal to a non-stopped process."),
           &setlist);
   add_alias_cmd ("sigthread", "signal-thread", class_run, 1, &setlist);
-  add_cmd ("signal-thread", no_class, show_sig_thread_cmd,
-          "Set the thread that gdb thinks is the libc signal thread.",
+  add_cmd ("signal-thread", no_class, show_sig_thread_cmd, _("\
+Set the thread that gdb thinks is the libc signal thread."),
           &showlist);
   add_alias_cmd ("sigthread", "signal-thread", no_class, 1, &showlist);
 
-  add_cmd ("stopped", class_run, set_stopped_cmd,
-          "Set whether gdb thinks the inferior process is stopped \
-as with SIGSTOP.\n\
-Stopped process will be continued by sending them a signal.",
+  add_cmd ("stopped", class_run, set_stopped_cmd, _("\
+Set whether gdb thinks the inferior process is stopped as with SIGSTOP.\n\
+Stopped process will be continued by sending them a signal."),
           &setlist);
-  add_cmd ("stopped", no_class, show_signals_cmd,
-          "Show whether gdb thinks the inferior process is stopped \
-as with SIGSTOP.",
+  add_cmd ("stopped", no_class, show_signals_cmd, _("\
+Show whether gdb thinks the inferior process is stopped as with SIGSTOP."),
           &showlist);
 
-  add_cmd ("exceptions", class_run, set_exceptions_cmd,
-          "Set whether exceptions in the inferior process will be trapped.\n\
+  add_cmd ("exceptions", class_run, set_exceptions_cmd, _("\
+Set whether exceptions in the inferior process will be trapped.\n\
 When exceptions are turned off, neither breakpoints nor single-stepping\n\
-will work.",
+will work."),
           &setlist);
   /* Allow `set exc' despite conflict with `set exception-port'.  */
   add_alias_cmd ("exc", "exceptions", class_run, 1, &setlist);
-  add_cmd ("exceptions", no_class, show_exceptions_cmd,
-          "Show whether exceptions in the inferior process will be trapped.",
+  add_cmd ("exceptions", no_class, show_exceptions_cmd, _("\
+Show whether exceptions in the inferior process will be trapped."),
           &showlist);
 
   add_prefix_cmd ("task", no_class, set_task_cmd,
-                 "Command prefix for setting task attributes.",
+                 _("Command prefix for setting task attributes."),
                  &set_task_cmd_list, "set task ", 0, &setlist);
   add_prefix_cmd ("task", no_class, show_task_cmd,
-                 "Command prefix for showing task attributes.",
+                 _("Command prefix for showing task attributes."),
                  &show_task_cmd_list, "show task ", 0, &showlist);
 
-  add_cmd ("pause", class_run, set_task_pause_cmd,
-          "Set whether the task is suspended while gdb has control.\n\
+  add_cmd ("pause", class_run, set_task_pause_cmd, _("\
+Set whether the task is suspended while gdb has control.\n\
 A value of \"on\" takes effect immediately, otherwise nothing happens\n\
 until the next time the program is continued.\n\
 When setting this to \"off\", \"set thread default pause on\" can be\n\
-used to pause individual threads by default instead.",
+used to pause individual threads by default instead."),
           &set_task_cmd_list);
   add_cmd ("pause", no_class, show_task_pause_cmd,
-          "Show whether the task is suspended while gdb has control.",
+          _("Show whether the task is suspended while gdb has control."),
           &show_task_cmd_list);
 
   add_cmd ("detach-suspend-count", class_run, set_task_detach_sc_cmd,
-          "Set the suspend count will leave on the thread when detaching.",
+          _("Set the suspend count will leave on the thread when detaching."),
           &set_task_cmd_list);
   add_cmd ("detach-suspend-count", no_class, show_task_detach_sc_cmd,
-          "Show the suspend count will leave on the thread when detaching.",
+          _("Show the suspend count will leave on the thread when detaching."),
           &show_task_cmd_list);
 
-  add_cmd ("exception-port", no_class, set_task_exc_port_cmd,
-          "Set the task exception port to which we forward exceptions.\n\
-The argument should be the value of the send right in the task.",
+  add_cmd ("exception-port", no_class, set_task_exc_port_cmd, _("\
+Set the task exception port to which we forward exceptions.\n\
+The argument should be the value of the send right in the task."),
           &set_task_cmd_list);
   add_alias_cmd ("excp", "exception-port", no_class, 1, &set_task_cmd_list);
   add_alias_cmd ("exc-port", "exception-port", no_class, 1,
@@ -3171,27 +3168,27 @@ The argument should be the value of the send right in the task.",
 
   /* A convenient way of turning on all options require to noninvasively
      debug running tasks.  */
-  add_cmd ("noninvasive", no_class, set_noninvasive_cmd,
-          "Set task options so that we interfere as little as possible.\n\
+  add_cmd ("noninvasive", no_class, set_noninvasive_cmd, _("\
+Set task options so that we interfere as little as possible.\n\
 This is the same as setting `task pause', `exceptions', and\n\
-`signals' to the opposite value.",
+`signals' to the opposite value."),
           &setlist);
 
   /* Commands to show information about the task's ports.  */
   add_cmd ("send-rights", class_info, info_send_rights_cmd,
-          "Show information about the task's send rights",
+          _("Show information about the task's send rights"),
           &infolist);
   add_cmd ("receive-rights", class_info, info_recv_rights_cmd,
-          "Show information about the task's receive rights",
+          _("Show information about the task's receive rights"),
           &infolist);
   add_cmd ("port-rights", class_info, info_port_rights_cmd,
-          "Show information about the task's port rights",
+          _("Show information about the task's port rights"),
           &infolist);
   add_cmd ("port-sets", class_info, info_port_sets_cmd,
-          "Show information about the task's port sets",
+          _("Show information about the task's port sets"),
           &infolist);
   add_cmd ("dead-names", class_info, info_dead_names_cmd,
-          "Show information about the task's dead names",
+          _("Show information about the task's dead names"),
           &infolist);
   add_info_alias ("ports", "port-rights", 1);
   add_info_alias ("port", "port-rights", 1);
@@ -3304,65 +3301,63 @@ static void
 add_thread_commands (void)
 {
   add_prefix_cmd ("thread", no_class, set_thread_cmd,
-                 "Command prefix for setting thread properties.",
+                 _("Command prefix for setting thread properties."),
                  &set_thread_cmd_list, "set thread ", 0, &setlist);
   add_prefix_cmd ("default", no_class, show_thread_cmd,
-                 "Command prefix for setting default thread properties.",
+                 _("Command prefix for setting default thread properties."),
                  &set_thread_default_cmd_list, "set thread default ", 0,
                  &set_thread_cmd_list);
   add_prefix_cmd ("thread", no_class, set_thread_default_cmd,
-                 "Command prefix for showing thread properties.",
+                 _("Command prefix for showing thread properties."),
                  &show_thread_cmd_list, "show thread ", 0, &showlist);
   add_prefix_cmd ("default", no_class, show_thread_default_cmd,
-                 "Command prefix for showing default thread properties.",
+                 _("Command prefix for showing default thread properties."),
                  &show_thread_default_cmd_list, "show thread default ", 0,
                  &show_thread_cmd_list);
 
-  add_cmd ("pause", class_run, set_thread_pause_cmd,
-          "Set whether the current thread is suspended \
-while gdb has control.\n\
+  add_cmd ("pause", class_run, set_thread_pause_cmd, _("\
+Set whether the current thread is suspended while gdb has control.\n\
 A value of \"on\" takes effect immediately, otherwise nothing happens\n\
 until the next time the program is continued.  This property normally\n\
 has no effect because the whole task is suspended, however, that may\n\
 be disabled with \"set task pause off\".\n\
-The default value is \"off\".",
+The default value is \"off\"."),
           &set_thread_cmd_list);
-  add_cmd ("pause", no_class, show_thread_pause_cmd,
-          "Show whether the current thread is suspended \
-while gdb has control.",
+  add_cmd ("pause", no_class, show_thread_pause_cmd, _("\
+Show whether the current thread is suspended while gdb has control."),
           &show_thread_cmd_list);
 
   add_cmd ("run", class_run, set_thread_run_cmd,
-          "Set whether the current thread is allowed to run.",
+          _("Set whether the current thread is allowed to run."),
           &set_thread_cmd_list);
   add_cmd ("run", no_class, show_thread_run_cmd,
-          "Show whether the current thread is allowed to run.",
+          _("Show whether the current thread is allowed to run."),
           &show_thread_cmd_list);
 
-  add_cmd ("detach-suspend-count", class_run, set_thread_detach_sc_cmd,
-          "Set the suspend count will leave on the thread when detaching.\n\
+  add_cmd ("detach-suspend-count", class_run, set_thread_detach_sc_cmd, _("\
+Set the suspend count will leave on the thread when detaching.\n\
 Note that this is relative to suspend count when gdb noticed the thread;\n\
-use the `thread takeover-suspend-count' to force it to an absolute value.",
+use the `thread takeover-suspend-count' to force it to an absolute value."),
           &set_thread_cmd_list);
-  add_cmd ("detach-suspend-count", no_class, show_thread_detach_sc_cmd,
-          "Show the suspend count will leave on the thread when detaching.\n\
+  add_cmd ("detach-suspend-count", no_class, show_thread_detach_sc_cmd, _("\
+Show the suspend count will leave on the thread when detaching.\n\
 Note that this is relative to suspend count when gdb noticed the thread;\n\
-use the `thread takeover-suspend-count' to force it to an absolute value.",
+use the `thread takeover-suspend-count' to force it to an absolute value."),
           &show_thread_cmd_list);
 
-  add_cmd ("exception-port", no_class, set_thread_exc_port_cmd,
-          "Set the thread exception port to which we forward exceptions.\n\
+  add_cmd ("exception-port", no_class, set_thread_exc_port_cmd, _("\
+Set the thread exception port to which we forward exceptions.\n\
 This overrides the task exception port.\n\
-The argument should be the value of the send right in the task.",
+The argument should be the value of the send right in the task."),
           &set_thread_cmd_list);
   add_alias_cmd ("excp", "exception-port", no_class, 1, &set_thread_cmd_list);
   add_alias_cmd ("exc-port", "exception-port", no_class, 1,
                 &set_thread_cmd_list);
 
-  add_cmd ("takeover-suspend-count", no_class, thread_takeover_sc_cmd,
-          "Force the threads absolute suspend-count to be gdb's.\n\
+  add_cmd ("takeover-suspend-count", no_class, thread_takeover_sc_cmd, _("\
+Force the threads absolute suspend-count to be gdb's.\n\
 Prior to giving this command, gdb's thread suspend-counts are relative\n\
-to the thread's initial suspend-count when gdb notices the threads.",
+to the thread's initial suspend-count when gdb notices the threads."),
           &thread_cmd_list);
 }
 
@@ -3377,9 +3372,10 @@ _initialize_gnu_nat (void)
 
   add_task_commands ();
   add_thread_commands ();
-  add_set_cmd ("gnu-debug", class_maintenance,
-              var_boolean, (char *) &gnu_debug_flag,
-              "Set debugging output for the gnu backend.", &maintenancelist);
+  deprecated_add_set_cmd ("gnu-debug", class_maintenance,
+                         var_boolean, (char *) &gnu_debug_flag,
+                         "Set debugging output for the gnu backend.",
+                         &maintenancelist);
 }
 \f
 #ifdef FLUSH_INFERIOR_CACHE
This page took 0.038217 seconds and 4 git commands to generate.