32#include <sys/procfs.h>
36#include "gdbsupport/gdb_wait.h"
85 { PCAGENT,
"PCAGENT",
"create agent lwp with regs from argument" },
86 { PCCFAULT,
"PCCFAULT",
"clear current fault" },
87 { PCCSIG,
"PCCSIG",
"clear current signal" },
88 { PCDSTOP,
"PCDSTOP",
"post stop request" },
89 { PCKILL,
"PCKILL",
"post a signal" },
90 { PCNICE,
"PCNICE",
"set nice priority" },
91 { PCREAD,
"PCREAD",
"read from the address space" },
92 { PCWRITE,
"PCWRITE",
"write to the address space" },
93 { PCRUN,
"PCRUN",
"make process/lwp runnable" },
94 { PCSASRS,
"PCSASRS",
"set ancillary state registers" },
95 { PCSCRED,
"PCSCRED",
"set process credentials" },
96 { PCSENTRY,
"PCSENTRY",
"set traced syscall entry set" },
97 { PCSET,
"PCSET",
"set modes" },
98 { PCSEXIT,
"PCSEXIT",
"set traced syscall exit set" },
99 { PCSFAULT,
"PCSFAULT",
"set traced fault set" },
100 { PCSFPREG,
"PCSFPREG",
"set floating point registers" },
101 { PCSHOLD,
"PCSHOLD",
"set signal mask" },
102 { PCSREG,
"PCSREG",
"set general registers" },
103 { PCSSIG,
"PCSSIG",
"set current signal" },
104 { PCSTOP,
"PCSTOP",
"post stop request and wait" },
105 { PCSTRACE,
"PCSTRACE",
"set traced signal set" },
106 { PCSVADDR,
"PCSVADDR",
"set pc virtual address" },
107 { PCSXREG,
"PCSXREG",
"set extra registers" },
108 { PCTWSTOP,
"PCTWSTOP",
"wait for stop, with timeout arg" },
109 { PCUNKILL,
"PCUNKILL",
"delete a pending signal" },
110 { PCUNSET,
"PCUNSET",
"unset modes" },
111 { PCWATCH,
"PCWATCH",
"set/unset watched memory area" },
112 { PCWSTOP,
"PCWSTOP",
"wait for process/lwp to stop, no timeout" },
135 "%s:%d -- ", file, line);
139 "write (PCSET, %s) %s\n",
140 arg[1] == PR_FORK ?
"PR_FORK" :
141 arg[1] == PR_RLC ?
"PR_RLC" :
142 arg[1] == PR_ASYNC ?
"PR_ASYNC" :
148 "write (PCRESET, %s) %s\n",
149 arg[1] == PR_FORK ?
"PR_FORK" :
150 arg[1] == PR_RLC ?
"PR_RLC" :
151 arg[1] == PR_ASYNC ?
"PR_ASYNC" :
157 "write (PCSTRACE) ");
159 (sigset_t *) &arg[1], 0);
163 "write (PCSFAULT) ");
165 (fltset_t *) &arg[1], 0);
169 "write (PCSENTRY) ");
171 (sysset_t *) &arg[1], 0);
177 (sysset_t *) &arg[1], 0);
183 (sigset_t *) &arg[1], 0);
189 arg[1] ? ((siginfo_t *) &arg[1])->si_signo
199 if (arg[1] & PRCFAULT)
203 if (arg[1] & PRSABORT)
228 "write (<unknown>, %lud bytes at 0x%08lx) \n",
232 "write (<unknown>, %lud bytes) \n",
233 (
unsigned long) len);
242 ret = write (fd, (
void *) arg, len);
246 "[write (%s) FAILED! (%s)]\n",
249 safe_strerror (errno));
265 ret = lseek (fd, offset, whence);
270 "[lseek (0x%08lx) FAILED! (%s)]\n",
271 (
unsigned long) offset, safe_strerror (errno));
286 ret = open (filename, mode);
291 "%s:%d -- ", file, line);
296 "[open FAILED! (%s) line %d]\\n",
297 safe_strerror (errno), line);
302 "%d = open (%s, ", ret, filename);
303 if (mode == O_RDONLY)
306 else if (mode == O_WRONLY)
309 else if (mode == O_RDWR)
332 "%s:%d -- ", file, line);
335 "[close FAILED! (%s)]\n", safe_strerror (errno));
338 "%d = close (%d)\n", ret, fd);
356 "%s:%d -- ", file, line);
358 "wait (line %d) ", line);
368 "[wait FAILED! (%s)]\n", safe_strerror (errno));
371 "returned pid %d, status 0x%x\n", ret, lstat);
389 "%s:%d -- ", file, line);
404 "Thread %d: ", thread);
409 if (
flags & (PR_STOPPED | PR_ISTOP))
422Set tracing for /proc api calls."), _(
"\
423Show tracing for /proc api calls."), NULL,
429Set filename for /proc tracefile."), _(
"\
430Show filename for /proc tracefile."), NULL,
struct cmd_list_element * showlist
struct cmd_list_element * setlist
set_show_commands add_setshow_filename_cmd(const char *name, enum command_class theclass, std::string *var, const char *set_doc, const char *show_doc, const char *help_doc, cmd_func_ftype *set_func, show_value_ftype *show_func, struct cmd_list_element **set_list, struct cmd_list_element **show_list)
set_show_commands add_setshow_boolean_cmd(const char *name, enum command_class theclass, bool *var, const char *set_doc, const char *show_doc, const char *help_doc, cmd_func_ftype *set_func, show_value_ftype *show_func, struct cmd_list_element **set_list, struct cmd_list_element **show_list)
mach_port_t kern_return_t mach_port_t mach_msg_type_name_t msgportsPoly mach_port_t kern_return_t pid_t pid mach_port_t kern_return_t mach_port_t task mach_port_t kern_return_t int flags
static void set_procfs_file_cmd(const char *args, int from_tty, struct cmd_list_element *c)
static void set_procfs_trace_cmd(const char *args, int from_tty, struct cmd_list_element *c)
int close_with_trace(int fd, char *file, int line)
static FILE * procfs_file
static off_t lseek_offset
int open_with_trace(char *filename, int mode, char *file, int line)
static void prepare_to_trace(void)
void proc_prettyfprint_status(long flags, int why, int what, int thread)
off_t lseek_with_trace(int fd, off_t offset, int whence, char *file, int line)
static struct trans rw_table[]
void procfs_note(const char *msg, const char *file, int line)
pid_t wait_with_trace(int *wstat, char *file, int line)
static std::string procfs_filename
int write_with_trace(int fd, void *varg, size_t len, char *file, int line)
void _initialize_proc_api()
void proc_prettyfprint_syscalls(FILE *file, sysset_t *sysset, int verbose)
void proc_prettyfprint_signalset(FILE *file, sigset_t *sigset, int verbose)
void proc_prettyfprint_faultset(FILE *file, fltset_t *fltset, int verbose)
void proc_prettyfprint_signal(FILE *file, int signo, int verbose)
void proc_prettyfprint_flags(FILE *file, unsigned long flags, int verbose)
void proc_prettyfprint_why(FILE *file, unsigned long why, unsigned long what, int verbose)