| Index: gdb/procfs.c
|
| diff --git a/gdb/procfs.c b/gdb/procfs.c
|
| index 14d923d094488e80bace69f3049b688aa539551c..774df2e0113a1dd38ac2e898651a13c7153c9ef9 100644
|
| --- a/gdb/procfs.c
|
| +++ b/gdb/procfs.c
|
| @@ -112,7 +112,7 @@
|
| static void procfs_attach (struct target_ops *, char *, int);
|
| static void procfs_detach (struct target_ops *, char *, int);
|
| static void procfs_resume (struct target_ops *,
|
| - ptid_t, int, enum target_signal);
|
| + ptid_t, int, enum gdb_signal);
|
| static void procfs_stop (ptid_t);
|
| static void procfs_files_info (struct target_ops *);
|
| static void procfs_fetch_registers (struct target_ops *,
|
| @@ -138,8 +138,8 @@ static LONGEST procfs_xfer_partial (struct target_ops *ops,
|
|
|
| static int procfs_thread_alive (struct target_ops *ops, ptid_t);
|
|
|
| -void procfs_find_new_threads (struct target_ops *ops);
|
| -char *procfs_pid_to_str (struct target_ops *, ptid_t);
|
| +static void procfs_find_new_threads (struct target_ops *ops);
|
| +static char *procfs_pid_to_str (struct target_ops *, ptid_t);
|
|
|
| static int proc_find_memory_regions (int (*) (CORE_ADDR,
|
| unsigned long,
|
| @@ -151,6 +151,9 @@ static char * procfs_make_note_section (bfd *, int *);
|
|
|
| static int procfs_can_use_hw_breakpoint (int, int, int);
|
|
|
| +static void procfs_info_proc (struct target_ops *, char *,
|
| + enum info_proc_what);
|
| +
|
| #if defined (PR_MODEL_NATIVE) && (PR_MODEL_NATIVE == PR_MODEL_LP64)
|
| /* When GDB is built as 64-bit application on Solaris, the auxv data
|
| is presented in 64-bit format. We need to provide a custom parser
|
| @@ -211,6 +214,7 @@ procfs_target (void)
|
| t->to_has_thread_control = tc_schedlock;
|
| t->to_find_memory_regions = proc_find_memory_regions;
|
| t->to_make_corefile_notes = procfs_make_note_section;
|
| + t->to_info_proc = procfs_info_proc;
|
|
|
| #if defined(PR_MODEL_NATIVE) && (PR_MODEL_NATIVE == PR_MODEL_LP64)
|
| t->to_auxv_parse = procfs_auxv_parse;
|
| @@ -262,7 +266,7 @@ typedef struct sigaction gdb_sigaction_t;
|
| #ifdef HAVE_PR_SIGINFO64_T
|
| typedef pr_siginfo64_t gdb_siginfo_t;
|
| #else
|
| -typedef struct siginfo gdb_siginfo_t;
|
| +typedef siginfo_t gdb_siginfo_t;
|
| #endif
|
|
|
| /* On mips-irix, praddset and prdelset are defined in such a way that
|
| @@ -1015,63 +1019,24 @@ find_syscall (procinfo *pi, char *name)
|
| than have a bunch of #ifdefs all thru the gdb target vector
|
| functions, we do our best to hide them all in here. */
|
|
|
| -int proc_get_status (procinfo * pi);
|
| -long proc_flags (procinfo * pi);
|
| -int proc_why (procinfo * pi);
|
| -int proc_what (procinfo * pi);
|
| -int proc_set_run_on_last_close (procinfo * pi);
|
| -int proc_unset_run_on_last_close (procinfo * pi);
|
| -int proc_set_inherit_on_fork (procinfo * pi);
|
| -int proc_unset_inherit_on_fork (procinfo * pi);
|
| -int proc_set_async (procinfo * pi);
|
| -int proc_unset_async (procinfo * pi);
|
| -int proc_stop_process (procinfo * pi);
|
| -int proc_trace_signal (procinfo * pi, int signo);
|
| -int proc_ignore_signal (procinfo * pi, int signo);
|
| -int proc_clear_current_fault (procinfo * pi);
|
| -int proc_set_current_signal (procinfo * pi, int signo);
|
| -int proc_clear_current_signal (procinfo * pi);
|
| -int proc_set_gregs (procinfo * pi);
|
| -int proc_set_fpregs (procinfo * pi);
|
| -int proc_wait_for_stop (procinfo * pi);
|
| -int proc_run_process (procinfo * pi, int step, int signo);
|
| -int proc_kill (procinfo * pi, int signo);
|
| -int proc_parent_pid (procinfo * pi);
|
| -int proc_get_nthreads (procinfo * pi);
|
| -int proc_get_current_thread (procinfo * pi);
|
| -int proc_set_held_signals (procinfo * pi, gdb_sigset_t * sighold);
|
| -int proc_set_traced_sysexit (procinfo * pi, sysset_t * sysset);
|
| -int proc_set_traced_sysentry (procinfo * pi, sysset_t * sysset);
|
| -int proc_set_traced_faults (procinfo * pi, fltset_t * fltset);
|
| -int proc_set_traced_signals (procinfo * pi, gdb_sigset_t * sigset);
|
| -
|
| -int proc_update_threads (procinfo * pi);
|
| -int proc_iterate_over_threads (procinfo * pi,
|
| - int (*func) (procinfo *, procinfo *, void *),
|
| - void *ptr);
|
| -
|
| -gdb_gregset_t *proc_get_gregs (procinfo * pi);
|
| -gdb_fpregset_t *proc_get_fpregs (procinfo * pi);
|
| -sysset_t *proc_get_traced_sysexit (procinfo * pi, sysset_t * save);
|
| -sysset_t *proc_get_traced_sysentry (procinfo * pi, sysset_t * save);
|
| -fltset_t *proc_get_traced_faults (procinfo * pi, fltset_t * save);
|
| -gdb_sigset_t *proc_get_traced_signals (procinfo * pi, gdb_sigset_t * save);
|
| -gdb_sigset_t *proc_get_held_signals (procinfo * pi, gdb_sigset_t * save);
|
| -gdb_sigset_t *proc_get_pending_signals (procinfo * pi, gdb_sigset_t * save);
|
| -gdb_sigaction_t *proc_get_signal_actions (procinfo * pi,
|
| - gdb_sigaction_t *save);
|
| -
|
| -void proc_warn (procinfo * pi, char *func, int line);
|
| -void proc_error (procinfo * pi, char *func, int line);
|
| +static long proc_flags (procinfo * pi);
|
| +static int proc_why (procinfo * pi);
|
| +static int proc_what (procinfo * pi);
|
| +static int proc_set_current_signal (procinfo * pi, int signo);
|
| +static int proc_get_current_thread (procinfo * pi);
|
| +static int proc_iterate_over_threads
|
| + (procinfo * pi,
|
| + int (*func) (procinfo *, procinfo *, void *),
|
| + void *ptr);
|
|
|
| -void
|
| +static void
|
| proc_warn (procinfo *pi, char *func, int line)
|
| {
|
| sprintf (errmsg, "procfs: %s line %d, %s", func, line, pi->pathname);
|
| print_sys_errmsg (errmsg, errno);
|
| }
|
|
|
| -void
|
| +static void
|
| proc_error (procinfo *pi, char *func, int line)
|
| {
|
| sprintf (errmsg, "procfs: %s line %d, %s", func, line, pi->pathname);
|
| @@ -1084,7 +1049,7 @@ proc_error (procinfo *pi, char *func, int line)
|
| file descriptor is also only opened when it is needed. Returns
|
| non-zero for success, zero for failure. */
|
|
|
| -int
|
| +static int
|
| proc_get_status (procinfo *pi)
|
| {
|
| /* Status file descriptor is opened "lazily". */
|
| @@ -1178,7 +1143,7 @@ proc_get_status (procinfo *pi)
|
|
|
| /* Returns the process flags (pr_flags field). */
|
|
|
| -long
|
| +static long
|
| proc_flags (procinfo *pi)
|
| {
|
| if (!pi->status_valid)
|
| @@ -1201,7 +1166,7 @@ proc_flags (procinfo *pi)
|
|
|
| /* Returns the pr_why field (why the process stopped). */
|
|
|
| -int
|
| +static int
|
| proc_why (procinfo *pi)
|
| {
|
| if (!pi->status_valid)
|
| @@ -1217,7 +1182,7 @@ proc_why (procinfo *pi)
|
|
|
| /* Returns the pr_what field (details of why the process stopped). */
|
|
|
| -int
|
| +static int
|
| proc_what (procinfo *pi)
|
| {
|
| if (!pi->status_valid)
|
| @@ -1260,7 +1225,7 @@ proc_watchpoint_address (procinfo *pi, CORE_ADDR *addr)
|
| /* Returns the pr_nsysarg field (number of args to the current
|
| syscall). */
|
|
|
| -int
|
| +static int
|
| proc_nsysarg (procinfo *pi)
|
| {
|
| if (!pi->status_valid)
|
| @@ -1277,7 +1242,7 @@ proc_nsysarg (procinfo *pi)
|
| /* Returns the pr_sysarg field (pointer to the arguments of current
|
| syscall). */
|
|
|
| -long *
|
| +static long *
|
| proc_sysargs (procinfo *pi)
|
| {
|
| if (!pi->status_valid)
|
| @@ -1290,28 +1255,12 @@ proc_sysargs (procinfo *pi)
|
| return (long *) &pi->prstatus.pr_sysarg;
|
| #endif
|
| }
|
| -
|
| -/* Returns the pr_syscall field (id of current syscall if we are in
|
| - one). */
|
| -
|
| -int
|
| -proc_syscall (procinfo *pi)
|
| -{
|
| - if (!pi->status_valid)
|
| - if (!proc_get_status (pi))
|
| - return 0;
|
| -
|
| -#ifdef NEW_PROC_API
|
| - return pi->prstatus.pr_lwp.pr_syscall;
|
| -#else
|
| - return pi->prstatus.pr_syscall;
|
| -#endif
|
| -}
|
| #endif /* PIOCSSPCACT */
|
|
|
| +#ifdef PROCFS_DONT_PIOCSSIG_CURSIG
|
| /* Returns the pr_cursig field (current signal). */
|
|
|
| -long
|
| +static long
|
| proc_cursig (struct procinfo *pi)
|
| {
|
| if (!pi->status_valid)
|
| @@ -1324,6 +1273,7 @@ proc_cursig (struct procinfo *pi)
|
| return pi->prstatus.pr_cursig;
|
| #endif
|
| }
|
| +#endif /* PROCFS_DONT_PIOCSSIG_CURSIG */
|
|
|
| /* === I appologize for the messiness of this function.
|
| === This is an area where the different versions of
|
| @@ -1458,7 +1408,7 @@ proc_modify_flag (procinfo *pi, long flag, long mode)
|
| become runnable when debugger closes all /proc fds. Returns
|
| non-zero for success, zero for failure. */
|
|
|
| -int
|
| +static int
|
| proc_set_run_on_last_close (procinfo *pi)
|
| {
|
| return proc_modify_flag (pi, PR_RLC, FLAG_SET);
|
| @@ -1468,51 +1418,18 @@ proc_set_run_on_last_close (procinfo *pi)
|
| runnable when debugger closes its file handles. Returns non-zero
|
| for success, zero for failure. */
|
|
|
| -int
|
| +static int
|
| proc_unset_run_on_last_close (procinfo *pi)
|
| {
|
| return proc_modify_flag (pi, PR_RLC, FLAG_RESET);
|
| }
|
|
|
| -#ifdef PR_KLC
|
| -/* Set the kill_on_last_close flag. Process with all threads will be
|
| - killed when debugger closes all /proc fds (or debugger exits or
|
| - dies). Returns non-zero for success, zero for failure. */
|
| -
|
| -int
|
| -proc_set_kill_on_last_close (procinfo *pi)
|
| -{
|
| - return proc_modify_flag (pi, PR_KLC, FLAG_SET);
|
| -}
|
| -
|
| -/* Reset the kill_on_last_close flag. Process will NOT be killed when
|
| - debugger closes its file handles (or exits or dies). Returns
|
| - non-zero for success, zero for failure. */
|
| -
|
| -int
|
| -proc_unset_kill_on_last_close (procinfo *pi)
|
| -{
|
| - return proc_modify_flag (pi, PR_KLC, FLAG_RESET);
|
| -}
|
| -#endif /* PR_KLC */
|
| -
|
| -/* Set inherit_on_fork flag. If the process forks a child while we
|
| - are registered for events in the parent, then we will also recieve
|
| - events from the child. Returns non-zero for success, zero for
|
| - failure. */
|
| -
|
| -int
|
| -proc_set_inherit_on_fork (procinfo *pi)
|
| -{
|
| - return proc_modify_flag (pi, PR_FORK, FLAG_SET);
|
| -}
|
| -
|
| /* Reset inherit_on_fork flag. If the process forks a child while we
|
| are registered for events in the parent, then we will NOT recieve
|
| events from the child. Returns non-zero for success, zero for
|
| failure. */
|
|
|
| -int
|
| +static int
|
| proc_unset_inherit_on_fork (procinfo *pi)
|
| {
|
| return proc_modify_flag (pi, PR_FORK, FLAG_RESET);
|
| @@ -1523,7 +1440,7 @@ proc_unset_inherit_on_fork (procinfo *pi)
|
| (signal etc.), the remaining LWPs will continue to run. Returns
|
| non-zero for success, zero for failure. */
|
|
|
| -int
|
| +static int
|
| proc_set_async (procinfo *pi)
|
| {
|
| return proc_modify_flag (pi, PR_ASYNC, FLAG_SET);
|
| @@ -1533,7 +1450,7 @@ proc_set_async (procinfo *pi)
|
| (signal etc.), then all other LWPs will stop as well. Returns
|
| non-zero for success, zero for failure. */
|
|
|
| -int
|
| +static int
|
| proc_unset_async (procinfo *pi)
|
| {
|
| return proc_modify_flag (pi, PR_ASYNC, FLAG_RESET);
|
| @@ -1543,7 +1460,7 @@ proc_unset_async (procinfo *pi)
|
| /* Request the process/LWP to stop. Does not wait. Returns non-zero
|
| for success, zero for failure. */
|
|
|
| -int
|
| +static int
|
| proc_stop_process (procinfo *pi)
|
| {
|
| int win;
|
| @@ -1580,7 +1497,7 @@ proc_stop_process (procinfo *pi)
|
| /* Wait for the process or LWP to stop (block until it does). Returns
|
| non-zero for success, zero for failure. */
|
|
|
| -int
|
| +static int
|
| proc_wait_for_stop (procinfo *pi)
|
| {
|
| int win;
|
| @@ -1636,7 +1553,7 @@ proc_wait_for_stop (procinfo *pi)
|
| any; if non-zero, set the current signal to this one. Returns
|
| non-zero for success, zero for failure. */
|
|
|
| -int
|
| +static int
|
| proc_run_process (procinfo *pi, int step, int signo)
|
| {
|
| int win;
|
| @@ -1683,7 +1600,7 @@ proc_run_process (procinfo *pi, int step, int signo)
|
| /* Register to trace signals in the process or LWP. Returns non-zero
|
| for success, zero for failure. */
|
|
|
| -int
|
| +static int
|
| proc_set_traced_signals (procinfo *pi, gdb_sigset_t *sigset)
|
| {
|
| int win;
|
| @@ -1723,7 +1640,7 @@ proc_set_traced_signals (procinfo *pi, gdb_sigset_t *sigset)
|
| /* Register to trace hardware faults in the process or LWP. Returns
|
| non-zero for success, zero for failure. */
|
|
|
| -int
|
| +static int
|
| proc_set_traced_faults (procinfo *pi, fltset_t *fltset)
|
| {
|
| int win;
|
| @@ -1761,7 +1678,7 @@ proc_set_traced_faults (procinfo *pi, fltset_t *fltset)
|
| /* Register to trace entry to system calls in the process or LWP.
|
| Returns non-zero for success, zero for failure. */
|
|
|
| -int
|
| +static int
|
| proc_set_traced_sysentry (procinfo *pi, sysset_t *sysset)
|
| {
|
| int win;
|
| @@ -1806,7 +1723,7 @@ proc_set_traced_sysentry (procinfo *pi, sysset_t *sysset)
|
| /* Register to trace exit from system calls in the process or LWP.
|
| Returns non-zero for success, zero for failure. */
|
|
|
| -int
|
| +static int
|
| proc_set_traced_sysexit (procinfo *pi, sysset_t *sysset)
|
| {
|
| int win;
|
| @@ -1851,7 +1768,7 @@ proc_set_traced_sysexit (procinfo *pi, sysset_t *sysset)
|
| /* Specify the set of blocked / held signals in the process or LWP.
|
| Returns non-zero for success, zero for failure. */
|
|
|
| -int
|
| +static int
|
| proc_set_held_signals (procinfo *pi, gdb_sigset_t *sighold)
|
| {
|
| int win;
|
| @@ -1886,72 +1803,10 @@ proc_set_held_signals (procinfo *pi, gdb_sigset_t *sighold)
|
| return win;
|
| }
|
|
|
| -/* Returns the set of signals that are pending in the process or LWP.
|
| - Will also copy the sigset if SAVE is non-zero. */
|
| -
|
| -gdb_sigset_t *
|
| -proc_get_pending_signals (procinfo *pi, gdb_sigset_t *save)
|
| -{
|
| - gdb_sigset_t *ret = NULL;
|
| -
|
| - /* We should never have to apply this operation to any procinfo
|
| - except the one for the main process. If that ever changes for
|
| - any reason, then take out the following clause and replace it
|
| - with one that makes sure the ctl_fd is open. */
|
| -
|
| - if (pi->tid != 0)
|
| - pi = find_procinfo_or_die (pi->pid, 0);
|
| -
|
| - if (!pi->status_valid)
|
| - if (!proc_get_status (pi))
|
| - return NULL;
|
| -
|
| -#ifdef NEW_PROC_API
|
| - ret = &pi->prstatus.pr_lwp.pr_lwppend;
|
| -#else
|
| - ret = &pi->prstatus.pr_sigpend;
|
| -#endif
|
| - if (save && ret)
|
| - memcpy (save, ret, sizeof (gdb_sigset_t));
|
| -
|
| - return ret;
|
| -}
|
| -
|
| -/* Returns the set of signal actions. Will also copy the sigactionset
|
| - if SAVE is non-zero. */
|
| -
|
| -gdb_sigaction_t *
|
| -proc_get_signal_actions (procinfo *pi, gdb_sigaction_t *save)
|
| -{
|
| - gdb_sigaction_t *ret = NULL;
|
| -
|
| - /* We should never have to apply this operation to any procinfo
|
| - except the one for the main process. If that ever changes for
|
| - any reason, then take out the following clause and replace it
|
| - with one that makes sure the ctl_fd is open. */
|
| -
|
| - if (pi->tid != 0)
|
| - pi = find_procinfo_or_die (pi->pid, 0);
|
| -
|
| - if (!pi->status_valid)
|
| - if (!proc_get_status (pi))
|
| - return NULL;
|
| -
|
| -#ifdef NEW_PROC_API
|
| - ret = &pi->prstatus.pr_lwp.pr_action;
|
| -#else
|
| - ret = &pi->prstatus.pr_action;
|
| -#endif
|
| - if (save && ret)
|
| - memcpy (save, ret, sizeof (gdb_sigaction_t));
|
| -
|
| - return ret;
|
| -}
|
| -
|
| /* Returns the set of signals that are held / blocked. Will also copy
|
| the sigset if SAVE is non-zero. */
|
|
|
| -gdb_sigset_t *
|
| +static gdb_sigset_t *
|
| proc_get_held_signals (procinfo *pi, gdb_sigset_t *save)
|
| {
|
| gdb_sigset_t *ret = NULL;
|
| @@ -1991,7 +1846,7 @@ proc_get_held_signals (procinfo *pi, gdb_sigset_t *save)
|
| /* Returns the set of signals that are traced / debugged. Will also
|
| copy the sigset if SAVE is non-zero. */
|
|
|
| -gdb_sigset_t *
|
| +static gdb_sigset_t *
|
| proc_get_traced_signals (procinfo *pi, gdb_sigset_t *save)
|
| {
|
| gdb_sigset_t *ret = NULL;
|
| @@ -2024,66 +1879,10 @@ proc_get_traced_signals (procinfo *pi, gdb_sigset_t *save)
|
| return ret;
|
| }
|
|
|
| -/* Add SIGNO to the set of signals that are traced. Returns non-zero
|
| - for success, zero for failure. */
|
| -
|
| -int
|
| -proc_trace_signal (procinfo *pi, int signo)
|
| -{
|
| - gdb_sigset_t temp;
|
| -
|
| - /* We should never have to apply this operation to any procinfo
|
| - except the one for the main process. If that ever changes for
|
| - any reason, then take out the following clause and replace it
|
| - with one that makes sure the ctl_fd is open. */
|
| -
|
| - if (pi->tid != 0)
|
| - pi = find_procinfo_or_die (pi->pid, 0);
|
| -
|
| - if (pi)
|
| - {
|
| - if (proc_get_traced_signals (pi, &temp))
|
| - {
|
| - gdb_praddset (&temp, signo);
|
| - return proc_set_traced_signals (pi, &temp);
|
| - }
|
| - }
|
| -
|
| - return 0; /* failure */
|
| -}
|
| -
|
| -/* Remove SIGNO from the set of signals that are traced. Returns
|
| - non-zero for success, zero for failure. */
|
| -
|
| -int
|
| -proc_ignore_signal (procinfo *pi, int signo)
|
| -{
|
| - gdb_sigset_t temp;
|
| -
|
| - /* We should never have to apply this operation to any procinfo
|
| - except the one for the main process. If that ever changes for
|
| - any reason, then take out the following clause and replace it
|
| - with one that makes sure the ctl_fd is open. */
|
| -
|
| - if (pi->tid != 0)
|
| - pi = find_procinfo_or_die (pi->pid, 0);
|
| -
|
| - if (pi)
|
| - {
|
| - if (proc_get_traced_signals (pi, &temp))
|
| - {
|
| - gdb_prdelset (&temp, signo);
|
| - return proc_set_traced_signals (pi, &temp);
|
| - }
|
| - }
|
| -
|
| - return 0; /* failure */
|
| -}
|
| -
|
| /* Returns the set of hardware faults that are traced /debugged. Will
|
| also copy the faultset if SAVE is non-zero. */
|
|
|
| -fltset_t *
|
| +static fltset_t *
|
| proc_get_traced_faults (procinfo *pi, fltset_t *save)
|
| {
|
| fltset_t *ret = NULL;
|
| @@ -2119,7 +1918,7 @@ proc_get_traced_faults (procinfo *pi, fltset_t *save)
|
| /* Returns the set of syscalls that are traced /debugged on entry.
|
| Will also copy the syscall set if SAVE is non-zero. */
|
|
|
| -sysset_t *
|
| +static sysset_t *
|
| proc_get_traced_sysentry (procinfo *pi, sysset_t *save)
|
| {
|
| sysset_t *ret = NULL;
|
| @@ -2186,7 +1985,7 @@ proc_get_traced_sysentry (procinfo *pi, sysset_t *save)
|
| /* Returns the set of syscalls that are traced /debugged on exit.
|
| Will also copy the syscall set if SAVE is non-zero. */
|
|
|
| -sysset_t *
|
| +static sysset_t *
|
| proc_get_traced_sysexit (procinfo *pi, sysset_t *save)
|
| {
|
| sysset_t * ret = NULL;
|
| @@ -2254,7 +2053,7 @@ proc_get_traced_sysexit (procinfo *pi, sysset_t *save)
|
| not be sent to the process or LWP when it resumes. Returns
|
| non-zero for success, zero for failure. */
|
|
|
| -int
|
| +static int
|
| proc_clear_current_fault (procinfo *pi)
|
| {
|
| int win;
|
| @@ -2288,7 +2087,7 @@ proc_clear_current_fault (procinfo *pi)
|
| trap back to the debugger. Returns non-zero for success, zero for
|
| failure. */
|
|
|
| -int
|
| +static int
|
| proc_set_current_signal (procinfo *pi, int signo)
|
| {
|
| int win;
|
| @@ -2323,7 +2122,7 @@ proc_set_current_signal (procinfo *pi, int signo)
|
| get_last_target_status (&wait_ptid, &wait_status);
|
| if (ptid_equal (wait_ptid, inferior_ptid)
|
| && wait_status.kind == TARGET_WAITKIND_STOPPED
|
| - && wait_status.value.sig == target_signal_from_host (signo)
|
| + && wait_status.value.sig == gdb_signal_from_host (signo)
|
| && proc_get_status (pi)
|
| #ifdef NEW_PROC_API
|
| && pi->prstatus.pr_lwp.pr_info.si_signo == signo
|
| @@ -2361,7 +2160,7 @@ proc_set_current_signal (procinfo *pi, int signo)
|
| process or LWP when it resumes. Returns non-zero for success, zero
|
| for failure. */
|
|
|
| -int
|
| +static int
|
| proc_clear_current_signal (procinfo *pi)
|
| {
|
| int win;
|
| @@ -2404,7 +2203,7 @@ proc_clear_current_signal (procinfo *pi)
|
| /* Return the general-purpose registers for the process or LWP
|
| corresponding to PI. Upon failure, return NULL. */
|
|
|
| -gdb_gregset_t *
|
| +static gdb_gregset_t *
|
| proc_get_gregs (procinfo *pi)
|
| {
|
| if (!pi->status_valid || !pi->gregs_valid)
|
| @@ -2428,7 +2227,7 @@ proc_get_gregs (procinfo *pi)
|
| /* Return the general-purpose registers for the process or LWP
|
| corresponding to PI. Upon failure, return NULL. */
|
|
|
| -gdb_fpregset_t *
|
| +static gdb_fpregset_t *
|
| proc_get_fpregs (procinfo *pi)
|
| {
|
| #ifdef NEW_PROC_API
|
| @@ -2501,7 +2300,7 @@ proc_get_fpregs (procinfo *pi)
|
| corresponding to PI. Return non-zero for success, zero for
|
| failure. */
|
|
|
| -int
|
| +static int
|
| proc_set_gregs (procinfo *pi)
|
| {
|
| gdb_gregset_t *gregs;
|
| @@ -2541,7 +2340,7 @@ proc_set_gregs (procinfo *pi)
|
| corresponding to PI. Return non-zero for success, zero for
|
| failure. */
|
|
|
| -int
|
| +static int
|
| proc_set_fpregs (procinfo *pi)
|
| {
|
| gdb_fpregset_t *fpregs;
|
| @@ -2599,7 +2398,7 @@ proc_set_fpregs (procinfo *pi)
|
| /* Send a signal to the proc or lwp with the semantics of "kill()".
|
| Returns non-zero for success, zero for failure. */
|
|
|
| -int
|
| +static int
|
| proc_kill (procinfo *pi, int signo)
|
| {
|
| int win;
|
| @@ -2633,7 +2432,7 @@ proc_kill (procinfo *pi, int signo)
|
| /* Find the pid of the process that started this one. Returns the
|
| parent process pid, or zero. */
|
|
|
| -int
|
| +static int
|
| proc_parent_pid (procinfo *pi)
|
| {
|
| /* We should never have to apply this operation to any procinfo
|
| @@ -2669,7 +2468,7 @@ procfs_address_to_host_pointer (CORE_ADDR addr)
|
| }
|
| #endif
|
|
|
| -int
|
| +static int
|
| proc_set_watchpoint (procinfo *pi, CORE_ADDR addr, int len, int wflags)
|
| {
|
| #if !defined (PCWATCH) && !defined (PIOCSWATCH)
|
| @@ -2839,7 +2638,7 @@ procfs_find_LDT_entry (ptid_t ptid)
|
|
|
| #if defined (PIOCNTHR) && defined (PIOCTLIST)
|
| /* OSF version */
|
| -int
|
| +static int
|
| proc_get_nthreads (procinfo *pi)
|
| {
|
| int nthreads = 0;
|
| @@ -2853,7 +2652,7 @@ proc_get_nthreads (procinfo *pi)
|
| #else
|
| #if defined (SYS_lwpcreate) || defined (SYS_lwp_create) /* FIXME: multiple */
|
| /* Solaris and Unixware version */
|
| -int
|
| +static int
|
| proc_get_nthreads (procinfo *pi)
|
| {
|
| if (!pi->status_valid)
|
| @@ -2871,7 +2670,7 @@ proc_get_nthreads (procinfo *pi)
|
|
|
| #else
|
| /* Default version */
|
| -int
|
| +static int
|
| proc_get_nthreads (procinfo *pi)
|
| {
|
| return 0;
|
| @@ -2888,7 +2687,7 @@ proc_get_nthreads (procinfo *pi)
|
|
|
| #if defined (SYS_lwpcreate) || defined (SYS_lwp_create) /* FIXME: multiple */
|
| /* Solaris and Unixware version */
|
| -int
|
| +static int
|
| proc_get_current_thread (procinfo *pi)
|
| {
|
| /* Note: this should be applied to the root procinfo for the
|
| @@ -2913,7 +2712,7 @@ proc_get_current_thread (procinfo *pi)
|
| #else
|
| #if defined (PIOCNTHR) && defined (PIOCTLIST)
|
| /* OSF version */
|
| -int
|
| +static int
|
| proc_get_current_thread (procinfo *pi)
|
| {
|
| #if 0 /* FIXME: not ready for prime time? */
|
| @@ -2925,7 +2724,7 @@ proc_get_current_thread (procinfo *pi)
|
|
|
| #else
|
| /* Default version */
|
| -int
|
| +static int
|
| proc_get_current_thread (procinfo *pi)
|
| {
|
| return 0;
|
| @@ -2939,7 +2738,7 @@ proc_get_current_thread (procinfo *pi)
|
| unfortunately requires a different method on every OS. Returns
|
| non-zero for success, zero for failure. */
|
|
|
| -int
|
| +static int
|
| proc_delete_dead_threads (procinfo *parent, procinfo *thread, void *ignore)
|
| {
|
| if (thread && parent) /* sanity */
|
| @@ -2953,7 +2752,7 @@ proc_delete_dead_threads (procinfo *parent, procinfo *thread, void *ignore)
|
|
|
| #if defined (PIOCLSTATUS)
|
| /* Solaris 2.5 (ioctl) version */
|
| -int
|
| +static int
|
| proc_update_threads (procinfo *pi)
|
| {
|
| gdb_prstatus_t *prstatus;
|
| @@ -3002,7 +2801,7 @@ do_closedir_cleanup (void *dir)
|
| closedir (dir);
|
| }
|
|
|
| -int
|
| +static int
|
| proc_update_threads (procinfo *pi)
|
| {
|
| char pathname[MAX_PROC_NAME_SIZE + 16];
|
| @@ -3050,7 +2849,7 @@ proc_update_threads (procinfo *pi)
|
| #else
|
| #ifdef PIOCTLIST
|
| /* OSF version */
|
| -int
|
| +static int
|
| proc_update_threads (procinfo *pi)
|
| {
|
| int nthreads, i;
|
| @@ -3086,7 +2885,7 @@ proc_update_threads (procinfo *pi)
|
| }
|
| #else
|
| /* Default version */
|
| -int
|
| +static int
|
| proc_update_threads (procinfo *pi)
|
| {
|
| return 0;
|
| @@ -3108,7 +2907,7 @@ proc_update_threads (procinfo *pi)
|
| function. PTR is an opaque parameter for function. Returns the
|
| first non-zero return value from the callee, or zero. */
|
|
|
| -int
|
| +static int
|
| proc_iterate_over_threads (procinfo *pi,
|
| int (*func) (procinfo *, procinfo *, void *),
|
| void *ptr)
|
| @@ -3987,7 +3786,7 @@ wait_again:
|
| else
|
| {
|
| /* How to keep going without returning to wfi: */
|
| - target_resume (ptid, 0, TARGET_SIGNAL_0);
|
| + target_resume (ptid, 0, GDB_SIGNAL_0);
|
| goto wait_again;
|
| }
|
| }
|
| @@ -4013,7 +3812,7 @@ wait_again:
|
| /* This is an internal event and should be transparent
|
| to wfi, so resume the execution and wait again. See
|
| comment in procfs_init_inferior() for more details. */
|
| - target_resume (ptid, 0, TARGET_SIGNAL_0);
|
| + target_resume (ptid, 0, GDB_SIGNAL_0);
|
| goto wait_again;
|
| }
|
| #endif
|
| @@ -4383,7 +4182,7 @@ make_signal_thread_runnable (procinfo *process, procinfo *pi, void *ptr)
|
|
|
| static void
|
| procfs_resume (struct target_ops *ops,
|
| - ptid_t ptid, int step, enum target_signal signo)
|
| + ptid_t ptid, int step, enum gdb_signal signo)
|
| {
|
| procinfo *pi, *thread;
|
| int native_signo;
|
| @@ -4412,10 +4211,10 @@ procfs_resume (struct target_ops *ops,
|
|
|
| /* Convert signal to host numbering. */
|
| if (signo == 0 ||
|
| - (signo == TARGET_SIGNAL_STOP && pi->ignore_next_sigstop))
|
| + (signo == GDB_SIGNAL_STOP && pi->ignore_next_sigstop))
|
| native_signo = 0;
|
| else
|
| - native_signo = target_signal_to_host (signo);
|
| + native_signo = gdb_signal_to_host (signo);
|
|
|
| pi->ignore_next_sigstop = 0;
|
|
|
| @@ -4474,7 +4273,7 @@ procfs_pass_signals (int numsigs, unsigned char *pass_signals)
|
|
|
| for (signo = 0; signo < NSIG; signo++)
|
| {
|
| - int target_signo = target_signal_from_host (signo);
|
| + int target_signo = gdb_signal_from_host (signo);
|
| if (target_signo < numsigs && pass_signals[target_signo])
|
| gdb_prdelset (&signals, signo);
|
| }
|
| @@ -4958,7 +4757,7 @@ procfs_notice_thread (procinfo *pi, procinfo *thread, void *ptr)
|
| /* Query all the threads that the target knows about, and give them
|
| back to GDB to add to its list. */
|
|
|
| -void
|
| +static void
|
| procfs_find_new_threads (struct target_ops *ops)
|
| {
|
| procinfo *pi;
|
| @@ -5000,7 +4799,7 @@ procfs_thread_alive (struct target_ops *ops, ptid_t ptid)
|
| /* Convert PTID to a string. Returns the string in a static
|
| buffer. */
|
|
|
| -char *
|
| +static char *
|
| procfs_pid_to_str (struct target_ops *ops, ptid_t ptid)
|
| {
|
| static char buf[80];
|
| @@ -5015,7 +4814,7 @@ procfs_pid_to_str (struct target_ops *ops, ptid_t ptid)
|
|
|
| /* Insert a watchpoint. */
|
|
|
| -int
|
| +static int
|
| procfs_set_watchpoint (ptid_t ptid, CORE_ADDR addr, int len, int rwflag,
|
| int after)
|
| {
|
| @@ -5390,7 +5189,8 @@ info_proc_mappings (procinfo *pi, int summary)
|
| /* Implement the "info proc" command. */
|
|
|
| static void
|
| -info_proc_cmd (char *args, int from_tty)
|
| +procfs_info_proc (struct target_ops *ops, char *args,
|
| + enum info_proc_what what)
|
| {
|
| struct cleanup *old_chain;
|
| procinfo *process = NULL;
|
| @@ -5401,6 +5201,20 @@ info_proc_cmd (char *args, int from_tty)
|
| int tid = 0;
|
| int mappings = 0;
|
|
|
| + switch (what)
|
| + {
|
| + case IP_MINIMAL:
|
| + break;
|
| +
|
| + case IP_MAPPINGS:
|
| + case IP_ALL:
|
| + mappings = 1;
|
| + break;
|
| +
|
| + default:
|
| + error (_("Not supported on this target."));
|
| + }
|
| +
|
| old_chain = make_cleanup (null_cleanup, 0);
|
| if (args)
|
| {
|
| @@ -5419,14 +5233,6 @@ info_proc_cmd (char *args, int from_tty)
|
| {
|
| tid = strtoul (argv[0] + 1, NULL, 10);
|
| }
|
| - else if (strncmp (argv[0], "mappings", strlen (argv[0])) == 0)
|
| - {
|
| - mappings = 1;
|
| - }
|
| - else
|
| - {
|
| - /* [...] */
|
| - }
|
| argv++;
|
| }
|
| if (pid == 0)
|
| @@ -5562,15 +5368,14 @@ proc_untrace_sysexit_cmd (char *args, int from_tty)
|
| }
|
|
|
|
|
| +/* Provide a prototype to silence -Wmissing-prototypes. */
|
| +extern void _initialize_procfs (void);
|
| +
|
| void
|
| _initialize_procfs (void)
|
| {
|
| observer_attach_inferior_created (procfs_inferior_created);
|
|
|
| - 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."));
|
| add_com ("proc-trace-entry", no_class, proc_trace_sysentry_cmd,
|
| _("Give a trace of entries into the syscall."));
|
| add_com ("proc-trace-exit", no_class, proc_trace_sysexit_cmd,
|
| @@ -5606,7 +5411,7 @@ procfs_first_available (void)
|
| static char *
|
| procfs_do_thread_registers (bfd *obfd, ptid_t ptid,
|
| char *note_data, int *note_size,
|
| - enum target_signal stop_signal)
|
| + enum gdb_signal stop_signal)
|
| {
|
| struct regcache *regcache = get_thread_regcache (ptid);
|
| gdb_gregset_t gregs;
|
| @@ -5657,7 +5462,7 @@ struct procfs_corefile_thread_data {
|
| bfd *obfd;
|
| char *note_data;
|
| int *note_size;
|
| - enum target_signal stop_signal;
|
| + enum gdb_signal stop_signal;
|
| };
|
|
|
| static int
|
| @@ -5680,14 +5485,14 @@ procfs_corefile_thread_callback (procinfo *pi, procinfo *thread, void *data)
|
| static int
|
| find_signalled_thread (struct thread_info *info, void *data)
|
| {
|
| - if (info->suspend.stop_signal != TARGET_SIGNAL_0
|
| + if (info->suspend.stop_signal != GDB_SIGNAL_0
|
| && ptid_get_pid (info->ptid) == ptid_get_pid (inferior_ptid))
|
| return 1;
|
|
|
| return 0;
|
| }
|
|
|
| -static enum target_signal
|
| +static enum gdb_signal
|
| find_stop_signal (void)
|
| {
|
| struct thread_info *info =
|
| @@ -5696,7 +5501,7 @@ find_stop_signal (void)
|
| if (info)
|
| return info->suspend.stop_signal;
|
| else
|
| - return TARGET_SIGNAL_0;
|
| + return GDB_SIGNAL_0;
|
| }
|
|
|
| static char *
|
| @@ -5713,13 +5518,14 @@ procfs_make_note_section (bfd *obfd, int *note_size)
|
| struct procfs_corefile_thread_data thread_args;
|
| gdb_byte *auxv;
|
| int auxv_len;
|
| - enum target_signal stop_signal;
|
| + enum gdb_signal stop_signal;
|
|
|
| if (get_exec_file (0))
|
| {
|
| strncpy (fname, lbasename (get_exec_file (0)), sizeof (fname));
|
| - strncpy (psargs, get_exec_file (0),
|
| - sizeof (psargs));
|
| + fname[sizeof (fname) - 1] = 0;
|
| + strncpy (psargs, get_exec_file (0), sizeof (psargs));
|
| + psargs[sizeof (psargs) - 1] = 0;
|
|
|
| inf_args = get_inferior_args ();
|
| if (inf_args && *inf_args &&
|
|
|