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 && |