* target.c (target_read): Stop if target_read_partial returns 0
[deliverable/binutils-gdb.git] / gdb / procfs.c
index 5976624a1b6f1f9f2258634bf169f3f19b8e24c6..23ee3fb9250215d65d7d7ec1362f48d1a551b1e3 100644 (file)
@@ -1,6 +1,6 @@
 /* Machine independent support for SVR4 /proc (process file system) for GDB.
 
-   Copyright 1999, 2000, 2001, 2002, 2003 Free Software Foundation,
+   Copyright (C) 1999, 2000, 2001, 2002, 2003, 2006 Free Software Foundation,
    Inc.
 
    Written by Michael Snyder at Cygnus Solutions.
@@ -20,7 +20,8 @@ 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.  */
+Inc., 51 Franklin Street, Fifth Floor,
+Boston, MA 02110-1301, USA.  */
 
 #include "defs.h"
 #include "inferior.h"
@@ -3374,7 +3375,7 @@ static void remove_dbx_link_breakpoint (void);
    the address of the breakpoint, and the code that was replaced by
    a breakpoint.  */
 static int dbx_link_bpt_addr = 0;
-static char dbx_link_shadow_contents[BREAKPOINT_MAX];
+static void *dbx_link_bpt;
 
 /*
  * Function: procfs_debug_inferior
@@ -3512,7 +3513,7 @@ procfs_attach (char *args, int from_tty)
   int   pid;
 
   if (!args)
-    error_no_arg ("process-id to attach");
+    error_no_arg (_("process-id to attach"));
 
   pid = atoi (args);
   if (pid == getpid ())
@@ -3523,10 +3524,10 @@ procfs_attach (char *args, int from_tty)
       exec_file = get_exec_file (0);
 
       if (exec_file)
-       printf_filtered ("Attaching to program `%s', %s\n",
+       printf_filtered (_("Attaching to program `%s', %s\n"),
                         exec_file, target_pid_to_str (pid_to_ptid (pid)));
       else
-       printf_filtered ("Attaching to %s\n",
+       printf_filtered (_("Attaching to %s\n"),
                         target_pid_to_str (pid_to_ptid (pid)));
 
       fflush (stdout);
@@ -3552,7 +3553,7 @@ procfs_detach (char *args, int from_tty)
       if (exec_file == NULL)
        exec_file = "";
 
-      printf_filtered ("Detaching from program: %s, %s\n", exec_file,
+      printf_filtered (_("Detaching from program: %s, %s\n"), exec_file,
                       target_pid_to_str (pid_to_ptid (pid)));
       gdb_flush (gdb_stdout);
     }
@@ -3648,7 +3649,7 @@ do_detach (int signo)
 
   if (signo || (proc_flags (pi) & (PR_STOPPED | PR_ISTOP)))
     if (signo || !(pi->was_stopped) ||
-       query ("Was stopped when attached, make it runnable again? "))
+       query (_("Was stopped when attached, make it runnable again? ")))
       {
        /* Clear any pending signal.  */
        if (!proc_clear_current_fault (pi))
@@ -3973,7 +3974,7 @@ wait_again:
              case PR_SYSENTRY:
                if (syscall_is_lwp_exit (pi, what))
                  {
-                   printf_filtered ("[%s exited]\n",
+                   printf_filtered (_("[%s exited]\n"),
                                     target_pid_to_str (retval));
                    delete_thread (retval);
                    status->kind = TARGET_WAITKIND_SPURIOUS;
@@ -4020,7 +4021,7 @@ wait_again:
                  }
                else
                  {
-                   printf_filtered ("procfs: trapped on entry to ");
+                   printf_filtered (_("procfs: trapped on entry to "));
                    proc_prettyprint_syscall (proc_what (pi), 0);
                    printf_filtered ("\n");
 #ifndef PIOCSSPCACT
@@ -4030,7 +4031,7 @@ wait_again:
                      if ((nsysargs = proc_nsysarg (pi)) > 0 &&
                          (sysargs  = proc_sysargs (pi)) != NULL)
                        {
-                         printf_filtered ("%ld syscall arguments:\n", nsysargs);
+                         printf_filtered (_("%ld syscall arguments:\n"), nsysargs);
                          for (i = 0; i < nsysargs; i++)
                            printf_filtered ("#%ld: 0x%08lx\n",
                                             i, sysargs[i]);
@@ -4097,7 +4098,7 @@ wait_again:
                    /* If not in GDB's thread list, add it.  */
                    if (!in_thread_list (temp_ptid))
                      {
-                       printf_filtered ("[New %s]\n",
+                       printf_filtered (_("[New %s]\n"),
                                         target_pid_to_str (temp_ptid));
                        add_thread (temp_ptid);
                      }
@@ -4107,7 +4108,7 @@ wait_again:
                  }
                else if (syscall_is_lwp_exit (pi, what))
                  {
-                   printf_filtered ("[%s exited]\n",
+                   printf_filtered (_("[%s exited]\n"),
                                     target_pid_to_str (retval));
                    delete_thread (retval);
                    status->kind = TARGET_WAITKIND_SPURIOUS;
@@ -4124,7 +4125,7 @@ wait_again:
                  }
                else
                  {
-                   printf_filtered ("procfs: trapped on exit from ");
+                   printf_filtered (_("procfs: trapped on exit from "));
                    proc_prettyprint_syscall (proc_what (pi), 0);
                    printf_filtered ("\n");
 #ifndef PIOCSSPCACT
@@ -4134,7 +4135,7 @@ wait_again:
                      if ((nsysargs = proc_nsysarg (pi)) > 0 &&
                          (sysargs  = proc_sysargs (pi)) != NULL)
                        {
-                         printf_filtered ("%ld syscall arguments:\n", nsysargs);
+                         printf_filtered (_("%ld syscall arguments:\n"), nsysargs);
                          for (i = 0; i < nsysargs; i++)
                            printf_filtered ("#%ld: 0x%08lx\n",
                                             i, sysargs[i]);
@@ -4152,7 +4153,7 @@ wait_again:
 #else
                if (retry < 5)
                  {
-                   printf_filtered ("Retry #%d:\n", retry);
+                   printf_filtered (_("Retry #%d:\n"), retry);
                    pi->status_valid = 0;
                    goto wait_again;
                  }
@@ -4167,7 +4168,7 @@ wait_again:
                    temp_ptid = MERGEPID (pi->pid, temp_tid);
                    if (!in_thread_list (temp_ptid))
                      {
-                       printf_filtered ("[New %s]\n",
+                       printf_filtered (_("[New %s]\n"),
                                         target_pid_to_str (temp_ptid));
                        add_thread (temp_ptid);
                      }
@@ -4230,7 +4231,7 @@ wait_again:
                default:         /* FIXME: use si_signo if possible for fault */
                  retval = pid_to_ptid (-1);
                  printf_filtered ("procfs:%d -- ", __LINE__);
-                 printf_filtered ("child stopped for unknown reason:\n");
+                 printf_filtered (_("child stopped for unknown reason:\n"));
                  proc_prettyprint_why (why, what, 1);
                  error (_("... giving up..."));
                  break;
@@ -4238,7 +4239,7 @@ wait_again:
                break;  /* case PR_FAULTED: */
              default:  /* switch (why) unmatched */
                printf_filtered ("procfs:%d -- ", __LINE__);
-               printf_filtered ("child stopped for unknown reason:\n");
+               printf_filtered (_("child stopped for unknown reason:\n"));
                proc_prettyprint_why (why, what, 1);
                error (_("... giving up..."));
                break;
@@ -4257,7 +4258,7 @@ wait_again:
                   * If we don't create a procinfo, resume may be unhappy
                   * later.
                   */
-                 printf_filtered ("[New %s]\n", target_pid_to_str (retval));
+                 printf_filtered (_("[New %s]\n"), target_pid_to_str (retval));
                  add_thread (retval);
                  if (find_procinfo (PIDGET (retval), TIDGET (retval)) == NULL)
                    create_procinfo (PIDGET (retval), TIDGET (retval));
@@ -4614,7 +4615,7 @@ procfs_notice_signals (ptid_t ptid)
 static void
 procfs_files_info (struct target_ops *ignore)
 {
-  printf_filtered ("\tUsing the running image of %s %s via /proc.\n",
+  printf_filtered (_("\tUsing the running image of %s %s via /proc.\n"),
                   attach_flag? "attached": "child",
                   target_pid_to_str (inferior_ptid));
 }
@@ -4776,6 +4777,14 @@ procfs_mourn_inferior (void)
        destroy_procinfo (pi);
     }
   unpush_target (&procfs_ops);
+
+  if (dbx_link_bpt != NULL)
+    {
+      deprecated_remove_raw_breakpoint (dbx_link_bpt);
+      dbx_link_bpt_addr = 0;
+      dbx_link_bpt = NULL;
+    }
+
   generic_mourn_inferior ();
 }
 
@@ -4885,7 +4894,6 @@ procfs_init_inferior (int pid)
      has been inserted, the syssgi() notifications are no longer necessary,
      so they should be canceled.  */
   proc_trace_syscalls_1 (pi, SYS_syssgi, PR_SYSEXIT, FLAG_SET, 0);
-  dbx_link_bpt_addr = 0;
 #endif
 }
 
@@ -4912,7 +4920,7 @@ procfs_set_exec_trap (void)
   sysset_t *exitset;
 
   if ((pi = create_procinfo (getpid (), 0)) == NULL)
-    perror_with_name ("procfs: create_procinfo failed in child.");
+    perror_with_name (_("procfs: create_procinfo failed in child."));
 
   if (open_procinfo_files (pi, FD_CTL) == 0)
     {
@@ -5102,11 +5110,6 @@ procfs_create_inferior (char *exec_file, char *allargs, char **env,
   proc_trace_syscalls_1 (find_procinfo_or_die (PIDGET (inferior_ptid), 0),
                          SYS_syssgi, PR_SYSEXIT, FLAG_RESET, 0);
 #endif
-  
-  /* We are at the first instruction we care about.  */
-  /* Pedal to the metal... */
-
-  proceed ((CORE_ADDR) -1, TARGET_SIGNAL_0, 0);
 }
 
 /*
@@ -5575,11 +5578,11 @@ remove_dbx_link_breakpoint (void)
   if (dbx_link_bpt_addr == 0)
     return;
 
-  if (memory_remove_breakpoint (dbx_link_bpt_addr,
-                                dbx_link_shadow_contents) != 0)
+  if (deprecated_remove_raw_breakpoint (dbx_link_bpt) != 0)
     warning (_("Unable to remove __dbx_link breakpoint."));
 
   dbx_link_bpt_addr = 0;
+  dbx_link_bpt = NULL;
 }
 
 /* Return the address of the __dbx_link() function in the file
@@ -5647,7 +5650,8 @@ insert_dbx_link_bpt_in_file (int fd, CORE_ADDR ignored)
     {
       /* Insert the breakpoint.  */
       dbx_link_bpt_addr = sym_addr;
-      if (target_insert_breakpoint (sym_addr, dbx_link_shadow_contents) != 0)
+      dbx_link_bpt = deprecated_insert_raw_breakpoint (sym_addr);
+      if (dbx_link_bpt == NULL)
         {
           warning (_("Failed to insert dbx_link breakpoint."));
           bfd_close (abfd);
@@ -5770,7 +5774,7 @@ info_proc_mappings (procinfo *pi, int summary)
   if (summary)
     return;    /* No output for summary mode. */
 
-  printf_filtered ("Mapped address spaces:\n\n");
+  printf_filtered (_("Mapped address spaces:\n\n"));
   printf_filtered (header_fmt_string,
                   "Start Addr",
                   "  End Addr",
@@ -5854,7 +5858,7 @@ info_proc_cmd (char *args, int from_tty)
 
   if (process)
     {
-      printf_filtered ("process %d flags:\n", process->pid);
+      printf_filtered (_("process %d flags:\n"), process->pid);
       proc_prettyprint_flags (proc_flags (process), 1);
       if (proc_flags (process) & (PR_STOPPED | PR_ISTOP))
        proc_prettyprint_why (proc_why (process), proc_what (process), 1);
@@ -5864,7 +5868,7 @@ info_proc_cmd (char *args, int from_tty)
     }
   if (thread)
     {
-      printf_filtered ("thread %d flags:\n", thread->tid);
+      printf_filtered (_("thread %d flags:\n"), thread->tid);
       proc_prettyprint_flags (proc_flags (thread), 1);
       if (proc_flags (thread) & (PR_STOPPED | PR_ISTOP))
        proc_prettyprint_why (proc_why (thread), proc_what (thread), 1);
@@ -5927,7 +5931,7 @@ proc_trace_syscalls (char *args, int from_tty, int entry_or_exit, int mode)
     error (_("you must be debugging a process to use this command."));
 
   if (args == NULL || args[0] == 0)
-    error_no_arg ("system call to trace");
+    error_no_arg (_("system call to trace"));
 
   pi = find_procinfo_or_die (PIDGET (inferior_ptid), 0);
   if (isdigit (args[0]))
@@ -5968,18 +5972,18 @@ _initialize_procfs (void)
 {
   init_procfs_ops ();
   add_target (&procfs_ops);
-  add_info ("proc", info_proc_cmd,
-           "Show /proc process information about any running process.\n\
+  add_info ("proc", info_proc_cmd, _("\
+Show /proc process information about any running process.\n\
 Specify process id, or use the program being debugged by default.\n\
-Specify keyword 'mappings' for detailed info on memory mappings.");
+Specify keyword 'mappings' for detailed info on memory mappings."));
   add_com ("proc-trace-entry", no_class, proc_trace_sysentry_cmd,
-          "Give a trace of entries into the syscall.");
+          _("Give a trace of entries into the syscall."));
   add_com ("proc-trace-exit", no_class, proc_trace_sysexit_cmd,
-          "Give a trace of exits from the syscall.");
+          _("Give a trace of exits from the syscall."));
   add_com ("proc-untrace-entry", no_class, proc_untrace_sysentry_cmd,
-          "Cancel a trace of entries into the syscall.");
+          _("Cancel a trace of entries into the syscall."));
   add_com ("proc-untrace-exit", no_class, proc_untrace_sysexit_cmd,
-          "Cancel a trace of exits from the syscall.");
+          _("Cancel a trace of exits from the syscall."));
 }
 
 /* =================== END, GDB  "MODULE" =================== */
@@ -6126,7 +6130,8 @@ procfs_make_note_section (bfd *obfd, int *note_size)
       note_data = thread_args.note_data;
     }
 
-  auxv_len = target_auxv_read (&current_target, &auxv);
+  auxv_len = target_read_alloc (&current_target, TARGET_OBJECT_AUXV,
+                               NULL, &auxv);
   if (auxv_len > 0)
     {
       note_data = elfcore_write_note (obfd, note_data, note_size,
This page took 0.121793 seconds and 4 git commands to generate.